uo_reissue.sru 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267
  1. $PBExportHeader$uo_reissue.sru
  2. forward
  3. global type uo_reissue from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_reissue from nonvisualobject
  7. end type
  8. global uo_reissue uo_reissue
  9. type variables
  10. Public ProtectedWrite Long scid
  11. Public ProtectedWrite Long reissueid
  12. Public ProtectedWrite String reissuecode
  13. Public ProtectedWrite DateTime opdate
  14. Public ProtectedWrite String opemp
  15. Public ProtectedWrite DateTime moddate
  16. Public ProtectedWrite String modemp
  17. Public ProtectedWrite Int flag
  18. Public ProtectedWrite DateTime auditingdate
  19. Public ProtectedWrite String auditingrep
  20. Public ProtectedWrite Decimal sumamt = 0
  21. Public ProtectedWrite Decimal sumfamt = 0
  22. Public ProtectedWrite Int pflag
  23. Public ProtectedWrite DateTime pauditingdate
  24. Public ProtectedWrite String pauditingrep
  25. Public ProtectedWrite Int priceflag
  26. Public ProtectedWrite DateTime pricedate
  27. Public ProtectedWrite String pricerep
  28. Long relid
  29. String relcode
  30. DateTime reissuedate
  31. String dscrp
  32. Long cusid
  33. String cuscode
  34. String reissueemp
  35. String cusname
  36. Long r_type
  37. Long relint_3
  38. Long moneyid
  39. Decimal mrate //汇率
  40. Long itemid
  41. long exchangeid //汇率方案
  42. long deptid
  43. string freight, freight_tele, freight_address
  44. Transaction commit_transaction
  45. Boolean if_getid_ture = True
  46. s_reissuemx reissuemx[]
  47. Long it_mxbt
  48. Boolean it_newbegin = False
  49. Boolean it_updatebegin = False
  50. Int uo_option_reissue_secaudit
  51. Int uo_option_reissue_spt_secaudit
  52. Int uo_option_m_msttake
  53. end variables
  54. forward prototypes
  55. public function integer p_clearmx ()
  56. public function integer p_reset ()
  57. public function integer p_getinfo (long arg_scid, long arg_reissueid, ref string arg_msg)
  58. public function integer getinfo (long arg_scid, long arg_reissueid, ref string arg_msg)
  59. public function integer newbegin (long arg_scid, ref string arg_msg)
  60. public function integer updatebegin (long arg_scid, long arg_reissueid, ref string arg_msg)
  61. public function integer add_dscrp (long arg_scid, long arg_reissueid, string arg_newdescppart, ref string arg_msg)
  62. public function integer save (boolean arg_ifcommit, ref string arg_msg)
  63. public function integer del (long arg_scid, long arg_reissueid, ref string arg_msg, boolean arg_ifcommit)
  64. public function integer auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg)
  65. public function integer c_auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg)
  66. public function integer pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg)
  67. public function integer c_pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg)
  68. public function integer acceptmx (decimal arg_qty, double arg_price, decimal arg_amt, decimal arg_toamt, string arg_mxdscrp, long arg_printid, ref string arg_msg, long arg_mtrlid, string arg_mtrlname, decimal arg_tax)
  69. public function integer uof_uc_moditem (long arg_scid, long arg_reissueid, long arg_itemid, boolean arg_ifcommit, ref string arg_msg)
  70. public function integer priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg)
  71. public function integer c_priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg)
  72. public function integer acceptmx (s_reissuemx s_mx, ref string arg_msg)
  73. end prototypes
  74. public function integer p_clearmx ();//int p_clearmx()
  75. //清除明细
  76. it_mxbt=0
  77. sumamt = 0
  78. return 1
  79. end function
  80. public function integer p_reset ();//int p_reset()
  81. //清除对象及其明细
  82. scid = 0
  83. reissueid = 0
  84. reissuecode = ''
  85. opemp = ''
  86. modemp = ''
  87. auditingrep = ''
  88. flag = 0
  89. relid = 0
  90. relcode = ''
  91. dscrp = ''
  92. cusid = 0
  93. moneyid = 0
  94. mrate = 1
  95. cuscode = ''
  96. cusname = ''
  97. freight = ''
  98. freight_tele = ''
  99. freight_address = ''
  100. it_newbegin = FALSE
  101. it_updatebegin = FALSE
  102. //清除明细
  103. p_clearmx()
  104. RETURN 1
  105. end function
  106. public function integer p_getinfo (long arg_scid, long arg_reissueid, ref string arg_msg);//p_getinfo(arg_scid,arg_outwareid,arg_msg)
  107. //0 失败 1成功
  108. Int rslt = 1
  109. IF arg_reissueid <= 0 THEN
  110. rslt = 0
  111. arG_MSG = "非法补件单唯一码"
  112. GOTO ext
  113. END IF
  114. SELECT u_reissue.reissuecode,
  115. u_reissue.cusid,
  116. u_reissue.cuscode,
  117. u_reissue.cusname,
  118. u_reissue.reissuedate,
  119. u_reissue.relid,
  120. u_reissue.relcode,
  121. u_reissue.dscrp,
  122. u_reissue.flag,
  123. u_reissue.reissueemp,
  124. u_reissue.type,
  125. u_reissue.moneyid,
  126. u_reissue.relint_3,
  127. u_reissue.itemid,
  128. u_reissue.pflag,
  129. u_reissue.mrate,
  130. u_reissue.priceflag,
  131. u_reissue.exchangeid
  132. INTO :reissuecode,
  133. :cusid,
  134. :cuscode,
  135. :cusname,
  136. :reissuedate,
  137. :relid,
  138. :relcode,
  139. :dscrp,
  140. :flag,
  141. :reissueemp,
  142. :r_type,
  143. :moneyid,
  144. :relint_3,
  145. :itemid,
  146. :pflag,
  147. :mrate,
  148. :priceflag,
  149. :exchangeid
  150. FROM u_reissue
  151. WHERE u_reissue.reissueid = :arg_reissueid
  152. AND scid = :arg_scid
  153. USING commit_transaction;
  154. IF commit_transaction.SQLCode <> 0 THEN
  155. rslt = 0
  156. arG_MSG = "查询操作失败(错误补件单唯一码),补件单"+commit_transaction.SQLErrText
  157. GOTO ext
  158. END IF
  159. reissueid = arg_reissueid
  160. scid = arg_scid
  161. ext:
  162. IF rslt = 0 THEN p_reset()
  163. RETURN rslt
  164. end function
  165. public function integer getinfo (long arg_scid, long arg_reissueid, ref string arg_msg);//getinfo(arg_scid,arg_reissueid,arg_msg)
  166. //0 失败 1成功
  167. Int rslt = 1,i = 1,no_mxcheck = 0
  168. IF arg_reissueid <= 0 THEN
  169. rslt = 0
  170. arg_msg = "非法补件单唯一码"
  171. GOTO ext
  172. END IF
  173. sumamt = 0
  174. sumfamt = 0
  175. rslt = p_getinfo(arg_scid,arg_reissueid,arg_msg)
  176. IF rslt = 0 THEN GOTO ext
  177. //用游标读取明细
  178. IF r_type = 0 THEN
  179. DECLARE cur_inwaermx_0 CURSOR FOR
  180. SELECT u_reissuemx.printid,
  181. u_reissuemx.mtrlid,
  182. u_mtrldef.mtrlcode,
  183. u_mtrldef.mtrlname,
  184. u_reissuemx.qty,
  185. u_reissuemx.price,
  186. u_reissuemx.dscrp,
  187. u_reissuemx.amt,
  188. u_reissuemx.toamt,
  189. u_reissuemx.relid,
  190. u_reissuemx.tax,
  191. u_reissuemx.fprice,
  192. u_reissuemx.famt,
  193. u_reissuemx.tofamt
  194. FROM u_reissuemx left OUTER join u_mtrldef on
  195. u_reissuemx.mtrlid = u_mtrldef.mtrlid
  196. WHERE u_reissuemx.reissueid = :arg_reissueid AND
  197. u_reissuemx.scid = :arg_scid USING commit_transaction;
  198. OPEN cur_inwaermx_0;
  199. FETCH cur_inwaermx_0 INTO :reissuemx[i].printid,
  200. :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode,
  201. :reissuemx[i].mtrlname,:reissuemx[i].qty,
  202. :reissuemx[i].price,
  203. :reissuemx[i].mxdscrp,
  204. :reissuemx[i].amt,
  205. :reissuemx[i].toamt,
  206. :reissuemx[i].relid,
  207. :reissuemx[i].tax,
  208. :reissuemx[i].fprice,
  209. :reissuemx[i].famt,
  210. :reissuemx[i].tofamt;
  211. DO WHILE commit_transaction.SQLCode = 0
  212. sumamt += reissuemx[i].toamt
  213. sumfamt += reissuemx[i].tofamt
  214. i++
  215. FETCH cur_inwaermx_0 INTO :reissuemx[i].printid,
  216. :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode,
  217. :reissuemx[i].mtrlname,:reissuemx[i].qty,
  218. :reissuemx[i].price,
  219. :reissuemx[i].mxdscrp,
  220. :reissuemx[i].amt,
  221. :reissuemx[i].toamt,
  222. :reissuemx[i].relid,
  223. :reissuemx[i].tax,
  224. :reissuemx[i].fprice,
  225. :reissuemx[i].famt,
  226. :reissuemx[i].tofamt;
  227. LOOP
  228. CLOSE cur_inwaermx_0;
  229. ELSEIF r_type = 1 THEN
  230. DECLARE cur_inwaermx_1 CURSOR FOR
  231. SELECT u_reissuemx.printid,
  232. u_reissuemx.mtrlid,
  233. U_Expenses.Expensescode,
  234. U_Expenses.Expensesname,
  235. u_reissuemx.qty,
  236. u_reissuemx.price,
  237. u_reissuemx.dscrp,
  238. u_reissuemx.amt,
  239. u_reissuemx.toamt,
  240. u_reissuemx.relid,
  241. u_reissuemx.tax,
  242. u_reissuemx.fprice,
  243. u_reissuemx.famt,
  244. u_reissuemx.tofamt
  245. FROM u_reissuemx left OUTER join U_Expenses on
  246. u_reissuemx.mtrlid = U_Expenses.Expensesid
  247. WHERE u_reissuemx.reissueid = :arg_reissueid AND
  248. u_reissuemx.scid = :arg_scid USING commit_transaction;
  249. OPEN cur_inwaermx_1;
  250. FETCH cur_inwaermx_1 INTO :reissuemx[i].printid,
  251. :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode,
  252. :reissuemx[i].mtrlname,:reissuemx[i].qty,
  253. :reissuemx[i].price,
  254. :reissuemx[i].mxdscrp,
  255. :reissuemx[i].amt,
  256. :reissuemx[i].toamt,
  257. :reissuemx[i].relid,
  258. :reissuemx[i].tax,
  259. :reissuemx[i].fprice,
  260. :reissuemx[i].famt,
  261. :reissuemx[i].tofamt;
  262. DO WHILE commit_transaction.SQLCode = 0
  263. sumamt += reissuemx[i].amt
  264. sumfamt += reissuemx[i].famt
  265. i++
  266. FETCH cur_inwaermx_1 INTO :reissuemx[i].printid,
  267. :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode,
  268. :reissuemx[i].mtrlname,:reissuemx[i].qty,
  269. :reissuemx[i].price,
  270. :reissuemx[i].mxdscrp,
  271. :reissuemx[i].amt,
  272. :reissuemx[i].toamt,
  273. :reissuemx[i].relid,
  274. :reissuemx[i].tax,
  275. :reissuemx[i].fprice,
  276. :reissuemx[i].famt,
  277. :reissuemx[i].tofamt;
  278. LOOP
  279. CLOSE cur_inwaermx_1;
  280. ELSEIF r_type = 2 THEN
  281. DECLARE cur_inwaermx_2 CURSOR FOR
  282. SELECT u_reissuemx.printid,
  283. u_reissuemx.mtrlid,
  284. U_Expenses.Expensescode,
  285. u_reissuemx.mtrlname,
  286. u_reissuemx.qty,
  287. u_reissuemx.price,
  288. u_reissuemx.dscrp,
  289. u_reissuemx.amt,
  290. u_reissuemx.toamt,
  291. u_reissuemx.relid,
  292. u_reissuemx.tax,
  293. u_reissuemx.fprice,
  294. u_reissuemx.famt,
  295. u_reissuemx.tofamt
  296. FROM u_reissuemx left OUTER join U_Expenses on
  297. u_reissuemx.mtrlid = U_Expenses.Expensesid
  298. WHERE u_reissuemx.reissueid = :arg_reissueid AND
  299. u_reissuemx.scid = :arg_scid USING commit_transaction;
  300. OPEN cur_inwaermx_2;
  301. FETCH cur_inwaermx_2 INTO :reissuemx[i].printid,
  302. :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode,
  303. :reissuemx[i].mtrlname,:reissuemx[i].qty,
  304. :reissuemx[i].price,
  305. :reissuemx[i].mxdscrp,
  306. :reissuemx[i].amt,
  307. :reissuemx[i].toamt,
  308. :reissuemx[i].relid,
  309. :reissuemx[i].tax,
  310. :reissuemx[i].fprice,
  311. :reissuemx[i].famt,
  312. :reissuemx[i].tofamt;
  313. DO WHILE commit_transaction.SQLCode = 0
  314. sumamt += reissuemx[i].amt
  315. sumfamt += reissuemx[i].famt
  316. i++
  317. FETCH cur_inwaermx_2 INTO :reissuemx[i].printid,
  318. :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode,
  319. :reissuemx[i].mtrlname,:reissuemx[i].qty,
  320. :reissuemx[i].price,
  321. :reissuemx[i].mxdscrp,
  322. :reissuemx[i].amt,
  323. :reissuemx[i].toamt,
  324. :reissuemx[i].relid,
  325. :reissuemx[i].tax,
  326. :reissuemx[i].fprice,
  327. :reissuemx[i].famt,
  328. :reissuemx[i].tofamt;
  329. LOOP
  330. CLOSE cur_inwaermx_2;
  331. END IF
  332. //检验明细是否读入完整
  333. SELECT count(*) INTO :no_mxcheck
  334. FROM u_reissuemx
  335. WHERE u_reissuemx.reissueid = :arg_reissueid
  336. AND scid = :arg_scid USING commit_transaction;
  337. IF commit_transaction.SQLCode <> 0 THEN
  338. rslt = 0
  339. arg_msg = "查询操作失败,补件单明细数量"
  340. GOTO ext
  341. END IF
  342. IF i <> (no_mxcheck+1) THEN
  343. rslt = 0
  344. arg_msg = "查询操作失败,补件单明细"
  345. GOTO ext
  346. END IF
  347. reissueid = arg_reissueid
  348. scid = arg_scid
  349. it_mxbt = i - 1
  350. it_newbegin = FALSE
  351. it_updatebegin = FALSE
  352. ext:
  353. IF rslt = 0 THEN p_reset()
  354. RETURN rslt
  355. end function
  356. public function integer newbegin (long arg_scid, ref string arg_msg);//====================================================================
  357. // Function: newbegin(long arg_scid,int arg_billtype,ref string arg_msg)
  358. //--------------------------------------------------------------------
  359. // Description: 从置对象,设定业务类型,准备建立新进仓单
  360. //--------------------------------------------------------------------
  361. // Arguments:
  362. // value long arg_scid
  363. // value integer arg_billtype
  364. // reference string arg_msg
  365. //--------------------------------------------------------------------
  366. // Returns: integer
  367. //--------------------------------------------------------------------
  368. // Author: yyx Date: 2003.11.12
  369. //--------------------------------------------------------------------
  370. // Modify History:
  371. //
  372. //====================================================================
  373. int rslt=1
  374. if arg_scid < 0 then
  375. arg_msg = '请选择分部'
  376. rslt = 0
  377. goto ext
  378. end if
  379. p_reset()
  380. scid=arg_scid
  381. it_newbegin=true
  382. it_updatebegin=false
  383. ext:
  384. if rslt=0 then p_reset()
  385. return rslt
  386. end function
  387. public function integer updatebegin (long arg_scid, long arg_reissueid, ref string arg_msg);//====================================================================
  388. // Function: updatebegin(arg_scid,arg_inwareid,arg_billtype,arg_msg)
  389. //--------------------------------------------------------------------
  390. // Description: 从置对象,设定业务类型与关联ID,准备更新进仓单
  391. //--------------------------------------------------------------------
  392. // Arguments:
  393. // value long arg_scid
  394. // value long arg_inwareid
  395. // value integer arg_billtype
  396. // reference string arg_msg
  397. //--------------------------------------------------------------------
  398. // Returns: integer
  399. //--------------------------------------------------------------------
  400. // Author: yyx Date: 2003.11.12
  401. //--------------------------------------------------------------------
  402. // Modify History:
  403. //
  404. //====================================================================
  405. Long rslt = 1
  406. IF arg_scid < 0 THEN
  407. arg_msg = '请选择分部'
  408. rslt = 0
  409. GOTO ext
  410. END IF
  411. IF arg_reissueid <= 0 THEN
  412. rslt = 0
  413. GOTO ext
  414. END IF
  415. rslt = p_getinfo(arg_scid,arg_reissueid,arg_msg)
  416. IF rslt = 0 THEN GOTO ext
  417. IF flag = 1 or pflag = 1 THEN
  418. rslt = 0
  419. arg_msg = '单据已经审核,不可以修改'
  420. GOTO ext
  421. END IF
  422. reissueid = arg_reissueid
  423. scid = arg_scid
  424. it_newbegin = FALSE
  425. it_updatebegin = TRUE
  426. p_clearmx() //清除明细
  427. ext:
  428. IF rslt = 0 THEN p_reset()
  429. RETURN rslt
  430. end function
  431. public function integer add_dscrp (long arg_scid, long arg_reissueid, string arg_newdescppart, ref string arg_msg);//add_dscrp(string arg_newdescppart)
  432. //0 fail 1 success
  433. int rslt=1
  434. arg_newdescppart=trim(arg_newdescppart)
  435. if it_updatebegin or it_newbegin then
  436. rslt=0
  437. arg_msg="编辑状态下不可用"
  438. goto ext
  439. end if
  440. if arg_newdescppart='' then
  441. rslt=0
  442. arg_msg="要添加内容为空,操作取消"
  443. goto ext
  444. end if
  445. rslt=p_getinfo(arg_scid,arg_reissueid,arg_msg)
  446. if rslt=0 then goto ext
  447. if flag=0 then
  448. rslt=0
  449. arg_msg="非审核状态下不可用"
  450. goto ext
  451. end if
  452. update u_reissue
  453. set dscrp = dscrp+' '+:arg_newdescppart
  454. where u_reissue.reissueid = :reissueid
  455. and scid=:scid using commit_transaction;
  456. if commit_transaction.sqlcode<>0 then
  457. rollback ;
  458. rslt=0
  459. arg_msg="因网络或其它原因导致添加单据备注操作失败"+"~n"+commit_transaction.sqlerrtext
  460. goto ext
  461. end if
  462. commit using commit_transaction;
  463. dscrp = dscrp+' '+arg_newdescppart
  464. ext: return (rslt)
  465. end function
  466. public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i
  467. DateTime server_dt
  468. Long ls_newid
  469. String ls_sccode
  470. IF uo_option_m_msttake = -1000 THEN
  471. rslt = 0
  472. arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
  473. GOTO ext
  474. END IF
  475. IF IsNull(relid) THEN relid = 0
  476. IF IsNull(cusid) THEN cusid = 0
  477. IF IsNull(moneyid) THEN moneyid = 0
  478. IF IsNull(mrate) THEN mrate = 0
  479. IF IsNull(relcode) THEN relcode = ''
  480. IF IsNull(reissueemp) THEN reissueemp = ''
  481. IF IsNull(dscrp) THEN dscrp = ''
  482. IF IsNull(itemid) THEN itemid = 0
  483. IF IsNull(freight) THEN freight = ''
  484. IF IsNull(freight_tele) THEN freight_tele = ''
  485. IF IsNull(freight_address) THEN freight_address = ''
  486. IF IsNull(exchangeid) THEN exchangeid = 0
  487. IF IsNull(deptid) THEN deptid = 0
  488. IF it_newbegin = False And it_updatebegin = False THEN
  489. rslt = 0
  490. arg_msg = "非编辑状态不可以提交"
  491. GOTO ext
  492. END IF
  493. SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
  494. IF commit_transaction.SQLCode <> 0 THEN
  495. rslt = 0
  496. arg_msg = "查询操作失败,日期 "
  497. GOTO ext
  498. END IF
  499. IF cusid = 0 THEN
  500. IF r_type = 2 THEN
  501. arg_msg = '请选择供应商'
  502. ELSE
  503. arg_msg = '请选择客户'
  504. END IF
  505. rslt = 0
  506. GOTO ext
  507. END IF
  508. IF r_type = 2 THEN
  509. SELECT count(*) INTO :cnt
  510. FROM u_spt
  511. WHERE sptid = :cusid
  512. Using commit_transaction;
  513. IF commit_transaction.SQLCode <> 0 THEN
  514. arg_msg = '查询供应商资料失败,'+sqlca.SQLErrText
  515. rslt = 0
  516. GOTO ext
  517. END IF
  518. IF cnt = 0 THEN
  519. rslt = 0
  520. arg_msg = '错误的供应商资料'
  521. GOTO ext
  522. END IF
  523. ELSE
  524. SELECT count(*) INTO :cnt
  525. FROM u_cust
  526. WHERE cusid = :cusid
  527. Using commit_transaction;
  528. IF commit_transaction.SQLCode <> 0 THEN
  529. arg_msg = '查询客户资料失败,'+sqlca.SQLErrText
  530. rslt = 0
  531. GOTO ext
  532. END IF
  533. IF cnt = 0 THEN
  534. rslt = 0
  535. arg_msg = '错误的客户资料'
  536. GOTO ext
  537. END IF
  538. END IF
  539. IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
  540. rslt = 0
  541. arg_msg = "没有正确明细内容"
  542. GOTO ext
  543. END IF
  544. IF itemid = 0 THEN
  545. rslt = 0
  546. arg_msg = '请选择项目'
  547. GOTO ext
  548. END IF
  549. SELECT count(*) INTO :cnt
  550. FROM u_itemdef
  551. WHERE itemid = :itemid
  552. Using commit_transaction;
  553. IF commit_transaction.SQLCode <> 0 THEN
  554. arg_msg = '查询项目资料失败,'+sqlca.SQLErrText
  555. rslt = 0
  556. GOTO ext
  557. END IF
  558. IF cnt = 0 THEN
  559. rslt = 0
  560. arg_msg = '错误的项目资料'
  561. GOTO ext
  562. END IF
  563. /////////检查币种//////////////////// //
  564. cnt = 0
  565. SELECT count(*) INTO :cnt
  566. FROM cw_currency
  567. Where moneyid = :moneyid;
  568. IF commit_transaction.SQLCode <> 0 THEN
  569. arg_msg = '查询币种失败'
  570. rslt = 0
  571. GOTO ext
  572. END IF
  573. IF cnt = 0 THEN
  574. arg_msg = '币种资料不存在'
  575. rslt = 0
  576. GOTO ext
  577. END IF
  578. IF Not ( uo_option_m_msttake = 1 And r_type = 1 ) THEN
  579. IF mrate = 0 THEN
  580. arg_msg = '币种汇率错误'
  581. rslt = 0
  582. GOTO ext
  583. END IF
  584. END IF
  585. IF f_moneyid_rate_check(moneyid,mrate,arg_msg) = 0 THEN
  586. rslt = 0
  587. GOTO ext
  588. END IF
  589. ///////////////////// //
  590. IF f_check_inoutdate(0,reissuedate,False,arg_msg) = 0 THEN
  591. rslt = 0
  592. GOTO ext
  593. END IF
  594. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  595. IF reissueid = 0 THEN //新建
  596. ls_newid = f_sys_scidentity(scid,"u_reissue","reissueid",arg_msg,True,id_sqlca)
  597. IF ls_newid <= 0 THEN
  598. rslt = 0
  599. GOTO ext
  600. END IF
  601. //取分部代号
  602. IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
  603. rslt = 0
  604. GOTO ext
  605. END IF
  606. //取得新单据编号
  607. IF r_type = 0 THEN //补件单
  608. reissuecode = getid(scid,ls_sccode + 'FJ',Date(server_dt),if_getid_ture,commit_transaction)
  609. ELSEIF r_type = 1 THEN //费用单
  610. reissuecode = getid(scid,ls_sccode + 'FP',Date(server_dt),if_getid_ture,commit_transaction)
  611. ELSE
  612. reissuecode = getid(scid,ls_sccode + 'FS',Date(server_dt),if_getid_ture,commit_transaction)
  613. END IF
  614. IF reissuecode = "err" THEN
  615. reissuecode = ''
  616. rslt = 0
  617. arg_msg = "无法获取单据编号"+"~n"+commit_transaction.SQLErrText
  618. GOTO ext
  619. END IF
  620. INSERT INTO u_reissue (
  621. scid,
  622. reissueid,
  623. reissuecode,
  624. cusid,
  625. reissuedate,
  626. relid,
  627. relcode,
  628. dscrp,
  629. opdate,
  630. opemp,
  631. flag,
  632. reissueemp,
  633. type,
  634. moneyid,
  635. mrate,
  636. itemid,
  637. freight,
  638. freight_tele,
  639. freight_address,
  640. exchangeid,
  641. deptid)
  642. VALUES (
  643. :scid,
  644. :ls_newid,
  645. :reissuecode,
  646. :cusid,
  647. :reissuedate,
  648. :relid,
  649. :relcode,
  650. :dscrp,
  651. :server_dt,
  652. :publ_operator,
  653. :flag,
  654. :reissueemp,
  655. :r_type,
  656. :moneyid,
  657. :mrate,
  658. :itemid,
  659. :freight,
  660. :freight_tele,
  661. :freight_address,
  662. :exchangeid,
  663. :deptid) Using commit_transaction ;
  664. IF commit_transaction.SQLCode <> 0 THEN
  665. rslt = 0
  666. arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText
  667. GOTO ext
  668. END IF
  669. //读取新reissueid
  670. reissueid = ls_newid
  671. ELSE //////////////////////////////////////////////// //更新
  672. UPDATE u_reissue
  673. SET cusid = :cusid,
  674. reissuedate = :reissuedate,
  675. relid = :relid,
  676. relcode = :relcode,
  677. dscrp = :dscrp,
  678. moddate = : server_dt,
  679. modemp = :publ_operator,
  680. reissueemp = :reissueemp,
  681. type = :r_type,
  682. moneyid = :moneyid,
  683. mrate = :mrate,
  684. itemid = :itemid,
  685. freight = :freight,
  686. freight_tele = :freight_tele,
  687. freight_address = :freight_address,
  688. exchangeid = :exchangeid,
  689. deptid = :deptid
  690. WHERE u_reissue.reissueid = :reissueid
  691. AND u_reissue.scid = :scid
  692. And flag = 0 Using commit_transaction;
  693. IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
  694. rslt = 0
  695. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+commit_transaction.SQLErrText
  696. GOTO ext
  697. END IF
  698. //删除原有明细
  699. DELETE FROM u_reissuemx
  700. WHERE u_reissuemx.reissueid = :reissueid
  701. And u_reissuemx.scid = :scid Using commit_transaction;
  702. IF commit_transaction.SQLCode <> 0 THEN
  703. rslt = 0
  704. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  705. GOTO ext
  706. END IF
  707. END IF
  708. FOR i = 1 To it_mxbt
  709. INSERT INTO u_reissuemx
  710. (scid,
  711. reissueid,
  712. mtrlid,
  713. printid,
  714. qty,
  715. price,
  716. amt,
  717. toamt,
  718. dscrp,
  719. tax,
  720. mtrlcode,
  721. mtrlname,
  722. mtrlmode,
  723. unit,
  724. configcode,
  725. configname,
  726. mtrlcolor,
  727. simplename,
  728. fprice,
  729. famt,
  730. tofamt,
  731. reltaskid)
  732. VALUES (
  733. :scid,
  734. :reissueid,
  735. :reissuemx[i].mtrlid,
  736. :reissuemx[i].printid,
  737. :reissuemx[i].qty,
  738. :reissuemx[i].price,
  739. :reissuemx[i].amt,
  740. :reissuemx[i].toamt,
  741. :reissuemx[i].mxdscrp,
  742. :reissuemx[i].tax,
  743. :reissuemx[i].mtrlcode,
  744. :reissuemx[i].mtrlname,
  745. :reissuemx[i].mtrlmode,
  746. :reissuemx[i].unit,
  747. :reissuemx[i].configcode,
  748. :reissuemx[i].configname,
  749. :reissuemx[i].mtrlcolor,
  750. :reissuemx[i].simplename,
  751. :reissuemx[i].fprice,
  752. :reissuemx[i].famt,
  753. :reissuemx[i].tofamt,
  754. :reissuemx[i].reltaskid) Using commit_transaction;
  755. IF commit_transaction.SQLCode <> 0 THEN
  756. IF it_newbegin THEN reissueid = 0 //还原reissueid
  757. rslt = 0
  758. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  759. GOTO ext
  760. END IF
  761. NEXT
  762. it_newbegin = False
  763. it_updatebegin = False
  764. ext:
  765. IF rslt = 0 THEN
  766. ROLLBACK Using commit_transaction;
  767. p_clearmx()
  768. ELSEIF rslt = 1 And arg_ifcommit THEN
  769. COMMIT Using commit_transaction;
  770. END IF
  771. RETURN rslt
  772. end function
  773. public function integer del (long arg_scid, long arg_reissueid, ref string arg_msg, boolean arg_ifcommit);//如果单据还没有审核删除单据极其明细
  774. //0 FAIL, 1 SUCCESS
  775. Int rslt = 1
  776. IF arg_reissueid <= 0 THEN
  777. rslt = 0
  778. arG_MSG = "没有删除对象,操作取消"
  779. GOTO ext
  780. END IF
  781. IF p_getinfo(arg_scid,arg_reissueid,arG_MSG) = 0 THEN
  782. rslt = 0
  783. GOTO ext
  784. END IF
  785. IF flag = 1 or pflag = 1 THEN
  786. rslt = 0
  787. arG_MSG = "单据已经审核,不可以删除"
  788. GOTO ext
  789. END IF
  790. DELETE FROM u_reissue
  791. WHERE u_reissue.reissueid = :arg_reissueid
  792. AND u_reissue.scid = :arg_scid USING commit_transaction;
  793. IF commit_transaction.SQLCode <> 0 THEN
  794. rslt = 0
  795. arG_MSG = "删除补件单操作失败"+"~n"+commit_transaction.SQLErrText
  796. GOTO ext
  797. END IF
  798. DELETE FROM u_reissuemx
  799. WHERE u_reissuemx.reissueid = :arg_reissueid
  800. AND u_reissuemx.scid = :arg_scid USING commit_transaction;
  801. IF commit_transaction.SQLCode <> 0 THEN
  802. rslt = 0
  803. arG_MSG = "删除补件单明细操作失败"+"~n"+commit_transaction.SQLErrText
  804. GOTO ext
  805. END IF
  806. it_newbegin = FALSE
  807. it_updatebegin = FALSE
  808. ext:
  809. IF rslt = 0 THEN
  810. ROLLBACK USING commit_transaction;
  811. p_reset()
  812. ELSEIF rslt = 1 AND arg_ifcommit THEN
  813. COMMIT USING commit_transaction;
  814. END IF
  815. RETURN (rslt)
  816. end function
  817. public function integer auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  818. Long cnt = 0,ll_i
  819. Long ll_moneyid_native,ll_moneyid
  820. Decimal ld_mrate
  821. If uo_option_reissue_secaudit = -1000 Then
  822. rslt = 0
  823. arg_msg = '选项:[212]客户费用单使用二级审核,读取初始默认值失败,操作取消!'
  824. Goto ext
  825. End If
  826. If uo_option_reissue_spt_secaudit = -1000 Then
  827. rslt = 0
  828. arg_msg = '选项:[213]供应商费用单使用二级审核,读取初始默认值失败,操作取消!'
  829. Goto ext
  830. End If
  831. If uo_option_m_msttake = -1000 Then
  832. rslt = 0
  833. arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
  834. Goto ext
  835. End If
  836. uo_musttake uo_take
  837. uo_mustpay uo_pay
  838. uo_take = Create uo_musttake
  839. uo_pay = Create uo_mustpay
  840. String ls_about,ls_dscrp
  841. Decimal ld_takeamt = 0,ld_msttakeamt = 0
  842. Decimal ld_payamt = 0,ld_mstpayamt = 0
  843. Decimal ld_taxamt = 0
  844. Int li_btype
  845. Long ll_accountsid
  846. Long ll_dft_itemid_tax
  847. s_bmstpaymx s_paymx_tax
  848. s_bmsttakemx s_takemx_tax
  849. If getinfo(arg_scid,arg_reissueid,arg_msg) = 0 Then
  850. rslt = 0
  851. Goto ext
  852. End If
  853. If reissueid = 0 Then
  854. rslt = 0
  855. arg_msg = "没有审核对象"
  856. Goto ext
  857. End If
  858. If it_newbegin Or it_updatebegin Then
  859. rslt = 0
  860. arg_msg = "编辑状态下不可以执行审核"
  861. Goto ext
  862. End If
  863. If flag = 1 Then
  864. rslt = 0
  865. arg_msg = "单据已经审核"
  866. Goto ext
  867. End If
  868. If r_type = 1 And uo_option_reissue_secaudit = 1 Then
  869. If pflag = 0 Then
  870. rslt = 0
  871. arg_msg = "单据还没有执行初审,不能终审"
  872. Goto ext
  873. End If
  874. End If
  875. If r_type = 2 And uo_option_reissue_spt_secaudit = 1 Then
  876. If pflag = 0 Then
  877. rslt = 0
  878. arg_msg = "单据还没有执行初审,不能终审"
  879. Goto ext
  880. End If
  881. End If
  882. Select moneyid Into :ll_moneyid_native
  883. From cw_currency
  884. Where native = 1;
  885. If sqlca.SQLCode <> 0 Then
  886. arg_msg = '查询本位币资料失败'
  887. rslt = 0
  888. Goto ext
  889. End If
  890. Select btype,accountsid Into :li_btype,:ll_accountsid
  891. From cw_banktype
  892. Where banktypeid = :relid Using commit_transaction;
  893. If commit_transaction.SQLCode <> 0 Then
  894. rslt = 0
  895. arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText
  896. Goto ext
  897. End If
  898. Select count(*) Into :cnt
  899. From u_user
  900. Where username = :publ_operator Using commit_transaction ;
  901. If commit_transaction.SQLCode <> 0 Then
  902. rslt = 0
  903. arg_msg = "查询操作失败,操作员"
  904. Goto ext
  905. End If
  906. If cnt = 0 Then
  907. rslt = 0
  908. arg_msg = "操作员姓名未登记或已取消"
  909. Goto ext
  910. End If
  911. Update u_reissue
  912. Set auditingrep = :publ_operator,
  913. auditingdate = getdate(),
  914. flag = 1
  915. Where u_reissue.reissueid = :reissueid
  916. And flag = 0
  917. And scid = :scid Using commit_transaction;
  918. If commit_transaction.SQLCode <> 0 Then
  919. rslt = 0
  920. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  921. Goto ext
  922. ElseIf commit_transaction.SQLNRows = 0 Then
  923. rslt = 0
  924. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  925. Goto ext
  926. End If
  927. If r_type = 0 Then
  928. If sumamt <> 0 Then
  929. ls_about = reissuecode + "补件款"
  930. ls_dscrp = ls_about +','+dscrp
  931. If uo_option_m_msttake = 0 Then
  932. ld_msttakeamt = sumfamt
  933. Else
  934. ld_msttakeamt = sumamt
  935. End If
  936. If li_btype = 1 Then
  937. ld_takeamt = ld_msttakeamt
  938. Else
  939. ld_takeamt = 0
  940. End If
  941. If uo_option_m_msttake = 0 Then
  942. ld_msttakeamt = ld_msttakeamt //Round(ld_msttakeamt * mrate,2)
  943. ld_takeamt = ld_takeamt //Round(ld_takeamt * mrate,2)
  944. ll_moneyid = ll_moneyid_native
  945. ld_mrate = 1
  946. Else
  947. ld_msttakeamt = ld_msttakeamt
  948. ld_takeamt = ld_takeamt
  949. ll_moneyid = moneyid
  950. If sumamt <> 0 Then
  951. ld_mrate = sumfamt / sumamt
  952. Else
  953. ld_mrate = mrate
  954. End If
  955. End If
  956. s_bmsttake s_take
  957. s_take.scid = scid
  958. s_take.cusid = cusid
  959. s_take.takedate = reissuedate
  960. s_take.inrep = reissueemp
  961. s_take.oriamt = ld_msttakeamt
  962. s_take.msttakeamt = ld_msttakeamt
  963. s_take.takeamt = ld_takeamt
  964. s_take.dscrp = ls_dscrp
  965. s_take.billcode = reissuecode
  966. s_take.relcode = relcode
  967. s_take.banktypeid = relid
  968. s_take.opemp = publ_operator
  969. s_take.buildtype = 1
  970. s_take.outwareid = reissueid
  971. If li_btype = 0 Then
  972. s_take.accountsid = 0
  973. Else
  974. s_take.accountsid = ll_accountsid
  975. End If
  976. s_take.itemid = itemid
  977. s_take.moneyid = ll_moneyid
  978. s_take.mrate = ld_mrate
  979. s_take.exchangeid = exchangeid
  980. If uo_take.add_takerec (s_take,arg_msg,False) = 0 Then
  981. rslt = 0
  982. Goto ext
  983. End If
  984. Update u_reissue
  985. Set relint_3 = :uo_take.ref_takeid
  986. Where u_reissue.reissueid = :reissueid
  987. And scid = :scid
  988. And flag = 1 Using commit_transaction;
  989. If commit_transaction.SQLCode <> 0 Then
  990. arg_msg = '更新补件单相关应收帐ID失败'
  991. rslt = 0
  992. Goto ext
  993. End If
  994. End If
  995. ElseIf r_type = 1 Then
  996. For ll_i = 1 To it_mxbt
  997. If reissuemx[ll_i].amt <> 0 Then
  998. If Trim(reissuemx[ll_i].mxdscrp) = '' Then
  999. ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname
  1000. Else
  1001. ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname + ',' + reissuemx[ll_i].mxdscrp
  1002. End If
  1003. // ls_dscrp = ls_about
  1004. ls_dscrp = ls_about +','+dscrp
  1005. ld_msttakeamt = 0 - Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax),2)
  1006. ld_taxamt = 0 - Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax) * reissuemx[ll_i].tax ,2)
  1007. If li_btype = 1 Then
  1008. ld_takeamt = ld_msttakeamt
  1009. Else
  1010. ld_takeamt = 0
  1011. End If
  1012. If uo_option_m_msttake = 0 Then
  1013. ld_msttakeamt = Round(ld_msttakeamt * mrate,2)
  1014. ld_takeamt = Round(ld_takeamt * mrate,2)
  1015. ll_moneyid = ll_moneyid_native
  1016. ld_mrate = 1
  1017. Else
  1018. ld_msttakeamt = ld_msttakeamt
  1019. ld_takeamt = ld_takeamt
  1020. ll_moneyid = moneyid
  1021. ld_mrate = mrate
  1022. End If
  1023. s_bmsttake s_take2
  1024. s_take2.scid = scid
  1025. s_take2.cusid = cusid
  1026. s_take2.takedate = reissuedate
  1027. s_take2.inrep = reissueemp
  1028. s_take2.oriamt = ld_msttakeamt
  1029. s_take2.msttakeamt = ld_msttakeamt
  1030. s_take2.takeamt = ld_takeamt
  1031. s_take2.dscrp = ls_dscrp
  1032. s_take2.billcode = reissuecode
  1033. s_take2.relcode = relcode
  1034. s_take2.banktypeid = relid
  1035. s_take2.opemp = publ_operator
  1036. s_take2.buildtype = 1
  1037. s_take2.outwareid = reissueid
  1038. If li_btype = 0 Then
  1039. s_take2.accountsid = 0
  1040. Else
  1041. s_take2.accountsid = ll_accountsid
  1042. End If
  1043. s_take2.itemid = itemid
  1044. s_take2.moneyid = ll_moneyid
  1045. s_take2.mrate = ld_mrate
  1046. s_take2.exchangeid = exchangeid
  1047. If uo_take.add_takerec (s_take2,arg_msg,False) = 0 Then
  1048. rslt = 0
  1049. Goto ext
  1050. End If
  1051. If ld_taxamt <> 0 Then
  1052. ls_about = reissuecode + "税金,相关号:"+relcode
  1053. Select itemid Into :ll_dft_itemid_tax
  1054. From u_itemdef
  1055. Where dfttype = 12 Using commit_transaction;
  1056. If commit_transaction.SQLCode <> 0 Then
  1057. arg_msg = '查询默认销售税金项目资料失败,'+commit_transaction.SQLErrText
  1058. rslt = 0
  1059. Goto ext
  1060. End If
  1061. If uo_option_m_msttake = 0 Then
  1062. ld_taxamt = Round(ld_taxamt * mrate,2)
  1063. ll_moneyid = ll_moneyid_native
  1064. ld_mrate = 1
  1065. Else
  1066. ld_taxamt = ld_taxamt
  1067. ll_moneyid = moneyid
  1068. ld_mrate = mrate
  1069. End If
  1070. s_takemx_tax.scid = scid
  1071. s_takemx_tax.takeid = uo_take.ref_takeid
  1072. s_takemx_tax.cusid = cusid
  1073. s_takemx_tax.takedate = reissuedate
  1074. s_takemx_tax.inrep = reissueemp
  1075. s_takemx_tax.msttakeamt = ld_taxamt
  1076. s_takemx_tax.takeamt = 0
  1077. s_takemx_tax.dscrp = ls_about
  1078. s_takemx_tax.billcode = reissuecode
  1079. s_takemx_tax.relcode = relcode
  1080. s_takemx_tax.banktypeid = relid
  1081. s_takemx_tax.opemp = publ_operator
  1082. s_takemx_tax.buildtype = 3
  1083. s_takemx_tax.outwareid = reissueid
  1084. s_takemx_tax.salebillid = 0
  1085. s_takemx_tax.itemid = ll_dft_itemid_tax
  1086. s_takemx_tax.moneyid = ll_moneyid
  1087. s_takemx_tax.mrate = ld_mrate
  1088. If uo_take.add_takerecmx(s_takemx_tax,arg_msg,False) = 0 Then
  1089. rslt = 0
  1090. Goto ext
  1091. End If
  1092. End If
  1093. Update u_reissuemx
  1094. Set relid = :uo_take.ref_takeid
  1095. From u_reissuemx,u_reissue
  1096. Where u_reissuemx.reissueid = :reissueid
  1097. And u_reissuemx.printid = :reissuemx[ll_i].printid
  1098. And u_reissuemx.scid = :scid
  1099. And u_reissuemx.scid = u_reissue.scid
  1100. And u_reissuemx.reissueid = u_reissue.reissueid
  1101. And u_reissue.flag = 1 Using commit_transaction;
  1102. If commit_transaction.SQLCode <> 0 Then
  1103. arg_msg = '更新费用单相关应收帐ID失败'
  1104. rslt = 0
  1105. Goto ext
  1106. End If
  1107. End If
  1108. Next
  1109. ElseIf r_type = 2 Then
  1110. For ll_i = 1 To it_mxbt
  1111. If Trim(reissuemx[ll_i].mxdscrp) = '' Then
  1112. ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname
  1113. Else
  1114. ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname + ',' + reissuemx[ll_i].mxdscrp
  1115. End If
  1116. ls_dscrp = ls_about
  1117. ld_mstpayamt = Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax),2)
  1118. ld_taxamt = Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax) * reissuemx[ll_i].tax ,2)
  1119. If li_btype = 1 Then
  1120. ld_payamt = ld_mstpayamt
  1121. Else
  1122. ld_payamt = 0
  1123. End If
  1124. s_bmstpay s_pay
  1125. s_pay.scid = scid
  1126. s_pay.sptid = cusid
  1127. s_pay.paydate = reissuedate
  1128. s_pay.inrep = reissueemp
  1129. s_pay.oriamt = ld_mstpayamt
  1130. s_pay.mstpayamt = ld_mstpayamt
  1131. s_pay.payamt = ld_payamt
  1132. s_pay.payamt_cn = ld_payamt
  1133. s_pay.dscrp = ls_dscrp
  1134. s_pay.billcode = reissuecode
  1135. s_pay.relcode = relcode
  1136. s_pay.banktypeid = relid
  1137. //s_pay.viewdate
  1138. s_pay.opemp = publ_operator
  1139. s_pay.buildtype = 1
  1140. s_pay.inwareid = reissueid
  1141. If li_btype = 0 Then
  1142. s_pay.accountsid = 0
  1143. Else
  1144. s_pay.accountsid = ll_accountsid
  1145. End If
  1146. s_pay.itemid = itemid
  1147. s_pay.moneyid = moneyid
  1148. s_pay.moneyid_cn = moneyid
  1149. If uo_pay.add_payrec (s_pay,arg_msg,False) = 0 Then
  1150. rslt = 0
  1151. Goto ext
  1152. End If
  1153. If ld_taxamt <> 0 Then
  1154. ls_about = reissuecode + "税金,相关号:"+relcode
  1155. Select itemid Into :ll_dft_itemid_tax
  1156. From u_itemdef
  1157. Where dfttype = 13 Using commit_transaction;
  1158. If commit_transaction.SQLCode <> 0 Then
  1159. arg_msg = '查询默认采购外协税金项目资料失败,'+commit_transaction.SQLErrText
  1160. rslt = 0
  1161. Goto ext
  1162. End If
  1163. s_paymx_tax.scid = scid
  1164. s_paymx_tax.payid = uo_pay.ref_payid
  1165. s_paymx_tax.sptid = cusid
  1166. s_paymx_tax.paydate = reissuedate
  1167. s_paymx_tax.inrep = reissueemp
  1168. s_paymx_tax.mstpayamt = ld_taxamt
  1169. s_paymx_tax.payamt = 0
  1170. s_paymx_tax.dscrp = ls_about
  1171. s_paymx_tax.billcode = reissuecode
  1172. s_paymx_tax.relcode = relcode
  1173. s_paymx_tax.banktypeid = relid
  1174. s_paymx_tax.opemp = publ_operator
  1175. s_paymx_tax.buildtype = 3
  1176. s_paymx_tax.inwareid = reissueid
  1177. s_paymx_tax.itemid = ll_dft_itemid_tax
  1178. s_paymx_tax.moneyid = moneyid
  1179. If uo_pay.add_payrecmx (s_paymx_tax,arg_msg,False) = 0 Then
  1180. rslt = 0
  1181. Goto ext
  1182. End If
  1183. End If
  1184. Update u_reissuemx
  1185. Set relid = :uo_pay.ref_payid
  1186. From u_reissuemx,u_reissue
  1187. Where u_reissuemx.reissueid = :reissueid
  1188. And u_reissuemx.printid = :reissuemx[ll_i].printid
  1189. And u_reissuemx.scid = :scid
  1190. And u_reissuemx.scid = u_reissue.scid
  1191. And u_reissuemx.reissueid = u_reissue.reissueid
  1192. And u_reissue.flag = 1 Using commit_transaction;
  1193. If commit_transaction.SQLCode <> 0 Then
  1194. arg_msg = '更新销售单相关应收帐ID失败'
  1195. rslt = 0
  1196. Goto ext
  1197. End If
  1198. Next
  1199. End If
  1200. flag = 1
  1201. ext:
  1202. Destroy uo_take
  1203. Destroy uo_pay
  1204. If rslt = 0 Then
  1205. Rollback Using commit_transaction;
  1206. ElseIf rslt = 1 And arg_ifcommit Then
  1207. Commit Using commit_transaction;
  1208. End If
  1209. Return rslt
  1210. end function
  1211. public function integer c_auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i
  1212. uo_musttake uo_take
  1213. uo_mustpay uo_pay
  1214. uo_take = CREATE uo_musttake
  1215. uo_pay = create uo_mustpay
  1216. Long ll_takeid
  1217. DateTime null_dt
  1218. SetNull(null_dt)
  1219. IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN
  1220. rslt = 0
  1221. GOTO ext
  1222. END IF
  1223. IF reissueid = 0 THEN
  1224. rslt = 0
  1225. arg_msg = "没有审核对象"
  1226. GOTO ext
  1227. END IF
  1228. IF it_newbegin OR it_updatebegin THEN
  1229. rslt = 0
  1230. arg_msg = "编辑状态下不可以执行审核"
  1231. GOTO ext
  1232. END IF
  1233. IF flag = 0 THEN
  1234. rslt = 0
  1235. arg_msg = "单据还未审核"
  1236. GOTO ext
  1237. END IF
  1238. SELECT count(*) INTO :cnt
  1239. FROM u_user
  1240. Where username = :publ_operator USING commit_transaction ;
  1241. IF commit_transaction.SQLCode <> 0 THEN
  1242. rslt = 0
  1243. arg_msg = "查询操作失败,操作员"
  1244. GOTO ext
  1245. END IF
  1246. IF cnt = 0 THEN
  1247. rslt = 0
  1248. arg_msg = "操作员姓名未登记或已取消"
  1249. GOTO ext
  1250. END IF
  1251. UPDATE u_reissue
  1252. SET Auditingrep = '',
  1253. Auditingdate = :null_dt,
  1254. flag = 0,
  1255. relint_3 = 0
  1256. WHERE u_reissue.reissueid = :reissueid
  1257. AND flag = 1
  1258. AND scid = :scid USING commit_transaction;
  1259. IF commit_transaction.SQLCode <> 0 THEN
  1260. rslt = 0
  1261. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  1262. GOTO ext
  1263. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1264. rslt = 0
  1265. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1266. GOTO ext
  1267. END IF
  1268. IF r_type = 0 THEN
  1269. IF sumamt <> 0 THEN
  1270. IF uo_take.del_takerec(scid,1,relint_3,cusid,arg_msg,FALSE) = 0 THEN
  1271. rslt = 0
  1272. GOTO ext
  1273. END IF
  1274. END IF
  1275. ELSEIF r_type = 1 THEN
  1276. FOR ll_i = 1 TO it_mxbt
  1277. IF reissuemx[ll_i].amt <> 0 THEN
  1278. IF uo_take.del_takerec(scid,1,reissuemx[ll_i].relid,cusid,arg_msg,FALSE) = 0 THEN
  1279. rslt = 0
  1280. GOTO ext
  1281. END IF
  1282. UPDATE u_reissuemx
  1283. SET relid = 0
  1284. WHERE u_reissuemx.reissueid = :reissueid
  1285. AND u_reissuemx.printid = :reissuemx[ll_i].printid
  1286. AND u_reissuemx.scid = :scid USING commit_transaction;
  1287. IF commit_transaction.SQLCode <> 0 THEN
  1288. rslt = 0
  1289. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  1290. GOTO ext
  1291. END IF
  1292. END IF
  1293. NEXT
  1294. ELSEIF r_type = 2 THEN
  1295. FOR ll_i = 1 TO it_mxbt
  1296. IF reissuemx[ll_i].amt <> 0 THEN
  1297. IF uo_pay.del_payrec(scid,1,reissuemx[ll_i].relid,cusid,arg_msg,FALSE) = 0 THEN
  1298. rslt = 0
  1299. GOTO ext
  1300. END IF
  1301. UPDATE u_reissuemx
  1302. SET relid = 0
  1303. WHERE u_reissuemx.reissueid = :reissueid
  1304. AND u_reissuemx.printid = :reissuemx[ll_i].printid
  1305. AND u_reissuemx.scid = :scid USING commit_transaction;
  1306. IF commit_transaction.SQLCode <> 0 THEN
  1307. rslt = 0
  1308. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  1309. GOTO ext
  1310. END IF
  1311. END IF
  1312. NEXT
  1313. END IF
  1314. flag = 0
  1315. ext:
  1316. DESTROY uo_take
  1317. DESTROY uo_pay
  1318. IF rslt = 0 THEN
  1319. ROLLBACK USING commit_transaction;
  1320. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1321. COMMIT USING commit_transaction;
  1322. END IF
  1323. RETURN rslt
  1324. end function
  1325. public function integer pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i
  1326. IF uo_option_reissue_secaudit = -1000 THEN
  1327. rslt = 0
  1328. arg_msg = '选项:[212]客户费用单使用二级审核,读取初始默认值失败,操作取消!'
  1329. GOTO ext
  1330. END IF
  1331. IF uo_option_reissue_spt_secaudit = -1000 THEN
  1332. rslt = 0
  1333. arg_msg = '选项:[213]供应商费用单使用二级审核,读取初始默认值失败,操作取消!'
  1334. GOTO ext
  1335. END IF
  1336. IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN
  1337. rslt = 0
  1338. GOTO ext
  1339. END IF
  1340. IF reissueid = 0 THEN
  1341. rslt = 0
  1342. arg_msg = "没有审核对象"
  1343. GOTO ext
  1344. END IF
  1345. IF it_newbegin OR it_updatebegin THEN
  1346. rslt = 0
  1347. arg_msg = "编辑状态下不可以执行审核"
  1348. GOTO ext
  1349. END IF
  1350. IF flag = 1 THEN
  1351. rslt = 0
  1352. arg_msg = "单据已经审核"
  1353. GOTO ext
  1354. END IF
  1355. IF r_type = 1 AND uo_option_reissue_secaudit = 1 THEN
  1356. IF pflag = 1 THEN
  1357. rslt = 0
  1358. arg_msg = "单据已执行初审,不能重复执行"
  1359. GOTO ext
  1360. END IF
  1361. END IF
  1362. IF r_type = 2 AND uo_option_reissue_spt_secaudit = 1 THEN
  1363. IF pflag = 1 THEN
  1364. rslt = 0
  1365. arg_msg = "单据已执行初审,不能重复执行"
  1366. GOTO ext
  1367. END IF
  1368. END IF
  1369. Int li_btype
  1370. Long ll_accountsid
  1371. SELECT btype,accountsid INTO :li_btype,:ll_accountsid
  1372. FROM cw_banktype
  1373. Where banktypeid = :relid USING commit_transaction;
  1374. IF commit_transaction.SQLCode <> 0 THEN
  1375. rslt = 0
  1376. arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText
  1377. GOTO ext
  1378. END IF
  1379. SELECT count(*) INTO :cnt
  1380. FROM u_user
  1381. Where username = :publ_operator USING commit_transaction ;
  1382. IF commit_transaction.SQLCode <> 0 THEN
  1383. rslt = 0
  1384. arg_msg = "查询操作失败,操作员"
  1385. GOTO ext
  1386. END IF
  1387. IF cnt = 0 THEN
  1388. rslt = 0
  1389. arg_msg = "操作员姓名未登记或已取消"
  1390. GOTO ext
  1391. END IF
  1392. UPDATE u_reissue
  1393. SET pauditingrep = :publ_operator,
  1394. pauditingdate = getdate(),
  1395. pflag = 1
  1396. WHERE u_reissue.reissueid = :reissueid
  1397. AND pflag = 0
  1398. AND scid = :scid USING commit_transaction;
  1399. IF commit_transaction.SQLCode <> 0 THEN
  1400. rslt = 0
  1401. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  1402. GOTO ext
  1403. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1404. rslt = 0
  1405. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1406. GOTO ext
  1407. END IF
  1408. pflag = 1
  1409. ext:
  1410. IF rslt = 0 THEN
  1411. ROLLBACK USING commit_transaction;
  1412. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1413. COMMIT USING commit_transaction;
  1414. END IF
  1415. RETURN rslt
  1416. end function
  1417. public function integer c_pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i
  1418. Long ll_takeid
  1419. DateTime null_dt
  1420. SetNull(null_dt)
  1421. IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN
  1422. rslt = 0
  1423. GOTO ext
  1424. END IF
  1425. IF reissueid = 0 THEN
  1426. rslt = 0
  1427. arg_msg = "没有审核对象"
  1428. GOTO ext
  1429. END IF
  1430. IF it_newbegin OR it_updatebegin THEN
  1431. rslt = 0
  1432. arg_msg = "编辑状态下不可以执行审核"
  1433. GOTO ext
  1434. END IF
  1435. IF pflag = 0 THEN
  1436. rslt = 0
  1437. arg_msg = "单据还未审核"
  1438. GOTO ext
  1439. END IF
  1440. SELECT count(*) INTO :cnt
  1441. FROM u_user
  1442. Where username = :publ_operator USING commit_transaction ;
  1443. IF commit_transaction.SQLCode <> 0 THEN
  1444. rslt = 0
  1445. arg_msg = "查询操作失败,操作员"
  1446. GOTO ext
  1447. END IF
  1448. IF cnt = 0 THEN
  1449. rslt = 0
  1450. arg_msg = "操作员姓名未登记或已取消"
  1451. GOTO ext
  1452. END IF
  1453. UPDATE u_reissue
  1454. SET pauditingrep = '',
  1455. pauditingdate = :null_dt,
  1456. pflag = 0
  1457. WHERE u_reissue.reissueid = :reissueid
  1458. AND pflag = 1
  1459. AND scid = :scid USING commit_transaction;
  1460. IF commit_transaction.SQLCode <> 0 THEN
  1461. rslt = 0
  1462. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  1463. GOTO ext
  1464. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1465. rslt = 0
  1466. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1467. GOTO ext
  1468. END IF
  1469. pflag = 0
  1470. ext:
  1471. IF rslt = 0 THEN
  1472. ROLLBACK USING commit_transaction;
  1473. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1474. COMMIT USING commit_transaction;
  1475. END IF
  1476. RETURN rslt
  1477. end function
  1478. public function integer acceptmx (decimal arg_qty, double arg_price, decimal arg_amt, decimal arg_toamt, string arg_mxdscrp, long arg_printid, ref string arg_msg, long arg_mtrlid, string arg_mtrlname, decimal arg_tax);s_reissuemx s_mx
  1479. s_mx.qty = arg_qty
  1480. s_mx.price = arg_price
  1481. s_mx.amt = arg_amt
  1482. s_mx.toamt = arg_toamt
  1483. s_mx.mxdscrp = arg_mxdscrp
  1484. s_mx.printid= arg_printid
  1485. s_mx.mtrlid = arg_mtrlid
  1486. s_mx.mtrlname = arg_mtrlname
  1487. s_mx.tax = arg_tax
  1488. return acceptmx(s_mx, arg_msg)
  1489. /*
  1490. Int rslt = 1
  1491. Long cnt = 0
  1492. IF it_newbegin = False And it_updatebegin = False THEN
  1493. rslt = 0
  1494. arg_msg = "非编辑状态不可以使用,操作取消"
  1495. GOTO ext
  1496. END IF
  1497. //清除空值
  1498. IF IsNull(arg_qty) THEN arg_qty = 0
  1499. IF IsNull(arg_price) THEN arg_price = 0
  1500. IF IsNull(arg_printid) THEN arg_printid = 0
  1501. IF IsNull(arg_amt) THEN arg_amt = 0
  1502. IF IsNull(arg_toamt) THEN arg_toamt = 0
  1503. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  1504. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  1505. IF IsNull(arg_mtrlname) THEN arg_mtrlname = ''
  1506. IF IsNull(arg_tax) THEN arg_tax = 0
  1507. // 如果出仓数量为 0,或物料编号为空,则不作任何处理
  1508. IF arg_tax < 0 THEN
  1509. rslt = 0
  1510. arg_msg = '第'+String(arg_printid)+'行,不合理的税率'
  1511. GOTO ext
  1512. END IF
  1513. IF r_type = 0 THEN
  1514. //允许系统没有编码的物料, 20121215 lhd
  1515. // SELECT count(*) INTO :cnt
  1516. // FROM u_mtrldef
  1517. // Where mtrlid = :arg_mtrlid Using commit_transaction;
  1518. // IF commit_transaction.SQLCode <> 0 THEN
  1519. // arg_msg = '查询物料资料失败,'+commit_transaction.SQLErrText
  1520. // rslt = 0
  1521. // GOTO ext
  1522. // END IF
  1523. // IF arg_mtrlid = 0 THEN
  1524. // rslt = 1
  1525. // GOTO ext
  1526. // END IF
  1527. ELSEIF r_type = 1 THEN
  1528. SELECT count(*) INTO :cnt
  1529. FROM U_Expenses
  1530. Where Expensesid = :arg_mtrlid Using commit_transaction;
  1531. IF commit_transaction.SQLCode <> 0 THEN
  1532. arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText
  1533. rslt = 0
  1534. GOTO ext
  1535. END IF
  1536. IF arg_mtrlid = 0 THEN
  1537. rslt = 1
  1538. GOTO ext
  1539. END IF
  1540. if arg_tax > 0 and arg_price > 0 then
  1541. rslt = 0
  1542. arg_msg = '有税率的明细单价必须为负数,请检查'
  1543. goto ext
  1544. end if
  1545. ELSEIF r_type = 2 And arg_mtrlid > 0 THEN
  1546. SELECT count(*) INTO :cnt
  1547. FROM U_Expenses
  1548. Where Expensesid = :arg_mtrlid Using commit_transaction;
  1549. IF commit_transaction.SQLCode <> 0 THEN
  1550. arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText
  1551. rslt = 0
  1552. GOTO ext
  1553. END IF
  1554. END IF
  1555. IF arg_qty = 0 THEN
  1556. rslt = 1
  1557. GOTO ext
  1558. END IF
  1559. //写入内容
  1560. it_mxbt++
  1561. reissuemx[it_mxbt].mtrlid = arg_mtrlid
  1562. reissuemx[it_mxbt].qty = arg_qty
  1563. reissuemx[it_mxbt].amt = Round(arg_amt,2)
  1564. reissuemx[it_mxbt].toamt = Round(arg_toamt,2)
  1565. reissuemx[it_mxbt].price = arg_price
  1566. reissuemx[it_mxbt].mxdscrp = arg_mxdscrp
  1567. reissuemx[it_mxbt].printid = arg_printid
  1568. reissuemx[it_mxbt].mtrlname = arg_mtrlname
  1569. reissuemx[it_mxbt].tax = arg_tax
  1570. ext:
  1571. IF rslt = 0 THEN p_clearmx()
  1572. RETURN rslt
  1573. */
  1574. end function
  1575. public function integer uof_uc_moditem (long arg_scid, long arg_reissueid, long arg_itemid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,ll_i
  1576. Long ll_takeid
  1577. IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN
  1578. rslt = 0
  1579. GOTO ext
  1580. END IF
  1581. IF reissueid = 0 THEN
  1582. rslt = 0
  1583. arg_msg = "没有审核对象"
  1584. GOTO ext
  1585. END IF
  1586. IF flag = 0 THEN
  1587. rslt = 0
  1588. arg_msg = "单据还未终审,请检查"
  1589. GOTO ext
  1590. END IF
  1591. IF r_type = 1 THEN
  1592. FOR ll_i = 1 To it_mxbt
  1593. UPDATE u_Bmsttake
  1594. SET u_Bmsttake.itemid = :arg_itemid
  1595. WHERE u_Bmsttake.scid = :arg_scid
  1596. And u_Bmsttake.takeid = :reissuemx[ll_i].relid;
  1597. IF commit_transaction.SQLCode <> 0 THEN
  1598. rslt = 0
  1599. arg_msg = "单据明细:"+String(ll_i)+"更新相关应收帐项目失败,~n"+commit_transaction.SQLErrText
  1600. GOTO ext
  1601. END IF
  1602. UPDATE u_Bmsttakemx
  1603. SET u_Bmsttakemx.itemid = :arg_itemid
  1604. WHERE u_Bmsttakemx.scid = :arg_scid
  1605. AND u_Bmsttakemx.takeid = :reissuemx[ll_i].relid
  1606. And u_Bmsttakemx.listno = 0;
  1607. IF commit_transaction.SQLCode <> 0 THEN
  1608. rslt = 0
  1609. arg_msg = "单据明细:"+String(ll_i)+"更新相关应收帐明细项目失败,~n"+commit_transaction.SQLErrText
  1610. GOTO ext
  1611. ELSE
  1612. IF commit_transaction.SQLNRows = 0 THEN
  1613. rslt = 0
  1614. arg_msg = "单据明细:"+String(ll_i)+"更新相关应收帐明细项目失败,没有对应应收帐明细"
  1615. GOTO ext
  1616. END IF
  1617. END IF
  1618. NEXT
  1619. END IF
  1620. ext:
  1621. IF rslt = 0 THEN
  1622. ROLLBACK Using commit_transaction;
  1623. ELSEIF rslt = 1 And arg_ifcommit THEN
  1624. COMMIT Using commit_transaction;
  1625. END IF
  1626. RETURN rslt
  1627. end function
  1628. public function integer priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i
  1629. IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN
  1630. rslt = 0
  1631. GOTO ext
  1632. END IF
  1633. IF reissueid = 0 THEN
  1634. rslt = 0
  1635. arg_msg = "没有确认对象"
  1636. GOTO ext
  1637. END IF
  1638. IF it_newbegin OR it_updatebegin THEN
  1639. rslt = 0
  1640. arg_msg = "编辑状态下不可以执行确认"
  1641. GOTO ext
  1642. END IF
  1643. Int li_btype
  1644. Long ll_accountsid
  1645. SELECT btype,accountsid INTO :li_btype,:ll_accountsid
  1646. FROM cw_banktype
  1647. Where banktypeid = :relid USING commit_transaction;
  1648. IF commit_transaction.SQLCode <> 0 THEN
  1649. rslt = 0
  1650. arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText
  1651. GOTO ext
  1652. END IF
  1653. SELECT count(*) INTO :cnt
  1654. FROM u_user
  1655. Where username = :publ_operator USING commit_transaction ;
  1656. IF commit_transaction.SQLCode <> 0 THEN
  1657. rslt = 0
  1658. arg_msg = "查询操作失败,操作员"
  1659. GOTO ext
  1660. END IF
  1661. IF cnt = 0 THEN
  1662. rslt = 0
  1663. arg_msg = "操作员姓名未登记或已取消"
  1664. GOTO ext
  1665. END IF
  1666. UPDATE u_reissue
  1667. SET pricerep = :publ_operator,
  1668. pricedate = getdate(),
  1669. priceflag = 1
  1670. WHERE u_reissue.reissueid = :reissueid
  1671. AND priceflag = 0
  1672. AND scid = :scid USING commit_transaction;
  1673. IF commit_transaction.SQLCode <> 0 THEN
  1674. rslt = 0
  1675. arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
  1676. GOTO ext
  1677. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1678. rslt = 0
  1679. arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1680. GOTO ext
  1681. END IF
  1682. priceflag = 1
  1683. ext:
  1684. IF rslt = 0 THEN
  1685. ROLLBACK USING commit_transaction;
  1686. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1687. COMMIT USING commit_transaction;
  1688. END IF
  1689. RETURN rslt
  1690. end function
  1691. public function integer c_priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i
  1692. Long ll_takeid
  1693. DateTime null_dt
  1694. SetNull(null_dt)
  1695. IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN
  1696. rslt = 0
  1697. GOTO ext
  1698. END IF
  1699. IF reissueid = 0 THEN
  1700. rslt = 0
  1701. arg_msg = "没有反确认对象"
  1702. GOTO ext
  1703. END IF
  1704. IF it_newbegin OR it_updatebegin THEN
  1705. rslt = 0
  1706. arg_msg = "编辑状态下不可以执行反确认"
  1707. GOTO ext
  1708. END IF
  1709. IF priceflag = 0 THEN
  1710. rslt = 0
  1711. arg_msg = "单据还未确认"
  1712. GOTO ext
  1713. END IF
  1714. IF pflag = 1 THEN
  1715. rslt = 0
  1716. arg_msg = "单据已仓审"
  1717. GOTO ext
  1718. END IF
  1719. SELECT count(*) INTO :cnt
  1720. FROM u_user
  1721. Where username = :publ_operator USING commit_transaction ;
  1722. IF commit_transaction.SQLCode <> 0 THEN
  1723. rslt = 0
  1724. arg_msg = "查询操作失败,操作员"
  1725. GOTO ext
  1726. END IF
  1727. IF cnt = 0 THEN
  1728. rslt = 0
  1729. arg_msg = "操作员姓名未登记或已取消"
  1730. GOTO ext
  1731. END IF
  1732. UPDATE u_reissue
  1733. SET pricerep = '',
  1734. pricedate = :null_dt,
  1735. priceflag = 0
  1736. WHERE u_reissue.reissueid = :reissueid
  1737. AND priceflag = 1
  1738. AND scid = :scid USING commit_transaction;
  1739. IF commit_transaction.SQLCode <> 0 THEN
  1740. rslt = 0
  1741. arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+commit_transaction.SQLErrText
  1742. GOTO ext
  1743. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1744. rslt = 0
  1745. arg_msg = "单据正在反确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1746. GOTO ext
  1747. END IF
  1748. priceflag = 0
  1749. ext:
  1750. IF rslt = 0 THEN
  1751. ROLLBACK USING commit_transaction;
  1752. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1753. COMMIT USING commit_transaction;
  1754. END IF
  1755. RETURN rslt
  1756. end function
  1757. public function integer acceptmx (s_reissuemx s_mx, ref string arg_msg);Int rslt = 1
  1758. Long cnt = 0
  1759. IF it_newbegin = False And it_updatebegin = False THEN
  1760. rslt = 0
  1761. arg_msg = "非编辑状态不可以使用,操作取消"
  1762. GOTO ext
  1763. END IF
  1764. //清除空值
  1765. IF IsNull(s_mx.qty) THEN s_mx.qty = 0
  1766. IF IsNull(s_mx.price) THEN s_mx.price = 0
  1767. IF IsNull(s_mx.printid) THEN s_mx.printid = 0
  1768. IF IsNull(s_mx.amt) THEN s_mx.amt = 0
  1769. IF IsNull(s_mx.toamt) THEN s_mx.toamt = 0
  1770. IF IsNull(s_mx.mxdscrp) THEN s_mx.mxdscrp = ''
  1771. IF IsNull(s_mx.tax) THEN s_mx.tax = 0
  1772. IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
  1773. IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = ''
  1774. IF IsNull(s_mx.mtrlname) THEN s_mx.mtrlname = ''
  1775. IF IsNull(s_mx.mtrlmode) THEN s_mx.mtrlmode = ''
  1776. IF IsNull(s_mx.unit) THEN s_mx.unit = ''
  1777. IF IsNull(s_mx.configcode) THEN s_mx.configcode = ''
  1778. IF IsNull(s_mx.configname) THEN s_mx.configname = ''
  1779. IF IsNull(s_mx.mtrlcolor) THEN s_mx.mtrlcolor = ''
  1780. IF IsNull(s_mx.simplename) THEN s_mx.simplename = ''
  1781. IF IsNull(s_mx.reltaskid) THEN s_mx.reltaskid = 0
  1782. // 如果出仓数量为 0,或物料编号为空,则不作任何处理
  1783. IF s_mx.tax < 0 THEN
  1784. rslt = 0
  1785. arg_msg = '第'+String(s_mx.printid)+'行,不合理的税率'
  1786. GOTO ext
  1787. END IF
  1788. IF r_type = 0 THEN //补件单
  1789. //允许系统没有编码的物料, 20121215 lhd
  1790. IF s_mx.mtrlid > 0 THEN
  1791. s_mx.mtrlcode = ''
  1792. s_mx.mtrlname = ''
  1793. s_mx.mtrlmode = ''
  1794. s_mx.unit = ''
  1795. s_mx.configcode = ''
  1796. s_mx.configname = ''
  1797. s_mx.mtrlcolor = ''
  1798. s_mx.simplename = ''
  1799. ELSE
  1800. END IF
  1801. ELSEIF r_type = 1 THEN
  1802. // SELECT count(*) INTO :cnt
  1803. // FROM U_Expenses
  1804. // Where Expensesid = :s_mx.mtrlid Using commit_transaction;
  1805. // IF commit_transaction.SQLCode <> 0 THEN
  1806. // arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText
  1807. // rslt = 0
  1808. // GOTO ext
  1809. // END IF
  1810. // IF s_mx.mtrlid = 0 THEN
  1811. // rslt = 1
  1812. // GOTO ext
  1813. // END IF
  1814. IF s_mx.tax > 0 And s_mx.price > 0 THEN
  1815. rslt = 0
  1816. arg_msg = '有税率的明细单价必须为负数,请检查'
  1817. GOTO ext
  1818. END IF
  1819. ELSEIF r_type = 2 And s_mx.mtrlid > 0 THEN
  1820. SELECT count(*) INTO :cnt
  1821. FROM U_Expenses
  1822. Where Expensesid = :s_mx.mtrlid Using commit_transaction;
  1823. IF commit_transaction.SQLCode <> 0 THEN
  1824. arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText
  1825. rslt = 0
  1826. GOTO ext
  1827. END IF
  1828. END IF
  1829. IF s_mx.qty = 0 THEN
  1830. rslt = 1
  1831. GOTO ext
  1832. END IF
  1833. //写入内容
  1834. it_mxbt++
  1835. reissuemx[it_mxbt].qty = s_mx.qty
  1836. reissuemx[it_mxbt].tax = s_mx.tax
  1837. reissuemx[it_mxbt].amt = Round(s_mx.amt,2)
  1838. reissuemx[it_mxbt].toamt = Round(s_mx.toamt,2)
  1839. reissuemx[it_mxbt].price = s_mx.price //原币单价
  1840. IF sys_option_price_rmb = 0 THEN
  1841. reissuemx[it_mxbt].fprice = s_mx.price * mrate //人民币单价
  1842. ELSE
  1843. reissuemx[it_mxbt].fprice = Round(s_mx.price * mrate, 2) //人民币单价
  1844. END IF
  1845. //reissuemx[it_mxbt].famt = round(reissuemx[it_mxbt].fprice * s_mx.qty, 2)
  1846. reissuemx[it_mxbt].famt = round(reissuemx[it_mxbt].amt * mrate, 2)
  1847. reissuemx[it_mxbt].tofamt = round(reissuemx[it_mxbt].toamt * mrate, 2)
  1848. reissuemx[it_mxbt].mxdscrp = s_mx.mxdscrp
  1849. reissuemx[it_mxbt].printid = s_mx.printid
  1850. reissuemx[it_mxbt].mtrlid = s_mx.mtrlid
  1851. reissuemx[it_mxbt].mtrlcode = s_mx.mtrlcode
  1852. reissuemx[it_mxbt].mtrlname = s_mx.mtrlname
  1853. reissuemx[it_mxbt].mtrlmode = s_mx.mtrlmode
  1854. reissuemx[it_mxbt].unit = s_mx.unit
  1855. reissuemx[it_mxbt].configcode = s_mx.configcode
  1856. reissuemx[it_mxbt].configname = s_mx.configname
  1857. reissuemx[it_mxbt].mtrlcolor = s_mx.mtrlcolor
  1858. reissuemx[it_mxbt].simplename = s_mx.simplename
  1859. reissuemx[it_mxbt].reltaskid = s_mx.reltaskid
  1860. ext:
  1861. IF rslt = 0 THEN p_clearmx()
  1862. RETURN rslt
  1863. end function
  1864. on uo_reissue.create
  1865. call super::create
  1866. TriggerEvent( this, "constructor" )
  1867. end on
  1868. on uo_reissue.destroy
  1869. TriggerEvent( this, "destructor" )
  1870. call super::destroy
  1871. end on
  1872. event constructor;String str_optionvalue,arg_msg
  1873. f_get_sys_option_value('212',str_optionvalue,arg_msg)
  1874. uo_option_reissue_secaudit = Long(str_optionvalue)
  1875. f_get_sys_option_value('213',str_optionvalue,arg_msg)
  1876. uo_option_reissue_spt_secaudit = Long(str_optionvalue)
  1877. f_get_sys_option_value('045',str_optionvalue,arg_msg)
  1878. uo_option_m_msttake = Long(str_optionvalue)
  1879. end event