uo_loanwage.sru 17 KB

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