uo_income_expenses.sru 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636
  1. $PBExportHeader$uo_income_expenses.sru
  2. forward
  3. global type uo_income_expenses from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_income_expenses from nonvisualobject
  7. end type
  8. global uo_income_expenses uo_income_expenses
  9. type variables
  10. Public ProtectedWrite Long billid
  11. Public ProtectedWrite String billcode
  12. Public ProtectedWrite String auditemp
  13. Public ProtectedWrite DateTime auditdate
  14. Public ProtectedWrite Int flag
  15. Public ProtectedWrite Int secflag
  16. Public ProtectedWrite String Opemp
  17. Public ProtectedWrite DateTime Opdate
  18. Public ProtectedWrite String ModEmp
  19. Public ProtectedWrite DateTime ModDate
  20. Long scid
  21. String credencecode
  22. Long banktypeid
  23. Decimal amt
  24. Long accountsid
  25. DateTime outdate,viewdate
  26. String Descrp
  27. String rep
  28. Long rapmoneyid
  29. Long itemid
  30. Long relid
  31. Int billtype //0-其它收入支出,1-借款,2-还款
  32. Long empid
  33. Long deptid
  34. Int itemflag
  35. Long relrapid
  36. long moneyid
  37. Transaction commit_transaction //数据commit事务
  38. Int cwauditingflag = 0 //总账审核标记
  39. DateTime cwauditingdate //总账审核时间
  40. String cwauditingrep //总账审核操作员
  41. Private:
  42. Boolean IT_NEWBEGIN = False //新建标志
  43. Boolean IT_UPDATEBEGIN = False //修改标志
  44. Long it_mxbt = 0
  45. s_income_expenses_mx incomemx[]
  46. //int sys_option_income_secaudit
  47. end variables
  48. forward prototypes
  49. public function integer p_reset ()
  50. public function integer newbegin (ref string arg_msg)
  51. public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  52. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  53. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  54. public function integer permit (long arg_billid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  55. public function integer updatebegin (long arg_billid, ref string arg_msg)
  56. public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
  57. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  58. public function integer cancelpermit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  59. public function integer permit2 (long arg_billid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  60. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  61. public function integer p_clearmx ()
  62. public function integer getinfo (long arg_billid, ref string arg_msg)
  63. public function integer acceptmx (long arg_itemid, decimal arg_amt, long arg_deptid, integer arg_buildtype, long arg_relscid, long arg_relbillid, string arg_relbillcode, string arg_useemp, string arg_mxdscrp, ref string arg_msg)
  64. public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  65. public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  66. end prototypes
  67. public function integer p_reset ();
  68. billid = 0
  69. billcode = ''
  70. credencecode = ''
  71. banktypeid = 0
  72. amt = 0
  73. accountsid = 0
  74. setnull(outdate)
  75. Descrp = ''
  76. rep = ''
  77. relid = 0
  78. rapmoneyid = 0
  79. moneyid = 0
  80. empid = 0
  81. billtype = 0
  82. itemid = 0
  83. deptid = 0
  84. flag = 0
  85. Opemp = ''
  86. setnull(Opdate)
  87. setnull(ModDate)
  88. ModEmp = ''
  89. auditemp = ''
  90. setnull(auditdate)
  91. it_newbegin=FALSE
  92. it_updatebegin=FALSE
  93. p_clearmx()
  94. RETURN 1
  95. end function
  96. public function integer newbegin (ref string arg_msg);//newbegin()
  97. //从置对象,设定业务类型,准备建立新单
  98. //0 fail 1 success
  99. LONG RSLT=1
  100. p_reset()
  101. it_newbegin=TRUE
  102. it_updatebegin=FALSE
  103. return RSLT
  104. end function
  105. public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  106. DateTime nulldate
  107. Long ll_i
  108. SetNull(nulldate)
  109. IF sys_option_income_secaudit = -1000 THEN
  110. rslt = 0
  111. arg_msg = '选项:[328]其它收入支出单使用二级审核,读取初始默认值失败,操作取消!'
  112. GOTO ext
  113. END IF
  114. uo_iteminput uo_item
  115. uo_item = Create uo_iteminput
  116. uo_item.ib_CreateRapmoneyid = false
  117. //uo_item.commit_transaction = commit_transaction
  118. uo_empinfo uo_emptake
  119. uo_emptake = Create uo_empinfo
  120. uo_rapmoney uo_money
  121. uo_money = Create uo_rapmoney
  122. uo_money.commit_transaction = commit_transaction
  123. IF arg_billid <= 0 THEN
  124. rslt = 0
  125. arg_msg = '错误单据唯一码'
  126. GOTO ext
  127. END IF
  128. IF getinfo(arg_billid,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. IF secflag = 1 THEN
  138. rslt = 0
  139. arg_msg = "单据已财务确认,不能执行撤消审核,请核对"
  140. GOTO ext
  141. END IF
  142. IF sys_option_income_secaudit = 0 THEN
  143. FOR ll_i = 1 To it_mxbt
  144. IF incomemx[ll_i].itemid = 0 THEN CONTINUE
  145. IF uo_item.del_iteminput(incomemx[ll_i].itemid,incomemx[ll_i].rel_dateint,1,arg_msg,False) = 0 THEN
  146. rslt = 0
  147. GOTO ext
  148. END IF
  149. NEXT
  150. END IF
  151. UPDATE U_income_expenses_mx
  152. SET rel_dateint = 0
  153. Where billid = :arg_billid Using commit_transaction ;
  154. IF commit_transaction.SQLCode <> 0 THEN
  155. rslt = 0
  156. arg_msg = "更新单据明细操作失败"+"~n"+commit_transaction.SQLErrText
  157. GOTO ext
  158. END IF
  159. IF uo_money.del_raprec(relrapid,accountsid,1,arg_msg,False) = 0 THEN
  160. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  161. rslt = 0
  162. GOTO ext
  163. END IF
  164. UPDATE U_income_expenses
  165. SET flag = 0,
  166. auditemp = '',
  167. auditdate = :nulldate,
  168. relrapid = 0
  169. WHERE U_income_expenses.billid = :arg_billid
  170. AND flag = 1
  171. Using commit_transaction ;
  172. IF commit_transaction.SQLCode <> 0 THEN
  173. rslt = 0
  174. arg_msg = "单据撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  175. GOTO ext
  176. END IF
  177. IF billtype = 1 THEN
  178. // IF uo_emptake.uof_del_emptake(empid,billid,rapmoneyid,billcode,0,False,arg_msg) = 0 THEN
  179. // rslt = 0
  180. // GOTO ext
  181. // END IF
  182. ELSEIF billtype = 2 THEN
  183. // IF uo_emptake.uof_del_emptake(empid,billid,rapmoneyid,billcode,1,False,arg_msg) = 0 THEN
  184. // rslt = 0
  185. // GOTO ext
  186. // END IF
  187. END IF
  188. it_newbegin = False
  189. it_updatebegin = False
  190. ext:
  191. IF rslt = 0 THEN
  192. ROLLBACK Using commit_transaction;
  193. ELSEIF rslt = 1 And arg_ifcommit THEN
  194. COMMIT Using commit_transaction;
  195. END IF
  196. p_reset()
  197. Destroy uo_item
  198. Destroy uo_emptake
  199. Destroy uo_money
  200. Return (rslt)
  201. end function
  202. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  203. //0 FAIL, 1 SUCCESS
  204. Int rslt = 1
  205. IF arg_billid <= 0 THEN
  206. rslt = 0
  207. ARG_MSG = '错误单据唯一码'
  208. GOTO ext
  209. END IF
  210. IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN
  211. rslt = 0
  212. GOTO ext
  213. END IF
  214. IF flag <> 0 THEN
  215. rslt = 0
  216. ARG_MSG = "单据已经审核,不可以删除"
  217. GOTO ext
  218. END IF
  219. DELETE FROM U_income_expenses
  220. Where U_income_expenses.billid = :arg_billid USING commit_transaction ;
  221. IF commit_transaction.SQLCode <> 0 THEN
  222. rslt = 0
  223. ARG_MSG = "删除单据操作失败"+"~n"+commit_transaction.SQLErrText
  224. GOTO ext
  225. END IF
  226. DELETE FROM U_income_expenses_mx
  227. Where U_income_expenses_mx.billid = :arg_billid USING commit_transaction;
  228. IF commit_transaction.SQLCode <> 0 THEN
  229. rslt = 0
  230. arg_msg = "删除单据明细操作失败"+"~n"+commit_transaction.SQLErrText
  231. ROLLBACK USING commit_transaction;
  232. GOTO ext
  233. END IF
  234. it_newbegin = FALSE
  235. it_updatebegin = FALSE
  236. ext:
  237. IF rslt = 0 THEN
  238. ROLLBACK USING commit_transaction;
  239. ELSEIF arg_ifcommit AND rslt = 1 THEN
  240. COMMIT USING commit_transaction;
  241. END IF
  242. p_reset()
  243. Return (rslt)
  244. end function
  245. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  246. SELECT U_income_expenses.billid,
  247. U_income_expenses.billcode,
  248. U_income_expenses.credencecode,
  249. U_income_expenses.banktypeid,
  250. U_income_expenses.amt,
  251. U_income_expenses.accountsid,
  252. U_income_expenses.outdate,
  253. U_income_expenses.viewdate,
  254. U_income_expenses.Descrp,
  255. U_income_expenses.rep,
  256. U_income_expenses.rapmoneyid,
  257. U_income_expenses.itemid,
  258. U_income_expenses.flag,
  259. U_income_expenses.secflag,
  260. U_income_expenses.Opemp,
  261. U_income_expenses.Opdate,
  262. U_income_expenses.ModDate,
  263. U_income_expenses.ModEmp,
  264. U_income_expenses.auditemp,
  265. U_income_expenses.auditdate,
  266. U_income_expenses.relid,
  267. U_income_expenses.billtype,
  268. U_income_expenses.empid,
  269. U_income_expenses.deptid,
  270. U_income_expenses.relrapid,
  271. U_income_expenses.itemflag,
  272. U_income_expenses.scid,
  273. U_income_expenses.moneyid,
  274. U_income_expenses.cwauditingflag,
  275. U_income_expenses.cwauditingrep,
  276. U_income_expenses.cwauditingdate
  277. INTO :billid,
  278. :billcode,
  279. :credencecode,
  280. :banktypeid,
  281. :amt,
  282. :accountsid,
  283. :outdate,
  284. :viewdate,
  285. :Descrp,
  286. :rep,
  287. :rapmoneyid,
  288. :itemid,
  289. :flag,
  290. :secflag,
  291. :Opemp,
  292. :Opdate,
  293. :ModDate,
  294. :ModEmp,
  295. :auditemp,
  296. :auditdate,
  297. :relid,
  298. :billtype,
  299. :empid,
  300. :deptid,
  301. :relrapid,
  302. :itemflag,
  303. :scid,
  304. :moneyid,
  305. :cwauditingflag,
  306. :cwauditingrep,
  307. :cwauditingdate
  308. FROM U_income_expenses
  309. Where ( U_income_expenses.billid = :arg_billid ) ;
  310. IF sqlca.SQLCode <> 0 THEN
  311. rslt = 0
  312. arg_msg = "查询其他收入支出单操作失败"+sqlca.SQLErrText
  313. GOTO ext
  314. END IF
  315. ext:
  316. RETURN rslt
  317. end function
  318. public function integer permit (long arg_billid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);
  319. Int rslt = 1
  320. Long cnt = 0,ll_i
  321. Long ref_dateint
  322. string mxdscrp_str,ll_itemname
  323. uo_iteminput uo_item
  324. uo_item = Create uo_iteminput
  325. uo_item.ib_CreateRapmoneyid = false
  326. uo_empinfo uo_emptake
  327. uo_emptake = Create uo_empinfo
  328. uo_rapmoney uo_money
  329. uo_money = Create uo_rapmoney
  330. uo_money.commit_transaction = commit_transaction
  331. IF sys_option_income_secaudit = -1000 THEN
  332. rslt = 0
  333. arg_msg = '选项:[328]其它收入支出单使用二级审核,读取初始默认值失败,操作取消!'
  334. GOTO ext
  335. END IF
  336. IF arg_billid <= 0 THEN
  337. rslt = 0
  338. arg_msg = '错误其他收入支出单唯一码'
  339. GOTO ext
  340. END IF
  341. IF getinfo(arg_billid,arg_msg) = 0 THEN
  342. rslt = 0
  343. GOTO ext
  344. END IF
  345. IF flag <> 0 THEN
  346. rslt = 0
  347. arg_msg = "单据已经审核,操作取消"
  348. GOTO ext
  349. END IF
  350. cnt = 0
  351. SELECT count(*) INTO :cnt
  352. FROM u_user
  353. Where username = :arg_emp Using commit_transaction;
  354. IF commit_transaction.SQLCode <> 0 THEN
  355. rslt = 0
  356. arg_msg = "查询操作失败,操作员!"
  357. GOTO ext
  358. END IF
  359. IF cnt = 0 THEN
  360. rslt = 0
  361. arg_msg = "操作员姓名未登记或已取消!"
  362. GOTO ext
  363. END IF
  364. IF sys_option_income_secaudit = 0 THEN
  365. s_iteminput s_input
  366. FOR ll_i = 1 To it_mxbt
  367. s_input.itemid = incomemx[ll_i].itemid
  368. s_input.dateint = 0
  369. s_input.outdate = outdate
  370. s_input.dscrp = Descrp + ' ' + incomemx[ll_i].mxdscrp
  371. s_input.outamt = incomemx[ll_i].amt
  372. s_input.accountsid = accountsid
  373. s_input.banktypeid = banktypeid
  374. s_input.billcode = billcode
  375. s_input.relcode = credencecode
  376. s_input.buildtype = 1
  377. s_input.opemp = publ_operator
  378. s_input.relrep = rep
  379. s_input.scid = scid
  380. s_input.moneyid = moneyid
  381. select itemname into :ll_itemname from u_itemdef where itemid = :s_input.itemid;
  382. if mxdscrp_str <> '' then mxdscrp_str = mxdscrp_str +"|"
  383. mxdscrp_str = mxdscrp_str +ll_itemname + "," + incomemx[ll_i].mxdscrp
  384. IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN
  385. rslt = 0
  386. GOTO ext
  387. END IF
  388. ref_dateint = uo_item.ref_dateint
  389. UPDATE U_income_expenses_mx
  390. SET rel_dateint = :ref_dateint
  391. WHERE billid = :arg_billid
  392. And printid = :incomemx[ll_i].printid Using commit_transaction;
  393. IF commit_transaction.SQLCode <> 0 THEN
  394. rslt = 0
  395. arg_msg = "更单据明细相关信息失败 ~n"+commit_transaction.SQLErrText
  396. GOTO ext
  397. END IF
  398. NEXT
  399. END IF
  400. //加出纳帐
  401. Decimal ld_msttakeamt,ld_takeamt
  402. Long ref_rapid
  403. IF itemflag = 1 THEN
  404. ld_msttakeamt = amt
  405. ld_takeamt = 0
  406. ELSE
  407. ld_msttakeamt = 0
  408. ld_takeamt = amt
  409. END IF
  410. s_rap_money s_rap
  411. s_rap.accountsid = accountsid
  412. if sys_option_cusamt_dftdate = 0 then
  413. s_rap.takedate = outdate
  414. else
  415. s_rap.takedate = viewdate
  416. end if
  417. s_rap.inrep = rep
  418. if Descrp <> '' then
  419. s_rap.dscrp = Descrp
  420. else
  421. s_rap.dscrp = mxdscrp_str
  422. end if
  423. s_rap.msttakeamt = ld_msttakeamt
  424. s_rap.takeamt = ld_takeamt
  425. s_rap.billcode = billcode
  426. s_rap.relcode = credencecode
  427. s_rap.buildtype = 1
  428. s_rap.dcflag = 0
  429. s_rap.relid = 0
  430. s_rap.opemp = opemp
  431. s_rap.banktypeid = banktypeid
  432. s_rap.scid = scid
  433. IF uo_money.add_raprec(s_rap,arg_msg,False) = 0 THEN
  434. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  435. rslt = 0
  436. GOTO ext
  437. END IF
  438. ref_rapid = uo_money.ref_rapid
  439. IF ref_rapid = 0 THEN
  440. arg_msg = '增加出纳明细帐失败!'
  441. rslt = 0
  442. GOTO ext
  443. END IF
  444. UPDATE U_income_expenses
  445. SET auditemp = :arg_emp ,
  446. auditdate = getdate(),
  447. flag = 1,
  448. relrapid = :ref_rapid
  449. WHERE billid = :arg_billid
  450. AND flag = 0
  451. Using commit_transaction;
  452. IF commit_transaction.SQLCode <> 0 THEN
  453. rslt = 0
  454. arg_msg = "更单据审核操作失败 ~n"+commit_transaction.SQLErrText
  455. GOTO ext
  456. END IF
  457. IF billtype = 1 THEN
  458. // IF uo_emptake.uof_add_emptake(empid,billid,rapmoneyid,billcode,&
  459. // outdate,amt,Descrp,0,False,arg_msg) = 0 THEN
  460. // rslt = 0
  461. // GOTO ext
  462. // END IF
  463. //ELSEIF billtype = 2 THEN
  464. // IF uo_emptake.uof_add_emptake(empid,billid,rapmoneyid,billcode,&
  465. // outdate,amt,Descrp,1,False,arg_msg) = 0 THEN
  466. // rslt = 0
  467. // GOTO ext
  468. // END IF
  469. END IF
  470. it_newbegin = False
  471. it_updatebegin = False
  472. ext:
  473. IF rslt = 0 THEN
  474. ROLLBACK Using commit_transaction;
  475. ELSEIF rslt = 1 And arg_ifcommit THEN
  476. COMMIT Using commit_transaction;
  477. END IF
  478. p_reset()
  479. Destroy uo_item
  480. Destroy uo_money
  481. Destroy uo_emptake
  482. Return (rslt)
  483. end function
  484. public function integer updatebegin (long arg_billid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
  485. //从置对象,设定业务类型与关联ID,准备更新进仓单
  486. //0 fail 1 success
  487. Long rslt = 1,CNT = 0
  488. IF sys_option_income_secaudit = -1000 THEN
  489. rslt = 0
  490. arg_msg = '选项:[328]其它收入支出单使用二级审核,读取初始默认值失败,操作取消!'
  491. GOTO ext
  492. END IF
  493. IF arg_billid <= 0 THEN
  494. rslt = 0
  495. arg_msg = '错误其他收入支出单唯一码'
  496. GOTO ext
  497. END IF
  498. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  499. rslt = 0
  500. GOTO ext
  501. END IF
  502. IF sys_option_income_secaudit = 0 THEN
  503. IF flag <> 0 THEN
  504. rslt = 0
  505. arg_msg = '已经处于审核或完成等状态,不可以修改,如果其他收入支出单未完成并要修改请先撤销审核'
  506. GOTO ext
  507. END IF
  508. ELSE
  509. IF secflag <> 0 THEN
  510. rslt = 0
  511. arg_msg = '已经处于财务确认状态,不可以修改,如果其他收入支出单未完成并要修改请先撤销财务确认'
  512. GOTO ext
  513. END IF
  514. END IF
  515. it_newbegin = False
  516. it_updatebegin = True
  517. p_clearmx() //清除明细
  518. amt = 0
  519. ext:
  520. IF rslt = 0 THEN p_reset()
  521. RETURN rslt
  522. end function
  523. public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit);
  524. Integer rslt = 1,cnt = 0,i
  525. Long ls_newid
  526. DateTime server_datetime
  527. Long ll_id
  528. String ls_sccode
  529. IF IsNull(credencecode) THEN credencecode = ''
  530. IF IsNull(banktypeid) THEN banktypeid = 0
  531. IF IsNull(amt) THEN amt = 0
  532. IF IsNull(accountsid) THEN accountsid = 0
  533. IF IsNull(Descrp) THEN Descrp = ''
  534. IF IsNull(rep) THEN rep = ''
  535. IF IsNull(arg_operator) THEN arg_operator = ''
  536. IF IsNull(rapmoneyid) THEN rapmoneyid = 0
  537. IF IsNull(itemid) THEN itemid = 0
  538. IF IsNull(deptid) THEN deptid = 0
  539. IF IsNull(scid) THEN scid = 0
  540. IF IsNull(itemflag) THEN itemflag = 1
  541. IF IsNull(moneyid) THEN moneyid = 0
  542. IF it_newbegin = False And it_updatebegin = False THEN
  543. rslt = 0
  544. arg_msg = "非编辑状态不可以提交"
  545. GOTO ext
  546. END IF
  547. IF it_mxbt = 0 THEN
  548. rslt = 0
  549. arg_msg = '没有明细内容'
  550. GOTO ext
  551. END IF
  552. amt = 0
  553. FOR i = 1 To it_mxbt
  554. amt = amt + incomemx[i].amt
  555. NEXT
  556. IF amt = 0 THEN
  557. rslt = 0
  558. arg_msg = "请输入金额"
  559. GOTO ext
  560. END IF
  561. IF f_check_inoutdate(0,outdate,False,arg_msg) = 0 THEN
  562. rslt = 0
  563. arg_msg = "该单据超出指定日期范围(单据限制录入天数)"
  564. GOTO ext
  565. END IF
  566. IF billtype = 1 Or billtype = 2 THEN
  567. IF empid = 0 THEN
  568. arg_msg = '请选择员工'
  569. rslt = 0
  570. GOTO ext
  571. END IF
  572. IF itemid = 0 THEN
  573. rslt = 0
  574. arg_msg = "请选择收支项目"
  575. GOTO ext
  576. END IF
  577. cnt = 0
  578. SELECT count(*) INTO :cnt
  579. FROM u_itemdef
  580. WHERE itemid = :itemid
  581. Using commit_transaction;
  582. IF commit_transaction.SQLCode <> 0 THEN
  583. arg_msg = '查询项目资料失败,'+sqlca.SQLErrText
  584. rslt = 0
  585. GOTO ext
  586. END IF
  587. END IF
  588. IF rep = '' THEN
  589. rslt = 0
  590. arg_msg = "请输入经手人"
  591. GOTO ext
  592. END IF
  593. IF banktypeid = 0 THEN
  594. rslt = 0
  595. arg_msg = "请选择结算方式"
  596. GOTO ext
  597. END IF
  598. IF accountsid = 0 THEN
  599. rslt = 0
  600. arg_msg = "请选择银行帐号"
  601. GOTO ext
  602. END IF
  603. SELECT moneyid
  604. INTO :rapmoneyid
  605. FROM u_accounts
  606. WHERE u_accounts.accountsid = :accountsid
  607. Using commit_transaction;
  608. IF commit_transaction.SQLCode <> 0 THEN
  609. arg_msg = '查询当前的出纳帐号币种失败,'+sqlca.SQLErrText
  610. rslt = 0
  611. GOTO ext
  612. END IF
  613. moneyid = rapmoneyid
  614. cnt = 0
  615. SELECT count(*)
  616. INTO :cnt
  617. FROM cw_currency
  618. WHERE cw_currency.moneyid = :moneyid
  619. USING commit_transaction;
  620. IF commit_transaction.SQLCode <> 0 THEN
  621. arg_msg = '查询币种失败,'+sqlca.SQLErrText
  622. rslt = 0
  623. GOTO ext
  624. END IF
  625. IF cnt <> 1 THEN
  626. arg_msg = '账号的币种重复或不存在!'
  627. rslt = 0
  628. GOTO ext
  629. END IF
  630. //IF credencecode = '' THEN
  631. // rslt = 0
  632. // arg_msg = "请输入相关号"
  633. // GOTO ext
  634. //END IF
  635. SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction ;
  636. IF commit_transaction.SQLCode <> 0 THEN
  637. rslt = 0
  638. arg_msg = "查询操作失败,日期 "
  639. GOTO ext
  640. END IF
  641. cnt = 0
  642. SELECT count(*) INTO :cnt
  643. FROM u_user
  644. Where username = :arg_operator Using commit_transaction ;
  645. IF commit_transaction.SQLCode <> 0 THEN
  646. rslt = 0
  647. arg_msg = "查询操作失败,操作员!"
  648. GOTO ext
  649. END IF
  650. IF cnt = 0 THEN
  651. rslt = 0
  652. arg_msg = "操作员姓名未登记或已取消!"
  653. GOTO ext
  654. END IF
  655. opdate = server_datetime //填写单据建立时间(最近修改时间)
  656. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  657. IF billid = 0 THEN //新建
  658. ll_id = f_sys_scidentity(0,"U_income_expenses","billid",arg_msg,True,id_sqlca)
  659. IF ll_id <= 0 THEN
  660. rslt = 0
  661. GOTO ext
  662. END IF
  663. //取分部代号
  664. IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
  665. rslt = 0
  666. GOTO ext
  667. END IF
  668. IF billtype = 0 THEN
  669. billcode = getid(0,ls_sccode + 'SZ',Date(server_datetime),False,commit_transaction)
  670. ELSEIF billtype = 1 THEN
  671. billcode = getid(0,ls_sccode + 'JH',Date(server_datetime),False,commit_transaction)
  672. ELSEIF billtype = 2 THEN
  673. billcode = getid(0,ls_sccode + 'HH',Date(server_datetime),False,commit_transaction)
  674. END IF
  675. IF billcode = "err" THEN
  676. billcode = ''
  677. rslt = 0
  678. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  679. GOTO ext
  680. END IF
  681. //读取新taskid
  682. billid = ll_id
  683. INSERT INTO U_income_expenses
  684. ( billid,
  685. billcode,
  686. credencecode,
  687. banktypeid,
  688. amt,
  689. accountsid,
  690. outdate,
  691. viewdate,
  692. Descrp,
  693. rep,
  694. rapmoneyid,
  695. itemid,
  696. billtype,
  697. empid,
  698. Opemp,
  699. Opdate,
  700. deptid,
  701. itemflag,
  702. scid,
  703. moneyid)
  704. VALUES
  705. (
  706. :billid,
  707. :billcode,
  708. :credencecode,
  709. :banktypeid,
  710. :amt,
  711. :accountsid,
  712. :outdate,
  713. :viewdate,
  714. :Descrp,
  715. :rep,
  716. :rapmoneyid,
  717. :itemid,
  718. :billtype,
  719. :empid,
  720. :arg_operator,
  721. :opdate,
  722. :deptid,
  723. :itemflag,
  724. :scid,
  725. :moneyid) Using commit_transaction ;
  726. IF commit_transaction.SQLCode <> 0 THEN
  727. if it_newbegin then billid = 0
  728. rslt = 0
  729. arg_msg = "插入其他收入支出单操作失败"+"~n"+commit_transaction.SQLErrText
  730. GOTO ext
  731. END IF
  732. // FOR i = 1 To it_mxbt
  733. // INSERT INTO U_income_expenses_mx
  734. // (billid,
  735. // printid,
  736. // itemid,
  737. // amt,
  738. // deptid,
  739. // buildtype,
  740. // relscid,
  741. // relbillid,
  742. // relbillcode,
  743. // useemp,
  744. // mxdscrp)
  745. // VALUES (:billid,
  746. // :incomemx[i].printid,
  747. // :incomemx[i].itemid,
  748. // :incomemx[i].amt,
  749. // :incomemx[i].deptid,
  750. // :incomemx[i].buildtype,
  751. // :incomemx[i].relscid,
  752. // :incomemx[i].relbillid,
  753. // :incomemx[i].relbillcode,
  754. // :incomemx[i].useemp,
  755. // :incomemx[i].mxdscrp) Using commit_transaction ;
  756. // IF commit_transaction.SQLCode <> 0 THEN
  757. // rslt = 0
  758. // arg_msg = "插入其他收入支出单明细操作失败"+"~n"+commit_transaction.SQLErrText
  759. // GOTO ext
  760. // END IF
  761. // NEXT
  762. ELSE //////////////////////////////////////////////// //更新
  763. UPDATE U_income_expenses
  764. SET
  765. billcode = :billcode,
  766. credencecode = :credencecode,
  767. banktypeid = :banktypeid,
  768. amt = :amt,
  769. accountsid = :accountsid,
  770. outdate = :outdate,
  771. viewdate= :viewdate,
  772. Descrp = :Descrp,
  773. rep = :rep,
  774. empid = :empid,
  775. rapmoneyid = :rapmoneyid,
  776. itemid = :itemid,
  777. ModDate = getdate(),
  778. ModEmp = :arg_operator,
  779. deptid = :deptid,
  780. itemflag = :itemflag,
  781. scid = :scid,
  782. moneyid = :moneyid
  783. WHERE U_income_expenses.billID = :billID
  784. Using commit_transaction;
  785. IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
  786. rslt = 0
  787. arg_msg = "更新其他收入支出单操作失败"+"~n"+commit_transaction.SQLErrText
  788. GOTO ext
  789. END IF
  790. DELETE FROM U_income_expenses_mx
  791. Where U_income_expenses_mx.billid = :billid Using commit_transaction;
  792. IF commit_transaction.SQLCode <> 0 THEN
  793. rslt = 0
  794. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  795. GOTO ext
  796. END IF
  797. // FOR i = 1 To it_mxbt
  798. // INSERT INTO U_income_expenses_mx
  799. // (billid,
  800. // printid,
  801. // itemid,
  802. // amt,
  803. // deptid,
  804. // buildtype,
  805. // relscid,
  806. // relbillid,
  807. // relbillcode,
  808. // useemp,
  809. // mxdscrp)
  810. // VALUES (:billid,
  811. // :incomemx[i].printid,
  812. // :incomemx[i].itemid,
  813. // :incomemx[i].amt,
  814. // :incomemx[i].deptid,
  815. // :incomemx[i].buildtype,
  816. // :incomemx[i].relscid,
  817. // :incomemx[i].relbillid,
  818. // :incomemx[i].relbillcode,
  819. // :incomemx[i].useemp,
  820. // :incomemx[i].mxdscrp) Using commit_transaction ;
  821. // IF commit_transaction.SQLCode <> 0 THEN
  822. // rslt = 0
  823. // arg_msg = "插入其他收入支出单明细操作失败"+"~n"+commit_transaction.SQLErrText
  824. // GOTO ext
  825. // END IF
  826. // NEXT
  827. END IF
  828. FOR i = 1 To it_mxbt
  829. INSERT INTO U_income_expenses_mx
  830. (billid,
  831. printid,
  832. itemid,
  833. amt,
  834. deptid,
  835. buildtype,
  836. relscid,
  837. relbillid,
  838. relbillcode,
  839. useemp,
  840. mxdscrp)
  841. VALUES (:billid,
  842. :incomemx[i].printid,
  843. :incomemx[i].itemid,
  844. :incomemx[i].amt,
  845. :incomemx[i].deptid,
  846. :incomemx[i].buildtype,
  847. :incomemx[i].relscid,
  848. :incomemx[i].relbillid,
  849. :incomemx[i].relbillcode,
  850. :incomemx[i].useemp,
  851. :incomemx[i].mxdscrp) Using commit_transaction ;
  852. IF commit_transaction.SQLCode <> 0 THEN
  853. if it_newbegin then billid = 0
  854. rslt = 0
  855. arg_msg = "插入其他收入支出单明细操作失败"+"~n"+commit_transaction.SQLErrText
  856. GOTO ext
  857. END IF
  858. NEXT
  859. it_newbegin = False
  860. it_updatebegin = False
  861. ext:
  862. IF rslt = 0 THEN
  863. ROLLBACK Using commit_transaction;
  864. p_clearmx()
  865. ELSEIF arg_ifcommit And rslt = 1 THEN
  866. COMMIT Using commit_transaction;
  867. END IF
  868. RETURN rslt
  869. end function
  870. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
  871. //0 fail 1 SUCCESS
  872. Int rslt = 1
  873. arg_newdescppart = Trim(arg_newdescppart)
  874. IF it_updatebegin Or it_newbegin THEN
  875. rslt = 0
  876. arG_MSG = "编辑状态下不可用"
  877. GOTO ext
  878. END IF
  879. IF arg_newdescppart = '' THEN
  880. rslt = 0
  881. arG_MSG = "要添加内容为空,操作取消"
  882. GOTO ext
  883. END IF
  884. IF p_getinfo(arg_billid,arG_MSG) = 0 THEN
  885. rslt = 0
  886. GOTO ext
  887. END IF
  888. IF flag <> 1 THEN
  889. rslt = 0
  890. arG_MSG = "待审核状态下不可用"
  891. GOTO ext
  892. END IF
  893. UPDATE U_income_expenses
  894. SET descrp = ltrim(rtrim(descrp))+' '+:arg_newdescppart
  895. Where U_income_expenses.billid = :arg_billid Using commit_transaction;
  896. IF commit_transaction.SQLCode <> 0 THEN
  897. rslt = 0
  898. arG_MSG = "添加单据备注操作失败"+"~n"+commit_transaction.SQLErrText
  899. ROLLBACK Using commit_transaction;
  900. GOTO ext
  901. END IF
  902. IF relrapid > 0 THEN
  903. UPDATE u_rap_money
  904. SET dscrp = ltrim(rtrim(dscrp)) + ' '+:arg_newdescppart
  905. Where rapmoneyid = :relrapid Using commit_transaction;
  906. IF commit_transaction.SQLCode <> 0 THEN
  907. rslt = 0
  908. arG_MSG = "添加相关出纳帐备注操作失败"+"~n"+commit_transaction.SQLErrText
  909. ROLLBACK Using commit_transaction;
  910. GOTO ext
  911. END IF
  912. END IF
  913. descrp = descrp+' '+arg_newdescppart
  914. it_newbegin = False
  915. it_updatebegin = False
  916. ext:
  917. IF arg_ifcommit And rslt = 1 THEN
  918. COMMIT Using commit_transaction;
  919. END IF
  920. p_reset()
  921. Return (rslt)
  922. end function
  923. public function integer cancelpermit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  924. Long ll_i
  925. DateTime nulldate
  926. SetNull(nulldate)
  927. IF sys_option_income_secaudit = -1000 THEN
  928. rslt = 0
  929. arg_msg = '选项:[328]其它收入支出单使用二级审核,读取初始默认值失败,操作取消!'
  930. GOTO ext
  931. END IF
  932. uo_iteminput uo_item
  933. uo_item = Create uo_iteminput
  934. uo_item.ib_CreateRapmoneyid = false
  935. IF arg_billid <= 0 THEN
  936. rslt = 0
  937. arg_msg = '错误单据唯一码'
  938. GOTO ext
  939. END IF
  940. IF getinfo(arg_billid,arg_msg) = 0 THEN
  941. rslt = 0
  942. GOTO ext
  943. END IF
  944. IF secflag = 0 THEN
  945. rslt = 0
  946. arg_msg = "单据未财务确认,请检查"
  947. GOTO ext
  948. END IF
  949. IF sys_option_income_secaudit = 1 THEN
  950. FOR ll_i = 1 To it_mxbt
  951. IF incomemx[ll_i].itemid = 0 THEN CONTINUE
  952. IF uo_item.del_iteminput(incomemx[ll_i].itemid,incomemx[ll_i].rel_dateint,1,arg_msg,False) = 0 THEN
  953. MessageBox('系统提示',arg_msg)
  954. rslt = 0
  955. GOTO ext
  956. END IF
  957. NEXT
  958. END IF
  959. UPDATE U_income_expenses
  960. SET secflag = 0,
  961. secauditemp = '',
  962. secauditdate = :nulldate
  963. WHERE U_income_expenses.billid = :arg_billid
  964. AND secflag = 1
  965. Using commit_transaction ;
  966. IF commit_transaction.SQLCode <> 0 THEN
  967. rslt = 0
  968. arg_msg = "单据财务反确认操作失败"+"~n"+commit_transaction.SQLErrText
  969. GOTO ext
  970. END IF
  971. it_newbegin = False
  972. it_updatebegin = False
  973. ext:
  974. IF rslt = 0 THEN
  975. ROLLBACK Using commit_transaction;
  976. ELSEIF rslt = 1 And arg_ifcommit THEN
  977. COMMIT Using commit_transaction;
  978. END IF
  979. p_reset()
  980. Return (rslt)
  981. end function
  982. public function integer permit2 (long arg_billid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  983. Long cnt = 0
  984. Long ll_i
  985. Long ref_dateint
  986. uo_iteminput uo_item
  987. uo_item = Create uo_iteminput
  988. uo_item.ib_CreateRapmoneyid = false
  989. IF arg_billid <= 0 THEN
  990. rslt = 0
  991. ARG_MSG = '错误单据唯一码'
  992. GOTO ext
  993. END IF
  994. IF sys_option_income_secaudit = -1000 THEN
  995. rslt = 0
  996. ARG_MSG = '选项:[328]其它收入支出单使用二级审核,读取初始默认值失败,操作取消!'
  997. GOTO ext
  998. END IF
  999. IF getinfo(arg_billid,ARG_MSG) = 0 THEN
  1000. rslt = 0
  1001. GOTO ext
  1002. END IF
  1003. IF flag = 0 THEN
  1004. rslt = 0
  1005. ARG_MSG = "单据未审核,不能进行财务确认"
  1006. GOTO ext
  1007. END IF
  1008. IF secflag = 1 THEN
  1009. rslt = 0
  1010. ARG_MSG = "单据已财务确认,请检查"
  1011. GOTO ext
  1012. END IF
  1013. cnt = 0
  1014. SELECT count(*) INTO :cnt
  1015. FROM u_user
  1016. Where username = :arg_emp Using commit_transaction;
  1017. IF commit_transaction.SQLCode <> 0 THEN
  1018. rslt = 0
  1019. ARG_MSG = "查询操作失败,操作员!"
  1020. GOTO ext
  1021. END IF
  1022. IF cnt = 0 THEN
  1023. rslt = 0
  1024. ARG_MSG = "操作员姓名未登记或已取消!"
  1025. GOTO ext
  1026. END IF
  1027. IF sys_option_income_secaudit = 1 THEN
  1028. s_iteminput s_input
  1029. FOR ll_i = 1 To it_mxbt
  1030. s_input.itemid = incomemx[ll_i].itemid
  1031. s_input.dateint = 0
  1032. s_input.outdate = outdate
  1033. s_input.dscrp = Descrp + ' ' + incomemx[ll_i].mxdscrp
  1034. s_input.outamt = incomemx[ll_i].amt
  1035. s_input.accountsid = accountsid
  1036. s_input.banktypeid = banktypeid
  1037. s_input.billcode = billcode
  1038. s_input.relcode = credencecode
  1039. s_input.buildtype = 1
  1040. s_input.opemp = publ_operator
  1041. s_input.relrep = rep
  1042. s_input.scid = scid
  1043. IF uo_item.add_iteminput(s_input,ARG_MSG,False) = 0 THEN
  1044. rslt = 0
  1045. GOTO ext
  1046. END IF
  1047. ref_dateint = uo_item.ref_dateint
  1048. UPDATE U_income_expenses_mx
  1049. SET rel_dateint = :ref_dateint
  1050. WHERE billid = :arg_billid
  1051. And printid = :incomemx[ll_i].printid Using commit_transaction;
  1052. IF commit_transaction.SQLCode <> 0 THEN
  1053. rslt = 0
  1054. ARG_MSG = "更单据明细相关信息失败 ~n"+commit_transaction.SQLErrText
  1055. GOTO ext
  1056. END IF
  1057. NEXT
  1058. END IF
  1059. UPDATE U_income_expenses
  1060. SET secauditemp = :arg_emp ,
  1061. secauditdate = getdate(),
  1062. U_income_expenses.secflag = 1
  1063. WHERE U_income_expenses.billid = :arg_billid
  1064. AND U_income_expenses.secflag = 0
  1065. AND U_income_expenses.flag = 1
  1066. Using commit_transaction;
  1067. IF commit_transaction.SQLCode <> 0 THEN
  1068. rslt = 0
  1069. ARG_MSG = "更单据审核操作失败"+"~n"+commit_transaction.SQLErrText
  1070. GOTO ext
  1071. END IF
  1072. it_newbegin = False
  1073. it_updatebegin = False
  1074. ext:
  1075. IF rslt = 0 THEN
  1076. ROLLBACK Using commit_transaction;
  1077. ELSEIF rslt = 1 And arg_ifcommit THEN
  1078. COMMIT Using commit_transaction;
  1079. END IF
  1080. p_reset()
  1081. Return (rslt)
  1082. end function
  1083. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);return add_dscrp(arg_billid, arg_newdescppart, arg_msg, true)
  1084. //Int rslt = 1
  1085. //s_rap_money_transfer arg_s_rap_money_transfer
  1086. //
  1087. //IF arg_billid <= 0 THEN
  1088. // rslt = 0
  1089. // arg_msg = '错误单据唯一码'
  1090. // GOTO ext
  1091. //END IF
  1092. //
  1093. //IF arg_newdescppart = '' THEN
  1094. // rslt = 0
  1095. // arg_msg = "要添加内容为空,操作取消"
  1096. // GOTO ext
  1097. //END IF
  1098. //
  1099. //IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  1100. // rslt = 0
  1101. // GOTO ext
  1102. //END IF
  1103. //
  1104. //IF flag = 0 THEN
  1105. // rslt = 0
  1106. // arg_msg = '单据未审核,不可以增加备注'
  1107. // GOTO ext
  1108. //END IF
  1109. //
  1110. //UPDATE U_income_expenses
  1111. // SET DSCRP = ltrim(rtrim(DSCRP))+' '+:arg_newdescppart
  1112. // WHERE U_income_expenses.billid = :arg_billid
  1113. // And flag = 1;
  1114. //IF SQLCA.SQLCode <> 0 THEN
  1115. // rslt = 0
  1116. // arg_msg = "添加备注操作失败"+"~n"+SQLCA.SQLErrText
  1117. // GOTO ext
  1118. //END IF
  1119. //
  1120. //ext:
  1121. //IF rslt = 1 THEN
  1122. // COMMIT;
  1123. //ELSE
  1124. // ROLLBACK;
  1125. //END IF
  1126. //
  1127. //Return (rslt)
  1128. end function
  1129. public function integer p_clearmx ();it_mxbt = 0
  1130. return 1
  1131. end function
  1132. public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  1133. Long i = 1 ,no_mxcheck
  1134. IF arg_billid <= 0 THEN
  1135. rslt = 0
  1136. arg_msg = '错误单据唯一码'
  1137. GOTO ext
  1138. END IF
  1139. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  1140. rslt = 0
  1141. GOTO ext
  1142. END IF
  1143. DECLARE cur_mx CURSOR FOR
  1144. SELECT billid,printid, itemid, amt, deptid, buildtype, relscid, relbillid, relbillcode,rel_dateint,useemp,mxdscrp
  1145. FROM U_income_expenses_mx
  1146. Where billid = :arg_billid Using commit_transaction;
  1147. OPEN cur_mx;
  1148. FETCH cur_mx INTO :incomemx[i].billid,
  1149. :incomemx[i].printid,
  1150. :incomemx[i].itemid,
  1151. :incomemx[i].amt,
  1152. :incomemx[i].deptid,
  1153. :incomemx[i].buildtype,
  1154. :incomemx[i].relscid,
  1155. :incomemx[i].relbillid,
  1156. :incomemx[i].relbillcode,
  1157. :incomemx[i].rel_dateint,
  1158. :incomemx[i].useemp,
  1159. :incomemx[i].mxdscrp;
  1160. DO WHILE sqlca.SQLCode = 0
  1161. i++
  1162. FETCH cur_mx INTO :incomemx[i].billid,
  1163. :incomemx[i].printid,
  1164. :incomemx[i].itemid,
  1165. :incomemx[i].amt,
  1166. :incomemx[i].deptid,
  1167. :incomemx[i].buildtype,
  1168. :incomemx[i].relscid,
  1169. :incomemx[i].relbillid,
  1170. :incomemx[i].relbillcode,
  1171. :incomemx[i].rel_dateint,
  1172. :incomemx[i].useemp,
  1173. :incomemx[i].mxdscrp;
  1174. LOOP
  1175. CLOSE cur_mx;
  1176. SELECT count(*) INTO :no_mxcheck
  1177. FROM U_income_expenses_mx
  1178. Where billid = :arg_billid Using commit_transaction;
  1179. IF commit_transaction.SQLCode <> 0 THEN
  1180. rslt = 0
  1181. arg_msg = "查询操作失败,收入支出单明细数量"
  1182. GOTO ext
  1183. END IF
  1184. IF i <> (no_mxcheck+1) THEN
  1185. rslt = 0
  1186. arg_msg = "查询操作失败,收入支出单明细"
  1187. GOTO ext
  1188. END IF
  1189. it_mxbt = i - 1
  1190. it_newbegin = False
  1191. it_updatebegin = False
  1192. ext:
  1193. IF rslt = 0 THEN p_reset()
  1194. RETURN rslt
  1195. end function
  1196. public function integer acceptmx (long arg_itemid, decimal arg_amt, long arg_deptid, integer arg_buildtype, long arg_relscid, long arg_relbillid, string arg_relbillcode, string arg_useemp, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
  1197. Long cnt
  1198. Int li_ifdepart,li_ifemp
  1199. IF it_newbegin = False And it_updatebegin = False THEN
  1200. rslt = 0
  1201. arg_msg = "非编辑状态不可以使用,操作取消"
  1202. GOTO ext
  1203. END IF
  1204. it_mxbt++
  1205. IF arg_itemid = 0 THEN
  1206. rslt = 0
  1207. arg_msg = "明细第"+String(it_mxbt)+"行,请选择收支项目"
  1208. GOTO ext
  1209. END IF
  1210. SELECT ifdepart,ifemp
  1211. INTO :li_ifdepart,:li_ifemp
  1212. FROM u_itemdef
  1213. WHERE itemid = :arg_itemid
  1214. Using commit_transaction;
  1215. IF commit_transaction.SQLCode <> 0 THEN
  1216. arg_msg = "明细第"+String(it_mxbt)+"行,查询项目资料失败,"+sqlca.SQLErrText
  1217. rslt = 0
  1218. GOTO ext
  1219. END IF
  1220. IF arg_buildtype = 0 THEN
  1221. arg_relscid = 0
  1222. arg_relbillid = 0
  1223. //arg_relbillcode = ''
  1224. IF li_ifdepart = 1 And arg_deptid = 0 THEN
  1225. arg_msg = "明细第"+String(it_mxbt)+"行,收支项目限制必须选择部门,请选择"
  1226. rslt = 0
  1227. GOTO ext
  1228. END IF
  1229. IF li_ifemp = 1 And Trim(arg_useemp) = '' THEN
  1230. arg_msg = "明细第"+String(it_mxbt)+"行,收支项目限制必须填写使用人"
  1231. rslt = 0
  1232. GOTO ext
  1233. END IF
  1234. END IF
  1235. incomemx[it_mxbt].itemid = arg_itemid
  1236. incomemx[it_mxbt].deptid = arg_deptid
  1237. incomemx[it_mxbt].relscid = arg_relscid
  1238. incomemx[it_mxbt].relbillid = arg_relbillid
  1239. incomemx[it_mxbt].buildtype = arg_buildtype
  1240. incomemx[it_mxbt].relbillcode = arg_relbillcode
  1241. incomemx[it_mxbt].printid = it_mxbt
  1242. incomemx[it_mxbt].amt = arg_amt
  1243. incomemx[it_mxbt].useemp = arg_useemp
  1244. incomemx[it_mxbt].mxdscrp = arg_mxdscrp
  1245. ext:
  1246. IF rslt = 0 THEN p_clearmx()
  1247. RETURN rslt
  1248. end function
  1249. public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg);
  1250. Int rslt = 1,cnt = 0
  1251. IF arg_billid = 0 THEN
  1252. rslt = 0
  1253. arg_msg = "没有审核对象"
  1254. GOTO ext
  1255. END IF
  1256. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  1257. rslt = 0
  1258. GOTO ext
  1259. END IF
  1260. IF flag = 0 THEN
  1261. rslt = 0
  1262. arg_msg = "单据没有审核"
  1263. GOTO ext
  1264. END IF
  1265. IF cwauditingflag = 1 THEN
  1266. rslt = 0
  1267. arg_msg = "单据已经总账审核"
  1268. GOTO ext
  1269. END IF
  1270. UPDATE u_income_expenses
  1271. SET cwauditingflag = 1,
  1272. cwauditingdate = getdate(),
  1273. cwauditingrep = :publ_operator
  1274. WHERE ( u_income_expenses.billid = :arg_billid ) AND
  1275. ( u_income_expenses.scid = :arg_scid) Using commit_transaction;
  1276. IF commit_transaction.SQLCode <> 0 THEN
  1277. rslt = 0
  1278. arg_msg = "因网络或其它原因导致总账审核操作失败"+"~n"+commit_transaction.SQLErrText
  1279. ROLLBACK Using commit_transaction;
  1280. GOTO ext
  1281. END IF
  1282. ext:
  1283. IF arg_ifcommit And rslt = 1 THEN
  1284. COMMIT Using commit_transaction;
  1285. END IF
  1286. Return (rslt)
  1287. end function
  1288. public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg);
  1289. Int rslt = 1,cnt = 0
  1290. IF arg_billid = 0 THEN
  1291. rslt = 0
  1292. arg_msg = "没有审核对象"
  1293. GOTO ext
  1294. END IF
  1295. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  1296. rslt = 0
  1297. GOTO ext
  1298. END IF
  1299. IF cwauditingflag = 0 THEN
  1300. rslt = 0
  1301. arg_msg = "单据没有总账审核"
  1302. GOTO ext
  1303. END IF
  1304. UPDATE u_income_expenses
  1305. SET cwauditingflag = 0,
  1306. cwauditingdate = NULL,
  1307. cwauditingrep = ''
  1308. WHERE ( u_income_expenses.billid = :arg_billid ) AND
  1309. ( u_income_expenses.scid = :arg_scid) Using commit_transaction;
  1310. IF commit_transaction.SQLCode <> 0 THEN
  1311. rslt = 0
  1312. arg_msg = "因网络或其它原因导致总账撤审操作失败"+"~n"+commit_transaction.SQLErrText
  1313. ROLLBACK Using commit_transaction;
  1314. GOTO ext
  1315. END IF
  1316. ext:
  1317. IF arg_ifcommit And rslt = 1 THEN
  1318. COMMIT Using commit_transaction;
  1319. END IF
  1320. Return (rslt)
  1321. end function
  1322. on uo_income_expenses.create
  1323. call super::create
  1324. TriggerEvent( this, "constructor" )
  1325. end on
  1326. on uo_income_expenses.destroy
  1327. TriggerEvent( this, "destructor" )
  1328. call super::destroy
  1329. end on
  1330. event constructor;String str_optionvalue,arg_msg
  1331. //f_get_sys_option_value('328',str_optionvalue,arg_msg)
  1332. //sys_option_income_secaudit = Long(str_optionvalue)
  1333. end event