uo_wage.sru 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011
  1. $PBExportHeader$uo_wage.sru
  2. forward
  3. global type uo_wage from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_wage from nonvisualobject
  7. end type
  8. global uo_wage uo_wage
  9. forward prototypes
  10. public function integer f_delone (long arg_mth, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  11. public function integer f_setwagemxdata (long arg_mth, long arg_empid, long arg_wageid, decimal arg_wageamt, ref string arg_msg, boolean arg_ifcommit)
  12. public function integer f_addemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  13. public function integer f_delemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
  14. public function integer f_init (long arg_scid, long arg_mth, ref string arg_msg)
  15. public function integer f_init_wagemx_0 (long arg_scid, long arg_mth, long arg_wageid, ref string arg_msg, boolean arg_ifcommit)
  16. public function integer f_uninit (long arg_scid, long arg_mth, ref string arg_msg)
  17. public function integer f_auditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg)
  18. public function integer f_wage_cmpl (long arg_scid, long arg_mth, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer f_unauditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg)
  20. public function integer f_wage_clear (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  21. end prototypes
  22. public function integer f_delone (long arg_mth, long arg_empid, ref string arg_msg, boolean arg_ifcommit);//f_delone
  23. //1,删除一工资记录
  24. //2.删除对应工资明细记录
  25. long rslt=1,cnt
  26. string ls_msg
  27. select count(*)
  28. into :cnt
  29. from u_gz_wage
  30. where u_gz_wage.wagemth=:arg_mth
  31. and Auditingflag = 0 and empid=:arg_empid;
  32. if sqlca.sqlcode<>0 then
  33. rslt=0
  34. arg_msg="查询工资记录是否已经审核失败"
  35. goto ext
  36. end if
  37. if cnt=0 then
  38. rslt=0
  39. arg_msg="目标工资记录已经审核!"
  40. goto ext
  41. end if
  42. //1,删除一工资记录
  43. delete u_gz_wage where wagemth=:arg_mth and empid=:arg_empid;
  44. if sqlca.sqlcode<>0 then
  45. ls_msg=sqlca.sqlerrtext
  46. rslt=0
  47. arg_msg="删除个人工资记录失败>>"+ls_msg
  48. goto ext
  49. end if
  50. //2.删除工资明细记录
  51. delete u_gz_wagemx where wagemth=:arg_mth and empid=:arg_empid ;
  52. if sqlca.sqlcode<>0 then
  53. ls_msg=sqlca.sqlerrtext
  54. rslt=0
  55. arg_msg="删除个人工资对应项目明细记录失败>>"+ls_msg
  56. goto ext
  57. end if
  58. ext:
  59. if rslt=0 then
  60. rollback;
  61. else
  62. if arg_ifcommit then
  63. commit;
  64. end if
  65. end if
  66. arg_msg = '工资表,'+ arg_msg
  67. return rslt
  68. end function
  69. public function integer f_setwagemxdata (long arg_mth, long arg_empid, long arg_wageid, decimal arg_wageamt, ref string arg_msg, boolean arg_ifcommit);//f_setwagemxdata(arg_mth,arg_empid,arg_wageid,arg_wageamt,arg_msg,arg_ifcommit)
  70. //审核检查
  71. //删除旧的
  72. //插入新的
  73. Long rslt = 1,cnt,ls_wagetype
  74. String ls_msg,ls_wagename
  75. String ls_empcode,ls_empname
  76. SELECT empcode,Empname INTO :ls_empcode,:ls_empname
  77. FROM u_rs_empinfo
  78. Where empid = :arg_empid;
  79. IF sqlca.SQLCode <> 0 THEN
  80. rslt = 0
  81. IF Pos(Lower(sqlca.SQLErrText),'more than') > 0 THEN
  82. arg_msg = '查询人员资料失败,查询数据返回值多于一个'
  83. ELSE
  84. arg_msg = '查询人员资料失败(错误人员唯一码):'+String(arg_empid)
  85. END IF
  86. GOTO ext
  87. END IF
  88. SELECT count(*)
  89. INTO :cnt
  90. FROM u_gz_wage
  91. WHERE u_gz_wage.wagemth = :arg_mth
  92. AND Auditingflag = 0 AND empid = :arg_empid;
  93. IF sqlca.SQLCode <> 0 THEN
  94. rslt = 0
  95. arg_msg = "查询人员:"+String(ls_empcode+ls_empname)+"月份:"+String(arg_mth)+"工资记录是否已经审核失败>>"
  96. GOTO ext
  97. END IF
  98. IF cnt = 0 THEN
  99. rslt = 0
  100. arg_msg = "人员:"+String(ls_empcode+ls_empname)+"月份:"+String(arg_mth)+"目标工资记录已经审核或还没有初始化!"
  101. GOTO ext
  102. END IF
  103. SELECT u_gz_wageitem.wagetype,u_gz_wageitem.wagename
  104. INTO :ls_wagetype,:ls_wagename
  105. FROM u_gz_wageitem
  106. Where u_gz_wageitem.wageid = :arg_wageid ;
  107. IF sqlca.SQLCode <> 0 THEN
  108. ls_msg = sqlca.SQLErrText
  109. rslt = 0
  110. IF Pos(Lower(sqlca.SQLErrText),'more than') > 0 THEN
  111. arg_msg = '查询工资项目增减类型失败,查询数据返回值多于一个'
  112. ELSE
  113. arg_msg = "查询工资项目增减类型失败(错误工资项目唯一码)"
  114. END IF
  115. GOTO ext
  116. END IF
  117. UPDATE u_gz_wagemx
  118. SET Wagename = :ls_wagename,
  119. wagetype = :ls_wagetype,
  120. Wageamt = Wageamt + :arg_wageamt
  121. Where wageid = :arg_wageid AND empid = :arg_empid AND wagemth = :arg_mth ;
  122. IF sqlca.SQLCode = 0 AND sqlca.SQLNRows = 0 THEN
  123. INSERT INTO u_gz_wagemx
  124. ( wageid,
  125. empid,
  126. wagemth,
  127. Wagename,
  128. wagetype,
  129. Wageamt )
  130. VALUES ( :arg_wageid,
  131. :arg_empid,
  132. :arg_mth,
  133. :ls_wagename,
  134. :ls_wagetype,
  135. :arg_wageamt ) ;
  136. IF sqlca.SQLCode <> 0 THEN
  137. ls_msg = sqlca.SQLErrText
  138. rslt = 0
  139. IF Pos(Lower(sqlca.SQLErrText),'pk_u_wagemx') > 0 THEN
  140. arg_msg = '插入新工资明细数据记录失败,关键字人员ID、工资项目、工资月份重复'
  141. ELSE
  142. arg_msg = "插入新工资明细数据记录失败>"+String(arg_wageid)+">>"+ls_msg
  143. END IF
  144. GOTO ext
  145. END IF
  146. ELSEIF sqlca.SQLCode <> 0 THEN
  147. ls_msg = sqlca.SQLErrText
  148. rslt = 0
  149. IF Pos(Lower(sqlca.SQLErrText),'pk_u_wagemx') > 0 THEN
  150. arg_msg = '更新工资明细数据记录失败,关键字人员ID、工资项目、工资月份重复'
  151. ELSE
  152. arg_msg = "更新工资明细数据记录失败>"+String(arg_wageid)+">>"+ls_msg
  153. END IF
  154. GOTO ext
  155. END IF
  156. ext:
  157. IF rslt = 0 THEN
  158. ROLLBACK;
  159. ELSE
  160. IF arg_ifcommit THEN
  161. COMMIT;
  162. END IF
  163. END IF
  164. arg_msg = '工资表,'+ arg_msg
  165. RETURN rslt
  166. end function
  167. public function integer f_addemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit);//f_addemp(long wagemth,long empid,ref string arg_msg,boolean arg_ifcommit)
  168. //在工资表中追加人员
  169. int cnt=0
  170. int rslt=1
  171. long ll_deptid,ll_flag=0
  172. select top 1 Auditingflag into :ll_flag from u_gz_wage where wagemth=:arg_wagemth;
  173. if sqlca.sqlcode<>0 then
  174. rslt=0
  175. arg_msg='查询工资表失败'
  176. goto ext
  177. end if
  178. if ll_flag=1 then
  179. rslt=0
  180. arg_msg='该月工资表已审核,不能增加人员!'
  181. goto ext
  182. end if
  183. select count(*) into :cnt from u_gz_wage where wagemth=:arg_wagemth and empid=:arg_empid;
  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. select deptid into :ll_deptid from u_rs_empinfo where empid=:arg_empid;
  195. if sqlca.sqlcode<>0 then
  196. rslt=0
  197. if pos(lower(sqlca.SQLErrText),'more than') > 0 then
  198. arg_msg = '查询操作失败,查询数据返回值多于一个'
  199. else
  200. arg_msg='查询人员部门失败!(错误人员ID唯一码)'
  201. end if
  202. goto ext
  203. end if
  204. if ll_deptid<=0 then
  205. rslt=0
  206. arg_msg='非法部门唯一码'
  207. goto ext
  208. end if
  209. insert into u_gz_wage
  210. (wagemth,
  211. empid,
  212. deptid)
  213. values (:arg_wagemth,
  214. :arg_empid,
  215. :ll_deptid);
  216. if sqlca.sqlcode<>0 then
  217. rslt=0
  218. if pos(lower(sqlca.SQLErrText),'pk_u_wage') > 0 then
  219. arg_msg = '插入工资表失败,关键字员工ID、月份重复'
  220. else
  221. arg_msg='插入工资表失败,原因:'+sqlca.sqlerrtext
  222. end if
  223. goto ext
  224. end if
  225. ext:
  226. if rslt=0 then
  227. rollback;
  228. elseif rslt=1 and arg_ifcommit then
  229. commit;
  230. end if
  231. arg_msg = '工资表,'+ arg_msg
  232. return rslt
  233. end function
  234. public function integer f_delemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit);int rslt=1
  235. long ll_flag=0,cnt=0
  236. select top 1 Auditingflag into :ll_flag from u_gz_wage where wagemth=:arg_wagemth;
  237. if sqlca.sqlcode<>0 then
  238. rslt=0
  239. arg_msg='查询工资表失败'
  240. goto ext
  241. end if
  242. if ll_flag=1 then
  243. rslt=0
  244. arg_msg='该月工资表已审核,不能增加人员!'
  245. goto ext
  246. end if
  247. SELECT count(*) into :cnt
  248. FROM u_sc_abnormitymx,u_sc_abnormity
  249. where u_sc_abnormity.billid = u_sc_abnormitymx.billid
  250. and ( u_sc_abnormity.Wagemth = :arg_wagemth
  251. or u_sc_abnormity.wagemth = 0 )
  252. and empid=:arg_empid;
  253. if sqlca.sqlcode<>0 then
  254. rslt=0
  255. arg_msg='查询计件明细失败'
  256. goto ext
  257. end if
  258. if cnt>0 then
  259. rslt=0
  260. arg_msg='该人员在该月的个人工序计件单中存在,不能删除!'
  261. goto ext
  262. end if
  263. select count(*) into :cnt from u_sc_taskworkmx,u_sc_taskwork
  264. where u_sc_taskworkmx.billid = u_sc_taskwork.billid
  265. and ( u_sc_taskwork.Wagemth = :arg_wagemth
  266. or u_sc_taskwork.wagemth = 0 )
  267. and empid=:arg_empid;
  268. if sqlca.sqlcode<>0 then
  269. rslt=0
  270. arg_msg='查询计件明细失败'+sqlca.sqlerrtext
  271. goto ext
  272. end if
  273. if cnt>0 then
  274. rslt=0
  275. arg_msg='该员工在该月的产品个人工序计件单中存在,不能删除!'
  276. goto ext
  277. end if
  278. select count(*) into :cnt from u_scwg_taskwork_2
  279. where ( u_scwg_taskwork_2.Wagemth = :arg_wagemth
  280. or u_scwg_taskwork_2.wagemth = 0 )
  281. and wrkgrpid=:arg_empid;
  282. if cnt>0 then
  283. rslt=0
  284. arg_msg='该员工在该月的个人产品工序计件单中存在,不能删除!'
  285. goto ext
  286. end if
  287. delete from u_gz_wagemx where wagemth=:arg_wagemth and empid=:arg_empid;
  288. if sqlca.sqlcode<>0 then
  289. rslt=0
  290. arg_msg='删除失败!原因:'+sqlca.sqlerrtext
  291. goto ext
  292. end if
  293. delete from u_gz_wage where wagemth=:arg_wagemth and empid=:arg_empid;
  294. if sqlca.sqlcode<>0 then
  295. rslt=0
  296. arg_msg='删除失败!原因:'+sqlca.sqlerrtext
  297. goto ext
  298. end if
  299. ext:
  300. if rslt=0 then
  301. rollback;
  302. elseif rslt=1 and arg_ifcommit then
  303. commit;
  304. end if
  305. arg_msg = '工资表,'+ arg_msg
  306. return rslt
  307. end function
  308. public function integer f_init (long arg_scid, long arg_mth, ref string arg_msg);//f_init
  309. //更新人员部门ID
  310. //1,补充生成工资记录
  311. //2.更新离职人人员资标记
  312. Long rslt = 1
  313. String ls_msg
  314. Long a_wageid[],p_wageid,ls_i
  315. //未注册限制
  316. IF sys_if_register = 0 THEN
  317. Long ll_bill_count
  318. SELECT count( distinct wagemth)
  319. INTO :ll_bill_count
  320. FROM u_gz_wage;
  321. IF sqlca.SQLCode <> 0 THEN
  322. rslt = 0
  323. arg_msg = "查询操作失败,工资表月份数量 "
  324. GOTO ext
  325. END IF
  326. IF ll_bill_count > 2 THEN
  327. rslt = 0
  328. arg_msg = "未注册版本,只能初始化2个月工资表!"
  329. GOTO ext
  330. END IF
  331. END IF
  332. Long cnt
  333. cnt =0
  334. SELECT count(*) INTO :cnt
  335. FROM u_scdef
  336. Where scid = :arg_scid;
  337. IF sqlca.SQLCode <> 0 THEN
  338. arg_msg = '查询分部资料失败,可能分部不存在'
  339. rslt = 0
  340. GOTO ext
  341. END IF
  342. IF cnt <> 1 THEN
  343. arg_msg = '查询分部资料失败,可能分部不存在'
  344. rslt = 0
  345. GOTO ext
  346. END IF
  347. cnt =0
  348. SELECT count(*) INTO :cnt
  349. FROM u_gz_wageitem ;
  350. IF sqlca.SQLCode <> 0 THEN
  351. arg_msg = '查询工资项目资料失败'
  352. rslt = 0
  353. GOTO ext
  354. END IF
  355. IF cnt = 0 THEN
  356. arg_msg = '没有工资项目,请先设定工资项目再初始化工资表'
  357. rslt = 0
  358. GOTO ext
  359. END IF
  360. //1 补充生成工资记录
  361. INSERT INTO u_gz_wage
  362. ( empid,
  363. wagemth,
  364. deptid,
  365. Tolwageamt,
  366. Havpaywageamt,
  367. Payflag,
  368. ispay,
  369. Dscrp,
  370. Auditingflag,
  371. Auditingemp,
  372. leaveflag)
  373. SELECT u_rs_empinfo.empid,:arg_mth,u_rs_empinfo.deptid,0,0,1,0,'',0,'',0
  374. FROM u_rs_empinfo
  375. WHERE u_rs_empinfo.status = 1 AND
  376. u_rs_empinfo.scid = :arg_scid AND
  377. u_rs_empinfo.empid NOT IN
  378. (SELECT empid FROM u_gz_wage Where wagemth = :arg_mth) ;
  379. IF sqlca.SQLCode <> 0 THEN
  380. ls_msg = sqlca.SQLErrText
  381. rslt = 0
  382. if pos(lower(sqlca.SQLErrText),'pk_u_wage') > 0 then
  383. arg_msg = '插入新工资数据记录失败,关键字人员ID、工资月份重复'
  384. else
  385. arg_msg = "补充插入新工资数据记录失败>>"+ls_msg
  386. end if
  387. GOTO ext
  388. END IF
  389. //2.更新离职人人员资标记
  390. UPDATE u_gz_wage
  391. SET leaveflag = 1
  392. FROM u_gz_wage,
  393. u_rs_empinfo
  394. WHERE ( u_gz_wage.empid = u_rs_empinfo.empid ) AND
  395. ( u_rs_empinfo.status = 0 ) AND
  396. ( u_rs_empinfo.scid = :arg_scid ) AND
  397. ( u_gz_wage.wagemth = :arg_mth ) ;
  398. IF sqlca.SQLCode <> 0 THEN
  399. ls_msg = sqlca.SQLErrText
  400. rslt = 0
  401. arg_msg = "更新离职人人员资标记录失败>>"+ls_msg
  402. GOTO ext
  403. END IF
  404. COMMIT;
  405. //工资记录初始化成功则提交
  406. //游标查询全部的 项目
  407. String ls_wageitem = ''
  408. DECLARE wageitem_cur CURSOR FOR
  409. SELECT u_gz_wageitem.Wageid
  410. FROM u_gz_wageitem
  411. Where ( u_gz_wageitem.useflag = 1 ) ;
  412. OPEN wageitem_cur;
  413. p_wageid = 1
  414. FETCH wageitem_cur INTO :a_wageid[p_wageid];
  415. DO WHILE sqlca.SQLCode = 0
  416. p_wageid++
  417. FETCH wageitem_cur INTO :a_wageid[p_wageid];
  418. LOOP
  419. CLOSE wageitem_cur;
  420. p_wageid = p_wageid - 1
  421. FOR ls_i = 1 TO p_wageid //循环初始化项目 ,直接提交
  422. rslt = f_init_wagemx_0(arg_scid,arg_mth,a_wageid[ls_i],arg_msg,FALSE)
  423. IF rslt = 0 THEN
  424. GOTO ext
  425. END IF
  426. NEXT
  427. ext:
  428. IF rslt = 0 THEN
  429. ROLLBACK;
  430. ELSE
  431. COMMIT;
  432. END IF
  433. arg_msg = '工资表,'+ arg_msg
  434. RETURN rslt
  435. end function
  436. public function integer f_init_wagemx_0 (long arg_scid, long arg_mth, long arg_wageid, ref string arg_msg, boolean arg_ifcommit);//f_init_wagemx_0(arg_mth,arg_wageid,arg_msg,arg_ifcommit)
  437. //1,补充生成工资明细0项目记录
  438. //2.删除废弃记录
  439. Long rslt = 1
  440. String ls_msg
  441. //1 补充生成工资明细0项目记录
  442. INSERT INTO u_gz_wagemx
  443. ( wageid,
  444. empid,
  445. wagemth,
  446. Wagename,
  447. wagetype,
  448. Wageamt )
  449. SELECT u_gz_wageitem.wageid,
  450. u_gz_wage.empid,
  451. u_gz_wage.wagemth,
  452. u_gz_wageitem.Wagename,
  453. u_gz_wageitem.wagetype,
  454. 0 as amt
  455. FROM u_gz_wage,
  456. u_gz_wageitem,
  457. u_rs_empinfo
  458. WHERE ( u_gz_wageitem.useflag = 1 ) AND
  459. ( u_rs_empinfo.scid = :arg_scid ) AND
  460. ( u_rs_empinfo.empid = u_gz_wage.empid ) AND
  461. ( u_gz_wage.wagemth = :arg_mth ) AND
  462. ( u_gz_wageitem.wageid = :arg_wageid) AND
  463. ( u_gz_wage.empid NOT IN
  464. ( SELECT u_gz_wagemx.empid FROM u_gz_wagemx
  465. WHERE u_gz_wagemx.wagemth = :arg_mth AND
  466. u_gz_wagemx.wageid = :arg_wageid)) ;
  467. IF sqlca.SQLCode <> 0 THEN
  468. ls_msg = sqlca.SQLErrText
  469. rslt = 0
  470. if pos(lower(sqlca.SQLErrText),'pk_u_wagemx') > 0 then
  471. arg_msg = '初始化工资[月直接输入]明细项目记录失败,关键字人员ID、工资项目、工资月份重复'
  472. else
  473. arg_msg = "初始化工资[月直接输入]明细项目记录失败>"+String(arg_wageid)+">>"+ls_msg
  474. end if
  475. GOTO ext
  476. END IF
  477. DELETE FROM u_gz_wagemx WHERE
  478. u_gz_wagemx.wagemth = :arg_mth AND
  479. u_gz_wagemx.wageid = :arg_wageid AND
  480. u_gz_wagemx.empid NOT IN
  481. (SELECT u_gz_wage.empid FROM u_gz_wage WHERE
  482. ( u_gz_wage.wagemth = :arg_mth ) );
  483. IF sqlca.SQLCode <> 0 THEN
  484. ls_msg = sqlca.SQLErrText
  485. rslt = 0
  486. arg_msg = "删除无效工资[月直接输入]明细项目记录失败>"+String(arg_wageid)+">>"+ls_msg
  487. GOTO ext
  488. END IF
  489. ext:
  490. IF rslt = 0 THEN
  491. ROLLBACK;
  492. ELSEIF rslt = 1 AND arg_ifcommit THEN
  493. COMMIT;
  494. END IF
  495. arg_msg = '工资表,'+ arg_msg
  496. RETURN rslt
  497. end function
  498. public function integer f_uninit (long arg_scid, long arg_mth, ref string arg_msg);//f_uninit
  499. //1,删除工资记录
  500. //2.删除工资明细记录
  501. Long rslt = 1,cnt
  502. String ls_msg
  503. cnt = 0
  504. select count(*) into :cnt
  505. from u_scdef
  506. where scid = :arg_scid;
  507. if sqlca.sqlcode <> 0 then
  508. arg_msg = '查询分部资料失败,可能分部不存在'
  509. rslt = 0
  510. goto ext
  511. end if
  512. if cnt <> 1 then
  513. arg_msg = '查询分部资料失败,可能分部不存在'
  514. rslt = 0
  515. goto ext
  516. end if
  517. cnt = 0
  518. SELECT count(*)
  519. INTO :cnt
  520. FROM u_gz_wage,u_rs_empinfo
  521. WHERE u_gz_wage.wagemth = :arg_mth
  522. AND u_gz_wage.empid = u_rs_empinfo.empid
  523. AND u_rs_empinfo.scid = :arg_scid
  524. AND Auditingflag = 1;
  525. //有已经审核的记录即认为是已经审核,不可以反初始化
  526. IF sqlca.SQLCode <> 0 THEN
  527. rslt = 0
  528. arg_msg = "查询工资表是否已经审核失败"
  529. GOTO ext
  530. END IF
  531. IF cnt > 0 THEN
  532. rslt = 0
  533. arg_msg = String(arg_mth)+"工资表已经审核,不可以反初始化"
  534. GOTO ext
  535. END IF
  536. //1,删除工资记录
  537. DELETE u_gz_wage
  538. FROM u_gz_wage,u_rs_empinfo
  539. WHERE wagemth = :arg_mth
  540. AND u_gz_wage.empid = u_rs_empinfo.empid
  541. AND u_rs_empinfo.scid = :arg_scid;
  542. IF sqlca.SQLCode <> 0 THEN
  543. ls_msg = sqlca.SQLErrText
  544. rslt = 0
  545. arg_msg = "删除"+String(arg_mth)+"工资记录失败>>"+ls_msg
  546. GOTO ext
  547. END IF
  548. //2.删除工资明细记录
  549. DELETE u_gz_wagemx
  550. FROM u_gz_wagemx,u_rs_empinfo
  551. WHERE u_gz_wagemx.wagemth = :arg_mth
  552. AND u_gz_wagemx.empid = u_rs_empinfo.empid
  553. AND u_rs_empinfo.scid = :arg_scid;
  554. IF sqlca.SQLCode <> 0 THEN
  555. ls_msg = sqlca.SQLErrText
  556. rslt = 0
  557. arg_msg = "删除"+String(arg_mth)+"工资项目明细记录失败>>"+ls_msg
  558. GOTO ext
  559. END IF
  560. ext:
  561. IF rslt = 0 THEN
  562. ROLLBACK;
  563. ELSE
  564. COMMIT;
  565. END IF
  566. arg_msg = '工资表,'+ arg_msg
  567. RETURN rslt
  568. end function
  569. public function integer f_auditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg);//f_auditing
  570. //
  571. //1.计算工资金额
  572. //3.查询是否已经审核:if arg_empid=0,全月[部门]审核; else 单条审核
  573. //4.
  574. Long rslt = 1,cnt = 0
  575. String ls_msg
  576. select count(*) into :cnt
  577. from u_scdef
  578. where scid = :arg_scid;
  579. if sqlca.sqlcode <> 0 then
  580. arg_msg = '查询分部资料失败,可能分部不存在'
  581. rslt = 0
  582. goto ext
  583. end if
  584. if cnt <> 1 then
  585. arg_msg = '查询分部资料失败,可能分部不存在'
  586. rslt = 0
  587. goto ext
  588. end if
  589. IF arg_empid < 0 OR arg_mth < 200001 THEN
  590. rslt = 0
  591. arg_msg = '参数错误'
  592. END IF
  593. rslt = f_wage_cmpl(arg_scid,arg_mth,arg_msg,FALSE)
  594. IF rslt = 0 THEN
  595. GOTO ext
  596. END IF
  597. //更新人员部门ID
  598. UPDATE u_gz_wage
  599. SET u_gz_wage.Deptid = isnull(u_rs_empinfo.Deptid,0)
  600. FROM u_gz_wage,
  601. u_rs_empinfo
  602. WHERE ( u_gz_wage.empid = u_rs_empinfo.empid ) AND
  603. ( u_rs_empinfo.scid = :arg_scid ) and
  604. ( u_gz_wage.wagemth = :arg_mth ) ;
  605. IF sqlca.SQLCode <> 0 THEN
  606. ls_msg = sqlca.SQLErrText
  607. rslt = 0
  608. arg_msg = "更新工资数据人员部门信息失败>>"+ls_msg
  609. GOTO ext
  610. END IF
  611. IF arg_empid = 0 THEN //全月数据审核[部门审核]
  612. cnt = 0
  613. SELECT count(*)
  614. INTO :cnt
  615. FROM u_gz_wage,u_rs_empinfo
  616. WHERE u_gz_wage.wagemth = :arg_mth
  617. and u_gz_wage.empid = u_rs_empinfo.empid
  618. and u_rs_empinfo.scid = :arg_scid
  619. AND Auditingflag = 0 ;
  620. IF sqlca.SQLCode <> 0 THEN
  621. rslt = 0
  622. arg_msg = "查询工资表是否已经审核失败"
  623. GOTO ext
  624. END IF
  625. IF cnt = 0 THEN
  626. rslt = 0
  627. arg_msg = String(arg_mth)+"工资表已经全部审核!"
  628. GOTO ext
  629. END IF
  630. UPDATE u_gz_wage
  631. SET Auditingdate = getdate(),
  632. Auditingemp = :arg_ademp,
  633. Auditingflag = 1
  634. from u_gz_wage,u_rs_empinfo
  635. Where u_gz_wage.wagemth = :arg_mth
  636. and u_gz_wage.empid = u_rs_empinfo.empid
  637. and u_rs_empinfo.scid = :arg_scid
  638. AND Auditingflag = 0 ;
  639. IF sqlca.SQLCode <> 0 THEN
  640. ls_msg = sqlca.SQLErrText
  641. rslt = 0
  642. arg_msg = "审核"+String(arg_mth)+"工资表失败>>"+ls_msg
  643. GOTO ext
  644. END IF
  645. rslt = sqlca.SQLNRows
  646. ELSE //单记录审核
  647. cnt = 0
  648. SELECT count(*)
  649. INTO :cnt
  650. FROM u_gz_wage,u_rs_empinfo
  651. WHERE u_gz_wage.wagemth = :arg_mth
  652. and u_gz_wage.empid = u_rs_empinfo.empid
  653. and u_rs_empinfo.scid = :arg_scid
  654. AND Auditingflag = 0
  655. AND u_gz_wage.empid = :arg_empid;
  656. IF sqlca.SQLCode <> 0 THEN
  657. rslt = 0
  658. arg_msg = "查询工资记录是否已经审核失败"
  659. GOTO ext
  660. END IF
  661. IF cnt = 0 THEN
  662. rslt = 0
  663. arg_msg = "目标工资记录已经审核!"
  664. GOTO ext
  665. END IF
  666. UPDATE u_gz_wage
  667. SET Auditingdate = getdate(),
  668. Auditingemp = :arg_ademp,
  669. Auditingflag = 1
  670. from u_gz_wage,u_rs_empinfo
  671. Where u_gz_wage.wagemth = :arg_mth
  672. and u_gz_wage.empid = u_rs_empinfo.empid
  673. and u_rs_empinfo.scid = :arg_scid
  674. AND Auditingflag = 0
  675. AND u_gz_wage.empid = :arg_empid;
  676. IF sqlca.SQLCode <> 0 THEN
  677. ls_msg = sqlca.SQLErrText
  678. rslt = 0
  679. arg_msg = "审核个人的工资记录失败!>>"+ls_msg
  680. GOTO ext
  681. END IF
  682. rslt = sqlca.SQLNRows
  683. END IF
  684. ext:
  685. if rslt = 0 then
  686. rollback;
  687. else
  688. commit;
  689. end if
  690. arg_msg = '工资表,'+ arg_msg
  691. RETURN rslt
  692. end function
  693. public function integer f_wage_cmpl (long arg_scid, long arg_mth, ref string arg_msg, boolean arg_ifcommit);//f_wage_cmpl
  694. Long rslt = 1
  695. String ls_msg
  696. UPDATE u_gz_wage
  697. SET u_gz_wage.Tolwageamt = uv_getnew_Tolwageamt .Tolwageamt
  698. FROM u_gz_wage,
  699. u_rs_empinfo,
  700. uv_getnew_Tolwageamt
  701. WHERE u_gz_wage.empid = uv_getnew_Tolwageamt.empid AND
  702. u_gz_wage.empid = u_rs_empinfo.empid AND
  703. u_rs_empinfo.scid = :arg_scid AND
  704. u_gz_wage.wagemth = uv_getnew_Tolwageamt.wagemth AND
  705. u_gz_wage.wagemth = :arg_mth AND
  706. u_gz_wage.Auditingflag = 0;
  707. IF sqlca.SQLCode <> 0 THEN
  708. ls_msg = sqlca.SQLErrText
  709. rslt = 0
  710. arg_msg = "计算"+String(arg_mth)+"工资金额记录失败>>"+ls_msg
  711. GOTO ext
  712. END IF
  713. if rslt = 0 then
  714. rollback;
  715. elseIF rslt = 1 and arg_ifcommit THEN
  716. COMMIT;
  717. END IF
  718. ext:
  719. arg_msg = '工资表,'+ arg_msg
  720. RETURN rslt
  721. end function
  722. public function integer f_unauditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg);//f_unauditing
  723. //2.查询是否已经审核:if arg_empid=0,全月[部门]审核; else 单条审核
  724. //3.
  725. //4.
  726. Long rslt = 1,cnt = 0
  727. String ls_msg
  728. select count(*) into :cnt
  729. from u_scdef
  730. where scid = :arg_scid;
  731. if sqlca.sqlcode <> 0 then
  732. arg_msg = '查询分部资料失败,可能分部不存在'
  733. rslt = 0
  734. goto ext
  735. end if
  736. if cnt <> 1 then
  737. arg_msg = '查询分部资料失败,可能分部不存在'
  738. rslt = 0
  739. goto ext
  740. end if
  741. IF arg_empid < 0 OR arg_mth < 200001 THEN
  742. rslt = 0
  743. arg_msg = '参数错误'
  744. END IF
  745. IF arg_empid = 0 THEN //全月数据撤销审核[单部门]
  746. cnt = 0
  747. SELECT count(*)
  748. INTO :cnt
  749. FROM u_gz_wage,u_rs_empinfo
  750. WHERE u_gz_wage.wagemth = :arg_mth
  751. and u_gz_wage.empid = u_rs_empinfo.empid
  752. and u_rs_empinfo.scid = :arg_scid
  753. AND Auditingflag = 1 ;
  754. IF sqlca.SQLCode <> 0 THEN
  755. rslt = 0
  756. arg_msg = "查询工资表是否已经审核失败"
  757. GOTO ext
  758. END IF
  759. IF cnt = 0 THEN
  760. rslt = 0
  761. arg_msg = String(arg_mth)+"工资表全部未经审核!"
  762. GOTO ext
  763. END IF
  764. UPDATE u_gz_wage
  765. SET Auditingdate = getdate(),
  766. Auditingemp = :arg_ademp,
  767. Auditingflag = 0
  768. from u_gz_wage,u_rs_empinfo
  769. Where u_gz_wage.wagemth = :arg_mth
  770. and u_gz_wage.empid = u_rs_empinfo.empid
  771. and u_rs_empinfo.scid = :arg_scid
  772. AND Auditingflag = 1 ;
  773. IF sqlca.SQLCode <> 0 THEN
  774. ls_msg = sqlca.SQLErrText
  775. rslt = 0
  776. arg_msg = "撤审"+String(arg_mth)+"工资表失败>>"+ls_msg
  777. GOTO ext
  778. END IF
  779. rslt = sqlca.SQLNRows
  780. ELSE //单记录撤销审核
  781. cnt = 0
  782. SELECT count(*)
  783. INTO :cnt
  784. FROM u_gz_wage,u_rs_empinfo
  785. WHERE u_gz_wage.wagemth = :arg_mth
  786. and u_gz_wage.empid = u_rs_empinfo.empid
  787. and u_rs_empinfo.scid = :arg_scid
  788. AND u_gz_wage.Auditingflag = 1
  789. AND u_gz_wage.empid = :arg_empid;
  790. IF sqlca.SQLCode <> 0 THEN
  791. rslt = 0
  792. arg_msg = "查询工资记录是否已经审核失败"
  793. GOTO ext
  794. END IF
  795. IF cnt = 0 THEN
  796. rslt = 0
  797. arg_msg = "目标工资记录未经审核!"
  798. GOTO ext
  799. END IF
  800. UPDATE u_gz_wage
  801. SET Auditingdate = getdate(),
  802. Auditingemp = :arg_ademp,
  803. Auditingflag = 0
  804. from u_gz_wage,u_rs_empinfo
  805. Where u_gz_wage.wagemth = :arg_mth
  806. and u_gz_wage.empid = u_rs_empinfo.empid
  807. and u_rs_empinfo.scid = :arg_scid
  808. AND u_gz_wage.Auditingflag = 1
  809. AND u_gz_wage.empid = :arg_empid;
  810. IF sqlca.SQLCode <> 0 THEN
  811. ls_msg = sqlca.SQLErrText
  812. rslt = 0
  813. arg_msg = "撤销审核个人的工资记录失败!>>"+ls_msg
  814. GOTO ext
  815. END IF
  816. rslt = sqlca.SQLNRows
  817. END IF
  818. ext:
  819. if rslt = 0 then
  820. rollback;
  821. else
  822. commit;
  823. end if
  824. arg_msg = '工资表,'+ arg_msg
  825. RETURN rslt
  826. end function
  827. public function integer f_wage_clear (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  828. Long cnt
  829. SELECT count(*)
  830. INTO :cnt
  831. FROM u_gz_wage
  832. WHERE wagemth = :arg_wagemth
  833. AND Auditingflag = 1;
  834. IF sqlca.SQLCode <> 0 THEN
  835. rslt = 0
  836. arg_msg = '查询工资表失败,原因>>'+sqlca.SQLErrText
  837. GOTO ext
  838. END IF
  839. IF cnt > 0 THEN
  840. rslt = 0
  841. arg_msg = '该月的工资表已审核,不能撤审!'
  842. GOTO ext
  843. END IF
  844. UPDATE u_gz_wagemx
  845. SET wageamt = 0
  846. WHERE wageid = :arg_wageid
  847. AND wagemth = :arg_wagemth;
  848. IF sqlca.SQLCode <> 0 THEN
  849. rslt = 0
  850. arg_msg = '更新工资表(工资项目清零)失败,原因:'+sqlca.SQLErrText
  851. GOTO ext
  852. END IF
  853. ext:
  854. IF rslt = 0 THEN
  855. ROLLBACK;
  856. ELSEIF rslt = 1 AND arg_ifcommit THEN
  857. COMMIT;
  858. END IF
  859. RETURN rslt
  860. end function
  861. on uo_wage.create
  862. call super::create
  863. TriggerEvent( this, "constructor" )
  864. end on
  865. on uo_wage.destroy
  866. TriggerEvent( this, "destructor" )
  867. call super::destroy
  868. end on