uo_sptamt_other.sru 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560
  1. $PBExportHeader$uo_sptamt_other.sru
  2. forward
  3. global type uo_sptamt_other from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_sptamt_other from nonvisualobject
  7. end type
  8. global uo_sptamt_other uo_sptamt_other
  9. type variables
  10. PUBLIC PROTECTEDWRITE Long Baid //自动增量id
  11. PUBLIC PROTECTEDWRITE String BaCode //罚款单的唯一编号
  12. PUBLIC PROTECTEDWRITE DateTime opdate //建立时间,自动
  13. PUBLIC PROTECTEDWRITE String opemp //建立人
  14. PUBLIC PROTECTEDWRITE DateTime moddate //修改时间,自动
  15. PUBLIC PROTECTEDWRITE String modemp //修改人
  16. PUBLIC PROTECTEDWRITE Int flag = 0 //审核标志
  17. PUBLIC PROTECTEDWRITE DateTime auditingdate //审核时间
  18. PUBLIC PROTECTEDWRITE String auditingrep //审核操作员
  19. PUBLIC PROTECTEDWRITE Int confirmflag = 0 //确认标志
  20. PUBLIC PROTECTEDWRITE DateTime confirmdate //确认时间
  21. PUBLIC PROTECTEDWRITE String confirmemp //确认人
  22. PUBLIC PROTECTEDWRITE Int secflag = 0 //审核标志
  23. PUBLIC PROTECTEDWRITE DateTime secdate //审核时间
  24. PUBLIC PROTECTEDWRITE String secemp //审核操作员
  25. Long banktypeid
  26. Long scid
  27. Long cusid
  28. Long accountid
  29. DateTime BaDate
  30. Decimal Bmstamt, Bmstamt_mxsum
  31. decimal Zqamt, Zqamt_mxsum
  32. String dscrp
  33. Int billtype //0-收客户款; 1-付供应商款; 2-退客户款; 3-供应商退款
  34. Long itemid
  35. Long relid //记录主表的应收帐相关takeid
  36. Long reldateint //收入支出账id
  37. long relrapid //出纳账id
  38. String BaRep
  39. Long moneyid
  40. Decimal mrate
  41. DateTime viewdate
  42. string relcode
  43. string fpcode
  44. Int cwauditingflag = 0 //总账审核标记
  45. DateTime cwauditingdate //总账审核时间
  46. String cwauditingrep //总账审核操作员
  47. PRIVATE:
  48. Boolean it_newbegin = FALSE //新建标志
  49. Boolean it_updatebegin = FALSE//修改标志
  50. S_BmstamtMX BmstamtMX[]
  51. Long it_MXBT = 0
  52. end variables
  53. forward prototypes
  54. public function integer p_reset ()
  55. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  56. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg)
  57. public function integer newbegin (long arg_scid, ref string arg_msg)
  58. public function integer del (long arg_scid, long arg_billid, ref string arg_msg)
  59. public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  60. public function integer confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  61. public function integer cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  62. public function integer add_dscrp (long arg_Baid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  63. public function integer secauditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  64. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  65. public function integer uof_update_cust (long arg_billid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit)
  66. public function integer acceptmx (s_bmstamtmx s_mx, ref string arg_msg)
  67. public function integer p_clearmx ()
  68. public function integer uof_acceptmx_chk (s_bmstamtmx s_mx, ref string arg_msg)
  69. public function integer auditing_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  70. public function integer uof_auditing_end (ref string arg_msg)
  71. public function integer uof_auditing_cancel_end (ref string arg_msg)
  72. public function integer uof_secauditing_end (ref string arg_msg)
  73. public function integer uof_secauditing_cancel_end (ref string arg_msg)
  74. public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  75. public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  76. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  77. public function long getinfo (long arg_billid, ref string arg_msg)
  78. end prototypes
  79. public function integer p_reset ();//INT p_RESET()
  80. //清除对象及其明细
  81. banktypeid = 0
  82. Baid = 0
  83. BaCode = ''
  84. opemp = ''
  85. auditingrep = ''
  86. flag = 0
  87. cusid = 0
  88. Bmstamt = 0
  89. Zqamt = 0
  90. Bmstamt_mxsum = 0
  91. Zqamt_mxsum = 0
  92. dscrp = ''
  93. itemid = 0
  94. billtype = 0
  95. BaRep = ''
  96. moneyid = 0
  97. accountid = 0
  98. scid = 0
  99. p_clearmx()
  100. it_newbegin = FALSE
  101. it_updatebegin = FALSE
  102. RETURN 1
  103. end function
  104. public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i,if_auto=0
  105. DateTime server_dt
  106. Long ls_newid
  107. String ls_sccode
  108. Long ll_moneyid_account
  109. IF IsNull(cusid) THEN cusid = 0
  110. IF IsNull(accountid) THEN accountid = 0
  111. IF IsNull(dscrp) THEN dscrp = ''
  112. IF IsNull(Bmstamt) THEN Bmstamt = 0
  113. IF IsNull(Zqamt) THEN Zqamt = 0
  114. IF IsNull(scid) THEN scid = 0
  115. IF IsNull(billtype) THEN billtype = 0
  116. IF IsNull(itemid) THEN itemid = 0
  117. IF IsNull(BaRep) THEN BaRep = ''
  118. IF IsNull(moneyid) THEN moneyid = 0
  119. IF IsNull(mrate) THEN mrate = 0
  120. IF IsNull(relcode) THEN relcode = ''
  121. IF IsNull(fpcode) THEN fpcode = ''
  122. IF Not ( it_updatebegin Or it_newbegin) THEN
  123. rslt = 0
  124. arG_MSG = "非编辑状态下不可用"
  125. GOTO ext
  126. END IF
  127. IF accountid = 0 THEN
  128. arG_MSG = '请选择帐号'
  129. rslt = 0
  130. GOTO ext
  131. END IF
  132. SELECT moneyid INTO :ll_moneyid_account
  133. FROM u_accounts
  134. Where accountsid = :accountid;
  135. IF sqlca.SQLCode <> 0 THEN
  136. arG_MSG = '查询帐号币种失败,'+sqlca.SQLErrText
  137. rslt = 0
  138. GOTO ext
  139. END IF
  140. IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0
  141. IF ll_moneyid_account = 0 THEN
  142. arG_MSG = '帐号币种未指定,请检查'
  143. rslt = 0
  144. GOTO ext
  145. END IF
  146. //
  147. ////检查本次收金额 >= 单据明细本次应收; 折扣金额 = 单据明细本次折扣金额
  148. //
  149. //if_auto=integer(f_ProfileString (sys_empid, 'w_sptamt_other', "if_auto", '1'))
  150. //if if_auto = 1 then
  151. // IF MessageBox ("询问","主表金额不等于明细金额汇总,是否继续按明细汇总保存?(是按明细汇总,否按主表金额",Question!,YesNo! ) = 2 THEN
  152. // else
  153. // Bmstamt = Bmstamt_mxsum
  154. // end if
  155. //else
  156. //end if
  157. //
  158. IF billtype = 3 THEN
  159. IF cusid = 0 THEN
  160. arG_MSG = '请先选择供应商'
  161. rslt = 0
  162. GOTO ext
  163. END IF
  164. SELECT count(*) INTO :cnt
  165. FROM u_spt
  166. Where sptid = :cusid;
  167. IF sqlca.SQLCode <> 0 THEN
  168. arG_MSG = '查询供应商资料失败'
  169. rslt = 0
  170. GOTO ext
  171. END IF
  172. IF cnt > 1 THEN
  173. arG_MSG = '供应商资料重复'
  174. rslt = 0
  175. GOTO ext
  176. END IF
  177. END IF
  178. IF moneyid = 0 THEN
  179. arG_MSG = '请选择币种'
  180. rslt = 0
  181. GOTO ext
  182. END IF
  183. IF mrate <= 0 THEN
  184. arG_MSG = '请输入币种汇率'
  185. rslt = 0
  186. GOTO ext
  187. END IF
  188. IF moneyid <> ll_moneyid_account And mrate = 1 THEN
  189. arG_MSG = '收款币种与帐号币种不相同,汇率不能设为1'
  190. rslt = 0
  191. GOTO ext
  192. END IF
  193. IF moneyid = ll_moneyid_account And mrate <> 1 THEN
  194. arG_MSG = '收款币种与帐号币种相同,汇率要设为1'
  195. rslt = 0
  196. GOTO ext
  197. END IF
  198. IF f_check_inoutdate(0,BaDate,False,arG_MSG) = 0 THEN
  199. rslt = 0
  200. arG_MSG = "该单据超出指定日期范围(单据限制录入天数)"
  201. GOTO ext
  202. END IF
  203. cnt = 0
  204. SELECT count(*) INTO :cnt
  205. FROM u_itemdef
  206. Where itemid = :itemid;
  207. IF sqlca.SQLCode <> 0 THEN
  208. arG_MSG = '查询项目资料失败,'+sqlca.SQLErrText
  209. rslt = 0
  210. GOTO ext
  211. END IF
  212. IF cnt <> 1 THEN
  213. arG_MSG = '项目资料不存在或重复'
  214. rslt = 0
  215. GOTO ext
  216. END IF
  217. //20100426
  218. Long ll_itemflag
  219. SELECT itemflag
  220. INTO :ll_itemflag
  221. FROM u_itemdef
  222. Where itemid = :itemid;
  223. IF sqlca.SQLCode <> 0 THEN
  224. arG_MSG = '查询项目资料核算方向失败,'+sqlca.SQLErrText
  225. rslt = 0
  226. GOTO ext
  227. END IF
  228. IF billtype = 2 And ll_itemflag = -1 THEN
  229. arG_MSG = '其他收款单,不能选择核算支出方向的收支项目'
  230. rslt = 0
  231. GOTO ext
  232. END IF
  233. IF banktypeid = 0 THEN
  234. arG_MSG = '没有结算方式'
  235. rslt = 0
  236. GOTO ext
  237. END IF
  238. IF Bmstamt = 0 THEN
  239. arG_MSG = '请输入正确的金额'
  240. rslt = 0
  241. GOTO ext
  242. END IF
  243. SELECT Top 1 getdate() Into :server_dt From u_user;
  244. IF sqlca.SQLCode <> 0 THEN
  245. rslt = 0
  246. arG_MSG = "查询操作失败,日期 "
  247. GOTO ext
  248. END IF
  249. IF Year(Date(BaDate)) < 2000 Or IsNull(BaDate) THEN
  250. rslt = 0
  251. arG_MSG = "时间不合理"
  252. GOTO ext
  253. END IF
  254. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  255. IF it_newbegin THEN //新建
  256. ls_newid = f_sys_scidentity(0,"u_Bmstamt","Baid",arG_MSG,True,sqlca)
  257. IF ls_newid <= 0 THEN
  258. rslt = 0
  259. GOTO ext
  260. END IF
  261. //取分部代号
  262. IF f_get_sccode(0,sqlca,ls_sccode,arG_MSG) = 0 THEN
  263. rslt = 0
  264. GOTO ext
  265. END IF
  266. IF billtype = 3 THEN //其他付款单
  267. BaCode = getid(0,ls_sccode + "PO",Date(server_dt),True,sqlca) //取得新单据编号
  268. END IF
  269. IF BaCode = "err" THEN
  270. BaCode = ''
  271. rslt = 0
  272. arG_MSG = "无法获取单据编号"
  273. GOTO ext
  274. END IF
  275. INSERT INTO u_Bmstamt (
  276. scid,
  277. Baid,
  278. BaCode,
  279. BaDate,
  280. cusid,
  281. Bmstamt,
  282. dscrp,
  283. opdate,
  284. opemp,
  285. accountid,
  286. banktypeid,
  287. billtype,
  288. itemid,
  289. BaRep,
  290. moneyid,
  291. mrate,
  292. viewdate,
  293. relcode,
  294. fpcode,
  295. Zqamt)
  296. VALUES (
  297. :scid,
  298. :ls_newid,
  299. :BaCode,
  300. :BaDate,
  301. :cusid,
  302. :Bmstamt,
  303. :dscrp,
  304. getdate(),
  305. :publ_operator,
  306. :accountid,
  307. :banktypeid,
  308. :billtype,
  309. :itemid,
  310. :BaRep,
  311. :moneyid,
  312. :mrate,
  313. :viewdate,
  314. :relcode,
  315. :fpcode,
  316. :Zqamt);
  317. IF sqlca.SQLCode <> 0 THEN
  318. rslt = 0
  319. arG_MSG = "插入单据操作失败"+"~n"+sqlca.SQLErrText
  320. GOTO ext
  321. END IF
  322. Baid = ls_newid
  323. ELSE //////////////////////////////////////////////// //更新
  324. UPDATE u_Bmstamt
  325. SET BaDate = :BaDate,
  326. cusid = :cusid,
  327. Bmstamt = :Bmstamt,
  328. Zqamt = :Zqamt,
  329. dscrp = :dscrp,
  330. opdate = getdate(),
  331. opemp = :publ_operator,
  332. BaCode = :BaCode,
  333. scid = :scid,
  334. accountid = :accountid,
  335. banktypeid = :banktypeid,
  336. itemid = :itemid,
  337. BaRep = :BaRep,
  338. moneyid = :moneyid,
  339. mrate = :mrate,
  340. viewdate = :viewdate,
  341. relcode = :relcode,
  342. fpcode = :fpcode,
  343. modemp = :publ_operator,
  344. moddate = getdate()
  345. Where Baid = :Baid;
  346. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
  347. rslt = 0
  348. arG_MSG = "更新单据操作失败"+"~n"+sqlca.SQLErrText
  349. GOTO ext
  350. END IF
  351. //删除原有明细
  352. DELETE FROM u_Bmstamtmx
  353. Where u_Bmstamtmx.Baid = :Baid Using sqlca;
  354. IF sqlca.SQLCode <> 0 THEN
  355. rslt = 0
  356. arG_MSG = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  357. GOTO ext
  358. END IF
  359. END IF
  360. FOR i = 1 To it_mxbt
  361. INSERT INTO u_Bmstamtmx
  362. (Baid,
  363. printid,
  364. scid,
  365. takeid,
  366. takedate,
  367. msttakeamt,
  368. takeamt,
  369. Zqamt,
  370. Ttakeamt,
  371. TZqamt,
  372. billid,
  373. billcode,
  374. relid,
  375. relcode,
  376. relprintid,
  377. mxdscrp)
  378. VALUES (:Baid,
  379. :BmstamtMX[i].printid,
  380. :scid,
  381. :BmstamtMX[i].takeid,
  382. :BmstamtMX[i].takedate,
  383. :BmstamtMX[i].msttakeamt,
  384. :BmstamtMX[i].takeamt,
  385. :BmstamtMX[i].Zqamt,
  386. :BmstamtMX[i].Ttakeamt,
  387. :BmstamtMX[i].TZqamt,
  388. :BmstamtMX[i].billid,
  389. :BmstamtMX[i].billcode,
  390. :BmstamtMX[i].relid,
  391. :BmstamtMX[i].relcode,
  392. :BmstamtMX[i].relprintid,
  393. :BmstamtMX[i].mxdscrp);
  394. IF sqlca.SQLCode <> 0 THEN
  395. IF it_newbegin THEN Baid = 0
  396. rslt = 0
  397. IF Pos(sqlca.SQLErrText, 'IX_u_Bmstamtmx') > 0 THEN
  398. arG_MSG = "插入明细操作失败,存在重复的凭证"+"~n"+sqlca.SQLErrText
  399. ELSE
  400. arG_MSG = "插入明细操作失败"+"~n"+sqlca.SQLErrText
  401. END IF
  402. GOTO ext
  403. END IF
  404. NEXT
  405. it_newbegin = False
  406. it_updatebegin = False
  407. ext:
  408. IF rslt = 0 THEN
  409. p_clearmx()
  410. ROLLBACK;
  411. ELSEIF rslt = 1 And arg_ifcommit THEN
  412. COMMIT;
  413. END IF
  414. Return(rslt)
  415. end function
  416. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);//====================================================================
  417. // Function: updatebegin(arg_billid,arg_msg)
  418. //--------------------------------------------------------------------
  419. // Description:
  420. //--------------------------------------------------------------------
  421. // Arguments:
  422. // value long arg_billid
  423. // reference string arg_msg
  424. //--------------------------------------------------------------------
  425. // Returns: integer
  426. //--------------------------------------------------------------------
  427. // Author: yyx Date: 2003.11.21
  428. //--------------------------------------------------------------------
  429. // Modify History:
  430. //
  431. //====================================================================
  432. Int rslt = 1
  433. IF arg_billid <= 0 THEN
  434. Baid = 0
  435. arg_msg = '错误的单据ID'
  436. GOTO ext
  437. END IF
  438. SELECT
  439. u_Bmstamt.Baid,
  440. u_Bmstamt.BaCode,
  441. u_Bmstamt.cusid,
  442. u_Bmstamt.Bmstamt,
  443. u_Bmstamt.dscrp ,
  444. u_Bmstamt.BaDate,
  445. u_Bmstamt.scid,
  446. u_Bmstamt.accountid,
  447. u_Bmstamt.flag
  448. Into
  449. :Baid,
  450. :BaCode,
  451. :cusid,
  452. :Bmstamt,
  453. :dscrp,
  454. :BaDate,
  455. :scid,
  456. :accountid,
  457. :flag
  458. From u_Bmstamt
  459. Where Baid = :arg_billid;
  460. IF sqlca.SQLCode <> 0 THEN
  461. rslt = 0
  462. arg_msg = '查询数据操作失败,单据'+sqlca.SQLErrText
  463. GOTO ext
  464. END IF
  465. IF flag = 1 THEN
  466. rslt = 0
  467. arg_msg = '单据已经审核,不可以修改'
  468. GOTO ext
  469. END IF
  470. Baid = arg_billid
  471. scid = arg_scid
  472. it_newbegin = False
  473. it_updatebegin = True
  474. p_clearmx() //清除明细
  475. ext:
  476. IF rslt = 0 THEN p_reset()
  477. RETURN rslt
  478. end function
  479. public function integer newbegin (long arg_scid, ref string arg_msg);Int rslt = 1
  480. IF arg_scid < 0 THEN
  481. arg_msg = '请选择分部'
  482. rslt = 0
  483. GOTO ext
  484. END IF
  485. p_reset()
  486. scid = arg_scid
  487. it_newbegin = True
  488. it_updatebegin = False
  489. ext:
  490. IF rslt = 0 THEN p_reset()
  491. RETURN rslt
  492. end function
  493. public function integer del (long arg_scid, long arg_billid, ref string arg_msg);//====================================================================
  494. // Function: del(arg_billid,arg_msg)
  495. //--------------------------------------------------------------------
  496. // Description:
  497. //--------------------------------------------------------------------
  498. // Arguments:
  499. // value long arg_billid
  500. // reference string arg_msg
  501. //--------------------------------------------------------------------
  502. // Returns: integer
  503. //--------------------------------------------------------------------
  504. // Author: yyx Date: 2003.11.21
  505. //--------------------------------------------------------------------
  506. // Modify History:
  507. //
  508. //====================================================================
  509. Int rslt = 1
  510. IF arg_billid <= 0 THEN
  511. rslt = 0
  512. arg_msg = "没有删除对象,操作取消"
  513. GOTO ext
  514. END IF
  515. IF it_newbegin Or it_updatebegin THEN
  516. rslt = 0
  517. arg_msg = "编辑状态下不可以执行,操作取消"
  518. GOTO ext
  519. END IF
  520. SELECT u_Bmstamt.flag, confirmflag
  521. INTO :flag, :confirmflag
  522. FROM u_Bmstamt
  523. Where u_Bmstamt.Baid = :arg_billid;
  524. IF sqlca.SQLCode <> 0 THEN
  525. rslt = 0
  526. arg_msg = '查询收款单操作失败'
  527. GOTO ext
  528. END IF
  529. IF confirmflag = 1 THEN
  530. rslt = 0
  531. arg_msg = "单据已经确认,不可以删除"
  532. GOTO ext
  533. END IF
  534. IF flag = 1 THEN
  535. rslt = 0
  536. arg_msg = "单据已经审核,不可以删除"
  537. GOTO ext
  538. END IF
  539. DELETE FROM u_Bmstamt
  540. Where u_Bmstamt.Baid = :arg_billid ;
  541. IF sqlca.SQLCode <> 0 THEN
  542. rslt = 0
  543. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  544. GOTO ext
  545. END IF
  546. DELETE FROM u_Bmstamtmx
  547. Where u_Bmstamtmx.Baid = :arg_billid ;
  548. IF sqlca.SQLCode <> 0 THEN
  549. rslt = 0
  550. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  551. GOTO ext
  552. END IF
  553. it_newbegin = False
  554. it_updatebegin = False
  555. ext:
  556. IF rslt = 0 THEN
  557. ROLLBACK;
  558. p_reset()
  559. ELSE
  560. COMMIT;
  561. END IF
  562. Return (rslt)
  563. end function
  564. public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);
  565. Long cnt = 0
  566. Long i
  567. Int rslt = 1
  568. Long ref_rapid
  569. Long ref_dateint
  570. String ls_name
  571. String ls_dscrp
  572. If getinfo(arg_billid,arg_msg) = 0 Then
  573. rslt = 0
  574. Goto ext
  575. End If
  576. If flag = 1 Then
  577. rslt = 0
  578. arg_msg = '单据已经审核,不可以再审核'
  579. Goto ext
  580. End If
  581. If billtype = 3 Then
  582. If sys_option_msttake_takeamt_secaudit = 0 Then
  583. Update u_Bmstamt
  584. Set auditemp = :publ_operator,
  585. auditdate = getdate(),
  586. flag = 1,
  587. secemp = :publ_operator,
  588. secdate = getdate(),
  589. secflag = 1
  590. Where u_Bmstamt.Baid = :arg_billid
  591. And flag = 0;
  592. Else
  593. Update u_Bmstamt
  594. Set auditemp = :publ_operator,
  595. auditdate = getdate(),
  596. flag = 1
  597. Where u_Bmstamt.Baid = :arg_billid
  598. And flag = 0;
  599. End If
  600. End If
  601. If sqlca.SQLCode <> 0 Then
  602. rslt = 0
  603. arg_msg = "审核单据操作失败,"+"~n"+sqlca.SQLErrText
  604. Goto ext
  605. ElseIf sqlca.SQLNRows = 0 Then
  606. rslt = 0
  607. arg_msg = "单据正在审核,请稍后查询,"+"~n"+sqlca.SQLErrText
  608. Goto ext
  609. End If
  610. //If uof_auditing_end(arg_msg) = 0 Then
  611. // rslt = 0
  612. // Goto ext
  613. //End If
  614. //
  615. //兼容二级审模式 . 使用二级审时,本审核只更新标记。使用一级审,本审核同时生成相关出纳。
  616. //uof_auditing_end。出纳代码在 uof_secauditing_end
  617. If sys_option_msttake_takeamt_secaudit = 0 Then
  618. If uof_secauditing_end(arg_msg) = 0 Then
  619. rslt = 0
  620. Goto ext
  621. End If
  622. End If
  623. flag = 1
  624. ext:
  625. If rslt = 0 Then
  626. Rollback;
  627. ElseIf rslt = 1 And arg_ifcommit Then
  628. Commit;
  629. End If
  630. Return rslt
  631. end function
  632. public function integer confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0
  633. Int rslt = 1
  634. IF getinfo(arg_billid,arg_msg) = 0 THEN
  635. rslt = 0
  636. GOTO ext
  637. END IF
  638. //IF flag = 0 THEN
  639. // rslt = 0
  640. // arg_msg = '单据未审核,不可以确认'
  641. // GOTO ext
  642. //END IF
  643. IF confirmflag = 1 THEN
  644. rslt = 0
  645. arg_msg = '单据已确认,不可以确认'
  646. GOTO ext
  647. END IF
  648. UPDATE u_Bmstamt
  649. SET confirmemp = :publ_operator,
  650. confirmdate = getdate(),
  651. confirmflag = 1
  652. WHERE u_Bmstamt.Baid = :arg_billid
  653. AND confirmflag = 0;
  654. IF sqlca.SQLCode <> 0 THEN
  655. rslt = 0
  656. arg_msg = "确认单据操作失败,"+"~n"+sqlca.SQLErrText
  657. GOTO ext
  658. ELSEIF sqlca.SQLNRows = 0 THEN
  659. rslt = 0
  660. arg_msg = "单据正在确认,请稍后查询,"+"~n"+sqlca.SQLErrText
  661. GOTO ext
  662. END IF
  663. confirmflag = 1
  664. ext:
  665. IF rslt = 0 THEN
  666. ROLLBACK;
  667. ELSEIF rslt = 1 AND arg_ifcommit THEN
  668. COMMIT;
  669. END IF
  670. RETURN rslt
  671. end function
  672. public function integer cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0
  673. Int rslt = 1
  674. datetime null_dt
  675. setnull(null_dt)
  676. IF getinfo(arg_billid,arg_msg) = 0 THEN
  677. rslt = 0
  678. GOTO ext
  679. END IF
  680. IF confirmflag = 0 THEN
  681. rslt = 0
  682. arg_msg = '单据未确认,不可以反确认'
  683. GOTO ext
  684. END IF
  685. UPDATE u_Bmstamt
  686. SET confirmemp = '',
  687. confirmdate = :null_dt,
  688. confirmflag = 0
  689. WHERE u_Bmstamt.Baid = :arg_billid
  690. AND confirmflag = 1;
  691. IF sqlca.SQLCode <> 0 THEN
  692. rslt = 0
  693. arg_msg = "反确认单据操作失败,"+"~n"+sqlca.SQLErrText
  694. GOTO ext
  695. ELSEIF sqlca.SQLNRows = 0 THEN
  696. rslt = 0
  697. arg_msg = "单据正在反确认,请稍后查询,"+"~n"+sqlca.SQLErrText
  698. GOTO ext
  699. END IF
  700. confirmflag = 0
  701. ext:
  702. IF rslt = 0 THEN
  703. ROLLBACK;
  704. ELSEIF rslt = 1 AND arg_ifcommit THEN
  705. COMMIT;
  706. END IF
  707. RETURN rslt
  708. end function
  709. public function integer add_dscrp (long arg_Baid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
  710. //0 fail 1 SUCCESS
  711. Int rslt = 1
  712. arg_newdescppart = Trim(arg_newdescppart)
  713. IF it_updatebegin OR it_newbegin THEN
  714. rslt = 0
  715. arG_MSG = "编辑状态下不可用"
  716. GOTO ext
  717. END IF
  718. IF getinfo(arg_Baid,arG_MSG) = 0 THEN
  719. rslt = 0
  720. GOTO ext
  721. END IF
  722. IF flag = 0 THEN
  723. rslt = 0
  724. arG_MSG = "非审核状态下不可用"
  725. GOTO ext
  726. END IF
  727. UPDATE u_Bmstamt
  728. SET DSCRP = ltrim(rtrim(DSCRP))+' '+:arg_newdescppart
  729. Where u_Bmstamt.Baid = :arg_Baid;
  730. IF SQLCA.SQLCode <> 0 THEN
  731. rslt = 0
  732. arG_MSG = "添加单据备注操作失败"+"~n"+SQLCA.SQLErrText
  733. GOTO ext
  734. END IF
  735. DSCRP = DSCRP+' '+arg_newdescppart
  736. ext:
  737. IF rslt = 0 THEN
  738. ROLLBACK;
  739. ELSEIF rslt = 1 AND arg_ifcommit THEN
  740. COMMIT;
  741. END IF
  742. Return (rslt)
  743. end function
  744. public function integer secauditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);
  745. Int rslt = 1
  746. IF getinfo(arg_billid,arg_msg) = 0 THEN
  747. rslt = 0
  748. GOTO ext
  749. END IF
  750. IF flag = 0 THEN
  751. rslt = 0
  752. arg_msg = '单据未初审,不可以终审'
  753. GOTO ext
  754. END IF
  755. IF secflag = 1 THEN
  756. rslt = 0
  757. arg_msg = '单据已经审核,不可以再审核'
  758. GOTO ext
  759. END IF
  760. UPDATE u_Bmstamt
  761. SET secemp = :publ_operator,
  762. secdate = getdate(),
  763. secflag = 1
  764. WHERE u_Bmstamt.Baid = :arg_billid
  765. AND flag = 1
  766. AND secflag = 0 ;
  767. IF sqlca.SQLCode <> 0 THEN
  768. rslt = 0
  769. arg_msg = "最终审核单据操作失败,"+"~n"+sqlca.SQLErrText
  770. GOTO ext
  771. ELSEIF sqlca.SQLNRows = 0 THEN
  772. rslt = 0
  773. arg_msg = "单据正在审核,请稍后查询,"+"~n"+sqlca.SQLErrText
  774. GOTO ext
  775. END IF
  776. IF uof_secauditing_end(arg_msg) = 0 THEN
  777. rslt = 0
  778. GOTO ext
  779. END IF
  780. flag = 1
  781. secflag = 1
  782. ext:
  783. IF rslt = 0 THEN
  784. ROLLBACK;
  785. ELSEIF rslt = 1 AND arg_ifcommit THEN
  786. COMMIT;
  787. END IF
  788. RETURN rslt
  789. end function
  790. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  791. Int rslt = 1
  792. DateTime null_dt
  793. SetNull(null_dt)
  794. IF getinfo(arg_billid,arg_msg) = 0 THEN
  795. rslt = 0
  796. GOTO ext
  797. END IF
  798. IF secflag = 0 THEN
  799. rslt = 0
  800. arg_msg = '单据未审核,不可以再撤审'
  801. GOTO ext
  802. END IF
  803. UPDATE u_Bmstamt
  804. SET secemp = '',
  805. secdate = :null_dt,
  806. secflag = 0
  807. WHERE u_Bmstamt.Baid = :arg_billid
  808. And secflag = 1 And flag = 1;
  809. IF sqlca.SQLCode <> 0 THEN
  810. rslt = 0
  811. arg_msg = "撤审单据操作失败"+"~n"+sqlca.SQLErrText
  812. GOTO ext
  813. ELSEIF sqlca.SQLNRows = 0 THEN
  814. rslt = 0
  815. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  816. GOTO ext
  817. END IF
  818. IF uof_secauditing_cancel_end(arg_msg) = 0 THEN
  819. rslt = 0
  820. GOTO ext
  821. END IF
  822. flag = 1
  823. secflag = 0
  824. ext:
  825. IF rslt = 0 THEN
  826. ROLLBACK;
  827. ELSEIF rslt = 1 And arg_ifcommit THEN
  828. COMMIT;
  829. END IF
  830. //DESTROY uo_take
  831. RETURN rslt
  832. end function
  833. public function integer uof_update_cust (long arg_billid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  834. IF getinfo(arg_billid,arg_msg) = 0 THEN
  835. rslt = 0
  836. GOTO ext
  837. END IF
  838. IF flag = 0 THEN
  839. rslt = 0
  840. arg_msg = '单据未初审,不可以操作'
  841. GOTO ext
  842. END IF
  843. IF secflag = 1 THEN
  844. rslt = 0
  845. arg_msg = '单据已终审,不可以再操作'
  846. GOTO ext
  847. END IF
  848. IF billtype <> 0 THEN
  849. arg_msg = '不是客户收款结算单,不能操作'
  850. rslt = 0
  851. GOTO ext
  852. END IF
  853. UPDATE u_Bmstamt
  854. SET cusid = :arg_cusid
  855. WHERE u_Bmstamt.Baid = :arg_billid
  856. AND flag = 1
  857. AND secflag = 0;
  858. IF sqlca.SQLCode <> 0 THEN
  859. rslt = 0
  860. arg_msg = "单据客户资料操作失败,"+"~n"+sqlca.SQLErrText
  861. GOTO ext
  862. ELSEIF sqlca.SQLNRows = 0 THEN
  863. rslt = 0
  864. arg_msg = "单据正在更新单据客户资料,请稍后查询,"+"~n"+sqlca.SQLErrText
  865. GOTO ext
  866. END IF
  867. cusid = arg_cusid
  868. ext:
  869. IF rslt = 0 THEN
  870. ROLLBACK;
  871. ELSEIF rslt = 1 AND arg_ifcommit THEN
  872. COMMIT;
  873. END IF
  874. RETURN rslt
  875. end function
  876. public function integer acceptmx (s_bmstamtmx s_mx, ref string arg_msg);
  877. Long rslt = 1
  878. DateTime ldt_takedate
  879. String ls_billcode, ls_relcode
  880. IF it_newbegin = False And it_updatebegin = False THEN
  881. rslt = 0
  882. arg_msg = "非编辑状态不可以使用,操作取消"
  883. GOTO ext
  884. END IF
  885. //清除空值
  886. IF IsNull(s_mx.printid) THEN s_mx.printid = 0
  887. IF IsNull(s_mx.takeid) THEN s_mx.takeid = 0
  888. IF IsNull(s_mx.billcode) THEN s_mx.billcode = ''
  889. IF IsNull(s_mx.relcode) THEN s_mx.relcode = ''
  890. IF IsNull(s_mx.msttakeamt) THEN s_mx.msttakeamt = 0
  891. IF IsNull(s_mx.takeamt) THEN s_mx.takeamt = 0
  892. IF IsNull(s_mx.zqamt) THEN s_mx.zqamt = 0
  893. IF IsNull(s_mx.ttakeamt) THEN s_mx.ttakeamt = 0
  894. IF IsNull(s_mx.tzqamt) THEN s_mx.tzqamt = 0
  895. IF IsNull(s_mx.mxdscrp) THEN s_mx.mxdscrp = ''
  896. IF IsNull(s_mx.relid) THEN s_mx.relid = 0
  897. IF IsNull(s_mx.relprintid) THEN s_mx.relprintid = 0
  898. IF s_mx.takeid = 0 Or (s_mx.ttakeamt = 0 And s_mx.tzqamt = 0) THEN
  899. rslt = 1
  900. GOTO ext
  901. END IF
  902. //IF billtype = 0 THEN
  903. // IF s_mx.ttakeamt + s_mx.tzqamt > s_mx.msttakeamt - s_mx.takeamt THEN
  904. // arg_msg = "行:"+String(s_mx.printid)+",本次收款金额+本次折扣金额>未收金额"
  905. // rslt = 0
  906. // GOTO ext
  907. // END IF
  908. //
  909. // SELECT takedate, billcode, relcode
  910. // INTO :ldt_takedate, :ls_billcode, :ls_relcode
  911. // FROM U_Bmsttake
  912. // Where takeid = :s_mx.takeid;
  913. // IF sqlca.SQLCode <> 0 THEN
  914. // arg_msg = "查询明细对应的应收帐信息失败,"+sqlca.SQLErrText
  915. // rslt = 0
  916. // GOTO ext
  917. // END IF
  918. //ELSE
  919. // IF s_mx.ttakeamt + s_mx.tzqamt > s_mx.msttakeamt - s_mx.takeamt THEN
  920. // arg_msg = "行:"+String(s_mx.printid)+",本次付款金额+本次折扣金额>未付金额"
  921. // rslt = 0
  922. // GOTO ext
  923. // END IF
  924. //
  925. // SELECT paydate, billcode, relcode
  926. // INTO :ldt_takedate, :ls_billcode, :ls_relcode
  927. // FROM U_Bmstpay
  928. // Where payid = :s_mx.takeid;
  929. // IF sqlca.SQLCode <> 0 THEN
  930. // arg_msg = "查询明细对应的应付帐信息失败,"+sqlca.SQLErrText
  931. // rslt = 0
  932. // GOTO ext
  933. // END IF
  934. // //ls_relcode = ""
  935. //END IF
  936. IF uof_acceptmx_chk(s_mx, arg_msg) = 0 THEN
  937. rslt = 0
  938. GOTO ext
  939. END IF
  940. //写入内容
  941. it_mxbt++
  942. BmstamtMX[it_mxbt].printid = it_mxbt
  943. BmstamtMX[it_mxbt].takeid = s_mx.takeid
  944. BmstamtMX[it_mxbt].billcode = s_mx.billcode
  945. BmstamtMX[it_mxbt].relcode = s_mx.relcode
  946. BmstamtMX[it_mxbt].takedate =s_mx.takedate
  947. BmstamtMX[it_mxbt].msttakeamt = s_mx.msttakeamt
  948. BmstamtMX[it_mxbt].takeamt = s_mx.takeamt
  949. BmstamtMX[it_mxbt].zqamt = s_mx.zqamt
  950. BmstamtMX[it_mxbt].ttakeamt = s_mx.ttakeamt
  951. BmstamtMX[it_mxbt].tzqamt = s_mx.tzqamt
  952. BmstamtMX[it_mxbt].relid = s_mx.relid
  953. BmstamtMX[it_mxbt].relprintid = s_mx.relprintid
  954. BmstamtMX[it_mxbt].mxdscrp = s_mx.mxdscrp
  955. Bmstamt_mxsum += s_mx.ttakeamt
  956. Zqamt_mxsum += s_mx.tzqamt
  957. ext:
  958. IF rslt = 0 THEN
  959. p_clearmx()
  960. END IF
  961. Return(rslt)
  962. end function
  963. public function integer p_clearmx ();//int p_clearmx()
  964. //清除明细
  965. it_mxbt=0
  966. Bmstamt_mxsum = 0
  967. Zqamt_mxsum = 0
  968. return 1
  969. end function
  970. public function integer uof_acceptmx_chk (s_bmstamtmx s_mx, ref string arg_msg);Int rslt = 1
  971. GOTO ext
  972. ext:
  973. RETURN rslt
  974. end function
  975. public function integer auditing_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0
  976. Long i
  977. Int rslt = 1
  978. Long ref_rapid
  979. DateTime null_dt
  980. SetNull(null_dt)
  981. If getinfo(arg_billid,arg_msg) = 0 Then
  982. rslt = 0
  983. Goto ext
  984. End If
  985. If flag = 0 Then
  986. rslt = 0
  987. arg_msg = '单据未审核,不可以再撤审'
  988. Goto ext
  989. End If
  990. If billtype = 3 Then
  991. If sys_option_msttake_takeamt_secaudit = 0 Then
  992. Update u_Bmstamt
  993. Set auditemp = '',
  994. auditdate = :null_dt,
  995. flag = 0,
  996. secemp = '',
  997. secdate = :null_dt,
  998. secflag = 0
  999. Where u_Bmstamt.Baid = :arg_billid
  1000. And flag = 1;
  1001. Else
  1002. Update u_Bmstamt
  1003. Set auditemp = '',
  1004. auditdate = :null_dt,
  1005. flag = 0
  1006. Where Baid = :arg_billid
  1007. And flag = 1
  1008. And secflag = 0;
  1009. End If
  1010. End If
  1011. If sqlca.SQLCode <> 0 Then
  1012. rslt = 0
  1013. arg_msg = "撤审单据操作失败"+"~n"+sqlca.SQLErrText
  1014. Goto ext
  1015. ElseIf sqlca.SQLNRows = 0 Then
  1016. rslt = 0
  1017. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  1018. Goto ext
  1019. End If
  1020. //兼容二级审模式 . 使用二级审时,本撤审只更新标记。使用一级审,本撤审同时删除相关出纳。
  1021. //uof_auditing_cancel_end中没有代码。出纳代码在 uof_secauditing_cancel_end
  1022. If sys_option_msttake_takeamt_secaudit = 0 Then
  1023. If uof_secauditing_cancel_end(arg_msg) = 0 Then
  1024. rslt = 0
  1025. Goto ext
  1026. End If
  1027. End If
  1028. //If uof_auditing_cancel_end(arg_msg) = 0 Then
  1029. // rslt = 0
  1030. // Goto ext
  1031. //End If
  1032. //
  1033. flag = 0
  1034. ext:
  1035. If rslt = 0 Then
  1036. Rollback;
  1037. ElseIf rslt = 1 And arg_ifcommit Then
  1038. Commit;
  1039. End If
  1040. Return rslt
  1041. end function
  1042. public function integer uof_auditing_end (ref string arg_msg);return 1
  1043. //Long rslt = 1
  1044. //Long ll_relid_ref
  1045. //Long i
  1046. //Long ll_itemid
  1047. //Long ref_dateint
  1048. //Decimal lde_oriamt, lde_msttakeamt, lde_takeamt
  1049. //String ls_about
  1050. //DateTime ldt_zqdate
  1051. //String ls_dscrp
  1052. //
  1053. //uo_musttake uo_take
  1054. //uo_take = Create uo_musttake
  1055. //
  1056. //uo_salebill uo_bill_s
  1057. //uo_bill_s = Create uo_salebill
  1058. //
  1059. //uo_mustpay uo_pay
  1060. //uo_pay = Create uo_mustpay
  1061. //
  1062. //uo_buybill uo_bill_b
  1063. //uo_bill_b = Create uo_buybill
  1064. //
  1065. //uo_iteminput uo_item
  1066. //uo_item = Create uo_iteminput
  1067. //
  1068. //DateTime ld_viewdate
  1069. //SetNull(ld_viewdate)
  1070. //
  1071. //Int li_item_dfttype,li_itemflag
  1072. //Decimal ld_takeamt
  1073. //Long ll_moneyid_account
  1074. //
  1075. //
  1076. //ls_dscrp = dscrp
  1077. //
  1078. //IF Trim(fpcode) <> '' THEN
  1079. // ls_dscrp = ls_dscrp + ' 发票号:'+fpcode
  1080. //END IF
  1081. //
  1082. //IF billtype = 0 THEN //生成客户收款, 对单
  1083. // IF sys_option_msttake_takeamt_secaudit = 0 THEN //两审一起进行,生成应收,出纳, 对单
  1084. // //1.生成已收帐
  1085. // s_bmsttake s_take
  1086. //
  1087. // s_take.scid = scid
  1088. // s_take.cusid = cusid
  1089. // s_take.takedate = BaDate
  1090. // s_take.inrep = BaRep
  1091. // s_take.oriamt = 0 - Bmstamt
  1092. // s_take.msttakeamt = 0
  1093. // s_take.takeamt = Bmstamt
  1094. // s_take.dscrp = ls_dscrp
  1095. // s_take.billcode = BaCode
  1096. // s_take.banktypeid = banktypeid
  1097. // s_take.buildtype = 4
  1098. // s_take.opemp = publ_operator
  1099. // s_take.outwareid = 0
  1100. // s_take.salebillid = 0
  1101. // s_take.viewdate = viewdate
  1102. // s_take.accountsid = accountid
  1103. // s_take.itemid = itemid
  1104. // s_take.moneyid = moneyid
  1105. // s_take.relcode = relcode
  1106. //
  1107. // SELECT moneyid INTO :ll_moneyid_account
  1108. // FROM u_accounts
  1109. // Where accountsid = :accountid;
  1110. // IF sqlca.SQLCode <> 0 THEN
  1111. // arg_msg = '查询帐号币种资料失败,'+sqlca.SQLErrText
  1112. // rslt = 0
  1113. // GOTO ext
  1114. // END IF
  1115. //
  1116. // IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0
  1117. // IF ll_moneyid_account = 0 THEN
  1118. // arg_msg = '帐号币种未指定,请检查'
  1119. // rslt = 0
  1120. // GOTO ext
  1121. // END IF
  1122. //
  1123. // IF uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN
  1124. // rslt = 0
  1125. // GOTO ext
  1126. // END IF
  1127. // ll_relid_ref = uo_take.ref_takeid
  1128. //
  1129. // IF ll_relid_ref = 0 THEN
  1130. // arg_msg = '错误的应收应付帐ID!'
  1131. // rslt = 0
  1132. // GOTO ext
  1133. // END IF
  1134. //
  1135. // UPDATE u_Bmstamt
  1136. // SET relid = :ll_relid_ref
  1137. // WHERE Baid = :Baid
  1138. // And flag = 1;
  1139. // IF sqlca.SQLCode <> 0 THEN
  1140. // arg_msg = '更新单据资料失败,'+sqlca.SQLErrText
  1141. // rslt = 0
  1142. // GOTO ext
  1143. // END IF
  1144. //
  1145. // IF it_mxbt > 0 THEN
  1146. // //2.明细生成折扣金额(优惠款)
  1147. // IF f_get_itemid(3, ll_itemid, arg_msg) = 0 THEN //查询默认销售优惠款项目
  1148. // rslt = 0
  1149. // GOTO ext
  1150. // END IF
  1151. //
  1152. //
  1153. // Bmstamt_mxsum = 0
  1154. // FOR i = 1 To it_mxbt
  1155. // IF BmstamtMX[i].tzqamt <> 0 THEN
  1156. // ls_about = BaCode + "折扣金额"
  1157. //
  1158. // IF sys_option_bmstamt_zqamt_date = 0 THEN
  1159. // ldt_zqdate = BaDate
  1160. // ELSE
  1161. //
  1162. // SELECT takedate INTO :ldt_zqdate FROM u_Bmsttake
  1163. // Where scid = :scid And takeid = :BmstamtMX[i].takeid;
  1164. // IF sqlca.SQLCode <> 0 THEN
  1165. // arg_msg = '查询应收帐发生日期信息失败,'+sqlca.SQLErrText
  1166. // rslt = 0
  1167. // GOTO ext
  1168. // END IF
  1169. // END IF
  1170. //
  1171. // IF uo_take.add_takerecmx(scid,BmstamtMX[i].takeid,BaCode,ldt_zqdate,banktypeid,0 - BmstamtMX[i].tzqamt,0,&
  1172. // publ_operator,ls_about,BaRep,3,0,ll_itemid,cusid, moneyid,arg_msg,False,relcode) = 0 THEN
  1173. // rslt = 0
  1174. // GOTO ext
  1175. // END IF
  1176. // END IF
  1177. //
  1178. // IF BmstamtMX[i].ttakeamt <> 0 THEN
  1179. // Bmstamt_mxsum += BmstamtMX[i].ttakeamt
  1180. // END IF
  1181. //
  1182. // NEXT
  1183. //
  1184. // //3.明细(扣除折扣金额)与当前已收帐对单
  1185. // IF uo_bill_s.newbegin() = 0 THEN
  1186. // arg_msg = '初始化对单失败'
  1187. // rslt = 0
  1188. // GOTO ext
  1189. // END IF
  1190. //
  1191. // uo_bill_s.opemp = publ_operator
  1192. // uo_bill_s.takedate = BaDate
  1193. // uo_bill_s.relcode = BaCode
  1194. // uo_bill_s.inrep = publ_operator
  1195. // uo_bill_s.banktypeid = banktypeid
  1196. // uo_bill_s.dscrp = '客户收款结算单自动生成'
  1197. // uo_bill_s.cusid = cusid
  1198. // uo_bill_s.msttakeamt = 0
  1199. // uo_bill_s.takeamt = 0
  1200. // uo_bill_s.accountsid = accountid
  1201. // uo_bill_s.itemid = itemid
  1202. // uo_bill_s.buildtype = 1
  1203. // uo_bill_s.moneyid = moneyid
  1204. // //
  1205. //
  1206. // //插入收款明细
  1207. // IF uo_bill_s.acceptmx(ll_relid_ref,&
  1208. // BaCode,&
  1209. // 0,&
  1210. // 0 - Bmstamt_mxsum,&
  1211. // 0 - Bmstamt,&
  1212. // 0,&
  1213. // Bmstamt,&
  1214. // BaCode,&
  1215. // arg_msg) = 0 THEN
  1216. // arg_msg = '对数单插入已收明细失败,'+arg_msg
  1217. // rslt = 0
  1218. // GOTO ext
  1219. // END IF
  1220. //
  1221. // //插入应收明细
  1222. // FOR i = 1 To it_mxbt
  1223. //
  1224. // IF BmstamtMX[i].ttakeamt <> 0 THEN
  1225. // SELECT oriamt, msttakeamt, takeamt
  1226. // INTO :lde_oriamt, :lde_msttakeamt, :lde_takeamt
  1227. // FROM U_Bmsttake
  1228. // Where takeid = :BmstamtMX[i].takeid;
  1229. // IF sqlca.SQLCode <> 0 THEN
  1230. // arg_msg = '行:'+String(i)+'查询应收帐信息失败,'+sqlca.SQLErrText
  1231. // rslt = 0
  1232. // GOTO ext
  1233. // END IF
  1234. //
  1235. // IF uo_bill_s.acceptmx(BmstamtMX[i].takeid,&
  1236. // BmstamtMX[i].billcode,&
  1237. // 0,&
  1238. // BmstamtMX[i].ttakeamt,&
  1239. // lde_oriamt,&
  1240. // lde_msttakeamt,&
  1241. // lde_takeamt,&
  1242. // BmstamtMX[i].relcode,&
  1243. // arg_msg) = 0 THEN
  1244. // arg_msg = '对数单插入应收明细失败,'+arg_msg
  1245. // rslt = 0
  1246. // GOTO ext
  1247. // END IF
  1248. // END IF
  1249. // NEXT
  1250. //
  1251. // IF uo_bill_s.save_ds(arg_msg,False) = 0 THEN
  1252. // rslt = 0
  1253. // GOTO ext
  1254. // END IF
  1255. // END IF
  1256. // ELSE //IF sys_option_msttake_takeamt_secaudit = 0 THEN //初审出纳; 终审应收
  1257. // SELECT dfttype,itemflag
  1258. // INTO :li_item_dfttype,:li_itemflag
  1259. // FROM u_itemdef
  1260. // Where u_itemdef.itemid = :itemid;
  1261. // IF sqlca.SQLCode <> 0 THEN
  1262. // arg_msg = '查询当前收支项目核算类型和核算方向失败!'
  1263. // rslt = 0
  1264. // GOTO ext
  1265. // END IF
  1266. //
  1267. // CHOOSE CASE li_item_dfttype
  1268. // CASE 1,3,4
  1269. // ld_takeamt = Bmstamt * li_itemflag
  1270. // CASE ELSE
  1271. // ld_takeamt = Bmstamt
  1272. // END CHOOSE
  1273. //
  1274. //
  1275. // IF sys_option_cusamt_dftdate = 0 THEN
  1276. // ld_viewdate = BaDate
  1277. // ELSE
  1278. // ld_viewdate = viewdate
  1279. // END IF
  1280. //
  1281. // s_iteminput s_input
  1282. //
  1283. // s_input.itemid = itemid
  1284. // s_input.dateint = 0
  1285. // s_input.outdate = ld_viewdate
  1286. // s_input.dscrp = dscrp
  1287. // s_input.outamt = ld_takeamt
  1288. // s_input.accountsid = accountid
  1289. // s_input.banktypeid = banktypeid
  1290. // s_input.billcode = BaCode
  1291. // s_input.relcode = relcode
  1292. // s_input.buildtype = 1
  1293. // s_input.opemp = publ_operator
  1294. // s_input.relrep = ''
  1295. // s_input.scid = scid
  1296. // s_input.moneyid = moneyid
  1297. //
  1298. // IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN
  1299. // arg_msg = '增加收支明细帐失败!~n' + arg_msg
  1300. // rslt = 0
  1301. // GOTO ext
  1302. // END IF
  1303. //
  1304. // ref_dateint = uo_item.ref_dateint
  1305. //
  1306. // IF ref_dateint = 0 THEN
  1307. // arg_msg = '增加收支出纳明细帐失败!'
  1308. // rslt = 0
  1309. // GOTO ext
  1310. // END IF
  1311. //
  1312. // UPDATE u_Bmstamt
  1313. // SET reldateint = :ref_dateint
  1314. // WHERE Baid = :Baid
  1315. // And flag = 1;
  1316. // IF sqlca.SQLCode <> 0 THEN
  1317. // arg_msg = '更新单据收支帐ID资料失败,'+sqlca.SQLErrText
  1318. // rslt = 0
  1319. // GOTO ext
  1320. // END IF
  1321. // END IF
  1322. //ELSEIF billtype = 1 THEN //生成供应商付款, 对单
  1323. // // SELECT sptcode, name INTO :ls_code,:ls_name
  1324. // // FROM u_spt
  1325. // // Where sptid = :cusid;
  1326. // // IF sqlca.SQLCode <> 0 THEN
  1327. // // arg_msg = '查询供应商名称失败,可能供应商资料不存在'
  1328. // // rslt = 0
  1329. // // GOTO ext
  1330. // // END IF
  1331. //
  1332. // // ls_dscrp = dscrp
  1333. //
  1334. // //1.生成已付帐
  1335. //
  1336. // s_bmstpay s_pay
  1337. // s_pay.scid = scid
  1338. // s_pay.sptid = cusid
  1339. // s_pay.paydate = BaDate
  1340. // s_pay.inrep = BaRep
  1341. // s_pay.oriamt = 0 - Bmstamt
  1342. // s_pay.mstpayamt = 0
  1343. // s_pay.payamt = Bmstamt
  1344. // s_pay.dscrp = ls_dscrp
  1345. // s_pay.billcode = BaCode
  1346. // s_pay.banktypeid = banktypeid
  1347. // s_pay.buildtype = 4
  1348. // s_pay.opemp = publ_operator
  1349. // s_pay.inwareid = 0
  1350. // s_pay.buybillid = 0
  1351. // s_pay.accountsid = accountid
  1352. // s_pay.itemid = itemid
  1353. // s_pay.moneyid = moneyid
  1354. // s_pay.relcode = relcode
  1355. // s_pay.viewdate = viewdate
  1356. //
  1357. // IF uo_pay.add_payrec(s_pay,arg_msg,False) = 0 THEN
  1358. // rslt = 0
  1359. // GOTO ext
  1360. // END IF
  1361. //
  1362. // ll_relid_ref = uo_pay.ref_payid
  1363. //
  1364. // IF ll_relid_ref = 0 THEN
  1365. // arg_msg = '错误的应收应付帐ID!'
  1366. // rslt = 0
  1367. // GOTO ext
  1368. // END IF
  1369. //
  1370. // UPDATE u_Bmstamt
  1371. // SET relid = :ll_relid_ref
  1372. // WHERE Baid = :Baid
  1373. // And flag = 1;
  1374. // IF sqlca.SQLCode <> 0 THEN
  1375. // arg_msg = '更新单据资料失败,'+sqlca.SQLErrText
  1376. // rslt = 0
  1377. // GOTO ext
  1378. // END IF
  1379. //
  1380. // IF it_mxbt > 0 THEN
  1381. // //2.明细生成折扣金额(优惠款)
  1382. // IF f_get_itemid(8, ll_itemid, arg_msg) = 0 THEN //查询默认采购优惠款项目
  1383. // rslt = 0
  1384. // GOTO ext
  1385. // END IF
  1386. //
  1387. //
  1388. // Bmstamt_mxsum = 0
  1389. // FOR i = 1 To it_mxbt
  1390. // IF BmstamtMX[i].tzqamt <> 0 THEN
  1391. // ls_about = BaCode + "折扣金额"
  1392. //
  1393. // IF sys_option_bmstamt_zqamt_date = 0 THEN
  1394. // ldt_zqdate = BaDate
  1395. // ELSE
  1396. //
  1397. // SELECT paydate INTO :ldt_zqdate FROM u_Bmstpay
  1398. // Where scid = :scid And payid = :BmstamtMX[i].takeid;
  1399. // IF sqlca.SQLCode <> 0 THEN
  1400. // arg_msg = '查询应付帐发生日期信息失败,'+sqlca.SQLErrText
  1401. // rslt = 0
  1402. // GOTO ext
  1403. // END IF
  1404. // END IF
  1405. //
  1406. // IF uo_pay.add_payrecmx(scid,BmstamtMX[i].takeid,BaCode,BaDate,banktypeid,0 - BmstamtMX[i].tzqamt,0,&
  1407. // publ_operator,ls_about,BaRep,3,0,ll_itemid,cusid, arg_msg,False,moneyid,relcode) = 0 THEN
  1408. // rslt = 0
  1409. // GOTO ext
  1410. // END IF
  1411. // END IF
  1412. //
  1413. // IF BmstamtMX[i].ttakeamt <> 0 THEN
  1414. // Bmstamt_mxsum += BmstamtMX[i].ttakeamt
  1415. // END IF
  1416. //
  1417. // NEXT
  1418. //
  1419. // //3.明细(扣除折扣金额)与当前已付帐对单
  1420. // IF uo_bill_b.newbegin() = 0 THEN
  1421. // arg_msg = '初始化对单失败'
  1422. // rslt = 0
  1423. // GOTO ext
  1424. // END IF
  1425. //
  1426. // uo_bill_b.opemp = publ_operator
  1427. // uo_bill_b.paydate = BaDate
  1428. // uo_bill_b.relcode = BaCode
  1429. // uo_bill_b.inrep = publ_operator
  1430. // uo_bill_b.banktypeid = banktypeid
  1431. // uo_bill_b.dscrp = '供应商付款结算单自动生成'
  1432. // uo_bill_b.sptid = cusid
  1433. // uo_bill_b.mstpayamt = 0
  1434. // uo_bill_b.payamt = 0
  1435. // uo_bill_b.accountsid = accountid
  1436. // uo_bill_b.itemid = itemid
  1437. // uo_bill_b.buildtype = 1
  1438. // uo_bill_b.moneyid = moneyid
  1439. // //
  1440. //
  1441. // //插入付款明细
  1442. // IF uo_bill_b.acceptmx(ll_relid_ref,&
  1443. // BaCode,&
  1444. // 0,&
  1445. // 0 - Bmstamt_mxsum,&
  1446. // 0 - Bmstamt,&
  1447. // 0,&
  1448. // Bmstamt,&
  1449. // BaCode,&
  1450. // arg_msg) = 0 THEN
  1451. // arg_msg = '对数单插入已付明细失败,'+arg_msg
  1452. // rslt = 0
  1453. // GOTO ext
  1454. // END IF
  1455. //
  1456. // //插入应付明细
  1457. // FOR i = 1 To it_mxbt
  1458. //
  1459. // IF BmstamtMX[i].ttakeamt <> 0 THEN
  1460. // SELECT oriamt, mstpayamt, payamt
  1461. // INTO :lde_oriamt, :lde_msttakeamt, :lde_takeamt
  1462. // FROM U_Bmstpay
  1463. // Where payid = :BmstamtMX[i].takeid;
  1464. // IF sqlca.SQLCode <> 0 THEN
  1465. // arg_msg = '行:'+String(i)+'查询应付帐信息失败,'+sqlca.SQLErrText
  1466. // rslt = 0
  1467. // GOTO ext
  1468. // END IF
  1469. //
  1470. // IF uo_bill_b.acceptmx(BmstamtMX[i].takeid,&
  1471. // BmstamtMX[i].billcode,&
  1472. // 0,&
  1473. // BmstamtMX[i].ttakeamt,&
  1474. // lde_oriamt,&
  1475. // lde_msttakeamt,&
  1476. // lde_takeamt,&
  1477. // BmstamtMX[i].relcode,&
  1478. // arg_msg) = 0 THEN
  1479. // arg_msg = '对数单插入应付明细失败,'+arg_msg
  1480. // rslt = 0
  1481. // GOTO ext
  1482. // END IF
  1483. // END IF
  1484. // NEXT
  1485. //
  1486. // IF uo_bill_b.save_ds(arg_msg,False) = 0 THEN
  1487. // rslt = 0
  1488. // GOTO ext
  1489. // END IF
  1490. // END IF
  1491. //END IF
  1492. //ext:
  1493. //Destroy uo_take
  1494. //Destroy uo_bill_s
  1495. //Destroy uo_pay
  1496. //Destroy uo_item
  1497. //RETURN rslt
  1498. //
  1499. //
  1500. //
  1501. //
  1502. //
  1503. //
  1504. //
  1505. //
  1506. //
  1507. //
  1508. //
  1509. //
  1510. end function
  1511. public function integer uof_auditing_cancel_end (ref string arg_msg);return 1
  1512. //Long rslt = 1
  1513. //Long ll_relid_ref
  1514. //Long i
  1515. //Long ll_itemid
  1516. //Decimal lde_oriamt, lde_msttakeamt, lde_takeamt
  1517. // Long ll_listno
  1518. // String ls_about
  1519. //
  1520. //uo_musttake uo_take
  1521. //uo_take = Create uo_musttake
  1522. //
  1523. //uo_salebill uo_bill_s
  1524. //uo_bill_s = Create uo_salebill
  1525. //
  1526. //uo_mustpay uo_pay
  1527. //uo_pay = Create uo_mustpay
  1528. //
  1529. //uo_buybill uo_bill_b
  1530. //uo_bill_b = Create uo_buybill
  1531. //
  1532. //uo_iteminput uo_item
  1533. //uo_item = Create uo_iteminput
  1534. //
  1535. ////DateTime ld_viewdate
  1536. ////SetNull(ld_viewdate)
  1537. //
  1538. ////Int li_item_dfttype,li_itemflag
  1539. ////Decimal ld_takeamt
  1540. //Long ll_moneyid_account
  1541. //
  1542. //Long ll_salebillid
  1543. //IF billtype = 0 THEN //生成客户收款, 对单
  1544. // IF sys_option_msttake_takeamt_secaudit = 0 THEN
  1545. // IF it_mxbt > 0 THEN
  1546. // //1.删除对数单
  1547. // SELECT salebillid
  1548. // INTO :ll_salebillid
  1549. // FROM u_salebill
  1550. // WHERE relcode = :BaCode
  1551. // And dscrp = '客户收款结算单自动生成';
  1552. // IF sqlca.SQLCode <> 0 THEN
  1553. // arg_msg = "查询对应对数单失败,"+sqlca.SQLErrText
  1554. // rslt = 0
  1555. // GOTO ext
  1556. // END IF
  1557. //
  1558. //
  1559. // IF uo_bill_s.del(ll_salebillid, arg_msg,False) = 0 THEN
  1560. // rslt = 0
  1561. // GOTO ext
  1562. // END IF
  1563. //
  1564. //
  1565. // //2.删除明细优惠
  1566. // FOR i = 1 To it_mxbt
  1567. // IF BmstamtMX[i].tzqamt <> 0 THEN
  1568. // ls_about = BaCode + "折扣金额"
  1569. //
  1570. // SELECT listno
  1571. // INTO :ll_listno
  1572. // FROM U_BmsttakeMX
  1573. // WHERE takeid = :BmstamtMX[i].takeid
  1574. // AND dscrp = :ls_about
  1575. // And billcode = :BaCode;
  1576. // IF sqlca.SQLCode <> 0 THEN
  1577. // arg_msg = "查询应收明细对应的折扣金额应收帐失败,"+sqlca.SQLErrText
  1578. // rslt = 0
  1579. // GOTO ext
  1580. // END IF
  1581. //
  1582. // IF uo_take.del_takerecmx (2,BmstamtMX[i].takeid, ll_listno,arg_msg,False) = 0 THEN
  1583. // rslt = 0
  1584. // GOTO ext
  1585. // END IF
  1586. // END IF
  1587. //
  1588. // NEXT
  1589. // END IF
  1590. //
  1591. // //3.删除已收帐
  1592. // IF uo_take.del_takerec (scid,1,relid, cusid, arg_msg,False) = 0 THEN
  1593. // rslt = 0
  1594. // GOTO ext
  1595. // END IF
  1596. // ELSE //IF sys_option_msttake_takeamt_secaudit = 0 THEN
  1597. // IF secflag = 1 THEN
  1598. // arg_msg = '客户收款结算单已终审,不能操作'
  1599. // rslt = 0
  1600. // GOTO ext
  1601. // END IF
  1602. //
  1603. // IF uo_item.del_iteminput(itemid,reldateint,1,arg_msg,False) = 0 THEN
  1604. // arg_msg = '删除收支明细帐失败!~n' + arg_msg
  1605. // rslt = 0
  1606. // GOTO ext
  1607. // END IF
  1608. // END IF
  1609. //ELSEIF billtype = 1 THEN //生成供应商付款, 对单
  1610. // IF secflag = 1 THEN
  1611. // arg_msg = '供应商付款结算单已终审,不能操作'
  1612. // rslt = 0
  1613. // GOTO ext
  1614. // END IF
  1615. //
  1616. // IF it_mxbt > 0 THEN
  1617. // //1.删除对数单
  1618. // SELECT buybillid
  1619. // INTO :ll_salebillid
  1620. // FROM u_buybill
  1621. // WHERE relcode = :BaCode
  1622. // And dscrp = '供应商付款结算单自动生成';
  1623. // IF sqlca.SQLCode <> 0 THEN
  1624. // arg_msg = "查询对应对数单失败,"+sqlca.SQLErrText
  1625. // rslt = 0
  1626. // GOTO ext
  1627. // END IF
  1628. //
  1629. //
  1630. // IF uo_bill_b.del(ll_salebillid, arg_msg,False) = 0 THEN
  1631. // rslt = 0
  1632. // GOTO ext
  1633. // END IF
  1634. //
  1635. //
  1636. // //2.删除明细优惠
  1637. // FOR i = 1 To it_mxbt
  1638. // IF BmstamtMX[i].tzqamt <> 0 THEN
  1639. // ls_about = BaCode + "折扣金额"
  1640. //
  1641. // SELECT listno
  1642. // INTO :ll_listno
  1643. // FROM U_BmstpayMX
  1644. // WHERE payid = :BmstamtMX[i].takeid
  1645. // AND dscrp = :ls_about
  1646. // And billcode = :BaCode;
  1647. // IF sqlca.SQLCode <> 0 THEN
  1648. // arg_msg = "查询应付明细对应的折扣金额应付帐失败,"+sqlca.SQLErrText
  1649. // rslt = 0
  1650. // GOTO ext
  1651. // END IF
  1652. //
  1653. // IF uo_pay.del_payrecmx (2,BmstamtMX[i].takeid, ll_listno,arg_msg,False) = 0 THEN
  1654. // rslt = 0
  1655. // GOTO ext
  1656. // END IF
  1657. // END IF
  1658. //
  1659. // NEXT
  1660. // END IF
  1661. //
  1662. // //3.删除已付帐
  1663. // IF uo_pay.del_payrec (scid,1,relid, cusid, arg_msg,False) = 0 THEN
  1664. // rslt = 0
  1665. // GOTO ext
  1666. // END IF
  1667. //
  1668. //END IF
  1669. //ext:
  1670. //Destroy uo_take
  1671. //Destroy uo_pay
  1672. //Destroy uo_item
  1673. //destroy uo_bill_s
  1674. //destroy uo_bill_b
  1675. //RETURN rslt
  1676. //
  1677. //
  1678. //
  1679. //
  1680. //
  1681. //
  1682. //
  1683. //
  1684. //
  1685. end function
  1686. public function integer uof_secauditing_end (ref string arg_msg);Long rslt = 1
  1687. Long ll_relid_ref
  1688. Long i ,ll_i
  1689. Long ll_itemid
  1690. Long ref_dateint
  1691. uo_iteminput uo_item
  1692. uo_item = Create uo_iteminput
  1693. uo_item.ib_CreateRapmoneyid = False
  1694. uo_rapmoney uo_money
  1695. uo_money = Create uo_rapmoney
  1696. uo_money.commit_transaction = sqlca
  1697. IF Baid <= 0 THEN
  1698. rslt = 0
  1699. arg_msg = '错误单据唯一码'
  1700. GOTO ext
  1701. END IF
  1702. IF getinfo(Baid,arg_msg) = 0 THEN
  1703. rslt = 0
  1704. GOTO ext
  1705. END IF
  1706. //更新其他应付单 已付金额
  1707. Decimal lde_msttaskamt,lde_msttask_finishamt
  1708. FOR ll_i = 1 To it_mxbt
  1709. lde_msttaskamt = 0
  1710. lde_msttask_finishamt = 0
  1711. SELECT u_income_expenses.amt,u_income_expenses.finish_amt INTO :lde_msttaskamt,:lde_msttask_finishamt
  1712. From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca;
  1713. IF sqlca.SQLCode <> 0 THEN
  1714. rslt = 0
  1715. arg_msg = "查询其他应付单据相关信息失败 ~n"+sqlca.SQLErrText
  1716. GOTO ext
  1717. END IF
  1718. IF IsNull(lde_msttaskamt) THEN lde_msttaskamt = 0
  1719. IF IsNull(lde_msttask_finishamt) THEN lde_msttask_finishamt = 0
  1720. IF lde_msttask_finishamt + BmstamtMX[ll_i].Ttakeamt > lde_msttaskamt THEN
  1721. rslt = 0
  1722. arg_msg = '第' + String(ll_i) + '行,其他应付单据金额:' + String(lde_msttaskamt,'#,##0.00') + ' < ' + '已付金额:' + String(lde_msttask_finishamt,'#,##0.00') + ' + 本次付款金额:' + String( BmstamtMX[ll_i].Ttakeamt,'#,##0.00')
  1723. GOTO ext
  1724. END IF
  1725. UPDATE u_income_expenses SET finish_amt = finish_amt + :BmstamtMX[ll_i].Ttakeamt
  1726. From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca;
  1727. IF sqlca.SQLCode <> 0 THEN
  1728. rslt = 0
  1729. arg_msg = "查询其他应付单据相关信息失败 ~n"+sqlca.SQLErrText
  1730. GOTO ext
  1731. END IF
  1732. NEXT
  1733. //生成收入支出账
  1734. s_iteminput s_input
  1735. s_input.itemid = itemid
  1736. s_input.dateint = 0
  1737. s_input.outdate = BaDate
  1738. s_input.dscrp = dscrp
  1739. s_input.outamt = Bmstamt
  1740. s_input.accountsid = accountid
  1741. s_input.banktypeid = banktypeid
  1742. s_input.billcode = BaCode
  1743. s_input.relcode = relcode
  1744. s_input.buildtype = 1
  1745. s_input.opemp = publ_operator
  1746. s_input.relrep = BaRep
  1747. s_input.scid = scid
  1748. s_input.moneyid = moneyid
  1749. IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN
  1750. rslt = 0
  1751. GOTO ext
  1752. END IF
  1753. ref_dateint = uo_item.ref_dateint
  1754. UPDATE u_Bmstamt
  1755. SET reldateint = :ref_dateint
  1756. WHERE Baid = :Baid
  1757. And scid = :scid Using sqlca;
  1758. IF sqlca.SQLCode <> 0 THEN
  1759. rslt = 0
  1760. arg_msg = "更新单据收入支出账标记相关信息失败 ~n"+sqlca.SQLErrText
  1761. GOTO ext
  1762. END IF
  1763. //生成出纳帐
  1764. Decimal ld_msttakeamt,ld_takeamt
  1765. Long ref_rapid
  1766. ld_msttakeamt = 0
  1767. ld_takeamt = Bmstamt
  1768. s_rap_money s_rap
  1769. s_rap.accountsid = accountid
  1770. s_rap.takedate = BaDate
  1771. s_rap.inrep = BaRep
  1772. s_rap.dscrp = dscrp
  1773. s_rap.msttakeamt = ld_msttakeamt
  1774. s_rap.takeamt = ld_takeamt
  1775. s_rap.billcode = BaCode
  1776. s_rap.relcode = relcode
  1777. s_rap.buildtype = 1
  1778. s_rap.dcflag = 0
  1779. s_rap.relid = 0
  1780. s_rap.opemp = publ_operator
  1781. s_rap.banktypeid = banktypeid
  1782. s_rap.scid = scid
  1783. IF uo_money.add_raprec(s_rap,arg_msg,False) = 0 THEN
  1784. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  1785. rslt = 0
  1786. GOTO ext
  1787. END IF
  1788. ref_rapid = uo_money.ref_rapid
  1789. IF ref_rapid = 0 THEN
  1790. arg_msg = '增加出纳明细帐失败!'
  1791. rslt = 0
  1792. GOTO ext
  1793. END IF
  1794. UPDATE u_Bmstamt
  1795. SET
  1796. relrapid = :ref_rapid
  1797. WHERE Baid = :Baid
  1798. And scid = :scid Using sqlca;
  1799. IF sqlca.SQLCode <> 0 THEN
  1800. rslt = 0
  1801. arg_msg = "更新单据出纳账标记审核操作失败 ~n"+sqlca.SQLErrText
  1802. GOTO ext
  1803. END IF
  1804. ext:
  1805. Destroy uo_item
  1806. Destroy uo_money
  1807. //
  1808. RETURN rslt
  1809. end function
  1810. public function integer uof_secauditing_cancel_end (ref string arg_msg);Long rslt = 1
  1811. Long ll_relid_ref
  1812. Long i,ll_i
  1813. Long ll_itemid
  1814. Long ref_dateint
  1815. uo_iteminput uo_item
  1816. uo_item = Create uo_iteminput
  1817. uo_item.ib_CreateRapmoneyid = False
  1818. uo_rapmoney uo_money
  1819. uo_money = Create uo_rapmoney
  1820. uo_money.commit_transaction = sqlca
  1821. IF Baid <= 0 THEN
  1822. rslt = 0
  1823. arg_msg = '错误单据唯一码'
  1824. GOTO ext
  1825. END IF
  1826. IF getinfo(Baid,arg_msg) = 0 THEN
  1827. rslt = 0
  1828. GOTO ext
  1829. END IF
  1830. //更新其他应付单 已付金额
  1831. Decimal lde_msttaskamt,lde_msttask_finishamt
  1832. FOR ll_i = 1 To it_mxbt
  1833. lde_msttaskamt = 0
  1834. lde_msttask_finishamt = 0
  1835. SELECT u_income_expenses.amt,u_income_expenses.finish_amt INTO :lde_msttaskamt,:lde_msttask_finishamt
  1836. From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca;
  1837. IF sqlca.SQLCode <> 0 THEN
  1838. rslt = 0
  1839. arg_msg = "查询其他应付单据相关信息失败 ~n"+sqlca.SQLErrText
  1840. GOTO ext
  1841. END IF
  1842. IF IsNull(lde_msttaskamt) THEN lde_msttaskamt = 0
  1843. IF IsNull(lde_msttask_finishamt) THEN lde_msttask_finishamt = 0
  1844. IF lde_msttask_finishamt - BmstamtMX[ll_i].Ttakeamt < 0 THEN
  1845. rslt = 0
  1846. arg_msg = '第' + String(ll_i) + '行,已付金额:' + String(lde_msttask_finishamt,'#,##0.00') + ' - 本次付款金额:' + String( BmstamtMX[ll_i].Ttakeamt,'#,##0.00') + ' < 0'
  1847. GOTO ext
  1848. END IF
  1849. UPDATE u_income_expenses SET finish_amt = finish_amt - :BmstamtMX[ll_i].Ttakeamt
  1850. From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca;
  1851. IF sqlca.SQLCode <> 0 THEN
  1852. rslt = 0
  1853. arg_msg = "查询其他应付单据相关信息失败 ~n"+sqlca.SQLErrText
  1854. GOTO ext
  1855. END IF
  1856. NEXT
  1857. IF uo_item.del_iteminput(itemid,reldateint,1,arg_msg,False) = 0 THEN
  1858. rslt = 0
  1859. GOTO ext
  1860. END IF
  1861. UPDATE u_Bmstamt
  1862. SET reldateint = 0
  1863. WHERE Baid = :Baid
  1864. And scid = :scid Using sqlca;
  1865. IF sqlca.SQLCode <> 0 THEN
  1866. rslt = 0
  1867. arg_msg = "更新单据收入支出账标记相关信息失败 ~n"+sqlca.SQLErrText
  1868. GOTO ext
  1869. END IF
  1870. IF uo_money.del_raprec(relrapid,accountid,1,arg_msg,False) = 0 THEN
  1871. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  1872. rslt = 0
  1873. GOTO ext
  1874. END IF
  1875. UPDATE u_Bmstamt
  1876. SET
  1877. relrapid = 0
  1878. WHERE Baid = :Baid
  1879. And scid = :scid Using sqlca;
  1880. IF sqlca.SQLCode <> 0 THEN
  1881. rslt = 0
  1882. arg_msg = "更新单据出纳账标记审核操作失败 ~n"+sqlca.SQLErrText
  1883. GOTO ext
  1884. END IF
  1885. ext:
  1886. Destroy uo_item
  1887. Destroy uo_money
  1888. //
  1889. RETURN rslt
  1890. end function
  1891. public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg);
  1892. Int rslt = 1,cnt = 0
  1893. IF arg_billid = 0 THEN
  1894. rslt = 0
  1895. arg_msg = "没有审核对象"
  1896. GOTO ext
  1897. END IF
  1898. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  1899. rslt = 0
  1900. GOTO ext
  1901. END IF
  1902. IF secflag = 0 THEN
  1903. rslt = 0
  1904. arg_msg = "单据没有终审"
  1905. GOTO ext
  1906. END IF
  1907. IF cwauditingflag = 1 THEN
  1908. rslt = 0
  1909. arg_msg = "单据已经总账审核"
  1910. GOTO ext
  1911. END IF
  1912. UPDATE u_bmstamt
  1913. SET cwauditingflag = 1,
  1914. cwauditingdate = getdate(),
  1915. cwauditingrep = :publ_operator
  1916. WHERE ( u_bmstamt.Baid = :arg_billid ) Using sqlca;
  1917. IF sqlca.SQLCode <> 0 THEN
  1918. rslt = 0
  1919. arg_msg = "因网络或其它原因导致总账审核操作失败"+"~n"+sqlca.SQLErrText
  1920. ROLLBACK Using sqlca;
  1921. GOTO ext
  1922. END IF
  1923. ext:
  1924. IF arg_ifcommit And rslt = 1 THEN
  1925. COMMIT Using sqlca;
  1926. END IF
  1927. Return (rslt)
  1928. end function
  1929. public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg);
  1930. Int rslt = 1,cnt = 0
  1931. IF arg_billid = 0 THEN
  1932. rslt = 0
  1933. arg_msg = "没有审核对象"
  1934. GOTO ext
  1935. END IF
  1936. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  1937. rslt = 0
  1938. GOTO ext
  1939. END IF
  1940. IF cwauditingflag = 0 THEN
  1941. rslt = 0
  1942. arg_msg = "单据没有总账审核"
  1943. GOTO ext
  1944. END IF
  1945. UPDATE u_bmstamt
  1946. SET cwauditingflag = 0,
  1947. cwauditingdate =null,
  1948. cwauditingrep = ''
  1949. WHERE ( u_bmstamt.Baid = :arg_billid ) Using sqlca;
  1950. IF sqlca.SQLCode <> 0 THEN
  1951. rslt = 0
  1952. arg_msg = "因网络或其它原因导致总账撤审操作失败"+"~n"+sqlca.SQLErrText
  1953. ROLLBACK Using sqlca;
  1954. GOTO ext
  1955. END IF
  1956. ext:
  1957. IF arg_ifcommit And rslt = 1 THEN
  1958. COMMIT Using sqlca;
  1959. END IF
  1960. Return (rslt)
  1961. end function
  1962. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  1963. IF arg_billid <= 0 THEN
  1964. arg_msg = '错误的单据id'
  1965. GOTO ext
  1966. END IF
  1967. SELECT u_Bmstamt.scid,
  1968. u_Bmstamt.cusid,
  1969. u_Bmstamt.banktypeid,
  1970. u_Bmstamt.accountid,
  1971. u_Bmstamt.BaDate,
  1972. u_Bmstamt.Bmstamt,
  1973. u_Bmstamt.dscrp,
  1974. u_Bmstamt.flag,
  1975. u_Bmstamt.BaCode,
  1976. u_Bmstamt.billtype,
  1977. u_Bmstamt.relid,
  1978. u_Bmstamt.itemid,
  1979. u_Bmstamt.BaRep,
  1980. u_Bmstamt.moneyid,
  1981. u_Bmstamt.mrate,
  1982. u_Bmstamt.confirmflag,
  1983. u_Bmstamt.relcode,
  1984. u_Bmstamt.secflag,
  1985. u_Bmstamt.secemp,
  1986. u_Bmstamt.secdate,
  1987. u_Bmstamt.fpcode,
  1988. reldateint,
  1989. relrapid,
  1990. viewdate,
  1991. zqamt,
  1992. u_Bmstamt.cwauditingflag,
  1993. u_Bmstamt.cwauditingrep,
  1994. u_Bmstamt.cwauditingdate
  1995. INTO :scid,
  1996. :cusid,
  1997. :banktypeid,
  1998. :accountid,
  1999. :BaDate,
  2000. :Bmstamt,
  2001. :dscrp,
  2002. :flag,
  2003. :BaCode,
  2004. :billtype,
  2005. :relid,
  2006. :itemid,
  2007. :BaRep,
  2008. :moneyid,
  2009. :mrate,
  2010. :confirmflag,
  2011. :relcode,
  2012. :secflag,
  2013. :secemp,
  2014. :secdate,
  2015. :fpcode,
  2016. :reldateint,
  2017. :relrapid,
  2018. :viewdate,
  2019. :zqamt,
  2020. :cwauditingflag,
  2021. :cwauditingrep,
  2022. :cwauditingdate
  2023. FROM u_Bmstamt
  2024. Where u_Bmstamt.Baid = :arg_billid;
  2025. IF sqlca.SQLCode <> 0 THEN
  2026. rslt = 0
  2027. arg_msg = '查询数据操作失败,收据'+sqlca.SQLErrText
  2028. GOTO ext
  2029. END IF
  2030. Baid = arg_billid
  2031. ext:
  2032. IF rslt = 0 THEN p_reset()
  2033. RETURN rslt
  2034. end function
  2035. public function long getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  2036. long i = 1, no_mxcheck
  2037. IF arg_billid <= 0 THEN
  2038. rslt = 0
  2039. arg_msg = '错误的单据id'
  2040. GOTO ext
  2041. END IF
  2042. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  2043. rslt = 0
  2044. GOTO ext
  2045. END IF
  2046. //用游标读取明细
  2047. DECLARE cur_bamx CURSOR FOR
  2048. SELECT printid, scid, takeid, takedate, msttakeamt, takeamt, Zqamt, Ttakeamt,
  2049. TZqamt, billid, billcode, relid, relcode, relprintid, mxdscrp
  2050. FROM u_Bmstamtmx
  2051. Where Baid = :arg_billid;
  2052. OPEN cur_bamx;
  2053. FETCH cur_bamx INTO :BmstamtMX[i].printid, :BmstamtMX[i].scid, :BmstamtMX[i].takeid, :BmstamtMX[i].takedate, :BmstamtMX[i].msttakeamt, :BmstamtMX[i].takeamt, :BmstamtMX[i].Zqamt,
  2054. :BmstamtMX[i].Ttakeamt, :BmstamtMX[i].TZqamt, :BmstamtMX[i].billid, :BmstamtMX[i].billcode, :BmstamtMX[i].relid, :BmstamtMX[i].relcode, :BmstamtMX[i].relprintid, :BmstamtMX[i].mxdscrp;
  2055. DO WHILE sqlca.SQLCode = 0
  2056. i++
  2057. FETCH cur_bamx INTO :BmstamtMX[i].printid, :BmstamtMX[i].scid, :BmstamtMX[i].takeid, :BmstamtMX[i].takedate, :BmstamtMX[i].msttakeamt, :BmstamtMX[i].takeamt, :BmstamtMX[i].Zqamt,
  2058. :BmstamtMX[i].Ttakeamt, :BmstamtMX[i].TZqamt, :BmstamtMX[i].billid, :BmstamtMX[i].billcode, :BmstamtMX[i].relid, :BmstamtMX[i].relcode, :BmstamtMX[i].relprintid, :BmstamtMX[i].mxdscrp;
  2059. LOOP
  2060. CLOSE cur_bamx;
  2061. //检验明细是否读入完整
  2062. SELECT count(*) INTO :no_mxcheck
  2063. FROM u_Bmstamtmx
  2064. Where Baid = :arg_billid;
  2065. IF sqlca.SQLCode <> 0 THEN
  2066. rslt = 0
  2067. arg_msg = "查询操作失败,结算明细数量"
  2068. GOTO ext
  2069. END IF
  2070. IF i <> (no_mxcheck+1) THEN
  2071. rslt = 0
  2072. arg_msg = "查询操作失败,结算单明细"
  2073. GOTO ext
  2074. END IF
  2075. Baid = arg_billid
  2076. it_MXBT = i - 1
  2077. it_newbegin=FALSE
  2078. it_updatebegin=FALSE
  2079. ext:
  2080. IF rslt = 0 THEN p_reset()
  2081. RETURN rslt
  2082. end function
  2083. on uo_sptamt_other.create
  2084. call super::create
  2085. TriggerEvent( this, "constructor" )
  2086. end on
  2087. on uo_sptamt_other.destroy
  2088. TriggerEvent( this, "destructor" )
  2089. call super::destroy
  2090. end on