uo_cmpl_modle.sru 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. $PBExportHeader$uo_cmpl_modle.sru
  2. forward
  3. global type uo_cmpl_modle from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_cmpl_modle from nonvisualobject
  7. end type
  8. global uo_cmpl_modle uo_cmpl_modle
  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. s_cmpl_modlemx mxs[]
  30. Boolean it_newbegin = FALSE //新建标志
  31. Boolean it_updatebegin = FALSE//修改标志
  32. end variables
  33. forward prototypes
  34. public function integer p_clearmx ()
  35. public function integer p_reset ()
  36. private function integer p_getinfo (long arg_modleid, ref string arg_msg)
  37. public function integer getinfo (long arg_modleid, ref string arg_msg)
  38. public function integer newbegin (ref string arg_msg)
  39. public function integer updatebegin (long arg_modleid, ref string arg_msg)
  40. public function integer savesubmit (ref string arg_msg)
  41. public function integer del (long arg_modleid, ref string arg_msg)
  42. end prototypes
  43. public function integer p_clearmx ();//INT p_clearmx()
  44. //清除明细
  45. s_cmpl_modlemx tmp[]
  46. mxs = tmp
  47. RETURN 1
  48. end function
  49. public function integer p_reset ();//int p_reset()
  50. //清除对象及其明细
  51. ModleID = 0
  52. ModleName = ''
  53. opemp = ''
  54. modletype = 0
  55. it_newbegin=false
  56. it_updatebegin=false
  57. //清除明细
  58. p_clearmx()
  59. return 1
  60. end function
  61. private function integer p_getinfo (long arg_modleid, ref string arg_msg);int rslt=1
  62. SELECT ModleID, ModleName, opemp, opdate, modletype
  63. INTO :ModleID, :ModleName, :opemp, :opdate, :modletype
  64. FROM u_cmpl_modle
  65. WHERE ModleID = :arg_modleID;
  66. if sqlca.sqlcode <> 0 then
  67. rslt = 0
  68. arg_msg = '查询标准模板失败'
  69. goto ext
  70. end if
  71. ext:
  72. if rslt = 0 then p_reset()
  73. return rslt
  74. end function
  75. public function integer getinfo (long arg_modleid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg)
  76. //0 失败 1成功
  77. Int rslt = 1,i = 0,no_mxcheck = 0
  78. IF arg_modleID <= 0 THEN
  79. rslt = 0
  80. arg_msg = '错误标准模板唯一码'
  81. GOTO ext
  82. END IF
  83. IF p_getinfo(arg_modleID,arg_msg) = 0 THEN
  84. rslt = 0
  85. GOTO ext
  86. END IF
  87. long ll_ModleID
  88. long ll_printid
  89. string ll_parmName
  90. string ll_displayName
  91. decimal ll_defaultValue
  92. long ll_if_useformula
  93. string ll_formula
  94. long ll_if_from_mtrl
  95. long ll_mtrlid
  96. string ll_mtrl_pro
  97. long ll_if_from_product
  98. string ll_product_pro
  99. long ll_wrkGrpid
  100. decimal ll_advancetime
  101. string ll_dscrp
  102. string ll_unit
  103. long ll_rowtype
  104. //用游标读取明细
  105. DECLARE cur_inwaermx CURSOR FOR
  106. SELECT ModleID,
  107. printid,
  108. parmName,
  109. displayName,
  110. defaultValue,
  111. if_useformula,
  112. formula,
  113. if_from_mtrl,
  114. mtrlid,
  115. mtrl_pro,
  116. if_from_product,
  117. product_pro,
  118. wrkGrpid,
  119. advancetime,
  120. dscrp,
  121. unit,
  122. rowtype
  123. FROM u_cmpl_modlemx
  124. WHERE modleid = :arg_modleID;
  125. OPEN cur_inwaermx;
  126. FETCH cur_inwaermx INTO :ll_ModleID,
  127. :ll_printid,
  128. :ll_parmName,
  129. :ll_displayName,
  130. :ll_defaultValue,
  131. :ll_if_useformula,
  132. :ll_formula,
  133. :ll_if_from_mtrl,
  134. :ll_mtrlid,
  135. :ll_mtrl_pro,
  136. :ll_if_from_product,
  137. :ll_product_pro,
  138. :ll_wrkGrpid,
  139. :ll_advancetime,
  140. :ll_dscrp,
  141. :ll_unit,
  142. :ll_rowtype;
  143. DO WHILE sqlca.SQLCode = 0
  144. i++
  145. mxs[i].ModleID = ll_ModleID
  146. mxs[i].printid = ll_printid
  147. mxs[i].parmName = ll_parmName
  148. mxs[i].displayName = ll_displayName
  149. mxs[i].defaultValue = ll_defaultValue
  150. mxs[i].if_useformula = ll_if_useformula
  151. mxs[i].formula = ll_formula
  152. mxs[i].if_from_mtrl = ll_if_from_mtrl
  153. mxs[i].mtrlid = ll_mtrlid
  154. mxs[i].mtrl_pro = ll_mtrl_pro
  155. mxs[i].if_from_product = ll_if_from_product
  156. mxs[i].product_pro = ll_product_pro
  157. mxs[i].wrkGrpid = ll_wrkGrpid
  158. mxs[i].advancetime = ll_advancetime
  159. mxs[i].dscrp = ll_dscrp
  160. mxs[i].unit = ll_unit
  161. mxs[i].rowtype = ll_rowtype
  162. FETCH cur_inwaermx INTO :ll_ModleID,
  163. :ll_printid,
  164. :ll_parmName,
  165. :ll_displayName,
  166. :ll_defaultValue,
  167. :ll_if_useformula,
  168. :ll_formula,
  169. :ll_if_from_mtrl,
  170. :ll_mtrlid,
  171. :ll_mtrl_pro,
  172. :ll_if_from_product,
  173. :ll_product_pro,
  174. :ll_wrkGrpid,
  175. :ll_advancetime,
  176. :ll_dscrp,
  177. :ll_unit,
  178. :ll_rowtype;
  179. LOOP
  180. CLOSE cur_inwaermx;
  181. //
  182. ////检验明细是否读入完整
  183. //SELECT count(*) INTO :no_mxcheck
  184. // FROM u_saletaskmx
  185. // Where u_saletaskmx.taskid = :arg_taskid AND scid = :arg_scid USING commit_transaction;
  186. //IF commit_transaction.SQLCode <> 0 THEN
  187. // rslt = 0
  188. // arg_msg = "查询操作失败,销售订单明细数量"
  189. // GOTO ext
  190. //END IF
  191. //
  192. //IF i <> (no_mxcheck+1) THEN
  193. // rslt = 0
  194. // arg_msg = "查询操作失败,销售订单明细"
  195. // GOTO ext
  196. //END IF
  197. //
  198. //it_mxbt = i - 1
  199. it_newbegin = FALSE
  200. it_updatebegin = FALSE
  201. //
  202. ext:
  203. IF rslt = 0 THEN p_reset()
  204. RETURN rslt
  205. end function
  206. public function integer newbegin (ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
  207. //0 fail 1 success
  208. long rslt=1,CNT=0
  209. //
  210. //if arg_scid < 0 then
  211. // arg_msg = '请选择分部'
  212. // rslt = 0
  213. // goto ext
  214. //end if
  215. //
  216. p_reset()
  217. it_newbegin=TRUE
  218. it_updatebegin=FALSE
  219. //scid=arg_scid
  220. //ext:
  221. //if rslt = 0 then p_reset()
  222. return rslt
  223. end function
  224. public function integer updatebegin (long arg_modleid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
  225. //从置对象,设定业务类型与关联ID,准备更新进仓单
  226. //0 fail 1 success
  227. long rslt=1,CNT=0
  228. //
  229. //if arg_scid < 0 then
  230. // arg_msg = '请选择分部'
  231. // rslt = 0
  232. // goto ext
  233. //end if
  234. //
  235. IF arg_modleid<=0 THEN
  236. rslt=0
  237. ARG_MSG='错误标准模板唯一码'
  238. goto ext
  239. end if
  240. if p_getinfo(arg_modleid,arg_msg)=0 then
  241. rslt=0
  242. goto ext
  243. end if
  244. //if Status<>0 then
  245. // rslt=0
  246. // ARG_MSG='已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
  247. // goto ext
  248. //end if
  249. //
  250. it_newbegin=FALSE
  251. it_updatebegin=TRUE
  252. p_clearmx() //清除明细
  253. //scid=arg_scid
  254. ext:
  255. if rslt=0 then p_reset()
  256. return rslt
  257. end function
  258. public function integer savesubmit (ref string arg_msg);Integer rslt = 1,cnt = 0,i
  259. DateTime server_datetime
  260. Long ll_id
  261. IF IsNull(modlename) THEN modlename = ''
  262. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  263. rslt = 0
  264. arg_msg = "非编辑状态不可以提交"
  265. GOTO ext
  266. END IF
  267. select Top 1 getdate() INTO :server_datetime FROM u_user;
  268. IF sqlca.SQLCode <> 0 THEN
  269. rslt = 0
  270. arg_msg = "查询操作失败,日期 "
  271. GOTO ext
  272. END IF
  273. IF modleid = 0 THEN
  274. ll_id = f_sys_scidentity(0,"u_cmpl_modle","modleid",arg_msg,FALSE,sqlca)
  275. insert into u_cmpl_modle
  276. (ModleID
  277. ,ModleName
  278. ,opemp
  279. ,opdate
  280. ,modletype)
  281. values
  282. (:ll_id
  283. ,:ModleName
  284. ,:publ_operator
  285. ,:server_datetime
  286. ,:modletype);
  287. IF sqlca.SQLCode <> 0 THEN
  288. rslt = 0
  289. arg_msg = '插入标准模板表失败,' + sqlca.SQLErrText
  290. GOTO ext
  291. END IF
  292. opemp = publ_operator
  293. opdate = server_datetime
  294. FOR i = 1 TO UpperBound(mxs)
  295. insert into u_cmpl_modleMx
  296. (ModleID
  297. ,printid
  298. ,parmName
  299. ,displayName
  300. ,defaultValue
  301. ,if_useformula
  302. ,formula
  303. ,if_from_mtrl
  304. ,mtrlid
  305. ,mtrl_pro
  306. ,if_from_product
  307. ,product_pro
  308. ,wrkGrpid
  309. ,advancetime
  310. ,dscrp
  311. ,unit
  312. ,rowtype)
  313. values
  314. (:ll_id
  315. ,:i
  316. ,:mxs[i].parmName
  317. ,:mxs[i].displayName
  318. ,:mxs[i].defaultValue
  319. ,:mxs[i].if_useformula
  320. ,:mxs[i].formula
  321. ,:mxs[i].if_from_mtrl
  322. ,:mxs[i].mtrlid
  323. ,:mxs[i].mtrl_pro
  324. ,:mxs[i].if_from_product
  325. ,:mxs[i].product_pro
  326. ,:mxs[i].wrkGrpid
  327. ,:mxs[i].advancetime
  328. ,:mxs[i].dscrp
  329. ,:mxs[i].unit
  330. ,:mxs[i].rowtype);
  331. IF sqlca.SQLCode <> 0 THEN
  332. rslt = 0
  333. arg_msg = '插入标准模板明细失败,' + sqlca.SQLErrText
  334. GOTO ext
  335. END IF
  336. NEXT
  337. modleid = ll_id
  338. ELSE
  339. update u_cmpl_modle
  340. set ModleName = :ModleName
  341. ,opemp = :publ_operator
  342. ,opdate = :server_datetime
  343. ,modletype = :modletype
  344. Where modleid = :modleid;
  345. IF sqlca.SQLCode <> 0 THEN
  346. rslt = 0
  347. arg_msg = '更新标准模板失败,' + sqlca.SQLErrText
  348. GOTO ext
  349. END IF
  350. opemp = publ_operator
  351. opdate = server_datetime
  352. delete FROM u_cmpl_modleMx Where modleid = :modleid;
  353. IF sqlca.SQLCode <> 0 THEN
  354. rslt = 0
  355. arg_msg = '删除标准模板明细失败,' + sqlca.SQLErrText
  356. GOTO ext
  357. END IF
  358. FOR i = 1 TO UpperBound(mxs)
  359. insert into u_cmpl_modleMx
  360. (ModleID
  361. ,printid
  362. ,parmName
  363. ,displayName
  364. ,defaultValue
  365. ,if_useformula
  366. ,formula
  367. ,if_from_mtrl
  368. ,mtrlid
  369. ,mtrl_pro
  370. ,if_from_product
  371. ,product_pro
  372. ,wrkGrpid
  373. ,advancetime
  374. ,dscrp
  375. ,unit
  376. ,rowtype)
  377. values
  378. (:modleid
  379. ,:i
  380. ,:mxs[i].parmName
  381. ,:mxs[i].displayName
  382. ,:mxs[i].defaultValue
  383. ,:mxs[i].if_useformula
  384. ,:mxs[i].formula
  385. ,:mxs[i].if_from_mtrl
  386. ,:mxs[i].mtrlid
  387. ,:mxs[i].mtrl_pro
  388. ,:mxs[i].if_from_product
  389. ,:mxs[i].product_pro
  390. ,:mxs[i].wrkGrpid
  391. ,:mxs[i].advancetime
  392. ,:mxs[i].dscrp
  393. ,:mxs[i].unit
  394. ,:mxs[i].rowtype);
  395. IF sqlca.SQLCode <> 0 THEN
  396. rslt = 0
  397. arg_msg = '插入标准模板明细失败,' + sqlca.SQLErrText
  398. GOTO ext
  399. END IF
  400. NEXT
  401. END IF
  402. it_newbegin = FALSE
  403. it_updatebegin = FALSE
  404. ext:
  405. IF rslt = 0 THEN
  406. rollback;
  407. p_clearmx()
  408. ELSEIF rslt = 1 THEN
  409. commit;
  410. END IF
  411. RETURN rslt
  412. end function
  413. public function integer del (long arg_modleid, ref string arg_msg);int rslt = 1
  414. long ll_cnt
  415. SELECT COUNT(0) INTO :ll_cnt FROM u_cmpl_modle WHERE modleid = :arg_modleid;
  416. if sqlca.sqlcode <> 0 then
  417. rslt = 0
  418. arg_msg = '查询标准模板表失败,' + sqlca.sqlerrtext
  419. goto ext
  420. end if
  421. if ll_cnt < 1 then
  422. rslt = 0
  423. arg_msg = '标准模板不存在'
  424. goto ext
  425. end if
  426. DELETE FROM u_cmpl_modle WHERE modleid = :arg_modleid;
  427. if sqlca.sqlcode <> 0 then
  428. rslt = 0
  429. arg_msg = '删除标准模板失败,' + sqlca.sqlerrtext
  430. goto ext
  431. end if
  432. DELETE FROM u_cmpl_modlemx WHERE modleid = :arg_modleid;
  433. if sqlca.sqlcode <> 0 then
  434. rslt = 0
  435. arg_msg = '删除标准模板明细失败,' + sqlca.sqlerrtext
  436. goto ext
  437. end if
  438. ext:
  439. if rslt = 0 then
  440. rollback;
  441. else
  442. commit;
  443. end if
  444. return rslt
  445. end function
  446. on uo_cmpl_modle.create
  447. call super::create
  448. TriggerEvent( this, "constructor" )
  449. end on
  450. on uo_cmpl_modle.destroy
  451. TriggerEvent( this, "destructor" )
  452. call super::destroy
  453. end on