uo_request_wfjg.sru 97 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800
  1. $PBExportHeader$uo_request_wfjg.sru
  2. forward
  3. global type uo_request_wfjg from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_request_wfjg from nonvisualobject
  7. end type
  8. global uo_request_wfjg uo_request_wfjg
  9. type variables
  10. Public ProtectedWrite Long scid
  11. Public ProtectedWrite Long wfjgid
  12. Public ProtectedWrite String taskcode
  13. Public ProtectedWrite DateTime opdate
  14. Public ProtectedWrite String operator
  15. Public ProtectedWrite Int status
  16. Public ProtectedWrite DateTime accomplishdate
  17. Public ProtectedWrite String permit_emp
  18. Public ProtectedWrite Long ctmint
  19. Long ifauto
  20. Long sptid
  21. String assign_emp
  22. DateTime requiredate
  23. String dscrp
  24. String relcode
  25. Boolean if_getid_ture = True
  26. Transaction commit_transaction //数据commit事务
  27. Private:
  28. s_order_wfjgmx wfjgmx[],wfjgmxmx[] //明细结构数组
  29. s_order_wfjgmx_out wfjgmx_out[] //明细结构数组
  30. Long it_mxbt = 0 //明细结构数组末指针
  31. Long it_mxbtmx = 0
  32. Long it_mxbt_out = 0 //明细结构数组末指针
  33. Boolean it_newbegin = True //新建标志
  34. Boolean it_updatebegin = False //修改标志
  35. Int uo_option_requestwfjg_hz
  36. int uo_option_wfjg_checkdate
  37. end variables
  38. forward prototypes
  39. public function integer p_reset ()
  40. public function integer p_clearmx ()
  41. public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
  42. public function integer newbegin (long arg_scid, ref string arg_msg)
  43. public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
  44. public function integer getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
  45. public function integer add_dscrp (long arg_scid, long arg_wfjgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  46. public function integer checkmxmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
  47. public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
  48. public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
  49. public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg)
  50. public function integer checkmxmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
  51. public function integer addmxcmpl (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
  52. public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
  53. public function integer trycmplwfjg (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
  54. public function integer audit_2 (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  55. public function integer audit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  56. public function integer caudit (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit)
  57. public function integer cancel (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit)
  58. public function integer caudit_2 (long arg_scid, long arg_wfjgid, any arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit)
  59. public function integer audit_mx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  60. public function integer caudit_mx (long arg_scid, long arg_wfjgid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  61. public function integer stopmx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
  62. public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_qty, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, string arg_jgdscrp, string arg_status, string arg_woodcode, string arg_pcode, long arg_wrkgrpid, string arg_pfcode, string arg_plancode, string arg_unit, decimal arg_uqty, decimal arg_rate)
  63. public function integer acceptmx_out (long arg_mtrlid, decimal arg_qty, string arg_mtrlcode, ref string arg_msg, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_uqty, decimal arg_rate)
  64. public function integer wasteqty (long arg_scid, decimal arg_wasteqty, long arg_wfjgid, long arg_printid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit)
  65. public function integer stopbuytask (long arg_scid, long arg_wfjgid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
  66. public function integer stopqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, string arg_stopreason, ref string arg_msg, boolean arg_commit)
  67. public function integer uof_update_wfjg_flag (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
  68. public function integer acceptmx (s_order_wfjgmx s_mx, ref string arg_msg)
  69. public function integer acceptmx_out (s_order_wfjgmx_out s_mx, ref string arg_msg)
  70. public function integer uof_add_thqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
  71. public function integer uof_add_fgqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
  72. public function integer uof_add_order_acmpqty (long arg_scid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
  73. public function integer uof_add_order_dstrqty_bk (long arg_scid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, decimal arg_dec_round, ref string arg_msg)
  74. public function integer uof_add_order_dstrqty (long arg_scid, long arg_sptid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, decimal arg_dec_round, ref string arg_msg)
  75. public function integer uof_add_order_rqacmpqty (long arg_scid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
  76. end prototypes
  77. public function integer p_reset ();//INT p_RESET()
  78. //清除对象及其明细
  79. scid = 0
  80. wfjgid = 0
  81. taskcode = ''
  82. operator = ''
  83. status = 0
  84. ifauto = 0
  85. it_newbegin = FALSE
  86. it_updatebegin = FALSE
  87. //清除明细
  88. P_CLEARMX()
  89. RETURN 1
  90. end function
  91. public function integer p_clearmx ();//INT p_clearmx()
  92. //清除明细
  93. it_mxbt = 0
  94. it_mxbt_out = 0
  95. it_mxbtmx = 0
  96. RETURN 1
  97. end function
  98. public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i,j
  99. Long LS_NEWwfjgID
  100. DateTime server_datetime
  101. String ls_sccode
  102. IF IsNull(dscrp) THEN dscrp = ''
  103. IF IsNull(assign_emp) THEN assign_emp = ''
  104. IF IsNull(arg_operator) THEN arg_operator = ''
  105. //IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
  106. operator = arg_operator
  107. IF it_newbegin = False And it_updatebegin = False THEN
  108. rslt = 0
  109. arG_MSG = "非编辑状态不可以提交"
  110. GOTO ext
  111. END IF
  112. IF Trim(assign_emp) = '' THEN
  113. rslt = 0
  114. arG_MSG = "请输入负责人"
  115. GOTO ext
  116. END IF
  117. SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
  118. //取得系统时间,借用操作员表
  119. IF commit_transaction.SQLCode <> 0 THEN
  120. rslt = 0
  121. arG_MSG = "查询操作失败,日期 "
  122. GOTO ext
  123. END IF
  124. IF f_check_inoutdate(0,requiredate,False,arG_MSG) = 0 THEN
  125. rslt = 0
  126. GOTO ext
  127. END IF
  128. IF it_mxbt = 0 THEN
  129. rslt = 0
  130. arG_MSG = "没有正确外协申请单收货明细"
  131. GOTO ext
  132. END IF
  133. if sys_option_request_wfjg_ifoutmx = 1 then
  134. IF it_mxbt_out = 0 THEN
  135. rslt = 0
  136. arG_MSG = "系统选项[375]限制,没有正确外协申请单发出明细"
  137. GOTO ext
  138. END IF
  139. end if
  140. cnt = 0
  141. SELECT count(*) INTO :cnt
  142. FROM u_user
  143. Where username = :operator Using commit_transaction ;
  144. IF commit_transaction.SQLCode <> 0 THEN
  145. rslt = 0
  146. arG_MSG = "查询操作失败,操作员!"
  147. GOTO ext
  148. END IF
  149. IF cnt = 0 THEN
  150. rslt = 0
  151. arG_MSG = "操作员姓名未登记或已取消!"
  152. GOTO ext
  153. END IF
  154. opdate = server_datetime //填写单据建立时间(最近修改时间)
  155. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  156. IF wfjgID = 0 THEN //新建
  157. LS_NEWwfjgID = f_sys_scidentity(scid,"u_request_wfjg","wfjgID",arG_MSG,True,id_sqlca) //数据commit事务)
  158. IF LS_NEWwfjgID <= 0 THEN
  159. rslt = 0
  160. GOTO ext
  161. END IF
  162. IF f_get_sccode(scid,commit_transaction,ls_sccode,arG_MSG) = 0 THEN
  163. rslt = 0
  164. GOTO ext
  165. END IF
  166. taskcode = getid(scid,ls_sccode + 'WR',Date(server_datetime),if_getid_ture,commit_transaction)
  167. IF taskcode = "err" THEN
  168. taskcode = ''
  169. rslt = 0
  170. arG_MSG = "无法获取外协申请单编号"+"~n"+commit_transaction.SQLErrText
  171. GOTO ext
  172. END IF
  173. INSERT INTO u_request_wfjg
  174. ( scid,
  175. wfjgID,
  176. TaskCode,
  177. requiredate,
  178. Status,
  179. Opemp,
  180. Assign_Emp,
  181. Dscrp,
  182. opdate,
  183. ifauto,
  184. relcode)
  185. VALUES ( :scid,
  186. :LS_NEWwfjgID,
  187. :TaskCode,
  188. :requiredate,
  189. :Status,
  190. :Operator,
  191. :Assign_Emp,
  192. :Dscrp,
  193. :opdate,
  194. :ifauto,
  195. :relcode) Using commit_transaction ;
  196. IF commit_transaction.SQLCode <> 0 THEN
  197. rslt = 0
  198. arG_MSG = "因网络或其它原因导致插入外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
  199. GOTO ext
  200. END IF
  201. //读取新taskid
  202. wfjgID = LS_NEWwfjgID
  203. ELSE //////////////////////////////////////////////// //更新
  204. UPDATE u_request_wfjg
  205. SET requiredate = :requiredate,
  206. Assign_Emp = :Assign_Emp,
  207. Dscrp = :Dscrp,
  208. moddate = getdate(),
  209. Modemp = :publ_operator,
  210. relcode = :relcode
  211. WHERE u_request_wfjg.wfjgID = :wfjgID
  212. And u_request_wfjg.scid = :scid Using commit_transaction;
  213. IF commit_transaction.SQLCode <> 0 THEN
  214. rslt = 0
  215. arG_MSG = "因网络或其它原因导致更新外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
  216. GOTO ext
  217. END IF
  218. //删除原有明细
  219. DELETE FROM u_request_wfjgMx
  220. WHERE u_request_wfjgMx.wfjgID = :wfjgID
  221. And u_request_wfjgMx.scid = :scid Using commit_transaction;
  222. IF commit_transaction.SQLCode <> 0 THEN
  223. rslt = 0
  224. arG_MSG = "删除旧有收货汇总操作失败"+"~n"+commit_transaction.SQLErrText
  225. GOTO ext
  226. END IF
  227. //删除原有明细
  228. DELETE FROM u_request_wfjgMxmx
  229. WHERE u_request_wfjgMxmx.wfjgID = :wfjgID
  230. And u_request_wfjgMxmx.scid = :scid Using commit_transaction;
  231. IF commit_transaction.SQLCode <> 0 THEN
  232. rslt = 0
  233. arG_MSG = "删除旧有收货明细操作失败"+"~n"+commit_transaction.SQLErrText
  234. GOTO ext
  235. END IF
  236. //删除原有明细
  237. DELETE FROM u_request_wfjgMx_out
  238. WHERE u_request_wfjgMx_out.wfjgID = :wfjgID
  239. And u_request_wfjgMx_out.scid = :scid Using commit_transaction;
  240. IF commit_transaction.SQLCode <> 0 THEN
  241. rslt = 0
  242. arG_MSG = "删除旧有发出明细操作失败"+"~n"+commit_transaction.SQLErrText
  243. GOTO ext
  244. END IF
  245. END IF
  246. FOR i = 1 To it_mxbt
  247. INSERT INTO u_request_wfjgMx
  248. ( scid,
  249. wfjgID,
  250. printid,
  251. mtrlid,
  252. qty,
  253. dscrp,
  254. requiredate,
  255. orderid,
  256. jgdscrp,
  257. status,
  258. iforder,
  259. woodcode,
  260. pcode,
  261. wrkGrpid,
  262. pfcode,
  263. sptid,
  264. plancode,
  265. unit,
  266. uqty,
  267. rate,
  268. sonmtrlid)
  269. VALUES (:scid,
  270. :wfjgID,
  271. :wfjgmx[i].printid,
  272. :wfjgmx[i].mtrlid,
  273. :wfjgmx[i].QTY,
  274. :wfjgmx[i].dscrp ,
  275. :wfjgmx[i].requiredate,
  276. :wfjgmx[i].orderid,
  277. :wfjgmx[i].jgdscrp,
  278. :wfjgmx[i].status,
  279. :wfjgmx[i].iforder,
  280. :wfjgmx[i].woodcode,
  281. :wfjgmx[i].pcode,
  282. :wfjgmx[i].wrkGrpid,
  283. :wfjgmx[i].pfcode,
  284. :wfjgmx[i].sptid,
  285. :wfjgmx[i].plancode,
  286. :wfjgmx[i].unit,
  287. :wfjgmx[i].uqty,
  288. :wfjgmx[i].rate,
  289. :wfjgmx[i].sonmtrlid) Using commit_transaction;
  290. IF commit_transaction.SQLCode <> 0 THEN
  291. IF it_newbegin THEN wfjgID = 0 //还原taskid
  292. rslt = 0
  293. arG_MSG = "因网络或其它原因导致插入收货汇总操作失败"+"~n"+commit_transaction.SQLErrText
  294. GOTO ext
  295. END IF
  296. NEXT
  297. FOR i = 1 To it_mxbtmx
  298. INSERT INTO u_request_wfjgMxmx
  299. ( scid,
  300. wfjgID,
  301. printid,
  302. mtrlid,
  303. qty,
  304. dscrp,
  305. requiredate,
  306. orderid,
  307. jgdscrp,
  308. status,
  309. iforder,
  310. woodcode,
  311. pcode,
  312. wrkGrpid,
  313. pfcode,
  314. sptid,
  315. plancode,
  316. unit,
  317. uqty,
  318. rate,
  319. sonmtrlid)
  320. VALUES (:scid,
  321. :wfjgID,
  322. :wfjgmxmx[i].printid,
  323. :wfjgmxmx[i].mtrlid,
  324. :wfjgmxmx[i].QTY,
  325. :wfjgmxmx[i].dscrp ,
  326. :wfjgmxmx[i].requiredate,
  327. :wfjgmxmx[i].orderid,
  328. :wfjgmxmx[i].jgdscrp,
  329. :wfjgmxmx[i].status,
  330. :wfjgmxmx[i].iforder,
  331. :wfjgmxmx[i].woodcode,
  332. :wfjgmxmx[i].pcode,
  333. :wfjgmxmx[i].wrkGrpid,
  334. :wfjgmxmx[i].pfcode,
  335. :wfjgmxmx[i].sptid,
  336. :wfjgmxmx[i].plancode,
  337. :wfjgmxmx[i].unit,
  338. :wfjgmxmx[i].uqty,
  339. :wfjgmxmx[i].rate,
  340. :wfjgmxmx[i].sonmtrlid) Using commit_transaction;
  341. IF commit_transaction.SQLCode <> 0 THEN
  342. IF it_newbegin THEN wfjgID = 0 //还原taskid
  343. rslt = 0
  344. arG_MSG = "因网络或其它原因导致插入收货明细操作失败"+"~n"+commit_transaction.SQLErrText
  345. GOTO ext
  346. END IF
  347. NEXT
  348. FOR i = 1 To it_mxbt_out
  349. INSERT INTO u_request_wfjgMx_out
  350. (scid,
  351. wfjgID,
  352. printid,
  353. mtrlid,
  354. qty,
  355. status,
  356. woodcode,
  357. pcode,
  358. unit,
  359. uqty,
  360. rate)
  361. VALUES (:scid,
  362. :wfjgID,
  363. :wfjgmx_out[i].printid,
  364. :wfjgmx_out[i].mtrlid,
  365. :wfjgmx_out[i].QTY,
  366. :wfjgmx_out[i].status,
  367. :wfjgmx_out[i].woodcode,
  368. :wfjgmx_out[i].pcode,
  369. :wfjgmx_out[i].unit,
  370. :wfjgmx_out[i].uqty,
  371. :wfjgmx_out[i].rate) Using commit_transaction;
  372. IF commit_transaction.SQLCode <> 0 THEN
  373. IF it_newbegin THEN wfjgID = 0 //还原taskid
  374. rslt = 0
  375. arG_MSG = "因网络或其它原因导致插入发出明细操作失败"+"~n"+commit_transaction.SQLErrText
  376. GOTO ext
  377. END IF
  378. NEXT
  379. IF uof_update_wfjg_flag(scid,wfjgID,arG_MSG,False) = 0 THEN
  380. rslt = 0
  381. GOTO ext
  382. END IF
  383. it_newbegin = False
  384. it_updatebegin = False
  385. ext:
  386. IF rslt = 0 THEN
  387. ROLLBACK Using commit_transaction;
  388. p_clearmx()
  389. ELSEIF arg_ifcommit And rslt = 1 THEN
  390. COMMIT Using commit_transaction;
  391. END IF
  392. Return(rslt)
  393. end function
  394. public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
  395. //0 fail 1 success
  396. long rslt=1,CNT=0
  397. if arg_scid < 0 then
  398. arg_msg = '请选择分部'
  399. rslt = 0
  400. goto ext
  401. end if
  402. p_reset()
  403. it_newbegin=TRUE
  404. it_updatebegin=FALSE
  405. scid=arg_scid
  406. ext:
  407. if rslt = 0 then p_reset()
  408. return rslt
  409. end function
  410. public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1
  411. SELECT wfjgID,
  412. TaskCode,
  413. requiredate,
  414. accomplishdate,
  415. Status,
  416. Opemp,
  417. Assign_Emp,
  418. Dscrp,
  419. opdate ,
  420. ctmint,
  421. ifauto,
  422. relcode
  423. INTO :wfjgID,
  424. :TaskCode,
  425. :requiredate,
  426. :accomplishdate,
  427. :Status,
  428. :Operator,
  429. :Assign_Emp,
  430. :Dscrp,
  431. :opdate,
  432. :ctmint,
  433. :ifauto,
  434. :relcode
  435. FROM u_request_wfjg
  436. WHERE u_request_wfjg.wfjgID = :arg_wfjgID
  437. AND u_request_wfjg.scid = :arg_scid USING commit_transaction;
  438. IF commit_transaction.SQLCode <> 0 THEN
  439. rslt = 0
  440. ARG_MSG = '查询外协申请单内容失败(错误外协申请单唯一码)'
  441. GOTO ext
  442. END IF
  443. scid = arg_scid
  444. ext:
  445. RETURN rslt
  446. end function
  447. public function integer getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0,j = 1, k = 1
  448. IF arg_wfjgid <= 0 THEN
  449. rslt = 0
  450. arg_msg = '错误外加工计划唯一码'
  451. GOTO ext
  452. END IF
  453. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  454. rslt = 0
  455. GOTO ext
  456. END IF
  457. //用游标读取明细
  458. DECLARE cur_inwaermx CURSOR FOR
  459. SELECT u_request_wfjgmx.mtrlid,
  460. u_request_wfjgmx.qty,
  461. u_request_wfjgmx.dscrp,
  462. u_mtrldef.mtrlcode,
  463. u_request_wfjgmx.printid,
  464. u_request_wfjgmx.orderid,
  465. u_request_wfjgmx.jgdscrp,
  466. u_request_wfjgmx.iforder,
  467. u_request_wfjgmx.status,
  468. u_request_wfjgmx.woodcode,
  469. u_request_wfjgmx.pcode,
  470. u_request_wfjgmx.wrkGrpid,
  471. u_request_wfjgmx.sptid,
  472. u_request_wfjgmx.plancode,
  473. u_request_wfjgmx.unit,
  474. u_request_wfjgmx.uqty,
  475. u_request_wfjgmx.rate
  476. FROM u_request_wfjgmx,u_mtrldef
  477. WHERE u_request_wfjgmx.wfjgid = :arg_wfjgid AND
  478. u_request_wfjgmx.scid = :arg_scid AND
  479. u_request_wfjgmx.mtrlid = u_mtrldef.mtrlid Using commit_transaction;
  480. OPEN cur_inwaermx;
  481. FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,:wfjgmx[i].qty,
  482. :wfjgmx[i].dscrp,:wfjgmx[i].mtrlcode,
  483. :wfjgmx[i].printid,:wfjgmx[i].orderid,
  484. :wfjgmx[i].jgdscrp,:wfjgmx[i].iforder,
  485. :wfjgmx[i].status,:wfjgmx[i].woodcode,:wfjgmx[i].pcode,
  486. :wfjgmx[i].wrkGrpid,:wfjgmx[i].sptid,:wfjgmx[i].plancode,
  487. :wfjgmx[i].unit,:wfjgmx[i].uqty,:wfjgmx[i].rate;
  488. DO WHILE commit_transaction.SQLCode = 0
  489. i++
  490. FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,:wfjgmx[i].qty,
  491. :wfjgmx[i].dscrp,:wfjgmx[i].mtrlcode,
  492. :wfjgmx[i].printid,:wfjgmx[i].orderid,
  493. :wfjgmx[i].jgdscrp,:wfjgmx[i].iforder,
  494. :wfjgmx[i].status,:wfjgmx[i].woodcode,:wfjgmx[i].pcode,
  495. :wfjgmx[i].wrkGrpid,:wfjgmx[i].sptid,:wfjgmx[i].plancode,
  496. :wfjgmx[i].unit,:wfjgmx[i].uqty,:wfjgmx[i].rate;
  497. LOOP
  498. CLOSE cur_inwaermx;
  499. //检验明细是否读入完整
  500. SELECT count(*) INTO :no_mxcheck
  501. FROM u_request_wfjgmx
  502. WHERE u_request_wfjgmx.wfjgid = :arg_wfjgid
  503. And u_request_wfjgmx.scid = :arg_scid Using commit_transaction;
  504. IF commit_transaction.SQLCode <> 0 THEN
  505. rslt = 0
  506. arg_msg = "查询操作失败,外协计划收货汇总数量"
  507. GOTO ext
  508. END IF
  509. IF i <> (no_mxcheck+1) THEN
  510. rslt = 0
  511. arg_msg = "查询操作失败,外协计划收货汇总"
  512. GOTO ext
  513. END IF
  514. it_mxbt = i - 1
  515. //
  516. //用游标读取明细
  517. DECLARE cur_inwaermxmx CURSOR FOR
  518. SELECT u_request_wfjgmxmx.mtrlid,
  519. u_request_wfjgmxmx.qty,
  520. u_request_wfjgmxmx.dscrp,
  521. u_mtrldef.mtrlcode,
  522. u_request_wfjgmxmx.printid,
  523. u_request_wfjgmxmx.orderid,
  524. u_request_wfjgmxmx.jgdscrp,
  525. u_request_wfjgmxmx.iforder,
  526. u_request_wfjgmxmx.status,
  527. u_request_wfjgmxmx.woodcode,
  528. u_request_wfjgmxmx.pcode,
  529. u_request_wfjgmxmx.wrkGrpid,
  530. u_request_wfjgmxmx.sptid,
  531. u_request_wfjgmxmx.plancode,
  532. u_request_wfjgmxmx.unit,
  533. u_request_wfjgmxmx.uqty,
  534. u_request_wfjgmxmx.rate
  535. FROM u_request_wfjgmxmx,u_mtrldef
  536. WHERE u_request_wfjgmxmx.wfjgid = :arg_wfjgid AND
  537. u_request_wfjgmxmx.scid = :arg_scid AND
  538. u_request_wfjgmxmx.mtrlid = u_mtrldef.mtrlid Using commit_transaction;
  539. OPEN cur_inwaermxmx;
  540. FETCH cur_inwaermxmx INTO :wfjgmxmx[k].mtrlid,:wfjgmxmx[k].qty,
  541. :wfjgmxmx[k].dscrp,:wfjgmxmx[k].mtrlcode,
  542. :wfjgmxmx[k].printid,:wfjgmxmx[k].orderid,
  543. :wfjgmxmx[k].jgdscrp,:wfjgmxmx[k].iforder,
  544. :wfjgmxmx[k].status,:wfjgmxmx[k].woodcode,:wfjgmxmx[k].pcode,
  545. :wfjgmxmx[k].wrkGrpid,:wfjgmxmx[k].sptid,:wfjgmxmx[k].plancode,
  546. :wfjgmxmx[k].unit,:wfjgmxmx[k].uqty,:wfjgmxmx[k].rate;
  547. DO WHILE commit_transaction.SQLCode = 0
  548. k++
  549. FETCH cur_inwaermxmx INTO :wfjgmxmx[k].mtrlid,:wfjgmxmx[k].qty,
  550. :wfjgmxmx[k].dscrp,:wfjgmxmx[k].mtrlcode,
  551. :wfjgmxmx[k].printid,:wfjgmxmx[k].orderid,
  552. :wfjgmxmx[k].jgdscrp,:wfjgmxmx[k].iforder,
  553. :wfjgmxmx[k].status,:wfjgmxmx[k].woodcode,:wfjgmxmx[k].pcode,
  554. :wfjgmxmx[k].wrkGrpid,:wfjgmxmx[k].sptid,:wfjgmxmx[k].plancode,
  555. :wfjgmxmx[k].unit,:wfjgmxmx[k].uqty,:wfjgmxmx[k].rate;
  556. LOOP
  557. CLOSE cur_inwaermxmx;
  558. //
  559. //检验明细是否读入完整
  560. SELECT count(*) INTO :no_mxcheck
  561. FROM u_request_wfjgmxmx
  562. WHERE u_request_wfjgmxmx.wfjgid = :arg_wfjgid
  563. And u_request_wfjgmxmx.scid = :arg_scid Using commit_transaction;
  564. IF commit_transaction.SQLCode <> 0 THEN
  565. rslt = 0
  566. arg_msg = "查询操作失败,外协计划收货明细数量"
  567. GOTO ext
  568. END IF
  569. IF k <> (no_mxcheck+1) THEN
  570. rslt = 0
  571. arg_msg = "查询操作失败,外协计划收货明细"
  572. GOTO ext
  573. END IF
  574. it_mxbtmx = k - 1
  575. //
  576. //用游标读取明细
  577. DECLARE cur_inwaermx_out CURSOR FOR
  578. SELECT u_request_wfjgmx_out.mtrlid,
  579. u_request_wfjgmx_out.qty,
  580. u_mtrldef.mtrlcode,
  581. u_request_wfjgmx_out.printid,
  582. u_request_wfjgmx_out.status,
  583. u_request_wfjgmx_out.woodcode,
  584. u_request_wfjgmx_out.pcode,
  585. u_request_wfjgmx_out.unit,
  586. u_request_wfjgmx_out.uqty,
  587. u_request_wfjgmx_out.rate
  588. FROM u_request_wfjgmx_out,u_mtrldef
  589. WHERE u_request_wfjgmx_out.wfjgid = :arg_wfjgid AND
  590. u_request_wfjgmx_out.scid = :arg_scid AND
  591. u_request_wfjgmx_out.mtrlid = u_mtrldef.mtrlid
  592. Using commit_transaction;
  593. OPEN cur_inwaermx_out;
  594. FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,:wfjgmx_out[j].qty,
  595. :wfjgmx_out[j].mtrlcode,
  596. :wfjgmx_out[j].printid,
  597. :wfjgmx_out[j].status,:wfjgmx_out[j].woodcode,
  598. :wfjgmx_out[j].pcode,
  599. :wfjgmx_out[j].unit,:wfjgmx_out[j].uqty,:wfjgmx_out[j].rate;
  600. DO WHILE commit_transaction.SQLCode = 0
  601. j++
  602. FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,:wfjgmx_out[j].qty,
  603. :wfjgmx_out[j].mtrlcode,
  604. :wfjgmx_out[j].printid,
  605. :wfjgmx_out[j].status,:wfjgmx_out[j].woodcode,
  606. :wfjgmx_out[j].pcode,
  607. :wfjgmx_out[j].unit,:wfjgmx_out[j].uqty,:wfjgmx_out[j].rate;
  608. LOOP
  609. CLOSE cur_inwaermx_out;
  610. //检验明细是否读入完整
  611. SELECT count(*) INTO :no_mxcheck
  612. FROM u_request_wfjgmx_out
  613. WHERE u_request_wfjgmx_out.wfjgid = :arg_wfjgid
  614. And u_request_wfjgmx_out.scid = :arg_scid Using commit_transaction;
  615. IF commit_transaction.SQLCode <> 0 THEN
  616. rslt = 0
  617. arg_msg = "查询操作失败,外协计划发出明细数量"
  618. GOTO ext
  619. END IF
  620. IF j <> (no_mxcheck+1) THEN
  621. rslt = 0
  622. arg_msg = "查询操作失败,外协计划发出明细"
  623. GOTO ext
  624. END IF
  625. it_mxbt_out = j - 1
  626. //
  627. it_newbegin = False
  628. it_updatebegin = False
  629. ext:
  630. IF rslt = 0 THEN p_reset()
  631. RETURN rslt
  632. end function
  633. public function integer add_dscrp (long arg_scid, long arg_wfjgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
  634. //0 fail 1 SUCCESS
  635. Int rslt = 1
  636. arg_newdescppart = Trim(arg_newdescppart)
  637. IF arg_newdescppart = '' THEN
  638. rslt = 0
  639. arG_MSG = "要添加内容为空,操作取消"
  640. GOTO ext
  641. END IF
  642. IF p_getinfo(arg_scid,arg_wfjgid,arG_MSG) = 0 THEN
  643. rslt = 0
  644. GOTO ext
  645. END IF
  646. IF status = 0 THEN
  647. rslt = 0
  648. arG_MSG = "待审核状态下不可用"
  649. GOTO ext
  650. END IF
  651. UPDATE u_request_wfjg
  652. SET DSCRP = DSCRP+' '+:arg_newdescppart
  653. WHERE u_request_wfjg.wfjgid = :arg_wfjgid
  654. AND u_request_wfjg.scid = :arg_scid USING commit_transaction;
  655. IF commit_transaction.SQLCode <> 0 THEN
  656. rslt = 0
  657. arG_MSG = "因网络或其它原因导致添加外加工计划备注操作失败"+"~n"+commit_transaction.SQLErrText
  658. ROLLBACK USING commit_transaction;
  659. GOTO ext
  660. END IF
  661. DSCRP = DSCRP+' '+arg_newdescppart
  662. it_newbegin = FALSE
  663. it_updatebegin = FALSE
  664. ext:
  665. IF arg_ifcommit AND rslt = 1 THEN
  666. COMMIT USING commit_transaction;
  667. END IF
  668. p_reset()
  669. Return (rslt)
  670. end function
  671. public function integer checkmxmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
  672. Int rslt = 1,cnt = 0
  673. IF arg_wfjgid <= 0 THEN
  674. rslt = 0
  675. ARG_MSG = '错误外协申请单唯一码'
  676. GOTO ext
  677. END IF
  678. IF arg_addqty = 0 THEN
  679. rslt = 1
  680. GOTO ext
  681. END IF
  682. rslt = p_getinfo(arg_scid,arg_wfjgid,ARG_MSG)
  683. IF rslt = 0 THEN GOTO ext
  684. IF Status <> 1 THEN
  685. rslt = 0
  686. ARG_MSG = "外协申请单只有在进行状态下才可以执行进仓"
  687. GOTO ext
  688. END IF
  689. Decimal lde_uqty,lde_consignedqty
  690. String ls_mtrlcode
  691. SELECT u_request_wfjgmx.uQty,
  692. u_request_wfjgmx.consignedqty,
  693. u_mtrldef.mtrlcode
  694. INTO :lde_uqty,
  695. :lde_consignedqty,
  696. :ls_mtrlcode
  697. FROM u_request_wfjgmx ,u_mtrldef
  698. WHERE ( u_request_wfjgmx.scid = :arg_scid ) AND
  699. ( u_request_wfjgmx.wfjgid = :arg_wfjgid ) AND
  700. ( u_request_wfjgmx.MtrlID = :arg_mtrlid ) AND
  701. ( u_mtrldef.MtrlID = u_request_wfjgmx.MtrlID ) Using commit_transaction;
  702. IF commit_transaction.SQLCode <> 0 THEN
  703. rslt = 0
  704. ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外协申请单已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
  705. GOTO ext
  706. END IF
  707. IF lde_uqty < lde_consignedqty + arg_addqty THEN
  708. rslt = 0
  709. ARG_MSG = "物料["+ls_mtrlcode+"]的外协申请单未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0#')+",不能安排"+String(arg_addqty,'#,##0.0#')
  710. GOTO ext
  711. END IF
  712. ext:
  713. p_reset()
  714. Return (rslt)
  715. end function
  716. public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  717. DateTime null_dt
  718. SetNull(null_dt)
  719. IF arg_wfjgid <= 0 THEN
  720. rslt = 0
  721. ARG_MSG = '错误外协申请单唯一码'
  722. GOTO ext
  723. END IF
  724. IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  725. rslt = 0
  726. GOTO ext
  727. END IF
  728. IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
  729. IF Status <> 1 THEN
  730. rslt = 0
  731. ARG_MSG = "外协申请单只有在进行状态才可以执行完成,请核对"
  732. GOTO ext
  733. END IF
  734. ELSE
  735. IF arg_finishtype = 1 THEN
  736. IF Status <> 6 THEN
  737. rslt = 0
  738. ARG_MSG = "外协申请单只有在手动完成状态下才可以执行取消手动完成,请核对"
  739. GOTO ext
  740. END IF
  741. END IF
  742. END IF
  743. IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
  744. UPDATE u_request_wfjg
  745. SET status = :arg_finishtype,
  746. accomplishdate = getdate(),
  747. finishemp = :publ_operator
  748. WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
  749. And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
  750. IF commit_transaction.SQLCode <> 0 THEN
  751. rslt = 0
  752. ARG_MSG = "因网络或其它原因导致完成外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
  753. ROLLBACK USING commit_transaction;
  754. GOTO ext
  755. END IF
  756. ELSE
  757. UPDATE u_request_wfjg
  758. SET status = :arg_finishtype,
  759. accomplishdate = :null_dt,
  760. finishemp = ''
  761. WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
  762. And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
  763. IF commit_transaction.SQLCode <> 0 THEN
  764. rslt = 0
  765. ARG_MSG = "因网络或其它原因导致取消手动完成外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
  766. ROLLBACK USING commit_transaction;
  767. GOTO ext
  768. END IF
  769. END IF
  770. ext:
  771. IF arg_ifcommit AND rslt = 1 THEN
  772. COMMIT USING commit_transaction;
  773. END IF
  774. p_reset()
  775. Return (rslt)
  776. end function
  777. public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  778. IF arg_wfjgid <= 0 THEN
  779. rslt = 0
  780. ARG_MSG = '错误外协申请单唯一码'
  781. GOTO ext
  782. END IF
  783. IF f_aps_mrp_cklock(arg_scid,ARG_MSG) = 0 THEN
  784. rslt = 0
  785. GOTO ext
  786. END IF
  787. IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  788. rslt = 0
  789. GOTO ext
  790. END IF
  791. IF Status <> 1 And Status <> 2 THEN
  792. rslt = 0
  793. ARG_MSG = "外协申请单只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
  794. GOTO ext
  795. END IF
  796. IF Status = 1 THEN
  797. UPDATE u_request_wfjg
  798. SET Status = 2 ,
  799. stopemp = :publ_operator
  800. WHERE wfjgid = :arg_wfjgid
  801. And scid = :arg_scid Using commit_transaction ;
  802. IF commit_transaction.SQLCode <> 0 THEN
  803. rslt = 0
  804. ARG_MSG = "因网络或其它原因导致暂停外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
  805. GOTO ext
  806. END IF
  807. ELSE
  808. UPDATE u_request_wfjg
  809. SET Status = 1,stopemp = ''
  810. WHERE wfjgid = :arg_wfjgid
  811. And scid = :arg_scid Using commit_transaction;
  812. IF commit_transaction.SQLCode <> 0 THEN
  813. rslt = 0
  814. ARG_MSG = "因网络或其它原因导致取消暂停外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
  815. GOTO ext
  816. END IF
  817. END IF
  818. it_newbegin = False
  819. it_updatebegin = False
  820. ext:
  821. IF rslt = 0 THEN
  822. ROLLBACK Using commit_transaction;
  823. ELSEIF arg_ifcommit And rslt = 1 THEN
  824. COMMIT Using commit_transaction;
  825. END IF
  826. p_reset()
  827. Return (rslt)
  828. end function
  829. public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1
  830. Long CNT = 0
  831. IF arg_wfjgid <= 0 THEN
  832. rslt = 0
  833. ARG_MSG = '错误外协申请单唯一码'
  834. GOTO ext
  835. END IF
  836. IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  837. rslt = 0
  838. GOTO ext
  839. END IF
  840. IF ifauto = 1 THEN
  841. rslt = 0
  842. ARG_MSG = '单据为动建立的单据,不可以修改'
  843. GOTO ext
  844. END IF
  845. IF Status <> 0 THEN
  846. rslt = 0
  847. ARG_MSG = '已经处于审核或完成等状态,不可以修改,如果外协申请单未完成并要修改请先撤销审核'
  848. GOTO ext
  849. END IF
  850. it_newbegin = FALSE
  851. it_updatebegin = TRUE
  852. p_clearmx() //清除明细
  853. ext:
  854. IF rslt = 0 THEN p_reset()
  855. RETURN rslt
  856. end function
  857. public function integer checkmxmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
  858. Int rslt = 1,cnt = 0
  859. IF arg_wfjgid <= 0 THEN
  860. rslt = 0
  861. ARG_MSG = '错误外协申请单唯一码'
  862. GOTO ext
  863. END IF
  864. IF arg_addqty = 0 THEN
  865. rslt = 1
  866. GOTO ext
  867. END IF
  868. rslt = p_getinfo(arg_scid,arg_wfjgid,ARG_MSG)
  869. IF rslt = 0 THEN GOTO ext
  870. IF Status <> 1 THEN
  871. rslt = 0
  872. ARG_MSG = "外协申请单只有在进行状态下才可以执行进仓"
  873. GOTO ext
  874. END IF
  875. Decimal lde_uqty,lde_consignedqty
  876. String ls_mtrlcode
  877. SELECT u_request_wfjgMx_out.Qty,
  878. u_request_wfjgMx_out.consignedqty,
  879. u_mtrldef.mtrlcode
  880. INTO :lde_uqty,
  881. :lde_consignedqty,
  882. :ls_mtrlcode
  883. FROM u_request_wfjgMx_out ,u_mtrldef
  884. WHERE ( u_request_wfjgMx_out.scid = :arg_scid ) AND
  885. ( u_request_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
  886. ( u_request_wfjgMx_out.MtrlID = :arg_mtrlid ) AND
  887. ( u_mtrldef.MtrlID = u_request_wfjgMx_out.MtrlID ) Using commit_transaction;
  888. IF commit_transaction.SQLCode <> 0 THEN
  889. rslt = 0
  890. ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外协申请单发出已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
  891. GOTO ext
  892. END IF
  893. IF lde_uqty < lde_consignedqty + arg_addqty THEN
  894. rslt = 0
  895. ARG_MSG = "物料["+ls_mtrlcode+"]的外协申请单发出未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0#')+",不能安排"+String(arg_addqty,'#,##0.0#')
  896. GOTO ext
  897. END IF
  898. ext:
  899. p_reset()
  900. Return (rslt)
  901. end function
  902. public function integer addmxcmpl (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);//arg_addqty 必须为外协单位
  903. Int rslt = 1
  904. Long cnt = 0
  905. IF arg_wfjgid <= 0 THEN
  906. rslt = 0
  907. arg_msg = '错误外协申请单唯一码'
  908. GOTO ext
  909. END IF
  910. IF arg_addqty = 0 THEN
  911. rslt = 1
  912. GOTO ext
  913. END IF
  914. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  915. rslt = 0
  916. GOTO ext
  917. END IF
  918. IF status <> 1 AND status <> 5 THEN
  919. rslt = 0
  920. arg_msg = "外协申请单只有在进行或完成状态下才可以执行操作"
  921. GOTO ext
  922. END IF
  923. Decimal lde_uqty,lde_consignedqty,ld_sum_consignedqty
  924. String ls_mtrlcode
  925. Long ll_orderid,ll_wrkGrpid,ll_mtrlid
  926. String ls_status,ls_woodcode,ls_pcode
  927. SELECT u_mtrldef.mtrlcode,
  928. u_request_wfjgMx.orderid,
  929. u_request_wfjgMx.wrkGrpid,
  930. u_request_wfjgMx.mtrlid,
  931. u_request_wfjgMx.status,
  932. u_request_wfjgMx.woodcode,
  933. u_request_wfjgMx.pcode,
  934. u_request_wfjgMx.uqty,
  935. u_request_wfjgMx.consignedqty
  936. INTO :ls_mtrlcode,
  937. :ll_orderid,
  938. :ll_wrkGrpid,
  939. :ll_mtrlid,
  940. :ls_status,
  941. :ls_woodcode,
  942. :ls_pcode,
  943. :lde_uqty,
  944. :lde_consignedqty
  945. FROM u_mtrldef,u_request_wfjgMx
  946. WHERE u_mtrldef.mtrlid = u_request_wfjgMx.mtrlid
  947. AND u_request_wfjgMx.scid = :arg_scid
  948. AND u_request_wfjgMx.wfjgid = :arg_wfjgid
  949. AND u_request_wfjgMx.printid = :arg_printid
  950. USING commit_transaction;
  951. IF commit_transaction.SQLCode <> 0 THEN
  952. rslt = 0
  953. arg_msg = '查询外协申请单明细物料编码失败,'+commit_transaction.SQLErrText
  954. GOTO ext
  955. END IF
  956. IF lde_uqty < lde_consignedqty + arg_addqty THEN
  957. rslt = 0
  958. arg_msg = "外协申请物料:"+ls_mtrlcode+",的未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0###')+",不能安排"+String(arg_addqty,'#,##0.0#')
  959. GOTO ext
  960. END IF
  961. UPDATE u_request_wfjgMx
  962. SET consignedqty = consignedqty + :arg_addqty
  963. WHERE ( u_request_wfjgMx.wfjgid = :arg_wfjgid ) AND
  964. ( u_request_wfjgMx.printid = :arg_printid ) AND
  965. ( u_request_wfjgMx.scid = :arg_scid) USING commit_transaction;
  966. IF commit_transaction.SQLCode <> 0 THEN
  967. rslt = 0
  968. arg_msg = "更新外协申请单已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
  969. GOTO ext
  970. END IF
  971. it_newbegin = FALSE
  972. it_updatebegin = FALSE
  973. ext:
  974. IF rslt = 0 THEN
  975. ROLLBACK USING commit_transaction;
  976. ELSEIF arg_ifcommit AND rslt = 1 THEN
  977. COMMIT USING commit_transaction;
  978. END IF
  979. p_reset()
  980. Return (rslt)
  981. end function
  982. public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);//好像没用的??
  983. //arg_addqty 必须为外协单位
  984. Int rslt = 1,cnt = 0
  985. IF arg_wfjgid <= 0 THEN
  986. rslt = 0
  987. arg_msg = '错误外加工计划唯一码'
  988. GOTO ext
  989. END IF
  990. IF arg_addqty = 0 THEN
  991. rslt = 1
  992. GOTO ext
  993. END IF
  994. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  995. rslt = 0
  996. GOTO ext
  997. END IF
  998. Decimal lde_uqty,lde_consignedqty
  999. String ls_mtrlcode
  1000. SELECT mtrlcode INTO :ls_mtrlcode FROM u_mtrldef
  1001. WHERE mtrlid = :arg_mtrlid
  1002. USING commit_transaction;
  1003. IF commit_transaction.SQLCode <> 0 THEN
  1004. rslt = 0
  1005. arg_msg = '查询物料资料失败'
  1006. GOTO ext
  1007. END IF
  1008. SELECT u_request_wfjgMx_out.uqty,
  1009. u_request_wfjgMx_out.consignedqty
  1010. INTO :lde_uqty,
  1011. :lde_consignedqty
  1012. FROM u_request_wfjgMx_out
  1013. WHERE ( u_request_wfjgMx_out.scid = :arg_scid ) AND
  1014. ( u_request_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
  1015. ( u_request_wfjgMx_out.printid = :arg_printid ) USING commit_transaction;
  1016. IF commit_transaction.SQLCode <> 0 THEN
  1017. rslt = 0
  1018. arg_msg = "查询外协申请发出物料编码["+ls_mtrlcode+"]已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
  1019. GOTO ext
  1020. END IF
  1021. IF lde_uqty < lde_consignedqty + arg_addqty THEN
  1022. rslt = 0
  1023. arg_msg = "外协申请发出物料["+ls_mtrlcode+"]的未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0###')+",不能安排"+String(arg_addqty,'#,##0.0#')
  1024. GOTO ext
  1025. END IF
  1026. UPDATE u_request_wfjgMx_out
  1027. SET consignedqty = consignedqty + :arg_addqty
  1028. WHERE ( u_request_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
  1029. ( u_request_wfjgMx_out.scid = :arg_scid ) AND
  1030. ( u_request_wfjgMx_out.printid = :arg_printid ) USING commit_transaction;
  1031. IF sqlca.SQLCode <> 0 THEN
  1032. rslt = 0
  1033. arg_msg = "更新外协申请单发出安排数量操作失败"+"~n"+commit_transaction.SQLErrText
  1034. GOTO ext
  1035. END IF
  1036. it_newbegin = FALSE
  1037. it_updatebegin = FALSE
  1038. ext:
  1039. IF rslt = 0 THEN
  1040. ROLLBACK USING commit_transaction;
  1041. ELSEIF arg_ifcommit and rslt = 1 THEN
  1042. COMMIT USING commit_transaction;
  1043. END IF
  1044. p_reset()
  1045. Return (rslt)
  1046. end function
  1047. public function integer trycmplwfjg (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);//trycmplbuytask(arg_taskid,arg_msg,arg_ifcommit)
  1048. Int rslt = 1,cnt = 0
  1049. DateTime null_dt
  1050. SetNull(null_dt)
  1051. IF arg_wfjgid <= 0 THEN
  1052. rslt = 0
  1053. arg_msg = '错误外协申请单唯一码'
  1054. GOTO ext
  1055. END IF
  1056. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  1057. rslt = 0
  1058. GOTO ext
  1059. END IF
  1060. IF status <> 1 AND status <> 5 THEN
  1061. rslt = 1
  1062. IF status <> 1 THEN
  1063. arg_msg = "外协申请单只有在进行状态下才可以执行设完成状态"
  1064. ELSEIF status <> 5 THEN
  1065. arg_msg = "外协申请单只有在完成状态下才可以执行撤消完成状态"
  1066. END IF
  1067. GOTO ext
  1068. END IF
  1069. Decimal ls_zerook
  1070. Boolean if_finish
  1071. if_finish = TRUE
  1072. DECLARE zero_cur CURSOR FOR
  1073. SELECT u_request_wfjgMx.uqty - u_request_wfjgmx.consignedqty - u_request_wfjgmx.stopqty
  1074. FROM u_request_wfjgmx
  1075. WHERE ( u_request_wfjgmx.wfjgid = :arg_wfjgid )
  1076. AND ( u_request_wfjgmx.scid = :arg_scid )
  1077. and ( u_request_wfjgmx.stopflag = 0)
  1078. USING commit_transaction ;
  1079. OPEN zero_cur;
  1080. FETCH zero_cur INTO :ls_zerook;
  1081. DO WHILE commit_transaction.SQLCode = 0
  1082. IF if_finish THEN
  1083. IF ls_zerook > 0 THEN if_finish = FALSE
  1084. END IF
  1085. FETCH zero_cur INTO :ls_zerook;
  1086. LOOP
  1087. CLOSE zero_cur;
  1088. IF status = 1 AND if_finish THEN
  1089. UPDATE u_request_wfjg
  1090. SET status = 5,
  1091. accomplishdate = getdate(),
  1092. finishemp = :publ_operator
  1093. WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
  1094. And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
  1095. IF commit_transaction.SQLCode <> 0 THEN
  1096. rslt = 0
  1097. arg_msg = "外协申请单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
  1098. GOTO ext
  1099. END IF
  1100. END IF
  1101. IF status = 5 AND NOT if_finish THEN
  1102. UPDATE u_request_wfjg
  1103. SET status = 1,
  1104. accomplishdate = :null_dt,
  1105. finishemp = ''
  1106. WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
  1107. And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
  1108. IF commit_transaction.SQLCode <> 0 THEN
  1109. rslt = 0
  1110. arg_msg = "外协申请单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
  1111. GOTO ext
  1112. END IF
  1113. END IF
  1114. it_newbegin = FALSE
  1115. it_updatebegin = FALSE
  1116. ext:
  1117. IF rslt = 0 THEN
  1118. ROLLBACK USING commit_transaction;
  1119. ELSEIF arg_ifcommit AND rslt = 1 THEN
  1120. COMMIT USING commit_transaction;
  1121. END IF
  1122. p_reset()
  1123. Return (rslt)
  1124. end function
  1125. public function integer audit_2 (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);
  1126. Int rslt = 1
  1127. Long cnt = 0
  1128. Long ll_i
  1129. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  1130. rslt = 0
  1131. GOTO ext
  1132. END IF
  1133. uo_order_ml uo_order
  1134. uo_order = Create uo_order_ml
  1135. IF arg_wfjgid <= 0 THEN
  1136. rslt = 0
  1137. arg_msg = '错误外协计划唯一码'
  1138. GOTO ext
  1139. END IF
  1140. IF getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  1141. rslt = 0
  1142. GOTO ext
  1143. END IF
  1144. IF Status <> 4 THEN
  1145. rslt = 0
  1146. arg_msg = "外协申请单不是在初审状态,操作取消"
  1147. GOTO ext
  1148. END IF
  1149. cnt = 0
  1150. SELECT count(*) INTO :cnt
  1151. FROM u_user
  1152. Where username = :arg_emp Using commit_transaction;
  1153. IF commit_transaction.SQLCode <> 0 THEN
  1154. rslt = 0
  1155. arg_msg = "查询操作失败,操作员!"
  1156. GOTO ext
  1157. END IF
  1158. IF cnt = 0 THEN
  1159. rslt = 0
  1160. arg_msg = "操作员姓名未登记或已取消!"
  1161. GOTO ext
  1162. END IF
  1163. UPDATE u_request_wfjg
  1164. SET secauditrep = :arg_emp,
  1165. secauditdate = getdate(),
  1166. Status = 1
  1167. WHERE wfjgid = :arg_wfjgid
  1168. AND scid = :arg_scid
  1169. And Status = 4 Using commit_transaction;
  1170. IF commit_transaction.SQLCode <> 0 THEN
  1171. rslt = 0
  1172. arg_msg = "外协计划最终审核操作失败"+"~n"+commit_transaction.SQLErrText
  1173. GOTO ext
  1174. END IF
  1175. Int li_ordertype_order,li_ifwfjgorder
  1176. Long ll_mtrlid_order
  1177. FOR ll_i = 1 To it_mxbtmx
  1178. IF wfjgmxmx[ll_i].orderid > 0 THEN
  1179. IF uo_order.f_add_rqbuyqty(scid,wfjgmxmx[ll_i].orderid,wfjgmxmx[ll_i].wrkGrpid,3,&
  1180. wfjgmxmx[ll_i].mtrlid,wfjgmxmx[ll_i].mtrlcode,wfjgmxmx[ll_i].Status,&
  1181. wfjgmxmx[ll_i].woodcode,wfjgmxmx[ll_i].pcode,wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
  1182. rslt = 0
  1183. GOTO ext
  1184. END IF
  1185. SELECT ordertype,mtrlid,ifwforder
  1186. INTO :li_ordertype_order,:ll_mtrlid_order,:li_ifwfjgorder
  1187. FROM u_order_ml
  1188. WHERE u_order_ml.scid = :scid
  1189. AND u_order_ml.orderid = :wfjgmxmx[ll_i].orderid
  1190. Using commit_transaction;
  1191. IF commit_transaction.SQLCode <> 0 THEN
  1192. arg_msg = '查询明细:'+String(wfjgmxmx[ll_i].printid)+',相关生产计划类型失败,'+commit_transaction.SQLErrText
  1193. rslt = 0
  1194. GOTO ext
  1195. END IF
  1196. //更新外协主生产计划已申请数
  1197. If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = wfjgmxmx[ll_i].mtrlid THEN
  1198. IF uo_order.addmxcmpl_rqacmpqty(arg_scid,wfjgmxmx[ll_i].orderid,wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
  1199. arg_msg = '更新行:'+String(ll_i)+','+arg_msg
  1200. rslt = 0
  1201. GOTO ext
  1202. END IF
  1203. END IF
  1204. END IF
  1205. NEXT
  1206. IF uof_update_wfjg_flag(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
  1207. rslt = 0
  1208. GOTO ext
  1209. END IF
  1210. it_newbegin = False
  1211. it_updatebegin = False
  1212. ext:
  1213. IF rslt = 0 THEN
  1214. ROLLBACK Using commit_transaction;
  1215. ELSEIF arg_ifcommit And rslt = 1 THEN
  1216. COMMIT Using commit_transaction;
  1217. END IF
  1218. Destroy uo_order
  1219. Return (rslt)
  1220. end function
  1221. public function integer audit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1222. Int li_flag
  1223. long cnt
  1224. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  1225. rslt = 0
  1226. GOTO ext
  1227. END IF
  1228. IF arg_wfjgid <= 0 THEN
  1229. rslt = 0
  1230. ARG_MSG = '错误单据唯一码'
  1231. GOTO ext
  1232. END IF
  1233. IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  1234. rslt = 0
  1235. GOTO ext
  1236. END IF
  1237. IF Status <> 0 THEN
  1238. rslt = 0
  1239. ARG_MSG = "外协申请单不是待初审状态,操作取消"
  1240. GOTO ext
  1241. END IF
  1242. cnt = 0
  1243. SELECT count(*) INTO :cnt
  1244. FROM u_user
  1245. Where username = :arg_emp USING commit_transaction;
  1246. IF commit_transaction.SQLCode <> 0 THEN
  1247. rslt = 0
  1248. ARG_MSG = "查询操作失败,操作员!"
  1249. GOTO ext
  1250. END IF
  1251. IF cnt = 0 THEN
  1252. rslt = 0
  1253. ARG_MSG = "操作员姓名未登记或已取消!"
  1254. GOTO ext
  1255. END IF
  1256. //更新审核标记
  1257. UPDATE u_request_wfjg
  1258. SET auditrep = :arg_emp,
  1259. auditdate = getdate(),
  1260. status = 4
  1261. WHERE wfjgid = :arg_wfjgid
  1262. AND scid = :arg_scid
  1263. AND status = 0;
  1264. IF sqlca.SQLCode <> 0 THEN
  1265. rslt = 0
  1266. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  1267. GOTO ext
  1268. END IF
  1269. ext:
  1270. IF rslt = 0 THEN
  1271. ROLLBACK;
  1272. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1273. COMMIT;
  1274. END IF
  1275. RETURN rslt
  1276. end function
  1277. public function integer caudit (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1278. Int li_flag,li_ifauto
  1279. Long cnt
  1280. DateTime null_dt
  1281. SetNull(null_dt)
  1282. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  1283. rslt = 0
  1284. GOTO ext
  1285. END IF
  1286. IF arg_wfjgid <= 0 THEN
  1287. rslt = 0
  1288. ARG_MSG = '错误单据唯一码'
  1289. GOTO ext
  1290. END IF
  1291. IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  1292. rslt = 0
  1293. GOTO ext
  1294. END IF
  1295. IF ctmint > 0 THEN
  1296. arg_msg = '单据已截数,不能操作'
  1297. rslt = 0
  1298. GOTO ext
  1299. END IF
  1300. IF arg_ifcheck_auto = 1 THEN
  1301. IF ifauto = 1 THEN
  1302. rslt = 0
  1303. ARG_MSG = '单据为动建立的单据,不可以撤审'
  1304. GOTO ext
  1305. END IF
  1306. END IF
  1307. if status <> 4 then
  1308. arg_msg = '单据不是在初审状态,不可以撤审'
  1309. rslt = 0
  1310. goto ext
  1311. end if
  1312. //cnt = 0
  1313. //SELECT count(*) INTO :cnt
  1314. // FROM u_buytaskmx
  1315. // WHERE scid = :arg_scid
  1316. // AND requestbuyid = :arg_wfjgid;
  1317. //IF sqlca.SQLCode <> 0 THEN
  1318. // ARG_MSG = '查询申购单是否已开订单失败,'+sqlca.SQLErrText
  1319. // rslt = 0
  1320. // GOTO ext
  1321. //END IF
  1322. //
  1323. //IF cnt > 0 THEN
  1324. // ARG_MSG = '申购单已开订单,不能撤审'
  1325. // rslt = 0
  1326. // GOTO ext
  1327. //END IF
  1328. //更新审核标记
  1329. UPDATE u_request_wfjg
  1330. SET auditrep = '',
  1331. auditdate = :null_dt,
  1332. status = 0
  1333. WHERE wfjgid = :arg_wfjgid
  1334. AND scid = :arg_scid
  1335. AND status = 4;
  1336. IF sqlca.SQLCode <> 0 THEN
  1337. rslt = 0
  1338. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  1339. GOTO ext
  1340. END IF
  1341. ext:
  1342. IF rslt = 0 THEN
  1343. ROLLBACK;
  1344. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1345. COMMIT;
  1346. END IF
  1347. RETURN rslt
  1348. end function
  1349. public function integer cancel (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
  1350. //0 FAIL, 1 SUCCESS
  1351. Int rslt = 1
  1352. Long ll_orderid_arr[]
  1353. Long cnt,ll_i
  1354. cnt = 1
  1355. IF arg_wfjgid <= 0 THEN
  1356. rslt = 0
  1357. ARG_MSG = '错误外协申请单唯一码'
  1358. GOTO ext
  1359. END IF
  1360. IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  1361. rslt = 0
  1362. GOTO ext
  1363. END IF
  1364. IF arg_ifcheck_auto = 1 THEN
  1365. IF ifauto = 1 THEN
  1366. rslt = 0
  1367. ARG_MSG = '单据为动建立的单据,不可以删除'
  1368. GOTO ext
  1369. END IF
  1370. END IF
  1371. IF Status <> 0 THEN
  1372. rslt = 0
  1373. ARG_MSG = "外协申请单已经审核,不可以删除"
  1374. GOTO ext
  1375. END IF
  1376. DECLARE cur_mx CURSOR FOR
  1377. SELECT u_request_wfjgmxmx.orderid
  1378. FROM u_request_wfjgmxmx
  1379. WHERE u_request_wfjgmxmx.scid = :arg_scid
  1380. And u_request_wfjgmxmx.wfjgid = :arg_wfjgid
  1381. and u_request_wfjgmxmx.orderid > 0 Using commit_transaction;
  1382. OPEN cur_mx;
  1383. FETCH cur_mx Into :ll_orderid_arr[cnt];
  1384. DO WHILE commit_transaction.SQLCode = 0
  1385. cnt++
  1386. FETCH cur_mx Into :ll_orderid_arr[cnt];
  1387. LOOP
  1388. CLOSE cur_mx;
  1389. cnt = cnt - 1
  1390. DELETE FROM u_request_wfjgMx
  1391. WHERE u_request_wfjgMx.wfjgid = :arg_wfjgid
  1392. And u_request_wfjgMx.scid = :arg_scid Using commit_transaction;
  1393. IF commit_transaction.SQLCode <> 0 THEN
  1394. rslt = 0
  1395. ARG_MSG = "删除外协申请单收货汇总明细操作失败"+"~n"+SQLCA.SQLErrText
  1396. ROLLBACK Using commit_transaction;
  1397. GOTO ext
  1398. END IF
  1399. DELETE FROM u_request_wfjgMxmx
  1400. WHERE u_request_wfjgMxmx.wfjgid = :arg_wfjgid
  1401. And u_request_wfjgmxmx.scid = :arg_scid Using commit_transaction;
  1402. IF commit_transaction.SQLCode <> 0 THEN
  1403. rslt = 0
  1404. ARG_MSG = "删除外协申请单收货明细操作失败"+"~n"+SQLCA.SQLErrText
  1405. ROLLBACK Using commit_transaction;
  1406. GOTO ext
  1407. END IF
  1408. DELETE FROM u_request_wfjgMx_out
  1409. WHERE u_request_wfjgMx_out.wfjgid = :arg_wfjgid
  1410. And u_request_wfjgMx_out.scid = :arg_scid Using commit_transaction;
  1411. IF commit_transaction.SQLCode <> 0 THEN
  1412. rslt = 0
  1413. ARG_MSG = "删除外协申请单发出明细操作失败"+"~n"+SQLCA.SQLErrText
  1414. ROLLBACK Using commit_transaction;
  1415. GOTO ext
  1416. END IF
  1417. DELETE FROM u_request_wfjg
  1418. WHERE u_request_wfjg.wfjgid = :arg_wfjgid
  1419. And u_request_wfjg.scid = :arg_scid Using commit_transaction;
  1420. IF commit_transaction.SQLCode <> 0 THEN
  1421. rslt = 0
  1422. ARG_MSG = "删除外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
  1423. ROLLBACK Using commit_transaction;
  1424. GOTO ext
  1425. END IF
  1426. FOR ll_i = 1 To cnt
  1427. UPDATE u_order_ml
  1428. SET u_Order_ml.wfjg_flag = isnull(uv_order_request_wfjg_flag.flag, 0)
  1429. FROM u_Order_ml LEFT OUTER JOIN
  1430. uv_order_request_wfjg_flag ON
  1431. u_Order_ml.scid = uv_order_request_wfjg_flag.scid AND
  1432. u_Order_ml.OrderID = uv_order_request_wfjg_flag.OrderID
  1433. WHERE u_order_ml.scid = :arg_scid
  1434. And u_order_ml.orderid = :ll_orderid_arr[ll_i] Using commit_transaction;
  1435. IF commit_transaction.SQLCode <> 0 THEN
  1436. rslt = 0
  1437. ARG_MSG = '更新相关生产计划外协申请单状态失败,'+commit_transaction.SQLErrText
  1438. GOTO ext
  1439. END IF
  1440. NEXT
  1441. it_newbegin = False
  1442. it_updatebegin = False
  1443. IF arg_ifcommit And rslt = 1 THEN
  1444. COMMIT Using commit_transaction;
  1445. END IF
  1446. ext:
  1447. p_reset()
  1448. Return (rslt)
  1449. end function
  1450. public function integer caudit_2 (long arg_scid, long arg_wfjgid, any arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1451. Long cnt = 0
  1452. Long ll_i
  1453. DateTime nulldate
  1454. SetNull(nulldate)
  1455. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  1456. rslt = 0
  1457. GOTO ext
  1458. END IF
  1459. uo_order_ml uo_order
  1460. uo_order = Create uo_order_ml
  1461. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  1462. rslt = 0
  1463. GOTO ext
  1464. END IF
  1465. IF arg_wfjgid <= 0 THEN
  1466. rslt = 0
  1467. arg_msg = '错误外协申请单唯一码'
  1468. GOTO ext
  1469. END IF
  1470. IF getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  1471. rslt = 0
  1472. GOTO ext
  1473. END IF
  1474. IF ctmint > 0 THEN
  1475. arg_msg = '单据已截数,不能操作'
  1476. rslt = 0
  1477. GOTO ext
  1478. END IF
  1479. IF arg_ifcheck_auto = 1 THEN
  1480. IF ifauto = 1 THEN
  1481. rslt = 0
  1482. arg_msg = '单据为自动建立的单据,不可以撤审'
  1483. GOTO ext
  1484. END IF
  1485. END IF
  1486. IF Status <> 1 THEN
  1487. rslt = 0
  1488. arg_msg = "外协申请单只有在已审核状态才可以执行撤消审核,请核对"
  1489. GOTO ext
  1490. END IF
  1491. SELECT count(*)
  1492. INTO :cnt
  1493. FROM u_order_wfjgMx
  1494. WHERE ( u_order_wfjgMx.scid = :arg_scid ) AND
  1495. ( u_order_wfjgMx.relwfjgid = :arg_wfjgid ) Using commit_transaction ;
  1496. IF commit_transaction.SQLCode <> 0 THEN
  1497. rslt = 0
  1498. arg_msg = "因网络或其它原因导致查询外协申请单数量操作失败"+"~n"+commit_transaction.SQLErrText
  1499. GOTO ext
  1500. END IF
  1501. IF cnt > 0 THEN
  1502. rslt = 0
  1503. arg_msg = "外协申请单已经有相关外协订单,不可以撤消审核"
  1504. GOTO ext
  1505. END IF
  1506. UPDATE u_request_wfjg
  1507. SET Status = 4,
  1508. secauditrep = '',
  1509. secauditdate = :nulldate
  1510. WHERE wfjgid = :arg_wfjgid
  1511. AND scid = :arg_scid
  1512. And Status = 1 Using commit_transaction ;
  1513. IF commit_transaction.SQLCode <> 0 THEN
  1514. rslt = 0
  1515. arg_msg = "因网络或其它原因导致外协申请单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  1516. GOTO ext
  1517. END IF
  1518. Int li_ordertype_order, li_ifwfjgorder
  1519. Long ll_mtrlid_order
  1520. FOR ll_i = 1 To it_mxbtmx
  1521. IF wfjgmxmx[ll_i].orderid > 0 THEN
  1522. IF uo_order.f_add_rqbuyqty(scid,wfjgmxmx[ll_i].orderid,wfjgmxmx[ll_i].wrkGrpid,3,&
  1523. wfjgmxmx[ll_i].mtrlid,wfjgmxmx[ll_i].mtrlcode,&
  1524. wfjgmxmx[ll_i].Status,wfjgmxmx[ll_i].woodcode,&
  1525. wfjgmxmx[ll_i].pcode,0 - wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
  1526. rslt = 0
  1527. GOTO ext
  1528. END IF
  1529. SELECT ordertype,mtrlid,ifwforder
  1530. INTO :li_ordertype_order,:ll_mtrlid_order,:li_ifwfjgorder
  1531. FROM u_order_ml
  1532. WHERE u_order_ml.scid = :scid
  1533. AND u_order_ml.orderid = :wfjgmxmx[ll_i].orderid
  1534. Using commit_transaction;
  1535. IF commit_transaction.SQLCode <> 0 THEN
  1536. arg_msg = '查询明细:'+String(wfjgmxmx[ll_i].printid)+',相关生产计划类型失败,'+commit_transaction.SQLErrText
  1537. rslt = 0
  1538. GOTO ext
  1539. END IF
  1540. //更新外协主生产计划已申请数
  1541. If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = wfjgmxmx[ll_i].mtrlid THEN
  1542. IF uo_order.addmxcmpl_rqacmpqty(arg_scid,wfjgmxmx[ll_i].orderid,0 - wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
  1543. arg_msg = '更新行:'+String(ll_i)+','+arg_msg
  1544. rslt = 0
  1545. GOTO ext
  1546. END IF
  1547. END IF
  1548. END IF
  1549. NEXT
  1550. IF uof_update_wfjg_flag(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
  1551. rslt = 0
  1552. GOTO ext
  1553. END IF
  1554. it_newbegin = False
  1555. it_updatebegin = False
  1556. ext:
  1557. IF rslt = 0 THEN
  1558. ROLLBACK Using commit_transaction;
  1559. ELSEIF arg_ifcommit And rslt = 1 THEN
  1560. COMMIT Using commit_transaction;
  1561. END IF
  1562. Destroy uo_order
  1563. p_reset()
  1564. Return (rslt)
  1565. end function
  1566. public function integer audit_mx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1567. Int li_flag,li_billtype
  1568. Long ll_sptid
  1569. Long ll_flagmx
  1570. IF arg_wfjgid <= 0 THEN
  1571. rslt = 0
  1572. ARG_MSG = '错误单据唯一码'
  1573. GOTO ext
  1574. END IF
  1575. IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  1576. rslt = 0
  1577. GOTO ext
  1578. END IF
  1579. IF status <> 1 THEN
  1580. rslt = 0
  1581. ARG_MSG = '单据不是在进行状态,不可以审核明细内容'
  1582. GOTO ext
  1583. END IF
  1584. SELECT sptid,flag INTO :ll_sptid,:ll_flagmx
  1585. FROM u_request_wfjgMx
  1586. WHERE scid = :arg_scid
  1587. AND wfjgid = :arg_wfjgid
  1588. AND printid = :arg_printid ;
  1589. IF sqlca.SQLCode <> 0 THEN
  1590. rslt = 0
  1591. ARG_MSG = '查询明细供应商内容失败'+sqlca.SQLErrText
  1592. GOTO ext
  1593. END IF
  1594. IF ll_flagmx = 1 THEN
  1595. rslt = 0
  1596. ARG_MSG = '只在在待供应商审核的状态下才能执行供应商审核'
  1597. GOTO ext
  1598. END IF
  1599. IF ll_sptid = 0 THEN
  1600. rslt = 0
  1601. ARG_MSG = '没有指定供应商,不能执行明细审核'
  1602. GOTO ext
  1603. END IF
  1604. //更新审核标记
  1605. UPDATE u_request_wfjgMx
  1606. SET auditrep = :arg_opemp,
  1607. auditdate = getdate(),
  1608. flag = 1
  1609. WHERE wfjgid = :arg_wfjgid
  1610. AND scid = :arg_scid
  1611. AND printid = :arg_printid
  1612. AND flag = 0;
  1613. IF sqlca.SQLCode <> 0 THEN
  1614. rslt = 0
  1615. ARG_MSG = "因网络或其它原因导致单据明细审核操作失败"+"~n"+sqlca.SQLErrText
  1616. GOTO ext
  1617. END IF
  1618. ext:
  1619. IF rslt = 0 THEN
  1620. ROLLBACK;
  1621. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1622. COMMIT;
  1623. END IF
  1624. RETURN rslt
  1625. end function
  1626. public function integer caudit_mx (long arg_scid, long arg_wfjgid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1627. Int li_flag,li_ifauto,li_billtype
  1628. Long cnt
  1629. DateTime null_dt
  1630. SetNull(null_dt)
  1631. IF arg_wfjgid <= 0 THEN
  1632. rslt = 0
  1633. ARG_MSG = '错误单据唯一码'
  1634. GOTO ext
  1635. END IF
  1636. SELECT flag INTO :li_flag
  1637. FROM u_request_wfjgMx
  1638. WHERE wfjgid = :arg_wfjgid
  1639. AND scid = :arg_scid
  1640. AND printid = :arg_printid;
  1641. IF sqlca.SQLCode <> 0 THEN
  1642. rslt = 0
  1643. ARG_MSG = '查询外协申请单明细审核状态失败'+sqlca.SQLErrText
  1644. GOTO ext
  1645. END IF
  1646. IF li_flag = 0 THEN
  1647. rslt = 0
  1648. ARG_MSG = '外协申请单明细只有在已审核状态下才能执行撤审'
  1649. GOTO ext
  1650. END IF
  1651. cnt = 0
  1652. SELECT count(*) INTO :cnt
  1653. FROM u_order_wfjgmx
  1654. WHERE scid = :arg_scid
  1655. AND relwfjgid = :arg_wfjgid
  1656. AND relprintid = :arg_printid;
  1657. IF sqlca.SQLCode <> 0 THEN
  1658. ARG_MSG = '查询外协申请单明细是否已开订单失败,'+sqlca.SQLErrText
  1659. rslt = 0
  1660. GOTO ext
  1661. END IF
  1662. IF cnt > 0 THEN
  1663. ARG_MSG = '该外协申请单明细已开订单,不能执行明细撤审'
  1664. rslt = 0
  1665. GOTO ext
  1666. END IF
  1667. //更新审核标记
  1668. UPDATE u_request_wfjgMx
  1669. SET auditrep = '',
  1670. auditdate = :null_dt,
  1671. flag = 0
  1672. WHERE wfjgid = :arg_wfjgid
  1673. AND scid = :arg_scid
  1674. AND printid = :arg_printid
  1675. AND flag = 1;
  1676. IF sqlca.SQLCode <> 0 THEN
  1677. rslt = 0
  1678. ARG_MSG = "因网络或其它原因导致单据明细撤审操作失败"+"~n"+sqlca.SQLErrText
  1679. GOTO ext
  1680. END IF
  1681. ext:
  1682. IF rslt = 0 THEN
  1683. ROLLBACK;
  1684. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1685. COMMIT;
  1686. END IF
  1687. RETURN rslt
  1688. end function
  1689. public function integer stopmx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1690. Int li_stopflag
  1691. String ls_outtype
  1692. DateTime null_dt
  1693. Decimal ld_notconsignedqty
  1694. Int ll_flag,ll_billtype
  1695. SetNull(null_dt)
  1696. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  1697. rslt = 0
  1698. GOTO ext
  1699. END IF
  1700. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  1701. rslt = 0
  1702. GOTO ext
  1703. END IF
  1704. IF status <> 1 THEN
  1705. arg_msg = '外协申请单只能在进行状态下才能操作'
  1706. rslt = 0
  1707. GOTO ext
  1708. END IF
  1709. SELECT stopflag
  1710. INTO :li_stopflag
  1711. FROM u_request_wfjgMx
  1712. WHERE scid = :arg_scid
  1713. AND wfjgid = :arg_wfjgid
  1714. AND printid = :arg_printid;
  1715. IF sqlca.SQLCode <> 0 THEN
  1716. arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
  1717. rslt = 0
  1718. GOTO ext
  1719. END IF
  1720. IF arg_flag = 0 THEN
  1721. IF li_stopflag = 0 THEN
  1722. arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
  1723. rslt = 0
  1724. GOTO ext
  1725. END IF
  1726. ELSE
  1727. IF li_stopflag = 1 THEN
  1728. arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
  1729. rslt = 0
  1730. GOTO ext
  1731. END IF
  1732. END IF
  1733. IF arg_flag = 1 THEN
  1734. SELECT u_request_wfjgMx.uQty - u_request_wfjgMx.consignedqty
  1735. INTO :ld_notconsignedqty
  1736. FROM u_request_wfjgMx
  1737. WHERE scid = :arg_scid
  1738. AND wfjgid = :arg_wfjgid
  1739. AND printid = :arg_printid;
  1740. IF sqlca.SQLCode <> 0 THEN
  1741. arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
  1742. rslt = 0
  1743. GOTO ext
  1744. END IF
  1745. IF ld_notconsignedqty <= 0 THEN
  1746. arg_msg = '明细物料'+arg_mtrlcode+'已完成订货,不能中止'
  1747. rslt = 0
  1748. GOTO ext
  1749. END IF
  1750. END IF
  1751. IF arg_flag = 0 THEN
  1752. UPDATE u_request_wfjgMx
  1753. SET stopflag = 0,
  1754. stopemp = '',
  1755. stopdate = :null_dt,
  1756. stopreason = ''
  1757. WHERE scid = :arg_scid
  1758. AND wfjgid = :arg_wfjgid
  1759. AND printid = :arg_printid;
  1760. ELSE
  1761. UPDATE u_request_wfjgMx
  1762. SET stopflag = 1,
  1763. stopemp = :publ_operator,
  1764. stopdate = getdate(),
  1765. stopreason = :arg_stopreason
  1766. WHERE scid = :arg_scid
  1767. AND wfjgid = :arg_wfjgid
  1768. AND printid = :arg_printid;
  1769. END IF
  1770. IF sqlca.SQLCode <> 0 THEN
  1771. arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
  1772. rslt = 0
  1773. GOTO ext
  1774. END IF
  1775. IF trycmplwfjg(arg_scid,arg_wfjgid,arg_msg,FALSE) = 0 THEN
  1776. rslt = 0
  1777. GOTO ext
  1778. END IF
  1779. ext:
  1780. IF rslt = 0 THEN
  1781. ROLLBACK;
  1782. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1783. COMMIT;
  1784. END IF
  1785. RETURN rslt
  1786. end function
  1787. public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_qty, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, string arg_jgdscrp, string arg_status, string arg_woodcode, string arg_pcode, long arg_wrkgrpid, string arg_pfcode, string arg_plancode, string arg_unit, decimal arg_uqty, decimal arg_rate);s_order_wfjgmx s_mx
  1788. s_mx.iforder = arg_iforder
  1789. s_mx.orderid = arg_orderid
  1790. s_mx.ordercode = arg_ordercode
  1791. s_mx.mtrlid = arg_mtrlid
  1792. s_mx.qty = arg_qty
  1793. s_mx.dscrp = arg_dscrp
  1794. s_mx.mtrlcode = arg_mtrlcode
  1795. s_mx.printid = arg_printid
  1796. s_mx.requiredate = arg_requiredate
  1797. s_mx.jgdscrp = arg_jgdscrp
  1798. s_mx.status = arg_status
  1799. s_mx.woodcode = arg_woodcode
  1800. s_mx.pcode = arg_pcode
  1801. s_mx.wrkgrpid = arg_wrkgrpid
  1802. s_mx.pfcode = arg_pfcode
  1803. s_mx.plancode = arg_plancode
  1804. s_mx.unit = arg_unit
  1805. s_mx.uqty = arg_uqty
  1806. s_mx.rate = arg_rate
  1807. s_mx.sonmtrlid = 0
  1808. return acceptmx(s_mx, arg_msg)
  1809. /*
  1810. Int rslt = 1
  1811. Long cnt = 0,ls_i,ll_j
  1812. Int li_mtrlkind
  1813. Long ll_sptmode,ll_sptid,ll_defsptid
  1814. String ls_unit
  1815. If it_newbegin = False And it_updatebegin = False Then
  1816. rslt = 0
  1817. arg_msg = "非编辑状态不可以使用,操作取消"
  1818. Goto ext
  1819. End If
  1820. If uo_option_requestwfjg_hz = -1000 Then
  1821. arg_msg = '选项:[121]外协申请单汇总外协,读取初始默认值失败,操作取消!'
  1822. rslt = 0
  1823. Goto ext
  1824. End If
  1825. If uo_option_wfjg_checkdate = -1000 Then
  1826. arg_msg = '选项:[312]外协申请单保存不检查交货日期,读取初始默认值失败,操作取消!'
  1827. rslt = 0
  1828. Goto ext
  1829. End If
  1830. //清除空值
  1831. If IsNull(arg_iforder) Then arg_iforder = 0
  1832. If IsNull(arg_orderid) Then arg_orderid = 0
  1833. If IsNull(arg_ordercode) Then arg_ordercode = ''
  1834. If IsNull(arg_mtrlid) Then arg_mtrlid = 0
  1835. If IsNull(arg_qty) Then arg_qty = 0
  1836. If IsNull(arg_pfcode) Then arg_pfcode = ''
  1837. If IsNull(arg_dscrp) Then arg_dscrp = ''
  1838. If IsNull(arg_mtrlcode) Then arg_mtrlcode = ''
  1839. If IsNull(arg_printid) Then arg_printid = 0
  1840. If IsNull(arg_jgdscrp) Then arg_jgdscrp = ''
  1841. If IsNull(arg_status) Then arg_status = ''
  1842. If IsNull(arg_woodcode) Then arg_woodcode = ''
  1843. If IsNull(arg_pcode) Then arg_pcode = ''
  1844. If IsNull(arg_requiredate) Then arg_requiredate = DateTime(Date('1900-01-01'),Time(0))
  1845. If IsNull(arg_uqty) Then arg_uqty = 0
  1846. If IsNull(arg_unit) Then arg_unit = ''
  1847. If IsNull(arg_rate) Then arg_rate = 1
  1848. If arg_mtrlid = 0 Or (arg_qty = 0 and arg_uqty = 0) Then
  1849. rslt = 1
  1850. Goto ext
  1851. End If
  1852. Select mtrlkind,sptmode,dftsptid,unit
  1853. Into :li_mtrlkind,:ll_sptmode,:ll_sptid,:ls_unit
  1854. From u_mtrldef
  1855. Where u_mtrldef.mtrlid = :arg_mtrlid
  1856. Using commit_transaction;
  1857. If commit_transaction.SQLCode <> 0 Then
  1858. rslt = 0
  1859. arg_msg = "查询物料:"+arg_mtrlcode+',MRP属性失败,'+commit_transaction.SQLErrText
  1860. Goto ext
  1861. End If
  1862. //处理默认供应商
  1863. If ll_sptmode = 0 Then //无默认供应商
  1864. ll_defsptid = 0
  1865. ElseIf ll_sptmode = 1 Then //按主供应商
  1866. ll_defsptid = ll_sptid
  1867. Else //自动带最低价供应商
  1868. Select TOP 1 sptid Into :ll_sptid
  1869. From u_spt_price
  1870. Where (mtrlid = :arg_mtrlid)
  1871. And (status = :arg_status)
  1872. And (unit = :ls_unit)
  1873. Order By fprice;
  1874. If sqlca.SQLCode <> 0 Then
  1875. ll_sptid = 0
  1876. End If
  1877. ll_defsptid = ll_sptid
  1878. End If
  1879. If uo_option_wfjg_checkdate = 0 Then
  1880. If ifauto = 0 Then
  1881. If arg_requiredate <> DateTime(Date('1900-01-01'),Time(0)) Then
  1882. If Requiredate > arg_requiredate Then
  1883. arg_msg = '交货日期不能在订货日期前'
  1884. rslt = 0
  1885. Goto ext
  1886. End If
  1887. End If
  1888. End If
  1889. End If
  1890. If arg_iforder = 1 Then
  1891. If li_mtrlkind = 1 Then
  1892. arg_msg = '物料:'+arg_mtrlcode+',MRP属性设为不按计划,所以不能选择计划'
  1893. rslt = 0
  1894. Goto ext
  1895. End If
  1896. If arg_orderid = 0 Then
  1897. arg_msg = '请先择相应的计划'
  1898. rslt = 0
  1899. Goto ext
  1900. End If
  1901. End If
  1902. For ls_i = 1 To it_mxbtmx //合并重复项
  1903. If wfjgmxmx[ls_i].mtrlid = arg_mtrlid And &
  1904. wfjgmxmx[ls_i].orderid = arg_orderid And &
  1905. wfjgmxmx[ls_i].status = arg_status And &
  1906. wfjgmxmx[ls_i].woodcode = arg_woodcode And &
  1907. wfjgmxmx[ls_i].Requiredate = arg_requiredate And &
  1908. wfjgmxmx[ls_i].wrkGrpid = arg_wrkGrpid And &
  1909. wfjgmxmx[ls_i].pcode = arg_pcode And &
  1910. wfjgmxmx[ls_i].pfcode = arg_pfcode Then
  1911. wfjgmxmx[ls_i].qty = wfjgmxmx[ls_i].qty+arg_qty
  1912. wfjgmxmx[ls_i].uqty = wfjgmxmx[ls_i].uqty+arg_uqty
  1913. rslt = 1
  1914. Goto _next
  1915. End If
  1916. Next
  1917. //写入内容
  1918. it_mxbtmx++
  1919. wfjgmxmx[it_mxbtmx].iforder = arg_iforder
  1920. wfjgmxmx[it_mxbtmx].orderid = arg_orderid
  1921. wfjgmxmx[it_mxbtmx].ordercode = arg_ordercode
  1922. wfjgmxmx[it_mxbtmx].mtrlid = arg_mtrlid
  1923. wfjgmxmx[it_mxbtmx].qty = arg_qty
  1924. wfjgmxmx[it_mxbtmx].dscrp = arg_dscrp
  1925. wfjgmxmx[it_mxbtmx].mtrlcode = arg_mtrlcode
  1926. wfjgmxmx[it_mxbtmx].printid = arg_printid
  1927. wfjgmxmx[it_mxbtmx].Requiredate = arg_requiredate
  1928. wfjgmxmx[it_mxbtmx].jgdscrp = arg_jgdscrp
  1929. wfjgmxmx[it_mxbtmx].status = arg_status
  1930. wfjgmxmx[it_mxbtmx].woodcode = arg_woodcode
  1931. wfjgmxmx[it_mxbtmx].pcode = arg_pcode
  1932. wfjgmxmx[it_mxbtmx].wrkGrpid = arg_wrkGrpid
  1933. wfjgmxmx[it_mxbtmx].pfcode = arg_pfcode
  1934. wfjgmxmx[it_mxbtmx].sptid = ll_defsptid
  1935. wfjgmxmx[it_mxbtmx].plancode = arg_plancode
  1936. wfjgmxmx[it_mxbtmx].unit = arg_unit
  1937. wfjgmxmx[it_mxbtmx].uqty = arg_uqty
  1938. wfjgmxmx[it_mxbtmx].rate = arg_rate
  1939. _next:
  1940. If uo_option_requestwfjg_hz = 1 Then
  1941. For ll_j = 1 To it_mxbt
  1942. If wfjgmx[ll_j].mtrlid = arg_mtrlid And &
  1943. wfjgmx[ll_j].status = arg_status And &
  1944. wfjgmx[ll_j].woodcode = arg_woodcode And &
  1945. Date(wfjgmx[ll_j].Requiredate) = Date(arg_requiredate) And &
  1946. wfjgmx[ll_j].unit = arg_unit and &
  1947. wfjgmx[ll_j].pcode = arg_pcode And &
  1948. wfjgmx[ll_j].pfcode = arg_pfcode And &
  1949. wfjgmx[ll_j].plancode = arg_plancode Then
  1950. wfjgmx[ll_j].qty = wfjgmx[ll_j].qty+arg_qty
  1951. wfjgmx[ll_j].uqty = wfjgmx[ll_j].uqty+arg_uqty
  1952. wfjgmx[ll_j].iforder = 0
  1953. wfjgmx[ll_j].ordercode = ''
  1954. wfjgmx[ll_j].orderid = 0
  1955. wfjgmx[ll_j].wrkGrpid = 0
  1956. rslt = 1
  1957. Goto ext
  1958. End If
  1959. Next
  1960. End If
  1961. it_mxbt++
  1962. wfjgmx[it_mxbt].iforder = arg_iforder
  1963. wfjgmx[it_mxbt].orderid = arg_orderid
  1964. wfjgmx[it_mxbt].ordercode = arg_ordercode
  1965. wfjgmx[it_mxbt].mtrlid = arg_mtrlid
  1966. wfjgmx[it_mxbt].qty = arg_qty
  1967. wfjgmx[it_mxbt].dscrp = arg_dscrp
  1968. wfjgmx[it_mxbt].mtrlcode = arg_mtrlcode
  1969. wfjgmx[it_mxbt].printid = arg_printid
  1970. wfjgmx[it_mxbt].Requiredate = arg_requiredate
  1971. wfjgmx[it_mxbt].jgdscrp = arg_jgdscrp
  1972. wfjgmx[it_mxbt].status = arg_status
  1973. wfjgmx[it_mxbt].woodcode = arg_woodcode
  1974. wfjgmx[it_mxbt].pcode = arg_pcode
  1975. wfjgmx[it_mxbt].wrkGrpid = arg_wrkGrpid
  1976. wfjgmx[it_mxbt].pfcode = arg_pfcode
  1977. wfjgmx[it_mxbt].sptid = ll_defsptid
  1978. wfjgmx[it_mxbt].plancode = arg_plancode
  1979. wfjgmx[it_mxbt].unit = arg_unit
  1980. wfjgmx[it_mxbt].uqty = arg_uqty
  1981. wfjgmx[it_mxbt].rate = arg_rate
  1982. ext:
  1983. If rslt = 0 Then p_clearmx()
  1984. Return(rslt)
  1985. */
  1986. end function
  1987. public function integer acceptmx_out (long arg_mtrlid, decimal arg_qty, string arg_mtrlcode, ref string arg_msg, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_uqty, decimal arg_rate);s_order_wfjgmx_out s_mx
  1988. s_mx.mtrlid = arg_mtrlid
  1989. s_mx.qty = arg_qty
  1990. s_mx.mtrlcode = arg_mtrlcode
  1991. s_mx.printid = arg_printid
  1992. s_mx.status = arg_status
  1993. s_mx.woodcode = arg_woodcode
  1994. s_mx.pcode = arg_pcode
  1995. s_mx.unit = arg_unit
  1996. s_mx.uqty = arg_uqty
  1997. s_mx.rate = arg_rate
  1998. return acceptmx_out(s_mx, arg_msg)
  1999. /*
  2000. //return 0 fail 1 success
  2001. // 函数增加一个明细项
  2002. Long rslt = 1,cnt = 0,ls_i
  2003. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  2004. rslt = 0
  2005. arg_msg = "非编辑状态不可以使用,操作取消"
  2006. GOTO ext
  2007. END IF
  2008. //清除空值
  2009. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  2010. IF IsNull(arg_qty) THEN arg_qty = 0
  2011. IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
  2012. IF IsNull(arg_printid) THEN arg_printid = 0
  2013. IF IsNull(arg_status) THEN arg_status = ''
  2014. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  2015. IF IsNull(arg_pcode) THEN arg_pcode = ''
  2016. If IsNull(arg_uqty) Then arg_uqty = 0
  2017. If IsNull(arg_unit) Then arg_unit = ''
  2018. If IsNull(arg_rate) Then arg_rate = 1
  2019. IF arg_mtrlid = 0 OR (arg_qty = 0 and arg_uqty = 0) THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
  2020. rslt = 1
  2021. GOTO ext
  2022. END IF
  2023. //检查物料id
  2024. SELECT count(*)
  2025. INTO :cnt
  2026. FROM u_mtrldef
  2027. Where u_mtrldef.mtrlid = :arg_mtrlid ;
  2028. IF sqlca.SQLCode <> 0 THEN
  2029. rslt = 0
  2030. arg_msg = "查询操作失败,物料编号"
  2031. GOTO ext
  2032. END IF
  2033. IF cnt = 0 THEN
  2034. rslt = 0
  2035. arg_msg = "错误的产品编号: "+String(arg_mtrlcode)
  2036. GOTO ext
  2037. END IF
  2038. FOR ls_i = 1 TO it_mxbt_out //合并重复项
  2039. IF wfjgmx_out[ls_i].mtrlid = arg_mtrlid AND &
  2040. wfjgmx_out[ls_i].status = arg_status AND &
  2041. wfjgmx_out[ls_i].woodcode = arg_woodcode AND &
  2042. wfjgmx_out[ls_i].pcode = arg_pcode THEN
  2043. wfjgmx_out[ls_i].qty = wfjgmx_out[ls_i].qty+arg_qty
  2044. wfjgmx_out[ls_i].uqty = wfjgmx_out[ls_i].uqty+arg_uqty
  2045. rslt = 1
  2046. GOTO ext
  2047. END IF
  2048. NEXT
  2049. //写入内容
  2050. it_mxbt_out++
  2051. wfjgmx_out[it_mxbt_out].mtrlid = arg_mtrlid
  2052. wfjgmx_out[it_mxbt_out].qty = arg_qty
  2053. wfjgmx_out[it_mxbt_out].mtrlcode = arg_mtrlcode
  2054. wfjgmx_out[it_mxbt_out].printid = arg_printid
  2055. wfjgmx_out[it_mxbt_out].status = arg_status
  2056. wfjgmx_out[it_mxbt_out].woodcode = arg_woodcode
  2057. wfjgmx_out[it_mxbt_out].pcode = arg_pcode
  2058. wfjgmx_out[it_mxbt_out].unit = arg_unit
  2059. wfjgmx_out[it_mxbt_out].uqty = arg_uqty
  2060. wfjgmx_out[it_mxbt_out].rate = arg_rate
  2061. ext:
  2062. IF rslt = 0 THEN p_clearmx()
  2063. Return(rslt)
  2064. */
  2065. end function
  2066. public function integer wasteqty (long arg_scid, decimal arg_wasteqty, long arg_wfjgid, long arg_printid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  2067. Decimal lde_uqty,lde_consignedqty
  2068. //IF arg_wfjgid <= 0 THEN
  2069. // rslt = 0
  2070. // ARG_MSG = '错误外加工计划唯一码'
  2071. // GOTO ext
  2072. //END IF
  2073. //SELECT count(*)
  2074. // INTO :cnt
  2075. // FROM u_order_wfjgmx
  2076. // WHERE u_order_wfjgmx.scid = :arg_scid AND
  2077. // u_order_wfjgmx.wfjgid = :arg_wfjgid AND
  2078. // u_order_wfjgmx.printid = :arg_printid USING commit_transaction;
  2079. //IF commit_transaction.SQLCode <> 0 THEN
  2080. // rslt = 0
  2081. // ARG_MSG = "查询外加工明细操作失败!在物料"+String(arg_mtrlcode)
  2082. // GOTO ext
  2083. //END IF
  2084. //IF cnt = 0 THEN
  2085. // rslt = 0
  2086. // ARG_MSG = "外加工明细不存在,在物料!"+String(arg_mtrlcode)
  2087. // GOTO ext
  2088. //END IF
  2089. //
  2090. //SELECT u_order_wfjgMx.uqty,
  2091. // u_order_wfjgMx.consignedqty + u_order_wfjgMx.wasteqty
  2092. // INTO :lde_uqty,
  2093. // :lde_consignedqty
  2094. // FROM u_order_wfjgMx
  2095. // WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid ) AND
  2096. // ( u_order_wfjgMx.scid = :arg_scid ) AND
  2097. // ( u_order_wfjgMx.printid = :arg_printid ) USING commit_transaction;
  2098. //IF commit_transaction.SQLCode <> 0 THEN
  2099. // rslt = 0
  2100. // ARG_MSG = "因网络或错误物料编码["+arg_mtrlcode+"]导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
  2101. // GOTO ext
  2102. //END IF
  2103. //
  2104. //IF lde_uqty < lde_consignedqty + arg_wasteqty THEN
  2105. // rslt = 0
  2106. // ARG_MSG = "物料["+arg_mtrlcode+"]的未完成数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0###')+",不能入库"+String(arg_wasteqty,'#,##0.0#')
  2107. // GOTO ext
  2108. //END IF
  2109. //
  2110. //UPDATE u_order_wfjgmx
  2111. // SET u_order_wfjgmx.wasteqty = u_order_wfjgmx.wasteqty + :arg_wasteqty
  2112. // WHERE u_order_wfjgmx.scid = :arg_scid AND
  2113. // u_order_wfjgmx.wfjgid = :arg_wfjgid AND
  2114. // u_order_wfjgmx.printid = :arg_printid USING commit_transaction;
  2115. //IF commit_transaction.SQLCode <> 0 THEN
  2116. // rslt = 0
  2117. // ARG_MSG = "因网络或其它原因导致更新外加工计划损耗操作失败"+"~n"+commit_transaction.SQLErrText
  2118. // GOTO ext
  2119. //END IF
  2120. //
  2121. //
  2122. //ext:
  2123. //IF rslt = 0 THEN
  2124. // ROLLBACK USING commit_transaction;
  2125. //ELSEIF arg_ifcommit and rslt = 1 THEN
  2126. // COMMIT USING commit_transaction;
  2127. //END IF
  2128. Return (rslt)
  2129. end function
  2130. public function integer stopbuytask (long arg_scid, long arg_wfjgid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  2131. IF arg_wfjgid <= 0 THEN
  2132. rslt = 0
  2133. ARG_MSG = '错误外协申请单唯一码'
  2134. GOTO ext
  2135. END IF
  2136. IF f_aps_mrp_cklock(arg_scid,ARG_MSG) = 0 THEN
  2137. rslt = 0
  2138. GOTO ext
  2139. END IF
  2140. IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
  2141. rslt = 0
  2142. GOTO ext
  2143. END IF
  2144. IF Status <> 1 THEN
  2145. rslt = 0
  2146. ARG_MSG = "外协申请单只有在进行状态才可以执行终止,请核对"
  2147. GOTO ext
  2148. END IF
  2149. arg_stopreason = Trim(arg_stopreason)
  2150. IF arg_stopreason = '' THEN
  2151. rslt = 0
  2152. ARG_MSG = "请输入终止原因"
  2153. GOTO ext
  2154. END IF
  2155. UPDATE u_request_wfjg
  2156. SET Status = 3,
  2157. accomplishdate = getdate(),
  2158. stopemp = :publ_operator,
  2159. stopreason = :arg_stopreason
  2160. WHERE wfjgid = :arg_wfjgid
  2161. And scid = :arg_scid Using commit_transaction ;
  2162. IF commit_transaction.SQLCode <> 0 THEN
  2163. rslt = 0
  2164. ARG_MSG = "因网络或其它原因导致终止外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
  2165. ROLLBACK Using commit_transaction;
  2166. GOTO ext
  2167. END IF
  2168. it_newbegin = False
  2169. it_updatebegin = False
  2170. ext:
  2171. IF arg_ifcommit And rslt = 1 THEN
  2172. COMMIT Using commit_transaction;
  2173. END IF
  2174. p_reset()
  2175. Return (rslt)
  2176. end function
  2177. public function integer stopqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, string arg_stopreason, ref string arg_msg, boolean arg_commit);
  2178. Int rslt = 1
  2179. Int li_flag, li_billtype
  2180. DateTime null_dt
  2181. Decimal ld_notconsignedqty, lde_stopqty
  2182. DateTime server_datetime
  2183. String ls_stopemp
  2184. SELECT Top 1 getdate() Into :server_datetime From u_user Using sqlca;
  2185. IF sqlca.SQLCode <> 0 THEN
  2186. rslt = 0
  2187. arg_msg = "查询操作失败,日期 "
  2188. GOTO ext
  2189. END IF
  2190. IF IsNull(arg_stopqty) THEN arg_stopqty = 0
  2191. IF arg_stopqty < 0 THEN
  2192. arg_msg = '订单终止数不能少于0,请检查'
  2193. rslt = 0
  2194. GOTO ext
  2195. END IF
  2196. IF arg_stopqty = 0 THEN
  2197. SetNull(server_datetime)
  2198. ls_stopemp = ''
  2199. ELSE
  2200. ls_stopemp = publ_operator
  2201. END IF
  2202. SetNull(null_dt)
  2203. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  2204. rslt = 0
  2205. GOTO ext
  2206. END IF
  2207. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  2208. rslt = 0
  2209. GOTO ext
  2210. END IF
  2211. IF status <> 1 And status <> 5 THEN
  2212. arg_msg = '外协申请单只能在进行状态或自动完成状态才能操作'
  2213. rslt = 0
  2214. GOTO ext
  2215. END IF
  2216. SELECT uQty - consignedqty,
  2217. stopqty
  2218. INTO :ld_notconsignedqty,
  2219. :lde_stopqty
  2220. FROM u_request_wfjgMx
  2221. WHERE scid = :arg_scid
  2222. AND wfjgid = :arg_wfjgid
  2223. And printid = :arg_printid Using sqlca ;
  2224. IF sqlca.SQLCode <> 0 THEN
  2225. arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
  2226. rslt = 0
  2227. GOTO ext
  2228. END IF
  2229. IF arg_stopqty > ld_notconsignedqty THEN
  2230. arg_msg = '明细物料'+arg_mtrlcode+'未订货数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能终止:'+String(arg_stopqty,'#,##0.##########')
  2231. rslt = 0
  2232. GOTO ext
  2233. END IF
  2234. UPDATE u_request_wfjgMx
  2235. SET stopqty = :arg_stopqty,
  2236. stopemp = :ls_stopemp,
  2237. stopdate = :server_datetime,
  2238. stopreason = :arg_stopreason
  2239. WHERE scid = :arg_scid
  2240. AND wfjgid = :arg_wfjgid
  2241. And printid = :arg_printid Using sqlca ;
  2242. IF sqlca.SQLCode <> 0 THEN
  2243. arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
  2244. rslt = 0
  2245. GOTO ext
  2246. END IF
  2247. IF trycmplwfjg(arg_scid,arg_wfjgid,arg_msg,FALSE) = 0 THEN
  2248. rslt = 0
  2249. GOTO ext
  2250. END IF
  2251. ext:
  2252. IF rslt = 0 THEN
  2253. ROLLBACK Using sqlca ;
  2254. ELSEIF rslt = 1 And arg_commit THEN
  2255. COMMIT Using sqlca ;
  2256. END IF
  2257. RETURN rslt
  2258. end function
  2259. public function integer uof_update_wfjg_flag (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  2260. UPDATE u_Order_ml
  2261. SET u_Order_ml.wfjg_flag = isnull(uv_order_request_wfjg_flag.flag,0)
  2262. FROM u_request_wfjgmxmx INNER JOIN
  2263. uv_order_request_wfjg_flag ON
  2264. u_request_wfjgmxmx.scid = uv_order_request_wfjg_flag.scid AND
  2265. u_request_wfjgmxmx.orderid = uv_order_request_wfjg_flag.OrderID INNER JOIN
  2266. u_Order_ml ON uv_order_request_wfjg_flag.scid = u_Order_ml.scid AND
  2267. uv_order_request_wfjg_flag.OrderID = u_Order_ml.OrderID
  2268. WHERE u_request_wfjgmxmx.scid = :arg_scid
  2269. And u_request_wfjgmxmx.wfjgid = :arg_wfjgid Using commit_transaction;
  2270. IF commit_transaction.SQLCode <> 0 THEN
  2271. rslt = 0
  2272. arg_msg = '更新相关生产计划外协申请单状态失败,'+commit_transaction.SQLErrText
  2273. GOTO ext
  2274. END IF
  2275. ext:
  2276. IF rslt = 0 THEN
  2277. ROLLBACK Using commit_transaction;
  2278. ELSEIF rslt = 1 And arg_ifcommit THEN
  2279. COMMIT Using commit_transaction;
  2280. END IF
  2281. RETURN rslt
  2282. end function
  2283. public function integer acceptmx (s_order_wfjgmx s_mx, ref string arg_msg);Int rslt = 1
  2284. Long cnt = 0,ls_i,ll_j
  2285. Int li_mtrlkind
  2286. Long ll_sptmode,ll_sptid,ll_defsptid
  2287. String ls_unit
  2288. If it_newbegin = False And it_updatebegin = False Then
  2289. rslt = 0
  2290. arg_msg = "非编辑状态不可以使用,操作取消"
  2291. Goto ext
  2292. End If
  2293. If uo_option_requestwfjg_hz = -1000 Then
  2294. arg_msg = '选项:[121]外协申请单汇总外协,读取初始默认值失败,操作取消!'
  2295. rslt = 0
  2296. Goto ext
  2297. End If
  2298. If uo_option_wfjg_checkdate = -1000 Then
  2299. arg_msg = '选项:[312]外协申请单保存不检查交货日期,读取初始默认值失败,操作取消!'
  2300. rslt = 0
  2301. Goto ext
  2302. End If
  2303. //清除空值
  2304. If IsNull(s_mx.iforder) Then s_mx.iforder = 0
  2305. If IsNull(s_mx.orderid) Then s_mx.orderid = 0
  2306. If IsNull(s_mx.ordercode) Then s_mx.ordercode = ''
  2307. If IsNull(s_mx.mtrlid) Then s_mx.mtrlid = 0
  2308. If IsNull(s_mx.qty) Then s_mx.qty = 0
  2309. If IsNull(s_mx.pfcode) Then s_mx.pfcode = ''
  2310. If IsNull(s_mx.dscrp) Then s_mx.dscrp = ''
  2311. If IsNull(s_mx.mtrlcode) Then s_mx.mtrlcode = ''
  2312. If IsNull(s_mx.printid) Then s_mx.printid = 0
  2313. If IsNull(s_mx.jgdscrp) Then s_mx.jgdscrp = ''
  2314. If IsNull(s_mx.status) Then s_mx.status = ''
  2315. If IsNull(s_mx.woodcode) Then s_mx.woodcode = ''
  2316. If IsNull(s_mx.pcode) Then s_mx.pcode = ''
  2317. If IsNull(s_mx.requiredate) Then s_mx.requiredate = DateTime(Date('1900-01-01'),Time(0))
  2318. If IsNull(s_mx.uqty) Then s_mx.uqty = 0
  2319. If IsNull(s_mx.unit) Then s_mx.unit = ''
  2320. If IsNull(s_mx.rate) Then s_mx.rate = 1
  2321. If IsNull(s_mx.sonmtrlid) Then s_mx.sonmtrlid = 0
  2322. If s_mx.mtrlid = 0 Or (s_mx.qty = 0 and s_mx.uqty = 0) Then
  2323. rslt = 1
  2324. Goto ext
  2325. End If
  2326. Select mtrlkind,sptmode,dftsptid,unit
  2327. Into :li_mtrlkind,:ll_sptmode,:ll_sptid,:ls_unit
  2328. From u_mtrldef
  2329. Where u_mtrldef.mtrlid = :s_mx.mtrlid
  2330. Using commit_transaction;
  2331. If commit_transaction.SQLCode <> 0 Then
  2332. rslt = 0
  2333. arg_msg = "查询物料:"+s_mx.mtrlcode+',MRP属性失败,'+commit_transaction.SQLErrText
  2334. Goto ext
  2335. End If
  2336. //处理默认供应商
  2337. If ll_sptmode = 0 Then //无默认供应商
  2338. ll_defsptid = 0
  2339. ElseIf ll_sptmode = 1 Then //按主供应商
  2340. ll_defsptid = ll_sptid
  2341. Else //自动带最低价供应商
  2342. Select TOP 1 sptid Into :ll_sptid
  2343. From u_spt_price
  2344. Where (mtrlid = :s_mx.mtrlid)
  2345. And (status = :s_mx.status)
  2346. And (unit = :ls_unit)
  2347. Order By fprice;
  2348. If sqlca.SQLCode <> 0 Then
  2349. ll_sptid = 0
  2350. End If
  2351. ll_defsptid = ll_sptid
  2352. End If
  2353. If uo_option_wfjg_checkdate = 0 Then
  2354. If ifauto = 0 Then
  2355. If s_mx.requiredate <> DateTime(Date('1900-01-01'),Time(0)) Then
  2356. If Requiredate > s_mx.requiredate Then
  2357. arg_msg = '交货日期不能在订货日期前'
  2358. rslt = 0
  2359. Goto ext
  2360. End If
  2361. End If
  2362. End If
  2363. End If
  2364. If s_mx.iforder = 1 Then
  2365. If li_mtrlkind = 1 Then
  2366. arg_msg = '物料:'+s_mx.mtrlcode+',MRP属性设为不按计划,所以不能选择计划'
  2367. rslt = 0
  2368. Goto ext
  2369. End If
  2370. If s_mx.orderid = 0 Then
  2371. arg_msg = '请先择相应的计划'
  2372. rslt = 0
  2373. Goto ext
  2374. End If
  2375. End If
  2376. For ls_i = 1 To it_mxbtmx //合并重复项
  2377. If wfjgmxmx[ls_i].mtrlid = s_mx.mtrlid And &
  2378. wfjgmxmx[ls_i].orderid = s_mx.orderid And &
  2379. wfjgmxmx[ls_i].status = s_mx.status And &
  2380. wfjgmxmx[ls_i].woodcode = s_mx.woodcode And &
  2381. wfjgmxmx[ls_i].Requiredate = s_mx.requiredate And &
  2382. wfjgmxmx[ls_i].wrkGrpid = s_mx.wrkGrpid And &
  2383. wfjgmxmx[ls_i].pcode = s_mx.pcode And &
  2384. wfjgmxmx[ls_i].pfcode = s_mx.pfcode Then
  2385. wfjgmxmx[ls_i].qty = wfjgmxmx[ls_i].qty+s_mx.qty
  2386. wfjgmxmx[ls_i].uqty = wfjgmxmx[ls_i].uqty+s_mx.uqty
  2387. rslt = 1
  2388. Goto _next
  2389. End If
  2390. Next
  2391. //写入内容
  2392. it_mxbtmx++
  2393. wfjgmxmx[it_mxbtmx].iforder = s_mx.iforder
  2394. wfjgmxmx[it_mxbtmx].orderid = s_mx.orderid
  2395. wfjgmxmx[it_mxbtmx].ordercode = s_mx.ordercode
  2396. wfjgmxmx[it_mxbtmx].mtrlid = s_mx.mtrlid
  2397. wfjgmxmx[it_mxbtmx].qty = s_mx.qty
  2398. wfjgmxmx[it_mxbtmx].dscrp = s_mx.dscrp
  2399. wfjgmxmx[it_mxbtmx].mtrlcode = s_mx.mtrlcode
  2400. wfjgmxmx[it_mxbtmx].printid = s_mx.printid
  2401. wfjgmxmx[it_mxbtmx].Requiredate = s_mx.requiredate
  2402. wfjgmxmx[it_mxbtmx].jgdscrp = s_mx.jgdscrp
  2403. wfjgmxmx[it_mxbtmx].status = s_mx.status
  2404. wfjgmxmx[it_mxbtmx].woodcode = s_mx.woodcode
  2405. wfjgmxmx[it_mxbtmx].pcode = s_mx.pcode
  2406. wfjgmxmx[it_mxbtmx].wrkGrpid = s_mx.wrkGrpid
  2407. wfjgmxmx[it_mxbtmx].pfcode = s_mx.pfcode
  2408. wfjgmxmx[it_mxbtmx].sptid = ll_defsptid
  2409. wfjgmxmx[it_mxbtmx].plancode = s_mx.plancode
  2410. wfjgmxmx[it_mxbtmx].unit = s_mx.unit
  2411. wfjgmxmx[it_mxbtmx].uqty = s_mx.uqty
  2412. wfjgmxmx[it_mxbtmx].rate = s_mx.rate
  2413. wfjgmxmx[it_mxbtmx].sonmtrlid = s_mx.sonmtrlid
  2414. _next:
  2415. If uo_option_requestwfjg_hz = 1 Then
  2416. For ll_j = 1 To it_mxbt
  2417. If wfjgmx[ll_j].mtrlid = s_mx.mtrlid And &
  2418. wfjgmx[ll_j].status = s_mx.status And &
  2419. wfjgmx[ll_j].woodcode = s_mx.woodcode And &
  2420. Date(wfjgmx[ll_j].Requiredate) = Date(s_mx.requiredate) And &
  2421. wfjgmx[ll_j].unit = s_mx.unit and &
  2422. wfjgmx[ll_j].pcode = s_mx.pcode And &
  2423. wfjgmx[ll_j].pfcode = s_mx.pfcode And &
  2424. wfjgmx[ll_j].plancode = s_mx.plancode Then
  2425. wfjgmx[ll_j].qty = wfjgmx[ll_j].qty+s_mx.qty
  2426. wfjgmx[ll_j].uqty = wfjgmx[ll_j].uqty+s_mx.uqty
  2427. wfjgmx[ll_j].iforder = 0
  2428. wfjgmx[ll_j].ordercode = ''
  2429. wfjgmx[ll_j].orderid = 0
  2430. wfjgmx[ll_j].wrkGrpid = 0
  2431. rslt = 1
  2432. Goto ext
  2433. End If
  2434. Next
  2435. End If
  2436. it_mxbt++
  2437. wfjgmx[it_mxbt].iforder = s_mx.iforder
  2438. wfjgmx[it_mxbt].orderid = s_mx.orderid
  2439. wfjgmx[it_mxbt].ordercode = s_mx.ordercode
  2440. wfjgmx[it_mxbt].mtrlid = s_mx.mtrlid
  2441. wfjgmx[it_mxbt].qty = s_mx.qty
  2442. wfjgmx[it_mxbt].dscrp = s_mx.dscrp
  2443. wfjgmx[it_mxbt].mtrlcode = s_mx.mtrlcode
  2444. wfjgmx[it_mxbt].printid = s_mx.printid
  2445. wfjgmx[it_mxbt].Requiredate = s_mx.requiredate
  2446. wfjgmx[it_mxbt].jgdscrp = s_mx.jgdscrp
  2447. wfjgmx[it_mxbt].status = s_mx.status
  2448. wfjgmx[it_mxbt].woodcode = s_mx.woodcode
  2449. wfjgmx[it_mxbt].pcode = s_mx.pcode
  2450. wfjgmx[it_mxbt].wrkGrpid = s_mx.wrkGrpid
  2451. wfjgmx[it_mxbt].pfcode = s_mx.pfcode
  2452. wfjgmx[it_mxbt].sptid = ll_defsptid
  2453. wfjgmx[it_mxbt].plancode = s_mx.plancode
  2454. wfjgmx[it_mxbt].unit = s_mx.unit
  2455. wfjgmx[it_mxbt].uqty = s_mx.uqty
  2456. wfjgmx[it_mxbt].rate = s_mx.rate
  2457. wfjgmx[it_mxbt].sonmtrlid = s_mx.sonmtrlid
  2458. ext:
  2459. If rslt = 0 Then p_clearmx()
  2460. Return(rslt)
  2461. end function
  2462. public function integer acceptmx_out (s_order_wfjgmx_out s_mx, ref string arg_msg);//return 0 fail 1 success
  2463. // 函数增加一个明细项
  2464. Long rslt = 1,cnt = 0,ls_i
  2465. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  2466. rslt = 0
  2467. arg_msg = "非编辑状态不可以使用,操作取消"
  2468. GOTO ext
  2469. END IF
  2470. //清除空值
  2471. IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
  2472. IF IsNull(s_mx.qty) THEN s_mx.qty = 0
  2473. IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = ''
  2474. IF IsNull(s_mx.printid) THEN s_mx.printid = 0
  2475. IF IsNull(s_mx.status) THEN s_mx.status = ''
  2476. IF IsNull(s_mx.woodcode) THEN s_mx.woodcode = ''
  2477. IF IsNull(s_mx.pcode) THEN s_mx.pcode = ''
  2478. If IsNull(s_mx.uqty) Then s_mx.uqty = 0
  2479. If IsNull(s_mx.unit) Then s_mx.unit = ''
  2480. If IsNull(s_mx.rate) Then s_mx.rate = 1
  2481. IF s_mx.mtrlid = 0 OR (s_mx.qty = 0 and s_mx.uqty = 0) THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
  2482. rslt = 1
  2483. GOTO ext
  2484. END IF
  2485. //检查物料id
  2486. SELECT count(*)
  2487. INTO :cnt
  2488. FROM u_mtrldef
  2489. Where u_mtrldef.mtrlid = :s_mx.mtrlid ;
  2490. IF sqlca.SQLCode <> 0 THEN
  2491. rslt = 0
  2492. arg_msg = "查询操作失败,物料编号"
  2493. GOTO ext
  2494. END IF
  2495. IF cnt = 0 THEN
  2496. rslt = 0
  2497. arg_msg = "错误的产品编号: "+String(s_mx.mtrlcode)
  2498. GOTO ext
  2499. END IF
  2500. FOR ls_i = 1 TO it_mxbt_out //合并重复项
  2501. IF wfjgmx_out[ls_i].mtrlid = s_mx.mtrlid AND &
  2502. wfjgmx_out[ls_i].status = s_mx.status AND &
  2503. wfjgmx_out[ls_i].woodcode = s_mx.woodcode AND &
  2504. wfjgmx_out[ls_i].pcode = s_mx.pcode THEN
  2505. wfjgmx_out[ls_i].qty = wfjgmx_out[ls_i].qty+s_mx.qty
  2506. wfjgmx_out[ls_i].uqty = wfjgmx_out[ls_i].uqty+s_mx.uqty
  2507. rslt = 1
  2508. GOTO ext
  2509. END IF
  2510. NEXT
  2511. //写入内容
  2512. it_mxbt_out++
  2513. wfjgmx_out[it_mxbt_out].mtrlid = s_mx.mtrlid
  2514. wfjgmx_out[it_mxbt_out].qty = s_mx.qty
  2515. wfjgmx_out[it_mxbt_out].mtrlcode = s_mx.mtrlcode
  2516. wfjgmx_out[it_mxbt_out].printid = s_mx.printid
  2517. wfjgmx_out[it_mxbt_out].status = s_mx.status
  2518. wfjgmx_out[it_mxbt_out].woodcode = s_mx.woodcode
  2519. wfjgmx_out[it_mxbt_out].pcode = s_mx.pcode
  2520. wfjgmx_out[it_mxbt_out].unit = s_mx.unit
  2521. wfjgmx_out[it_mxbt_out].uqty = s_mx.uqty
  2522. wfjgmx_out[it_mxbt_out].rate = s_mx.rate
  2523. ext:
  2524. IF rslt = 0 THEN p_clearmx()
  2525. Return(rslt)
  2526. end function
  2527. public function integer uof_add_thqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);//arg_addqty 必须为外协单位
  2528. Int rslt = 1
  2529. Long cnt = 0
  2530. IF arg_wfjgid <= 0 THEN
  2531. rslt = 0
  2532. arg_msg = '错误外协申请单唯一码'
  2533. GOTO ext
  2534. END IF
  2535. IF arg_addqty = 0 THEN
  2536. rslt = 1
  2537. GOTO ext
  2538. END IF
  2539. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  2540. rslt = 0
  2541. GOTO ext
  2542. END IF
  2543. IF status <> 1 AND status <> 5 THEN
  2544. rslt = 0
  2545. arg_msg = "外协申请单只有在进行或完成状态下才可以执行操作"
  2546. GOTO ext
  2547. END IF
  2548. Decimal lde_uqty,lde_consignedqty,ld_sum_consignedqty
  2549. String ls_mtrlcode
  2550. Long ll_orderid,ll_wrkGrpid,ll_mtrlid
  2551. String ls_status,ls_woodcode,ls_pcode
  2552. decimal lde_thqty, lde_fgqty
  2553. SELECT u_mtrldef.mtrlcode,
  2554. u_request_wfjgMx.orderid,
  2555. u_request_wfjgMx.wrkGrpid,
  2556. u_request_wfjgMx.mtrlid,
  2557. u_request_wfjgMx.status,
  2558. u_request_wfjgMx.woodcode,
  2559. u_request_wfjgMx.pcode,
  2560. u_request_wfjgMx.uqty,
  2561. u_request_wfjgMx.consignedqty,
  2562. u_request_wfjgMx.thqty,
  2563. u_request_wfjgMx.fgqty
  2564. INTO :ls_mtrlcode,
  2565. :ll_orderid,
  2566. :ll_wrkGrpid,
  2567. :ll_mtrlid,
  2568. :ls_status,
  2569. :ls_woodcode,
  2570. :ls_pcode,
  2571. :lde_uqty,
  2572. :lde_consignedqty,
  2573. :lde_thqty,
  2574. :lde_fgqty
  2575. FROM u_mtrldef,u_request_wfjgMx
  2576. WHERE u_mtrldef.mtrlid = u_request_wfjgMx.mtrlid
  2577. AND u_request_wfjgMx.scid = :arg_scid
  2578. AND u_request_wfjgMx.wfjgid = :arg_wfjgid
  2579. AND u_request_wfjgMx.printid = :arg_printid
  2580. USING commit_transaction;
  2581. IF commit_transaction.SQLCode <> 0 THEN
  2582. rslt = 0
  2583. arg_msg = '查询外协申请单明细物料编码失败,'+commit_transaction.SQLErrText
  2584. GOTO ext
  2585. END IF
  2586. IF lde_consignedqty < lde_thqty + arg_addqty THEN
  2587. rslt = 0
  2588. arg_msg = "外协申请物料:"+ls_mtrlcode+",的已安排数量只有"+String(lde_consignedqty - lde_thqty,'#,##0.0###')+",不能退回"+String(arg_addqty,'#,##0.0#')
  2589. GOTO ext
  2590. END IF
  2591. IF lde_thqty + arg_addqty < lde_fgqty THEN
  2592. rslt = 0
  2593. arg_msg = "外协申请物料:"+ls_mtrlcode+",的已返工数量"+String(lde_fgqty,'#,##0.0###')+",不能取消退回"+String(arg_addqty,'#,##0.0#')
  2594. GOTO ext
  2595. END IF
  2596. UPDATE u_request_wfjgMx
  2597. SET thqty = thqty + :arg_addqty
  2598. WHERE ( u_request_wfjgMx.wfjgid = :arg_wfjgid ) AND
  2599. ( u_request_wfjgMx.printid = :arg_printid ) AND
  2600. ( u_request_wfjgMx.scid = :arg_scid) USING commit_transaction;
  2601. IF commit_transaction.SQLCode <> 0 THEN
  2602. rslt = 0
  2603. arg_msg = "更新外协申请单已安排退回数量操作失败"+"~n"+commit_transaction.SQLErrText
  2604. GOTO ext
  2605. END IF
  2606. it_newbegin = FALSE
  2607. it_updatebegin = FALSE
  2608. ext:
  2609. IF rslt = 0 THEN
  2610. ROLLBACK USING commit_transaction;
  2611. ELSEIF arg_ifcommit AND rslt = 1 THEN
  2612. COMMIT USING commit_transaction;
  2613. END IF
  2614. p_reset()
  2615. Return (rslt)
  2616. end function
  2617. public function integer uof_add_fgqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);//arg_addqty 必须为外协单位
  2618. Int rslt = 1
  2619. Long cnt = 0
  2620. IF arg_wfjgid <= 0 THEN
  2621. rslt = 0
  2622. arg_msg = '错误外协申请单唯一码'
  2623. GOTO ext
  2624. END IF
  2625. IF arg_addqty = 0 THEN
  2626. rslt = 1
  2627. GOTO ext
  2628. END IF
  2629. IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
  2630. rslt = 0
  2631. GOTO ext
  2632. END IF
  2633. IF status <> 1 AND status <> 5 THEN
  2634. rslt = 0
  2635. arg_msg = "外协申请单只有在进行或完成状态下才可以执行操作"
  2636. GOTO ext
  2637. END IF
  2638. Decimal lde_uqty,lde_consignedqty,ld_sum_consignedqty
  2639. String ls_mtrlcode
  2640. Long ll_orderid,ll_wrkGrpid,ll_mtrlid
  2641. String ls_status,ls_woodcode,ls_pcode
  2642. decimal lde_thqty, lde_fgqty
  2643. SELECT u_mtrldef.mtrlcode,
  2644. u_request_wfjgMx.orderid,
  2645. u_request_wfjgMx.wrkGrpid,
  2646. u_request_wfjgMx.mtrlid,
  2647. u_request_wfjgMx.status,
  2648. u_request_wfjgMx.woodcode,
  2649. u_request_wfjgMx.pcode,
  2650. u_request_wfjgMx.uqty,
  2651. u_request_wfjgMx.consignedqty,
  2652. u_request_wfjgMx.thqty,
  2653. u_request_wfjgMx.fgqty
  2654. INTO :ls_mtrlcode,
  2655. :ll_orderid,
  2656. :ll_wrkGrpid,
  2657. :ll_mtrlid,
  2658. :ls_status,
  2659. :ls_woodcode,
  2660. :ls_pcode,
  2661. :lde_uqty,
  2662. :lde_consignedqty,
  2663. :lde_thqty,
  2664. :lde_fgqty
  2665. FROM u_mtrldef,u_request_wfjgMx
  2666. WHERE u_mtrldef.mtrlid = u_request_wfjgMx.mtrlid
  2667. AND u_request_wfjgMx.scid = :arg_scid
  2668. AND u_request_wfjgMx.wfjgid = :arg_wfjgid
  2669. AND u_request_wfjgMx.printid = :arg_printid
  2670. USING commit_transaction;
  2671. IF commit_transaction.SQLCode <> 0 THEN
  2672. rslt = 0
  2673. arg_msg = '查询外协申请单明细物料编码失败,'+commit_transaction.SQLErrText
  2674. GOTO ext
  2675. END IF
  2676. IF lde_thqty < lde_fgqty + arg_addqty THEN
  2677. rslt = 0
  2678. arg_msg = "外协申请物料:"+ls_mtrlcode+",的退回未返工数量只有"+String(lde_thqty - lde_fgqty,'#,##0.0###')+",不能返工"+String(arg_addqty,'#,##0.0#')
  2679. GOTO ext
  2680. END IF
  2681. IF lde_fgqty + arg_addqty < 0 THEN
  2682. rslt = 0
  2683. arg_msg = "外协申请物料:"+ls_mtrlcode+",的已返工数量"+String(lde_fgqty,'#,##0.0###')+",不能返工"+String(arg_addqty,'#,##0.0#')
  2684. GOTO ext
  2685. END IF
  2686. UPDATE u_request_wfjgMx
  2687. SET fgqty = fgqty + :arg_addqty
  2688. WHERE ( u_request_wfjgMx.wfjgid = :arg_wfjgid ) AND
  2689. ( u_request_wfjgMx.printid = :arg_printid ) AND
  2690. ( u_request_wfjgMx.scid = :arg_scid) USING commit_transaction;
  2691. IF commit_transaction.SQLCode <> 0 THEN
  2692. rslt = 0
  2693. arg_msg = "更新外协申请单已安排退回数量操作失败"+"~n"+commit_transaction.SQLErrText
  2694. GOTO ext
  2695. END IF
  2696. it_newbegin = FALSE
  2697. it_updatebegin = FALSE
  2698. ext:
  2699. IF rslt = 0 THEN
  2700. ROLLBACK USING commit_transaction;
  2701. ELSEIF arg_ifcommit AND rslt = 1 THEN
  2702. COMMIT USING commit_transaction;
  2703. END IF
  2704. p_reset()
  2705. Return (rslt)
  2706. end function
  2707. public function integer uof_add_order_acmpqty (long arg_scid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);// arg_addqty > 0 审核 增加
  2708. // arg_addqty < 0 撤审 减少
  2709. Int rslt = 1
  2710. Long ll_i, ll_k
  2711. Long ll_cnt_order
  2712. Long ll_orderid, ll_mtrlid_order
  2713. Int li_ordertype_order, li_ifwfjgorder
  2714. Decimal lde_addqty
  2715. uo_order_ml uo_order
  2716. uo_order = Create uo_order_ml
  2717. datastore ds_rqwfjg
  2718. ds_rqwfjg = Create datastore
  2719. ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
  2720. ds_rqwfjg.SetTransObject(sqlca)
  2721. //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划已进仓数
  2722. Decimal lde_addqty_allow, ld_qty
  2723. Decimal lde_orderqty, lde_acmpqty, lde_stopqty, lde_unacmpqty
  2724. lde_addqty = Abs(arg_addqty)
  2725. ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
  2726. FOR ll_k = 1 To ll_cnt_order
  2727. ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
  2728. IF ll_orderid = 0 THEN CONTINUE
  2729. li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
  2730. li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
  2731. ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
  2732. lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
  2733. lde_acmpqty = ds_rqwfjg.Object.acmpqty[ll_k]
  2734. lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
  2735. lde_unacmpqty = ds_rqwfjg.Object.unacmpqty[ll_k]
  2736. //更新外协主生产计划已进仓数
  2737. If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = arg_mtrlid THEN
  2738. IF arg_addqty > 0 THEN
  2739. lde_addqty_allow = lde_unacmpqty
  2740. ELSE
  2741. lde_addqty_allow = lde_acmpqty
  2742. END IF
  2743. IF lde_addqty_allow > 0 THEN
  2744. ld_qty = Min(lde_addqty, lde_addqty_allow) //本条处理数
  2745. lde_addqty -= ld_qty //未处理数
  2746. IF ld_qty > 0 THEN
  2747. IF arg_addqty > 0 THEN //增加
  2748. //ld_qty = ld_qty
  2749. ELSE //减少
  2750. ld_qty = 0 - ld_qty
  2751. END IF
  2752. IF uo_order.addmxcmpl(arg_scid,ll_orderid,ld_qty,arg_msg,False) = 0 THEN
  2753. arg_msg = '更新行:'+String(ll_i)+','+arg_msg
  2754. rslt = 0
  2755. GOTO ext
  2756. END IF
  2757. IF uo_order.tryfinishorder(arg_scid,ll_orderid,arg_msg,False) = 0 THEN
  2758. arg_msg = '更新行:'+String(ll_i)+','+arg_msg
  2759. rslt = 0
  2760. GOTO ext
  2761. END IF
  2762. END IF
  2763. IF lde_addqty <= 0 THEN EXIT // 完成
  2764. END IF
  2765. END IF
  2766. NEXT
  2767. ext:
  2768. Destroy uo_order
  2769. Destroy ds_rqwfjg
  2770. RETURN rslt
  2771. end function
  2772. public function integer uof_add_order_dstrqty_bk (long arg_scid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, decimal arg_dec_round, ref string arg_msg);// arg_addqty > 0 审核 增加
  2773. // arg_addqty < 0 撤审 减少
  2774. Int rslt = 1
  2775. Long ll_i, ll_k, ll_m, ll_lp, ll_row_f
  2776. String ls_mtrlcode_out
  2777. Decimal ld_costamt_out ,ld_qty_out,ld_cost_out, ld_overqty
  2778. Long ll_wrkgrpid_out,ll_mtrlid_out
  2779. String ls_status_out,ls_woodcode_out,ls_pcode_out
  2780. Long ll_cnt_order
  2781. Long ll_orderid, ll_mtrlid_order, ll_workgroupid
  2782. Int li_ordertype_order, li_ifwfjgorder
  2783. String ls_wrkgrpname
  2784. Decimal lde_addqty
  2785. Decimal dec_round //= 2 //计算发出明细保留小数位, 取自外协订单界面
  2786. uo_order_ml uo_order
  2787. uo_order = Create uo_order_ml
  2788. datastore ds_rqwfjg
  2789. ds_rqwfjg = Create datastore
  2790. ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
  2791. ds_rqwfjg.SetTransObject(sqlca)
  2792. datastore ds_mrpmx
  2793. ds_mrpmx = Create datastore
  2794. ds_mrpmx.DataObject = 'ds_order_ml_mrpmx_to_wfjg'
  2795. ds_mrpmx.SetTransObject(sqlca)
  2796. Dec lde_addqty_out_allow, lde_addqty_out_detrqty_allow, lde_addqty_out_ed, lde_sonscale
  2797. Long ll_cnt_tree
  2798. //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划已进仓数
  2799. Decimal lde_addqty_allow, ld_qty
  2800. Decimal lde_orderqty, lde_acmpqty, lde_stopqty, lde_unacmpqty
  2801. lde_addqty = Abs(arg_addqty)
  2802. dec_round = arg_dec_round
  2803. ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
  2804. FOR ll_k = 1 To ll_cnt_order
  2805. ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
  2806. IF ll_orderid = 0 THEN CONTINUE
  2807. li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
  2808. li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
  2809. ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
  2810. lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
  2811. lde_acmpqty = ds_rqwfjg.Object.acmpqty[ll_k]
  2812. lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
  2813. lde_unacmpqty = ds_rqwfjg.Object.unacmpqty[ll_k]
  2814. ll_cnt_tree = ds_mrpmx.Retrieve(arg_scid,ll_orderid)
  2815. ll_row_f = ds_mrpmx.Find("u_orderrqmtrl_tree_mtrlid = "+String(arg_mtrlid),1,ds_mrpmx.RowCount())
  2816. IF ll_row_f > 0 THEN
  2817. ll_lp = ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_row_f]
  2818. FOR ll_m = ll_row_f + 1 To ds_mrpmx.RowCount()
  2819. IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] <= ll_lp THEN EXIT
  2820. IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] = ll_lp + 1 &
  2821. And ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] > 0 THEN
  2822. ls_mtrlcode_out = ds_mrpmx.Object.u_mtrldef_mtrlcode[ll_m]
  2823. ll_wrkgrpid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_wrkgrpid[ll_m]
  2824. ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m]
  2825. ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_m]
  2826. ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_m]
  2827. ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_m]
  2828. lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_sonscale[ll_m]
  2829. IF lde_sonscale = 0 THEN
  2830. lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] / ds_mrpmx.Object.u_orderrqmtrl_tree_truerqqty[ll_row_f]
  2831. END IF
  2832. //找有多少未完成数, 分配完成
  2833. SELECT sum(truerqqty - dstrqty) , sum(dstrqty)
  2834. INTO :lde_addqty_out_allow, :lde_addqty_out_detrqty_allow
  2835. FROM u_orderrqmtrl
  2836. WHERE scid = :arg_scid
  2837. AND orderid = :ll_orderid
  2838. AND mtrlid = :ll_mtrlid_out
  2839. AND status = :ls_status_out
  2840. AND woodcode = :ls_woodcode_out
  2841. AND pcode = :ls_pcode_out
  2842. And truerqqty > dstrqty ;
  2843. IF sqlca.SQLCode <> 0 THEN
  2844. lde_addqty_out_allow = 0
  2845. lde_addqty_out_detrqty_allow = 0
  2846. END IF
  2847. IF lde_addqty_out_allow > 0 THEN
  2848. ld_qty_out = Min(Round(lde_addqty * lde_sonscale,dec_round) - lde_addqty_out_ed, lde_addqty_out_allow)
  2849. lde_addqty_out_ed += ld_qty_out
  2850. IF ld_qty_out <> 0 THEN
  2851. //
  2852. SELECT top 1 cost INTO :ld_cost_out
  2853. FROM ow_wfjgware
  2854. WHERE sptid = :sptid
  2855. AND mtrlid = :ll_mtrlid_out
  2856. AND status = :ls_status_out
  2857. AND woodcode = :ls_woodcode_out
  2858. AND pcode = :ls_pcode_out
  2859. AND scid = :scid
  2860. Order By cost Desc Using commit_transaction;
  2861. IF commit_transaction.SQLCode <> 0 THEN
  2862. ld_cost_out = 0
  2863. END IF
  2864. ld_costamt_out = ld_qty_out * ld_cost_out
  2865. IF ll_wrkgrpid_out > 0 THEN
  2866. SELECT wrkgrpname
  2867. INTO :ls_wrkgrpname
  2868. FROM u_sc_workgroup
  2869. Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
  2870. IF commit_transaction.SQLCode <> 0 THEN
  2871. rslt = 0
  2872. arg_msg = '查询领用工组信息失败,'+commit_transaction.SQLErrText
  2873. GOTO ext
  2874. END IF
  2875. SELECT TOP 1 workgroupid
  2876. INTO :ll_workgroupid
  2877. FROM u_workgroup
  2878. Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
  2879. IF commit_transaction.SQLCode <> 0 THEN
  2880. rslt = 0
  2881. arg_msg = '查询领用工组 '+ls_wrkgrpname+' 相关的工作中心失败,可能是工组没有设置对应的工作中心,请检查'+commit_transaction.SQLErrText
  2882. GOTO ext
  2883. END IF
  2884. ELSE
  2885. ll_workgroupid = 0
  2886. END IF
  2887. IF uo_order.f_add_dstrqty(scid,ll_orderid,ll_workgroupid,ll_mtrlid_out,ls_mtrlcode_out,ls_status_out,ls_woodcode_out,ls_pcode_out,ld_qty_out,ld_costamt_out,arg_msg,False,-1,ld_overqty) = 0 THEN
  2888. arg_msg = '更新生产计划已领数失败,'+arg_msg
  2889. rslt = 0
  2890. GOTO ext
  2891. END IF
  2892. END IF
  2893. END IF
  2894. END IF
  2895. IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
  2896. NEXT
  2897. IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
  2898. END IF
  2899. NEXT
  2900. ext:
  2901. Destroy uo_order
  2902. Destroy ds_rqwfjg
  2903. Destroy ds_mrpmx
  2904. RETURN rslt
  2905. end function
  2906. public function integer uof_add_order_dstrqty (long arg_scid, long arg_sptid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, decimal arg_dec_round, ref string arg_msg);//待测
  2907. // arg_addqty > 0 审核 增加
  2908. // arg_addqty < 0 撤审 减少
  2909. Int rslt = 1
  2910. Long ll_j, ll_k, ll_m, ll_lp, ll_row_f
  2911. String ls_mtrlcode_out
  2912. Decimal ld_costamt_out ,ld_qty_out,ld_cost_out, ld_overqty
  2913. Long ll_wrkgrpid_out,ll_mtrlid_out
  2914. String ls_status_out,ls_woodcode_out,ls_pcode_out
  2915. Long ll_cnt_order
  2916. Long ll_orderid, ll_mtrlid_order, ll_workgroupid
  2917. //Int li_ordertype_order, li_ifwfjgorder
  2918. String ls_wrkgrpname
  2919. Decimal lde_addqty_out
  2920. Decimal dec_round //= 2 //计算发出明细保留小数位, 取自外协订单界面
  2921. uo_order_ml uo_order
  2922. uo_order = Create uo_order_ml
  2923. datastore ds_rqwfjg
  2924. ds_rqwfjg = Create datastore
  2925. ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
  2926. ds_rqwfjg.SetTransObject(sqlca)
  2927. datastore ds_mrpmx
  2928. ds_mrpmx = Create datastore
  2929. ds_mrpmx.DataObject = 'ds_order_ml_mrpmx_to_wfjg'
  2930. ds_mrpmx.SetTransObject(sqlca)
  2931. Dec lde_addqty_out_allow, lde_addqty_out_detrqty_allow, lde_addqty_out_ed, lde_sonscale
  2932. Long ll_cnt_tree
  2933. s_order_wfjgmx_out s_mx[]
  2934. //1.通过外协申请单,找到对应的主计划,
  2935. dec_round = arg_dec_round
  2936. ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
  2937. FOR ll_k = 1 To ll_cnt_order
  2938. ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
  2939. IF ll_orderid = 0 THEN CONTINUE
  2940. ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
  2941. ll_cnt_tree = ds_mrpmx.Retrieve(arg_scid,ll_orderid, ll_mtrlid_order)
  2942. FOR ll_m = 1 To ds_mrpmx.RowCount()
  2943. ls_mtrlcode_out = ds_mrpmx.Object.u_mtrldef_mtrlcode[ll_m]
  2944. ll_wrkgrpid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_wrkgrpid[ll_m]
  2945. ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m]
  2946. ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_m]
  2947. ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_m]
  2948. ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_m]
  2949. lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_sonscale[ll_m]
  2950. lde_addqty_out_allow = ds_mrpmx.Object.undstrqty[ll_m]
  2951. lde_addqty_out_detrqty_allow = ds_mrpmx.Object.dstrqty[ll_m]
  2952. //找有多少未完成数, 分配完成
  2953. FOR ll_j = 1 To UpperBound(s_mx)
  2954. IF s_mx[ll_j].mtrlid = ll_mtrlid_out &
  2955. And s_mx[ll_j].status = ls_status_out &
  2956. And s_mx[ll_j].woodcode = ls_woodcode_out &
  2957. And s_mx[ll_j].pcode = ls_pcode_out THEN
  2958. lde_addqty_out = s_mx[ll_j].qty
  2959. GOTO cmplmtrl
  2960. END IF
  2961. NEXT
  2962. s_mx[ll_j].mtrlid = ll_mtrlid_out
  2963. s_mx[ll_j].status = ls_status_out
  2964. s_mx[ll_j].woodcode = ls_woodcode_out
  2965. s_mx[ll_j].pcode = ls_pcode_out
  2966. s_mx[ll_j].qty = Round(Abs(arg_addqty) * lde_sonscale,dec_round)
  2967. lde_addqty_out = s_mx[ll_j].qty
  2968. cmplmtrl:
  2969. IF lde_addqty_out = 0 THEN CONTINUE //主要考虑的是 1:N的处理
  2970. IF lde_addqty_out_allow > 0 THEN
  2971. ld_qty_out = Min(lde_addqty_out, lde_addqty_out_allow)
  2972. lde_addqty_out -= ld_qty_out
  2973. IF ld_qty_out <> 0 THEN
  2974. //
  2975. SELECT top 1 cost INTO :ld_cost_out
  2976. FROM ow_wfjgware
  2977. WHERE sptid = :arg_sptid
  2978. AND mtrlid = :ll_mtrlid_out
  2979. AND status = :ls_status_out
  2980. AND woodcode = :ls_woodcode_out
  2981. AND pcode = :ls_pcode_out
  2982. AND scid = :arg_scid
  2983. Order By cost Desc Using commit_transaction;
  2984. IF commit_transaction.SQLCode <> 0 THEN
  2985. ld_cost_out = 0
  2986. END IF
  2987. ld_costamt_out = ld_qty_out * ld_cost_out
  2988. IF ll_wrkgrpid_out > 0 THEN
  2989. SELECT wrkgrpname
  2990. INTO :ls_wrkgrpname
  2991. FROM u_sc_workgroup
  2992. Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
  2993. IF commit_transaction.SQLCode <> 0 THEN
  2994. rslt = 0
  2995. arg_msg = '查询领用工组信息失败,'+commit_transaction.SQLErrText
  2996. GOTO ext
  2997. END IF
  2998. SELECT TOP 1 workgroupid
  2999. INTO :ll_workgroupid
  3000. FROM u_workgroup
  3001. Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
  3002. IF commit_transaction.SQLCode <> 0 THEN
  3003. rslt = 0
  3004. arg_msg = '查询领用工组 '+ls_wrkgrpname+' 相关的工作中心失败,可能是工组没有设置对应的工作中心,请检查'+commit_transaction.SQLErrText
  3005. GOTO ext
  3006. END IF
  3007. ELSE
  3008. ll_workgroupid = 0
  3009. END IF
  3010. IF uo_order.f_add_dstrqty(arg_scid,ll_orderid,ll_workgroupid,ll_mtrlid_out,ls_mtrlcode_out,ls_status_out,ls_woodcode_out,ls_pcode_out,ld_qty_out,ld_costamt_out,arg_msg,False,-1,ld_overqty) = 0 THEN
  3011. arg_msg = '更新生产计划已领数失败,'+arg_msg
  3012. rslt = 0
  3013. GOTO ext
  3014. END IF
  3015. END IF
  3016. END IF
  3017. s_mx[ll_j].qty = lde_addqty_out
  3018. //IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
  3019. NEXT
  3020. //IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
  3021. NEXT
  3022. ext:
  3023. Destroy uo_order
  3024. Destroy ds_rqwfjg
  3025. Destroy ds_mrpmx
  3026. RETURN rslt
  3027. end function
  3028. public function integer uof_add_order_rqacmpqty (long arg_scid, long arg_wfjgid, long arg_printid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);// arg_addqty > 0 审核 增加
  3029. // arg_addqty < 0 撤审 减少
  3030. Int rslt = 1
  3031. Long ll_i, ll_k
  3032. Long ll_cnt_order
  3033. Long ll_orderid, ll_mtrlid_order
  3034. Int li_ordertype_order, li_ifwfjgorder
  3035. Decimal lde_addqty
  3036. uo_order_ml uo_order
  3037. uo_order = Create uo_order_ml
  3038. datastore ds_rqwfjg
  3039. ds_rqwfjg = Create datastore
  3040. ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
  3041. ds_rqwfjg.SetTransObject(sqlca)
  3042. //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划已申购数, 更新主生产计划物料需求已申购数
  3043. Decimal lde_addqty_allow, ld_qty
  3044. Decimal lde_orderqty, lde_rqacmpqty, lde_stopqty, lde_unrqacmpqty
  3045. lde_addqty = Abs(arg_addqty)
  3046. ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
  3047. FOR ll_k = 1 To ll_cnt_order
  3048. ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
  3049. IF ll_orderid = 0 THEN CONTINUE
  3050. li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
  3051. li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
  3052. ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
  3053. lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
  3054. lde_rqacmpqty = ds_rqwfjg.Object.rqacmpqty[ll_k]
  3055. lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
  3056. lde_unrqacmpqty = ds_rqwfjg.Object.unrqacmpqty[ll_k]
  3057. //更新外协主生产计划已进仓数
  3058. If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = arg_mtrlid THEN
  3059. IF arg_addqty > 0 THEN
  3060. lde_addqty_allow = lde_unrqacmpqty
  3061. ELSE
  3062. lde_addqty_allow = lde_rqacmpqty
  3063. END IF
  3064. IF lde_addqty_allow > 0 THEN
  3065. ld_qty = Min(lde_addqty, lde_addqty_allow) //本条处理数
  3066. lde_addqty -= ld_qty //未处理数
  3067. IF ld_qty > 0 THEN
  3068. IF arg_addqty > 0 THEN //增加
  3069. //ld_qty = ld_qty
  3070. ELSE //减少
  3071. ld_qty = 0 - ld_qty
  3072. END IF
  3073. IF uo_order.addmxcmpl_rqacmpqty(arg_scid,ll_orderid,ld_qty,arg_msg,False) = 0 THEN
  3074. arg_msg = '更新行:'+String(ll_i)+','+arg_msg
  3075. rslt = 0
  3076. GOTO ext
  3077. END IF
  3078. END IF
  3079. IF lde_addqty <= 0 THEN EXIT // 完成
  3080. END IF
  3081. END IF
  3082. NEXT
  3083. ext:
  3084. Destroy uo_order
  3085. Destroy ds_rqwfjg
  3086. RETURN rslt
  3087. end function
  3088. on uo_request_wfjg.create
  3089. call super::create
  3090. TriggerEvent( this, "constructor" )
  3091. end on
  3092. on uo_request_wfjg.destroy
  3093. TriggerEvent( this, "destructor" )
  3094. call super::destroy
  3095. end on
  3096. event constructor;
  3097. String arg_msg
  3098. String str_optionvalue
  3099. str_optionvalue = ''
  3100. f_get_sys_option_value('121',str_optionvalue,arg_msg)
  3101. uo_option_requestwfjg_hz = Long(str_optionvalue)
  3102. str_optionvalue = ''
  3103. f_get_sys_option_value('312',str_optionvalue,arg_msg)
  3104. uo_option_wfjg_checkdate = Long(str_optionvalue)
  3105. end event