uo_cmpl_bill.sru 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. $PBExportHeader$uo_cmpl_bill.sru
  2. forward
  3. global type uo_cmpl_bill from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_cmpl_bill from nonvisualobject
  7. end type
  8. global uo_cmpl_bill uo_cmpl_bill
  9. type variables
  10. //==============================================================================
  11. // 事件: uo_cmpl_modle::Declare Instance Variables()
  12. //------------------------------------------------------------------------------
  13. // 描述: 标准工作
  14. //------------------------------------------------------------------------------
  15. // 参数:(无)
  16. //------------------------------------------------------------------------------
  17. // 返回值: (none)
  18. //------------------------------------------------------------------------------
  19. // 作者: Trueway Lee 日期: 2010.12.15
  20. //------------------------------------------------------------------------------
  21. // 修改历史:
  22. //
  23. //==============================================================================
  24. long ModleID
  25. string ModleName
  26. string opemp
  27. DateTime opdate
  28. long ModleType
  29. long orgModleID
  30. s_cmpl_modlemx mxs[]
  31. s_cmpl_modlemx_mx mx_mxs[]
  32. Boolean it_newbegin = FALSE //新建标志
  33. Boolean it_updatebegin = FALSE//修改标志
  34. end variables
  35. forward prototypes
  36. public function integer p_clearmx ()
  37. public function integer p_reset ()
  38. private function integer p_getinfo (long arg_modleid, ref string arg_msg)
  39. public function integer getinfo (long arg_modleid, ref string arg_msg)
  40. public function integer newbegin (ref string arg_msg)
  41. public function integer updatebegin (long arg_modleid, ref string arg_msg)
  42. public function integer del (long arg_modleid, ref string arg_msg)
  43. public function integer savesubmit (ref string arg_msg)
  44. public function integer save (boolean arg_if_commit, ref string arg_msg)
  45. end prototypes
  46. public function integer p_clearmx ();//INT p_clearmx()
  47. //清除明细
  48. s_cmpl_modlemx tmp[]
  49. mxs = tmp
  50. s_cmpl_modlemx_mx tmp_mx[]
  51. mx_mxs = tmp_mx
  52. RETURN 1
  53. end function
  54. public function integer p_reset ();//int p_reset()
  55. //清除对象及其明细
  56. ModleID = 0
  57. ModleName = ''
  58. opemp = ''
  59. ModleType = 0
  60. orgModleID = 0
  61. it_newbegin=false
  62. it_updatebegin=false
  63. //清除明细
  64. p_clearmx()
  65. return 1
  66. end function
  67. private function integer p_getinfo (long arg_modleid, ref string arg_msg);int rslt=1
  68. p_reset()
  69. SELECT ModleID, ModleName, opemp, opdate, modletype, orgModleID
  70. INTO :ModleID, :ModleName, :opemp, :opdate, :modletype, :orgModleID
  71. FROM u_cmpl_modle
  72. WHERE ModleID = :arg_modleID;
  73. if sqlca.sqlcode <> 0 then
  74. rslt = 0
  75. arg_msg = '查询工作失败'
  76. goto ext
  77. end if
  78. ext:
  79. if rslt = 0 then p_reset()
  80. return rslt
  81. end function
  82. public function integer getinfo (long arg_modleid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg)
  83. //0 失败 1成功
  84. Int rslt = 1,i = 0,no_mxcheck = 0
  85. IF arg_modleID <= 0 THEN
  86. rslt = 0
  87. arg_msg = '错误工作表唯一码'
  88. GOTO ext
  89. END IF
  90. IF p_getinfo(arg_modleID,arg_msg) = 0 THEN
  91. rslt = 0
  92. GOTO ext
  93. END IF
  94. long ll_ModleID
  95. long ll_printid
  96. string ll_parmName
  97. string ll_displayName
  98. decimal ll_defaultValue
  99. long ll_if_useformula
  100. string ll_formula
  101. long ll_if_from_mtrl
  102. long ll_mtrlid
  103. string ll_mtrl_pro
  104. long ll_if_from_product
  105. string ll_product_pro
  106. decimal ll_advancetime
  107. long ll_wrkGrpid
  108. string ll_dscrp
  109. string ll_unit
  110. long ll_rowtype
  111. //用游标读取明细
  112. //==============================================================================
  113. // mxs
  114. //==============================================================================
  115. DECLARE cur_inwaermx CURSOR FOR
  116. SELECT ModleID,
  117. printid,
  118. parmName,
  119. displayName,
  120. defaultValue,
  121. if_useformula,
  122. formula,
  123. if_from_mtrl,
  124. mtrlid,
  125. mtrl_pro,
  126. if_from_product,
  127. product_pro,
  128. advancetime,
  129. wrkGrpid,
  130. dscrp,
  131. unit,
  132. rowtype
  133. FROM u_cmpl_modlemx
  134. WHERE modleid = :arg_modleID order by printid;
  135. OPEN cur_inwaermx;
  136. FETCH cur_inwaermx INTO :ll_ModleID,
  137. :ll_printid,
  138. :ll_parmName,
  139. :ll_displayName,
  140. :ll_defaultValue,
  141. :ll_if_useformula,
  142. :ll_formula,
  143. :ll_if_from_mtrl,
  144. :ll_mtrlid,
  145. :ll_mtrl_pro,
  146. :ll_if_from_product,
  147. :ll_product_pro,
  148. :ll_advancetime,
  149. :ll_wrkGrpid,
  150. :ll_dscrp,
  151. :ll_unit,
  152. :ll_rowtype;
  153. DO WHILE sqlca.SQLCode = 0
  154. i++
  155. mxs[i].ModleID = ll_ModleID
  156. mxs[i].printid = ll_printid
  157. mxs[i].parmName = ll_parmName
  158. mxs[i].displayName = ll_displayName
  159. mxs[i].defaultValue = ll_defaultValue
  160. mxs[i].if_useformula = ll_if_useformula
  161. mxs[i].formula = ll_formula
  162. mxs[i].if_from_mtrl = ll_if_from_mtrl
  163. mxs[i].mtrlid = ll_mtrlid
  164. mxs[i].mtrl_pro = ll_mtrl_pro
  165. mxs[i].if_from_product = ll_if_from_product
  166. mxs[i].product_pro = ll_product_pro
  167. mxs[i].advancetime = ll_advancetime
  168. mxs[i].wrkGrpid = ll_wrkGrpid
  169. mxs[i].dscrp = ll_dscrp
  170. mxs[i].unit = ll_unit
  171. mxs[i].rowtype = ll_rowtype
  172. FETCH cur_inwaermx INTO :ll_ModleID,
  173. :ll_printid,
  174. :ll_parmName,
  175. :ll_displayName,
  176. :ll_defaultValue,
  177. :ll_if_useformula,
  178. :ll_formula,
  179. :ll_if_from_mtrl,
  180. :ll_mtrlid,
  181. :ll_mtrl_pro,
  182. :ll_if_from_product,
  183. :ll_product_pro,
  184. :ll_advancetime,
  185. :ll_wrkGrpid,
  186. :ll_dscrp,
  187. :ll_unit,
  188. :ll_rowtype;
  189. LOOP
  190. CLOSE cur_inwaermx;
  191. //==============================================================================
  192. // mx_mxs
  193. //==============================================================================
  194. i = 0
  195. DECLARE cur_mx_mx CURSOR FOR
  196. SELECT ModleID,
  197. printid,
  198. mtrlid,
  199. value
  200. FROM u_cmpl_modlemx_mx
  201. WHERE modleid = :arg_modleID;
  202. OPEN cur_mx_mx;
  203. FETCH cur_mx_mx INTO :ll_ModleID,
  204. :ll_printid,
  205. :ll_mtrlid,
  206. :ll_defaultValue;
  207. DO WHILE sqlca.SQLCode = 0
  208. i++
  209. mx_mxs[i].ModleID = ll_ModleID
  210. mx_mxs[i].printid = ll_printid
  211. mx_mxs[i].mtrlid = ll_mtrlid
  212. mx_mxs[i].value = ll_defaultValue
  213. FETCH cur_mx_mx INTO :ll_ModleID,
  214. :ll_printid,
  215. :ll_mtrlid,
  216. :ll_defaultValue;
  217. LOOP
  218. CLOSE cur_mx_mx;
  219. //
  220. ////检验明细是否读入完整
  221. //SELECT count(*) INTO :no_mxcheck
  222. // FROM u_saletaskmx
  223. // Where u_saletaskmx.taskid = :arg_taskid AND scid = :arg_scid USING commit_transaction;
  224. //IF commit_transaction.SQLCode <> 0 THEN
  225. // rslt = 0
  226. // arg_msg = "查询操作失败,销售订单明细数量"
  227. // GOTO ext
  228. //END IF
  229. //
  230. //IF i <> (no_mxcheck+1) THEN
  231. // rslt = 0
  232. // arg_msg = "查询操作失败,销售订单明细"
  233. // GOTO ext
  234. //END IF
  235. //
  236. //it_mxbt = i - 1
  237. it_newbegin = FALSE
  238. it_updatebegin = FALSE
  239. //
  240. ext:
  241. IF rslt = 0 THEN p_reset()
  242. RETURN rslt
  243. end function
  244. public function integer newbegin (ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
  245. //0 fail 1 success
  246. long rslt=1,CNT=0
  247. //
  248. //if arg_scid < 0 then
  249. // arg_msg = '请选择分部'
  250. // rslt = 0
  251. // goto ext
  252. //end if
  253. //
  254. p_reset()
  255. it_newbegin=TRUE
  256. it_updatebegin=FALSE
  257. //scid=arg_scid
  258. //ext:
  259. //if rslt = 0 then p_reset()
  260. return rslt
  261. end function
  262. public function integer updatebegin (long arg_modleid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
  263. //从置对象,设定业务类型与关联ID,准备更新进仓单
  264. //0 fail 1 success
  265. long rslt=1,CNT=0
  266. //
  267. //if arg_scid < 0 then
  268. // arg_msg = '请选择分部'
  269. // rslt = 0
  270. // goto ext
  271. //end if
  272. //
  273. IF arg_modleid<=0 THEN
  274. rslt=0
  275. ARG_MSG='错误工作表唯一码'
  276. goto ext
  277. end if
  278. if p_getinfo(arg_modleid,arg_msg)=0 then
  279. rslt=0
  280. goto ext
  281. end if
  282. //if Status<>0 then
  283. // rslt=0
  284. // ARG_MSG='已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
  285. // goto ext
  286. //end if
  287. //
  288. it_newbegin=FALSE
  289. it_updatebegin=TRUE
  290. //scid=arg_scid
  291. ext:
  292. if rslt=0 then p_reset()
  293. return rslt
  294. end function
  295. public function integer del (long arg_modleid, ref string arg_msg);int rslt = 1
  296. long ll_cnt
  297. SELECT COUNT(0) INTO :ll_cnt FROM u_cmpl_modle WHERE modleid = :arg_modleid;
  298. if sqlca.sqlcode <> 0 then
  299. rslt = 0
  300. arg_msg = '查询工作表失败,' + sqlca.sqlerrtext
  301. goto ext
  302. end if
  303. if ll_cnt < 1 then
  304. rslt = 0
  305. arg_msg = '工作表不存在'
  306. goto ext
  307. end if
  308. DELETE FROM u_cmpl_modle WHERE modleid = :arg_modleid;
  309. if sqlca.sqlcode <> 0 then
  310. rslt = 0
  311. arg_msg = '删除工作表失败,' + sqlca.sqlerrtext
  312. goto ext
  313. end if
  314. DELETE FROM u_cmpl_modlemx WHERE modleid = :arg_modleid;
  315. if sqlca.sqlcode <> 0 then
  316. rslt = 0
  317. arg_msg = '删除工作表明细失败,' + sqlca.sqlerrtext
  318. goto ext
  319. end if
  320. DELETE FROM u_cmpl_modlemx_mx WHERE modleid = :arg_modleid;
  321. if sqlca.sqlcode <> 0 then
  322. rslt = 0
  323. arg_msg = '删除工作表值失败,' + sqlca.sqlerrtext
  324. goto ext
  325. end if
  326. ext:
  327. if rslt = 0 then
  328. rollback;
  329. else
  330. commit;
  331. end if
  332. return rslt
  333. end function
  334. public function integer savesubmit (ref string arg_msg);Integer rslt = 1,cnt = 0,i
  335. DateTime server_datetime
  336. Long ll_id
  337. IF IsNull(modlename) THEN modlename = ''
  338. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  339. rslt = 0
  340. arg_msg = "非编辑状态不可以提交"
  341. GOTO ext
  342. END IF
  343. select Top 1 getdate() INTO :server_datetime FROM u_user;
  344. IF sqlca.SQLCode <> 0 THEN
  345. rslt = 0
  346. arg_msg = "查询操作失败,日期 "
  347. GOTO ext
  348. END IF
  349. IF modleid = 0 THEN
  350. ll_id = f_sys_scidentity(0,"u_cmpl_modle","modleid",arg_msg,FALSE,sqlca)
  351. insert into u_cmpl_modle
  352. (ModleID
  353. ,ModleName
  354. ,opemp
  355. ,opdate
  356. ,ModleType
  357. ,orgModleID)
  358. values
  359. (:ll_id
  360. ,:ModleName
  361. ,:publ_operator
  362. ,:server_datetime
  363. ,:ModleType
  364. ,:orgModleID);
  365. IF sqlca.SQLCode <> 0 THEN
  366. rslt = 0
  367. arg_msg = '插入工作表失败,' + sqlca.SQLErrText
  368. GOTO ext
  369. END IF
  370. opemp = publ_operator
  371. opdate = server_datetime
  372. FOR i = 1 TO UpperBound(mxs)
  373. insert into u_cmpl_modleMx
  374. (ModleID
  375. ,printid
  376. ,parmName
  377. ,displayName
  378. ,defaultValue
  379. ,if_useformula
  380. ,formula
  381. ,if_from_mtrl
  382. ,mtrlid
  383. ,mtrl_pro
  384. ,if_from_product
  385. ,product_pro
  386. ,wrkGrpid
  387. ,advancetime
  388. ,dscrp
  389. ,unit
  390. ,rowtype)
  391. values
  392. (:ll_id
  393. ,:i
  394. ,:mxs[i].parmName
  395. ,:mxs[i].displayName
  396. ,:mxs[i].defaultValue
  397. ,:mxs[i].if_useformula
  398. ,:mxs[i].formula
  399. ,:mxs[i].if_from_mtrl
  400. ,:mxs[i].mtrlid
  401. ,:mxs[i].mtrl_pro
  402. ,:mxs[i].if_from_product
  403. ,:mxs[i].product_pro
  404. ,:mxs[i].wrkGrpid
  405. ,:mxs[i].advancetime
  406. ,:mxs[i].dscrp
  407. ,:mxs[i].unit
  408. ,:mxs[i].rowtype);
  409. IF sqlca.SQLCode <> 0 THEN
  410. rslt = 0
  411. arg_msg = '插入工作表明细失败,' + sqlca.SQLErrText
  412. GOTO ext
  413. END IF
  414. NEXT
  415. FOR i = 1 to UPPERBOUND(mx_mxs)
  416. INSERT INTO u_cmpl_modleMx_Mx
  417. (ModleID
  418. ,printid
  419. ,mtrlid
  420. ,value)
  421. values
  422. (:ll_id
  423. ,:mx_mxs[i].printid
  424. ,:mx_mxs[i].mtrlid
  425. ,:mx_mxs[i].value);
  426. IF sqlca.sqlcode <> 0 then
  427. rslt = 0
  428. arg_msg = '插入工作表值失败,' + sqlca.sqlerrtext
  429. goto ext
  430. end if
  431. NEXT
  432. modleid = ll_id
  433. ELSE
  434. update u_cmpl_modle
  435. set ModleName = :ModleName
  436. ,opemp = :publ_operator
  437. ,opdate = :server_datetime
  438. ,ModleType = :ModleType
  439. ,orgModleID = :orgModleID
  440. Where modleid = :modleid;
  441. IF sqlca.SQLCode <> 0 THEN
  442. rslt = 0
  443. arg_msg = '更新工作表失败,' + sqlca.SQLErrText
  444. GOTO ext
  445. END IF
  446. opemp = publ_operator
  447. opdate = server_datetime
  448. delete FROM u_cmpl_modleMx Where modleid = :modleid;
  449. IF sqlca.SQLCode <> 0 THEN
  450. rslt = 0
  451. arg_msg = '删除工作表明细失败,' + sqlca.SQLErrText
  452. GOTO ext
  453. END IF
  454. FOR i = 1 TO UpperBound(mxs)
  455. insert into u_cmpl_modleMx
  456. (ModleID
  457. ,printid
  458. ,parmName
  459. ,displayName
  460. ,defaultValue
  461. ,if_useformula
  462. ,formula
  463. ,if_from_mtrl
  464. ,mtrlid
  465. ,mtrl_pro
  466. ,if_from_product
  467. ,product_pro
  468. ,wrkGrpid
  469. ,advancetime
  470. ,dscrp
  471. ,unit
  472. ,rowtype)
  473. values
  474. (:modleid
  475. ,:i
  476. ,:mxs[i].parmName
  477. ,:mxs[i].displayName
  478. ,:mxs[i].defaultValue
  479. ,:mxs[i].if_useformula
  480. ,:mxs[i].formula
  481. ,:mxs[i].if_from_mtrl
  482. ,:mxs[i].mtrlid
  483. ,:mxs[i].mtrl_pro
  484. ,:mxs[i].if_from_product
  485. ,:mxs[i].product_pro
  486. ,:mxs[i].wrkGrpid
  487. ,:mxs[i].advancetime
  488. ,:mxs[i].dscrp
  489. ,:mxs[i].unit
  490. ,:mxs[i].rowtype);
  491. IF sqlca.SQLCode <> 0 THEN
  492. rslt = 0
  493. arg_msg = '插入工作表明细失败,' + sqlca.SQLErrText
  494. GOTO ext
  495. END IF
  496. NEXT
  497. delete from u_cmpl_modlemx_mx where modleid = :modleid;
  498. if sqlca.sqlcode <> 0 then
  499. rslt = 0
  500. arg_msg = '删除工作表值失败,' + sqlca.SQLErrText
  501. GOTO ext
  502. END IF
  503. FOR i = 1 to UPPERBOUND(mx_mxs)
  504. INSERT INTO u_cmpl_modleMx_Mx
  505. (ModleID
  506. ,printid
  507. ,mtrlid
  508. ,value)
  509. values
  510. (:ModleID
  511. ,:mx_mxs[i].printid
  512. ,:mx_mxs[i].mtrlid
  513. ,:mx_mxs[i].value);
  514. IF sqlca.sqlcode <> 0 then
  515. rslt = 0
  516. arg_msg = '插入工作表值失败,' + sqlca.sqlerrtext
  517. goto ext
  518. end if
  519. NEXT
  520. END IF
  521. it_newbegin = FALSE
  522. it_updatebegin = FALSE
  523. ext:
  524. IF rslt = 0 THEN
  525. rollback;
  526. p_clearmx()
  527. ELSEIF rslt = 1 THEN
  528. commit;
  529. END IF
  530. RETURN rslt
  531. end function
  532. public function integer save (boolean arg_if_commit, ref string arg_msg);Integer rslt = 1,cnt = 0,i
  533. DateTime server_datetime
  534. Long ll_id
  535. IF IsNull(modlename) THEN modlename = ''
  536. IF it_newbegin = False And it_updatebegin = False THEN
  537. rslt = 0
  538. arg_msg = "非编辑状态不可以提交"
  539. GOTO ext
  540. END IF
  541. SELECT Top 1 getdate() Into :server_datetime From u_user;
  542. IF sqlca.SQLCode <> 0 THEN
  543. rslt = 0
  544. arg_msg = "查询操作失败,日期 "
  545. GOTO ext
  546. END IF
  547. IF modleid = 0 THEN
  548. ll_id = f_sys_scidentity(0,"u_cmpl_modle","modleid",arg_msg,False,sqlca)
  549. INSERT INTO u_cmpl_modle
  550. (ModleID
  551. ,ModleName
  552. ,opemp
  553. ,opdate
  554. ,ModleType
  555. ,orgModleID)
  556. VALUES
  557. (:ll_id
  558. ,:ModleName
  559. ,:publ_operator
  560. ,:server_datetime
  561. ,:ModleType
  562. ,:orgModleID);
  563. IF sqlca.SQLCode <> 0 THEN
  564. rslt = 0
  565. arg_msg = '插入工作表失败,' + sqlca.SQLErrText
  566. GOTO ext
  567. END IF
  568. opemp = publ_operator
  569. opdate = server_datetime
  570. FOR i = 1 To UpperBound(mxs)
  571. INSERT INTO u_cmpl_modleMx
  572. (ModleID
  573. ,printid
  574. ,parmName
  575. ,displayName
  576. ,defaultValue
  577. ,if_useformula
  578. ,formula
  579. ,if_from_mtrl
  580. ,mtrlid
  581. ,mtrl_pro
  582. ,if_from_product
  583. ,product_pro
  584. ,wrkGrpid
  585. ,advancetime
  586. ,dscrp
  587. ,unit
  588. ,rowtype)
  589. VALUES
  590. (:ll_id
  591. ,:i
  592. ,:mxs[i].parmName
  593. ,:mxs[i].displayName
  594. ,:mxs[i].defaultValue
  595. ,:mxs[i].if_useformula
  596. ,:mxs[i].formula
  597. ,:mxs[i].if_from_mtrl
  598. ,:mxs[i].mtrlid
  599. ,:mxs[i].mtrl_pro
  600. ,:mxs[i].if_from_product
  601. ,:mxs[i].product_pro
  602. ,:mxs[i].wrkgrpid
  603. ,:mxs[i].advancetime
  604. ,:mxs[i].dscrp
  605. ,:mxs[i].unit
  606. ,:mxs[i].rowtype);
  607. IF sqlca.SQLCode <> 0 THEN
  608. rslt = 0
  609. arg_msg = '插入工作表明细失败,' + sqlca.SQLErrText
  610. GOTO ext
  611. END IF
  612. NEXT
  613. FOR i = 1 To UpperBound(mx_mxs)
  614. INSERT INTO u_cmpl_modleMx_Mx
  615. (ModleID
  616. ,printid
  617. ,mtrlid
  618. ,value)
  619. VALUES
  620. (:ll_id
  621. ,:mx_mxs[i].printid
  622. ,:mx_mxs[i].mtrlid
  623. ,:mx_mxs[i].Value);
  624. IF sqlca.SQLCode <> 0 THEN
  625. rslt = 0
  626. arg_msg = '插入工作表值失败,' + sqlca.SQLErrText
  627. GOTO ext
  628. END IF
  629. NEXT
  630. modleid = ll_id
  631. ELSE
  632. UPDATE u_cmpl_modle
  633. SET ModleName = :ModleName
  634. ,opemp = :publ_operator
  635. ,opdate = :server_datetime
  636. ,ModleType = :ModleType
  637. ,orgModleID = :orgModleID
  638. Where modleid = :modleid;
  639. IF sqlca.SQLCode <> 0 THEN
  640. rslt = 0
  641. arg_msg = '更新工作表失败,' + sqlca.SQLErrText
  642. GOTO ext
  643. END IF
  644. opemp = publ_operator
  645. opdate = server_datetime
  646. DELETE From u_cmpl_modleMx Where modleid = :modleid;
  647. IF sqlca.SQLCode <> 0 THEN
  648. rslt = 0
  649. arg_msg = '删除工作表明细失败,' + sqlca.SQLErrText
  650. GOTO ext
  651. END IF
  652. FOR i = 1 To UpperBound(mxs)
  653. INSERT INTO u_cmpl_modleMx
  654. (ModleID
  655. ,printid
  656. ,parmName
  657. ,displayName
  658. ,defaultValue
  659. ,if_useformula
  660. ,formula
  661. ,if_from_mtrl
  662. ,mtrlid
  663. ,mtrl_pro
  664. ,if_from_product
  665. ,product_pro
  666. ,wrkGrpid
  667. ,advancetime
  668. ,dscrp
  669. ,unit
  670. , rowtype)
  671. VALUES
  672. (:modleid
  673. ,:i
  674. ,:mxs[i].parmName
  675. ,:mxs[i].displayName
  676. ,:mxs[i].defaultValue
  677. ,:mxs[i].if_useformula
  678. ,:mxs[i].formula
  679. ,:mxs[i].if_from_mtrl
  680. ,:mxs[i].mtrlid
  681. ,:mxs[i].mtrl_pro
  682. ,:mxs[i].if_from_product
  683. ,:mxs[i].product_pro
  684. ,:mxs[i].wrkGrpid
  685. ,:mxs[i].advancetime
  686. ,:mxs[i].dscrp
  687. ,:mxs[i].unit
  688. ,:mxs[i].rowtype);
  689. IF sqlca.SQLCode <> 0 THEN
  690. rslt = 0
  691. arg_msg = '插入工作表明细失败,' + sqlca.SQLErrText
  692. GOTO ext
  693. END IF
  694. NEXT
  695. DELETE From u_cmpl_modleMx_Mx Where modleid = :modleid;
  696. IF sqlca.SQLCode <> 0 THEN
  697. rslt = 0
  698. arg_msg = '删除工作表值失败,' + sqlca.SQLErrText
  699. GOTO ext
  700. END IF
  701. FOR i = 1 To UpperBound(mx_mxs)
  702. INSERT INTO u_cmpl_modleMx_Mx
  703. (ModleID
  704. ,printid
  705. ,mtrlid
  706. ,value)
  707. VALUES
  708. (:ModleID
  709. ,:mx_mxs[i].printid
  710. ,:mx_mxs[i].mtrlid
  711. ,:mx_mxs[i].Value);
  712. IF sqlca.SQLCode <> 0 THEN
  713. rslt = 0
  714. arg_msg = '插入工作表值失败,' + sqlca.SQLErrText
  715. GOTO ext
  716. END IF
  717. NEXT
  718. END IF
  719. it_newbegin = False
  720. it_updatebegin = False
  721. ext:
  722. IF rslt = 0 THEN
  723. ROLLBACK;
  724. p_clearmx()
  725. ELSEIF rslt = 1 And arg_if_commit THEN
  726. COMMIT;
  727. END IF
  728. RETURN rslt
  729. end function
  730. on uo_cmpl_bill.create
  731. call super::create
  732. TriggerEvent( this, "constructor" )
  733. end on
  734. on uo_cmpl_bill.destroy
  735. TriggerEvent( this, "destructor" )
  736. call super::destroy
  737. end on