uo_develop.sru 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. $PBExportHeader$uo_develop.sru
  2. forward
  3. global type uo_develop from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_develop from nonvisualobject
  7. end type
  8. global uo_develop uo_develop
  9. type variables
  10. Long uo_billid
  11. String uo_billcode
  12. end variables
  13. forward prototypes
  14. public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg)
  15. public function integer updatebegin (long arg_billid, ref string arg_msg)
  16. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  18. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer save (s_develop arg_develop, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  20. public function integer audit2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  21. public function integer audit3 (long arg_billid, string arg_opemp, datetime arg_finishdate, ref string arg_msg, boolean arg_ifcommit)
  22. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  23. public function integer caudit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  24. public function integer caudit3 (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  25. end prototypes
  26. public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
  27. SELECT flag
  28. INTO :arg_flag
  29. FROM u_develop
  30. WHERE billid = :arg_billid;
  31. IF sqlca.SQLCode <> 0 THEN
  32. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  33. rslt = 0
  34. GOTO ext
  35. END IF
  36. ext:
  37. RETURN rslt
  38. end function
  39. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  40. Int li_flag
  41. Long cnt
  42. IF arg_billid <= 0 THEN
  43. rslt = 0
  44. arg_msg = '错误单据唯一码'
  45. GOTO ext
  46. END IF
  47. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  48. rslt = 0
  49. GOTO ext
  50. END IF
  51. IF li_flag <> 0 and li_flag <> 1 THEN
  52. rslt = 0
  53. arg_msg = '单据不是在待审核或待二审状态,不可以修改'
  54. GOTO ext
  55. END IF
  56. ext:
  57. RETURN rslt
  58. end function
  59. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  60. Int li_flag
  61. IF arg_billid <= 0 THEN
  62. rslt = 0
  63. arg_msg = '错误单据唯一码'
  64. GOTO ext
  65. END IF
  66. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  67. rslt = 0
  68. GOTO ext
  69. END IF
  70. IF li_flag <> 0 THEN
  71. rslt = 0
  72. arg_msg = '单据不是在待审状态,不可以删除'
  73. GOTO ext
  74. END IF
  75. DELETE FROM u_develop
  76. WHERE billid = :arg_billid;
  77. IF sqlca.SQLCode <> 0 THEN
  78. rslt = 0
  79. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  80. GOTO ext
  81. END IF
  82. ext:
  83. IF rslt = 0 THEN
  84. ROLLBACK;
  85. ELSEIF rslt = 1 AND arg_ifcommit THEN
  86. COMMIT;
  87. END IF
  88. RETURN rslt
  89. end function
  90. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  91. Int li_flag
  92. IF arg_newdescppart = '' THEN
  93. rslt = 0
  94. arG_MSG = "要添加内容为空,操作取消"
  95. GOTO ext
  96. END IF
  97. IF p_getflag(arg_billid,li_flag,arG_MSG) = 0 THEN
  98. rslt = 0
  99. GOTO ext
  100. END IF
  101. IF li_flag = 0 THEN
  102. rslt = 0
  103. arG_MSG = "待审核状态下不可用"
  104. GOTO ext
  105. END IF
  106. UPDATE u_develop
  107. SET DSCRP = DSCRP+' '+:arg_newdescppart
  108. WHERE u_develop.billid = :arg_billid;
  109. IF SQLCA.SQLCode <> 0 THEN
  110. rslt = 0
  111. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  112. GOTO ext
  113. END IF
  114. ext:
  115. IF rslt = 0 THEN
  116. ROLLBACK;
  117. ELSEIF rslt = 1 AND arg_ifcommit THEN
  118. COMMIT;
  119. END IF
  120. Return (rslt)
  121. end function
  122. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  123. Int li_flag
  124. IF arg_billid <= 0 THEN
  125. rslt = 0
  126. ARG_MSG = '错误单据唯一码'
  127. GOTO ext
  128. END IF
  129. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  130. rslt = 0
  131. GOTO ext
  132. END IF
  133. IF li_flag <> 0 THEN
  134. rslt = 0
  135. ARG_MSG = '单据不是在待初审状态,不可以执行初审'
  136. GOTO ext
  137. END IF
  138. //更新审核标记
  139. UPDATE u_develop
  140. SET auditemp = :arg_opemp,
  141. auditdate = getdate(),
  142. flag = 1
  143. WHERE billid = :arg_billid
  144. AND flag = 0;
  145. IF sqlca.SQLCode <> 0 THEN
  146. rslt = 0
  147. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  148. GOTO ext
  149. ELSEIF sqlca.SQLNRows = 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 save (s_develop arg_develop, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  163. Long cnt = 0
  164. DateTime server_dt
  165. Long ll_billid
  166. String ls_sccode,ls_billcode
  167. IF IsNull(arg_develop.scid) THEN arg_develop.scid = 0
  168. IF IsNull(arg_develop.billid) THEN arg_develop.billid = 0
  169. IF IsNull(arg_develop.billemp) THEN arg_develop.billemp = ''
  170. IF IsNull(arg_develop.mtrlname) THEN arg_develop.mtrlname = ''
  171. IF IsNull(arg_develop.dscrp) THEN arg_develop.dscrp = ''
  172. IF IsNull(arg_develop.dutyemp) THEN arg_develop.dutyemp = ''
  173. IF IsNull(arg_develop.developtype) THEN arg_develop.developtype = ''
  174. //IF arg_develop.billemp = '' THEN
  175. // arg_msg = '请输入开发员'
  176. // rslt = 0
  177. // GOTO ext
  178. //END IF
  179. //
  180. IF arg_develop.mtrlname = '' THEN
  181. arg_msg = '请输入产品名称'
  182. rslt = 0
  183. GOTO ext
  184. END IF
  185. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  186. IF sqlca.SQLCode <> 0 THEN
  187. rslt = 0
  188. arg_msg = "查询操作失败,日期 "
  189. GOTO ext
  190. END IF
  191. IF arg_develop.billid = 0 THEN
  192. ll_billid = f_sys_scidentity(0,"u_develop","billid",arg_msg,TRUE,id_sqlca)
  193. IF ll_billid <= 0 THEN
  194. rslt = 0
  195. GOTO ext
  196. END IF
  197. IF f_get_sccode(arg_develop.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
  198. rslt = 0
  199. GOTO ext
  200. END IF
  201. ls_billcode = getid(arg_develop.scid,ls_sccode + 'DE',Date(server_dt),FALSE,sqlca)
  202. IF ls_billcode = "err" THEN
  203. rslt = 0
  204. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  205. GOTO ext
  206. END IF
  207. INSERT INTO u_develop
  208. (scid,
  209. billid,
  210. billcode,
  211. billdate,
  212. billemp,
  213. opdate,
  214. opemp,
  215. dscrp,
  216. mtrlname,
  217. requiredate,
  218. dutyemp,
  219. developtype)
  220. VALUES (
  221. :arg_develop.scid,
  222. :ll_billid,
  223. :ls_billcode,
  224. :arg_develop.billdate,
  225. :arg_develop.billemp,
  226. getdate(),
  227. :arg_opemp,
  228. :arg_develop.dscrp,
  229. :arg_develop.mtrlname,
  230. :arg_develop.requiredate,
  231. :arg_develop.dutyemp,
  232. :arg_develop.developtype) ;
  233. IF sqlca.SQLCode <> 0 THEN
  234. rslt = 0
  235. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  236. GOTO ext
  237. END IF
  238. uo_billid = ll_billid
  239. uo_billcode = ls_billcode
  240. ELSE
  241. UPDATE u_develop
  242. SET
  243. billdate = :arg_develop.billdate,
  244. billemp = :arg_develop.billemp,
  245. moddate = getdate(),
  246. modemp = :arg_opemp,
  247. mtrlname = :arg_develop.mtrlname,
  248. dscrp = :arg_develop.dscrp,
  249. requiredate = :arg_develop.requiredate,
  250. dutyemp = :arg_develop.dutyemp,
  251. developtype = :arg_develop.developtype
  252. WHERE billid = :arg_develop.billid
  253. AND (flag = 0 or flag = 1);
  254. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  255. rslt = 0
  256. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  257. GOTO ext
  258. END IF
  259. uo_billid = arg_develop.billid
  260. END IF
  261. ext:
  262. IF rslt = 0 THEN
  263. ROLLBACK;
  264. ELSEIF arg_ifcommit AND rslt = 1 THEN
  265. COMMIT;
  266. END IF
  267. RETURN rslt
  268. end function
  269. public function integer audit2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  270. Int li_flag
  271. string ls_billemp
  272. IF arg_billid <= 0 THEN
  273. rslt = 0
  274. ARG_MSG = '错误单据唯一码'
  275. GOTO ext
  276. END IF
  277. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  278. rslt = 0
  279. GOTO ext
  280. END IF
  281. IF li_flag <> 1 THEN
  282. rslt = 0
  283. ARG_MSG = '单据不是在待二审状态,不能执行二审操作'
  284. GOTO ext
  285. END IF
  286. SELECT billemp INTO :ls_billemp
  287. FROM u_develop
  288. Where billid = :arg_billid;
  289. IF sqlca.SQLCode <> 0 THEN
  290. rslt = 0
  291. ARG_MSG = '查询单据开发员失败'+sqlca.SQLErrText
  292. GOTO ext
  293. END IF
  294. IF Trim(ls_billemp) = '' THEN
  295. rslt = 0
  296. ARG_MSG = '请输入开发员再进行二审'
  297. GOTO ext
  298. END IF
  299. //更新审核标记
  300. UPDATE u_develop
  301. SET auditemp2 = :arg_opemp,
  302. auditdate2 = getdate(),
  303. flag = 2
  304. WHERE billid = :arg_billid
  305. AND flag = 1;
  306. IF sqlca.SQLCode <> 0 THEN
  307. rslt = 0
  308. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  309. GOTO ext
  310. ELSEIF sqlca.SQLNRows = 0 THEN
  311. rslt = 0
  312. ARG_MSG = "单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText
  313. GOTO ext
  314. END IF
  315. ext:
  316. IF rslt = 0 THEN
  317. ROLLBACK;
  318. ELSEIF rslt = 1 AND arg_ifcommit THEN
  319. COMMIT;
  320. END IF
  321. RETURN rslt
  322. end function
  323. public function integer audit3 (long arg_billid, string arg_opemp, datetime arg_finishdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  324. Int li_flag
  325. IF arg_billid <= 0 THEN
  326. rslt = 0
  327. ARG_MSG = '错误单据唯一码'
  328. GOTO ext
  329. END IF
  330. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  331. rslt = 0
  332. GOTO ext
  333. END IF
  334. IF li_flag <> 2 THEN
  335. rslt = 0
  336. ARG_MSG = '单据不是在待终审状态,不能执行终审操作'
  337. GOTO ext
  338. END IF
  339. //更新审核标记
  340. UPDATE u_develop
  341. SET auditemp3 = :arg_opemp,
  342. auditdate3 = getdate(),
  343. flag = 3,
  344. finishdate = :arg_finishdate
  345. WHERE billid = :arg_billid
  346. AND flag = 2;
  347. IF sqlca.SQLCode <> 0 THEN
  348. rslt = 0
  349. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  350. GOTO ext
  351. ELSEIF sqlca.SQLNRows = 0 THEN
  352. rslt = 0
  353. ARG_MSG = "单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText
  354. GOTO ext
  355. END IF
  356. ext:
  357. IF rslt = 0 THEN
  358. ROLLBACK;
  359. ELSEIF rslt = 1 AND arg_ifcommit THEN
  360. COMMIT;
  361. END IF
  362. RETURN rslt
  363. end function
  364. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  365. Int li_flag
  366. DateTime null_dt
  367. SetNull(null_dt)
  368. IF arg_billid <= 0 THEN
  369. rslt = 0
  370. ARG_MSG = '错误单据唯一码'
  371. GOTO ext
  372. END IF
  373. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  374. rslt = 0
  375. GOTO ext
  376. END IF
  377. IF li_flag <> 1 THEN
  378. rslt = 0
  379. ARG_MSG = '单据不是在初审状态,不能撤销初审'
  380. GOTO ext
  381. END IF
  382. //更新审核标记
  383. UPDATE u_develop
  384. SET auditemp = '',
  385. auditdate = :null_dt,
  386. flag = 0
  387. WHERE billid = :arg_billid
  388. AND flag = 1;
  389. IF sqlca.SQLCode <> 0 THEN
  390. rslt = 0
  391. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  392. GOTO ext
  393. END IF
  394. ext:
  395. IF rslt = 0 THEN
  396. ROLLBACK;
  397. ELSEIF rslt = 1 AND arg_ifcommit THEN
  398. COMMIT;
  399. END IF
  400. RETURN rslt
  401. end function
  402. public function integer caudit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  403. Int li_flag
  404. DateTime null_dt
  405. SetNull(null_dt)
  406. IF arg_billid <= 0 THEN
  407. rslt = 0
  408. ARG_MSG = '错误单据唯一码'
  409. GOTO ext
  410. END IF
  411. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  412. rslt = 0
  413. GOTO ext
  414. END IF
  415. IF li_flag <> 2 THEN
  416. rslt = 0
  417. ARG_MSG = '单据不是在二审状态,不能撤销二审'
  418. GOTO ext
  419. END IF
  420. //更新审核标记
  421. UPDATE u_develop
  422. SET auditemp2 = '',
  423. auditdate2 = :null_dt,
  424. flag = 1
  425. WHERE billid = :arg_billid
  426. AND flag = 2;
  427. IF sqlca.SQLCode <> 0 THEN
  428. rslt = 0
  429. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  430. GOTO ext
  431. END IF
  432. ext:
  433. IF rslt = 0 THEN
  434. ROLLBACK;
  435. ELSEIF rslt = 1 AND arg_ifcommit THEN
  436. COMMIT;
  437. END IF
  438. RETURN rslt
  439. end function
  440. public function integer caudit3 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  441. Int li_flag
  442. DateTime null_dt
  443. SetNull(null_dt)
  444. IF arg_billid <= 0 THEN
  445. rslt = 0
  446. ARG_MSG = '错误单据唯一码'
  447. GOTO ext
  448. END IF
  449. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  450. rslt = 0
  451. GOTO ext
  452. END IF
  453. IF li_flag <> 3 THEN
  454. rslt = 0
  455. ARG_MSG = '单据不是在终审状态,不能撤销终审'
  456. GOTO ext
  457. END IF
  458. //更新审核标记
  459. UPDATE u_develop
  460. SET auditemp3 = '',
  461. auditdate3 = :null_dt,
  462. flag = 2,
  463. finishdate = :null_dt
  464. WHERE billid = :arg_billid
  465. AND flag = 3;
  466. IF sqlca.SQLCode <> 0 THEN
  467. rslt = 0
  468. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  469. GOTO ext
  470. END IF
  471. ext:
  472. IF rslt = 0 THEN
  473. ROLLBACK;
  474. ELSEIF rslt = 1 AND arg_ifcommit THEN
  475. COMMIT;
  476. END IF
  477. RETURN rslt
  478. end function
  479. on uo_develop.create
  480. call super::create
  481. TriggerEvent( this, "constructor" )
  482. end on
  483. on uo_develop.destroy
  484. TriggerEvent( this, "destructor" )
  485. call super::destroy
  486. end on