uo_outware_gj.sru 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  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_auditing (boolean arg_ifcommit, ref string arg_msg)
  11. public function integer c_sec_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  12. public function integer sec_auditing (long arg_wagemth, long arg_wageid, boolean arg_ifcommit, ref string arg_msg)
  13. end prototypes
  14. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);//====================================================================
  15. // Function: c_auditing(arg_ifcommit,arg_msg)
  16. //--------------------------------------------------------------------
  17. // Description:
  18. //--------------------------------------------------------------------
  19. // Arguments:
  20. // value boolean arg_ifcommit
  21. // reference string arg_msg
  22. //--------------------------------------------------------------------
  23. // Returns: integer
  24. //--------------------------------------------------------------------
  25. // Author: yyx Date: 2003.11.19
  26. //--------------------------------------------------------------------
  27. // Modify History:
  28. //
  29. //====================================================================
  30. long rslt = 1,cnt = 0,i
  31. long ls_newid
  32. datetime null_dt
  33. setnull(null_dt)
  34. if outwareid = 0 then
  35. rslt = 0
  36. arg_msg = "没有审核对象"
  37. goto ext
  38. end if
  39. if it_newbegin or it_updatebegin then
  40. rslt = 0
  41. arg_msg = "编辑状态下不可以执行审核"
  42. goto ext
  43. end if
  44. if flag = 0 then
  45. rslt = 0
  46. arg_msg = "单据还未审核"
  47. goto ext
  48. end if
  49. if balcflag=1 then
  50. rslt = 0
  51. arg_msg = "单据已经结存,不能撤审"
  52. goto ext
  53. end if
  54. if secflag = 1 then
  55. rslt = 0
  56. arg_msg = "单据已经财务审核,不能撤审"
  57. goto ext
  58. end if
  59. UPDATE u_outware
  60. SET Auditingrep = '',
  61. Auditingdate = :null_dt,
  62. flag = 0
  63. WHERE u_outware.outwareid = :outwareid
  64. and flag = 1
  65. and secflag = 0 using commit_transaction;
  66. if commit_transaction.sqlcode <> 0 then
  67. rslt = 0
  68. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.sqlerrtext
  69. goto ext
  70. elseif commit_transaction.sqlnrows = 0 then
  71. rslt = 0
  72. arg_msg = "单据正在审核,请稍后查询。"
  73. goto ext
  74. end if
  75. for i=1 to it_mxbt
  76. if p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
  77. outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
  78. outwaremx[i].status, 0 - outwaremx[i].qty,0,0 - outwaremx[i].costamt,&
  79. outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,&
  80. outwaremx[i].woodcode, outwaremx[i].pcode,arg_msg,0 - outwaremx[i].costamt)=0 then
  81. rslt=0
  82. goto ext
  83. end if
  84. next
  85. flag = 0
  86. ext:
  87. if rslt = 0 then
  88. rollback using commit_transaction;
  89. elseif rslt = 1 and arg_ifcommit then
  90. commit using commit_transaction;
  91. end if
  92. arg_msg = '扣费品领用单,'+ arg_msg
  93. return rslt
  94. end function
  95. public function integer c_sec_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);//====================================================================
  96. // Function: c_sec_auditing()
  97. //--------------------------------------------------------------------
  98. // Description:
  99. //--------------------------------------------------------------------
  100. // Arguments:
  101. // value long arg_wageid
  102. // value long arg_wagemth
  103. // reference string arg_msg
  104. // value boolean arg_ifcommit
  105. //--------------------------------------------------------------------
  106. // Returns: integer
  107. //--------------------------------------------------------------------
  108. // Author: yyx Date: 2004.10.19
  109. //--------------------------------------------------------------------
  110. // Modify History:
  111. //
  112. //====================================================================
  113. Long cnt = 0,i
  114. Int rslt = 1
  115. DateTime null_server_dt
  116. SetNull(null_server_dt)
  117. SELECT count(*) INTO :cnt
  118. FROM u_outware
  119. WHERE wagemth = :arg_wagemth
  120. AND relid = :arg_wageid
  121. AND secflag = 1
  122. AND billtype = 10;
  123. IF sqlca.SQLCode <> 0 THEN
  124. rslt = 0
  125. arg_msg = '查询扣费单失败'
  126. GOTO ext
  127. END IF
  128. IF cnt = 0 THEN
  129. rslt = 0
  130. arg_msg = '该月的扣费单未审核,不用撤审!'
  131. GOTO ext
  132. END IF
  133. SELECT count(*) INTO :cnt FROM u_gz_wage
  134. Where wagemth = :arg_wagemth AND Auditingflag = 1;
  135. IF sqlca.SQLCode <> 0 THEN
  136. rslt = 0
  137. arg_msg = '查询工资表失败'
  138. GOTO ext
  139. END IF
  140. IF cnt > 0 THEN
  141. rslt = 0
  142. arg_msg = '该月的工资表已审核,不能撤审!'
  143. GOTO ext
  144. END IF
  145. cnt = 0
  146. SELECT count(*) INTO :cnt FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  147. IF sqlca.SQLCode <> 0 THEN
  148. rslt = 0
  149. arg_msg = '查询工资项目失败'
  150. GOTO ext
  151. END IF
  152. IF cnt = 0 THEN
  153. rslt = 0
  154. arg_msg = '不存在该工资项目'
  155. GOTO ext
  156. END IF
  157. UPDATE u_outware SET
  158. secflag = 0,
  159. secauditingrep = '',
  160. secAuditingdate = :null_server_dt,
  161. wagemth = :arg_wagemth
  162. WHERE wagemth = :arg_wagemth
  163. AND billtype = 10
  164. AND relid = :arg_wageid
  165. AND flag = 1
  166. AND secflag = 1;
  167. IF sqlca.SQLCode <> 0 THEN
  168. arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText
  169. rslt = 0
  170. GOTO ext
  171. END IF
  172. UPDATE u_gz_wagemx Set wageamt = 0 Where wageid = :arg_wageid AND wagemth = :arg_wagemth;
  173. IF sqlca.SQLCode <> 0 THEN
  174. rslt = 0
  175. arg_msg = '更新工资表失败!原因:'+sqlca.SQLErrText
  176. GOTO ext
  177. END IF
  178. secflag = 0
  179. ext:
  180. IF rslt = 0 THEN
  181. ROLLBACK;
  182. ELSEIF rslt = 1 AND arg_ifcommit THEN
  183. COMMIT;
  184. END IF
  185. arg_msg = '扣费品领用单,'+ arg_msg
  186. RETURN rslt
  187. end function
  188. public function integer sec_auditing (long arg_wagemth, long arg_wageid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  189. Long cnt = 0,i
  190. Decimal ls_emp_sumwage
  191. datastore ds_emp_sumgjwage
  192. Long li_year,li_month
  193. uo_wage u_wage
  194. u_wage = CREATE uo_wage
  195. li_year = Long(Left(String(arg_wagemth),4))
  196. li_month = Long(Right(String(arg_wagemth),2))
  197. cnt = 0
  198. SELECT count(*) INTO :cnt
  199. FROM u_outware
  200. WHERE wagemth = :arg_wagemth
  201. AND billtype = 10
  202. AND relid = :arg_wageid
  203. AND flag = 1
  204. AND secflag = 1;
  205. IF sqlca.SQLCode <> 0 THEN
  206. rslt = 0
  207. arg_msg = '查询扣费单明细失败!'
  208. GOTO ext
  209. END IF
  210. IF cnt > 0 THEN
  211. rslt = 0
  212. arg_msg = '该月的扣费品单已审核,审核前请先执行撤审!'
  213. GOTO ext
  214. END IF
  215. cnt = 0
  216. SELECT count(*) INTO :cnt
  217. FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  218. IF sqlca.SQLCode <> 0 THEN
  219. rslt = 0
  220. arg_msg = '查询工资项目失败!'
  221. GOTO ext
  222. END IF
  223. IF cnt = 0 THEN
  224. rslt = 0
  225. arg_msg = '不存在该工资项目!'
  226. GOTO ext
  227. END IF
  228. ds_emp_sumgjwage = CREATE datastore
  229. ds_emp_sumgjwage.DataObject = 'dw_emp_sumgjwage'
  230. ds_emp_sumgjwage.SetTransObject(sqlca)
  231. IF ds_emp_sumgjwage.Retrieve(li_year,li_month,arg_wageid) <= 0 THEN
  232. rslt = 0
  233. arg_msg = '本月没有扣费单可审核或查询计件单失败'
  234. GOTO ext
  235. END IF
  236. FOR i = 1 TO ds_emp_sumgjwage.RowCount()
  237. ls_emp_sumwage = 0.00
  238. ls_emp_sumwage = ds_emp_sumgjwage.Object.sumwage[i]
  239. 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
  240. rslt = 0
  241. GOTO ext
  242. END IF
  243. NEXT
  244. UPDATE u_outware SET
  245. secflag = 1,
  246. secauditingrep = :publ_operator,
  247. secAuditingdate = getdate(),
  248. wagemth = :arg_wagemth
  249. WHERE year(outdate) <= :li_year
  250. AND month(outdate) <= :li_month
  251. AND billtype = 10
  252. AND relid = :arg_wageid
  253. AND flag = 1
  254. AND secflag = 0;
  255. IF sqlca.SQLCode <> 0 THEN
  256. arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText
  257. rslt = 0
  258. GOTO ext
  259. END IF
  260. secflag = 1
  261. ext:
  262. IF rslt = 0 THEN
  263. ROLLBACK;
  264. ELSEIF rslt = 1 AND arg_ifcommit THEN
  265. COMMIT;
  266. END IF
  267. DESTROY u_wage
  268. arg_msg = '扣费品领用单,'+ arg_msg
  269. RETURN rslt
  270. end function
  271. on uo_outware_gj.create
  272. call super::create
  273. end on
  274. on uo_outware_gj.destroy
  275. call super::destroy
  276. end on