uo_cusamt_other.sru 52 KB

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