uo_train_emp.sru 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552
  1. $PBExportHeader$uo_train_emp.sru
  2. forward
  3. global type uo_train_emp from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_train_emp from nonvisualobject
  7. end type
  8. global uo_train_emp uo_train_emp
  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_train_emp arg_s_train, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  21. public function integer getinfo (long arg_billid, ref s_train_emp_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
  22. end prototypes
  23. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);
  24. Int rslt = 1
  25. long ll_flag
  26. IF arg_newdescppart = '' THEN
  27. rslt = 0
  28. arG_MSG = "要添加内容为空,操作取消"
  29. GOTO ext
  30. END IF
  31. IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
  32. rslt = 0
  33. GOTO ext
  34. END IF
  35. IF ll_flag = 0 THEN
  36. rslt = 0
  37. arG_MSG = "待审核状态下不可用"
  38. GOTO ext
  39. END IF
  40. UPDATE u_train_emp
  41. SET DSCRP = DSCRP+' '+:arg_newdescppart
  42. WHERE u_train_emp.billid = :arg_billid;
  43. IF SQLCA.SQLCode <> 0 THEN
  44. rslt = 0
  45. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  46. GOTO ext
  47. END IF
  48. ext:
  49. IF rslt = 1 THEN
  50. COMMIT;
  51. ELSE
  52. ROLLBACK;
  53. END IF
  54. Return (rslt)
  55. end function
  56. public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg);Int rslt = 1
  57. SELECT flag
  58. INTO :arg_flag
  59. FROM u_train_emp
  60. WHERE billid = :arg_billid;
  61. IF sqlca.SQLCode <> 0 THEN
  62. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  63. rslt = 0
  64. GOTO ext
  65. END IF
  66. ext:
  67. RETURN rslt
  68. end function
  69. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  70. Long ll_flag
  71. IF arg_billid <= 0 THEN
  72. rslt = 0
  73. arg_msg = '错误单据唯一码'
  74. GOTO ext
  75. END IF
  76. IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
  77. rslt = 0
  78. GOTO ext
  79. END IF
  80. IF ll_flag <> 0 THEN
  81. rslt = 0
  82. arg_msg = '单据不是在待审核状态,不能删除'
  83. GOTO ext
  84. END IF
  85. DELETE FROM u_train_emp_mx
  86. Where billid = :arg_billid;
  87. IF sqlca.SQLCode <> 0 THEN
  88. rslt = 0
  89. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  90. GOTO ext
  91. END IF
  92. DELETE FROM u_train_emp
  93. WHERE billid = :arg_billid
  94. AND flag = 0;
  95. IF sqlca.SQLCode <> 0 THEN
  96. rslt = 0
  97. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  98. GOTO ext
  99. END IF
  100. ext:
  101. IF rslt = 0 THEN
  102. ROLLBACK;
  103. ELSEIF rslt = 1 AND arg_ifcommit THEN
  104. COMMIT;
  105. END IF
  106. RETURN rslt
  107. end function
  108. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  109. long li_flag
  110. IF arg_billid <= 0 THEN
  111. rslt = 0
  112. arg_msg = '错误单据唯一码'
  113. GOTO ext
  114. END IF
  115. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  116. rslt = 0
  117. GOTO ext
  118. END IF
  119. IF li_flag = 1 THEN
  120. rslt = 0
  121. arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核'
  122. GOTO ext
  123. END IF
  124. ext:
  125. RETURN rslt
  126. end function
  127. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  128. Long ll_flag
  129. uo_empinfo uo_emp
  130. uo_emp = CREATE uo_empinfo
  131. s_train s_save
  132. IF arg_billid <= 0 THEN
  133. rslt = 0
  134. ARG_MSG = '错误单据唯一码'
  135. GOTO ext
  136. END IF
  137. IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
  138. rslt = 0
  139. GOTO ext
  140. END IF
  141. IF ll_flag <> 0 THEN
  142. rslt = 0
  143. ARG_MSG = '单据不是在待审核状态,不可以再审'
  144. GOTO ext
  145. END IF
  146. s_train_emp_mx s_mx[]
  147. Long ll_arr_cnt
  148. IF getinfo(arg_billid,s_mx,ll_arr_cnt,ARG_MSG) = 0 THEN
  149. rslt = 0
  150. GOTO ext
  151. END IF
  152. Long ll_i
  153. DateTime ld_traindate
  154. String ls_content
  155. string ls_billcode
  156. SELECT billcode,traindate,content
  157. INTO :ls_billcode,:ld_traindate,:ls_content
  158. FROM u_train_emp
  159. Where billid = :arg_billid;
  160. IF sqlca.SQLCode <> 0 THEN
  161. rslt = 0
  162. ARG_MSG = '查询单据相关信息失败'+sqlca.SQLErrText
  163. GOTO ext
  164. END IF
  165. FOR ll_i = 1 TO ll_arr_cnt
  166. s_save.trainid = 0
  167. s_save.empid = s_mx[ll_i].empid
  168. s_save.traindate = ld_traindate
  169. s_save.content = ls_content
  170. s_save.result = s_mx[ll_i].result
  171. s_save.othercode = s_mx[ll_i].othercode
  172. s_save.dscrp = s_mx[ll_i].dscrp
  173. s_save.relid = arg_billid
  174. s_save.relcode = ls_billcode
  175. IF uo_emp.uof_add_train(s_save,publ_operator,ARG_MSG,FALSE) = 0 THEN
  176. rslt = 0
  177. GOTO ext
  178. END IF
  179. NEXT
  180. //更新审核标记
  181. UPDATE u_train_emp
  182. SET auditemp = :arg_opemp,
  183. auditdate = getdate(),
  184. flag = 1
  185. WHERE billid = :arg_billid
  186. AND flag = 0;
  187. IF sqlca.SQLCode <> 0 THEN
  188. rslt = 0
  189. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  190. GOTO ext
  191. END IF
  192. ext:
  193. IF rslt = 0 THEN
  194. ROLLBACK;
  195. ELSEIF rslt = 1 AND arg_ifcommit THEN
  196. COMMIT;
  197. END IF
  198. RETURN rslt
  199. end function
  200. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  201. Long ll_flag
  202. DateTime null_dt
  203. SetNull(null_dt)
  204. IF arg_billid <= 0 THEN
  205. rslt = 0
  206. ARG_MSG = '错误单据唯一码'
  207. GOTO ext
  208. END IF
  209. IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
  210. rslt = 0
  211. GOTO ext
  212. END IF
  213. IF ll_flag <> 1 THEN
  214. rslt = 0
  215. ARG_MSG = '单据不是在审核状态,不可以撤审'
  216. GOTO ext
  217. END IF
  218. DELETE FROM u_rs_train
  219. Where relid = :arg_billid;
  220. IF sqlca.SQLCode <> 0 THEN
  221. arg_msg = '删除培训内容失败,原因:'+sqlca.SQLErrText
  222. rslt = 0
  223. GOTO ext
  224. END IF
  225. //更新审核标记
  226. UPDATE u_train_emp
  227. SET auditemp = '',
  228. auditdate = :null_dt,
  229. flag = 0
  230. Where billid = :arg_billid;
  231. IF sqlca.SQLCode <> 0 THEN
  232. rslt = 0
  233. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  234. GOTO ext
  235. END IF
  236. ext:
  237. IF rslt = 0 THEN
  238. ROLLBACK;
  239. ELSEIF rslt = 1 AND arg_ifcommit THEN
  240. COMMIT;
  241. END IF
  242. RETURN rslt
  243. end function
  244. public function integer save (s_train_emp arg_s_train, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
  245. DateTime server_dt
  246. Long ll_billid,it_mxbt,i
  247. String ls_sccode,ls_billcode
  248. IF IsNull(arg_s_train.billid) THEN arg_s_train.billid = 0
  249. IF IsNull(arg_s_train.billemp) THEN arg_s_train.billemp = ''
  250. IF IsNull(arg_s_train.content) THEN arg_s_train.content = ''
  251. IF IsNull(arg_s_train.dscrp) THEN arg_s_train.dscrp = ''
  252. IF arg_s_train.billemp = '' THEN
  253. arg_msg = '请输入经手人'
  254. rslt = 0
  255. GOTO ext
  256. END IF
  257. IF arg_s_train.content = '' THEN
  258. arg_msg = '请输入培训内容'
  259. rslt = 0
  260. GOTO ext
  261. END IF
  262. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  263. IF sqlca.SQLCode <> 0 THEN
  264. rslt = 0
  265. arg_msg = "查询操作失败,日期 "
  266. GOTO ext
  267. END IF
  268. it_mxbt = UpperBound(arg_s_train.arg_s_mx)
  269. IF it_mxbt <= 0 THEN
  270. rslt = 0
  271. arg_msg = "没有正确明细内容"
  272. GOTO ext
  273. END IF
  274. IF arg_s_train.billid = 0 THEN
  275. ll_billid = f_sys_scidentity(0,"u_train_emp","billid",arg_msg,TRUE,id_sqlca)
  276. IF ll_billid <= 0 THEN
  277. rslt = 0
  278. GOTO ext
  279. END IF
  280. IF f_get_sccode(0,sqlca,ls_sccode,arg_msg) = 0 THEN
  281. rslt = 0
  282. GOTO ext
  283. END IF
  284. ls_billcode = getid(0,ls_sccode + 'PX',Date(server_dt),FALSE,sqlca)
  285. IF ls_billcode = "err" THEN
  286. rslt = 0
  287. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  288. GOTO ext
  289. END IF
  290. INSERT INTO u_train_emp
  291. (billid,
  292. billcode,
  293. billemp,
  294. traindate,
  295. content,
  296. dscrp,
  297. opdate,
  298. opemp)
  299. VALUES
  300. (:ll_billid,
  301. :ls_billcode,
  302. :arg_s_train.billemp,
  303. :arg_s_train.traindate,
  304. :arg_s_train.content,
  305. :arg_s_train.dscrp,
  306. getdate(),
  307. :arg_opemp);
  308. IF sqlca.SQLCode <> 0 THEN
  309. rslt = 0
  310. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  311. GOTO ext
  312. END IF
  313. FOR i = 1 TO it_mxbt
  314. INSERT INTO u_train_emp_mx
  315. (billid,
  316. empid,
  317. result,
  318. othercode,
  319. dscrp,
  320. printid)
  321. VALUES
  322. (:ll_billid,
  323. :arg_s_train.arg_s_mx[i].empid,
  324. :arg_s_train.arg_s_mx[i].result,
  325. :arg_s_train.arg_s_mx[i].othercode,
  326. :arg_s_train.arg_s_mx[i].dscrp,
  327. :arg_s_train.arg_s_mx[i].printid);
  328. IF sqlca.SQLCode <> 0 THEN
  329. rslt = 0
  330. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  331. GOTO ext
  332. END IF
  333. NEXT
  334. uo_billid = ll_billid
  335. uo_billcode = ls_billcode
  336. ELSE
  337. UPDATE u_train_emp
  338. SET traindate = :arg_s_train.traindate,
  339. billemp = :arg_s_train.billemp,
  340. content = :arg_s_train.content,
  341. dscrp = :arg_s_train.dscrp,
  342. moddate = getdate(),
  343. modemp = :arg_opemp
  344. WHERE billid = :arg_s_train.billid
  345. AND flag = 0 ;
  346. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  347. rslt = 0
  348. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  349. GOTO ext
  350. END IF
  351. DELETE FROM u_train_emp_mx
  352. Where billid = :arg_s_train.billid;
  353. IF sqlca.SQLCode <> 0 THEN
  354. rslt = 0
  355. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  356. GOTO ext
  357. END IF
  358. FOR i = 1 TO it_mxbt
  359. INSERT INTO u_train_emp_mx
  360. (billid,
  361. empid,
  362. result,
  363. othercode,
  364. dscrp,
  365. printid)
  366. VALUES
  367. (:arg_s_train.billid,
  368. :arg_s_train.arg_s_mx[i].empid,
  369. :arg_s_train.arg_s_mx[i].result,
  370. :arg_s_train.arg_s_mx[i].othercode,
  371. :arg_s_train.arg_s_mx[i].dscrp,
  372. :arg_s_train.arg_s_mx[i].printid);
  373. IF sqlca.SQLCode <> 0 THEN
  374. rslt = 0
  375. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  376. GOTO ext
  377. END IF
  378. NEXT
  379. uo_billid = arg_s_train.billid
  380. END IF
  381. ext:
  382. IF rslt = 0 THEN
  383. ROLLBACK;
  384. ELSEIF arg_ifcommit AND rslt = 1 THEN
  385. COMMIT;
  386. END IF
  387. RETURN rslt
  388. end function
  389. public function integer getinfo (long arg_billid, ref s_train_emp_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
  390. Long i = 1,no_mxcheck = 0
  391. IF arg_billid <= 0 THEN
  392. rslt = 0
  393. arg_msg = '错误单据唯一码'
  394. GOTO ext
  395. END IF
  396. DECLARE cur_mx CURSOR FOR
  397. SELECT empid, result, othercode, dscrp
  398. FROM u_train_emp_mx
  399. Where billid = :arg_billid;
  400. OPEN cur_mx;
  401. FETCH cur_mx INTO :arg_ref_mx[i].empid,
  402. :arg_ref_mx[i].result,
  403. :arg_ref_mx[i].othercode,
  404. :arg_ref_mx[i].dscrp;
  405. DO WHILE sqlca.SQLCode = 0
  406. i++
  407. FETCH cur_mx INTO :arg_ref_mx[i].empid,
  408. :arg_ref_mx[i].result,
  409. :arg_ref_mx[i].othercode,
  410. :arg_ref_mx[i].dscrp;
  411. LOOP
  412. CLOSE cur_mx;
  413. SELECT count(*) INTO :no_mxcheck
  414. FROM u_train_emp_mx
  415. Where billid = :arg_billid;
  416. IF sqlca.SQLCode <> 0 THEN
  417. rslt = 0
  418. arg_msg = "查询操作失败,单据汇总数量"
  419. GOTO ext
  420. END IF
  421. IF i <> (no_mxcheck + 1) THEN
  422. rslt = 0
  423. arg_msg = "查询操作失败,单据汇总内容"
  424. GOTO ext
  425. END IF
  426. arg_arr_cnt = i - 1
  427. ext:
  428. RETURN rslt
  429. end function
  430. on uo_train_emp.create
  431. call super::create
  432. TriggerEvent( this, "constructor" )
  433. end on
  434. on uo_train_emp.destroy
  435. TriggerEvent( this, "destructor" )
  436. call super::destroy
  437. end on