12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800 |
- $PBExportHeader$uo_request_wfjg.sru
- forward
- global type uo_request_wfjg from nonvisualobject
- end type
- end forward
- global type uo_request_wfjg from nonvisualobject
- end type
- global uo_request_wfjg uo_request_wfjg
- type variables
- Public ProtectedWrite Long scid
- Public ProtectedWrite Long wfjgid
- Public ProtectedWrite String taskcode
- Public ProtectedWrite DateTime opdate
- Public ProtectedWrite String operator
- Public ProtectedWrite Int status
- Public ProtectedWrite DateTime accomplishdate
- Public ProtectedWrite String permit_emp
- Public ProtectedWrite Long ctmint
- Long ifauto
- Long sptid
- String assign_emp
- DateTime requiredate
- String dscrp
- String relcode
- Boolean if_getid_ture = True
- Transaction commit_transaction //数据commit事务
- Private:
- s_order_wfjgmx wfjgmx[],wfjgmxmx[] //明细结构数组
- s_order_wfjgmx_out wfjgmx_out[] //明细结构数组
- Long it_mxbt = 0 //明细结构数组末指针
- Long it_mxbtmx = 0
- Long it_mxbt_out = 0 //明细结构数组末指针
- Boolean it_newbegin = True //新建标志
- Boolean it_updatebegin = False //修改标志
- Int uo_option_requestwfjg_hz
- int uo_option_wfjg_checkdate
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- public function integer newbegin (long arg_scid, ref string arg_msg)
- public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer add_dscrp (long arg_scid, long arg_wfjgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer checkmxmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer checkmxmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer addmxcmpl (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- 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)
- public function integer trycmplwfjg (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer audit_2 (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer audit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer caudit (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit)
- public function integer caudit_2 (long arg_scid, long arg_wfjgid, any arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit)
- public function integer audit_mx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer caudit_mx (long arg_scid, long arg_wfjgid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- 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)
- 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)
- 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)
- 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)
- public function integer stopbuytask (long arg_scid, long arg_wfjgid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- 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)
- public function integer uof_update_wfjg_flag (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (s_order_wfjgmx s_mx, ref string arg_msg)
- public function integer acceptmx_out (s_order_wfjgmx_out s_mx, ref string arg_msg)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- end prototypes
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- scid = 0
- wfjgid = 0
- taskcode = ''
- operator = ''
- status = 0
- ifauto = 0
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt = 0
- it_mxbt_out = 0
- it_mxbtmx = 0
- RETURN 1
- end function
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i,j
- Long LS_NEWwfjgID
- DateTime server_datetime
- String ls_sccode
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(assign_emp) THEN assign_emp = ''
- IF IsNull(arg_operator) THEN arg_operator = ''
- //IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
- operator = arg_operator
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arG_MSG = "非编辑状态不可以提交"
- GOTO ext
- END IF
- IF Trim(assign_emp) = '' THEN
- rslt = 0
- arG_MSG = "请输入负责人"
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF f_check_inoutdate(0,requiredate,False,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN
- rslt = 0
- arG_MSG = "没有正确外协申请单收货明细"
- GOTO ext
- END IF
- if sys_option_request_wfjg_ifoutmx = 1 then
- IF it_mxbt_out = 0 THEN
- rslt = 0
- arG_MSG = "系统选项[375]限制,没有正确外协申请单发出明细"
- GOTO ext
- END IF
- end if
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :operator Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arG_MSG = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- opdate = server_datetime //填写单据建立时间(最近修改时间)
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF wfjgID = 0 THEN //新建
- LS_NEWwfjgID = f_sys_scidentity(scid,"u_request_wfjg","wfjgID",arG_MSG,True,id_sqlca) //数据commit事务)
- IF LS_NEWwfjgID <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- taskcode = getid(scid,ls_sccode + 'WR',Date(server_datetime),if_getid_ture,commit_transaction)
-
- IF taskcode = "err" THEN
- taskcode = ''
- rslt = 0
- arG_MSG = "无法获取外协申请单编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_request_wfjg
- ( scid,
- wfjgID,
- TaskCode,
- requiredate,
- Status,
- Opemp,
- Assign_Emp,
- Dscrp,
- opdate,
- ifauto,
- relcode)
- VALUES ( :scid,
- :LS_NEWwfjgID,
- :TaskCode,
- :requiredate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Dscrp,
- :opdate,
- :ifauto,
- :relcode) Using commit_transaction ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致插入外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //读取新taskid
- wfjgID = LS_NEWwfjgID
-
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_request_wfjg
- SET requiredate = :requiredate,
- Assign_Emp = :Assign_Emp,
- Dscrp = :Dscrp,
- moddate = getdate(),
- Modemp = :publ_operator,
- relcode = :relcode
- WHERE u_request_wfjg.wfjgID = :wfjgID
- And u_request_wfjg.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致更新外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_request_wfjgMx
- WHERE u_request_wfjgMx.wfjgID = :wfjgID
- And u_request_wfjgMx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "删除旧有收货汇总操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
- //删除原有明细
- DELETE FROM u_request_wfjgMxmx
- WHERE u_request_wfjgMxmx.wfjgID = :wfjgID
- And u_request_wfjgMxmx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "删除旧有收货明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
- //删除原有明细
- DELETE FROM u_request_wfjgMx_out
- WHERE u_request_wfjgMx_out.wfjgID = :wfjgID
- And u_request_wfjgMx_out.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "删除旧有发出明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
-
- END IF
- FOR i = 1 To it_mxbt
- INSERT INTO u_request_wfjgMx
- ( scid,
- wfjgID,
- printid,
- mtrlid,
- qty,
- dscrp,
- requiredate,
- orderid,
- jgdscrp,
- status,
- iforder,
- woodcode,
- pcode,
- wrkGrpid,
- pfcode,
- sptid,
- plancode,
- unit,
- uqty,
- rate,
- sonmtrlid)
- VALUES (:scid,
- :wfjgID,
- :wfjgmx[i].printid,
- :wfjgmx[i].mtrlid,
- :wfjgmx[i].QTY,
- :wfjgmx[i].dscrp ,
- :wfjgmx[i].requiredate,
- :wfjgmx[i].orderid,
- :wfjgmx[i].jgdscrp,
- :wfjgmx[i].status,
- :wfjgmx[i].iforder,
- :wfjgmx[i].woodcode,
- :wfjgmx[i].pcode,
- :wfjgmx[i].wrkGrpid,
- :wfjgmx[i].pfcode,
- :wfjgmx[i].sptid,
- :wfjgmx[i].plancode,
- :wfjgmx[i].unit,
- :wfjgmx[i].uqty,
- :wfjgmx[i].rate,
- :wfjgmx[i].sonmtrlid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN wfjgID = 0 //还原taskid
- rslt = 0
- arG_MSG = "因网络或其它原因导致插入收货汇总操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- FOR i = 1 To it_mxbtmx
- INSERT INTO u_request_wfjgMxmx
- ( scid,
- wfjgID,
- printid,
- mtrlid,
- qty,
- dscrp,
- requiredate,
- orderid,
- jgdscrp,
- status,
- iforder,
- woodcode,
- pcode,
- wrkGrpid,
- pfcode,
- sptid,
- plancode,
- unit,
- uqty,
- rate,
- sonmtrlid)
- VALUES (:scid,
- :wfjgID,
- :wfjgmxmx[i].printid,
- :wfjgmxmx[i].mtrlid,
- :wfjgmxmx[i].QTY,
- :wfjgmxmx[i].dscrp ,
- :wfjgmxmx[i].requiredate,
- :wfjgmxmx[i].orderid,
- :wfjgmxmx[i].jgdscrp,
- :wfjgmxmx[i].status,
- :wfjgmxmx[i].iforder,
- :wfjgmxmx[i].woodcode,
- :wfjgmxmx[i].pcode,
- :wfjgmxmx[i].wrkGrpid,
- :wfjgmxmx[i].pfcode,
- :wfjgmxmx[i].sptid,
- :wfjgmxmx[i].plancode,
- :wfjgmxmx[i].unit,
- :wfjgmxmx[i].uqty,
- :wfjgmxmx[i].rate,
- :wfjgmxmx[i].sonmtrlid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN wfjgID = 0 //还原taskid
- rslt = 0
- arG_MSG = "因网络或其它原因导致插入收货明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- FOR i = 1 To it_mxbt_out
- INSERT INTO u_request_wfjgMx_out
- (scid,
- wfjgID,
- printid,
- mtrlid,
- qty,
- status,
- woodcode,
- pcode,
- unit,
- uqty,
- rate)
- VALUES (:scid,
- :wfjgID,
- :wfjgmx_out[i].printid,
- :wfjgmx_out[i].mtrlid,
- :wfjgmx_out[i].QTY,
- :wfjgmx_out[i].status,
- :wfjgmx_out[i].woodcode,
- :wfjgmx_out[i].pcode,
- :wfjgmx_out[i].unit,
- :wfjgmx_out[i].uqty,
- :wfjgmx_out[i].rate) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN wfjgID = 0 //还原taskid
- rslt = 0
- arG_MSG = "因网络或其它原因导致插入发出明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- IF uof_update_wfjg_flag(scid,wfjgID,arG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Return(rslt)
- end function
- public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
- //0 fail 1 success
- long rslt=1,CNT=0
- if arg_scid < 0 then
- arg_msg = '请选择分部'
- rslt = 0
- goto ext
- end if
- p_reset()
- it_newbegin=TRUE
- it_updatebegin=FALSE
- scid=arg_scid
- ext:
- if rslt = 0 then p_reset()
- return rslt
- end function
- public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1
- SELECT wfjgID,
- TaskCode,
- requiredate,
- accomplishdate,
- Status,
- Opemp,
- Assign_Emp,
- Dscrp,
- opdate ,
- ctmint,
- ifauto,
- relcode
- INTO :wfjgID,
- :TaskCode,
- :requiredate,
- :accomplishdate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Dscrp,
- :opdate,
- :ctmint,
- :ifauto,
- :relcode
- FROM u_request_wfjg
- WHERE u_request_wfjg.wfjgID = :arg_wfjgID
- AND u_request_wfjg.scid = :arg_scid USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询外协申请单内容失败(错误外协申请单唯一码)'
- GOTO ext
- END IF
- scid = arg_scid
- ext:
- RETURN rslt
- end function
- 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
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT u_request_wfjgmx.mtrlid,
- u_request_wfjgmx.qty,
- u_request_wfjgmx.dscrp,
- u_mtrldef.mtrlcode,
- u_request_wfjgmx.printid,
- u_request_wfjgmx.orderid,
- u_request_wfjgmx.jgdscrp,
- u_request_wfjgmx.iforder,
- u_request_wfjgmx.status,
- u_request_wfjgmx.woodcode,
- u_request_wfjgmx.pcode,
- u_request_wfjgmx.wrkGrpid,
- u_request_wfjgmx.sptid,
- u_request_wfjgmx.plancode,
- u_request_wfjgmx.unit,
- u_request_wfjgmx.uqty,
- u_request_wfjgmx.rate
- FROM u_request_wfjgmx,u_mtrldef
- WHERE u_request_wfjgmx.wfjgid = :arg_wfjgid AND
- u_request_wfjgmx.scid = :arg_scid AND
- u_request_wfjgmx.mtrlid = u_mtrldef.mtrlid Using commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,:wfjgmx[i].qty,
- :wfjgmx[i].dscrp,:wfjgmx[i].mtrlcode,
- :wfjgmx[i].printid,:wfjgmx[i].orderid,
- :wfjgmx[i].jgdscrp,:wfjgmx[i].iforder,
- :wfjgmx[i].status,:wfjgmx[i].woodcode,:wfjgmx[i].pcode,
- :wfjgmx[i].wrkGrpid,:wfjgmx[i].sptid,:wfjgmx[i].plancode,
- :wfjgmx[i].unit,:wfjgmx[i].uqty,:wfjgmx[i].rate;
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,:wfjgmx[i].qty,
- :wfjgmx[i].dscrp,:wfjgmx[i].mtrlcode,
- :wfjgmx[i].printid,:wfjgmx[i].orderid,
- :wfjgmx[i].jgdscrp,:wfjgmx[i].iforder,
- :wfjgmx[i].status,:wfjgmx[i].woodcode,:wfjgmx[i].pcode,
- :wfjgmx[i].wrkGrpid,:wfjgmx[i].sptid,:wfjgmx[i].plancode,
- :wfjgmx[i].unit,:wfjgmx[i].uqty,:wfjgmx[i].rate;
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_request_wfjgmx
- WHERE u_request_wfjgmx.wfjgid = :arg_wfjgid
- And u_request_wfjgmx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划收货汇总数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划收货汇总"
- GOTO ext
- END IF
- it_mxbt = i - 1
- //
- //用游标读取明细
- DECLARE cur_inwaermxmx CURSOR FOR
- SELECT u_request_wfjgmxmx.mtrlid,
- u_request_wfjgmxmx.qty,
- u_request_wfjgmxmx.dscrp,
- u_mtrldef.mtrlcode,
- u_request_wfjgmxmx.printid,
- u_request_wfjgmxmx.orderid,
- u_request_wfjgmxmx.jgdscrp,
- u_request_wfjgmxmx.iforder,
- u_request_wfjgmxmx.status,
- u_request_wfjgmxmx.woodcode,
- u_request_wfjgmxmx.pcode,
- u_request_wfjgmxmx.wrkGrpid,
- u_request_wfjgmxmx.sptid,
- u_request_wfjgmxmx.plancode,
- u_request_wfjgmxmx.unit,
- u_request_wfjgmxmx.uqty,
- u_request_wfjgmxmx.rate
- FROM u_request_wfjgmxmx,u_mtrldef
- WHERE u_request_wfjgmxmx.wfjgid = :arg_wfjgid AND
- u_request_wfjgmxmx.scid = :arg_scid AND
- u_request_wfjgmxmx.mtrlid = u_mtrldef.mtrlid Using commit_transaction;
-
- OPEN cur_inwaermxmx;
- FETCH cur_inwaermxmx INTO :wfjgmxmx[k].mtrlid,:wfjgmxmx[k].qty,
- :wfjgmxmx[k].dscrp,:wfjgmxmx[k].mtrlcode,
- :wfjgmxmx[k].printid,:wfjgmxmx[k].orderid,
- :wfjgmxmx[k].jgdscrp,:wfjgmxmx[k].iforder,
- :wfjgmxmx[k].status,:wfjgmxmx[k].woodcode,:wfjgmxmx[k].pcode,
- :wfjgmxmx[k].wrkGrpid,:wfjgmxmx[k].sptid,:wfjgmxmx[k].plancode,
- :wfjgmxmx[k].unit,:wfjgmxmx[k].uqty,:wfjgmxmx[k].rate;
- DO WHILE commit_transaction.SQLCode = 0
- k++
- FETCH cur_inwaermxmx INTO :wfjgmxmx[k].mtrlid,:wfjgmxmx[k].qty,
- :wfjgmxmx[k].dscrp,:wfjgmxmx[k].mtrlcode,
- :wfjgmxmx[k].printid,:wfjgmxmx[k].orderid,
- :wfjgmxmx[k].jgdscrp,:wfjgmxmx[k].iforder,
- :wfjgmxmx[k].status,:wfjgmxmx[k].woodcode,:wfjgmxmx[k].pcode,
- :wfjgmxmx[k].wrkGrpid,:wfjgmxmx[k].sptid,:wfjgmxmx[k].plancode,
- :wfjgmxmx[k].unit,:wfjgmxmx[k].uqty,:wfjgmxmx[k].rate;
- LOOP
- CLOSE cur_inwaermxmx;
- //
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_request_wfjgmxmx
- WHERE u_request_wfjgmxmx.wfjgid = :arg_wfjgid
- And u_request_wfjgmxmx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划收货明细数量"
- GOTO ext
- END IF
- IF k <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划收货明细"
- GOTO ext
- END IF
- it_mxbtmx = k - 1
- //
- //用游标读取明细
- DECLARE cur_inwaermx_out CURSOR FOR
- SELECT u_request_wfjgmx_out.mtrlid,
- u_request_wfjgmx_out.qty,
- u_mtrldef.mtrlcode,
- u_request_wfjgmx_out.printid,
- u_request_wfjgmx_out.status,
- u_request_wfjgmx_out.woodcode,
- u_request_wfjgmx_out.pcode,
- u_request_wfjgmx_out.unit,
- u_request_wfjgmx_out.uqty,
- u_request_wfjgmx_out.rate
- FROM u_request_wfjgmx_out,u_mtrldef
- WHERE u_request_wfjgmx_out.wfjgid = :arg_wfjgid AND
- u_request_wfjgmx_out.scid = :arg_scid AND
- u_request_wfjgmx_out.mtrlid = u_mtrldef.mtrlid
- Using commit_transaction;
-
- OPEN cur_inwaermx_out;
- FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,:wfjgmx_out[j].qty,
- :wfjgmx_out[j].mtrlcode,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].status,:wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,
- :wfjgmx_out[j].unit,:wfjgmx_out[j].uqty,:wfjgmx_out[j].rate;
- DO WHILE commit_transaction.SQLCode = 0
- j++
- FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,:wfjgmx_out[j].qty,
- :wfjgmx_out[j].mtrlcode,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].status,:wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,
- :wfjgmx_out[j].unit,:wfjgmx_out[j].uqty,:wfjgmx_out[j].rate;
- LOOP
- CLOSE cur_inwaermx_out;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_request_wfjgmx_out
- WHERE u_request_wfjgmx_out.wfjgid = :arg_wfjgid
- And u_request_wfjgmx_out.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划发出明细数量"
- GOTO ext
- END IF
- IF j <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划发出明细"
- GOTO ext
- END IF
- it_mxbt_out = j - 1
- //
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- 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)
- //0 fail 1 SUCCESS
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_request_wfjg
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_request_wfjg.wfjgid = :arg_wfjgid
- AND u_request_wfjg.scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加外加工计划备注操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- DSCRP = DSCRP+' '+arg_newdescppart
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- 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)
- Int rslt = 1,cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_wfjgid,ARG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外协申请单只有在进行状态下才可以执行进仓"
- GOTO ext
- END IF
- Decimal lde_uqty,lde_consignedqty
- String ls_mtrlcode
- SELECT u_request_wfjgmx.uQty,
- u_request_wfjgmx.consignedqty,
- u_mtrldef.mtrlcode
- INTO :lde_uqty,
- :lde_consignedqty,
- :ls_mtrlcode
- FROM u_request_wfjgmx ,u_mtrldef
- WHERE ( u_request_wfjgmx.scid = :arg_scid ) AND
- ( u_request_wfjgmx.wfjgid = :arg_wfjgid ) AND
- ( u_request_wfjgmx.MtrlID = :arg_mtrlid ) AND
- ( u_mtrldef.MtrlID = u_request_wfjgmx.MtrlID ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外协申请单已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF lde_uqty < lde_consignedqty + arg_addqty THEN
- rslt = 0
- ARG_MSG = "物料["+ls_mtrlcode+"]的外协申请单未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0#')+",不能安排"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- ext:
- p_reset()
- Return (rslt)
- end function
- 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
- DateTime null_dt
- SetNull(null_dt)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外协申请单只有在进行状态才可以执行完成,请核对"
- GOTO ext
- END IF
- ELSE
- IF arg_finishtype = 1 THEN
- IF Status <> 6 THEN
- rslt = 0
- ARG_MSG = "外协申请单只有在手动完成状态下才可以执行取消手动完成,请核对"
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
- UPDATE u_request_wfjg
- SET status = :arg_finishtype,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
- And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致完成外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- ELSE
- UPDATE u_request_wfjg
- SET status = :arg_finishtype,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
- And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致取消手动完成外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- ext:
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF f_aps_mrp_cklock(arg_scid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 And Status <> 2 THEN
- rslt = 0
- ARG_MSG = "外协申请单只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
- GOTO ext
- END IF
- IF Status = 1 THEN
- UPDATE u_request_wfjg
- SET Status = 2 ,
- stopemp = :publ_operator
- WHERE wfjgid = :arg_wfjgid
- And scid = :arg_scid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致暂停外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_request_wfjg
- SET Status = 1,stopemp = ''
- WHERE wfjgid = :arg_wfjgid
- And scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致取消暂停外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1
- Long CNT = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ifauto = 1 THEN
- rslt = 0
- ARG_MSG = '单据为动建立的单据,不可以修改'
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = '已经处于审核或完成等状态,不可以修改,如果外协申请单未完成并要修改请先撤销审核'
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = TRUE
- p_clearmx() //清除明细
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- 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)
- Int rslt = 1,cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_wfjgid,ARG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外协申请单只有在进行状态下才可以执行进仓"
- GOTO ext
- END IF
- Decimal lde_uqty,lde_consignedqty
- String ls_mtrlcode
- SELECT u_request_wfjgMx_out.Qty,
- u_request_wfjgMx_out.consignedqty,
- u_mtrldef.mtrlcode
- INTO :lde_uqty,
- :lde_consignedqty,
- :ls_mtrlcode
- FROM u_request_wfjgMx_out ,u_mtrldef
- WHERE ( u_request_wfjgMx_out.scid = :arg_scid ) AND
- ( u_request_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- ( u_request_wfjgMx_out.MtrlID = :arg_mtrlid ) AND
- ( u_mtrldef.MtrlID = u_request_wfjgMx_out.MtrlID ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外协申请单发出已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF lde_uqty < lde_consignedqty + arg_addqty THEN
- rslt = 0
- ARG_MSG = "物料["+ls_mtrlcode+"]的外协申请单发出未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0#')+",不能安排"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- ext:
- p_reset()
- Return (rslt)
- end function
- 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 必须为外协单位
- Int rslt = 1
- Long cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- arg_msg = "外协申请单只有在进行或完成状态下才可以执行操作"
- GOTO ext
- END IF
- Decimal lde_uqty,lde_consignedqty,ld_sum_consignedqty
- String ls_mtrlcode
- Long ll_orderid,ll_wrkGrpid,ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- SELECT u_mtrldef.mtrlcode,
- u_request_wfjgMx.orderid,
- u_request_wfjgMx.wrkGrpid,
- u_request_wfjgMx.mtrlid,
- u_request_wfjgMx.status,
- u_request_wfjgMx.woodcode,
- u_request_wfjgMx.pcode,
- u_request_wfjgMx.uqty,
- u_request_wfjgMx.consignedqty
- INTO :ls_mtrlcode,
- :ll_orderid,
- :ll_wrkGrpid,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :lde_uqty,
- :lde_consignedqty
- FROM u_mtrldef,u_request_wfjgMx
- WHERE u_mtrldef.mtrlid = u_request_wfjgMx.mtrlid
- AND u_request_wfjgMx.scid = :arg_scid
- AND u_request_wfjgMx.wfjgid = :arg_wfjgid
- AND u_request_wfjgMx.printid = :arg_printid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询外协申请单明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF lde_uqty < lde_consignedqty + arg_addqty THEN
- rslt = 0
- arg_msg = "外协申请物料:"+ls_mtrlcode+",的未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0###')+",不能安排"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_request_wfjgMx
- SET consignedqty = consignedqty + :arg_addqty
- WHERE ( u_request_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_request_wfjgMx.printid = :arg_printid ) AND
- ( u_request_wfjgMx.scid = :arg_scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新外协申请单已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- 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);//好像没用的??
- //arg_addqty 必须为外协单位
- Int rslt = 1,cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- Decimal lde_uqty,lde_consignedqty
- String ls_mtrlcode
- SELECT mtrlcode INTO :ls_mtrlcode FROM u_mtrldef
- WHERE mtrlid = :arg_mtrlid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料资料失败'
- GOTO ext
- END IF
- SELECT u_request_wfjgMx_out.uqty,
- u_request_wfjgMx_out.consignedqty
- INTO :lde_uqty,
- :lde_consignedqty
- FROM u_request_wfjgMx_out
- WHERE ( u_request_wfjgMx_out.scid = :arg_scid ) AND
- ( u_request_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- ( u_request_wfjgMx_out.printid = :arg_printid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询外协申请发出物料编码["+ls_mtrlcode+"]已安排数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF lde_uqty < lde_consignedqty + arg_addqty THEN
- rslt = 0
- arg_msg = "外协申请发出物料["+ls_mtrlcode+"]的未安排数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0###')+",不能安排"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_request_wfjgMx_out
- SET consignedqty = consignedqty + :arg_addqty
- WHERE ( u_request_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- ( u_request_wfjgMx_out.scid = :arg_scid ) AND
- ( u_request_wfjgMx_out.printid = :arg_printid ) USING commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新外协申请单发出安排数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit and rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer trycmplwfjg (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);//trycmplbuytask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 1
- IF status <> 1 THEN
- arg_msg = "外协申请单只有在进行状态下才可以执行设完成状态"
- ELSEIF status <> 5 THEN
- arg_msg = "外协申请单只有在完成状态下才可以执行撤消完成状态"
- END IF
- GOTO ext
- END IF
- Decimal ls_zerook
- Boolean if_finish
- if_finish = TRUE
- DECLARE zero_cur CURSOR FOR
- SELECT u_request_wfjgMx.uqty - u_request_wfjgmx.consignedqty - u_request_wfjgmx.stopqty
- FROM u_request_wfjgmx
- WHERE ( u_request_wfjgmx.wfjgid = :arg_wfjgid )
- AND ( u_request_wfjgmx.scid = :arg_scid )
- and ( u_request_wfjgmx.stopflag = 0)
- USING commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur INTO :ls_zerook;
- DO WHILE commit_transaction.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = FALSE
- END IF
- FETCH zero_cur INTO :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF status = 1 AND if_finish THEN
- UPDATE u_request_wfjg
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
- And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "外协申请单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- IF status = 5 AND NOT if_finish THEN
- UPDATE u_request_wfjg
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_request_wfjg.wfjgid = :arg_wfjgid )
- And ( u_request_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "外协申请单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer audit_2 (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Long cnt = 0
- Long ll_i
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协计划唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 4 THEN
- rslt = 0
- arg_msg = "外协申请单不是在初审状态,操作取消"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_request_wfjg
- SET secauditrep = :arg_emp,
- secauditdate = getdate(),
- Status = 1
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- And Status = 4 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "外协计划最终审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- Int li_ordertype_order,li_ifwfjgorder
- Long ll_mtrlid_order
- FOR ll_i = 1 To it_mxbtmx
- IF wfjgmxmx[ll_i].orderid > 0 THEN
- IF uo_order.f_add_rqbuyqty(scid,wfjgmxmx[ll_i].orderid,wfjgmxmx[ll_i].wrkGrpid,3,&
- wfjgmxmx[ll_i].mtrlid,wfjgmxmx[ll_i].mtrlcode,wfjgmxmx[ll_i].Status,&
- wfjgmxmx[ll_i].woodcode,wfjgmxmx[ll_i].pcode,wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- SELECT ordertype,mtrlid,ifwforder
- INTO :li_ordertype_order,:ll_mtrlid_order,:li_ifwfjgorder
- FROM u_order_ml
- WHERE u_order_ml.scid = :scid
- AND u_order_ml.orderid = :wfjgmxmx[ll_i].orderid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询明细:'+String(wfjgmxmx[ll_i].printid)+',相关生产计划类型失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //更新外协主生产计划已申请数
- If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = wfjgmxmx[ll_i].mtrlid THEN
- IF uo_order.addmxcmpl_rqacmpqty(arg_scid,wfjgmxmx[ll_i].orderid,wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- IF uof_update_wfjg_flag(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- Return (rslt)
- end function
- public function integer audit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- long cnt
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = "外协申请单不是待初审状态,操作取消"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- ARG_MSG = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_request_wfjg
- SET auditrep = :arg_emp,
- auditdate = getdate(),
- status = 4
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- AND status = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer caudit (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag,li_ifauto
- Long cnt
- DateTime null_dt
- SetNull(null_dt)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF arg_ifcheck_auto = 1 THEN
- IF ifauto = 1 THEN
- rslt = 0
- ARG_MSG = '单据为动建立的单据,不可以撤审'
- GOTO ext
- END IF
- END IF
- if status <> 4 then
- arg_msg = '单据不是在初审状态,不可以撤审'
- rslt = 0
- goto ext
- end if
- //cnt = 0
- //SELECT count(*) INTO :cnt
- // FROM u_buytaskmx
- // WHERE scid = :arg_scid
- // AND requestbuyid = :arg_wfjgid;
- //IF sqlca.SQLCode <> 0 THEN
- // ARG_MSG = '查询申购单是否已开订单失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF cnt > 0 THEN
- // ARG_MSG = '申购单已开订单,不能撤审'
- // rslt = 0
- // GOTO ext
- //END IF
- //更新审核标记
- UPDATE u_request_wfjg
- SET auditrep = '',
- auditdate = :null_dt,
- status = 0
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- AND status = 4;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer cancel (long arg_scid, long arg_wfjgid, integer arg_ifcheck_auto, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
- //0 FAIL, 1 SUCCESS
- Int rslt = 1
- Long ll_orderid_arr[]
- Long cnt,ll_i
- cnt = 1
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_ifcheck_auto = 1 THEN
- IF ifauto = 1 THEN
- rslt = 0
- ARG_MSG = '单据为动建立的单据,不可以删除'
- GOTO ext
- END IF
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = "外协申请单已经审核,不可以删除"
- GOTO ext
- END IF
- DECLARE cur_mx CURSOR FOR
- SELECT u_request_wfjgmxmx.orderid
- FROM u_request_wfjgmxmx
- WHERE u_request_wfjgmxmx.scid = :arg_scid
- And u_request_wfjgmxmx.wfjgid = :arg_wfjgid
- and u_request_wfjgmxmx.orderid > 0 Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx Into :ll_orderid_arr[cnt];
- DO WHILE commit_transaction.SQLCode = 0
- cnt++
- FETCH cur_mx Into :ll_orderid_arr[cnt];
- LOOP
- CLOSE cur_mx;
- cnt = cnt - 1
- DELETE FROM u_request_wfjgMx
- WHERE u_request_wfjgMx.wfjgid = :arg_wfjgid
- And u_request_wfjgMx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协申请单收货汇总明细操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_request_wfjgMxmx
- WHERE u_request_wfjgMxmx.wfjgid = :arg_wfjgid
- And u_request_wfjgmxmx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协申请单收货明细操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_request_wfjgMx_out
- WHERE u_request_wfjgMx_out.wfjgid = :arg_wfjgid
- And u_request_wfjgMx_out.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协申请单发出明细操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_request_wfjg
- WHERE u_request_wfjg.wfjgid = :arg_wfjgid
- And u_request_wfjg.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- FOR ll_i = 1 To cnt
- UPDATE u_order_ml
- SET u_Order_ml.wfjg_flag = isnull(uv_order_request_wfjg_flag.flag, 0)
- FROM u_Order_ml LEFT OUTER JOIN
- uv_order_request_wfjg_flag ON
- u_Order_ml.scid = uv_order_request_wfjg_flag.scid AND
- u_Order_ml.OrderID = uv_order_request_wfjg_flag.OrderID
- WHERE u_order_ml.scid = :arg_scid
- And u_order_ml.orderid = :ll_orderid_arr[ll_i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '更新相关生产计划外协申请单状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- IF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- ext:
- p_reset()
- Return (rslt)
- end function
- 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
- Long cnt = 0
- Long ll_i
- DateTime nulldate
- SetNull(nulldate)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF arg_ifcheck_auto = 1 THEN
- IF ifauto = 1 THEN
- rslt = 0
- arg_msg = '单据为自动建立的单据,不可以撤审'
- GOTO ext
- END IF
- END IF
- IF Status <> 1 THEN
- rslt = 0
- arg_msg = "外协申请单只有在已审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_order_wfjgMx
- WHERE ( u_order_wfjgMx.scid = :arg_scid ) AND
- ( u_order_wfjgMx.relwfjgid = :arg_wfjgid ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询外协申请单数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "外协申请单已经有相关外协订单,不可以撤消审核"
- GOTO ext
- END IF
- UPDATE u_request_wfjg
- SET Status = 4,
- secauditrep = '',
- secauditdate = :nulldate
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- And Status = 1 Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致外协申请单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- Int li_ordertype_order, li_ifwfjgorder
- Long ll_mtrlid_order
- FOR ll_i = 1 To it_mxbtmx
- IF wfjgmxmx[ll_i].orderid > 0 THEN
- IF uo_order.f_add_rqbuyqty(scid,wfjgmxmx[ll_i].orderid,wfjgmxmx[ll_i].wrkGrpid,3,&
- wfjgmxmx[ll_i].mtrlid,wfjgmxmx[ll_i].mtrlcode,&
- wfjgmxmx[ll_i].Status,wfjgmxmx[ll_i].woodcode,&
- wfjgmxmx[ll_i].pcode,0 - wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- SELECT ordertype,mtrlid,ifwforder
- INTO :li_ordertype_order,:ll_mtrlid_order,:li_ifwfjgorder
- FROM u_order_ml
- WHERE u_order_ml.scid = :scid
- AND u_order_ml.orderid = :wfjgmxmx[ll_i].orderid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询明细:'+String(wfjgmxmx[ll_i].printid)+',相关生产计划类型失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //更新外协主生产计划已申请数
- If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = wfjgmxmx[ll_i].mtrlid THEN
- IF uo_order.addmxcmpl_rqacmpqty(arg_scid,wfjgmxmx[ll_i].orderid,0 - wfjgmxmx[ll_i].qty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- IF uof_update_wfjg_flag(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- p_reset()
- Return (rslt)
- end function
- 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
- Int li_flag,li_billtype
- Long ll_sptid
- Long ll_flagmx
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- rslt = 0
- ARG_MSG = '单据不是在进行状态,不可以审核明细内容'
- GOTO ext
- END IF
- SELECT sptid,flag INTO :ll_sptid,:ll_flagmx
- FROM u_request_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND printid = :arg_printid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询明细供应商内容失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_flagmx = 1 THEN
- rslt = 0
- ARG_MSG = '只在在待供应商审核的状态下才能执行供应商审核'
- GOTO ext
- END IF
- IF ll_sptid = 0 THEN
- rslt = 0
- ARG_MSG = '没有指定供应商,不能执行明细审核'
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_request_wfjgMx
- SET auditrep = :arg_opemp,
- auditdate = getdate(),
- flag = 1
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- AND printid = :arg_printid
- AND flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据明细审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer caudit_mx (long arg_scid, long arg_wfjgid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag,li_ifauto,li_billtype
- Long cnt
- DateTime null_dt
- SetNull(null_dt)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- SELECT flag INTO :li_flag
- FROM u_request_wfjgMx
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询外协申请单明细审核状态失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_flag = 0 THEN
- rslt = 0
- ARG_MSG = '外协申请单明细只有在已审核状态下才能执行撤审'
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_wfjgmx
- WHERE scid = :arg_scid
- AND relwfjgid = :arg_wfjgid
- AND relprintid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = '查询外协申请单明细是否已开订单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- ARG_MSG = '该外协申请单明细已开订单,不能执行明细撤审'
- rslt = 0
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_request_wfjgMx
- SET auditrep = '',
- auditdate = :null_dt,
- flag = 0
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- AND printid = :arg_printid
- AND flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据明细撤审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- 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
- Int li_stopflag
- String ls_outtype
- DateTime null_dt
- Decimal ld_notconsignedqty
- Int ll_flag,ll_billtype
- SetNull(null_dt)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arg_msg = '外协申请单只能在进行状态下才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT stopflag
- INTO :li_stopflag
- FROM u_request_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF li_stopflag = 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_stopflag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 1 THEN
- SELECT u_request_wfjgMx.uQty - u_request_wfjgMx.consignedqty
- INTO :ld_notconsignedqty
- FROM u_request_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty <= 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已完成订货,不能中止'
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_request_wfjgMx
- SET stopflag = 0,
- stopemp = '',
- stopdate = :null_dt,
- stopreason = ''
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND printid = :arg_printid;
- ELSE
- UPDATE u_request_wfjgMx
- SET stopflag = 1,
- stopemp = :publ_operator,
- stopdate = getdate(),
- stopreason = :arg_stopreason
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND printid = :arg_printid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF trycmplwfjg(arg_scid,arg_wfjgid,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- 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
- s_mx.iforder = arg_iforder
- s_mx.orderid = arg_orderid
- s_mx.ordercode = arg_ordercode
- s_mx.mtrlid = arg_mtrlid
- s_mx.qty = arg_qty
- s_mx.dscrp = arg_dscrp
- s_mx.mtrlcode = arg_mtrlcode
- s_mx.printid = arg_printid
- s_mx.requiredate = arg_requiredate
- s_mx.jgdscrp = arg_jgdscrp
- s_mx.status = arg_status
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.wrkgrpid = arg_wrkgrpid
- s_mx.pfcode = arg_pfcode
- s_mx.plancode = arg_plancode
- s_mx.unit = arg_unit
- s_mx.uqty = arg_uqty
- s_mx.rate = arg_rate
- s_mx.sonmtrlid = 0
- return acceptmx(s_mx, arg_msg)
- /*
- Int rslt = 1
- Long cnt = 0,ls_i,ll_j
- Int li_mtrlkind
- Long ll_sptmode,ll_sptid,ll_defsptid
- String ls_unit
- If it_newbegin = False And it_updatebegin = False Then
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- Goto ext
- End If
- If uo_option_requestwfjg_hz = -1000 Then
- arg_msg = '选项:[121]外协申请单汇总外协,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_wfjg_checkdate = -1000 Then
- arg_msg = '选项:[312]外协申请单保存不检查交货日期,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- //清除空值
- If IsNull(arg_iforder) Then arg_iforder = 0
- If IsNull(arg_orderid) Then arg_orderid = 0
- If IsNull(arg_ordercode) Then arg_ordercode = ''
- If IsNull(arg_mtrlid) Then arg_mtrlid = 0
- If IsNull(arg_qty) Then arg_qty = 0
- If IsNull(arg_pfcode) Then arg_pfcode = ''
- If IsNull(arg_dscrp) Then arg_dscrp = ''
- If IsNull(arg_mtrlcode) Then arg_mtrlcode = ''
- If IsNull(arg_printid) Then arg_printid = 0
- If IsNull(arg_jgdscrp) Then arg_jgdscrp = ''
- If IsNull(arg_status) Then arg_status = ''
- If IsNull(arg_woodcode) Then arg_woodcode = ''
- If IsNull(arg_pcode) Then arg_pcode = ''
- If IsNull(arg_requiredate) Then arg_requiredate = DateTime(Date('1900-01-01'),Time(0))
- If IsNull(arg_uqty) Then arg_uqty = 0
- If IsNull(arg_unit) Then arg_unit = ''
- If IsNull(arg_rate) Then arg_rate = 1
- If arg_mtrlid = 0 Or (arg_qty = 0 and arg_uqty = 0) Then
- rslt = 1
- Goto ext
- End If
- Select mtrlkind,sptmode,dftsptid,unit
- Into :li_mtrlkind,:ll_sptmode,:ll_sptid,:ls_unit
- From u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid
- Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询物料:"+arg_mtrlcode+',MRP属性失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- //处理默认供应商
- If ll_sptmode = 0 Then //无默认供应商
- ll_defsptid = 0
- ElseIf ll_sptmode = 1 Then //按主供应商
- ll_defsptid = ll_sptid
- Else //自动带最低价供应商
- Select TOP 1 sptid Into :ll_sptid
- From u_spt_price
- Where (mtrlid = :arg_mtrlid)
- And (status = :arg_status)
- And (unit = :ls_unit)
- Order By fprice;
- If sqlca.SQLCode <> 0 Then
- ll_sptid = 0
- End If
- ll_defsptid = ll_sptid
- End If
- If uo_option_wfjg_checkdate = 0 Then
- If ifauto = 0 Then
- If arg_requiredate <> DateTime(Date('1900-01-01'),Time(0)) Then
- If Requiredate > arg_requiredate Then
- arg_msg = '交货日期不能在订货日期前'
- rslt = 0
- Goto ext
- End If
- End If
- End If
- End If
- If arg_iforder = 1 Then
- If li_mtrlkind = 1 Then
- arg_msg = '物料:'+arg_mtrlcode+',MRP属性设为不按计划,所以不能选择计划'
- rslt = 0
- Goto ext
- End If
-
- If arg_orderid = 0 Then
- arg_msg = '请先择相应的计划'
- rslt = 0
- Goto ext
- End If
-
- End If
- For ls_i = 1 To it_mxbtmx //合并重复项
- If wfjgmxmx[ls_i].mtrlid = arg_mtrlid And &
- wfjgmxmx[ls_i].orderid = arg_orderid And &
- wfjgmxmx[ls_i].status = arg_status And &
- wfjgmxmx[ls_i].woodcode = arg_woodcode And &
- wfjgmxmx[ls_i].Requiredate = arg_requiredate And &
- wfjgmxmx[ls_i].wrkGrpid = arg_wrkGrpid And &
- wfjgmxmx[ls_i].pcode = arg_pcode And &
- wfjgmxmx[ls_i].pfcode = arg_pfcode Then
- wfjgmxmx[ls_i].qty = wfjgmxmx[ls_i].qty+arg_qty
- wfjgmxmx[ls_i].uqty = wfjgmxmx[ls_i].uqty+arg_uqty
- rslt = 1
- Goto _next
- End If
- Next
- //写入内容
- it_mxbtmx++
- wfjgmxmx[it_mxbtmx].iforder = arg_iforder
- wfjgmxmx[it_mxbtmx].orderid = arg_orderid
- wfjgmxmx[it_mxbtmx].ordercode = arg_ordercode
- wfjgmxmx[it_mxbtmx].mtrlid = arg_mtrlid
- wfjgmxmx[it_mxbtmx].qty = arg_qty
- wfjgmxmx[it_mxbtmx].dscrp = arg_dscrp
- wfjgmxmx[it_mxbtmx].mtrlcode = arg_mtrlcode
- wfjgmxmx[it_mxbtmx].printid = arg_printid
- wfjgmxmx[it_mxbtmx].Requiredate = arg_requiredate
- wfjgmxmx[it_mxbtmx].jgdscrp = arg_jgdscrp
- wfjgmxmx[it_mxbtmx].status = arg_status
- wfjgmxmx[it_mxbtmx].woodcode = arg_woodcode
- wfjgmxmx[it_mxbtmx].pcode = arg_pcode
- wfjgmxmx[it_mxbtmx].wrkGrpid = arg_wrkGrpid
- wfjgmxmx[it_mxbtmx].pfcode = arg_pfcode
- wfjgmxmx[it_mxbtmx].sptid = ll_defsptid
- wfjgmxmx[it_mxbtmx].plancode = arg_plancode
- wfjgmxmx[it_mxbtmx].unit = arg_unit
- wfjgmxmx[it_mxbtmx].uqty = arg_uqty
- wfjgmxmx[it_mxbtmx].rate = arg_rate
- _next:
- If uo_option_requestwfjg_hz = 1 Then
- For ll_j = 1 To it_mxbt
- If wfjgmx[ll_j].mtrlid = arg_mtrlid And &
- wfjgmx[ll_j].status = arg_status And &
- wfjgmx[ll_j].woodcode = arg_woodcode And &
- Date(wfjgmx[ll_j].Requiredate) = Date(arg_requiredate) And &
- wfjgmx[ll_j].unit = arg_unit and &
- wfjgmx[ll_j].pcode = arg_pcode And &
- wfjgmx[ll_j].pfcode = arg_pfcode And &
- wfjgmx[ll_j].plancode = arg_plancode Then
- wfjgmx[ll_j].qty = wfjgmx[ll_j].qty+arg_qty
- wfjgmx[ll_j].uqty = wfjgmx[ll_j].uqty+arg_uqty
- wfjgmx[ll_j].iforder = 0
- wfjgmx[ll_j].ordercode = ''
- wfjgmx[ll_j].orderid = 0
- wfjgmx[ll_j].wrkGrpid = 0
- rslt = 1
- Goto ext
- End If
- Next
- End If
- it_mxbt++
- wfjgmx[it_mxbt].iforder = arg_iforder
- wfjgmx[it_mxbt].orderid = arg_orderid
- wfjgmx[it_mxbt].ordercode = arg_ordercode
- wfjgmx[it_mxbt].mtrlid = arg_mtrlid
- wfjgmx[it_mxbt].qty = arg_qty
- wfjgmx[it_mxbt].dscrp = arg_dscrp
- wfjgmx[it_mxbt].mtrlcode = arg_mtrlcode
- wfjgmx[it_mxbt].printid = arg_printid
- wfjgmx[it_mxbt].Requiredate = arg_requiredate
- wfjgmx[it_mxbt].jgdscrp = arg_jgdscrp
- wfjgmx[it_mxbt].status = arg_status
- wfjgmx[it_mxbt].woodcode = arg_woodcode
- wfjgmx[it_mxbt].pcode = arg_pcode
- wfjgmx[it_mxbt].wrkGrpid = arg_wrkGrpid
- wfjgmx[it_mxbt].pfcode = arg_pfcode
- wfjgmx[it_mxbt].sptid = ll_defsptid
- wfjgmx[it_mxbt].plancode = arg_plancode
- wfjgmx[it_mxbt].unit = arg_unit
- wfjgmx[it_mxbt].uqty = arg_uqty
- wfjgmx[it_mxbt].rate = arg_rate
- ext:
- If rslt = 0 Then p_clearmx()
- Return(rslt)
- */
- end function
- 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
- s_mx.mtrlid = arg_mtrlid
- s_mx.qty = arg_qty
- s_mx.mtrlcode = arg_mtrlcode
- s_mx.printid = arg_printid
- s_mx.status = arg_status
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.unit = arg_unit
- s_mx.uqty = arg_uqty
- s_mx.rate = arg_rate
- return acceptmx_out(s_mx, arg_msg)
- /*
- //return 0 fail 1 success
- // 函数增加一个明细项
- Long rslt = 1,cnt = 0,ls_i
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- If IsNull(arg_uqty) Then arg_uqty = 0
- If IsNull(arg_unit) Then arg_unit = ''
- If IsNull(arg_rate) Then arg_rate = 1
- IF arg_mtrlid = 0 OR (arg_qty = 0 and arg_uqty = 0) THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- rslt = 1
- GOTO ext
- END IF
- //检查物料id
- SELECT count(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,物料编号"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的产品编号: "+String(arg_mtrlcode)
- GOTO ext
- END IF
- FOR ls_i = 1 TO it_mxbt_out //合并重复项
- IF wfjgmx_out[ls_i].mtrlid = arg_mtrlid AND &
- wfjgmx_out[ls_i].status = arg_status AND &
- wfjgmx_out[ls_i].woodcode = arg_woodcode AND &
- wfjgmx_out[ls_i].pcode = arg_pcode THEN
- wfjgmx_out[ls_i].qty = wfjgmx_out[ls_i].qty+arg_qty
- wfjgmx_out[ls_i].uqty = wfjgmx_out[ls_i].uqty+arg_uqty
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt_out++
- wfjgmx_out[it_mxbt_out].mtrlid = arg_mtrlid
- wfjgmx_out[it_mxbt_out].qty = arg_qty
- wfjgmx_out[it_mxbt_out].mtrlcode = arg_mtrlcode
- wfjgmx_out[it_mxbt_out].printid = arg_printid
- wfjgmx_out[it_mxbt_out].status = arg_status
- wfjgmx_out[it_mxbt_out].woodcode = arg_woodcode
- wfjgmx_out[it_mxbt_out].pcode = arg_pcode
- wfjgmx_out[it_mxbt_out].unit = arg_unit
- wfjgmx_out[it_mxbt_out].uqty = arg_uqty
- wfjgmx_out[it_mxbt_out].rate = arg_rate
- ext:
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- */
- end function
- 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
- Decimal lde_uqty,lde_consignedqty
- //IF arg_wfjgid <= 0 THEN
- // rslt = 0
- // ARG_MSG = '错误外加工计划唯一码'
- // GOTO ext
- //END IF
- //SELECT count(*)
- // INTO :cnt
- // FROM u_order_wfjgmx
- // WHERE u_order_wfjgmx.scid = :arg_scid AND
- // u_order_wfjgmx.wfjgid = :arg_wfjgid AND
- // u_order_wfjgmx.printid = :arg_printid USING commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // ARG_MSG = "查询外加工明细操作失败!在物料"+String(arg_mtrlcode)
- // GOTO ext
- //END IF
- //IF cnt = 0 THEN
- // rslt = 0
- // ARG_MSG = "外加工明细不存在,在物料!"+String(arg_mtrlcode)
- // GOTO ext
- //END IF
- //
- //SELECT u_order_wfjgMx.uqty,
- // u_order_wfjgMx.consignedqty + u_order_wfjgMx.wasteqty
- // INTO :lde_uqty,
- // :lde_consignedqty
- // FROM u_order_wfjgMx
- // WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid ) AND
- // ( u_order_wfjgMx.scid = :arg_scid ) AND
- // ( u_order_wfjgMx.printid = :arg_printid ) USING commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // ARG_MSG = "因网络或错误物料编码["+arg_mtrlcode+"]导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- // GOTO ext
- //END IF
- //
- //IF lde_uqty < lde_consignedqty + arg_wasteqty THEN
- // rslt = 0
- // ARG_MSG = "物料["+arg_mtrlcode+"]的未完成数量只有"+String(lde_uqty - lde_consignedqty,'#,##0.0###')+",不能入库"+String(arg_wasteqty,'#,##0.0#')
- // GOTO ext
- //END IF
- //
- //UPDATE u_order_wfjgmx
- // SET u_order_wfjgmx.wasteqty = u_order_wfjgmx.wasteqty + :arg_wasteqty
- // WHERE u_order_wfjgmx.scid = :arg_scid AND
- // u_order_wfjgmx.wfjgid = :arg_wfjgid AND
- // u_order_wfjgmx.printid = :arg_printid USING commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // ARG_MSG = "因网络或其它原因导致更新外加工计划损耗操作失败"+"~n"+commit_transaction.SQLErrText
- // GOTO ext
- //END IF
- //
- //
- //ext:
- //IF rslt = 0 THEN
- // ROLLBACK USING commit_transaction;
- //ELSEIF arg_ifcommit and rslt = 1 THEN
- // COMMIT USING commit_transaction;
- //END IF
- Return (rslt)
- end function
- 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
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF f_aps_mrp_cklock(arg_scid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外协申请单只有在进行状态才可以执行终止,请核对"
- GOTO ext
- END IF
- arg_stopreason = Trim(arg_stopreason)
- IF arg_stopreason = '' THEN
- rslt = 0
- ARG_MSG = "请输入终止原因"
- GOTO ext
- END IF
- UPDATE u_request_wfjg
- SET Status = 3,
- accomplishdate = getdate(),
- stopemp = :publ_operator,
- stopreason = :arg_stopreason
- WHERE wfjgid = :arg_wfjgid
- And scid = :arg_scid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致终止外协申请单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- 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);
- Int rslt = 1
- Int li_flag, li_billtype
- DateTime null_dt
- Decimal ld_notconsignedqty, lde_stopqty
- DateTime server_datetime
- String ls_stopemp
- SELECT Top 1 getdate() Into :server_datetime From u_user Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF IsNull(arg_stopqty) THEN arg_stopqty = 0
- IF arg_stopqty < 0 THEN
- arg_msg = '订单终止数不能少于0,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF arg_stopqty = 0 THEN
- SetNull(server_datetime)
- ls_stopemp = ''
- ELSE
- ls_stopemp = publ_operator
- END IF
- SetNull(null_dt)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- arg_msg = '外协申请单只能在进行状态或自动完成状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT uQty - consignedqty,
- stopqty
- INTO :ld_notconsignedqty,
- :lde_stopqty
- FROM u_request_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using sqlca ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_stopqty > ld_notconsignedqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'未订货数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能终止:'+String(arg_stopqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_request_wfjgMx
- SET stopqty = :arg_stopqty,
- stopemp = :ls_stopemp,
- stopdate = :server_datetime,
- stopreason = :arg_stopreason
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using sqlca ;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF trycmplwfjg(arg_scid,arg_wfjgid,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using sqlca ;
- ELSEIF rslt = 1 And arg_commit THEN
- COMMIT Using sqlca ;
- END IF
- RETURN rslt
- end function
- public function integer uof_update_wfjg_flag (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- UPDATE u_Order_ml
- SET u_Order_ml.wfjg_flag = isnull(uv_order_request_wfjg_flag.flag,0)
- FROM u_request_wfjgmxmx INNER JOIN
- uv_order_request_wfjg_flag ON
- u_request_wfjgmxmx.scid = uv_order_request_wfjg_flag.scid AND
- u_request_wfjgmxmx.orderid = uv_order_request_wfjg_flag.OrderID INNER JOIN
- u_Order_ml ON uv_order_request_wfjg_flag.scid = u_Order_ml.scid AND
- uv_order_request_wfjg_flag.OrderID = u_Order_ml.OrderID
- WHERE u_request_wfjgmxmx.scid = :arg_scid
- And u_request_wfjgmxmx.wfjgid = :arg_wfjgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关生产计划外协申请单状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx (s_order_wfjgmx s_mx, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i,ll_j
- Int li_mtrlkind
- Long ll_sptmode,ll_sptid,ll_defsptid
- String ls_unit
- If it_newbegin = False And it_updatebegin = False Then
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- Goto ext
- End If
- If uo_option_requestwfjg_hz = -1000 Then
- arg_msg = '选项:[121]外协申请单汇总外协,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_wfjg_checkdate = -1000 Then
- arg_msg = '选项:[312]外协申请单保存不检查交货日期,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- //清除空值
- If IsNull(s_mx.iforder) Then s_mx.iforder = 0
- If IsNull(s_mx.orderid) Then s_mx.orderid = 0
- If IsNull(s_mx.ordercode) Then s_mx.ordercode = ''
- If IsNull(s_mx.mtrlid) Then s_mx.mtrlid = 0
- If IsNull(s_mx.qty) Then s_mx.qty = 0
- If IsNull(s_mx.pfcode) Then s_mx.pfcode = ''
- If IsNull(s_mx.dscrp) Then s_mx.dscrp = ''
- If IsNull(s_mx.mtrlcode) Then s_mx.mtrlcode = ''
- If IsNull(s_mx.printid) Then s_mx.printid = 0
- If IsNull(s_mx.jgdscrp) Then s_mx.jgdscrp = ''
- If IsNull(s_mx.status) Then s_mx.status = ''
- If IsNull(s_mx.woodcode) Then s_mx.woodcode = ''
- If IsNull(s_mx.pcode) Then s_mx.pcode = ''
- If IsNull(s_mx.requiredate) Then s_mx.requiredate = DateTime(Date('1900-01-01'),Time(0))
- If IsNull(s_mx.uqty) Then s_mx.uqty = 0
- If IsNull(s_mx.unit) Then s_mx.unit = ''
- If IsNull(s_mx.rate) Then s_mx.rate = 1
- If IsNull(s_mx.sonmtrlid) Then s_mx.sonmtrlid = 0
- If s_mx.mtrlid = 0 Or (s_mx.qty = 0 and s_mx.uqty = 0) Then
- rslt = 1
- Goto ext
- End If
- Select mtrlkind,sptmode,dftsptid,unit
- Into :li_mtrlkind,:ll_sptmode,:ll_sptid,:ls_unit
- From u_mtrldef
- Where u_mtrldef.mtrlid = :s_mx.mtrlid
- Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询物料:"+s_mx.mtrlcode+',MRP属性失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- //处理默认供应商
- If ll_sptmode = 0 Then //无默认供应商
- ll_defsptid = 0
- ElseIf ll_sptmode = 1 Then //按主供应商
- ll_defsptid = ll_sptid
- Else //自动带最低价供应商
- Select TOP 1 sptid Into :ll_sptid
- From u_spt_price
- Where (mtrlid = :s_mx.mtrlid)
- And (status = :s_mx.status)
- And (unit = :ls_unit)
- Order By fprice;
- If sqlca.SQLCode <> 0 Then
- ll_sptid = 0
- End If
- ll_defsptid = ll_sptid
- End If
- If uo_option_wfjg_checkdate = 0 Then
- If ifauto = 0 Then
- If s_mx.requiredate <> DateTime(Date('1900-01-01'),Time(0)) Then
- If Requiredate > s_mx.requiredate Then
- arg_msg = '交货日期不能在订货日期前'
- rslt = 0
- Goto ext
- End If
- End If
- End If
- End If
- If s_mx.iforder = 1 Then
- If li_mtrlkind = 1 Then
- arg_msg = '物料:'+s_mx.mtrlcode+',MRP属性设为不按计划,所以不能选择计划'
- rslt = 0
- Goto ext
- End If
-
- If s_mx.orderid = 0 Then
- arg_msg = '请先择相应的计划'
- rslt = 0
- Goto ext
- End If
-
- End If
- For ls_i = 1 To it_mxbtmx //合并重复项
- If wfjgmxmx[ls_i].mtrlid = s_mx.mtrlid And &
- wfjgmxmx[ls_i].orderid = s_mx.orderid And &
- wfjgmxmx[ls_i].status = s_mx.status And &
- wfjgmxmx[ls_i].woodcode = s_mx.woodcode And &
- wfjgmxmx[ls_i].Requiredate = s_mx.requiredate And &
- wfjgmxmx[ls_i].wrkGrpid = s_mx.wrkGrpid And &
- wfjgmxmx[ls_i].pcode = s_mx.pcode And &
- wfjgmxmx[ls_i].pfcode = s_mx.pfcode Then
-
- wfjgmxmx[ls_i].qty = wfjgmxmx[ls_i].qty+s_mx.qty
- wfjgmxmx[ls_i].uqty = wfjgmxmx[ls_i].uqty+s_mx.uqty
- rslt = 1
- Goto _next
- End If
- Next
- //写入内容
- it_mxbtmx++
- wfjgmxmx[it_mxbtmx].iforder = s_mx.iforder
- wfjgmxmx[it_mxbtmx].orderid = s_mx.orderid
- wfjgmxmx[it_mxbtmx].ordercode = s_mx.ordercode
- wfjgmxmx[it_mxbtmx].mtrlid = s_mx.mtrlid
- wfjgmxmx[it_mxbtmx].qty = s_mx.qty
- wfjgmxmx[it_mxbtmx].dscrp = s_mx.dscrp
- wfjgmxmx[it_mxbtmx].mtrlcode = s_mx.mtrlcode
- wfjgmxmx[it_mxbtmx].printid = s_mx.printid
- wfjgmxmx[it_mxbtmx].Requiredate = s_mx.requiredate
- wfjgmxmx[it_mxbtmx].jgdscrp = s_mx.jgdscrp
- wfjgmxmx[it_mxbtmx].status = s_mx.status
- wfjgmxmx[it_mxbtmx].woodcode = s_mx.woodcode
- wfjgmxmx[it_mxbtmx].pcode = s_mx.pcode
- wfjgmxmx[it_mxbtmx].wrkGrpid = s_mx.wrkGrpid
- wfjgmxmx[it_mxbtmx].pfcode = s_mx.pfcode
- wfjgmxmx[it_mxbtmx].sptid = ll_defsptid
- wfjgmxmx[it_mxbtmx].plancode = s_mx.plancode
- wfjgmxmx[it_mxbtmx].unit = s_mx.unit
- wfjgmxmx[it_mxbtmx].uqty = s_mx.uqty
- wfjgmxmx[it_mxbtmx].rate = s_mx.rate
- wfjgmxmx[it_mxbtmx].sonmtrlid = s_mx.sonmtrlid
- _next:
- If uo_option_requestwfjg_hz = 1 Then
- For ll_j = 1 To it_mxbt
- If wfjgmx[ll_j].mtrlid = s_mx.mtrlid And &
- wfjgmx[ll_j].status = s_mx.status And &
- wfjgmx[ll_j].woodcode = s_mx.woodcode And &
- Date(wfjgmx[ll_j].Requiredate) = Date(s_mx.requiredate) And &
- wfjgmx[ll_j].unit = s_mx.unit and &
- wfjgmx[ll_j].pcode = s_mx.pcode And &
- wfjgmx[ll_j].pfcode = s_mx.pfcode And &
- wfjgmx[ll_j].plancode = s_mx.plancode Then
-
- wfjgmx[ll_j].qty = wfjgmx[ll_j].qty+s_mx.qty
- wfjgmx[ll_j].uqty = wfjgmx[ll_j].uqty+s_mx.uqty
- wfjgmx[ll_j].iforder = 0
- wfjgmx[ll_j].ordercode = ''
- wfjgmx[ll_j].orderid = 0
- wfjgmx[ll_j].wrkGrpid = 0
- rslt = 1
- Goto ext
- End If
- Next
- End If
- it_mxbt++
- wfjgmx[it_mxbt].iforder = s_mx.iforder
- wfjgmx[it_mxbt].orderid = s_mx.orderid
- wfjgmx[it_mxbt].ordercode = s_mx.ordercode
- wfjgmx[it_mxbt].mtrlid = s_mx.mtrlid
- wfjgmx[it_mxbt].qty = s_mx.qty
- wfjgmx[it_mxbt].dscrp = s_mx.dscrp
- wfjgmx[it_mxbt].mtrlcode = s_mx.mtrlcode
- wfjgmx[it_mxbt].printid = s_mx.printid
- wfjgmx[it_mxbt].Requiredate = s_mx.requiredate
- wfjgmx[it_mxbt].jgdscrp = s_mx.jgdscrp
- wfjgmx[it_mxbt].status = s_mx.status
- wfjgmx[it_mxbt].woodcode = s_mx.woodcode
- wfjgmx[it_mxbt].pcode = s_mx.pcode
- wfjgmx[it_mxbt].wrkGrpid = s_mx.wrkGrpid
- wfjgmx[it_mxbt].pfcode = s_mx.pfcode
- wfjgmx[it_mxbt].sptid = ll_defsptid
- wfjgmx[it_mxbt].plancode = s_mx.plancode
- wfjgmx[it_mxbt].unit = s_mx.unit
- wfjgmx[it_mxbt].uqty = s_mx.uqty
- wfjgmx[it_mxbt].rate = s_mx.rate
- wfjgmx[it_mxbt].sonmtrlid = s_mx.sonmtrlid
- ext:
- If rslt = 0 Then p_clearmx()
- Return(rslt)
- end function
- public function integer acceptmx_out (s_order_wfjgmx_out s_mx, ref string arg_msg);//return 0 fail 1 success
- // 函数增加一个明细项
- Long rslt = 1,cnt = 0,ls_i
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
- IF IsNull(s_mx.qty) THEN s_mx.qty = 0
- IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = ''
- IF IsNull(s_mx.printid) THEN s_mx.printid = 0
- IF IsNull(s_mx.status) THEN s_mx.status = ''
- IF IsNull(s_mx.woodcode) THEN s_mx.woodcode = ''
- IF IsNull(s_mx.pcode) THEN s_mx.pcode = ''
- If IsNull(s_mx.uqty) Then s_mx.uqty = 0
- If IsNull(s_mx.unit) Then s_mx.unit = ''
- If IsNull(s_mx.rate) Then s_mx.rate = 1
- IF s_mx.mtrlid = 0 OR (s_mx.qty = 0 and s_mx.uqty = 0) THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- rslt = 1
- GOTO ext
- END IF
- //检查物料id
- SELECT count(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :s_mx.mtrlid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,物料编号"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的产品编号: "+String(s_mx.mtrlcode)
- GOTO ext
- END IF
- FOR ls_i = 1 TO it_mxbt_out //合并重复项
- IF wfjgmx_out[ls_i].mtrlid = s_mx.mtrlid AND &
- wfjgmx_out[ls_i].status = s_mx.status AND &
- wfjgmx_out[ls_i].woodcode = s_mx.woodcode AND &
- wfjgmx_out[ls_i].pcode = s_mx.pcode THEN
- wfjgmx_out[ls_i].qty = wfjgmx_out[ls_i].qty+s_mx.qty
- wfjgmx_out[ls_i].uqty = wfjgmx_out[ls_i].uqty+s_mx.uqty
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt_out++
- wfjgmx_out[it_mxbt_out].mtrlid = s_mx.mtrlid
- wfjgmx_out[it_mxbt_out].qty = s_mx.qty
- wfjgmx_out[it_mxbt_out].mtrlcode = s_mx.mtrlcode
- wfjgmx_out[it_mxbt_out].printid = s_mx.printid
- wfjgmx_out[it_mxbt_out].status = s_mx.status
- wfjgmx_out[it_mxbt_out].woodcode = s_mx.woodcode
- wfjgmx_out[it_mxbt_out].pcode = s_mx.pcode
- wfjgmx_out[it_mxbt_out].unit = s_mx.unit
- wfjgmx_out[it_mxbt_out].uqty = s_mx.uqty
- wfjgmx_out[it_mxbt_out].rate = s_mx.rate
- ext:
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- end function
- 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 必须为外协单位
- Int rslt = 1
- Long cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- arg_msg = "外协申请单只有在进行或完成状态下才可以执行操作"
- GOTO ext
- END IF
- Decimal lde_uqty,lde_consignedqty,ld_sum_consignedqty
- String ls_mtrlcode
- Long ll_orderid,ll_wrkGrpid,ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- decimal lde_thqty, lde_fgqty
- SELECT u_mtrldef.mtrlcode,
- u_request_wfjgMx.orderid,
- u_request_wfjgMx.wrkGrpid,
- u_request_wfjgMx.mtrlid,
- u_request_wfjgMx.status,
- u_request_wfjgMx.woodcode,
- u_request_wfjgMx.pcode,
- u_request_wfjgMx.uqty,
- u_request_wfjgMx.consignedqty,
- u_request_wfjgMx.thqty,
- u_request_wfjgMx.fgqty
- INTO :ls_mtrlcode,
- :ll_orderid,
- :ll_wrkGrpid,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :lde_uqty,
- :lde_consignedqty,
- :lde_thqty,
- :lde_fgqty
- FROM u_mtrldef,u_request_wfjgMx
- WHERE u_mtrldef.mtrlid = u_request_wfjgMx.mtrlid
- AND u_request_wfjgMx.scid = :arg_scid
- AND u_request_wfjgMx.wfjgid = :arg_wfjgid
- AND u_request_wfjgMx.printid = :arg_printid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询外协申请单明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF lde_consignedqty < lde_thqty + arg_addqty THEN
- rslt = 0
- arg_msg = "外协申请物料:"+ls_mtrlcode+",的已安排数量只有"+String(lde_consignedqty - lde_thqty,'#,##0.0###')+",不能退回"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- IF lde_thqty + arg_addqty < lde_fgqty THEN
- rslt = 0
- arg_msg = "外协申请物料:"+ls_mtrlcode+",的已返工数量"+String(lde_fgqty,'#,##0.0###')+",不能取消退回"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_request_wfjgMx
- SET thqty = thqty + :arg_addqty
- WHERE ( u_request_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_request_wfjgMx.printid = :arg_printid ) AND
- ( u_request_wfjgMx.scid = :arg_scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新外协申请单已安排退回数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- 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 必须为外协单位
- Int rslt = 1
- Long cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协申请单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 0
- arg_msg = "外协申请单只有在进行或完成状态下才可以执行操作"
- GOTO ext
- END IF
- Decimal lde_uqty,lde_consignedqty,ld_sum_consignedqty
- String ls_mtrlcode
- Long ll_orderid,ll_wrkGrpid,ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- decimal lde_thqty, lde_fgqty
- SELECT u_mtrldef.mtrlcode,
- u_request_wfjgMx.orderid,
- u_request_wfjgMx.wrkGrpid,
- u_request_wfjgMx.mtrlid,
- u_request_wfjgMx.status,
- u_request_wfjgMx.woodcode,
- u_request_wfjgMx.pcode,
- u_request_wfjgMx.uqty,
- u_request_wfjgMx.consignedqty,
- u_request_wfjgMx.thqty,
- u_request_wfjgMx.fgqty
- INTO :ls_mtrlcode,
- :ll_orderid,
- :ll_wrkGrpid,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :lde_uqty,
- :lde_consignedqty,
- :lde_thqty,
- :lde_fgqty
- FROM u_mtrldef,u_request_wfjgMx
- WHERE u_mtrldef.mtrlid = u_request_wfjgMx.mtrlid
- AND u_request_wfjgMx.scid = :arg_scid
- AND u_request_wfjgMx.wfjgid = :arg_wfjgid
- AND u_request_wfjgMx.printid = :arg_printid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询外协申请单明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF lde_thqty < lde_fgqty + arg_addqty THEN
- rslt = 0
- arg_msg = "外协申请物料:"+ls_mtrlcode+",的退回未返工数量只有"+String(lde_thqty - lde_fgqty,'#,##0.0###')+",不能返工"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- IF lde_fgqty + arg_addqty < 0 THEN
- rslt = 0
- arg_msg = "外协申请物料:"+ls_mtrlcode+",的已返工数量"+String(lde_fgqty,'#,##0.0###')+",不能返工"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_request_wfjgMx
- SET fgqty = fgqty + :arg_addqty
- WHERE ( u_request_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_request_wfjgMx.printid = :arg_printid ) AND
- ( u_request_wfjgMx.scid = :arg_scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新外协申请单已安排退回数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- 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 审核 增加
- // arg_addqty < 0 撤审 减少
- Int rslt = 1
- Long ll_i, ll_k
- Long ll_cnt_order
- Long ll_orderid, ll_mtrlid_order
- Int li_ordertype_order, li_ifwfjgorder
- Decimal lde_addqty
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划已进仓数
- Decimal lde_addqty_allow, ld_qty
- Decimal lde_orderqty, lde_acmpqty, lde_stopqty, lde_unacmpqty
- lde_addqty = Abs(arg_addqty)
- ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- IF ll_orderid = 0 THEN CONTINUE
-
- li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
- li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
- ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_acmpqty = ds_rqwfjg.Object.acmpqty[ll_k]
- lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
- lde_unacmpqty = ds_rqwfjg.Object.unacmpqty[ll_k]
-
- //更新外协主生产计划已进仓数
- If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = arg_mtrlid THEN
-
- IF arg_addqty > 0 THEN
- lde_addqty_allow = lde_unacmpqty
- ELSE
- lde_addqty_allow = lde_acmpqty
- END IF
-
- IF lde_addqty_allow > 0 THEN
- ld_qty = Min(lde_addqty, lde_addqty_allow) //本条处理数
- lde_addqty -= ld_qty //未处理数
-
- IF ld_qty > 0 THEN
- IF arg_addqty > 0 THEN //增加
- //ld_qty = ld_qty
- ELSE //减少
- ld_qty = 0 - ld_qty
- END IF
-
- IF uo_order.addmxcmpl(arg_scid,ll_orderid,ld_qty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_order.tryfinishorder(arg_scid,ll_orderid,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF lde_addqty <= 0 THEN EXIT // 完成
- END IF
- END IF
- NEXT
- ext:
- Destroy uo_order
- Destroy ds_rqwfjg
- RETURN rslt
- end function
- 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 审核 增加
- // arg_addqty < 0 撤审 减少
- Int rslt = 1
- Long ll_i, ll_k, ll_m, ll_lp, ll_row_f
- String ls_mtrlcode_out
- Decimal ld_costamt_out ,ld_qty_out,ld_cost_out, ld_overqty
- Long ll_wrkgrpid_out,ll_mtrlid_out
- String ls_status_out,ls_woodcode_out,ls_pcode_out
- Long ll_cnt_order
- Long ll_orderid, ll_mtrlid_order, ll_workgroupid
- Int li_ordertype_order, li_ifwfjgorder
- String ls_wrkgrpname
- Decimal lde_addqty
- Decimal dec_round //= 2 //计算发出明细保留小数位, 取自外协订单界面
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- datastore ds_mrpmx
- ds_mrpmx = Create datastore
- ds_mrpmx.DataObject = 'ds_order_ml_mrpmx_to_wfjg'
- ds_mrpmx.SetTransObject(sqlca)
- Dec lde_addqty_out_allow, lde_addqty_out_detrqty_allow, lde_addqty_out_ed, lde_sonscale
- Long ll_cnt_tree
- //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划已进仓数
- Decimal lde_addqty_allow, ld_qty
- Decimal lde_orderqty, lde_acmpqty, lde_stopqty, lde_unacmpqty
- lde_addqty = Abs(arg_addqty)
- dec_round = arg_dec_round
- ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- IF ll_orderid = 0 THEN CONTINUE
-
- li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
- li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
- ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_acmpqty = ds_rqwfjg.Object.acmpqty[ll_k]
- lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
- lde_unacmpqty = ds_rqwfjg.Object.unacmpqty[ll_k]
-
- ll_cnt_tree = ds_mrpmx.Retrieve(arg_scid,ll_orderid)
- ll_row_f = ds_mrpmx.Find("u_orderrqmtrl_tree_mtrlid = "+String(arg_mtrlid),1,ds_mrpmx.RowCount())
-
- IF ll_row_f > 0 THEN
- ll_lp = ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_row_f]
-
- FOR ll_m = ll_row_f + 1 To ds_mrpmx.RowCount()
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] <= ll_lp THEN EXIT
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] = ll_lp + 1 &
- And ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] > 0 THEN
-
- ls_mtrlcode_out = ds_mrpmx.Object.u_mtrldef_mtrlcode[ll_m]
- ll_wrkgrpid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_wrkgrpid[ll_m]
- ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m]
- ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_m]
- ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_m]
- ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_m]
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_sonscale[ll_m]
- IF lde_sonscale = 0 THEN
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] / ds_mrpmx.Object.u_orderrqmtrl_tree_truerqqty[ll_row_f]
- END IF
-
- //找有多少未完成数, 分配完成
- SELECT sum(truerqqty - dstrqty) , sum(dstrqty)
- INTO :lde_addqty_out_allow, :lde_addqty_out_detrqty_allow
- FROM u_orderrqmtrl
- WHERE scid = :arg_scid
- AND orderid = :ll_orderid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- And truerqqty > dstrqty ;
- IF sqlca.SQLCode <> 0 THEN
- lde_addqty_out_allow = 0
- lde_addqty_out_detrqty_allow = 0
- END IF
-
- IF lde_addqty_out_allow > 0 THEN
- ld_qty_out = Min(Round(lde_addqty * lde_sonscale,dec_round) - lde_addqty_out_ed, lde_addqty_out_allow)
- lde_addqty_out_ed += ld_qty_out
-
- IF ld_qty_out <> 0 THEN
- //
- SELECT top 1 cost INTO :ld_cost_out
- FROM ow_wfjgware
- WHERE sptid = :sptid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- AND scid = :scid
- Order By cost Desc Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_cost_out = 0
- END IF
-
- ld_costamt_out = ld_qty_out * ld_cost_out
-
- IF ll_wrkgrpid_out > 0 THEN
- SELECT wrkgrpname
- INTO :ls_wrkgrpname
- FROM u_sc_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT TOP 1 workgroupid
- INTO :ll_workgroupid
- FROM u_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组 '+ls_wrkgrpname+' 相关的工作中心失败,可能是工组没有设置对应的工作中心,请检查'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ll_workgroupid = 0
- END IF
-
- 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
- arg_msg = '更新生产计划已领数失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
-
- END IF
- IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
- NEXT
- IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
- END IF
-
- NEXT
- ext:
- Destroy uo_order
- Destroy ds_rqwfjg
- Destroy ds_mrpmx
- RETURN rslt
- end function
- 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);//待测
- // arg_addqty > 0 审核 增加
- // arg_addqty < 0 撤审 减少
- Int rslt = 1
- Long ll_j, ll_k, ll_m, ll_lp, ll_row_f
- String ls_mtrlcode_out
- Decimal ld_costamt_out ,ld_qty_out,ld_cost_out, ld_overqty
- Long ll_wrkgrpid_out,ll_mtrlid_out
- String ls_status_out,ls_woodcode_out,ls_pcode_out
- Long ll_cnt_order
- Long ll_orderid, ll_mtrlid_order, ll_workgroupid
- //Int li_ordertype_order, li_ifwfjgorder
- String ls_wrkgrpname
- Decimal lde_addqty_out
- Decimal dec_round //= 2 //计算发出明细保留小数位, 取自外协订单界面
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- datastore ds_mrpmx
- ds_mrpmx = Create datastore
- ds_mrpmx.DataObject = 'ds_order_ml_mrpmx_to_wfjg'
- ds_mrpmx.SetTransObject(sqlca)
- Dec lde_addqty_out_allow, lde_addqty_out_detrqty_allow, lde_addqty_out_ed, lde_sonscale
- Long ll_cnt_tree
- s_order_wfjgmx_out s_mx[]
- //1.通过外协申请单,找到对应的主计划,
- dec_round = arg_dec_round
- ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- IF ll_orderid = 0 THEN CONTINUE
-
- ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
-
- ll_cnt_tree = ds_mrpmx.Retrieve(arg_scid,ll_orderid, ll_mtrlid_order)
-
- FOR ll_m = 1 To ds_mrpmx.RowCount()
-
- ls_mtrlcode_out = ds_mrpmx.Object.u_mtrldef_mtrlcode[ll_m]
- ll_wrkgrpid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_wrkgrpid[ll_m]
- ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m]
- ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_m]
- ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_m]
- ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_m]
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_sonscale[ll_m]
- lde_addqty_out_allow = ds_mrpmx.Object.undstrqty[ll_m]
- lde_addqty_out_detrqty_allow = ds_mrpmx.Object.dstrqty[ll_m]
- //找有多少未完成数, 分配完成
-
-
- FOR ll_j = 1 To UpperBound(s_mx)
- IF s_mx[ll_j].mtrlid = ll_mtrlid_out &
- And s_mx[ll_j].status = ls_status_out &
- And s_mx[ll_j].woodcode = ls_woodcode_out &
- And s_mx[ll_j].pcode = ls_pcode_out THEN
- lde_addqty_out = s_mx[ll_j].qty
- GOTO cmplmtrl
- END IF
- NEXT
-
- s_mx[ll_j].mtrlid = ll_mtrlid_out
- s_mx[ll_j].status = ls_status_out
- s_mx[ll_j].woodcode = ls_woodcode_out
- s_mx[ll_j].pcode = ls_pcode_out
- s_mx[ll_j].qty = Round(Abs(arg_addqty) * lde_sonscale,dec_round)
- lde_addqty_out = s_mx[ll_j].qty
-
- cmplmtrl:
- IF lde_addqty_out = 0 THEN CONTINUE //主要考虑的是 1:N的处理
- IF lde_addqty_out_allow > 0 THEN
- ld_qty_out = Min(lde_addqty_out, lde_addqty_out_allow)
- lde_addqty_out -= ld_qty_out
-
- IF ld_qty_out <> 0 THEN
- //
- SELECT top 1 cost INTO :ld_cost_out
- FROM ow_wfjgware
- WHERE sptid = :arg_sptid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- AND scid = :arg_scid
- Order By cost Desc Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_cost_out = 0
- END IF
-
- ld_costamt_out = ld_qty_out * ld_cost_out
-
- IF ll_wrkgrpid_out > 0 THEN
- SELECT wrkgrpname
- INTO :ls_wrkgrpname
- FROM u_sc_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT TOP 1 workgroupid
- INTO :ll_workgroupid
- FROM u_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组 '+ls_wrkgrpname+' 相关的工作中心失败,可能是工组没有设置对应的工作中心,请检查'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ll_workgroupid = 0
- END IF
-
- 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
- arg_msg = '更新生产计划已领数失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- END IF
- s_mx[ll_j].qty = lde_addqty_out
- //IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
- NEXT
- //IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
- NEXT
- ext:
- Destroy uo_order
- Destroy ds_rqwfjg
- Destroy ds_mrpmx
- RETURN rslt
- end function
- 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 审核 增加
- // arg_addqty < 0 撤审 减少
- Int rslt = 1
- Long ll_i, ll_k
- Long ll_cnt_order
- Long ll_orderid, ll_mtrlid_order
- Int li_ordertype_order, li_ifwfjgorder
- Decimal lde_addqty
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划已申购数, 更新主生产计划物料需求已申购数
- Decimal lde_addqty_allow, ld_qty
- Decimal lde_orderqty, lde_rqacmpqty, lde_stopqty, lde_unrqacmpqty
- lde_addqty = Abs(arg_addqty)
- ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,arg_wfjgid,arg_printid)
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- IF ll_orderid = 0 THEN CONTINUE
-
- li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
- li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
- ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_rqacmpqty = ds_rqwfjg.Object.rqacmpqty[ll_k]
- lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
- lde_unrqacmpqty = ds_rqwfjg.Object.unrqacmpqty[ll_k]
-
- //更新外协主生产计划已进仓数
- If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = arg_mtrlid THEN
-
- IF arg_addqty > 0 THEN
- lde_addqty_allow = lde_unrqacmpqty
- ELSE
- lde_addqty_allow = lde_rqacmpqty
- END IF
-
- IF lde_addqty_allow > 0 THEN
- ld_qty = Min(lde_addqty, lde_addqty_allow) //本条处理数
- lde_addqty -= ld_qty //未处理数
-
- IF ld_qty > 0 THEN
- IF arg_addqty > 0 THEN //增加
- //ld_qty = ld_qty
- ELSE //减少
- ld_qty = 0 - ld_qty
- END IF
-
- IF uo_order.addmxcmpl_rqacmpqty(arg_scid,ll_orderid,ld_qty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF lde_addqty <= 0 THEN EXIT // 完成
- END IF
- END IF
- NEXT
- ext:
- Destroy uo_order
- Destroy ds_rqwfjg
- RETURN rslt
- end function
- on uo_request_wfjg.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_request_wfjg.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;
- String arg_msg
- String str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('121',str_optionvalue,arg_msg)
- uo_option_requestwfjg_hz = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('312',str_optionvalue,arg_msg)
- uo_option_wfjg_checkdate = Long(str_optionvalue)
- end event
|