uo_abnormity.sru 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  1. $PBExportHeader$uo_abnormity.sru
  2. forward
  3. global type uo_abnormity from nonvisualobject
  4. end type
  5. type s_abnormitymx from structure within uo_abnormity
  6. end type
  7. end forward
  8. type s_abnormitymx from structure
  9. long empid
  10. string empcode
  11. string empname
  12. decimal { 5 } amount
  13. decimal { 5 } wage
  14. string mxdscrp
  15. long printid
  16. string relcode
  17. long proid
  18. string procode
  19. string proname
  20. decimal { 5 } workhour
  21. end type
  22. global type uo_abnormity from nonvisualobject
  23. end type
  24. global uo_abnormity uo_abnormity
  25. type variables
  26. public protectedwrite long billid //计件单自动增量id
  27. public protectedwrite long wagemth //工资月份
  28. public protectedwrite string billcode //计件单的唯一编号
  29. public protectedwrite datetime opdate //建立时间,自动
  30. public protectedwrite string opemp //建立人
  31. public protectedwrite datetime moddate //修改时间,自动
  32. public protectedwrite string modemp //修改人
  33. public protectedwrite int flag=0 //审核标志
  34. public protectedwrite int secflag=0 //审核标志
  35. public protectedwrite datetime auditingdate //审核时间
  36. public protectedwrite string auditingrep //审核操作员
  37. datetime billdate //计件日期
  38. long wageid //工资项目id
  39. string dscrp='' //备注
  40. string relcode ='' //相关号码 
  41. long relid
  42. uo_wage u_wage
  43. private:
  44. s_abnormitymx abnormitymx[] //明细结构数组
  45. long it_mxbt=0 //明细结构数组末指针
  46. boolean it_newbegin=false //新建标志
  47. boolean it_updatebegin=false//修改标志
  48. end variables
  49. forward prototypes
  50. public function integer p_clearmx ()
  51. public function integer p_reset ()
  52. public function integer newbegin (ref string arg_msg)
  53. public function integer updatebegin (long arg_billid, ref string arg_msg)
  54. public function integer c_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  55. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  56. public function integer del (long arg_billid, ref string arg_msg)
  57. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  58. public function integer auditing (long arg_wageid, long arg_wagemth, datetime arg_enddate, ref string arg_msg, boolean arg_ifcommit)
  59. public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  60. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  61. public function integer acceptmx (long arg_empid, string arg_empcode, string arg_empname, decimal arg_amount, decimal arg_wage, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_relcode, long arg_proid, string arg_procode, string arg_proname, decimal arg_workhour)
  62. end prototypes
  63. public function integer p_clearmx ();//INT p_clearmx()
  64. //清除明细
  65. it_mxbt=0
  66. RETURN 1
  67. end function
  68. public function integer p_reset ();//INT p_RESET()
  69. //清除对象及其明细
  70. billid=0
  71. billcode=''
  72. opemp=''
  73. auditingrep=''
  74. flag=0
  75. wageid=0
  76. dscrp=''
  77. relcode=''
  78. it_newbegin=FALSE
  79. it_updatebegin=FALSE
  80. //清除明细
  81. P_CLEARMX()
  82. RETURN 1
  83. end function
  84. public function integer newbegin (ref string arg_msg);p_reset()
  85. it_newbegin=TRUE
  86. it_updatebegin=FALSE
  87. return 1
  88. end function
  89. public function integer updatebegin (long arg_billid, ref string arg_msg);//====================================================================
  90. // Function: updatebegin(arg_billid,arg_msg)
  91. //--------------------------------------------------------------------
  92. // Description:
  93. //--------------------------------------------------------------------
  94. // Arguments:
  95. // value long arg_billid
  96. // reference string arg_msg
  97. //--------------------------------------------------------------------
  98. // Returns: integer
  99. //--------------------------------------------------------------------
  100. // Author: yyx Date: 2003.11.21
  101. //--------------------------------------------------------------------
  102. // Modify History:
  103. //
  104. //====================================================================
  105. int rslt = 1
  106. if arg_billid <= 0 then
  107. billid = 0
  108. goto ext
  109. end if
  110. select
  111. u_sc_abnormity.billcode,
  112. u_sc_abnormity.wagemth,
  113. u_sc_abnormity.wageid,
  114. u_sc_abnormity.billdate,
  115. u_sc_abnormity.dscrp,
  116. u_sc_abnormity.auditingflag,
  117. u_sc_abnormity.secauditingflag
  118. into
  119. :billcode,
  120. :wagemth,
  121. :wageid,
  122. :billdate,
  123. :dscrp,
  124. :flag,
  125. :secflag
  126. from u_sc_abnormity where u_sc_abnormity.billid = :arg_billid;
  127. if sqlca.sqlcode <> 0 then
  128. rslt = 0
  129. if pos(lower(sqlca.SQLErrText),'more than') > 0 then
  130. arg_msg = '查询操作失败,查询数据返回值多于一个'
  131. else
  132. arg_msg = '查询数据操作失败(错误单据唯一码)'
  133. end if
  134. goto ext
  135. end if
  136. if secflag = 1 then
  137. rslt = 0
  138. arg_msg = '单据已经确认,不可以修改'
  139. goto ext
  140. end if
  141. if flag = 1 then
  142. rslt = 0
  143. arg_msg = '单据已经审核,不可以修改'
  144. goto ext
  145. end if
  146. billid = arg_billid
  147. p_clearmx()
  148. it_newbegin = false
  149. it_updatebegin = true
  150. ext:
  151. if rslt = 0 then p_reset()
  152. arg_msg = '计件单,'+ arg_msg
  153. return rslt
  154. end function
  155. public function integer c_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);
  156. long cnt=0,i
  157. int rslt=1
  158. datetime null_server_dt
  159. setnull(null_server_dt)
  160. select count(*) into :cnt from u_sc_abnormity where wagemth=:arg_wagemth and Auditingflag=1;
  161. if sqlca.sqlcode<>0 then
  162. rslt=0
  163. arg_msg='查询计件单明细失败'
  164. goto ext
  165. end if
  166. if cnt=0 then
  167. rslt=0
  168. arg_msg='该月的计件单未审核,不用撤审!'
  169. goto ext
  170. end if
  171. select count(*) into :cnt from u_gz_wage where wagemth=:arg_wagemth and Auditingflag=1;
  172. if sqlca.sqlcode<>0 then
  173. rslt=0
  174. arg_msg='查询工资表失败'
  175. goto ext
  176. end if
  177. if cnt>0 then
  178. rslt=0
  179. arg_msg='该月的工资表已审核,不能撤审!'
  180. goto ext
  181. end if
  182. cnt=0
  183. select count(*) into :cnt from u_gz_wageitem where useflag=1 and wageid=:arg_wageid;
  184. if sqlca.sqlcode<>0 then
  185. rslt=0
  186. arg_msg='查询工资项目失败'
  187. goto ext
  188. end if
  189. if cnt=0 then
  190. rslt=0
  191. arg_msg='不存在该工资项目'
  192. goto ext
  193. end if
  194. update u_sc_abnormity set
  195. Auditingflag=0,
  196. Auditingemp='',
  197. Auditingdate=:null_server_dt,
  198. wagemth=0
  199. where wagemth=:arg_wagemth and Auditingflag=1 and wageid=:arg_wageid;
  200. if sqlca.sqlcode<>0 then
  201. ARG_msg='更新计件明细单失败'
  202. rslt=0
  203. goto ext
  204. end if
  205. update u_gz_wagemx set wageamt=0 where wageid=:arg_wageid and wagemth=:arg_wagemth;
  206. if sqlca.sqlcode<>0 then
  207. rslt=0
  208. arg_Msg='更新工资表失败!'
  209. goto ext
  210. end if
  211. ext:
  212. if rslt=0 then
  213. rollback;
  214. elseif rslt=1 and arg_ifcommit then
  215. commit;
  216. end if
  217. arg_msg = '计件单,'+ arg_msg
  218. return rslt
  219. end function
  220. public function integer save (ref string arg_msg, boolean arg_ifcommit);//====================================================================
  221. // Function: save(arg_msg,arg_ifcommit)
  222. //--------------------------------------------------------------------
  223. // Description:
  224. //--------------------------------------------------------------------
  225. // Arguments:
  226. // reference string arg_msg
  227. // value boolean arg_ifcommit
  228. //--------------------------------------------------------------------
  229. // Returns: integer
  230. //--------------------------------------------------------------------
  231. // Author: yyx Date: 2003.11.21
  232. //--------------------------------------------------------------------
  233. // Modify History:
  234. //
  235. //====================================================================
  236. Integer rslt = 1,i,cnt = 0
  237. DateTime server_dt
  238. Long ls_newid
  239. IF IsNull(wageid) THEN wageid = 0
  240. IF IsNull(dscrp) THEN dscrp = ''
  241. IF IsNull(relcode) THEN relcode = ''
  242. IF IsNull(relid) THEN relid = 0
  243. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  244. rslt = 0
  245. arg_msg = "非编辑状态不可以提交"
  246. GOTO ext
  247. END IF
  248. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  249. //取得系统时间,借用操作员表
  250. IF sqlca.SQLCode <> 0 THEN
  251. rslt = 0
  252. arg_msg = "查询操作失败,日期 "
  253. GOTO ext
  254. END IF
  255. IF it_mxbt = 0 THEN //
  256. rslt = 0
  257. arg_msg = "没有计件明细"
  258. GOTO ext
  259. END IF
  260. IF Year(Date(billdate)) < 2000 OR IsNull(billdate) THEN
  261. rslt = 0
  262. arg_msg = "缺少计件时间或不合理"
  263. GOTO ext
  264. END IF
  265. ////////////////////////////////////////////////开始区分:新建/更新 处理
  266. IF billid = 0 THEN //新建
  267. ls_newid = f_sys_scidentity(0,"u_sc_abnormity","billid",arg_msg,TRUE,sqlca)
  268. IF ls_newid <= 0 THEN
  269. rslt = 0
  270. GOTO ext
  271. END IF
  272. billcode = getid(0,"YC",Date(server_dt),TRUE,sqlca) //取得新单据编号
  273. IF billcode = "err" THEN
  274. billcode = ''
  275. rslt = 0
  276. arg_msg = "无法获取计件单编号"
  277. GOTO ext
  278. END IF
  279. INSERT INTO u_sc_abnormity (
  280. billid,
  281. billcode,
  282. Wagemth,
  283. wageid,
  284. billdate,
  285. Dscrp,
  286. opdate,
  287. opemp,
  288. relcode,
  289. relid)
  290. VALUES (
  291. :ls_newid,
  292. :billcode,
  293. :Wagemth,
  294. :wageid,
  295. :billdate,
  296. :dscrp,
  297. :server_dt,
  298. :publ_operator,
  299. :relcode,
  300. :relid);
  301. IF sqlca.SQLCode <> 0 THEN
  302. rslt = 0
  303. if pos(lower(sqlca.SQLErrText),'pk_u_sc_abnormity') > 0 then
  304. arg_msg = '插入操作失败,关键字单据ID重复'
  305. elseif pos(lower(sqlca.SQLErrText),'ix_u_sc_abnormity') > 0 then
  306. arg_msg = '插入操作失败,单据编号重复'
  307. else
  308. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  309. end if
  310. GOTO ext
  311. END IF
  312. billid = ls_newid
  313. FOR i = 1 TO it_mxbt
  314. INSERT INTO u_sc_abnormitymx
  315. ( billid,
  316. empid,
  317. empcode,
  318. empname,
  319. amount,
  320. wage,
  321. mxdscrp,
  322. printid,
  323. relcode,
  324. proid,
  325. procode,
  326. proname,
  327. workhour)
  328. VALUES (:ls_newid,
  329. :abnormitymx[i].empid,
  330. :abnormitymx[i].empcode,
  331. :abnormitymx[i].empname,
  332. :abnormitymx[i].amount,
  333. :abnormitymx[i].wage,
  334. :abnormitymx[i].mxdscrp,
  335. :abnormitymx[i].printid,
  336. :abnormitymx[i].relcode,
  337. :abnormitymx[i].proid,
  338. :abnormitymx[i].procode,
  339. :abnormitymx[i].proname,
  340. :abnormitymx[i].workhour);
  341. IF sqlca.SQLCode <> 0 THEN
  342. billid = 0 //还原noticeid
  343. rslt = 0
  344. if pos(lower(sqlca.SQLErrText),'pk_u_sc_abnormitymx') > 0 then
  345. arg_msg = '插入明细操作失败,关键字分部ID、单据ID、明细ID重复'
  346. else
  347. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  348. end if
  349. ROLLBACK ;
  350. GOTO ext
  351. END IF
  352. NEXT
  353. ELSE //////////////////////////////////////////////////更新
  354. UPDATE u_sc_abnormity
  355. SET wageid = :wageid,
  356. billdate = :billdate,
  357. Dscrp = :Dscrp,
  358. moddate = :server_dt,
  359. modemp = :publ_operator,
  360. relcode = :relcode,
  361. relid = :relid
  362. WHERE u_sc_abnormity.billid = :billid
  363. AND Auditingflag = 0;
  364. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  365. rslt = 0
  366. if pos(lower(sqlca.SQLErrText),'pk_u_sc_abnormity') > 0 then
  367. arg_msg = '插入操作失败,关键字单据ID重复'
  368. elseif pos(lower(sqlca.SQLErrText),'ix_u_sc_abnormity') > 0 then
  369. arg_msg = '插入操作失败,单据编号重复'
  370. else
  371. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  372. end if
  373. GOTO ext
  374. END IF
  375. //删除原有明细
  376. DELETE FROM u_sc_abnormitymx
  377. Where u_sc_abnormitymx.billid = :billid;
  378. IF sqlca.SQLCode <> 0 THEN
  379. rslt = 0
  380. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  381. GOTO ext
  382. END IF
  383. FOR i = 1 TO it_mxbt
  384. INSERT INTO u_sc_abnormitymx
  385. ( billid,
  386. empid,
  387. empcode,
  388. empname,
  389. amount,
  390. wage,
  391. mxdscrp,
  392. printid,
  393. relcode,
  394. proid,
  395. procode,
  396. proname,
  397. workhour)
  398. VALUES (:billid,
  399. :abnormitymx[i].empid,
  400. :abnormitymx[i].empcode,
  401. :abnormitymx[i].empname,
  402. :abnormitymx[i].amount,
  403. :abnormitymx[i].wage,
  404. :abnormitymx[i].mxdscrp,
  405. :abnormitymx[i].printid,
  406. :abnormitymx[i].relcode,
  407. :abnormitymx[i].proid,
  408. :abnormitymx[i].procode,
  409. :abnormitymx[i].proname,
  410. :abnormitymx[i].workhour);
  411. IF sqlca.SQLCode <> 0 THEN
  412. rslt = 0
  413. if pos(lower(sqlca.SQLErrText),'PK_u_sc_abnormitymx') > 0 then
  414. arg_msg = '插入明细操作失败,关键字分部ID、单据ID、明细ID重复'
  415. else
  416. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  417. end if
  418. GOTO ext
  419. END IF
  420. NEXT
  421. END IF
  422. it_newbegin = FALSE
  423. it_updatebegin = FALSE
  424. ext:
  425. IF rslt = 0 THEN
  426. ROLLBACK;
  427. p_clearmx()
  428. ELSEIF rslt = 1 AND arg_ifcommit THEN
  429. COMMIT;
  430. END IF
  431. arg_msg = '计件单,'+ arg_msg
  432. RETURN(rslt)
  433. end function
  434. public function integer del (long arg_billid, ref string arg_msg);//====================================================================
  435. // Function: del(arg_billid,arg_msg)
  436. //--------------------------------------------------------------------
  437. // Description:
  438. //--------------------------------------------------------------------
  439. // Arguments:
  440. // value long arg_billid
  441. // reference string arg_msg
  442. //--------------------------------------------------------------------
  443. // Returns: integer
  444. //--------------------------------------------------------------------
  445. // Author: yyx Date: 2003.11.21
  446. //--------------------------------------------------------------------
  447. // Modify History:
  448. //
  449. //====================================================================
  450. int rslt = 1
  451. if arg_billid <= 0 then
  452. rslt = 0
  453. arg_msg = "没有删除对象,操作取消"
  454. goto ext
  455. end if
  456. if it_newbegin or it_updatebegin then
  457. rslt=0
  458. arg_msg="编辑状态下不可以执行,操作取消"
  459. goto ext
  460. end if
  461. select u_sc_abnormity.auditingflag
  462. into :flag
  463. from u_sc_abnormity
  464. where u_sc_abnormity.billid = :arg_billid;
  465. if sqlca.sqlcode <> 0 then
  466. rslt = 0
  467. if pos(lower(sqlca.SQLErrText),'more than') > 0 then
  468. arg_msg = '查询操作失败,查询数据返回值多于一个'
  469. else
  470. arg_msg = '查询计件单操作失败(错误单据唯一码)'
  471. end if
  472. goto ext
  473. end if
  474. if flag = 1 then
  475. rslt = 0
  476. arg_msg = "单据已经审核,不可以删除"
  477. goto ext
  478. end if
  479. delete from u_sc_abnormity where u_sc_abnormity.billid = :arg_billid;
  480. if sqlca.sqlcode <> 0 then
  481. rslt = 0
  482. arg_msg = "删除计件单操作失败"
  483. goto ext
  484. end if
  485. delete from u_sc_abnormitymx where u_sc_abnormitymx.billid = :arg_billid;
  486. if sqlca.sqlcode <> 0 then
  487. rslt = 0
  488. arg_msg = "删除计件单明细操作失败"
  489. goto ext
  490. end if
  491. commit;
  492. it_newbegin = false
  493. it_updatebegin = false
  494. if rslt = 0 then
  495. rollback;
  496. p_reset()
  497. end if
  498. ext:
  499. arg_msg = '计件单,'+ arg_msg
  500. return (rslt)
  501. end function
  502. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
  503. // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
  504. //--------------------------------------------------------------------
  505. // Description:
  506. //--------------------------------------------------------------------
  507. // Arguments:
  508. // value long arg_billid
  509. // value string arg_newdescppart
  510. // reference string arg_msg
  511. //--------------------------------------------------------------------
  512. // Returns: integer
  513. //--------------------------------------------------------------------
  514. // Author: yyx Date: 2003.11.21
  515. //--------------------------------------------------------------------
  516. // Modify History:
  517. //
  518. //====================================================================
  519. int rslt = 1
  520. arg_newdescppart = trim(arg_newdescppart)
  521. if arg_billid <= 0 then
  522. rslt = 0
  523. arg_msg = "没有删除对象,操作取消"
  524. goto ext
  525. end if
  526. if it_newbegin or it_updatebegin then
  527. rslt=0
  528. arg_msg="编辑状态下不可以执行,操作取消"
  529. goto ext
  530. end if
  531. select u_sc_abnormity.auditingflag
  532. into :flag
  533. from u_sc_abnormity
  534. where u_sc_abnormity.billid = :arg_billid;
  535. if sqlca.sqlcode <> 0 then
  536. rslt = 0
  537. if pos(lower(sqlca.SQLErrText),'more than') > 0 then
  538. arg_msg = '查询操作失败,查询数据返回值多于一个'
  539. else
  540. arg_msg = '查询计件单操作失败,(错误单据唯一码)'
  541. end if
  542. goto ext
  543. end if
  544. if flag = 0 then
  545. rslt = 0
  546. arg_msg = "非审核状态下不可用"
  547. goto ext
  548. end if
  549. update u_sc_abnormity
  550. set dscrp = dscrp+' '+:arg_newdescppart
  551. where u_sc_abnormity.billid = :billid;
  552. if sqlca.sqlcode <> 0 then
  553. rollback ;
  554. rslt = 0
  555. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext
  556. goto ext
  557. end if
  558. commit;
  559. dscrp = dscrp+' '+arg_newdescppart
  560. ext:
  561. arg_msg = '计件单,'+ arg_msg
  562. return (rslt)
  563. end function
  564. public function integer auditing (long arg_wageid, long arg_wagemth, datetime arg_enddate, ref string arg_msg, boolean arg_ifcommit);//====================================================================
  565. // Function: auditing(arg_wageid,arg_wagemth,arg_enddate,arg_msg,arg_ifcommit)
  566. //--------------------------------------------------------------------
  567. // Description:
  568. //--------------------------------------------------------------------
  569. // Arguments:
  570. // value long arg_wageid
  571. // value long arg_wagemth
  572. // value datetime arg_enddate
  573. // reference string arg_msg
  574. // value boolean arg_ifcommit
  575. //--------------------------------------------------------------------
  576. // Returns: integer
  577. //--------------------------------------------------------------------
  578. // Author: yyx Date: 2003.11.22
  579. //--------------------------------------------------------------------
  580. // Modify History:
  581. //
  582. //====================================================================
  583. long cnt=0,i
  584. int rslt=1
  585. decimal ls_emp_sumwage
  586. datastore ds_emp_sumabnormitywage
  587. cnt=0
  588. select count(*) into :cnt from u_sc_abnormity
  589. where wagemth=:arg_wagemth
  590. and wageid = :arg_wageid
  591. and Auditingflag = 1;
  592. if sqlca.sqlcode<>0 then
  593. rslt=0
  594. arg_msg='查询计件单明细失败!'
  595. goto ext
  596. end if
  597. if cnt > 0 then
  598. rslt=0
  599. arg_msg='该月的计件单已审核,审核前请先执行撤审!'
  600. goto ext
  601. end if
  602. cnt=0
  603. select count(*) into :cnt
  604. from u_gz_wageitem where useflag=1 and wageid=:arg_wageid;
  605. if sqlca.sqlcode<>0 then
  606. rslt=0
  607. arg_msg='查询工资项目失败!'
  608. goto ext
  609. end if
  610. if cnt=0 then
  611. rslt=0
  612. arg_msg='不存在该工资项目!'
  613. goto ext
  614. end if
  615. ds_emp_sumabnormitywage=create datastore
  616. ds_emp_sumabnormitywage.dataobject='dw_emp_sumabnormitywage'
  617. ds_emp_sumabnormitywage.settransobject(sqlca)
  618. if ds_emp_sumabnormitywage.retrieve(arg_enddate,arg_wageid)=0 then
  619. rslt=0
  620. arg_msg='本月没有计件单可审核'
  621. goto ext
  622. end if
  623. for i= 1 to ds_emp_sumabnormitywage.rowcount()
  624. ls_emp_sumwage=0.00
  625. ls_emp_sumwage=ds_emp_sumabnormitywage.object.sumwage[i]
  626. if u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumabnormitywage.object.u_sc_abnormitymx_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,false)=0 then
  627. rslt=0
  628. goto ext
  629. end if
  630. next
  631. update u_sc_abnormity set
  632. Auditingflag=1,
  633. Auditingemp=:publ_operator,
  634. Auditingdate=getdate(),
  635. wagemth=:arg_wagemth
  636. where billdate<=:arg_enddate
  637. and wageid=:arg_wageid
  638. and Auditingflag=0;
  639. if sqlca.sqlcode<>0 then
  640. ARG_msg='更新计件单失败'
  641. rslt=0
  642. goto ext
  643. end if
  644. ext:
  645. if rslt=0 then
  646. rollback;
  647. elseif rslt=1 and arg_ifcommit then
  648. commit;
  649. end if
  650. arg_msg = '计件单,'+ arg_msg
  651. return rslt
  652. end function
  653. public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1,li_secauditingflag
  654. if arg_billid = 0 then
  655. rslt = 0
  656. arg_msg = "没有确认对象"
  657. goto ext
  658. end if
  659. select secauditingflag into :li_secauditingflag
  660. from u_sc_abnormity
  661. where billid = :arg_billid;
  662. if sqlca.sqlcode <> 0 then
  663. rslt = 0
  664. arg_msg = '查询异常计件单资料失败'
  665. goto ext
  666. end if
  667. if li_secauditingflag = 1 then
  668. rslt = 0
  669. arg_msg = '该单据已确认'
  670. goto ext
  671. end if
  672. update u_sc_abnormity
  673. set secauditingemp = :publ_operator,
  674. secauditingdate = getdate(),
  675. secauditingflag = 1
  676. where u_sc_abnormity.billid = :arg_billid
  677. and secauditingflag = 0;
  678. if sqlca.sqlcode <> 0 then
  679. rslt = 0
  680. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+sqlca.sqlerrtext
  681. goto ext
  682. elseif sqlca.sqlnrows = 0 then
  683. rslt = 0
  684. arg_msg = "单据正在确认,请稍后查询。"
  685. goto ext
  686. end if
  687. ext:
  688. if rslt = 0 then
  689. rollback;
  690. elseif rslt = 1 and arg_ifcommit then
  691. commit;
  692. end if
  693. arg_msg = '计件单,'+ arg_msg
  694. return rslt
  695. end function
  696. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1,li_secauditingflag
  697. datetime null_dt
  698. setnull(null_dt)
  699. if arg_billid = 0 then
  700. rslt = 0
  701. arg_msg = "没有审核对象"
  702. goto ext
  703. end if
  704. select secauditingflag into :li_secauditingflag
  705. from u_sc_abnormity
  706. where billid = :arg_billid;
  707. if sqlca.sqlcode <> 0 then
  708. rslt = 0
  709. arg_msg = '查询异常计件单资料失败'
  710. goto ext
  711. end if
  712. if li_secauditingflag = 0 then
  713. rslt = 0
  714. arg_msg = '该单据未确认,不能反确认'
  715. goto ext
  716. end if
  717. update u_sc_abnormity
  718. set secauditingemp = '',
  719. secauditingdate = :null_dt,
  720. secauditingflag = 0
  721. where u_sc_abnormity.billid = :arg_billid
  722. and secauditingflag = 1;
  723. if sqlca.sqlcode <> 0 then
  724. rslt = 0
  725. arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+sqlca.sqlerrtext
  726. goto ext
  727. elseif sqlca.sqlnrows = 0 then
  728. rslt = 0
  729. arg_msg = "单据正在反确认,请稍后查询。"
  730. goto ext
  731. end if
  732. ext:
  733. if rslt = 0 then
  734. rollback;
  735. elseif rslt = 1 and arg_ifcommit then
  736. commit;
  737. end if
  738. arg_msg = '计件单,'+ arg_msg
  739. return rslt
  740. end function
  741. public function integer acceptmx (long arg_empid, string arg_empcode, string arg_empname, decimal arg_amount, decimal arg_wage, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_relcode, long arg_proid, string arg_procode, string arg_proname, decimal arg_workhour);//====================================================================
  742. // Function: acceptmx(arg_empid,arg_empcode,arg_empname,arg_Start_date,arg_End_date,arg_amount,arg_wage,arg_workhour,arg_mxdscrp,arg_msg,arg_printid)
  743. //--------------------------------------------------------------------
  744. // Description:
  745. //--------------------------------------------------------------------
  746. // Arguments:
  747. // value long arg_empid
  748. // value string arg_empcode
  749. // value string arg_empname
  750. // value decimal arg_amount
  751. // value decimal arg_wage
  752. // value string arg_mxdscrp
  753. // reference string arg_msg
  754. // value long arg_printid
  755. // value string arg_relcode
  756. //--------------------------------------------------------------------
  757. // Returns: intege
  758. //--------------------------------------------------------------------
  759. // Author: yyx Date: 2003.11.21
  760. //--------------------------------------------------------------------
  761. // Modify History:
  762. //
  763. //====================================================================
  764. long rslt = 1,cnt = 0,ls_i
  765. string ls_empname,ls_empcode
  766. string ls_procode,ls_proname
  767. if it_newbegin = false and it_updatebegin = false then
  768. rslt = 0
  769. arg_msg = "非编辑状态不可以使用,操作取消"
  770. goto ext
  771. end if
  772. if isnull(arg_empid) then arg_empid = 0
  773. if isnull(arg_empcode) then arg_empcode = ''
  774. if isnull(arg_empname) then arg_empname = ''
  775. if isnull(arg_relcode) then arg_relcode = ''
  776. if isnull(arg_amount) then arg_amount = 0
  777. if isnull(arg_wage) then arg_wage = 0
  778. if isnull(arg_mxdscrp) then arg_mxdscrp = ''
  779. if isnull(arg_proid) then arg_proid = 0
  780. if isnull(arg_procode) then arg_procode = ''
  781. if isnull(arg_proname) then arg_proname = ''
  782. if isnull(arg_workhour) then arg_workhour = 0
  783. if arg_wage = 0 then
  784. rslt = 1
  785. goto ext
  786. end if
  787. if isnull(arg_empcode) or trim(arg_empcode) = '' then
  788. rslt = 0
  789. arg_msg = '人员编号不能为空'
  790. goto ext
  791. end if
  792. if isnull(arg_procode) or trim(arg_procode) = '' then
  793. rslt = 0
  794. arg_msg = '工序号不能为空'
  795. goto ext
  796. end if
  797. if arg_amount < 0 or arg_workhour < 0 then //检查生产数量
  798. rslt = 0
  799. arg_msg = "数量或工时错误"
  800. goto ext
  801. end if
  802. select empcode,empname into :ls_empcode,:ls_empname from u_rs_empinfo where empid = :arg_empid;
  803. if sqlca.sqlcode <> 0 then
  804. rslt = 0
  805. if pos(lower(sqlca.SQLErrText),'more than') > 0 then
  806. arg_msg = '查询操作失败,查询数据返回值多于一个'
  807. else
  808. arg_msg = '查询人员资料失败。(错误员工资料唯一码)'
  809. end if
  810. goto ext
  811. end if
  812. if ls_empname <> arg_empname or ls_empcode <> arg_empcode then
  813. rslt = 0
  814. arg_msg = arg_empname+'>>该人员的编号或名称不正确。'
  815. goto ext
  816. end if
  817. select code,name into :ls_procode,:ls_proname from u_sc_workprocedure where proid = :arg_proid;
  818. if sqlca.sqlcode <> 0 then
  819. rslt = 0
  820. if pos(lower(sqlca.SQLErrText),'more than') > 0 then
  821. arg_msg = '查询操作失败,查询数据返回值多于一个'
  822. else
  823. arg_msg = '查询工序定义失败。(错误工序资料唯一码)'
  824. end if
  825. goto ext
  826. end if
  827. if ls_procode <> arg_procode or ls_proname <> arg_proname then
  828. rslt = 0
  829. arg_msg = arg_empname+'>>该工序号或名称不正确。'
  830. goto ext
  831. end if
  832. //写入内容
  833. it_mxbt++
  834. abnormitymx[it_mxbt].empid = arg_empid
  835. abnormitymx[it_mxbt].empcode = arg_empcode
  836. abnormitymx[it_mxbt].empname = arg_empname
  837. abnormitymx[it_mxbt].amount = arg_amount
  838. abnormitymx[it_mxbt].wage = arg_wage
  839. abnormitymx[it_mxbt].mxdscrp = arg_mxdscrp
  840. abnormitymx[it_mxbt].printid = arg_printid
  841. abnormitymx[it_mxbt].relcode = arg_relcode
  842. abnormitymx[it_mxbt].proid = arg_proid
  843. abnormitymx[it_mxbt].procode = arg_procode
  844. abnormitymx[it_mxbt].proname = arg_proname
  845. abnormitymx[it_mxbt].workhour= arg_workhour
  846. ext:
  847. if rslt = 0 then p_clearmx()
  848. arg_msg = '计件单,'+ arg_msg
  849. return(rslt)
  850. end function
  851. on uo_abnormity.create
  852. call super::create
  853. TriggerEvent( this, "constructor" )
  854. end on
  855. on uo_abnormity.destroy
  856. TriggerEvent( this, "destructor" )
  857. call super::destroy
  858. end on
  859. event constructor; u_wage=create uo_wage
  860. end event
  861. event destructor;DESTROY u_wage
  862. end event