uo_warepdb_bill.sru 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975
  1. $PBExportHeader$uo_warepdb_bill.sru
  2. forward
  3. global type uo_warepdb_bill from nonvisualobject
  4. end type
  5. type s_dismantle_install from structure within uo_warepdb_bill
  6. end type
  7. end forward
  8. type s_dismantle_install from structure
  9. long printid
  10. long storageid
  11. long mtrlwareid
  12. long mtrlid
  13. decimal { 5 } qty
  14. decimal { 10 } price
  15. string status
  16. string plancode
  17. string woodcode
  18. string mxdscrp
  19. string mtrlcode
  20. string pcode
  21. integer dxflag
  22. long sptid
  23. long standardqty
  24. decimal { 5 } addqty
  25. string unit
  26. end type
  27. global type uo_warepdb_bill from nonvisualobject
  28. end type
  29. global uo_warepdb_bill uo_warepdb_bill
  30. type variables
  31. PUBLIC PROTECTEDWRITE Long billid
  32. PUBLIC PROTECTEDWRITE String billcode
  33. PUBLIC PROTECTEDWRITE DateTime opdate
  34. PUBLIC PROTECTEDWRITE String opemp
  35. PUBLIC PROTECTEDWRITE DateTime moddate
  36. PUBLIC PROTECTEDWRITE String modemp
  37. PUBLIC PROTECTEDWRITE Int flag
  38. PUBLIC PROTECTEDWRITE DateTime Permit_date
  39. PUBLIC PROTECTEDWRITE String Permit_emp
  40. DateTime billdate
  41. Long storageid
  42. String dscrp
  43. String assign_emp
  44. long scid
  45. String part
  46. Transaction commit_transaction //数据commit事务
  47. long ifpypk
  48. PRIVATE:
  49. s_warepdb_billmx d_i[] //明细结构数组
  50. Long it_mxbt = 0 //明细结构数组末指针
  51. Boolean it_newbegin = FALSE //新建标志
  52. Boolean it_updatebegin = FALSE//修改标志
  53. end variables
  54. forward prototypes
  55. public function integer p_clearmx ()
  56. public function integer p_reset ()
  57. public function integer updatebegin (long arg_billid, ref string arg_msg)
  58. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  59. public function integer del (long arg_billid, ref string arg_msg)
  60. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  61. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  62. public function integer getinfo (long arg_billid, ref string arg_msg)
  63. public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg)
  64. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
  65. public function integer newbegin (ref string arg_msg)
  66. public function integer pypk (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg)
  67. public function integer uof_create_pypk (ref string arg_msg)
  68. public function integer uof_destroy_pypk (ref string arg_msg)
  69. public function integer acceptmx (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg)
  70. public function integer acceptmx2 (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg, string arg_waredscrp)
  71. end prototypes
  72. public function integer p_clearmx ();//INT p_clearmx()
  73. //清除明细
  74. it_mxbt=0
  75. RETURN 1
  76. end function
  77. public function integer p_reset ();//INT p_RESET()
  78. //清除对象及其明细
  79. billid = 0
  80. billcode = ''
  81. opemp = ''
  82. Permit_emp = ''
  83. flag = 0
  84. storageid = 0
  85. dscrp = ''
  86. part = ''
  87. it_newbegin = FALSE
  88. it_updatebegin = FALSE
  89. //清除明细
  90. P_CLEARMX()
  91. RETURN 1
  92. end function
  93. public function integer updatebegin (long arg_billid, ref string arg_msg);int rslt = 1
  94. if arg_billid <= 0 then
  95. billid = 0
  96. goto ext
  97. end if
  98. if p_getinfo(arg_billid,arg_msg) = 0 then
  99. rslt = 0
  100. goto ext
  101. end if
  102. if flag = 1 then
  103. rslt = 0
  104. arg_msg = '单据已经审核,不可以修改'
  105. goto ext
  106. end if
  107. billid = arg_billid
  108. p_clearmx()
  109. it_newbegin = false
  110. it_updatebegin = true
  111. ext:
  112. if rslt = 0 then p_reset()
  113. return rslt
  114. end function
  115. public function integer save (ref string arg_msg, boolean arg_ifcommit);
  116. Integer rslt = 1,i,cnt = 0
  117. DateTime server_dt
  118. Long ls_newid
  119. //
  120. IF IsNull(storageid) THEN storageid = 0
  121. IF IsNull(dscrp) THEN dscrp = ''
  122. IF IsNull(assign_emp) THEN assign_emp = ''
  123. IF it_newbegin = False And it_updatebegin = False THEN
  124. rslt = 0
  125. arg_msg = "非编辑状态不可以提交"
  126. GOTO ext
  127. END IF
  128. SELECT Top 1 getdate() Into :server_dt From u_user;
  129. //取得系统时间,借用操作员表
  130. IF commit_transaction.SQLCode <> 0 THEN
  131. rslt = 0
  132. arg_msg = "查询操作失败,日期 "
  133. GOTO ext
  134. END IF
  135. IF it_mxbt = 0 THEN
  136. rslt = 0
  137. arg_msg = "没有明细内容"
  138. GOTO ext
  139. END IF
  140. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  141. IF billid = 0 THEN //新建
  142. ls_newid = f_sys_scidentity(0,"u_warepdb_bill","billid",arg_msg,True,commit_transaction)
  143. IF ls_newid <= 0 THEN
  144. rslt = 0
  145. GOTO ext
  146. END IF
  147. billcode = getid(0,"PD",Date(server_dt),True,commit_transaction) //取得新单据编号
  148. IF billcode = "err" THEN
  149. billcode = ''
  150. rslt = 0
  151. arg_msg = "无法获取拆装单编号"
  152. GOTO ext
  153. END IF
  154. INSERT INTO u_warepdb_bill
  155. ( billid,
  156. billcode,
  157. Assign_Emp,
  158. billdate,
  159. opemp,
  160. opdate,
  161. Dscrp,
  162. storageid,
  163. scid,
  164. part )
  165. VALUES ( :ls_newid,
  166. :billcode,
  167. :Assign_Emp,
  168. :billdate,
  169. :publ_operator,
  170. :server_dt,
  171. :Dscrp,
  172. :storageid,
  173. :scid,
  174. :part) ;
  175. IF commit_transaction.SQLCode <> 0 THEN
  176. rslt = 0
  177. IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_warepdb_bill') > 0 THEN
  178. arg_msg = '插入单据资料失败,关键字ID重复'
  179. ELSEIF Pos(Lower(commit_transaction.SQLErrText),'IX_u_warepdb_bill') > 0 THEN
  180. arg_msg = '插入单据资料失败,单据编号重复'
  181. ELSE
  182. arg_msg = '插入单据资料失败,'+commit_transaction.SQLErrText
  183. END IF
  184. GOTO ext
  185. END IF
  186. billid = ls_newid
  187. ELSE //////////////////////////////////////////////// //更新
  188. UPDATE u_warepdb_bill
  189. SET Assign_Emp = :Assign_Emp,
  190. billdate = :billdate,
  191. modemp = :publ_operator,
  192. moddate = :server_dt,
  193. Dscrp = :Dscrp,
  194. storageid = :storageid,
  195. part = :part
  196. WHERE u_warepdb_bill.billid = :billid
  197. And flag = 0;
  198. IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
  199. rslt = 0
  200. arg_msg = "更新单据操作失败"+"~n"+commit_transaction.SQLErrText
  201. GOTO ext
  202. END IF
  203. //删除原有明细
  204. DELETE FROM u_warepdb_billmx
  205. Where u_warepdb_billmx.billid = :billid;
  206. IF commit_transaction.SQLCode <> 0 THEN
  207. rslt = 0
  208. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  209. GOTO ext
  210. END IF
  211. // FOR i = 1 TO it_mxbt
  212. // INSERT INTO u_warepdb_billmx
  213. // ( mtrlid,
  214. // status,
  215. // qty,
  216. // factqty,
  217. // plancode,
  218. // Sptid,
  219. // scid,
  220. // mtrlwareid,
  221. // Dxflag,
  222. // woodcode,
  223. // pcode,
  224. // wareamt,
  225. // cost,
  226. // factaddqty,
  227. // addqty,
  228. // billid,
  229. // printid,
  230. // mxdscrp )
  231. // VALUES ( :d_i[i].mtrlid,
  232. // :d_i[i].status,
  233. // :d_i[i].qty,
  234. // :d_i[i].factqty,
  235. // :d_i[i]. plancode,
  236. // :d_i[i].Sptid,
  237. // :scid,
  238. // :d_i[i].mtrlwareid,
  239. // :d_i[i].Dxflag,
  240. // :d_i[i].woodcode,
  241. // :d_i[i].pcode,
  242. // :d_i[i].wareamt,
  243. // :d_i[i].cost,
  244. // :d_i[i].factaddqty,
  245. // :d_i[i].addqty,
  246. // :billid,
  247. // :d_i[i].printid,
  248. // :d_i[i].mxdscrp ) ;
  249. // IF commit_transaction.SQLCode <> 0 THEN
  250. // billid = 0 //还原billid
  251. // rslt = 0
  252. //
  253. // IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_warepdb_billmx') > 0 THEN
  254. // arg_msg = '插入单据明细资料失败,关键字ID重复'
  255. // ELSE
  256. // arg_msg = '插入单据明细资料失败,'+commit_transaction.SQLErrText
  257. // END IF
  258. // ROLLBACK ;
  259. // GOTO ext
  260. // END IF
  261. // NEXT
  262. END IF
  263. FOR i = 1 To it_mxbt
  264. INSERT INTO u_warepdb_billmx
  265. (scid,
  266. billid,
  267. printid,
  268. mtrlid,
  269. status,
  270. qty,
  271. factqty,
  272. plancode,
  273. Sptid,
  274. mtrlwareid,
  275. Dxflag,
  276. woodcode,
  277. pcode,
  278. wareamt,
  279. cost,
  280. factaddqty,
  281. addqty,
  282. mxdscrp,
  283. packqty,waredscrp)
  284. VALUES ( :scid,
  285. :billid,
  286. :d_i[i].printid,
  287. :d_i[i].mtrlid,
  288. :d_i[i].status,
  289. :d_i[i].qty,
  290. :d_i[i].factqty,
  291. :d_i[i]. plancode,
  292. :d_i[i].Sptid,
  293. :d_i[i].mtrlwareid,
  294. :d_i[i].Dxflag,
  295. :d_i[i].woodcode,
  296. :d_i[i].pcode,
  297. :d_i[i].wareamt,
  298. :d_i[i].cost,
  299. :d_i[i].factaddqty,
  300. :d_i[i].addqty,
  301. :d_i[i].mxdscrp,
  302. :d_i[i].packqty,:d_i[i].waredscrp) ;
  303. IF commit_transaction.SQLCode <> 0 THEN
  304. IF it_newbegin THEN billid = 0 //还原billid
  305. rslt = 0
  306. arg_msg = '插入单据明细资料失败,'+commit_transaction.SQLErrText
  307. GOTO ext
  308. END IF
  309. NEXT
  310. it_newbegin = False
  311. it_updatebegin = False
  312. ext:
  313. IF rslt = 0 THEN
  314. ROLLBACK Using commit_transaction;
  315. p_clearmx()
  316. ELSEIF rslt = 1 And arg_ifcommit THEN
  317. COMMIT Using commit_transaction;
  318. END IF
  319. Return(rslt)
  320. end function
  321. public function integer del (long arg_billid, ref string arg_msg);//====================================================================
  322. // Function: del(arg_billid,arg_msg)
  323. //--------------------------------------------------------------------
  324. // Description:
  325. //--------------------------------------------------------------------
  326. // Arguments:
  327. // value long arg_billid
  328. // reference string arg_msg
  329. //--------------------------------------------------------------------
  330. // Returns: integer
  331. //--------------------------------------------------------------------
  332. // Author: yyx Date: 2003.11.21
  333. //--------------------------------------------------------------------
  334. // Modify History:
  335. //
  336. //====================================================================
  337. int rslt = 1
  338. if arg_billid <= 0 then
  339. rslt = 0
  340. arg_msg = "没有删除对象,操作取消"
  341. goto ext
  342. end if
  343. if it_newbegin or it_updatebegin then
  344. rslt=0
  345. arg_msg="编辑状态下不可以执行,操作取消"
  346. goto ext
  347. end if
  348. select u_warepdb_bill.flag
  349. into :flag
  350. from u_warepdb_bill
  351. where u_warepdb_bill.billid = :arg_billid;
  352. if sqlca.sqlcode <> 0 then
  353. rslt = 0
  354. arg_msg = '查询拆装单操作失败'
  355. goto ext
  356. end if
  357. if flag = 1 then
  358. rslt = 0
  359. arg_msg = "单据已经审核,不可以删除"
  360. goto ext
  361. end if
  362. delete from u_warepdb_bill where u_warepdb_bill.billid = :arg_billid;
  363. if sqlca.sqlcode <> 0 then
  364. rslt = 0
  365. arg_msg = "删除仓库盘点单操作失败"+"~n"+sqlca.sqlerrtext
  366. goto ext
  367. end if
  368. delete from u_warepdb_billmx where u_warepdb_billmx.billid = :arg_billid;
  369. if sqlca.sqlcode <> 0 then
  370. rslt = 0
  371. arg_msg = "删除仓库盘点单明细操作失败"+"~n"+sqlca.sqlerrtext
  372. goto ext
  373. end if
  374. commit;
  375. it_newbegin = false
  376. it_updatebegin = false
  377. if rslt = 0 then
  378. rollback;
  379. p_reset()
  380. end if
  381. ext:
  382. return (rslt)
  383. end function
  384. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
  385. // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
  386. //--------------------------------------------------------------------
  387. // Description:
  388. //--------------------------------------------------------------------
  389. // Arguments:
  390. // value long arg_billid
  391. // value string arg_newdescppart
  392. // reference string arg_msg
  393. //--------------------------------------------------------------------
  394. // Returns: integer
  395. //--------------------------------------------------------------------
  396. // Author: yyx Date: 2003.11.21
  397. //--------------------------------------------------------------------
  398. // Modify History:
  399. //
  400. //====================================================================
  401. int rslt = 1
  402. arg_newdescppart = trim(arg_newdescppart)
  403. if arg_billid <= 0 then
  404. rslt = 0
  405. arg_msg = "没有删除对象,操作取消"
  406. goto ext
  407. end if
  408. if it_newbegin or it_updatebegin then
  409. rslt=0
  410. arg_msg="编辑状态下不可以执行,操作取消"
  411. goto ext
  412. end if
  413. select u_warepdb_bill.flag
  414. into :flag
  415. from u_warepdb_bill
  416. where u_warepdb_bill.billid = :arg_billid;
  417. if sqlca.sqlcode <> 0 then
  418. rslt = 0
  419. arg_msg = '查询仓库盘点单操作失败'
  420. goto ext
  421. end if
  422. if flag = 0 then
  423. rslt = 0
  424. arg_msg = "非审核状态下不可用"
  425. goto ext
  426. end if
  427. update u_warepdb_bill
  428. set dscrp = dscrp+' '+:arg_newdescppart
  429. where u_warepdb_bill.billid = :billid;
  430. if sqlca.sqlcode <> 0 then
  431. rollback ;
  432. rslt = 0
  433. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext
  434. goto ext
  435. end if
  436. commit;
  437. dscrp = dscrp+' '+arg_newdescppart
  438. ext:
  439. return (rslt)
  440. end function
  441. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  442. IF arg_billid <= 0 THEN
  443. rslt = 0
  444. arG_MSG = "非法单据唯一码"
  445. GOTO ext
  446. END IF
  447. SELECT u_warepdb_bill.billid,
  448. u_warepdb_bill.billcode,
  449. u_warepdb_bill.Assign_Emp,
  450. u_warepdb_bill.flag,
  451. u_warepdb_bill.billdate,
  452. u_warepdb_bill.Dscrp,
  453. u_warepdb_bill.storageid,
  454. u_warepdb_bill.part,
  455. u_warepdb_bill.scid,
  456. u_warepdb_bill.ifpypk
  457. INTO :billid,
  458. :billcode,
  459. :Assign_Emp,
  460. :flag,
  461. :billdate,
  462. :Dscrp,
  463. :storageid,
  464. :part,
  465. :scid,
  466. :ifpypk
  467. FROM u_warepdb_bill
  468. Where u_warepdb_bill.billid = :arg_billid;
  469. IF sqlca.SQLCode <> 0 THEN
  470. rslt = 0
  471. arG_MSG = "查询操作失败(错误单据唯一码)"+sqlca.SQLErrText
  472. GOTO ext
  473. END IF
  474. billid = arg_billid
  475. ext:
  476. IF rslt = 0 THEN p_reset()
  477. RETURN rslt
  478. end function
  479. public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0
  480. IF arg_billid <= 0 THEN
  481. rslt = 0
  482. arg_msg = "非法单据唯一码"
  483. GOTO ext
  484. END IF
  485. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  486. rslt = 0
  487. GOTO ext
  488. END IF
  489. //用游标读取明细
  490. DECLARE cur_d_i_mx CURSOR FOR
  491. SELECT u_mtrldef.mtrlcode,
  492. u_warepdb_billmx.factqty,
  493. u_warepdb_billmx.factaddqty,
  494. u_warepdb_billmx.mxdscrp,
  495. u_warepdb_billmx.mtrlwareid,
  496. u_warepdb_billmx.status,
  497. u_warepdb_billmx.plancode,
  498. u_warepdb_billmx.woodcode,
  499. u_warepdb_billmx.pcode,
  500. u_warepdb_billmx.mtrlid,
  501. u_warepdb_billmx.qty,
  502. u_warepdb_billmx.addqty,
  503. u_mtrldef.unit,
  504. u_mtrldef.mtrlmode,
  505. u_mtrldef.mtrlname,
  506. u_warepdb_billmx.Sptid,
  507. u_warepdb_billmx.Dxflag,
  508. u_warepdb_billmx.wareamt,
  509. IsNull(u_cust.Name,'') as sptname ,
  510. IsNull(u_cust.cuscode,'') as sptcode ,
  511. u_mtrldef.mtrlsectype,
  512. u_mtrldef.zxmtrlmode,
  513. u_warepdb_billmx.billid,
  514. u_warepdb_billmx.printid,
  515. u_mtrldef.scllflag,
  516. u_mtrlware.waredscrp,
  517. u_mtrlware.inworkdate,
  518. u_warepdb_billmx.factqty - u_warepdb_billmx.qty ,
  519. u_warepdb_billmx.factaddqty - u_warepdb_billmx.addqty
  520. FROM u_warepdb_billmx INNER JOIN
  521. u_mtrldef ON u_warepdb_billmx.mtrlid = u_mtrldef.mtrlid left OUTER join
  522. u_cust ON u_warepdb_billmx.Sptid = u_cust.cusid INNER JOIN
  523. u_mtrlware on u_mtrlware.mtrlwareid = u_warepdb_billmx.mtrlwareid
  524. WHERE ( u_mtrldef.mtrlid = u_warepdb_billmx.mtrlid ) AND
  525. ( u_warepdb_billmx.billid = :arg_billid);
  526. OPEN cur_d_i_mx;
  527. FETCH cur_d_i_mx INTO :d_i[i].mtrlcode,
  528. :d_i[i].factqty,
  529. :d_i[i].factaddqty,
  530. :d_i[i].mxdscrp,
  531. :d_i[i].mtrlwareid,
  532. :d_i[i].status,
  533. :d_i[i].plancode,
  534. :d_i[i].woodcode,
  535. :d_i[i].pcode,
  536. :d_i[i].mtrlid,
  537. :d_i[i].qty,
  538. :d_i[i].addqty,
  539. :d_i[i].unit,
  540. :d_i[i].mtrlmode,
  541. :d_i[i].mtrlname,
  542. :d_i[i].Sptid,
  543. :d_i[i].Dxflag,
  544. :d_i[i].wareamt,
  545. :d_i[i].sptname ,
  546. :d_i[i].sptcode ,
  547. :d_i[i].mtrlsectype,
  548. :d_i[i].zxmtrlmode,
  549. :d_i[i].billid,
  550. :d_i[i].printid,
  551. :d_i[i].scllflag,
  552. :d_i[i].waredscrp,
  553. :d_i[i].inworkdate,
  554. :d_i[i].pypkqty,
  555. :d_i[i].pypkaddqty;
  556. DO WHILE sqlca.SQLCode = 0
  557. i++
  558. FETCH cur_d_i_mx INTO :d_i[i].mtrlcode,
  559. :d_i[i].factqty,
  560. :d_i[i].factaddqty,
  561. :d_i[i].mxdscrp,
  562. :d_i[i].mtrlwareid,
  563. :d_i[i].status,
  564. :d_i[i].plancode,
  565. :d_i[i].woodcode,
  566. :d_i[i].pcode,
  567. :d_i[i].mtrlid,
  568. :d_i[i].qty,
  569. :d_i[i].addqty,
  570. :d_i[i].unit,
  571. :d_i[i].mtrlmode,
  572. :d_i[i].mtrlname,
  573. :d_i[i].Sptid,
  574. :d_i[i].Dxflag,
  575. :d_i[i].wareamt,
  576. :d_i[i].sptname ,
  577. :d_i[i].sptcode ,
  578. :d_i[i].mtrlsectype,
  579. :d_i[i].zxmtrlmode,
  580. :d_i[i].billid,
  581. :d_i[i].printid,
  582. :d_i[i].scllflag,
  583. :d_i[i].waredscrp,
  584. :d_i[i].inworkdate,
  585. :d_i[i].pypkqty,
  586. :d_i[i].pypkaddqty;
  587. LOOP
  588. CLOSE cur_d_i_mx;
  589. //检验明细是否读入完整
  590. SELECT count(*) INTO :no_mxcheck
  591. FROM u_warepdb_billmx INNER JOIN
  592. u_mtrldef ON u_warepdb_billmx.mtrlid = u_mtrldef.mtrlid left OUTER join
  593. u_cust ON u_warepdb_billmx.Sptid = u_cust.cusid
  594. WHERE ( u_mtrldef.mtrlid = u_warepdb_billmx.mtrlid ) AND
  595. ( u_warepdb_billmx.billid = :arg_billid);
  596. IF sqlca.SQLCode <> 0 THEN
  597. rslt = 0
  598. arg_msg = "查询操作失败,单据明细数量"
  599. GOTO ext
  600. END IF
  601. IF i <> (no_mxcheck+1) THEN
  602. rslt = 0
  603. arg_msg = "查询操作失败,单据明细"
  604. GOTO ext
  605. END IF
  606. billid = arg_billid
  607. it_mxbt = i - 1
  608. it_newbegin = FALSE
  609. it_updatebegin = FALSE
  610. ext:
  611. IF rslt = 0 THEN p_reset()
  612. RETURN rslt
  613. end function
  614. public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
  615. Int rslt = 1
  616. IF billid = 0 THEN
  617. rslt = 0
  618. arg_msg = "没有审核对象"
  619. GOTO ext
  620. END IF
  621. IF it_newbegin Or it_updatebegin THEN
  622. rslt = 0
  623. arg_msg = "编辑状态下不可以执行审核"
  624. GOTO ext
  625. END IF
  626. IF flag = 1 THEN
  627. rslt = 0
  628. arg_msg = "单据已经审核"
  629. GOTO ext
  630. END IF
  631. UPDATE u_warepdb_bill
  632. SET Permit_emp = :arg_auditingrep,
  633. Permit_date = getdate(),
  634. flag = 1
  635. Where u_warepdb_bill.billid = :billid And flag = 0;
  636. IF commit_transaction.SQLCode <> 0 THEN
  637. rslt = 0
  638. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  639. GOTO ext
  640. ELSEIF commit_transaction.SQLNRows = 0 THEN
  641. rslt = 0
  642. arg_msg = "仓库盘点单正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  643. GOTO ext
  644. END IF
  645. IF uof_create_pypk(arg_msg) = 0 THEN
  646. rslt = 0
  647. GOTO ext
  648. END IF
  649. flag = 1
  650. ext:
  651. IF rslt = 0 THEN
  652. ROLLBACK Using commit_transaction;
  653. ELSE
  654. COMMIT Using commit_transaction;
  655. END IF
  656. RETURN rslt
  657. end function
  658. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
  659. Int rslt = 1
  660. datetime null_dt
  661. setnull(null_dt)
  662. IF billid = 0 THEN
  663. rslt = 0
  664. arg_msg = "没有审核对象"
  665. GOTO ext
  666. END IF
  667. IF it_newbegin OR it_updatebegin THEN
  668. rslt = 0
  669. arg_msg = "编辑状态下不可以执行审核"
  670. GOTO ext
  671. END IF
  672. IF flag = 0 THEN
  673. rslt = 0
  674. arg_msg = "单据未审核"
  675. GOTO ext
  676. END IF
  677. UPDATE u_warepdb_bill
  678. SET Permit_emp = '',
  679. Permit_date = :null_dt,
  680. flag = 0
  681. Where u_warepdb_bill.billid = :billid AND flag = 1;
  682. IF sqlca.SQLCode <> 0 THEN
  683. rslt = 0
  684. arg_msg = "因网络或其它原因导致撤审单据操作失败"+"~n"+sqlca.SQLErrText
  685. GOTO ext
  686. ELSEIF sqlca.SQLNRows = 0 THEN
  687. rslt = 0
  688. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  689. GOTO ext
  690. END IF
  691. IF uof_destroy_pypk(arg_msg) = 0 THEN
  692. rslt = 0
  693. GOTO ext
  694. END IF
  695. flag = 1
  696. ext:
  697. IF rslt = 0 THEN
  698. ROLLBACK;
  699. ELSEIF arg_ifcommit AND rslt = 1 THEN
  700. COMMIT;
  701. END IF
  702. RETURN rslt
  703. end function
  704. public function integer newbegin (ref string arg_msg);Int rslt = 1
  705. p_reset()
  706. it_newbegin = TRUE
  707. it_updatebegin = FALSE
  708. IF rslt = 0 THEN p_reset()
  709. RETURN rslt
  710. end function
  711. public function integer pypk (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
  712. Int rslt = 1
  713. IF billid = 0 THEN
  714. rslt = 0
  715. arg_msg = "没有审核对象"
  716. GOTO ext
  717. END IF
  718. IF it_newbegin OR it_updatebegin THEN
  719. rslt = 0
  720. arg_msg = "编辑状态下不可以执行审核"
  721. GOTO ext
  722. END IF
  723. IF flag = 1 THEN
  724. rslt = 0
  725. arg_msg = "单据已审核,不能盘盈盘亏!"
  726. GOTO ext
  727. END IF
  728. IF ifpypk = 1 THEN
  729. rslt = 0
  730. arg_msg = "单据已盘盈盘亏,不能再盘盈盘亏!"
  731. GOTO ext
  732. END IF
  733. Long ls_storageid,ls_warepdbid,ls_mtrlid
  734. Decimal ld_cost,ld_cost_mtrlware
  735. String ls_status,ls_plancode,ls_mtrlcode,ls_unit
  736. Long ll_scid,ls_dxflag
  737. Long ls_mtrlwareid,ls_sptid
  738. String ls_woodcode,ls_pcode
  739. Decimal ls_planprice,ls_qty
  740. String ins_pdbdate
  741. ins_pdbdate = String(Date(billdate),'yyyymmdd')
  742. cnt = 0
  743. SELECT count(*)
  744. INTO :cnt
  745. FROM u_warepdb_bill
  746. Where storageid = :storageid And (CONVERT(Char(8), billdate, 112) = :ins_pdbdate) AND flag = 0 USING commit_transaction ;
  747. IF commit_transaction.SQLCode = -1 THEN
  748. arg_msg = '盘点单查询操作失败,在盘点日:'+String(billdate,"yyyy-mm-dd")+',仓库:'+String(storageid)+'的数据资料!'
  749. rslt = 0
  750. GOTO ext
  751. ELSE
  752. IF cnt <= 0 THEN
  753. arg_msg = '盘点单,盘点日:'+String(billdate,"yyyy-mm-dd")+',仓库:'+String(storageid)+'的盘点数据已经审核!'
  754. rslt = 0
  755. GOTO ext
  756. END IF
  757. END IF
  758. cnt = 0
  759. SELECT count(*)
  760. INTO :cnt
  761. FROM u_warepdb
  762. Where u_warepdb.storageid = :storageid AND u_warepdb.pdbdate = :ins_pdbdate AND flag = 1 USING commit_transaction;
  763. IF commit_transaction.SQLCode = -1 THEN
  764. arg_msg = '盘点表查询操作失败,在盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的数据资料!'
  765. rslt = 0
  766. GOTO ext
  767. ELSE
  768. IF cnt > 0 THEN
  769. arg_msg = '盘点表,盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的盘点数据已经审核!'
  770. rslt = 0
  771. GOTO ext
  772. END IF
  773. END IF
  774. SELECT scid INTO :ll_scid
  775. FROM u_storage
  776. Where storageid = :storageid;
  777. IF commit_transaction.SQLCode <> 0 THEN
  778. arg_msg = '查询仓库所属分部失败'
  779. rslt = 0
  780. GOTO ext
  781. END IF
  782. uo_inware uo_ware_py
  783. uo_ware_py = CREATE uo_inware
  784. uo_outware uo_ware_pk
  785. uo_ware_pk = CREATE uo_outware
  786. IF uo_ware_py.newbegin(ll_scid,9,arg_msg) = 0 THEN
  787. arg_msg = 'error!/盘盈单'+arg_msg
  788. rslt = 0
  789. GOTO ext
  790. END IF
  791. IF uo_ware_pk.newbegin(ll_scid,9,arg_msg) = 0 THEN
  792. arg_msg = 'error!/盘亏单'+arg_msg
  793. rslt = 0
  794. GOTO ext
  795. END IF
  796. uo_ware_py.indate = billdate
  797. uo_ware_py.inrep = publ_operator
  798. uo_ware_py.part = ''
  799. uo_ware_py.dscrp = '由盘点单' + billcode + '生成的'+ins_pdbdate+'的盘盈单'
  800. uo_ware_py.storageid = storageid
  801. uo_ware_py.commit_transaction = commit_transaction
  802. uo_ware_py.if_getid_ture = FALSE
  803. uo_ware_pk.outdate = billdate
  804. uo_ware_pk.outrep = publ_operator
  805. uo_ware_pk.part = ''
  806. uo_ware_pk.dscrp = '由盘点单' + billcode + '生成的'+ins_pdbdate+'的盘亏单'
  807. uo_ware_pk.storageid = storageid
  808. uo_ware_pk.commit_transaction = commit_transaction
  809. uo_ware_pk.if_getid_ture = FALSE
  810. Open(w_sys_wait_jdt) //初始化进度条
  811. w_sys_wait_jdt.Show()
  812. w_sys_wait_jdt.wf_accepttol(it_mxbt) //初始化进度条1
  813. FOR i = 1 TO it_mxbt
  814. ls_mtrlcode = d_i[i].mtrlcode
  815. ls_unit = d_i[i].unit
  816. w_sys_wait_jdt.st_msg.Text = "处理:"+ls_mtrlcode //进度信息
  817. IF d_i[i].mtrlid <= 0 THEN CONTINUE
  818. // IF d_i[i].factqty = 0 AND d_i[i].factaddqty = 0 THEN CONTINUE
  819. IF d_i[i].scllflag = 1 THEN CONTINUE
  820. ls_mtrlwareid = d_i[i].mtrlwareid
  821. ls_mtrlid = d_i[i].mtrlid
  822. ls_sptid = d_i[i].sptid
  823. ls_plancode = d_i[i].plancode
  824. ls_dxflag = d_i[i].dxflag
  825. ls_status = d_i[i].status
  826. ls_woodcode = d_i[i].woodcode
  827. ls_pcode = d_i[i].pcode
  828. ls_qty = d_i[i].qty
  829. SELECT cost INTO :ld_cost_mtrlware
  830. FROM u_mtrlware
  831. WHERE mtrlwareid = :ls_mtrlwareid
  832. AND scid = :ll_scid;
  833. IF commit_transaction.SQLCode <> 0 THEN
  834. arg_msg = '物料:'+ls_mtrlcode+',查询库存成本价失败'+commit_transaction.SQLErrText
  835. rslt = 0
  836. GOTO ext
  837. END IF
  838. SELECT planprice INTO :ls_planprice
  839. FROM u_mtrldef
  840. Where mtrlid = :ls_mtrlid;
  841. IF commit_transaction.SQLCode <> 0 THEN
  842. arg_msg = '物料:'+ls_mtrlcode+',查询计划价失败'+commit_transaction.SQLErrText
  843. rslt = 0
  844. GOTO ext
  845. END IF
  846. Int ll_mtrlprp
  847. ll_mtrlprp = f_get_storage_mtrlprp(storageid)
  848. IF ll_mtrlprp = 0 OR ll_mtrlprp = 1 OR ll_mtrlprp = 2 THEN
  849. IF ld_cost_mtrlware = 0 THEN
  850. ld_cost = ls_planprice
  851. ELSE
  852. ld_cost = ld_cost_mtrlware
  853. END IF
  854. ELSE
  855. ld_cost = 0
  856. END IF
  857. d_i[i].pypkqty = d_i[i].factqty - d_i[i].qty
  858. d_i[i].pypkaddqty = d_i[i].factaddqty - d_i[i].addqty
  859. IF d_i[i].pypkqty > 0 OR d_i[i].pypkaddqty > 0 THEN
  860. IF uo_ware_py.acceptmx(i,&
  861. d_i[i].mtrlid ,&
  862. d_i[i].mtrlcode ,&
  863. ls_plancode,&
  864. ls_status,&
  865. d_i[i].pypkqty ,&
  866. d_i[i].pypkaddqty ,&
  867. ld_cost,&
  868. 1,&
  869. '',&
  870. arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',d_i[i].waredscrp,&
  871. d_i[i].inworkdate,0) = 0 THEN
  872. arg_msg = 'error!/盘盈单'+arg_msg
  873. rslt = 0
  874. GOTO ext
  875. END IF
  876. ELSEIF d_i[i].pypkqty < 0 OR d_i[i].pypkaddqty < 0 THEN
  877. IF uo_ware_pk.acceptmx(ls_mtrlwareid,&
  878. Abs(d_i[i].pypkqty),&
  879. Abs(d_i[i].pypkaddqty),&
  880. ld_cost,&
  881. 1,&
  882. '',&
  883. i,&
  884. arg_msg,0,0,0,0,0,0,0,&
  885. d_i[i].unit,1,'','') = 0 THEN
  886. arg_msg = 'error!/盘亏单'+arg_msg
  887. rslt = 0
  888. GOTO ext
  889. END IF
  890. END IF
  891. w_sys_wait_jdt.wf_inc(i) //进度
  892. NEXT
  893. IF uo_ware_py.it_mxbt > 0 THEN
  894. IF uo_ware_py.Save(FALSE,arg_msg) = 0 THEN
  895. arg_msg = 'error!/盘盈单'+arg_msg
  896. rslt = 0
  897. GOTO ext
  898. END IF
  899. IF uo_ware_py.getinfo(ll_scid,uo_ware_py.inwareid,arg_msg) = 0 THEN
  900. arg_msg = 'error!/盘盈单'+arg_msg
  901. rslt = 0
  902. GOTO ext
  903. END IF
  904. IF uo_ware_py.auditing(FALSE,arg_msg) = 0 THEN
  905. arg_msg = 'error!/盘盈单'+arg_msg
  906. rslt = 0
  907. GOTO ext
  908. END IF
  909. END IF
  910. IF uo_ware_pk.it_mxbt > 0 THEN
  911. IF uo_ware_pk.Save(FALSE,arg_msg) = 0 THEN
  912. arg_msg = 'error!/盘亏单'+arg_msg
  913. rslt = 0
  914. GOTO ext
  915. END IF
  916. IF uo_ware_pk.getinfo(ll_scid,uo_ware_pk.outwareid,arg_msg) = 0 THEN
  917. arg_msg = 'error!/盘亏单'+arg_msg
  918. rslt = 0
  919. GOTO ext
  920. END IF
  921. IF uo_ware_pk.auditing(FALSE,arg_msg) = 0 THEN
  922. arg_msg = 'error!/盘亏单'+arg_msg
  923. rslt = 0
  924. GOTO ext
  925. END IF
  926. END IF
  927. UPDATE u_warepdb_bill
  928. SET ifpypk = 1
  929. Where u_warepdb_bill.billid = :billid AND flag = 0;
  930. IF commit_transaction.SQLCode <> 0 THEN
  931. rslt = 0
  932. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+commit_transaction.SQLErrText
  933. GOTO ext
  934. ELSEIF commit_transaction.SQLNRows = 0 THEN
  935. rslt = 0
  936. arg_msg = "仓库盘点单正在更新单据,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  937. GOTO ext
  938. END IF
  939. ifpypk = 1
  940. ext:
  941. IF rslt = 0 THEN
  942. ROLLBACK USING commit_transaction;
  943. ELSE
  944. arg_msg = '生成盘盈单/盘亏单成功!'
  945. COMMIT USING commit_transaction;
  946. END IF
  947. Close(w_sys_wait_jdt)
  948. DESTROY uo_ware_py
  949. DESTROY uo_ware_pk
  950. RETURN rslt
  951. end function
  952. public function integer uof_create_pypk (ref string arg_msg);Int rslt = 1
  953. Long i,ls_storageid,ls_warepdbid,ls_mtrlid
  954. Long cnt = 0
  955. Decimal ld_cost,ld_cost_mtrlware
  956. String ls_status,ls_plancode,ls_mtrlcode,ls_unit
  957. Long ll_scid,ls_dxflag, ll_wrkgrpid
  958. Long ls_mtrlwareid,ls_sptid
  959. String ls_woodcode,ls_pcode
  960. Decimal ls_planprice,ls_qty
  961. Int li_mtrlprp, li_ifbalc
  962. String ld_waredscrp
  963. DateTime ld_inworkdate
  964. DateTime ldt_balcdate
  965. String ins_pdbdate
  966. ins_pdbdate = String(Date(billdate),'yyyymmdd')
  967. ldt_balcdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(23:59:59))
  968. IF storageid <= 0 THEN
  969. arg_msg = '请选择要盘点的仓库'
  970. rslt = 0
  971. GOTO ext
  972. END IF
  973. IF ins_pdbdate = '' THEN
  974. arg_msg = '请选择盘点日'
  975. rslt = 0
  976. GOTO ext
  977. END IF
  978. SELECT scid, mtrlprp, ifbalc
  979. INTO :ll_scid, :li_mtrlprp, :li_ifbalc
  980. FROM u_storage
  981. Where storageid = :storageid;
  982. IF sqlca.SQLCode <> 0 THEN
  983. arg_msg = '查询仓库所属分部失败'
  984. rslt = 0
  985. GOTO ext
  986. END IF
  987. //IF li_ifbalc = 0 THEN
  988. // IF MessageBox ("询问","是否确定要审核当前盘点?",question!,yesno! ) = 2 THEN RETURN
  989. //ELSE
  990. // IF MessageBox ("询问","是否确定要审核当前盘点并且按盘点日期自动结存当前仓库?",question!,yesno! ) = 2 THEN RETURN
  991. //END IF
  992. uo_inware uo_ware_py
  993. uo_ware_py = Create uo_inware
  994. uo_ware_py.commit_transaction = sqlca
  995. uo_ware_py.if_getid_ture = False
  996. uo_ware_py.sysautobuild = True
  997. uo_outware uo_ware_pk
  998. uo_ware_pk = Create uo_outware
  999. uo_ware_pk.commit_transaction = sqlca
  1000. uo_ware_pk.if_getid_ture = False
  1001. uo_ware_pk.sysautobuild = True
  1002. uo_outware_scll uo_ware_scll
  1003. uo_ware_scll = Create uo_outware_scll
  1004. uo_ware_scll.commit_transaction = sqlca
  1005. uo_ware_scll.if_getid_ture = False
  1006. uo_ware_scll.sysautobuild = True
  1007. //cnt = 0
  1008. //SELECT count(*)
  1009. // INTO :cnt
  1010. // FROM u_warepdb_bill
  1011. // WHERE storageid = :storageid
  1012. // AND (CONVERT(Char(8), billdate, 112) = :ins_pdbdate)
  1013. // AND flag = 1
  1014. // Using sqlca ;
  1015. //IF sqlca.SQLCode < 0 THEN
  1016. // arg_msg = '盘点单查询操作失败,在盘点日:'+ins_pdbdate+',仓库:'+String(storageid)+'的数据资料!'
  1017. // rslt = 0
  1018. // GOTO ext
  1019. //ELSE
  1020. // IF cnt > 0 THEN
  1021. // arg_msg = '盘点单,盘点日:'+ins_pdbdate+',仓库:'+String(storageid)+'的盘点数据已经审核!'
  1022. // rslt = 0
  1023. // GOTO ext
  1024. // END IF
  1025. //END IF
  1026. //
  1027. //cnt = 0
  1028. //SELECT count(*)
  1029. // INTO :cnt
  1030. // FROM u_warepdb
  1031. // WHERE u_warepdb.storageid = :storageid
  1032. // AND u_warepdb.pdbdate = :ins_pdbdate
  1033. // AND flag = 0
  1034. // Using sqlca;
  1035. //IF sqlca.SQLCode < 0 THEN
  1036. // arg_msg = '盘点表查询操作失败,在盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的数据资料!'
  1037. // rslt = 0
  1038. // GOTO ext
  1039. //END IF
  1040. //
  1041. //IF cnt <= 0 THEN
  1042. // arg_msg = '盘点表,盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的盘点数据已经审核!'
  1043. // rslt = 0
  1044. // GOTO ext
  1045. //END IF
  1046. ////pypkqty < 0 Or d_i[i].pypkaddqty < 0
  1047. boolean lb_findwrk = false
  1048. FOR i = 1 To it_mxbt
  1049. if d_i[i].scllflag = 1 then
  1050. lb_findwrk = true
  1051. exit
  1052. end if
  1053. next
  1054. IF lb_findwrk THEN
  1055. SELECT top 1 wrkgrpid INTO :ll_wrkgrpid
  1056. From u_sc_workgroup;
  1057. IF sqlca.SQLCode <> 0 THEN
  1058. arg_msg = '盘点日:'+'查询领料工作中心失败'
  1059. rslt = 0
  1060. GOTO ext
  1061. END IF
  1062. END IF
  1063. IF uo_ware_py.newbegin(ll_scid,9,arg_msg) = 0 THEN
  1064. arg_msg = 'error!/盘盈单'+arg_msg
  1065. rslt = 0
  1066. GOTO ext
  1067. END IF
  1068. IF uo_ware_pk.newbegin(ll_scid,9,arg_msg) = 0 THEN
  1069. arg_msg = 'error!/盘亏单'+arg_msg
  1070. rslt = 0
  1071. GOTO ext
  1072. END IF
  1073. IF uo_ware_scll.newbegin(ll_scid,3,arg_msg) = 0 THEN
  1074. arg_msg = 'error!/生产领料单'+arg_msg
  1075. rslt = 0
  1076. GOTO ext
  1077. END IF
  1078. //以下3个dscrp均用作删除的主键信息,要修改时必须同步修改ue_audit_c()
  1079. uo_ware_py.indate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0))
  1080. uo_ware_py.inrep = publ_operator
  1081. uo_ware_py.part = billcode
  1082. uo_ware_py.dscrp = '盘点单审核自动生成盘盈单'
  1083. uo_ware_py.storageid = storageid
  1084. uo_ware_pk.outdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0))
  1085. uo_ware_pk.outrep = publ_operator
  1086. uo_ware_pk.part = billcode
  1087. uo_ware_pk.dscrp = '盘点单审核自动生成盘亏单'
  1088. uo_ware_pk.storageid = storageid
  1089. uo_ware_scll.outdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0))
  1090. uo_ware_scll.outrep = publ_operator
  1091. uo_ware_scll.part = billcode
  1092. uo_ware_scll.dscrp = '盘点单审核盘亏自动生成生产领料单'
  1093. uo_ware_scll.storageid = storageid
  1094. uo_ware_scll.relid = ll_wrkgrpid
  1095. FOR i = 1 To it_mxbt
  1096. ls_mtrlcode = d_i[i].mtrlcode
  1097. ls_unit = d_i[i].unit
  1098. IF d_i[i].mtrlid <= 0 THEN CONTINUE
  1099. IF d_i[i].pypkqty = 0 And d_i[i].pypkaddqty = 0 THEN CONTINUE
  1100. //IF d_i[i].scllflag = 1 And d_i[i].pypkqty < 0 THEN CONTINUE //只有盘亏的领料才不考虑
  1101. ls_mtrlwareid = d_i[i].mtrlwareid
  1102. ls_mtrlid = d_i[i].mtrlid
  1103. ls_sptid = d_i[i].sptid
  1104. ls_plancode = d_i[i].plancode
  1105. ls_dxflag = d_i[i].dxflag
  1106. ls_status = d_i[i].status
  1107. ls_woodcode = d_i[i].woodcode
  1108. ls_pcode = d_i[i].pcode
  1109. ls_qty = d_i[i].qty
  1110. SELECT cost ,
  1111. waredscrp,
  1112. inworkdate
  1113. INTO :ld_cost_mtrlware,
  1114. :ld_waredscrp,
  1115. :ld_inworkdate
  1116. FROM u_mtrlware
  1117. WHERE scid = :ll_scid
  1118. And mtrlwareid = :ls_mtrlwareid;
  1119. IF sqlca.SQLCode <> 0 THEN
  1120. arg_msg = '物料:'+ls_mtrlcode+',查询库存成本价失败'+sqlca.SQLErrText
  1121. rslt = 0
  1122. GOTO ext
  1123. END IF
  1124. SELECT planprice INTO :ls_planprice
  1125. FROM u_mtrldef
  1126. Where mtrlid = :ls_mtrlid;
  1127. IF sqlca.SQLCode <> 0 THEN
  1128. arg_msg = '物料:'+ls_mtrlcode+',查询计划价失败'+sqlca.SQLErrText
  1129. rslt = 0
  1130. GOTO ext
  1131. END IF
  1132. IF li_mtrlprp = 0 Or li_mtrlprp = 1 Or li_mtrlprp = 2 THEN
  1133. IF ld_cost_mtrlware = 0 THEN
  1134. ld_cost = ls_planprice
  1135. ELSE
  1136. ld_cost = ld_cost_mtrlware
  1137. END IF
  1138. ELSE
  1139. ld_cost = 0
  1140. END IF
  1141. IF d_i[i].pypkqty > 0 Or d_i[i].pypkaddqty > 0 THEN
  1142. // IF uo_ware_py.acceptmx(i,&
  1143. // d_i[i].mtrlid,&
  1144. // d_i[i].mtrlcode,&
  1145. // ls_plancode,&
  1146. // ls_status,&
  1147. // d_i[i].pypkqty,&
  1148. // d_i[i].pypkaddqty,&
  1149. // ld_cost,&
  1150. // 1,&
  1151. // '',&
  1152. // arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',ld_waredscrp,ld_inworkdate) = 0 THEN
  1153. IF uo_ware_py.acceptmx(i,&
  1154. d_i[i].mtrlid,&
  1155. d_i[i].mtrlcode,&
  1156. ls_plancode,&
  1157. ls_status,&
  1158. d_i[i].pypkqty,&
  1159. d_i[i].pypkaddqty,&
  1160. ld_cost,&
  1161. 1,&
  1162. '',&
  1163. arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',d_i[i].waredscrp,ld_inworkdate,0) = 0 THEN
  1164. arg_msg = "行["+String(i)+"],盘盈单,接受明细,"+arg_msg
  1165. rslt = 0
  1166. GOTO ext
  1167. END IF
  1168. ELSEIF d_i[i].scllflag = 0 And ( d_i[i].pypkqty < 0 Or d_i[i].pypkaddqty < 0 ) THEN
  1169. IF uo_ware_pk.acceptmx(ls_mtrlwareid,&
  1170. Abs(d_i[i].pypkqty),&
  1171. Abs(d_i[i].pypkaddqty),&
  1172. ld_cost_mtrlware,&
  1173. 1,&
  1174. '',&
  1175. i,&
  1176. arg_msg,0,0,0,0,0,0,0,&
  1177. d_i[i].unit,1,'','') = 0 THEN
  1178. arg_msg = "行["+String(i)+"],盘亏单,接受明细,"+arg_msg
  1179. rslt = 0
  1180. GOTO ext
  1181. END IF
  1182. ELSEIF d_i[i].scllflag = 1 And ( d_i[i].pypkqty < 0 Or d_i[i].pypkaddqty < 0 ) THEN
  1183. IF uo_ware_scll.acceptmx(ls_mtrlwareid,&
  1184. Abs(d_i[i].pypkqty),&
  1185. Abs(d_i[i].pypkaddqty),&
  1186. ld_cost_mtrlware,&
  1187. 1,&
  1188. '',&
  1189. i,&
  1190. arg_msg,0,0,0,0,0,0,0,&
  1191. d_i[i].unit,1,'','') = 0 THEN
  1192. arg_msg = "行["+String(i)+"],生产领料单,接受明细,"+arg_msg
  1193. rslt = 0
  1194. GOTO ext
  1195. END IF
  1196. END IF
  1197. NEXT
  1198. //自动生成盘盈单
  1199. IF uo_ware_py.it_mxbt > 0 THEN
  1200. IF uo_ware_py.Save(False,arg_msg) = 0 THEN
  1201. arg_msg = 'error!/盘盈单'+arg_msg
  1202. rslt = 0
  1203. GOTO ext
  1204. END IF
  1205. IF uo_ware_py.getinfo(ll_scid,uo_ware_py.inwareid,arg_msg) = 0 THEN
  1206. arg_msg = 'error!/盘盈单'+arg_msg
  1207. rslt = 0
  1208. GOTO ext
  1209. END IF
  1210. IF uo_ware_py.auditing(False,arg_msg) = 0 THEN
  1211. arg_msg = 'error!/盘盈单'+arg_msg
  1212. rslt = 0
  1213. GOTO ext
  1214. END IF
  1215. END IF
  1216. //自动生成盘亏单
  1217. IF uo_ware_pk.it_mxbt > 0 THEN
  1218. IF uo_ware_pk.Save(False,arg_msg) = 0 THEN
  1219. arg_msg = 'error!/盘亏单'+arg_msg
  1220. rslt = 0
  1221. GOTO ext
  1222. END IF
  1223. IF uo_ware_pk.getinfo(ll_scid,uo_ware_pk.outwareid,arg_msg) = 0 THEN
  1224. arg_msg = 'error!/盘亏单'+arg_msg
  1225. rslt = 0
  1226. GOTO ext
  1227. END IF
  1228. IF uo_ware_pk.auditing(False,arg_msg) = 0 THEN
  1229. arg_msg = 'error!/盘亏单'+arg_msg
  1230. rslt = 0
  1231. GOTO ext
  1232. END IF
  1233. END IF
  1234. //自动生成领料单
  1235. IF uo_ware_scll.it_mxbt > 0 THEN
  1236. IF uo_ware_scll.Save(False,arg_msg) = 0 THEN
  1237. arg_msg = '保存生产领料单,'+arg_msg
  1238. rslt = 0
  1239. GOTO ext
  1240. END IF
  1241. IF uo_ware_scll.getinfo(ll_scid,uo_ware_scll.outwareid,arg_msg) = 0 THEN
  1242. rslt = 0
  1243. GOTO ext
  1244. END IF
  1245. IF uo_ware_scll.auditing(False,arg_msg) = 0 THEN
  1246. rslt = 0
  1247. GOTO ext
  1248. END IF
  1249. END IF
  1250. //更新库存摘要 20180831
  1251. string ls_waredscrp
  1252. for i = 1 to it_mxbt
  1253. ls_waredscrp = d_i[i].waredscrp
  1254. ls_mtrlwareid = d_i[i].mtrlwareid
  1255. UPDATE u_mtrlware
  1256. SET u_mtrlware.waredscrp = :ls_waredscrp
  1257. WHERE ( scid = :ll_scid ) AND
  1258. ( mtrlwareid = :ls_mtrlwareid ) ;
  1259. IF sqlca.SQLCode <> 0 THEN
  1260. rslt = 0
  1261. arg_msg = "因网络或其它原因导致更新库存摘要操作失败"+"~n"+sqlca.SQLErrText
  1262. GOTO ext
  1263. END IF
  1264. next
  1265. ext:
  1266. IF rslt = 0 THEN
  1267. ROLLBACK;
  1268. END IF
  1269. Destroy uo_ware_py
  1270. Destroy uo_ware_pk
  1271. Destroy uo_ware_scll
  1272. RETURN rslt
  1273. end function
  1274. public function integer uof_destroy_pypk (ref string arg_msg);
  1275. Int rslt = 1
  1276. uo_inware uo_ware_py
  1277. uo_ware_py = CREATE uo_inware
  1278. uo_ware_py.commit_transaction = sqlca
  1279. uo_ware_py.if_getid_ture = FALSE
  1280. uo_ware_py.sysautobuild = true
  1281. uo_outware uo_ware_pk
  1282. uo_ware_pk = CREATE uo_outware
  1283. uo_ware_pk.commit_transaction = sqlca
  1284. uo_ware_pk.if_getid_ture = FALSE
  1285. uo_ware_pk.sysautobuild = true
  1286. uo_outware_scll uo_ware_scll
  1287. uo_ware_scll = CREATE uo_outware_scll
  1288. uo_ware_scll.commit_transaction = sqlca
  1289. uo_ware_scll.if_getid_ture = FALSE
  1290. uo_ware_scll.sysautobuild = true
  1291. Long cnt
  1292. Long ll_scid, ll_inwareid, ll_outwareid
  1293. String ls_inwarecode, ls_outwarecode
  1294. String ls_part, ls_dscrp
  1295. String ins_pdbdate
  1296. ins_pdbdate = String(Date(billdate),'yyyymmdd')
  1297. ls_part = billcode
  1298. ls_dscrp = '盘点单审核自动生成盘盈单'
  1299. //1.撤审,删除盘盈单,
  1300. SELECT count(*)
  1301. INTO :cnt
  1302. FROM u_inware
  1303. WHERE storageid = :storageid
  1304. AND (dscrp = :ls_dscrp and part = :ls_part )
  1305. AND billtype = 9;
  1306. IF sqlca.SQLCode <> 0 THEN
  1307. cnt = 0
  1308. END IF
  1309. IF cnt > 1 THEN
  1310. rslt = 0
  1311. arg_msg = "当前盘点表已生成多张盘盈单,请先手动删除"
  1312. GOTO ext
  1313. ELSEIF cnt = 1 THEN
  1314. SELECT scid, inwareid , inwarecode
  1315. INTO :ll_scid, :ll_inwareid, :ls_inwarecode
  1316. FROM u_inware
  1317. WHERE storageid = :storageid
  1318. AND (dscrp = :ls_dscrp and part = :ls_part )
  1319. AND billtype = 9;
  1320. IF sqlca.SQLCode <> 0 THEN
  1321. rslt = 0
  1322. arg_msg = "查询当前盘点表相关盘盈单失败,"+sqlca.SQLErrText
  1323. GOTO ext
  1324. END IF
  1325. IF uo_ware_py.getinfo(ll_scid,ll_inwareid,arg_msg) = 0 THEN
  1326. arg_msg = 'error!/盘盈单'+arg_msg
  1327. rslt = 0
  1328. GOTO ext
  1329. END IF
  1330. IF uo_ware_py.c_auditing(FALSE,arg_msg) = 0 THEN
  1331. arg_msg = 'error!/盘盈单'+arg_msg
  1332. rslt = 0
  1333. GOTO ext
  1334. END IF
  1335. IF uo_ware_py.del(ll_scid,ll_inwareid,arg_msg,FALSE) = 0 THEN
  1336. arg_msg = 'error!/盘盈单'+arg_msg
  1337. rslt = 0
  1338. GOTO ext
  1339. END IF
  1340. END IF
  1341. //2.撤审,删除盘亏单
  1342. ls_part = billcode
  1343. ls_dscrp = '盘点单审核自动生成盘亏单'
  1344. SELECT count(*)
  1345. INTO :cnt
  1346. FROM u_outware
  1347. WHERE storageid = :storageid
  1348. AND (dscrp = :ls_dscrp and part = :ls_part )
  1349. AND billtype = 9;
  1350. IF sqlca.SQLCode <> 0 THEN
  1351. cnt = 0
  1352. END IF
  1353. IF cnt > 1 THEN
  1354. rslt = 0
  1355. arg_msg = "当前盘点表已生成多张盘亏单,请先手动删除"
  1356. GOTO ext
  1357. ELSEIF cnt = 1 THEN
  1358. SELECT scid, outwareid , outwarecode
  1359. INTO :ll_scid, :ll_outwareid, :ls_outwarecode
  1360. FROM u_outware
  1361. WHERE storageid = :storageid
  1362. AND (dscrp = :ls_dscrp and part = :ls_part )
  1363. AND billtype = 9;
  1364. IF sqlca.SQLCode <> 0 THEN
  1365. rslt = 0
  1366. arg_msg = "查询当前盘点表相关盘亏单失败,"+sqlca.SQLErrText
  1367. GOTO ext
  1368. END IF
  1369. IF uo_ware_pk.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 THEN
  1370. arg_msg = 'error!/盘亏单'+arg_msg
  1371. rslt = 0
  1372. GOTO ext
  1373. END IF
  1374. IF uo_ware_pk.c_auditing(FALSE,arg_msg) = 0 THEN
  1375. arg_msg = 'error!/盘亏单'+arg_msg
  1376. rslt = 0
  1377. GOTO ext
  1378. END IF
  1379. IF uo_ware_pk.del(ll_scid,ll_outwareid,arg_msg,FALSE) = 0 THEN
  1380. arg_msg = 'error!/盘亏单'+arg_msg
  1381. rslt = 0
  1382. GOTO ext
  1383. END IF
  1384. END IF
  1385. //撤审删除生产领料单
  1386. ls_part = billcode
  1387. ls_dscrp = '盘点单审核盘亏自动生成生产领料单'
  1388. SELECT count(*)
  1389. INTO :cnt
  1390. FROM u_outware
  1391. WHERE storageid = :storageid
  1392. AND (dscrp = :ls_dscrp and part = :ls_part )
  1393. AND billtype = 3;
  1394. IF sqlca.SQLCode <> 0 THEN
  1395. cnt = 0
  1396. END IF
  1397. IF cnt > 1 THEN
  1398. rslt = 0
  1399. arg_msg = "当前盘点表已生成多张生产领料单,请先手动删除"
  1400. GOTO ext
  1401. ELSEIF cnt = 1 THEN
  1402. SELECT scid, outwareid , outwarecode
  1403. INTO :ll_scid, :ll_outwareid, :ls_outwarecode
  1404. FROM u_outware
  1405. WHERE storageid = :storageid
  1406. AND (dscrp = :ls_dscrp and part = :ls_part )
  1407. AND billtype = 3;
  1408. IF sqlca.SQLCode <> 0 THEN
  1409. rslt = 0
  1410. arg_msg = "查询当前盘点表相关盘亏单失败,"+sqlca.SQLErrText
  1411. GOTO ext
  1412. END IF
  1413. IF uo_ware_pk.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 THEN
  1414. arg_msg = 'error!/生产领料单'+arg_msg
  1415. rslt = 0
  1416. GOTO ext
  1417. END IF
  1418. IF uo_ware_pk.c_auditing(FALSE,arg_msg) = 0 THEN
  1419. arg_msg = 'error!/生产领料单'+arg_msg
  1420. rslt = 0
  1421. GOTO ext
  1422. END IF
  1423. IF uo_ware_pk.del(ll_scid,ll_outwareid,arg_msg,FALSE) = 0 THEN
  1424. arg_msg = 'error!/生产领料单'+arg_msg
  1425. rslt = 0
  1426. GOTO ext
  1427. END IF
  1428. END IF
  1429. ext:
  1430. IF rslt = 0 THEN
  1431. ROLLBACK;
  1432. END IF
  1433. DESTROY uo_ware_py
  1434. DESTROY uo_ware_pk
  1435. DESTROY uo_ware_scll
  1436. return rslt
  1437. end function
  1438. public function integer acceptmx (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg);
  1439. Long rslt = 1,cnt = 0,ls_i
  1440. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  1441. rslt = 0
  1442. arg_msg = "非编辑状态不可以使用,操作取消"
  1443. GOTO ext
  1444. END IF
  1445. IF IsNull(arg_factqty) THEN arg_factqty = 0
  1446. IF IsNull(arg_factaddqty) THEN arg_factaddqty = 0
  1447. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  1448. IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
  1449. IF IsNull(arg_status) THEN arg_status = ''
  1450. IF IsNull(arg_plancode) THEN arg_plancode = ''
  1451. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  1452. IF IsNull(arg_pcode) THEN arg_pcode = ''
  1453. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  1454. IF IsNull(arg_qty) THEN arg_qty = 0
  1455. IF IsNull(arg_addqty) THEN arg_addqty = 0
  1456. IF IsNull(arg_Sptid) THEN arg_Sptid = 0
  1457. IF IsNull(arg_Dxflag) THEN arg_Dxflag = 0
  1458. IF IsNull(arg_printid) THEN arg_printid = 0
  1459. IF IsNull(arg_wareamt) THEN arg_wareamt = 0
  1460. IF IsNull(arg_cost) THEN arg_cost = 0
  1461. IF IsNull(arg_packqty) THEN arg_packqty = 0
  1462. IF arg_mtrlwareid > 0 THEN
  1463. SELECT plancode,
  1464. woodcode,
  1465. status,
  1466. pcode,
  1467. dxflag,
  1468. sptid
  1469. INTO :arg_plancode,
  1470. :arg_woodcode,
  1471. :arg_status,
  1472. :arg_pcode,
  1473. :arg_dxflag,
  1474. :arg_sptid
  1475. FROM u_mtrlware Where u_mtrlware.mtrlwareid = :arg_mtrlwareid;
  1476. IF sqlca.SQLCode <> 0 THEN
  1477. rslt = 0
  1478. arg_msg = '查询物料 '+arg_mtrlcode+' 库存失败!>>'+sqlca.SQLErrText
  1479. GOTO ext
  1480. END IF
  1481. //检查成本价调整单
  1482. cnt = 0
  1483. SELECT count(*)
  1484. INTO :cnt
  1485. FROM u_updatecost,u_updatecostmx
  1486. WHERE u_updatecost.wareid = u_updatecostmx.wareid AND
  1487. u_updatecost.flag = 0 AND
  1488. u_updatecostmx.mtrlwareid = :arg_mtrlwareid AND
  1489. u_updatecost.scid = :scid USING sqlca;
  1490. IF sqlca.SQLCode <> 0 THEN
  1491. rslt = 0
  1492. arg_msg = "第" + String(arg_printid) + "行,查询成本价调整单操作失败"
  1493. GOTO ext
  1494. END IF
  1495. IF cnt > 0 THEN
  1496. rslt = 0
  1497. arg_msg = "第" + String(arg_printid) + "行,已开成本价调整单,请先审核"
  1498. GOTO ext
  1499. END IF
  1500. END IF
  1501. FOR ls_i = 1 TO it_mxbt //合并重复项
  1502. IF d_i[ls_i].mtrlwareid = arg_mtrlwareid AND &
  1503. d_i[ls_i].status = arg_status AND &
  1504. d_i[ls_i].pcode = arg_pcode AND &
  1505. d_i[ls_i].woodcode = arg_woodcode AND &
  1506. d_i[ls_i].mtrlid = arg_mtrlid THEN
  1507. d_i[ls_i].factqty = d_i[ls_i].factqty + arg_factqty
  1508. d_i[ls_i].factaddqty = d_i[ls_i].factaddqty + arg_factaddqty
  1509. d_i[ls_i].qty = d_i[ls_i].qty + arg_qty
  1510. d_i[ls_i].addqty = d_i[ls_i].addqty + arg_addqty
  1511. d_i[ls_i].wareamt = d_i[ls_i].wareamt + arg_wareamt
  1512. d_i[ls_i].packqty = d_i[ls_i].packqty + arg_packqty
  1513. rslt = 1
  1514. GOTO ext
  1515. END IF
  1516. NEXT
  1517. //写入内容
  1518. it_mxbt++
  1519. d_i[it_mxbt].factqty = arg_factqty
  1520. d_i[it_mxbt].factaddqty = arg_factaddqty
  1521. d_i[it_mxbt].mxdscrp = arg_mxdscrp
  1522. d_i[it_mxbt].mtrlwareid = arg_mtrlwareid
  1523. d_i[it_mxbt].status = arg_status
  1524. d_i[it_mxbt].plancode = arg_plancode
  1525. d_i[it_mxbt].woodcode = arg_woodcode
  1526. d_i[it_mxbt].pcode = arg_pcode
  1527. d_i[it_mxbt].mtrlid = arg_mtrlid
  1528. d_i[it_mxbt].qty = arg_qty
  1529. d_i[it_mxbt].addqty = arg_addqty
  1530. d_i[it_mxbt].sptid = arg_Sptid
  1531. d_i[it_mxbt].dxflag = arg_Dxflag
  1532. d_i[it_mxbt].printid = arg_printid
  1533. d_i[it_mxbt].wareamt = arg_wareamt
  1534. d_i[it_mxbt].cost = arg_cost
  1535. d_i[it_mxbt].packqty = arg_packqty
  1536. ext:
  1537. IF rslt = 0 THEN
  1538. p_clearmx()
  1539. arg_msg = "第" + String(arg_printid) + "行," + arg_msg
  1540. END IF
  1541. Return(rslt)
  1542. end function
  1543. public function integer acceptmx2 (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg, string arg_waredscrp);
  1544. Long rslt = 1,cnt = 0,ls_i
  1545. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  1546. rslt = 0
  1547. arg_msg = "非编辑状态不可以使用,操作取消"
  1548. GOTO ext
  1549. END IF
  1550. IF IsNull(arg_factqty) THEN arg_factqty = 0
  1551. IF IsNull(arg_factaddqty) THEN arg_factaddqty = 0
  1552. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  1553. IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
  1554. IF IsNull(arg_status) THEN arg_status = ''
  1555. IF IsNull(arg_plancode) THEN arg_plancode = ''
  1556. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  1557. IF IsNull(arg_pcode) THEN arg_pcode = ''
  1558. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  1559. IF IsNull(arg_qty) THEN arg_qty = 0
  1560. IF IsNull(arg_addqty) THEN arg_addqty = 0
  1561. IF IsNull(arg_Sptid) THEN arg_Sptid = 0
  1562. IF IsNull(arg_Dxflag) THEN arg_Dxflag = 0
  1563. IF IsNull(arg_printid) THEN arg_printid = 0
  1564. IF IsNull(arg_wareamt) THEN arg_wareamt = 0
  1565. IF IsNull(arg_cost) THEN arg_cost = 0
  1566. IF IsNull(arg_packqty) THEN arg_packqty = 0
  1567. IF arg_mtrlwareid > 0 THEN
  1568. SELECT plancode,
  1569. woodcode,
  1570. status,
  1571. pcode,
  1572. dxflag,
  1573. sptid
  1574. INTO :arg_plancode,
  1575. :arg_woodcode,
  1576. :arg_status,
  1577. :arg_pcode,
  1578. :arg_dxflag,
  1579. :arg_sptid
  1580. FROM u_mtrlware Where u_mtrlware.mtrlwareid = :arg_mtrlwareid;
  1581. IF sqlca.SQLCode <> 0 THEN
  1582. rslt = 0
  1583. arg_msg = '查询物料 '+arg_mtrlcode+' 库存失败!>>'+sqlca.SQLErrText
  1584. GOTO ext
  1585. END IF
  1586. //检查成本价调整单
  1587. cnt = 0
  1588. SELECT count(*)
  1589. INTO :cnt
  1590. FROM u_updatecost,u_updatecostmx
  1591. WHERE u_updatecost.wareid = u_updatecostmx.wareid AND
  1592. u_updatecost.flag = 0 AND
  1593. u_updatecostmx.mtrlwareid = :arg_mtrlwareid AND
  1594. u_updatecost.scid = :scid USING sqlca;
  1595. IF sqlca.SQLCode <> 0 THEN
  1596. rslt = 0
  1597. arg_msg = "第" + String(arg_printid) + "行,查询成本价调整单操作失败"
  1598. GOTO ext
  1599. END IF
  1600. IF cnt > 0 THEN
  1601. rslt = 0
  1602. arg_msg = "第" + String(arg_printid) + "行,已开成本价调整单,请先审核"
  1603. GOTO ext
  1604. END IF
  1605. END IF
  1606. FOR ls_i = 1 TO it_mxbt //合并重复项
  1607. IF d_i[ls_i].mtrlwareid = arg_mtrlwareid AND &
  1608. d_i[ls_i].status = arg_status AND &
  1609. d_i[ls_i].pcode = arg_pcode AND &
  1610. d_i[ls_i].woodcode = arg_woodcode AND &
  1611. d_i[ls_i].mtrlid = arg_mtrlid THEN
  1612. d_i[ls_i].factqty = d_i[ls_i].factqty + arg_factqty
  1613. d_i[ls_i].factaddqty = d_i[ls_i].factaddqty + arg_factaddqty
  1614. d_i[ls_i].qty = d_i[ls_i].qty + arg_qty
  1615. d_i[ls_i].addqty = d_i[ls_i].addqty + arg_addqty
  1616. d_i[ls_i].wareamt = d_i[ls_i].wareamt + arg_wareamt
  1617. d_i[ls_i].packqty = d_i[ls_i].packqty + arg_packqty
  1618. rslt = 1
  1619. GOTO ext
  1620. END IF
  1621. NEXT
  1622. //写入内容
  1623. it_mxbt++
  1624. d_i[it_mxbt].factqty = arg_factqty
  1625. d_i[it_mxbt].factaddqty = arg_factaddqty
  1626. d_i[it_mxbt].mxdscrp = arg_mxdscrp
  1627. d_i[it_mxbt].mtrlwareid = arg_mtrlwareid
  1628. d_i[it_mxbt].status = arg_status
  1629. d_i[it_mxbt].plancode = arg_plancode
  1630. d_i[it_mxbt].woodcode = arg_woodcode
  1631. d_i[it_mxbt].pcode = arg_pcode
  1632. d_i[it_mxbt].mtrlid = arg_mtrlid
  1633. d_i[it_mxbt].qty = arg_qty
  1634. d_i[it_mxbt].addqty = arg_addqty
  1635. d_i[it_mxbt].sptid = arg_Sptid
  1636. d_i[it_mxbt].dxflag = arg_Dxflag
  1637. d_i[it_mxbt].printid = arg_printid
  1638. d_i[it_mxbt].wareamt = arg_wareamt
  1639. d_i[it_mxbt].cost = arg_cost
  1640. d_i[it_mxbt].packqty = arg_packqty
  1641. d_i[it_mxbt].waredscrp = arg_waredscrp
  1642. ext:
  1643. IF rslt = 0 THEN
  1644. p_clearmx()
  1645. arg_msg = "第" + String(arg_printid) + "行," + arg_msg
  1646. END IF
  1647. Return(rslt)
  1648. end function
  1649. on uo_warepdb_bill.create
  1650. call super::create
  1651. TriggerEvent( this, "constructor" )
  1652. end on
  1653. on uo_warepdb_bill.destroy
  1654. TriggerEvent( this, "destructor" )
  1655. call super::destroy
  1656. end on