uo_outware_sale_th.sru 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319
  1. $PBExportHeader$uo_outware_sale_th.sru
  2. forward
  3. global type uo_outware_sale_th from uo_outware_sale
  4. end type
  5. end forward
  6. global type uo_outware_sale_th from uo_outware_sale
  7. end type
  8. global uo_outware_sale_th uo_outware_sale_th
  9. forward prototypes
  10. public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
  11. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
  12. public function integer auditing_th (boolean arg_ifcommit, ref string arg_msg)
  13. public function integer c_auditing_th (boolean arg_ifcommit, ref string arg_msg)
  14. end prototypes
  15. public function integer auditing (boolean arg_ifcommit, ref string arg_msg);
  16. Long rslt = 1,cnt = 0,i
  17. Long chc
  18. Long rst_outwareid //
  19. Long rst_inwareid //
  20. Long ll_i,ll_j,ll_k
  21. Int li_ifpack,li_ifunit,li_ifpackpro
  22. Int li_ifpackcnt,li_ifpackprocnt
  23. Decimal ld_rate,ld_uqty,ld_rate_buy
  24. Decimal ld_fprice,ld_uprice
  25. String ls_uunit,ls_unit_buy,ls_unit
  26. Long ll_storageid_arr[]
  27. IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
  28. rslt = 0
  29. GOTO ext
  30. END IF
  31. uo_sqlpro uo_pro
  32. uo_pro = Create uo_sqlpro
  33. uo_pro.commit_transaction = commit_transaction
  34. IF uo_option_confirmaudit_sale = -1000 THEN
  35. rslt = 0
  36. arg_msg = '选项:[025]销售单先确认后审核,读取初始默认值失败,操作取消!'
  37. GOTO ext
  38. END IF
  39. IF uo_option_inout_type = -1000 THEN
  40. rslt = 0
  41. arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
  42. GOTO ext
  43. END IF
  44. IF uo_option_outware_saleout = -1000 THEN
  45. rslt = 0
  46. arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
  47. GOTO ext
  48. END IF
  49. uo_saletask uo_task
  50. uo_task = Create uo_saletask
  51. uo_task.commit_transaction = commit_transaction
  52. IF storageid = 0 THEN
  53. rslt = 0
  54. arg_msg = '没有正确的仓库'
  55. GOTO ext
  56. END IF
  57. IF billtype <> 9 THEN
  58. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  59. rslt = 0
  60. GOTO ext
  61. END IF
  62. END IF
  63. String ls_storagename
  64. SELECT storagename
  65. INTO :ls_storagename
  66. FROM u_storage
  67. Where storageid = :storageid Using commit_transaction ;
  68. IF commit_transaction.SQLCode <> 0 THEN
  69. rslt = 0
  70. arg_msg = "查询操作失败,仓库"
  71. GOTO ext
  72. END IF
  73. //检查是否有该仓库的建立权限
  74. IF sys_user_storagestr_audit <> '0' THEN
  75. IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
  76. rslt = 0
  77. arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许审核该仓库的单据'
  78. GOTO ext
  79. END IF
  80. END IF
  81. //
  82. IF outwareid = 0 THEN
  83. rslt = 0
  84. arg_msg = "没有审核对象"
  85. GOTO ext
  86. END IF
  87. IF flag = 1 THEN
  88. rslt = 0
  89. arg_msg = "单据已经审核"
  90. GOTO ext
  91. END IF
  92. IF uo_option_confirmaudit_sale = 1 THEN
  93. IF priceflag = 0 THEN
  94. rslt = 0
  95. arg_msg = "销售单要确认后才能审核"
  96. GOTO ext
  97. END IF
  98. END IF
  99. UPDATE u_outware
  100. SET Auditingrep = :publ_operator,
  101. Auditingdate = getdate(),
  102. flag = 1
  103. WHERE u_outware.outwareid = :outwareid
  104. AND flag = 0
  105. And scid = :scid Using commit_transaction;
  106. IF commit_transaction.SQLCode <> 0 THEN
  107. rslt = 0
  108. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  109. GOTO ext
  110. ELSEIF commit_transaction.SQLNRows = 0 THEN
  111. rslt = 0
  112. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  113. GOTO ext
  114. END IF
  115. uo_inware uo_in
  116. uo_outware uo_out
  117. uo_in = Create uo_inware
  118. uo_in.commit_transaction = sqlca
  119. uo_in.if_getid_ture = False
  120. uo_out = Create uo_outware
  121. uo_out.commit_transaction = sqlca
  122. uo_out.if_getid_ture = False
  123. FOR i = 1 To it_mxbt
  124. Decimal ld_ref_costamt
  125. IF p_update_cost(outwaremx[i].mtrlwareid,outwaremx[i].mtrlcode,&
  126. outwaremx[i].qty,outwaremx[i].printid,ld_ref_costamt,arg_msg,False) = 0 THEN
  127. rslt = 0
  128. GOTO ext
  129. END IF
  130. IF sys_option_inout_procedure = 0 THEN
  131. IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
  132. outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
  133. outwaremx[i].status, outwaremx[i].qty,outwaremx[i].uqty, ld_ref_costamt,&
  134. outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
  135. outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].mtrlcuscode,&
  136. outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
  137. rslt = 0
  138. GOTO ext
  139. END IF
  140. ELSE
  141. IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
  142. outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
  143. outwaremx[i].qty,outwaremx[i].uqty,ld_ref_costamt,&
  144. outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
  145. outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
  146. arg_msg = '行:'+String(i)+','+arg_msg
  147. rslt = 0
  148. GOTO ext
  149. END IF
  150. END IF
  151. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  152. IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 THEN
  153. rslt = 0
  154. GOTO ext
  155. END IF
  156. END IF
  157. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  158. IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
  159. rslt = 0
  160. GOTO ext
  161. END IF
  162. END IF
  163. NEXT
  164. IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
  165. cnt = 1
  166. FOR ll_i = 1 To it_mxbt_mx
  167. IF ll_i = 1 THEN
  168. ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
  169. GOTO _next
  170. END IF
  171. FOR ll_j = 1 To cnt
  172. IF ll_storageid_arr[ll_j] = outwaremx_mx[ll_i].storageid THEN
  173. GOTO _next
  174. END IF
  175. NEXT
  176. cnt++
  177. ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
  178. _next:
  179. NEXT
  180. FOR ll_i = 1 To cnt
  181. IF uo_out.newbegin(scid,21,arg_msg) = 0 THEN
  182. rslt = 0
  183. GOTO ext
  184. END IF
  185. uo_out.relid = outwareid
  186. uo_out.outdate = outdate
  187. uo_out.outrep = outrep
  188. uo_out.part = outwarecode
  189. uo_out.dscrp = dscrp
  190. uo_out.cusname = '包件明细自动出仓'
  191. uo_out.storageid = ll_storageid_arr[ll_i]
  192. chc = 0
  193. FOR i = 1 To it_mxbt_mx
  194. IF outwaremx_mx[i].storageid <> ll_storageid_arr[ll_i] THEN CONTINUE
  195. SELECT ifpack,ifunit,unit,rate_buy,unit_buy,planprice
  196. INTO :li_ifpack,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
  197. FROM u_mtrldef
  198. Where mtrlid = :outwaremx_mx[i].mtrlid;
  199. IF commit_transaction.SQLCode <> 0 THEN
  200. rslt = 0
  201. arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
  202. GOTO ext
  203. END IF
  204. chc++
  205. IF li_ifunit = 0 THEN
  206. ls_uunit = ls_unit
  207. ld_rate = 1
  208. ld_uqty = outwaremx_mx[i].qty
  209. ELSE
  210. IF ld_rate_buy = 0 THEN
  211. arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
  212. rslt = 0
  213. GOTO ext
  214. END IF
  215. ls_uunit = ls_unit_buy
  216. ld_rate = ld_rate_buy
  217. ld_uqty = outwaremx_mx[i].qty /ld_rate_buy
  218. END IF
  219. IF uo_out.acceptmx(outwaremx_mx[i].mtrlwareid,&
  220. outwaremx_mx[i].qty,ld_fprice,1,&
  221. outwaremx_mx[i].mxdscrp,chc,arg_msg,0,0,outwaremx_mx[i].printid,0,'',0,outwaremx_mx[i].mxprintid,&
  222. ls_uunit,ld_uqty,ld_rate,'','',0,0,'',0,0,0,0,'','') = 0 THEN
  223. rslt = 0
  224. GOTO ext
  225. END IF
  226. NEXT
  227. IF uo_out.Save(False,arg_msg) = 0 THEN
  228. rslt = 0
  229. GOTO ext
  230. END IF
  231. rst_outwareid = uo_out.outwareid
  232. //2.原事务审核出仓单
  233. IF uo_out.getinfo(scid,rst_outwareid,arg_msg) = 0 THEN
  234. rslt = 0
  235. GOTO ext
  236. END IF
  237. IF uo_out.auditing(False,arg_msg) = 0 THEN
  238. rslt = 0
  239. GOTO ext
  240. END IF
  241. NEXT
  242. IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
  243. rslt = 0
  244. GOTO ext
  245. END IF
  246. uo_in.relid = outwareid
  247. uo_in.indate = outdate
  248. uo_in.inrep = outrep
  249. uo_in.part = outwarecode
  250. uo_in.dscrp = dscrp
  251. uo_in.sptname = '包件自动进仓'
  252. uo_in.storageid = storageid
  253. chc = 0
  254. FOR i = 1 To it_mxbt
  255. SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
  256. INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
  257. FROM u_mtrldef
  258. Where mtrlid = :outwaremx[i].mtrlid;
  259. IF commit_transaction.SQLCode <> 0 THEN
  260. rslt = 0
  261. arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
  262. GOTO ext
  263. END IF
  264. // IF li_ifpackpro = 1 THEN
  265. chc++
  266. IF li_ifunit = 0 THEN
  267. ls_uunit = ls_unit
  268. ld_rate = 1
  269. ld_uqty = outwaremx[i].qty
  270. ld_uprice = ld_fprice
  271. ELSE
  272. IF ld_rate_buy = 0 THEN
  273. arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
  274. rslt = 0
  275. GOTO ext
  276. END IF
  277. ls_uunit = ls_unit_buy
  278. ld_rate = ld_rate_buy
  279. ld_uqty = outwaremx[i].qty /ld_rate_buy
  280. ld_uprice = ld_fprice * ld_rate
  281. END IF
  282. IF uo_in.acceptmx(chc,&
  283. outwaremx[i].mtrlid,&
  284. outwaremx[i].mtrlcode,&
  285. outwaremx[i].plancode,&
  286. outwaremx[i].status,&
  287. ld_uqty,&
  288. ld_uprice,&
  289. 1,&
  290. outwaremx[i].mxdscrp,&
  291. arg_msg,&
  292. 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
  293. outwaremx[i].qty,0,0,'','',0,0,&
  294. outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
  295. ld_uqty,&
  296. 0) = 0 THEN
  297. rslt = 0
  298. GOTO ext
  299. END IF
  300. // END IF
  301. NEXT
  302. IF uo_in.Save(False,arg_msg) = 0 THEN
  303. rslt = 0
  304. GOTO ext
  305. END IF
  306. rst_inwareid = uo_in.inwareid
  307. //4.原事务审核进仓单
  308. IF uo_in.getinfo(scid,rst_inwareid,arg_msg) = 0 THEN
  309. rslt = 0
  310. GOTO ext
  311. END IF
  312. IF uo_in.auditing(False,arg_msg) = 0 THEN
  313. rslt = 0
  314. GOTO ext
  315. END IF
  316. // END IF
  317. END IF
  318. Long ll_printid_arr[],ll_mtrlwareid_arr[],ll_mtrlid_arr[]
  319. String ls_status_arr[],ls_woodcode_arr[],ls_pcode_arr[]
  320. Decimal ld_qty_arr[]
  321. Long ll_cnt = 1
  322. Long ll_printid
  323. Decimal ld_maxqty
  324. Long ll_mtrlid
  325. Int li_outtype
  326. String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
  327. Int li_ifover[],li_dipztype[]
  328. Decimal ld_Sonscale[]
  329. Long ll_SonMtrlid[]
  330. Long it_mxt = 1
  331. String ls_status_find,ls_woodcode_find,ls_pcode_find
  332. String ls_status,ls_woodcode,ls_pcode
  333. Decimal ld_pfqty
  334. IF uo_option_outware_saleout = 1 THEN
  335. DECLARE cur_mx CURSOR FOR
  336. SELECT u_outwaremx.printid, u_outwaremx.mtrlwareid, u_outwaremx.mtrlid,
  337. u_outwaremx.status, u_outwaremx.woodcode, u_outwaremx.pcode,
  338. u_outwaremx.qty
  339. FROM u_outwaremx INNER JOIN
  340. u_outware ON u_outwaremx.scid = u_outware.scid AND
  341. u_outwaremx.outwareid = u_outware.outwareid
  342. WHERE u_outware.relid = :outwareid AND
  343. u_outware.scid = :scid AND
  344. u_outware.billtype = 21 Using commit_transaction;
  345. OPEN cur_mx;
  346. FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
  347. :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
  348. DO WHILE commit_transaction.SQLCode = 0
  349. ll_cnt++
  350. FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
  351. :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
  352. LOOP
  353. CLOSE cur_mx;
  354. ll_cnt = ll_cnt - 1
  355. FOR ll_i = 1 To it_mxbt
  356. ld_maxqty = 0
  357. it_mxt = 1
  358. ll_printid = outwaremx[ll_i].printid
  359. ll_mtrlid = outwaremx[ll_i].mtrlid
  360. ls_status = outwaremx[ll_i].status
  361. ls_woodcode = outwaremx[ll_i].woodcode
  362. ls_pcode = outwaremx[ll_i].pcode
  363. SELECT outtype,ifpackpro INTO :li_outtype,:li_ifpackpro
  364. FROM u_mtrldef
  365. Where mtrlid = :ll_mtrlid Using commit_transaction;
  366. IF commit_transaction.SQLCode <> 0 THEN
  367. arg_msg = '查询产品出仓类型失败'
  368. rslt = 0
  369. GOTO ext
  370. END IF
  371. IF li_outtype = 0 THEN
  372. FOR ll_j = 1 To ll_cnt
  373. IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
  374. IF ll_printid_arr[ll_j] = ll_printid THEN
  375. ld_maxqty = ld_qty_arr[ll_j]
  376. EXIT
  377. END IF
  378. NEXT
  379. UPDATE u_outwaremx
  380. SET qty = :ld_maxqty
  381. WHERE outwareid = :outwareid
  382. AND scid = :scid
  383. And printid = :ll_printid Using commit_transaction;
  384. IF commit_transaction.SQLCode <> 0 THEN
  385. rslt = 0
  386. arg_msg = '更新实发数失败'
  387. GOTO ext
  388. END IF
  389. ELSE
  390. DECLARE cur_pf CURSOR FOR
  391. SELECT u_PrdPF.SonMtrlid,
  392. u_PrdPF.status,
  393. u_PrdPF.woodcode,
  394. u_PrdPF.pcode,
  395. u_PrdPF.ifover,
  396. u_prdpf.dipztype,
  397. u_prdpf.Sonscale
  398. FROM u_PrdPF,u_mtrl_pf
  399. WHERE ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
  400. AND ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
  401. AND ( u_PrdPF.mtrlid = :ll_mtrlid )
  402. AND ( u_mtrl_pf.ifdi = 1 AND :li_ifpackpro = 0
  403. Or u_mtrl_pf.ifdft = 1 And :li_ifpackpro = 1 );
  404. OPEN cur_pf;
  405. FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  406. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],
  407. :li_dipztype[it_mxt],:ld_Sonscale[it_mxt];
  408. DO WHILE sqlca.SQLCode = 0
  409. it_mxt++
  410. FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  411. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],
  412. :li_dipztype[it_mxt],:ld_Sonscale[it_mxt];
  413. LOOP
  414. it_mxt = it_mxt - 1
  415. CLOSE cur_pf;
  416. FOR ll_k = 1 To it_mxt
  417. IF li_ifover[ll_k] = 1 THEN
  418. CHOOSE CASE li_dipztype[ll_k]
  419. CASE 0
  420. ls_status_find = ls_status
  421. ls_woodcode_find = ''
  422. ls_pcode_find = ''
  423. CASE 1
  424. ls_status_find = ''
  425. ls_woodcode_find = ls_woodcode
  426. ls_pcode_find = ''
  427. CASE 2
  428. ls_status_find = ''
  429. ls_woodcode_find = ''
  430. ls_pcode_find = ls_pcode
  431. CASE 3
  432. ls_status_find = ls_status
  433. ls_woodcode_find = ls_woodcode
  434. ls_pcode_find = ''
  435. CASE 4
  436. ls_status_find = ''
  437. ls_woodcode_find = ls_woodcode
  438. ls_pcode_find = ls_pcode
  439. CASE 5
  440. ls_status_find = ls_status
  441. ls_woodcode_find = ''
  442. ls_pcode_find = ls_pcode
  443. CASE 6
  444. ls_status_find = ls_status
  445. ls_woodcode_find = ls_woodcode
  446. ls_pcode_find = ls_pcode
  447. END CHOOSE
  448. ELSE
  449. ls_status_find = ls_pf_status[ll_k]
  450. ls_woodcode_find = ls_pf_woodcode[ll_k]
  451. ls_pcode_find = ls_pf_pcode[ll_k]
  452. END IF
  453. ls_status_find = Trim(ls_status_find)
  454. ls_woodcode_find = Trim(ls_woodcode_find)
  455. ls_pcode_find = Trim(ls_pcode_find)
  456. ld_pfqty = 0
  457. FOR ll_j = 1 To ll_cnt
  458. IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
  459. IF ll_printid_arr[ll_j] = ll_printid And &
  460. ll_mtrlid_arr[ll_j] = ll_SonMtrlid[ll_k] And &
  461. ls_status_arr[ll_j] = ls_status_find And &
  462. ls_woodcode_arr[ll_j] = ls_woodcode_find And &
  463. ls_pcode_arr[ll_j] = ls_pcode_find THEN
  464. ld_pfqty = ld_pfqty + ld_qty_arr[ll_j] / ld_Sonscale[ll_k]
  465. END IF
  466. NEXT
  467. IF thflag = 0 THEN
  468. IF ld_pfqty > ld_maxqty THEN ld_maxqty = ld_pfqty
  469. ELSE
  470. IF ld_pfqty < ld_maxqty THEN ld_maxqty = ld_pfqty
  471. END IF
  472. NEXT
  473. UPDATE u_outwaremx
  474. SET qty = :ld_maxqty
  475. WHERE outwareid = :outwareid
  476. AND scid = :scid
  477. And printid = :ll_printid Using commit_transaction;
  478. IF commit_transaction.SQLCode <> 0 THEN
  479. rslt = 0
  480. arg_msg = '更新实发数失败'
  481. GOTO ext
  482. END IF
  483. END IF
  484. outwaremx[ll_i].qty = ld_maxqty
  485. NEXT
  486. IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
  487. rslt = 0
  488. GOTO ext
  489. END IF
  490. uo_in.relid = outwareid
  491. uo_in.indate = outdate
  492. uo_in.inrep = outrep
  493. uo_in.part = outwarecode
  494. uo_in.dscrp = dscrp
  495. uo_in.sptname = '包件自动进仓'
  496. uo_in.storageid = storageid
  497. chc = 0
  498. FOR i = 1 To it_mxbt
  499. SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
  500. INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
  501. FROM u_mtrldef
  502. Where mtrlid = :outwaremx[i].mtrlid;
  503. IF commit_transaction.SQLCode <> 0 THEN
  504. rslt = 0
  505. arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
  506. GOTO ext
  507. END IF
  508. chc++
  509. IF li_ifunit = 0 THEN
  510. ls_uunit = ls_unit
  511. ld_rate = 1
  512. ld_uqty = outwaremx[i].qty
  513. ld_uprice = ld_fprice
  514. ELSE
  515. IF ld_rate_buy = 0 THEN
  516. arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
  517. rslt = 0
  518. GOTO ext
  519. END IF
  520. ls_uunit = ls_unit_buy
  521. ld_rate = ld_rate_buy
  522. ld_uqty = outwaremx[i].qty /ld_rate_buy
  523. ld_uprice = ld_fprice * ld_rate
  524. END IF
  525. IF ld_uqty <> 0 Or outwaremx[i].qty <> 0 THEN
  526. IF uo_in.acceptmx(chc,&
  527. outwaremx[i].mtrlid,&
  528. outwaremx[i].mtrlcode,&
  529. outwaremx[i].plancode,&
  530. outwaremx[i].status,&
  531. ld_uqty,&
  532. ld_uprice,&
  533. 1,&
  534. outwaremx[i].mxdscrp,&
  535. arg_msg,&
  536. 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
  537. outwaremx[i].qty,0,0,'','',0,0,&
  538. outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
  539. ld_uqty,&
  540. 0) = 0 THEN
  541. rslt = 0
  542. GOTO ext
  543. END IF
  544. END IF
  545. NEXT
  546. IF uo_in.Save(False,arg_msg) = 0 THEN
  547. rslt = 0
  548. GOTO ext
  549. END IF
  550. rst_inwareid = uo_in.inwareid
  551. //4.原事务审核进仓单
  552. IF uo_in.getinfo(scid,rst_inwareid,arg_msg) = 0 THEN
  553. rslt = 0
  554. GOTO ext
  555. END IF
  556. IF uo_in.auditing(False,arg_msg) = 0 THEN
  557. rslt = 0
  558. GOTO ext
  559. END IF
  560. END IF
  561. IF uof_p_barcode(1,arg_msg) = 0 THEN
  562. rslt = 0
  563. GOTO ext
  564. END IF
  565. flag = 1
  566. ext:
  567. IF rslt = 0 THEN
  568. ROLLBACK Using commit_transaction;
  569. ELSEIF rslt = 1 And arg_ifcommit THEN
  570. COMMIT Using commit_transaction;
  571. END IF
  572. Destroy uo_task
  573. Destroy uo_in
  574. Destroy uo_out
  575. Destroy uo_pro
  576. RETURN rslt
  577. end function
  578. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
  579. Long ls_newid
  580. DateTime null_dt
  581. Long ll_inwareid_rel,ll_outwareid_rel
  582. String ls_inwarecode_rel,ls_outwarecode_rel
  583. String ls_outwarecode_arr[]
  584. Long ll_outwareid[]
  585. Long ll_itmx = 1,ll_i
  586. IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
  587. rslt = 0
  588. GOTO ext
  589. END IF
  590. uo_sqlpro uo_pro
  591. uo_pro = Create uo_sqlpro
  592. uo_pro.commit_transaction = commit_transaction
  593. IF uo_option_inout_type = -1000 THEN
  594. rslt = 0
  595. arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
  596. GOTO ext
  597. END IF
  598. IF uo_option_outware_saleout = -1000 THEN
  599. rslt = 0
  600. arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
  601. GOTO ext
  602. END IF
  603. SetNull(null_dt)
  604. uo_saletask uo_task
  605. uo_task = Create uo_saletask
  606. uo_task.commit_transaction = commit_transaction
  607. uo_inware uo_in
  608. uo_outware uo_out
  609. uo_in = Create uo_inware
  610. uo_in.commit_transaction = sqlca
  611. uo_in.if_getid_ture = False
  612. uo_out = Create uo_outware
  613. uo_out.commit_transaction = sqlca
  614. uo_out.if_getid_ture = False
  615. IF storageid = 0 THEN
  616. rslt = 0
  617. arg_msg = '没有正确的仓库'
  618. GOTO ext
  619. END IF
  620. IF billtype <> 9 THEN
  621. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  622. rslt = 0
  623. GOTO ext
  624. END IF
  625. END IF
  626. String ls_storagename
  627. SELECT storagename
  628. INTO :ls_storagename
  629. FROM u_storage
  630. Where storageid = :storageid Using commit_transaction ;
  631. IF commit_transaction.SQLCode <> 0 THEN
  632. rslt = 0
  633. arg_msg = "查询操作失败,仓库"
  634. GOTO ext
  635. END IF
  636. //检查是否有该仓库的建立权限
  637. IF sys_user_storagestr_audit <> '0' THEN
  638. IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
  639. rslt = 0
  640. arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许撤审该仓库的单据'
  641. GOTO ext
  642. END IF
  643. END IF
  644. //
  645. IF outwareid = 0 THEN
  646. rslt = 0
  647. arg_msg = "没有审核对象"
  648. GOTO ext
  649. END IF
  650. IF ctmint > 0 THEN
  651. arg_msg = '单据已截数,不能操作'
  652. rslt = 0
  653. GOTO ext
  654. END IF
  655. IF flag = 0 THEN
  656. rslt = 0
  657. arg_msg = "单据还未审核"
  658. GOTO ext
  659. END IF
  660. IF secflag = 1 THEN
  661. rslt = 0
  662. arg_msg = "单据已经过财务审核"
  663. GOTO ext
  664. END IF
  665. IF balcflag = 1 THEN
  666. rslt = 0
  667. arg_msg = "单据已经日结,不能撤审"
  668. GOTO ext
  669. END IF
  670. String ls_owecode
  671. Int li_oweflag
  672. Long ll_owebillid
  673. cnt = 0
  674. SELECT count(*) INTO :cnt
  675. FROM u_owegood
  676. WHERE scid = :scid
  677. And relid = :outwareid Using commit_transaction;
  678. IF commit_transaction.SQLCode <> 0 THEN
  679. rslt = 0
  680. arg_msg = '因网络或其它原因导致查询是否存在相关欠货单操作失败'+"~n"+commit_transaction.SQLErrText
  681. GOTO ext
  682. END IF
  683. IF cnt > 1 THEN
  684. rslt = 0
  685. arg_msg = '不合理的欠货单数量(存在多张相关欠货单),请检查'
  686. GOTO ext
  687. ELSEIF cnt = 1 THEN
  688. SELECT billid,billcode ,flag
  689. INTO :ll_owebillid,:ls_owecode,:li_oweflag
  690. FROM u_owegood
  691. WHERE scid = :scid
  692. And relid = :outwareid Using commit_transaction;
  693. IF commit_transaction.SQLCode <> 0 THEN
  694. rslt = 0
  695. arg_msg = '因网络或其它原因导致查询\相关欠货单信息操作失败'+"~n"+commit_transaction.SQLErrText
  696. GOTO ext
  697. END IF
  698. IF li_oweflag <> 0 THEN
  699. rslt = 0
  700. arg_msg = '相关欠货单:'+ls_owecode+' 已在进行或完成,不能撤审销售发货单,请检查'
  701. GOTO ext
  702. END IF
  703. DELETE FROM u_owegoodmx
  704. Where billid = :ll_owebillid;
  705. IF commit_transaction.SQLCode <> 0 THEN
  706. rslt = 0
  707. arg_msg = "删除相关欠货单明细操作失败"+"~n"+commit_transaction.SQLErrText
  708. GOTO ext
  709. END IF
  710. DELETE FROM u_owegood
  711. WHERE billid = :ll_owebillid
  712. And flag = 0;
  713. IF commit_transaction.SQLCode <> 0 THEN
  714. rslt = 0
  715. arg_msg = "删除相关欠货单操作失败"+"~n"+commit_transaction.SQLErrText
  716. GOTO ext
  717. END IF
  718. END IF
  719. UPDATE u_outware
  720. SET Auditingrep = '',
  721. Auditingdate = :null_dt,
  722. flag = 0
  723. WHERE u_outware.outwareid = :outwareid
  724. AND flag = 1
  725. And scid = :scid Using commit_transaction;
  726. IF commit_transaction.SQLCode <> 0 THEN
  727. rslt = 0
  728. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  729. GOTO ext
  730. ELSEIF commit_transaction.SQLNRows = 0 THEN
  731. rslt = 0
  732. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  733. GOTO ext
  734. END IF
  735. IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
  736. SELECT count(*)
  737. INTO :cnt
  738. FROM u_inware
  739. WHERE scid = :scid
  740. AND relid = :outwareid
  741. And billtype = 23 Using commit_transaction;
  742. IF commit_transaction.SQLCode <> 0 THEN
  743. rslt = 0
  744. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  745. GOTO ext
  746. END IF
  747. IF cnt > 0 THEN
  748. SELECT inwareid,inwarecode
  749. INTO :ll_inwareid_rel,:ls_inwarecode_rel
  750. FROM u_inware
  751. WHERE scid = :scid
  752. AND relid = :outwareid
  753. And billtype = 23 Using commit_transaction;
  754. IF commit_transaction.SQLCode <> 0 THEN
  755. rslt = 0
  756. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  757. GOTO ext
  758. END IF
  759. IF uo_in.getinfo(scid,ll_inwareid_rel,arg_msg) = 0 THEN
  760. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  761. rslt = 0
  762. GOTO ext
  763. END IF
  764. IF uo_in.c_auditing(False,arg_msg) = 0 THEN
  765. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  766. rslt = 0
  767. GOTO ext
  768. END IF
  769. IF uo_in.del(scid,ll_inwareid_rel,arg_msg,False) = 0 THEN
  770. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  771. rslt = 0
  772. GOTO ext
  773. END IF
  774. END IF
  775. DECLARE cur_mx CURSOR FOR
  776. SELECT outwareid,outwarecode
  777. FROM u_outware
  778. WHERE billtype = 21
  779. AND relid = :outwareid
  780. And scid = :scid Using commit_transaction;
  781. OPEN cur_mx;
  782. FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
  783. DO WHILE commit_transaction.SQLCode = 0
  784. ll_itmx++
  785. FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
  786. LOOP
  787. ll_itmx = ll_itmx - 1
  788. CLOSE cur_mx;
  789. FOR ll_i = 1 To ll_itmx
  790. IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
  791. rslt = 0
  792. arg_msg = '查询相关出仓单失败,' + arg_msg
  793. GOTO ext
  794. END IF
  795. IF uo_out.c_auditing(False,arg_msg) = 0 THEN
  796. rslt = 0
  797. arg_msg = '撤审相关出仓单失败,' + arg_msg
  798. GOTO ext
  799. END IF
  800. IF uo_out.del(scid,ll_outwareid[ll_i],0,arg_msg,False) = 0 THEN
  801. arg_msg = '相关出仓单:'+ls_outwarecode_rel+','+arg_msg
  802. rslt = 0
  803. GOTO ext
  804. END IF
  805. NEXT
  806. END IF
  807. IF uo_option_outware_saleout = 1 THEN
  808. SELECT count(*)
  809. INTO :cnt
  810. FROM u_inware
  811. WHERE scid = :scid
  812. AND relid = :outwareid
  813. And billtype = 23 Using commit_transaction;
  814. IF commit_transaction.SQLCode <> 0 THEN
  815. rslt = 0
  816. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  817. GOTO ext
  818. END IF
  819. IF cnt > 0 THEN
  820. SELECT inwareid,inwarecode
  821. INTO :ll_inwareid_rel,:ls_inwarecode_rel
  822. FROM u_inware
  823. WHERE scid = :scid
  824. AND relid = :outwareid
  825. And billtype = 23;
  826. IF commit_transaction.SQLCode <> 0 THEN
  827. rslt = 0
  828. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  829. GOTO ext
  830. END IF
  831. IF uo_in.getinfo(scid,ll_inwareid_rel,arg_msg) = 0 THEN
  832. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  833. rslt = 0
  834. GOTO ext
  835. END IF
  836. IF uo_in.c_auditing(False,arg_msg) = 0 THEN
  837. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  838. rslt = 0
  839. GOTO ext
  840. END IF
  841. IF uo_in.del(scid,ll_inwareid_rel,arg_msg,False) = 0 THEN
  842. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  843. rslt = 0
  844. GOTO ext
  845. END IF
  846. END IF
  847. DECLARE cur_mx_rel CURSOR FOR
  848. SELECT outwareid
  849. FROM u_outware
  850. WHERE billtype = 21
  851. AND relid = :outwareid
  852. And scid = :scid Using commit_transaction;
  853. OPEN cur_mx_rel;
  854. FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
  855. DO WHILE commit_transaction.SQLCode = 0
  856. ll_itmx++
  857. FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
  858. LOOP
  859. ll_itmx = ll_itmx - 1
  860. CLOSE cur_mx_rel;
  861. FOR ll_i = 1 To ll_itmx
  862. IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
  863. rslt = 0
  864. arg_msg = '查询相关出仓单失败,' + arg_msg
  865. GOTO ext
  866. END IF
  867. IF uo_out.c_auditing(False,arg_msg) = 0 THEN
  868. rslt = 0
  869. arg_msg = '撤审相关出仓单失败,' + arg_msg
  870. GOTO ext
  871. END IF
  872. NEXT
  873. END IF
  874. FOR i = 1 To it_mxbt
  875. IF sys_option_inout_procedure = 0 THEN
  876. IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
  877. outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
  878. outwaremx[i].status, 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,0 - outwaremx[i].costamt,&
  879. outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,&
  880. outwaremx[i].woodcode, outwaremx[i].pcode, outwaremx[i].mtrlcuscode,&
  881. outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
  882. rslt = 0
  883. GOTO ext
  884. END IF
  885. ELSE
  886. IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
  887. outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
  888. 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,outwaremx[i].costamt,&
  889. outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
  890. outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
  891. arg_msg = '行:'+String(i)+','+arg_msg
  892. rslt = 0
  893. GOTO ext
  894. END IF
  895. END IF
  896. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  897. IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid, 0 - outwaremx[i].qty,arg_msg,False) <> 1 THEN
  898. rslt = 0
  899. GOTO ext
  900. END IF
  901. END IF
  902. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  903. IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
  904. rslt = 0
  905. GOTO ext
  906. END IF
  907. END IF
  908. NEXT
  909. IF uof_p_barcode(0,arg_msg) = 0 THEN
  910. rslt = 0
  911. GOTO ext
  912. END IF
  913. flag = 0
  914. ext:
  915. IF rslt = 0 THEN
  916. ROLLBACK Using commit_transaction;
  917. ELSEIF rslt = 1 And arg_ifcommit THEN
  918. COMMIT Using commit_transaction;
  919. END IF
  920. Destroy uo_task
  921. Destroy uo_in
  922. Destroy uo_out
  923. Destroy uo_pro
  924. RETURN rslt
  925. end function
  926. public function integer auditing_th (boolean arg_ifcommit, ref string arg_msg);
  927. Long rslt = 1,cnt = 0,i
  928. Long chc
  929. Long rst_outwareid //
  930. Long rst_inwareid //
  931. Long ll_i,ll_j,ll_k
  932. Int li_ifpack,li_ifunit,li_ifpackpro
  933. Int li_ifpackcnt,li_ifpackprocnt
  934. Decimal ld_rate,ld_uqty,ld_rate_buy
  935. Decimal ld_fprice,ld_uprice
  936. String ls_uunit,ls_unit_buy,ls_unit
  937. Long ll_storageid_arr[]
  938. Long ll_outwareid_out
  939. IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
  940. rslt = 0
  941. GOTO ext
  942. END IF
  943. uo_sqlpro uo_pro
  944. uo_pro = Create uo_sqlpro
  945. uo_pro.commit_transaction = commit_transaction
  946. IF uo_option_confirmaudit_sale = -1000 THEN
  947. rslt = 0
  948. arg_msg = '选项:[025]销售单先确认后审核,读取初始默认值失败,操作取消!'
  949. GOTO ext
  950. END IF
  951. IF uo_option_inout_type = -1000 THEN
  952. rslt = 0
  953. arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
  954. GOTO ext
  955. END IF
  956. IF uo_option_outware_saleout = -1000 THEN
  957. rslt = 0
  958. arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
  959. GOTO ext
  960. END IF
  961. uo_saletask uo_task
  962. uo_task = Create uo_saletask
  963. uo_task.commit_transaction = commit_transaction
  964. uo_owegood uo_owe
  965. uo_owe = Create uo_owegood
  966. IF storageid = 0 THEN
  967. rslt = 0
  968. arg_msg = '没有正确的仓库'
  969. GOTO ext
  970. END IF
  971. IF billtype <> 9 THEN
  972. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  973. rslt = 0
  974. GOTO ext
  975. END IF
  976. END IF
  977. String ls_storagename
  978. SELECT storagename
  979. INTO :ls_storagename
  980. FROM u_storage
  981. Where storageid = :storageid Using commit_transaction ;
  982. IF commit_transaction.SQLCode <> 0 THEN
  983. rslt = 0
  984. arg_msg = "查询操作失败,仓库"
  985. GOTO ext
  986. END IF
  987. //检查是否有该仓库的建立权限
  988. IF sys_user_storagestr_audit <> '0' THEN
  989. IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
  990. rslt = 0
  991. arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许审核该仓库的单据'
  992. GOTO ext
  993. END IF
  994. END IF
  995. //
  996. IF outwareid = 0 THEN
  997. rslt = 0
  998. arg_msg = "没有审核对象"
  999. GOTO ext
  1000. END IF
  1001. IF flag = 1 THEN
  1002. rslt = 0
  1003. arg_msg = "单据已经审核"
  1004. GOTO ext
  1005. END IF
  1006. IF uo_option_confirmaudit_sale = 1 THEN
  1007. IF priceflag = 0 THEN
  1008. rslt = 0
  1009. arg_msg = "销售单要确认后才能审核"
  1010. GOTO ext
  1011. END IF
  1012. END IF
  1013. UPDATE u_outware
  1014. SET Auditingrep = :publ_operator,
  1015. Auditingdate = getdate(),
  1016. flag = 1
  1017. WHERE u_outware.outwareid = :outwareid
  1018. AND flag = 0
  1019. And scid = :scid Using commit_transaction;
  1020. IF commit_transaction.SQLCode <> 0 THEN
  1021. rslt = 0
  1022. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  1023. GOTO ext
  1024. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1025. rslt = 0
  1026. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1027. GOTO ext
  1028. END IF
  1029. uo_inware uo_in
  1030. uo_outware uo_out
  1031. uo_in = Create uo_inware
  1032. uo_in.commit_transaction = sqlca
  1033. uo_in.if_getid_ture = False
  1034. uo_out = Create uo_outware
  1035. uo_out.commit_transaction = sqlca
  1036. uo_out.if_getid_ture = False
  1037. IF relid = 1 THEN
  1038. IF uo_out.newbegin(scid,22,arg_msg) = 0 THEN
  1039. rslt = 0
  1040. GOTO ext
  1041. END IF
  1042. uo_out.relid = outwareid
  1043. uo_out.outdate = outdate
  1044. uo_out.outrep = publ_operator
  1045. uo_out.part = outwarecode
  1046. uo_out.dscrp = ''
  1047. uo_out.cusname = '欠货终止出仓单'
  1048. uo_out.storageid = storageid
  1049. FOR i = 1 To it_mxbt
  1050. IF uo_out.acceptmx(outwaremx[i].mtrlwareid,&
  1051. 0 - outwaremx[i].qty,&
  1052. outwaremx[i].cost,&
  1053. 1,'',i,arg_msg,0,0,0,0,'',0,0,outwaremx[i].unit,0 - outwaremx[i].uqty,outwaremx[i].rate,'','',0,0,'',0,0,0,0,'','') = 0 THEN
  1054. rslt = 0
  1055. GOTO ext
  1056. END IF
  1057. NEXT
  1058. IF uo_out.Save(False,arg_msg) = 0 THEN
  1059. rslt = 0
  1060. GOTO ext
  1061. END IF
  1062. ll_outwareid_out = uo_out.outwareid
  1063. //2.原事务审核出仓单
  1064. IF uo_out.getinfo(scid,ll_outwareid_out,arg_msg) = 0 THEN
  1065. rslt = 0
  1066. GOTO ext
  1067. END IF
  1068. IF uo_out.auditing(False,arg_msg) = 0 THEN
  1069. rslt = 0
  1070. GOTO ext
  1071. END IF
  1072. END IF
  1073. FOR i = 1 To it_mxbt
  1074. Decimal ld_ref_costamt
  1075. IF relid = 0 THEN
  1076. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1077. IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 THEN
  1078. rslt = 0
  1079. GOTO ext
  1080. END IF
  1081. END IF
  1082. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1083. IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
  1084. rslt = 0
  1085. GOTO ext
  1086. END IF
  1087. END IF
  1088. ELSEIF relid = 1 THEN
  1089. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1090. IF uo_owe.addstopqty(outwaremx[i].relid,outwaremx[i].relprintid,0 - outwaremx[i].qty,arg_msg,False) <> 1 THEN
  1091. rslt = 0
  1092. GOTO ext
  1093. END IF
  1094. END IF
  1095. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1096. IF uo_owe.tryfinish(outwaremx[i].relid,arg_msg,False) = 0 THEN
  1097. rslt = 0
  1098. GOTO ext
  1099. END IF
  1100. END IF
  1101. END IF
  1102. IF p_update_cost(outwaremx[i].mtrlwareid,outwaremx[i].mtrlcode,&
  1103. outwaremx[i].qty,outwaremx[i].printid,ld_ref_costamt,arg_msg,False) = 0 THEN
  1104. rslt = 0
  1105. GOTO ext
  1106. END IF
  1107. IF sys_option_inout_procedure = 0 THEN
  1108. IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
  1109. outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
  1110. outwaremx[i].status, outwaremx[i].qty,outwaremx[i].uqty, ld_ref_costamt,&
  1111. outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
  1112. outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].mtrlcuscode,&
  1113. outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
  1114. rslt = 0
  1115. GOTO ext
  1116. END IF
  1117. ELSE
  1118. IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
  1119. outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
  1120. outwaremx[i].qty,outwaremx[i].uqty,ld_ref_costamt,&
  1121. outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
  1122. outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
  1123. arg_msg = '行:'+String(i)+','+arg_msg
  1124. rslt = 0
  1125. GOTO ext
  1126. END IF
  1127. END IF
  1128. NEXT
  1129. IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
  1130. cnt = 1
  1131. FOR ll_i = 1 To it_mxbt_mx
  1132. IF ll_i = 1 THEN
  1133. ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
  1134. GOTO _next
  1135. END IF
  1136. FOR ll_j = 1 To cnt
  1137. IF ll_storageid_arr[ll_j] = outwaremx_mx[ll_i].storageid THEN
  1138. GOTO _next
  1139. END IF
  1140. NEXT
  1141. cnt++
  1142. ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
  1143. _next:
  1144. NEXT
  1145. FOR ll_i = 1 To cnt
  1146. IF uo_out.newbegin(scid,21,arg_msg) = 0 THEN
  1147. rslt = 0
  1148. GOTO ext
  1149. END IF
  1150. uo_out.relid = outwareid
  1151. uo_out.outdate = outdate
  1152. uo_out.outrep = outrep
  1153. uo_out.part = outwarecode
  1154. uo_out.dscrp = dscrp
  1155. uo_out.cusname = '包件明细自动出仓'
  1156. uo_out.storageid = ll_storageid_arr[ll_i]
  1157. chc = 0
  1158. FOR i = 1 To it_mxbt_mx
  1159. IF outwaremx_mx[i].storageid <> ll_storageid_arr[ll_i] THEN CONTINUE
  1160. SELECT ifpack,ifunit,unit,rate_buy,unit_buy,planprice
  1161. INTO :li_ifpack,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
  1162. FROM u_mtrldef
  1163. Where mtrlid = :outwaremx_mx[i].mtrlid;
  1164. IF commit_transaction.SQLCode <> 0 THEN
  1165. rslt = 0
  1166. arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
  1167. GOTO ext
  1168. END IF
  1169. chc++
  1170. IF li_ifunit = 0 THEN
  1171. ls_uunit = ls_unit
  1172. ld_rate = 1
  1173. ld_uqty = outwaremx_mx[i].qty
  1174. ELSE
  1175. IF ld_rate_buy = 0 THEN
  1176. arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
  1177. rslt = 0
  1178. GOTO ext
  1179. END IF
  1180. ls_uunit = ls_unit_buy
  1181. ld_rate = ld_rate_buy
  1182. ld_uqty = outwaremx_mx[i].qty /ld_rate_buy
  1183. END IF
  1184. IF uo_out.acceptmx(outwaremx_mx[i].mtrlwareid,&
  1185. outwaremx_mx[i].qty,ld_fprice,1,&
  1186. outwaremx_mx[i].mxdscrp,chc,arg_msg,0,0,outwaremx_mx[i].printid,0,'',0,outwaremx_mx[i].mxprintid,&
  1187. ls_uunit,ld_uqty,ld_rate,'','',0,0,'',0,0,0,0,'','') = 0 THEN
  1188. rslt = 0
  1189. GOTO ext
  1190. END IF
  1191. NEXT
  1192. IF uo_out.Save(False,arg_msg) = 0 THEN
  1193. rslt = 0
  1194. GOTO ext
  1195. END IF
  1196. rst_outwareid = uo_out.outwareid
  1197. //2.原事务审核出仓单
  1198. IF uo_out.getinfo(scid,rst_outwareid,arg_msg) = 0 THEN
  1199. rslt = 0
  1200. GOTO ext
  1201. END IF
  1202. IF uo_out.auditing(False,arg_msg) = 0 THEN
  1203. rslt = 0
  1204. GOTO ext
  1205. END IF
  1206. NEXT
  1207. IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
  1208. rslt = 0
  1209. GOTO ext
  1210. END IF
  1211. uo_in.relid = outwareid
  1212. uo_in.indate = outdate
  1213. uo_in.inrep = outrep
  1214. uo_in.part = outwarecode
  1215. uo_in.dscrp = dscrp
  1216. uo_in.sptname = '包件自动进仓'
  1217. uo_in.storageid = storageid
  1218. chc = 0
  1219. FOR i = 1 To it_mxbt
  1220. SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
  1221. INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
  1222. FROM u_mtrldef
  1223. Where mtrlid = :outwaremx[i].mtrlid;
  1224. IF commit_transaction.SQLCode <> 0 THEN
  1225. rslt = 0
  1226. arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
  1227. GOTO ext
  1228. END IF
  1229. IF li_ifpackpro = 1 THEN
  1230. chc++
  1231. IF li_ifunit = 0 THEN
  1232. ls_uunit = ls_unit
  1233. ld_rate = 1
  1234. ld_uqty = outwaremx[i].qty
  1235. ld_uprice = ld_fprice
  1236. ELSE
  1237. IF ld_rate_buy = 0 THEN
  1238. arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
  1239. rslt = 0
  1240. GOTO ext
  1241. END IF
  1242. ls_uunit = ls_unit_buy
  1243. ld_rate = ld_rate_buy
  1244. ld_uqty = outwaremx[i].qty /ld_rate_buy
  1245. ld_uprice = ld_fprice * ld_rate
  1246. END IF
  1247. IF uo_in.acceptmx(chc,&
  1248. outwaremx[i].mtrlid,&
  1249. outwaremx[i].mtrlcode,&
  1250. outwaremx[i].plancode,&
  1251. outwaremx[i].status,&
  1252. ld_uqty,&
  1253. ld_uprice,&
  1254. 1,&
  1255. outwaremx[i].mxdscrp,&
  1256. arg_msg,&
  1257. 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
  1258. outwaremx[i].qty,0,0,'','',0,0,&
  1259. outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
  1260. ld_uqty,&
  1261. 0) = 0 THEN
  1262. rslt = 0
  1263. GOTO ext
  1264. END IF
  1265. END IF
  1266. NEXT
  1267. IF uo_in.Save(False,arg_msg) = 0 THEN
  1268. rslt = 0
  1269. GOTO ext
  1270. END IF
  1271. rst_inwareid = uo_in.inwareid
  1272. //4.原事务审核进仓单
  1273. IF uo_in.getinfo(scid,rst_inwareid,arg_msg) = 0 THEN
  1274. rslt = 0
  1275. GOTO ext
  1276. END IF
  1277. IF uo_in.auditing(False,arg_msg) = 0 THEN
  1278. rslt = 0
  1279. GOTO ext
  1280. END IF
  1281. // END IF
  1282. END IF
  1283. Long ll_printid_arr[],ll_mtrlwareid_arr[],ll_mtrlid_arr[]
  1284. String ls_status_arr[],ls_woodcode_arr[],ls_pcode_arr[]
  1285. Decimal ld_qty_arr[]
  1286. Long ll_cnt = 1
  1287. Long ll_printid
  1288. Decimal ld_maxqty
  1289. Long ll_mtrlid
  1290. Int li_outtype
  1291. String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
  1292. Int li_ifover[],li_dipztype[]
  1293. Decimal ld_Sonscale[]
  1294. Long ll_SonMtrlid[]
  1295. Long it_mxt = 1
  1296. String ls_status_find,ls_woodcode_find,ls_pcode_find
  1297. String ls_status,ls_woodcode,ls_pcode
  1298. Decimal ld_pfqty
  1299. IF uo_option_outware_saleout = 1 THEN
  1300. DECLARE cur_mx CURSOR FOR
  1301. SELECT u_outwaremx.printid, u_outwaremx.mtrlwareid, u_outwaremx.mtrlid,
  1302. u_outwaremx.status, u_outwaremx.woodcode, u_outwaremx.pcode,
  1303. u_outwaremx.qty
  1304. FROM u_outwaremx INNER JOIN
  1305. u_outware ON u_outwaremx.scid = u_outware.scid AND
  1306. u_outwaremx.outwareid = u_outware.outwareid
  1307. WHERE u_outware.relid = :outwareid AND
  1308. u_outware.scid = :scid AND
  1309. u_outware.billtype = 21 Using commit_transaction;
  1310. OPEN cur_mx;
  1311. FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
  1312. :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
  1313. DO WHILE commit_transaction.SQLCode = 0
  1314. ll_cnt++
  1315. FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
  1316. :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
  1317. LOOP
  1318. CLOSE cur_mx;
  1319. ll_cnt = ll_cnt - 1
  1320. FOR ll_i = 1 To it_mxbt
  1321. ld_maxqty = 0
  1322. it_mxt = 1
  1323. ll_printid = outwaremx[ll_i].printid
  1324. ll_mtrlid = outwaremx[ll_i].mtrlid
  1325. ls_status = outwaremx[ll_i].status
  1326. ls_woodcode = outwaremx[ll_i].woodcode
  1327. ls_pcode = outwaremx[ll_i].pcode
  1328. SELECT outtype,ifpackpro INTO :li_outtype,:li_ifpackpro
  1329. FROM u_mtrldef
  1330. Where mtrlid = :ll_mtrlid Using commit_transaction;
  1331. IF commit_transaction.SQLCode <> 0 THEN
  1332. arg_msg = '查询产品出仓类型失败'
  1333. rslt = 0
  1334. GOTO ext
  1335. END IF
  1336. IF li_outtype = 0 THEN
  1337. FOR ll_j = 1 To ll_cnt
  1338. IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
  1339. IF ll_printid_arr[ll_j] = ll_printid THEN
  1340. ld_maxqty = ld_qty_arr[ll_j]
  1341. EXIT
  1342. END IF
  1343. NEXT
  1344. UPDATE u_outwaremx
  1345. SET qty = :ld_maxqty
  1346. WHERE outwareid = :outwareid
  1347. AND scid = :scid
  1348. And printid = :ll_printid Using commit_transaction;
  1349. IF commit_transaction.SQLCode <> 0 THEN
  1350. rslt = 0
  1351. arg_msg = '更新实发数失败'
  1352. GOTO ext
  1353. END IF
  1354. ELSE
  1355. DECLARE cur_pf CURSOR FOR
  1356. SELECT u_PrdPF.SonMtrlid,
  1357. u_PrdPF.status,
  1358. u_PrdPF.woodcode,
  1359. u_PrdPF.pcode,
  1360. u_PrdPF.ifover,
  1361. u_prdpf.dipztype,
  1362. u_prdpf.Sonscale
  1363. FROM u_PrdPF,u_mtrl_pf
  1364. WHERE ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
  1365. AND ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
  1366. AND ( u_PrdPF.mtrlid = :ll_mtrlid )
  1367. AND ( u_mtrl_pf.ifdi = 1 AND :li_ifpackpro = 0
  1368. Or u_mtrl_pf.ifdft = 1 And :li_ifpackpro = 1 );
  1369. OPEN cur_pf;
  1370. FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  1371. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],
  1372. :li_dipztype[it_mxt],:ld_Sonscale[it_mxt];
  1373. DO WHILE sqlca.SQLCode = 0
  1374. it_mxt++
  1375. FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  1376. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],
  1377. :li_dipztype[it_mxt],:ld_Sonscale[it_mxt];
  1378. LOOP
  1379. it_mxt = it_mxt - 1
  1380. CLOSE cur_pf;
  1381. FOR ll_k = 1 To it_mxt
  1382. IF li_ifover[ll_k] = 1 THEN
  1383. CHOOSE CASE li_dipztype[ll_k]
  1384. CASE 0
  1385. ls_status_find = ls_status
  1386. ls_woodcode_find = ''
  1387. ls_pcode_find = ''
  1388. CASE 1
  1389. ls_status_find = ''
  1390. ls_woodcode_find = ls_woodcode
  1391. ls_pcode_find = ''
  1392. CASE 2
  1393. ls_status_find = ''
  1394. ls_woodcode_find = ''
  1395. ls_pcode_find = ls_pcode
  1396. CASE 3
  1397. ls_status_find = ls_status
  1398. ls_woodcode_find = ls_woodcode
  1399. ls_pcode_find = ''
  1400. CASE 4
  1401. ls_status_find = ''
  1402. ls_woodcode_find = ls_woodcode
  1403. ls_pcode_find = ls_pcode
  1404. CASE 5
  1405. ls_status_find = ls_status
  1406. ls_woodcode_find = ''
  1407. ls_pcode_find = ls_pcode
  1408. CASE 6
  1409. ls_status_find = ls_status
  1410. ls_woodcode_find = ls_woodcode
  1411. ls_pcode_find = ls_pcode
  1412. END CHOOSE
  1413. ELSE
  1414. ls_status_find = ls_pf_status[ll_k]
  1415. ls_woodcode_find = ls_pf_woodcode[ll_k]
  1416. ls_pcode_find = ls_pf_pcode[ll_k]
  1417. END IF
  1418. ls_status_find = Trim(ls_status_find)
  1419. ls_woodcode_find = Trim(ls_woodcode_find)
  1420. ls_pcode_find = Trim(ls_pcode_find)
  1421. ld_pfqty = 0
  1422. FOR ll_j = 1 To ll_cnt
  1423. IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
  1424. IF ll_printid_arr[ll_j] = ll_printid And &
  1425. ll_mtrlid_arr[ll_j] = ll_SonMtrlid[ll_k] And &
  1426. ls_status_arr[ll_j] = ls_status_find And &
  1427. ls_woodcode_arr[ll_j] = ls_woodcode_find And &
  1428. ls_pcode_arr[ll_j] = ls_pcode_find THEN
  1429. ld_pfqty = ld_pfqty + ld_qty_arr[ll_j] / ld_Sonscale[ll_k]
  1430. END IF
  1431. NEXT
  1432. IF thflag = 0 THEN
  1433. IF ld_pfqty > ld_maxqty THEN ld_maxqty = ld_pfqty
  1434. ELSE
  1435. IF ld_pfqty < ld_maxqty THEN ld_maxqty = ld_pfqty
  1436. END IF
  1437. NEXT
  1438. UPDATE u_outwaremx
  1439. SET qty = :ld_maxqty
  1440. WHERE outwareid = :outwareid
  1441. AND scid = :scid
  1442. And printid = :ll_printid Using commit_transaction;
  1443. IF commit_transaction.SQLCode <> 0 THEN
  1444. rslt = 0
  1445. arg_msg = '更新实发数失败'
  1446. GOTO ext
  1447. END IF
  1448. END IF
  1449. outwaremx[ll_i].qty = ld_maxqty
  1450. NEXT
  1451. IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
  1452. rslt = 0
  1453. GOTO ext
  1454. END IF
  1455. uo_in.relid = outwareid
  1456. uo_in.indate = outdate
  1457. uo_in.inrep = outrep
  1458. uo_in.part = outwarecode
  1459. uo_in.dscrp = dscrp
  1460. uo_in.sptname = '包件自动进仓'
  1461. uo_in.storageid = storageid
  1462. chc = 0
  1463. FOR i = 1 To it_mxbt
  1464. SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
  1465. INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
  1466. FROM u_mtrldef
  1467. Where mtrlid = :outwaremx[i].mtrlid;
  1468. IF commit_transaction.SQLCode <> 0 THEN
  1469. rslt = 0
  1470. arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
  1471. GOTO ext
  1472. END IF
  1473. chc++
  1474. IF li_ifunit = 0 THEN
  1475. ls_uunit = ls_unit
  1476. ld_rate = 1
  1477. ld_uqty = outwaremx[i].qty
  1478. ld_uprice = ld_fprice
  1479. ELSE
  1480. IF ld_rate_buy = 0 THEN
  1481. arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
  1482. rslt = 0
  1483. GOTO ext
  1484. END IF
  1485. ls_uunit = ls_unit_buy
  1486. ld_rate = ld_rate_buy
  1487. ld_uqty = outwaremx[i].qty /ld_rate_buy
  1488. ld_uprice = ld_fprice * ld_rate
  1489. END IF
  1490. IF ld_uqty <> 0 Or outwaremx[i].qty <> 0 THEN
  1491. IF uo_in.acceptmx(chc,&
  1492. outwaremx[i].mtrlid,&
  1493. outwaremx[i].mtrlcode,&
  1494. outwaremx[i].plancode,&
  1495. outwaremx[i].status,&
  1496. ld_uqty,&
  1497. ld_uprice,&
  1498. 1,&
  1499. outwaremx[i].mxdscrp,&
  1500. arg_msg,&
  1501. 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
  1502. outwaremx[i].qty,0,0,'','',0,0,&
  1503. outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
  1504. ld_uqty,&
  1505. 0) = 0 THEN
  1506. rslt = 0
  1507. GOTO ext
  1508. END IF
  1509. END IF
  1510. NEXT
  1511. IF uo_in.Save(False,arg_msg) = 0 THEN
  1512. rslt = 0
  1513. GOTO ext
  1514. END IF
  1515. rst_inwareid = uo_in.inwareid
  1516. //4.原事务审核进仓单
  1517. IF uo_in.getinfo(scid,rst_inwareid,arg_msg) = 0 THEN
  1518. rslt = 0
  1519. GOTO ext
  1520. END IF
  1521. IF uo_in.auditing(False,arg_msg) = 0 THEN
  1522. rslt = 0
  1523. GOTO ext
  1524. END IF
  1525. END IF
  1526. IF uof_p_barcode(1,arg_msg) = 0 THEN
  1527. rslt = 0
  1528. GOTO ext
  1529. END IF
  1530. flag = 1
  1531. ext:
  1532. IF rslt = 0 THEN
  1533. ROLLBACK Using commit_transaction;
  1534. ELSEIF rslt = 1 And arg_ifcommit THEN
  1535. COMMIT Using commit_transaction;
  1536. END IF
  1537. Destroy uo_pro
  1538. Destroy uo_task
  1539. Destroy uo_in
  1540. Destroy uo_out
  1541. Destroy uo_owe
  1542. RETURN rslt
  1543. end function
  1544. public function integer c_auditing_th (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
  1545. Long ls_newid
  1546. DateTime null_dt
  1547. Long ll_inwareid_rel,ll_outwareid_rel
  1548. String ls_inwarecode_rel,ls_outwarecode_rel
  1549. String ls_outwarecode_arr[]
  1550. Long ll_outwareid[]
  1551. Long ll_itmx = 1,ll_i
  1552. Long ll_outwareid_out
  1553. IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
  1554. rslt = 0
  1555. GOTO ext
  1556. END IF
  1557. uo_sqlpro uo_pro
  1558. uo_pro = Create uo_sqlpro
  1559. uo_pro.commit_transaction = commit_transaction
  1560. IF uo_option_inout_type = -1000 THEN
  1561. rslt = 0
  1562. arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
  1563. GOTO ext
  1564. END IF
  1565. IF uo_option_outware_saleout = -1000 THEN
  1566. rslt = 0
  1567. arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
  1568. GOTO ext
  1569. END IF
  1570. SetNull(null_dt)
  1571. uo_saletask uo_task
  1572. uo_task = Create uo_saletask
  1573. uo_task.commit_transaction = commit_transaction
  1574. uo_inware uo_in
  1575. uo_outware uo_out
  1576. uo_owegood uo_owe
  1577. uo_owe = Create uo_owegood
  1578. uo_in = Create uo_inware
  1579. uo_in.commit_transaction = sqlca
  1580. uo_in.if_getid_ture = False
  1581. uo_out = Create uo_outware
  1582. uo_out.commit_transaction = sqlca
  1583. uo_out.if_getid_ture = False
  1584. IF storageid = 0 THEN
  1585. rslt = 0
  1586. arg_msg = '没有正确的仓库'
  1587. GOTO ext
  1588. END IF
  1589. IF billtype <> 9 THEN
  1590. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  1591. rslt = 0
  1592. GOTO ext
  1593. END IF
  1594. END IF
  1595. String ls_storagename
  1596. SELECT storagename
  1597. INTO :ls_storagename
  1598. FROM u_storage
  1599. Where storageid = :storageid Using commit_transaction ;
  1600. IF commit_transaction.SQLCode <> 0 THEN
  1601. rslt = 0
  1602. arg_msg = "查询操作失败,仓库"
  1603. GOTO ext
  1604. END IF
  1605. //检查是否有该仓库的建立权限
  1606. IF sys_user_storagestr_audit <> '0' THEN
  1607. IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
  1608. rslt = 0
  1609. arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许撤审该仓库的单据'
  1610. GOTO ext
  1611. END IF
  1612. END IF
  1613. //
  1614. IF outwareid = 0 THEN
  1615. rslt = 0
  1616. arg_msg = "没有审核对象"
  1617. GOTO ext
  1618. END IF
  1619. IF ctmint > 0 THEN
  1620. arg_msg = '单据已截数,不能操作'
  1621. rslt = 0
  1622. GOTO ext
  1623. END IF
  1624. IF flag = 0 THEN
  1625. rslt = 0
  1626. arg_msg = "单据还未审核"
  1627. GOTO ext
  1628. END IF
  1629. IF secflag = 1 THEN
  1630. rslt = 0
  1631. arg_msg = "单据已经过财务审核"
  1632. GOTO ext
  1633. END IF
  1634. IF balcflag = 1 THEN
  1635. rslt = 0
  1636. arg_msg = "单据已经日结,不能撤审"
  1637. GOTO ext
  1638. END IF
  1639. String ls_owecode
  1640. Int li_oweflag
  1641. Long ll_owebillid
  1642. cnt = 0
  1643. SELECT count(*) INTO :cnt
  1644. FROM u_owegood
  1645. WHERE scid = :scid
  1646. And relid = :outwareid Using commit_transaction;
  1647. IF commit_transaction.SQLCode <> 0 THEN
  1648. rslt = 0
  1649. arg_msg = '因网络或其它原因导致查询是否存在相关欠货单操作失败'+"~n"+commit_transaction.SQLErrText
  1650. GOTO ext
  1651. END IF
  1652. IF cnt > 1 THEN
  1653. rslt = 0
  1654. arg_msg = '不合理的欠货单数量(存在多张相关欠货单),请检查'
  1655. GOTO ext
  1656. ELSEIF cnt = 1 THEN
  1657. SELECT billid,billcode ,flag
  1658. INTO :ll_owebillid,:ls_owecode,:li_oweflag
  1659. FROM u_owegood
  1660. WHERE scid = :scid
  1661. And relid = :outwareid Using commit_transaction;
  1662. IF commit_transaction.SQLCode <> 0 THEN
  1663. rslt = 0
  1664. arg_msg = '因网络或其它原因导致查询\相关欠货单信息操作失败'+"~n"+commit_transaction.SQLErrText
  1665. GOTO ext
  1666. END IF
  1667. IF li_oweflag <> 0 THEN
  1668. rslt = 0
  1669. arg_msg = '相关欠货单:'+ls_owecode+' 已在进行或完成,不能撤审销售发货单,请检查'
  1670. GOTO ext
  1671. END IF
  1672. DELETE FROM u_owegoodmx
  1673. Where billid = :ll_owebillid;
  1674. IF commit_transaction.SQLCode <> 0 THEN
  1675. rslt = 0
  1676. arg_msg = "删除相关欠货单明细操作失败"+"~n"+commit_transaction.SQLErrText
  1677. GOTO ext
  1678. END IF
  1679. DELETE FROM u_owegood
  1680. WHERE billid = :ll_owebillid
  1681. And flag = 0;
  1682. IF commit_transaction.SQLCode <> 0 THEN
  1683. rslt = 0
  1684. arg_msg = "删除相关欠货单操作失败"+"~n"+commit_transaction.SQLErrText
  1685. GOTO ext
  1686. END IF
  1687. END IF
  1688. UPDATE u_outware
  1689. SET Auditingrep = '',
  1690. Auditingdate = :null_dt,
  1691. flag = 0
  1692. WHERE u_outware.outwareid = :outwareid
  1693. AND flag = 1
  1694. And scid = :scid Using commit_transaction;
  1695. IF commit_transaction.SQLCode <> 0 THEN
  1696. rslt = 0
  1697. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  1698. GOTO ext
  1699. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1700. rslt = 0
  1701. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1702. GOTO ext
  1703. END IF
  1704. IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
  1705. SELECT count(*)
  1706. INTO :cnt
  1707. FROM u_inware
  1708. WHERE scid = :scid
  1709. AND relid = :outwareid
  1710. And billtype = 23 Using commit_transaction;
  1711. IF commit_transaction.SQLCode <> 0 THEN
  1712. rslt = 0
  1713. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  1714. GOTO ext
  1715. END IF
  1716. IF cnt > 0 THEN
  1717. SELECT inwareid,inwarecode
  1718. INTO :ll_inwareid_rel,:ls_inwarecode_rel
  1719. FROM u_inware
  1720. WHERE scid = :scid
  1721. AND relid = :outwareid
  1722. And billtype = 23 Using commit_transaction;
  1723. IF commit_transaction.SQLCode <> 0 THEN
  1724. rslt = 0
  1725. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  1726. GOTO ext
  1727. END IF
  1728. IF uo_in.getinfo(scid,ll_inwareid_rel,arg_msg) = 0 THEN
  1729. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  1730. rslt = 0
  1731. GOTO ext
  1732. END IF
  1733. IF uo_in.c_auditing(False,arg_msg) = 0 THEN
  1734. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  1735. rslt = 0
  1736. GOTO ext
  1737. END IF
  1738. IF uo_in.del(scid,ll_inwareid_rel,arg_msg,False) = 0 THEN
  1739. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  1740. rslt = 0
  1741. GOTO ext
  1742. END IF
  1743. END IF
  1744. DECLARE cur_mx CURSOR FOR
  1745. SELECT outwareid,outwarecode
  1746. FROM u_outware
  1747. WHERE billtype = 21
  1748. AND relid = :outwareid
  1749. And scid = :scid Using commit_transaction;
  1750. OPEN cur_mx;
  1751. FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
  1752. DO WHILE commit_transaction.SQLCode = 0
  1753. ll_itmx++
  1754. FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
  1755. LOOP
  1756. ll_itmx = ll_itmx - 1
  1757. CLOSE cur_mx;
  1758. FOR ll_i = 1 To ll_itmx
  1759. IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
  1760. rslt = 0
  1761. arg_msg = '查询相关出仓单失败,' + arg_msg
  1762. GOTO ext
  1763. END IF
  1764. IF uo_out.c_auditing(False,arg_msg) = 0 THEN
  1765. rslt = 0
  1766. arg_msg = '撤审相关出仓单失败,' + arg_msg
  1767. GOTO ext
  1768. END IF
  1769. IF uo_out.del(scid,ll_outwareid[ll_i],0,arg_msg,False) = 0 THEN
  1770. arg_msg = '相关出仓单:'+ls_outwarecode_rel+','+arg_msg
  1771. rslt = 0
  1772. GOTO ext
  1773. END IF
  1774. NEXT
  1775. END IF
  1776. IF uo_option_outware_saleout = 1 THEN
  1777. SELECT count(*)
  1778. INTO :cnt
  1779. FROM u_inware
  1780. WHERE scid = :scid
  1781. AND relid = :outwareid
  1782. And billtype = 23 Using commit_transaction;
  1783. IF commit_transaction.SQLCode <> 0 THEN
  1784. rslt = 0
  1785. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  1786. GOTO ext
  1787. END IF
  1788. IF cnt > 0 THEN
  1789. SELECT inwareid,inwarecode
  1790. INTO :ll_inwareid_rel,:ls_inwarecode_rel
  1791. FROM u_inware
  1792. WHERE scid = :scid
  1793. AND relid = :outwareid
  1794. And billtype = 23;
  1795. IF commit_transaction.SQLCode <> 0 THEN
  1796. rslt = 0
  1797. arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  1798. GOTO ext
  1799. END IF
  1800. IF uo_in.getinfo(scid,ll_inwareid_rel,arg_msg) = 0 THEN
  1801. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  1802. rslt = 0
  1803. GOTO ext
  1804. END IF
  1805. IF uo_in.c_auditing(False,arg_msg) = 0 THEN
  1806. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  1807. rslt = 0
  1808. GOTO ext
  1809. END IF
  1810. IF uo_in.del(scid,ll_inwareid_rel,arg_msg,False) = 0 THEN
  1811. arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
  1812. rslt = 0
  1813. GOTO ext
  1814. END IF
  1815. END IF
  1816. DECLARE cur_mx_rel CURSOR FOR
  1817. SELECT outwareid
  1818. FROM u_outware
  1819. WHERE billtype = 21
  1820. AND relid = :outwareid
  1821. And scid = :scid Using commit_transaction;
  1822. OPEN cur_mx_rel;
  1823. FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
  1824. DO WHILE commit_transaction.SQLCode = 0
  1825. ll_itmx++
  1826. FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
  1827. LOOP
  1828. ll_itmx = ll_itmx - 1
  1829. CLOSE cur_mx_rel;
  1830. FOR ll_i = 1 To ll_itmx
  1831. IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
  1832. rslt = 0
  1833. arg_msg = '查询相关出仓单失败,' + arg_msg
  1834. GOTO ext
  1835. END IF
  1836. IF uo_out.c_auditing(False,arg_msg) = 0 THEN
  1837. rslt = 0
  1838. arg_msg = '撤审相关出仓单失败,' + arg_msg
  1839. GOTO ext
  1840. END IF
  1841. NEXT
  1842. END IF
  1843. FOR i = 1 To it_mxbt
  1844. IF sys_option_inout_procedure = 0 THEN
  1845. IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
  1846. outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
  1847. outwaremx[i].status, 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,0 - outwaremx[i].costamt,&
  1848. outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,&
  1849. outwaremx[i].woodcode, outwaremx[i].pcode, outwaremx[i].mtrlcuscode,&
  1850. outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
  1851. rslt = 0
  1852. GOTO ext
  1853. END IF
  1854. ELSE
  1855. IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
  1856. outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
  1857. 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,outwaremx[i].costamt,&
  1858. outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
  1859. outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
  1860. arg_msg = '行:'+String(i)+','+arg_msg
  1861. rslt = 0
  1862. GOTO ext
  1863. END IF
  1864. END IF
  1865. IF relid = 0 THEN
  1866. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1867. IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,0 - outwaremx[i].qty,arg_msg,False) <> 1 THEN
  1868. rslt = 0
  1869. GOTO ext
  1870. END IF
  1871. END IF
  1872. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1873. IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
  1874. rslt = 0
  1875. GOTO ext
  1876. END IF
  1877. END IF
  1878. ELSEIF relid = 1 THEN
  1879. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1880. IF uo_owe.addstopqty(outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 THEN
  1881. rslt = 0
  1882. GOTO ext
  1883. END IF
  1884. END IF
  1885. If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
  1886. IF uo_owe.tryfinish(outwaremx[i].relid,arg_msg,False) = 0 THEN
  1887. rslt = 0
  1888. GOTO ext
  1889. END IF
  1890. END IF
  1891. END IF
  1892. NEXT
  1893. IF relid = 1 THEN
  1894. SELECT count(*) INTO :cnt
  1895. FROM u_outware
  1896. WHERE scid = :scid
  1897. AND relid = :outwareid
  1898. And billtype = 22;
  1899. IF sqlca.SQLCode <> 0 THEN
  1900. arg_msg = '查询是否有相关出仓单失败'+sqlca.SQLErrText
  1901. rslt = 0
  1902. GOTO ext
  1903. END IF
  1904. IF cnt = 1 THEN
  1905. SELECT outwareid INTO :ll_outwareid_out
  1906. FROM u_outware
  1907. WHERE scid = :scid
  1908. AND relid = :outwareid
  1909. And billtype = 22;
  1910. IF sqlca.SQLCode <> 0 THEN
  1911. arg_msg = '查询是否有相关出仓单失败'+sqlca.SQLErrText
  1912. rslt = 0
  1913. GOTO ext
  1914. END IF
  1915. IF uo_out.getinfo(scid,ll_outwareid_out,arg_msg) = 0 THEN
  1916. rslt = 0
  1917. GOTO ext
  1918. END IF
  1919. IF uo_out.c_auditing(False,arg_msg) = 0 THEN
  1920. rslt = 0
  1921. GOTO ext
  1922. END IF
  1923. IF uo_out.del(scid,ll_outwareid_out,0,arg_msg,False) = 0 THEN
  1924. rslt = 0
  1925. GOTO ext
  1926. END IF
  1927. END IF
  1928. END IF
  1929. IF uof_p_barcode(0,arg_msg) = 0 THEN
  1930. rslt = 0
  1931. GOTO ext
  1932. END IF
  1933. flag = 0
  1934. ext:
  1935. IF rslt = 0 THEN
  1936. ROLLBACK Using commit_transaction;
  1937. ELSEIF rslt = 1 And arg_ifcommit THEN
  1938. COMMIT Using commit_transaction;
  1939. END IF
  1940. Destroy uo_task
  1941. Destroy uo_in
  1942. Destroy uo_out
  1943. Destroy uo_owe
  1944. Destroy uo_pro
  1945. RETURN rslt
  1946. end function
  1947. on uo_outware_sale_th.create
  1948. call super::create
  1949. end on
  1950. on uo_outware_sale_th.destroy
  1951. call super::destroy
  1952. end on