uo_rap_money_transfer.sru 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920
  1. $PBExportHeader$uo_rap_money_transfer.sru
  2. forward
  3. global type uo_rap_money_transfer from nonvisualobject
  4. end type
  5. type s_saleplanmx from structure within uo_rap_money_transfer
  6. end type
  7. end forward
  8. type s_saleplanmx from structure
  9. long mtrlid
  10. string mtrlcode
  11. long printid
  12. decimal { 10 } planqty
  13. string mxdscrp
  14. end type
  15. global type uo_rap_money_transfer from nonvisualobject
  16. end type
  17. global uo_rap_money_transfer uo_rap_money_transfer
  18. type variables
  19. Long uo_billid
  20. Int cwauditingflag = 0 //总账审核标记
  21. DateTime cwauditingdate //总账审核时间
  22. String cwauditingrep //总账审核操作员
  23. end variables
  24. forward prototypes
  25. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  26. public function integer updatebegin (long arg_billid, ref string arg_msg)
  27. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  28. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  29. public function integer p_getinfo (long arg_billid, ref s_rap_money_transfer arg_s_rap_money_transfer, ref string arg_msg)
  30. public function integer save (s_rap_money_transfer arg_s_transfer, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  31. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  32. public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  33. public function integer csecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  34. public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  35. public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  36. end prototypes
  37. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  38. s_rap_money_transfer arg_s_rap_money_transfer
  39. IF arg_billid <= 0 THEN
  40. rslt = 0
  41. ARG_MSG = '错误单据唯一码'
  42. GOTO ext
  43. END IF
  44. IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN
  45. rslt = 0
  46. GOTO ext
  47. END IF
  48. IF arg_s_rap_money_transfer.flag = 1 THEN
  49. rslt = 0
  50. ARG_MSG = '单据已经审核,不可以删除'
  51. GOTO ext
  52. END IF
  53. DELETE FROM u_rap_money_transfer Where billid = :arg_billid;
  54. IF sqlca.SQLCode <> 0 THEN
  55. rslt = 0
  56. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  57. GOTO ext
  58. END IF
  59. ext:
  60. IF rslt = 0 THEN
  61. ROLLBACK;
  62. ELSEIF rslt = 1 AND arg_ifcommit THEN
  63. COMMIT;
  64. END IF
  65. RETURN rslt
  66. end function
  67. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  68. s_rap_money_transfer arg_s_rap_money_transfer
  69. IF arg_billid <= 0 THEN
  70. rslt = 0
  71. ARG_MSG = '错误单据唯一码'
  72. GOTO ext
  73. END IF
  74. IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN
  75. rslt = 0
  76. GOTO ext
  77. END IF
  78. IF arg_s_rap_money_transfer.flag = 1 THEN
  79. rslt = 0
  80. ARG_MSG = '单据已经审核,不可以修改,要修改请先撤销审核'
  81. GOTO ext
  82. END IF
  83. ext:
  84. RETURN rslt
  85. end function
  86. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  87. Long it_mxbt
  88. uo_rapmoney uo_rap
  89. uo_rap = CREATE uo_rapmoney
  90. uo_rap.commit_transaction = sqlca
  91. s_rap_money_transfer arg_s_rap_money_transfer
  92. Long ll_rapmoneyid_out,ll_rapmoneyid_in,ll_native_out,ll_moneyid_in,ll_native_in
  93. string account_in,account_out
  94. IF arg_billid <= 0 THEN
  95. rslt = 0
  96. ARG_MSG = '错误单据唯一码'
  97. GOTO ext
  98. END IF
  99. IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN
  100. rslt = 0
  101. GOTO ext
  102. END IF
  103. IF arg_s_rap_money_transfer.flag = 1 THEN
  104. rslt = 0
  105. ARG_MSG = '单据已经审核,不可以再审'
  106. GOTO ext
  107. END IF
  108. long ll_moneyid_out
  109. SELECT moneyid INTO :ll_moneyid_out
  110. FROM u_accounts
  111. Where accountsid = :arg_s_rap_money_transfer.accountid_out;
  112. IF sqlca.SQLCode <> 0 THEN
  113. rslt = 0
  114. ARG_MSG = '查询转出帐号币种失败,'+sqlca.SQLErrText
  115. GOTO ext
  116. END IF
  117. SELECT native INTO :ll_native_out
  118. FROM cw_currency
  119. Where moneyid = :ll_moneyid_out;
  120. IF sqlca.SQLCode <> 0 THEN
  121. rslt = 0
  122. ARG_MSG = '查询转出帐号币种属性失败,'+sqlca.SQLErrText
  123. GOTO ext
  124. END IF
  125. SELECT moneyid INTO :ll_moneyid_in
  126. FROM u_accounts
  127. Where accountsid = :arg_s_rap_money_transfer.accountid_in;
  128. IF sqlca.SQLCode <> 0 THEN
  129. rslt = 0
  130. ARG_MSG = '查询转入帐号币种失败,'+sqlca.SQLErrText
  131. GOTO ext
  132. END IF
  133. SELECT native INTO :ll_native_in
  134. FROM cw_currency
  135. Where moneyid = :ll_moneyid_in;
  136. IF sqlca.SQLCode <> 0 THEN
  137. rslt = 0
  138. ARG_MSG = '查询转入帐号币种属性失败,'+sqlca.SQLErrText
  139. GOTO ext
  140. END IF
  141. SELECT accountsname INTO :account_in
  142. FROM u_accounts
  143. Where accountsid = :arg_s_rap_money_transfer.accountid_in;
  144. IF sqlca.SQLCode <> 0 THEN
  145. rslt = 0
  146. ARG_MSG = '查询转入帐号名称失败,'+sqlca.SQLErrText
  147. GOTO ext
  148. END IF
  149. SELECT accountsname INTO :account_out
  150. FROM u_accounts
  151. Where accountsid = :arg_s_rap_money_transfer.accountid_out;
  152. IF sqlca.SQLCode <> 0 THEN
  153. rslt = 0
  154. ARG_MSG = '查询转出帐号名称失败,'+sqlca.SQLErrText
  155. GOTO ext
  156. END IF
  157. //更新审核标记
  158. UPDATE u_rap_money_transfer
  159. SET permit_emp = :arg_opemp,
  160. permit_date = getdate(),
  161. flag = 1
  162. WHERE billid = :arg_billid
  163. AND flag = 0;
  164. IF sqlca.SQLCode <> 0 THEN
  165. rslt = 0
  166. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  167. GOTO ext
  168. END IF
  169. s_rap_money s_rap_out,s_rap_in
  170. //转出
  171. s_rap_out.accountsid = arg_s_rap_money_transfer.accountid_out
  172. s_rap_out.rapid = 0
  173. s_rap_out.takedate = arg_s_rap_money_transfer.checkdate
  174. s_rap_out.billcode = arg_s_rap_money_transfer.billcode // arg_s_rap_money_transfer.relcode
  175. s_rap_out.dscrp = '转帐单号:'+arg_s_rap_money_transfer.billcode+',转出:' + account_out + ',转入:' + account_in +',备注:'+arg_s_rap_money_transfer.dscrp
  176. s_rap_out.msttakeamt = 0
  177. s_rap_out.takeamt = arg_s_rap_money_transfer.transferamt
  178. s_rap_out.inrep = arg_s_rap_money_transfer.checkemp
  179. s_rap_out.banktypeid = arg_s_rap_money_transfer.banktypeid
  180. s_rap_out.opemp = arg_opemp
  181. s_rap_out.buildtype = 1
  182. s_rap_out.dcflag = 0
  183. s_rap_out.relid = arg_s_rap_money_transfer.billid
  184. s_rap_out.relcode = arg_s_rap_money_transfer.relcode
  185. //IF uo_rap.add_raprec(s_rap_out,ARG_MSG,FALSE) = 0 THEN
  186. // ARG_MSG = '增加(转出)出纳明细帐失败!~n' + ARG_MSG
  187. // rslt = 0
  188. // GOTO ext
  189. //END IF
  190. //scid 传-1进去 IF uo_rap.add_raprec(0,s_rap_out
  191. IF uo_rap.add_raprec(-1,s_rap_out.accountsid,s_rap_out.takedate,publ_operator,s_rap_out.dscrp,0,&
  192. s_rap_out.takeamt,s_rap_out.billcode,s_rap_out.buildtype,0,s_rap_out.relid,publ_operator,arg_msg,FALSE,s_rap_out.banktypeid,s_rap_out.relcode) = 0 THEN
  193. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  194. rslt = 0
  195. GOTO ext
  196. END IF
  197. ll_rapmoneyid_out = uo_rap.ref_rapid
  198. IF ll_rapmoneyid_out = 0 THEN
  199. ARG_MSG = '增加(转出)出纳明细帐失败!'
  200. rslt = 0
  201. GOTO ext
  202. END IF
  203. //转入
  204. s_rap_in.accountsid = arg_s_rap_money_transfer.accountid_in
  205. s_rap_in.rapid = 0
  206. s_rap_in.takedate = arg_s_rap_money_transfer.checkdate
  207. s_rap_in.billcode = arg_s_rap_money_transfer.billcode // arg_s_rap_money_transfer.relcode
  208. s_rap_in.dscrp = '转帐单号:'+arg_s_rap_money_transfer.billcode+',备注:'+arg_s_rap_money_transfer.dscrp
  209. //s_rap_in.msttakeamt = arg_s_rap_money_transfer.transferamt
  210. IF ll_native_out = 1 And ll_native_in = 0 THEN
  211. s_rap_in.msttakeamt = Round(arg_s_rap_money_transfer.transferamt/arg_s_rap_money_transfer.mrate,2)
  212. ELSE
  213. s_rap_in.msttakeamt = Round(arg_s_rap_money_transfer.transferamt * arg_s_rap_money_transfer.mrate,2)
  214. END IF
  215. s_rap_in.takeamt = 0
  216. s_rap_in.inrep = arg_s_rap_money_transfer.checkemp
  217. s_rap_in.banktypeid = arg_s_rap_money_transfer.banktypeid
  218. s_rap_in.opemp = arg_opemp
  219. s_rap_in.buildtype = 1
  220. s_rap_in.dcflag = 0
  221. s_rap_in.relid = arg_s_rap_money_transfer.billid
  222. s_rap_in.relcode = arg_s_rap_money_transfer.relcode
  223. //IF uo_rap.add_raprec(s_rap_in,ARG_MSG,FALSE) = 0 THEN
  224. // ARG_MSG = '增加(转入)出纳明细帐失败!~n' + ARG_MSG
  225. // rslt = 0
  226. // GOTO ext
  227. //END IF
  228. //scid 传-1进去IF uo_rap.add_raprec(0,s_rap_in
  229. IF uo_rap.add_raprec(-1,s_rap_in.accountsid,s_rap_in.takedate,publ_operator,s_rap_in.dscrp,s_rap_in.msttakeamt,&
  230. 0,s_rap_in.billcode,s_rap_in.buildtype,0,s_rap_in.relid,publ_operator,arg_msg,FALSE,s_rap_in.banktypeid,s_rap_in.relcode) = 0 THEN
  231. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  232. rslt = 0
  233. GOTO ext
  234. END IF
  235. ll_rapmoneyid_in = uo_rap.ref_rapid
  236. IF ll_rapmoneyid_in = 0 THEN
  237. ARG_MSG = '增加(转入)出纳明细帐失败!'
  238. rslt = 0
  239. GOTO ext
  240. END IF
  241. UPDATE u_rap_money_transfer
  242. SET rapmoneyid_in = :ll_rapmoneyid_in,
  243. rapmoneyid_out = :ll_rapmoneyid_out
  244. WHERE billid = :arg_billid;
  245. IF sqlca.SQLCode <> 0 THEN
  246. rslt = 0
  247. ARG_MSG = "因网络或其它原因导致更新单据转出转入相关资料失败操作失败"+"~n"+sqlca.SQLErrText
  248. GOTO ext
  249. END IF
  250. ext:
  251. IF rslt = 0 THEN
  252. ROLLBACK;
  253. ELSEIF rslt = 1 AND arg_ifcommit THEN
  254. COMMIT;
  255. END IF
  256. DESTROY uo_rap
  257. RETURN rslt
  258. end function
  259. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);Int rslt = 1
  260. s_rap_money_transfer arg_s_rap_money_transfer
  261. IF arg_billid <= 0 THEN
  262. rslt = 0
  263. arg_msg = '错误单据唯一码'
  264. GOTO ext
  265. END IF
  266. IF arg_newdescppart = '' THEN
  267. rslt = 0
  268. arg_msg = "要添加内容为空,操作取消"
  269. GOTO ext
  270. END IF
  271. IF p_getinfo(arg_billid,arg_s_rap_money_transfer,arg_msg) = 0 THEN
  272. rslt = 0
  273. GOTO ext
  274. END IF
  275. IF arg_s_rap_money_transfer.flag = 0 THEN
  276. rslt = 0
  277. arg_msg = '转帐单未审核,不可以增加备注'
  278. GOTO ext
  279. END IF
  280. UPDATE u_rap_money_transfer
  281. SET DSCRP = DSCRP+' '+:arg_newdescppart
  282. WHERE u_rap_money_transfer.billid = :arg_billid
  283. AND flag = 1;
  284. IF SQLCA.SQLCode <> 0 THEN
  285. rslt = 0
  286. arg_msg = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  287. GOTO ext
  288. END IF
  289. ext:
  290. IF rslt = 1 THEN
  291. COMMIT;
  292. ELSE
  293. ROLLBACK;
  294. END IF
  295. Return (rslt)
  296. end function
  297. public function integer p_getinfo (long arg_billid, ref s_rap_money_transfer arg_s_rap_money_transfer, ref string arg_msg);Int rslt = 1
  298. IF arg_billid <= 0 THEN
  299. rslt = 0
  300. ARG_MSG = '错误单据唯一码'
  301. GOTO ext
  302. END IF
  303. SELECT u_rap_money_transfer.flag,
  304. u_rap_money_transfer.relcode,
  305. u_rap_money_transfer.banktypeid,
  306. u_rap_money_transfer.accountid_out,
  307. u_rap_money_transfer.accountid_in,
  308. u_rap_money_transfer.transferamt,
  309. u_rap_money_transfer.checkemp,
  310. u_rap_money_transfer.dscrp,
  311. u_rap_money_transfer.rapmoneyid_out,
  312. u_rap_money_transfer.rapmoneyid_in,
  313. u_rap_money_transfer.billcode,
  314. u_rap_money_transfer.checkdate,
  315. u_rap_money_transfer.secflag,
  316. u_rap_money_transfer.secemp,
  317. u_rap_money_transfer.secdate,
  318. u_rap_money_transfer.cwauditingflag,
  319. u_rap_money_transfer.cwauditingrep,
  320. u_rap_money_transfer.cwauditingdate,
  321. u_rap_money_transfer.mrate
  322. INTO :arg_s_rap_money_transfer.flag,
  323. :arg_s_rap_money_transfer.relcode,
  324. :arg_s_rap_money_transfer.banktypeid,
  325. :arg_s_rap_money_transfer.accountid_out,
  326. :arg_s_rap_money_transfer.accountid_in,
  327. :arg_s_rap_money_transfer.transferamt,
  328. :arg_s_rap_money_transfer.checkemp,
  329. :arg_s_rap_money_transfer.dscrp,
  330. :arg_s_rap_money_transfer.rapmoneyid_out,
  331. :arg_s_rap_money_transfer.rapmoneyid_in,
  332. :arg_s_rap_money_transfer.billcode,
  333. :arg_s_rap_money_transfer.checkdate,
  334. :arg_s_rap_money_transfer.secflag,
  335. :arg_s_rap_money_transfer.secemp,
  336. :arg_s_rap_money_transfer.secdate,
  337. :cwauditingflag,
  338. :cwauditingrep,
  339. :cwauditingdate,
  340. :arg_s_rap_money_transfer.mrate
  341. FROM u_rap_money_transfer
  342. Where u_rap_money_transfer.billid = :arg_billid;
  343. IF sqlca.SQLCode <> 0 THEN
  344. rslt = 0
  345. ARG_MSG = '查询单据内容失败(错误单据唯一码)'
  346. GOTO ext
  347. END IF
  348. ext:
  349. RETURN rslt
  350. end function
  351. public function integer save (s_rap_money_transfer arg_s_transfer, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
  352. DateTime server_dt
  353. Long ll_billid
  354. String ls_billcode
  355. Long cnt
  356. IF IsNull(arg_s_transfer.billid) THEN arg_s_transfer.billid = 0
  357. IF IsNull(arg_s_transfer.relcode) THEN arg_s_transfer.relcode = ''
  358. IF IsNull(arg_s_transfer.banktypeid) THEN arg_s_transfer.banktypeid = 0
  359. IF IsNull(arg_s_transfer.accountid_out) THEN arg_s_transfer.accountid_out = 0
  360. IF IsNull(arg_s_transfer.accountid_in) THEN arg_s_transfer.accountid_in = 0
  361. IF IsNull(arg_s_transfer.transferamt) THEN arg_s_transfer.transferamt = 0
  362. IF IsNull(arg_s_transfer.dscrp) THEN arg_s_transfer.dscrp = ''
  363. IF IsNull(arg_s_transfer.checkemp) THEN arg_s_transfer.checkemp = ''
  364. IF IsNull(arg_s_transfer.mrate) THEN arg_s_transfer.mrate =1.00
  365. cnt = 0
  366. SELECT count(*) INTO :cnt
  367. FROM u_accounts
  368. Where accountsid = :arg_s_transfer.accountid_out;
  369. IF sqlca.SQLCode <> 0 THEN
  370. arg_msg = '查询转出帐号资料失败,请检查'
  371. rslt = 0
  372. GOTO ext
  373. END IF
  374. IF cnt <> 1 THEN
  375. arg_msg = '转出帐号资料不存在或重复,请检查'
  376. rslt = 0
  377. GOTO ext
  378. END IF
  379. cnt = 0
  380. SELECT count(*) INTO :cnt
  381. FROM u_accounts
  382. Where accountsid = :arg_s_transfer.accountid_in;
  383. IF sqlca.SQLCode <> 0 THEN
  384. arg_msg = '查询转入帐号资料失败,请检查'
  385. rslt = 0
  386. GOTO ext
  387. END IF
  388. IF cnt <> 1 THEN
  389. arg_msg = '转入帐号资料不存在或重复,请检查'
  390. rslt = 0
  391. GOTO ext
  392. END IF
  393. cnt = 0
  394. SELECT count(*) INTO :cnt
  395. FROM cw_banktype
  396. Where banktypeid = :arg_s_transfer.banktypeid;
  397. IF sqlca.SQLCode <> 0 THEN
  398. arg_msg = '查询结算方式资料失败,请检查'
  399. rslt = 0
  400. GOTO ext
  401. END IF
  402. IF cnt <> 1 THEN
  403. arg_msg = '结算方式资料不存在或重复,请检查'
  404. rslt = 0
  405. GOTO ext
  406. END IF
  407. IF arg_s_transfer.checkemp = '' THEN
  408. arg_msg = '请输入经手人'
  409. rslt = 0
  410. GOTO ext
  411. END IF
  412. IF arg_s_transfer.transferamt <= 0 THEN
  413. arg_msg = '请输入正确的转帐金额'
  414. rslt = 0
  415. GOTO ext
  416. END IF
  417. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  418. IF sqlca.SQLCode <> 0 THEN
  419. rslt = 0
  420. arg_msg = "查询操作失败,日期 "
  421. GOTO ext
  422. END IF
  423. IF arg_s_transfer.billid = 0 THEN
  424. ll_billid = f_sys_scidentity(0,"u_rap_money_transfer","billid",arg_msg,TRUE,sqlca)
  425. IF ll_billid <= 0 THEN
  426. rslt = 0
  427. GOTO ext
  428. END IF
  429. ls_billcode = getid(0,'TF',Date(server_dt),TRUE,sqlca)
  430. IF ls_billcode = "err" THEN
  431. rslt = 0
  432. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  433. GOTO ext
  434. END IF
  435. INSERT INTO u_rap_money_transfer
  436. (billid,
  437. billcode,
  438. checkdate,
  439. opdate,
  440. opemp,
  441. relcode,
  442. transferamt,
  443. banktypeid,
  444. accountid_out,
  445. checkemp,
  446. accountid_in,
  447. dscrp,mrate)
  448. VALUES (
  449. :ll_billid,
  450. :ls_billcode,
  451. :arg_s_transfer.checkdate,
  452. getdate(),
  453. :arg_opemp,
  454. :arg_s_transfer.relcode,
  455. :arg_s_transfer.transferamt,
  456. :arg_s_transfer.banktypeid,
  457. :arg_s_transfer.accountid_out,
  458. :arg_s_transfer.checkemp,
  459. :arg_s_transfer.accountid_in,
  460. :arg_s_transfer.dscrp,
  461. :arg_s_transfer.mrate) ;
  462. IF sqlca.SQLCode <> 0 THEN
  463. rslt = 0
  464. IF Pos(Lower(sqlca.SQLErrText),'PK_u_rap_money_transfer') > 0 THEN
  465. arg_msg = '建立转帐单操作失败,关键字单据ID重复'
  466. ELSEIF Pos(Lower(sqlca.SQLErrText),'IX_u_rap_money_transfer') > 0 THEN
  467. arg_msg = '建立转帐单操作失败,单据编号重复'
  468. ELSE
  469. arg_msg = "因网络或其它原因导致建立转帐单操作失败"+"~n"+sqlca.SQLErrText
  470. END IF
  471. GOTO ext
  472. END IF
  473. uo_billid = ll_billid
  474. ELSE
  475. UPDATE u_rap_money_transfer
  476. SET checkdate = :arg_s_transfer.checkdate,
  477. moddate = getdate(),
  478. modemp = :arg_opemp,
  479. relcode = :arg_s_transfer.relcode,
  480. accountid_in = :arg_s_transfer.accountid_in,
  481. transferamt = :arg_s_transfer.transferamt,
  482. banktypeid = :arg_s_transfer.banktypeid,
  483. checkemp = :arg_s_transfer.checkemp,
  484. dscrp = :arg_s_transfer.dscrp,
  485. accountid_out = :arg_s_transfer.accountid_out,
  486. mrate = :arg_s_transfer.mrate
  487. WHERE billid = :arg_s_transfer.billid
  488. AND flag = 0;
  489. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  490. rslt = 0
  491. arg_msg = "因网络或其它原因导致更新转帐单操作失败"+"~n"+sqlca.SQLErrText
  492. GOTO ext
  493. END IF
  494. uo_billid = arg_s_transfer.billid
  495. END IF
  496. ext:
  497. IF rslt = 0 THEN
  498. ROLLBACK;
  499. ELSEIF arg_ifcommit AND rslt = 1 THEN
  500. COMMIT;
  501. END IF
  502. RETURN rslt
  503. end function
  504. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  505. DateTime null_dt
  506. uo_rapmoney uo_rap
  507. uo_rap = CREATE uo_rapmoney
  508. uo_rap.commit_transaction = sqlca
  509. s_rap_money_transfer arg_s_rap_money_transfer
  510. SetNull(null_dt)
  511. IF arg_billid <= 0 THEN
  512. rslt = 0
  513. arg_msg = '错误单据唯一码'
  514. GOTO ext
  515. END IF
  516. IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN
  517. rslt = 0
  518. GOTO ext
  519. END IF
  520. IF arg_s_rap_money_transfer.flag = 0 THEN
  521. rslt = 0
  522. arg_msg = '单据未审核,不可以撤审'
  523. GOTO ext
  524. END IF
  525. UPDATE u_rap_money_transfer
  526. SET flag = 0,
  527. permit_emp = '',
  528. permit_date = :null_dt
  529. WHERE billid = :arg_billid
  530. AND flag = 1;
  531. IF sqlca.SQLCode <> 0 THEN
  532. rslt = 0
  533. arg_msg = "因网络或其它原因导致单据撤消审核操作失败"+"~n"+sqlca.SQLErrText
  534. GOTO ext
  535. END IF
  536. //转出
  537. IF uo_rap.del_raprec(arg_s_rap_money_transfer.rapmoneyid_out,arg_s_rap_money_transfer.accountid_out,1,arg_msg,FALSE) = 0 THEN
  538. arg_msg = '删除(转出)出纳明细帐失败!~n' + arg_msg
  539. rslt = 0
  540. GOTO ext
  541. END IF
  542. //转入
  543. IF uo_rap.del_raprec(arg_s_rap_money_transfer.rapmoneyid_in,arg_s_rap_money_transfer.accountid_in,1,arg_msg,FALSE) = 0 THEN
  544. arg_msg = '删除(转入)出纳明细帐失败!~n' + arg_msg
  545. rslt = 0
  546. GOTO ext
  547. END IF
  548. ext:
  549. IF rslt = 0 THEN
  550. ROLLBACK;
  551. ELSEIF rslt = 1 AND arg_ifcommit THEN
  552. COMMIT;
  553. END IF
  554. destroy uo_rap
  555. RETURN rslt
  556. end function
  557. public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  558. s_rap_money_transfer arg_s_rap_money_transfer
  559. Long ll_rapmoneyid_out,ll_rapmoneyid_in
  560. IF arg_billid <= 0 THEN
  561. rslt = 0
  562. ARG_MSG = '错误单据唯一码'
  563. GOTO ext
  564. END IF
  565. IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN
  566. rslt = 0
  567. GOTO ext
  568. END IF
  569. IF arg_s_rap_money_transfer.secflag = 1 THEN
  570. rslt = 0
  571. ARG_MSG = '单据已经审核,不可以再审'
  572. GOTO ext
  573. END IF
  574. //更新审核标记
  575. UPDATE u_rap_money_transfer
  576. SET secemp = :arg_opemp,
  577. secdate = getdate(),
  578. secflag = 1
  579. WHERE billid = :arg_billid
  580. AND secflag = 0 and flag = 1;
  581. IF sqlca.SQLCode <> 0 THEN
  582. rslt = 0
  583. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  584. GOTO ext
  585. END IF
  586. ext:
  587. IF rslt = 0 THEN
  588. ROLLBACK;
  589. ELSEIF rslt = 1 AND arg_ifcommit THEN
  590. COMMIT;
  591. END IF
  592. RETURN rslt
  593. end function
  594. public function integer csecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  595. DateTime null_dt
  596. s_rap_money_transfer arg_s_rap_money_transfer
  597. SetNull(null_dt)
  598. IF arg_billid <= 0 THEN
  599. rslt = 0
  600. arg_msg = '错误单据唯一码'
  601. GOTO ext
  602. END IF
  603. IF p_getinfo(arg_billid,arg_s_rap_money_transfer,arg_msg) = 0 THEN
  604. rslt = 0
  605. GOTO ext
  606. END IF
  607. IF arg_s_rap_money_transfer.secflag = 0 THEN
  608. rslt = 0
  609. arg_msg = '单据未审核,不可以撤审'
  610. GOTO ext
  611. END IF
  612. UPDATE u_rap_money_transfer
  613. SET secflag = 0,
  614. secemp = '',
  615. secdate = :null_dt
  616. WHERE billid = :arg_billid
  617. AND secflag = 1 AND flag = 1;
  618. IF sqlca.SQLCode <> 0 THEN
  619. rslt = 0
  620. arg_msg = "因网络或其它原因导致单据撤消审核操作失败"+"~n"+sqlca.SQLErrText
  621. GOTO ext
  622. END IF
  623. ext:
  624. IF rslt = 0 THEN
  625. ROLLBACK;
  626. ELSEIF rslt = 1 AND arg_ifcommit THEN
  627. COMMIT;
  628. END IF
  629. RETURN rslt
  630. end function
  631. public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg);s_rap_money_transfer ss_rap_money_transfer
  632. Int rslt = 1,cnt = 0
  633. IF arg_billid = 0 THEN
  634. rslt = 0
  635. arg_msg = "没有审核对象"
  636. GOTO ext
  637. END IF
  638. IF p_getinfo(arg_billid,ss_rap_money_transfer,arg_msg) = 0 THEN
  639. rslt = 0
  640. GOTO ext
  641. END IF
  642. IF ss_rap_money_transfer.secflag = 0 THEN
  643. rslt = 0
  644. arg_msg = "单据没有终审"
  645. GOTO ext
  646. END IF
  647. IF cwauditingflag = 1 THEN
  648. rslt = 0
  649. arg_msg = "单据已经总账审核"
  650. GOTO ext
  651. END IF
  652. UPDATE u_rap_money_transfer
  653. SET cwauditingflag = 1,
  654. cwauditingdate = getdate(),
  655. cwauditingrep = :publ_operator
  656. Where ( u_rap_money_transfer.billid = :arg_billid ) Using sqlca;
  657. IF sqlca.SQLCode <> 0 THEN
  658. rslt = 0
  659. arg_msg = "因网络或其它原因导致总账审核操作失败"+"~n"+sqlca.SQLErrText
  660. ROLLBACK Using sqlca;
  661. GOTO ext
  662. END IF
  663. ext:
  664. IF arg_ifcommit And rslt = 1 THEN
  665. COMMIT Using sqlca;
  666. END IF
  667. Return (rslt)
  668. end function
  669. public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg);s_rap_money_transfer ss_rap_money_transfer
  670. Int rslt = 1,cnt = 0
  671. IF arg_billid = 0 THEN
  672. rslt = 0
  673. arg_msg = "没有审核对象"
  674. GOTO ext
  675. END IF
  676. IF p_getinfo(arg_billid,ss_rap_money_transfer,arg_msg) = 0 THEN
  677. rslt = 0
  678. GOTO ext
  679. END IF
  680. IF ss_rap_money_transfer.secflag = 0 THEN
  681. rslt = 0
  682. arg_msg = "单据没有终审"
  683. GOTO ext
  684. END IF
  685. IF cwauditingflag = 0 THEN
  686. rslt = 0
  687. arg_msg = "单据没有总账审核"
  688. GOTO ext
  689. END IF
  690. IF cwauditingflag = 0 THEN
  691. rslt = 0
  692. arg_msg = "单据没有总账审核"
  693. GOTO ext
  694. END IF
  695. UPDATE u_rap_money_transfer
  696. SET cwauditingflag = 0,
  697. cwauditingdate =null,
  698. cwauditingrep = ''
  699. WHERE ( u_rap_money_transfer.billid = :arg_billid ) Using sqlca;
  700. IF sqlca.SQLCode <> 0 THEN
  701. rslt = 0
  702. arg_msg = "因网络或其它原因导致总账撤审操作失败"+"~n"+sqlca.SQLErrText
  703. ROLLBACK Using sqlca;
  704. GOTO ext
  705. END IF
  706. ext:
  707. IF arg_ifcommit And rslt = 1 THEN
  708. COMMIT Using sqlca;
  709. END IF
  710. Return (rslt)
  711. end function
  712. on uo_rap_money_transfer.create
  713. call super::create
  714. TriggerEvent( this, "constructor" )
  715. end on
  716. on uo_rap_money_transfer.destroy
  717. TriggerEvent( this, "destructor" )
  718. call super::destroy
  719. end on
  720. global type uo_incase from nonvisualobject
  721. end type