uo_emppay.sru 21 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096
  1. $PBExportHeader$uo_emppay.sru
  2. forward
  3. global type uo_emppay from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_emppay from nonvisualobject
  7. end type
  8. global uo_emppay uo_emppay
  9. type variables
  10. Public ProtectedWrite Long billid
  11. Public ProtectedWrite String billcode
  12. Public ProtectedWrite String auditemp
  13. Public ProtectedWrite DateTime auditdate
  14. Public ProtectedWrite Int flag
  15. Public ProtectedWrite Int secflag
  16. Public ProtectedWrite String Opemp
  17. Public ProtectedWrite DateTime Opdate
  18. Public ProtectedWrite String ModEmp
  19. Public ProtectedWrite DateTime ModDate
  20. Long scid
  21. Long banktypeid
  22. Decimal amt
  23. Long accountsid
  24. DateTime billdate
  25. String dscrp
  26. String rep
  27. Long rapmoneyid
  28. Long itemid
  29. Long relid
  30. Int billtype //0-其它收入支出,1-借款,2-还款
  31. Long empid
  32. Long deptid
  33. Int itemflag
  34. Long relrapid
  35. long ref_dateint
  36. string relcode
  37. Transaction commit_transaction //数据commit事务
  38. Private:
  39. Boolean IT_NEWBEGIN = False //新建标志
  40. Boolean IT_UPDATEBEGIN = False //修改标志
  41. Long it_mxbt = 0
  42. s_emppay_mx incomemx[]
  43. end variables
  44. forward prototypes
  45. public function integer p_reset ()
  46. public function integer newbegin (ref string arg_msg)
  47. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  48. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  49. public function integer updatebegin (long arg_billid, ref string arg_msg)
  50. public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
  51. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  52. public function integer p_clearmx ()
  53. public function integer getinfo (long arg_billid, ref string arg_msg)
  54. public function integer audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  55. public function integer cancelaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  56. public function integer secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  57. public function integer cancelsecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  58. public function integer acceptmx (long arg_empid, decimal arg_amt, decimal arg_mstpayamt, string arg_mxdscrp, ref string arg_msg)
  59. end prototypes
  60. public function integer p_reset ();
  61. billid = 0
  62. billcode = ''
  63. banktypeid = 0
  64. amt = 0
  65. accountsid = 0
  66. setnull(billdate)
  67. dscrp = ''
  68. rep = ''
  69. relid = 0
  70. rapmoneyid = 0
  71. empid = 0
  72. billtype = 0
  73. itemid = 0
  74. deptid = 0
  75. flag = 0
  76. Opemp = ''
  77. setnull(Opdate)
  78. setnull(ModDate)
  79. ModEmp = ''
  80. auditemp = ''
  81. setnull(auditdate)
  82. relrapid = 0
  83. ref_dateint = 0
  84. it_newbegin=FALSE
  85. it_updatebegin=FALSE
  86. p_clearmx()
  87. RETURN 1
  88. end function
  89. public function integer newbegin (ref string arg_msg);//newbegin()
  90. //从置对象,设定业务类型,准备建立新单
  91. //0 fail 1 success
  92. LONG RSLT=1
  93. p_reset()
  94. it_newbegin=TRUE
  95. it_updatebegin=FALSE
  96. return RSLT
  97. end function
  98. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  99. //0 FAIL, 1 SUCCESS
  100. Int rslt = 1
  101. IF arg_billid <= 0 THEN
  102. rslt = 0
  103. ARG_MSG = '错误单据唯一码'
  104. GOTO ext
  105. END IF
  106. IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN
  107. rslt = 0
  108. GOTO ext
  109. END IF
  110. IF flag <> 0 THEN
  111. rslt = 0
  112. ARG_MSG = "单据已经审核,不可以删除"
  113. GOTO ext
  114. END IF
  115. DELETE FROM U_emppay
  116. Where U_emppay.billid = :arg_billid USING commit_transaction ;
  117. IF commit_transaction.SQLCode <> 0 THEN
  118. rslt = 0
  119. ARG_MSG = "删除单据操作失败"+"~n"+commit_transaction.SQLErrText
  120. GOTO ext
  121. END IF
  122. DELETE FROM U_emppay_mx
  123. Where U_emppay_mx.billid = :arg_billid USING commit_transaction;
  124. IF commit_transaction.SQLCode <> 0 THEN
  125. rslt = 0
  126. arg_msg = "删除单据明细操作失败"+"~n"+commit_transaction.SQLErrText
  127. ROLLBACK USING commit_transaction;
  128. GOTO ext
  129. END IF
  130. it_newbegin = FALSE
  131. it_updatebegin = FALSE
  132. IF rslt = 0 THEN
  133. ROLLBACK USING commit_transaction;
  134. ELSEIF arg_ifcommit AND rslt = 1 THEN
  135. COMMIT USING commit_transaction;
  136. END IF
  137. ext:
  138. p_reset()
  139. Return (rslt)
  140. end function
  141. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  142. SELECT U_emppay.billid,
  143. U_emppay.billcode,
  144. U_emppay.banktypeid,
  145. U_emppay.amt,
  146. U_emppay.accountsid,
  147. U_emppay.billdate,
  148. U_emppay.Dscrp,
  149. U_emppay.rep,
  150. U_emppay.rapmoneyid,
  151. U_emppay.itemid,
  152. U_emppay.flag,
  153. U_emppay.secflag,
  154. U_emppay.Opemp,
  155. U_emppay.Opdate,
  156. U_emppay.ModDate,
  157. U_emppay.ModEmp,
  158. U_emppay.auditemp,
  159. U_emppay.auditdate,
  160. U_emppay.relid,
  161. U_emppay.billtype,
  162. U_emppay.scid,
  163. relrapid,
  164. ref_dateint
  165. INTO :billid,
  166. :billcode,
  167. :banktypeid,
  168. :amt,
  169. :accountsid,
  170. :billdate,
  171. :Dscrp,
  172. :rep,
  173. :rapmoneyid,
  174. :itemid,
  175. :flag,
  176. :secflag,
  177. :Opemp,
  178. :Opdate,
  179. :ModDate,
  180. :ModEmp,
  181. :auditemp,
  182. :auditdate,
  183. :relid,
  184. :billtype,
  185. :scid,
  186. :relrapid,
  187. :ref_dateint
  188. FROM U_emppay
  189. Where ( U_emppay.billid = :arg_billid ) ;
  190. IF sqlca.SQLCode <> 0 THEN
  191. rslt = 0
  192. arg_msg = "查询工资发放单操作失败"+sqlca.SQLErrText
  193. GOTO ext
  194. END IF
  195. ext:
  196. RETURN rslt
  197. end function
  198. public function integer updatebegin (long arg_billid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
  199. //从置对象,设定业务类型与关联ID,准备更新进仓单
  200. //0 fail 1 success
  201. Long rslt = 1,CNT = 0
  202. IF arg_billid <= 0 THEN
  203. rslt = 0
  204. arg_msg = '错误工资发放单唯一码'
  205. GOTO ext
  206. END IF
  207. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  208. rslt = 0
  209. GOTO ext
  210. END IF
  211. IF flag <> 0 THEN
  212. rslt = 0
  213. arg_msg = '已经处于审核或完成等状态,不可以修改,如果工资发放单未完成并要修改请先撤销审核'
  214. GOTO ext
  215. END IF
  216. it_newbegin = False
  217. it_updatebegin = True
  218. p_clearmx() //清除明细
  219. amt = 0
  220. ext:
  221. IF rslt = 0 THEN p_reset()
  222. RETURN rslt
  223. end function
  224. public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit);
  225. Integer rslt = 1,cnt = 0,i
  226. Long ls_newid
  227. DateTime server_datetime
  228. Long ll_id
  229. String ls_sccode
  230. IF IsNull(banktypeid) THEN banktypeid = 0
  231. IF IsNull(amt) THEN amt = 0
  232. IF IsNull(accountsid) THEN accountsid = 0
  233. IF IsNull(dscrp) THEN dscrp = ''
  234. IF IsNull(relcode) THEN relcode = ''
  235. IF IsNull(rep) THEN rep = ''
  236. IF IsNull(arg_operator) THEN arg_operator = ''
  237. IF IsNull(rapmoneyid) THEN rapmoneyid = 0
  238. IF IsNull(itemid) THEN itemid = 0
  239. IF IsNull(scid) THEN scid = 0
  240. IF it_newbegin = False And it_updatebegin = False THEN
  241. rslt = 0
  242. arg_msg = "非编辑状态不可以提交"
  243. GOTO ext
  244. END IF
  245. IF it_mxbt = 0 THEN
  246. rslt = 0
  247. arg_msg = '没有明细内容'
  248. GOTO ext
  249. END IF
  250. amt = 0
  251. FOR i = 1 To it_mxbt
  252. amt = amt + incomemx[i].amt
  253. NEXT
  254. IF amt = 0 THEN
  255. rslt = 0
  256. arg_msg = "请输入金额"
  257. GOTO ext
  258. END IF
  259. IF f_check_inoutdate(0,billdate,False,arg_msg) = 0 THEN
  260. rslt = 0
  261. GOTO ext
  262. END IF
  263. IF billtype = 1 Or billtype = 2 THEN
  264. IF itemid = 0 THEN
  265. rslt = 0
  266. arg_msg = "请选择收支项目"
  267. GOTO ext
  268. END IF
  269. cnt = 0
  270. SELECT count(*) INTO :cnt
  271. FROM u_itemdef
  272. WHERE itemid = :itemid
  273. Using commit_transaction;
  274. IF commit_transaction.SQLCode <> 0 THEN
  275. arg_msg = '查询项目资料失败,'+sqlca.SQLErrText
  276. rslt = 0
  277. GOTO ext
  278. END IF
  279. END IF
  280. IF rep = '' THEN
  281. rslt = 0
  282. arg_msg = "请输入经手人"
  283. GOTO ext
  284. END IF
  285. IF banktypeid = 0 THEN
  286. rslt = 0
  287. arg_msg = "请选择结算方式"
  288. GOTO ext
  289. END IF
  290. IF accountsid = 0 THEN
  291. rslt = 0
  292. arg_msg = "请选择银行帐号"
  293. GOTO ext
  294. END IF
  295. SELECT moneyid
  296. INTO :rapmoneyid
  297. FROM u_accounts
  298. WHERE u_accounts.accountsid = :accountsid
  299. Using commit_transaction;
  300. IF commit_transaction.SQLCode <> 0 THEN
  301. arg_msg = '查询当前的出纳帐号币种失败,'+sqlca.SQLErrText
  302. rslt = 0
  303. GOTO ext
  304. END IF
  305. SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction ;
  306. IF commit_transaction.SQLCode <> 0 THEN
  307. rslt = 0
  308. arg_msg = "查询操作失败,日期 "
  309. GOTO ext
  310. END IF
  311. cnt = 0
  312. SELECT count(*) INTO :cnt
  313. FROM u_user
  314. Where username = :arg_operator Using commit_transaction ;
  315. IF commit_transaction.SQLCode <> 0 THEN
  316. rslt = 0
  317. arg_msg = "查询操作失败,操作员!"
  318. GOTO ext
  319. END IF
  320. IF cnt = 0 THEN
  321. rslt = 0
  322. arg_msg = "操作员姓名未登记或已取消!"
  323. GOTO ext
  324. END IF
  325. opdate = server_datetime //填写单据建立时间(最近修改时间)
  326. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  327. IF billid = 0 THEN //新建
  328. ll_id = f_sys_scidentity(0,"U_emppay","billid",arg_msg,True,id_sqlca)
  329. IF ll_id <= 0 THEN
  330. rslt = 0
  331. GOTO ext
  332. END IF
  333. //取分部代号
  334. IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
  335. rslt = 0
  336. GOTO ext
  337. END IF
  338. IF billtype = 0 THEN
  339. billcode = getid(0,ls_sccode + 'SZ',Date(server_datetime),False,commit_transaction)
  340. ELSEIF billtype = 1 THEN
  341. billcode = getid(0,ls_sccode + 'JH',Date(server_datetime),False,commit_transaction)
  342. ELSEIF billtype = 2 THEN
  343. billcode = getid(0,ls_sccode + 'HH',Date(server_datetime),False,commit_transaction)
  344. END IF
  345. IF billcode = "err" THEN
  346. billcode = ''
  347. rslt = 0
  348. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  349. GOTO ext
  350. END IF
  351. //读取新taskid
  352. INSERT INTO U_emppay
  353. ( billid,
  354. billcode,
  355. banktypeid,
  356. amt,
  357. accountsid,
  358. billdate,
  359. dscrp,
  360. rep,
  361. itemid,
  362. Opemp,
  363. Opdate,
  364. scid,
  365. relcode)
  366. VALUES
  367. (
  368. :ll_id,
  369. :billcode,
  370. :banktypeid,
  371. :amt,
  372. :accountsid,
  373. :billdate,
  374. :dscrp,
  375. :rep,
  376. :itemid,
  377. :arg_operator,
  378. :opdate,
  379. :scid,
  380. :relcode) Using commit_transaction ;
  381. IF commit_transaction.SQLCode <> 0 THEN
  382. rslt = 0
  383. arg_msg = "插入工资发放单操作失败"+"~n"+commit_transaction.SQLErrText
  384. GOTO ext
  385. END IF
  386. billid = ll_id
  387. ELSE //////////////////////////////////////////////// //更新
  388. UPDATE U_emppay
  389. SET
  390. billcode = :billcode,
  391. banktypeid = :banktypeid,
  392. amt = :amt,
  393. accountsid = :accountsid,
  394. billdate = :billdate,
  395. dscrp = :dscrp,
  396. rep = :rep,
  397. rapmoneyid = :rapmoneyid,
  398. itemid = :itemid,
  399. ModDate = getdate(),
  400. ModEmp = :arg_operator,
  401. relcode = :relcode,
  402. scid = :scid
  403. WHERE U_emppay.billID = :billID
  404. Using commit_transaction;
  405. IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
  406. rslt = 0
  407. arg_msg = "更新报价单操作失败"+"~n"+commit_transaction.SQLErrText
  408. GOTO ext
  409. END IF
  410. DELETE FROM U_emppay_mx
  411. Where U_emppay_mx.billid = :billid Using commit_transaction;
  412. IF commit_transaction.SQLCode <> 0 THEN
  413. rslt = 0
  414. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  415. GOTO ext
  416. END IF
  417. END IF
  418. FOR i = 1 To it_mxbt
  419. INSERT INTO U_emppay_mx
  420. (billid,
  421. printid,
  422. amt,
  423. empid,
  424. mxdscrp,
  425. mstpayamt)
  426. VALUES (:billid,
  427. :incomemx[i].printid,
  428. :incomemx[i].amt,
  429. :incomemx[i].empid,
  430. :incomemx[i].mxdscrp,
  431. :incomemx[i].mstpayamt) Using commit_transaction ;
  432. IF commit_transaction.SQLCode <> 0 THEN
  433. IF it_newbegin THEN billid = 0
  434. rslt = 0
  435. arg_msg = "插入工资发放单明细操作失败"+"~n"+commit_transaction.SQLErrText
  436. GOTO ext
  437. END IF
  438. NEXT
  439. it_newbegin = False
  440. it_updatebegin = False
  441. ext:
  442. IF rslt = 0 THEN
  443. ROLLBACK Using commit_transaction;
  444. p_clearmx()
  445. ELSEIF arg_ifcommit And rslt = 1 THEN
  446. COMMIT Using commit_transaction;
  447. END IF
  448. RETURN rslt
  449. end function
  450. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
  451. //0 fail 1 SUCCESS
  452. Int rslt = 1
  453. arg_newdescppart = Trim(arg_newdescppart)
  454. IF it_updatebegin Or it_newbegin THEN
  455. rslt = 0
  456. arG_MSG = "编辑状态下不可用"
  457. GOTO ext
  458. END IF
  459. IF arg_newdescppart = '' THEN
  460. rslt = 0
  461. arG_MSG = "要添加内容为空,操作取消"
  462. GOTO ext
  463. END IF
  464. IF p_getinfo(arg_billid,arG_MSG) = 0 THEN
  465. rslt = 0
  466. GOTO ext
  467. END IF
  468. IF flag <> 1 THEN
  469. rslt = 0
  470. arG_MSG = "待审核状态下不可用"
  471. GOTO ext
  472. END IF
  473. UPDATE U_emppay
  474. SET dscrp = ltrim(rtrim(dscrp))+' '+:arg_newdescppart
  475. Where U_emppay.billid = :arg_billid Using commit_transaction;
  476. IF commit_transaction.SQLCode <> 0 THEN
  477. rslt = 0
  478. arG_MSG = "添加单据备注操作失败"+"~n"+commit_transaction.SQLErrText
  479. ROLLBACK Using commit_transaction;
  480. GOTO ext
  481. END IF
  482. IF relrapid > 0 THEN
  483. UPDATE u_rap_money
  484. SET dscrp = ltrim(rtrim(dscrp)) + ' '+:arg_newdescppart
  485. Where rapmoneyid = :relrapid Using commit_transaction;
  486. IF commit_transaction.SQLCode <> 0 THEN
  487. rslt = 0
  488. arG_MSG = "添加相关出纳帐备注操作失败"+"~n"+commit_transaction.SQLErrText
  489. ROLLBACK Using commit_transaction;
  490. GOTO ext
  491. END IF
  492. END IF
  493. dscrp = dscrp+' '+arg_newdescppart
  494. it_newbegin = False
  495. it_updatebegin = False
  496. ext:
  497. IF arg_ifcommit And rslt = 1 THEN
  498. COMMIT Using commit_transaction;
  499. END IF
  500. p_reset()
  501. Return (rslt)
  502. end function
  503. public function integer p_clearmx ();it_mxbt = 0
  504. return 1
  505. end function
  506. public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  507. Long i = 1 ,no_mxcheck
  508. IF arg_billid <= 0 THEN
  509. rslt = 0
  510. arg_msg = '错误单据唯一码'
  511. GOTO ext
  512. END IF
  513. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  514. rslt = 0
  515. GOTO ext
  516. END IF
  517. DECLARE cur_mx CURSOR FOR
  518. SELECT billid,printid, itemid, amt, empid, buildtype, relscid, relbillid, relbillcode,rel_dateint,mxdscrp
  519. FROM U_emppay_mx
  520. Where billid = :arg_billid Using commit_transaction;
  521. OPEN cur_mx;
  522. FETCH cur_mx INTO :incomemx[i].billid,
  523. :incomemx[i].printid,
  524. :incomemx[i].itemid,
  525. :incomemx[i].amt,
  526. :incomemx[i].empid,
  527. :incomemx[i].buildtype,
  528. :incomemx[i].relscid,
  529. :incomemx[i].relbillid,
  530. :incomemx[i].relbillcode,
  531. :incomemx[i].rel_dateint,
  532. :incomemx[i].mxdscrp;
  533. DO WHILE sqlca.SQLCode = 0
  534. i++
  535. FETCH cur_mx INTO :incomemx[i].billid,
  536. :incomemx[i].printid,
  537. :incomemx[i].itemid,
  538. :incomemx[i].amt,
  539. :incomemx[i].empid,
  540. :incomemx[i].buildtype,
  541. :incomemx[i].relscid,
  542. :incomemx[i].relbillid,
  543. :incomemx[i].relbillcode,
  544. :incomemx[i].rel_dateint,
  545. :incomemx[i].mxdscrp;
  546. LOOP
  547. CLOSE cur_mx;
  548. SELECT count(*) INTO :no_mxcheck
  549. FROM U_emppay_mx
  550. Where billid = :arg_billid Using commit_transaction;
  551. IF commit_transaction.SQLCode <> 0 THEN
  552. rslt = 0
  553. arg_msg = "查询操作失败,工资发放单明细数量"
  554. GOTO ext
  555. END IF
  556. IF i <> (no_mxcheck+1) THEN
  557. rslt = 0
  558. arg_msg = "查询操作失败,工资发放单明细"
  559. GOTO ext
  560. END IF
  561. it_mxbt = i - 1
  562. it_newbegin = False
  563. it_updatebegin = False
  564. ext:
  565. IF rslt = 0 THEN p_reset()
  566. RETURN rslt
  567. end function
  568. public function integer audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  569. Int rslt = 1
  570. Long cnt = 0,ll_i
  571. uo_empinfo uo_ep
  572. uo_ep = Create uo_empinfo
  573. IF arg_billid <= 0 THEN
  574. rslt = 0
  575. arg_msg = '错误工资发放单唯一码'
  576. GOTO ext
  577. END IF
  578. IF getinfo(arg_billid,arg_msg) = 0 THEN
  579. rslt = 0
  580. GOTO ext
  581. END IF
  582. IF flag <> 0 THEN
  583. rslt = 0
  584. arg_msg = "单据已经审核,操作取消"
  585. GOTO ext
  586. END IF
  587. FOR ll_i = 1 To it_mxbt
  588. IF uo_ep.uof_add_emppay( incomemx[ll_i].empid,billid,rapmoneyid,billcode,&
  589. billdate,incomemx[ll_i].amt,incomemx[ll_i].mxdscrp,1,False,arg_msg) = 0 THEN
  590. rslt = 0
  591. GOTO ext
  592. END IF
  593. NEXT
  594. UPDATE U_emppay
  595. SET auditemp = :publ_operator ,
  596. auditdate = getdate(),
  597. flag = 1
  598. WHERE billid = :arg_billid
  599. AND flag = 0
  600. Using commit_transaction;
  601. IF commit_transaction.SQLCode <> 0 THEN
  602. rslt = 0
  603. arg_msg = "单据审核操作失败 ~n"+commit_transaction.SQLErrText
  604. GOTO ext
  605. END IF
  606. it_newbegin = False
  607. it_updatebegin = False
  608. ext:
  609. IF rslt = 0 THEN
  610. ROLLBACK Using commit_transaction;
  611. ELSEIF rslt = 1 And arg_ifcommit THEN
  612. COMMIT Using commit_transaction;
  613. END IF
  614. p_reset()
  615. Destroy uo_ep
  616. Return (rslt)
  617. end function
  618. public function integer cancelaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  619. DateTime nulldate
  620. Long ll_i
  621. SetNull(nulldate)
  622. uo_empinfo uo_ep
  623. uo_ep = Create uo_empinfo
  624. IF arg_billid <= 0 THEN
  625. rslt = 0
  626. arg_msg = '错误单据唯一码'
  627. GOTO ext
  628. END IF
  629. IF getinfo(arg_billid,arg_msg) = 0 THEN
  630. rslt = 0
  631. GOTO ext
  632. END IF
  633. IF flag <> 1 THEN
  634. rslt = 0
  635. arg_msg = "单据只有在已审核状态才可以执行撤消审核,请核对"
  636. GOTO ext
  637. END IF
  638. IF secflag = 1 THEN
  639. rslt = 0
  640. arg_msg = "单据已财务确认,不能执行撤消审核,请核对"
  641. GOTO ext
  642. END IF
  643. FOR ll_i = 1 To it_mxbt
  644. IF uo_ep.uof_del_emppay(incomemx[ll_i].empid,billid,rapmoneyid,billcode,1,False,arg_msg) = 0 THEN
  645. rslt = 0
  646. GOTO ext
  647. END IF
  648. NEXT
  649. UPDATE U_emppay
  650. SET flag = 0,
  651. auditemp = '',
  652. auditdate = :nulldate
  653. WHERE U_emppay.billid = :arg_billid
  654. AND flag = 1
  655. AND secflag = 0
  656. Using commit_transaction ;
  657. IF commit_transaction.SQLCode <> 0 THEN
  658. rslt = 0
  659. arg_msg = "单据撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  660. GOTO ext
  661. ELSEIF commit_transaction.SQLCode = 100 THEN
  662. rslt = 0
  663. arg_msg = "单据撤审失败"+"~n"+commit_transaction.SQLErrText
  664. GOTO ext
  665. END IF
  666. it_newbegin = False
  667. it_updatebegin = False
  668. ext:
  669. IF rslt = 0 THEN
  670. ROLLBACK Using commit_transaction;
  671. ELSEIF rslt = 1 And arg_ifcommit THEN
  672. COMMIT Using commit_transaction;
  673. END IF
  674. p_reset()
  675. Destroy uo_ep
  676. Return (rslt)
  677. end function
  678. public function integer secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  679. Long cnt = 0
  680. Long ll_i
  681. Long ll_ref_rapmoneyid, ll_ref_dateint
  682. String ls_dscrp
  683. Dec ld_msttakeamt, ld_takeamt
  684. uo_iteminput uo_item
  685. uo_item = Create uo_iteminput
  686. uo_rapmoney uo_money
  687. uo_money = Create uo_rapmoney
  688. s_rap_money s_rap
  689. s_iteminput s_input
  690. IF arg_billid <= 0 THEN
  691. rslt = 0
  692. ARG_MSG = '错误单据唯一码'
  693. GOTO ext
  694. END IF
  695. IF getinfo(arg_billid,ARG_MSG) = 0 THEN
  696. rslt = 0
  697. GOTO ext
  698. END IF
  699. IF flag = 0 THEN
  700. rslt = 0
  701. ARG_MSG = "单据未审核,不能进行财务确认"
  702. GOTO ext
  703. END IF
  704. IF secflag = 1 THEN
  705. rslt = 0
  706. ARG_MSG = "单据已财务确认,请检查"
  707. GOTO ext
  708. END IF
  709. ///////////////////////////////////// //
  710. ls_dscrp = '工资发放单:' + billcode + ' 相关号:'+relcode+' ' +dscrp
  711. ld_msttakeamt = 0
  712. ld_takeamt = amt
  713. s_input.itemid = itemid
  714. s_input.dateint = 0
  715. s_input.outdate = billdate
  716. s_input.dscrp = ls_dscrp
  717. s_input.outamt = ld_takeamt
  718. s_input.accountsid = accountsid
  719. s_input.banktypeid = banktypeid
  720. s_input.billcode = billcode
  721. s_input.relcode = ''
  722. s_input.buildtype = 1
  723. s_input.opemp = publ_operator
  724. s_input.relrep = rep
  725. s_input.scid = scid
  726. IF uo_item.add_iteminput(s_input,ARG_MSG,False) = 0 THEN
  727. rslt = 0
  728. GOTO ext
  729. END IF
  730. ll_ref_dateint = uo_item.ref_dateint
  731. s_rap.accountsid = accountsid
  732. s_rap.takedate = billdate
  733. s_rap.inrep = rep
  734. s_rap.dscrp = ls_dscrp
  735. s_rap.msttakeamt = ld_msttakeamt
  736. s_rap.takeamt = ld_takeamt
  737. s_rap.billcode = billcode
  738. s_rap.relcode = relcode
  739. s_rap.buildtype = 1
  740. s_rap.dcflag = 0
  741. s_rap.relid = 0
  742. s_rap.opemp = publ_operator
  743. s_rap.banktypeid = banktypeid
  744. s_rap.scid = scid
  745. IF uo_money.add_raprec(s_rap,ARG_MSG,False) = 0 THEN
  746. ARG_MSG = '增加出纳明细帐失败!~n' + ARG_MSG
  747. rslt = 0
  748. GOTO ext
  749. END IF
  750. ll_ref_rapmoneyid = uo_money.ref_rapid
  751. IF ll_ref_rapmoneyid = 0 THEN
  752. ARG_MSG = '增加出纳明细帐失败!'
  753. rslt = 0
  754. GOTO ext
  755. END IF
  756. UPDATE U_emppay
  757. SET secauditemp = :publ_operator ,
  758. secauditdate = getdate(),
  759. secflag = 1,
  760. relrapid = :ll_ref_rapmoneyid,
  761. ref_dateint = :ll_ref_dateint
  762. WHERE U_emppay.billid = :arg_billid
  763. AND U_emppay.secflag = 0
  764. AND U_emppay.flag = 1
  765. Using commit_transaction;
  766. IF commit_transaction.SQLCode <> 0 THEN
  767. rslt = 0
  768. ARG_MSG = "更单据审核操作失败"+"~n"+commit_transaction.SQLErrText
  769. GOTO ext
  770. END IF
  771. it_newbegin = False
  772. it_updatebegin = False
  773. ext:
  774. Destroy uo_item
  775. Destroy uo_money
  776. IF rslt = 0 THEN
  777. ROLLBACK Using commit_transaction;
  778. ELSEIF rslt = 1 And arg_ifcommit THEN
  779. COMMIT Using commit_transaction;
  780. END IF
  781. p_reset()
  782. Return (rslt)
  783. end function
  784. public function integer cancelsecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  785. Long ll_i
  786. DateTime nulldate
  787. SetNull(nulldate)
  788. uo_iteminput uo_item
  789. uo_item = Create uo_iteminput
  790. uo_rapmoney uo_money
  791. uo_money = Create uo_rapmoney
  792. IF arg_billid <= 0 THEN
  793. rslt = 0
  794. arg_msg = '错误单据唯一码'
  795. GOTO ext
  796. END IF
  797. IF getinfo(arg_billid,arg_msg) = 0 THEN
  798. rslt = 0
  799. GOTO ext
  800. END IF
  801. IF secflag = 0 THEN
  802. rslt = 0
  803. arg_msg = "单据未财务确认,请检查"
  804. GOTO ext
  805. END IF
  806. IF relrapid > 0 THEN
  807. IF uo_money.del_raprec(relrapid,accountsid,1,arg_msg,False) = 0 THEN
  808. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  809. rslt = 0
  810. GOTO ext
  811. END IF
  812. END IF
  813. IF ref_dateint > 0 THEN
  814. IF uo_item.del_iteminput(itemid,ref_dateint,1,arg_msg,False) = 0 THEN
  815. arg_msg = '删除收支明细帐失败!~n' + arg_msg
  816. rslt = 0
  817. GOTO ext
  818. END IF
  819. END IF
  820. UPDATE U_emppay
  821. SET secflag = 0,
  822. secauditemp = '',
  823. secauditdate = :nulldate,
  824. relrapid = 0,
  825. ref_dateint = 0
  826. WHERE U_emppay.billid = :arg_billid
  827. AND secflag = 1
  828. Using commit_transaction ;
  829. IF commit_transaction.SQLCode <> 0 THEN
  830. rslt = 0
  831. arg_msg = "单据财务反确认操作失败"+"~n"+commit_transaction.SQLErrText
  832. GOTO ext
  833. END IF
  834. it_newbegin = False
  835. it_updatebegin = False
  836. ext:
  837. Destroy uo_item
  838. Destroy uo_money
  839. IF rslt = 0 THEN
  840. ROLLBACK Using commit_transaction;
  841. ELSEIF rslt = 1 And arg_ifcommit THEN
  842. COMMIT Using commit_transaction;
  843. END IF
  844. p_reset()
  845. Return (rslt)
  846. end function
  847. public function integer acceptmx (long arg_empid, decimal arg_amt, decimal arg_mstpayamt, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
  848. Long cnt
  849. Int li_ifdepart,li_ifemp
  850. IF it_newbegin = False And it_updatebegin = False THEN
  851. rslt = 0
  852. arg_msg = "非编辑状态不可以使用,操作取消"
  853. GOTO ext
  854. END IF
  855. it_mxbt++
  856. incomemx[it_mxbt].empid = arg_empid
  857. incomemx[it_mxbt].printid = it_mxbt
  858. incomemx[it_mxbt].amt = arg_amt
  859. incomemx[it_mxbt].mxdscrp = arg_mxdscrp
  860. incomemx[it_mxbt].mstpayamt = arg_mstpayamt
  861. ext:
  862. IF rslt = 0 THEN p_clearmx()
  863. RETURN rslt
  864. end function
  865. on uo_emppay.create
  866. call super::create
  867. TriggerEvent( this, "constructor" )
  868. end on
  869. on uo_emppay.destroy
  870. TriggerEvent( this, "destructor" )
  871. call super::destroy
  872. end on