uo_wage_change.sru 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. $PBExportHeader$uo_wage_change.sru
  2. forward
  3. global type uo_wage_change from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_wage_change from nonvisualobject
  7. end type
  8. global uo_wage_change uo_wage_change
  9. type variables
  10. long uo_billid
  11. string uo_billcode
  12. end variables
  13. forward prototypes
  14. public function integer save (s_wage_change arg_s_wage, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  15. public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg)
  16. public function integer updatebegin (long arg_billid, ref string arg_msg)
  17. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  18. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  19. public function integer getinfo (long arg_billid, ref s_wage_change_mx arg_ref_wagemx[], ref long arg_arr_cnt, ref string arg_msg)
  20. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  21. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  22. end prototypes
  23. public function integer save (s_wage_change arg_s_wage, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
  24. DateTime server_dt
  25. Long ll_billid,it_mxbt,i
  26. String ls_sccode,ls_billcode
  27. IF IsNull(arg_s_wage.scid) THEN arg_s_wage.scid = 0
  28. IF IsNull(arg_s_wage.billid) THEN arg_s_wage.billid = 0
  29. IF IsNull(arg_s_wage.wagemth) THEN arg_s_wage.wagemth = 0
  30. IF IsNull(arg_s_wage.rep) THEN arg_s_wage.rep = ''
  31. IF IsNull(arg_s_wage.dscrp) THEN arg_s_wage.dscrp = ''
  32. IF IsNull(arg_s_wage.wageid) THEN arg_s_wage.wageid = 0
  33. IF IsNull(arg_s_wage.billtype) THEN arg_s_wage.billtype = 0
  34. IF arg_s_wage.rep = '' THEN
  35. arg_msg = '请输入经手人'
  36. rslt = 0
  37. GOTO ext
  38. END IF
  39. IF arg_s_wage.wagemth = 0 THEN
  40. arg_msg = '请输入工资月份'
  41. rslt = 0
  42. GOTO ext
  43. END IF
  44. IF arg_s_wage.wageid = 0 THEN
  45. arg_msg = '请选择工资项目'
  46. rslt = 0
  47. GOTO ext
  48. END IF
  49. SELECT Top 1 getdate() Into :server_dt From u_user;
  50. IF sqlca.SQLCode <> 0 THEN
  51. rslt = 0
  52. arg_msg = "查询操作失败,日期 "
  53. GOTO ext
  54. END IF
  55. it_mxbt = UpperBound(arg_s_wage.arg_s_mx)
  56. IF it_mxbt <= 0 THEN
  57. rslt = 0
  58. arg_msg = "没有正确明细内容"
  59. GOTO ext
  60. END IF
  61. //一个月份,一个工资项目,同一员工 只能开一张单
  62. Long ll_err_cnt
  63. String ls_err
  64. IF arg_s_wage.billtype = 0 THEN //工资变更单
  65. FOR i = 1 To it_mxbt
  66. cnt = 0
  67. SELECT count(*)
  68. INTO :cnt
  69. FROM u_wage_change INNER JOIN
  70. u_wage_change_mx ON u_wage_change.billid = u_wage_change_mx.billid
  71. WHERE u_wage_change.wagemth = :arg_s_wage.wagemth
  72. AND u_wage_change.wageid = :arg_s_wage.wageid
  73. AND u_wage_change.billtype = :arg_s_wage.billtype
  74. AND u_wage_change_mx.empid = :arg_s_wage.arg_s_mx[i].empid
  75. And u_wage_change.billid <> :arg_s_wage.billid;
  76. IF sqlca.SQLCode <> 0 THEN
  77. rslt = 0
  78. arg_msg = '查询员工: '+arg_s_wage.arg_s_mx[i].empname+' 该月份该工资项目是否已开单失败'+"~n"+sqlca.SQLErrText
  79. GOTO ext
  80. END IF
  81. IF cnt > 0 THEN
  82. ll_err_cnt++
  83. ls_err = ls_err + '第'+String(i)+'行,员工: '+arg_s_wage.arg_s_mx[i].empname+' 该月份该工资项目已开单,不能重复开单' + '~r~n'
  84. END IF
  85. NEXT
  86. IF ll_err_cnt > 0 THEN
  87. rslt = 0
  88. arg_msg = ls_err
  89. GOTO ext
  90. END IF
  91. END IF
  92. IF arg_s_wage.billid = 0 THEN
  93. ll_billid = f_sys_scidentity(0,"u_wage_change","billid",arg_msg,True,id_sqlca)
  94. IF ll_billid <= 0 THEN
  95. rslt = 0
  96. GOTO ext
  97. END IF
  98. IF f_get_sccode(arg_s_wage.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
  99. rslt = 0
  100. GOTO ext
  101. END IF
  102. IF arg_s_wage.billtype = 0 THEN //工资变更单
  103. ls_billcode = getid(arg_s_wage.scid,ls_sccode + 'GB',Date(server_dt),False,sqlca)
  104. ELSEIF arg_s_wage.billtype = 1 THEN //工资录入单
  105. ls_billcode = getid(arg_s_wage.scid,ls_sccode + 'GI',Date(server_dt),False,sqlca)
  106. END IF
  107. IF ls_billcode = "err" THEN
  108. rslt = 0
  109. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  110. GOTO ext
  111. END IF
  112. INSERT INTO u_wage_change
  113. (scid,
  114. billid,
  115. billcode,
  116. billdate,
  117. relcode,
  118. wagemth,
  119. wageid,
  120. rep,
  121. dscrp,
  122. billtype,
  123. opdate,
  124. opemp)
  125. VALUES
  126. (:arg_s_wage.scid,
  127. :ll_billid,
  128. :ls_billcode,
  129. :arg_s_wage.billdate,
  130. :arg_s_wage.relcode,
  131. :arg_s_wage.wagemth,
  132. :arg_s_wage.wageid,
  133. :arg_s_wage.rep,
  134. :arg_s_wage.dscrp,
  135. :arg_s_wage.billtype,
  136. getdate(),
  137. :arg_opemp);
  138. IF sqlca.SQLCode <> 0 THEN
  139. rslt = 0
  140. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  141. GOTO ext
  142. END IF
  143. // FOR i = 1 To it_mxbt
  144. // INSERT INTO u_wage_change_mx
  145. // (billid,
  146. // printid,
  147. // empid,
  148. // wageamt,
  149. // wageamt_ori,
  150. // dscrp)
  151. // VALUES
  152. // (:ll_billid,
  153. // :arg_s_wage.arg_s_mx[i].printid,
  154. // :arg_s_wage.arg_s_mx[i].empid,
  155. // :arg_s_wage.arg_s_mx[i].wageamt,
  156. // :arg_s_wage.arg_s_mx[i].wageamt_ori,
  157. // :arg_s_wage.arg_s_mx[i].dscrp
  158. // );
  159. // IF sqlca.SQLCode <> 0 THEN
  160. // rslt = 0
  161. // arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  162. // GOTO ext
  163. // END IF
  164. // NEXT
  165. uo_billid = ll_billid
  166. uo_billcode = ls_billcode
  167. ELSE
  168. UPDATE u_wage_change
  169. SET billdate = :arg_s_wage.billdate,
  170. wagemth = :arg_s_wage.wagemth,
  171. rep = :arg_s_wage.rep,
  172. dscrp = :arg_s_wage.dscrp,
  173. relcode = :arg_s_wage.relcode,
  174. moddate = getdate(),
  175. modemp = :arg_opemp,
  176. wageid = :arg_s_wage.wageid
  177. WHERE billid = :arg_s_wage.billid
  178. And flag = 0 ;
  179. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
  180. rslt = 0
  181. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  182. GOTO ext
  183. END IF
  184. DELETE FROM u_wage_change_mx
  185. Where billid = :arg_s_wage.billid;
  186. IF sqlca.SQLCode <> 0 THEN
  187. rslt = 0
  188. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  189. GOTO ext
  190. END IF
  191. uo_billid = arg_s_wage.billid
  192. END IF
  193. FOR i = 1 To it_mxbt
  194. INSERT INTO u_wage_change_mx
  195. (billid,
  196. printid,
  197. empid,
  198. wageamt,
  199. wageamt_ori,
  200. dscrp)
  201. VALUES
  202. (:uo_billid,
  203. :arg_s_wage.arg_s_mx[i].printid,
  204. :arg_s_wage.arg_s_mx[i].empid,
  205. :arg_s_wage.arg_s_mx[i].wageamt,
  206. :arg_s_wage.arg_s_mx[i].wageamt_ori,
  207. :arg_s_wage.arg_s_mx[i].dscrp
  208. );
  209. IF sqlca.SQLCode <> 0 THEN
  210. IF arg_s_wage.billid = 0 THEN uo_billid = 0
  211. rslt = 0
  212. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  213. GOTO ext
  214. END IF
  215. NEXT
  216. ext:
  217. IF rslt = 0 THEN
  218. ROLLBACK;
  219. ELSEIF arg_ifcommit And rslt = 1 THEN
  220. COMMIT;
  221. END IF
  222. RETURN rslt
  223. end function
  224. public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg);Int rslt = 1
  225. SELECT flag
  226. INTO :arg_flag
  227. FROM u_wage_change
  228. WHERE billid = :arg_billid;
  229. IF sqlca.SQLCode <> 0 THEN
  230. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  231. rslt = 0
  232. GOTO ext
  233. END IF
  234. ext:
  235. RETURN rslt
  236. end function
  237. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  238. long li_flag
  239. IF arg_billid <= 0 THEN
  240. rslt = 0
  241. arg_msg = '错误单据唯一码'
  242. GOTO ext
  243. END IF
  244. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  245. rslt = 0
  246. GOTO ext
  247. END IF
  248. IF li_flag = 1 THEN
  249. rslt = 0
  250. arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核'
  251. GOTO ext
  252. END IF
  253. ext:
  254. RETURN rslt
  255. end function
  256. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
  257. long ll_flag
  258. if arg_billid <= 0 then
  259. rslt = 0
  260. arg_msg = '错误单据唯一码'
  261. GOTO ext
  262. END IF
  263. IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
  264. rslt = 0
  265. GOTO ext
  266. END IF
  267. if ll_flag <> 0 then
  268. rslt = 0
  269. arg_msg = '单据不是在待审核状态,不能删除'
  270. GOTO ext
  271. END IF
  272. DELETE FROM u_wage_change_mx
  273. WHERE billid = :arg_billid;
  274. IF sqlca.SQLCode <> 0 THEN
  275. rslt = 0
  276. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  277. GOTO ext
  278. END IF
  279. DELETE FROM u_wage_change
  280. WHERE billid = :arg_billid
  281. AND flag = 0;
  282. IF sqlca.SQLCode <> 0 THEN
  283. rslt = 0
  284. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  285. GOTO ext
  286. END IF
  287. ext:
  288. IF rslt = 0 THEN
  289. ROLLBACK;
  290. ELSEIF rslt = 1 AND arg_ifcommit THEN
  291. COMMIT;
  292. END IF
  293. RETURN rslt
  294. end function
  295. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);
  296. Int rslt = 1
  297. long ll_flag
  298. IF arg_newdescppart = '' THEN
  299. rslt = 0
  300. arG_MSG = "要添加内容为空,操作取消"
  301. GOTO ext
  302. END IF
  303. IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
  304. rslt = 0
  305. GOTO ext
  306. END IF
  307. IF ll_flag = 0 THEN
  308. rslt = 0
  309. arG_MSG = "待审核状态下不可用"
  310. GOTO ext
  311. END IF
  312. UPDATE u_wage_change
  313. SET DSCRP = DSCRP+' '+:arg_newdescppart
  314. WHERE u_wage_change.billid = :arg_billid;
  315. IF SQLCA.SQLCode <> 0 THEN
  316. rslt = 0
  317. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  318. GOTO ext
  319. END IF
  320. ext:
  321. IF rslt = 1 THEN
  322. COMMIT;
  323. ELSE
  324. ROLLBACK;
  325. END IF
  326. Return (rslt)
  327. end function
  328. public function integer getinfo (long arg_billid, ref s_wage_change_mx arg_ref_wagemx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
  329. Long i = 1,no_mxcheck = 0
  330. IF arg_billid <= 0 THEN
  331. rslt = 0
  332. arg_msg = '错误单据唯一码'
  333. GOTO ext
  334. END IF
  335. //用游标读取明细
  336. DECLARE cur_mx CURSOR FOR
  337. SELECT u_wage_change_mx.billid,
  338. u_wage_change_mx.printid,
  339. u_wage_change_mx.empid,
  340. u_wage_change_mx.wageamt,
  341. u_wage_change_mx.wageamt_ori,
  342. u_wage_change_mx.dscrp
  343. FROM u_wage_change_mx
  344. WHERE u_wage_change_mx.billid = :arg_billid
  345. Order By u_wage_change_mx.printid;
  346. OPEN cur_mx;
  347. FETCH cur_mx INTO
  348. :arg_ref_wagemx[i].billid,
  349. :arg_ref_wagemx[i].printid,
  350. :arg_ref_wagemx[i].empid,:arg_ref_wagemx[i].wageamt,
  351. :arg_ref_wagemx[i].wageamt_ori,:arg_ref_wagemx[i].dscrp;
  352. DO WHILE sqlca.SQLCode = 0
  353. i++
  354. FETCH cur_mx INTO
  355. :arg_ref_wagemx[i].billid,
  356. :arg_ref_wagemx[i].printid,
  357. :arg_ref_wagemx[i].empid,:arg_ref_wagemx[i].wageamt,
  358. :arg_ref_wagemx[i].wageamt_ori,:arg_ref_wagemx[i].dscrp;
  359. LOOP
  360. CLOSE cur_mx;
  361. //检验明细是否读入完整
  362. SELECT count(*) INTO :no_mxcheck
  363. FROM u_wage_change_mx
  364. WHERE billid = :arg_billid;
  365. IF sqlca.SQLCode <> 0 THEN
  366. rslt = 0
  367. arg_msg = "查询操作失败,单据明细数量"
  368. GOTO ext
  369. END IF
  370. IF i <> (no_mxcheck + 1) THEN
  371. rslt = 0
  372. arg_msg = "查询操作失败,单据明细"
  373. GOTO ext
  374. END IF
  375. arg_arr_cnt = i - 1
  376. ext:
  377. RETURN rslt
  378. end function
  379. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  380. Long ll_flag
  381. IF arg_billid <= 0 THEN
  382. rslt = 0
  383. ARG_MSG = '错误单据唯一码'
  384. GOTO ext
  385. END IF
  386. IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
  387. rslt = 0
  388. GOTO ext
  389. END IF
  390. IF ll_flag <> 0 THEN
  391. rslt = 0
  392. ARG_MSG = '单据不是在待审核状态,不可以再审'
  393. GOTO ext
  394. END IF
  395. Long ll_wagemth,ll_wageid
  396. Int li_billtype
  397. SELECT wagemth,wageid, billtype
  398. INTO :ll_wagemth,:ll_wageid, :li_billtype
  399. FROM u_wage_change
  400. Where billid = :arg_billid;
  401. IF sqlca.SQLCode <> 0 THEN
  402. rslt = 0
  403. ARG_MSG = '查询单据信息失败'+sqlca.SQLErrText
  404. GOTO ext
  405. END IF
  406. Long cnt
  407. //检查该月工资表是否已审
  408. cnt = 0
  409. SELECT count(*)
  410. INTO :cnt
  411. FROM u_gz_wage
  412. WHERE wagemth = :ll_wagemth
  413. And Auditingflag = 1;
  414. IF sqlca.SQLCode <> 0 THEN
  415. rslt = 0
  416. ARG_MSG = '查询单据信息失败'+sqlca.SQLErrText
  417. GOTO ext
  418. END IF
  419. IF cnt > 0 THEN
  420. rslt = 0
  421. ARG_MSG = '该月工资表已经审核,不能更新工资'
  422. GOTO ext
  423. END IF
  424. //检查该月工资表是否含有该工资项目
  425. cnt = 0
  426. SELECT count(*)
  427. INTO :cnt
  428. FROM u_gz_wagemx
  429. WHERE wagemth = :ll_wagemth
  430. And wageid = :ll_wageid;
  431. IF sqlca.SQLCode <> 0 THEN
  432. rslt = 0
  433. ARG_MSG = '查询单据信息失败'+sqlca.SQLErrText
  434. GOTO ext
  435. END IF
  436. IF cnt = 0 THEN
  437. rslt = 0
  438. ARG_MSG = '该月工资表不含该工资项目,不能更新该项目的工资'
  439. GOTO ext
  440. END IF
  441. //更新员工工资
  442. s_wage_change_mx arg_s_mx[]
  443. Long ll_arr_mx
  444. Long ll_i
  445. IF getinfo(arg_billid,arg_s_mx,ll_arr_mx,ARG_MSG) = 0 THEN
  446. rslt = 0
  447. GOTO ext
  448. END IF
  449. IF li_billtype = 0 THEN //变更单
  450. FOR ll_i = 1 To ll_arr_mx
  451. UPDATE u_gz_wagemx
  452. SET wageamt = :arg_s_mx[ll_i].wageamt
  453. WHERE empid = :arg_s_mx[ll_i].empid
  454. AND wagemth = :ll_wagemth
  455. And wageid = :ll_wageid;
  456. IF sqlca.SQLCode <> 0 THEN
  457. rslt = 0
  458. ARG_MSG = '更新员工工资失败'+sqlca.SQLErrText
  459. GOTO ext
  460. ELSEIF sqlca.SQLNRows = 0 THEN
  461. rslt = 0
  462. ARG_MSG = '行:'+string(ll_i)+',更新员工工资失败,没有找到员工相应月份工资项目的数据,ID:'+string(arg_s_mx[ll_i].empid)
  463. GOTO ext
  464. END IF
  465. NEXT
  466. ELSEIF li_billtype = 1 THEN //录入单
  467. FOR ll_i = 1 To ll_arr_mx
  468. UPDATE u_gz_wagemx
  469. SET wageamt = wageamt + :arg_s_mx[ll_i].wageamt
  470. WHERE empid = :arg_s_mx[ll_i].empid
  471. AND wagemth = :ll_wagemth
  472. And wageid = :ll_wageid;
  473. IF sqlca.SQLCode <> 0 THEN
  474. rslt = 0
  475. ARG_MSG = '更新员工工资失败'+sqlca.SQLErrText
  476. GOTO ext
  477. ELSEIF sqlca.SQLNRows = 0 THEN
  478. rslt = 0
  479. ARG_MSG = '行:'+string(ll_i)+',更新员工工资失败,没有找到员工相应月份工资项目的数据,ID:'+string(arg_s_mx[ll_i].empid)
  480. GOTO ext
  481. END IF
  482. NEXT
  483. END IF
  484. //更新审核标记
  485. UPDATE u_wage_change
  486. SET auditingrep = :arg_opemp,
  487. auditingdate = getdate(),
  488. flag = 1
  489. WHERE billid = :arg_billid
  490. And flag = 0;
  491. IF sqlca.SQLCode <> 0 THEN
  492. rslt = 0
  493. ARG_MSG = "单据审核操作失败"+"~n"+sqlca.SQLErrText
  494. GOTO ext
  495. END IF
  496. ext:
  497. IF rslt = 0 THEN
  498. ROLLBACK;
  499. ELSEIF rslt = 1 And arg_ifcommit THEN
  500. COMMIT;
  501. END IF
  502. RETURN rslt
  503. end function
  504. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  505. Long ll_flag
  506. DateTime null_dt
  507. SetNull(null_dt)
  508. IF arg_billid <= 0 THEN
  509. rslt = 0
  510. ARG_MSG = '错误单据唯一码'
  511. GOTO ext
  512. END IF
  513. IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
  514. rslt = 0
  515. GOTO ext
  516. END IF
  517. IF ll_flag <> 1 THEN
  518. rslt = 0
  519. ARG_MSG = '单据不是在审核状态,不可以撤审'
  520. GOTO ext
  521. END IF
  522. Long ll_wagemth,ll_wageid
  523. Int li_billtype
  524. SELECT wagemth,wageid, billtype
  525. INTO :ll_wagemth,:ll_wageid, :li_billtype
  526. FROM u_wage_change
  527. Where billid = :arg_billid;
  528. IF sqlca.SQLCode <> 0 THEN
  529. rslt = 0
  530. ARG_MSG = '查询单据信息失败'+sqlca.SQLErrText
  531. GOTO ext
  532. END IF
  533. Long cnt
  534. //检查该月工资表是否已审
  535. cnt = 0
  536. SELECT count(*)
  537. INTO :cnt
  538. FROM u_gz_wage
  539. WHERE wagemth = :ll_wagemth
  540. And Auditingflag = 1;
  541. IF sqlca.SQLCode <> 0 THEN
  542. rslt = 0
  543. ARG_MSG = '查询单据信息失败'+sqlca.SQLErrText
  544. GOTO ext
  545. END IF
  546. IF cnt > 0 THEN
  547. rslt = 0
  548. ARG_MSG = '该月工资表已经审核,不能撤审'
  549. GOTO ext
  550. END IF
  551. //更新员工工资
  552. s_wage_change_mx arg_s_mx[]
  553. Long ll_arr_mx
  554. Long ll_i
  555. IF getinfo(arg_billid,arg_s_mx,ll_arr_mx,ARG_MSG) = 0 THEN
  556. rslt = 0
  557. GOTO ext
  558. END IF
  559. IF li_billtype = 0 THEN //变更单
  560. FOR ll_i = 1 To ll_arr_mx
  561. UPDATE u_gz_wagemx
  562. SET wageamt = :arg_s_mx[ll_i].wageamt_ori
  563. WHERE empid = :arg_s_mx[ll_i].empid
  564. AND wagemth = :ll_wagemth
  565. And wageid = :ll_wageid;
  566. IF sqlca.SQLCode <> 0 THEN
  567. rslt = 0
  568. ARG_MSG = '更新员工工资失败'+sqlca.SQLErrText
  569. GOTO ext
  570. ELSEIF sqlca.SQLNRows = 0 THEN
  571. rslt = 0
  572. ARG_MSG = '更新员工工资失败,没有找到员工相应月份工资项目的数据'
  573. GOTO ext
  574. END IF
  575. NEXT
  576. ELSEIF li_billtype = 1 THEN //录入单
  577. FOR ll_i = 1 To ll_arr_mx
  578. UPDATE u_gz_wagemx
  579. SET wageamt = wageamt - :arg_s_mx[ll_i].wageamt
  580. WHERE empid = :arg_s_mx[ll_i].empid
  581. AND wagemth = :ll_wagemth
  582. And wageid = :ll_wageid;
  583. IF sqlca.SQLCode <> 0 THEN
  584. rslt = 0
  585. ARG_MSG = '更新员工工资失败'+sqlca.SQLErrText
  586. GOTO ext
  587. ELSEIF sqlca.SQLNRows = 0 THEN
  588. rslt = 0
  589. ARG_MSG = '更新员工工资失败,没有找到员工相应月份工资项目的数据'
  590. GOTO ext
  591. END IF
  592. NEXT
  593. END IF
  594. //更新审核标记
  595. UPDATE u_wage_change
  596. SET auditingrep = '',
  597. auditingdate = :null_dt,
  598. flag = 0
  599. Where billid = :arg_billid;
  600. IF sqlca.SQLCode <> 0 THEN
  601. rslt = 0
  602. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  603. GOTO ext
  604. END IF
  605. ext:
  606. IF rslt = 0 THEN
  607. ROLLBACK;
  608. ELSEIF rslt = 1 And arg_ifcommit THEN
  609. COMMIT;
  610. END IF
  611. RETURN rslt
  612. end function
  613. on uo_wage_change.create
  614. call super::create
  615. TriggerEvent( this, "constructor" )
  616. end on
  617. on uo_wage_change.destroy
  618. TriggerEvent( this, "destructor" )
  619. call super::destroy
  620. end on