uo_award_punish.sru 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865
  1. $PBExportHeader$uo_award_punish.sru
  2. forward
  3. global type uo_award_punish from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_award_punish from nonvisualobject
  7. end type
  8. global uo_award_punish uo_award_punish
  9. type variables
  10. public protectedwrite long billid //计件单自动增量id
  11. public protectedwrite string billcode //计件单的唯一编号
  12. public protectedwrite datetime opdate //建立时间,自动
  13. public protectedwrite string opemp //建立人
  14. public protectedwrite datetime moddate //修改时间,自动
  15. public protectedwrite string modemp //修改人
  16. public protectedwrite int flag=0 //审核标志
  17. public protectedwrite datetime auditingdate //审核时间
  18. public protectedwrite string auditingrep //审核操作员
  19. int billtype
  20. long empid
  21. datetime billdate
  22. decimal award_punish_amt
  23. long wageid
  24. string reason
  25. long deptid
  26. string rep=''
  27. long wagemth
  28. decimal khqty
  29. uo_wage u_wage
  30. private:
  31. boolean it_newbegin=false //新建标志
  32. boolean it_updatebegin=false//修改标志
  33. end variables
  34. forward prototypes
  35. public function integer p_reset ()
  36. public function integer newbegin (ref string arg_msg)
  37. public function integer updatebegin (long arg_billid, ref string arg_msg)
  38. public function integer c_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  39. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  40. public function integer auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  41. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  42. public function integer auditmx (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  43. public function integer cauditmx (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  44. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  45. end prototypes
  46. public function integer p_reset ();//INT p_RESET()
  47. //清除对象及其明细
  48. billtype = 0
  49. billid=0
  50. billcode=''
  51. opemp=''
  52. auditingrep=''
  53. flag=0
  54. empid=0
  55. award_punish_amt=0
  56. reason=''
  57. wageid=0
  58. rep=''
  59. deptid=0
  60. khqty = 0
  61. it_newbegin=FALSE
  62. it_updatebegin=FALSE
  63. RETURN 1
  64. end function
  65. public function integer newbegin (ref string arg_msg);p_reset()
  66. it_newbegin=TRUE
  67. it_updatebegin=FALSE
  68. return 1
  69. end function
  70. public function integer updatebegin (long arg_billid, ref string arg_msg);//====================================================================
  71. // Function: updatebegin(arg_billid,arg_msg)
  72. //--------------------------------------------------------------------
  73. // Description:
  74. //--------------------------------------------------------------------
  75. // Arguments:
  76. // value long arg_billid
  77. // reference string arg_msg
  78. //--------------------------------------------------------------------
  79. // Returns: integer
  80. //--------------------------------------------------------------------
  81. // Author: yyx Date: 2003.11.21
  82. //--------------------------------------------------------------------
  83. // Modify History:
  84. //
  85. //====================================================================
  86. Int rslt = 1
  87. IF arg_billid <= 0 THEN
  88. billid = 0
  89. arg_msg = '错误的单据ID'
  90. GOTO ext
  91. END IF
  92. SELECT u_gz_award_punish.billcode,
  93. u_gz_award_punish.billdate,
  94. u_gz_award_punish.wagemth,
  95. u_gz_award_punish.wageid,
  96. u_gz_award_punish.empid,
  97. u_gz_award_punish.award_punish_amt,
  98. u_gz_award_punish.reason,
  99. u_gz_award_punish.deptid,
  100. u_gz_award_punish.rep,
  101. u_gz_award_punish.billtype,
  102. u_gz_award_punish.flag,
  103. u_gz_award_punish.khqty
  104. Into :billcode,
  105. :billdate,
  106. :wagemth,
  107. :wageid,
  108. :empid,
  109. :award_punish_amt,
  110. :reason,
  111. :deptid,
  112. :rep,
  113. :billtype,
  114. :flag,
  115. :khqty
  116. From u_gz_award_punish
  117. Where u_gz_award_punish.billid = :arg_billid;
  118. IF sqlca.SQLCode <> 0 THEN
  119. rslt = 0
  120. arg_msg = '查询数据操作失败,奖罚单'+sqlca.SQLErrText
  121. GOTO ext
  122. END IF
  123. IF flag = 1 THEN
  124. rslt = 0
  125. arg_msg = '单据已经审核,不可以修改'
  126. GOTO ext
  127. END IF
  128. billid = arg_billid
  129. it_newbegin = False
  130. it_updatebegin = True
  131. ext:
  132. IF rslt = 0 THEN p_reset()
  133. RETURN rslt
  134. end function
  135. public function integer c_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  136. Int rslt = 1
  137. DateTime null_server_dt
  138. SetNull(null_server_dt)
  139. IF f_check_wage_audit(arg_wagemth,-1,arg_msg) = 0 THEN
  140. rslt = 0
  141. arg_msg = arg_msg + ',不能撤审'
  142. GOTO ext
  143. END IF
  144. //检查该月份,该工资项目是否已开工资变更单
  145. cnt = 0
  146. SELECT count(*)
  147. INTO :cnt
  148. FROM u_wage_change
  149. WHERE wageid = :arg_wageid
  150. AND wagemth = :arg_wagemth;
  151. IF sqlca.SQLCode <> 0 THEN
  152. rslt = 0
  153. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  154. GOTO ext
  155. END IF
  156. IF cnt > 0 THEN
  157. rslt = 0
  158. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  159. GOTO ext
  160. END IF
  161. SELECT count(*) INTO :cnt
  162. FROM u_gz_award_punish
  163. WHERE wagemth = :arg_wagemth
  164. AND wageid = :arg_wageid
  165. AND flag = 1;
  166. IF sqlca.SQLCode <> 0 THEN
  167. rslt = 0
  168. arg_msg = '查询奖罚单失败,原因>>'+sqlca.SQLErrText
  169. GOTO ext
  170. END IF
  171. IF cnt = 0 THEN
  172. rslt = 0
  173. arg_msg = '该月的奖罚单未审核,不用撤审!'
  174. GOTO ext
  175. END IF
  176. cnt = 0
  177. SELECT count(*) INTO :cnt FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  178. IF sqlca.SQLCode <> 0 THEN
  179. rslt = 0
  180. arg_msg = '查询工资项目失败,原因>>'+sqlca.SQLErrText
  181. GOTO ext
  182. END IF
  183. IF cnt = 0 THEN
  184. rslt = 0
  185. arg_msg = '不存在该工资项目,原因>>'+sqlca.SQLErrText
  186. GOTO ext
  187. END IF
  188. IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,FALSE) = 0 THEN
  189. rslt = 0
  190. GOTO ext
  191. END IF
  192. UPDATE u_gz_award_punish SET
  193. flag = 0,
  194. Auditrep = '',
  195. Auditdate = :null_server_dt
  196. Where wagemth = :arg_wagemth AND flag = 1 AND wageid = :arg_wageid;
  197. IF sqlca.SQLCode <> 0 THEN
  198. arg_msg = '更新奖罚单失败,原因:'+sqlca.SQLErrText
  199. rslt = 0
  200. GOTO ext
  201. END IF
  202. ext:
  203. IF rslt = 0 THEN
  204. ROLLBACK;
  205. ELSEIF rslt = 1 AND arg_ifcommit THEN
  206. COMMIT;
  207. END IF
  208. RETURN rslt
  209. end function
  210. public function integer save (ref string arg_msg, boolean arg_ifcommit);//====================================================================
  211. // Function: save(arg_msg,arg_ifcommit)
  212. //--------------------------------------------------------------------
  213. // Description:
  214. //--------------------------------------------------------------------
  215. // Arguments:
  216. // reference string arg_msg
  217. // value boolean arg_ifcommit
  218. //--------------------------------------------------------------------
  219. // Returns: integer
  220. //--------------------------------------------------------------------
  221. // Author: yyx Date: 2003.11.21
  222. //--------------------------------------------------------------------
  223. // Modify History:
  224. //
  225. //====================================================================
  226. Integer rslt = 1,cnt = 0,i
  227. DateTime server_dt
  228. Long ls_newid
  229. IF IsNull(empid) THEN empid = 0
  230. IF IsNull(award_punish_amt) THEN award_punish_amt = 0
  231. IF IsNull(wageid) THEN wageid = 0
  232. IF IsNull(wagemth) THEN wagemth = 0
  233. IF IsNull(reason) THEN reason = ''
  234. IF IsNull(deptid) THEN deptid = 0
  235. IF IsNull(rep) THEN rep = ''
  236. IF IsNull(billtype) THEN billtype = 0
  237. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  238. rslt = 0
  239. arg_msg = "非编辑状态不可以提交"
  240. GOTO ext
  241. END IF
  242. IF billtype = 0 THEN
  243. arg_msg = '单据类形错误,1-奖单,2-罚单'
  244. rslt = 0
  245. GOTO ext
  246. END IF
  247. cnt = 0
  248. SELECT count(*) INTO :cnt
  249. FROM u_rs_empinfo
  250. Where empid = :empid;
  251. IF sqlca.SQLCode <> 0 THEN
  252. arg_msg = '查询员工资料失败'
  253. rslt = 0
  254. GOTO ext
  255. END IF
  256. IF cnt = 0 THEN
  257. arg_msg = '没有选择员工或没有该员工资料'
  258. rslt = 0
  259. GOTO ext
  260. ELSEIF cnt > 1 THEN
  261. arg_msg = '员工资料重复'
  262. rslt = 0
  263. GOTO ext
  264. END IF
  265. cnt = 0
  266. SELECT count(*) INTO :cnt
  267. FROM u_gz_wageitem
  268. Where wageid = :wageid;
  269. IF sqlca.SQLCode <> 0 THEN
  270. arg_msg = '查询工资项目资料失败'
  271. rslt = 0
  272. GOTO ext
  273. END IF
  274. IF cnt > 1 THEN
  275. arg_msg = '工资项目重复'
  276. rslt = 0
  277. GOTO ext
  278. END IF
  279. cnt = 0
  280. SELECT count(*) INTO :cnt
  281. FROM cw_department
  282. Where departmentid = :deptid;
  283. IF sqlca.SQLCode <> 0 THEN
  284. arg_msg = '查询部门资料失败'
  285. rslt = 0
  286. GOTO ext
  287. END IF
  288. IF cnt > 1 THEN
  289. arg_msg = '部门资料重复'
  290. rslt = 0
  291. GOTO ext
  292. END IF
  293. IF wagemth = 0 THEN
  294. arg_msg = '错误的工资月份'
  295. rslt = 0
  296. GOTO ext
  297. END IF
  298. IF award_punish_amt < 0 THEN
  299. arg_msg = '请输入正确的金额'
  300. rslt = 0
  301. GOTO ext
  302. END IF
  303. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  304. //取得系统时间,借用操作员表
  305. IF sqlca.SQLCode <> 0 THEN
  306. rslt = 0
  307. arg_msg = "查询操作失败,日期 "
  308. GOTO ext
  309. END IF
  310. //IF f_check_inoutdate(0,billdate,FALSE,arG_MSG) = 0 THEN
  311. // rslt = 0
  312. // GOTO ext
  313. //END IF
  314. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  315. IF billid = 0 THEN //新建
  316. ls_newid = f_sys_scidentity(0,"u_gz_award_punish","billid",arg_msg,TRUE,id_sqlca)
  317. IF ls_newid <= 0 THEN
  318. rslt = 0
  319. GOTO ext
  320. END IF
  321. billcode = getid(0,"JF",Date(server_dt),TRUE,sqlca) //取得新单据编号
  322. IF billcode = "err" THEN
  323. billcode = ''
  324. rslt = 0
  325. arg_msg = "无法获取单据编号"
  326. GOTO ext
  327. END IF
  328. INSERT INTO u_gz_award_punish (
  329. billid,
  330. billcode,
  331. billdate,
  332. Wagemth,
  333. wageid,
  334. empid,
  335. award_punish_amt,
  336. reason,
  337. deptid,
  338. rep,
  339. billtype,
  340. opdate,
  341. opemp,
  342. khqty)
  343. VALUES (
  344. :ls_newid,
  345. :billcode,
  346. :billdate,
  347. :Wagemth,
  348. :wageid,
  349. :empid,
  350. :award_punish_amt,
  351. :reason,
  352. :deptid,
  353. :rep,
  354. :billtype,
  355. :server_dt,
  356. :publ_operator,
  357. :khqty);
  358. IF sqlca.SQLCode <> 0 THEN
  359. rslt = 0
  360. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  361. GOTO ext
  362. END IF
  363. billid = ls_newid
  364. ELSE //////////////////////////////////////////////// //更新
  365. UPDATE u_gz_award_punish
  366. SET billdate = :billdate,
  367. wageid = :wageid,
  368. empid = :empid,
  369. award_punish_amt = :award_punish_amt,
  370. reason = :reason,
  371. deptid = :deptid,
  372. rep = :rep,
  373. moddate = :server_dt,
  374. modemp = :modemp,
  375. billtype = :billtype,
  376. Wagemth = :Wagemth,
  377. khqty = :khqty
  378. WHERE u_gz_award_punish.billid = :billid
  379. AND flag = 0;
  380. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  381. rslt = 0
  382. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  383. GOTO ext
  384. END IF
  385. END IF
  386. it_newbegin = FALSE
  387. it_updatebegin = FALSE
  388. ext:
  389. IF rslt = 0 THEN
  390. ROLLBACK;
  391. ELSEIF rslt = 1 AND arg_ifcommit THEN
  392. COMMIT;
  393. END IF
  394. Return(rslt)
  395. end function
  396. public function integer auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  397. Int rslt = 1
  398. Decimal ls_emp_sumwage
  399. datastore ds_emp_sumwage
  400. //cnt = 0
  401. //SELECT count(*) INTO :cnt
  402. // FROM u_gz_award_punish
  403. // WHERE wagemth = :arg_wagemth
  404. // AND wageid = :arg_wageid
  405. // AND flag = 1;
  406. //IF sqlca.SQLCode <> 0 THEN
  407. // rslt = 0
  408. // arg_msg = '查询奖罚单明细失败!原因:'+sqlca.SQLErrText
  409. // GOTO ext
  410. //END IF
  411. //
  412. //IF cnt > 0 THEN
  413. // rslt = 0
  414. // arg_msg = '该月的奖罚单已审核,审核前请先执行撤审!'
  415. // GOTO ext
  416. //END IF
  417. cnt = 0
  418. SELECT count(*) INTO :cnt
  419. FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  420. IF sqlca.SQLCode <> 0 THEN
  421. rslt = 0
  422. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  423. GOTO ext
  424. END IF
  425. IF cnt = 0 THEN
  426. rslt = 0
  427. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  428. GOTO ext
  429. END IF
  430. ds_emp_sumwage = CREATE datastore
  431. ds_emp_sumwage.DataObject = 'dw_emp_sumawardpunishwage'
  432. ds_emp_sumwage.SetTransObject(sqlca)
  433. IF ds_emp_sumwage.Retrieve(arg_wagemth,arg_wageid) <= 0 THEN
  434. rslt = 0
  435. arg_msg = '本月没有奖罚单可审核或查询奖罚单失败'
  436. GOTO ext
  437. END IF
  438. FOR i = 1 TO ds_emp_sumwage.RowCount()
  439. ls_emp_sumwage = 0.00
  440. ls_emp_sumwage = ds_emp_sumwage.Object.sumwage[i]
  441. IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumwage.Object.empid[i],arg_wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  442. rslt = 0
  443. GOTO ext
  444. END IF
  445. NEXT
  446. UPDATE u_gz_award_punish SET
  447. flag = 1,
  448. auditrep = :publ_operator,
  449. Auditdate = getdate()
  450. WHERE wagemth = :arg_wagemth
  451. AND wageid = :arg_wageid
  452. AND flag = 0;
  453. IF sqlca.SQLCode <> 0 THEN
  454. arg_msg = '更新奖罚单失败,原因>>'+sqlca.SQLErrText
  455. rslt = 0
  456. GOTO ext
  457. END IF
  458. ext:
  459. IF rslt = 0 THEN
  460. ROLLBACK;
  461. ELSEIF rslt = 1 AND arg_ifcommit THEN
  462. COMMIT;
  463. END IF
  464. RETURN rslt
  465. end function
  466. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
  467. // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
  468. //--------------------------------------------------------------------
  469. // Description:
  470. //--------------------------------------------------------------------
  471. // Arguments:
  472. // value long arg_billid
  473. // value string arg_newdescppart
  474. // reference string arg_msg
  475. //--------------------------------------------------------------------
  476. // Returns: integer
  477. //--------------------------------------------------------------------
  478. // Author: yyx Date: 2003.11.21
  479. //--------------------------------------------------------------------
  480. // Modify History:
  481. //
  482. //====================================================================
  483. Int rslt = 1
  484. arg_newdescppart = Trim(arg_newdescppart)
  485. IF arg_billid <= 0 THEN
  486. rslt = 0
  487. arg_msg = "没有删除对象,操作取消"
  488. GOTO ext
  489. END IF
  490. IF it_newbegin OR it_updatebegin THEN
  491. rslt = 0
  492. arg_msg = "编辑状态下不可以执行,操作取消"
  493. GOTO ext
  494. END IF
  495. SELECT u_gz_award_punish.flag
  496. INTO :flag
  497. FROM u_gz_award_punish
  498. Where u_gz_award_punish.billid = :arg_billid;
  499. IF sqlca.SQLCode <> 0 THEN
  500. rslt = 0
  501. arg_msg = '查询奖罚单操作失败'
  502. GOTO ext
  503. END IF
  504. IF flag = 0 THEN
  505. rslt = 0
  506. arg_msg = "非审核状态下不可用"
  507. GOTO ext
  508. END IF
  509. UPDATE u_gz_award_punish
  510. SET reason = reason+' '+:arg_newdescppart
  511. Where u_gz_award_punish.billid = :billid;
  512. IF sqlca.SQLCode <> 0 THEN
  513. ROLLBACK ;
  514. rslt = 0
  515. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.SQLErrText
  516. GOTO ext
  517. END IF
  518. COMMIT;
  519. reason = reason+' '+arg_newdescppart
  520. ext:
  521. Return (rslt)
  522. end function
  523. public function integer auditmx (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  524. Int rslt = 1
  525. Decimal ls_emp_sumwage
  526. SELECT flag,wagemth,wageid,empid,award_punish_amt,billtype
  527. INTO :flag,:wagemth,:wageid,:empid,:award_punish_amt,:billtype
  528. FROM u_gz_award_punish
  529. Where billid = :arg_billid;
  530. IF sqlca.SQLCode <> 0 THEN
  531. rslt = 0
  532. arg_msg = '查询单据内容失败'+sqlca.SQLErrText
  533. GOTO ext
  534. END IF
  535. IF flag = 1 THEN
  536. rslt = 0
  537. arg_msg = '单据已经审核,不能再审,请检查'
  538. GOTO ext
  539. END IF
  540. IF wagemth = 0 THEN
  541. rslt = 0
  542. arg_msg = '请输入工资月份'
  543. GOTO ext
  544. END IF
  545. cnt = 0
  546. SELECT count(*) INTO :cnt
  547. FROM u_gz_wageitem Where useflag = 1 AND wageid = :wageid;
  548. IF sqlca.SQLCode <> 0 THEN
  549. rslt = 0
  550. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  551. GOTO ext
  552. END IF
  553. IF cnt = 0 THEN
  554. rslt = 0
  555. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  556. GOTO ext
  557. END IF
  558. IF u_wage.f_setwagemxdata(wagemth,empid,wageid,award_punish_amt * billtype,arg_msg,FALSE) = 0 THEN
  559. rslt = 0
  560. GOTO ext
  561. END IF
  562. UPDATE u_gz_award_punish
  563. SET flag = 1,
  564. auditrep = :publ_operator,
  565. auditdate = getdate()
  566. WHERE billid = :arg_billid
  567. AND flag = 0 ;
  568. IF sqlca.SQLCode <> 0 THEN
  569. arg_msg = '更新奖罚单状态失败,原因>>'+sqlca.SQLErrText
  570. rslt = 0
  571. GOTO ext
  572. END IF
  573. ext:
  574. IF rslt = 0 THEN
  575. ROLLBACK;
  576. ELSEIF rslt = 1 AND arg_ifcommit THEN
  577. COMMIT;
  578. END IF
  579. RETURN rslt
  580. end function
  581. public function integer cauditmx (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  582. Int rslt = 1
  583. Decimal ls_emp_sumwage
  584. DateTime ls_null
  585. SetNull(ls_null)
  586. SELECT flag,wagemth,wageid,empid,award_punish_amt,billtype
  587. INTO :flag,:wagemth,:wageid,:empid,:award_punish_amt,:billtype
  588. FROM u_gz_award_punish
  589. Where billid = :arg_billid;
  590. IF sqlca.SQLCode <> 0 THEN
  591. rslt = 0
  592. arg_msg = '查询单据内容失败'+sqlca.SQLErrText
  593. GOTO ext
  594. END IF
  595. IF flag = 0 THEN
  596. rslt = 0
  597. arg_msg = '单据还未审核,不能撤审'
  598. GOTO ext
  599. END IF
  600. IF wagemth = 0 THEN
  601. rslt = 0
  602. arg_msg = '请输入工资月份'
  603. GOTO ext
  604. END IF
  605. IF f_check_wage_audit(wagemth,-1,arg_msg) = 0 THEN
  606. rslt = 0
  607. arg_msg = arg_msg + ',不能撤审'
  608. GOTO ext
  609. END IF
  610. //检查该月份,该工资项目是否已开工资变更单
  611. cnt = 0
  612. SELECT count(*)
  613. INTO :cnt
  614. FROM u_wage_change
  615. WHERE wageid = :wageid
  616. AND wagemth = :wagemth;
  617. IF sqlca.SQLCode <> 0 THEN
  618. rslt = 0
  619. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  620. GOTO ext
  621. END IF
  622. IF cnt > 0 THEN
  623. rslt = 0
  624. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  625. GOTO ext
  626. END IF
  627. cnt = 0
  628. SELECT count(*) INTO :cnt
  629. FROM u_gz_wageitem Where useflag = 1 AND wageid = :wageid;
  630. IF sqlca.SQLCode <> 0 THEN
  631. rslt = 0
  632. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  633. GOTO ext
  634. END IF
  635. IF cnt = 0 THEN
  636. rslt = 0
  637. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  638. GOTO ext
  639. END IF
  640. IF u_wage.f_setwagemxdata(wagemth,empid,wageid,0 - award_punish_amt * billtype,arg_msg,FALSE) = 0 THEN
  641. rslt = 0
  642. GOTO ext
  643. END IF
  644. UPDATE u_gz_award_punish
  645. SET flag = 0,
  646. auditdate = :ls_null,
  647. auditrep = ''
  648. WHERE billid = :arg_billid
  649. AND flag = 1 ;
  650. IF sqlca.SQLCode <> 0 THEN
  651. arg_msg = '更新奖罚单状态失败,原因>>'+sqlca.SQLErrText
  652. rslt = 0
  653. GOTO ext
  654. END IF
  655. ext:
  656. IF rslt = 0 THEN
  657. ROLLBACK;
  658. ELSEIF rslt = 1 AND arg_ifcommit THEN
  659. COMMIT;
  660. END IF
  661. RETURN rslt
  662. end function
  663. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//====================================================================
  664. // Function: del(arg_billid,arg_msg)
  665. //--------------------------------------------------------------------
  666. // Description:
  667. //--------------------------------------------------------------------
  668. // Arguments:
  669. // value long arg_billid
  670. // reference string arg_msg
  671. //--------------------------------------------------------------------
  672. // Returns: integer
  673. //--------------------------------------------------------------------
  674. // Author: yyx Date: 2003.11.21
  675. //--------------------------------------------------------------------
  676. // Modify History:
  677. //
  678. //====================================================================
  679. int rslt = 1
  680. if arg_billid <= 0 then
  681. rslt = 0
  682. arg_msg = "没有删除对象,操作取消"
  683. goto ext
  684. end if
  685. if it_newbegin or it_updatebegin then
  686. rslt=0
  687. arg_msg="编辑状态下不可以执行,操作取消"
  688. goto ext
  689. end if
  690. select u_gz_award_punish.flag
  691. into :flag
  692. from u_gz_award_punish
  693. where u_gz_award_punish.billid = :arg_billid;
  694. if sqlca.sqlcode <> 0 then
  695. rslt = 0
  696. arg_msg = '查询奖罚单操作失败'
  697. goto ext
  698. end if
  699. if flag = 1 then
  700. rslt = 0
  701. arg_msg = "单据已经审核,不可以删除"
  702. goto ext
  703. end if
  704. delete from u_gz_award_punish where u_gz_award_punish.billid = :arg_billid;
  705. if sqlca.sqlcode <> 0 then
  706. rslt = 0
  707. arg_msg = "删除奖罚单操作失败"+"~n"+sqlca.sqlerrtext
  708. goto ext
  709. end if
  710. ext:
  711. IF rslt = 0 THEN
  712. ROLLBACK ;
  713. p_reset()
  714. ELSEIF rslt = 1 AND arg_ifcommit THEN
  715. COMMIT ;
  716. END IF
  717. Return (rslt)
  718. end function
  719. on uo_award_punish.create
  720. call super::create
  721. TriggerEvent( this, "constructor" )
  722. end on
  723. on uo_award_punish.destroy
  724. TriggerEvent( this, "destructor" )
  725. call super::destroy
  726. end on
  727. event constructor; u_wage=create uo_wage
  728. end event
  729. event destructor;DESTROY u_wage
  730. end event