uo_abnormity.sru 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411
  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. string reason
  18. string unit
  19. end type
  20. global type uo_abnormity from nonvisualobject
  21. end type
  22. global uo_abnormity uo_abnormity
  23. type variables
  24. public protectedwrite long billid //计件单自动增量id
  25. Public ProtectedWrite Long scid //分部
  26. public protectedwrite string billcode //计件单的唯一编号
  27. public protectedwrite datetime opdate //建立时间,自动
  28. public protectedwrite string opemp //建立人
  29. public protectedwrite datetime moddate //修改时间,自动
  30. public protectedwrite string modemp //修改人
  31. public protectedwrite int flag=0 //审核标志
  32. public protectedwrite int secflag=0 //审核标志
  33. public protectedwrite datetime auditingdate //审核时间
  34. public protectedwrite string auditingrep //审核操作员
  35. long wagemth
  36. datetime billdate //计件日期
  37. long wageid //工资项目id
  38. string dscrp='' //备注
  39. string relcode ='' //相关号码 
  40. long relid
  41. long wrkgrpid
  42. long ifzj
  43. long zjid
  44. uo_wage u_wage
  45. int uo_option_taskwork_not_affirm
  46. int uo_option_abnormity_noorder
  47. private:
  48. s_abnormitymx abnormitymx[] //明细结构数组
  49. long it_mxbt=0 //明细结构数组末指针
  50. boolean it_newbegin=false //新建标志
  51. boolean it_updatebegin=false//修改标志
  52. end variables
  53. forward prototypes
  54. public function integer p_clearmx ()
  55. public function integer p_reset ()
  56. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  57. 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, string arg_reason, string arg_unit)
  58. public function integer newbegin (long arg_scid, ref string arg_msg)
  59. public function integer p_getinfo (long arg_scid, long arg_billid, ref string arg_msg)
  60. public function integer getinfo (long arg_scid, long arg_billid, ref string arg_msg)
  61. public function integer auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  62. public function integer cauditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  63. public function integer add_dscrp (long arg_scid, long arg_billid, string arg_newdescppart, ref string arg_msg)
  64. public function integer secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  65. public function integer c_secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  66. public function integer del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  67. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg)
  68. public function integer auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  69. public function integer c_auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  70. end prototypes
  71. public function integer p_clearmx ();//INT p_clearmx()
  72. //清除明细
  73. it_mxbt=0
  74. RETURN 1
  75. end function
  76. public function integer p_reset ();//INT p_RESET()
  77. //清除对象及其明细
  78. billid=0
  79. billcode=''
  80. opemp=''
  81. auditingrep=''
  82. flag=0
  83. wageid=0
  84. dscrp=''
  85. relcode=''
  86. wrkgrpid = 0
  87. scid = 0
  88. it_newbegin=FALSE
  89. it_updatebegin=FALSE
  90. //清除明细
  91. P_CLEARMX()
  92. RETURN 1
  93. end function
  94. public function integer save (ref string arg_msg, boolean arg_ifcommit);
  95. Integer rslt = 1,i,cnt = 0
  96. DateTime server_dt
  97. Long ls_newid
  98. IF uo_option_abnormity_noorder = -1000 THEN
  99. rslt = 0
  100. arg_msg = '选项:026,读取初始默认值失败!'
  101. GOTO ext
  102. END IF
  103. IF IsNull(wageid) THEN wageid = 0
  104. IF IsNull(dscrp) THEN dscrp = ''
  105. IF IsNull(relcode) THEN relcode = ''
  106. IF IsNull(relid) THEN relid = 0
  107. IF IsNull(wagemth) THEN wagemth = 0
  108. if isnull(wrkgrpid) then wrkgrpid = 0
  109. if isnull(ifzj) then ifzj = 0
  110. if isnull(zjid) then zjid = 0
  111. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  112. rslt = 0
  113. arg_msg = "非编辑状态不可以提交"
  114. GOTO ext
  115. END IF
  116. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  117. //取得系统时间,借用操作员表
  118. IF sqlca.SQLCode <> 0 THEN
  119. rslt = 0
  120. arg_msg = "查询操作失败,日期 "
  121. GOTO ext
  122. END IF
  123. cnt = 0
  124. SELECT count(*) INTO :cnt
  125. FROM u_gz_wageitem
  126. Where wageid = :wageid;
  127. IF sqlca.SQLCode <> 0 THEN
  128. rslt = 0
  129. arg_msg = "查询工资项目失败!"
  130. GOTO ext
  131. END IF
  132. IF cnt <> 1 THEN
  133. rslt = 0
  134. arg_msg = "不存在工资项目!"
  135. GOTO ext
  136. END IF
  137. IF uo_option_abnormity_noorder = 0 and ifzj = 0 THEN
  138. SELECT count(*) INTO :cnt
  139. FROM u_sc_abnormity_bill
  140. WHERE billid = :relid
  141. AND flag = 1;
  142. IF sqlca.SQLCode <> 0 THEN
  143. arg_msg = '查询返工返修单失败,可能返工返修单未审核'
  144. rslt = 0
  145. GOTO ext
  146. END IF
  147. IF cnt <> 1 THEN
  148. arg_msg = '查询返工返修单失败,请查检'
  149. rslt = 0
  150. GOTO ext
  151. END IF
  152. END IF
  153. IF it_mxbt = 0 THEN //
  154. rslt = 0
  155. arg_msg = "没有计件明细"
  156. GOTO ext
  157. END IF
  158. //IF f_check_inoutdate(0,billdate,FALSE,arG_MSG) = 0 THEN
  159. // rslt = 0
  160. // GOTO ext
  161. //END IF
  162. ////////////////////////////////////////////////开始区分:新建/更新 处理
  163. IF billid = 0 THEN //新建
  164. ls_newid = f_sys_scidentity(0,"u_sc_abnormity","billid",arg_msg,TRUE,id_sqlca)
  165. IF ls_newid <= 0 THEN
  166. rslt = 0
  167. GOTO ext
  168. END IF
  169. billcode = getid(0,"YC",Date(server_dt),TRUE,sqlca) //取得新单据编号
  170. IF billcode = "err" THEN
  171. billcode = ''
  172. rslt = 0
  173. arg_msg = "无法获取计件单编号"
  174. GOTO ext
  175. END IF
  176. INSERT INTO u_sc_abnormity (
  177. billid,
  178. billcode,
  179. Wagemth,
  180. wageid,
  181. billdate,
  182. Dscrp,
  183. opdate,
  184. opemp,
  185. relcode,
  186. relid,
  187. wrkgrpid,
  188. ifzj,
  189. zjid,
  190. scid)
  191. VALUES (
  192. :ls_newid,
  193. :billcode,
  194. :Wagemth,
  195. :wageid,
  196. :billdate,
  197. :dscrp,
  198. :server_dt,
  199. :publ_operator,
  200. :relcode,
  201. :relid,
  202. :wrkgrpid,
  203. :ifzj,
  204. :zjid,
  205. :scid);
  206. IF sqlca.SQLCode <> 0 THEN
  207. rslt = 0
  208. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  209. GOTO ext
  210. END IF
  211. billid = ls_newid
  212. FOR i = 1 TO it_mxbt
  213. INSERT INTO u_sc_abnormitymx
  214. ( billid,
  215. empid,
  216. empcode,
  217. empname,
  218. amount,
  219. wage,
  220. mxdscrp,
  221. printid,
  222. relcode,
  223. reason,
  224. unit,
  225. scid)
  226. VALUES (:ls_newid,
  227. :abnormitymx[i].empid,
  228. :abnormitymx[i].empcode,
  229. :abnormitymx[i].empname,
  230. :abnormitymx[i].amount,
  231. :abnormitymx[i].wage,
  232. :abnormitymx[i].mxdscrp,
  233. :abnormitymx[i].printid,
  234. :abnormitymx[i].relcode,
  235. :abnormitymx[i].reason,
  236. :abnormitymx[i].unit,
  237. :scid);
  238. IF sqlca.SQLCode <> 0 THEN
  239. billid = 0 //还原noticeid
  240. rslt = 0
  241. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  242. ROLLBACK ;
  243. GOTO ext
  244. END IF
  245. NEXT
  246. ELSE //////////////////////////////////////////////////更新
  247. UPDATE u_sc_abnormity
  248. SET wageid = :wageid,
  249. billdate = :billdate,
  250. Dscrp = :Dscrp,
  251. moddate = :server_dt,
  252. modemp = :publ_operator,
  253. relcode = :relcode,
  254. relid = :relid,
  255. wagemth = :wagemth,
  256. wrkgrpid = :wrkgrpid
  257. WHERE u_sc_abnormity.billid = :billid
  258. and u_sc_abnormity.scid = :scid
  259. AND Auditingflag = 0;
  260. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  261. rslt = 0
  262. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  263. GOTO ext
  264. END IF
  265. //删除原有明细
  266. DELETE FROM u_sc_abnormitymx
  267. Where u_sc_abnormitymx.billid = :billid;
  268. IF sqlca.SQLCode <> 0 THEN
  269. rslt = 0
  270. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  271. GOTO ext
  272. END IF
  273. FOR i = 1 TO it_mxbt
  274. INSERT INTO u_sc_abnormitymx
  275. ( billid,
  276. empid,
  277. empcode,
  278. empname,
  279. amount,
  280. wage,
  281. mxdscrp,
  282. printid,
  283. relcode,
  284. reason,
  285. unit,
  286. scid)
  287. VALUES (:billid,
  288. :abnormitymx[i].empid,
  289. :abnormitymx[i].empcode,
  290. :abnormitymx[i].empname,
  291. :abnormitymx[i].amount,
  292. :abnormitymx[i].wage,
  293. :abnormitymx[i].mxdscrp,
  294. :abnormitymx[i].printid,
  295. :abnormitymx[i].relcode,
  296. :abnormitymx[i].reason,
  297. :abnormitymx[i].unit,
  298. :scid);
  299. IF sqlca.SQLCode <> 0 THEN
  300. rslt = 0
  301. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  302. GOTO ext
  303. END IF
  304. NEXT
  305. END IF
  306. it_newbegin = FALSE
  307. it_updatebegin = FALSE
  308. ext:
  309. IF rslt = 0 THEN
  310. ROLLBACK;
  311. p_clearmx()
  312. ELSEIF rslt = 1 AND arg_ifcommit THEN
  313. COMMIT;
  314. END IF
  315. RETURN(rslt)
  316. end function
  317. 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, string arg_reason, string arg_unit);
  318. Long rslt = 1,cnt = 0,ls_i
  319. String ls_empname,ls_empcode
  320. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  321. rslt = 0
  322. arg_msg = "非编辑状态不可以使用,操作取消"
  323. GOTO ext
  324. END IF
  325. IF IsNull(arg_empid) THEN arg_empid = 0
  326. IF IsNull(arg_empcode) THEN arg_empcode = ''
  327. IF IsNull(arg_empname) THEN arg_empname = ''
  328. IF IsNull(arg_relcode) THEN arg_relcode = ''
  329. IF IsNull(arg_amount) THEN arg_amount = 0
  330. IF IsNull(arg_wage) THEN arg_wage = 0
  331. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  332. IF IsNull(arg_reason) THEN arg_reason = ''
  333. if isnull(arg_unit) then arg_unit = ''
  334. IF arg_wage = 0 THEN
  335. rslt = 1
  336. GOTO ext
  337. END IF
  338. IF IsNull(arg_empcode) OR Trim(arg_empcode) = '' THEN
  339. rslt = 0
  340. arg_msg = '员工编号不能为空'
  341. GOTO ext
  342. END IF
  343. //if arg_amount < 0 then //检查生产数量
  344. // rslt = 0
  345. // arg_msg = "数量错误"
  346. // goto ext
  347. //end if
  348. SELECT empcode,empname INTO :ls_empcode,:ls_empname FROM u_rs_empinfo Where empid = :arg_empid;
  349. IF sqlca.SQLCode <> 0 THEN
  350. rslt = 0
  351. arg_msg = '查询员工资料失败。>'+sqlca.SQLErrText
  352. GOTO ext
  353. END IF
  354. IF ls_empname <> arg_empname OR ls_empcode <> arg_empcode THEN
  355. rslt = 0
  356. arg_msg = arg_empname+'>>该员工的编号或名称不正确。'
  357. GOTO ext
  358. END IF
  359. //写入内容
  360. it_mxbt++
  361. abnormitymx[it_mxbt].empid = arg_empid
  362. abnormitymx[it_mxbt].empcode = arg_empcode
  363. abnormitymx[it_mxbt].empname = arg_empname
  364. abnormitymx[it_mxbt].amount = arg_amount
  365. abnormitymx[it_mxbt].wage = arg_wage
  366. abnormitymx[it_mxbt].mxdscrp = arg_mxdscrp
  367. abnormitymx[it_mxbt].printid = arg_printid
  368. abnormitymx[it_mxbt].relcode = arg_relcode
  369. abnormitymx[it_mxbt].reason = arg_reason
  370. abnormitymx[it_mxbt].unit = arg_unit
  371. ext:
  372. IF rslt = 0 THEN p_clearmx()
  373. Return(rslt)
  374. end function
  375. public function integer newbegin (long arg_scid, ref string arg_msg);Long rslt = 1
  376. IF arg_scid < 0 THEN
  377. arg_msg = '请选择分部'
  378. rslt = 0
  379. GOTO ext
  380. END IF
  381. p_reset()
  382. scid = arg_scid
  383. it_newbegin = True
  384. it_updatebegin = False
  385. ext:
  386. IF rslt = 0 THEN p_reset()
  387. RETURN rslt
  388. end function
  389. public function integer p_getinfo (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
  390. IF arg_billid <= 0 THEN
  391. rslt = 0
  392. arG_MSG = "非法的单据唯一码"
  393. GOTO ext
  394. END IF
  395. SELECT u_sc_abnormity.wageid,
  396. u_sc_abnormity.billdate,
  397. u_sc_abnormity.relcode,
  398. u_sc_abnormity.dscrp,
  399. u_sc_abnormity.Auditingflag,
  400. u_sc_abnormity.billcode,
  401. u_sc_abnormity.Auditingemp,
  402. u_sc_abnormity.Auditingdate,
  403. u_sc_abnormity.opdate,
  404. u_sc_abnormity.opemp,
  405. u_sc_abnormity.wagemth ,
  406. u_sc_abnormity.moddate,
  407. u_sc_abnormity.modemp,
  408. u_sc_abnormity.relid,
  409. u_sc_abnormity.secauditingflag,
  410. u_sc_abnormity.wrkgrpid
  411. INTO :wageid,
  412. :billdate,
  413. :relcode,
  414. :dscrp,
  415. :flag,
  416. :billcode,
  417. :auditingrep,
  418. :auditingdate,
  419. :opdate,
  420. :opemp,
  421. :wagemth,
  422. :moddate,
  423. :modemp,
  424. :relid,
  425. :secflag,
  426. :wrkgrpid
  427. FROM u_sc_abnormity
  428. Where u_sc_abnormity.billid = :arg_billid
  429. and u_sc_abnormity.scid = :arg_scid;
  430. IF sqlca.SQLCode <> 0 THEN
  431. rslt = 0
  432. arG_MSG = "查询操作失败(错误单据唯一码),单据"+sqlca.SQLErrText
  433. GOTO ext
  434. END IF
  435. billid = arg_billid
  436. scid = arg_scid
  437. ext:
  438. IF rslt = 0 THEN p_reset()
  439. RETURN rslt
  440. end function
  441. public function integer getinfo (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
  442. Long i = 1,no_mxcheck = 0
  443. IF arg_billid <= 0 THEN
  444. rslt = 0
  445. arg_msg = "非法出仓单唯一码"
  446. GOTO ext
  447. END IF
  448. rslt = p_getinfo(arg_scid,arg_billid,arg_msg)
  449. IF rslt = 0 THEN GOTO ext
  450. //用游标读取明细
  451. DECLARE cur_mx CURSOR FOR
  452. SELECT u_sc_abnormitymx.empid,
  453. u_sc_abnormitymx.amount,
  454. u_sc_abnormitymx.wage
  455. FROM u_sc_abnormitymx
  456. Where u_sc_abnormitymx.billid = :arg_billid
  457. and u_sc_abnormitymx.scid = :arg_scid;
  458. OPEN cur_mx;
  459. FETCH cur_mx INTO :abnormitymx[i].empid,:abnormitymx[i].amount,
  460. :abnormitymx[i].wage;
  461. DO WHILE sqlca.SQLCode = 0
  462. i++
  463. FETCH cur_mx INTO :abnormitymx[i].empid,:abnormitymx[i].amount,
  464. :abnormitymx[i].wage;
  465. LOOP
  466. CLOSE cur_mx;
  467. //检验明细是否读入完整
  468. SELECT count(*) INTO :no_mxcheck
  469. FROM u_sc_abnormitymx
  470. Where u_sc_abnormitymx.billid = :arg_billid
  471. and u_sc_abnormitymx.scid = :arg_scid;
  472. IF sqlca.SQLCode <> 0 THEN
  473. rslt = 0
  474. arg_msg = "查询操作失败,单据明细数量"
  475. GOTO ext
  476. END IF
  477. IF i <> (no_mxcheck+1) THEN
  478. rslt = 0
  479. arg_msg = "查询操作失败,单据明细"
  480. GOTO ext
  481. END IF
  482. billid = arg_billid
  483. scid = arg_scid
  484. it_mxbt = i - 1
  485. ext:
  486. IF rslt = 0 THEN p_reset()
  487. RETURN rslt
  488. end function
  489. public function integer auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  490. Int rslt = 1
  491. Decimal ls_emp_sumwage
  492. IF uo_option_taskwork_not_affirm = -1000 THEN
  493. rslt = 0
  494. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  495. GOTO ext
  496. END IF
  497. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  498. rslt = 0
  499. GOTO ext
  500. END IF
  501. IF wagemth = 0 THEN
  502. rslt = 0
  503. arg_msg = '请输入工资月份'
  504. GOTO ext
  505. END IF
  506. IF flag = 1 THEN
  507. rslt = 0
  508. arg_msg = '单据已审核,操作取消'
  509. GOTO ext
  510. END IF
  511. IF uo_option_taskwork_not_affirm = 0 THEN
  512. IF secflag = 0 THEN
  513. arg_msg = '单据未确认,不能审核'
  514. rslt = 0
  515. GOTO ext
  516. END IF
  517. END IF
  518. cnt = 0
  519. SELECT count(*) INTO :cnt
  520. From u_gz_wageitem Where useflag = 1 And wageid = :wageid;
  521. IF sqlca.SQLCode <> 0 THEN
  522. rslt = 0
  523. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  524. GOTO ext
  525. END IF
  526. IF cnt = 0 THEN
  527. rslt = 0
  528. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  529. GOTO ext
  530. END IF
  531. FOR i = 1 To it_mxbt
  532. ls_emp_sumwage = 0.00
  533. ls_emp_sumwage = abnormitymx[i].amount * abnormitymx[i].wage
  534. IF u_wage.f_setwagemxdata(wagemth,abnormitymx[i].empid,wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
  535. rslt = 0
  536. GOTO ext
  537. END IF
  538. NEXT
  539. IF uo_option_taskwork_not_affirm = 0 THEN
  540. UPDATE u_sc_abnormity SET
  541. Auditingflag = 1,
  542. Auditingemp = :publ_operator,
  543. Auditingdate = getdate()
  544. WHERE billid = :arg_billid
  545. AND scid = :arg_scid
  546. And Auditingflag = 0;
  547. ELSE
  548. UPDATE u_sc_abnormity SET
  549. Auditingflag = 1,
  550. Auditingemp = :publ_operator,
  551. Auditingdate = getdate(),
  552. secauditingdate = getdate(),
  553. secauditingemp = :publ_operator,
  554. secauditingflag = 1
  555. WHERE billid = :arg_billid
  556. AND scid = :arg_scid
  557. And Auditingflag = 0;
  558. END IF
  559. IF sqlca.SQLCode <> 0 THEN
  560. arg_msg = '更新异常计件单失败,原因>>'+sqlca.SQLErrText
  561. rslt = 0
  562. GOTO ext
  563. END IF
  564. ext:
  565. IF rslt = 0 THEN
  566. ROLLBACK;
  567. ELSEIF rslt = 1 And arg_ifcommit THEN
  568. COMMIT;
  569. END IF
  570. RETURN rslt
  571. end function
  572. public function integer cauditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  573. Int rslt = 1
  574. Decimal ls_emp_sumwage
  575. DateTime ls_null
  576. SetNull(ls_null)
  577. IF uo_option_taskwork_not_affirm = -1000 THEN
  578. rslt = 0
  579. arg_msg = '选项:080,读取初始默认值失败!'
  580. GOTO ext
  581. END IF
  582. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  583. rslt = 0
  584. GOTO ext
  585. END IF
  586. IF flag = 0 THEN
  587. rslt = 0
  588. arg_msg = '单据还没有审核,操作取消'
  589. GOTO ext
  590. END IF
  591. IF f_check_wage_audit(wagemth,arg_scid,arg_msg) = 0 THEN
  592. rslt = 0
  593. arg_msg = arg_msg + ',不能撤审'
  594. GOTO ext
  595. END IF
  596. //检查该月份,该工资项目是否已开工资变更单
  597. cnt = 0
  598. SELECT count(*)
  599. INTO :cnt
  600. FROM u_wage_change
  601. WHERE wageid = :wageid
  602. AND wagemth = :wagemth;
  603. IF sqlca.SQLCode <> 0 THEN
  604. rslt = 0
  605. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  606. GOTO ext
  607. END IF
  608. IF cnt > 0 THEN
  609. rslt = 0
  610. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  611. GOTO ext
  612. END IF
  613. cnt = 0
  614. SELECT count(*) INTO :cnt
  615. FROM u_gz_wageitem Where useflag = 1 AND wageid = :wageid;
  616. IF sqlca.SQLCode <> 0 THEN
  617. rslt = 0
  618. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  619. GOTO ext
  620. END IF
  621. IF cnt = 0 THEN
  622. rslt = 0
  623. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  624. GOTO ext
  625. END IF
  626. FOR i = 1 TO it_mxbt
  627. ls_emp_sumwage = 0.00
  628. ls_emp_sumwage = abnormitymx[i].amount * abnormitymx[i].wage
  629. IF u_wage.f_setwagemxdata(wagemth,abnormitymx[i].empid,wageid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  630. rslt = 0
  631. GOTO ext
  632. END IF
  633. NEXT
  634. IF uo_option_taskwork_not_affirm = 0 THEN
  635. UPDATE u_sc_abnormity SET
  636. Auditingflag = 0,
  637. Auditingemp = '',
  638. Auditingdate = :ls_null
  639. WHERE billid = :arg_billid
  640. and scid = :arg_scid
  641. AND Auditingflag = 1;
  642. ELSE
  643. UPDATE u_sc_abnormity SET
  644. Auditingflag = 0,
  645. Auditingemp = '',
  646. Auditingdate = :ls_null,
  647. secauditingdate = :ls_null,
  648. secauditingemp = '',
  649. secauditingflag = 0
  650. WHERE billid = :arg_billid
  651. and scid = :arg_scid
  652. AND Auditingflag = 1;
  653. END IF
  654. IF sqlca.SQLCode <> 0 THEN
  655. arg_msg = '更新异常计件单失败,原因>>'+sqlca.SQLErrText
  656. rslt = 0
  657. GOTO ext
  658. END IF
  659. ext:
  660. IF rslt = 0 THEN
  661. ROLLBACK;
  662. ELSEIF rslt = 1 AND arg_ifcommit THEN
  663. COMMIT;
  664. END IF
  665. RETURN rslt
  666. end function
  667. public function integer add_dscrp (long arg_scid, long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
  668. // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
  669. //--------------------------------------------------------------------
  670. // Description:
  671. //--------------------------------------------------------------------
  672. // Arguments:
  673. // value long arg_billid
  674. // value string arg_newdescppart
  675. // reference string arg_msg
  676. //--------------------------------------------------------------------
  677. // Returns: integer
  678. //--------------------------------------------------------------------
  679. // Author: yyx Date: 2003.11.21
  680. //--------------------------------------------------------------------
  681. // Modify History:
  682. //
  683. //====================================================================
  684. Int rslt = 1
  685. arg_newdescppart = Trim(arg_newdescppart)
  686. IF arg_billid <= 0 THEN
  687. rslt = 0
  688. arg_msg = "没有删除对象,操作取消"
  689. GOTO ext
  690. END IF
  691. IF it_newbegin Or it_updatebegin THEN
  692. rslt = 0
  693. arg_msg = "编辑状态下不可以执行,操作取消"
  694. GOTO ext
  695. END IF
  696. SELECT u_sc_abnormity.auditingflag
  697. INTO :flag
  698. FROM u_sc_abnormity
  699. Where u_sc_abnormity.billid = :arg_billid
  700. and u_sc_abnormity.scid = :arg_scid;
  701. IF sqlca.SQLCode <> 0 THEN
  702. rslt = 0
  703. arg_msg = '查询异常计件单操作失败'
  704. GOTO ext
  705. END IF
  706. IF flag = 0 THEN
  707. rslt = 0
  708. arg_msg = "非审核状态下不可用"
  709. GOTO ext
  710. END IF
  711. UPDATE u_sc_abnormity
  712. SET dscrp = dscrp+' '+:arg_newdescppart
  713. Where u_sc_abnormity.billid = :billid
  714. and u_sc_abnormity.scid = :arg_scid;
  715. IF sqlca.SQLCode <> 0 THEN
  716. ROLLBACK ;
  717. rslt = 0
  718. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.SQLErrText
  719. GOTO ext
  720. END IF
  721. COMMIT;
  722. dscrp = dscrp+' '+arg_newdescppart
  723. ext:
  724. Return (rslt)
  725. end function
  726. public function integer secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,li_secauditingflag
  727. IF arg_billid = 0 THEN
  728. rslt = 0
  729. arg_msg = "没有审核对象"
  730. GOTO ext
  731. END IF
  732. SELECT secauditingflag INTO :li_secauditingflag
  733. FROM u_sc_abnormity
  734. Where billid = :arg_billid
  735. and scid = :arg_scid;
  736. IF sqlca.SQLCode <> 0 THEN
  737. rslt = 0
  738. arg_msg = '查询异常计件单资料失败'
  739. GOTO ext
  740. END IF
  741. IF li_secauditingflag = 1 THEN
  742. rslt = 0
  743. arg_msg = '该单据已确认'
  744. GOTO ext
  745. END IF
  746. UPDATE u_sc_abnormity
  747. SET secauditingemp = :publ_operator,
  748. secauditingdate = getdate(),
  749. secauditingflag = 1
  750. WHERE u_sc_abnormity.billid = :arg_billid
  751. and scid = :arg_scid
  752. AND secauditingflag = 0;
  753. IF sqlca.SQLCode <> 0 THEN
  754. rslt = 0
  755. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+sqlca.SQLErrText
  756. GOTO ext
  757. ELSEIF sqlca.SQLNRows = 0 THEN
  758. rslt = 0
  759. arg_msg = "单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText
  760. GOTO ext
  761. END IF
  762. ext:
  763. IF rslt = 0 THEN
  764. ROLLBACK;
  765. ELSEIF rslt = 1 AND arg_ifcommit THEN
  766. COMMIT;
  767. END IF
  768. RETURN rslt
  769. end function
  770. public function integer c_secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,li_secauditingflag
  771. DateTime null_dt
  772. SetNull(null_dt)
  773. IF arg_billid = 0 THEN
  774. rslt = 0
  775. arg_msg = "没有审核对象"
  776. GOTO ext
  777. END IF
  778. SELECT secauditingflag INTO :li_secauditingflag
  779. FROM u_sc_abnormity
  780. Where billid = :arg_billid
  781. and scid = :arg_scid;
  782. IF sqlca.SQLCode <> 0 THEN
  783. rslt = 0
  784. arg_msg = '查询异常计件单资料失败'
  785. GOTO ext
  786. END IF
  787. IF li_secauditingflag = 0 THEN
  788. rslt = 0
  789. arg_msg = '该单据未确认,不能反确认'
  790. GOTO ext
  791. END IF
  792. UPDATE u_sc_abnormity
  793. SET secauditingemp = '',
  794. secauditingdate = :null_dt,
  795. secauditingflag = 0
  796. WHERE u_sc_abnormity.billid = :arg_billid
  797. and scid = :arg_scid
  798. AND secauditingflag = 1;
  799. IF sqlca.SQLCode <> 0 THEN
  800. rslt = 0
  801. arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+sqlca.SQLErrText
  802. GOTO ext
  803. ELSEIF sqlca.SQLNRows = 0 THEN
  804. rslt = 0
  805. arg_msg = "单据正在反确认,请稍后查询。"+"~n"+sqlca.SQLErrText
  806. GOTO ext
  807. END IF
  808. ext:
  809. IF rslt = 0 THEN
  810. ROLLBACK;
  811. ELSEIF rslt = 1 AND arg_ifcommit THEN
  812. COMMIT;
  813. END IF
  814. RETURN rslt
  815. end function
  816. public function integer del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);//====================================================================
  817. // Function: del(arg_billid,arg_msg)
  818. //--------------------------------------------------------------------
  819. // Description:
  820. //--------------------------------------------------------------------
  821. // Arguments:
  822. // value long arg_billid
  823. // reference string arg_msg
  824. //--------------------------------------------------------------------
  825. // Returns: integer
  826. //--------------------------------------------------------------------
  827. // Author: yyx Date: 2003.11.21
  828. //--------------------------------------------------------------------
  829. // Modify History:
  830. //
  831. //====================================================================
  832. Int rslt = 1
  833. IF arg_billid <= 0 THEN
  834. rslt = 0
  835. arg_msg = "没有删除对象,操作取消"
  836. GOTO ext
  837. END IF
  838. IF it_newbegin Or it_updatebegin THEN
  839. rslt = 0
  840. arg_msg = "编辑状态下不可以执行,操作取消"
  841. GOTO ext
  842. END IF
  843. SELECT u_sc_abnormity.auditingflag
  844. INTO :flag
  845. FROM u_sc_abnormity
  846. WHERE u_sc_abnormity.billid = :arg_billid
  847. And u_sc_abnormity.scid = :arg_scid;
  848. IF sqlca.SQLCode <> 0 THEN
  849. rslt = 0
  850. arg_msg = '查询异常计件单操作失败'
  851. GOTO ext
  852. END IF
  853. IF flag = 1 THEN
  854. rslt = 0
  855. arg_msg = "单据已经审核,不可以删除"
  856. GOTO ext
  857. END IF
  858. DELETE FROM u_sc_abnormity
  859. WHERE u_sc_abnormity.billid = :arg_billid
  860. And u_sc_abnormity.scid = :arg_scid;
  861. IF sqlca.SQLCode <> 0 THEN
  862. rslt = 0
  863. arg_msg = "删除计件单操作失败"+"~n"+sqlca.SQLErrText
  864. GOTO ext
  865. END IF
  866. DELETE FROM u_sc_abnormitymx
  867. WHERE u_sc_abnormitymx.billid = :arg_billid
  868. And u_sc_abnormitymx.scid = :arg_scid;
  869. IF sqlca.SQLCode <> 0 THEN
  870. rslt = 0
  871. arg_msg = "删除计件单明细操作失败"+"~n"+sqlca.SQLErrText
  872. GOTO ext
  873. END IF
  874. ext:
  875. IF rslt = 0 THEN
  876. ROLLBACK ;
  877. p_reset()
  878. ELSEIF rslt = 1 And arg_ifcommit THEN
  879. COMMIT ;
  880. END IF
  881. Return (rslt)
  882. end function
  883. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);//====================================================================
  884. // Function: updatebegin(arg_billid,arg_msg)
  885. //--------------------------------------------------------------------
  886. // Description:
  887. //--------------------------------------------------------------------
  888. // Arguments:
  889. // value long arg_billid
  890. // reference string arg_msg
  891. //--------------------------------------------------------------------
  892. // Returns: integer
  893. //--------------------------------------------------------------------
  894. // Author: yyx Date: 2003.11.21
  895. //--------------------------------------------------------------------
  896. // Modify History:
  897. //
  898. //====================================================================
  899. Int rslt = 1
  900. IF arg_billid <= 0 THEN
  901. billid = 0
  902. GOTO ext
  903. END IF
  904. SELECT u_sc_abnormity.billcode,
  905. u_sc_abnormity.wagemth,
  906. u_sc_abnormity.wageid,
  907. u_sc_abnormity.billdate,
  908. u_sc_abnormity.dscrp,
  909. u_sc_abnormity.auditingflag,
  910. u_sc_abnormity.secauditingflag
  911. INTO :billcode,
  912. :wagemth,
  913. :wageid,
  914. :billdate,
  915. :dscrp,
  916. :flag,
  917. :secflag
  918. From u_sc_abnormity
  919. Where u_sc_abnormity.billid = :arg_billid
  920. and u_sc_abnormity.scid = :arg_scid;
  921. IF sqlca.SQLCode <> 0 THEN
  922. rslt = 0
  923. arg_msg = '查询数据操作失败,计件单'+sqlca.SQLErrText
  924. GOTO ext
  925. END IF
  926. IF secflag = 1 THEN
  927. rslt = 0
  928. arg_msg = '单据已经确认,不可以修改'
  929. GOTO ext
  930. END IF
  931. IF flag = 1 THEN
  932. rslt = 0
  933. arg_msg = '单据已经审核,不可以修改'
  934. GOTO ext
  935. END IF
  936. billid = arg_billid
  937. scid = arg_scid
  938. p_clearmx()
  939. it_newbegin = False
  940. it_updatebegin = True
  941. ext:
  942. IF rslt = 0 THEN p_reset()
  943. RETURN rslt
  944. end function
  945. public function integer auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  946. Int rslt = 1
  947. Decimal ls_emp_sumwage
  948. datastore ds_emp_sumabnormitywage
  949. IF uo_option_taskwork_not_affirm = -1000 THEN
  950. rslt = 0
  951. arg_msg = '选项:080,读取初始默认值失败!'
  952. GOTO ext
  953. END IF
  954. IF uo_option_taskwork_not_affirm = 0 THEN
  955. cnt = 0
  956. SELECT count(*) INTO :cnt
  957. FROM u_sc_abnormity
  958. WHERE wagemth = :arg_wagemth
  959. AND wageid = :arg_wageid
  960. and (scid = :arg_scid or :arg_scid = -1)
  961. AND secAuditingflag = 0;
  962. IF sqlca.SQLCode <> 0 THEN
  963. ARG_msg = '查询是否有异常计件单未审核失败,原因>>'+sqlca.SQLErrText
  964. rslt = 0
  965. GOTO ext
  966. END IF
  967. IF cnt > 0 THEN
  968. ARG_msg = '还有异常计件单未确认,不能审核'
  969. rslt = 0
  970. GOTO ext
  971. END IF
  972. END IF
  973. //cnt = 0
  974. //SELECT count(*) INTO :cnt FROM u_sc_abnormity
  975. // WHERE wagemth = :arg_wagemth
  976. // AND wageid = :arg_wageid
  977. // AND Auditingflag = 1;
  978. //IF sqlca.SQLCode <> 0 THEN
  979. // rslt = 0
  980. // ARG_msg = '查询异常计件单明细失败!原因:'+sqlca.SQLErrText
  981. // GOTO ext
  982. //END IF
  983. //
  984. //IF cnt > 0 THEN
  985. // rslt = 0
  986. // ARG_msg = '该月的异常计件单已审核,审核前请先执行撤审!'
  987. // GOTO ext
  988. //END IF
  989. cnt = 0
  990. SELECT count(*) INTO :cnt
  991. FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  992. IF sqlca.SQLCode <> 0 THEN
  993. rslt = 0
  994. ARG_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  995. GOTO ext
  996. END IF
  997. IF cnt = 0 THEN
  998. rslt = 0
  999. ARG_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  1000. GOTO ext
  1001. END IF
  1002. ds_emp_sumabnormitywage = CREATE datastore
  1003. ds_emp_sumabnormitywage.DataObject = 'dw_emp_sumabnormitywage'
  1004. ds_emp_sumabnormitywage.SetTransObject(sqlca)
  1005. IF ds_emp_sumabnormitywage.Retrieve(arg_scid,arg_wagemth,arg_wageid, 0) = 0 THEN
  1006. rslt = 0
  1007. ARG_msg = '本月没有计件单可审核'
  1008. GOTO ext
  1009. END IF
  1010. FOR i = 1 TO ds_emp_sumabnormitywage.RowCount()
  1011. ls_emp_sumwage = 0.00
  1012. ls_emp_sumwage = ds_emp_sumabnormitywage.Object.sumwage[i]
  1013. 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
  1014. rslt = 0
  1015. GOTO ext
  1016. END IF
  1017. NEXT
  1018. IF uo_option_taskwork_not_affirm = 0 THEN
  1019. UPDATE u_sc_abnormity SET
  1020. Auditingflag = 1,
  1021. Auditingemp = :publ_operator,
  1022. Auditingdate = getdate()
  1023. WHERE wagemth = :arg_wagemth
  1024. AND wageid = :arg_wageid
  1025. and (scid = :arg_scid or :arg_scid = -1)
  1026. AND Auditingflag = 0;
  1027. ELSE
  1028. UPDATE u_sc_abnormity SET
  1029. Auditingflag = 1,
  1030. Auditingemp = :publ_operator,
  1031. Auditingdate = getdate(),
  1032. secauditingdate = getdate(),
  1033. secauditingemp = :publ_operator,
  1034. secauditingflag = 1
  1035. WHERE wagemth = :arg_wagemth
  1036. AND wageid = :arg_wageid
  1037. and (scid = :arg_scid or :arg_scid = -1)
  1038. AND Auditingflag = 0;
  1039. END IF
  1040. IF sqlca.SQLCode <> 0 THEN
  1041. ARG_msg = '更新异常计件单失败,原因>>'+sqlca.SQLErrText
  1042. rslt = 0
  1043. GOTO ext
  1044. END IF
  1045. ext:
  1046. IF rslt = 0 THEN
  1047. ROLLBACK;
  1048. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1049. COMMIT;
  1050. END IF
  1051. RETURN rslt
  1052. end function
  1053. public function integer c_auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);
  1054. Long cnt = 0,i
  1055. decimal ls_emp_sumwage
  1056. Int rslt = 1
  1057. DateTime null_server_dt
  1058. SetNull(null_server_dt)
  1059. IF uo_option_taskwork_not_affirm = -1000 THEN
  1060. rslt = 0
  1061. arg_msg = '选项:080,读取初始默认值失败!'
  1062. GOTO ext
  1063. END IF
  1064. IF f_check_wage_audit(arg_wagemth,arg_scid,arg_msg) = 0 THEN
  1065. rslt = 0
  1066. arg_msg = arg_msg + ',不能撤审'
  1067. GOTO ext
  1068. END IF
  1069. //检查该月份,该工资项目是否已开工资变更单
  1070. cnt = 0
  1071. SELECT count(*)
  1072. INTO :cnt
  1073. FROM u_wage_change
  1074. WHERE wageid = :arg_wageid
  1075. And wagemth = :arg_wagemth;
  1076. IF sqlca.SQLCode <> 0 THEN
  1077. rslt = 0
  1078. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  1079. GOTO ext
  1080. END IF
  1081. IF cnt > 0 THEN
  1082. rslt = 0
  1083. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  1084. GOTO ext
  1085. END IF
  1086. SELECT count(*) Into :cnt
  1087. From u_sc_abnormity
  1088. Where wagemth = :arg_wagemth
  1089. and (scid = :arg_scid or :arg_scid = -1)
  1090. And Auditingflag = 1;
  1091. IF sqlca.SQLCode <> 0 THEN
  1092. rslt = 0
  1093. arg_msg = '查询异常计件单明细失败,原因>>'+sqlca.SQLErrText
  1094. GOTO ext
  1095. END IF
  1096. IF cnt = 0 THEN
  1097. rslt = 0
  1098. arg_msg = '该月的异常计件单未审核,不用撤审!'
  1099. GOTO ext
  1100. END IF
  1101. cnt = 0
  1102. SELECT count(*) Into :cnt From u_gz_wageitem Where useflag = 1 And wageid = :arg_wageid;
  1103. IF sqlca.SQLCode <> 0 THEN
  1104. rslt = 0
  1105. arg_msg = '查询工资项目失败,原因>>'+sqlca.SQLErrText
  1106. GOTO ext
  1107. END IF
  1108. IF cnt = 0 THEN
  1109. rslt = 0
  1110. arg_msg = '不存在该工资项目,原因>>'+sqlca.SQLErrText
  1111. GOTO ext
  1112. END IF
  1113. //IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,False) = 0 THEN
  1114. // rslt = 0
  1115. // GOTO ext
  1116. //END IF
  1117. //
  1118. datastore ds_emp_sumabnormitywage
  1119. ds_emp_sumabnormitywage = CREATE datastore
  1120. ds_emp_sumabnormitywage.DataObject = 'dw_emp_sumabnormitywage'
  1121. ds_emp_sumabnormitywage.SetTransObject(sqlca)
  1122. IF ds_emp_sumabnormitywage.Retrieve(arg_scid,arg_wagemth,arg_wageid, 1) = 0 THEN
  1123. rslt = 0
  1124. ARG_msg = '本月没有计件单已审核'
  1125. GOTO ext
  1126. END IF
  1127. FOR i = 1 TO ds_emp_sumabnormitywage.RowCount()
  1128. ls_emp_sumwage = 0.00
  1129. ls_emp_sumwage = 0 - ds_emp_sumabnormitywage.Object.sumwage[i]
  1130. 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
  1131. rslt = 0
  1132. GOTO ext
  1133. END IF
  1134. NEXT
  1135. IF uo_option_taskwork_not_affirm = 0 THEN
  1136. UPDATE u_sc_abnormity SET
  1137. Auditingflag = 0,
  1138. Auditingemp = '',
  1139. Auditingdate = :null_server_dt
  1140. Where wagemth = :arg_wagemth
  1141. And Auditingflag = 1
  1142. And wageid = :arg_wageid
  1143. and (scid = :arg_scid or :arg_scid = -1);
  1144. ELSE
  1145. UPDATE u_sc_abnormity SET
  1146. Auditingflag = 0,
  1147. Auditingemp = '',
  1148. Auditingdate = :null_server_dt,
  1149. secauditingdate = :null_server_dt,
  1150. secauditingemp = '',
  1151. secauditingflag = 0
  1152. Where wagemth = :arg_wagemth
  1153. And Auditingflag = 1
  1154. And wageid = :arg_wageid
  1155. and (scid = :arg_scid or :arg_scid = -1);
  1156. END IF
  1157. IF sqlca.SQLCode <> 0 THEN
  1158. arg_msg = '更新计件明细单失败,原因:'+sqlca.SQLErrText
  1159. rslt = 0
  1160. GOTO ext
  1161. END IF
  1162. ext:
  1163. IF rslt = 0 THEN
  1164. ROLLBACK;
  1165. ELSEIF rslt = 1 And arg_ifcommit THEN
  1166. COMMIT;
  1167. END IF
  1168. RETURN rslt
  1169. end function
  1170. on uo_abnormity.create
  1171. call super::create
  1172. TriggerEvent( this, "constructor" )
  1173. end on
  1174. on uo_abnormity.destroy
  1175. TriggerEvent( this, "destructor" )
  1176. call super::destroy
  1177. end on
  1178. event constructor;u_wage = Create uo_wage
  1179. String str_optionvalue,arg_msg
  1180. f_get_sys_option_value('080',str_optionvalue,arg_msg)
  1181. uo_option_taskwork_not_affirm = Long(str_optionvalue)
  1182. f_get_sys_option_value('026',str_optionvalue,arg_msg)
  1183. uo_option_abnormity_noorder = Long(str_optionvalue)
  1184. end event
  1185. event destructor;DESTROY u_wage
  1186. end event