uo_workgroup_wage.sru 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. $PBExportHeader$uo_workgroup_wage.sru
  2. forward
  3. global type uo_workgroup_wage from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_workgroup_wage from nonvisualobject
  7. end type
  8. global uo_workgroup_wage uo_workgroup_wage
  9. type variables
  10. PUBLIC PROTECTEDWRITE Long wageid = 0
  11. PUBLIC PROTECTEDWRITE String wagemth = ''
  12. PUBLIC PROTECTEDWRITE Int Auditingflag
  13. PUBLIC PROTECTEDWRITE String Auditingemp
  14. PUBLIC PROTECTEDWRITE DateTime Auditingdate
  15. PUBLIC PROTECTEDWRITE String modemp
  16. PUBLIC PROTECTEDWRITE DateTime moddate
  17. PUBLIC PROTECTEDWRITE DateTime Opdate
  18. PUBLIC PROTECTEDWRITE String Opemp
  19. String operator = '' //建立操作员
  20. Long proid = 0
  21. String procode
  22. String proname
  23. String wagename
  24. Long workgroupid = 0
  25. String workgroupcode
  26. String workgroupname
  27. Decimal price
  28. Decimal qty
  29. String dscrp
  30. datetime taskworkdate
  31. Transaction commit_transaction //数据commit事务
  32. Boolean IT_NEWBEGIN = TRUE //新建标志
  33. Boolean IT_UPDATEBEGIN = FALSE//修改标志
  34. end variables
  35. forward prototypes
  36. public function integer p_reset ()
  37. public function integer newbegin (integer arg_wageid, string arg_wagemth, ref string arg_msg)
  38. public function integer save_wg_wage (integer arg_savetype, ref string arg_msg)
  39. public function integer p_getinfo (long arg_wageid, string arg_wagemth, long arg_wgid, long arg_proid, ref string arg_msg)
  40. public function integer cancel (long arg_wageid, string arg_wagemth, long arg_wgid, long arg_proid, ref string arg_msg, boolean arg_ifcommit)
  41. public function integer updatebegin (long arg_wageid, string arg_wagemth, long arg_workgroupid, long arg_proid, ref string arg_msg)
  42. public function integer auditing (long arg_wageid, string arg_wagemth, ref string arg_msg)
  43. public function integer cancel_audit (long arg_wageid, string arg_wagemth, ref string arg_msg)
  44. end prototypes
  45. public function integer p_reset ();//INT p_RESET()
  46. //清除对象
  47. wageid=0
  48. wagemth=''
  49. it_newbegin=FALSE
  50. it_updatebegin=FALSE
  51. RETURN 1
  52. end function
  53. public function integer newbegin (integer arg_wageid, string arg_wagemth, ref string arg_msg);long rslt=1,CNT=0
  54. if arg_wageid < 0 then
  55. arg_msg = '请选择工资项目'
  56. rslt = 0
  57. goto ext
  58. end if
  59. if arg_wagemth ='' then
  60. arg_msg = '请选择月份'
  61. rslt = 0
  62. goto ext
  63. end if
  64. p_reset()
  65. it_newbegin=TRUE
  66. it_updatebegin=FALSE
  67. wageid=arg_wageid
  68. wagemth=arg_wagemth
  69. ext:
  70. if rslt = 0 then p_reset()
  71. return rslt
  72. end function
  73. public function integer save_wg_wage (integer arg_savetype, ref string arg_msg);//arg_savetype=1新建 arg_savetype=2 修改
  74. DateTime server_datetime
  75. Long rslt = 1,cnt = 0,ls_i
  76. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  77. rslt = 0
  78. arg_msg = "非编辑状态不可以使用,操作取消"
  79. GOTO ext
  80. END IF
  81. //清除空值
  82. IF IsNull(proid) THEN proid = 0
  83. IF IsNull(workgroupid) THEN workgroupid = 0
  84. IF IsNull(procode) THEN procode = ''
  85. IF IsNull(proname) THEN proname = ''
  86. IF IsNull(wagename) THEN wagename = ''
  87. IF IsNull(price) THEN price = 0
  88. IF IsNull(qty) THEN qty = 0
  89. IF IsNull(dscrp) THEN dscrp = ''
  90. IF proid = 0 THEN // 工序为空,则不作任何处理
  91. rslt = 0
  92. arg_msg = '错误工序号'
  93. GOTO ext
  94. END IF
  95. IF workgroupid = 0 THEN // 工作组为空,则不作任何处理
  96. rslt = 0
  97. arg_msg = '错误工作组'
  98. GOTO ext
  99. END IF
  100. IF price <= 0 THEN // 单价小于0,则不作任何处理
  101. rslt = 0
  102. arg_msg = '单价小于0'
  103. GOTO ext
  104. END IF
  105. IF qty <= 0 THEN // 数量小于0,则不作任何处理
  106. rslt = 0
  107. arg_msg = '数量小于或等于0'
  108. GOTO ext
  109. END IF
  110. cnt = 0
  111. //检查工序ID
  112. SELECT count(*)
  113. INTO :cnt
  114. FROM u_sc_workprocedure
  115. Where u_sc_workprocedure.proid = :proid ;
  116. IF commit_transaction.SQLCode <> 0 THEN
  117. rslt = 0
  118. arg_msg = "查询操作失败,工序ID"
  119. GOTO ext
  120. END IF
  121. IF cnt = 0 THEN
  122. rslt = 0
  123. arg_msg = "错误的工序编号: "+String(procode)
  124. GOTO ext
  125. END IF
  126. cnt = 0
  127. //检查工作组ID
  128. SELECT count(*)
  129. INTO :cnt
  130. FROM u_workgroup
  131. Where u_workgroup.workgroupid = :workgroupid ;
  132. IF commit_transaction.SQLCode <> 0 THEN
  133. rslt = 0
  134. arg_msg = "查询操作失败,工作组ID"
  135. GOTO ext
  136. END IF
  137. IF cnt = 0 THEN
  138. rslt = 0
  139. arg_msg = "错误的工作组: "+String(workgroupcode)
  140. GOTO ext
  141. END IF
  142. cnt = 0
  143. //检查工资项目ID
  144. SELECT count(*)
  145. INTO :cnt
  146. FROM u_gz_wageitem
  147. Where u_gz_wageitem.wageid = :wageid ;
  148. IF commit_transaction.SQLCode <> 0 THEN
  149. rslt = 0
  150. arg_msg = "查询操作失败,工资项目ID"
  151. GOTO ext
  152. END IF
  153. IF cnt = 0 THEN
  154. rslt = 0
  155. arg_msg = "错误的工资项目编号: "+String(wagename)
  156. GOTO ext
  157. END IF
  158. SELECT Top 1 getdate() INTO :server_datetime FROM u_user USING commit_transaction ;
  159. //取得系统时间,借用操作员表
  160. IF commit_transaction.SQLCode <> 0 THEN
  161. rslt = 0
  162. arg_msg = "查询操作失败,日期 "
  163. GOTO ext
  164. END IF
  165. ////////////////////////////////////////////////开始区分:新建/更新 处理
  166. IF arg_savetype = 1 THEN //新建
  167. INSERT INTO u_scwg_taskwork
  168. (wageid,
  169. workgroupid,
  170. proid,
  171. procode,
  172. proname,
  173. wagemth,
  174. price,
  175. qty,
  176. dscrp,
  177. Opdate,
  178. Opemp,
  179. taskworkdate
  180. )
  181. VALUES(
  182. :wageid,
  183. :workgroupid,
  184. :proid,
  185. :procode,
  186. :proname,
  187. :wagemth,
  188. :price,
  189. :qty,
  190. :dscrp,
  191. :server_datetime,
  192. :operator,
  193. :taskworkdate
  194. )USING commit_transaction;
  195. IF commit_transaction.SQLCode <> 0 THEN
  196. ROLLBACK USING commit_transaction;
  197. MessageBox('系统提示',"因网络或其它原因导致插入操作失败>>"+"~n"+commit_transaction.SQLErrText)
  198. RETURN 0
  199. END IF
  200. ELSE //////////////////////////////////////////////////更新
  201. UPDATE u_scwg_taskwork
  202. SET
  203. procode = :procode,
  204. proname = :proname,
  205. price = :price,
  206. qty = :qty,
  207. dscrp = :dscrp,
  208. modemp = :operator,
  209. moddate = getdate(),
  210. taskworkdate=:taskworkdate
  211. WHERE u_scwg_taskwork.wageid = :wageid
  212. AND u_scwg_taskwork.wagemth = :wagemth
  213. AND u_scwg_taskwork.workgroupid = :workgroupid
  214. AND u_scwg_taskwork.proid = :proid
  215. AND Auditingflag = 0 USING commit_transaction;
  216. IF commit_transaction.SQLCode <> 0 OR commit_transaction.SQLNRows <= 0 THEN
  217. rslt = 0
  218. arg_msg = "因网络或其它原因导致更新工作组计件单操作失败"+"~n"+commit_transaction.SQLErrText
  219. ROLLBACK USING commit_transaction;
  220. GOTO ext
  221. END IF
  222. END IF
  223. it_newbegin = FALSE
  224. it_updatebegin = FALSE
  225. ext:
  226. IF rslt = 1 THEN
  227. COMMIT USING commit_transaction;
  228. END IF
  229. Return(rslt)
  230. end function
  231. public function integer p_getinfo (long arg_wageid, string arg_wagemth, long arg_wgid, long arg_proid, ref string arg_msg);Int rslt = 1
  232. SELECT procode,
  233. proname,
  234. price,
  235. qty,
  236. Dscrp,
  237. Auditingflag,
  238. Auditingemp,
  239. Auditingdate,
  240. modemp,
  241. moddate,
  242. Opdate,
  243. Opemp
  244. into
  245. :procode,
  246. :proname,
  247. :price,
  248. :qty,
  249. :Dscrp,
  250. :Auditingflag,
  251. :Auditingemp,
  252. :Auditingdate,
  253. :modemp,
  254. :moddate,
  255. :Opdate,
  256. :Opemp
  257. FROM u_scwg_taskwork
  258. WHERE u_scwg_taskwork.wageid = :arg_wageid AND
  259. u_scwg_taskwork.wagemth = :arg_wagemth AND
  260. u_scwg_taskwork.workgroupid = :arg_wgid AND
  261. u_scwg_taskwork.proid = :arg_proid USING commit_transaction;
  262. IF commit_transaction.SQLCode <> 0 THEN
  263. rslt = 0
  264. ARG_MSG = '查询单据内容失败(错误单据唯一码),工作组计件单,~n'+sqlca.sqlerrtext
  265. GOTO ext
  266. END IF
  267. select workgroupcode,workgroupname
  268. into :workgroupcode,:workgroupname
  269. from u_workgroup
  270. where u_workgroup.workgroupid=:arg_wgid;
  271. IF commit_transaction.SQLCode <> 0 THEN
  272. rslt = 0
  273. ARG_MSG = '查询单据内容失败(错误单据唯一码),工作组'
  274. GOTO ext
  275. END IF
  276. wageid = arg_wageid
  277. wagemth = arg_wagemth
  278. proid = arg_proid
  279. workgroupid = arg_wgid
  280. ext:
  281. RETURN rslt
  282. end function
  283. public function integer cancel (long arg_wageid, string arg_wagemth, long arg_wgid, long arg_proid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
  284. //0 FAIL, 1 SUCCESS
  285. Int rslt = 1
  286. IF arg_wageid < 0 THEN
  287. arg_msg = '请选择工资项目'
  288. rslt = 0
  289. GOTO ext
  290. END IF
  291. IF arg_wgid <= 0 THEN
  292. rslt = 0
  293. arg_msg = '错误工作组唯一码'
  294. GOTO ext
  295. END IF
  296. IF arg_wagemth = '' THEN
  297. arg_msg = '请选择月份'
  298. rslt = 0
  299. GOTO ext
  300. END IF
  301. IF arg_proid <= 0 THEN
  302. rslt = 0
  303. arg_msg = '错误工序唯一码'
  304. GOTO ext
  305. END IF
  306. IF p_getinfo(arg_wageid,arg_wagemth,arg_wgid,arg_proid,arg_msg) = 0 THEN
  307. rslt = 0
  308. GOTO ext
  309. END IF
  310. IF Auditingflag <> 0 THEN
  311. rslt = 0
  312. arg_msg = "工作组:"+workgroupcode+",工序:"+procode+",已经审核,不可以删除"
  313. GOTO ext
  314. END IF
  315. DELETE FROM u_scwg_taskwork
  316. WHERE u_scwg_taskwork.wageid = :arg_wageid AND u_scwg_taskwork.wagemth = :arg_wagemth AND
  317. u_scwg_taskwork.workgroupid = :arg_wgid AND u_scwg_taskwork.proid = :arg_proid and
  318. u_scwg_taskwork.Auditingflag = 0 USING commit_transaction;
  319. IF commit_transaction.SQLCode <> 0 THEN
  320. rslt = 0
  321. arg_msg = "删除操作失败"+"~n"+commit_transaction.SQLErrText
  322. ROLLBACK USING commit_transaction;
  323. GOTO ext
  324. END IF
  325. it_newbegin = FALSE
  326. it_updatebegin = FALSE
  327. IF arg_ifcommit THEN
  328. COMMIT USING commit_transaction;
  329. END IF
  330. ext:
  331. p_reset()
  332. Return (rslt)
  333. end function
  334. public function integer updatebegin (long arg_wageid, string arg_wagemth, long arg_workgroupid, long arg_proid, ref string arg_msg);////UPDATEbegin(long arg_outwareid,INT arg_billtype,long arg_relid)
  335. ////从置对象,设定业务类型与关联ID,准备更新单据
  336. ////0 fail 1 success
  337. int rslt=1,CNT=0
  338. IF arg_wageid<=0 THEN
  339. rslt=0
  340. arg_wageid=0
  341. goto ext
  342. end if
  343. cnt = 0
  344. //检查工序ID
  345. SELECT count(*)
  346. INTO :cnt
  347. FROM u_sc_workprocedure
  348. Where u_sc_workprocedure.proid = :arg_proid ;
  349. IF sqlca.SQLCode <> 0 THEN
  350. rslt = 0
  351. arg_msg = "查询操作失败,工序ID"
  352. GOTO ext
  353. END IF
  354. IF cnt = 0 THEN
  355. rslt = 0
  356. arg_msg = "错误的工序编号 "
  357. GOTO ext
  358. END IF
  359. cnt = 0
  360. //检查工作组ID
  361. SELECT count(*)
  362. INTO :cnt
  363. FROM u_workgroup
  364. Where u_workgroup.workgroupid = :arg_workgroupid ;
  365. IF sqlca.SQLCode <> 0 THEN
  366. rslt = 0
  367. arg_msg = "查询操作失败,工作组ID"
  368. GOTO ext
  369. END IF
  370. IF cnt = 0 THEN
  371. rslt = 0
  372. arg_msg = "错误的工作组 "
  373. GOTO ext
  374. END IF
  375. cnt = 0
  376. //检查工资项目ID
  377. SELECT count(*)
  378. INTO :cnt
  379. FROM u_gz_wageitem
  380. Where u_gz_wageitem.wageid = :arg_wageid ;
  381. IF sqlca.SQLCode <> 0 THEN
  382. rslt = 0
  383. arg_msg = "查询操作失败,工资项目ID"
  384. GOTO ext
  385. END IF
  386. IF cnt = 0 THEN
  387. rslt = 0
  388. arg_msg = "错误的工资项目"
  389. GOTO ext
  390. END IF
  391. wageid=arg_wageid
  392. wagemth=arg_wagemth
  393. workgroupid=arg_workgroupid
  394. proid=arg_proid
  395. it_newbegin=FALSE
  396. it_updatebegin=TRUE
  397. ext:
  398. IF rslt=0 THEN p_RESET()
  399. return rslt
  400. end function
  401. public function integer auditing (long arg_wageid, string arg_wagemth, ref string arg_msg);Int rslt = 1
  402. Long ll_wgid,ll_wgid_arr[],count,ll_i
  403. Long ll_workgroupid
  404. Long ll_empid,ll_empid_arr[],ll_mxt,ll_j
  405. Int cnt_wg_emp = 0
  406. String ls_workgroupcode
  407. Long ll_flagnum
  408. long cnt
  409. //检查该月份,该工资项目是否已开工资变更单
  410. cnt = 0
  411. SELECT count(*)
  412. INTO :cnt
  413. FROM u_wage_change
  414. WHERE wageid = :arg_wageid
  415. AND wagemth = :arg_wagemth;
  416. IF sqlca.SQLCode <> 0 THEN
  417. rslt = 0
  418. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  419. GOTO ext
  420. END IF
  421. IF cnt > 0 THEN
  422. rslt = 0
  423. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  424. GOTO ext
  425. END IF
  426. //查询是否存在已经审核的记录
  427. SELECT count(*)
  428. INTO :ll_flagnum
  429. FROM u_scwg_taskwork
  430. Where u_scwg_taskwork.wageid = :arg_wageid AND u_scwg_taskwork.wagemth = :arg_wagemth AND u_scwg_taskwork.Auditingflag = 1 USING commit_transaction;
  431. IF commit_transaction.SQLCode <> 0 THEN
  432. rslt = 0
  433. arg_msg = '查询操作失败,已经审核数量'
  434. GOTO ext
  435. END IF
  436. IF ll_flagnum > 0 THEN
  437. rslt = 0
  438. arg_msg = '该月份的工资项目存在部分已审核的记录,请先撤审'
  439. GOTO ext
  440. END IF
  441. DECLARE wgid CURSOR FOR
  442. SELECT DISTINCT (workgroupid)
  443. FROM u_scwg_taskwork
  444. WHERE u_scwg_taskwork.wageid = :arg_wageid
  445. AND u_scwg_taskwork.wagemth = :arg_wagemth
  446. AND u_scwg_taskwork.Auditingflag = 0
  447. ORDER BY u_scwg_taskwork.workgroupid ASC
  448. USING commit_transaction;
  449. OPEN wgid;
  450. FETCH wgid INTO :ll_wgid;
  451. DO WHILE commit_transaction.SQLCode = 0
  452. count++
  453. ll_wgid_arr[count] = ll_wgid
  454. FETCH wgid INTO :ll_wgid;
  455. LOOP
  456. CLOSE wgid;
  457. FOR ll_i = 1 TO count
  458. cnt_wg_emp = 0
  459. SELECT COUNT(*) , u_workgroupmx.workgroupid,u_workgroup.workgroupcode
  460. INTO :cnt_wg_emp,:ll_workgroupid,:ls_workgroupcode
  461. FROM u_workgroupmx INNER JOIN
  462. u_workgroup ON u_workgroupmx.workgroupid = u_workgroup.workgroupid
  463. WHERE (u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i])
  464. Group By u_workgroup.workgroupcode, u_workgroupmx.workgroupid;
  465. IF commit_transaction.SQLCode <> 0 THEN
  466. rslt = 0
  467. arg_msg = '查询操作失败,组成员'
  468. GOTO ext
  469. END IF
  470. IF cnt_wg_emp <= 0 THEN
  471. rslt = 0
  472. arg_msg = '编号为:'+ls_workgroupcode+'的工作组没有成员,请先建立工作组成员'
  473. GOTO ext
  474. END IF
  475. ll_mxt = 0
  476. DECLARE WG_EMP CURSOR FOR
  477. SELECT empid
  478. FROM u_workgroupmx
  479. WHERE u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i]
  480. Order By u_workgroupmx.empid Asc;
  481. OPEN WG_EMP;
  482. FETCH WG_EMP INTO :ll_empid;
  483. DO WHILE commit_transaction.SQLCode = 0
  484. ll_mxt++
  485. ll_empid_arr[ll_mxt] = ll_empid
  486. FETCH WG_EMP INTO :ll_empid;
  487. LOOP
  488. CLOSE WG_EMP;
  489. IF ll_mxt > 0 THEN
  490. //该组金额转移到组中第一人
  491. INSERT INTO u_scwg_taskwork_money
  492. (wageid,
  493. workgroupid ,
  494. empid ,
  495. wagemth ,
  496. groupamt,
  497. empamt,
  498. Auditingflag,
  499. Opdate,
  500. Opemp
  501. )
  502. SELECT wageid,
  503. workgroupid,
  504. :ll_empid_arr[1],
  505. wagemth,
  506. sum(u_scwg_taskwork.price*u_scwg_taskwork.qty),
  507. sum(u_scwg_taskwork.price*u_scwg_taskwork.qty),
  508. 0,
  509. getdate(),
  510. :publ_operator
  511. FROM u_scwg_taskwork
  512. WHERE u_scwg_taskwork.wageid = :arg_wageid
  513. AND u_scwg_taskwork.wagemth = :arg_wagemth
  514. AND u_scwg_taskwork.workgroupid = :ll_wgid_arr[ll_i]
  515. AND u_scwg_taskwork.Auditingflag = 0
  516. GROUP BY u_scwg_taskwork.wageid,
  517. u_scwg_taskwork.wagemth,
  518. u_scwg_taskwork.workgroupid
  519. USING commit_transaction;
  520. IF commit_transaction.SQLCode <> 0 THEN
  521. rslt = 0
  522. arg_msg = '插入操作失败,原因:'+commit_transaction.SQLErrText
  523. GOTO ext
  524. END IF
  525. //其他组员的金额为0
  526. IF ll_mxt >= 2 THEN
  527. FOR ll_j = 2 TO ll_mxt
  528. INSERT INTO u_scwg_taskwork_money
  529. (wageid,
  530. workgroupid ,
  531. empid ,
  532. wagemth ,
  533. groupamt,
  534. empamt,
  535. Auditingflag,
  536. Opdate,
  537. Opemp
  538. )
  539. SELECT wageid,
  540. workgroupid,
  541. :ll_empid_arr[ll_j],
  542. wagemth,
  543. sum(u_scwg_taskwork.price*u_scwg_taskwork.qty),
  544. 0,
  545. 0,
  546. getdate(),
  547. :publ_operator
  548. FROM u_scwg_taskwork
  549. WHERE u_scwg_taskwork.wageid = :arg_wageid
  550. AND u_scwg_taskwork.wagemth = :arg_wagemth
  551. AND u_scwg_taskwork.workgroupid = :ll_wgid_arr[ll_i]
  552. AND u_scwg_taskwork.Auditingflag = 0
  553. GROUP BY u_scwg_taskwork.wageid,
  554. u_scwg_taskwork.wagemth,
  555. u_scwg_taskwork.workgroupid
  556. USING commit_transaction;
  557. IF commit_transaction.SQLCode <> 0 THEN
  558. rslt = 0
  559. arg_msg = '插入操作失败,原因:'+commit_transaction.SQLErrText
  560. GOTO ext
  561. END IF
  562. NEXT
  563. END IF
  564. END IF
  565. NEXT
  566. //更新审核标志
  567. UPDATE u_scwg_taskwork
  568. SET u_scwg_taskwork.Auditingflag = 1,
  569. u_scwg_taskwork.Auditingemp = :publ_operator,
  570. u_scwg_taskwork.Auditingdate = getdate()
  571. WHERE u_scwg_taskwork.wageid = :arg_wageid
  572. AND u_scwg_taskwork.wagemth = :arg_wagemth
  573. AND u_scwg_taskwork.Auditingflag = 0
  574. USING commit_transaction;
  575. IF commit_transaction.SQLCode <> 0 THEN
  576. rslt = 0
  577. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  578. GOTO ext
  579. END IF
  580. ext:
  581. IF rslt = 0 THEN
  582. ROLLBACK USING commit_transaction;
  583. else
  584. commit USING commit_transaction;
  585. END IF
  586. RETURN rslt
  587. end function
  588. public function integer cancel_audit (long arg_wageid, string arg_wagemth, ref string arg_msg);Int rslt = 1
  589. Long ll_flagnum
  590. DateTime ls_null
  591. SetNull(ls_null)
  592. //查询是否存在审核的记录
  593. ll_flagnum = 0
  594. SELECT count(*)
  595. INTO :ll_flagnum
  596. FROM u_scwg_taskwork
  597. WHERE u_scwg_taskwork.wageid = :arg_wageid
  598. AND u_scwg_taskwork.wagemth = :arg_wagemth
  599. AND u_scwg_taskwork.Auditingflag = 1 USING commit_transaction;
  600. IF commit_transaction.SQLCode <> 0 THEN
  601. rslt = 0
  602. arg_msg = '查询操作失败,已经审核数量'
  603. GOTO ext
  604. END IF
  605. IF ll_flagnum <= 0 THEN
  606. rslt = 0
  607. arg_msg = '该月份的工资项目不存在审核的记录'
  608. GOTO ext
  609. END IF
  610. //查询相关工资表是否已经通过审核
  611. ll_flagnum = 0
  612. SELECT count(*)
  613. INTO :ll_flagnum
  614. FROM u_scwg_taskwork_money
  615. WHERE u_scwg_taskwork_money.wageid = :arg_wageid
  616. AND u_scwg_taskwork_money.wagemth = :arg_wagemth
  617. AND u_scwg_taskwork_money.Auditingflag = 1 USING commit_transaction;
  618. IF commit_transaction.SQLCode <> 0 THEN
  619. rslt = 0
  620. arg_msg = '查询操作失败,已经审核数量,工资表'
  621. GOTO ext
  622. END IF
  623. IF ll_flagnum > 0 THEN
  624. rslt = 0
  625. arg_msg = '该月份的工资项目部分已通过分配审核'
  626. GOTO ext
  627. END IF
  628. //先删除工资表记录
  629. DELETE FROM u_scwg_taskwork_money
  630. Where u_scwg_taskwork_money.wageid = :arg_wageid AND u_scwg_taskwork_money.wagemth = :arg_wagemth USING commit_transaction;
  631. IF commit_transaction.SQLCode <> 0 THEN
  632. rslt = 0
  633. arg_msg = '删除工资表操作失败,原因:'+commit_transaction.SQLErrText
  634. GOTO ext
  635. END IF
  636. //更新审核标志
  637. UPDATE u_scwg_taskwork
  638. SET u_scwg_taskwork.Auditingflag = 0,
  639. u_scwg_taskwork.Auditingemp = '',
  640. u_scwg_taskwork.Auditingdate = :ls_null
  641. Where u_scwg_taskwork.wageid = :arg_wageid AND u_scwg_taskwork.wagemth = :arg_wagemth AND u_scwg_taskwork.Auditingflag = 1 USING commit_transaction;
  642. IF commit_transaction.SQLCode <> 0 THEN
  643. rslt = 0
  644. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  645. GOTO ext
  646. END IF
  647. ext:
  648. IF rslt = 0 THEN
  649. ROLLBACK USING commit_transaction;
  650. ELSE
  651. COMMIT USING commit_transaction;
  652. END IF
  653. RETURN rslt
  654. end function
  655. on uo_workgroup_wage.create
  656. call super::create
  657. TriggerEvent( this, "constructor" )
  658. end on
  659. on uo_workgroup_wage.destroy
  660. TriggerEvent( this, "destructor" )
  661. call super::destroy
  662. end on