uo_init.sru 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844
  1. $PBExportHeader$uo_init.sru
  2. $PBExportComments$初始化数据
  3. forward
  4. global type uo_init from nonvisualobject
  5. end type
  6. end forward
  7. global type uo_init from nonvisualobject
  8. end type
  9. global uo_init uo_init
  10. forward prototypes
  11. public function integer check_subid (string arg_subid, ref string arg_msg)
  12. public function integer initdeptbala (string arg_subid, long arg_deptid, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_rawbalance, decimal arg_debit, decimal arg_credit, decimal arg_balance, ref string arg_msg, boolean arg_ifcommit)
  13. public function integer inititembala (string arg_subid, long arg_itemid, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_rawbalance, decimal arg_debit, decimal arg_credit, decimal arg_balance, ref string arg_msg, boolean arg_ifcommit)
  14. public function integer initbalance (string arg_subid, decimal arg_ydebit, decimal arg_ycredit, decimal arg_mdebit, decimal arg_mcredit, decimal arg_debit, decimal arg_credit, decimal arg_balance, decimal arg_plhavedone, decimal arg_yrawdebit, decimal arg_yrawcredit, decimal arg_mrawdebit, decimal arg_mrawcredit, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_rawbalance, ref string arg_msg, boolean arg_ifcommit)
  15. public function integer initbalance_qty (string arg_subid, decimal arg_damount, decimal arg_camount, decimal arg_bamount, ref string arg_msg, boolean arg_ifcommit)
  16. public function integer sub_add_del_update (integer arg_add_or_del, string arg_subid, string arg_p_subid, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer uof_clear_initbalance (integer arg_if_raw, ref string arg_msg, long arg_moneyid)
  18. public function integer p_update_subid_p (ref string arg_msg)
  19. public function integer p_update_subid_p_qty (ref string arg_msg)
  20. end prototypes
  21. public function integer check_subid (string arg_subid, ref string arg_msg);//检查科目
  22. int rslt=1,cnt
  23. select count(subid) into :cnt from cw_subject where accsetid=:sys_accsetid and subid=:arg_subid;
  24. if sqlca.sqlcode<>0 then
  25. arg_msg='查询会计科目失败或该会计科目不存在'
  26. rslt=0
  27. goto ext
  28. end if
  29. if cnt > 1 then
  30. arg_msg='帐套存在二个相同的会计科目,请检查'
  31. rslt=0
  32. goto ext
  33. end if
  34. ext:
  35. return rslt
  36. end function
  37. public function integer initdeptbala (string arg_subid, long arg_deptid, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_rawbalance, decimal arg_debit, decimal arg_credit, decimal arg_balance, ref string arg_msg, boolean arg_ifcommit);//部门初始化
  38. //initdeptbala(arg_subid,arg_deptid,arg_rawdebit,arg_rawcredit,arg_rawbalance,
  39. // arg_debit,arg_credit,arg_balance,arg_msg,arg_ifcommit)
  40. int rslt=1
  41. if isnull(arg_rawdebit) then arg_rawdebit=0
  42. if isnull(arg_rawcredit) then arg_rawcredit=0
  43. if isnull(arg_rawbalance) then arg_rawbalance=0
  44. if isnull(arg_debit) then arg_debit=0
  45. if isnull(arg_credit) then arg_credit=0
  46. if isnull(arg_balance) then arg_balance=0
  47. if check_subid(arg_subid,arg_msg)=0 then
  48. rslt=0
  49. goto ext
  50. end if
  51. update cw_initdeptbala set
  52. rawdebit=:arg_rawdebit,
  53. rawcredit=:arg_rawcredit,
  54. rawbalance=:arg_rawbalance,
  55. debit=:arg_debit,
  56. credit=:arg_credit,
  57. balance=:arg_balance
  58. where accsetid=:sys_accsetid
  59. and subid=:arg_subid
  60. and deptid=:arg_deptid;
  61. if sqlca.sqlcode=0 then
  62. if sqlca.sqlnrows=0 then
  63. insert into cw_initdeptbala(accsetid,subid,deptid,rawdebit,rawcredit,rawbalance,debit,credit,balance)
  64. values(:sys_accsetid,:arg_subid,:arg_deptid,:arg_rawdebit,:arg_rawcredit,:arg_rawbalance,:arg_debit,:arg_credit,:arg_balance);
  65. if sqlca.sqlcode<>0 then
  66. arg_msg='部门初始化失败,插入'+sqlca.sqlerrtext
  67. rslt=0
  68. goto ext
  69. end if
  70. end if
  71. else
  72. arg_msg='更新部门初始化数据失败'+sqlca.sqlerrtext
  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. return rslt
  83. end function
  84. public function integer inititembala (string arg_subid, long arg_itemid, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_rawbalance, decimal arg_debit, decimal arg_credit, decimal arg_balance, ref string arg_msg, boolean arg_ifcommit);//项目初始化
  85. //inititembala(arg_subid,arg_itemid,arg_rawdebit,arg_rawcredit,arg_rawbalance,
  86. // arg_debit,arg_credit,arg_balance,arg_msg,arg_ifcommit)
  87. int rslt=1
  88. if isnull(arg_rawdebit) then arg_rawdebit=0
  89. if isnull(arg_rawcredit) then arg_rawcredit=0
  90. if isnull(arg_rawbalance) then arg_rawbalance=0
  91. if isnull(arg_debit) then arg_debit=0
  92. if isnull(arg_credit) then arg_credit=0
  93. if isnull(arg_balance) then arg_balance=0
  94. if check_subid(arg_subid,arg_msg)=0 then
  95. rslt=0
  96. goto ext
  97. end if
  98. update cw_inititembala set
  99. rawdebit=:arg_rawdebit,
  100. rawcredit=:arg_rawcredit,
  101. rawbalance=:arg_rawbalance,
  102. debit=:arg_debit,
  103. credit=:arg_credit,
  104. balance=:arg_balance
  105. where accsetid=:sys_accsetid
  106. and subid=:arg_subid
  107. and itemid=:arg_itemid;
  108. if sqlca.sqlcode=0 then
  109. if sqlca.sqlnrows=0 then
  110. insert into cw_inititembala(accsetid,subid,itemid,rawdebit,rawcredit,rawbalance,debit,credit,balance)
  111. values(:sys_accsetid,:arg_subid,:arg_itemid,:arg_rawdebit,:arg_rawcredit,:arg_rawbalance,:arg_debit,:arg_credit,:arg_balance);
  112. if sqlca.sqlcode<>0 then
  113. arg_msg='项目初始化失败,插入'+sqlca.sqlerrtext
  114. rslt=0
  115. goto ext
  116. end if
  117. end if
  118. else
  119. arg_msg='更新项目初始化数据失败'+sqlca.sqlerrtext
  120. rslt=0
  121. goto ext
  122. end if
  123. ext:
  124. if rslt=0 then
  125. rollback;
  126. elseif rslt=1 and arg_ifcommit then
  127. commit;
  128. end if
  129. return rslt
  130. end function
  131. public function integer initbalance (string arg_subid, decimal arg_ydebit, decimal arg_ycredit, decimal arg_mdebit, decimal arg_mcredit, decimal arg_debit, decimal arg_credit, decimal arg_balance, decimal arg_plhavedone, decimal arg_yrawdebit, decimal arg_yrawcredit, decimal arg_mrawdebit, decimal arg_mrawcredit, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_rawbalance, ref string arg_msg, boolean arg_ifcommit);//====================================================================
  132. // Function: uo_init::initbalance()
  133. //--------------------------------------------------------------------
  134. // Description: 初始期初数
  135. //--------------------------------------------------------------------
  136. // Arguments:
  137. // string arg_subid
  138. // decimal arg_ydebit
  139. // decimal arg_ycredit
  140. // decimal arg_mdebit
  141. // decimal arg_mcredit
  142. // decimal arg_debit
  143. // decimal arg_credit
  144. // decimal arg_balance
  145. // decimal arg_plhavedone
  146. // decimal arg_yrawdebit
  147. // decimal arg_yrawcredit
  148. // decimal arg_mrawdebit
  149. // decimal arg_mrawcredit
  150. // decimal arg_rawdebit
  151. // decimal arg_rawcredit
  152. // decimal arg_rawbalance
  153. // string arg_msg
  154. // boolean arg_ifcommit
  155. //--------------------------------------------------------------------
  156. // Returns: integer
  157. //--------------------------------------------------------------------
  158. // Author: yyx Date: 2004.11.16
  159. //--------------------------------------------------------------------
  160. // Modify History:
  161. //
  162. //====================================================================
  163. Int rslt = 1
  164. String rst_psubid
  165. uo_subject uo_sub
  166. uo_sub = CREATE uo_subject
  167. IF check_subid(arg_subid,arg_msg) = 0 THEN
  168. rslt = 0
  169. GOTO ext
  170. END IF
  171. UPDATE cw_initbalance SET
  172. ydebit = :arg_ydebit,
  173. ycredit = :arg_ycredit,
  174. mdebit = :arg_mdebit,
  175. mcredit = :arg_mcredit,
  176. debit = :arg_debit,
  177. credit = :arg_credit,
  178. balance = :arg_balance,
  179. plhavedone = :arg_plhavedone,
  180. yrawdebit = :arg_yrawdebit,
  181. yrawcredit = :arg_yrawcredit,
  182. mrawdebit = :arg_mrawdebit,
  183. mrawcredit = :arg_mrawcredit,
  184. rawdebit = :arg_rawdebit,
  185. rawcredit = :arg_rawcredit,
  186. rawbalance = :arg_rawbalance
  187. WHERE accsetid = :sys_accsetid
  188. AND subid = :arg_subid;
  189. IF sqlca.SQLCode = 0 THEN
  190. IF sqlca.SQLNRows = 0 THEN
  191. INSERT INTO cw_initbalance(accsetid,subid,
  192. ydebit,ycredit,mdebit,mcredit,debit,credit,balance,plhavedone,
  193. yrawdebit,yrawcredit,mrawdebit,mrawcredit,rawdebit,rawcredit,rawbalance)
  194. VALUES(:sys_accsetid,:arg_subid,
  195. :arg_ydebit,:arg_ycredit,:arg_mdebit,:arg_mcredit,:arg_debit,:arg_credit,:arg_balance,:arg_plhavedone,
  196. :arg_yrawdebit,:arg_yrawcredit,:arg_mrawdebit,:arg_mrawcredit,:arg_rawdebit,:arg_rawcredit,:arg_rawbalance);
  197. IF sqlca.SQLCode <> 0 THEN
  198. arg_msg = '初始化科目:'+arg_subid+'期初数失败,插入'+sqlca.SQLErrText
  199. rslt = 0
  200. GOTO ext
  201. END IF
  202. END IF
  203. ELSE
  204. arg_msg = '更新会计科目:'+arg_subid+'期初数据失败'+sqlca.SQLErrText
  205. rslt = 0
  206. GOTO ext
  207. END IF
  208. ext:
  209. IF rslt = 0 THEN
  210. ROLLBACK;
  211. ELSEIF rslt = 1 AND arg_ifcommit THEN
  212. COMMIT;
  213. END IF
  214. RETURN rslt
  215. end function
  216. public function integer initbalance_qty (string arg_subid, decimal arg_damount, decimal arg_camount, decimal arg_bamount, ref string arg_msg, boolean arg_ifcommit);//初始期初数[数量]
  217. //initbalance_qty(arg_subid,arg_damount,arg_camount,arg_bamount,ref arg_msg,arg_ifcommit)
  218. int rslt=1
  219. if isnull(arg_damount) then arg_damount=0
  220. if isnull(arg_camount) then arg_camount=0
  221. if isnull(arg_bamount) then arg_bamount=0
  222. if check_subid(arg_subid,arg_msg)=0 then
  223. rslt=0
  224. goto ext
  225. end if
  226. update cw_initbalance set
  227. damount=:arg_damount,
  228. camount=:arg_camount,
  229. bamount=:arg_bamount
  230. where accsetid=:sys_accsetid
  231. and subid=:arg_subid;
  232. if sqlca.sqlcode=0 then
  233. if sqlca.sqlnrows=0 then
  234. insert into cw_initbalance(accsetid,subid,damount,camount,bamount)
  235. values(:sys_accsetid,:arg_subid,:arg_damount,:arg_camount,:arg_bamount);
  236. if sqlca.sqlcode<>0 then
  237. arg_msg='初始化期初数失败,插入'+sqlca.sqlerrtext
  238. rslt=0
  239. goto ext
  240. end if
  241. end if
  242. else
  243. arg_msg='更新期初数据失败'+sqlca.sqlerrtext
  244. rslt=0
  245. goto ext
  246. end if
  247. ext:
  248. if rslt=0 then
  249. rollback;
  250. elseif rslt=1 and arg_ifcommit then
  251. commit;
  252. end if
  253. return rslt
  254. end function
  255. public function integer sub_add_del_update (integer arg_add_or_del, string arg_subid, string arg_p_subid, ref string arg_msg, boolean arg_ifcommit);//增加_删除第一子科目
  256. //add_del_update(arg_add_or_del,arg_subid,ref arg_msg,if_commit)
  257. //arg_add_or_del 0:del,1:add
  258. //1.更新凭证
  259. //2.更新项目初始化
  260. //3.更新部门初始化
  261. //4.更新帐务初始化
  262. //5.更新结余
  263. long rslt=1
  264. if arg_add_or_del=1 then
  265. //1.更新凭证
  266. update cw_credencemx set subid=:arg_subid
  267. where cw_credencemx.accsetid=:sys_accsetid
  268. and cw_credencemx.subid=:arg_p_subid;
  269. if sqlca.sqlcode=-1 then
  270. messagebox(publ_operator,'新建第一子科目:更新父科目为子科目失败[更新凭证]'+sqlca.sqlerrtext)
  271. rslt=0
  272. goto ext
  273. end if
  274. //2.更新项目初始化
  275. insert into cw_inititembala(accsetid,subid,itemid,rawdebit,rawcredit,rawbalance,debit,credit,balance)
  276. select :sys_accsetid,:arg_subid,itemid,rawdebit,rawcredit,rawbalance,debit,credit,balance
  277. from cw_inititembala
  278. where cw_inititembala.accsetid=:sys_accsetid
  279. and cw_inititembala.subid=:arg_p_subid;
  280. if sqlca.sqlcode=-1 then
  281. messagebox(publ_operator,'新建第一子科目失败[项目初始化]'+sqlca.sqlerrtext)
  282. rslt=0
  283. goto ext
  284. end if
  285. //3.更新部门初始化
  286. insert into cw_initdeptbala(accsetid,subid,deptid,rawdebit,rawcredit,rawbalance,debit,credit,balance)
  287. select :sys_accsetid,:arg_subid,deptid,rawdebit,rawcredit,rawbalance,debit,credit,balance
  288. from cw_initdeptbala
  289. where cw_initdeptbala.accsetid=:sys_accsetid
  290. and cw_initdeptbala.subid=:arg_p_subid;
  291. if sqlca.sqlcode=-1 then
  292. messagebox(publ_operator,'新建第一子科目失败[部门初始化]'+sqlca.sqlerrtext)
  293. rslt=0
  294. goto ext
  295. end if
  296. //4.更新帐务初始化
  297. insert into cw_initbalance(accsetid,subid,moneyid,detailflag,dcflag,hsqty,
  298. rawdebit,rawcredit,rawbalance,yrawdebit,yrawcredit,mrawdebit,mrawcredit,damount,
  299. debit,camount,credit,bamount,balance,ydebit,ycredit,mdebit,mcredit,plhavedone)
  300. select :sys_accsetid,:arg_subid,moneyid,detailflag,dcflag,hsqty,
  301. rawdebit,rawcredit,rawbalance,yrawdebit,yrawcredit,mrawdebit,mrawcredit,damount,
  302. debit,camount,credit,bamount,balance,ydebit,ycredit,mdebit,mcredit,plhavedone
  303. from cw_initbalance
  304. where cw_initbalance.accsetid=:sys_accsetid
  305. and cw_initbalance.subid=:arg_p_subid;
  306. if sqlca.sqlcode=-1 then
  307. messagebox(publ_operator,'新建第一子科目失败[帐务初始化]'+sqlca.sqlerrtext)
  308. rslt=0
  309. goto ext
  310. end if
  311. //5.更新结余
  312. insert into cw_balance(accsetid,subid,yearmon,ybrawdebit,
  313. ybrawcredit,brawdebit,brawcredit,rawdebit,rawcredit,erawdebit,erawcredit,yrawdebit,yrawcredit,
  314. ybcredit,bdebit,bcredit,debit,credit,edebit,ecredit,ydebit,ycredit,
  315. ybamt,ydamt,ycamt,bamt,damt,camt)
  316. select :sys_accsetid,:arg_subid,yearmon,ybrawdebit,
  317. ybrawcredit,brawdebit,brawcredit,rawdebit,rawcredit,erawdebit,erawcredit,yrawdebit,yrawcredit,
  318. ybcredit,bdebit,bcredit,debit,credit,edebit,ecredit,ydebit,ycredit,
  319. ybamt,ydamt,ycamt,bamt,damt,camt
  320. from cw_balance
  321. where cw_balance.accsetid=:sys_accsetid
  322. and cw_balance.subid=:arg_p_subid;
  323. if sqlca.sqlcode=-1 then
  324. messagebox(publ_operator,'新建第一子科目失败[更新结余]'+sqlca.sqlerrtext)
  325. rslt=0
  326. goto ext
  327. end if
  328. else
  329. //1.更新凭证
  330. update cw_credencemx set subid=:arg_p_subid
  331. where cw_credencemx.accsetid=:sys_accsetid
  332. and cw_credencemx.subid=:arg_subid;
  333. if sqlca.sqlcode=-1 then
  334. messagebox(publ_operator,'删除第一子科目:更新子科目为父科目失败[更新凭证]'+sqlca.sqlerrtext)
  335. rslt=0
  336. goto ext
  337. end if
  338. //2.更新项目初始化
  339. delete cw_inititembala
  340. where cw_inititembala.accsetid=:sys_accsetid
  341. and cw_inititembala.subid=:arg_subid;
  342. if sqlca.sqlcode=-1 then
  343. messagebox(publ_operator,'删除第一子科目失败[项目初始化]'+sqlca.sqlerrtext)
  344. rslt=0
  345. goto ext
  346. end if
  347. //3.更新部门初始化
  348. delete cw_initdeptbala
  349. where cw_initdeptbala.accsetid=:sys_accsetid
  350. and cw_initdeptbala.subid=:arg_subid;
  351. if sqlca.sqlcode=-1 then
  352. messagebox(publ_operator,'删除第一子科目失败[部门初始化]'+sqlca.sqlerrtext)
  353. rslt=0
  354. goto ext
  355. end if
  356. //4.更新帐务初始化
  357. delete cw_initbalance
  358. where cw_initbalance.accsetid=:sys_accsetid
  359. and cw_initbalance.subid=:arg_subid;
  360. if sqlca.sqlcode=-1 then
  361. messagebox(publ_operator,'删除第一子科目失败[帐务初始化]'+sqlca.sqlerrtext)
  362. rslt=0
  363. goto ext
  364. end if
  365. //5.更新结余
  366. delete cw_balance
  367. where cw_balance.accsetid=:sys_accsetid
  368. and cw_balance.subid=:arg_subid;
  369. if sqlca.sqlcode=-1 then
  370. messagebox(publ_operator,'删除第一子科目失败[更新结余]'+sqlca.sqlerrtext)
  371. rslt=0
  372. goto ext
  373. end if
  374. end if
  375. ext:
  376. if rslt=0 then
  377. rollback;
  378. elseif rslt=1 and arg_ifcommit then
  379. commit;
  380. end if
  381. return rslt
  382. end function
  383. public function integer uof_clear_initbalance (integer arg_if_raw, ref string arg_msg, long arg_moneyid);//====================================================================
  384. // Function: uo_init::uof_clear_initbalance()
  385. //--------------------------------------------------------------------
  386. // Description:
  387. //--------------------------------------------------------------------
  388. // Arguments:
  389. // integer arg_if_raw
  390. // string arg_msg
  391. //--------------------------------------------------------------------
  392. // Returns: integer
  393. //--------------------------------------------------------------------
  394. // Author: yyx Date: 2004.11.16
  395. //--------------------------------------------------------------------
  396. // Modify History:
  397. //
  398. //====================================================================
  399. Int rslt = 1
  400. UPDATE cw_initbalance SET
  401. cw_initbalance.ydebit = 0 ,
  402. cw_initbalance.ycredit = 0 ,
  403. cw_initbalance.mdebit = 0 ,
  404. cw_initbalance.mcredit = 0 ,
  405. cw_initbalance.debit = 0 ,
  406. cw_initbalance.credit = 0 ,
  407. cw_initbalance.balance = 0 ,
  408. cw_initbalance.plhavedone = 0 ,
  409. cw_initbalance.yrawdebit = 0 ,
  410. cw_initbalance.yrawcredit = 0 ,
  411. cw_initbalance.mrawdebit = 0 ,
  412. cw_initbalance.mrawcredit = 0 ,
  413. cw_initbalance.rawdebit = 0 ,
  414. cw_initbalance.rawcredit = 0 ,
  415. cw_initbalance.rawbalance = 0
  416. FROM cw_initbalance,cw_subject
  417. WHERE cw_initbalance.accsetid = :sys_accsetid
  418. AND cw_initbalance.accsetid = cw_subject.accsetid
  419. AND cw_initbalance.subid = cw_subject.subid
  420. AND cw_subject.hswb = :arg_if_raw
  421. AND cw_subject.detailflag = 1
  422. And ( cw_subject.moneyid = :arg_moneyid OR :arg_moneyid = 0 ) ;
  423. IF sqlca.SQLCode <> 0 THEN
  424. arg_msg = '初始化金额清零失败 >>'+sqlca.SQLErrText
  425. rslt = 0
  426. GOTO ext
  427. END IF
  428. UPDATE cw_initbalance SET
  429. cw_initbalance.ydebit = 0 ,
  430. cw_initbalance.ycredit = 0 ,
  431. cw_initbalance.mdebit = 0 ,
  432. cw_initbalance.mcredit = 0 ,
  433. cw_initbalance.debit = 0 ,
  434. cw_initbalance.credit = 0 ,
  435. cw_initbalance.balance = 0 ,
  436. cw_initbalance.plhavedone = 0 ,
  437. cw_initbalance.yrawdebit = 0 ,
  438. cw_initbalance.yrawcredit = 0 ,
  439. cw_initbalance.mrawdebit = 0 ,
  440. cw_initbalance.mrawcredit = 0 ,
  441. cw_initbalance.rawdebit = 0 ,
  442. cw_initbalance.rawcredit = 0 ,
  443. cw_initbalance.rawbalance = 0
  444. FROM cw_initbalance,cw_subject
  445. WHERE cw_initbalance.accsetid = :sys_accsetid
  446. AND cw_initbalance.accsetid = cw_subject.accsetid
  447. AND cw_initbalance.subid = cw_subject.subid
  448. AND cw_subject.detailflag = 0;
  449. IF sqlca.SQLCode <> 0 THEN
  450. arg_msg = '初始化金额清零失败(上级科目) >>'+sqlca.SQLErrText
  451. rslt = 0
  452. GOTO ext
  453. END IF
  454. ext:
  455. IF rslt = 0 THEN
  456. ROLLBACK;
  457. END IF
  458. RETURN rslt
  459. end function
  460. public function integer p_update_subid_p (ref string arg_msg);//==============================================================================
  461. // 函数: uo_init::p_update_subid_p()
  462. //------------------------------------------------------------------------------
  463. // 描述:
  464. //------------------------------------------------------------------------------
  465. // 参数:
  466. // string arg_subid
  467. // string arg_msg
  468. //------------------------------------------------------------------------------
  469. // 返回值: integer
  470. //------------------------------------------------------------------------------
  471. // 作者: Trueway Lee 日期: 2005.11.21
  472. //------------------------------------------------------------------------------
  473. // 修改历史:
  474. //
  475. //==============================================================================
  476. Int rslt = 1
  477. Long ll_i,k
  478. String ls_p_subid
  479. String ls_subid,ls_arr_subid[]
  480. uo_subject uo_sub
  481. uo_sub = CREATE uo_subject
  482. Decimal ld_ydebit[],ld_ycredit[],ld_mdebit[],ld_mcredit[]
  483. Decimal ld_debit[],ld_credit[],ld_balance[],ld_plhavedone[]
  484. Decimal ld_yrawdebit[],ld_yrawcredit[],ld_mrawdebit[],ld_mrawcredit[]
  485. Decimal ld_rawdebit[],ld_rawcredit[],ld_rawbalance[]
  486. Decimal ls_ydebit,ls_ycredit,ls_mdebit,ls_mcredit
  487. Decimal ls_debit,ls_credit,ls_balance,ls_plhavedone
  488. Decimal ls_yrawdebit,ls_yrawcredit,ls_mrawdebit,ls_mrawcredit
  489. Decimal ls_rawdebit,ls_rawcredit,ls_rawbalance
  490. DECLARE cur_pf CURSOR FOR
  491. SELECT cw_subject.subid
  492. FROM cw_subject,cw_initbalance
  493. WHERE cw_subject.accsetid = :sys_accsetid
  494. and cw_subject.accsetid = cw_initbalance.accsetid
  495. and cw_subject.subid = cw_initbalance.subid
  496. AND cw_subject.detailflag = 1;
  497. OPEN cur_pf;
  498. FETCH cur_pf INTO :ls_subid;
  499. DO WHILE sqlca.SQLCode = 0
  500. k++
  501. ls_arr_subid[k] = ls_subid
  502. FETCH cur_pf INTO :ls_subid;
  503. LOOP
  504. CLOSE cur_pf;
  505. FOR ll_i = 1 TO k
  506. SELECT
  507. ydebit ,
  508. ycredit ,
  509. mdebit ,
  510. mcredit,
  511. debit ,
  512. credit,
  513. balance ,
  514. plhavedone,
  515. yrawdebit ,
  516. yrawcredit ,
  517. mrawdebit ,
  518. mrawcredit,
  519. rawdebit,
  520. rawcredit ,
  521. rawbalance
  522. INTO
  523. :ls_ydebit,
  524. :ls_ycredit,
  525. :ls_mdebit,
  526. :ls_mcredit,
  527. :ls_debit,
  528. :ls_credit,
  529. :ls_balance,
  530. :ls_plhavedone,
  531. :ls_yrawdebit,
  532. :ls_yrawcredit,
  533. :ls_mrawdebit,
  534. :ls_mrawcredit,
  535. :ls_rawdebit,
  536. :ls_rawcredit,
  537. :ls_rawbalance
  538. FROM cw_initbalance
  539. Where accsetid = :sys_accsetid
  540. AND subid = :ls_arr_subid[ll_i];
  541. IF sqlca.SQLCode = -1 THEN
  542. arg_msg = '查询科目:'+ls_arr_subid[ll_i]+'初始化金额失败'
  543. rslt = 0
  544. GOTO ext
  545. ELSEIF sqlca.SQLCode = 100 THEN
  546. ld_ydebit[ll_i] = 0
  547. ld_ycredit[ll_i] = 0
  548. ld_mdebit[ll_i] = 0
  549. ld_mcredit[ll_i] = 0
  550. ld_debit[ll_i] = 0
  551. ld_credit[ll_i] = 0
  552. ld_balance[ll_i] = 0
  553. ld_plhavedone[ll_i] = 0
  554. ld_yrawdebit[ll_i] = 0
  555. ld_yrawcredit[ll_i] = 0
  556. ld_mrawdebit[ll_i] = 0
  557. ld_mrawcredit[ll_i] = 0
  558. ld_rawdebit[ll_i] = 0
  559. ld_rawcredit[ll_i] = 0
  560. ld_rawbalance[ll_i] = 0
  561. ELSEIF sqlca.SQLCode = 0 THEN
  562. ld_ydebit[ll_i] = ls_ydebit
  563. ld_ycredit[ll_i] = ls_ycredit
  564. ld_mdebit[ll_i] = ls_mdebit
  565. ld_mcredit[ll_i] = ls_mcredit
  566. ld_debit[ll_i] = ls_debit
  567. ld_credit[ll_i] = ls_credit
  568. ld_balance[ll_i] = ls_balance
  569. ld_plhavedone[ll_i] = ls_plhavedone
  570. ld_yrawdebit[ll_i] = ls_yrawdebit
  571. ld_yrawcredit[ll_i] = ls_yrawcredit
  572. ld_mrawdebit[ll_i] = ls_mrawdebit
  573. ld_mrawcredit[ll_i] = ls_mrawcredit
  574. ld_rawdebit[ll_i] = ls_rawdebit
  575. ld_rawcredit[ll_i] = ls_rawcredit
  576. ld_rawbalance[ll_i] = ls_rawbalance
  577. END IF
  578. NEXT
  579. FOR ll_i = 1 TO k
  580. ls_p_subid = uo_sub.p_parent_subid(ls_arr_subid[ll_i])
  581. DO WHILE ls_p_subid <> ''
  582. UPDATE cw_initbalance SET
  583. ydebit = ydebit + :ld_ydebit[ll_i] ,
  584. ycredit = ycredit + :ld_ycredit[ll_i] ,
  585. mdebit = mdebit + :ld_mdebit[ll_i] ,
  586. mcredit = mcredit + :ld_mcredit[ll_i],
  587. debit = debit + :ld_debit[ll_i],
  588. credit = credit + :ld_credit[ll_i],
  589. balance = balance + :ld_balance[ll_i] ,
  590. plhavedone = plhavedone + :ld_plhavedone[ll_i],
  591. yrawdebit = yrawdebit + :ld_yrawdebit[ll_i],
  592. yrawcredit = yrawcredit + :ld_yrawcredit[ll_i] ,
  593. mrawdebit = mrawdebit + :ld_mrawdebit[ll_i],
  594. mrawcredit = mrawcredit + :ld_mrawcredit[ll_i],
  595. rawdebit = rawdebit + :ld_rawdebit[ll_i] ,
  596. rawcredit = rawcredit + :ld_rawcredit[ll_i] ,
  597. rawbalance = rawbalance + :ld_rawbalance[ll_i]
  598. WHERE accsetid = :sys_accsetid
  599. AND subid = :ls_p_subid;
  600. IF sqlca.SQLCode = 0 THEN
  601. IF sqlca.SQLNRows = 0 THEN
  602. INSERT INTO cw_initbalance(accsetid,subid,
  603. ydebit,ycredit,mdebit,mcredit,debit,credit,balance,plhavedone,
  604. yrawdebit,yrawcredit,mrawdebit,mrawcredit,rawdebit,rawcredit,rawbalance)
  605. VALUES(:sys_accsetid,:ls_p_subid,
  606. :ld_ydebit[ll_i],:ld_ycredit[ll_i],:ld_mdebit[ll_i],:ld_mcredit[ll_i],
  607. :ld_debit[ll_i],:ld_credit[ll_i],:ld_balance[ll_i],:ld_plhavedone[ll_i],
  608. :ld_yrawdebit[ll_i],:ld_yrawcredit[ll_i],:ld_mrawdebit[ll_i],:ld_mrawcredit[ll_i],
  609. :ld_rawdebit[ll_i],:ld_rawcredit[ll_i],:ld_rawbalance[ll_i]);
  610. IF sqlca.SQLCode <> 0 THEN
  611. arg_msg = '初始化期初数[上级科目]失败,插入'+sqlca.SQLErrText
  612. rslt = 0
  613. GOTO ext
  614. END IF
  615. END IF
  616. ELSE
  617. arg_msg = '更新期初数据[上级科目]失败'+sqlca.SQLErrText
  618. rslt = 0
  619. GOTO ext
  620. END IF
  621. ls_p_subid = uo_sub.p_parent_subid(ls_p_subid)
  622. LOOP
  623. NEXT
  624. ext :
  625. IF rslt = 0 THEN
  626. ROLLBACK;
  627. ELSE
  628. COMMIT;
  629. END IF
  630. DESTROY uo_sub
  631. RETURN rslt
  632. end function
  633. public function integer p_update_subid_p_qty (ref string arg_msg);//==============================================================================
  634. // 函数: uo_init::p_update_subid_p()
  635. //------------------------------------------------------------------------------
  636. // 描述:
  637. //------------------------------------------------------------------------------
  638. // 参数:
  639. // string arg_subid
  640. // string arg_msg
  641. //------------------------------------------------------------------------------
  642. // 返回值: integer
  643. //------------------------------------------------------------------------------
  644. // 作者: Trueway Lee 日期: 2005.11.21
  645. //------------------------------------------------------------------------------
  646. // 修改历史:
  647. //
  648. //==============================================================================
  649. Int rslt = 1
  650. Long ll_i,k
  651. String ls_p_subid
  652. String ls_subid,ls_arr_subid[]
  653. uo_subject uo_sub
  654. uo_sub = CREATE uo_subject
  655. decimal ld_DAmount[],ld_CAmount[],ld_BAmount[]
  656. decimal ls_DAmount,ls_CAmount,ls_BAmount
  657. DECLARE cur_pf CURSOR FOR
  658. SELECT cw_subject.subid
  659. FROM cw_subject,cw_initbalance
  660. WHERE cw_subject.accsetid = :sys_accsetid
  661. and cw_subject.accsetid = cw_initbalance.accsetid
  662. and cw_subject.subid = cw_initbalance.subid
  663. AND cw_subject.detailflag = 1;
  664. OPEN cur_pf;
  665. FETCH cur_pf INTO :ls_subid;
  666. DO WHILE sqlca.SQLCode = 0
  667. k++
  668. ls_arr_subid[k] = ls_subid
  669. FETCH cur_pf INTO :ls_subid;
  670. LOOP
  671. CLOSE cur_pf;
  672. FOR ll_i = 1 TO k
  673. SELECT
  674. DAmount,
  675. CAmount,
  676. BAmount
  677. INTO
  678. :ls_DAmount,
  679. :ls_CAmount,
  680. :ls_BAmount
  681. FROM cw_initbalance
  682. Where accsetid = :sys_accsetid
  683. AND subid = :ls_arr_subid[ll_i];
  684. IF sqlca.SQLCode = -1 THEN
  685. arg_msg = '查询科目:'+ls_arr_subid[ll_i]+'初始化金额失败'
  686. rslt = 0
  687. GOTO ext
  688. ELSEIF sqlca.SQLCode = 100 THEN
  689. ld_DAmount[ll_i] = 0
  690. ld_CAmount[ll_i] = 0
  691. ld_BAmount[ll_i] = 0
  692. ELSEIF sqlca.SQLCode = 0 THEN
  693. ld_DAmount[ll_i] = ls_DAmount
  694. ld_CAmount[ll_i] = ls_CAmount
  695. ld_BAmount[ll_i] = ls_BAmount
  696. END IF
  697. NEXT
  698. FOR ll_i = 1 TO k
  699. ls_p_subid = uo_sub.p_parent_subid(ls_arr_subid[ll_i])
  700. DO WHILE ls_p_subid <> ''
  701. UPDATE cw_initbalance SET
  702. DAmount = DAmount + :ld_DAmount[ll_i],
  703. CAmount = CAmount + :ld_CAmount[ll_i],
  704. BAmount = BAmount + :ld_BAmount[ll_i]
  705. WHERE accsetid = :sys_accsetid
  706. AND subid = :ls_p_subid;
  707. IF sqlca.SQLCode = 0 THEN
  708. IF sqlca.SQLNRows = 0 THEN
  709. INSERT INTO cw_initbalance(accsetid,subid,
  710. DAmount,CAmount,BAmount)
  711. VALUES(:sys_accsetid,:ls_p_subid,
  712. :ld_DAmount[ll_i],:ld_CAmount[ll_i],:ld_BAmount[ll_i]);
  713. IF sqlca.SQLCode <> 0 THEN
  714. arg_msg = '初始化期初数[上级科目]失败,插入'+sqlca.SQLErrText
  715. rslt = 0
  716. GOTO ext
  717. END IF
  718. END IF
  719. ELSE
  720. arg_msg = '更新期初数据[上级科目]失败'+sqlca.SQLErrText
  721. rslt = 0
  722. GOTO ext
  723. END IF
  724. ls_p_subid = uo_sub.p_parent_subid(ls_p_subid)
  725. LOOP
  726. NEXT
  727. ext :
  728. IF rslt = 0 THEN
  729. ROLLBACK;
  730. ELSE
  731. COMMIT;
  732. END IF
  733. DESTROY uo_sub
  734. RETURN rslt
  735. end function
  736. on uo_init.create
  737. TriggerEvent( this, "constructor" )
  738. end on
  739. on uo_init.destroy
  740. TriggerEvent( this, "destructor" )
  741. end on