uo_outware_gj.sru 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. $PBExportHeader$uo_outware_gj.sru
  2. forward
  3. global type uo_outware_gj from uo_outware
  4. end type
  5. end forward
  6. global type uo_outware_gj from uo_outware
  7. end type
  8. global uo_outware_gj uo_outware_gj
  9. forward prototypes
  10. public function integer c_sec_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  11. public function integer sec_auditing (long arg_wagemth, long arg_wageid, boolean arg_ifcommit, ref string arg_msg)
  12. public function integer sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  13. public function integer c_sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  14. end prototypes
  15. public function integer c_sec_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  16. Int rslt = 1
  17. DateTime null_server_dt
  18. SetNull(null_server_dt)
  19. IF f_check_wage_audit(arg_wagemth,-1,arg_msg) = 0 THEN
  20. rslt = 0
  21. arg_msg = arg_msg + ',不能撤审'
  22. GOTO ext
  23. END IF
  24. //检查该月份,该工资项目是否已开工资变更单
  25. cnt = 0
  26. SELECT count(*)
  27. INTO :cnt
  28. FROM u_wage_change
  29. WHERE wageid = :arg_wageid
  30. AND wagemth = :arg_wagemth;
  31. IF sqlca.SQLCode <> 0 THEN
  32. rslt = 0
  33. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  34. GOTO ext
  35. END IF
  36. IF cnt > 0 THEN
  37. rslt = 0
  38. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  39. GOTO ext
  40. END IF
  41. uo_wage u_wage
  42. u_wage = CREATE uo_wage
  43. SELECT count(*) INTO :cnt
  44. FROM u_outware
  45. WHERE wagemth = :arg_wagemth
  46. AND relid = :arg_wageid
  47. AND secflag = 1
  48. AND billtype = 10;
  49. IF sqlca.SQLCode <> 0 THEN
  50. rslt = 0
  51. arg_msg = '查询扣费单失败,原因>>'+sqlca.SQLErrText
  52. GOTO ext
  53. END IF
  54. IF cnt = 0 THEN
  55. rslt = 0
  56. arg_msg = '该月的扣费单未审核,不用撤审!'
  57. GOTO ext
  58. END IF
  59. cnt = 0
  60. SELECT count(*) INTO :cnt FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  61. IF sqlca.SQLCode <> 0 THEN
  62. rslt = 0
  63. arg_msg = '查询工资项目失败,原因>>'+sqlca.SQLErrText
  64. GOTO ext
  65. END IF
  66. IF cnt = 0 THEN
  67. rslt = 0
  68. arg_msg = '不存在该工资项目,原因>>'+sqlca.SQLErrText
  69. GOTO ext
  70. END IF
  71. IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,FALSE) = 0 THEN
  72. rslt = 0
  73. GOTO ext
  74. END IF
  75. UPDATE u_outware SET
  76. secflag = 0,
  77. secauditingrep = '',
  78. secAuditingdate = :null_server_dt,
  79. wagemth = 0
  80. WHERE wagemth = :arg_wagemth
  81. AND billtype = 10
  82. AND relid = :arg_wageid
  83. AND flag = 1
  84. AND secflag = 1;
  85. IF sqlca.SQLCode <> 0 THEN
  86. arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText
  87. rslt = 0
  88. GOTO ext
  89. END IF
  90. secflag = 0
  91. ext:
  92. IF rslt = 0 THEN
  93. ROLLBACK;
  94. ELSEIF rslt = 1 AND arg_ifcommit THEN
  95. COMMIT;
  96. END IF
  97. DESTROY u_wage
  98. RETURN rslt
  99. end function
  100. public function integer sec_auditing (long arg_wagemth, long arg_wageid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  101. Long cnt = 0,i
  102. Decimal ls_emp_sumwage
  103. datastore ds_emp_sumgjwage
  104. Long li_year,li_month
  105. uo_wage u_wage
  106. u_wage = CREATE uo_wage
  107. li_year = Long(Left(String(arg_wagemth),4))
  108. li_month = Long(Right(String(arg_wagemth),2))
  109. //cnt = 0
  110. //SELECT count(*) INTO :cnt
  111. // FROM u_outware
  112. // WHERE wagemth = :arg_wagemth
  113. // AND billtype = 10
  114. // AND relid = :arg_wageid
  115. // AND flag = 1
  116. // AND secflag = 1;
  117. //IF sqlca.SQLCode <> 0 THEN
  118. // rslt = 0
  119. // arg_msg = '查询扣费单明细失败!原因:'+sqlca.SQLErrText
  120. // GOTO ext
  121. //END IF
  122. //
  123. //IF cnt > 0 THEN
  124. // rslt = 0
  125. // arg_msg = '该月的借支单已审核,审核前请先执行撤审!'
  126. // GOTO ext
  127. //END IF
  128. cnt = 0
  129. SELECT count(*) INTO :cnt
  130. FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  131. IF sqlca.SQLCode <> 0 THEN
  132. rslt = 0
  133. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  134. GOTO ext
  135. END IF
  136. IF cnt = 0 THEN
  137. rslt = 0
  138. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  139. GOTO ext
  140. END IF
  141. ds_emp_sumgjwage = CREATE datastore
  142. ds_emp_sumgjwage.DataObject = 'dw_emp_sumgjwage'
  143. ds_emp_sumgjwage.SetTransObject(sqlca)
  144. IF ds_emp_sumgjwage.Retrieve(li_year,li_month,arg_wageid) <= 0 THEN
  145. rslt = 0
  146. arg_msg = '本月没有扣费单可审核或查询计件单失败'
  147. GOTO ext
  148. END IF
  149. FOR i = 1 TO ds_emp_sumgjwage.RowCount()
  150. ls_emp_sumwage = 0.00
  151. ls_emp_sumwage = ds_emp_sumgjwage.Object.sumwage[i]
  152. IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumgjwage.Object.u_outware_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  153. rslt = 0
  154. GOTO ext
  155. END IF
  156. NEXT
  157. UPDATE u_outware SET
  158. secflag = 1,
  159. secauditingrep = :publ_operator,
  160. secAuditingdate = getdate(),
  161. wagemth = :arg_wagemth
  162. WHERE year(outdate) <= :li_year
  163. AND month(outdate) <= :li_month
  164. AND billtype = 10
  165. AND relid = :arg_wageid
  166. AND flag = 1
  167. AND secflag = 0;
  168. IF sqlca.SQLCode <> 0 THEN
  169. arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText
  170. rslt = 0
  171. GOTO ext
  172. END IF
  173. secflag = 1
  174. ext:
  175. IF rslt = 0 THEN
  176. ROLLBACK;
  177. ELSEIF rslt = 1 AND arg_ifcommit THEN
  178. COMMIT;
  179. END IF
  180. DESTROY u_wage
  181. RETURN rslt
  182. end function
  183. public function integer sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  184. Long cnt = 0,i
  185. Decimal ls_emp_sumwage
  186. uo_wage u_wage
  187. u_wage = CREATE uo_wage
  188. Long ll_wagemth
  189. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  190. rslt = 0
  191. GOTO ext
  192. END IF
  193. IF secflag = 1 THEN
  194. rslt = 0
  195. arg_msg = '单据还已经财审,操作取消'
  196. GOTO ext
  197. END IF
  198. cnt = 0
  199. SELECT count(*) INTO :cnt
  200. FROM u_gz_wageitem Where useflag = 1 AND wageid = :relid;
  201. IF sqlca.SQLCode <> 0 THEN
  202. rslt = 0
  203. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  204. GOTO ext
  205. END IF
  206. IF cnt = 0 THEN
  207. rslt = 0
  208. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  209. GOTO ext
  210. END IF
  211. ll_wagemth = Year(Date(outdate)) * 100 + Month(Date(outdate))
  212. FOR i = 1 TO it_mxbt
  213. ls_emp_sumwage = 0.00
  214. ls_emp_sumwage = outwaremx[i].qty * outwaremx[i].fprice * outwaremx[i].rebate
  215. IF u_wage.f_setwagemxdata(ll_wagemth,cusid,relid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  216. rslt = 0
  217. GOTO ext
  218. END IF
  219. NEXT
  220. UPDATE u_outware SET
  221. secflag = 1,
  222. secauditingrep = :publ_operator,
  223. secAuditingdate = getdate(),
  224. wagemth = :ll_wagemth
  225. WHERE scid = :arg_scid
  226. AND outwareid = :arg_billid
  227. AND billtype = 10
  228. AND flag = 1
  229. AND secflag = 0;
  230. IF sqlca.SQLCode <> 0 THEN
  231. arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText
  232. rslt = 0
  233. GOTO ext
  234. END IF
  235. secflag = 1
  236. ext:
  237. IF rslt = 0 THEN
  238. ROLLBACK;
  239. ELSEIF rslt = 1 AND arg_ifcommit THEN
  240. COMMIT;
  241. END IF
  242. DESTROY u_wage
  243. RETURN rslt
  244. end function
  245. public function integer c_sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  246. Long cnt = 0,i
  247. Decimal ls_emp_sumwage
  248. DateTime null_server_dt
  249. SetNull(null_server_dt)
  250. uo_wage u_wage
  251. u_wage = CREATE uo_wage
  252. Long ll_wagemth
  253. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  254. rslt = 0
  255. GOTO ext
  256. END IF
  257. IF secflag = 0 THEN
  258. rslt = 0
  259. arg_msg = '单据还没有财审,操作取消'
  260. GOTO ext
  261. END IF
  262. ll_wagemth = Year(Date(outdate)) * 100 + Month(Date(outdate))
  263. IF f_check_wage_audit(ll_wagemth,-1,arg_msg) = 0 THEN
  264. rslt = 0
  265. arg_msg = arg_msg + ',不能撤审'
  266. GOTO ext
  267. END IF
  268. //检查该月份,该工资项目是否已开工资变更单
  269. cnt = 0
  270. SELECT count(*)
  271. INTO :cnt
  272. FROM u_wage_change
  273. WHERE wageid = :relid
  274. AND wagemth = :ll_wagemth;
  275. IF sqlca.SQLCode <> 0 THEN
  276. rslt = 0
  277. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  278. GOTO ext
  279. END IF
  280. IF cnt > 0 THEN
  281. rslt = 0
  282. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  283. GOTO ext
  284. END IF
  285. cnt = 0
  286. SELECT count(*) INTO :cnt
  287. FROM u_gz_wageitem Where useflag = 1 AND wageid = :relid;
  288. IF sqlca.SQLCode <> 0 THEN
  289. rslt = 0
  290. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  291. GOTO ext
  292. END IF
  293. IF cnt = 0 THEN
  294. rslt = 0
  295. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  296. GOTO ext
  297. END IF
  298. FOR i = 1 TO it_mxbt
  299. ls_emp_sumwage = 0.00
  300. ls_emp_sumwage = outwaremx[i].qty * outwaremx[i].fprice * outwaremx[i].rebate
  301. IF u_wage.f_setwagemxdata(ll_wagemth,cusid,relid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  302. rslt = 0
  303. GOTO ext
  304. END IF
  305. NEXT
  306. UPDATE u_outware SET
  307. secflag = 0,
  308. secauditingrep = '',
  309. secAuditingdate = :null_server_dt,
  310. wagemth = 0
  311. WHERE scid = :arg_scid
  312. and outwareid = :arg_billid
  313. AND billtype = 10
  314. AND flag = 1
  315. AND secflag = 1;
  316. IF sqlca.SQLCode <> 0 THEN
  317. arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText
  318. rslt = 0
  319. GOTO ext
  320. END IF
  321. secflag = 0
  322. ext:
  323. IF rslt = 0 THEN
  324. ROLLBACK;
  325. ELSEIF rslt = 1 AND arg_ifcommit THEN
  326. COMMIT;
  327. END IF
  328. DESTROY u_wage
  329. RETURN rslt
  330. end function
  331. on uo_outware_gj.create
  332. call super::create
  333. end on
  334. on uo_outware_gj.destroy
  335. call super::destroy
  336. end on