uo_iteminput.sru 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. $PBExportHeader$uo_iteminput.sru
  2. forward
  3. global type uo_iteminput from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_iteminput from nonvisualobject
  7. end type
  8. global uo_iteminput uo_iteminput
  9. type variables
  10. long ref_dateint = 0
  11. boolean ib_CreateRapmoneyid = true //收入支出帐 与 出纳帐分离,目前只有部分单据使用; 默认true,不分离;设false,分离
  12. //过度选项,以后要完全分离
  13. //已使用的单据:其他收入支出单
  14. end variables
  15. forward prototypes
  16. public function integer del_iteminput (long arg_itemid, long arg_dateint, long arg_ifauto, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer mod_iteminput (long arg_itemid, long arg_dateint, long arg_rapmoneyid, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, integer arg_banktypeid, ref string arg_msg, boolean arg_ifcommit, string arg_billcode, string arg_relcode)
  18. public function integer add_iteminput (s_iteminput arg_s_mx, ref string arg_msg, boolean arg_ifcommit)
  19. protected function integer add_iteminput (long arg_scid, long arg_itemid, long arg_dateint, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, ref string arg_msg, boolean arg_ifcommit, long arg_banktypeid, integer arg_buildtype, string arg_billcode, long arg_moneyid, string arg_relcode)
  20. end prototypes
  21. public function integer del_iteminput (long arg_itemid, long arg_dateint, long arg_ifauto, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ls_itemflag,li_buildtype
  22. Decimal ls_outamt
  23. Long ls_accountsid,ls_rapmoneyid
  24. Long cnt = 0
  25. uo_rapmoney uo_money
  26. uo_money = Create uo_rapmoney
  27. SELECT itemflag
  28. INTO :ls_itemflag
  29. FROM u_itemdef
  30. Where u_itemdef.itemid = :arg_itemid;
  31. IF sqlca.SQLCode <> 0 THEN
  32. arg_msg = '找不到当前的收支项目!'
  33. rslt = 0
  34. GOTO ext
  35. END IF
  36. SELECT outamt,accountsid,rapmoneyid,buildtype
  37. INTO :ls_outamt,:ls_accountsid,:ls_rapmoneyid,:li_buildtype
  38. FROM u_iteminput
  39. Where dateint = :arg_dateint;
  40. IF sqlca.SQLCode <> 0 THEN
  41. arg_msg = '查询收支明细失败>'+sqlca.SQLErrText
  42. rslt = 0
  43. GOTO ext
  44. END IF
  45. IF arg_ifauto = 0 THEN
  46. IF li_buildtype = 1 THEN
  47. arg_msg = '自动建立的收支帐不能删除'
  48. rslt = 0
  49. GOTO ext
  50. END IF
  51. END IF
  52. IF ib_CreateRapmoneyid THEN
  53. cnt = 0
  54. SELECT count(*)
  55. INTO :cnt
  56. FROM u_accounts
  57. Where u_accounts.accountsid = :ls_accountsid;
  58. IF sqlca.SQLCode <> 0 THEN
  59. arg_msg = '找不到当前的出纳帐号!'
  60. rslt = 0
  61. GOTO ext
  62. END IF
  63. IF cnt <> 1 THEN
  64. arg_msg = '当前的出纳帐号重复或不存在!'
  65. rslt = 0
  66. GOTO ext
  67. END IF
  68. // Decimal arg_msttakeamt,arg_takeamt
  69. // IF ls_itemflag = 1 THEN
  70. // arg_msttakeamt = ls_outamt
  71. // arg_takeamt = 0
  72. // ELSE
  73. // arg_msttakeamt = 0
  74. // arg_takeamt = ls_outamt
  75. // END IF
  76. uo_money.commit_transaction = sqlca
  77. IF uo_money.del_raprec(ls_rapmoneyid,ls_accountsid,1,arg_msg,False) = 0 THEN
  78. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  79. rslt = 0
  80. GOTO ext
  81. END IF
  82. END IF
  83. DELETE From u_iteminput Where dateint = :arg_dateint;
  84. IF sqlca.SQLCode <> 0 THEN
  85. arg_msg = '删除收支明细失败!'
  86. rslt = 0
  87. GOTO ext
  88. END IF
  89. ext:
  90. IF rslt = 0 THEN
  91. ROLLBACK;
  92. ELSEIF rslt = 1 And arg_ifcommit THEN
  93. COMMIT;
  94. END IF
  95. Destroy uo_money
  96. RETURN rslt
  97. end function
  98. public function integer mod_iteminput (long arg_itemid, long arg_dateint, long arg_rapmoneyid, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, integer arg_banktypeid, ref string arg_msg, boolean arg_ifcommit, string arg_billcode, string arg_relcode);Int rslt = 1,ls_itemflag
  99. Long cnt = 0
  100. Long ref_rapmoneyid
  101. uo_rapmoney uo_money
  102. uo_money = CREATE uo_rapmoney
  103. IF arg_outdate < DateTime(Date('2000-01-01'),Time(0)) THEN
  104. arg_msg = '错误的发生时间'
  105. rslt = 0
  106. GOTO ext
  107. END IF
  108. IF arg_outamt = 0 THEN
  109. arg_msg = '请输入金额'
  110. rslt = 0
  111. GOTO ext
  112. END IF
  113. SELECT itemflag
  114. INTO :ls_itemflag
  115. FROM u_itemdef
  116. Where u_itemdef.itemid = :arg_itemid;
  117. IF sqlca.SQLCode <> 0 THEN
  118. arg_msg = '找不到当前的收支项目!'
  119. rslt = 0
  120. GOTO ext
  121. END IF
  122. cnt = 0
  123. SELECT count(*)
  124. INTO :cnt
  125. FROM u_accounts
  126. Where u_accounts.accountsid = :arg_accountsid;
  127. IF sqlca.SQLCode <> 0 THEN
  128. arg_msg = '找不到当前的出纳帐号!'
  129. rslt = 0
  130. GOTO ext
  131. END IF
  132. IF cnt <> 1 THEN
  133. arg_msg = '当前的出纳帐号重复!'
  134. rslt = 0
  135. GOTO ext
  136. END IF
  137. ////检查币种
  138. //cnt = 0
  139. //SELECT count(*)
  140. // INTO :cnt
  141. // FROM cw_currency
  142. // Where moneyid = :arg_moneyid;
  143. //IF sqlca.SQLCode <> 0 THEN
  144. // arg_msg = '找不到当前的币种!'
  145. // rslt = 0
  146. // GOTO ext
  147. //END IF
  148. //IF cnt <> 1 THEN
  149. // arg_msg = '当前的币种重复或不存在帐号!'
  150. // rslt = 0
  151. // GOTO ext
  152. //END IF
  153. Decimal arg_msttakeamt,arg_takeamt
  154. IF ls_itemflag = 1 THEN
  155. arg_msttakeamt = arg_outamt
  156. arg_takeamt = 0
  157. ELSE
  158. arg_msttakeamt = 0
  159. arg_takeamt = arg_outamt
  160. END IF
  161. uo_money.commit_transaction = sqlca
  162. long ll_accountsid
  163. SELECT accountid
  164. INTO :ll_accountsid
  165. FROM u_rap_money
  166. Where rapmoneyid = :arg_rapmoneyid;
  167. IF sqlca.SQLCode <> 0 THEN
  168. arg_msg = '查询修改前帐号失败!'
  169. rslt = 0
  170. GOTO ext
  171. END IF
  172. IF uo_money.del_raprec(arg_rapmoneyid,ll_accountsid,1,arg_msg,FALSE) = 0 THEN
  173. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  174. rslt = 0
  175. GOTO ext
  176. END IF
  177. IF uo_money.add_raprec(-1,arg_accountsid,arg_outdate,publ_operator,arg_dscrp,arg_msttakeamt,&
  178. arg_takeamt,arg_billcode,1,0,0,publ_operator,arg_msg,FALSE,arg_banktypeid,arg_relcode) = 0 THEN
  179. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  180. rslt = 0
  181. GOTO ext
  182. END IF
  183. ref_rapmoneyid = uo_money.ref_rapid
  184. IF ref_rapmoneyid = 0 THEN
  185. arg_msg = '增加银行出纳明细帐失败!'
  186. rslt = 0
  187. GOTO ext
  188. END IF
  189. UPDATE u_iteminput
  190. SET outdate = :arg_outdate,
  191. dscrp = :arg_dscrp,
  192. outamt = :arg_outamt,
  193. moddate = getdate(),
  194. modemp = :publ_operator,
  195. accountsid = :arg_accountsid,
  196. rapmoneyid = :ref_rapmoneyid,
  197. itemid = :arg_itemid,
  198. banktypeid = :arg_banktypeid,
  199. billcode = :arg_billcode,
  200. relcode = :arg_relcode
  201. Where dateint = :arg_dateint;
  202. IF sqlca.SQLCode <> 0 THEN
  203. IF Pos(Lower(sqlca.SQLErrText),'pk_u_iteminput') > 0 THEN
  204. arg_msg = '修改收支明细操作失败,关键字ID重复'
  205. ELSEIF Pos(Lower(sqlca.SQLErrText),'ix_u_iteminput_1') > 0 THEN
  206. arg_msg = '修改收支明细操作失败,发生日期重复'
  207. ELSEIF Pos(Lower(sqlca.SQLErrText),'ix_u_iteminput') > 0 THEN
  208. arg_msg = '修改收支明细操作失败,收支项目ID重复'
  209. ELSE
  210. arg_msg = "因网络或其它原因修改收支明细操作失败"+"~n"+sqlca.SQLErrText
  211. END IF
  212. rslt = 0
  213. GOTO ext
  214. END IF
  215. ext:
  216. IF rslt = 0 THEN
  217. ROLLBACK;
  218. ELSEIF rslt = 1 AND arg_ifcommit THEN
  219. COMMIT;
  220. END IF
  221. DESTROY uo_money
  222. RETURN rslt
  223. end function
  224. public function integer add_iteminput (s_iteminput arg_s_mx, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ls_itemflag
  225. Long cnt = 0
  226. Long ref_rapid
  227. uo_rapmoney uo_money
  228. uo_money = Create uo_rapmoney
  229. IF arg_s_mx.dateint = 0 THEN
  230. arg_s_mx.dateint = f_sys_scidentity(0,"u_iteminput","dateint",arg_msg,False,sqlca)
  231. IF arg_s_mx.dateint <= 0 THEN
  232. rslt = 0
  233. GOTO ext
  234. END IF
  235. END IF
  236. IF arg_s_mx.outdate < DateTime(Date('2000-01-01'),Time(0)) THEN
  237. arg_msg = '错误的发生时间'
  238. rslt = 0
  239. GOTO ext
  240. END IF
  241. IF arg_s_mx.outamt = 0 THEN
  242. arg_msg = '请输入金额'
  243. rslt = 0
  244. GOTO ext
  245. END IF
  246. //检查项目;
  247. SELECT itemflag
  248. INTO :ls_itemflag
  249. FROM u_itemdef
  250. Where u_itemdef.itemid = :arg_s_mx.itemid;
  251. IF sqlca.SQLCode <> 0 THEN
  252. arg_msg = '找不到当前的收支项目!'
  253. rslt = 0
  254. GOTO ext
  255. END IF
  256. IF ib_CreateRapmoneyid THEN
  257. //检查账号
  258. cnt = 0
  259. SELECT count(*)
  260. INTO :cnt
  261. FROM u_accounts
  262. Where u_accounts.accountsid = :arg_s_mx.accountsid;
  263. IF sqlca.SQLCode <> 0 THEN
  264. arg_msg = '找不到当前的出纳帐号!'
  265. rslt = 0
  266. GOTO ext
  267. END IF
  268. IF cnt <> 1 THEN
  269. arg_msg = '当前的出纳帐号重复或不存在帐号!'
  270. rslt = 0
  271. GOTO ext
  272. END IF
  273. //检查币种
  274. cnt = 0
  275. SELECT count(*)
  276. INTO :cnt
  277. FROM cw_currency
  278. Where moneyid = :arg_s_mx.moneyid;
  279. IF sqlca.SQLCode <> 0 THEN
  280. arg_msg = '找不到当前的币种!'
  281. rslt = 0
  282. GOTO ext
  283. END IF
  284. IF cnt <> 1 THEN
  285. arg_msg = '当前的币种重复或不存在帐号!'
  286. rslt = 0
  287. GOTO ext
  288. END IF
  289. Decimal lde_msttakeamt,lde_takeamt
  290. IF ls_itemflag = 1 THEN
  291. lde_msttakeamt = arg_s_mx.outamt
  292. lde_takeamt = 0
  293. ELSE
  294. lde_msttakeamt = 0
  295. lde_takeamt = arg_s_mx.outamt
  296. END IF
  297. uo_money.commit_transaction = sqlca
  298. IF uo_money.add_raprec(arg_s_mx.scid,arg_s_mx.accountsid,arg_s_mx.outdate,publ_operator,arg_s_mx.dscrp,lde_msttakeamt,&
  299. lde_takeamt,arg_s_mx.billcode,1,0,0,publ_operator,arg_msg,False,arg_s_mx.banktypeid,arg_s_mx.relcode) = 0 THEN
  300. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  301. rslt = 0
  302. GOTO ext
  303. END IF
  304. ref_rapid = uo_money.ref_rapid
  305. IF ref_rapid = 0 THEN
  306. arg_msg = '增加出纳明细帐失败!'
  307. rslt = 0
  308. GOTO ext
  309. END IF
  310. END IF
  311. INSERT INTO u_iteminput
  312. (itemid,dateint,billcode,outdate,dscrp,outamt,opdate,opemp,
  313. accountsid,rapmoneyid,buildtype,banktypeid,moneyid,scid,relcode)
  314. VALUES
  315. (:arg_s_mx.itemid,:arg_s_mx.dateint,:arg_s_mx.billcode,:arg_s_mx.outdate,:arg_s_mx.dscrp,
  316. :arg_s_mx.outamt,getdate(),:publ_operator,:arg_s_mx.accountsid,:ref_rapid,:arg_s_mx.buildtype,:arg_s_mx.banktypeid,
  317. :arg_s_mx.moneyid,:arg_s_mx.scid,:arg_s_mx.relcode);
  318. IF sqlca.SQLCode <> 0 THEN
  319. arg_msg = '增加收支记录失败!'+sqlca.SQLErrText
  320. rslt = 0
  321. GOTO ext
  322. END IF
  323. ref_dateint = arg_s_mx.dateint
  324. ext:
  325. IF rslt = 0 THEN
  326. ROLLBACK;
  327. ELSEIF rslt = 1 And arg_ifcommit THEN
  328. COMMIT;
  329. END IF
  330. Destroy uo_money
  331. RETURN rslt
  332. end function
  333. protected function integer add_iteminput (long arg_scid, long arg_itemid, long arg_dateint, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, ref string arg_msg, boolean arg_ifcommit, long arg_banktypeid, integer arg_buildtype, string arg_billcode, long arg_moneyid, string arg_relcode);s_iteminput s_input
  334. s_input.itemid = arg_itemid
  335. s_input.dateint = arg_dateint
  336. s_input.outdate = arg_outdate
  337. s_input.dscrp = arg_dscrp
  338. s_input.outamt = arg_outamt
  339. s_input.accountsid = arg_accountsid
  340. s_input.banktypeid = arg_banktypeid
  341. s_input.billcode = arg_billcode
  342. s_input.relcode = arg_relcode
  343. s_input.buildtype = arg_buildtype
  344. s_input.opemp = publ_operator
  345. s_input.relrep = ''
  346. s_input.scid = arg_scid
  347. s_input.moneyid = arg_moneyid
  348. return add_iteminput(s_input,arg_msg,arg_ifcommit)
  349. //Int rslt = 1,ls_itemflag
  350. //Long cnt = 0
  351. //long ref_rapid
  352. //uo_rapmoney uo_money
  353. //uo_money = CREATE uo_rapmoney
  354. //
  355. //IF arg_dateint = 0 THEN
  356. // arg_dateint = f_sys_scidentity(0,"u_iteminput","dateint",arg_msg,false,sqlca)
  357. // IF arg_dateint <= 0 THEN
  358. // rslt = 0
  359. // GOTO ext
  360. // END IF
  361. //END IF
  362. //
  363. //IF arg_outdate < DateTime(Date('2000-01-01'),Time(0)) THEN
  364. // arg_msg = '错误的发生时间'
  365. // rslt = 0
  366. // GOTO ext
  367. //END IF
  368. //
  369. //IF arg_outamt = 0 THEN
  370. // arg_msg = '请输入金额'
  371. // rslt = 0
  372. // GOTO ext
  373. //END IF
  374. //
  375. ////检查项目;
  376. //SELECT itemflag
  377. // INTO :ls_itemflag
  378. // FROM u_itemdef
  379. // Where u_itemdef.itemid = :arg_itemid;
  380. //IF sqlca.SQLCode <> 0 THEN
  381. // arg_msg = '找不到当前的收支项目!'
  382. // rslt = 0
  383. // GOTO ext
  384. //END IF
  385. //
  386. ////检查账号
  387. //cnt = 0
  388. //SELECT count(*)
  389. // INTO :cnt
  390. // FROM u_accounts
  391. // Where u_accounts.accountsid = :arg_accountsid;
  392. //IF sqlca.SQLCode <> 0 THEN
  393. // arg_msg = '找不到当前的出纳帐号!'
  394. // rslt = 0
  395. // GOTO ext
  396. //END IF
  397. //IF cnt <> 1 THEN
  398. // arg_msg = '当前的出纳帐号重复或不存在帐号!'
  399. // rslt = 0
  400. // GOTO ext
  401. //END IF
  402. //
  403. ////检查币种
  404. //cnt = 0
  405. //SELECT count(*)
  406. // INTO :cnt
  407. // FROM cw_currency
  408. // Where moneyid = :arg_moneyid;
  409. //IF sqlca.SQLCode <> 0 THEN
  410. // arg_msg = '找不到当前的币种!'
  411. // rslt = 0
  412. // GOTO ext
  413. //END IF
  414. //IF cnt <> 1 THEN
  415. // arg_msg = '当前的币种重复或不存在帐号!'
  416. // rslt = 0
  417. // GOTO ext
  418. //END IF
  419. //
  420. //
  421. //
  422. //
  423. //Decimal arg_msttakeamt,arg_takeamt
  424. //IF ls_itemflag = 1 THEN
  425. // arg_msttakeamt = arg_outamt
  426. // arg_takeamt = 0
  427. //ELSE
  428. // arg_msttakeamt = 0
  429. // arg_takeamt = arg_outamt
  430. //END IF
  431. //
  432. //uo_money.commit_transaction = sqlca
  433. //IF uo_money.add_raprec(arg_scid,arg_accountsid,arg_outdate,publ_operator,arg_dscrp,arg_msttakeamt,&
  434. // arg_takeamt,arg_billcode,1,0,0,publ_operator,arg_msg,FALSE,arg_banktypeid,arg_relcode) = 0 THEN
  435. // arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  436. // rslt = 0
  437. // GOTO ext
  438. //END IF
  439. //
  440. //ref_rapid = uo_money.ref_rapid
  441. //IF ref_rapid = 0 THEN
  442. // arg_msg = '增加出纳明细帐失败!'
  443. // rslt = 0
  444. // GOTO ext
  445. //END IF
  446. //
  447. //INSERT INTO u_iteminput
  448. // (itemid,dateint,billcode,outdate,dscrp,outamt,opdate,opemp,accountsid,rapmoneyid,buildtype,banktypeid,moneyid,scid,relcode)
  449. // VALUES
  450. // (:arg_itemid,:arg_dateint,:arg_billcode,:arg_outdate,:arg_dscrp,:arg_outamt,getdate(),:publ_operator,:arg_accountsid,:ref_rapid,:arg_buildtype,:arg_banktypeid,:arg_moneyid,:arg_scid,:arg_relcode);
  451. //
  452. //IF sqlca.SQLCode <> 0 THEN
  453. // arg_msg = '增加收支记录失败!'+sqlca.sqlerrtext
  454. // rslt = 0
  455. // GOTO ext
  456. //END IF
  457. //
  458. //ref_dateint = arg_dateint
  459. //
  460. //ext:
  461. //IF rslt = 0 THEN
  462. // ROLLBACK;
  463. //ELSEIF rslt = 1 AND arg_ifcommit THEN
  464. // COMMIT;
  465. //END IF
  466. //
  467. //DESTROY uo_money
  468. //
  469. //RETURN rslt
  470. //
  471. end function
  472. on uo_iteminput.create
  473. call super::create
  474. TriggerEvent( this, "constructor" )
  475. end on
  476. on uo_iteminput.destroy
  477. TriggerEvent( this, "destructor" )
  478. call super::destroy
  479. end on