uo_award_punish.sru 20 KB

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