uo_produce_worktime.sru 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. $PBExportHeader$uo_produce_worktime.sru
  2. forward
  3. global type uo_produce_worktime from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_produce_worktime from nonvisualobject
  7. end type
  8. global uo_produce_worktime uo_produce_worktime
  9. type variables
  10. Long uo_billid
  11. String uo_billcode
  12. end variables
  13. forward prototypes
  14. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  15. public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg)
  16. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer updatebegin (long arg_billid, ref string arg_msg)
  18. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  20. public function integer save (s_produce_worktime arg_s_worktime, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  21. end prototypes
  22. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);
  23. Int rslt = 1
  24. long ll_flag
  25. IF arg_newdescppart = '' THEN
  26. rslt = 0
  27. arG_MSG = "要添加内容为空,操作取消"
  28. GOTO ext
  29. END IF
  30. IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
  31. rslt = 0
  32. GOTO ext
  33. END IF
  34. IF ll_flag = 0 THEN
  35. rslt = 0
  36. arG_MSG = "待审核状态下不可用"
  37. GOTO ext
  38. END IF
  39. UPDATE u_produce_worktime
  40. SET DSCRP = DSCRP+' '+:arg_newdescppart
  41. WHERE u_produce_worktime.billid = :arg_billid;
  42. IF SQLCA.SQLCode <> 0 THEN
  43. rslt = 0
  44. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  45. GOTO ext
  46. END IF
  47. ext:
  48. IF rslt = 1 THEN
  49. COMMIT;
  50. ELSE
  51. ROLLBACK;
  52. END IF
  53. Return (rslt)
  54. end function
  55. public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg);Int rslt = 1
  56. SELECT flag
  57. INTO :arg_flag
  58. FROM u_produce_worktime
  59. WHERE billid = :arg_billid;
  60. IF sqlca.SQLCode <> 0 THEN
  61. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  62. rslt = 0
  63. GOTO ext
  64. END IF
  65. ext:
  66. RETURN rslt
  67. end function
  68. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
  69. long ll_flag
  70. if arg_billid <= 0 then
  71. rslt = 0
  72. arg_msg = '错误单据唯一码'
  73. GOTO ext
  74. END IF
  75. IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
  76. rslt = 0
  77. GOTO ext
  78. END IF
  79. if ll_flag <> 0 then
  80. rslt = 0
  81. arg_msg = '单据不是在待审核状态,不能删除'
  82. GOTO ext
  83. END IF
  84. DELETE FROM u_produce_worktime_mx
  85. WHERE billid = :arg_billid;
  86. IF sqlca.SQLCode <> 0 THEN
  87. rslt = 0
  88. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  89. GOTO ext
  90. END IF
  91. DELETE FROM u_produce_worktime
  92. WHERE billid = :arg_billid
  93. AND flag = 0;
  94. IF sqlca.SQLCode <> 0 THEN
  95. rslt = 0
  96. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  97. GOTO ext
  98. END IF
  99. ext:
  100. IF rslt = 0 THEN
  101. ROLLBACK;
  102. ELSEIF rslt = 1 AND arg_ifcommit THEN
  103. COMMIT;
  104. END IF
  105. RETURN rslt
  106. end function
  107. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  108. long li_flag
  109. IF arg_billid <= 0 THEN
  110. rslt = 0
  111. arg_msg = '错误单据唯一码'
  112. GOTO ext
  113. END IF
  114. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  115. rslt = 0
  116. GOTO ext
  117. END IF
  118. IF li_flag = 1 THEN
  119. rslt = 0
  120. arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核'
  121. GOTO ext
  122. END IF
  123. ext:
  124. RETURN rslt
  125. end function
  126. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  127. long ll_flag
  128. IF arg_billid <= 0 THEN
  129. rslt = 0
  130. ARG_MSG = '错误单据唯一码'
  131. GOTO ext
  132. END IF
  133. IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
  134. rslt = 0
  135. GOTO ext
  136. END IF
  137. IF ll_flag <> 0 THEN
  138. rslt = 0
  139. ARG_MSG = '单据不是在待审核状态,不可以再审'
  140. GOTO ext
  141. END IF
  142. //更新审核标记
  143. UPDATE u_produce_worktime
  144. SET auditemp = :arg_opemp,
  145. auditdate = getdate(),
  146. flag = 1
  147. WHERE billid = :arg_billid
  148. AND flag = 0;
  149. IF sqlca.SQLCode <> 0 THEN
  150. rslt = 0
  151. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  152. GOTO ext
  153. END IF
  154. ext:
  155. IF rslt = 0 THEN
  156. ROLLBACK;
  157. ELSEIF rslt = 1 AND arg_ifcommit THEN
  158. COMMIT;
  159. END IF
  160. RETURN rslt
  161. end function
  162. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  163. Long ll_flag
  164. DateTime null_dt
  165. SetNull(null_dt)
  166. IF arg_billid <= 0 THEN
  167. rslt = 0
  168. ARG_MSG = '错误单据唯一码'
  169. GOTO ext
  170. END IF
  171. IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
  172. rslt = 0
  173. GOTO ext
  174. END IF
  175. IF ll_flag <> 1 THEN
  176. rslt = 0
  177. ARG_MSG = '单据不是在审核状态,不可以撤审'
  178. GOTO ext
  179. END IF
  180. //更新审核标记
  181. UPDATE u_produce_worktime
  182. SET auditemp = '',
  183. auditdate = :null_dt,
  184. flag = 0
  185. Where billid = :arg_billid;
  186. IF sqlca.SQLCode <> 0 THEN
  187. rslt = 0
  188. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  189. GOTO ext
  190. END IF
  191. ext:
  192. IF rslt = 0 THEN
  193. ROLLBACK;
  194. ELSEIF rslt = 1 AND arg_ifcommit THEN
  195. COMMIT;
  196. END IF
  197. RETURN rslt
  198. end function
  199. public function integer save (s_produce_worktime arg_s_worktime, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
  200. DateTime server_dt
  201. Long ll_billid,it_mxbt,i
  202. String ls_sccode,ls_billcode
  203. IF IsNull(arg_s_worktime.scid) THEN arg_s_worktime.scid = 0
  204. IF IsNull(arg_s_worktime.billid) THEN arg_s_worktime.billid = 0
  205. IF IsNull(arg_s_worktime.rep) THEN arg_s_worktime.rep = ''
  206. IF IsNull(arg_s_worktime.dscrp) THEN arg_s_worktime.dscrp = ''
  207. IF IsNull(arg_s_worktime.wrkgrpid) THEN arg_s_worktime.wrkgrpid = 0
  208. IF arg_s_worktime.rep = '' THEN
  209. arg_msg = '请输入经手人'
  210. rslt = 0
  211. GOTO ext
  212. END IF
  213. IF arg_s_worktime.wrkgrpid = 0 THEN
  214. arg_msg = '请选择车间'
  215. rslt = 0
  216. GOTO ext
  217. END IF
  218. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  219. IF sqlca.SQLCode <> 0 THEN
  220. rslt = 0
  221. arg_msg = "查询操作失败,日期 "
  222. GOTO ext
  223. END IF
  224. it_mxbt = UpperBound(arg_s_worktime.arg_s_worktimemx)
  225. IF it_mxbt <= 0 THEN
  226. rslt = 0
  227. arg_msg = "没有正确明细内容"
  228. GOTO ext
  229. END IF
  230. IF arg_s_worktime.billid = 0 THEN
  231. ll_billid = f_sys_scidentity(0,"u_produce_worktime","billid",arg_msg,TRUE,id_sqlca)
  232. IF ll_billid <= 0 THEN
  233. rslt = 0
  234. GOTO ext
  235. END IF
  236. IF f_get_sccode(arg_s_worktime.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
  237. rslt = 0
  238. GOTO ext
  239. END IF
  240. ls_billcode = getid(arg_s_worktime.scid,ls_sccode + 'PT',Date(server_dt),FALSE,sqlca)
  241. IF ls_billcode = "err" THEN
  242. rslt = 0
  243. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  244. GOTO ext
  245. END IF
  246. INSERT INTO u_produce_worktime
  247. (scid,
  248. billid,
  249. billcode,
  250. billdate,
  251. rep,
  252. dscrp,
  253. opdate,
  254. opemp,
  255. wrkgrpid)
  256. VALUES
  257. (:arg_s_worktime.scid,
  258. :ll_billid,
  259. :ls_billcode,
  260. :arg_s_worktime.billdate,
  261. :arg_s_worktime.rep,
  262. :arg_s_worktime.dscrp,
  263. getdate(),
  264. :arg_opemp,
  265. :arg_s_worktime.wrkgrpid);
  266. IF sqlca.SQLCode <> 0 THEN
  267. rslt = 0
  268. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  269. GOTO ext
  270. END IF
  271. FOR i = 1 TO it_mxbt
  272. INSERT INTO u_produce_worktime_mx
  273. (billid,
  274. empid,
  275. worktime,
  276. dscrp,
  277. printid)
  278. VALUES
  279. (:ll_billid,
  280. :arg_s_worktime.arg_s_worktimemx[i].empid,
  281. :arg_s_worktime.arg_s_worktimemx[i].worktime,
  282. :arg_s_worktime.arg_s_worktimemx[i].dscrp,
  283. :arg_s_worktime.arg_s_worktimemx[i].printid);
  284. IF sqlca.SQLCode <> 0 THEN
  285. rslt = 0
  286. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  287. GOTO ext
  288. END IF
  289. NEXT
  290. uo_billid = ll_billid
  291. uo_billcode = ls_billcode
  292. ELSE
  293. UPDATE u_produce_worktime
  294. SET billdate = :arg_s_worktime.billdate,
  295. rep = :arg_s_worktime.rep,
  296. dscrp = :arg_s_worktime.dscrp,
  297. moddate = getdate(),
  298. modemp = :arg_opemp,
  299. wrkgrpid = :arg_s_worktime.wrkgrpid
  300. WHERE billid = :arg_s_worktime.billid
  301. AND flag = 0 ;
  302. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  303. rslt = 0
  304. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  305. GOTO ext
  306. END IF
  307. DELETE FROM u_produce_worktime_mx
  308. Where billid = :arg_s_worktime.billid;
  309. IF sqlca.SQLCode <> 0 THEN
  310. rslt = 0
  311. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  312. GOTO ext
  313. END IF
  314. FOR i = 1 TO it_mxbt
  315. INSERT INTO u_produce_worktime_mx
  316. (billid,
  317. empid,
  318. worktime,
  319. dscrp,
  320. printid)
  321. VALUES
  322. (:arg_s_worktime.billid,
  323. :arg_s_worktime.arg_s_worktimemx[i].empid,
  324. :arg_s_worktime.arg_s_worktimemx[i].worktime,
  325. :arg_s_worktime.arg_s_worktimemx[i].dscrp,
  326. :arg_s_worktime.arg_s_worktimemx[i].printid);
  327. IF sqlca.SQLCode <> 0 THEN
  328. rslt = 0
  329. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  330. GOTO ext
  331. END IF
  332. NEXT
  333. uo_billid = arg_s_worktime.billid
  334. END IF
  335. ext:
  336. IF rslt = 0 THEN
  337. ROLLBACK;
  338. ELSEIF arg_ifcommit AND rslt = 1 THEN
  339. COMMIT;
  340. END IF
  341. RETURN rslt
  342. end function
  343. on uo_produce_worktime.create
  344. call super::create
  345. TriggerEvent( this, "constructor" )
  346. end on
  347. on uo_produce_worktime.destroy
  348. TriggerEvent( this, "destructor" )
  349. call super::destroy
  350. end on