uo_mtrldef.sru 64 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306
  1. $PBExportHeader$uo_mtrldef.sru
  2. forward
  3. global type uo_mtrldef from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_mtrldef from nonvisualobject
  7. end type
  8. global uo_mtrldef uo_mtrldef
  9. type variables
  10. long uo_mtrlid
  11. public protectedwrite long mtrlid //进仓单表自动增量id
  12. public protectedwrite datetime opdate //建立时间,自动
  13. public protectedwrite string opemp //建立操作员
  14. //public protectedwrite datetime moddate //修改时间,自动
  15. //public protectedwrite string modemp //修改操作员
  16. s_mtrldef_array s_mtrl
  17. s_mtrl_configure_array s_configure2
  18. long cmpid
  19. boolean if_getid_ture=false
  20. transaction commit_transaction //数据commit事务
  21. boolean it_newbegin=false //新建标志
  22. boolean it_updatebegin=false //修改标志
  23. end variables
  24. forward prototypes
  25. public function integer p_reset ()
  26. public function integer p_getinfo (long arg_mtrlid, ref string arg_msg)
  27. public function integer save (boolean arg_ifcommit, ref string arg_msg)
  28. public function integer newbegin (long arg_mtrlid)
  29. public function integer updatebegin (long arg_mtrlid, ref string arg_msg)
  30. public function integer p_delpic (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg)
  31. public function integer p_del_storage (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg)
  32. public function integer del (long arg_mtrlid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit)
  33. public function integer p_insert_maxminqty (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_msg, boolean arg_ifcommit)
  34. public function integer p_insert_storage (long arg_mtrlid, long arg_storageid[], long arg_dft[], boolean arg_ifcommit, ref string arg_msg)
  35. public function integer del_cmp (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit)
  36. public function integer mod_dscrp (long arg_cmpid, string arg_dscrp, ref string arg_msg, boolean arg_ifcommit)
  37. public function integer update_cost (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit)
  38. public function integer save_cost (s_mtrldef_cost arg_s_cost, ref string arg_msg, boolean arg_ifcommit)
  39. public function integer uof_pfdpf_cost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg)
  40. public function integer uof_cml_cost (s_mtrldef_cost arg_s_cost, s_mtrldef_costmx arg_s_costmx, ref string arg_msg, boolean arg_ifcommit)
  41. public function integer uof_update_configure2 (long arg_mtrlid, s_mtrl_configure_array arg_s_config, boolean arg_ifcommit, ref string arg_msg)
  42. public function integer uof_add_mtrl (s_mtrldef_array arg_s_mtrl, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  43. public function integer save_pack (ref s_mtrldef_pack arg_pack, ref string arg_msg, boolean arg_ifcommit)
  44. public function integer del_pack (long arg_mtrlid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  45. public function integer uof_pfdpf_empcost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg)
  46. end prototypes
  47. public function integer p_reset ();//int p_reset()
  48. // mtrlcode = ''
  49. // mtrlname= ''
  50. // mtrltype= ''
  51. // mtrlsectype= ''
  52. // mtrlmode= ''
  53. // Mtrlorigin = 0
  54. // storageid = 0
  55. // unit = ''
  56. // isbuylimit = 0
  57. // lspacklimit = 0
  58. // price = 0
  59. // cost = 0
  60. // planprice = 0
  61. // LMsaleprice = 0
  62. // lmbuyprice = 0
  63. // CLsaleprice = 0
  64. // YHsaleprice = 0
  65. // PFsaleprice = 0
  66. // LSsaleprice = 0
  67. // dscrp= ''
  68. // Mtrlprp = 0
  69. // MaxQTY = 99999
  70. // MinQTY = 0
  71. // ctokg = 1
  72. // isuse = 1
  73. // packqty = 0
  74. // prdpackcode= ''
  75. // mtrltypeid = 0
  76. // handtype= ''
  77. // barcode= ''
  78. // mtrlkind = 0
  79. // net_weight = 0
  80. // gross_weight = 0
  81. // cubage = 0
  82. // ifsafa = 0
  83. // mtrlengname= ''
  84. // wpmtrlid = 0
  85. // wprate = 0
  86. // zxmtrlmode= ''
  87. // unit_scll= ''
  88. // unit_buy= ''
  89. // rate_buy = 0
  90. // rate_scll = 0
  91. // rate_sale = 0
  92. // unit_sale= ''
  93. // colorprp = 0
  94. // scllflag = 0
  95. s_mtrl.mtrlcode[1] = ''
  96. s_mtrl.mtrlname[1] = ''
  97. s_mtrl.mtrltype[1] = ''
  98. s_mtrl.mtrlsectype[1] = ''
  99. s_mtrl.mtrlmode[1] = ''
  100. s_mtrl.Mtrlorigin[1] = 0
  101. s_mtrl.storageid[1] = 0
  102. s_mtrl.unit[1] = ''
  103. s_mtrl.isbuylimit[1] = 0
  104. s_mtrl.lspacklimit[1] = 0
  105. s_mtrl.cost[1] = 0
  106. s_mtrl.price[1] = 0
  107. s_mtrl.planprice[1] = 0
  108. s_mtrl.LMsaleprice[1] = 0
  109. s_mtrl.lmbuyprice[1] = 0
  110. // s_mtrl.CLsaleprice[1]=0
  111. // s_mtrl.YHsaleprice[1]=0
  112. // s_mtrl.PFsaleprice[1]=0
  113. // s_mtrl.LSsaleprice[1]=0
  114. s_mtrl.dscrp[1] = ''
  115. s_mtrl.Mtrlprp[1] = 0
  116. s_mtrl.MaxQTY[1] = 99999
  117. s_mtrl.MinQTY[1] = 0
  118. s_mtrl.ctokg[1] = 0
  119. s_mtrl.isuse[1] = 1
  120. s_mtrl.iflimitprice[1] = 1
  121. s_mtrl.packqty[1] = 0
  122. s_mtrl.prdpackcode[1] = ''
  123. s_mtrl.mtrltypeid[1] = 0
  124. s_mtrl.handtype[1] = ''
  125. s_mtrl.barcode[1] = ''
  126. s_mtrl.mtrlkind[1] = 0
  127. s_mtrl.net_weight[1] = 0
  128. s_mtrl.gross_weight[1] = 0
  129. s_mtrl.cubage[1] = 0
  130. s_mtrl.ifsafa[1] = 0
  131. s_mtrl.mtrlengname[1] = ''
  132. s_mtrl.wpmtrlid[1] = 0
  133. s_mtrl.wprate[1] = 0
  134. s_mtrl.zxmtrlmode[1] = ''
  135. s_mtrl.unit_scll[1] = ''
  136. s_mtrl.unit_buy[1] = ''
  137. s_mtrl.rate_buy[1] = 0
  138. s_mtrl.rate_scll[1] = 0
  139. s_mtrl.rate_sale[1] = 0
  140. s_mtrl.unit_sale[1] = ''
  141. s_mtrl.colorprp[1] = 0
  142. s_mtrl.scllflag[1] = 0
  143. it_newbegin = False
  144. it_updatebegin = False
  145. //清除明细
  146. RETURN 1
  147. end function
  148. public function integer p_getinfo (long arg_mtrlid, ref string arg_msg);//p_getinfo(arg_scid,arg_inwareid,arg_msg)
  149. //0 失败 1成功
  150. INT rslt=1
  151. IF arg_mtrlid<=0 THEN
  152. rslt=0
  153. arG_MSG="非法物料唯一码"
  154. goto ext
  155. end if
  156. SELECT mtrlcode,
  157. mtrlname,
  158. mtrltype,
  159. mtrlsectype,
  160. mtrlmode,
  161. Mtrlorigin,
  162. storageid,
  163. unit,
  164. isbuylimit,
  165. lspacklimit,
  166. cost,
  167. price,
  168. planprice,
  169. LMsaleprice,
  170. lmbuyprice,
  171. dscrp,
  172. Mtrlprp,
  173. MaxQTY,
  174. MinQTY,
  175. ctokg,
  176. isuse,
  177. iflimitprice,
  178. packqty,
  179. prdpackcode,
  180. mtrltypeid,
  181. handtype,
  182. barcode,
  183. mtrlkind,
  184. net_weight,
  185. gross_weight,
  186. cubage,
  187. ifsafa,
  188. mtrlengname,
  189. wpmtrlid,
  190. wprate,
  191. zxmtrlmode,
  192. unit_scll,
  193. unit_buy,
  194. rate_buy,
  195. rate_scll,
  196. rate_sale,
  197. unit_sale,
  198. colorprp,
  199. scllflag,
  200. taskrate,
  201. taskaddqty
  202. into :s_mtrl.mtrlcode[1],
  203. :s_mtrl.mtrlname[1],
  204. :s_mtrl.mtrltype[1],
  205. :s_mtrl.mtrlsectype[1],
  206. :s_mtrl.mtrlmode[1],
  207. :s_mtrl.Mtrlorigin[1],
  208. :s_mtrl.storageid[1],
  209. :s_mtrl.unit[1],
  210. :s_mtrl.isbuylimit[1],
  211. :s_mtrl.lspacklimit[1],
  212. :s_mtrl.cost[1],
  213. :s_mtrl.price[1],
  214. :s_mtrl.planprice[1],
  215. :s_mtrl.LMsaleprice[1],
  216. :s_mtrl.lmbuyprice[1],
  217. :s_mtrl.dscrp[1],
  218. :s_mtrl.Mtrlprp[1],
  219. :s_mtrl.MaxQTY[1],
  220. :s_mtrl.MinQTY[1],
  221. :s_mtrl.ctokg[1],
  222. :s_mtrl.isuse[1],
  223. :s_mtrl.iflimitprice[1],
  224. :s_mtrl.packqty[1],
  225. :s_mtrl.prdpackcode[1],
  226. :s_mtrl.mtrltypeid[1],
  227. :s_mtrl.handtype[1],
  228. :s_mtrl.barcode[1],
  229. :s_mtrl.mtrlkind[1],
  230. :s_mtrl.net_weight[1],
  231. :s_mtrl.gross_weight[1],
  232. :s_mtrl.cubage[1],
  233. :s_mtrl.ifsafa[1],
  234. :s_mtrl.mtrlengname[1],
  235. :s_mtrl.wpmtrlid[1],
  236. :s_mtrl.wprate[1],
  237. :s_mtrl.zxmtrlmode[1],
  238. :s_mtrl.unit_scll[1],
  239. :s_mtrl.unit_buy[1],
  240. :s_mtrl.rate_buy[1],
  241. :s_mtrl.rate_scll[1],
  242. :s_mtrl.rate_sale[1],
  243. :s_mtrl.unit_sale[1],
  244. :s_mtrl.colorprp[1],
  245. :s_mtrl.scllflag[1],
  246. :s_mtrl.taskrate[1],
  247. :s_mtrl.taskaddqty[1]
  248. FROM u_mtrldef
  249. WHERE mtrlid = :arg_mtrlid
  250. using commit_transaction;
  251. if commit_transaction.sqlcode<>0 then
  252. rslt=0
  253. if pos(lower(commit_transaction.SQLErrText),'more than') > 0 then
  254. arg_msg = '查询操作失败,查询数据返回值多于一个'
  255. else
  256. arG_MSG="查询操作失败(错误物料唯一码) "
  257. end if
  258. goto ext
  259. end if
  260. mtrlid = arg_mtrlid
  261. ext:
  262. IF rslt=0 THEN p_reset()
  263. return rslt
  264. end function
  265. public function integer save (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
  266. Long i
  267. DateTime server_dt
  268. Long ls_newid
  269. Long ls_mtrlwareid
  270. Long ll_strageid[],ll_dft[]
  271. IF UpperBound(s_mtrl.mtrlcode) < 1 THEN s_mtrl.mtrlcode[1] = ''
  272. IF UpperBound(s_mtrl.mtrlname) < 1 THEN s_mtrl.mtrlname[1] = ''
  273. IF UpperBound(s_mtrl.mtrltype) < 1 THEN s_mtrl.mtrltype[1] = ''
  274. IF UpperBound(s_mtrl.mtrlsectype) < 1 THEN s_mtrl.mtrlsectype[1] = ''
  275. IF UpperBound(s_mtrl.mtrlmode) < 1 THEN s_mtrl.mtrlmode[1] = ''
  276. IF UpperBound(s_mtrl.Mtrlorigin) < 1 THEN s_mtrl.Mtrlorigin[1] = 0
  277. IF UpperBound(s_mtrl.storageid) < 1 THEN s_mtrl.storageid[1] = 0
  278. IF UpperBound(s_mtrl.unit) < 1 THEN s_mtrl.unit[1] = ''
  279. //IF UpperBound(s_mtrl.isbuylimit) < 1 THEN s_mtrl.isbuylimit[1] = 0
  280. IF UpperBound(s_mtrl.lspacklimit) < 1 THEN s_mtrl.lspacklimit[1] = 0
  281. //IF UpperBound(s_mtrl.price) < 1 THEN s_mtrl.price[1] = 0
  282. //IF UpperBound(s_mtrl.cost) < 1 THEN s_mtrl.cost[1] = 0
  283. IF UpperBound(s_mtrl.planprice) < 1 THEN s_mtrl.planprice[1] = 0
  284. IF UpperBound(s_mtrl.LMsaleprice) < 1 THEN s_mtrl.LMsaleprice[1] = 0
  285. IF UpperBound(s_mtrl.lmbuyprice) < 1 THEN s_mtrl.lmbuyprice[1] = 0
  286. IF UpperBound(s_mtrl.dscrp) < 1 THEN s_mtrl.dscrp[1] = ''
  287. IF UpperBound(s_mtrl.Mtrlprp) < 1 THEN s_mtrl.Mtrlprp[1] = 0
  288. IF UpperBound(s_mtrl.MaxQTY) < 1 THEN s_mtrl.MaxQTY[1] = 99999
  289. IF UpperBound(s_mtrl.MinQTY) < 1 THEN s_mtrl.MinQTY[1] = 0
  290. IF UpperBound(s_mtrl.ctokg) < 1 THEN s_mtrl.ctokg[1] = 1
  291. IF UpperBound(s_mtrl.isuse) < 1 THEN s_mtrl.isuse[1] = 1
  292. IF UpperBound(s_mtrl.iflimitprice) < 1 THEN s_mtrl.iflimitprice[1] = 1
  293. IF UpperBound(s_mtrl.packqty) < 1 THEN s_mtrl.packqty[1] = 0
  294. IF UpperBound(s_mtrl.prdpackcode) < 1 THEN s_mtrl.prdpackcode[1] = ''
  295. IF UpperBound(s_mtrl.ifpacktype) < 1 THEN s_mtrl.ifpacktype[1] = 0
  296. IF UpperBound(s_mtrl.mtrltypeid) < 1 THEN s_mtrl.mtrltypeid[1] = 0
  297. IF UpperBound(s_mtrl.handtype) < 1 THEN s_mtrl.handtype[1] = ''
  298. IF UpperBound(s_mtrl.barcode) < 1 THEN s_mtrl.barcode[1] = ''
  299. IF UpperBound(s_mtrl.mtrlkind) < 1 THEN s_mtrl.mtrlkind[1] = 0
  300. IF UpperBound(s_mtrl.net_weight) < 1 THEN s_mtrl.net_weight[1] = 0
  301. IF UpperBound(s_mtrl.gross_weight) < 1 THEN s_mtrl.gross_weight[1] = 0
  302. IF UpperBound(s_mtrl.cubage) < 1 THEN s_mtrl.cubage[1] = 0
  303. IF UpperBound(s_mtrl.mtrlengname) < 1 THEN s_mtrl.mtrlengname[1] = ''
  304. IF UpperBound(s_mtrl.zxmtrlmode) < 1 THEN s_mtrl.zxmtrlmode[1] = ''
  305. IF UpperBound(s_mtrl.unit_scll) < 1 THEN s_mtrl.unit_scll[1] = ''
  306. IF UpperBound(s_mtrl.unit_buy) < 1 THEN s_mtrl.unit_buy[1] = ''
  307. IF UpperBound(s_mtrl.rate_buy) < 1 THEN s_mtrl.rate_buy[1] = 0
  308. IF UpperBound(s_mtrl.rate_scll) < 1 THEN s_mtrl.rate_scll[1] = 0
  309. IF UpperBound(s_mtrl.rate_sale) < 1 THEN s_mtrl.rate_sale[1] = 0
  310. IF UpperBound(s_mtrl.unit_sale) < 1 THEN s_mtrl.unit_sale[1] = ''
  311. IF UpperBound(s_mtrl.colorprp) < 1 THEN s_mtrl.colorprp[1] = 0
  312. IF UpperBound(s_mtrl.scllflag) < 1 THEN s_mtrl.scllflag[1] = 0
  313. IF UpperBound(s_mtrl.taskrate) < 1 THEN s_mtrl.taskrate[1] = 0
  314. IF UpperBound(s_mtrl.taskaddqty) < 1 THEN s_mtrl.taskaddqty[1] = 0
  315. IF UpperBound(s_mtrl.ifautoscll) < 1 THEN s_mtrl.ifautoscll[1] = 0
  316. IF UpperBound(s_mtrl.ifautoscll) < 1 THEN s_mtrl.ifautoscll[1] = 0
  317. IF UpperBound(s_mtrl.ifautoscll_saletask) < 1 THEN s_mtrl.ifautoscll_saletask[1] = 0
  318. IF UpperBound(s_mtrl.fklevel) < 1 THEN s_mtrl.fklevel[1] = 0
  319. IF UpperBound(s_mtrl.dftmtrlcost) < 1 THEN s_mtrl.dftmtrlcost[1] = 0
  320. IF UpperBound(s_mtrl.dftempcost) < 1 THEN s_mtrl.dftempcost[1] = 0
  321. IF UpperBound(s_mtrl.wfjgcost) < 1 THEN s_mtrl.wfjgcost[1] = 0
  322. IF UpperBound(s_mtrl.dftsccost) < 1 THEN s_mtrl.dftsccost[1] = 0
  323. IF UpperBound(s_mtrl.dftglcost) < 1 THEN s_mtrl.dftglcost[1] = 0
  324. IF UpperBound(s_mtrl.othercost) < 1 THEN s_mtrl.othercost[1] = 0
  325. IF UpperBound(s_mtrl.salerate) < 1 THEN s_mtrl.salerate[1] = 0
  326. IF UpperBound(s_mtrl.upqty) < 1 THEN s_mtrl.upqty[1] = 0
  327. IF UpperBound(s_mtrl.uprate) < 1 THEN s_mtrl.uprate[1] = 0
  328. IF UpperBound(s_mtrl.upsaleqty) < 1 THEN s_mtrl.upsaleqty[1] = 0
  329. IF UpperBound(s_mtrl.upsalerate) < 1 THEN s_mtrl.upsalerate[1] = 0
  330. IF UpperBound(s_mtrl.upscllqty) < 1 THEN s_mtrl.upscllqty[1] = 0
  331. IF UpperBound(s_mtrl.upscllrate) < 1 THEN s_mtrl.upscllrate[1] = 0
  332. IF UpperBound(s_mtrl.mrp_unit) < 1 THEN s_mtrl.mrp_unit[1] = 0
  333. IF UpperBound(s_mtrl.dftsptid) < 1 THEN s_mtrl.dftsptid[1] = 0
  334. //IF UpperBound(s_mtrl.ifHqcl) < 1 THEN s_mtrl.ifHqcl[1] = 0
  335. //IF UpperBound(s_mtrl.HqclMtrlid) < 1 THEN s_mtrl.HqclMtrlid[1] = 0
  336. IF UpperBound(s_mtrl.ifcustom) < 1 THEN s_mtrl.ifcustom[1] = 0
  337. IF UpperBound(s_mtrl.statusflag) < 1 THEN s_mtrl.statusflag[1] = 0
  338. IF UpperBound(s_mtrl.woodcodeflag) < 1 THEN s_mtrl.woodcodeflag[1] = 0
  339. IF UpperBound(s_mtrl.pcodeflag) < 1 THEN s_mtrl.pcodeflag[1] = 0
  340. IF UpperBound(s_mtrl.statustype) < 1 THEN s_mtrl.statustype[1] = 0
  341. IF UpperBound(s_mtrl.woodcodetype) < 1 THEN s_mtrl.woodcodetype[1] = 0
  342. IF UpperBound(s_mtrl.pcodetype) < 1 THEN s_mtrl.pcodetype[1] = 0
  343. IF UpperBound(s_mtrl.status_check) < 1 THEN s_mtrl.status_check[1] = 0
  344. IF UpperBound(s_mtrl.woodcode_check) < 1 THEN s_mtrl.woodcode_check[1] = 0
  345. IF UpperBound(s_mtrl.pcode_check) < 1 THEN s_mtrl.pcode_check[1] = 0
  346. IF UpperBound(s_mtrl.ifcheckaddqty) < 1 THEN s_mtrl.ifcheckaddqty[1] = 0
  347. IF UpperBound(s_mtrl.strcheckaddqty) < 1 THEN s_mtrl.strcheckaddqty[1] = ''
  348. IF UpperBound(s_mtrl.strcheck_digit) < 1 THEN s_mtrl.strcheck_digit[1] = 4
  349. IF UpperBound(s_mtrl.priceformula) < 1 THEN s_mtrl.priceformula[1] = ''
  350. IF UpperBound(s_mtrl.qtyformula) < 1 THEN s_mtrl.qtyformula[1] = ''
  351. IF UpperBound(s_mtrl.buyunit) < 1 THEN s_mtrl.buyunit[1] = 0
  352. IF UpperBound(s_mtrl.scllunit) < 1 THEN s_mtrl.scllunit[1] = 0
  353. IF UpperBound(s_mtrl.saleunit) < 1 THEN s_mtrl.saleunit[1] = 0
  354. IF UpperBound(s_mtrl.wfjgunit) < 1 THEN s_mtrl.wfjgunit[1] = 0
  355. IF UpperBound(s_mtrl.buydec) < 1 THEN s_mtrl.buydec[1] = 0
  356. IF UpperBound(s_mtrl.saledec) < 1 THEN s_mtrl.saledec[1] = 0
  357. IF UpperBound(s_mtrl.sclldec) < 1 THEN s_mtrl.sclldec[1] = 0
  358. IF UpperBound(s_mtrl.wfjgdec) < 1 THEN s_mtrl.wfjgdec[1] = 0
  359. //3属性默认值
  360. IF UpperBound(s_mtrl.status_default) < 1 THEN s_mtrl.status_default[1] = ''
  361. IF UpperBound(s_mtrl.woodcode_default) < 1 THEN s_mtrl.woodcode_default[1] = ''
  362. IF UpperBound(s_mtrl.pcode_default) < 1 THEN s_mtrl.pcode_default[1] = ''
  363. //产品配置
  364. IF UpperBound(s_mtrl.configcodetype) < 1 THEN s_mtrl.configcodetype[1] = 0
  365. IF UpperBound(s_mtrl.configcode) < 1 THEN s_mtrl.configcode[1] = ''
  366. IF UpperBound(s_mtrl.configname) < 1 THEN s_mtrl.configname[1] = ''
  367. IF UpperBound(s_mtrl.mtrlcolor) < 1 THEN s_mtrl.mtrlcolor[1] = ''
  368. //部件选配
  369. IF UpperBound(s_mtrl.status_config) < 1 THEN s_mtrl.status_config[1] = ''
  370. IF UpperBound(s_mtrl.woodcode_config) < 1 THEN s_mtrl.woodcode_config[1] = ''
  371. IF UpperBound(s_mtrl.pcode_config) < 1 THEN s_mtrl.pcode_config[1] = ''
  372. IF UpperBound(s_mtrl.issuliao) < 1 THEN s_mtrl.issuliao[1] = 0
  373. //====================================================================
  374. //
  375. //====================================================================
  376. IF IsNull(s_mtrl.mtrlcode[1]) THEN s_mtrl.mtrlcode[1] = ''
  377. IF IsNull(s_mtrl.mtrlname[1]) THEN s_mtrl.mtrlname[1] = ''
  378. IF IsNull(s_mtrl.mtrltype[1]) THEN s_mtrl.mtrltype[1] = ''
  379. IF IsNull(s_mtrl.mtrlsectype[1]) THEN s_mtrl.mtrlsectype[1] = ''
  380. IF IsNull(s_mtrl.mtrlmode[1]) THEN s_mtrl.mtrlmode[1] = ''
  381. IF IsNull(s_mtrl.Mtrlorigin[1]) THEN s_mtrl.Mtrlorigin[1] = 0
  382. IF IsNull(s_mtrl.storageid[1]) THEN s_mtrl.storageid[1] = 0
  383. IF IsNull(s_mtrl.unit[1]) THEN s_mtrl.unit[1] = ''
  384. //if isnull(s_mtrl.isbuylimit[1]) then s_mtrl.isbuylimit[1] = 0
  385. IF IsNull(s_mtrl.lspacklimit[1]) THEN s_mtrl.lspacklimit[1] = 0
  386. //if isnull(s_mtrl.price[1]) then s_mtrl.price[1] = 0
  387. //if isnull(s_mtrl.cost[1]) then s_mtrl.cost[1] = 0
  388. IF IsNull(s_mtrl.planprice[1]) THEN s_mtrl.planprice[1] = 0
  389. IF IsNull(s_mtrl.LMsaleprice[1]) THEN s_mtrl.LMsaleprice[1] = 0
  390. IF IsNull(s_mtrl.lmbuyprice[1]) THEN s_mtrl.lmbuyprice[1] = 0
  391. IF IsNull(s_mtrl.dscrp[1]) THEN s_mtrl.dscrp[1] = ''
  392. IF IsNull(s_mtrl.Mtrlprp[1]) THEN s_mtrl.Mtrlprp[1] = 0
  393. IF IsNull(s_mtrl.MaxQTY[1]) THEN s_mtrl.MaxQTY[1] = 99999
  394. IF IsNull(s_mtrl.MinQTY[1]) THEN s_mtrl.MinQTY[1] = 0
  395. IF IsNull(s_mtrl.ctokg[1]) THEN s_mtrl.ctokg[1] = 1
  396. IF IsNull(s_mtrl.isuse[1]) THEN s_mtrl.isuse[1] = 1
  397. IF IsNull(s_mtrl.iflimitprice[1]) THEN s_mtrl.iflimitprice[1] = 1
  398. IF IsNull(s_mtrl.packqty[1]) THEN s_mtrl.packqty[1] = 0
  399. IF IsNull(s_mtrl.prdpackcode[1]) THEN s_mtrl.prdpackcode[1] = ''
  400. IF IsNull(s_mtrl.ifpacktype[1]) THEN s_mtrl.ifpacktype[1] = 0
  401. IF IsNull(s_mtrl.mtrltypeid[1]) THEN s_mtrl.mtrltypeid[1] = 0
  402. IF IsNull(s_mtrl.handtype[1]) THEN s_mtrl.handtype[1] = ''
  403. IF IsNull(s_mtrl.barcode[1]) THEN s_mtrl.barcode[1] = ''
  404. IF IsNull(s_mtrl.mtrlkind[1]) THEN s_mtrl.mtrlkind[1] = 0
  405. IF IsNull(s_mtrl.net_weight[1]) THEN s_mtrl.net_weight[1] = 0
  406. IF IsNull(s_mtrl.gross_weight[1]) THEN s_mtrl.gross_weight[1] = 0
  407. IF IsNull(s_mtrl.cubage[1]) THEN s_mtrl.cubage[1] = 0
  408. IF IsNull(s_mtrl.mtrlengname[1]) THEN s_mtrl.mtrlengname[1] = ''
  409. IF IsNull(s_mtrl.zxmtrlmode[1]) THEN s_mtrl.zxmtrlmode[1] = ''
  410. IF IsNull(s_mtrl.unit_scll[1]) THEN s_mtrl.unit_scll[1] = ''
  411. IF IsNull(s_mtrl.unit_buy[1]) THEN s_mtrl.unit_buy[1] = ''
  412. IF IsNull(s_mtrl.rate_buy[1]) THEN s_mtrl.rate_buy[1] = 0
  413. IF IsNull(s_mtrl.rate_scll[1]) THEN s_mtrl.rate_scll[1] = 0
  414. IF IsNull(s_mtrl.rate_sale[1]) THEN s_mtrl.rate_sale[1] = 0
  415. IF IsNull(s_mtrl.unit_sale[1]) THEN s_mtrl.unit_sale[1] = ''
  416. IF IsNull(s_mtrl.colorprp[1]) THEN s_mtrl.colorprp[1] = 0
  417. IF IsNull(s_mtrl.scllflag[1]) THEN s_mtrl.scllflag[1] = 0
  418. IF IsNull(s_mtrl.lljg[1]) THEN s_mtrl.lljg[1] = 0
  419. IF IsNull(s_mtrl.taskrate[1]) THEN s_mtrl.taskrate[1] = 0
  420. IF IsNull(s_mtrl.taskaddqty[1]) THEN s_mtrl.taskaddqty[1] = 0
  421. IF IsNull(s_mtrl.ifautoscll[1]) THEN s_mtrl.ifautoscll[1] = 0
  422. IF IsNull(s_mtrl.ifautoscll_saletask[1]) THEN s_mtrl.ifautoscll_saletask[1] = 0
  423. IF IsNull(s_mtrl.fklevel[1]) THEN s_mtrl.fklevel[1] = 0
  424. IF IsNull(s_mtrl.dftmtrlcost[1]) THEN s_mtrl.dftmtrlcost[1] = 0
  425. IF IsNull(s_mtrl.dftempcost[1]) THEN s_mtrl.dftempcost[1] = 0
  426. IF IsNull(s_mtrl.wfjgcost[1]) THEN s_mtrl.wfjgcost[1] = 0
  427. IF IsNull(s_mtrl.dftsccost[1]) THEN s_mtrl.dftsccost[1] = 0
  428. IF IsNull(s_mtrl.dftglcost[1]) THEN s_mtrl.dftglcost[1] = 0
  429. IF IsNull(s_mtrl.othercost[1]) THEN s_mtrl.othercost[1] = 0
  430. IF IsNull(s_mtrl.salerate[1]) THEN s_mtrl.salerate[1] = 0
  431. IF IsNull(s_mtrl.upqty[1]) THEN s_mtrl.upqty[1] = 0
  432. IF IsNull(s_mtrl.uprate[1]) THEN s_mtrl.uprate[1] = 0
  433. IF IsNull(s_mtrl.upsaleqty[1]) THEN s_mtrl.upsaleqty[1] = 0
  434. IF IsNull(s_mtrl.upsalerate[1]) THEN s_mtrl.upsalerate[1] = 0
  435. IF IsNull(s_mtrl.upscllqty[1]) THEN s_mtrl.upscllqty[1] = 0
  436. IF IsNull(s_mtrl.upscllrate[1]) THEN s_mtrl.upscllrate[1] = 0
  437. IF IsNull(s_mtrl.mrp_unit[1]) THEN s_mtrl.mrp_unit[1] = 0
  438. IF IsNull(s_mtrl.dftsptid[1]) THEN s_mtrl.dftsptid[1] = 0
  439. //IF IsNull(s_mtrl.ifHqcl[1]) THEN s_mtrl.ifHqcl[1] = 0
  440. //IF IsNull(s_mtrl.HqclMtrlid[1]) THEN s_mtrl.HqclMtrlid[1] = 0
  441. IF IsNull(s_mtrl.ifcustom[1]) THEN s_mtrl.ifcustom[1] = 0
  442. IF IsNull(s_mtrl.statusflag[1]) THEN s_mtrl.statusflag[1] = 0
  443. IF IsNull(s_mtrl.woodcodeflag[1]) THEN s_mtrl.woodcodeflag[1] = 0
  444. IF IsNull(s_mtrl.pcodeflag[1]) THEN s_mtrl.pcodeflag[1] = 0
  445. IF IsNull(s_mtrl.statustype[1]) THEN s_mtrl.statustype[1] = 0
  446. IF IsNull(s_mtrl.woodcodetype[1]) THEN s_mtrl.woodcodetype[1] = 0
  447. IF IsNull(s_mtrl.pcodetype[1]) THEN s_mtrl.pcodetype[1] = 0
  448. IF IsNull(s_mtrl.status_check[1]) THEN s_mtrl.status_check[1] = 0
  449. IF IsNull(s_mtrl.woodcode_check[1]) THEN s_mtrl.woodcode_check[1] = 0
  450. IF IsNull(s_mtrl.pcode_check[1]) THEN s_mtrl.pcode_check[1] = 0
  451. IF IsNull(s_mtrl.ifcheckaddqty[1]) THEN s_mtrl.ifcheckaddqty[1] = 0
  452. IF IsNull(s_mtrl.strcheckaddqty[1]) THEN s_mtrl.strcheckaddqty[1] = ''
  453. IF IsNull(s_mtrl.strcheck_digit[1]) THEN s_mtrl.strcheck_digit[1] = 4
  454. IF IsNull(s_mtrl.priceformula[1]) THEN s_mtrl.priceformula[1] = ''
  455. IF IsNull(s_mtrl.qtyformula[1]) THEN s_mtrl.qtyformula[1] = ''
  456. IF IsNull(s_mtrl.status_default[1]) THEN s_mtrl.status_default[1] = ''
  457. IF IsNull(s_mtrl.woodcode_default[1]) THEN s_mtrl.woodcode_default[1] = ''
  458. IF IsNull(s_mtrl.pcode_default[1]) THEN s_mtrl.pcode_default[1] = ''
  459. //产品配置
  460. IF IsNull(s_mtrl.configcodetype[1]) THEN s_mtrl.configcodetype[1] = 0
  461. IF IsNull(s_mtrl.configcode[1]) THEN s_mtrl.configcode[1] = ''
  462. IF IsNull(s_mtrl.configname[1]) THEN s_mtrl.configname[1] = ''
  463. IF IsNull(s_mtrl.mtrlcolor[1]) THEN s_mtrl.mtrlcolor[1] = ''
  464. //部件选配
  465. IF IsNull(s_mtrl.status_config[1]) THEN s_mtrl.status_config[1] = ''
  466. IF IsNull(s_mtrl.woodcode_config[1]) THEN s_mtrl.woodcode_config[1] = ''
  467. IF IsNull(s_mtrl.pcode_config[1]) THEN s_mtrl.pcode_config[1] = ''
  468. IF IsNull(s_mtrl.issuliao[1]) THEN s_mtrl.issuliao[1] = 0
  469. IF UpperBound(s_mtrl.inprice_mode) > 0 THEN
  470. IF IsNull(s_mtrl.inprice_mode[1]) THEN s_mtrl.inprice_mode[1] = 0
  471. ELSE
  472. s_mtrl.inprice_mode[1] = 0
  473. END IF
  474. IF mtrlid = 0 THEN
  475. SELECT
  476. subid,
  477. subid_sale,
  478. subid_cost,
  479. subid_tsale,
  480. subid_scll,
  481. subid_py,
  482. subid_pk,
  483. subid_kf
  484. into
  485. :s_mtrl.subid[1],
  486. :s_mtrl.subid_sale[1],
  487. :s_mtrl.subid_cost[1],
  488. :s_mtrl.subid_tsale[1],
  489. :s_mtrl.subid_scll[1],
  490. :s_mtrl.subid_py[1],
  491. :s_mtrl.subid_pk[1],
  492. :s_mtrl.subid_kf[1]
  493. FROM u_mtrltype
  494. where mtrltypeid = :s_mtrl.mtrltypeid[1];
  495. IF SQLCA.SQLCODE <> 0 THEN
  496. rslt = 0
  497. arg_msg = "查询类别信息失败"
  498. GOTO ext
  499. END IF
  500. END IF
  501. IF it_newbegin = False And it_updatebegin = False THEN
  502. rslt = 0
  503. arg_msg = "非编辑状态不可以提交"
  504. GOTO ext
  505. END IF
  506. SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
  507. //取得系统时间,借用操作员表
  508. IF commit_transaction.SQLCode <> 0 THEN
  509. rslt = 0
  510. arg_msg = "查询操作失败,日期 "
  511. GOTO ext
  512. END IF
  513. //检查辅单位
  514. IF s_mtrl.unit_buy[1] <> '' And s_mtrl.rate_buy[1] = 0 THEN
  515. rslt = 0
  516. arg_msg = "已填写辅单位1,转换率1不能为0"
  517. GOTO ext
  518. END IF
  519. IF s_mtrl.unit_scll[1] <> '' And s_mtrl.rate_scll[1] = 0 THEN
  520. rslt = 0
  521. arg_msg = "已填写辅单位2,转换率2不能为0"
  522. GOTO ext
  523. END IF
  524. IF s_mtrl.unit_sale[1] <> '' And s_mtrl.rate_sale[1] = 0 THEN
  525. rslt = 0
  526. arg_msg = "已填写辅单位3,转换率3不能为0"
  527. GOTO ext
  528. END IF
  529. IF s_mtrl.unit_buy[1] = '' THEN s_mtrl.rate_buy[1] = 0
  530. IF s_mtrl.unit_scll[1] = '' THEN s_mtrl.rate_scll[1] = 0
  531. IF s_mtrl.unit_sale[1] = '' THEN s_mtrl.rate_sale[1] = 0
  532. //检查配置设置
  533. IF s_mtrl.statusflag[1] = 1 And s_mtrl.statustype[1] = 0 THEN
  534. arg_msg = sys_option_change_status+' 类型为严格选择,必须选定一个待选类别'
  535. rslt = 0
  536. GOTO ext
  537. END IF
  538. IF s_mtrl.woodcodeflag[1] = 1 And s_mtrl.woodcodetype[1] = 0 THEN
  539. arg_msg = sys_option_change_woodcode+' 类型为严格选择,必须选定一个待选类别'
  540. rslt = 0
  541. GOTO ext
  542. END IF
  543. IF s_mtrl.statusflag[1] = 4 And s_mtrl.statustype[1] = 0 THEN
  544. arg_msg = sys_option_change_status+' 类型为部件选配,必须选定一个待选类别'
  545. rslt = 0
  546. GOTO ext
  547. END IF
  548. IF s_mtrl.woodcodeflag[1] = 4 And s_mtrl.woodcodetype[1] = 0 THEN
  549. arg_msg = sys_option_change_woodcode+' 类型为部件选配,必须选定一个待选类别'
  550. rslt = 0
  551. GOTO ext
  552. END IF
  553. IF s_mtrl.pcodeflag[1] = 1 And s_mtrl.pcodetype[1] = 0 THEN
  554. arg_msg = sys_option_change_pcode+' 类型为严格选择,必须选定一个待选类别'
  555. rslt = 0
  556. GOTO ext
  557. END IF
  558. //检查数量和辅数关系设置
  559. IF s_mtrl.ifcheckaddqty[1] = 0 And s_mtrl.strcheckaddqty[1] <> '' THEN s_mtrl.ifcheckaddqty[1] = 1
  560. //IF IsNull(s_mtrl.ifcheckaddqty[1]) THEN s_mtrl.ifcheckaddqty[1] = 0
  561. //IF IsNull(s_mtrl.strcheckaddqty[1]) THEN s_mtrl.strcheckaddqty[1] =''
  562. IF s_mtrl.statusflag[1] <> 4 THEN s_mtrl.status_check[1] = 0
  563. IF s_mtrl.woodcodeflag[1] <> 4 THEN s_mtrl.woodcode_check[1] = 0
  564. IF s_mtrl.pcodeflag[1] <> 4 THEN s_mtrl.pcode_check[1] = 0
  565. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  566. IF mtrlid = 0 THEN //新建
  567. ls_newid = f_sys_scidentity(0,"u_mtrldef","mtrlid",arg_msg,if_getid_ture,commit_transaction)
  568. IF ls_newid <= 0 THEN
  569. rslt = 0
  570. GOTO ext
  571. END IF
  572. INSERT INTO u_mtrldef
  573. (mtrlid,
  574. mtrlcode,
  575. mtrlname,
  576. mtrltype,
  577. mtrlsectype,
  578. mtrlmode,
  579. Mtrlorigin,
  580. unit,
  581. lspacklimit,
  582. LMsaleprice,
  583. lmbuyprice,
  584. dscrp,
  585. Mtrlprp,
  586. MaxQTY,
  587. MinQTY,
  588. ctokg,
  589. isuse,
  590. iflimitprice,
  591. packqty,
  592. prdpackcode,
  593. mtrltypeid,
  594. handtype,
  595. barcode,
  596. mtrlkind,
  597. net_weight,
  598. gross_weight,
  599. cubage,
  600. mtrlengname,
  601. zxmtrlmode,
  602. unit_scll,
  603. unit_buy,
  604. rate_buy,
  605. rate_scll,
  606. rate_sale,
  607. unit_sale,
  608. colorprp,
  609. scllflag,
  610. opdate,
  611. opemp,
  612. taskrate,
  613. taskaddqty,
  614. ifautoscll,
  615. fklevel,
  616. u_mtrldef.dftmtrlcost,
  617. u_mtrldef.dftempcost,
  618. u_mtrldef.wfjgcost,
  619. u_mtrldef.dftsccost,
  620. u_mtrldef.dftglcost,
  621. u_mtrldef.othercost,
  622. u_mtrldef.salerate,
  623. u_mtrldef.uprate,
  624. u_mtrldef.upqty,
  625. u_mtrldef.upsalerate,
  626. u_mtrldef.upsaleqty,
  627. u_mtrldef.upscllrate,
  628. u_mtrldef.upscllqty,
  629. u_mtrldef.dftsptid,
  630. u_mtrldef.mrp_unit,
  631. ifcustom,
  632. statusflag,
  633. woodcodeflag,
  634. pcodeflag,
  635. statustype,
  636. woodcodetype,
  637. pcodetype,
  638. status_check,
  639. woodcode_check,
  640. pcode_check,
  641. configcodetype, configcode, configname, mtrlcolor,
  642. status_config, woodcode_config, pcode_config,
  643. issuliao,
  644. inprice_mode,
  645. ifpacktype,
  646. ifcheckaddqty,
  647. strcheckaddqty,
  648. ifautoscll_saletask,
  649. strcheck_digit,
  650. status_default,
  651. woodcode_default,
  652. pcode_default,
  653. priceformula,
  654. qtyformula,
  655. subid,
  656. subid_sale,
  657. subid_cost,
  658. subid_tsale,
  659. subid_scll,
  660. subid_py,
  661. subid_pk,
  662. subid_kf,
  663. scllunit,
  664. buyunit,
  665. saleunit,
  666. wfjgunit,
  667. saledec,
  668. buydec,
  669. sclldec,
  670. wfjgdec,
  671. lljg)
  672. VALUES
  673. (:ls_newid,
  674. :s_mtrl.mtrlcode[1],
  675. :s_mtrl.mtrlname[1],
  676. :s_mtrl.mtrltype[1],
  677. :s_mtrl.mtrlsectype[1],
  678. :s_mtrl.mtrlmode[1],
  679. :s_mtrl.Mtrlorigin[1],
  680. :s_mtrl.unit[1],
  681. :s_mtrl.lspacklimit[1],
  682. :s_mtrl.LMsaleprice[1],
  683. :s_mtrl.lmbuyprice[1],
  684. :s_mtrl.dscrp[1],
  685. :s_mtrl.Mtrlprp[1],
  686. :s_mtrl.MaxQTY[1],
  687. :s_mtrl.MinQTY[1],
  688. :s_mtrl.ctokg[1],
  689. :s_mtrl.isuse[1],
  690. :s_mtrl.iflimitprice[1],
  691. :s_mtrl.packqty[1],
  692. :s_mtrl.prdpackcode[1],
  693. :s_mtrl.mtrltypeid[1],
  694. :s_mtrl.handtype[1],
  695. :s_mtrl.barcode[1],
  696. :s_mtrl.mtrlkind[1],
  697. :s_mtrl.net_weight[1],
  698. :s_mtrl.gross_weight[1],
  699. :s_mtrl.cubage[1],
  700. :s_mtrl.mtrlengname[1],
  701. :s_mtrl.zxmtrlmode[1],
  702. :s_mtrl.unit_scll[1],
  703. :s_mtrl.unit_buy[1],
  704. :s_mtrl.rate_buy[1],
  705. :s_mtrl.rate_scll[1],
  706. :s_mtrl.rate_sale[1],
  707. :s_mtrl.unit_sale[1],
  708. :s_mtrl.colorprp[1],
  709. :s_mtrl.scllflag[1],
  710. :server_dt,
  711. :publ_operator,
  712. :s_mtrl.taskrate[1],
  713. :s_mtrl.taskaddqty[1],
  714. :s_mtrl.ifautoscll[1],
  715. :s_mtrl.fklevel[1],
  716. :s_mtrl.dftmtrlcost[1],
  717. :s_mtrl.dftempcost[1],
  718. :s_mtrl.wfjgcost[1],
  719. :s_mtrl.dftsccost[1],
  720. :s_mtrl.dftglcost[1],
  721. :s_mtrl.othercost[1],
  722. :s_mtrl.salerate[1],
  723. :s_mtrl.uprate[1],
  724. :s_mtrl.upqty[1],
  725. :s_mtrl.upsalerate[1],
  726. :s_mtrl.upsaleqty[1],
  727. :s_mtrl.upscllrate[1],
  728. :s_mtrl.upscllqty[1],
  729. :s_mtrl.dftsptid[1],
  730. :s_mtrl.mrp_unit[1],
  731. :s_mtrl.ifcustom[1],
  732. :s_mtrl.statusflag[1],
  733. :s_mtrl.woodcodeflag[1],
  734. :s_mtrl.pcodeflag[1],
  735. :s_mtrl.statustype[1],
  736. :s_mtrl.woodcodetype[1],
  737. :s_mtrl.pcodetype[1],
  738. :s_mtrl.status_check[1],
  739. :s_mtrl.woodcode_check[1],
  740. :s_mtrl.pcode_check[1],
  741. :s_mtrl.configcodetype[1], :s_mtrl.configcode[1], :s_mtrl.configname[1], :s_mtrl.mtrlcolor[1],
  742. :s_mtrl.status_config[1], :s_mtrl.woodcode_config[1], :s_mtrl.pcode_config[1],
  743. :s_mtrl.issuliao[1],
  744. :s_mtrl.inprice_mode[1],
  745. :s_mtrl.ifpacktype[1],
  746. :s_mtrl.ifcheckaddqty[1],
  747. :s_mtrl.strcheckaddqty[1],
  748. :s_mtrl.ifautoscll_saletask[1],
  749. :s_mtrl.strcheck_digit[1],
  750. :s_mtrl.status_default[1],
  751. :s_mtrl.woodcode_default[1],
  752. :s_mtrl.pcode_default[1],
  753. :s_mtrl.priceformula[1],
  754. :s_mtrl.qtyformula[1],
  755. :s_mtrl.subid[1],
  756. :s_mtrl.subid_sale[1],
  757. :s_mtrl.subid_cost[1],
  758. :s_mtrl.subid_tsale[1],
  759. :s_mtrl.subid_scll[1],
  760. :s_mtrl.subid_py[1],
  761. :s_mtrl.subid_pk[1],
  762. :s_mtrl.subid_kf[1],
  763. :s_mtrl.scllunit[1],
  764. :s_mtrl.buyunit[1],
  765. :s_mtrl.saleunit[1],
  766. :s_mtrl.wfjgunit[1],
  767. :s_mtrl.saledec[1],
  768. :s_mtrl.buydec[1],
  769. :s_mtrl.sclldec[1],
  770. :s_mtrl.wfjgdec[1],
  771. :s_mtrl.lljg[1]) Using commit_transaction ;
  772. IF commit_transaction.SQLCode <> 0 THEN
  773. rslt = 0
  774. IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_mtrldef') > 0 THEN
  775. arg_msg = '插入操作失败,关键字物料ID重复'
  776. ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_u_mtrldef') > 0 THEN
  777. arg_msg = '插入操作失败,物料编码重复'
  778. ELSEIF Pos(Lower(commit_transaction.SQLErrText),'i_mtrlname') > 0 THEN
  779. arg_msg = '插入操作失败,物料名称重复'
  780. ELSE
  781. arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText
  782. END IF
  783. GOTO ext
  784. END IF
  785. //系统选项控制, 自动插入0库存
  786. IF sys_option_add0mtrlware = 1 THEN
  787. FOR i = 1 To UpperBound(s_mtrl.storageid)
  788. IF s_mtrl.storageid[i] > 0 THEN
  789. IF f_insert_0_mtrlware(ls_mtrlwareid,ls_newid,s_mtrl.mtrlcode[1],s_mtrl.storageid[i],0,'','','','',0,arg_msg) = 0 THEN
  790. rslt = 0
  791. mtrlid = 0
  792. p_reset( )
  793. GOTO ext
  794. END IF
  795. END IF
  796. NEXT
  797. END IF
  798. IF p_insert_maxminqty(ls_newid,'','','',arg_msg,False) = 0 THEN
  799. rslt = 0
  800. GOTO ext
  801. END IF
  802. //读取新mtrlid
  803. mtrlid = ls_newid
  804. uo_mtrlid = mtrlid
  805. ELSE //////////////////////////////////////////////// //更新
  806. UPDATE u_mtrldef
  807. SET mtrlcode = :s_mtrl.mtrlcode[1],
  808. mtrlname = :s_mtrl.mtrlname[1],
  809. mtrltype = :s_mtrl.mtrltype[1],
  810. mtrlsectype = :s_mtrl.mtrlsectype[1],
  811. mtrlmode = :s_mtrl.mtrlmode[1],
  812. Mtrlorigin = :s_mtrl.mtrlorigin[1],
  813. unit = :s_mtrl.unit[1],
  814. lspacklimit = :s_mtrl.lspacklimit[1],
  815. LMsaleprice = :s_mtrl.LMsaleprice[1],
  816. lmbuyprice = :s_mtrl.lmbuyprice[1],
  817. dscrp = :s_mtrl.dscrp[1],
  818. Mtrlprp = :s_mtrl.Mtrlprp[1],
  819. MaxQTY = :s_mtrl.MaxQTY[1],
  820. MinQTY = :s_mtrl.MinQTY[1],
  821. ctokg = :s_mtrl.ctokg[1],
  822. isuse = :s_mtrl.isuse[1],
  823. iflimitprice = :s_mtrl.iflimitprice[1],
  824. packqty = :s_mtrl.packqty[1],
  825. prdpackcode = :s_mtrl.prdpackcode[1],
  826. mtrltypeid = :s_mtrl.mtrltypeid[1],
  827. handtype = :s_mtrl.handtype[1],
  828. barcode = :s_mtrl.barcode[1],
  829. mtrlkind = :s_mtrl.mtrlkind[1],
  830. net_weight = :s_mtrl.net_weight[1],
  831. gross_weight = :s_mtrl.gross_weight[1],
  832. cubage = :s_mtrl.cubage[1],
  833. mtrlengname = :s_mtrl.mtrlengname[1],
  834. zxmtrlmode = :s_mtrl.zxmtrlmode[1],
  835. unit_scll = :s_mtrl.unit_scll[1],
  836. unit_buy = :s_mtrl.unit_buy[1],
  837. rate_buy = :s_mtrl.rate_buy[1],
  838. rate_scll = :s_mtrl.rate_scll[1],
  839. rate_sale = :s_mtrl.rate_sale[1],
  840. unit_sale = :s_mtrl.unit_sale[1],
  841. colorprp = :s_mtrl.colorprp[1],
  842. scllflag = :s_mtrl.scllflag[1],
  843. taskrate = :s_mtrl.taskrate[1],
  844. taskaddqty = :s_mtrl.taskaddqty[1],
  845. ifautoscll = :s_mtrl.ifautoscll[1],
  846. fklevel = :s_mtrl.fklevel[1],
  847. dftmtrlcost = :s_mtrl.dftmtrlcost[1],
  848. dftempcost = :s_mtrl.dftempcost[1],
  849. wfjgcost = :s_mtrl.wfjgcost[1],
  850. dftsccost = :s_mtrl.dftsccost[1],
  851. dftglcost = :s_mtrl.dftglcost[1],
  852. othercost = :s_mtrl.othercost[1],
  853. salerate = :s_mtrl.salerate[1],
  854. uprate = :s_mtrl.uprate[1],
  855. upqty = :s_mtrl.upqty[1],
  856. upsalerate = :s_mtrl.upsalerate[1],
  857. upsaleqty = :s_mtrl.upsaleqty[1],
  858. upscllrate = :s_mtrl.upscllrate[1],
  859. upscllqty = :s_mtrl.upscllqty[1],
  860. dftsptid = :s_mtrl.dftsptid[1],
  861. mrp_unit = :s_mtrl.mrp_unit[1],
  862. ifcustom = :s_mtrl.ifcustom[1],
  863. statusflag = :s_mtrl.statusflag[1],
  864. woodcodeflag = :s_mtrl.woodcodeflag[1],
  865. pcodeflag = :s_mtrl.pcodeflag[1],
  866. statustype = :s_mtrl.statustype[1],
  867. woodcodetype = :s_mtrl.woodcodetype[1],
  868. pcodetype = :s_mtrl.pcodetype[1],
  869. status_check = :s_mtrl.status_check[1],
  870. woodcode_check = :s_mtrl.woodcode_check[1],
  871. pcode_check = :s_mtrl.pcode_check[1],
  872. configcodetype = :s_mtrl.configcodetype[1],
  873. configcode = :s_mtrl.configcode[1],
  874. configname = :s_mtrl.configname[1],
  875. mtrlcolor = :s_mtrl.mtrlcolor[1],
  876. status_config = :s_mtrl.status_config[1],
  877. woodcode_config = :s_mtrl.woodcode_config[1],
  878. pcode_config = :s_mtrl.pcode_config[1],
  879. issuliao = :s_mtrl.issuliao[1],
  880. inprice_mode = :s_mtrl.inprice_mode[1],
  881. ifpacktype = :s_mtrl.ifpacktype[1],
  882. ifcheckaddqty = :s_mtrl.ifcheckaddqty[1],
  883. strcheckaddqty = :s_mtrl.strcheckaddqty[1],
  884. ifautoscll_saletask = :s_mtrl.ifautoscll_saletask[1],
  885. strcheck_digit =:s_mtrl.strcheck_digit[1],
  886. status_default =:s_mtrl.status_default[1],
  887. woodcode_default =:s_mtrl.woodcode_default[1],
  888. pcode_default =:s_mtrl.pcode_default[1],
  889. priceformula = :s_mtrl.priceformula[1],
  890. qtyformula = :s_mtrl.qtyformula[1],
  891. opdate= :server_dt,
  892. opemp=:publ_operator,
  893. scllunit = :s_mtrl.scllunit[1],
  894. buyunit = :s_mtrl.buyunit[1],
  895. saleunit = :s_mtrl.saleunit[1],
  896. wfjgunit = :s_mtrl.wfjgunit[1],
  897. saledec = :s_mtrl.saledec[1],
  898. buydec = :s_mtrl.buydec[1],
  899. sclldec = :s_mtrl.sclldec[1],
  900. wfjgdec = :s_mtrl.wfjgdec[1],
  901. lljg = :s_mtrl.lljg[1]
  902. Where mtrlid = :mtrlid Using commit_transaction;
  903. IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
  904. rslt = 0
  905. IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_mtrldef') > 0 THEN
  906. arg_msg = '插入操作失败,关键字物料ID重复'
  907. ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_u_mtrldef') > 0 THEN
  908. arg_msg = '插入操作失败,物料编码重复'
  909. ELSEIF Pos(Lower(commit_transaction.SQLErrText),'i_mtrlname') > 0 THEN
  910. arg_msg = '插入操作失败,物料名称重复'
  911. ELSE
  912. arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText
  913. END IF
  914. GOTO ext
  915. END IF
  916. END IF
  917. uo_mtrlid = mtrlid
  918. IF p_insert_storage(mtrlid, s_mtrl.storageid,s_mtrl.storageid_dft,False,arg_msg ) = 0 THEN
  919. rslt = 0
  920. GOTO ext
  921. END IF
  922. IF uof_update_configure2(mtrlid,s_configure2,FALSE,arg_msg) = 0 THEN
  923. rslt = 0
  924. GOTO ext
  925. END IF
  926. it_newbegin = False
  927. it_updatebegin = False
  928. ext:
  929. IF rslt = 0 THEN
  930. ROLLBACK Using commit_transaction;
  931. ELSEIF rslt = 1 And arg_ifcommit THEN
  932. COMMIT Using commit_transaction;
  933. END IF
  934. arg_msg = '物料/产品,'+ arg_msg
  935. RETURN rslt
  936. end function
  937. public function integer newbegin (long arg_mtrlid);long rslt = 1
  938. it_newbegin =true
  939. it_updatebegin =false
  940. mtrlid = arg_mtrlid
  941. return rslt
  942. end function
  943. public function integer updatebegin (long arg_mtrlid, ref string arg_msg);long rslt=1
  944. if arg_mtrlid<=0 then
  945. rslt=0
  946. arg_msg = '错误物料唯一码'
  947. goto ext
  948. end if
  949. rslt=p_getinfo(arg_mtrlid,arg_msg)
  950. if rslt=0 then goto ext
  951. mtrlid=arg_mtrlid
  952. it_newbegin=false
  953. it_updatebegin=true
  954. ext:
  955. if rslt=0 then p_reset()
  956. arg_msg = '物料/产品,'+ arg_msg
  957. return rslt
  958. end function
  959. public function integer p_delpic (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  960. DELETE FROM u_mtrlpic Where mtrlid = :arg_mtrlid using commit_transaction;
  961. IF commit_transaction.SQLCode <> 0 THEN
  962. arg_msg = '删除产品图片失败,原因:'+commit_transaction.SQLErrText
  963. rslt = 0
  964. GOTO ext
  965. END IF
  966. ext:
  967. if rslt = 0 then
  968. rollback using commit_transaction;
  969. elseif rslt = 1 and arg_ifcommit then
  970. commit using commit_transaction;
  971. end if
  972. arg_msg = '物料/产品,'+ arg_msg
  973. return rslt
  974. end function
  975. public function integer p_del_storage (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  976. DELETE FROM u_mtrl_storage Where mtrlid = :arg_mtrlid using commit_transaction;
  977. IF commit_transaction.SQLCode <> 0 THEN
  978. arg_msg = '删除物料存放仓位失败,原因:'+commit_transaction.SQLErrText
  979. rslt = 0
  980. GOTO ext
  981. END IF
  982. ext:
  983. if rslt = 0 then
  984. rollback using commit_transaction;
  985. elseif rslt = 1 and arg_ifcommit then
  986. commit using commit_transaction;
  987. end if
  988. arg_msg = '物料/产品,'+ arg_msg
  989. return rslt
  990. end function
  991. public function integer del (long arg_mtrlid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit);
  992. Int rslt = 1
  993. Long ls_long
  994. IF arg_mtrlid = 0 THEN
  995. rslt = 0
  996. arg_msg = "没有删除对象,操作取消"
  997. GOTO ext
  998. END IF
  999. ls_long = 0
  1000. SELECT count(*) INTO :ls_long FROM u_inwaremx Where mtrlid = :arg_mtrlid USING commit_transaction;
  1001. IF commit_transaction.SQLCode <> 0 THEN
  1002. rslt = 0
  1003. arg_msg = "数据查询操作失败!(请重试!)"
  1004. GOTO ext
  1005. END IF
  1006. IF ls_long > 0 THEN
  1007. rslt = 0
  1008. arg_msg = "该资料已经使用于仓库进仓,不可以删除!"
  1009. GOTO ext
  1010. END IF
  1011. ls_long = 0
  1012. SELECT count(*) INTO :ls_long FROM u_mtrlware Where mtrlid = :arg_mtrlid USING commit_transaction;
  1013. IF commit_transaction.SQLCode <> 0 THEN
  1014. rslt = 0
  1015. arg_msg = "数据查询操作失败!(请重试!)"
  1016. GOTO ext
  1017. END IF
  1018. IF ls_long > 0 THEN
  1019. rslt = 0
  1020. arg_msg = "该资料已经使用于仓库库存,不可以删除!"
  1021. GOTO ext
  1022. END IF
  1023. ls_long = 0
  1024. SELECT count(*) INTO :ls_long FROM u_outwaremx Where mtrlid = :arg_mtrlid USING commit_transaction;
  1025. IF commit_transaction.SQLCode <> 0 THEN
  1026. rslt = 0
  1027. arg_msg = "数据查询操作失败!(请重试!)"
  1028. GOTO ext
  1029. END IF
  1030. IF ls_long > 0 THEN
  1031. rslt = 0
  1032. arg_msg = "该资料已经使用于仓库出仓,不可以删除!"
  1033. GOTO ext
  1034. END IF
  1035. ls_long = 0
  1036. SELECT count(*) INTO :ls_long
  1037. FROM u_quotemx Where mtrlid = :arg_mtrlid USING commit_transaction;
  1038. IF commit_transaction.SQLCode <> 0 THEN
  1039. rslt = 0
  1040. arg_msg = "数据查询操作失败!(请重试!)"
  1041. GOTO ext
  1042. END IF
  1043. IF ls_long > 0 THEN
  1044. rslt = 0
  1045. arg_msg = "该资料已经使用于报价单,不可以删除,请先删除报价单中的对应资料。"
  1046. GOTO ext
  1047. END IF
  1048. ls_long = 0
  1049. SELECT count(*) INTO :ls_long
  1050. FROM u_saletaskmx Where mtrlid = :arg_mtrlid USING commit_transaction;
  1051. IF commit_transaction.SQLCode <> 0 THEN
  1052. rslt = 0
  1053. arg_msg = "数据查询操作失败!(请重试!)"
  1054. GOTO ext
  1055. END IF
  1056. IF ls_long > 0 THEN
  1057. rslt = 0
  1058. arg_msg = "该资料已经使用于销售订单,不可以删除,请先删除销售订单中的对应资料。"
  1059. GOTO ext
  1060. END IF
  1061. ls_long = 0
  1062. SELECT count(*) INTO :ls_long
  1063. FROM u_buytaskmx Where mtrlid = :arg_mtrlid USING commit_transaction;
  1064. IF commit_transaction.SQLCode <> 0 THEN
  1065. rslt = 0
  1066. arg_msg = "数据查询操作失败!(请重试!)"
  1067. GOTO ext
  1068. END IF
  1069. IF ls_long > 0 THEN
  1070. rslt = 0
  1071. arg_msg = "该资料已经使用于采购订单,不可以删除,请先删除采购订单中的对应资料。"
  1072. GOTO ext
  1073. END IF
  1074. ls_long = 0
  1075. SELECT count(*) INTO :ls_long
  1076. FROM u_sale_price_mx Where mtrlid = :arg_mtrlid USING commit_transaction;
  1077. IF commit_transaction.SQLCode <> 0 THEN
  1078. rslt = 0
  1079. arg_msg = "数据查询操作失败!(请重试!)"
  1080. GOTO ext
  1081. END IF
  1082. IF ls_long > 0 THEN
  1083. rslt = 0
  1084. arg_msg = "该资料已经使用于价格表,不可以现在删除,请先删除价格表中的对应资料。"
  1085. GOTO ext
  1086. END IF
  1087. ls_long = 0
  1088. SELECT count(*) INTO :ls_long
  1089. FROM u_sale_price_mx Where mtrlid = :arg_mtrlid USING commit_transaction;
  1090. IF commit_transaction.SQLCode <> 0 THEN
  1091. rslt = 0
  1092. arg_msg = "数据查询操作失败!(请重试!)"
  1093. GOTO ext
  1094. END IF
  1095. IF ls_long > 0 THEN
  1096. rslt = 0
  1097. arg_msg = "该资料已经使用于价格表,不可以现在删除,请先删除价格表中的对应资料。"
  1098. GOTO ext
  1099. END IF
  1100. ///外协
  1101. ls_long = 0
  1102. SELECT count(*) INTO :ls_long
  1103. FROM ow_wfjgmx_in_aft Where mtrlid = :arg_mtrlid USING commit_transaction;
  1104. IF commit_transaction.SQLCode <> 0 THEN
  1105. rslt = 0
  1106. arg_msg = "数据查询操作失败!(请重试!)"
  1107. GOTO ext
  1108. END IF
  1109. IF ls_long > 0 THEN
  1110. rslt = 0
  1111. arg_msg = "该资料已经使用于外协进仓单,不可以现在删除,请先删除外协进仓单中的对应资料。"
  1112. GOTO ext
  1113. END IF
  1114. ls_long = 0
  1115. SELECT count(*) INTO :ls_long
  1116. FROM ow_wfjgmx_in_bef Where mtrlid = :arg_mtrlid USING commit_transaction;
  1117. IF commit_transaction.SQLCode <> 0 THEN
  1118. rslt = 0
  1119. arg_msg = "数据查询操作失败!(请重试!)"
  1120. GOTO ext
  1121. END IF
  1122. IF ls_long > 0 THEN
  1123. rslt = 0
  1124. arg_msg = "该资料已经使用于外协进仓单,不可以现在删除,请先删除外协进仓单中的对应资料。"
  1125. GOTO ext
  1126. END IF
  1127. ls_long = 0
  1128. SELECT count(*) INTO :ls_long
  1129. FROM ow_wfjgmx_out Where mtrlid = :arg_mtrlid USING commit_transaction;
  1130. IF commit_transaction.SQLCode <> 0 THEN
  1131. rslt = 0
  1132. arg_msg = "数据查询操作失败!(请重试!)"
  1133. GOTO ext
  1134. END IF
  1135. IF ls_long > 0 THEN
  1136. rslt = 0
  1137. arg_msg = "该资料已经使用于外协出仓单,不可以现在删除,请先删除外协出仓单中的对应资料。"
  1138. GOTO ext
  1139. END IF
  1140. ls_long = 0
  1141. SELECT count(*) INTO :ls_long
  1142. FROM ow_wfjgware Where mtrlid = :arg_mtrlid USING commit_transaction;
  1143. IF commit_transaction.SQLCode <> 0 THEN
  1144. rslt = 0
  1145. arg_msg = "数据查询操作失败!(请重试!)"
  1146. GOTO ext
  1147. END IF
  1148. IF ls_long > 0 THEN
  1149. rslt = 0
  1150. arg_msg = "该资料已经使用于外协商库存,不可以现在删除,请先删除外协商库存的对应资料。"
  1151. GOTO ext
  1152. END IF
  1153. ls_long = 0
  1154. SELECT count(*) INTO :ls_long
  1155. FROM u_prdpf Where SonMtrlid = :arg_mtrlid USING commit_transaction;
  1156. IF commit_transaction.SQLCode <> 0 THEN
  1157. rslt = 0
  1158. arg_msg = "数据查询操作失败!(请重试!)"
  1159. GOTO ext
  1160. END IF
  1161. IF ls_long > 0 THEN
  1162. rslt = 0
  1163. arg_msg = "该资料已经使用于物料清单,请先删除物料清单对应资料。"
  1164. GOTO ext
  1165. END IF
  1166. ////////////
  1167. DELETE FROM u_mtrldef
  1168. Where mtrlid = :arg_mtrlid USING commit_transaction;
  1169. IF commit_transaction.SQLCode <> 0 THEN
  1170. rslt = 0
  1171. arg_msg = "删除物料操作失败"+"~n"+commit_transaction.SQLErrText
  1172. GOTO ext
  1173. END IF
  1174. IF p_delpic(arg_mtrlid,FALSE,arg_msg) = 0 THEN
  1175. rslt = 0
  1176. GOTO ext
  1177. END IF
  1178. IF p_del_storage(arg_mtrlid,FALSE,arg_msg) = 0 THEN
  1179. rslt = 0
  1180. GOTO ext
  1181. END IF
  1182. IF f_setsysoplog('定义资料','物料定义资料删除,id:'+String(arg_mtrlid)+',code:'+arg_mtrlcode,arg_msg,FALSE) = 0 THEN
  1183. rslt = 0
  1184. GOTO ext
  1185. END IF
  1186. it_newbegin = FALSE
  1187. it_updatebegin = FALSE
  1188. ext:
  1189. IF rslt = 0 THEN
  1190. ROLLBACK USING commit_transaction;
  1191. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1192. COMMIT USING commit_transaction;
  1193. END IF
  1194. p_reset()
  1195. arg_msg = '物料/产品,'+ arg_msg
  1196. RETURN rslt
  1197. end function
  1198. public function integer p_insert_maxminqty (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1199. INSERT u_mtrldef_maxminqty
  1200. (mtrlid,status,woodcode,pcode)
  1201. Values(:arg_mtrlid,:arg_status,:arg_woodcode,:arg_pcode) USING commit_transaction;
  1202. IF commit_transaction.SQLCode <> 0 THEN
  1203. rslt = 0
  1204. if pos(lower(commit_transaction.SQLErrText),'pk_u_mtrldef_maxminqty') > 0 then
  1205. arg_msg = '插入物料库存报警上下限失败!,3属性字段重复'
  1206. else
  1207. arg_msg = '插入物料库存报警上下限失败!>>'+commit_transaction.SQLErrText
  1208. end if
  1209. GOTO ext
  1210. END IF
  1211. ext:
  1212. IF rslt = 1 AND arg_ifcommit THEN
  1213. COMMIT USING commit_transaction;
  1214. ELSEIF rslt = 0 THEN
  1215. ROLLBACK USING commit_transaction;
  1216. END IF
  1217. arg_msg = '物料/产品,'+ arg_msg
  1218. RETURN rslt
  1219. end function
  1220. public function integer p_insert_storage (long arg_mtrlid, long arg_storageid[], long arg_dft[], boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
  1221. Long cnt
  1222. String ls_storagestr = ''
  1223. //if it_newbegin = false then
  1224. // rslt = 0
  1225. // arg_msg = "非新建状态不可以提交"
  1226. // goto ext
  1227. //end if
  1228. //
  1229. cnt = 0
  1230. //检查物料
  1231. SELECT count(*)
  1232. INTO :cnt
  1233. FROM u_mtrldef
  1234. Where mtrlid = :arg_mtrlid Using commit_transaction ;
  1235. IF commit_transaction.SQLCode <> 0 THEN
  1236. rslt = 0
  1237. arg_msg = "查询操作失败,物料"
  1238. GOTO ext
  1239. END IF
  1240. IF cnt = 0 THEN
  1241. rslt = 0
  1242. arg_msg = "错误的物料编号: "+String(s_mtrl.storageid[1])
  1243. GOTO ext
  1244. END IF
  1245. DELETE u_mtrl_storage
  1246. Where mtrlid = :arg_mtrlid Using commit_transaction;
  1247. IF commit_transaction.SQLCode <> 0 THEN
  1248. rslt = 0
  1249. arg_msg = "删除原物料仓库记录失败"+commit_transaction.SQLErrText
  1250. GOTO ext
  1251. END IF
  1252. Long ls_i
  1253. FOR ls_i = 1 To UpperBound(arg_storageid)
  1254. //yyx20150621
  1255. cnt = 0
  1256. //检查仓库
  1257. SELECT count(*)
  1258. INTO :cnt
  1259. FROM u_mtrl_storage
  1260. Where u_mtrl_storage.storageid = :arg_storageid[ls_i]
  1261. and u_mtrl_storage.mtrlid = :arg_mtrlid Using commit_transaction ;
  1262. IF commit_transaction.SQLCode <> 0 THEN
  1263. rslt = 0
  1264. arg_msg = "查询操作失败,物料已有存放仓库,"+commit_transaction.sqlerrtext
  1265. GOTO ext
  1266. END IF
  1267. IF cnt = 0 THEN
  1268. INSERT INTO u_mtrl_storage
  1269. (mtrlid,
  1270. storageid,
  1271. dft)
  1272. VALUES
  1273. (:arg_mtrlid,
  1274. :arg_storageid[ls_i],
  1275. :arg_dft[ls_i]) using commit_transaction;
  1276. IF commit_transaction.SQLCode <> 0 THEN
  1277. rslt = 0
  1278. IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_mtrl_storage') > 0 THEN
  1279. arg_msg = '物料指定默认仓库失败,关键字物料ID、仓库ID重复'
  1280. ELSE
  1281. arg_msg = "物料指定默认仓库失败,保存操作失败!"+sqlca.SQLErrText
  1282. END IF
  1283. GOTO ext
  1284. END IF
  1285. ls_storagestr = ls_storagestr +','+String(arg_storageid[ls_i])
  1286. END IF
  1287. NEXT
  1288. IF ls_storagestr <> '' THEN
  1289. ls_storagestr = ls_storagestr+','
  1290. UPDATE u_mtrldef
  1291. SET storagestr = :ls_storagestr
  1292. Where mtrlid = :arg_mtrlid Using commit_transaction;
  1293. IF commit_transaction.SQLCode <> 0 THEN
  1294. rslt = 0
  1295. arg_msg = "更新物料仓库串失败"+commit_transaction.SQLErrText
  1296. GOTO ext
  1297. END IF
  1298. ELSE
  1299. rslt = 0
  1300. arg_msg = "没有指定物料仓库"
  1301. GOTO ext
  1302. END IF
  1303. ext:
  1304. IF rslt = 0 THEN
  1305. ROLLBACK Using commit_transaction;
  1306. ELSEIF rslt = 1 And arg_ifcommit THEN
  1307. COMMIT Using commit_transaction;
  1308. END IF
  1309. arg_msg = '物料/产品,'+ arg_msg
  1310. RETURN rslt
  1311. end function
  1312. public function integer del_cmp (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
  1313. DELETE FROM u_mtrldef_costmx
  1314. Where cmpid = :arg_cmpid USING commit_transaction;
  1315. IF commit_transaction.SQLCode <> 0 THEN
  1316. rslt = 0
  1317. arg_msg = '删除成本运算历史明细失败'
  1318. GOTO ext
  1319. END IF
  1320. DELETE FROM u_mtrldef_cost
  1321. Where cmpid = :arg_cmpid USING commit_transaction;
  1322. IF commit_transaction.SQLCode <> 0 THEN
  1323. rslt = 0
  1324. arg_msg = '删除成本运算历史失败'
  1325. GOTO ext
  1326. END IF
  1327. ext:
  1328. IF rslt = 0 THEN
  1329. ROLLBACK USING commit_transaction;
  1330. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1331. COMMIT USING commit_transaction;
  1332. END IF
  1333. return rslt
  1334. end function
  1335. public function integer mod_dscrp (long arg_cmpid, string arg_dscrp, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
  1336. update u_mtrldef_cost
  1337. set dscrp = :arg_dscrp
  1338. where cmpid = :arg_cmpid using commit_transaction;
  1339. IF commit_transaction.SQLCode <> 0 THEN
  1340. rslt = 0
  1341. arg_msg = '更新备注失败'
  1342. GOTO ext
  1343. END IF
  1344. ext:
  1345. IF rslt = 0 THEN
  1346. ROLLBACK USING commit_transaction;
  1347. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1348. COMMIT USING commit_transaction;
  1349. END IF
  1350. return rslt
  1351. end function
  1352. public function integer update_cost (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ll_flag
  1353. DateTime server_dt
  1354. SELECT Top 1 getdate() INTO :server_dt FROM u_user USING commit_transaction ;
  1355. //取得系统时间,借用操作员表
  1356. IF commit_transaction.SQLCode <> 0 THEN
  1357. rslt = 0
  1358. arg_msg = "查询操作失败,日期 "
  1359. GOTO ext
  1360. END IF
  1361. UPDATE u_mtrldef
  1362. SET u_mtrldef.dftmtrlcost = u_mtrldef_costmx.dftmtrlcost,
  1363. u_mtrldef.dftempcost = u_mtrldef_costmx.dftempcost,
  1364. u_mtrldef.dftsccost = u_mtrldef_costmx.dftsccost,
  1365. u_mtrldef.dftglcost = u_mtrldef_costmx.dftglcost,
  1366. u_mtrldef.planprice = u_mtrldef_costmx.dftmtrlcost + u_mtrldef_costmx.dftempcost + u_mtrldef_costmx.dftsccost + u_mtrldef_costmx.dftglcost + u_mtrldef_costmx.wfjgcost + u_mtrldef_costmx.othercost
  1367. FROM u_mtrldef,u_mtrldef_costmx
  1368. WHERE u_mtrldef_costmx.cmpid = :arg_cmpid AND
  1369. u_mtrldef_costmx.mtrlid = u_mtrldef.mtrlid USING commit_transaction;
  1370. IF commit_transaction.SQLCode <> 0 THEN
  1371. rslt = 0
  1372. arg_msg = '更新物料定义资料失败'
  1373. GOTO ext
  1374. END IF
  1375. UPDATE u_mtrldef_cost
  1376. SET flag = 1 ,
  1377. auditemp = :publ_operator,
  1378. auditdate = :server_dt
  1379. WHERE u_mtrldef_cost.cmpid = :arg_cmpid AND
  1380. u_mtrldef_cost.flag = 0 USING commit_transaction;
  1381. IF commit_transaction.SQLCode <> 0 THEN
  1382. rslt = 0
  1383. arg_msg = '更新运算历史失败'
  1384. GOTO ext
  1385. END IF
  1386. ext:
  1387. IF rslt = 0 THEN
  1388. ROLLBACK USING commit_transaction;
  1389. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1390. COMMIT USING commit_transaction;
  1391. END IF
  1392. RETURN rslt
  1393. end function
  1394. public function integer save_cost (s_mtrldef_cost arg_s_cost, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1395. Long ls_newid
  1396. DateTime server_dt
  1397. SELECT Top 1 getdate() INTO :server_dt FROM u_user USING commit_transaction ;
  1398. //取得系统时间,借用操作员表
  1399. IF commit_transaction.SQLCode <> 0 THEN
  1400. rslt = 0
  1401. arg_msg = "查询操作失败,日期 "
  1402. GOTO ext
  1403. END IF
  1404. IF arg_s_cost.cmpid = 0 THEN
  1405. ls_newid = f_sys_scidentity(0,"u_mtrldef_cost","cmpid",arg_msg,TRUE,commit_transaction)
  1406. IF ls_newid <= 0 THEN
  1407. rslt = 0
  1408. GOTO ext
  1409. END IF
  1410. INSERT INTO u_mtrldef_cost
  1411. ( cmpid,
  1412. dscrp,
  1413. mtrltype,
  1414. emptype,
  1415. scformula,
  1416. glformula,
  1417. opemp,
  1418. opdate )
  1419. VALUES ( :ls_newid,
  1420. :arg_s_cost.dscrp,
  1421. :arg_s_cost.mtrltype,
  1422. :arg_s_cost.emptype,
  1423. :arg_s_cost.scformula,
  1424. :arg_s_cost.glformula,
  1425. :publ_operator,
  1426. :server_dt ) USING commit_transaction ;
  1427. IF commit_transaction.SQLCode <> 0 THEN
  1428. rslt = 0
  1429. arg_msg = "插入统计历史失败"
  1430. GOTO ext
  1431. END IF
  1432. ELSE
  1433. UPDATE u_mtrldef_cost
  1434. SET dscrp = :arg_s_cost.dscrp,
  1435. mtrltype = :arg_s_cost.mtrltype,
  1436. emptype = :arg_s_cost.emptype,
  1437. glformula = :arg_s_cost.glformula,
  1438. scformula = :arg_s_cost.scformula
  1439. where cmpid = :arg_s_cost.cmpid USING commit_transaction ;
  1440. IF commit_transaction.SQLCode <> 0 THEN
  1441. rslt = 0
  1442. arg_msg = "插入统计历史失败"
  1443. GOTO ext
  1444. END IF
  1445. END IF
  1446. //
  1447. //s_mtrldef_costmx s_costmx[]
  1448. //Long i = 1,NO_MXCHECK
  1449. //DECLARE CUR_INWAERMX CURSOR FOR
  1450. // SELECT mtrlid,wfjgcost,othercost,mtrlcode
  1451. // FROM u_mtrldef USING commit_transaction;
  1452. //OPEN CUR_INWAERMX;
  1453. //FETCH CUR_INWAERMX INTO :s_costmx[i].mtrlid,:s_costmx[i].wfjgcost,:s_costmx[i].othercost,:s_costmx[i].mtrlcode;
  1454. //DO WHILE commit_transaction.SQLCode = 0
  1455. // i++
  1456. // FETCH CUR_INWAERMX INTO :s_costmx[i].mtrlid,:s_costmx[i].wfjgcost,:s_costmx[i].othercost,:s_costmx[i].mtrlcode;
  1457. //LOOP
  1458. //CLOSE CUR_INWAERMX;
  1459. ////检验明细是否读入完整
  1460. //SELECT COUNT(*) INTO :NO_MXCHECK
  1461. // FROM u_mtrldef USING commit_transaction;
  1462. //IF commit_transaction.SQLCode <> 0 THEN
  1463. // rslt = 0
  1464. // arg_msg = "查询操作失败,物料数量"
  1465. // GOTO ext
  1466. //END IF
  1467. //
  1468. //IF i <> (NO_MXCHECK+1) THEN
  1469. // rslt = 0
  1470. // arg_msg = "查询操作失败,物料数量"
  1471. // GOTO ext
  1472. //END IF
  1473. //
  1474. //Open(w_sys_wait_jdt) //初始化进度条
  1475. //w_sys_wait_jdt.Show()
  1476. //w_sys_wait_jdt.wf_accepttol(NO_MXCHECK)
  1477. //w_sys_wait_jdt.wf_inc(0)
  1478. //w_sys_wait_jdt.st_msg.Text = "正在统计..."
  1479. //
  1480. //
  1481. //FOR i = 1 TO NO_MXCHECK
  1482. //
  1483. // w_sys_wait_jdt.wf_inc(i)
  1484. // w_sys_wait_jdt.st_msg.Text = "正在统计:"+s_costmx[i].mtrlcode + '的物料成本、人力成本...'
  1485. //
  1486. // IF arg_s_cost.mtrltype = 0 THEN
  1487. // SELECT dftmtrlcost
  1488. // INTO :s_costmx[i].dftmtrlcost
  1489. // FROM u_mtrldef
  1490. // Where mtrlid = :s_costmx[i].mtrlid USING commit_transaction;
  1491. // IF commit_transaction.SQLCode <> 0 THEN
  1492. // rslt = 0
  1493. // arg_msg = "查询物料资料操作失败"
  1494. // GOTO ext
  1495. // END IF
  1496. // ELSE
  1497. // IF uof_pfdpf_cost(s_costmx[i].mtrlid,s_costmx[i].dftmtrlcost,1,arg_msg) = 0 THEN
  1498. // rslt = 0
  1499. // GOTO ext
  1500. // END IF
  1501. // END IF
  1502. //
  1503. // IF arg_s_cost.emptype = 0 THEN
  1504. // SELECT dftempcost
  1505. // INTO :s_costmx[i].dftempcost
  1506. // FROM u_mtrldef
  1507. // Where mtrlid = :s_costmx[i].mtrlid USING commit_transaction;
  1508. // IF commit_transaction.SQLCode <> 0 THEN
  1509. // rslt = 0
  1510. // arg_msg = "查询物料资料操作失败"
  1511. // GOTO ext
  1512. // END IF
  1513. //
  1514. // ELSE
  1515. // SELECT sum(u_sc_workprice.workqty * u_sc_workprice.workprice)
  1516. // INTO :s_costmx[i].dftempcost
  1517. // FROM u_sc_workprice
  1518. // Where u_sc_workprice.mtrlid = :s_costmx[i].mtrlid USING commit_transaction;
  1519. // IF commit_transaction.SQLCode = -1 THEN
  1520. // rslt = 0
  1521. // arg_msg = "查询物料工价表操作失败"
  1522. // GOTO ext
  1523. // ELSEIF commit_transaction.SQLCode = 100 THEN
  1524. // s_costmx[i].dftempcost = 0
  1525. // END IF
  1526. // IF IsNull(s_costmx[i].dftempcost) THEN s_costmx[i].dftempcost = 0
  1527. // END IF
  1528. //
  1529. //NEXT
  1530. //
  1531. //w_sys_wait_jdt.wf_accepttol(NO_MXCHECK)
  1532. //w_sys_wait_jdt.wf_inc(0)
  1533. //w_sys_wait_jdt.st_msg.Text = "正在统计..."
  1534. //
  1535. //datastore ds_cmp
  1536. //String ls_rs
  1537. //Decimal ls_number
  1538. //ds_cmp = CREATE datastore
  1539. //ds_cmp.DataObject = "ds_cmp_qty"
  1540. //ds_cmp.SetTransObject(sqlca)
  1541. //ds_cmp.Retrieve()
  1542. //String ls_scformula
  1543. //
  1544. //FOR i = 1 TO NO_MXCHECK
  1545. //
  1546. // w_sys_wait_jdt.wf_inc(i)
  1547. // w_sys_wait_jdt.st_msg.Text = "正在统计:"+s_costmx[i].mtrlcode + '的生产成本、管理成本...'
  1548. //
  1549. // SELECT Top 1 Replace(:arg_s_cost.scformula,'物料成本',:s_costmx[i].dftmtrlcost) INTO:ls_scformula FROM u_user;
  1550. // SELECT Top 1 Replace(:ls_scformula,'人力成本',:s_costmx[i].dftempcost) INTO:ls_scformula FROM u_user;
  1551. // ds_cmp.Reset()
  1552. // ds_cmp.InsertRow(0)
  1553. // ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'")
  1554. // IF ls_rs = '' THEN
  1555. // ds_cmp.AcceptText()
  1556. // s_costmx[i].dftsccost = ds_cmp.Object.cmp[ds_cmp.GetRow()]
  1557. // ELSE
  1558. // rslt = 0
  1559. // arg_msg = '生产费用计算公式非法,不能计算!'+arg_s_cost.scformula
  1560. // GOTO ext
  1561. // END IF
  1562. //
  1563. // SELECT Top 1 Replace(:arg_s_cost.glformula,'物料成本',:s_costmx[i].dftmtrlcost) INTO:ls_scformula FROM u_user;
  1564. // SELECT Top 1 Replace(:ls_scformula,'人力成本',:s_costmx[i].dftempcost) INTO:ls_scformula FROM u_user;
  1565. // ds_cmp.Reset()
  1566. // ds_cmp.InsertRow(0)
  1567. // ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'")
  1568. // IF ls_rs = '' THEN
  1569. // ds_cmp.AcceptText()
  1570. // s_costmx[i].dftglcost = ds_cmp.Object.cmp[ds_cmp.GetRow()]
  1571. // ELSE
  1572. // rslt = 0
  1573. // arg_msg = '管理费用计算公式非法,不能计算!'+arg_s_cost.scformula
  1574. // GOTO ext
  1575. // END IF
  1576. //
  1577. // INSERT INTO u_mtrldef_costmx
  1578. // ( cmpid,
  1579. // mtrlid,
  1580. // dftmtrlcost,
  1581. // dftempcost,
  1582. // dftsccost,
  1583. // dftglcost,
  1584. // wfjgcost,
  1585. // othercost )
  1586. // VALUES ( :ls_newid,
  1587. // :s_costmx[i].mtrlid,
  1588. // :s_costmx[i].dftmtrlcost,
  1589. // :s_costmx[i].dftempcost,
  1590. // :s_costmx[i].dftsccost,
  1591. // :s_costmx[i].dftglcost,
  1592. // :s_costmx[i].wfjgcost,
  1593. // :s_costmx[i].othercost ) USING commit_transaction;
  1594. // IF commit_transaction.SQLCode <> 0 THEN
  1595. // rslt = 0
  1596. // arg_msg = "插入统计历史明细操作失败"
  1597. // GOTO ext
  1598. // END IF
  1599. //
  1600. //NEXT
  1601. ext:
  1602. IF IsValid(w_sys_wait_jdt) THEN
  1603. Close(w_sys_wait_jdt)
  1604. END IF
  1605. IF rslt = 0 THEN
  1606. ROLLBACK USING commit_transaction;
  1607. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1608. cmpid = ls_newid
  1609. COMMIT USING commit_transaction;
  1610. END IF
  1611. RETURN rslt
  1612. end function
  1613. public function integer uof_pfdpf_cost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg);Long ll_cnt,i,mtrlorigin,ls_newid
  1614. Long rslt = 1
  1615. s_pfmx outwaremx[]
  1616. String ls_msg
  1617. Decimal ld_cost
  1618. Long cnt
  1619. SELECT mtrlorigin
  1620. INTO :mtrlorigin
  1621. FROM u_mtrldef
  1622. Where mtrlid = :arg_mtrlid USING commit_transaction;
  1623. IF commit_transaction.SQLCode <> 0 THEN
  1624. rslt = 0
  1625. arg_msg = '查询物料资料失败'
  1626. GOTO ext
  1627. END IF
  1628. cnt = 0
  1629. SELECT count(*)
  1630. INTO :cnt
  1631. FROM u_PrdPF
  1632. Where u_PrdPF.mtrlid = :arg_mtrlid USING commit_transaction;
  1633. IF commit_transaction.SQLCode <> 0 THEN
  1634. rslt = 0
  1635. arg_msg = '查询物料清单失败'
  1636. GOTO ext
  1637. END IF
  1638. IF mtrlorigin = 2 THEN
  1639. String ls_mtrlcode,ls_unit
  1640. ld_cost = 0
  1641. //取最新采购价
  1642. SELECT u_mtrldef.mtrlcode,
  1643. u_mtrldef.unit
  1644. INTO :ls_mtrlcode,
  1645. :ls_unit
  1646. FROM u_mtrldef
  1647. Where mtrlid = :arg_mtrlid USING commit_transaction;
  1648. IF commit_transaction.SQLCode <> 0 THEN
  1649. rslt = 0
  1650. arg_msg = '查询物料资料失败'
  1651. GOTO ext
  1652. END IF
  1653. SELECT top 1 round(price * :arg_sonscale,2) INTO :ld_cost
  1654. FROM v_maxprice_sptprice_dftunit
  1655. Where mtrlid = :arg_mtrlid and
  1656. unit = :ls_unit USING commit_transaction;
  1657. IF commit_transaction.SQLCode = -1 THEN
  1658. arg_msg = '查询物料:'+ls_mtrlcode+'最新采购价或最新外加工单价失败'
  1659. rslt = 0
  1660. GOTO ext
  1661. END IF
  1662. if isnull(ld_cost) then ld_cost = 0
  1663. arg_cost = arg_cost + ld_cost
  1664. END IF
  1665. IF cnt = 0 THEN GOTO ext
  1666. ll_cnt = 1
  1667. DECLARE cur_outwaremx CURSOR FOR
  1668. SELECT u_PrdPF.SonMtrlid,u_PrdPF.sonscale,u_mtrldef.mtrlorigin
  1669. FROM u_PrdPF,u_mtrldef
  1670. WHERE ( u_PrdPF.mtrlid = :arg_mtrlid ) AND
  1671. ( u_PrdPF.mtrlid = u_mtrldef.mtrlid ) USING commit_transaction;
  1672. OPEN cur_outwaremx;
  1673. FETCH cur_outwaremx INTO
  1674. :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin;
  1675. DO WHILE commit_transaction.SQLCode = 0
  1676. ll_cnt++
  1677. FETCH cur_outwaremx INTO :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin;
  1678. LOOP
  1679. CLOSE cur_outwaremx;
  1680. ll_cnt = ll_cnt - 1
  1681. FOR i = 1 TO ll_cnt
  1682. IF uof_pfdpf_cost( outwaremx[i].mtrlid,arg_cost,outwaremx[i].sonscale * arg_sonscale,arg_msg) = 0 THEN
  1683. rslt = 0
  1684. GOTO ext
  1685. END IF
  1686. NEXT
  1687. ext:
  1688. RETURN rslt
  1689. end function
  1690. public function integer uof_cml_cost (s_mtrldef_cost arg_s_cost, s_mtrldef_costmx arg_s_costmx, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
  1691. Long i = 1,NO_MXCHECK
  1692. FOR i = 1 TO UpperBound(arg_s_costmx.mtrlid)
  1693. SELECT mtrlid,wfjgcost,othercost,mtrlcode
  1694. INTO :arg_s_costmx.mtrlid[i],:arg_s_costmx.wfjgcost[i],:arg_s_costmx.othercost[i],:arg_s_costmx.mtrlcode[i]
  1695. FROM u_mtrldef
  1696. Where u_mtrldef.mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction;
  1697. NEXT
  1698. NO_MXCHECK = UpperBound(arg_s_costmx.mtrlid)
  1699. Open(w_sys_wait_jdt) //初始化进度条
  1700. w_sys_wait_jdt.Show()
  1701. w_sys_wait_jdt.wf_accepttol(NO_MXCHECK)
  1702. w_sys_wait_jdt.wf_inc(0)
  1703. w_sys_wait_jdt.st_msg.Text = "正在统计..."
  1704. FOR i = 1 TO NO_MXCHECK
  1705. w_sys_wait_jdt.wf_inc(i)
  1706. w_sys_wait_jdt.st_msg.Text = "正在统计:"+arg_s_costmx.mtrlcode[i] + '的物料成本、人力成本...'
  1707. IF arg_s_cost.mtrltype = 0 THEN
  1708. SELECT dftmtrlcost
  1709. INTO :arg_s_costmx.dftmtrlcost[i]
  1710. FROM u_mtrldef
  1711. Where mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction;
  1712. IF commit_transaction.SQLCode <> 0 THEN
  1713. rslt = 0
  1714. arg_msg = "查询物料资料操作失败"
  1715. GOTO ext
  1716. END IF
  1717. ELSE
  1718. IF uof_pfdpf_cost(arg_s_costmx.mtrlid[i],arg_s_costmx.dftmtrlcost[i],1,arg_msg) = 0 THEN
  1719. rslt = 0
  1720. GOTO ext
  1721. END IF
  1722. END IF
  1723. IF arg_s_cost.emptype = 0 THEN
  1724. SELECT dftempcost
  1725. INTO :arg_s_costmx.dftempcost[i]
  1726. FROM u_mtrldef
  1727. Where mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction;
  1728. IF commit_transaction.SQLCode <> 0 THEN
  1729. rslt = 0
  1730. arg_msg = "查询物料资料操作失败"
  1731. GOTO ext
  1732. END IF
  1733. ELSE
  1734. SELECT sum(u_sc_workprice.workqty * u_sc_workprice.workprice)
  1735. INTO :arg_s_costmx.dftempcost[i]
  1736. FROM u_sc_workprice
  1737. Where u_sc_workprice.mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction;
  1738. IF commit_transaction.SQLCode = -1 THEN
  1739. rslt = 0
  1740. arg_msg = "查询物料工价表操作失败"
  1741. GOTO ext
  1742. ELSEIF commit_transaction.SQLCode = 100 THEN
  1743. arg_s_costmx.dftempcost[i] = 0
  1744. END IF
  1745. IF IsNull(arg_s_costmx.dftempcost[i]) THEN arg_s_costmx.dftempcost[i] = 0
  1746. END IF
  1747. NEXT
  1748. w_sys_wait_jdt.wf_accepttol(NO_MXCHECK)
  1749. w_sys_wait_jdt.wf_inc(0)
  1750. w_sys_wait_jdt.st_msg.Text = "正在统计..."
  1751. datastore ds_cmp
  1752. String ls_rs
  1753. Decimal ls_number
  1754. ds_cmp = CREATE datastore
  1755. ds_cmp.DataObject = "ds_cmp_qty"
  1756. ds_cmp.SetTransObject(sqlca)
  1757. ds_cmp.Retrieve()
  1758. String ls_scformula
  1759. FOR i = 1 TO NO_MXCHECK
  1760. w_sys_wait_jdt.wf_inc(i)
  1761. w_sys_wait_jdt.st_msg.Text = "正在统计:"+arg_s_costmx.mtrlcode[i] + '的生产成本、管理成本...'
  1762. SELECT Top 1 Replace(:arg_s_cost.scformula,'材料成本',:arg_s_costmx.dftmtrlcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction;
  1763. SELECT Top 1 Replace(:ls_scformula,'人力成本',:arg_s_costmx.dftempcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction;
  1764. ds_cmp.Reset()
  1765. ds_cmp.InsertRow(0)
  1766. ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'")
  1767. IF ls_rs = '' THEN
  1768. ds_cmp.AcceptText()
  1769. arg_s_costmx.dftsccost[i] = ds_cmp.Object.cmp[ds_cmp.GetRow()]
  1770. ELSE
  1771. rslt = 0
  1772. arg_msg = '生产费用计算公式非法,不能计算!'+arg_s_cost.scformula
  1773. GOTO ext
  1774. END IF
  1775. SELECT Top 1 Replace(:arg_s_cost.glformula,'材料成本',:arg_s_costmx.dftmtrlcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction;
  1776. SELECT Top 1 Replace(:ls_scformula,'人力成本',:arg_s_costmx.dftempcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction;
  1777. ds_cmp.Reset()
  1778. ds_cmp.InsertRow(0)
  1779. ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'")
  1780. IF ls_rs = '' THEN
  1781. ds_cmp.AcceptText()
  1782. arg_s_costmx.dftglcost[i] = ds_cmp.Object.cmp[ds_cmp.GetRow()]
  1783. ELSE
  1784. rslt = 0
  1785. arg_msg = '管理费用计算公式非法,不能计算!'+arg_s_cost.scformula
  1786. GOTO ext
  1787. END IF
  1788. DELETE FROM u_mtrldef_costmx
  1789. Where cmpid = :arg_s_cost.cmpid and
  1790. mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction;
  1791. IF commit_transaction.SQLCode <> 0 THEN
  1792. rslt = 0
  1793. arg_msg = "删除统计历史明细操作失败"
  1794. GOTO ext
  1795. END IF
  1796. INSERT INTO u_mtrldef_costmx
  1797. ( cmpid,
  1798. mtrlid,
  1799. dftmtrlcost,
  1800. dftempcost,
  1801. dftsccost,
  1802. dftglcost,
  1803. wfjgcost,
  1804. othercost )
  1805. VALUES ( :arg_s_cost.cmpid,
  1806. :arg_s_costmx.mtrlid[i],
  1807. :arg_s_costmx.dftmtrlcost[i],
  1808. :arg_s_costmx.dftempcost[i],
  1809. :arg_s_costmx.dftsccost[i],
  1810. :arg_s_costmx.dftglcost[i],
  1811. :arg_s_costmx.wfjgcost[i],
  1812. :arg_s_costmx.othercost[i] ) USING commit_transaction;
  1813. IF commit_transaction.SQLCode <> 0 THEN
  1814. rslt = 0
  1815. arg_msg = "插入统计历史明细操作失败"
  1816. GOTO ext
  1817. END IF
  1818. NEXT
  1819. UPDATE u_mtrldef_cost
  1820. SET cmpdate = getdate()
  1821. Where cmpid = :arg_s_cost.cmpid USING commit_transaction;
  1822. IF commit_transaction.SQLCode <> 0 THEN
  1823. rslt = 0
  1824. arg_msg = "更新统计时间操作失败"
  1825. GOTO ext
  1826. END IF
  1827. ext:
  1828. IF IsValid(w_sys_wait_jdt) THEN
  1829. Close(w_sys_wait_jdt)
  1830. END IF
  1831. IF rslt = 0 THEN
  1832. ROLLBACK USING commit_transaction;
  1833. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1834. COMMIT USING commit_transaction;
  1835. END IF
  1836. RETURN rslt
  1837. end function
  1838. public function integer uof_update_configure2 (long arg_mtrlid, s_mtrl_configure_array arg_s_config, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
  1839. IF arg_mtrlid <= 0 THEN
  1840. rslt = 0
  1841. arg_msg = '错误的物料ID'
  1842. GOTO ext
  1843. END IF
  1844. DELETE FROM u_mtrl_configure2
  1845. Where mtrlid = :arg_mtrlid ;
  1846. IF sqlca.SQLCode <> 0 THEN
  1847. rslt = 0
  1848. arg_msg = '删除物料包件配置资料操作失败:'+sqlca.SQLErrText
  1849. GOTO ext
  1850. END IF
  1851. Long ls_i
  1852. String ls_pzcode,ls_name,ls_pzcodemx,ls_namemx
  1853. Long ls_printid,ls_pzid
  1854. Long ll_pzflag = 0
  1855. FOR ls_i = 1 TO UpperBound(arg_s_config.pzid)
  1856. ls_pzid = arg_s_config.pzid[ls_i]
  1857. ls_pzcode = arg_s_config.pzcode[ls_i]
  1858. ls_name = arg_s_config.pzname[ls_i]
  1859. ls_pzcodemx = arg_s_config.pzcodemx[ls_i]
  1860. ls_namemx = arg_s_config.pznamemx[ls_i]
  1861. ls_printid = ls_i
  1862. INSERT INTO u_mtrl_configure2
  1863. (mtrlid, pzid, printid, pzcode, pzname, pzcodemx, pznamemx)
  1864. Values(:arg_mtrlid,:ls_pzid,:ls_printid,:ls_pzcode,:ls_name,:ls_pzcodemx,:ls_namemx) USING sqlca;
  1865. IF sqlca.SQLCode <> 0 THEN
  1866. rslt = 0
  1867. arg_msg = '插入物料包件配置资料操作失败:'+sqlca.SQLErrText
  1868. GOTO ext
  1869. END IF
  1870. NEXT
  1871. ext:
  1872. IF rslt = 0 THEN
  1873. ROLLBACK ;
  1874. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1875. COMMIT ;
  1876. END IF
  1877. RETURN rslt
  1878. end function
  1879. public function integer uof_add_mtrl (s_mtrldef_array arg_s_mtrl, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);s_mtrl = arg_s_mtrl
  1880. return save(arg_ifcommit, arg_msg)
  1881. end function
  1882. public function integer save_pack (ref s_mtrldef_pack arg_pack, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1883. Long ll_printid
  1884. IF arg_pack.printid = 0 THEN
  1885. SELECT isnull(max(printid),0)
  1886. INTO :ll_printid
  1887. FROM u_mtrldef_pack
  1888. Where mtrlid = :arg_pack.mtrlid;
  1889. IF sqlca.SQLCode <> 0 THEN
  1890. rslt = 0
  1891. arg_msg = '查询包件序号失败,' + sqlca.SQLErrText
  1892. GOTO ext
  1893. END IF
  1894. ll_printid++
  1895. INSERT INTO u_mtrldef_pack(mtrlid,
  1896. printid,
  1897. packcode,
  1898. packname,
  1899. packnum,
  1900. net_weight,
  1901. gross_weight,
  1902. cubage)
  1903. VALUES(:arg_pack.mtrlid,
  1904. :ll_printid,
  1905. :arg_pack.packcode,
  1906. :arg_pack.packname,
  1907. :arg_pack.packnum,
  1908. :arg_pack.net_weight,
  1909. :arg_pack.gross_weight,
  1910. :arg_pack.cubage);
  1911. IF sqlca.SQLCode <> 0 THEN
  1912. rslt = 0
  1913. arg_msg = '新增包件定义失败,' + sqlca.SQLErrText
  1914. GOTO ext
  1915. END IF
  1916. ELSE
  1917. UPDATE u_mtrldef_pack
  1918. SET packcode = :arg_pack.packcode,
  1919. packname = :arg_pack.packname,
  1920. packnum = :arg_pack.packnum,
  1921. net_weight = :arg_pack.net_weight,
  1922. gross_weight = :arg_pack.gross_weight,
  1923. cubage = :arg_pack.cubage
  1924. WHERE mtrlid = :arg_pack.mtrlid
  1925. And printid = :arg_pack.printid;
  1926. IF sqlca.SQLCode <> 0 THEN
  1927. rslt = 0
  1928. arg_msg = '更新包件定义失败,' + sqlca.SQLErrText
  1929. GOTO ext
  1930. END IF
  1931. END IF
  1932. ext:
  1933. IF arg_ifcommit THEN
  1934. IF rslt = 1 THEN
  1935. COMMIT;
  1936. ELSE
  1937. ROLLBACK;
  1938. END IF
  1939. END IF
  1940. RETURN rslt
  1941. end function
  1942. public function integer del_pack (long arg_mtrlid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1943. DELETE FROM u_mtrldef_pack
  1944. WHERE mtrlid = :arg_mtrlid
  1945. And printid = :arg_printid;
  1946. IF sqlca.SQLCode <> 0 THEN
  1947. rslt = 0
  1948. arg_msg = '删除包件定义失败,' + sqlca.SQLErrText
  1949. GOTO ext
  1950. END IF
  1951. IF sqlca.SQLNRows = 0 THEN
  1952. rslt = 0
  1953. arg_msg = '包件定义已经被其它人删除'
  1954. GOTO ext
  1955. END IF
  1956. ext:
  1957. IF arg_ifcommit THEN
  1958. IF rslt = 1 THEN
  1959. COMMIT;
  1960. ELSE
  1961. ROLLBACK;
  1962. END IF
  1963. END IF
  1964. RETURN rslt
  1965. end function
  1966. public function integer uof_pfdpf_empcost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg);Long ll_cnt,i,mtrlorigin
  1967. Long rslt = 1
  1968. s_pfmx outwaremx[]
  1969. String ls_msg
  1970. Decimal ld_cost
  1971. //SELECT mtrlorigin
  1972. // INTO :mtrlorigin
  1973. // FROM u_mtrldef
  1974. // Where mtrlid = :arg_mtrlid Using commit_transaction;
  1975. //IF commit_transaction.SQLCode <> 0 THEN
  1976. // rslt = 0
  1977. // arg_msg = '查询物料资料失败'
  1978. // GOTO ext
  1979. //END IF
  1980. //ll_cnt = 0
  1981. //SELECT count(*)
  1982. // INTO :ll_cnt
  1983. // FROM u_PrdPF
  1984. // Where u_PrdPF.mtrlid = :arg_mtrlid Using commit_transaction;
  1985. //IF commit_transaction.SQLCode <> 0 THEN
  1986. // rslt = 0
  1987. // arg_msg = '查询物料清单失败'
  1988. // GOTO ext
  1989. //END IF
  1990. //IF mtrlorigin = 2 THEN
  1991. ld_cost = 0
  1992. SELECT sum(u_sc_workprice.workqty * u_sc_workprice.workprice * :arg_sonscale)
  1993. INTO :ld_cost
  1994. FROM u_sc_workprice
  1995. Where u_sc_workprice.mtrlid = :arg_mtrlid Using commit_transaction;
  1996. IF commit_transaction.SQLCode <> 0 THEN
  1997. rslt = 0
  1998. arg_msg = "查询物料工价表操作失败"
  1999. GOTO ext
  2000. END IF
  2001. IF IsNull(ld_cost) THEN ld_cost = 0
  2002. arg_cost = arg_cost + ld_cost
  2003. //END IF
  2004. //IF ll_cnt = 0 THEN GOTO ext
  2005. ll_cnt = 1
  2006. DECLARE cur_pfdpf CURSOR FOR
  2007. SELECT u_PrdPF.SonMtrlid,u_PrdPF.sonscale,u_mtrldef.mtrlorigin
  2008. FROM u_PrdPF,u_mtrldef
  2009. WHERE ( u_PrdPF.mtrlid = :arg_mtrlid ) AND
  2010. ( u_PrdPF.mtrlid = u_mtrldef.mtrlid ) Using commit_transaction;
  2011. OPEN cur_pfdpf;
  2012. FETCH cur_pfdpf INTO
  2013. :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin;
  2014. DO WHILE commit_transaction.SQLCode = 0
  2015. ll_cnt++
  2016. FETCH cur_pfdpf Into :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin;
  2017. LOOP
  2018. CLOSE cur_pfdpf;
  2019. ll_cnt = ll_cnt - 1
  2020. FOR i = 1 To ll_cnt
  2021. IF uof_pfdpf_empcost( outwaremx[i].mtrlid,arg_cost,outwaremx[i].sonscale * arg_sonscale,arg_msg) = 0 THEN
  2022. rslt = 0
  2023. GOTO ext
  2024. END IF
  2025. NEXT
  2026. ext:
  2027. RETURN rslt
  2028. end function
  2029. on uo_mtrldef.create
  2030. call super::create
  2031. TriggerEvent( this, "constructor" )
  2032. end on
  2033. on uo_mtrldef.destroy
  2034. TriggerEvent( this, "destructor" )
  2035. call super::destroy
  2036. end on