uo_dismantle_install.sru 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614
  1. $PBExportHeader$uo_dismantle_install.sru
  2. forward
  3. global type uo_dismantle_install from nonvisualobject
  4. end type
  5. type s_dismantle_install from structure within uo_dismantle_install
  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_dismantle_install from nonvisualobject
  28. end type
  29. global uo_dismantle_install uo_dismantle_install
  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 auditingdate
  39. PUBLIC PROTECTEDWRITE String auditingrep
  40. PUBLIC PROTECTEDWRITE Int billtype
  41. DateTime billdate
  42. Long relid
  43. String reason
  44. Long storageid
  45. Long mtrlid
  46. Long mtrlwareid
  47. String status
  48. String pcode
  49. String plancode
  50. String woodcode
  51. String dscrp
  52. Decimal qty
  53. Decimal addqty
  54. Int buildtype
  55. String rep
  56. Decimal price
  57. String mtrlcode
  58. int dxflag
  59. long sptid
  60. string unit
  61. //long printid
  62. //string mxdscrp
  63. //decimal standardqty
  64. Boolean sysautobuild = FALSE //自动操作标记
  65. Boolean if_getid_ture = TRUE
  66. PRIVATE:
  67. s_dismantle_install d_i[] //明细结构数组
  68. Long it_mxbt = 0 //明细结构数组末指针
  69. Boolean it_newbegin = FALSE //新建标志
  70. Boolean it_updatebegin = FALSE//修改标志
  71. end variables
  72. forward prototypes
  73. public function integer p_clearmx ()
  74. public function integer p_reset ()
  75. public function integer updatebegin (long arg_billid, ref string arg_msg)
  76. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  77. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  78. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  79. public function integer getinfo (long arg_billid, ref string arg_msg)
  80. public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg)
  81. public function integer newbegin (integer arg_billtype, ref string arg_msg)
  82. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
  83. public function integer acceptmx (long arg_printid, long arg_storageid, long arg_mtrlwareid, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, decimal arg_price, string arg_status, string arg_plancode, string arg_woodcode, string arg_mxdscrp, string arg_mtrlcode, string arg_pcode, integer arg_dxflag, integer arg_sptid, ref string arg_msg, decimal arg_standardqty)
  84. public function integer del (long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  85. end prototypes
  86. public function integer p_clearmx ();//INT p_clearmx()
  87. //清除明细
  88. it_mxbt=0
  89. RETURN 1
  90. end function
  91. public function integer p_reset ();//INT p_RESET()
  92. //清除对象及其明细
  93. billid = 0
  94. billcode = ''
  95. opemp = ''
  96. auditingrep = ''
  97. flag = 0
  98. relid = 0
  99. reason = ''
  100. storageid = 0
  101. mtrlid = 0
  102. mtrlwareid = 0
  103. status = ''
  104. plancode = ''
  105. woodcode = ''
  106. dscrp = ''
  107. qty = 0
  108. addqty=0
  109. it_newbegin = FALSE
  110. it_updatebegin = FALSE
  111. //清除明细
  112. P_CLEARMX()
  113. RETURN 1
  114. end function
  115. public function integer updatebegin (long arg_billid, ref string arg_msg);int rslt = 1
  116. if arg_billid <= 0 then
  117. billid = 0
  118. goto ext
  119. end if
  120. if p_getinfo(arg_billid,arg_msg) = 0 then
  121. rslt = 0
  122. goto ext
  123. end if
  124. if flag = 1 then
  125. rslt = 0
  126. arg_msg = '单据已经审核,不可以修改'
  127. goto ext
  128. end if
  129. if buildtype = 1 then
  130. rslt = 0
  131. arg_msg = '单据为自动建立单据,不可以修改'
  132. goto ext
  133. end if
  134. billid = arg_billid
  135. p_clearmx()
  136. it_newbegin = false
  137. it_updatebegin = true
  138. ext:
  139. if rslt = 0 then p_reset()
  140. return rslt
  141. end function
  142. public function integer save (ref string arg_msg, boolean arg_ifcommit);//====================================================================
  143. // Function: save(arg_msg,arg_ifcommit)
  144. //--------------------------------------------------------------------
  145. // Description:
  146. //--------------------------------------------------------------------
  147. // Arguments:
  148. // reference string arg_msg
  149. // value boolean arg_ifcommit
  150. //--------------------------------------------------------------------
  151. // Returns: integer
  152. //--------------------------------------------------------------------
  153. // Author: yyx Date: 2003.11.21
  154. //--------------------------------------------------------------------
  155. // Modify History:
  156. //
  157. //====================================================================
  158. Integer rslt = 1,i,cnt = 0
  159. DateTime server_dt
  160. Long ls_newid
  161. IF IsNull(reason) THEN reason = ''
  162. IF IsNull(dscrp) THEN dscrp = ''
  163. IF IsNull(plancode) THEN plancode = ''
  164. IF IsNull(relid) THEN relid = 0
  165. IF IsNull(woodcode) THEN woodcode = ''
  166. IF mtrlid = 0 THEN
  167. rslt = 0
  168. arg_msg = '非法物料!'
  169. GOTO ext
  170. END IF
  171. IF qty = 0 THEN
  172. rslt = 0
  173. arg_msg = '装或拆的物料数量不能为零!'
  174. GOTO ext
  175. END IF
  176. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  177. rslt = 0
  178. arg_msg = "非编辑状态不可以提交"
  179. GOTO ext
  180. END IF
  181. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  182. //取得系统时间,借用操作员表
  183. IF sqlca.SQLCode <> 0 THEN
  184. rslt = 0
  185. arg_msg = "查询操作失败,日期 "
  186. GOTO ext
  187. END IF
  188. IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
  189. rslt = 0
  190. arg_msg = "没有明细内容"
  191. GOTO ext
  192. END IF
  193. ////////////////////////////////////////////////开始区分:新建/更新 处理
  194. IF billid = 0 THEN //新建
  195. ls_newid = f_sys_scidentity(0,"u_dismantle_install","billid",arg_msg,if_getid_ture,sqlca)
  196. IF ls_newid <= 0 THEN
  197. rslt = 0
  198. GOTO ext
  199. END IF
  200. billcode = getid(0,"CZ",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
  201. IF billcode = "err" THEN
  202. billcode = ''
  203. rslt = 0
  204. arg_msg = "无法获取拆装单编号"
  205. GOTO ext
  206. END IF
  207. //
  208. INSERT INTO u_dismantle_install
  209. (billid,
  210. billtype,
  211. billcode,
  212. reason,
  213. billdate,
  214. relid,
  215. storageid,
  216. mtrlid,
  217. mtrlwareid,
  218. status,
  219. plancode,
  220. woodcode,
  221. qty,
  222. dscrp,
  223. buildtype,
  224. price,
  225. rep,
  226. opemp,
  227. pcode,
  228. dxflag,
  229. sptid,
  230. addqty)
  231. VALUES(
  232. :ls_newid,
  233. :billtype,
  234. :billcode,
  235. :reason,
  236. :billdate,
  237. :relid,
  238. :storageid,
  239. :mtrlid,
  240. :mtrlwareid,
  241. :status,
  242. :plancode,
  243. :woodcode,
  244. :qty,
  245. :dscrp,
  246. :buildtype,
  247. :price,
  248. :rep,
  249. :publ_operator,
  250. :pcode,
  251. :dxflag,
  252. :sptid,
  253. :addqty);
  254. IF sqlca.SQLCode <> 0 THEN
  255. rslt = 0
  256. IF Pos(Lower(sqlca.SQLErrText),'PK_u_dismantle_install') > 0 THEN
  257. arg_msg = '插入操作失败,关键字单据ID重复'
  258. ELSEIF Pos(Lower(sqlca.SQLErrText),'IX_u_dismantle_install') > 0 THEN
  259. arg_msg = '插入操作失败,单据编号重复'
  260. ELSE
  261. arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+sqlca.SQLErrText
  262. END IF
  263. GOTO ext
  264. END IF
  265. billid = ls_newid
  266. FOR i = 1 TO it_mxbt
  267. INSERT INTO u_dismantle_installmx
  268. ( billid ,
  269. printid,
  270. storageid ,
  271. mtrlwareid ,
  272. mtrlid ,
  273. qty ,
  274. price,
  275. status ,
  276. plancode,
  277. woodcode ,
  278. mxdscrp,
  279. pcode,
  280. dxflag,
  281. sptid,
  282. standardqty,
  283. addqty)
  284. VALUES (:ls_newid,
  285. :d_i[i].printid,
  286. :d_i[i].storageid,
  287. :d_i[i].mtrlwareid,
  288. :d_i[i].mtrlid,
  289. :d_i[i].qty,
  290. :d_i[i].price,
  291. :d_i[i].status,
  292. :d_i[i].plancode,
  293. :d_i[i].woodcode,
  294. :d_i[i].mxdscrp,
  295. :d_i[i].pcode,
  296. :d_i[i].dxflag,
  297. :d_i[i].sptid,
  298. :d_i[i].standardqty,
  299. :d_i[i].addqty);
  300. IF sqlca.SQLCode <> 0 THEN
  301. billid = 0 //还原billid
  302. rslt = 0
  303. IF Pos(Lower(sqlca.SQLErrText),'PK_u_dismantle_installmx') > 0 THEN
  304. arg_msg = '插入明细操作失败,关键字单据ID,序号重复'
  305. ELSE
  306. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  307. END IF
  308. ROLLBACK ;
  309. GOTO ext
  310. END IF
  311. NEXT
  312. //
  313. ELSE //////////////////////////////////////////////////更新
  314. UPDATE u_dismantle_install
  315. SET billtype = :billtype,
  316. reason = :reason,
  317. billdate = :billdate,
  318. relid = :relid,
  319. storageid = :storageid,
  320. mtrlid = :mtrlid,
  321. mtrlwareid = :mtrlwareid,
  322. status = :status,
  323. plancode = :plancode,
  324. woodcode = :woodcode,
  325. qty = :qty,
  326. dscrp = :dscrp,
  327. buildtype = :buildtype,
  328. moddate = getdate(),
  329. modemp = :publ_operator,
  330. price = :price,
  331. rep = :rep,
  332. pcode = :pcode,
  333. dxflag = :dxflag,
  334. sptid = :sptid,
  335. addqty = :addqty
  336. WHERE u_dismantle_install.billid = :billid
  337. AND Auditingflag = 0;
  338. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  339. rslt = 0
  340. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  341. GOTO ext
  342. END IF
  343. //删除原有明细
  344. DELETE FROM u_dismantle_installmx
  345. Where u_dismantle_installmx.billid = :billid;
  346. IF sqlca.SQLCode <> 0 THEN
  347. rslt = 0
  348. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  349. GOTO ext
  350. END IF
  351. FOR i = 1 TO it_mxbt
  352. INSERT INTO u_dismantle_installmx
  353. ( billid ,
  354. printid,
  355. storageid ,
  356. mtrlwareid ,
  357. mtrlid ,
  358. qty ,
  359. price,
  360. status ,
  361. plancode,
  362. woodcode ,
  363. mxdscrp,
  364. pcode,
  365. dxflag,
  366. sptid ,
  367. standardqty,
  368. addqty)
  369. VALUES (:billid,
  370. :d_i[i].printid,
  371. :d_i[i].storageid,
  372. :d_i[i].mtrlwareid,
  373. :d_i[i].mtrlid,
  374. :d_i[i].qty,
  375. :d_i[i].price,
  376. :d_i[i].status,
  377. :d_i[i].plancode,
  378. :d_i[i].woodcode,
  379. :d_i[i].mxdscrp,
  380. :d_i[i].pcode,
  381. :d_i[i].dxflag,
  382. :d_i[i].sptid,
  383. :d_i[i].standardqty,
  384. :d_i[i].addqty);
  385. IF sqlca.SQLCode <> 0 THEN
  386. billid = 0 //还原billid
  387. rslt = 0
  388. IF Pos(Lower(sqlca.SQLErrText),'PK_u_dismantle_installmx') > 0 THEN
  389. arg_msg = '插入明细操作失败,关键字单据ID,序号重复'
  390. ELSE
  391. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  392. END IF
  393. ROLLBACK ;
  394. GOTO ext
  395. END IF
  396. NEXT
  397. END IF
  398. it_newbegin = FALSE
  399. it_updatebegin = FALSE
  400. ext:
  401. IF rslt = 0 THEN
  402. ROLLBACK;
  403. p_clearmx()
  404. ELSEIF rslt = 1 AND arg_ifcommit THEN
  405. COMMIT;
  406. END IF
  407. Return(rslt)
  408. end function
  409. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
  410. // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
  411. //--------------------------------------------------------------------
  412. // Description:
  413. //--------------------------------------------------------------------
  414. // Arguments:
  415. // value long arg_billid
  416. // value string arg_newdescppart
  417. // reference string arg_msg
  418. //--------------------------------------------------------------------
  419. // Returns: integer
  420. //--------------------------------------------------------------------
  421. // Author: yyx Date: 2003.11.21
  422. //--------------------------------------------------------------------
  423. // Modify History:
  424. //
  425. //====================================================================
  426. int rslt = 1
  427. arg_newdescppart = trim(arg_newdescppart)
  428. if arg_billid <= 0 then
  429. rslt = 0
  430. arg_msg = "没有删除对象,操作取消"
  431. goto ext
  432. end if
  433. if it_newbegin or it_updatebegin then
  434. rslt=0
  435. arg_msg="编辑状态下不可以执行,操作取消"
  436. goto ext
  437. end if
  438. select u_dismantle_install.auditingflag
  439. into :flag
  440. from u_dismantle_install
  441. where u_dismantle_install.billid = :arg_billid;
  442. if sqlca.sqlcode <> 0 then
  443. rslt = 0
  444. arg_msg = '查询拆装件单操作失败'
  445. goto ext
  446. end if
  447. if flag = 0 then
  448. rslt = 0
  449. arg_msg = "非审核状态下不可用"
  450. goto ext
  451. end if
  452. update u_dismantle_install
  453. set dscrp = dscrp+' '+:arg_newdescppart
  454. where u_dismantle_install.billid = :billid;
  455. if sqlca.sqlcode <> 0 then
  456. rollback ;
  457. rslt = 0
  458. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext
  459. goto ext
  460. end if
  461. commit;
  462. dscrp = dscrp+' '+arg_newdescppart
  463. ext:
  464. return (rslt)
  465. end function
  466. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  467. IF arg_billid <= 0 THEN
  468. rslt = 0
  469. arG_MSG = "非法单据唯一码"
  470. GOTO ext
  471. END IF
  472. SELECT
  473. u_dismantle_install.billtype,
  474. u_dismantle_install.Billcode,
  475. u_dismantle_install.reason,
  476. u_dismantle_install.relid,
  477. u_dismantle_install.storageid,
  478. u_dismantle_install.mtrlid,
  479. u_dismantle_install.mtrlwareid,
  480. u_dismantle_install.status,
  481. u_dismantle_install.plancode,
  482. u_dismantle_install.woodcode,
  483. u_dismantle_install.qty,
  484. u_dismantle_install.addqty,
  485. u_dismantle_install.Dscrp,
  486. u_dismantle_install.Auditingflag,
  487. u_dismantle_install.buildtype,
  488. u_dismantle_install.price,
  489. u_dismantle_install.billdate,
  490. u_dismantle_install.rep,
  491. u_mtrldef.mtrlcode,
  492. u_mtrldef.unit,
  493. u_dismantle_install.pcode,
  494. u_dismantle_install.dxflag,
  495. u_dismantle_install.sptid
  496. INTO :billtype,
  497. :Billcode,
  498. :reason,
  499. :relid,
  500. :storageid,
  501. :mtrlid,
  502. :mtrlwareid,
  503. :status,
  504. :plancode,
  505. :woodcode,
  506. :qty,
  507. :addqty,
  508. :Dscrp,
  509. :flag,
  510. :buildtype,
  511. :price,
  512. :billdate,
  513. :rep,
  514. :mtrlcode,
  515. :unit,
  516. :pcode,
  517. :dxflag,
  518. :sptid
  519. FROM u_dismantle_install,u_mtrldef
  520. Where u_mtrldef.mtrlid = u_dismantle_install.mtrlid and billid = :arg_billid;
  521. IF sqlca.SQLCode <> 0 THEN
  522. rslt = 0
  523. arG_MSG = "查询操作失败(错误单据唯一码)"+sqlca.SQLErrText
  524. GOTO ext
  525. END IF
  526. billid = arg_billid
  527. ext:
  528. IF rslt = 0 THEN p_reset()
  529. RETURN rslt
  530. end function
  531. public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0
  532. IF arg_billid <= 0 THEN
  533. rslt = 0
  534. arg_msg = "非法单据唯一码"
  535. GOTO ext
  536. END IF
  537. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  538. rslt = 0
  539. GOTO ext
  540. END IF
  541. //用游标读取明细
  542. DECLARE cur_d_i_mx CURSOR FOR
  543. SELECT u_dismantle_installmx.printid,
  544. u_dismantle_installmx.storageid,
  545. u_dismantle_installmx.mtrlwareid,
  546. u_dismantle_installmx.mtrlid,
  547. u_dismantle_installmx.qty,
  548. u_dismantle_installmx.addqty,
  549. u_dismantle_installmx.price,
  550. u_dismantle_installmx.status,
  551. u_dismantle_installmx.plancode,
  552. u_dismantle_installmx.woodcode,
  553. u_dismantle_installmx.mxdscrp,
  554. u_mtrldef.mtrlcode,
  555. u_mtrldef.unit,
  556. u_dismantle_installmx.pcode,
  557. u_dismantle_installmx.dxflag,
  558. u_dismantle_installmx.sptid,
  559. u_dismantle_installmx.standardqty
  560. FROM u_dismantle_installmx left join u_mtrldef on u_dismantle_installmx.mtrlid = u_mtrldef.mtrlid
  561. WHERE u_dismantle_installmx.billid = :arg_billid;
  562. OPEN cur_d_i_mx;
  563. FETCH cur_d_i_mx INTO :d_i[i].printid,:d_i[i].storageid,
  564. :d_i[i].mtrlwareid,:d_i[i].mtrlid,:d_i[i].qty,:d_i[i].addqty,
  565. :d_i[i].price,:d_i[i].status,:d_i[i].plancode,
  566. :d_i[i].woodcode,:d_i[i].mxdscrp,:d_i[i].mtrlcode,:d_i[i].unit,
  567. :d_i[i].pcode,:d_i[i].dxflag,:d_i[i].sptid,
  568. :d_i[i].standardqty;
  569. DO WHILE sqlca.SQLCode = 0
  570. i++
  571. FETCH cur_d_i_mx INTO :d_i[i].printid,:d_i[i].storageid,
  572. :d_i[i].mtrlwareid,:d_i[i].mtrlid,:d_i[i].qty,:d_i[i].addqty,
  573. :d_i[i].price,:d_i[i].status,:d_i[i].plancode,
  574. :d_i[i].woodcode,:d_i[i].mxdscrp,:d_i[i].mtrlcode,:d_i[i].unit,
  575. :d_i[i].pcode,:d_i[i].dxflag,:d_i[i].sptid,
  576. :d_i[i].standardqty;
  577. LOOP
  578. CLOSE cur_d_i_mx;
  579. //检验明细是否读入完整
  580. SELECT count(*) INTO :no_mxcheck
  581. FROM u_dismantle_installmx
  582. Where u_dismantle_installmx.billid = :arg_billid;
  583. IF sqlca.SQLCode <> 0 THEN
  584. rslt = 0
  585. arg_msg = "查询操作失败,单据明细数量"
  586. GOTO ext
  587. END IF
  588. IF i <> (no_mxcheck+1) THEN
  589. rslt = 0
  590. arg_msg = "查询操作失败,单据明细"
  591. GOTO ext
  592. END IF
  593. billid = arg_billid
  594. it_mxbt = i - 1
  595. it_newbegin = FALSE
  596. it_updatebegin = FALSE
  597. ext:
  598. IF rslt = 0 THEN p_reset()
  599. RETURN rslt
  600. end function
  601. public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
  602. Int rslt = 1
  603. Long chc
  604. Long rst_outwareid //拆装出仓id
  605. Long rst_inwareid //拆装进仓id
  606. Long s_scid
  607. Long o_scid
  608. Long lay_storageid[],ll_storageid
  609. s_dismantle_install s_di[]
  610. datetime ld_inworkdate
  611. setnull(ld_inworkdate)
  612. uo_inware uo_in
  613. uo_outware uo_out
  614. uo_in = CREATE uo_inware
  615. uo_in.commit_transaction = sqlca
  616. uo_in.if_getid_ture = FALSE
  617. uo_out = CREATE uo_outware
  618. uo_out.commit_transaction = sqlca
  619. uo_out.if_getid_ture = FALSE
  620. IF billid = 0 THEN
  621. rslt = 0
  622. arg_msg = "没有审核对象"
  623. GOTO ext
  624. END IF
  625. IF it_newbegin OR it_updatebegin THEN
  626. rslt = 0
  627. arg_msg = "编辑状态下不可以执行审核"
  628. GOTO ext
  629. END IF
  630. IF flag = 1 THEN
  631. rslt = 0
  632. arg_msg = "单据已经审核"
  633. GOTO ext
  634. END IF
  635. UPDATE u_dismantle_install
  636. SET Auditingemp = :arg_auditingrep,
  637. auditingdate = getdate(),
  638. Auditingflag = 1
  639. Where u_dismantle_install.billid = :billid AND Auditingflag = 0;
  640. IF sqlca.SQLCode <> 0 THEN
  641. rslt = 0
  642. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+sqlca.SQLErrText
  643. GOTO ext
  644. ELSEIF sqlca.SQLNRows = 0 THEN
  645. rslt = 0
  646. arg_msg = "拆装单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText
  647. GOTO ext
  648. END IF
  649. Boolean lb_f = FALSE
  650. Long j,k,ch
  651. //统计仓库数量,确定进或出仓单数
  652. FOR i = 1 TO it_mxbt
  653. FOR j = 1 TO UpperBound(lay_storageid)
  654. IF lay_storageid[j] = d_i[i].storageid THEN lb_f = TRUE
  655. NEXT
  656. IF lb_f = FALSE THEN
  657. ch++
  658. lay_storageid[ch] = d_i[i].storageid
  659. END IF
  660. lb_f = FALSE
  661. NEXT
  662. IF billtype = 0 THEN //装单 //多张出仓单 //一进多出
  663. //1.原事务生成出仓单
  664. FOR k = 1 TO UpperBound(lay_storageid)
  665. ll_storageid = lay_storageid[k]
  666. SELECT scid INTO :s_scid
  667. FROM u_storage
  668. Where storageid = :ll_storageid;
  669. IF sqlca.SQLCode <> 0 THEN
  670. arg_msg = '查询调出仓库所属分部资料失败'
  671. rslt = 0
  672. GOTO ext
  673. END IF
  674. IF uo_out.newbegin(s_scid,15,arg_msg) = 0 THEN
  675. rslt = 0
  676. GOTO ext
  677. END IF
  678. uo_out.relid = billid
  679. uo_out.outdate = billdate
  680. uo_out.outrep = rep
  681. uo_out.part = billcode
  682. uo_out.dscrp = dscrp
  683. uo_out.cusname = '拆装出仓'
  684. uo_out.storageid = ll_storageid
  685. chc = 0
  686. // d_i[i].printid
  687. FOR i = 1 TO it_mxbt
  688. IF d_i[i].storageid <> ll_storageid THEN CONTINUE
  689. chc++
  690. IF uo_out.acceptmx(d_i[i].mtrlwareid,&
  691. d_i[i].qty,d_i[i].addqty,d_i[i].price,1,&
  692. d_i[i].mxdscrp,chc,arg_msg,0,0,0,0,0,0,0,d_i[i].unit,1,'','') = 0 THEN
  693. rslt = 0
  694. GOTO ext
  695. END IF
  696. NEXT
  697. IF uo_out.Save(FALSE,arg_msg) = 0 THEN
  698. rslt = 0
  699. GOTO ext
  700. END IF
  701. rst_outwareid = uo_out.outwareid
  702. //2.原事务审核出仓单
  703. IF uo_out.getinfo(s_scid,rst_outwareid,arg_msg) = 0 THEN
  704. rslt = 0
  705. GOTO ext
  706. END IF
  707. IF uo_out.auditing(FALSE,arg_msg) = 0 THEN
  708. rslt = 0
  709. GOTO ext
  710. END IF
  711. NEXT
  712. //3.目标事务建立进仓单
  713. DateTime server_datetime
  714. SELECT Top 1 getdate() INTO :server_datetime FROM u_user;
  715. //取得系统时间,借用操作员表
  716. IF sqlca.SQLCode <> 0 THEN
  717. rslt = 0
  718. arg_msg = "查询目标仓库日期失败"
  719. GOTO ext
  720. END IF
  721. SELECT scid INTO :o_scid
  722. FROM u_storage
  723. Where storageid = :storageid;
  724. IF sqlca.SQLCode <> 0 THEN
  725. arg_msg = '查询调进仓库所属分部资料失败'
  726. rslt = 0
  727. GOTO ext
  728. END IF
  729. IF uo_in.newbegin(o_scid,15,arg_msg) = 0 THEN
  730. rslt = 0
  731. GOTO ext
  732. END IF
  733. uo_in.relid = billid
  734. uo_in.indate = billdate
  735. uo_in.inrep = rep
  736. uo_in.part = billcode
  737. uo_in.dscrp = dscrp
  738. uo_in.storageid = storageid
  739. uo_in.sptname = '拆装进仓'
  740. IF uo_in.acceptmx(1,&
  741. mtrlid,&
  742. mtrlcode,&
  743. plancode,&
  744. status,&
  745. qty,addqty,&
  746. price,&
  747. 1,&
  748. dscrp,&
  749. arg_msg,&
  750. 0,0,0,0,woodcode,pcode,'',sptid,unit,1,'','',ld_inworkdate,0) = 0 THEN
  751. rslt = 0
  752. GOTO ext
  753. END IF
  754. IF uo_in.Save(FALSE,arg_msg) = 0 THEN
  755. rslt = 0
  756. GOTO ext
  757. END IF
  758. rst_inwareid = uo_in.inwareid
  759. //4.原事务审核进仓单
  760. IF uo_in.getinfo(o_scid,rst_inwareid,arg_msg) = 0 THEN
  761. rslt = 0
  762. GOTO ext
  763. END IF
  764. IF uo_in.auditing(FALSE,arg_msg) = 0 THEN
  765. rslt = 0
  766. GOTO ext
  767. END IF
  768. ELSEIF billtype = 1 THEN //拆单 //多张进仓单 //一出多进
  769. //1.原事务生成出仓单
  770. SELECT scid INTO :s_scid
  771. FROM u_storage
  772. Where storageid = :storageid;
  773. IF sqlca.SQLCode <> 0 THEN
  774. arg_msg = '查询调出仓库所属分部资料失败'
  775. rslt = 0
  776. GOTO ext
  777. END IF
  778. IF uo_out.newbegin(s_scid,15,arg_msg) = 0 THEN
  779. rslt = 0
  780. GOTO ext
  781. END IF
  782. uo_out.relid = billid
  783. uo_out.outdate = billdate
  784. uo_out.outrep = rep
  785. uo_out.part = billcode
  786. uo_out.dscrp = dscrp
  787. uo_out.cusname = '拆装出仓'
  788. uo_out.storageid = storageid
  789. IF uo_out.acceptmx(mtrlwareid,&
  790. qty,addqty,price,1,&
  791. dscrp,1,arg_msg,0,0,0,0,0,0,0,unit,1,'','') = 0 THEN
  792. rslt = 0
  793. GOTO ext
  794. END IF
  795. IF uo_out.Save(FALSE,arg_msg) = 0 THEN
  796. rslt = 0
  797. GOTO ext
  798. END IF
  799. rst_outwareid = uo_out.outwareid
  800. //2.原事务审核出仓单
  801. IF uo_out.getinfo(s_scid,rst_outwareid,arg_msg) = 0 THEN
  802. rslt = 0
  803. GOTO ext
  804. END IF
  805. IF uo_out.auditing(FALSE,arg_msg) = 0 THEN
  806. rslt = 0
  807. GOTO ext
  808. END IF
  809. FOR k = 1 TO UpperBound(lay_storageid)
  810. ll_storageid = lay_storageid[k]
  811. SELECT scid INTO :o_scid
  812. FROM u_storage
  813. Where storageid = :ll_storageid;
  814. IF sqlca.SQLCode <> 0 THEN
  815. arg_msg = '查询调进仓库所属分部资料失败'
  816. rslt = 0
  817. GOTO ext
  818. END IF
  819. IF uo_in.newbegin(o_scid,15,arg_msg) = 0 THEN
  820. rslt = 0
  821. GOTO ext
  822. END IF
  823. uo_in.relid = billid
  824. uo_in.indate = billdate
  825. uo_in.inrep = rep
  826. uo_in.part = billcode
  827. uo_in.dscrp = dscrp
  828. uo_in.storageid = ll_storageid//storageid
  829. uo_in.sptname = '拆装进仓'
  830. chc = 0
  831. // d_i[i].printid
  832. FOR i = 1 TO it_mxbt
  833. IF d_i[i].storageid <> ll_storageid THEN CONTINUE
  834. chc++
  835. IF uo_in.acceptmx(chc,&
  836. d_i[i].mtrlid,&
  837. d_i[i].mtrlcode,&
  838. d_i[i].plancode,&
  839. d_i[i].status,&
  840. d_i[i].qty,&
  841. d_i[i].addqty,&
  842. d_i[i].price,&
  843. 1,&
  844. d_i[i].mxdscrp,&
  845. arg_msg,&
  846. 0,0,0,0,d_i[i].woodcode,d_i[i].pcode,'',d_i[i].sptid,d_i[i].unit,1,'','',ld_inworkdate,0) = 0 THEN
  847. rslt = 0
  848. GOTO ext
  849. END IF
  850. NEXT
  851. IF uo_in.Save(FALSE,arg_msg) = 0 THEN
  852. rslt = 0
  853. GOTO ext
  854. END IF
  855. rst_inwareid = uo_in.inwareid
  856. //4.原事务审核进仓单
  857. IF uo_in.getinfo(o_scid,rst_inwareid,arg_msg) = 0 THEN
  858. rslt = 0
  859. GOTO ext
  860. END IF
  861. IF uo_in.auditing(FALSE,arg_msg) = 0 THEN
  862. rslt = 0
  863. GOTO ext
  864. END IF
  865. NEXT
  866. END IF
  867. flag = 1
  868. ext:
  869. IF rslt = 0 THEN
  870. ROLLBACK;
  871. ELSEIF arg_ifcommit AND rslt = 1 THEN
  872. COMMIT;
  873. END IF
  874. DESTROY uo_in
  875. DESTROY uo_out
  876. RETURN rslt
  877. end function
  878. public function integer newbegin (integer arg_billtype, ref string arg_msg);Int rslt = 1
  879. IF Not (arg_billtype = 0 OR arg_billtype = 1) THEN
  880. rslt = 0
  881. arg_msg = '此单据类型必须为:0-装仓,1-拆仓'
  882. GOTO ext
  883. END IF
  884. p_reset()
  885. billtype = arg_billtype
  886. it_newbegin = TRUE
  887. it_updatebegin = FALSE
  888. ext:
  889. IF rslt = 0 THEN p_reset()
  890. RETURN rslt
  891. end function
  892. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
  893. Int rslt = 1
  894. Long chc
  895. Long in_out
  896. Long rst_outwareid[],out_i = 1 //拆装出仓id
  897. Long rst_inwareid[],in_i = 1 //拆装进仓id
  898. Long s_scid
  899. Long o_scid
  900. Long lay_storageid[],ll_storageid
  901. s_dismantle_install s_di[]
  902. DateTime null_dt
  903. SetNull(null_dt)
  904. uo_inware uo_in
  905. uo_outware uo_out
  906. uo_in = Create uo_inware
  907. uo_in.commit_transaction = sqlca
  908. uo_in.if_getid_ture = False
  909. uo_out = Create uo_outware
  910. uo_out.commit_transaction = sqlca
  911. uo_out.if_getid_ture = False
  912. IF billid = 0 THEN
  913. rslt = 0
  914. arg_msg = "没有审核对象"
  915. GOTO ext
  916. END IF
  917. IF it_newbegin Or it_updatebegin THEN
  918. rslt = 0
  919. arg_msg = "编辑状态下不可以执行审核"
  920. GOTO ext
  921. END IF
  922. IF flag = 0 THEN
  923. rslt = 0
  924. arg_msg = "单据未审核"
  925. GOTO ext
  926. END IF
  927. IF Not sysautobuild THEN
  928. IF sys_option_outware_if_di <> 0 THEN
  929. IF Pos(reason, '自动组装') > 0 and Pos(reason, '销售发货单') > 0 THEN
  930. rslt = 0
  931. arg_msg = "系统选项[084]限制,销售发货单自动组装单据不能手动撤审"
  932. GOTO ext
  933. END IF
  934. END IF
  935. END IF
  936. UPDATE u_dismantle_install
  937. SET Auditingemp = '',
  938. auditingdate = :null_dt,
  939. Auditingflag = 0
  940. Where u_dismantle_install.billid = :billid And Auditingflag = 1;
  941. IF sqlca.SQLCode <> 0 THEN
  942. rslt = 0
  943. arg_msg = "因网络或其它原因导致撤审单据操作失败"+"~n"+sqlca.SQLErrText
  944. GOTO ext
  945. ELSEIF sqlca.SQLNRows = 0 THEN
  946. rslt = 0
  947. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  948. GOTO ext
  949. END IF
  950. Boolean lb_f = False
  951. Long j,k,ch
  952. //统计仓库数量,确定进或出仓单数
  953. FOR i = 1 To it_mxbt
  954. FOR j = 1 To UpperBound(lay_storageid)
  955. IF lay_storageid[j] = d_i[i].storageid THEN lb_f = True
  956. NEXT
  957. IF lb_f = False THEN
  958. ch++
  959. lay_storageid[ch] = d_i[i].storageid
  960. END IF
  961. lb_f = False
  962. NEXT
  963. IF billtype = 0 THEN //装单 //多张出仓单
  964. //1.查询拆装单相关的出仓单,撤审,删除
  965. FOR k = 1 To UpperBound(lay_storageid)
  966. ll_storageid = lay_storageid[k]
  967. SELECT scid INTO :s_scid
  968. FROM u_storage
  969. Where storageid = :ll_storageid;
  970. IF sqlca.SQLCode <> 0 THEN
  971. arg_msg = '查询调出仓库所属分部资料失败'
  972. rslt = 0
  973. GOTO ext
  974. END IF
  975. DECLARE cur_out_1 CURSOR FOR
  976. SELECT outwareid
  977. FROM u_outware
  978. WHERE scid = :s_scid
  979. AND relid = :billid
  980. AND storageid = :ll_storageid
  981. And billtype = 15;
  982. OPEN cur_out_1;
  983. FETCH cur_out_1 Into :rst_outwareid[out_i];
  984. DO WHILE sqlca.SQLCode = 0
  985. out_i++
  986. FETCH cur_out_1 Into :rst_outwareid[out_i];
  987. LOOP
  988. out_i = out_i - 1
  989. CLOSE cur_out_1;
  990. IF out_i = 0 THEN
  991. arg_msg = '查询该拆装单相关出仓单失败,'+sqlca.SQLErrText
  992. rslt = 0
  993. GOTO ext
  994. END IF
  995. FOR in_out = 1 To out_i
  996. //撤审出仓单,再删除
  997. IF uo_out.getinfo(s_scid,rst_outwareid[in_out],arg_msg) = 0 THEN
  998. rslt = 0
  999. GOTO ext
  1000. END IF
  1001. IF uo_out.c_auditing(False,arg_msg) = 0 THEN
  1002. rslt = 0
  1003. GOTO ext
  1004. END IF
  1005. IF uo_out.del(s_scid,rst_outwareid[in_out],arg_msg,False) = 0 THEN
  1006. rslt = 0
  1007. GOTO ext
  1008. END IF
  1009. NEXT
  1010. NEXT
  1011. //2.查询拆装单相关的入仓单,撤审,删除
  1012. SELECT scid INTO :o_scid
  1013. FROM u_storage
  1014. Where storageid = :storageid;
  1015. IF sqlca.SQLCode <> 0 THEN
  1016. arg_msg = '查询调进仓库所属分部资料失败'
  1017. rslt = 0
  1018. GOTO ext
  1019. END IF
  1020. DECLARE cur_in_1 CURSOR FOR
  1021. SELECT inwareid
  1022. FROM u_inware
  1023. WHERE scid = :o_scid
  1024. AND relid = :billid
  1025. AND storageid = :storageid
  1026. And billtype = 15;
  1027. OPEN cur_in_1;
  1028. FETCH cur_in_1 Into :rst_inwareid[in_i];
  1029. DO WHILE sqlca.SQLCode = 0
  1030. in_i++
  1031. FETCH cur_in_1 Into :rst_inwareid[in_i];
  1032. LOOP
  1033. in_i = in_i - 1
  1034. CLOSE cur_in_1;
  1035. IF in_i = 0 THEN
  1036. arg_msg = '查询该拆装单相关入仓单失败,'+sqlca.SQLErrText
  1037. rslt = 0
  1038. GOTO ext
  1039. END IF
  1040. FOR in_out = 1 To in_i
  1041. //撤审出仓单,再删除
  1042. IF uo_in.getinfo(o_scid,rst_inwareid[in_out],arg_msg) = 0 THEN
  1043. rslt = 0
  1044. GOTO ext
  1045. END IF
  1046. IF uo_in.c_auditing(False,arg_msg) = 0 THEN
  1047. rslt = 0
  1048. GOTO ext
  1049. END IF
  1050. IF uo_in.del(o_scid,rst_inwareid[in_out],arg_msg,False) = 0 THEN
  1051. rslt = 0
  1052. GOTO ext
  1053. END IF
  1054. NEXT
  1055. ELSEIF billtype = 1 THEN //拆单 //多张进仓单
  1056. //1.查询拆装单相关的出仓单,撤审,删除
  1057. SELECT scid INTO :s_scid
  1058. FROM u_storage
  1059. Where storageid = :storageid;
  1060. IF sqlca.SQLCode <> 0 THEN
  1061. arg_msg = '查询调出仓库所属分部资料失败'
  1062. rslt = 0
  1063. GOTO ext
  1064. END IF
  1065. DECLARE cur_out_2 CURSOR FOR
  1066. SELECT outwareid
  1067. FROM u_outware
  1068. WHERE scid = :s_scid
  1069. AND relid = :billid
  1070. AND storageid = :storageid
  1071. And billtype = 15;
  1072. OPEN cur_out_2;
  1073. FETCH cur_out_2 Into :rst_outwareid[out_i];
  1074. DO WHILE sqlca.SQLCode = 0
  1075. out_i++
  1076. FETCH cur_out_2 Into :rst_outwareid[out_i];
  1077. LOOP
  1078. out_i = out_i - 1
  1079. CLOSE cur_out_2;
  1080. IF out_i = 0 THEN
  1081. arg_msg = '查询该拆装单相关出仓单失败,'+sqlca.SQLErrText
  1082. rslt = 0
  1083. GOTO ext
  1084. END IF
  1085. FOR in_out = 1 To out_i
  1086. //撤审出仓单,再删除
  1087. IF uo_out.getinfo(s_scid,rst_outwareid[in_out],arg_msg) = 0 THEN
  1088. rslt = 0
  1089. GOTO ext
  1090. END IF
  1091. IF uo_out.c_auditing(False,arg_msg) = 0 THEN
  1092. rslt = 0
  1093. GOTO ext
  1094. END IF
  1095. IF uo_out.del(s_scid,rst_outwareid[in_out],arg_msg,False) = 0 THEN
  1096. rslt = 0
  1097. GOTO ext
  1098. END IF
  1099. NEXT
  1100. //2.查询拆装单相关的入仓单,撤审,删除
  1101. FOR k = 1 To UpperBound(lay_storageid)
  1102. ll_storageid = lay_storageid[k]
  1103. SELECT scid INTO :o_scid
  1104. FROM u_storage
  1105. Where storageid = :ll_storageid;
  1106. IF sqlca.SQLCode <> 0 THEN
  1107. arg_msg = '查询调出仓库所属分部资料失败'
  1108. rslt = 0
  1109. GOTO ext
  1110. END IF
  1111. DECLARE cur_in_2 CURSOR FOR
  1112. SELECT inwareid
  1113. FROM u_inware
  1114. WHERE scid = :o_scid
  1115. AND relid = :billid
  1116. AND storageid = :ll_storageid
  1117. And billtype = 15;
  1118. OPEN cur_in_2;
  1119. FETCH cur_in_2 Into :rst_inwareid[in_i];
  1120. DO WHILE sqlca.SQLCode = 0
  1121. in_i++
  1122. FETCH cur_in_2 Into :rst_inwareid[in_i];
  1123. LOOP
  1124. in_i = in_i - 1
  1125. CLOSE cur_in_2;
  1126. IF in_i = 0 THEN
  1127. arg_msg = '查询该拆装单相关入仓单失败,'+sqlca.SQLErrText
  1128. rslt = 0
  1129. GOTO ext
  1130. END IF
  1131. FOR in_out = 1 To in_i
  1132. //撤审入仓单,再删除
  1133. IF uo_in.getinfo(o_scid,rst_inwareid[in_out],arg_msg) = 0 THEN
  1134. rslt = 0
  1135. GOTO ext
  1136. END IF
  1137. IF uo_in.c_auditing(False,arg_msg) = 0 THEN
  1138. rslt = 0
  1139. GOTO ext
  1140. END IF
  1141. IF uo_in.del(o_scid,rst_inwareid[in_out],arg_msg,False) = 0 THEN
  1142. rslt = 0
  1143. GOTO ext
  1144. END IF
  1145. NEXT
  1146. NEXT
  1147. END IF
  1148. flag = 1
  1149. ext:
  1150. IF rslt = 0 THEN
  1151. ROLLBACK;
  1152. ELSEIF arg_ifcommit And rslt = 1 THEN
  1153. COMMIT;
  1154. END IF
  1155. Destroy uo_in
  1156. Destroy uo_out
  1157. RETURN rslt
  1158. end function
  1159. public function integer acceptmx (long arg_printid, long arg_storageid, long arg_mtrlwareid, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, decimal arg_price, string arg_status, string arg_plancode, string arg_woodcode, string arg_mxdscrp, string arg_mtrlcode, string arg_pcode, integer arg_dxflag, integer arg_sptid, ref string arg_msg, decimal arg_standardqty);//arg_printid,arg_storageid,arg_mtrlwareid,arg_mtrlid,arg_qty,arg_price,arg_status,arg_plancode,arg_woodcode,arg_mxdscrp,arg_mtrlcode,arg_msg
  1160. Long rslt = 1,cnt = 0,ls_i
  1161. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  1162. rslt = 0
  1163. arg_msg = "非编辑状态不可以使用,操作取消"
  1164. GOTO ext
  1165. END IF
  1166. IF IsNull(arg_printid) THEN arg_printid = 0
  1167. IF IsNull(arg_storageid) THEN arg_storageid = 0
  1168. IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
  1169. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  1170. IF IsNull(arg_qty) THEN arg_qty = 0
  1171. IF IsNull(arg_addqty) THEN arg_qty = 0
  1172. IF IsNull(arg_standardqty) THEN arg_standardqty = 0
  1173. IF IsNull(arg_price) THEN arg_price = 0
  1174. IF IsNull(arg_status) THEN arg_status = ''
  1175. IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
  1176. IF IsNull(arg_plancode) THEN arg_plancode = ''
  1177. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  1178. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  1179. IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
  1180. IF IsNull(arg_pcode) THEN arg_pcode = ''
  1181. IF IsNull(arg_dxflag) THEN arg_dxflag = 0
  1182. IF IsNull(arg_sptid) THEN arg_sptid = 0
  1183. IF arg_qty = 0 THEN
  1184. rslt = 1
  1185. GOTO ext
  1186. END IF
  1187. IF arg_mtrlwareid > 0 AND billtype = 0 THEN
  1188. SELECT plancode,
  1189. woodcode,
  1190. status,
  1191. pcode,
  1192. dxflag,
  1193. sptid,
  1194. cost
  1195. // cost = case u_mtrlware.noallocqty when 0 then 0 else u_mtrlware.wareamt/u_mtrlware.noallocqty END
  1196. INTO :arg_plancode,
  1197. :arg_woodcode,
  1198. :arG_status,
  1199. :arg_pcode,
  1200. :arg_dxflag,
  1201. :arg_sptid,
  1202. :arg_price
  1203. FROM u_mtrlware Where u_mtrlware.mtrlwareid = :arg_mtrlwareid;
  1204. IF sqlca.SQLCode <> 0 THEN
  1205. rslt = 0
  1206. arg_msg = "第" + String(arg_printid) + '行,查询物料 '+arg_mtrlcode+' 库存失败!>>'+sqlca.SQLErrText
  1207. GOTO ext
  1208. END IF
  1209. //检查成本价调整单
  1210. cnt = 0
  1211. SELECT count(*)
  1212. INTO :cnt
  1213. FROM u_updatecost,u_updatecostmx
  1214. WHERE u_updatecost.wareid = u_updatecostmx.wareid AND
  1215. u_updatecost.flag = 0 AND
  1216. u_updatecostmx.mtrlwareid = :arg_mtrlwareid USING sqlca;
  1217. IF sqlca.SQLCode <> 0 THEN
  1218. rslt = 0
  1219. arg_msg = "第" + String(arg_printid) + "行,查询成本价调整单操作失败"
  1220. GOTO ext
  1221. END IF
  1222. IF cnt > 0 THEN
  1223. rslt = 0
  1224. arg_msg = "第" + String(arg_printid) + "行," + arg_mtrlcode + "已开成本价调整单,请先审核"
  1225. GOTO ext
  1226. END IF
  1227. END IF
  1228. //写入内容
  1229. it_mxbt++
  1230. d_i[it_mxbt].printid = arg_printid
  1231. d_i[it_mxbt].storageid = arg_storageid
  1232. d_i[it_mxbt].mtrlwareid = arg_mtrlwareid
  1233. d_i[it_mxbt].mtrlid = arg_mtrlid
  1234. d_i[it_mxbt].qty = arg_qty
  1235. d_i[it_mxbt].addqty = arg_addqty
  1236. d_i[it_mxbt].price = arg_price
  1237. d_i[it_mxbt].status = arg_status
  1238. d_i[it_mxbt].plancode = arg_plancode
  1239. d_i[it_mxbt].woodcode = arg_woodcode
  1240. d_i[it_mxbt].mxdscrp = arg_mxdscrp
  1241. d_i[it_mxbt].mtrlcode = arg_mtrlcode
  1242. d_i[it_mxbt].pcode = arg_pcode
  1243. d_i[it_mxbt].dxflag = arg_dxflag
  1244. d_i[it_mxbt].sptid = arg_sptid
  1245. d_i[it_mxbt].standardqty = arg_standardqty
  1246. ext:
  1247. IF rslt = 0 THEN p_clearmx()
  1248. Return(rslt)
  1249. end function
  1250. public function integer del (long arg_billid, boolean arg_ifcommit, ref string arg_msg);//====================================================================
  1251. // Function: del(arg_billid,arg_msg)
  1252. //--------------------------------------------------------------------
  1253. // Description:
  1254. //--------------------------------------------------------------------
  1255. // Arguments:
  1256. // value long arg_billid
  1257. // reference string arg_msg
  1258. //--------------------------------------------------------------------
  1259. // Returns: integer
  1260. //--------------------------------------------------------------------
  1261. // Author: yyx Date: 2003.11.21
  1262. //--------------------------------------------------------------------
  1263. // Modify History:
  1264. //
  1265. //====================================================================
  1266. Int rslt = 1
  1267. IF arg_billid <= 0 THEN
  1268. rslt = 0
  1269. arg_msg = "没有删除对象,操作取消"
  1270. GOTO ext
  1271. END IF
  1272. IF it_newbegin Or it_updatebegin THEN
  1273. rslt = 0
  1274. arg_msg = "编辑状态下不可以执行,操作取消"
  1275. GOTO ext
  1276. END IF
  1277. SELECT u_dismantle_install.auditingflag
  1278. INTO :flag
  1279. FROM u_dismantle_install
  1280. Where u_dismantle_install.billid = :arg_billid;
  1281. IF sqlca.SQLCode <> 0 THEN
  1282. rslt = 0
  1283. arg_msg = '查询拆装单操作失败'
  1284. GOTO ext
  1285. END IF
  1286. IF flag = 1 THEN
  1287. rslt = 0
  1288. arg_msg = "单据已经审核,不可以删除"
  1289. GOTO ext
  1290. END IF
  1291. DELETE From u_dismantle_install Where u_dismantle_install.billid = :arg_billid;
  1292. IF sqlca.SQLCode <> 0 THEN
  1293. rslt = 0
  1294. arg_msg = "删除拆装单操作失败"+"~n"+sqlca.SQLErrText
  1295. GOTO ext
  1296. END IF
  1297. DELETE From u_dismantle_installmx Where u_dismantle_installmx.billid = :arg_billid;
  1298. IF sqlca.SQLCode <> 0 THEN
  1299. rslt = 0
  1300. arg_msg = "删除拆装单明细操作失败"+"~n"+sqlca.SQLErrText
  1301. GOTO ext
  1302. END IF
  1303. it_newbegin = False
  1304. it_updatebegin = False
  1305. IF rslt = 0 THEN
  1306. ROLLBACK;
  1307. p_reset()
  1308. ELSEIF arg_ifcommit THEN
  1309. COMMIT;
  1310. END IF
  1311. ext:
  1312. Return (rslt)
  1313. end function
  1314. on uo_dismantle_install.create
  1315. call super::create
  1316. TriggerEvent( this, "constructor" )
  1317. end on
  1318. on uo_dismantle_install.destroy
  1319. TriggerEvent( this, "destructor" )
  1320. call super::destroy
  1321. end on