From fdf41b3ea65cef598cb77b56e4c9b5549866a164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E6=99=94?= Date: Fri, 28 Apr 2023 18:45:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=BA=BD=E5=A8=81=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ICSSoft.FromERP/ICSSoft.FromERP/App.config | 4 ++-- .../ICSSoft.FromERP/ICSDeliveryNotice.cs | 4 ++-- .../ICSSoft.FromERP/ICSInventory.cs | 14 +++++++------- .../ICSSoft.FromERP/ICSSAPDocGet.cs | 6 ++++-- ICSSoft.FromERP/ICSSoft.Test/Program.cs | 2 +- .../Root/ICSSoft.Frame.Data.Entity.dll | Bin 121344 -> 123392 bytes 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/App.config b/ICSSoft.FromERP/ICSSoft.FromERP/App.config index 48f04d9..3718469 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/App.config +++ b/ICSSoft.FromERP/ICSSoft.FromERP/App.config @@ -13,8 +13,8 @@ - - + + diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/ICSDeliveryNotice.cs b/ICSSoft.FromERP/ICSSoft.FromERP/ICSDeliveryNotice.cs index c5f4fa1..7f34f2b 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/ICSDeliveryNotice.cs +++ b/ICSSoft.FromERP/ICSSoft.FromERP/ICSDeliveryNotice.cs @@ -57,9 +57,9 @@ namespace ICSSoft.FromERP { SAPGetChkDocInfoVPN.ZWMS_SK_WS_CHECK client = new SAPGetChkDocInfoVPN.ZWMS_SK_WS_CHECK(); SAPGetChkDocInfoVPN.ZWMS_SK_WS_CHECK1 Info = new SAPGetChkDocInfoVPN.ZWMS_SK_WS_CHECK1(); - Info.PRUEFLOS = DocNO; + Info.PRUEFLOS = ""; Info.WERKS = dr["WorkPointCode"].ToString(); - Info.CHG_DATE = ""; + Info.CHG_DATE = Date; Info.ZCHECK_HEAD = new SAPGetChkDocInfoVPN.ZWMS_SK_CHECK_HEAD[1]; Info.ZCHECK_ITEM = new SAPGetChkDocInfoVPN.ZWMS_SK_CHECK_ITEM[1]; diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs b/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs index 712b190..238463b 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs +++ b/ICSSoft.FromERP/ICSSoft.FromERP/ICSInventory.cs @@ -50,16 +50,16 @@ namespace ICSSoft.FromERP { foreach (DataRow dr in dt.Rows) { - SAPGetINVVPN.ZWMS_SK_MARA client = new SAPGetINVVPN.ZWMS_SK_MARA(); - SAPGetINVVPN.ZWMS_SK_MARA1 Info = new SAPGetINVVPN.ZWMS_SK_MARA1(); + SAPGetINV.ZWMS_SK_MARA client = new SAPGetINV.ZWMS_SK_MARA(); + SAPGetINV.ZWMS_SK_MARA1 Info = new SAPGetINV.ZWMS_SK_MARA1(); Info.WERKS = dr["WorkPointCode"].ToString(); - Info.LGORT = WHCode; - //Info.CHG_DATE = Date; - Info.T_MARA = new SAPGetINVVPN.ZWMS_MARA[1]; + Info.LGORT = ""; + Info.CHG_DATE = Date; + Info.T_MARA = new SAPGetINV.ZWMS_MARA[1]; - SAPGetINVVPN.ZWMS_SK_MARAResponse result = new SAPGetINVVPN.ZWMS_SK_MARAResponse(); + SAPGetINV.ZWMS_SK_MARAResponse result = new SAPGetINV.ZWMS_SK_MARAResponse(); result = client.CallZWMS_SK_MARA(Info); - foreach (SAPGetINVVPN.ZWMS_MARA item in result.T_MARA) + foreach (SAPGetINV.ZWMS_MARA item in result.T_MARA) { var line = db.ICSInventory.SingleOrDefault(a => a.InvCode == item.MATNR && a.WorkPoint == item.WERKS); bool isNew = false; diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs b/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs index a2f6a39..0059ae4 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs +++ b/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs @@ -53,11 +53,13 @@ namespace ICSSoft.FromERP { foreach (DataRow dr in dt.Rows) { + //1.wms读取sap时 SET_NOTMODIFY 传X。 sap会打上标识 + //2. wms 更新失败 CLEAR_NOTMODIFY 传X。 sap会取消标识 SAPGetDocInfo.ZWMS_SK_WS_HEAD client = new SAPGetDocInfo.ZWMS_SK_WS_HEAD(); SAPGetDocInfo.ZWMS_SK_WS_HEAD1 DocInfo = new SAPGetDocInfo.ZWMS_SK_WS_HEAD1(); - DocInfo.DANJU = DocNO; + DocInfo.DANJU = ""; DocInfo.WERKS = dr["WorkPointCode"].ToString(); - DocInfo.CHG_DATE = ""; + DocInfo.CHG_DATE = Date; DocInfo.SET_NOTMODIFY = ""; DocInfo.CLEAR_NOTMODIFY = ""; DocInfo.Z_HEAD = new SAPGetDocInfo.ZWMS_SK_HEAD[1]; diff --git a/ICSSoft.FromERP/ICSSoft.Test/Program.cs b/ICSSoft.FromERP/ICSSoft.Test/Program.cs index f00a12f..967fab4 100644 --- a/ICSSoft.FromERP/ICSSoft.Test/Program.cs +++ b/ICSSoft.FromERP/ICSSoft.Test/Program.cs @@ -13,7 +13,7 @@ namespace ICSSoft.Test //ICSVendor test = new ICSVendor(); //test.Execute(); - ICSSAPDocGet test = new ICSSAPDocGet(); + ICSInventory test = new ICSInventory(); test.Execute(); //ICSSAPDocGet test = new ICSSAPDocGet(); diff --git a/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll b/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll index 3f0074db3cb44ceadf85dd3492d28b7f46a539dd..2c95ee30117d335a703ef593bb6f3c065c605651 100644 GIT binary patch literal 123392 zcmeFa4S<$Y{yu)rJyShTGgC9oG|kk!_QFghL$3&>tY$YPA+*#Knib^{8whZfmo`@4C+UjOTeg=iFv}_rKrY{{R1WeV+TeKKHrK z`{$f1WND4xIP8)QfeM zayQ?GB;)(UE{shCVatXaSkbp|Z^FMJN)71~J8Q~R+{m&jl-X!CrrdW_LNar?8};Wu zmMu`N)S!3KANg7(r!=>;$kYTCqtjLEsh7dbf=GHrp;B#?>Ul(v=Ej|^zfX|%&AsMY zc;uQ}rA@scm!pCTy!2|@OSSIV%%isC@siAAT$9I3GLLR1kC$Y=mF4l0%%jP9KVFjg zHkQXrGLIq4`|*;@M=g(+WFF1K`|*;@XILID$vpa)_v0m*&$2vTlKFO)$4fHb-tu@! z<}qEUkC$XV$MSed<~vv(FUfqa7CJ17Xoi=r}nIJt=G||^iP4Z4nI)WIw)~|_i z;?yMX)TASbbqdqO7;|cpcWTlR#P$!2Z~G^DeZ|(m{XIy zvz&AUvAe=FyLdFoJ2mMDVvl`GGfh=uZ-92m2`YJT5NXY%`wbhxK^@58F( zeU*kln1`Mw3T9!yn?AKW%8lK%sTZ!B?`Ki${T*>XQIK|F58OL-KbzpFS^MMS!U~w# z6tZn&_u10-SaqCzPd=%iu9JNj9kLIb@7afyc{Is8HR%XqFR<@@n&@(8ImtUU=?G%) zglTs5Xp(no(h0cle|-tjv)5q zFilKXrzUx)CLP$A-m=Oml!o zle|-tjv)4anC3u_CV8hO9YO4iZ)qm(rv_0nWgkX1d>I2O*-WHVoH1BOv>}zP>&}0q-O)o{Z2;^JI`583~_2671vBtqcN^= zwrb`x(lR^f3T!^wb_mQ%1qNeVP*~?l@#QOhX8d_fbG{VC^R2Lahk5cP|Go2N;vjat zGhd0t!{hlTJxeC<>=!zMSbdo0(H>3mPE9(3*b`xzKk#UhcWTlR#MXvs9^=s@@6@Ct zh`r?0ls(M|k0$w~Jx%l2pd*MiIW?t^sy&+Io#mthb0<9{7X8qpN#3bR2cFG`Y5vHg zN#3bR2hK2Inj<}$@6@Cth}{vUd6Gwyyi=2oAog^a=E)vS@=i@U zg4oMpnx}X)$vZXa2x8m9G{<^0$vZXa2x7a!G*9(tl6Pv-5yUcDg~Zs?JeuU4nsfxQ z$}r8-J(}d5nsfxQW5P7Yc{Is8HR-_o4b%LwN0Yo$la3&EL73(l9!>I2O*$|)!!*zI zXp(no(t)@gra9iDN#3bRM-Y1;Oml)qle|-tjv%%!OtZ$LN#3bRM-Y2EOmm_~le|-t zjv)5uFwIFGP4Z4nI)YeQ>yWv5mPeDkQlMO%H$J2Gg0iyZ6 znXq()<~^2klJmpD$@f^uhM(=@=}dm#kq-AXpY2(s_}QK)m~|+u?>!b~6hGS&g`Djv z)Dw9%e`ZP6<66+JvpxBweu`@QSr%|kN#3bRM-V$PtnTM~G|4+P>5y|&N;zdeJ=LR0K50MQ z-0yVAIVwd{#?my8CV6K$>5#L8PxAtgCV8hO9dedP(UiK!JeuU4b*Dql5-FNe_X|Cm z|HWlx%nmji*bDp<(H4481rxKZ%88!((VX zU1ALNrAvsREK)p%5(Tp+!}?+N#3bR2i}_xE9Z?KP4Z4nI)d06VVVm(n&h3DbOf=_ z!!&R5Xp(no(t*!)wF&8?n?0K3otkvW8P3;7w|F$kJ2mN$y+Vqntm_Lsn&gw#_2w~8 zhpg)uYnqOf2iVFW;Yg@+JSh^JQXuKO?NKe-Y0&X=!!Z zY@JdUS=$zQG|4+P>5#LvPxCg9CV8hO9dfo#(d=aRaJPFj$tSJr&HYG+oUKzdrS6M8 zn&h43q$7x(8rDZkJeuU4nsfxQsbQLTcr?j7HR+K3oUiV8dNj#9HR+K3oKN$Y9!>I2 zO*&*hm!c{CzSN^h-r4VT$bK$GQ~Lcbk0yC%Iq8u7oKN#^k0yDiCLQuz!KZnTN0Yo$ zla3&EQ`lHq=FueY)TASb{VGiJR~}9BPE9)GJvd+8f9=sE@6@CN?-hoX^Inf8d8Z~F z@_vM`ocDP&$vZXakoO~en)Mz{@=i@UpN#Mqxd5wyFN_%1|@>%ci;xdl21BsG>;8BV29G9rrzRb8&P>siet*uRN#5D-bjUd~MN|6yd5@Mw~EYSJP5xdhF`{oIR`Oxe$o4d2hj(_!!Q&3-N{ zo!!s9l$;+H1McU@hVSR%=}dm#kq-AX@8?*g_d_?c)TBf9Nj}ZZ9!>I2 zO*-T|Lq5&dJeuU4nsmr_hJ2c@do;;AHR+IN=P8=9PkO_nNj_d_?c)TBf9Nj}YYJeuU4nsmrMDMeG(%XdARoOH-O$*1{&N0Yo$lMeZOg-`P@ z9!>I2O*-WHu}^b{N0Yo$lMeYFl25bAqet@6-I)qeckKqF~l0Sl@Yr8O6^VL?P!53OUXje+TV4 zZ;(&wr&Hv-L5G|-#(K^hpLsONJ2mORn#A?kr}+<$CV8hO9dh3AY3}uCl6Pv-AZco^R5b zki4^B=#XzOPqUpzle|-t4(vPIhU^pC zdo;;AHR%XqIboXF9!>I2O*(>DuQ1IVk0yDiCLMCl^tERPk0yDiCLKZS*syZudNj#9 zHR-^!l`zdbk0yDiCLMAv^3}bgN0Yo$lMXq<_%!j?6rA&&yi=17Im0AqCZ1tBQ8MKW zLpJ;j6Hk|Th6zh&&oBka`C${lGYr}AGfX^P;u*%5F5wKrBE`=zM8T{**y{MsFqDj+ zVTeM`Fcfl}VLBs~>kLCash_6G8HSD^b~(rBG|w5Pi${~ZQ`i`-l!%=TbCfoh$Qbl6RJq z4q4}Xn&lo%@=i@UWSvXUOq}ywDVZ|o$%fDQc)G+nAC}I}dHf!HVtz8`$%fDQc)G+n z?@O03=UJrqoF@uq6~g-FJSF3Eo+xC_Q^+yrdw_P$dGbm9^svl%I^?;Cq(b)TBes z#6Hbl9!>I2O*-VeWj@W`9!>I2O*-VeWj@UVJeuU4nsmr_%Y2%BJeuU4nsmr_%ThGu z8N-1dP4Y?47@Fr19rBDJMN{H3{_2x+ZjyJFlMeZ8S&C*y``iLw<#lS3Px_k^&E=#6 zeH1n~@qJjQCV6K$>A-J*g=zNnXp(no(t*$FIW>!H-TTEg)6CyID~|K_*-39a*v1ci z^5rXyAO1YRV!kB(@Mm-5P%((L&qxSd-}+o}|9GBB&rQfX>p=(p7D=Myw?C^qz@tgt zsYyo=J1|UhphuIuQI2O*-Va(i1cj_sK_5GG(7k zHhiBPPnWn)4oheE$-|QKlYKJT@O^STUE)63mo8zS%p%42$wa}d?y$anG9}~tWTKFL zGKC!bd5lMsyi=17*(;`K%9(S7 zN0WTgnX|d>bOf>M7$1F_)gDdqPE9)S_a>a0vIqO2N0WTg9;~^XbjThorJV9U&yV7o zN$>NJ|CiryY0j64<$a!%d?nV8jOUxQZy@jNM>^zLzEAU5k0yDiCLQv=Vu~hWJ>LgA zF0N_!RONBrwojE^AoybTR0mnim!v&abK_7EZ^$He^tWRB@$o#9+J?Nd9&}(2n<)9s z8YJuBs6@?#b&&l3WF2g-6?KBx-;#>(O&O%mPe?37!a7LaSuZ+d&ydnTqB+{5N#3bR zhwK?rG$kIK=+PwaoV#?$CLl#q$~nfPN#0pbI%E&v(>%$eN#3bRhwK3oG!xg>lPQ_9 zwvr8BTjS{x*VeFfc5OW+IX_uj$%e13@pOr6t1n%`+R7ru*H)rn)^J$g+Dggz+Da6% zwo=Hkww?;wwYHK^>ZdPdZKXrj)~`Hk>uDZM@=i@UWNr0np6<~k@6@CN$HPplgFel1 z9!>I2O*-(NSeWLIJ(}d5nsmq>Af=qLww~e9B%idlHun)7vbLsZO3XboQ8OXtlK-E? z+~y)s2Oo7$YN~HyuGDLMVi^)*E_r9Y=)g0UB++lJPZKpi~E#}$9e~`l&oke*2l(#5Dh&a92`}?`ZwRqe`6Ado;;A zHR-@vBrBvnuk>h=cWTmszuoB6l=b5(k0yC%ztbUWXG(jD=G7ie@=i@UWbI7Rl(ln? zN0WTg+Sxpo=#aHDMN`W8Gmj>DXF2JRwbQ3L*P}_^sY!>doe7$Warqibro?5k;c+>h zE-@~LrL%E)UUGgCm&u05<#@Wpxa>=p5SLk`cw8n5W?cg7i_4UZ$7Q0BxJ)5OT)q~x zD=w2y>Zdx1%XCOwzSa|$uk&b5%W5_%yHgXp(no(jni4 z@@d}S(IoHGq(h#)q-e@BiW@ze5%Wlq-aWfU+B>!pA_Gl+nf&hPE3lXl=D`PCV6K$=?G%gVeR>Ik0yDiCLKZSq%h52 zcr?j7HR+Jw81~hDkw=rfQ{#QCq(b z)TBdxW7wy;)T2q>sY!?Y#;{NGE{`U8rzRa(FT&>L-5yQyPE9)Gw*q|SyvL(S-l<84 z{BE&NbD2kzyi=17`96?O^H&~C@=i@UZBcY2NG6B=6LuL%zG? z)4b24N#3bRhkSP@K{Ih5Ur))DeLUIleSAD!;yykso!!U(COJRZ$CC};$H&tp?&E#w z687;dQhXmz6wIoF_3h&+8Q;efh3w-gS+%lql(e3@AG@xFW?_2f(bd*{oI2O*&*BpQ0)Iq{ls)(C2o#T@Z*~h17%J_WRqeiqe5zSVf@b1A{&`BK?BmIX@8jd?68G_8>Fhp!V{(47 zk0%?xkB_HI+{gRUCG6u_r1(CbD42CWtZyGr$@o5=C}bZ`A;&)cMbNH&Jo%)4DonTg zcsgVs-A-vBT;qM3n>?E2otkvWp4+GSvPYA=QI2O*$~=!^*kYqe#+L!Y#>1QO ze3Q;O;Nfk0yDiCLMBiN@*Y2^S$lSB=6LuL(WbqnzA?D>d_>hv^Q-Y zKXl01DMeGt`Hn}EytABi;5*-8?fI@ple|-t4txe9O!H43P4Z4nI`G@=VVaE|P4Z4n zI)d1+FwJcqP4Z4nI^^u+>!bHPn&h3DbjaDsr}@4|le|-t4mmreXv+B9?$IRg9G`T^ z*(pU+#^;|sn&h43q(jb5KFtq2n&h3DbjaDsr}-C;CV8hO9XQ*EjintPP4Z4nI^>z4 zubfRDP4Z4nI`Dg2VdebLqeab@N0Yo$lMeKInC4E8CV8hO9dah|wdXF6 zCV8hO9YO4YuyTIv(IoHGq(jam3FS;YlYBzSlrst0@H0s~UE-M}ES)`*>`u;4&Lm{R z&m{45iDwdDx`ZcMK5QUscDC9Vk{1vq8OhP`XpN^L^2_14K z8Ra>X{LQ0D-l<6kKEs!W{f$p^k4KZdQDrzRcp zw^V$Z|L|y%cWTlh=Z6$cIX~?6Xp&DlKQ#9{9ddq1(UkMU=W)%X^8@*Rc|YBpFB8l8 z!I$qpJ^7OV-uW_d5W7BXOnwp1H)$VF-q|m7$l8`t7uhT9^JtQHYSJO!Cq(b z)TBes20qQNJeuU4nsmt7AVpL5USE4O$tUf-n#TqmayCfOl=f7CJHC;3mXi+5o%E1c zq&=GCotkt6u})!{fk%_PQ z@9cLvWY3+VDgEBsqe`5qEPcbDFeS()Rmv9orS;NWVcE9j%%Q>hAKPGV$X0Bd@w#oJG~cvH`eT=`1gmC z?rGKjyYD%s1^3jo;GXAOa8FkDcbDh*7Tj}F3+{Qf1^0B!`R?+Z(t>+#YQa4(wBVj- zhwm=Wu`Rggnikx%t_Ame*@Alx%Kh##pVxwW>RWKn`z^SqH1E61b9xKz`9%xvd9?-i zWOe-R@>I9ro}abgp0zEw=ZhBHGcfIhxaX4= z+%vG?yUTN4>OEb9ioOWgs^`fU&cq3}q93C-LV7TpQJ%5?s1tv9lvemII{szizl;0z zsp`|Ws_#LEkZGl+z;6D9Qr%`LHDr-e6<8#?oj5&Kd;U2W@{Y+*DYdKs+({>@%vY7l z2G{MFld6Z~wFtOs81PY3rq=Lg{0p#joYLv>Xfy)wPu-Ub40Fd1@0qm*IBmDhvKf+=u_0^n4|+)XG9zo7U={j#GzEt}}M4v8|1b<&8qxzvj~Z&@km4zszr|?#S!Zsjd37bX=FV zYG7ukPVLnDoj;7URfi}t{ork_wwJtJ*g^d{e+q0YN_%+`?F3^7mrN;attJ(|4f|3K z?Hjo)=bGHZVNXG6+p0r5QfH{5j>@~esDpa1!|Ki*)W*EkD0wH`(?PW^B=a$t4(cJ; zwyF=x(^`F9K+Pv|Y3rgl=XX$<$gzXk1qHU!Ijv~f^BR4&t8{VM(chr)WsA#BMNf4$ zzG0n-O4JyOjPFo&gF$oh>6@%}8Z@_%=%*@EQ*&4m(Y30dLDO3ityI?_#$Iji%rbqNWBTPFb6r%% z`@7`Q-e;J<7xKEVx#vQomSOs&-~G-Q0Py>CHDx-+gX+?FlosThfn{%vfD+>S$Zo zwnLez`$c^ez9}Vw!fW;zB!mUgY5ijN&7D}Eo|$R*xDtge}7_Ts~uefa~VBsAEl1Nou)?; zXP@nnM$-$+THFhFn@FIASjx@cHIA%`BrSh$2prss2&Io;IpL9^ETaNnRt>K-v*o5{-7B@-Tnu0{wvcC;nBV&kt8D} zhNsr$F;87SGPOAC|C+kopAZ$hntIt4s*jn)sr9lkKR1J`QhzhXQv0iwnbF&f{hJ-J z=DH^PZW%FxHe!-Xa2R7F6MUr&aAY zC>!XKZ_opHv!m`Cbbv}zw|;~A;XJ;~qR6r4|Yr3}2SoB$L(ngC&rZu$3k2PtdoIvML6bYzq~)mXf_~aL8xQ`=_-F-n-+(%FP=f@$hB|am z(*@nqYKP8M^99}6sw1AsY!Gxge0i!-&^-9^RMGxcGbek8?x^|+>XF?M&uXR#T2pd% zTE3bm=#`Rlfz}H;1nD}dt%9nNu9GULu$q^^SD>l{T?1c%nj+{__zKk=LACG|sx^Wh zDXK~9thNaHT~RikbL8RYL0I?4(YIYxZ$WD!*{X}0Ea=wknzSM{ThKk(*{Vpb7Ib># zg0y0_SJLyZ@dgYmMTnjxqd<7Gd!QqcaGNBgUdf(Bw9?XM#EQ!~`u zmQ|Bhp~?h(f_Gyo)Hp$-pjoM=3mON_O0`1JN{qptYJ;HPqYgb)I)7Fbnj_I>y;PB) zQ_yC;)L22k(=}gR;AVmngm~!+9&97_zqHe_`!JQuok|9)F?rp!gsKm zENCBm2dia*dbg@c>#J4^8rUjZ^;LTXY1F-+%Eph*Q!@*7@25rz;u!3&CJEvg?5~yz z;iqIL_q z1O0HQiuARb51=0oRl^0XK|dU(#tGVlemG1m5_Bfodazm{Xe#<)u-YkTD}0BmbUqM9 zId{T$xEf-RohwJE8G<-hj#MiIajpzeI|OmA3{_?Qsbc5KQEHSR&XuFoY=i7v8J09x zhN*?dXXnZ=wOkPA$}qJ<(9@U?!xb9Xl=B75hv90lpu00_(vDVR1U;0It&Ua;1XW_L z{6O6&Xb|Sg57c%+tC8*)wNKDXNOz1HG|=Y2b!>zhC5Y?T2sK|&Vfoo<)oPib{mRb; zY7}%w>AbWbs=b2lE4>+L>>#Vzw|rjOkJL0lN0;9Wv`Ns^%$l^3YKNdpGqcr5)!n>X zFgG%wLrvPTYOtUqJ7lY4)eJ$uDXB?2PAw4hSV^`zPHhyl53%5QwOvqFmu&o9tFl9F zSsux`AZ?TyB0P5&XqB0y&%q&lhjs0oGT}(g27gk^Y3I;C5ZFyWHm()=g}!@ zjv&sXQ`8zkQ<2|TwMEb@?oyL>s_HH1BeV;iwhOwdWM0~7YPO*3N^S;f z6m$p1#OZ3Upa(G~PFMYou$m9Htw|fFMhaTjHd~ET^8}4R|NU4k6?78%@5gGZpp(&m zXQ(}bYS4dYsH!8a=K1iQsYVEz0pFQwj-c~Uhw*BOpxLOyc(p~)KhT~N)NVm-v45GM zdJnOhUm#tL8ZM|E*6A8GTTn6fJrmU;L4A;JqS`DdtE?t%lG-V#uq<0mQWZlL{>_bK z?bCx z!Gfw#&dF+qpz&zyTD3sXG_-ZC+9>F2wAoM8c0m!0iJz#lVOFzkaZTE}YLKAf;%s%U znl9)Tw96DVU(m17o>SBYK{bdI=cz_PF~o`UR1ty^_YB-moUg_RVvL-s<_ltsoTkki&XONAN7beBX3)M8^voZ2QHBS&@4qYKx!~(Jnt#dB<2y z#+MnYw;;xs8EUd1#+OUfY(b1Km#Ec(7z-{{n*}izT&l81SWU))%T$FR#)8Y#BteV? zGu2E%j0H2*DnX0|m#a;J7z-{}nblU4Yw9f3T@csQS!%pNw*RhBiv+R%W~)tt*nd~5 z$PcOVL6rS>l^SA@?Z2zlG(qgYtJPA2Z2!$k>c2T^rSaMRo1-=gV*kxikssM|vj2Xj z$^^0hex}9=;u<$sO&7#9ZmwD(=m5msYt#loLlBd%QRySCCfBifsz?ymv3Y8&Ag(!e zYMLOfIdy8eAg*!Os`Y}n#$Bth?BL(r2-mplRDmF_ao4FCf=wqaI3{jXI|Xq}EKupkTTPCM1!{;O zj)|MpSV0^UH>rh!xIWyhmJ8zgaI@MWi1YmxrAApz&i7l?V1w*V` z@^iIa5XZ|eRM81kvEyZt8Yzh5Ws#a`kR30#C5@Nc)B@wP5l)=3?IdMy(OVxpKeSB8YS4ew8=YYI3eDSG@&st}IuR1#zxC zpk@o=TzNpP7R0&opxP{mbLBymeX7;uTzN=U2;y9MNKF#N__;#O6vX(sLah=s5AFG| z+9c@bXwQdL=4n=QFV35fsP2NISf?LR;{|cw^Qf93i2I&L)k;B6q90bOje?#-Td!1+ z)2$}g{>N0AAg=w7sd0k1_CKzs3*y@UxLP5IYyT5!gCMT`PpI^9R`aJAgR4}LpldM( zSE;drW+T5R)igoBKz>iE<${jF{^cpPUeJlyzdWU|wZp%;k#)%Lx2izUX5{xz=j_dB&u5cep*S9xdH9JojMy&5HmG3#kHSrB8^ z(`uPPHfF6+TLm#@tyOtvQpG;=_=6fLh%sxOnq!cSS?kqGL5x}J)pmny%z7p%W<8_! z8lR0>J2ww#Pv&!~}tPQ;q?M>R>%1gtrKR7(Zjff(|vS|z9+G2~gbM-bPl4Jvbj z!oRr@u2mb<2tkZ>4Qjj~#<~WzL{JW5)^lp5pkl}H^? zg3>XMHmN;=I$$1cQdN_z3ggntYJ?!hrI*zlL5!`hs3n3JTVGLI1Tkj4s&)%v%z9Pz zKFew{W^Go(1ut4@ z7_;718wD|DZB^R^F=lO5Ws|KY=gK>3kRZ;Lchq!)>|A+QEf>VO@+Y-j5ZCucRa8qA zyC2-9#u#Mh%6n>#AkLNd)JlWwTzNlfuDq`{7@wUh@2f^ZoGb6EqMz7ueva|EUG)>x z3S)P>nkI;2{?BTjAddMztM!8T%;N*KRS=(fe4q->wVHh9@fTGk=q054i<%;cYw->> zM-bQI9cqmrj`=3FMG(h)lggW7H96)#RJ{dp%zvon3;G;m{v)+aP!wzNM=Je1n~rmO zrz#S}IlWVj6~uLVmzpMs>+~+QToA|n$7;PGj`@$3I^Sw?%zvT^1aZuNqQ(f~nBT3Y z2;!LEt?m<4igEp^S|g|u{qU*UCnyW!`mZW)s?DJo>-1mMC_xpFNo{r=W2-{J`ee)S}BOnL;k6D3*s}6FH|IEHTlfr3pKnM zL35uPCy38H_NhgJ_{`%=wL%b|d3>pM3gX)Tl}f+RYI5!WN(~XjHT-KeRuI?luhl|9 zT*H-KE{JQm(mMq4SpwdcpKdkzEJ5qRg1Bx5dW;~hn}J>+h_N6|-zSK%AWd&K$i{+n zU33vOKZr6Gw9;b)F&4De^96C;Y@^p3WMe@@?-9gU5YgQ)rizUPQJwg{T2v1*J{t?7 zdXyl>f~cM^=x3NKZS^uiH({={)s2D}3o`UxL5u|%y5CQk-`oh-xJ*4#5ZAa&Jx>tV zxGcR?5ZAaYy;V?q^m{wKM^G2^dplhd%#P`})ZfqGwJH5m&!=;4AG3p(i8f*6-_^&&xxOSyWpAjYLUy;Bh5Ql753 z)M_#=b<{%yF)nq~O9j1&xRkF~32MSxoUaQmv*{Q^I_WAwj3J%$6hVw31$vGk#*hNN zMiAptq23~haj8(}&9s`YVomL=dkcC8YiegbS-+ zC5UmNkDh0cjS~mzRe~5N4%9mgvT>p+DNa=Bea1I8Qi5_;>Ab6LsVh*1Bf2VvZfGR|_h_96MO=6~wXBS7*<$njA}g^+-V+Oa1gDK^#l{^in|_ zOa1jKK^#l{^&UYSO9OP~&#WfL(f~a|5XaI$JzfyU(m=h$AlsgU^kzY9&qH+PT&mdi zJX8-C#P&Q)&os!k=U}~D5ZiOG-fEC-&%=}2^KiY}_-x!gTt}|47|0cLRo&Kw+iYMy(4X;-Xo|-^w&V6=3C7S z#Lr{(WI-L#f5+-&f_A}ooL(*HOZbk{dj)MnA04l=ueU0@&_~DXk%F$md>^GJ3A!2c zeUx4*=u~K)pjQc+2+b4p9zjFl8?7^Mu$srhH(HMn#5s1N9xsS<>_ojp5a-w!y;2b8 z*ciQA(CLvCX(#E(jaKul$WuVm1#ym@tmg~j96MQW5X3olif$CdId+OJT3}W9Uh-Jo zPY~Zr9;>Gb;(N)b>Uo0rUh=7Wy+L+vo~HK+;@mu4_q&Ojc5aT-Qv`8t{#Y+F$j;3( z^kzYvn`h|so0-ne%`=nc=9#*{`0U&~Q&$P%+&oiH5yW{kUe6K4c{E)SdaEGrm(J091aZG~j;^}ZYW}(SnY77zgrGgeF9IzS zv;psr)#}xP-opE1wR*3hEjcUFexkE~ZdE?ac?xKzAdbOv^+G`$gXii^f;a}J=pBMM z2B+xmzpyHd^XKWof*9w|(=!Bd44$tS2;vw#UvCt|F*sFk7sN3*RhKQIrX5Su^jJY0 zOBd(`g1Enq=?#K7mM+wI^o@UZEKS!{f;g6@>+uHJv2;<=Sh`40H$FR-F4FS_aV%Y= zHwfZbx>z>~;#j&^7v0YM=0=V|{QRlzC+Jkf&!6gPf_fol&Cv4%4MxnGq1OxI7`#Mp z6~r-ki7r@dH93|p)m4HxmM+y(1P#kwk#?D$Bj~u?r+{_~x)SMT>c|qSax>D+)WZd_ zZ!g#51hH=~*NX(PZ)fQhg4nmS^iDyHFIVXFJFF(-%N2T>AolHSJx>t(cD7zGh<$sd z-YSTFd!;V8lPb1vuhOFgv2U-|^8~SP=jb(p*tb8^dkwOEJ6Biyk}CFn(Ybo8LAGzN zN$T5c^c3T>eS3|bBZz%_jb0;&eKb#R5yU>4r}LIFhq;m0&@Oelx1bNuE_Hgcptabu zU#n*edJcQ`YxQbDZ0qavWvZ;A3jgLt*w*uPg&?-|d_74J=h5|grXbFv>-8!@ zZ0j5JCP8fL8+7K~R+DXgqwX$W4kb0=-hum(aXPZxqz34DW&I z$URoGCLiyC=`ukV4L^0zTBc$2)Y~3^%v?5g6_xsTd32QQPcMO zt$MH^_WRHEbV2O*U+Cq6*zb$YQ*eY8Xu2wI0eTB64Y`l9^~eTSYRs5L(4c!$1E z5I;M4r(Pq7pPjr@?-TS<$qxNXop-Oz;qN6K)i3oZK{;J_=%sqHpe|iIs-=3Fpl3^W z=)3f4L9di{RCnpUf;i6Z*4g)2O^&m>^+-V+XZPqyf;i6Z(Mtt!oGsI<1aX`#(|ZJQ zoc&5?)>}=EvtQ{Ef;i58t;Y-EIQz9;Vvz0Id-Y~P?A!Zv=5MHC*Zz7vToC*AH+rT) zwr}s(%LOrB->Gb7Rlg~;X(nAC>Ua!z&1uIJfU|AIt1h830?7!)m)5y$SOTV(EWIhxk}Fz z#P=zm)C&cbA>EUDlb{Qb?kT-P5Z|YKN_SsjHMzI>tsX3hdz;_t8G<-=SL+3WICfX- zjeK&a_s(I4-&+&`+GfI5XbJ*dcGiz-KX^iK^(hlbfX}S-8H)C z5v$4fDc93Y8o+pU!Q~p7(7qk;`aGl;N=nKTbb-LhDtI6k>>vfeN zKF3_IrwHPEn9t}rg7_ZhGkT36KG*o8-Xe(4HU6mcR$5Iy|9n>W7R2YD&+5s7`0QeX zo-K&aE;i`Zg81yBL2nksXBQ1R`!TD@XBW@u3PF5!@tmGyke$=d>m`CXr#I@&f*7w~ z(3y`@#lGM1q8@ILozpMr>4G??U((AAvU7S<(wyF;R~et3)0^}rL7dZ@bmkMboL?ed zzpT3pieR07S&tXQIsJ;BA&7JO6}?gr=k%+3qae=dS9N5S)#RMstjh#(PH)!Z1aVHk zrl$+yoPJHO5X3qCy51m&bNY2%@ubzf2Xp!jJw(tWnA30QrGhx8x9C-ZIH$MhJ%Tu= z-_)5;SryLdH}wcXoYQaV@q##~-_lD2{RwmIZM{;^4$Qx|^=?5Y!najNerq*r;M=N) z3*wx9M~@T4IsJ}aB#3kRUA;mO=k&XJry$PhKk4+uu>>79CnAkOKXdX6B@ z>0Nq>AkOJsdW#^=>5uhpL7dYc>)vY>{@FSGiJl~gb9%R4B8YSPQ@vRb*Xh6N%s()l zozs8Qg9UL;|4mOZ$j<3KNppISo^5<~PVdo+1aVI9(VGR`fqDCPy;IPAn74n|73-Ma z+z99GXL^Vr&fCxQOhLKr@IIGbD5w;%;2(OEAbw6@uihbupA*=tyRWyJWf&8m>%oG0 zVN86kX9!{}_@`bVh_T?GdZQr5f-m%TL5u}o=(1<5CS$=qJxCB^!9Kl65Z~YYQm+ui z_cy=P*?+X@f{c0ii{ll7vNLW5nkT478Q$m8O9dT_efigVt02Y@73>kj7@~rzXRRh< zhz>>wVhqv296^jBL9j#+V@MEe5%f9EGHJnXK>_+GE$F?$YQBVLR_VcTLGQws9?TZ> z7o=+yEE2REXP{QWWI;d!{nv5ZBf+2z!L)rv01u=$1f`x(@Ln6T@ zL5v~MV22>akZ92TIjhMS(l!_@h%uyXFhdYyNJg+g5MxM2uu%|WNM^8I5MxMYQ1-ml zd=%p|D;Ol`X^hXTV7ef#Iqib^g1F|i3pNOtt02aL4ne^SR`WTuS#D4z=q8w)xHdj&BT9 z#P={e2YJS4V?pPjw;;xX&cS3sPh&N%f;ivz3nmHTeBUovDv0xa|6r9M&iDO;J%achj*1|2v(@BxI4Xh> zg7_Vd%3!=8eutwnSR#n?wr8+X5a(^rV7DO7+g?HBHLJ;a+bb9@i1W60FisHXZSP=_ zAkNzZf)#=|Zx0A|3gW!&6QsXxH92ql1VaSz^9%F zSh^)`KrqIjxsmyu@IF^CLr@K(&46HupjYvneL%2A&}VqEJ|NgG=vI99YCsTqlR3WFJVEVEjg||VZSLG8=scsjN6>Kw<-cokFyE~n5R@9! zJkIzVVxM+SwgG-CtC?xOJ}jTie~Y~?=fA16wpITd%lw}l5C56=`OoCyYq$U1+$ulOZu{Cd-m z@!tgeQqzy|-vsfi z{LTUIzrff_jJ*=JHNI0y`>C;7R~2{0HwR2Eux0oZGp`Rab|~zA_&g?c>Tv%7#`c5# zYx|?|IY!?3u+ceHUs5(!Z^N&sP1H@W)AR(rFXu{KtKV*aJ+4pBzfw1-kJ>+=FEDB^ z<9ek&RcCZvt>1(Ke~D{q>HAPP4+@#8Pd3z_qFT!?FyI{Mi&tQA0j;;FOmwadsQ(a((8U9DAC$3L4{OQI{R6hc9 zuDS^JLUmQEVfbBvw^~iaxAs46bv10e*7v~nYP}Bj2d&?Sozyx_U#;e~?gqQ8^)T4q zwVnw3e(S4Y|JnK;*s?b3V2^3@KI}Pd(t@kib#1!A-rHsv?D{qnVH?|A4f{o#x?r)o zDRK|4izD^8Zj7u8u2UOZtqbl^10xM!x<{K}Yok$ob9+&=684YLYS^}IYhe#-dnLYS zzp>So_-^{kt?IyB+4e5O++~=0FweGafc?5{6KqvRG<~r;GouoAenvIylNq(JpJdd* z9*|iNduC<>?2VaCuxm4;trn|~Gb>@MvZ`S(&Z>pIH>(bIS5`gjO_2uJ(soU-liEdF zFIK;3R|&hJT{Y}K+SS5#Z(j#Hx_v$D?Dh??54LZD-P&HaVfl3%mOt7C^~x?cOu1ny z!3@f-hCMsG7ItBF9qb>n>tQd>YJmMXvkA5;D;im>KFzL#-IY}hJ0PbPc5+S~?Cm-A zup4t4U~h^v!G4t!jV@NhJ5<8fb*P4YszWVoW26rDlMYLxELAjqq(oZD!w zn{a(yu4>DBqHPze7jr9N+viooj?SxvU7S}3`&wQ-Y+=U+*ohsRU_Z``X0WuCuoq`l z!`_=!3wwXZI@qlp>tWmFH^3f}-vm1)KbpB%-IHGl`*MCY?AQ6Vu)R9f!H(}#4|{8; zwV5o*+Dx`#1DNMJZ8OX^!!&{UvQsn*sR}A#Pb;W~tt+U7U0qNIyR)DkwxqBDwz{wh z_VU7LyT$6^!b;fp3aequJJ-Ut&#QxdG54-^%<-;v%&{KKrJdIrX02fwz>Lmof?b>! zZEwa8EXEHk#t$sU4=lzHEXEI+&P}kxJ4CY=tKFR|VH+dWusyoe!hX`B4z?n<9(Ht> z2H1%m8?#x4CR~4x?A^r;urC)k(dI`xE>`I! zm9RSts$mC~)WTL5*1^`4)WiOwqyctQNfT^P8qHs<`j=M1o?ALJpRF`BpY2c$=JLV` zhM8cPS}+e6*1_HssfWF-v;p={rA@HcSj-Dp^b72+tU6fq z3+zpiwS_GI+CrAU0nGTW+YGbKFil|4U!6IlD`B7NPz~D{sfES(fyMZNUDmY$_PX3A z*cWr7UD%J6u%q*;VHfAs!oJb94mPb@J?zAe4X}tau!u87EMX<=y;;?;_jjy?-C0lv zyS3xeB9^co*N5bao|4~auA6XuPrfSVJ<($JW+m*vl4{uM!dlq6f;!mC3+rJY zE^L5Byn^lDEm~sQANG=NLrY9QmY9A7v%1>^!%Q$tEts_Kb+E^DuZMjxw*hv3_a<2M zV=3FD684i0)vy)0wXlEaUI#lmuO4=BUIT3Vye8PccaN4~?)RvKo!GG&_T$W2*s82L z*o(84mYMqE`rfQH=DGpbyRsV1brY^n?4im{eajcCD|%GIKHQ@kc4t8??2aCFutodT z!&VnIz+PV11p9DdwCiFua=%L0JNK)G-LqdU?8ljPuvJ<0u!#S#_hxPDO8sqJ*&0n? zc4g^qWOO$&(Qa(RO4#G}uZF#P|616U``5wl*uNeY^B1;fMH6gkQM5beQAH)}-9Pi&lc^RS7$=cQq{L z9W3S@?Cjq4un+WZfWII8>!J=MdB6Y9>d)LE$*n4eHmS=5GmZt$s-vhQ8 zW}9J}z#wk)T8v+|tb|3}fc-SP78Y>>cG&^-urD9b0QI7!g2_5?n_;#YrU}d;2SyKAtj;>H687WFYS`%q z)WV{DU_Z^Shei9qV*bM3d|XI~}k@DA0mXdl>z%IaVdmtbE%umSeQ@@;*X`?fyJ zy$Q_dJbfS;eIS|Wft;b0u+ge&*#1?uu!k1c!Jb=O4~uvOi*|-ZJ6Ew(m9S`M*j-uU ztEg6s>${6*o9jAUzg)c3T-W3JoT@eEx`BNDHgmnL%9IC8dWk;Bl;!PT(nUs#NPSoAL})*aY|2RFe!b8vJZX6V6{uvm9svF^Z@_pO5+ z*>~wcmZu)qm-k&`t{ZTDU*AS^-Gu9j9n~P-6CK1BsD#D-0T%lQSnMBQ-|SltTi&k$ z_V|8Hu$T3V9)dRSR|&hVUo~uI{|SdsXTl+@do7qD{jW64m4>MUgMNfXKf->M(*%ok z_E59V!eX6;MSWpWUs%)^_T=0KSgfntql3yb=~UeLb|_Lu$ZVKHuDF>YZo zZU>uj3yX0Ji**+E)&BK^?`O*le$?3CqRjP!*Qr(m8VuiH_=dsc8^E77pvmw}hHo-_ z6ZpFaL=UG<^l<7#59j^S!^u|~zS8iOhOY$QYGAeDs|{am_-ez~8ot)>wT7<+f6>4? z!`B(U&hT~M-yc|S_xGWRs$ zo`OU45xhqqVdmozrd~&wdL3cvb;LR~?T|{tR~o+3@Ri_SKBU_4)rPM&d^Pytht?Xt z*6_84uLXbOp>>9@Gkl%l>kMCS_W_Z!&z7;hVrO zJ}i2qDgTkC{70JdAGuDo8(eAlO2bzgz7qV@!PSPZHhi_=s|{ak_*%o)8on0%ronZF zuQPm|;p@N;JG|cT^@guEd_DMOhc_6$!SD@+Zvfx=h$h1~8NSKzO@@ySG36g(%0I-E zf5J48Ukm=8BkK%bXZSk9*MV;} zq~7rLhOak#J@}DB8VuiH_y)r_fPZjE;}DLSCgW`~-X`O1g175XHI&}yP*azorY=KG zU4~M#%y`SinwV+stTcC4nma3T=cPl3n0tnb<(<{$&T4aKwYjqzcQy>IHGHk%YYkru zzVA_WhOaYxo#E@iFFdN=@b!kTH+((#kB%DuLzaBDu}h6zW9;~24R7pHW7pX0lgO_z zw$WI1GMUEHXw~VoWyTJ%*JqL$V(fThXB)e8BKbAOHX5rYk!d`KR!ycYGj@ovOQ)Ip zjcqhmT|j31CA71RU25zadwrF;-`GZD)z#+yI&;6VOO0J)>|p$sZjG9TU$vZ%UjV!h zzk0SFzXH{WU&YynUkNGD`{{oAC_PG#(P!v$^$dJR>1o}dcj~|E%mAMT3=RoK1^8hV zJS$DZbJA9LM%o7di{ja625c6diMGd84xZ=b0(HbQ&`w|q@$9n;*kU~MEQO~W&pNxo z+XEkK*_nS9>?P6K|JPmzXsbbok7uFFbw~W2ynKAFU8(V9@1!X;tn&x7WuL&# z$=?e*w@{~pDQXKly;Uyk(fRmWdRV7>z}{Kd2ezQIWixkf)Z{-2Xm3cP%}A%6Z0s|}s#atUGd9PhvNHm3`1Lk??w zqG^Yh+mLBxt`kd@*fLic?s4u zWxT&Am$u$8pB3`DpSfqFQ9Hx*MR_s#-x!^XO&x6uY&NyFb+Pq2#oUuvFJCPZ``7B& zmK<(cz_y`nvBZ{~W?Hf(?UPu}`%Q~k{hygKpKZqQL+1Jhb8Typ+IMf69DTLxZj`TW zL9f~R-fns)%e1ZSqZdt!rMC7BrcW1}J5MqFvc>emKTZ3uGGj8eN6s>1>;Y3F+j_Rv z<))@@8Sg1ZA+c4TFXJf6H)XRum^wb6G_&UF)*K1p?Qd(E*#1$IyDdrhOv!4&OgX@m zp}YlcZfA;ZTRUHTGbM4H+gXs>wzrzrv$aTU$x_o(=b9O0$H|~v&S=~IsUvEaY3;;0 zVq1HgY2jbBxP|XAv->sEYoD5NVrx3uTzB)#+}>uqJ!?itnW<4rX6PLz-X^B9I<|Jc zIc3L~9Z`oDaxHk=lr}IeRvBFerqI+^o8J7?l;`JWe4bO&s%f4BP(NTl@qx-!*aX;~eTI=jdLQY%UL*vAw{wXJTKE&ZW-J%ee|9t9`rt zw#-)HL$eOPXhuSEs&AKJkm-@AiQyOJb5@Qs<$uVmiB{8=?OCIFgIRO!D*Sl~`=Yd~ zS)EI1!}GFgrOEuk*pX(gTN2gR znex~%aEU3yfhOAAYVxxCgm+E=j1sZgbtwM=KcrF{Uzr9Q_Y>ZMtP25E-?3uhK=Co z`U9NNj)M(wK1svbi}fCK_#jKQ{? z*a~<&bf}0%{uq( z&3#{+`*a+Czqh)(`kE0Voc-h5FW5Xh_10T=_0!co-PNGNx*W@5u61PROLp7DqXo-F zT=npN52(0?T!rOgu770ry3?^N=i0HsdMsB$d=mkby05|Vc)mx**A75ME^D#eZl8ta zgP`Kta~+ls+3T_Jwm+6tT#-_`ItNPwsJKcy7fYjR#j*rclyn}Jw0Z!RF;H1&aP8V) z?NR4r*$XPlz5vTn^&l+MpyEqt55_X1Hektvin2Fy9k?EBu->FD#QtVbQG2E z-l8^Pe=De{$3@s%!3OIqJlDe8;h>^67h`__*kFB4wPXJ}sHjs1_Vd98>(8na`(Hps z%`U#v}qew(px02{2c`8E}A!-0zWbz{E}Y_QICda$>Giu!HEz6orw zuHxHL>{16R>USA-d8Vep>gC%}>_P`B>URb9c93y#uEhQXP*K0Duy=yYDCcVI{|qYX z*NeRiY_LA%Y{UMaprU?#*tdWU)?H3N_D_R~`VC<30UNB_Hiuw&>zgiy|y&MgE=Nwej<2rah z$eT4hH)L}~pN8+?OGJDZ9aNOD4}J}($oHY}Ay5(bF!)|j5qCX&Kd6X11U~>O;xh1q zpdxMpegmk8%ffF26>(GWaZnMLgHM8rxTEmHpdxMtegss+72r34inwF&X;2YYg6Ba+ zTm?Q0D&lU27ePhb9J~xF;vNn^4l3dv0Y3pM;vNOR1ysa68vak9BJQ#9M}msD$HQ+0 z6>(35KL%99Jqi9eP!acJ_!B_IcRQW}e>$l67RS@z&jgkAEJC*RY*1OxA!J+61(kIh zA)7B{JO}=KLN@oeZiDm00{lgw;`)u7@V4zGg07F0Y#_Zs-?L1n#xkZrvYRBY?=2Kbvn#WxY&1b-{2cuMXq@VA4? zdIuq!yFPD&zmt&7J-Bzk-%ZHoYXa|tzn740y$@8@`w7|X`u|?|?SyQ0@_#@4LxgPW z!=SQ0Lddp03M%Vkglz8WeFT07A)8(EKL)>(kj+l`cfdbM$Yyu@JK>)qWV2)aC*gMy zvaL^p@&fN&@XvyZJ>)+F|2(MJ7yfhbFM^7_-oF6%z<)u==FZsn;J@VDVq3og z6=&EV!G8lP>$lcV;J*VE`(pnL{s&O8*Yz*pe*zWzSN{_J7f@OEklN;M=da=SlGEFWdBQ>|x?BBy}`;Tx1D)xB(Gdu-yZnE!zH-nsm?0exWK+ZMxeejha=M@#C1EQJsx$sLtbkaT# zemRIX+7E98UIfuko^wS%LG;sp82mVhe%jZ=Pk`vBeF%OFh<@_C zEcywepY{a&ks$hMXW_Sk=%+mee+;PDOD+fh7f^AJ_$d6TAo^*~z@HAHpLPNMOc4F# z8C>)eL_h5k{J9|dX;?T5o(0-~SxBj7Is(NFtP@Rx(= zr~PR7D?#+rek}aeAo^)P9{ySo{j{G5e?5qP+E0SN5kx=jC&S+iqM!Ct;BN)dPy1=` zw}a@X{S5fOf#|3GEcm-X^wWM0{5>H0Y2OBaABcY1&xd~iL=Wv3!aok8hwR&i9)jp0 zzjL66AbQCDYUm+|9@?*fe;Py&?N`A+3!;biYv7*;(L?)n@GpYsq5THh<@_>4*ChApZ2HV ze*n=>`!4vOK=jl84E!%3`e}a-{#OwFw7&rV8;E||UxHieOK@9#1+GB!Q+*Ad0u}p# z+znp@qMzy;@D(8XslEkY38J6sJMhy%^izEgeg=qssvp451kq3RBluY$`l)^bUk{?6 z>SyqCK=f1n0^SOupX!(J2Y~3O`ZfG~5dBoYg+B;HKh^Ky8$k3^{Skg4h<>U+!#9Df zb=5uaHjwqLx)OCK=&f1Ca?sU8d;2hmTp5k3i`pXwp- z!yx*pE`lEc(NA?T{3Z}RR2}d#h#o3>%Q_CChiWtY1c)B0Zul)AddP2%=pl$6s>|Sy z1kpov1^iYJJyci09|N+URK4)WfvhK0AN&cRvYx00;QtKreRs73{(nI9Qw_rZ1w=p9 zweY8c=%*TnKOICr)h_rmLG)8y2Y)t*eyTM5xgh$f_Q0P9qMvFX`~@KTsU8Y{5r}@O zhrwS0qMzz|_{%`_Qyqf897I1=2L4JA{Zte1SA*!M%EDg@qMvFC{(2DoR5|z?LG(}^ zg})0#57i9(Js^6h3h?)V=%G3W{{YB(QkCEz1X)k23jD($>q&Jp{G%Z2Ni_%mcM$zl z4~KsoL_gId;GY1|PxUDHe}L$xdNlk$LG)8S7XE1v{Zx;Ke-=bP)f3^L2hmUUB={FW z^iw?<{$&t7R8N6_8$=J))8O9)(L?nN`1e8dP(2I&Ll8Yw&w>9KL=V+%@SlR{p?W_2 z=OB8hUI_nh5Is~chW`pg57kTIzX8!h^{?>Xf#{)n1^f>ndZ=Cn{}YJ5Ij?~$5PfrA z2Ty_MoAU`m z51seIPY2OM=l$?AK=jbL9eyT=9y%X_p9P|a&PU+uLG;b}82mvX`sUmL-vFX-&YkcJ zLG;b}BzzNyzB!+Qw}I%Ja~HfFMBkjxz&k3q;?XFTl5e=$rE;cn^raIbVTa z3Zie$*Wj0f=$msl{7MkLa=roI38Gidx8T=+=#}#w_z;L*Ip2eifasO;1Nd$by>fm8 z9|c(-IzNGrfvgXmpTYNntPh=E!1sf!51n7a4}j>K^K1A)5Pfrg3%>zG-<;pWZv@dd z=a2Al5Pft044(wiH|HKWyMMu_oO|I%K=jSI4}KHK`p{vyZ%u=&4;=@d2U#CFr@?1I z)`!kwco9Sookn;WL=T;%@Z%tQ=rqAkfasyK9DWOk9y%@Xe*)1%XBGUBAbRMmhTjUJ zht3-KV?gxKSqpz0h`u@N;7~t(Klx^ z{IwwZ=5)hf52A0*R`?r1)`!kz@Hd0351lLEZv|N&I#DqK8f&{9Pb= z=nTN$1EPn{4*2^(^w1fEe*i=eoonGA1kpoh82(`pJ#==#KMJCU&UNsA2hl?(4gWZZ z9y)vAp8(NAXCM4OK=jRdDEx~c`sO?g{$-H$p>sX_t03z`=MensAnQXX1OG3O^`SEX z|0akYI$8L)LG;j>f`1o851kzR`yhJgF#D_@g6N?$1OG9I9y$g1PeJt1IR^hZh#op6 z_1Bf0vkAVLPWPRv73jP<6^`Y}<_+LTR zht6Z+e*;+`I**52smH_Z)Dz(fL_bqcf~P?AGxcQnA`tydJq6wXqMxa!!IyyOXX+X7 zWgz;QdKSDHL_br{fv*73&(v-3l_2_=dOrMgko95eh46Dg)`zJV!&^bthpCss9{{pG zO#LhTd=ULiy#oFq5dBQO3cdkEKU1%PUkIX~sn@|bf#_%I4e&M){Y9Zuq4j`k8t!{BjWeOuZj|CCK_PbvyiOko95e zL-1`N>%-JX;Qb)$!_>#%+d=d;bq9PWh~B2|gkJ+HYc%yqFrE4oIF`B#+>`nYxHt7V za9`>R;QrK?z=x*30vd)ZO)IH#I>Rxarbsv~d*(p>s#rA{N zZ0a=dSZXm?Of`a~)KajVY62^%<>2vD3wU#C6?h`G8k|e50dGmI1s|STm%7_NO>JP^ zm%3H<8Vdh;VJj0gWSCHYXpmskc5q$N_R}hUcdr${Ztfm;b4RzEJFwl{G41B=XE%2% zyScmA&E3Fm?%s8Cx2>DIW8K`%>gEnsH@}s1b4RJ$I*-2>^Y;q=UTY6FkXi)<|V~+M_{Mp`3I9gMI1Y zf%NWTAw5?rXJ`5f`FwVwoGawhc^?32iY9jwtYSi$zy&G$z$Kp z$?_P=k*7#SFCznLG|1yT|L)&lIj_!n!WFO1ch&o6}~wr+>O$OyVjEwZk%cs9?E=+E>~y1 zMHhLJ%#Bmc%v}$iV|S2wcRiWAPC98%khG_sq^^@rx;03;wVtF~t;>fCla=Z0mBxFl ze^;Ly$RFQ+U7yZy(4{h^p@V@{s91+3)nLDN_PN;i?evVAh$Y=W;+b3~He=F6EW3Ak zPMU~iV05=e%I4tqKv$NB45s#?Ft&7*ugL#Np22PZ-`4XpJFCrY4c)u!M zbSNmX)WM5znb>rxp4I1KA08VV9`NR?FtG)aq$5H>iA5b4ZtduoJF-hVhJrflJ?Vi_ zH*3wr)}Ng%lyc?XVm6~=!eP#^EIr!#Gv$mmQ<^9gr*q@F7>>36Y-vI#@VTz%=gCm7k^BT z*<##xSKKI`{n=@s+TZ|=bn77yt|m2aJwN0NgNZ>Pa`9T&t&#+rZQa~%$LfU zJYn%l?@DKnRk9M4x`%=~ws&_lIuw?8CRZdr9MiduThtk=gYj)<)Ala zpNl*(DokYLy3M4C7{o)`5;6J>j2OjptPnBj*%md47ZPp?^SMqf=TH-)r>PD} zT;Fu26vPD~iQ85wxWIEb&Ncz8s1Vhb4Zf5RMH(5;rU-^^wesrywRIapt%% z@llJLw>wjfi$B@4K|K0%rCB*JvPI()Gl`csB!N%FARc;tnJj{kj;oY{7>|pcu`qU@ z&w6VL9U)F5+3e(4&g%ga(Al!UDQ8*AWKDcu)FfU*nUb8<@@3-`wJ<@(ITrLp&=M`@ ze?1q1kmS=pVj?^$R%6pdEZcI^)5dB762qx-*1h3l;$tT9(lgsQ1R-6T9PTDgAMQFN zasKJqL`MvAK;+!Hkj|FNoV7~ZG9|awoZHRJ(cK`uEZwSm!33m`-eQph!o-Dw63YVL zPvudu4xE_H6}4WP*qBMY(2>c?MA^86!*1TkM}y2=P7AYBV(ib3SEi=2#cjpH%_TXO z(`7Nsv7ejH7I$RxS!$4-G-qyWM!@NFl$clr2UhwS2^VrR=yZRIMP2 zs_o5{auN65QYkw#K0P;3of_T4RZ{8#$`UlJ0lwxb(h0YUGYiCSN(6nJ8C^Sx+D>Zqac~q#bq?3X`Su zk?izgePD%xdV-UDmp*T?is9l%U#E>7LC_{STCK$OmKdvDaEU!}#U;jSmt5M}Ey`T8qn0_W;+fXiltj$~S>ed|C*;kq?4euX{-=+3D!_XjJg3w|OwHSClHJu8#J{9)FnQ#y*3#8EwuHIW(YP5E@$kBJ!i z5uKULv_G@u*ec|+`7-wev(tWI!4crz&hhQ64sb0L=ct4iBezHjhs$kRl=KaawgHaX z@?6{Gw3i=uI=td^KJMM}(pa|0GyA%}awpvldq<$YY#+>PcchJ_5fAp`>T|c5Qz(;{ zgQi|$a|1~y_l_g&=X33tKkf%5XIkb5b?hYV%pLYl)jIKD)Z`WBFXV#$3~8!w9L*k{ zc2^wMVE=e9;MRm0d$*~2*|ZzI_8R7{qdbF@NWYI1bah z5)siZ{t|PfGBchnYUh|q7f?!Pi=3%KUV~ASc)7I<`9uujp%+mhhj3Wp&0;pFP0S=- zW7!ksP$r?E#4;WAdW;*Ix`ksouU(oTWwW6>WdkyscXIEF#fcS(Lv|yPUhm1$qrWiI z=AH$;BKGZ+Rf+CAk4i<%>efU?E#lKx;P9skUg}U#V)X$$n4gqMSa9=?nc5~KqHRL| z;}38yGnFUb+(gMtKle1+HYg<(W*N-m+&M}_`;9X3?z)Sv5N#+~wU2bK>vA|r#eKcW zOk;45aD7iLtqtN~E(F~8P%!PSilf7koz$bzTbwFc*_m1IR;NEm+FW(`bc|aitubD0 zTrPIjI7i(&xJ+zR!8K{3t6Si@#jC1IwI7Syis$K4v6{=({>+>k8MW*hm+N-jPqJ1j z>ngcSlFRKrZPG*+BfVzKx(`iU?@WQQHIbp9q(sw9l+VTPty|^dTQ8n=anDrWMAWs~ z$HH>Av{F|i2uVt}0JqAzXq|$I5k4`vHtx!l+$`iy4pi5uFRi7WI}(}?&c@v+z#=$*!wEQqKPm8uLSSpWeU`bIX`47Y87S=4IHavWKAi2 zFwdP#H>68u9K3Qht2y~~#`+TVx=Kc$_;hWf7RizOh!Kx)SmL?o7l{vtB|Z{q0unP= zDpj(^!kmg(j1Mc?q+8f1p0bXJcts34uY4qaFbGPlFTW9=gi$=11reukctDPF-M1Xr zC)|;6nLH9IE?Ft1DF}5&LYG8BU6Ih{NN7tW)Ex=+L_%9>RZw0BZw^;)JvFJ?E7Yl~o!V8k zQ_oes^xrJ~I2X**mNacY#*EG~wiBSWI!#|!=oJZ>UOYQ&O{8hLjubLmWe&=_vsP31 zNU_!pGIk|hO43tikSV8ejMTGIk0v<=TwU9z$H_f%b`vj0Oo0-uv%@hmx8>Lx zqaN<@9kf~N!MY$U$Gnt~qepZc{dPj9mN$gu9pb!eUtMihT5EPu2ho%w`v_DhZCrD! zQF@278g&jl++*6b^1OJAuRn5(Nj_G~HeIi2TH^J`@=@$F)K`ufa$oAE(fsUwyxpUt z%(xwi)+iC{*4b0Qvn5{{YgavDty!Cl^_6oEHJKuv%o|3$WdzP|ji|1tZ^mLqV@tiR8F3~Hif;n&I z^je=K#&~V`7>|rwY`(^htP7&^wZ;sJ&FWwlS&0~#H?lUc&W+}r(7?#?iE4BH8{=5m z#n_p#SuX9I4TT38`Mp6H%@cobt%4HoO3u%9LB5Hx36<&hthGGwcNH)QC&q|2^o8rg z@hag&IZIu;tC}uP=9Q-PBSC98hs#_xt@FZWZNS>9sE<@x!x#-&lSn4n*Na)Cp{(S1~+e6JIb7{(5K~KY|obS z?JO-6EtHjmoN>*_uMSq6{`rGZTsMSo3GX0w4`C^6ua(x~QCfR5XTBZ$D}5tpDw$!^oDnQmK{>ZgjXP*rPDZOr z3rs0Zku~|!UUHK@;fiIc+xI8*noQJCMpF9ETE2_%D2GPY4JVH@*Y1v_%M-I?wV!Jr zrOM3JZJ45@rj(9q8cJ=dAAL6j95C>%>GsW@#oGBy_#(i)e&8h zbb6iAxEobmS>03~YbEwLeJ=S#G-at@ zTh>l%Bz9JhjI5tU3A4;|>#9Mqh?A8}f%vYVS1N!+b3UL=8)gNylRkmDkxTmo>KA zmaucI)DnWeeT9Tp_@UD!bh;lpQ$lC@q4g44?}u6?)ar-Mm(clsXoG|{_@PY_+T@4Y zCDiVRx+K))hk7K`cn@eR8Hx*88N@C+GWQgHJa3q}?Z7KI!qv60O!?Dol+!)x#KJO`B3 za!emk$Anfi)wnXN8gg{+S%U0`E(V5)qT;{iT0k0x;9UAU6koLe91+fJzX7#JI1>wIuCPIwTyanw6)8Be3yi6h1y02 z#?0fho4hB!t~lP+)2hT=bN{e}>teBa~I=n_b*1V{HTwYvQJ+e1bx zUz0S_=-4ne%DCtkimSVCiq=aHBRdrY&f9WjGm)z~v+qH5=grZaR|HS^xi6DdPjy8! zRdbL^o(nW-YV=k|H1)FZ%WWp@vT&0wj;2@=yv|nLKT(2y26Mg^B|6Q0*fq#LJY{>M zQ+AR22A%N@CR$B>NlaJs4&Fj?iA_7|A$tIr99nn)QNOijrbePz^8lntR7d3#y&LQ+ z&|&h4O!tKJd5^jq?|P)KGdc;Dh2Ii283pp!(cZo>)CBvy#i`DC$v~^a1!)bwCdHpI~SDqB@6QIT9EhV1$l2-kazcjyn7bpy|spSV&vV? zX|LfPo6$=SC6A=jPrAyO=RgVuI&vV*lOh=GdQ$`gUT=zE&?6}lvZ5bKzMt!(Mjlmn zw|Ou_P=_|fj`*eCCNhz_MC#rZRh8vlf<)PoL|jjW7degQ@nuuh8mGR*QSCl+Zjv=c z))%q5HAkO(u90Y4^yIYI+XTXR*U^brN3%Fhzks}u3=(yaS7j@~!k~^i?2Oi-=}`D> zp@r0CYjmuZdl~uXMw3uJ5P3kfdE!xs+C(QSlG;dOM#j%ZHH!dnY1B%j0) z5}dtFHj&Am(45elO;u8KbZ)#b+U2L|mrep#e~x!;YTp<;sW-W=QN^#Wg8FpyY}^vf zy~QMv>mb=+Cn(7*+Pc~|#tywk^A5dnUuxVt;@%Cs_T#?C=U+qyRU+?)M60yOee=d- z9Qby&Z;Tz(%gyEp?rUEQOyusUP-mj(`)1V>B?iPK3SX*5S`_Qq2LHvD>IKA3w2gZ2 z1${IoyO!>%>Mpx1RL?zD{bgp{cpuZG2(7dzA$D=GH1rOhNfAtq?v07#f!R9$)Jq%> zwXcRRiOwWWNAjYpc~7oNg*rAS(nQ~1tdgcHzA|2RC>`vR6eI|(V6KeH&q8mg?2q1$ zX^L#6V+yQ82IF^TVoUJT*dcGGU@~kD4(WET2NEY0|5f=0UBG;KbFG~yNQ8{!pCcRCOccx7tL0dZ7lM96! z!iZ~P{Jithyi0}HI(?P@^6p6$JErkXenPFrrY%8-btGFKeoxq>h_pU&@6AsVzwU{o zN}O%ol}WV=Mphy|G!??C!oduNrjL7=wr;)X^icHD>HY7c6NubDpdJ`impW z+#QVk0+JX+J#j*!R7aH)7e6|Wgih6wQ=&HB9)f0g>&PRfPb>|Ccalv$Q5}!<`65XY z>Vn85j7f&hKGD=jibSLMIdP#!W^$yX$4MRil2|cRIeO~ICefNccSAqZwRPkXyQ|i~ ztMGbLHEWt1=F0L+G5vNOAeV`9;*1GN7qF! z6&AVM!WiE=rcwMFVNW#2CGMJdp@&*LSAM(>|HRxJ-N5z!)HimPS$-(GJCDga=;q`} zuv#O7lZ5;@k{C<9kevUfVW*qd$!<^KbulZs?BRP}Dyx`rAaB z+>>XF#Es?XhLiK8Oq^@X!%?B3iyo{Gj!uWAp-qNNK@M9WB@XJyzD&k7GHx+}ZVq;L ziri;w@cS&WtTT@gEmTqyM~nZU(n2#zTrRjn`Jcd9*K^BAddPBsG4)safS3 z&zhjj)fd=_A6ev!5~lPz6e2ckOM-oTO)imPPV~`eRyLNa?z}PDN2x<>T2$TBTleXQ z_Lc_QO|}M4OD#PVn5*ZJkZIY^tWHm+>jHbB*V6P0lHo~rJgSdM%9WE<}~W>`X}LVFmQe8Owu&g3s4BneIH z$b?LsFYulJe3ZD*4>pxE^$Ch#Etx1{{yRVXx|Fz}a<^(X+1Jr+u|k*faMwxh5G3Zm zd_Tk#8MG+5%#+OL@3TaM7JiW#yLVXSm-$E)6I0LI*4{Lzjy|kX>xC}GVv}V_@aYLt zk?`EzlKiR3-+RsYN1B;99AiInN1PKQEZ+gDo^Pz)oa)V2cB&^xJQJ%o?^6;ck4SIDR59^O$H&`km1G_fPJNgls6A6u!K zBG$)?^kkZ=>YAuft)K8hjfjoQGA`iF=XI(UlI&0UJW;JF6{}LMrw}4z5bLArzYs=J zjM>&M)>)ZW_s6g+I<|JUb!_Qr>uB42*&vS*v&m{}AMw+LsVjJ0AiVkVWwMWG>tO#C zrOai!Go{kah2rED9i6;P$pqYX|1-6$aof87RP&L&UUQ{#YdSkoDYA27t87tx#aOYD z4b|JS3Vd1kf3%2L*Ua!$<8XQMD$2m<-ht7R_I6zjij{W2w)TWe3yton4R5BG0q)w& zD=!m#+WC~TuB$DURk5wv|JgEv{t8;QkB?t3uvGVZnW2eQE#Dh$>tUysZ=Ky$v@N}V zX_aHS)@XYbud9G+ZMw#`2CBEIqpQY@c8k;-jfXnSvKHFyvcJ0C)I5|+wJI*O+x5Qf z@=4Om>gpBC8nvzAa38cK8g6#PuQ$tuj^qOC{P*f6{cYEJ+jJ`9p!e{vr+{?EvQDMb z7Er*#I<0$4Viq9vGENI9(y}tPbuc`)0s*gGfcvq4dU~xyuhkxw+9l|(xz#litO;gU@lDk?jY~rg0bM|iUI5?b6UpM5Q z%XulZW)1WwA?oQn8Jt?f|MzO6W${B|?EKs3yKW-CdfCKx+6AUU8pj3JK8(iI=iZ#tF>|jUw{ss^DHZ8Tk=(=#F4Oo?CLz# z)f9_Usd%-X*=t+ZRc%UJXGhg8*RMA3I}qxRYT5D|^;HYcc4S{DTldZCPh5B{o8wvh z%wt)+m}|Z4ceeGiFSB4w_ow$?`kfcAe9pR|$Npi}x9`2}4n?%pf9b&=z3=uPy!O!t zMJn8{k`!k6jU^Q38Qt(#N)8srZ#t+ybWq!;ZFX{8s`3BCpYQ)(dcytlH{q>*DEjZO zLVlLTrznd3)6>J5T;Ba2Z8odF-y&)5yMR1aL{tAG^#4x}*n05Kw5(gBZI*Y|E!o>V zVHdxh{N2xy`(d``@c(?+VHYO$oRwXW_Oct&C~S~@8b=7rZn@jx^5^!{FaO4d9x(YU zf82ksasxb6;A(;w)c^E@Ho3|k+S}QuNOty>{TUClcb)t>U#AN8W|dw2{e4NbgZ0)_ zt861eoq}B!lR5nrF|uj3|6dn-deaBiSy*koFVGCTH@Z7zmfVc3E^CR2b9cF)qqW{% z+xQGqU)hmXcJC}uV>ZFC4(c5J^20k!&PM9(?r9`DxJ$Y=+Ace;N)6iBZB5#kfep|T z(%Q1@6-s^CGsg5%Y!7|nJ4n%P{z_fW!C!jQ-TgC9p0eY%--3nLp^aTnr}@ufKdE)( zJw$!^xEdDOS!tG9%08D<>^LQTk+ij1ud`aK^joXdNzFSfZkh1sLUIo0?T-E=Wrg-y z*Pa&jkv7Uc)>5wQu_?9j`(HxRr|cp^ZPNT#e}4yU9n)j#?%L|_m>cxsspM@jw`44% zdB#UHKAt@~jlYwu>~1gL4QS=)k-c60{qd9Y!0W1i{PVxP2YzK+%V^^Y_b~e3-r9e( IFV+M97kd2G{Qv*} literal 121344 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 From fa549c23db30584d682e7ac173a573d431c7de1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E6=99=94?= Date: Fri, 5 May 2023 17:16:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=BA=BD=E5=A8=81SAP=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E4=B8=89=E5=B1=82=E7=BB=93=E6=9E=84=E8=B0=83?= =?UTF-8?q?=E6=95=B4=20=E5=90=8C=E6=AD=A5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ICSSoft.FromERP/ICSSoft.FromERP/App.config | 2 +- .../ICSSoft.FromERP/ICSDispatchDoc.cs | 30 +- .../ICSSoft.FromERP/ICSSAPDocGet.cs | 67 ++-- ICSSoft.FromERP/ICSSoft.Test/Program.cs | 2 +- .../Root/ICSSoft.Frame.Data.Entity.dll | Bin 123392 -> 123392 bytes .../ICSManufactureService.cs | 287 +++++++++++------- .../ICSOutsourcingService.cs | 103 ++++--- .../ICSSoft.DataProject/ICSPurchaseService.cs | 80 ++--- .../ICSSoft.DataProject/ICSSalesService.cs | 166 +++++----- .../ICSWareHouseService.cs | 286 +++++++++-------- .../ICSSoft.WMS.WebAPI/Web.config | 4 +- 11 files changed, 578 insertions(+), 449 deletions(-) diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/App.config b/ICSSoft.FromERP/ICSSoft.FromERP/App.config index 3718469..e5536af 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/App.config +++ b/ICSSoft.FromERP/ICSSoft.FromERP/App.config @@ -9,7 +9,7 @@ - + diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/ICSDispatchDoc.cs b/ICSSoft.FromERP/ICSSoft.FromERP/ICSDispatchDoc.cs index e55add5..0ec15b0 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/ICSDispatchDoc.cs +++ b/ICSSoft.FromERP/ICSSoft.FromERP/ICSDispatchDoc.cs @@ -54,25 +54,25 @@ namespace ICSSoft.FromERP #region 销售发退货单同步 foreach (DataRow dr in dt.Rows) { - SAPDispatchGetVPN.ZWMS_SK_DO_READ client = new SAPDispatchGetVPN.ZWMS_SK_DO_READ(); - SAPDispatchGetVPN.ZWMS_SK_DO_READ1 Info = new SAPDispatchGetVPN.ZWMS_SK_DO_READ1(); + SAPDispatchGet.ZWMS_SK_DO_READ client = new SAPDispatchGet.ZWMS_SK_DO_READ(); + SAPDispatchGet.ZWMS_SK_DO_READ1 Info = new SAPDispatchGet.ZWMS_SK_DO_READ1(); Info.VBELN = DocNO; Info.CHG_DATE = ""; - Info.T_HEAD = new SAPDispatchGetVPN.ZWMS_DO_HEAD[1]; - Info.T_ITEM = new SAPDispatchGetVPN.ZWMS_DO_ITEM[1]; - Info.T_GERNR = new SAPDispatchGetVPN.ZWMS_DO_GERNR[1]; + Info.T_HEAD = new SAPDispatchGet.ZWMS_DO_HEAD[1]; + Info.T_ITEM = new SAPDispatchGet.ZWMS_DO_ITEM[1]; + Info.T_GERNR = new SAPDispatchGet.ZWMS_DO_GERNR[1]; - SAPDispatchGetVPN.ZWMS_SK_DO_READResponse result = new SAPDispatchGetVPN.ZWMS_SK_DO_READResponse(); + SAPDispatchGet.ZWMS_SK_DO_READResponse result = new SAPDispatchGet.ZWMS_SK_DO_READResponse(); result = client.CallZWMS_SK_DO_READ(Info); - List ItemInfoList = new List(); + List ItemInfoList = new List(); ItemInfoList.AddRange(result.T_ITEM); - List SubLineInfoList = new List(); + List SubLineInfoList = new List(); SubLineInfoList.AddRange(result.T_GERNR); - foreach (SAPDispatchGetVPN.ZWMS_DO_HEAD HeadInfo in result.T_HEAD) + foreach (SAPDispatchGet.ZWMS_DO_HEAD HeadInfo in result.T_HEAD) { var ItemInfo = ItemInfoList.Where(a => a.VBELN == HeadInfo.VBELN); int LineNum = 10; - foreach (SAPDispatchGetVPN.ZWMS_DO_ITEM Item in ItemInfo) + foreach (SAPDispatchGet.ZWMS_DO_ITEM Item in ItemInfo) { if (Item.SERAIL != "ZS01") { @@ -131,7 +131,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var rcvline = db.ICSSDN.SingleOrDefault(a => a.SDNCode == Item.VBELN && a.Sequence == Item.POSNR && a.WorkPoint == Item.WERKS); + var rcvline = db.ICSSDN.SingleOrDefault(a => a.SDNCode == Item.VBELN && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Item.WERKS); if (rcvline == null) { isNew = true; @@ -198,7 +198,7 @@ namespace ICSSoft.FromERP else { var SubLineInfo = SubLineInfoList.Where(a => a.VBELN == Item.VBELN); - foreach (SAPDispatchGetVPN.ZWMS_DO_GERNR SubInfo in SubLineInfo) + foreach (SAPDispatchGet.ZWMS_DO_GERNR SubInfo in SubLineInfo) { string ExtensionID = ""; bool isNew = false; @@ -209,7 +209,7 @@ namespace ICSSoft.FromERP } else { - Colspan = "~~~~~000000~~~~~~~~~~"; + Colspan = "~~" + SubInfo.GERNR + "~~000000~~~~~~~~~~"; } var Extensionline = db.ICSExtension.SingleOrDefault(a => a.Colspan == Colspan); if (Extensionline == null) @@ -255,7 +255,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var rcvline = db.ICSSDN.SingleOrDefault(a => a.SDNCode == Item.VBELN && a.Sequence == Item.POSNR && a.WorkPoint == Item.WERKS); + var rcvline = db.ICSSDN.SingleOrDefault(a => a.SDNCode == Item.VBELN && a.SAPSequence == Item.POSNR && a.ExtensionID== ExtensionID && a.WorkPoint == Item.WERKS); if (rcvline == null) { isNew = true; @@ -281,7 +281,7 @@ namespace ICSSoft.FromERP { rcvline.Type = "2"; } - rcvline.Quantity = Item.LFIMG;//数量 + rcvline.Quantity = 1;//数量 rcvline.Amount = 0; rcvline.CreatePerson = "JOB"; rcvline.CreateDateTime = DateTime.Now; diff --git a/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs b/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs index 0059ae4..0d2569e 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs +++ b/ICSSoft.FromERP/ICSSoft.FromERP/ICSSAPDocGet.cs @@ -156,7 +156,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSDeliveryNotice.SingleOrDefault(a => a.DNCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSDeliveryNotice.SingleOrDefault(a => a.DNCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -261,7 +261,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSDeliveryNotice.SingleOrDefault(a => a.DNCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSDeliveryNotice.SingleOrDefault(a => a.DNCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -412,7 +412,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -514,7 +514,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -665,7 +665,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSMOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSMOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -828,7 +828,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSMOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSMOApply.SingleOrDefault(a => a.ApplyCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -848,7 +848,7 @@ namespace ICSSoft.FromERP line.CreateDateTime = Convert.ToDateTime(Info.DATE_C);//检验时间 line.SourceCode = Item.EBELN;//采购凭证号 line.SourceSequence = Item.EBELP;//采购凭证的项目编号 - line.Quantity = Item.LINGYSL;//领用数量 + line.Quantity = 1;//领用数量 line.Amount = 0; line.WHCode = Item.LGORT;//仓库 line.Status = "2"; @@ -1050,7 +1050,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSMOApplyNegDetail.SingleOrDefault(a => a.ApplyNegCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSMOApplyNegDetail.SingleOrDefault(a => a.ApplyNegCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -1139,7 +1139,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSMOApplyNegDetail.SingleOrDefault(a => a.ApplyNegCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSMOApplyNegDetail.SingleOrDefault(a => a.ApplyNegCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -1152,7 +1152,7 @@ namespace ICSSoft.FromERP line.InvCode = Item.MATNR;//物料编码 line.SourceDetailID = ""; } - line.Quantity = Item.LINGYSL;//领用数量 + line.Quantity = 1;//领用数量 line.SourceDetailID = Item.LGORT;//仓库 line.WHCode = Item.LGORT;//仓库 line.Amount = 0; @@ -1258,7 +1258,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSManufactureReceive.SingleOrDefault(a => a.RCVCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSManufactureReceive.SingleOrDefault(a => a.RCVCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -1383,7 +1383,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSManufactureReceive.SingleOrDefault(a => a.RCVCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSManufactureReceive.SingleOrDefault(a => a.RCVCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -1401,7 +1401,7 @@ namespace ICSSoft.FromERP line.CreateDateTime = Convert.ToDateTime(Info.DATE_C);//检验时间 line.SourceCode = Item.EBELN;//采购凭证号 line.SourceSequence = Item.EBELP;//采购凭证的项目编号 - line.Quantity = Item.LINGYSL;//领用数量 + line.Quantity = 1;//领用数量 line.Amount = 0; line.WHCode = Item.LGORT;//仓库 if (Info.TEST1 == "N")//Info.TEST1=N为SAP未过账入库单 Info.TEST1=Y为SAP已过账入库单 @@ -1537,7 +1537,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSTransfer.SingleOrDefault(a => a.TransferNO == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSTransfer.SingleOrDefault(a => a.TransferNO == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -1663,7 +1663,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var line = db.ICSTransfer.SingleOrDefault(a => a.TransferNO == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSTransfer.SingleOrDefault(a => a.TransferNO == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -1680,7 +1680,7 @@ namespace ICSSoft.FromERP line.ToWarehouseCode = Item.LGORT_JS; line.ToLocationCode = ""; line.Status = "2"; - line.Quantity = Item.LINGYSL;//领用数量 + line.Quantity = 1;//领用数量 line.Amount = 0; line.Type = "1"; line.CreatePerson = Info.XINGMING; @@ -1818,7 +1818,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); + var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); if (linebefore == null) { isNew = true; @@ -1853,7 +1853,7 @@ namespace ICSSoft.FromERP } db.SubmitChanges(); - var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); + var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); if (lineafter == null) { isNew = true; @@ -1949,7 +1949,7 @@ namespace ICSSoft.FromERP ExtensionID = Extensionline.ID; } - var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); + var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); if (linebefore == null) { isNew = true; @@ -1963,7 +1963,7 @@ namespace ICSSoft.FromERP } linebefore.DepCode = Info.KOSTL; linebefore.WHCode = Item.LGORT; - linebefore.Quantity = Item.LINGYSL;//领用数量 + linebefore.Quantity = 1;//领用数量 linebefore.Amount = 0; linebefore.Memo = ""; linebefore.Status = "2"; @@ -1984,7 +1984,7 @@ namespace ICSSoft.FromERP } db.SubmitChanges(); - var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); + var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); if (lineafter == null) { isNew = true; @@ -2157,7 +2157,7 @@ namespace ICSSoft.FromERP ExtensionAfter = ExtensionlineAfter.ID; } - var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); + var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionBefore && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); if (linebefore == null) { isNew = true; @@ -2192,7 +2192,7 @@ namespace ICSSoft.FromERP } db.SubmitChanges(); - var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); + var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionAfter && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); if (lineafter == null) { isNew = true; @@ -2245,10 +2245,9 @@ namespace ICSSoft.FromERP } else { - Colspan = "~~~~~000000~~~~~~~~~~"; - ColspanAfter = "~~~~~000000~~~~~~~~~~"; + Colspan = "~~" + SubInfo.GERNR + "~~000000~~~~~~~~~~"; + ColspanAfter = "~~" + SubInfo.GERNR + "~~000000~~~~~~~~~~"; } - Colspan = Item.VBELN_VA + "~" + Item.SERNP + "~~" + Item.POSNR_VA + "~~~~~~~~~~"; var Extensionline = db.ICSExtension.SingleOrDefault(a => a.Colspan == Colspan && a.WorkPoint == Info.WERKS); if (Extensionline == null) @@ -2337,7 +2336,7 @@ namespace ICSSoft.FromERP ExtensionAfter = ExtensionlineAfter.ID; } - var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); + var linebefore = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionBefore && a.MTDOCType == "1" && a.WorkPoint == Info.WERKS); if (linebefore == null) { isNew = true; @@ -2351,7 +2350,7 @@ namespace ICSSoft.FromERP } linebefore.DepCode = Info.KOSTL; linebefore.WHCode = Item.LGORT; - linebefore.Quantity = Item.LINGYSL;//领用数量 + linebefore.Quantity = 1;//领用数量 linebefore.Amount = 0; linebefore.Memo = Item.SOBKZ_JS; linebefore.Status = "2"; @@ -2372,7 +2371,7 @@ namespace ICSSoft.FromERP } db.SubmitChanges(); - var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.Sequence == Item.POSNR && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); + var lineafter = db.ICSMTDOC.SingleOrDefault(a => a.MTDOCCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionAfter && a.MTDOCType == "2" && a.WorkPoint == Info.WERKS); if (lineafter == null) { isNew = true; @@ -2386,7 +2385,7 @@ namespace ICSSoft.FromERP } lineafter.DepCode = Info.KOSTL; lineafter.WHCode = Item.LGORT; - lineafter.Quantity = Item.LINGYSL;//领用数量 + lineafter.Quantity = 1;//领用数量 lineafter.Amount = 0; lineafter.Memo = Item.SOBKZ_JS; lineafter.Status = "2"; @@ -2498,7 +2497,7 @@ namespace ICSSoft.FromERP } if (Info.LEIXING == "09") { - var line = db.ICSOtherOut.SingleOrDefault(a => a.OutCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSOtherOut.SingleOrDefault(a => a.OutCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -2553,7 +2552,7 @@ namespace ICSSoft.FromERP } else { - var line = db.ICSOtherIn.SingleOrDefault(a => a.InCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSOtherIn.SingleOrDefault(a => a.InCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -2665,7 +2664,7 @@ namespace ICSSoft.FromERP } if (Info.LEIXING == "09") { - var line = db.ICSOtherOut.SingleOrDefault(a => a.OutCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSOtherOut.SingleOrDefault(a => a.OutCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; @@ -2720,7 +2719,7 @@ namespace ICSSoft.FromERP } else { - var line = db.ICSOtherIn.SingleOrDefault(a => a.InCode == Item.DANJU && a.Sequence == Item.POSNR && a.WorkPoint == Info.WERKS); + var line = db.ICSOtherIn.SingleOrDefault(a => a.InCode == Item.DANJU && a.SAPSequence == Item.POSNR && a.ExtensionID == ExtensionID && a.WorkPoint == Info.WERKS); if (line == null) { isNew = true; diff --git a/ICSSoft.FromERP/ICSSoft.Test/Program.cs b/ICSSoft.FromERP/ICSSoft.Test/Program.cs index 967fab4..7577590 100644 --- a/ICSSoft.FromERP/ICSSoft.Test/Program.cs +++ b/ICSSoft.FromERP/ICSSoft.Test/Program.cs @@ -13,7 +13,7 @@ namespace ICSSoft.Test //ICSVendor test = new ICSVendor(); //test.Execute(); - ICSInventory test = new ICSInventory(); + ICSDispatchDoc test = new ICSDispatchDoc(); test.Execute(); //ICSSAPDocGet test = new ICSSAPDocGet(); diff --git a/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll b/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll index 2c95ee30117d335a703ef593bb6f3c065c605651..96986e74008bf867abdaef7b506ee2629e9024a1 100644 GIT binary patch delta 74 zcmZoT!rpL%eL@FwZB1}v_ttL4os$HrSJ=06n=W&kFSy4~Fv08N_K?YpCe9!g)4Q)R eN(y}M?p~#H{FTqdYprMZXD7xRB4~)Z^94$PCv@DeakgQA8r7Qkso0I diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSManufactureService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSManufactureService.cs index cea1dd7..52d447e 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSManufactureService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSManufactureService.cs @@ -252,7 +252,7 @@ namespace ICSSoft.DataProject { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.ApplyCode,A.WorkPoint,A.EATTRIBUTE from ICSMOApply A @@ -271,53 +271,66 @@ namespace ICSSoft.DataProject GROUP BY ApplyCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["ApplyCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["IssueQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["ApplyCode"].ToString(); - if (dt.Rows[i]["EATTRIBUTE"].ToString() == "01") - { - Info.STATE = "1"; - } - else - { - Info.STATE = "0"; - } - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @"select A.ApplyCode,A.Sequence,A.Quantity,A.IssueQuantity,B.BatchCode from ICSMOApply A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["ApplyCode"].ToString(); + if (dt.Rows[i]["EATTRIBUTE"].ToString() == "01") + { + Info.STATE = "1"; + } + else + { + Info.STATE = "0"; + } + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @"select A.ApplyCode,A.InvCode,A.Sequence,A.SAPSequence,A.Quantity,A.IssueQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSMOApply A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE ApplyCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["ApplyCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["IssueQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["ApplyCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["ApplyCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["IssueQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["ApplyCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU = dr["ApplyCode"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") + { + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } @@ -345,10 +358,11 @@ namespace ICSSoft.DataProject { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; - string sql = @"select A.ID,A.ApplyCode,A.Sequence,A.Quantity,A.IssueQuantity,B.BatchCode from ICSMOApply A + string sql = @"select A.ID,A.ApplyCode,A.InvCode,A.Sequence,A.SAPSequence,A.Quantity,A.IssueQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSMOApply A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE ApplyCode='{0}' AND A.WorkPoint='{1}'"; sql = string.Format(sql, TransCode, WorkPoint); @@ -363,7 +377,7 @@ namespace ICSSoft.DataProject Info.DANJU = TransCode; Info.STATE = "0"; List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; + List ItemLineList = new List(); Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; foreach (DataRow dr in Sapdt.Rows) @@ -371,16 +385,29 @@ namespace ICSSoft.DataProject if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["IssueQuantity"].ToString())) { SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); Item.DANJU = dr["ApplyCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU = dr["ApplyCode"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } if (ItemList.Count > 0) { Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) + { + Info.Z_GERNR = ItemLineList.ToArray(); + } SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); result = Client.CallZWMS_SK_WS_PZ(Info); if (result.Z_NULL == "N") @@ -575,9 +602,9 @@ namespace ICSSoft.DataProject END"; } - else + else { - sql = @"UPDATE c SET IssueNegQuantity=ISNULL(IssueNegQuantity,0)+'{2}' + sql = @"UPDATE c SET IssueNegQuantity=ISNULL(IssueNegQuantity,0)+'{2}' FROM ICSInventoryLot a INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint @@ -609,10 +636,10 @@ namespace ICSSoft.DataProject RAISERROR('" + language.GetNameByCode("WMSAPIInfo192") + @"',16,1); END"; } - + sql = string.Format(sql, LotNo, WorkPoint, Quantity, table, type); #endregion - } + } else { if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()) @@ -667,7 +694,7 @@ namespace ICSSoft.DataProject { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.ApplyNegCode,A.WorkPoint from ICSMOApplyNeg A @@ -687,47 +714,59 @@ namespace ICSSoft.DataProject GROUP BY A.ApplyNegCode,A.WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["ApplyNegCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["IssueQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["ApplyNegCode"].ToString(); - Info.STATE = "0"; - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @" select A.ApplyNegCode,B.Sequence,B.Quantity,B.IssueNegQuantity,C.BatchCode from ICSMOApplyNeg A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["ApplyNegCode"].ToString(); + Info.STATE = "0"; + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @" select A.ApplyNegCode,B.SAPSequence,B.InvCode,B.Sequence,B.Quantity,B.IssueNegQuantity + ,ISNULL(C.BatchCode,'') AS BatchCode from ICSMOApplyNeg A LEFT JOIN ICSMOApplyNegDetail B ON B.ApplyNegCode=A.ApplyNegCode AND B.WorkPoint=A.WorkPoint LEFT JOIN ICSExtension C ON C.ID=B.ExtensionID AND C.WorkPoint=B.WorkPoint WHERE A.ApplyNegCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["ApplyNegCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["IssueNegQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["ApplyNegCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["ApplyNegCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["IssueNegQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["ApplyNegCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU = dr["ApplyNegCode"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") + { + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } @@ -977,7 +1016,7 @@ namespace ICSSoft.DataProject { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.RCVCode,A.WorkPoint from ICSManufactureReceive A @@ -996,46 +1035,58 @@ namespace ICSSoft.DataProject GROUP BY RCVCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["RCVCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["RCVQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["RCVCode"].ToString(); - Info.STATE = "0"; - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @"select A.RCVCode,A.Sequence,A.Quantity,A.RCVQuantity,B.BatchCode from ICSManufactureReceive A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["RCVCode"].ToString(); + Info.STATE = "0"; + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @"select A.RCVCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.RCVQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSManufactureReceive A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE RCVCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["RCVCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["RCVQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["RCVCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["RCVCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["RCVQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["RCVCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU= dr["RCVCode"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") + { + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSOutsourcingService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSOutsourcingService.cs index 8f99fba..d5f8de9 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSOutsourcingService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSOutsourcingService.cs @@ -80,7 +80,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OutsourcingIssueDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OutsourcingIssueDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -131,7 +131,7 @@ namespace ICSSoft.DataProject string allcol = jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString() + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString(); ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(), - det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol,cmd, language, BusinessCode); + det["DetailID"].ToString(), jo["IssueCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode); } } } @@ -211,11 +211,11 @@ namespace ICSSoft.DataProject /// /// /// - public static void OOApplyERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OOApplyERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.ApplyCode,A.WorkPoint from ICSOApply A @@ -234,46 +234,55 @@ namespace ICSSoft.DataProject GROUP BY ApplyCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["ApplyCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["IssueQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["IssueQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["ApplyCode"].ToString(); - Info.STATE = "0"; - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @" select A.ApplyCode,A.Sequence,A.Quantity,A.IssueQuantity,B.BatchCode from ICSOApply A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["ApplyCode"].ToString(); + Info.STATE = "0"; + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @" select A.ApplyCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.IssueQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSOApply A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE ApplyCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["ApplyCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["IssueQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["ApplyCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["ApplyCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["IssueQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["ApplyCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + ItemLine.DANJU= dr["ApplyCode"].ToString(); + ItemLine.POSNR= dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") + { + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } @@ -348,7 +357,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OOIssueERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OOIssueERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -523,7 +532,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OutsourcingIssueDoNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OutsourcingIssueDoNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -869,7 +878,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OutsourcingReceiveDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OutsourcingReceiveDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -954,7 +963,7 @@ namespace ICSSoft.DataProject LEFT JOIN ICSOOPick c ON b.OODetailID=c.OODetailID AND b.WorkPoint=c.WorkPoint AND a.TransSequence=b.Sequence+'~'+c.Sequence WHERE c.PickID='{0}' and a.Identification='{1}' AND ERPUpload='0' AND a.BusinessCode='{6}'"; ERPupdate = string.Format(ERPupdate, dets["SourceDetailID"].ToString(), Identification, dets["IDs"].ToString(), dets["ERPDetailID"].ToString(), dets["MRCVCode"].ToString() - , dets["Sequence"].ToString(),BusinessCode); + , dets["Sequence"].ToString(), BusinessCode); if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd)) { throw new Exception(language.GetNameByCode("WMSAPIInfo079"));//"委外倒冲回写失败!"; @@ -962,7 +971,7 @@ namespace ICSSoft.DataProject //ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["OODetailID"].ToString(), Identification, dets["ERPID"].ToString(), // dets[" "].ToString(), dets["MRCVCode"].ToString(), dets["Sequence"].ToString(), allcol, cmd, language); } - + } } @@ -1047,7 +1056,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void ODeliveryNoticeInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void ODeliveryNoticeInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -1076,7 +1085,7 @@ namespace ICSSoft.DataProject FROM #TempERP DROP TABLE #TempERP"; - sql = string.Format(sql, Identification,BusinessCode); + sql = string.Format(sql, Identification, BusinessCode); DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd); string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre"); @@ -1180,7 +1189,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OutsourcingRejectDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OutsourcingRejectDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { // try // { @@ -1388,7 +1397,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OutsourcingReturnBackERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OutsourcingReturnBackERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -1518,7 +1527,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OutsourcingReceiveDocNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OutsourcingReceiveDocNegativeERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSPurchaseService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSPurchaseService.cs index 0967945..d70d787 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSPurchaseService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSPurchaseService.cs @@ -345,7 +345,7 @@ namespace ICSSoft.DataProject { try { - #region SAP + #region SAP(检验合格单为两层结构 一行对应一个序列号) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.DNCode,A.WorkPoint from ICSDeliveryNotice A @@ -818,46 +818,58 @@ namespace ICSSoft.DataProject GROUP BY DNCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["RCVQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["RCVQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["DNCode"].ToString(); - Info.STATE = "0"; - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @"select A.DNCode,A.Sequence,A.Quantity,A.RCVQuantity,B.BatchCode from ICSDeliveryNotice A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["DNCode"].ToString(); + Info.STATE = "0"; + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @"select A.DNCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.RCVQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSDeliveryNotice A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE DNCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["RCVQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["DNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["DNCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["RCVQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["DNCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU= dr["DNCode"].ToString(); + ItemLine.POSNR= dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") + { + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSalesService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSalesService.cs index 60b6052..9776284 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSalesService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSalesService.cs @@ -82,7 +82,7 @@ namespace ICSSoft.DataProject { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.SDNCode,A.WorkPoint from ICSSDN A @@ -101,48 +101,59 @@ namespace ICSSoft.DataProject GROUP BY SDNCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["SDNQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["SDNQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["SDNQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ(); - SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1(); - List headlist = new List(); - SAPCallBackDispatchVPN.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPN.ZWMS_DO_HEAD(); - head.VBELN = dt.Rows[i]["SDNCode"].ToString(); - headlist.Add(head); - Info.T_HEAD = headlist.ToArray(); - List ItemList = new List(); - Info.T_GERNR = new SAPCallBackDispatchVPN.ZWMS_DO_GERNR[1]; - Info.T_RETURN = new SAPCallBackDispatchVPN.ZWMS_DO_RETURN[1]; - sql = @" select A.SDNCode,A.Sequence,A.Quantity,A.SDNQuantity,B.BatchCode from ICSSDN A + SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ(); + SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1(); + List headlist = new List(); + SAPCallBackDispatchVPN.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPN.ZWMS_DO_HEAD(); + head.VBELN = dt.Rows[i]["SDNCode"].ToString(); + headlist.Add(head); + Info.T_HEAD = headlist.ToArray(); + List ItemList = new List(); + List ItemLineList = new List(); + Info.T_RETURN = new SAPCallBackDispatchVPN.ZWMS_DO_RETURN[1]; + sql = @" select A.SDNCode,A.InvCode,A.SAPSequence,A.Sequence,A.Quantity,A.SDNQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSSDN A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE SDNCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["SDNQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDispatchVPN.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPN.ZWMS_DO_ITEM(); - Item.VBELN = dr["SDNCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERAIL = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["SDNQuantity"].ToString())) + { + SAPCallBackDispatchVPN.ZWMS_DO_GERNR ItemLine = new SAPCallBackDispatchVPN.ZWMS_DO_GERNR(); + SAPCallBackDispatchVPN.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPN.ZWMS_DO_ITEM(); + Item.VBELN = dr["SDNCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.VBELN = dr["SDNCode"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.T_ITEM = ItemList.ToArray(); - SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse(); - result = Client.CallZWMS_SK_DO_GZ(Info); - foreach (SAPCallBackDispatchVPN.ZWMS_DO_RETURN resultItem in result.T_RETURN) + if (ItemList.Count > 0) { - if (resultItem.ZFLG == "N") + Info.T_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) + { + Info.T_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse(); + result = Client.CallZWMS_SK_DO_GZ(Info); + foreach (SAPCallBackDispatchVPN.ZWMS_DO_RETURN resultItem in result.T_RETURN) { - IsSuccess = "N"; - ErrorMessage += resultItem.ZMESS + "/r/n"; + if (resultItem.ZFLG == "N") + { + IsSuccess = "N"; + ErrorMessage += resultItem.ZMESS + "/r/n"; + } } } } @@ -223,7 +234,7 @@ namespace ICSSoft.DataProject { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.SDNCode,A.WorkPoint from ICSSDN A @@ -242,48 +253,59 @@ namespace ICSSoft.DataProject GROUP BY SDNCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["SDNQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["SDNQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["SDNQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ(); - SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1(); - List headlist = new List(); - SAPCallBackDispatchVPN.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPN.ZWMS_DO_HEAD(); - head.VBELN = dt.Rows[i]["SDNCode"].ToString(); - headlist.Add(head); - Info.T_HEAD = headlist.ToArray(); - List ItemList = new List(); - Info.T_GERNR = new SAPCallBackDispatchVPN.ZWMS_DO_GERNR[1]; - Info.T_RETURN = new SAPCallBackDispatchVPN.ZWMS_DO_RETURN[1]; - sql = @" select A.SDNCode,A.Sequence,A.Quantity,A.SDNQuantity,B.BatchCode from ICSSDN A + SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ Client = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ(); + SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1 Info = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZ1(); + List headlist = new List(); + SAPCallBackDispatchVPN.ZWMS_DO_HEAD head = new SAPCallBackDispatchVPN.ZWMS_DO_HEAD(); + head.VBELN = dt.Rows[i]["SDNCode"].ToString(); + headlist.Add(head); + Info.T_HEAD = headlist.ToArray(); + List ItemList = new List(); + List ItemLineList = new List(); + Info.T_RETURN = new SAPCallBackDispatchVPN.ZWMS_DO_RETURN[1]; + sql = @" select A.SDNCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.SDNQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSSDN A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE SDNCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["SDNQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["SDNCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDispatchVPN.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPN.ZWMS_DO_ITEM(); - Item.VBELN = dr["SDNCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERAIL = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["SDNQuantity"].ToString())) + { + SAPCallBackDispatchVPN.ZWMS_DO_ITEM Item = new SAPCallBackDispatchVPN.ZWMS_DO_ITEM(); + SAPCallBackDispatchVPN.ZWMS_DO_GERNR ItemLine = new SAPCallBackDispatchVPN.ZWMS_DO_GERNR(); + Item.VBELN = dr["SDNCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LFIMG = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.VBELN= dr["SDNCode"].ToString(); + ItemLine.POSNR= dr["SAPSequence"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.T_ITEM = ItemList.ToArray(); - SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse(); - result = Client.CallZWMS_SK_DO_GZ(Info); - foreach (SAPCallBackDispatchVPN.ZWMS_DO_RETURN resultItem in result.T_RETURN) + if (ItemList.Count > 0) { - if (resultItem.ZFLG == "N") + Info.T_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) + { + Info.T_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse result = new SAPCallBackDispatchVPN.ZWMS_SK_DO_GZResponse(); + result = Client.CallZWMS_SK_DO_GZ(Info); + foreach (SAPCallBackDispatchVPN.ZWMS_DO_RETURN resultItem in result.T_RETURN) { - IsSuccess = "N"; - ErrorMessage += resultItem.ZMESS + "/r/n"; + if (resultItem.ZFLG == "N") + { + IsSuccess = "N"; + ErrorMessage += resultItem.ZMESS + "/r/n"; + } } } } diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs index 3aaee0d..8013c90 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs @@ -30,7 +30,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void OneStepTransferDocIn(string TransCode,string TransSequence, string WorkPoint,string Quantity, SqlCommand cmd, Dictionary language) + public static void OneStepTransferDocIn(string TransCode, string TransSequence, string WorkPoint, string Quantity, SqlCommand cmd, Dictionary language) { try { @@ -99,11 +99,11 @@ namespace ICSSoft.DataProject /// /// /// - public static void OneStepTransferDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OneStepTransferDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.TransferNO,A.WorkPoint from ICSTransfer A @@ -122,46 +122,58 @@ namespace ICSSoft.DataProject GROUP BY TransferNO,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["TransferNO"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["TransferQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["TransferQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["TransferQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["TransferNO"].ToString(); - Info.STATE = "0"; - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @" select A.TransferNO,A.Sequence,A.Quantity,A.TransferQuantity,B.BatchCode from ICSTransfer A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["TransferNO"].ToString(); + Info.STATE = "0"; + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @" select A.TransferNO,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.TransferQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSTransfer A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE TransferNO='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["TransferNO"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["TransferQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["TransferNO"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["TransferNO"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["TransferQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["TransferNO"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU = dr["TransferNO"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) + { + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } @@ -180,14 +192,14 @@ namespace ICSSoft.DataProject #endregion #region 调拨 - + /// /// 调拨接口 /// /// /// /// - public static void StepTransferDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void StepTransferDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -238,7 +250,7 @@ namespace ICSSoft.DataProject JObject det = (JObject)detail; string allcol = jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString() + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString(); - ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(),allcol, cmd, language, BusinessCode); + ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode); } } } @@ -406,7 +418,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void TwoStepTransferDocOutERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void TwoStepTransferDocOutERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -451,7 +463,7 @@ namespace ICSSoft.DataProject } else { - throw new Exception(language.GetNameByCode("WMSAPIInfo080")+result.Message); + throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message); } #endregion } @@ -510,7 +522,7 @@ namespace ICSSoft.DataProject BEGIN RAISERROR('" + language.GetNameByCode("WMSAPIInfo149") + @"',16,1); END"; - sql = string.Format(sql, LotNo, WorkPoint,TransCode,TransSequence, Quantity); + sql = string.Format(sql, LotNo, WorkPoint, TransCode, TransSequence, Quantity); if (!DBHelper.ExecuteNonQuery(sql, cmd)) { throw new Exception(language.GetNameByCode("WMSAPIInfo150"));//"两步调入单更新失败!"); @@ -528,7 +540,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void TwoStepTransferDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void TwoStepTransferDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -562,7 +574,7 @@ namespace ICSSoft.DataProject { foreach (DataRow dr in dt.Rows) { - ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "","", cmd, language, BusinessCode); + ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode); } } catch (Exception ex) @@ -573,7 +585,7 @@ namespace ICSSoft.DataProject } else { - throw new Exception(language.GetNameByCode("WMSAPIInfo080")+result.Message); + throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message); } #endregion } @@ -641,11 +653,11 @@ namespace ICSSoft.DataProject /// /// /// - public static void OtherOutDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OtherOutDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.OutCode,A.WorkPoint from ICSOtherOut A @@ -664,46 +676,58 @@ namespace ICSSoft.DataProject GROUP BY OutCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["OutCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["OutQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["OutQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["OutQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["OutCode"].ToString(); - Info.STATE = "0"; - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @"select A.OutCode,A.Sequence,A.Quantity,A.OutQuantity,B.BatchCode from ICSOtherOut A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["OutCode"].ToString(); + Info.STATE = "0"; + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @"select A.OutCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.OutQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSOtherOut A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE OutCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["OutCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["OutQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["OutCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["OutCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["OutQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["OutCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU = dr["OutCode"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) + { + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } @@ -780,11 +804,11 @@ namespace ICSSoft.DataProject /// /// /// - public static void OtherInDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void OtherInDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { - #region SAP + #region SAP(三层结构) string IsSuccess = ""; string ErrorMessage = ""; string sql = @" select Distinct A.InCode,A.WorkPoint from ICSOtherIn A @@ -803,46 +827,58 @@ namespace ICSSoft.DataProject GROUP BY InCode,WorkPoint"; chksql = string.Format(chksql, dt.Rows[i]["InCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); - if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) != Convert.ToDecimal(chkdt.Rows[0]["InQuantity"])) + if (Convert.ToDecimal(chkdt.Rows[0]["Quantity"]) == Convert.ToDecimal(chkdt.Rows[0]["InQuantity"])) { - throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo203"), chkdt.Rows[0]["Quantity"].ToString(), chkdt.Rows[0]["InQuantity"].ToString()));//单次提交数量卡控(必须整单提交) - } - SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); - Info.NEWID = Identification; - Info.DANJU = dt.Rows[i]["InCode"].ToString(); - Info.STATE = "0"; - List ItemList = new List(); - Info.Z_GERNR = new SAPCallBackDocVPN.ZWEBS_GERNR[1]; - Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; - sql = @"select A.InCode,A.Sequence,A.Quantity,A.InQuantity,B.BatchCode from ICSOtherIn A + SAPCallBackDocVPN.ZWMS_SK_WS_PZ Client = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ(); + SAPCallBackDocVPN.ZWMS_SK_WS_PZ1 Info = new SAPCallBackDocVPN.ZWMS_SK_WS_PZ1(); + Info.NEWID = Identification; + Info.DANJU = dt.Rows[i]["InCode"].ToString(); + Info.STATE = "0"; + List ItemList = new List(); + List ItemLineList = new List(); + Info.Z_FLAG = new SAPCallBackDocVPN.ZWEB_RETURN[1]; + sql = @"select A.InCode,A.SAPSequence,A.InvCode,A.Sequence,A.Quantity,A.InQuantity + ,ISNULL(B.BatchCode,'') AS BatchCode from ICSOtherIn A LEFT JOIN ICSExtension B ON B.ID=A.ExtensionID AND B.WorkPoint=A.WorkPoint WHERE InCode='{0}' AND A.WorkPoint='{1}'"; - sql = string.Format(sql, dt.Rows[i]["InCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); - DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); - foreach (DataRow dr in Sapdt.Rows) - { - if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["InQuantity"].ToString())) + sql = string.Format(sql, dt.Rows[i]["InCode"].ToString(), dt.Rows[i]["WorkPoint"].ToString()); + DataTable Sapdt = DBHelper.SQlReturnData(sql, cmd); + foreach (DataRow dr in Sapdt.Rows) { - SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); - Item.DANJU = dr["InCode"].ToString(); - Item.POSNR = dr["Sequence"].ToString(); - Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); - Item.SERNP = dr["BatchCode"].ToString(); - ItemList.Add(Item); + if (Convert.ToDecimal(dr["Quantity"].ToString()) == Convert.ToDecimal(dr["InQuantity"].ToString())) + { + SAPCallBackDocVPN.ZWMS_PZ Item = new SAPCallBackDocVPN.ZWMS_PZ(); + SAPCallBackDocVPN.ZWEBS_GERNR ItemLine = new SAPCallBackDocVPN.ZWEBS_GERNR(); + Item.DANJU = dr["InCode"].ToString(); + Item.POSNR = dr["SAPSequence"].ToString(); + Item.LINGYSL = System.Decimal.Round(Convert.ToDecimal(dr["Quantity"].ToString()), 3); + ItemList.Add(Item); + if (dr["BatchCode"].ToString() != "") + { + ItemLine.DANJU = dr["InCode"].ToString(); + ItemLine.POSNR = dr["SAPSequence"].ToString(); + ItemLine.MATNR = dr["InvCode"].ToString(); + ItemLine.GERNR = dr["BatchCode"].ToString(); + ItemLineList.Add(ItemLine); + } + } } - } - if (ItemList.Count > 0) - { - Info.Z_ITEM = ItemList.ToArray(); - SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); - result = Client.CallZWMS_SK_WS_PZ(Info); - if (result.Z_NULL == "N") + if (ItemList.Count > 0) { - foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + Info.Z_ITEM = ItemList.ToArray(); + if (ItemLineList.Count > 0) + { + Info.Z_GERNR = ItemLineList.ToArray(); + } + SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse result = new SAPCallBackDocVPN.ZWMS_SK_WS_PZResponse(); + result = Client.CallZWMS_SK_WS_PZ(Info); + if (result.Z_NULL == "N") { - IsSuccess = "N"; - ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + foreach (SAPCallBackDocVPN.ZWEB_RETURN resultItem in result.Z_FLAG) + { + IsSuccess = "N"; + ErrorMessage += resultItem.L_MESSAGE + "/r/n"; + } } } } @@ -959,7 +995,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void DisassemblyDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void DisassemblyDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -991,7 +1027,7 @@ namespace ICSSoft.DataProject { foreach (DataRow dr in dt.Rows) { - ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "","", cmd, language, BusinessCode); + ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, dr["ID"].ToString(), Identification, "", "", "", "", "", cmd, language, BusinessCode); } } catch (Exception ex) @@ -1002,7 +1038,7 @@ namespace ICSSoft.DataProject } else { - throw new Exception(language.GetNameByCode("WMSAPIInfo080")+result.Message); + throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message); } #endregion } @@ -1070,7 +1106,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void BrrowDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void BrrowDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -1115,9 +1151,9 @@ namespace ICSSoft.DataProject foreach (var detail in resdetail) { JObject det = (JObject)detail; - string allcol = jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString() + string allcol = jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString() + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString(); - ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(), + ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["OtherOutCode"].ToString(), det["Sequence"].ToString(), allcol, cmd, language, BusinessCode); } } @@ -1200,7 +1236,7 @@ namespace ICSSoft.DataProject /// /// /// - public static void ReturnDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language,string BusinessCode) + public static void ReturnDocERP(string TransType, string Identification, SqlCommand cmd, Dictionary language, string BusinessCode) { try { @@ -1226,7 +1262,7 @@ namespace ICSSoft.DataProject SELECT Costre,Sequence,InvCode,Quantity,Amount,ReturnDetailID AS SourceDetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP DROP TABLE #TempERP"; - sql = string.Format(sql, Identification,BusinessCode); + sql = string.Format(sql, Identification, BusinessCode); DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd); string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre"); @@ -1247,8 +1283,8 @@ namespace ICSSoft.DataProject JObject det = (JObject)detail; string allcol = jo["cWhCode"].ToString() + det["ProjectCode"].ToString() + det["cBatch"].ToString() + det["version"].ToString() + det["brand"].ToString() + det["cFree1"].ToString() + det["cFree2"].ToString() + det["cFree3"].ToString() + det["cFree4"].ToString() + det["cFree5"].ToString() + det["cFree6"].ToString() + det["cFree7"].ToString() + det["cFree8"].ToString() + det["cFree9"].ToString() + det["cFree10"].ToString(); - ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(), - det["DetailID"].ToString(), jo["OtherInCode"].ToString(), det["Sequence"].ToString(),"", cmd,language, BusinessCode); + ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["SourceDetailID"].ToString(), Identification, jo["ID"].ToString(), + det["DetailID"].ToString(), jo["OtherInCode"].ToString(), det["Sequence"].ToString(), "", cmd, language, BusinessCode); } } } diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Web.config b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Web.config index 691d3c6..18095a3 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Web.config +++ b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Web.config @@ -7,8 +7,8 @@ - - + +