uo_cusamt.sru 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949
  1. $PBExportHeader$uo_cusamt.sru
  2. forward
  3. global type uo_cusamt from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_cusamt from nonvisualobject
  7. end type
  8. global uo_cusamt uo_cusamt
  9. type variables
  10. Public ProtectedWrite Long cusmonid //罚款单自动增量id
  11. Public ProtectedWrite String cusmoncode //罚款单的唯一编号
  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 secflag = 0 //审核标志
  20. Public ProtectedWrite DateTime secauditingdate //审核时间
  21. Public ProtectedWrite String secauditingrep //审核操作员
  22. Public ProtectedWrite Int confirmflag = 0 //确认标志
  23. Public ProtectedWrite DateTime confirmdate //确认时间
  24. Public ProtectedWrite String confirmemp //确认人
  25. Long banktypeid
  26. Long scid
  27. Long cusid
  28. Long accountid
  29. DateTime cusdate
  30. Decimal cusamt
  31. String dscrp
  32. Int billtype
  33. Long itemid
  34. Long refrapid
  35. Long reldateint
  36. String cusrep
  37. Long moneyid
  38. Decimal mrate
  39. DateTime viewdate
  40. String relcode
  41. Long rapmoneyid
  42. int kind
  43. Int uo_option_msttake_takeamt_secaudit
  44. Int uo_option_outrep
  45. Private:
  46. Boolean it_newbegin = False //新建标志
  47. Boolean it_updatebegin = False //修改标志
  48. end variables
  49. forward prototypes
  50. public function integer p_reset ()
  51. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  52. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg)
  53. public function integer newbegin (long arg_scid, ref string arg_msg)
  54. public function integer del (long arg_scid, long arg_billid, ref string arg_msg)
  55. public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  56. public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  57. public function integer confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  58. public function integer cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  59. public function integer add_dscrp (long arg_cusmonid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  60. public function integer auditing2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  61. public function integer c_auditing2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  62. public function integer uof_update_cust (long arg_billid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit)
  63. public function integer getinfo (long arg_billid, ref string arg_msg)
  64. public function integer uof_update_cust_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  65. public function integer uof_add_relcode (long arg_cusmonid, string arg_relcode, ref string arg_msg, boolean arg_ifcommit)
  66. end prototypes
  67. public function integer p_reset ();//INT p_RESET()
  68. //清除对象及其明细
  69. banktypeid = 0
  70. cusmonid = 0
  71. cusmoncode = ''
  72. opemp = ''
  73. auditingrep = ''
  74. flag = 0
  75. cusid = 0
  76. cusamt = 0
  77. dscrp = ''
  78. itemid = 0
  79. billtype = 0
  80. cusrep = ''
  81. moneyid = 0
  82. kind = 0
  83. accountid = 0
  84. scid = 0
  85. it_newbegin = FALSE
  86. it_updatebegin = FALSE
  87. RETURN 1
  88. end function
  89. public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i
  90. DateTime server_dt
  91. Long ls_newid
  92. String ls_sccode
  93. Long ll_moneyid_account,ll_moneyid_native
  94. IF uo_option_msttake_takeamt_secaudit = -1000 THEN
  95. rslt = 0
  96. arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
  97. GOTO ext
  98. END IF
  99. IF IsNull(cusid) THEN cusid = 0
  100. IF IsNull(accountid) THEN accountid = 0
  101. IF IsNull(dscrp) THEN dscrp = ''
  102. IF IsNull(cusamt) THEN cusamt = 0
  103. IF IsNull(scid) THEN scid = 0
  104. IF IsNull(billtype) THEN billtype = 0
  105. IF IsNull(itemid) THEN itemid = 0
  106. IF IsNull(cusrep) THEN cusrep = ''
  107. IF IsNull(moneyid) THEN moneyid = 0
  108. IF IsNull(mrate) THEN mrate = 0
  109. IF IsNull(relcode) THEN relcode = ''
  110. if isnull(kind) then kind = 0
  111. SELECT moneyid INTO :ll_moneyid_native
  112. FROM cw_currency
  113. Where native = 1;
  114. IF sqlca.SQLCode <> 0 THEN
  115. arg_msg = '查询本位币资料失败'
  116. rslt = 0
  117. GOTO ext
  118. END IF
  119. IF accountid = 0 THEN
  120. arg_msg = '请选择帐号'
  121. rslt = 0
  122. GOTO ext
  123. END IF
  124. SELECT moneyid INTO :ll_moneyid_account
  125. FROM u_accounts
  126. Where accountsid = :accountid;
  127. IF sqlca.SQLCode <> 0 THEN
  128. arg_msg = '查询帐号币种失败,'+sqlca.SQLErrText
  129. rslt = 0
  130. GOTO ext
  131. END IF
  132. IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0
  133. IF ll_moneyid_account = 0 THEN
  134. arg_msg = '帐号币种未指定,请检查'
  135. rslt = 0
  136. GOTO ext
  137. END IF
  138. IF billtype = 0 THEN
  139. IF uo_option_msttake_takeamt_secaudit = 0 THEN
  140. IF cusid = 0 THEN
  141. arg_msg = '没有选择客户资料,请检查'
  142. rslt = 0
  143. GOTO ext
  144. END IF
  145. SELECT count(*) INTO :cnt
  146. FROM u_cust
  147. Where cusid = :cusid;
  148. IF sqlca.SQLCode <> 0 THEN
  149. arg_msg = '查询客户资料失败'
  150. rslt = 0
  151. GOTO ext
  152. END IF
  153. IF cnt > 1 THEN
  154. arg_msg = '客户资料重复'
  155. rslt = 0
  156. GOTO ext
  157. END IF
  158. ELSE
  159. IF uo_option_outrep = 1 THEN
  160. IF cusid = 0 THEN
  161. arg_msg = '系统选项:使用业务员权限,单据没有选择客户资料,请检查'
  162. rslt = 0
  163. GOTO ext
  164. END IF
  165. END IF
  166. END IF
  167. ELSE
  168. IF cusid = 0 THEN
  169. arg_msg = '没有选择供应商资料,请检查'
  170. rslt = 0
  171. GOTO ext
  172. END IF
  173. SELECT count(*) INTO :cnt
  174. FROM u_spt
  175. Where sptid = :cusid;
  176. IF sqlca.SQLCode <> 0 THEN
  177. arg_msg = '查询供应商资料失败'
  178. rslt = 0
  179. GOTO ext
  180. END IF
  181. IF cnt > 1 THEN
  182. arg_msg = '供应商资料重复'
  183. rslt = 0
  184. GOTO ext
  185. END IF
  186. END IF
  187. IF moneyid = 0 THEN
  188. arg_msg = '请选择币种'
  189. rslt = 0
  190. GOTO ext
  191. END IF
  192. IF mrate <= 0 THEN
  193. arg_msg = '请输入币种汇率'
  194. rslt = 0
  195. GOTO ext
  196. END IF
  197. IF moneyid <> ll_moneyid_account And mrate = 1 THEN
  198. arg_msg = '收款币种与帐号币种不相同,汇率不能设为1'
  199. rslt = 0
  200. GOTO ext
  201. END IF
  202. IF moneyid = ll_moneyid_account And moneyid = ll_moneyid_native And mrate <> 1 THEN
  203. arg_msg = '收款币种与帐号币种相同且为本位币,汇率要设为1'
  204. rslt = 0
  205. GOTO ext
  206. END IF
  207. cnt = 0
  208. SELECT count(*) INTO :cnt
  209. FROM u_itemdef
  210. Where itemid = :itemid;
  211. IF sqlca.SQLCode <> 0 THEN
  212. arg_msg = '查询项目资料失败,'+sqlca.SQLErrText
  213. rslt = 0
  214. GOTO ext
  215. END IF
  216. IF cnt <> 1 THEN
  217. arg_msg = '项目资料不存在或重复'
  218. rslt = 0
  219. GOTO ext
  220. END IF
  221. IF banktypeid = 0 THEN
  222. arg_msg = '没有结算方式'
  223. rslt = 0
  224. GOTO ext
  225. END IF
  226. IF cusamt = 0 THEN
  227. arg_msg = '请输入正确的金额'
  228. rslt = 0
  229. GOTO ext
  230. END IF
  231. SELECT Top 1 getdate() Into :server_dt From u_user;
  232. IF sqlca.SQLCode <> 0 THEN
  233. rslt = 0
  234. arg_msg = "查询操作失败,日期 "
  235. GOTO ext
  236. END IF
  237. IF Year(Date(cusdate)) < 2000 Or IsNull(cusdate) THEN
  238. rslt = 0
  239. arg_msg = "时间不合理"
  240. GOTO ext
  241. END IF
  242. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  243. IF cusmonid = 0 THEN //新建
  244. ls_newid = f_sys_scidentity(0,"u_cusamt","cusmonid",arg_msg,True,id_sqlca)
  245. IF ls_newid <= 0 THEN
  246. rslt = 0
  247. GOTO ext
  248. END IF
  249. //取分部代号
  250. IF f_get_sccode(scid,sqlca,ls_sccode,arg_msg) = 0 THEN
  251. rslt = 0
  252. GOTO ext
  253. END IF
  254. IF billtype = 0 THEN
  255. cusmoncode = getid(0,ls_sccode + "SK",Date(server_dt),True,sqlca) //取得新单据编号
  256. ELSE
  257. cusmoncode = getid(0,ls_sccode + "FK",Date(server_dt),True,sqlca) //取得新单据编号
  258. END IF
  259. IF cusmoncode = "err" THEN
  260. cusmoncode = ''
  261. rslt = 0
  262. arg_msg = "无法获取单据编号"
  263. GOTO ext
  264. END IF
  265. INSERT INTO u_cusamt (
  266. scid,
  267. cusmonid,
  268. cusmoncode,
  269. cusdate,
  270. cusid,
  271. cusamt,
  272. dscrp,
  273. opdate,
  274. opemp,
  275. accountid,
  276. banktypeid,
  277. billtype,
  278. itemid,
  279. cusrep,
  280. moneyid,
  281. mrate,
  282. viewdate,
  283. relcode,
  284. kind)
  285. VALUES (
  286. :scid,
  287. :ls_newid,
  288. :cusmoncode,
  289. :cusdate,
  290. :cusid,
  291. :cusamt,
  292. :dscrp,
  293. getdate(),
  294. :publ_operator,
  295. :accountid,
  296. :banktypeid,
  297. :billtype,
  298. :itemid,
  299. :cusrep,
  300. :moneyid,
  301. :mrate,
  302. :viewdate,
  303. :relcode,
  304. :kind);
  305. IF sqlca.SQLCode <> 0 THEN
  306. rslt = 0
  307. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  308. GOTO ext
  309. END IF
  310. cusmonid = ls_newid
  311. ELSE //////////////////////////////////////////////// //更新
  312. UPDATE u_cusamt
  313. SET cusdate = :cusdate,
  314. cusid = :cusid,
  315. cusamt = :cusamt,
  316. dscrp = :dscrp,
  317. opdate = getdate(),
  318. opemp = :publ_operator,
  319. cusmoncode = :cusmoncode,
  320. scid = :scid,
  321. accountid = :accountid,
  322. banktypeid = :banktypeid,
  323. itemid = :itemid,
  324. cusrep = :cusrep,
  325. moneyid = :moneyid,
  326. mrate = :mrate,
  327. viewdate = :viewdate,
  328. relcode = :relcode,
  329. kind = :kind
  330. Where cusmonid = :cusmonid;
  331. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
  332. rslt = 0
  333. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  334. GOTO ext
  335. END IF
  336. END IF
  337. it_newbegin = False
  338. it_updatebegin = False
  339. ext:
  340. IF rslt = 0 THEN
  341. ROLLBACK;
  342. ELSEIF rslt = 1 And arg_ifcommit THEN
  343. COMMIT;
  344. END IF
  345. Return(rslt)
  346. end function
  347. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);
  348. Int rslt = 1
  349. If arg_billid <= 0 Then
  350. cusmonid = 0
  351. arg_msg = '错误的单据ID'
  352. Goto ext
  353. End If
  354. Select u_cusamt.cusmonid,
  355. u_cusamt.cusmoncode,
  356. u_cusamt.cusid,
  357. u_cusamt.cusamt,
  358. u_cusamt.dscrp ,
  359. u_cusamt.cusdate,
  360. u_cusamt.scid,
  361. u_cusamt.accountid,
  362. u_cusamt.flag,
  363. u_cusamt.confirmflag
  364. Into :cusmonid,
  365. :cusmoncode,
  366. :cusid,
  367. :cusamt,
  368. :dscrp,
  369. :cusdate,
  370. :scid,
  371. :accountid,
  372. :flag,
  373. :confirmflag
  374. From u_cusamt
  375. Where cusmonid = :arg_billid;
  376. If sqlca.SQLCode <> 0 Then
  377. rslt = 0
  378. arg_msg = '查询数据操作失败,单据'+sqlca.SQLErrText
  379. Goto ext
  380. End If
  381. If flag = 1 Then
  382. rslt = 0
  383. arg_msg = '单据已经审核,不可以修改'
  384. Goto ext
  385. End If
  386. If confirmflag = 1 Then
  387. rslt = 0
  388. arg_msg = '单据已经确认,不可以修改'
  389. Goto ext
  390. End If
  391. cusmonid = arg_billid
  392. scid = arg_scid
  393. it_newbegin = False
  394. it_updatebegin = True
  395. ext:
  396. If rslt = 0 Then p_reset()
  397. Return rslt
  398. end function
  399. public function integer newbegin (long arg_scid, ref string arg_msg);int rslt = 1
  400. if arg_scid < 0 then
  401. arg_msg = '请选择分部'
  402. rslt = 0
  403. goto ext
  404. end if
  405. p_reset()
  406. scid=arg_scid
  407. it_newbegin=TRUE
  408. it_updatebegin=FALSE
  409. ext:
  410. if rslt = 0 then p_reset()
  411. return rslt
  412. end function
  413. public function integer del (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
  414. IF arg_billid <= 0 THEN
  415. rslt = 0
  416. arg_msg = "没有删除对象,操作取消"
  417. GOTO ext
  418. END IF
  419. IF it_newbegin OR it_updatebegin THEN
  420. rslt = 0
  421. arg_msg = "编辑状态下不可以执行,操作取消"
  422. GOTO ext
  423. END IF
  424. SELECT u_cusamt.flag,
  425. u_cusamt.confirmflag
  426. INTO :flag,
  427. :confirmflag
  428. FROM u_cusamt
  429. Where u_cusamt.cusmonid = :arg_billid;
  430. IF sqlca.SQLCode <> 0 THEN
  431. rslt = 0
  432. arg_msg = '查询收款单操作失败'
  433. GOTO ext
  434. END IF
  435. IF flag = 1 THEN
  436. rslt = 0
  437. arg_msg = "单据已经审核,不可以删除"
  438. GOTO ext
  439. END IF
  440. if confirmflag = 1 then
  441. rslt = 0
  442. arg_msg = "单据已经确认,不可以删除"
  443. GOTO ext
  444. END IF
  445. DELETE FROM u_cusamt
  446. Where u_cusamt.cusmonid = :arg_billid ;
  447. IF sqlca.SQLCode <> 0 THEN
  448. rslt = 0
  449. arg_msg = "删除罚款单操作失败"+"~n"+sqlca.SQLErrText
  450. GOTO ext
  451. END IF
  452. COMMIT;
  453. it_newbegin = FALSE
  454. it_updatebegin = FALSE
  455. IF rslt = 0 THEN
  456. ROLLBACK;
  457. p_reset()
  458. END IF
  459. ext:
  460. RETURN (rslt)
  461. end function
  462. public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  463. Long ref_rapid
  464. Long ref_dateint
  465. String ls_name
  466. String ls_dscrp
  467. Decimal ld_mrate
  468. IF uo_option_msttake_takeamt_secaudit = -1000 THEN
  469. rslt = 0
  470. arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
  471. GOTO ext
  472. END IF
  473. uo_musttake uo_take
  474. uo_mustpay uo_pay
  475. uo_iteminput uo_item
  476. uo_take = Create uo_musttake
  477. uo_pay = Create uo_mustpay
  478. uo_item = Create uo_iteminput
  479. uo_rapmoney uo_money
  480. uo_money = Create uo_rapmoney
  481. IF getinfo(arg_billid,arg_msg) = 0 THEN
  482. rslt = 0
  483. GOTO ext
  484. END IF
  485. IF flag = 1 THEN
  486. rslt = 0
  487. arg_msg = '单据已经审核,不可以再审核'
  488. GOTO ext
  489. END IF
  490. Long ll_moneyid_account
  491. Long ll_moneyid_native
  492. Decimal ld_takeamt
  493. Int li_item_dfttype,li_itemflag
  494. Decimal ld_msttakeamt
  495. Long ll_ref_rapmoneyid
  496. s_rap_money s_rap
  497. SELECT dfttype,itemflag
  498. INTO :li_item_dfttype,:li_itemflag
  499. FROM u_itemdef
  500. Where u_itemdef.itemid = :itemid;
  501. IF sqlca.SQLCode <> 0 THEN
  502. arg_msg = '查询当前收支项目核算类型和核算方向失败!'
  503. rslt = 0
  504. GOTO ext
  505. END IF
  506. SELECT moneyid INTO :ll_moneyid_native
  507. FROM cw_currency
  508. Where native = 1;
  509. IF sqlca.SQLCode <> 0 THEN
  510. arg_msg = '查询本位币资料失败'
  511. rslt = 0
  512. GOTO ext
  513. END IF
  514. SELECT moneyid INTO :ll_moneyid_account
  515. FROM u_accounts
  516. Where accountsid = :accountid;
  517. IF sqlca.SQLCode <> 0 THEN
  518. arg_msg = '查询帐号币种资料失败,'+sqlca.SQLErrText
  519. rslt = 0
  520. GOTO ext
  521. END IF
  522. IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0
  523. IF ll_moneyid_account = 0 THEN
  524. arg_msg = '帐号币种未指定,请检查'
  525. rslt = 0
  526. GOTO ext
  527. END IF
  528. IF ll_moneyid_account = ll_moneyid_native THEN //收款帐号为人民币
  529. IF moneyid <> ll_moneyid_native THEN //应收帐币种不是人民币
  530. ld_takeamt = Round(cusamt/mrate,2)
  531. ELSE
  532. ld_takeamt = Round(cusamt * mrate,2)
  533. END IF
  534. ELSE
  535. IF ll_moneyid_account = moneyid THEN
  536. ld_takeamt = Round(cusamt,2)
  537. ELSE
  538. ld_takeamt = Round(cusamt * mrate,2)
  539. END IF
  540. END IF
  541. //IF moneyid = ll_moneyid_account THEN
  542. // ld_mrate = f_get_mrate(moneyid)
  543. // IF ld_mrate = 0 THEN
  544. // rslt = 0
  545. // arg_msg = '错误的币种汇率'
  546. // GOTO ext
  547. // END IF
  548. //ELSE
  549. IF moneyid = ll_moneyid_native THEN
  550. ld_mrate = 1
  551. ELSE
  552. ld_mrate = mrate
  553. END IF
  554. //END IF
  555. IF billtype = 0 THEN
  556. IF uo_option_msttake_takeamt_secaudit = 0 THEN
  557. UPDATE u_cusamt
  558. SET audopemp = :arg_opemp,
  559. audopdate = getdate(),
  560. secauditemp = :arg_opemp,
  561. secauditdate = getdate(),
  562. flag = 1,
  563. secflag = 1
  564. WHERE u_cusamt.cusmonid = :arg_billid
  565. AND flag = 0
  566. And secflag = 0;
  567. IF sqlca.SQLCode <> 0 THEN
  568. rslt = 0
  569. arg_msg = "因网络或其它原因导致客户收款单审核单据操作失败,"+"~n"+sqlca.SQLErrText
  570. GOTO ext
  571. ELSEIF sqlca.SQLNRows = 0 THEN
  572. rslt = 0
  573. arg_msg = "客户收款单正在审核,请稍后查询,"+"~n"+sqlca.SQLErrText
  574. GOTO ext
  575. END IF
  576. ls_dscrp = '客户收款单:' + cusmoncode + ' 相关号:'+relcode+' ' +dscrp
  577. s_bmsttake s_take
  578. s_take.scid = scid
  579. s_take.cusid = cusid
  580. s_take.takedate = cusdate
  581. s_take.inrep = cusrep
  582. s_take.oriamt = 0
  583. s_take.msttakeamt = 0
  584. s_take.takeamt_cn = cusamt
  585. s_take.takeamt = ld_takeamt
  586. s_take.dscrp = ls_dscrp
  587. s_take.billcode = cusmoncode
  588. s_take.relcode = relcode
  589. s_take.banktypeid = banktypeid
  590. s_take.opemp = arg_opemp
  591. s_take.buildtype = 4
  592. s_take.outwareid = cusmonid
  593. s_take.accountsid = accountid
  594. s_take.itemid = itemid
  595. s_take.moneyid = moneyid
  596. s_take.moneyid_cn = ll_moneyid_account
  597. s_take.mrate = ld_mrate
  598. IF uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN
  599. rslt = 0
  600. GOTO ext
  601. END IF
  602. ref_rapid = uo_take.ref_takeid
  603. IF ref_rapid = 0 THEN
  604. arg_msg = '错误的应收帐ID!'
  605. rslt = 0
  606. GOTO ext
  607. END IF
  608. IF li_itemflag = 1 THEN
  609. ld_msttakeamt = cusamt
  610. ld_takeamt = 0
  611. ELSE
  612. ld_msttakeamt = 0
  613. ld_takeamt = cusamt * li_itemflag
  614. END IF
  615. //加出纳帐加上客户名称
  616. IF cusid > 0 THEN
  617. SELECT name INTO :ls_name
  618. FROM u_cust
  619. Where cusid = :cusid;
  620. IF sqlca.SQLCode <> 0 THEN
  621. arg_msg = '查询客户名称失败,可能客户资料不存在'
  622. rslt = 0
  623. GOTO ext
  624. END IF
  625. IF Trim(ls_name) = '' THEN
  626. ls_dscrp = dscrp
  627. ELSE
  628. IF Trim(dscrp) <> '' THEN
  629. ls_dscrp = ls_name + '|'+dscrp
  630. ELSE
  631. ls_dscrp = ls_name
  632. END IF
  633. END IF
  634. END IF
  635. s_rap.accountsid = accountid
  636. s_rap.takedate = cusdate
  637. s_rap.inrep = cusrep
  638. s_rap.dscrp = ls_dscrp
  639. s_rap.msttakeamt = ld_msttakeamt
  640. s_rap.takeamt = ld_takeamt
  641. s_rap.billcode = cusmoncode
  642. s_rap.relcode = relcode
  643. s_rap.buildtype = 1
  644. s_rap.dcflag = 0
  645. s_rap.relid = 0
  646. s_rap.opemp = arg_opemp
  647. s_rap.banktypeid = banktypeid
  648. s_rap.scid = scid
  649. IF uo_money.add_raprec(s_rap,arg_msg,False) = 0 THEN
  650. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  651. rslt = 0
  652. GOTO ext
  653. END IF
  654. ll_ref_rapmoneyid = uo_money.ref_rapid
  655. IF ll_ref_rapmoneyid = 0 THEN
  656. arg_msg = '增加出纳明细帐失败!'
  657. rslt = 0
  658. GOTO ext
  659. END IF
  660. UPDATE u_cusamt
  661. SET refrapid = :ref_rapid,
  662. rapmoneyid = :ll_ref_rapmoneyid
  663. WHERE cusmonid = :arg_billid
  664. AND flag = 1
  665. And secflag = 1;
  666. IF sqlca.SQLCode <> 0 THEN
  667. arg_msg = '更新单据应收帐ID资料失败,'+sqlca.SQLErrText
  668. rslt = 0
  669. GOTO ext
  670. END IF
  671. //
  672. ELSE
  673. UPDATE u_cusamt
  674. SET audopemp = :arg_opemp,
  675. audopdate = getdate(),
  676. flag = 1
  677. WHERE u_cusamt.cusmonid = :arg_billid
  678. And flag = 0;
  679. IF sqlca.SQLCode <> 0 THEN
  680. rslt = 0
  681. arg_msg = "因网络或其它原因导致客户收款单初审单据操作失败,"+"~n"+sqlca.SQLErrText
  682. GOTO ext
  683. ELSEIF sqlca.SQLNRows = 0 THEN
  684. rslt = 0
  685. arg_msg = "客户收款单正在初审,请稍后查询,"+"~n"+sqlca.SQLErrText
  686. GOTO ext
  687. END IF
  688. ls_dscrp = dscrp
  689. IF li_itemflag = 1 THEN
  690. ld_msttakeamt = cusamt
  691. ld_takeamt = 0
  692. ELSE
  693. ld_msttakeamt = 0
  694. ld_takeamt = cusamt * li_itemflag
  695. END IF
  696. //加出纳帐加上客户名称
  697. IF cusid > 0 THEN
  698. SELECT name INTO :ls_name
  699. FROM u_cust
  700. Where cusid = :cusid;
  701. IF sqlca.SQLCode <> 0 THEN
  702. arg_msg = '查询客户名称失败,可能客户资料不存在'
  703. rslt = 0
  704. GOTO ext
  705. END IF
  706. IF Trim(ls_name) = '' THEN
  707. ls_dscrp = dscrp
  708. ELSE
  709. IF Trim(dscrp) <> '' THEN
  710. ls_dscrp = ls_name + '|'+dscrp
  711. ELSE
  712. ls_dscrp = ls_name
  713. END IF
  714. END IF
  715. END IF
  716. s_rap.accountsid = accountid
  717. s_rap.takedate = cusdate
  718. s_rap.inrep = cusrep
  719. s_rap.dscrp = ls_dscrp
  720. s_rap.msttakeamt = ld_msttakeamt
  721. s_rap.takeamt = ld_takeamt
  722. s_rap.billcode = cusmoncode
  723. s_rap.relcode = relcode
  724. s_rap.buildtype = 1
  725. s_rap.dcflag = 0
  726. s_rap.relid = 0
  727. s_rap.opemp = arg_opemp
  728. s_rap.banktypeid = banktypeid
  729. s_rap.scid = scid
  730. IF uo_money.add_raprec(s_rap,arg_msg,False) = 0 THEN
  731. arg_msg = '增加出纳明细帐失败!~n' + arg_msg
  732. rslt = 0
  733. GOTO ext
  734. END IF
  735. ll_ref_rapmoneyid = uo_money.ref_rapid
  736. IF ll_ref_rapmoneyid = 0 THEN
  737. arg_msg = '增加出纳明细帐失败!'
  738. rslt = 0
  739. GOTO ext
  740. END IF
  741. UPDATE u_cusamt
  742. SET rapmoneyid = :ll_ref_rapmoneyid
  743. WHERE cusmonid = :arg_billid
  744. And flag = 1;
  745. IF sqlca.SQLCode <> 0 THEN
  746. arg_msg = '更新单据收支帐ID资料失败,'+sqlca.SQLErrText
  747. rslt = 0
  748. GOTO ext
  749. END IF
  750. END IF
  751. ELSE
  752. UPDATE u_cusamt
  753. SET audopemp = :arg_opemp,
  754. audopdate = getdate(),
  755. flag = 1
  756. WHERE u_cusamt.cusmonid = :arg_billid
  757. And flag = 0;
  758. IF sqlca.SQLCode <> 0 THEN
  759. rslt = 0
  760. arg_msg = "因网络或其它原因导致供应商付款单审核单据操作失败,"+"~n"+sqlca.SQLErrText
  761. GOTO ext
  762. ELSEIF sqlca.SQLNRows = 0 THEN
  763. rslt = 0
  764. arg_msg = "供应商付款单正在审核,请稍后查询,"+"~n"+sqlca.SQLErrText
  765. GOTO ext
  766. END IF
  767. // SELECT name INTO :ls_name
  768. // FROM u_spt
  769. // Where sptid = :cusid;
  770. // IF sqlca.SQLCode <> 0 THEN
  771. // arg_msg = '查询供应商名称失败,可能供应商资料不存在'
  772. // rslt = 0
  773. // GOTO ext
  774. // END IF
  775. ls_dscrp = dscrp
  776. // IF Trim(ls_name) = '' THEN
  777. // ls_dscrp = dscrp
  778. // ELSE
  779. // IF Trim(dscrp) <> '' THEN
  780. // ls_dscrp = ls_name + '/'+dscrp
  781. // ELSE
  782. // ls_dscrp = ls_name
  783. // END IF
  784. // END IF
  785. DateTime null_plandate
  786. SetNull(null_plandate)
  787. s_bmstpay s_pay
  788. s_pay.scid = scid
  789. s_pay.sptid = cusid
  790. s_pay.paydate = cusdate
  791. s_pay.inrep = cusrep
  792. s_pay.oriamt = 0
  793. s_pay.mstpayamt = 0
  794. s_pay.payamt = ld_takeamt
  795. s_pay.payamt_cn = cusamt
  796. s_pay.dscrp = ls_dscrp
  797. s_pay.billcode = cusmoncode
  798. s_pay.relcode = relcode
  799. s_pay.banktypeid = banktypeid
  800. s_pay.viewdate = null_plandate
  801. s_pay.opemp = arg_opemp
  802. s_pay.buildtype = 4
  803. s_pay.inwareid = cusmonid
  804. s_pay.accountsid = accountid
  805. s_pay.itemid = itemid
  806. s_pay.moneyid = moneyid
  807. s_pay.moneyid_cn = ll_moneyid_account
  808. IF uo_pay.add_payrec(s_pay,arg_msg,False) = 0 THEN
  809. rslt = 0
  810. GOTO ext
  811. END IF
  812. ref_rapid = uo_pay.ref_payid
  813. IF ref_rapid = 0 THEN
  814. arg_msg = '错误的应付帐ID!'
  815. rslt = 0
  816. GOTO ext
  817. END IF
  818. ll_ref_rapmoneyid = uo_pay.ref_relrapid
  819. UPDATE u_cusamt
  820. SET refrapid = :ref_rapid,
  821. rapmoneyid = :ll_ref_rapmoneyid
  822. WHERE cusmonid = :arg_billid
  823. And flag = 1;
  824. IF sqlca.SQLCode <> 0 THEN
  825. arg_msg = '更新单据应付帐ID资料失败,'+sqlca.SQLErrText
  826. rslt = 0
  827. GOTO ext
  828. END IF
  829. flag = 1
  830. END IF
  831. ext:
  832. IF rslt = 0 THEN
  833. ROLLBACK;
  834. ELSEIF rslt = 1 And arg_ifcommit THEN
  835. COMMIT;
  836. END IF
  837. Destroy uo_take
  838. Destroy uo_pay
  839. Destroy uo_item
  840. Destroy uo_money
  841. RETURN rslt
  842. end function
  843. public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  844. Long ref_rapid
  845. DateTime null_dt
  846. Long cnt
  847. IF uo_option_msttake_takeamt_secaudit = -1000 THEN
  848. rslt = 0
  849. arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
  850. GOTO ext
  851. END IF
  852. SetNull(null_dt)
  853. uo_musttake uo_take
  854. uo_mustpay uo_pay
  855. uo_iteminput uo_item
  856. uo_take = Create uo_musttake
  857. uo_pay = Create uo_mustpay
  858. uo_item = Create uo_iteminput
  859. uo_rapmoney uo_money
  860. uo_money = Create uo_rapmoney
  861. IF getinfo(arg_billid,arg_msg) = 0 THEN
  862. rslt = 0
  863. GOTO ext
  864. END IF
  865. IF flag = 0 THEN
  866. rslt = 0
  867. arg_msg = '单据未审核,不可以再撤审'
  868. GOTO ext
  869. END IF
  870. IF billtype = 0 THEN
  871. IF uo_option_msttake_takeamt_secaudit = 0 THEN
  872. UPDATE u_cusamt
  873. SET audopemp = '',
  874. audopdate = :null_dt,
  875. secauditemp = '',
  876. secauditdate = :null_dt,
  877. flag = 0,
  878. secflag = 0,
  879. refrapid = 0,
  880. rapmoneyid = 0
  881. WHERE u_cusamt.cusmonid = :arg_billid
  882. AND flag = 1
  883. And secflag = 1;
  884. IF sqlca.SQLCode <> 0 THEN
  885. rslt = 0
  886. arg_msg = "因网络或其它原因导致撤审客户收款单操作失败"+"~n"+sqlca.SQLErrText
  887. GOTO ext
  888. ELSEIF sqlca.SQLNRows = 0 THEN
  889. rslt = 0
  890. arg_msg = "客户收款单正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  891. GOTO ext
  892. END IF
  893. IF rapmoneyid > 0 THEN
  894. IF uo_money.del_raprec(rapmoneyid,accountid,1,arg_msg,False) = 0 THEN
  895. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  896. rslt = 0
  897. GOTO ext
  898. END IF
  899. END IF
  900. IF refrapid > 0 THEN
  901. SELECT count(*)
  902. INTO :cnt
  903. FROM u_bmsttake_fpmx
  904. Where u_bmsttake_fpmx.takeid = :refrapid;
  905. IF sqlca.SQLCode <> 0 THEN
  906. rslt = 0
  907. arg_msg = "查询相关应收帐金额是否已分配订单失败"+"~n"+sqlca.SQLErrText
  908. GOTO ext
  909. END IF
  910. IF cnt > 0 THEN
  911. rslt = 0
  912. arg_msg = "相关应收帐金额是否已分配订单,不能撤审收款单"
  913. GOTO ext
  914. END IF
  915. IF uo_take.del_takerec(scid,1,refrapid,cusid,arg_msg,False) = 0 THEN
  916. rslt = 0
  917. GOTO ext
  918. END IF
  919. END IF
  920. ELSE
  921. IF secflag = 1 THEN
  922. arg_msg = '客户收款单已终审,不能操作'
  923. rslt = 0
  924. GOTO ext
  925. END IF
  926. UPDATE u_cusamt
  927. SET audopemp = '',
  928. audopdate = :null_dt,
  929. flag = 0,
  930. rapmoneyid = 0
  931. WHERE u_cusamt.cusmonid = :arg_billid
  932. AND flag = 1
  933. And secflag = 0;
  934. IF sqlca.SQLCode <> 0 THEN
  935. rslt = 0
  936. arg_msg = "因网络或其它原因导致客户收款单初审撤审单据操作失败"+"~n"+sqlca.SQLErrText
  937. GOTO ext
  938. ELSEIF sqlca.SQLNRows = 0 THEN
  939. rslt = 0
  940. arg_msg = "客户收款单正在初审撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  941. GOTO ext
  942. END IF
  943. IF rapmoneyid > 0 THEN
  944. IF uo_money.del_raprec(rapmoneyid,accountid,1,arg_msg,False) = 0 THEN
  945. arg_msg = '删除出纳明细帐失败!~n' + arg_msg
  946. rslt = 0
  947. GOTO ext
  948. END IF
  949. END IF
  950. END IF
  951. ELSE
  952. UPDATE u_cusamt
  953. SET audopemp = '',
  954. audopdate = :null_dt,
  955. flag = 0
  956. WHERE u_cusamt.cusmonid = :arg_billid
  957. And flag = 1;
  958. IF sqlca.SQLCode <> 0 THEN
  959. rslt = 0
  960. arg_msg = "因网络或其它原因导致撤审供应商付款单操作失败"+"~n"+sqlca.SQLErrText
  961. GOTO ext
  962. ELSEIF sqlca.SQLNRows = 0 THEN
  963. rslt = 0
  964. arg_msg = "供应商付款单正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  965. GOTO ext
  966. END IF
  967. IF refrapid > 0 THEN
  968. IF uo_pay.del_payrec(scid,1,refrapid,cusid,arg_msg,False) = 0 THEN
  969. rslt = 0
  970. GOTO ext
  971. END IF
  972. END IF
  973. END IF
  974. flag = 0
  975. ext:
  976. IF rslt = 0 THEN
  977. ROLLBACK;
  978. ELSEIF rslt = 1 And arg_ifcommit THEN
  979. COMMIT;
  980. END IF
  981. Destroy uo_take
  982. Destroy uo_pay
  983. Destroy uo_item
  984. Destroy uo_money
  985. RETURN rslt
  986. end function
  987. public function integer confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0
  988. Int rslt = 1
  989. If uo_option_msttake_takeamt_secaudit = -1000 Then
  990. rslt = 0
  991. arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
  992. Goto ext
  993. End If
  994. If getinfo(arg_billid,arg_msg) = 0 Then
  995. rslt = 0
  996. Goto ext
  997. End If
  998. If billtype = 0 Then
  999. If uo_option_msttake_takeamt_secaudit = 0 Then
  1000. If flag = 0 Then
  1001. rslt = 0
  1002. arg_msg = '单据未审核,不可以确认'
  1003. Goto ext
  1004. End If
  1005. Else
  1006. If secflag = 0 Then
  1007. rslt = 0
  1008. arg_msg = '单据未终审,不可以确认'
  1009. Goto ext
  1010. End If
  1011. End If
  1012. End If
  1013. If confirmflag = 1 Then
  1014. rslt = 0
  1015. arg_msg = '单据已确认,不可以确认'
  1016. Goto ext
  1017. End If
  1018. Update u_cusamt
  1019. Set confirmemp = :publ_operator,
  1020. confirmdate = getdate(),
  1021. confirmflag = 1
  1022. Where u_cusamt.cusmonid = :arg_billid
  1023. And confirmflag = 0;
  1024. If sqlca.SQLCode <> 0 Then
  1025. rslt = 0
  1026. arg_msg = "因网络或其它原因导致确认单据操作失败,"+"~n"+sqlca.SQLErrText
  1027. Goto ext
  1028. ElseIf sqlca.SQLNRows = 0 Then
  1029. rslt = 0
  1030. arg_msg = "单据正在确认,请稍后查询,"+"~n"+sqlca.SQLErrText
  1031. Goto ext
  1032. End If
  1033. confirmflag = 1
  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 cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0
  1043. Int rslt = 1
  1044. datetime null_dt
  1045. setnull(null_dt)
  1046. IF getinfo(arg_billid,arg_msg) = 0 THEN
  1047. rslt = 0
  1048. GOTO ext
  1049. END IF
  1050. IF confirmflag = 0 THEN
  1051. rslt = 0
  1052. arg_msg = '单据未确认,不可以反确认'
  1053. GOTO ext
  1054. END IF
  1055. UPDATE u_cusamt
  1056. SET confirmemp = '',
  1057. confirmdate = :null_dt,
  1058. confirmflag = 0
  1059. WHERE u_cusamt.cusmonid = :arg_billid
  1060. AND confirmflag = 1;
  1061. IF sqlca.SQLCode <> 0 THEN
  1062. rslt = 0
  1063. arg_msg = "因网络或其它原因导致反确认单据操作失败,"+"~n"+sqlca.SQLErrText
  1064. GOTO ext
  1065. ELSEIF sqlca.SQLNRows = 0 THEN
  1066. rslt = 0
  1067. arg_msg = "单据正在反确认,请稍后查询,"+"~n"+sqlca.SQLErrText
  1068. GOTO ext
  1069. END IF
  1070. confirmflag = 0
  1071. ext:
  1072. IF rslt = 0 THEN
  1073. ROLLBACK;
  1074. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1075. COMMIT;
  1076. END IF
  1077. RETURN rslt
  1078. end function
  1079. public function integer add_dscrp (long arg_cusmonid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
  1080. //0 fail 1 success
  1081. Int rslt = 1
  1082. arg_newdescppart = Trim(arg_newdescppart)
  1083. IF it_updatebegin Or it_newbegin THEN
  1084. rslt = 0
  1085. arg_msg = "编辑状态下不可用"
  1086. GOTO ext
  1087. END IF
  1088. IF getinfo(arg_cusmonid,arg_msg) = 0 THEN
  1089. rslt = 0
  1090. GOTO ext
  1091. END IF
  1092. IF flag = 0 THEN
  1093. rslt = 0
  1094. arg_msg = "非审核状态下不可用"
  1095. GOTO ext
  1096. END IF
  1097. UPDATE u_cusamt
  1098. SET dscrp = ltrim(rtrim(dscrp))+' '+:arg_newdescppart
  1099. Where u_cusamt.cusmonid = :arg_cusmonid;
  1100. IF sqlca.SQLCode <> 0 THEN
  1101. rslt = 0
  1102. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.SQLErrText
  1103. GOTO ext
  1104. END IF
  1105. UPDATE u_rap_money
  1106. SET dscrp = ltrim(rtrim(dscrp))+' '+:arg_newdescppart
  1107. Where rapmoneyid = :rapmoneyid;
  1108. IF sqlca.SQLCode <> 0 THEN
  1109. arg_msg = '更新相关出纳帐摘要资料失败,'+sqlca.SQLErrText
  1110. rslt = 0
  1111. GOTO ext
  1112. END IF
  1113. dscrp = dscrp+' '+arg_newdescppart
  1114. ext:
  1115. IF rslt = 0 THEN
  1116. ROLLBACK;
  1117. ELSEIF rslt = 1 And arg_ifcommit THEN
  1118. COMMIT;
  1119. END IF
  1120. Return (rslt)
  1121. end function
  1122. public function integer auditing2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1123. Long ref_rapid
  1124. String ls_name
  1125. String ls_dscrp
  1126. uo_musttake uo_take
  1127. uo_take = Create uo_musttake
  1128. IF getinfo(arg_billid,arg_msg) = 0 THEN
  1129. rslt = 0
  1130. GOTO ext
  1131. END IF
  1132. IF flag = 0 THEN
  1133. rslt = 0
  1134. arg_msg = '单据未初审,不可以终审'
  1135. GOTO ext
  1136. END IF
  1137. IF secflag = 1 THEN
  1138. rslt = 0
  1139. arg_msg = '单据已终审,不可以再终审'
  1140. GOTO ext
  1141. END IF
  1142. IF billtype <> 0 THEN
  1143. arg_msg = '不是客户收款单,不能操作'
  1144. rslt = 0
  1145. GOTO ext
  1146. END IF
  1147. IF cusid = 0 THEN
  1148. arg_msg = '未指定客户,请检查'
  1149. rslt = 0
  1150. GOTO ext
  1151. END IF
  1152. UPDATE u_cusamt
  1153. SET secauditemp = :arg_opemp,
  1154. secauditdate = getdate(),
  1155. secflag = 1
  1156. WHERE u_cusamt.cusmonid = :arg_billid
  1157. AND flag = 1
  1158. And secflag = 0;
  1159. IF sqlca.SQLCode <> 0 THEN
  1160. rslt = 0
  1161. arg_msg = "因网络或其它原因导致终审单据操作失败,"+"~n"+sqlca.SQLErrText
  1162. GOTO ext
  1163. ELSEIF sqlca.SQLNRows = 0 THEN
  1164. rslt = 0
  1165. arg_msg = "单据正在终审,请稍后查询,"+"~n"+sqlca.SQLErrText
  1166. GOTO ext
  1167. END IF
  1168. SELECT name INTO :ls_name
  1169. FROM u_cust
  1170. Where cusid = :cusid;
  1171. IF sqlca.SQLCode <> 0 THEN
  1172. arg_msg = '查询客户名称失败,可能客户资料不存在'
  1173. rslt = 0
  1174. GOTO ext
  1175. END IF
  1176. IF Trim(ls_name) = '' THEN
  1177. ls_dscrp = dscrp
  1178. ELSE
  1179. IF Trim(dscrp) <> '' THEN
  1180. ls_dscrp = ls_name + '/'+dscrp
  1181. ELSE
  1182. ls_dscrp = ls_name
  1183. END IF
  1184. END IF
  1185. Long ll_moneyid_account
  1186. Long ll_moneyid_native
  1187. Decimal ld_takeamt,ld_mrate
  1188. SELECT moneyid INTO :ll_moneyid_native
  1189. FROM cw_currency
  1190. Where native = 1;
  1191. IF sqlca.SQLCode <> 0 THEN
  1192. arg_msg = '查询本位币资料失败'
  1193. rslt = 0
  1194. GOTO ext
  1195. END IF
  1196. SELECT moneyid INTO :ll_moneyid_account
  1197. FROM u_accounts
  1198. Where accountsid = :accountid;
  1199. IF sqlca.SQLCode <> 0 THEN
  1200. arg_msg = '查询帐号币种资料失败,'+sqlca.SQLErrText
  1201. rslt = 0
  1202. GOTO ext
  1203. END IF
  1204. IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0
  1205. IF ll_moneyid_account = 0 THEN
  1206. arg_msg = '帐号币种未指定,请检查'
  1207. rslt = 0
  1208. GOTO ext
  1209. END IF
  1210. IF ll_moneyid_account = ll_moneyid_native THEN //收款帐号为人民币
  1211. IF moneyid <> ll_moneyid_native THEN //应收帐币种不是人民币
  1212. ld_takeamt = Round(cusamt/mrate,2)
  1213. ELSE
  1214. ld_takeamt = Round(cusamt * mrate,2)
  1215. END IF
  1216. ELSE
  1217. IF ll_moneyid_account = moneyid THEN
  1218. ld_takeamt = Round(cusamt,2)
  1219. ELSE
  1220. ld_takeamt = Round(cusamt * mrate,2)
  1221. END IF
  1222. END IF
  1223. IF moneyid = ll_moneyid_native THEN
  1224. ld_mrate = 1
  1225. ELSE
  1226. ld_mrate = mrate
  1227. END IF
  1228. //IF ll_moneyid_account = ll_moneyid_native THEN
  1229. // IF moneyid <> ll_moneyid_native THEN
  1230. // ld_takeamt = Round(cusamt/mrate,2)
  1231. // ELSE
  1232. // ld_takeamt = Round(cusamt * mrate,2)
  1233. // END IF
  1234. //ELSE
  1235. // ld_takeamt = Round(cusamt * mrate,2)
  1236. //END IF
  1237. //
  1238. //IF moneyid = ll_moneyid_account THEN
  1239. // ld_mrate = f_get_mrate(moneyid)
  1240. // IF ld_mrate = 0 THEN
  1241. // rslt = 0
  1242. // arg_msg = '错误的币种汇率'
  1243. // GOTO ext
  1244. // END IF
  1245. //ELSE
  1246. // IF moneyid = ll_moneyid_native THEN
  1247. // ld_mrate = 1
  1248. // ELSE
  1249. // ld_mrate = mrate
  1250. // END IF
  1251. //END IF
  1252. s_bmsttake s_take
  1253. s_take.scid = scid
  1254. s_take.cusid = cusid
  1255. s_take.takedate = cusdate
  1256. s_take.inrep = cusrep
  1257. s_take.oriamt = 0
  1258. s_take.msttakeamt = 0
  1259. s_take.takeamt_cn = cusamt
  1260. s_take.takeamt = ld_takeamt
  1261. s_take.dscrp = ls_dscrp
  1262. s_take.billcode = cusmoncode
  1263. s_take.relcode = relcode
  1264. s_take.banktypeid = banktypeid
  1265. s_take.opemp = arg_opemp
  1266. s_take.buildtype = 4
  1267. s_take.outwareid = cusmonid
  1268. s_take.accountsid = accountid
  1269. s_take.itemid = itemid
  1270. s_take.moneyid = moneyid
  1271. s_take.moneyid_cn = ll_moneyid_account
  1272. s_take.mrate = ld_mrate
  1273. IF uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN
  1274. rslt = 0
  1275. GOTO ext
  1276. END IF
  1277. ref_rapid = uo_take.ref_takeid
  1278. IF ref_rapid = 0 THEN
  1279. arg_msg = '错误的应收应付帐ID!'
  1280. rslt = 0
  1281. GOTO ext
  1282. END IF
  1283. UPDATE u_cusamt
  1284. SET refrapid = :ref_rapid
  1285. WHERE cusmonid = :arg_billid
  1286. And flag = 1;
  1287. IF sqlca.SQLCode <> 0 THEN
  1288. arg_msg = '更新单据资料失败,'+sqlca.SQLErrText
  1289. rslt = 0
  1290. GOTO ext
  1291. END IF
  1292. secflag = 1
  1293. ext:
  1294. IF rslt = 0 THEN
  1295. ROLLBACK;
  1296. ELSEIF rslt = 1 And arg_ifcommit THEN
  1297. COMMIT;
  1298. END IF
  1299. Destroy uo_take
  1300. RETURN rslt
  1301. end function
  1302. public function integer c_auditing2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1303. Long ref_rapid
  1304. DateTime null_dt
  1305. long cnt
  1306. SetNull(null_dt)
  1307. uo_musttake uo_take
  1308. uo_take = Create uo_musttake
  1309. IF getinfo(arg_billid,arg_msg) = 0 THEN
  1310. rslt = 0
  1311. GOTO ext
  1312. END IF
  1313. IF secflag = 0 THEN
  1314. rslt = 0
  1315. arg_msg = '单据未终审,不可以撤审'
  1316. GOTO ext
  1317. END IF
  1318. IF billtype <> 0 THEN
  1319. arg_msg = '单据不是客户收款单,不能操作'
  1320. rslt = 0
  1321. GOTO ext
  1322. END IF
  1323. UPDATE u_cusamt
  1324. SET secauditemp = '',
  1325. secauditdate = :null_dt,
  1326. secflag = 0
  1327. WHERE u_cusamt.cusmonid = :arg_billid
  1328. And secflag = 1;
  1329. IF sqlca.SQLCode <> 0 THEN
  1330. rslt = 0
  1331. arg_msg = "因网络或其它原因导致撤审单据操作失败"+"~n"+sqlca.SQLErrText
  1332. GOTO ext
  1333. ELSEIF sqlca.SQLNRows = 0 THEN
  1334. rslt = 0
  1335. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText
  1336. GOTO ext
  1337. END IF
  1338. IF refrapid > 0 THEN
  1339. SELECT count(*)
  1340. INTO :cnt
  1341. FROM u_bmsttake_fpmx
  1342. Where u_bmsttake_fpmx.takeid = :refrapid;
  1343. IF sqlca.SQLCode <> 0 THEN
  1344. rslt = 0
  1345. arg_msg = "查询相关应收帐金额是否已分配订单失败"+"~n"+sqlca.SQLErrText
  1346. GOTO ext
  1347. END IF
  1348. IF cnt > 0 THEN
  1349. rslt = 0
  1350. arg_msg = "相关应收帐金额已分配订单,不能撤审收款单"
  1351. GOTO ext
  1352. END IF
  1353. IF uo_take.del_takerec(scid,1,refrapid,cusid,arg_msg,False) = 0 THEN
  1354. rslt = 0
  1355. GOTO ext
  1356. END IF
  1357. END IF
  1358. secflag = 0
  1359. ext:
  1360. IF rslt = 0 THEN
  1361. ROLLBACK;
  1362. ELSEIF rslt = 1 And arg_ifcommit THEN
  1363. COMMIT;
  1364. END IF
  1365. Destroy uo_take
  1366. RETURN rslt
  1367. end function
  1368. public function integer uof_update_cust (long arg_billid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1369. String ls_name_old,ls_name_new
  1370. IF getinfo(arg_billid,arg_msg) = 0 THEN
  1371. rslt = 0
  1372. GOTO ext
  1373. END IF
  1374. IF billtype <> 0 THEN
  1375. arg_msg = '不是客户收款单,不能操作'
  1376. rslt = 0
  1377. GOTO ext
  1378. END IF
  1379. IF flag = 0 THEN
  1380. rslt = 0
  1381. arg_msg = '单据未初审,不可以操作'
  1382. GOTO ext
  1383. END IF
  1384. IF secflag = 1 THEN
  1385. rslt = 0
  1386. arg_msg = '单据已终审,不可以再操作'
  1387. GOTO ext
  1388. END IF
  1389. IF cusid = arg_cusid THEN
  1390. arg_msg = '客户资料无改变,操作取消'
  1391. rslt = 0
  1392. GOTO ext
  1393. END IF
  1394. IF cusid > 0 THEN
  1395. SELECT name
  1396. INTO :ls_name_old
  1397. FROM u_cust
  1398. Where cusid = :cusid;
  1399. IF sqlca.SQLCode <> 0 THEN
  1400. arg_msg = '查询原客户名称失败,'+sqlca.SQLErrText
  1401. rslt = 0
  1402. GOTO ext
  1403. END IF
  1404. END IF
  1405. SELECT name
  1406. INTO :ls_name_new
  1407. FROM u_cust
  1408. Where cusid = :arg_cusid;
  1409. IF sqlca.SQLCode <> 0 THEN
  1410. arg_msg = '查询新客户名称失败,'+sqlca.SQLErrText
  1411. rslt = 0
  1412. GOTO ext
  1413. END IF
  1414. UPDATE u_cusamt
  1415. SET cusid = :arg_cusid
  1416. WHERE u_cusamt.cusmonid = :arg_billid
  1417. AND flag = 1
  1418. And secflag = 0;
  1419. IF sqlca.SQLCode <> 0 THEN
  1420. rslt = 0
  1421. arg_msg = "因网络或其它原因导致单据客户资料操作失败,"+"~n"+sqlca.SQLErrText
  1422. GOTO ext
  1423. ELSEIF sqlca.SQLNRows = 0 THEN
  1424. rslt = 0
  1425. arg_msg = "单据正在更新单据客户资料,请稍后查询,"+"~n"+sqlca.SQLErrText
  1426. GOTO ext
  1427. END IF
  1428. IF cusid > 0 THEN
  1429. UPDATE u_rap_money
  1430. SET dscrp = REPLACE(dscrp,:ls_name_old,:ls_name_new)
  1431. Where rapmoneyid = :rapmoneyid;
  1432. ELSE
  1433. UPDATE u_rap_money
  1434. SET dscrp = :ls_name_new + '|' +dscrp
  1435. Where rapmoneyid = :rapmoneyid;
  1436. END IF
  1437. IF sqlca.SQLCode <> 0 THEN
  1438. arg_msg = '更新相关出纳帐摘要客户资料失败,'+sqlca.SQLErrText
  1439. rslt = 0
  1440. GOTO ext
  1441. END IF
  1442. cusid = arg_cusid
  1443. ext:
  1444. IF rslt = 0 THEN
  1445. ROLLBACK;
  1446. ELSEIF rslt = 1 And arg_ifcommit THEN
  1447. COMMIT;
  1448. END IF
  1449. RETURN rslt
  1450. end function
  1451. public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  1452. IF arg_billid <= 0 THEN
  1453. arg_msg = '错误的单据id'
  1454. GOTO ext
  1455. END IF
  1456. SELECT
  1457. u_cusamt.scid,
  1458. u_cusamt.cusid,
  1459. u_cusamt.banktypeid,
  1460. u_cusamt.accountid,
  1461. u_cusamt.cusdate,
  1462. u_cusamt.cusamt,
  1463. u_cusamt.dscrp,
  1464. u_cusamt.flag,
  1465. u_cusamt.secflag,
  1466. u_cusamt.cusmoncode,
  1467. u_cusamt.billtype,
  1468. u_cusamt.refrapid,
  1469. u_cusamt.reldateint,
  1470. u_cusamt.itemid,
  1471. u_cusamt.cusrep,
  1472. u_cusamt.moneyid,
  1473. u_cusamt.mrate,
  1474. u_cusamt.confirmflag,
  1475. u_cusamt.relcode,
  1476. u_cusamt.rapmoneyid,
  1477. u_cusamt.kind
  1478. INTO
  1479. :scid,
  1480. :cusid,
  1481. :banktypeid,
  1482. :accountid,
  1483. :cusdate,
  1484. :cusamt,
  1485. :dscrp,
  1486. :flag,
  1487. :secflag,
  1488. :cusmoncode,
  1489. :billtype,
  1490. :refrapid,
  1491. :reldateint,
  1492. :itemid,
  1493. :cusrep,
  1494. :moneyid,
  1495. :mrate,
  1496. :confirmflag,
  1497. :relcode,
  1498. :rapmoneyid,
  1499. :kind
  1500. FROM u_cusamt
  1501. Where u_cusamt.cusmonid = :arg_billid;
  1502. IF sqlca.SQLCode <> 0 THEN
  1503. rslt = 0
  1504. arg_msg = '查询数据操作失败,收据'+sqlca.SQLErrText
  1505. GOTO ext
  1506. END IF
  1507. cusmonid = arg_billid
  1508. ext:
  1509. IF rslt = 0 THEN p_reset()
  1510. RETURN rslt
  1511. end function
  1512. public function integer uof_update_cust_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1513. String ls_name_old
  1514. IF getinfo(arg_billid,arg_msg) = 0 THEN
  1515. rslt = 0
  1516. GOTO ext
  1517. END IF
  1518. IF billtype <> 0 THEN
  1519. arg_msg = '不是客户收款单,不能操作'
  1520. rslt = 0
  1521. GOTO ext
  1522. END IF
  1523. IF flag = 0 THEN
  1524. rslt = 0
  1525. arg_msg = '单据未初审,不可以操作'
  1526. GOTO ext
  1527. END IF
  1528. IF secflag = 1 THEN
  1529. rslt = 0
  1530. arg_msg = '单据已终审,不可以再操作'
  1531. GOTO ext
  1532. END IF
  1533. IF cusid > 0 THEN
  1534. SELECT name
  1535. INTO :ls_name_old
  1536. FROM u_cust
  1537. Where cusid = :cusid;
  1538. IF sqlca.SQLCode <> 0 THEN
  1539. arg_msg = '查询原客户名称失败,'+sqlca.SQLErrText
  1540. rslt = 0
  1541. GOTO ext
  1542. END IF
  1543. END IF
  1544. UPDATE u_cusamt
  1545. SET cusid = 0
  1546. WHERE u_cusamt.cusmonid = :arg_billid
  1547. AND flag = 1
  1548. AND secflag = 0;
  1549. IF sqlca.SQLCode <> 0 THEN
  1550. rslt = 0
  1551. arg_msg = "因网络或其它原因导致取消单据客户资料操作失败,"+"~n"+sqlca.SQLErrText
  1552. GOTO ext
  1553. ELSEIF sqlca.SQLNRows = 0 THEN
  1554. rslt = 0
  1555. arg_msg = "单据正在取消单据客户资料,请稍后查询,"+"~n"+sqlca.SQLErrText
  1556. GOTO ext
  1557. END IF
  1558. UPDATE u_rap_money
  1559. SET dscrp = REPLACE(dscrp,:ls_name_old,'')
  1560. Where rapmoneyid = :rapmoneyid;
  1561. IF sqlca.SQLCode <> 0 THEN
  1562. arg_msg = '更新相关出纳帐摘要客户资料失败,'+sqlca.SQLErrText
  1563. rslt = 0
  1564. GOTO ext
  1565. END IF
  1566. cusid = 0
  1567. ext:
  1568. IF rslt = 0 THEN
  1569. ROLLBACK;
  1570. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1571. COMMIT;
  1572. END IF
  1573. RETURN rslt
  1574. end function
  1575. public function integer uof_add_relcode (long arg_cusmonid, string arg_relcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1576. arg_relcode = Trim(arg_relcode)
  1577. IF it_updatebegin Or it_newbegin THEN
  1578. rslt = 0
  1579. arg_msg = "编辑状态下不可用"
  1580. GOTO ext
  1581. END IF
  1582. IF getinfo(arg_cusmonid,arg_msg) = 0 THEN
  1583. rslt = 0
  1584. GOTO ext
  1585. END IF
  1586. IF flag = 0 THEN
  1587. rslt = 0
  1588. arg_msg = "非审核状态下不可用"
  1589. GOTO ext
  1590. END IF
  1591. UPDATE u_cusamt
  1592. SET relcode = :arg_relcode
  1593. Where u_cusamt.cusmonid = :arg_cusmonid;
  1594. IF sqlca.SQLCode <> 0 THEN
  1595. rslt = 0
  1596. arg_msg = "因网络或其它原因导致添加相关号操作失败"+"~n"+sqlca.SQLErrText
  1597. GOTO ext
  1598. END IF
  1599. relcode = arg_relcode
  1600. ext:
  1601. IF rslt = 0 THEN
  1602. ROLLBACK;
  1603. ELSEIF rslt = 1 And arg_ifcommit THEN
  1604. COMMIT;
  1605. END IF
  1606. Return (rslt)
  1607. end function
  1608. on uo_cusamt.create
  1609. call super::create
  1610. TriggerEvent( this, "constructor" )
  1611. end on
  1612. on uo_cusamt.destroy
  1613. TriggerEvent( this, "destructor" )
  1614. call super::destroy
  1615. end on
  1616. event constructor;String str_optionvalue,arg_msg
  1617. f_get_sys_option_value('139',str_optionvalue,arg_msg)
  1618. uo_option_msttake_takeamt_secaudit = Long(str_optionvalue)
  1619. f_get_sys_option_value('178',str_optionvalue,arg_msg)
  1620. uo_option_outrep = Long(str_optionvalue)
  1621. end event