uo_reexam.sru 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. $PBExportHeader$uo_reexam.sru
  2. forward
  3. global type uo_reexam from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_reexam from nonvisualobject
  7. end type
  8. global uo_reexam uo_reexam
  9. type variables
  10. Long reexamid
  11. String reexamcode
  12. String employname
  13. String duty
  14. Long departmentid
  15. DateTime reexamdate
  16. String emptel
  17. String firsttestor
  18. String consultor
  19. String result
  20. String workidea
  21. String deptidea
  22. String manageridea
  23. Long flag
  24. String opemp
  25. DateTime opdate
  26. String modemp
  27. DateTime moddate
  28. String auditrep
  29. DateTime auditdate
  30. String dscrp
  31. Long addempid
  32. Int ifemploy
  33. Boolean it_newbegin = False //新建标志
  34. Boolean it_updatebegin = False //修改标志
  35. end variables
  36. forward prototypes
  37. public function integer p_reset ()
  38. public function integer p_getinfo (long arg_reexamid, ref string arg_msg)
  39. public function integer newbegin ()
  40. public function integer updatebegin (long arg_reexamid, ref string arg_msg)
  41. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  42. public function integer del (long arg_reexamid, ref string arg_msg)
  43. public function integer auditing (long arg_reexamid, ref string arg_msg, boolean arg_ifcommit)
  44. public function integer c_auditing (long arg_reexamid, ref string arg_msg, boolean arg_ifcommit)
  45. public function integer add_workidea (long arg_reexamid, string arg_newidea, ref string arg_msg)
  46. public function integer add_deptidea (long arg_reexamid, string arg_newidea, ref string arg_msg)
  47. public function integer add_manageridea (long arg_reexamid, string arg_newidea, ref string arg_msg)
  48. public function integer add_result (long arg_reexamid, string arg_newidea, ref string arg_msg)
  49. end prototypes
  50. public function integer p_reset ();reexamid = 0
  51. reexamcode = ''
  52. employname = ''
  53. departmentid = 0
  54. duty = ''
  55. firsttestor = ''
  56. consultor = ''
  57. result = ''
  58. workidea = ''
  59. deptidea = ''
  60. manageridea = ''
  61. flag = 0
  62. dscrp = ''
  63. it_newbegin=false
  64. it_updatebegin=false
  65. return 1
  66. end function
  67. public function integer p_getinfo (long arg_reexamid, ref string arg_msg);long rslt = 1
  68. SELECT u_reexam.employname,
  69. u_reexam.duty,
  70. u_reexam.departmentid,
  71. u_reexam.reexamdate,
  72. u_reexam.firsttestor,
  73. u_reexam.consultor,
  74. u_reexam.result,
  75. u_reexam.workidea,
  76. u_reexam.deptidea,
  77. u_reexam.manageridea,
  78. u_reexam.reexamcode,
  79. u_reexam.flag,
  80. u_reexam.opemp,
  81. u_reexam.opdate,
  82. u_reexam.modemp,
  83. u_reexam.moddate,
  84. u_reexam.auditrep,
  85. u_reexam.auditdate ,
  86. u_reexam.dscrp
  87. INTO :employname,
  88. :duty,
  89. :departmentid,
  90. :reexamdate,
  91. :firsttestor,
  92. :consultor,
  93. :result,
  94. :workidea,
  95. :deptidea,
  96. :manageridea,
  97. :reexamcode,
  98. :flag,
  99. :opemp,
  100. :opdate,
  101. :modemp,
  102. :moddate,
  103. :auditrep,
  104. :auditdate,
  105. :dscrp
  106. FROM u_reexam
  107. WHERE u_reexam.reexamid = :arg_reexamid ;
  108. if sqlca.sqlcode <> 0 then
  109. rslt = 0
  110. arg_msg = '查询复试通知失败(错误单据唯一码)'+sqlca.sqlerrtext
  111. goto ext
  112. end if
  113. reexamid = arg_reexamid
  114. ext:
  115. return rslt
  116. end function
  117. public function integer newbegin ();p_reset()
  118. it_newbegin = true
  119. it_updatebegin = false
  120. return 1
  121. end function
  122. public function integer updatebegin (long arg_reexamid, ref string arg_msg);int rslt = 1
  123. if arg_reexamid < 0 then
  124. rslt = 0
  125. arg_msg = '错误的复试通知单唯一码'
  126. goto ext
  127. end if
  128. if p_getinfo(arg_reexamid,arg_msg) = 0 then
  129. rslt = 0
  130. goto ext
  131. end if
  132. if flag = 1 then
  133. rslt = 0
  134. arg_msg = "该复试通知单已审核,不能修改"
  135. goto ext
  136. end if
  137. reexamid = arg_reexamid
  138. it_newbegin = false
  139. it_updatebegin = true
  140. ext:
  141. if rslt = 0 then p_reset()
  142. return rslt
  143. end function
  144. public function integer save (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  145. DateTime server_dt
  146. Long ls_newid
  147. IF IsNull(reexamcode) THEN reexamcode = ''
  148. IF IsNull(employname) THEN employname = ''
  149. IF IsNull(duty) THEN duty = ''
  150. IF IsNull(departmentid) THEN departmentid = 0
  151. IF IsNull(addempid) THEN addempid = 0
  152. IF IsNull(ifemploy) THEN ifemploy = 0
  153. IF IsNull(firsttestor) THEN firsttestor = ''
  154. IF IsNull(consultor) THEN consultor = ''
  155. IF IsNull(result) THEN result = ''
  156. IF IsNull(workidea) THEN workidea = ''
  157. IF IsNull(deptidea) THEN deptidea = ''
  158. IF IsNull(manageridea) THEN manageridea = ''
  159. IF IsNull(emptel) THEN emptel = ''
  160. IF IsNull(dscrp) THEN dscrp = ''
  161. IF it_newbegin = False And it_updatebegin = False THEN
  162. rslt = 0
  163. arg_msg = "非编辑状态不可以提交"
  164. GOTO ext
  165. END IF
  166. SELECT Top 1 getdate() Into :server_dt From u_user;
  167. //取得系统时间,借用操作员表
  168. IF sqlca.SQLCode <> 0 THEN
  169. rslt = 0
  170. arg_msg = "查询操作失败,日期 "
  171. GOTO ext
  172. END IF
  173. IF addempid = 0 THEN
  174. rslt = 0
  175. arg_msg = '请选择人员增补申请单'
  176. GOTO ext
  177. END IF
  178. IF reexamid = 0 THEN
  179. ls_newid = f_sys_scidentity(0,"u_reexam","reexamid",arg_msg,False,sqlca)
  180. IF ls_newid < 0 THEN
  181. rslt = 0
  182. GOTO ext
  183. END IF
  184. reexamcode = getid(0,"FZ",Date(server_dt),False,sqlca) //取得新单据编号
  185. IF reexamcode = "err" THEN
  186. reexamcode = ''
  187. rslt = 0
  188. arg_msg = "无法获取复试通知单编号"
  189. GOTO ext
  190. END IF
  191. INSERT INTO u_reexam(
  192. u_reexam.reexamid,
  193. u_reexam.reexamcode,
  194. u_reexam.employname,
  195. u_reexam.duty,
  196. u_reexam.departmentid,
  197. u_reexam.reexamdate,
  198. u_reexam.emptel,
  199. u_reexam.firsttestor,
  200. u_reexam.consultor,
  201. u_reexam.flag,
  202. u_reexam.opemp,
  203. u_reexam.opdate,
  204. u_reexam.dscrp,
  205. u_reexam.addempid,
  206. u_reexam.ifemploy)
  207. VALUES ( :ls_newid,
  208. :reexamcode,
  209. :employname,
  210. :duty,
  211. :departmentid,
  212. :reexamdate,
  213. :emptel,
  214. :firsttestor,
  215. :consultor,
  216. 0,
  217. :publ_operator,
  218. :server_dt,
  219. :dscrp,
  220. :addempid,
  221. :ifemploy);
  222. IF sqlca.SQLCode <> 0 THEN
  223. rslt = 0
  224. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  225. GOTO ext
  226. END IF
  227. reexamid = ls_newid
  228. ELSE
  229. UPDATE u_reexam
  230. SET employname = :employname,
  231. duty = :duty,
  232. departmentid = :departmentid,
  233. reexamdate = :reexamdate,
  234. emptel = :emptel,
  235. firsttestor = :firsttestor,
  236. consultor = :consultor,
  237. modemp = :publ_operator,
  238. moddate = :server_dt,
  239. dscrp = :dscrp,
  240. addempid = :addempid ,
  241. ifemploy = :ifemploy
  242. WHERE u_reexam.reexamid = :reexamid AND
  243. u_reexam.flag = 0 ;
  244. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
  245. rslt = 0
  246. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  247. GOTO ext
  248. END IF
  249. END IF
  250. it_newbegin = False
  251. it_updatebegin = False
  252. ext:
  253. IF rslt = 0 THEN
  254. ROLLBACK;
  255. ELSEIF rslt = 1 And arg_ifcommit THEN
  256. COMMIT;
  257. END IF
  258. Return(rslt)
  259. end function
  260. public function integer del (long arg_reexamid, ref string arg_msg);long rslt = 1
  261. if arg_reexamid <= 0 then
  262. rslt = 0
  263. arg_msg = '没有删除对象'
  264. goto ext
  265. end if
  266. if p_getinfo(arg_reexamid,arg_msg) = 0 then
  267. rslt = 0
  268. goto ext
  269. end if
  270. if flag = 1 then
  271. rslt = 0
  272. arg_msg = "该复试通知单已经审核,不能删除"
  273. goto ext
  274. end if
  275. if it_newbegin or it_updatebegin then
  276. rslt=0
  277. arg_msg="编辑状态下不可以执行,操作取消"
  278. goto ext
  279. end if
  280. delete from u_reexam where u_reexam.reexamid = :arg_reexamid ;
  281. if sqlca.sqlcode <> 0 then
  282. rslt = 0
  283. arg_msg = "删除复试通知单操作失败"+"~n"+sqlca.sqlerrtext
  284. goto ext
  285. end if
  286. commit;
  287. it_newbegin = false
  288. it_updatebegin = false
  289. if rslt = 0 then
  290. rollback;
  291. p_reset()
  292. end if
  293. ext:
  294. return (rslt)
  295. end function
  296. public function integer auditing (long arg_reexamid, ref string arg_msg, boolean arg_ifcommit);long rslt = 1 ,cnt
  297. if arg_reexamid <= 0 then
  298. rslt = 0
  299. arg_msg = "错误复试通知单唯一码"
  300. goto ext
  301. end if
  302. if p_getinfo(arg_reexamid,arg_msg) = 0 then
  303. rslt = 0
  304. goto ext
  305. end if
  306. if flag = 1 then
  307. rslt = 0
  308. arg_msg = "该复试通知单已经审核,操作取消"
  309. goto ext
  310. end if
  311. cnt=0
  312. SELECT count(*) INTO :cnt
  313. FROM u_user
  314. WHERE username=:publ_operator using sqlca;
  315. if sqlca.sqlcode<>0 then
  316. rslt=0
  317. arG_MSG="查询操作失败,操作员!"
  318. goto ext
  319. end if
  320. if cnt=0 then
  321. rslt=0
  322. arG_MSG="操作员姓名未登记或已取消!"
  323. goto ext
  324. end if
  325. update u_reexam
  326. set u_reexam.flag = 1,
  327. u_reexam.auditrep = :publ_operator,
  328. u_reexam.auditdate = getdate()
  329. where u_reexam.reexamid = :arg_reexamid ;
  330. if sqlca.sqlcode<>0 then
  331. ARG_msg='更新复试通知单审核状态失败,原因>>'+sqlca.sqlerrtext
  332. rslt=0
  333. goto ext
  334. end if
  335. ext:
  336. if rslt=0 then
  337. rollback;
  338. elseif rslt=1 and arg_ifcommit then
  339. commit;
  340. end if
  341. return rslt
  342. end function
  343. public function integer c_auditing (long arg_reexamid, ref string arg_msg, boolean arg_ifcommit);long rslt = 1,cnt = 0
  344. datetime null_dt
  345. setnull(null_dt)
  346. if arg_reexamid <= 0 then
  347. rslt = 0
  348. arg_msg = "错误复试通知单唯一码"
  349. goto ext
  350. end if
  351. if p_getinfo(arg_reexamid,arg_msg) = 0 then
  352. rslt = 0
  353. goto ext
  354. end if
  355. if flag = 0 then
  356. rslt = 0
  357. arg_msg = "该复试通知单还未审核,操作取消"
  358. goto ext
  359. end if
  360. update u_reexam
  361. set u_reexam.flag = 0,
  362. u_reexam.auditrep = '',
  363. u_reexam.auditdate = :null_dt
  364. where u_reexam.reexamid = :arg_reexamid;
  365. if sqlca.sqlcode<>0 then
  366. rslt=0
  367. arg_Msg='更新复试通知单状态失败!原因:'+sqlca.sqlerrtext
  368. goto ext
  369. end if
  370. ext:
  371. if rslt=0 then
  372. rollback;
  373. elseif rslt=1 and arg_ifcommit then
  374. commit;
  375. end if
  376. return rslt
  377. end function
  378. public function integer add_workidea (long arg_reexamid, string arg_newidea, ref string arg_msg);Int rslt = 1
  379. arg_newidea = Trim(arg_newidea)
  380. IF arg_reexamid <= 0 THEN
  381. rslt = 0
  382. arg_msg = "错误的复试通知单唯一码"
  383. GOTO ext
  384. END IF
  385. IF p_getinfo(arg_reexamid,arg_msg) = 0 THEN
  386. rslt = 0
  387. GOTO ext
  388. END IF
  389. IF flag = 0 THEN
  390. rslt = 0
  391. arg_msg = "非审核状态下不可用"
  392. GOTO ext
  393. END IF
  394. UPDATE u_reexam
  395. SET workidea = ltrim(rtrim(workidea))+' '+:arg_newidea
  396. Where u_reexam.reexamid = :arg_reexamid;
  397. IF sqlca.SQLCode <> 0 THEN
  398. ROLLBACK ;
  399. rslt = 0
  400. arg_msg = "因网络或其它原因导致添加科/车间主管意见操作失败"+"~n"+sqlca.SQLErrText
  401. GOTO ext
  402. END IF
  403. COMMIT;
  404. workidea = workidea+' '+arg_newidea
  405. ext:
  406. RETURN rslt
  407. end function
  408. public function integer add_deptidea (long arg_reexamid, string arg_newidea, ref string arg_msg);Int rslt = 1
  409. arg_newidea = Trim(arg_newidea)
  410. IF arg_reexamid <= 0 THEN
  411. rslt = 0
  412. arg_msg = "错误的复试通知单唯一码"
  413. GOTO ext
  414. END IF
  415. IF p_getinfo(arg_reexamid,arg_msg) = 0 THEN
  416. rslt = 0
  417. GOTO ext
  418. END IF
  419. IF flag = 0 THEN
  420. rslt = 0
  421. arg_msg = "非审核状态下不可用"
  422. GOTO ext
  423. END IF
  424. UPDATE u_reexam
  425. SET deptidea = ltrim(rtrim(deptidea))+' '+:arg_newidea
  426. Where u_reexam.reexamid = :arg_reexamid;
  427. IF sqlca.SQLCode <> 0 THEN
  428. ROLLBACK ;
  429. rslt = 0
  430. arg_msg = "因网络或其它原因导致添加部门经理意见操作失败"+"~n"+sqlca.SQLErrText
  431. GOTO ext
  432. END IF
  433. COMMIT;
  434. deptidea = deptidea+' '+arg_newidea
  435. ext:
  436. RETURN rslt
  437. end function
  438. public function integer add_manageridea (long arg_reexamid, string arg_newidea, ref string arg_msg);Int rslt = 1
  439. arg_newidea = Trim(arg_newidea)
  440. IF arg_reexamid <= 0 THEN
  441. rslt = 0
  442. arg_msg = "错误的复试通知单唯一码"
  443. GOTO ext
  444. END IF
  445. IF p_getinfo(arg_reexamid,arg_msg) = 0 THEN
  446. rslt = 0
  447. GOTO ext
  448. END IF
  449. IF flag = 0 THEN
  450. rslt = 0
  451. arg_msg = "非审核状态下不可用"
  452. GOTO ext
  453. END IF
  454. UPDATE u_reexam
  455. SET manageridea = ltrim(rtrim(manageridea))+' '+:arg_newidea
  456. Where u_reexam.reexamid = :arg_reexamid;
  457. IF sqlca.SQLCode <> 0 THEN
  458. ROLLBACK ;
  459. rslt = 0
  460. arg_msg = "因网络或其它原因导致添加副总/总经理意见操作失败"+"~n"+sqlca.SQLErrText
  461. GOTO ext
  462. END IF
  463. COMMIT;
  464. manageridea = manageridea+' '+arg_newidea
  465. ext:
  466. RETURN rslt
  467. end function
  468. public function integer add_result (long arg_reexamid, string arg_newidea, ref string arg_msg);Int rslt = 1
  469. arg_newidea = Trim(arg_newidea)
  470. IF arg_reexamid <= 0 THEN
  471. rslt = 0
  472. arg_msg = "错误的复试通知单唯一码"
  473. GOTO ext
  474. END IF
  475. IF p_getinfo(arg_reexamid,arg_msg) = 0 THEN
  476. rslt = 0
  477. GOTO ext
  478. END IF
  479. IF flag = 0 THEN
  480. rslt = 0
  481. arg_msg = "非审核状态下不可用"
  482. GOTO ext
  483. END IF
  484. UPDATE u_reexam
  485. SET u_reexam.result = ltrim(rtrim(u_reexam.result)) + ' ' + :arg_newidea
  486. Where u_reexam.reexamid = :arg_reexamid;
  487. IF sqlca.SQLCode <> 0 THEN
  488. ROLLBACK ;
  489. rslt = 0
  490. arg_msg = "因网络或其它原因导致添加复试情况操作失败"+"~n"+sqlca.SQLErrText
  491. GOTO ext
  492. END IF
  493. COMMIT;
  494. result = result+' '+arg_newidea
  495. ext:
  496. RETURN rslt
  497. end function
  498. on uo_reexam.create
  499. call super::create
  500. TriggerEvent( this, "constructor" )
  501. end on
  502. on uo_reexam.destroy
  503. TriggerEvent( this, "destructor" )
  504. call super::destroy
  505. end on