uo_iteminput.sru 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  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. end variables
  12. forward prototypes
  13. public function integer del_iteminput (long arg_itemid, long arg_dateint, long arg_ifauto, ref string arg_msg, boolean arg_ifcommit)
  14. public function integer add_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit)
  15. public function integer mod_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit)
  16. end prototypes
  17. 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
  18. Decimal ls_outamt
  19. Long ls_accountsid,ls_rapmoneyid
  20. Long cnt = 0
  21. //uo_rapmoney uo_money
  22. //uo_money = CREATE uo_rapmoney
  23. SELECT itemflag
  24. INTO :ls_itemflag
  25. FROM u_itemdef
  26. Where u_itemdef.itemid = :arg_itemid;
  27. IF sqlca.SQLCode <> 0 THEN
  28. arg_msg = '找不到当前的收支项目!'
  29. rslt = 0
  30. GOTO ext
  31. END IF
  32. SELECT outamt,accountsid,rapmoneyid,buildtype
  33. INTO :ls_outamt,:ls_accountsid,:ls_rapmoneyid,:li_buildtype
  34. FROM u_iteminput
  35. Where dateint = :arg_dateint;
  36. IF sqlca.SQLCode <> 0 THEN
  37. arg_msg = '查询收支明细失败'
  38. rslt = 0
  39. GOTO ext
  40. END IF
  41. IF arg_ifauto = 0 THEN
  42. IF li_buildtype = 1 THEN
  43. arg_msg = '自动建立的收支帐不能删除'
  44. rslt = 0
  45. GOTO ext
  46. END IF
  47. END IF
  48. //
  49. //cnt = 0
  50. //SELECT count(*)
  51. // INTO :cnt
  52. // FROM u_accounts
  53. // Where u_accounts.accountsid = :ls_accountsid;
  54. //IF sqlca.SQLCode <> 0 THEN
  55. // arg_msg = '找不到当前的出纳帐号!'
  56. // rslt = 0
  57. // GOTO ext
  58. //END IF
  59. //IF cnt <> 1 THEN
  60. // arg_msg = '当前的出纳帐号重复或不存在!'
  61. // rslt = 0
  62. // GOTO ext
  63. //END IF
  64. //
  65. //IF uo_money.del_raprec(ls_rapmoneyid,ls_accountsid,1,arg_msg,FALSE) = 0 THEN
  66. // arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  67. // rslt = 0
  68. // GOTO ext
  69. //END IF
  70. DELETE FROM u_iteminput Where dateint = :arg_dateint;
  71. IF sqlca.SQLCode <> 0 THEN
  72. arg_msg = '删除收支明细失败!'
  73. rslt = 0
  74. GOTO ext
  75. END IF
  76. ext:
  77. IF rslt = 0 THEN
  78. ROLLBACK;
  79. ELSEIF rslt = 1 AND arg_ifcommit THEN
  80. COMMIT;
  81. END IF
  82. //DESTROY uo_money
  83. RETURN rslt
  84. end function
  85. public function integer add_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ls_itemflag
  86. Long cnt = 0
  87. Long ref_rapid
  88. //uo_rapmoney uo_money
  89. //uo_money = CREATE uo_rapmoney
  90. //
  91. IF IsNull(arg_s_iteminput.scid) THEN arg_s_iteminput.scid = 0
  92. IF arg_s_iteminput.dateint = 0 THEN
  93. arg_s_iteminput.dateint = f_sys_scidentity(0,"u_iteminput","dateint",arg_msg,TRUE,id_sqlca)
  94. IF arg_s_iteminput.dateint <= 0 THEN
  95. rslt = 0
  96. GOTO ext
  97. END IF
  98. END IF
  99. IF arg_s_iteminput.outdate < DateTime(Date('2000-01-01'),Time(0)) THEN
  100. arg_msg = '错误的发生时间'
  101. rslt = 0
  102. GOTO ext
  103. END IF
  104. IF f_check_inoutdate(0,arg_s_iteminput.outdate,FALSE,arg_msg) = 0 THEN
  105. rslt = 0
  106. GOTO ext
  107. END IF
  108. IF arg_s_iteminput.outamt = 0 and arg_s_iteminput.inamt = 0 THEN
  109. arg_msg = '收入金额与支出金额不能同时为0'
  110. rslt = 0
  111. GOTO ext
  112. END IF
  113. //IF arg_s_iteminput.outamt < 0 THEN
  114. // arg_msg = '支出金额必须>0'
  115. // rslt = 0
  116. // GOTO ext
  117. //END IF
  118. //
  119. //IF arg_s_iteminput.inamt < 0 THEN
  120. // arg_msg = '收入金额必须>0'
  121. // rslt = 0
  122. // GOTO ext
  123. //END IF
  124. //SELECT itemflag
  125. // INTO :ls_itemflag
  126. // FROM u_itemdef
  127. // Where u_itemdef.itemid = :arg_s_iteminput.itemid;
  128. //IF sqlca.SQLCode <> 0 THEN
  129. // arg_msg = '查询当前收支项目核算方向失败!'
  130. // rslt = 0
  131. // GOTO ext
  132. //END IF
  133. //cnt = 0
  134. //SELECT count(*)
  135. // INTO :cnt
  136. // FROM u_accounts
  137. // Where u_accounts.accountsid = :arg_s_iteminput.accountsid;
  138. //IF sqlca.SQLCode <> 0 THEN
  139. // arg_msg = '找不到当前的出纳帐号!'
  140. // rslt = 0
  141. // GOTO ext
  142. //END IF
  143. //IF cnt <> 1 THEN
  144. // arg_msg = '当前的出纳帐号重复或不存在帐号!'
  145. // rslt = 0
  146. // GOTO ext
  147. //END IF
  148. //
  149. //Decimal ld_msttakeamt,ld_takeamt
  150. //IF ls_itemflag = 1 THEN
  151. // ld_msttakeamt = arg_s_iteminput.outamt
  152. // ld_takeamt = 0
  153. //ELSE
  154. // ld_msttakeamt = 0
  155. // ld_takeamt = arg_s_iteminput.outamt
  156. //END IF
  157. //
  158. //s_rap_money s_rap
  159. //
  160. //s_rap.accountsid = arg_s_iteminput.accountsid
  161. //s_rap.takedate = arg_s_iteminput.outdate
  162. //s_rap.inrep = arg_s_iteminput.relrep
  163. //s_rap.dscrp = arg_s_iteminput.dscrp
  164. //s_rap.msttakeamt = ld_msttakeamt
  165. //s_rap.takeamt = ld_takeamt
  166. //s_rap.billcode = arg_s_iteminput.billcode
  167. //s_rap.relcode = arg_s_iteminput.relcode
  168. //s_rap.buildtype = 1
  169. //s_rap.dcflag = 0
  170. //s_rap.relid = 0
  171. //s_rap.opemp = arg_s_iteminput.opemp
  172. //s_rap.banktypeid = arg_s_iteminput.banktypeid
  173. //
  174. //
  175. //IF uo_money.add_raprec(s_rap,arg_msg,FALSE) = 0 THEN
  176. // arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  177. // rslt = 0
  178. // GOTO ext
  179. //END IF
  180. //
  181. //ref_rapid = uo_money.ref_rapid
  182. //IF ref_rapid = 0 THEN
  183. // arg_msg = '增加出纳明细帐失败!'
  184. // rslt = 0
  185. // GOTO ext
  186. //END IF
  187. INSERT INTO u_iteminput
  188. (itemid,
  189. dateint,
  190. billcode,
  191. relcode,
  192. outdate,
  193. dscrp,
  194. inamt,
  195. outamt,
  196. opdate,
  197. opemp,
  198. accountsid,
  199. rapmoneyid,
  200. buildtype,
  201. banktypeid,
  202. relrep,
  203. scid)
  204. VALUES
  205. (:arg_s_iteminput.itemid,
  206. :arg_s_iteminput.dateint,
  207. :arg_s_iteminput.billcode,
  208. :arg_s_iteminput.relcode,
  209. :arg_s_iteminput.outdate,
  210. :arg_s_iteminput.dscrp,
  211. :arg_s_iteminput.inamt,
  212. :arg_s_iteminput.outamt,
  213. getdate(),
  214. :arg_s_iteminput.opemp,
  215. :arg_s_iteminput.accountsid,
  216. :ref_rapid,
  217. :arg_s_iteminput.buildtype,
  218. :arg_s_iteminput.banktypeid,
  219. :arg_s_iteminput.relrep,
  220. :arg_s_iteminput.scid);
  221. IF sqlca.SQLCode <> 0 THEN
  222. arg_msg = '增加收支记录失败!'+sqlca.SQLErrText
  223. rslt = 0
  224. GOTO ext
  225. END IF
  226. ref_dateint = arg_s_iteminput.dateint
  227. ext:
  228. IF rslt = 0 THEN
  229. ROLLBACK ;
  230. ELSEIF rslt = 1 AND arg_ifcommit THEN
  231. COMMIT;
  232. END IF
  233. //DESTROY uo_money
  234. RETURN rslt
  235. end function
  236. public function integer mod_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ls_itemflag
  237. Long cnt = 0
  238. Long ref_rapmoneyid
  239. Long ll_rapmoneyid,ll_accountsid
  240. uo_rapmoney uo_money
  241. uo_money = CREATE uo_rapmoney
  242. IF IsNull(arg_s_iteminput.scid) THEN arg_s_iteminput.scid = 0
  243. IF arg_s_iteminput.outdate < DateTime(Date('2000-01-01'),Time(0)) THEN
  244. arg_msg = '错误的发生时间'
  245. rslt = 0
  246. GOTO ext
  247. END IF
  248. IF arg_s_iteminput.outamt = 0 THEN
  249. arg_msg = '请输入金额'
  250. rslt = 0
  251. GOTO ext
  252. END IF
  253. SELECT itemflag
  254. INTO :ls_itemflag
  255. FROM u_itemdef
  256. Where u_itemdef.itemid = :arg_s_iteminput.itemid;
  257. IF sqlca.SQLCode <> 0 THEN
  258. arg_msg = '找不到当前的收支项目!'
  259. rslt = 0
  260. GOTO ext
  261. END IF
  262. cnt = 0
  263. SELECT count(*)
  264. INTO :cnt
  265. FROM u_accounts
  266. Where u_accounts.accountsid = :arg_s_iteminput.accountsid;
  267. IF sqlca.SQLCode <> 0 THEN
  268. arg_msg = '找不到当前的出纳帐号!'
  269. rslt = 0
  270. GOTO ext
  271. END IF
  272. IF cnt <> 1 THEN
  273. arg_msg = '当前的出纳帐号重复!'
  274. rslt = 0
  275. GOTO ext
  276. END IF
  277. Decimal ld_msttakeamt,ld_takeamt
  278. IF ls_itemflag = 1 THEN
  279. ld_msttakeamt = arg_s_iteminput.outamt
  280. ld_takeamt = 0
  281. ELSE
  282. ld_msttakeamt = 0
  283. ld_takeamt = arg_s_iteminput.outamt
  284. END IF
  285. SELECT accountsid,rapmoneyid
  286. INTO :ll_accountsid,:ll_rapmoneyid
  287. FROM u_iteminput
  288. Where dateint = :arg_s_iteminput.dateint;
  289. IF sqlca.SQLCode <> 0 THEN
  290. arg_msg = '查询修改前帐号失败!'
  291. rslt = 0
  292. GOTO ext
  293. END IF
  294. IF uo_money.del_raprec(ll_rapmoneyid,ll_accountsid,1,arg_msg,FALSE) = 0 THEN
  295. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  296. rslt = 0
  297. GOTO ext
  298. END IF
  299. s_rap_money s_rap
  300. s_rap.accountsid = arg_s_iteminput.accountsid
  301. s_rap.takedate = arg_s_iteminput.outdate
  302. s_rap.inrep = arg_s_iteminput.opemp
  303. s_rap.dscrp = arg_s_iteminput.dscrp
  304. s_rap.msttakeamt = ld_msttakeamt
  305. s_rap.takeamt = ld_takeamt
  306. s_rap.billcode = arg_s_iteminput.billcode
  307. s_rap.relcode = arg_s_iteminput.relcode
  308. s_rap.opemp = arg_s_iteminput.opemp
  309. s_rap.banktypeid = arg_s_iteminput.banktypeid
  310. s_rap.buildtype = 1
  311. s_rap.dcflag = 0
  312. s_rap.relid = 0
  313. s_rap.scid = arg_s_iteminput.scid
  314. IF uo_money.add_raprec(s_rap,arg_msg,FALSE) = 0 THEN
  315. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  316. rslt = 0
  317. GOTO ext
  318. END IF
  319. ref_rapmoneyid = uo_money.ref_rapid
  320. IF ref_rapmoneyid = 0 THEN
  321. arg_msg = '增加银行出纳明细帐失败!'
  322. rslt = 0
  323. GOTO ext
  324. END IF
  325. UPDATE u_iteminput
  326. SET outdate = :arg_s_iteminput.outdate,
  327. dscrp = :arg_s_iteminput.dscrp,
  328. outamt = :arg_s_iteminput.outamt,
  329. accountsid = :arg_s_iteminput.accountsid,
  330. rapmoneyid = :ref_rapmoneyid,
  331. itemid = :arg_s_iteminput.itemid,
  332. banktypeid = :arg_s_iteminput.banktypeid,
  333. billcode = :arg_s_iteminput.billcode,
  334. scid = :arg_s_iteminput.scid,
  335. relcode = :arg_s_iteminput.relcode
  336. Where dateint = :arg_s_iteminput.dateint;
  337. IF sqlca.SQLCode <> 0 THEN
  338. arg_msg = '修改收支明细失败!'
  339. rslt = 0
  340. GOTO ext
  341. END IF
  342. ext:
  343. IF rslt = 0 THEN
  344. ROLLBACK;
  345. ELSEIF rslt = 1 AND arg_ifcommit THEN
  346. COMMIT;
  347. END IF
  348. DESTROY uo_money
  349. RETURN rslt
  350. end function
  351. on uo_iteminput.create
  352. call super::create
  353. TriggerEvent( this, "constructor" )
  354. end on
  355. on uo_iteminput.destroy
  356. TriggerEvent( this, "destructor" )
  357. call super::destroy
  358. end on