123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916 |
- $PBExportHeader$uo_order_ml_mrp.sru
- forward
- global type uo_order_ml_mrp from nonvisualobject
- end type
- end forward
- global type uo_order_ml_mrp from nonvisualobject
- end type
- global uo_order_ml_mrp uo_order_ml_mrp
- type variables
- Long deep,deep_scll
- Boolean ifzl_mtrl_not_useqty,ifzl_mtrl_pwx_not_useqty,ifwx_mtrl_not_useqty,if_pqty_not_zl,ifpack_mtrl_not_useqty
- Boolean if_rqwfjg_useqty,if_rqbuy_useqty
- Boolean if_qty_dscrp = False
- Boolean if_uof_add_rqmtrl_del_old = True
- Int if_otherrq_mrpaudit = 1
- Int uo_option_packpro2_pf_pack2_useifover
- Int uo_option_ifpackpro2_if_no_pack2
- Int uo_option_produce_dec
- Long ins_produce_wrkgrpid_bj,ins_wrkGrpid_scll_bj
- int uo_option_scll_ifchanged
- end variables
- forward prototypes
- public function integer uof_add_rqmtrl_scll (s_order_ml_rqmtrl arg_s_mtrl, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_add_rqmtrl (s_order_ml_rqmtrl arg_s_mtrl, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_check_dstrqty (long arg_scid, long arg_orderid, ref string arg_msg)
- public function integer uof_add_rqmtrl_tree (s_order_ml_rqmtrl arg_s_mtrl, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_get_qty (integer arg_type, integer arg_ifdate, datetime arg_enddate, long arg_scid, long arg_orderid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_ref_qty, ref string arg_msg)
- public function integer uof_del_rqmtrl_scll (long arg_scid, long arg_orderid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_get_other_rqqty (long arg_scid, long arg_orderid, long arg_mtrlid, integer arg_plantype, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_ref_qty, integer arg_ifdate, datetime arg_date, ref string arg_msg)
- public function integer uof_get_rqmtrl (long arg_scid, long arg_orderid, long arg_porderid, ref s_order_ml_rqmtrl arg_ref_s_rqmtrl, ref string arg_msg)
- public function integer uof_pfcode_check (long arg_mtrlid, string arg_mtrlcode, string arg_pfcode, ref string arg_msg)
- private function integer uof_get_max_advancetime (long arg_mtrlid, string arg_pfcode, ref decimal arg_ref_advancetime, ref string arg_msg)
- public function integer uof_get_prdpf_dytype (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid, long arg_wrkgrpid, string arg_sonpfcode, ref integer arg_ref_dytype, ref string arg_msg)
- public function integer uof_get_prdpf_replace (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid, long arg_wrkgrpid, string arg_sonpfcode, ref s_prdpf_replace arg_ref_s_replace, ref string arg_msg)
- public subroutine uof_cmpl_rqmtrl_dy_mx (long arg_begin_i, integer arg_dy, ref s_order_ml_rqmtrl arg_s_mtrl, s_prdpf_replace arg_pf_dy)
- public function integer uof_cmpl_rqmtrl_change (long arg_scid, long arg_pmtrlid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_pfcode, decimal arg_qty, long arg_wrkgrpid_scll, datetime arg_rqdate, string arg_gydscrp, string arg_pfklmode, string arg_pfgroup, string arg_pfgroupmode, decimal arg_advancetime, decimal arg_sonloss, decimal arg_sondecloss, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg)
- public function integer uof_get_prdpf_sonloss (string arg_sonlossstr, decimal arg_qty, ref decimal arg_sonloss)
- public function integer uof_get_qty_dscrp (integer arg_type, integer arg_ifdate, datetime arg_enddate, long arg_scid, long arg_orderid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_ref_dscrp, ref string arg_msg)
- private function integer uof_get_max_advancetime2 (long arg_mtrlid, string arg_status, ref decimal arg_ref_advancetime, ref string arg_msg)
- public function integer uof_cmpl_rqmtrl_fp (long arg_scid, long arg_orderid, integer arg_if_allowuse, integer arg_ifdate, datetime arg_enddate, s_order_ml_rqmtrl arg_s_mtrl, ref s_mtrlware_assign_plan arg_ref_s_assign_plan, ref string arg_msg)
- public function integer uof_cmpl_rqmtrl_dy (integer arg_ifdate, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg)
- public function integer uof_aps_update_date (long arg_scid, long arg_orderid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_cmpl_rqmtrl (long arg_lp, s_mrp_arg arg_s_mrp, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg)
- public function integer uof_cmpl_rqmtrl_re (long arg_lp, integer arg_plantype, s_mrp_arg arg_s_mrp, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg)
- public function integer uof_saletaskmx_pf_add (s_saletaskmx_pf arg_s_stpf, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_saletaskmx_pf_del (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_rqmtrl_scll_find (long arg_p, long arg_p_mtrlid, integer arg_ifpackpro, string arg_status, string arg_woodcode, string arg_pcode, s_order_ml_rqmtrl arg_s_mtrl, ref s_order_ml_rqmtrl_scll arg_s_mtrl_scll, long arg_e, ref string arg_msg)
- end prototypes
- public function integer uof_add_rqmtrl_scll (s_order_ml_rqmtrl arg_s_mtrl, boolean arg_ifcommit, ref string arg_msg);//保存领料明细
- Int rslt = 1
- Long ll_i,cnt,i
- Long ll_mtrlid,ll_porderid,ll_mxid,ll_mtrlid_p
- Long ll_scid,ll_orderid
- String ls_mtrlcode
- Decimal ld_orderqty_zl,ld_orderqty_p
- Int li_ordertype,li_ifpackpro,li_ifpack,li_ordertype_mtrldef,li_mtrlorigin_mtrldef,li_ifselforder_mtrldef
- Decimal ld_rate,ld_zlmxqty,ld_rqmxqty
- Int li_outscllflag,li_iffp
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_assignqty_order,ld_fpqty_zl,ld_assignqty_update
- Int li_iffg,li_ifauto
- s_order_ml_rqmtrl_scll arg_s_mtrl_scll
- ll_scid = arg_s_mtrl.scid[1]
- ll_orderid = arg_s_mtrl.orderid[1]
- uo_mtrlware_assign uo_scll_fp
- uo_scll_fp = Create uo_mtrlware_assign
- uo_scll_fp.commit_transaction = sqlca
- datastore ds_order_mtrl_fp_2_zl
- ds_order_mtrl_fp_2_zl = Create datastore
- ds_order_mtrl_fp_2_zl.DataObject = 'ds_zl_scllqty_from_orderrqmtrl_fp'
- ds_order_mtrl_fp_2_zl.SetTransObject(sqlca)
- SELECT u_order_ml.mtrlid,
- u_order_ml.orderqty,
- u_order_ml.ordertype,
- u_order_ml.outscllflag,
- u_mtrldef.ifpackpro,
- u_mtrldef.mtrlorigin,
- u_mtrldef.ordertype,
- u_order_ml.status_mode,
- u_order_ml.woodcode,
- u_order_ml.pcode,
- u_order_ml.iffg,
- u_order_ml.ifauto,
- u_mtrldef.ifselforder
- INTO :ll_mtrlid,
- :ld_orderqty_zl,
- :li_ordertype,
- :li_outscllflag,
- :li_ifpackpro,
- :li_mtrlorigin_mtrldef,
- :li_ordertype_mtrldef,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :li_iffg,
- :li_ifauto,
- :li_ifselforder_mtrldef
- FROM u_order_ml,u_mtrldef
- WHERE u_order_ml.mtrlid = u_mtrldef.mtrlid
- AND u_order_ml.orderid = :ll_orderid
- And u_order_ml.scid = :ll_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- DELETE FROM u_ordermtrl_wrk_mtrl
- Where scid = :ll_scid And orderid = :ll_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除指令工组足料提示表工组资料失败,操作取消'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //不是领料
- IF li_outscllflag = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- //非包件产品,指令单分离的主生产计划
- //IF li_ifpackpro = 0 And li_ordertype_mtrldef = 1 And li_ordertype <> 4 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- //包件产品,不使用包件清单的主生产计划
- //IF li_ifpackpro = 1 And li_ifmrppackpf = 0 And li_ordertype <> 4 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- IF li_mtrlorigin_mtrldef = 2 THEN
- arg_s_mtrl_scll.mtrlid[1] = ll_mtrlid
- arg_s_mtrl_scll.wrkgrpid[1] = ins_wrkGrpid_scll_bj
- arg_s_mtrl_scll.status[1] = ls_status
- arg_s_mtrl_scll.woodcode[1] = ls_woodcode
- arg_s_mtrl_scll.pcode[1] = ls_pcode
- arg_s_mtrl_scll.truerqqty[1] = ld_orderqty_zl
- ELSE
- IF uof_add_rqmtrl_scll_find(1,ll_mtrlid,li_ifpackpro,ls_status,ls_woodcode,ls_pcode,arg_s_mtrl,arg_s_mtrl_scll,UpperBound(arg_s_mtrl.mtrlid),arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //yyx 090409 指令分数量排产
- IF li_ordertype = 4 And Not (li_iffg = 1 And li_ifauto = 1 ) THEN
-
- ll_porderid = arg_s_mtrl.porderid[1]
-
- SELECT qty,taskmxid
- INTO :ld_zlmxqty,:ll_mxid
- FROM u_order_ml_mx
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- And taskid = :ll_porderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令明细排产数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_zlmxqty = 0 THEN
- arg_msg = '错误的指令明细排产数'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT mtrlid,orderqty
- INTO :ll_mtrlid_p,:ld_orderqty_p
- FROM u_order_ml
- WHERE scid = :ll_scid
- And orderid = :ll_porderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令所属主生产计划物料id失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT truerqqty INTO :ld_rqmxqty
- FROM u_orderrqmtrl
- WHERE scid = :ll_scid
- And mxpkid = :ll_mxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询上级计划需求明细需求数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_rqmxqty = 0 THEN
- arg_msg = '错误的上级计划需求明细需求数'
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ordertype_mtrldef = 1 And ll_mtrlid_p = ll_mtrlid THEN
- ld_rate = Round(ld_orderqty_zl/ld_orderqty_p,10)
- ELSE
- ld_rate = Round(ld_zlmxqty/ld_rqmxqty,10)
- END IF
- ELSE
- ld_rate = 1
- END IF
- //yyx 090409
- FOR ll_i = 1 To UpperBound(arg_s_mtrl_scll.mtrlid)
-
- IF arg_s_mtrl_scll.truerqqty[ll_i] = 0 THEN CONTINUE
-
- SELECT mtrlcode,ifpack,iffp
- INTO :ls_mtrlcode,:li_ifpack,:li_iffp
- FROM u_mtrldef
- Where mtrlid = :arg_s_mtrl_scll.mtrlid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ifpackpro = 1 And li_ifpack = 1 THEN CONTINUE
- IF li_ifpackpro = 2 And li_ifselforder_mtrldef = 3 THEN CONTINUE
-
- UPDATE u_OrderRqMtrl_scll
- SET truerqqty = truerqqty + round(:arg_s_mtrl_scll.truerqqty[ll_i] * :ld_rate,:uo_option_produce_dec)
- WHERE orderid = :ll_orderid
- AND scid = :ll_scid
- AND mtrlid = :arg_s_mtrl_scll.mtrlid[ll_i]
- AND status = :arg_s_mtrl_scll.status[ll_i]
- AND woodcode = :arg_s_mtrl_scll.woodcode[ll_i]
- AND pcode = :arg_s_mtrl_scll.pcode[ll_i]
- And wrkgrpid = :arg_s_mtrl_scll.wrkgrpid[ll_i];
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_OrderRqMtrl_scll
- (scid,
- orderid,
- mtrlid,
- status,
- woodcode,
- pcode,
- truerqqty,
- DstrQty,
- wrkGrpid)
- VALUES
- (:ll_scid,
- :ll_orderid,
- :arg_s_mtrl_scll.mtrlid[ll_i],
- :arg_s_mtrl_scll.status[ll_i],
- :arg_s_mtrl_scll.woodcode[ll_i],
- :arg_s_mtrl_scll.pcode[ll_i],
- round(:arg_s_mtrl_scll.truerqqty[ll_i] * :ld_rate,:sys_option_produce_dec),
- 0,
- :arg_s_mtrl_scll.wrkgrpid[ll_i]);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',建立生产计划物料领料明细失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- arg_msg = '物料:'+ls_mtrlcode+',更新物料用料明细表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //工组是否足料表
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_ordermtrl_wrk_mtrl
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- And wrkgrpid = :arg_s_mtrl_scll.wrkgrpid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令工组足料提示表是否存在工组id:'+String(arg_s_mtrl_scll.wrkgrpid[ll_i])+' 失败,操作取消'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- INSERT INTO u_ordermtrl_wrk_mtrl(scid,orderid,wrkGrpid)
- Values(:ll_scid,:ll_orderid,:arg_s_mtrl_scll.wrkgrpid[ll_i]);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '增加指令工组足料提示表工组id:'+String(arg_s_mtrl_scll.wrkgrpid[ll_i])+' 失败,操作取消'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //分配
- IF ll_porderid > 0 And li_iffp = 1 THEN
- ds_order_mtrl_fp_2_zl.Retrieve(ll_scid,ll_porderid,arg_s_mtrl_scll.mtrlid[ll_i],arg_s_mtrl_scll.status[ll_i],arg_s_mtrl_scll.woodcode[ll_i],arg_s_mtrl_scll.pcode[ll_i],arg_s_mtrl_scll.wrkgrpid[ll_i])
- ld_assignqty_order = arg_s_mtrl_scll.truerqqty[ll_i] * ld_rate
-
- FOR i = 1 To ds_order_mtrl_fp_2_zl.RowCount()
-
- IF ld_assignqty_order > 0 THEN
- ld_fpqty_zl = ds_order_mtrl_fp_2_zl.Object.notfpqty[i]
-
- IF ld_fpqty_zl > ld_assignqty_order THEN
- ld_assignqty_update = ld_assignqty_order
- ld_assignqty_order = 0
- ELSE
- ld_assignqty_update = ld_fpqty_zl
- ld_assignqty_order = ld_assignqty_order - ld_fpqty_zl
- END IF
-
- IF uo_scll_fp.uof_assign_add_to_zl_scll(ll_scid,ll_orderid,arg_s_mtrl_scll.mtrlid[ll_i],&
- arg_s_mtrl_scll.wrkgrpid[ll_i],arg_s_mtrl_scll.status[ll_i],arg_s_mtrl_scll.woodcode[ll_i],&
- arg_s_mtrl_scll.pcode[ll_i],ld_assignqty_update,&
- 0,0,0,arg_msg,False) = 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',建立指令单用料分配数失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_scll_fp
- Destroy ds_order_mtrl_fp_2_zl
- RETURN rslt
- end function
- public function integer uof_add_rqmtrl (s_order_ml_rqmtrl arg_s_mtrl, boolean arg_ifcommit, ref string arg_msg);//保存需求明细
- Int rslt = 1
- Long ll_i,ll_mtrlid_order
- Int li_ordertype_order_ml,li_ifwforder
- Int li_ordertype
- String ls_mtrlcode
- Long cnt
- Int li_ifselforder,li_statusflag,li_mtrlorigin
- IF if_uof_add_rqmtrl_del_old THEN
- DELETE FROM u_orderRqMtrl
- WHERE orderid = :arg_s_mtrl.orderid[1]
- And scid = :arg_s_mtrl.scid[1];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除原用料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- SELECT mtrlid INTO :ll_mtrlid_order
- FROM u_order_ml
- WHERE orderid = :arg_s_mtrl.orderid[1]
- And scid = :arg_s_mtrl.scid[1];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除主生产计划物料id失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 To UpperBound(arg_s_mtrl.mtrlid)
-
- SELECT mtrlcode,ifselforder,statusflag,ordertype,mtrlorigin
- INTO :ls_mtrlcode,:li_ifselforder,:li_statusflag,:li_ordertype,:li_mtrlorigin
- FROM u_mtrldef
- Where mtrlid = :arg_s_mtrl.mtrlid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',查询物料资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //个性包件不加入需求表
- IF arg_s_mtrl.ifpack[ll_i] = 2 And arg_s_mtrl.mtrlid[ll_i] <> ll_mtrlid_order THEN CONTINUE
-
- //检查组合配置包件产品
- IF arg_s_mtrl.ifcfg[ll_i] = 1 THEN //子件
- IF arg_s_mtrl.ifpackpro[ll_i] <> 3 THEN CONTINUE
- END IF
-
- IF arg_s_mtrl.ifcfg[ll_i] = 0 THEN
- IF arg_s_mtrl.ifpackpro[ll_i] = 3 THEN CONTINUE
- END IF
-
- IF arg_s_mtrl.ifmainmtrlid[ll_i] = 1 THEN
- //更新计划开始日期
- IF sys_option_ifuse_ordersdate = 1 THEN
- UPDATE u_order_ml
- SET orderdate = :arg_s_mtrl.edate[1]
- WHERE orderid = :arg_s_mtrl.orderid[1]
- And scid = :arg_s_mtrl.scid[1];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新主生产计划的计划开始日期失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF arg_s_mtrl.ifpackpro[ll_i] = 1 And li_ordertype = 0 THEN CONTINUE //通用包件产品指令单合并
- IF arg_s_mtrl.ifpackpro[ll_i] = 2 And li_ordertype = 0 THEN CONTINUE //个性包件产品指令单合并
- IF arg_s_mtrl.ifmainmtrlid[ll_i] = 0 And arg_s_mtrl.ifpack[ll_i] = 2 THEN CONTINUE //个性包件
-
- //yyx20101012 --外协计划
- SELECT ordertype,ifwforder INTO :li_ordertype_order_ml,:li_ifwforder
- FROM u_order_ml
- WHERE orderid = :arg_s_mtrl.orderid[ll_i]
- And scid = :arg_s_mtrl.scid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',查询计划类型失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ordertype = 0 And not (li_ordertype_order_ml = 3 or li_ifwforder = 1) THEN CONTINUE
-
- //
-
-
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_scdef
- Where scid = :arg_s_mtrl.produce_scid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',查询清单物料生产分部资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',清单物料生产分部未定义,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_mtrl.plantype[ll_i] = 0 THEN
-
- IF li_ifselforder = 0 And arg_s_mtrl.ifpackpro[ll_i] <> 3 And arg_s_mtrl.ifpackpro[ll_i] <> 4 and ll_i <> 1 THEN CONTINUE
-
- IF arg_s_mtrl.scid[ll_i] = arg_s_mtrl.produce_scid[ll_i] And &
- arg_s_mtrl.produce_wrkgrpid[ll_i] = 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',物料:'+ls_mtrlcode+' 请选择生产车间'
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_sc_wkp
- Where wrkgrpid = :arg_s_mtrl.produce_wrkgrpid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',查询车间资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt <> 1 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',车间资料不存在或重复'
- rslt = 0
- GOTO ext
- END IF
-
-
- IF arg_s_mtrl.ifmainmtrlid[ll_i] = 1 And li_statusflag = 2 THEN
- ELSE
- IF arg_s_mtrl.pfcode[ll_i] = '' THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',物料:'+ls_mtrlcode+' 请选择物料清单'
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrl_pf
- WHERE mtrlid = :arg_s_mtrl.mtrlid[ll_i]
- And pfcode = :arg_s_mtrl.pfcode[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',查询物料:'+ls_mtrlcode+' 物料清单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt <> 1 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',查询物料:'+ls_mtrlcode+' 物料清单不存在或重复'
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- arg_s_mtrl.produce_wrkgrpid[ll_i] = 0
-
- IF arg_s_mtrl.plantype[ll_i] = 2 Or arg_s_mtrl.plantype[ll_i] = 6 THEN
- IF arg_s_mtrl.scid[ll_i] <> arg_s_mtrl.produce_scid[ll_i] THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',物料:'+ls_mtrlcode+' 请选择正确的分部'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- Decimal ld_RqQty,ld_truerqqty,ld_scllqty
-
- ld_truerqqty = arg_s_mtrl.cmplqty[ll_i]
- ld_scllqty = arg_s_mtrl.scllqty[ll_i]
-
- IF arg_s_mtrl.ifmainmtrlid[ll_i] = 1 THEN
- IF li_ordertype = 1 Or li_ordertype_order_ml = 3 or li_ifwforder = 1 THEN
- ld_RqQty = 0
- ELSE
- ld_RqQty = arg_s_mtrl.qty[ll_i]
- END IF
- ELSE
- ld_RqQty = arg_s_mtrl.qty[ll_i]
- END IF
-
- UPDATE u_orderRqMtrl
- SET RqQty = RqQty + :ld_RqQty,
- truerqqty = truerqqty + :ld_truerqqty,
- scllqty = scllqty + :ld_scllqty
- WHERE scid = :arg_s_mtrl.scid[ll_i]
- AND OrderID = :arg_s_mtrl.OrderID[ll_i]
- AND MtrlID = :arg_s_mtrl.MtrlID[ll_i]
- AND wrkGrpid = :arg_s_mtrl.wrkgrpid_scll[ll_i]
- AND status = :arg_s_mtrl.status[ll_i]
- AND woodcode = :arg_s_mtrl.woodcode[ll_i]
- AND pcode = :arg_s_mtrl.pcode[ll_i]
- AND plantype = :arg_s_mtrl.plantype[ll_i]
- And produce_wrkgrpid = :arg_s_mtrl.produce_wrkgrpid[ll_i];
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
-
- Long ll_mxpkid
-
- IF arg_s_mtrl.plantype[ll_i] = 0 THEN
- ll_mxpkid = f_sys_scidentity(arg_s_mtrl.scid[ll_i],"u_OrderRqMtrl","mxpkid",arg_msg,True,id_sqlca)
- IF ll_mxpkid <= 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',取id失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSE
- ll_mxpkid = 0
- END IF
-
- INSERT INTO u_orderRqMtrl
- (scid,
- orderid,
- mtrlid,
- rqqty,
- truerqqty,
- plantype,
- mqty,
- wmqty,
- bqty,
- wqty,
- pqty,
- pqty2,
- rqwfjgqty,
- rqbuyqty2,
- otherrqqty,
- otherrqqty_wx,
- otherrqqty_sale,
- rqdate,
- edate,
- wrkgrpid,
- produce_scid,
- produce_wrkgrpid,
- pfcode,
- status,
- woodcode,
- pcode,
- gydscrp,
- pfklmode,
- mxpkid,
- scllqty)
- VALUES
- (:arg_s_mtrl.scid[ll_i],
- :arg_s_mtrl.orderid[ll_i],
- :arg_s_mtrl.mtrlid[ll_i],
- :ld_RqQty,
- :ld_truerqqty,
- :arg_s_mtrl.plantype[ll_i],
- :arg_s_mtrl.mqty[ll_i],
- :arg_s_mtrl.wmqty[ll_i],
- :arg_s_mtrl.bqty[ll_i],
- :arg_s_mtrl.wqty[ll_i],
- :arg_s_mtrl.pqty[ll_i],
- :arg_s_mtrl.pqty2[ll_i],
- :arg_s_mtrl.rqwfjgqty[ll_i],
- :arg_s_mtrl.rqbuyqty[ll_i],
- :arg_s_mtrl.otherrqqty[ll_i],
- :arg_s_mtrl.otherrqqty_wx[ll_i],
- :arg_s_mtrl.otherrqqty_sale[ll_i],
- :arg_s_mtrl.sdate[ll_i],
- :arg_s_mtrl.edate[ll_i],
- :arg_s_mtrl.wrkgrpid_scll[ll_i],
- :arg_s_mtrl.produce_scid[ll_i],
- :arg_s_mtrl.produce_wrkgrpid[ll_i],
- :arg_s_mtrl.pfcode[ll_i],
- :arg_s_mtrl.status[ll_i],
- :arg_s_mtrl.woodcode[ll_i],
- :arg_s_mtrl.pcode[ll_i],
- :arg_s_mtrl.gydscrp[ll_i],
- :arg_s_mtrl.pfklmode[ll_i],
- :ll_mxpkid,
- :arg_s_mtrl.scllqty[ll_i]);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',建立物料需求表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',更新物料需求表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_check_dstrqty (long arg_scid, long arg_orderid, ref string arg_msg);//检查已领数
- Int rslt = 1
- Int li_status,li_scllflag,li_scllsecflag
- SELECT status,scllflag,scllsecflag
- INTO :li_status,:li_scllflag,:li_scllsecflag
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划状态失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_status <> 1 THEN
- arg_msg = '生产计划不是在进行状态,不能计算用料'
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_order_ml_scll_secaudit = 0 THEN
- IF li_scllflag = 1 THEN
- arg_msg = '生产计划已用料审核,不能计算用料'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_scllsecflag = 1 THEN
- arg_msg = '生产计划已用料终审,不能计算用料'
- rslt = 0
- GOTO ext
- END IF
- END IF
- //检查已领料数
- Decimal ld_DstrQty
- SELECT sum(DstrQty) INTO :ld_DstrQty
- FROM u_OrderRqMtrl
- WHERE u_orderrqmtrl.orderid = :arg_orderid
- AND u_OrderRqMtrl.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询计划已领料数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ld_DstrQty > 0 THEN
- arg_msg = '计划已有领料数,不能计算'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_add_rqmtrl_tree (s_order_ml_rqmtrl arg_s_mtrl, boolean arg_ifcommit, ref string arg_msg);//保存运算结果树
- Int rslt = 1
- Long ll_i
- DELETE FROM u_orderRqMtrl_tree
- WHERE orderid = :arg_s_mtrl.orderid[1]
- AND scid = :arg_s_mtrl.scid[1];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除物料需求结构失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 TO UpperBound(arg_s_mtrl.mtrlid)
-
- IF arg_s_mtrl.qty[ll_i] = 0 AND arg_s_mtrl.cmplqty[ll_i] <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',物料有需求数,无领料数,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_i > 1 AND arg_s_mtrl.wrkgrpid_scll[ll_i] = 0 AND arg_s_mtrl.ifpack[ll_i] = 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',物料没有领用工组,请检查相关物料清单'
- rslt = 0
- GOTO ext
- END IF
-
- //if isnull(arg_s_mtrl.addcmplqty[ll_i]) then arg_s_mtrl.addcmplqty[ll_i] = 0
-
- //standardrqqty 作为对上一级该生产的标准领料数记录, 即和毛需求数(rqqty)、原毛需求数(rqqty_ori)同义 lhd 20140919
- //替换为: arg_s_mtrl.standardrqqty[ll_i] = arg_s_mtrl.qty[ll_i]
- arg_s_mtrl.standardrqqty[ll_i] = arg_s_mtrl.qty[ll_i]
-
- INSERT INTO u_orderRqMtrl_tree
- (scid,
- orderid,
- mtrlid,
- rqqty,
- truerqqty,
- plantype,
- mqty,
- wmqty,
- bqty,
- wqty,
- pqty,
- pqty2,
- rqwfjgqty,
- rqbuyqty,
- otherrqqty,
- otherrqqty_wx,
- otherrqqty_sale,
- ckwareqty,
- rqdate,
- edate,
- wrkgrpid,
- produce_scid,
- produce_wrkgrpid,
- pfcode,
- lp,
- printid,
- status,
- woodcode,
- pcode,
- ifmainmtrlid,
- samerqqty,
- ifchanged,
- pmtrlid,
- gydscrp,
- pfklmode,
- pfgroup,
- pfgroupmode,
- ifcfg,
- standardrqqty,
- sonloss,
- sondecloss,
- scllloss,
- sclldecloss,
- scllqtytype,
- scllqty,
- if_follow,
- lasthour,
- Sonscale,
- pdscrp,
- addcmplqty)
- VALUES
- (:arg_s_mtrl.scid[ll_i],
- :arg_s_mtrl.orderid[ll_i],
- :arg_s_mtrl.mtrlid[ll_i],
- :arg_s_mtrl.qty[ll_i],
- :arg_s_mtrl.cmplqty[ll_i],
- :arg_s_mtrl.plantype[ll_i],
- :arg_s_mtrl.mqty[ll_i],
- :arg_s_mtrl.wmqty[ll_i],
- :arg_s_mtrl.bqty[ll_i],
- :arg_s_mtrl.wqty[ll_i],
- :arg_s_mtrl.pqty[ll_i],
- :arg_s_mtrl.pqty2[ll_i],
- :arg_s_mtrl.rqwfjgqty[ll_i],
- :arg_s_mtrl.rqbuyqty[ll_i],
- :arg_s_mtrl.otherrqqty[ll_i],
- :arg_s_mtrl.otherrqqty_wx[ll_i],
- :arg_s_mtrl.otherrqqty_sale[ll_i],
- :arg_s_mtrl.ckwareqty[ll_i],
- :arg_s_mtrl.sdate[ll_i],
- :arg_s_mtrl.edate[ll_i],
- :arg_s_mtrl.wrkgrpid_scll[ll_i],
- :arg_s_mtrl.produce_scid[ll_i],
- :arg_s_mtrl.produce_wrkgrpid[ll_i],
- :arg_s_mtrl.pfcode[ll_i],
- :arg_s_mtrl.lp[ll_i],
- :arg_s_mtrl.printid[ll_i],
- :arg_s_mtrl.status[ll_i],
- :arg_s_mtrl.woodcode[ll_i],
- :arg_s_mtrl.pcode[ll_i],
- :arg_s_mtrl.ifmainmtrlid[ll_i],
- :arg_s_mtrl.samerqqty[ll_i],
- :arg_s_mtrl.ifchanged[ll_i],
- :arg_s_mtrl.pmtrlid[ll_i],
- :arg_s_mtrl.gydscrp[ll_i],
- :arg_s_mtrl.pfklmode[ll_i],
- :arg_s_mtrl.pfgroup[ll_i],
- :arg_s_mtrl.pfgroupmode[ll_i],
- :arg_s_mtrl.ifcfg[ll_i],
- :arg_s_mtrl.standardrqqty[ll_i],
- :arg_s_mtrl.sonloss[ll_i],
- :arg_s_mtrl.sondecloss[ll_i],
- :arg_s_mtrl.scllloss[ll_i],
- :arg_s_mtrl.sclldecloss[ll_i],
- :arg_s_mtrl.scllqtytype[ll_i],
- :arg_s_mtrl.scllqty[ll_i],
- :arg_s_mtrl.if_follow[ll_i],
- :arg_s_mtrl.lasthour[ll_i],
- :arg_s_mtrl.Sonscale[ll_i],
- :arg_s_mtrl.pdscrp[ll_i],
- :arg_s_mtrl.addcmplqty[ll_i]);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_s_mtrl.printid[ll_i])+',建立物料需求结构表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_get_qty (integer arg_type, integer arg_ifdate, datetime arg_enddate, long arg_scid, long arg_orderid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_ref_qty, ref string arg_msg);//取相关数量
- Int rslt = 1
- Decimal ld_qty
- String ls_mtrlcode
- Int li_ordertype
- Int li_iffp
- //int li_mrparg
- //SELECT mtrlcode,ordertype,mrparg
- // INTO :ls_mtrlcode,:li_ordertype,:li_mrparg
- // FROM u_mtrldef
- // Where mtrlid = :arg_mtrlid;
- //IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询物料编码失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- //END IF
- CHOOSE CASE arg_type
- CASE 1 //采购未进仓数
- SELECT isnull(sum(case when u_mtrldef.iffp = 0
- then u_buytaskmx.qty - round(u_buytaskmx.consignedqty * u_buytaskmx.rate,u_mtrldef.mrparg)
- else case when (u_buytaskmx.qty - round(u_buytaskmx.consignedqty * u_buytaskmx.rate,u_mtrldef.mrparg)) <= u_buytaskmx.qty - u_buytaskmx.fpqty
- then u_buytaskmx.qty - round(u_buytaskmx.consignedqty * u_buytaskmx.rate,u_mtrldef.mrparg)
- else u_buytaskmx.qty - u_buytaskmx.fpqty END END),0)
- INTO :ld_qty
- FROM u_buytaskmx,u_buytask,u_mtrldef
- WHERE u_buytaskmx.mtrlid = u_mtrldef.mtrlid
- AND u_buytaskmx.scid = :arg_scid
- AND u_buytaskmx.mtrlid = :arg_mtrlid
- AND u_buytaskmx.status = :arg_status
- AND u_buytaskmx.woodcode = :arg_woodcode
- AND u_buytaskmx.pcode = :arg_pcode
- AND u_buytaskmx.scid = u_buytask.scid
- AND u_buytaskmx.taskid = u_buytask.taskid
- AND u_buytaskmx.stopflag = 0
- AND u_buytask.status = 1
- AND ( :arg_ifdate = 0 OR :arg_ifdate = 1 AND u_buytaskmx.requiredate <= :arg_enddate )
- AND ( case when u_mtrldef.iffp = 0
- then u_buytaskmx.qty - round(u_buytaskmx.consignedqty * u_buytaskmx.rate,u_mtrldef.mrparg)
- else case when (u_buytaskmx.qty - round(u_buytaskmx.consignedqty * u_buytaskmx.rate,u_mtrldef.mrparg)) <= u_buytaskmx.qty - u_buytaskmx.fpqty
- then u_buytaskmx.qty - round(u_buytaskmx.consignedqty * u_buytaskmx.rate,u_mtrldef.mrparg)
- ELSE u_buytaskmx.qty - u_buytaskmx.fpqty END END ) > 0;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 采购未进仓数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 2 //生产未进仓数
- SELECT isnull(sum(case when u_mtrldef.iffp = 0
- then u_Order_ml.orderqty - u_Order_ml.acmpqty
- else case when (u_Order_ml.orderqty - u_Order_ml.acmpqty) <= u_Order_ml.orderqty - u_Order_ml.fpqty
- then u_Order_ml.orderqty - u_Order_ml.acmpqty
- else u_Order_ml.orderqty - u_Order_ml.fpqty END END ),0)
- INTO :ld_qty
- FROM u_Order_ml,u_mtrldef
- WHERE u_Order_ml.mtrlid = u_mtrldef.mtrlid
- AND u_Order_ml.mtrlid = :arg_mtrlid
- AND u_Order_ml.scid = :arg_scid
- AND u_Order_ml.status_mode = :arg_status
- AND u_Order_ml.woodcode = :arg_woodcode
- AND u_Order_ml.pcode = :arg_pcode
- AND u_Order_ml.status = 1
- AND u_Order_ml.orderid <> :arg_orderid
- and u_Order_ml.inwareflag = 1
- // AND ( u_mtrldef.ordertype = 0 OR u_mtrldef.ordertype = 1 AND u_Order_ml.ordertype = 4 )
- AND ( :arg_ifdate = 0 OR :arg_ifdate = 1 AND u_Order_ml.requiredate <= :arg_enddate )
- AND (case when u_mtrldef.iffp = 0
- then u_Order_ml.orderqty - u_Order_ml.acmpqty
- else case when (u_Order_ml.orderqty - u_Order_ml.acmpqty) <= u_Order_ml.orderqty - u_Order_ml.fpqty
- then u_Order_ml.orderqty - u_Order_ml.acmpqty
- ELSE u_Order_ml.orderqty - u_Order_ml.fpqty END END ) > 0;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 生产计划未进仓数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 3 //外协未进仓数
- SELECT isnull(sum(case when u_mtrldef.iffp = 0
- then u_order_wfjgMx.qty - round(u_order_wfjgMx.consignedqty * u_order_wfjgMx.rate,u_mtrldef.mrparg)
- else case when (u_order_wfjgMx.qty - round(u_order_wfjgMx.consignedqty * u_order_wfjgMx.rate,u_mtrldef.mrparg)) <= u_order_wfjgMx.qty - u_order_wfjgMx.fpqty
- then u_order_wfjgMx.qty - round(u_order_wfjgMx.consignedqty * u_order_wfjgMx.rate,u_mtrldef.mrparg)
- else u_order_wfjgMx.qty - u_order_wfjgMx.fpqty END END ),0)
- INTO :ld_qty
- FROM u_order_wfjgMx,u_order_wfjg,u_mtrldef
- WHERE u_order_wfjgMx.mtrlid = u_mtrldef.mtrlid
- AND u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.mtrlid = :arg_mtrlid
- AND u_order_wfjgMx.status = :arg_status
- AND u_order_wfjgMx.woodcode = :arg_woodcode
- AND u_order_wfjgMx.pcode = :arg_pcode
- AND u_order_wfjgMx.scid = u_order_wfjg.scid
- AND u_order_wfjgMx.wfjgID = u_order_wfjg.wfjgID
- AND u_order_wfjg.status = 1
- AND ( :arg_ifdate = 0 OR :arg_ifdate = 1 AND u_order_wfjgMx.requiredate <= :arg_enddate )
- AND (case when u_mtrldef.iffp = 0
- then u_order_wfjgMx.qty - round(u_order_wfjgMx.consignedqty * u_order_wfjgMx.rate,u_mtrldef.mrparg)
- else case when (u_order_wfjgMx.qty - round(u_order_wfjgMx.consignedqty * u_order_wfjgMx.rate,u_mtrldef.mrparg)) <= u_order_wfjgMx.qty - u_order_wfjgMx.fpqty
- then u_order_wfjgMx.qty - round(u_order_wfjgMx.consignedqty * u_order_wfjgMx.rate,u_mtrldef.mrparg)
- ELSE u_order_wfjgMx.qty - u_order_wfjgMx.fpqty END END ) > 0;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 外协未进仓数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 4 //库存数
- SELECT isnull(sum(u_Mtrlware.noallocqty - case when u_mtrldef.iffp = 1 then u_Mtrlware.allocqty * u_mtrldef.iffp else u_Mtrlware.noauditingqty end),0)
- INTO :ld_qty
- FROM u_Mtrlware,u_storage,u_mtrldef
- WHERE u_Mtrlware.storageid = u_storage.storageid
- AND u_Mtrlware.mtrlid = u_mtrldef.mtrlid
- AND u_storage.ifmrp = 1
- AND u_Mtrlware.scid = :arg_scid
- AND u_Mtrlware.mtrlid = :arg_mtrlid
- AND u_Mtrlware.status = :arg_status
- AND u_Mtrlware.woodcode = :arg_woodcode
- And u_Mtrlware.pcode = :arg_pcode;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 库存数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 5 //生产计划未排指令当生产未进仓数
- SELECT isnull(sum(u_OrderRqMtrl.truerqqty - u_OrderRqMtrl.consignedqty),0)
- INTO :ld_qty
- FROM u_Order_ml,u_OrderRqMtrl
- WHERE u_Order_ml.scid = u_OrderRqMtrl.scid
- AND u_Order_ml.orderid = u_OrderRqMtrl.orderid
- AND u_OrderRqMtrl.mtrlid = :arg_mtrlid
- AND u_OrderRqMtrl.scid = :arg_scid
- AND u_OrderRqMtrl.status = :arg_status
- AND u_OrderRqMtrl.woodcode = :arg_woodcode
- AND u_OrderRqMtrl.pcode = :arg_pcode
- AND u_OrderRqMtrl.plantype = 0
- AND u_Order_ml.status = 1
- AND u_Order_ml.orderid <> :arg_orderid
- AND ( u_Order_ml.ordertype <> 4 )
- And ( :arg_ifdate = 0 Or :arg_ifdate = 1 And u_OrderRqMtrl.rqdate <= :arg_enddate );
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 生产计划未排指令当生产未进仓数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 6 //外协库存数
- SELECT isnull(sum(ow_wfjgware.noallocqty),0)
- INTO :ld_qty
- FROM ow_wfjgware
- WHERE ow_wfjgware.scid = :arg_scid
- AND ow_wfjgware.mtrlid = :arg_mtrlid
- AND ow_wfjgware.status = :arg_status
- AND ow_wfjgware.woodcode = :arg_woodcode
- And ow_wfjgware.pcode = :arg_pcode;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 外协库存数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 7 //外协需求数
- SELECT isnull(sum(u_order_wfjgMx_out.qty - u_order_wfjgMx_out.DstrQty),0)
- INTO :ld_qty
- FROM u_order_wfjgMx_out,u_order_wfjg
- WHERE u_order_wfjgMx_out.wfjgID = u_order_wfjg.wfjgID
- AND u_order_wfjgMx_out.scid = u_order_wfjg.scid
- AND u_order_wfjg.status = 1
- AND u_order_wfjgMx_out.scid = :arg_scid
- AND u_order_wfjgMx_out.mtrlid = :arg_mtrlid
- AND u_order_wfjgMx_out.status = :arg_status
- AND u_order_wfjgMx_out.woodcode = :arg_woodcode
- AND u_order_wfjgMx_out.pcode = :arg_pcode
- And u_order_wfjgMx_out.qty - u_order_wfjgMx_out.DstrQty > 0;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 外协需求数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END CHOOSE
- IF IsNull(ld_qty) THEN ld_qty = 0
- ext:
- arg_ref_qty = ld_qty
- RETURN rslt
- end function
- public function integer uof_del_rqmtrl_scll (long arg_scid, long arg_orderid, boolean arg_ifcommit, ref string arg_msg);//删除领料明细
- Int rslt = 1
- Long i,cnt
- Long ll_scid,ll_orderid,ll_mtrlid,ll_wrkgrpid
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_fpqty
- uo_mtrlware_assign uo_scll_del_cancel_fp
- uo_scll_del_cancel_fp = Create uo_mtrlware_assign
- uo_scll_del_cancel_fp.commit_transaction = sqlca
- datastore ds_zl_fp_del
- ds_zl_fp_del = Create datastore
- ds_zl_fp_del.DataObject = 'ds_zl_scllqty_from_orderrqmtrl_fp_cancel'
- ds_zl_fp_del.SetTransObject(sqlca)
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_OrderRqMtrl_scll,u_mtrldef
- WHERE ( u_OrderRqMtrl_scll.mtrlid = u_mtrldef.mtrlid ) and
- ( u_OrderRqMtrl_scll.scid = :arg_scid ) AND
- ( u_OrderRqMtrl_scll.OrderID = :arg_orderid ) AND
- ( u_OrderRqMtrl_scll.fpqty > 0 ) AND
- ( u_mtrldef.iffp = 1 );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令领料明细是否有已分配数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //取消分配
- IF cnt > 0 THEN
- ds_zl_fp_del.Retrieve(arg_scid,arg_orderid)
- FOR i = 1 To ds_zl_fp_del.RowCount()
- ll_scid = ds_zl_fp_del.Object.scid[i]
- ll_orderid = ds_zl_fp_del.Object.OrderID[i]
- ll_mtrlid = ds_zl_fp_del.Object.mtrlid[i]
- ll_wrkgrpid = ds_zl_fp_del.Object.wrkgrpid[i]
- ls_status = ds_zl_fp_del.Object.status[i]
- ls_woodcode = ds_zl_fp_del.Object.woodcode[i]
- ls_pcode = ds_zl_fp_del.Object.pcode[i]
- ld_fpqty = ds_zl_fp_del.Object.fpqty[i]
-
- IF uo_scll_del_cancel_fp.uof_assign_add_to_zl_scll(ll_scid,ll_orderid,ll_mtrlid,ll_wrkgrpid,&
- ls_status,ls_woodcode,ls_pcode,0 - ld_fpqty,0,0,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- DELETE FROM u_OrderRqMtrl_scll
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除原领料明细失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_scll_del_cancel_fp
- Destroy ds_zl_fp_del
- RETURN rslt
- end function
- public function integer uof_get_other_rqqty (long arg_scid, long arg_orderid, long arg_mtrlid, integer arg_plantype, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_ref_qty, integer arg_ifdate, datetime arg_date, ref string arg_msg);//取其它计划需求数
- Int rslt = 1
- Decimal ld_qty
- String ls_mtrlcode
- //SELECT mtrlcode INTO :ls_mtrlcode
- // FROM u_mtrldef
- // Where mtrlid = :arg_mtrlid;
- //IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询物料编码失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- //END IF
- SELECT isnull(sum(case when u_mtrldef.iffp = 0
- then u_OrderRqMtrl.Rqqty - u_OrderRqMtrl.DstrQty
- else u_OrderRqMtrl.Rqqty - u_OrderRqMtrl.fpqty END ),0)
- INTO :ld_qty
- FROM u_OrderRqMtrl,u_order_ml,u_mtrldef
- WHERE u_OrderRqMtrl.orderid = u_order_ml.orderid
- AND u_OrderRqMtrl.scid = u_order_ml.scid
- AND u_OrderRqMtrl.mtrlid = u_mtrldef.mtrlid
- AND u_order_ml.status = 1
- AND (:if_otherrq_mrpaudit = 1 AND (:arg_plantype = 0 AND u_order_ml.scllflag = 1
- OR :arg_plantype <> 0 AND u_order_ml.scllsecflag = 1) OR :if_otherrq_mrpaudit = 0 )
- AND u_OrderRqMtrl.scid = :arg_scid
- AND u_OrderRqMtrl.orderid <> :arg_orderid
- AND u_OrderRqMtrl.mtrlid = :arg_mtrlid
- AND u_OrderRqMtrl.status = :arg_status
- AND u_OrderRqMtrl.woodcode = :arg_woodcode
- AND u_OrderRqMtrl.pcode = :arg_pcode
- AND (case when u_mtrldef.iffp = 0
- then u_OrderRqMtrl.Rqqty - u_OrderRqMtrl.DstrQty
- else u_OrderRqMtrl.Rqqty - u_OrderRqMtrl.fpqty END ) > 0 ;
- // and ( :arg_ifdate = 0 or :arg_ifdate = 1 and u_OrderRqMtrl.rqdate <= :arg_date );
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 其它计划需求数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_qty) THEN ld_qty = 0
- ext:
- arg_ref_qty = ld_qty
- RETURN rslt
- end function
- public function integer uof_get_rqmtrl (long arg_scid, long arg_orderid, long arg_porderid, ref s_order_ml_rqmtrl arg_ref_s_rqmtrl, ref string arg_msg);//重新读取运算明细
- Int rslt = 1
- Long cnt
- Long ll_mtrlid,ll_wrkgrpid,ll_pmtrlid
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_rqqty,ld_cmplqty,ld_scllqty
- Int li_ifcfg,li_ifpackpro,li_ifpack
- Int li_ifselforder,li_mtrlorigin
- String ls_mtrlcode
- Long ll_lp
- IF uo_option_scll_ifchanged = -1000 THEN
- arg_msg = '选项:[356]车间指令单领料明细带出运算结果中"修改"的用料,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- DECLARE cur_ml CURSOR FOR
- SELECT u_orderrqmtrl_tree.mtrlid,
- u_orderrqmtrl_tree.wrkgrpid,
- u_orderrqmtrl_tree.status,
- u_orderrqmtrl_tree.woodcode,
- u_orderrqmtrl_tree.pcode,
- u_orderrqmtrl_tree.rqqty,
- u_orderrqmtrl_tree.truerqqty,
- u_orderrqmtrl_tree.scllqty,
- u_orderrqmtrl_tree.pmtrlid,
- u_orderrqmtrl_tree.ifcfg,
- u_orderrqmtrl_tree.lp,
- u_mtrldef.ifpackpro,
- u_mtrldef.ifpack,
- u_mtrldef.mtrlcode,
- u_mtrldef.ifselforder,
- u_mtrldef.mtrlorigin
- FROM u_orderrqmtrl_tree INNER join u_mtrldef on
- u_orderrqmtrl_tree.mtrlid = u_mtrldef.mtrlid
- WHERE u_orderrqmtrl_tree.scid = :arg_scid
- AND u_orderrqmtrl_tree.orderid = :arg_porderid
- AND (u_orderrqmtrl_tree.ifchanged = 0 OR :uo_option_scll_ifchanged = 1)
- Order By u_orderrqmtrl_tree.printid;
- OPEN cur_ml;
- FETCH cur_ml INTO :ll_mtrlid,:ll_wrkgrpid,
- :ls_status,:ls_woodcode,:ls_pcode,:ld_rqqty,
- :ld_cmplqty,:ld_scllqty,:ll_pmtrlid,:li_ifcfg,
- :ll_lp,:li_ifpackpro,:li_ifpack,:ls_mtrlcode,:li_ifselforder,:li_mtrlorigin;
-
- DO WHILE sqlca.SQLCode = 0
- IF ld_rqqty > 0 THEN
- cnt++
- arg_ref_s_rqmtrl.scid[cnt] = arg_scid
- arg_ref_s_rqmtrl.orderid[cnt] = arg_orderid
- arg_ref_s_rqmtrl.porderid[cnt] = arg_porderid
- arg_ref_s_rqmtrl.mtrlid[cnt] = ll_mtrlid
- arg_ref_s_rqmtrl.wrkgrpid_scll[cnt] = ll_wrkgrpid
- arg_ref_s_rqmtrl.status[cnt] = ls_status
- arg_ref_s_rqmtrl.woodcode[cnt] = ls_woodcode
- arg_ref_s_rqmtrl.pcode[cnt] = ls_pcode
- arg_ref_s_rqmtrl.qty[cnt] = ld_rqqty
- arg_ref_s_rqmtrl.scllqty[cnt] = ld_scllqty
- arg_ref_s_rqmtrl.cmplqty[cnt] = ld_cmplqty
- arg_ref_s_rqmtrl.pmtrlid[cnt] = ll_pmtrlid
- arg_ref_s_rqmtrl.ifcfg[cnt] = li_ifcfg
- arg_ref_s_rqmtrl.lp[cnt] = ll_lp
- arg_ref_s_rqmtrl.ifpackpro[cnt] = li_ifpackpro
- arg_ref_s_rqmtrl.ifpack[cnt] = li_ifpack
- arg_ref_s_rqmtrl.mtrlcode[cnt] = ls_mtrlcode
- arg_ref_s_rqmtrl.ifselforder[cnt] = li_ifselforder
- arg_ref_s_rqmtrl.mtrlorigin[cnt] = li_mtrlorigin
- END IF
-
- FETCH cur_ml INTO :ll_mtrlid,:ll_wrkgrpid,
- :ls_status,:ls_woodcode,:ls_pcode,:ld_rqqty,
- :ld_cmplqty,:ld_scllqty,:ll_pmtrlid,:li_ifcfg,
- :ll_lp,:li_ifpackpro,:li_ifpack,:ls_mtrlcode,:li_ifselforder,:li_mtrlorigin;
- LOOP
- CLOSE cur_ml;
- IF cnt = 0 THEN
- arg_msg = '查询上级计划需求明细失败,上级计划可能没有运算结果,请检查'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_pfcode_check (long arg_mtrlid, string arg_mtrlcode, string arg_pfcode, ref string arg_msg);//检查清单审核标记
- Int rslt = 1
- Int li_pfflag
- SELECT flag INTO :li_pfflag
- FROM u_mtrl_pf
- WHERE mtrlid = :arg_mtrlid
- AND pfcode = :arg_pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+arg_mtrlcode+'物料清单:'+arg_pfcode+' 审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_pfflag = 0 THEN
- arg_msg = '物料:'+arg_mtrlcode+'物料清单:'+arg_pfcode+' 未审核,不能计算'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- private function integer uof_get_max_advancetime (long arg_mtrlid, string arg_pfcode, ref decimal arg_ref_advancetime, ref string arg_msg);//取下级最大提前期
- Int rslt = 1
- Long cnt
- SELECT count(*) INTO :cnt
- FROM u_prdpf
- WHERE mtrlid = :arg_mtrlid
- AND pfcode = :arg_pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料是否已设置下级用料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_ref_advancetime = 0
- ELSE
-
- SELECT max(advancetime) INTO :arg_ref_advancetime
- FROM u_prdpf
- WHERE mtrlid = :arg_mtrlid
- AND pfcode = :arg_pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料下级用料最大提前期失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_get_prdpf_dytype (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid, long arg_wrkgrpid, string arg_sonpfcode, ref integer arg_ref_dytype, ref string arg_msg);//查询代用类型
- Int rslt = 1
- SELECT dytype INTO :arg_ref_dytype
- FROM u_prdpf
- WHERE mtrlid = :arg_mtrlid
- AND pfcode = :arg_pfcode
- AND pfgroup = :arg_pfgroup
- AND SonMtrlid = :arg_SonMtrlid
- AND wrkgrpid = :arg_wrkgrpid
- And sonpfcode = :arg_sonpfcode;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询物料代用标记失败,上级清单:'+arg_pfcode+',部件名称:'+arg_pfgroup+',下级清单:'+arg_sonpfcode+','+String(sqlca.SQLCode)+','+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- arg_ref_dytype = 0
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_get_prdpf_replace (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid, long arg_wrkgrpid, string arg_sonpfcode, ref s_prdpf_replace arg_ref_s_replace, ref string arg_msg);//取代用明细
- Int rslt = 1
- Long m
- Long ll_dymtrlid
- Decimal ld_sonscale,ld_sonloss,ld_scllloss
- String ls_dscrp,ls_status,ls_woodcode,ls_pcode
- String ls_mtrlcode,ls_mtrlname,ls_mtrlmode,ls_unit,ls_mtrltype
- Int li_mtrlorigin,li_mtrlprp,li_ifselforder,li_ifpack,li_ifpackpro
- Int li_ordertype,li_ifpackpz
- Long ll_produce_scid,ll_produce_wrkgrpid
- DECLARE cur_dy CURSOR FOR
- SELECT u_prdpf_dymx.dymtrlid,
- u_prdpf_dymx.sonscale,
- u_prdpf_dymx.sonloss,
- u_prdpf_dymx.scllloss,
- u_prdpf_dymx.dscrp,
- u_prdpf_dymx.status,
- u_prdpf_dymx.woodcode,
- u_prdpf_dymx.pcode,
- u_mtrldef.mtrlcode,
- u_mtrldef.mtrlname,
- u_mtrldef.mtrlmode,
- u_mtrldef.unit,
- u_mtrldef.mtrltype,
- u_mtrldef.mtrlorigin,
- u_mtrldef.mtrlprp,
- u_mtrldef.ifselforder,
- u_mtrldef.ifpack,
- u_mtrldef.ifpackpro,
- u_mtrldef.ordertype,
- u_mtrldef.ifpackpz,
- u_mtrldef.scid,
- u_mtrldef.dftwrkgrpid
- FROM u_prdpf_dymx,u_mtrldef
- WHERE u_prdpf_dymx.dymtrlid = u_mtrldef.mtrlid
- AND u_prdpf_dymx.mtrlid = :arg_mtrlid
- AND u_prdpf_dymx.pfcode = :arg_pfcode
- AND u_prdpf_dymx.pfgroup = :arg_pfgroup
- AND u_prdpf_dymx.SonMtrlid = :arg_SonMtrlid
- AND u_prdpf_dymx.wrkgrpid = :arg_wrkgrpid
- AND u_prdpf_dymx.sonpfcode = :arg_sonpfcode
- Order By printid;
-
- OPEN cur_dy;
- FETCH cur_dy INTO :ll_dymtrlid,
- :ld_sonscale,:ld_sonloss,:ld_scllloss,
- :ls_dscrp,:ls_status,:ls_woodcode,:ls_pcode,
- :ls_mtrlcode,:ls_mtrlname,:ls_mtrlmode,:ls_unit,:ls_mtrltype,
- :li_mtrlorigin,:li_mtrlprp,:li_ifselforder,:li_ifpack,:li_ifpackpro,
- :li_ordertype,:li_ifpackpz,:ll_produce_scid,:ll_produce_wrkgrpid;
-
- DO WHILE sqlca.SQLCode = 0
- m++
- arg_ref_s_replace.dymtrlid[m] = ll_dymtrlid
- arg_ref_s_replace.sonscale[m] = ld_sonscale
- arg_ref_s_replace.sonloss[m] = ld_sonloss
- arg_ref_s_replace.scllloss[m] = ld_scllloss
- arg_ref_s_replace.dscrp[m] = ls_dscrp
- arg_ref_s_replace.status[m] = ls_status
- arg_ref_s_replace.woodcode[m] = ls_woodcode
- arg_ref_s_replace.pcode[m] = ls_pcode
-
-
- arg_ref_s_replace.mtrlcode[m] = ls_mtrlcode
- arg_ref_s_replace.mtrlname[m] = ls_mtrlname
- arg_ref_s_replace.mtrlmode[m] = ls_mtrlmode
- arg_ref_s_replace.unit[m] = ls_unit
- arg_ref_s_replace.mtrlorigin[m] = li_mtrlorigin
- arg_ref_s_replace.mtrltype[m] = ls_mtrltype
- arg_ref_s_replace.mtrlprp[m] = li_mtrlprp
- arg_ref_s_replace.ifselforder[m] = li_ifselforder
- arg_ref_s_replace.ifpack[m] = li_ifpack
- arg_ref_s_replace.ifpackpro[m] = li_ifpackpro
- arg_ref_s_replace.ordertype[m] = li_ordertype
- arg_ref_s_replace.ifpackpz[m] = li_ifpackpz
- arg_ref_s_replace.produce_scid[m] = ll_produce_scid
- arg_ref_s_replace.produce_wrkgrpid[m] = ll_produce_wrkgrpid
-
- FETCH cur_dy INTO :ll_dymtrlid,
- :ld_sonscale,:ld_sonloss,:ld_scllloss,
- :ls_dscrp,:ls_status,:ls_woodcode,:ls_pcode,
- :ls_mtrlcode,:ls_mtrlname,:ls_mtrlmode,:ls_unit,:ls_mtrltype,
- :li_mtrlorigin,:li_mtrlprp,:li_ifselforder,:li_ifpack,:li_ifpackpro,
- :li_ordertype,:li_ifpackpz,:ll_produce_scid,:ll_produce_wrkgrpid;
- LOOP
- CLOSE cur_dy;
- RETURN rslt
- end function
- public subroutine uof_cmpl_rqmtrl_dy_mx (long arg_begin_i, integer arg_dy, ref s_order_ml_rqmtrl arg_s_mtrl, s_prdpf_replace arg_pf_dy);//加代用明细入数组
- Long ll_arr_dy,ll_arr_rq
- Long ll_arr_add,ll_arr_max
- Long i,k
- ll_arr_dy = UpperBound(arg_pf_dy.dymtrlid)
- ll_arr_rq = UpperBound(arg_s_mtrl.mtrlid)
- IF arg_dy = 0 THEN
- ll_arr_add = ll_arr_dy - 1
- ELSE
- ll_arr_add = ll_arr_dy
- END IF
- ll_arr_max = ll_arr_rq + ll_arr_add
- FOR i = ll_arr_max TO arg_begin_i + 1 STEP -1
-
- IF i > arg_begin_i + 1 THEN
- arg_s_mtrl.scid[i] = arg_s_mtrl.scid[i - ll_arr_add]
- arg_s_mtrl.orderid[i] = arg_s_mtrl.orderid[i - ll_arr_add]
- arg_s_mtrl.mtrlid[i] = arg_s_mtrl.mtrlid[i - ll_arr_add]
- arg_s_mtrl.status[i] = arg_s_mtrl.status[i - ll_arr_add]
- arg_s_mtrl.woodcode[i] = arg_s_mtrl.woodcode[i - ll_arr_add]
- arg_s_mtrl.pcode[i] = arg_s_mtrl.pcode[i - ll_arr_add]
- arg_s_mtrl.pfcode[i] = arg_s_mtrl.pfcode[i - ll_arr_add]
- arg_s_mtrl.qty[i] = arg_s_mtrl.qty[i - ll_arr_add]
- arg_s_mtrl.cmplqty[i] = arg_s_mtrl.cmplqty[i - ll_arr_add]
- arg_s_mtrl.plantype[i] = arg_s_mtrl.plantype[i - ll_arr_add]
- arg_s_mtrl.mqty[i] = arg_s_mtrl.mqty[i - ll_arr_add]
- arg_s_mtrl.bqty[i] = arg_s_mtrl.bqty[i - ll_arr_add]
- arg_s_mtrl.wqty[i] = arg_s_mtrl.wqty[i - ll_arr_add]
- arg_s_mtrl.pqty[i] = arg_s_mtrl.pqty[i - ll_arr_add]
- arg_s_mtrl.otherrqqty[i] = arg_s_mtrl.otherrqqty[i - ll_arr_add]
- arg_s_mtrl.samerqqty[i] = arg_s_mtrl.samerqqty[i - ll_arr_add]
- arg_s_mtrl.sdate[i] = arg_s_mtrl.sdate[i - ll_arr_add]
- arg_s_mtrl.edate[i] = arg_s_mtrl.edate[i - ll_arr_add]
-
- arg_s_mtrl.mtrlcode[i] = arg_s_mtrl.mtrlcode[i - ll_arr_add]
- arg_s_mtrl.mtrlname[i] = arg_s_mtrl.mtrlname[i - ll_arr_add]
- arg_s_mtrl.mtrlmode[i] = arg_s_mtrl.mtrlmode[i - ll_arr_add]
- arg_s_mtrl.mtrltype[i] = arg_s_mtrl.mtrltype[i - ll_arr_add]
- arg_s_mtrl.unit[i] = arg_s_mtrl.unit[i - ll_arr_add]
- arg_s_mtrl.Mtrlorigin[i] = arg_s_mtrl.Mtrlorigin[i - ll_arr_add]
- arg_s_mtrl.mtrlprp[i] = arg_s_mtrl.mtrlprp[i - ll_arr_add]
- arg_s_mtrl.ifselforder[i] = arg_s_mtrl.ifselforder[i - ll_arr_add]
- arg_s_mtrl.gydscrp[i] = arg_s_mtrl.gydscrp[i - ll_arr_add]
- arg_s_mtrl.pfklmode[i] = arg_s_mtrl.pfklmode[i - ll_arr_add]
- arg_s_mtrl.pfgroup[i] = arg_s_mtrl.pfgroup[i - ll_arr_add]
- arg_s_mtrl.pfgroupmode[i] = arg_s_mtrl.pfgroupmode[i - ll_arr_add]
- arg_s_mtrl.ifcfg[i] = arg_s_mtrl.ifcfg[i - ll_arr_add]
- arg_s_mtrl.ifpack[i] = arg_s_mtrl.ifpack[i - ll_arr_add]
- arg_s_mtrl.ifpackpro[i] = arg_s_mtrl.ifpackpro[i - ll_arr_add]
- arg_s_mtrl.mtrlordertype[i] = arg_s_mtrl.mtrlordertype[i - ll_arr_add]
- arg_s_mtrl.ifpackpz[i] = arg_s_mtrl.ifpackpz[i - ll_arr_add]
-
- arg_s_mtrl.dytype[i] = arg_s_mtrl.dytype[i - ll_arr_add]
- arg_s_mtrl.ppfcode[i] = arg_s_mtrl.ppfcode[i - ll_arr_add]
- arg_s_mtrl.pcmplqty[i] = arg_s_mtrl.pcmplqty[i - ll_arr_add]
- arg_s_mtrl.produce_scid[i] = arg_s_mtrl.produce_scid[i - ll_arr_add]
-
- arg_s_mtrl.produce_wrkgrpid[i] = arg_s_mtrl.produce_wrkgrpid[i - ll_arr_add]
- arg_s_mtrl.wrkGrpid_scll[i] = arg_s_mtrl.wrkGrpid_scll[i - ll_arr_add]
- arg_s_mtrl.lp[i] = arg_s_mtrl.lp[i - ll_arr_add]
-
- arg_s_mtrl.ifmainmtrlid[i] = arg_s_mtrl.ifmainmtrlid[i - ll_arr_add]
- arg_s_mtrl.pmtrlid[i] = arg_s_mtrl.pmtrlid[i - ll_arr_add]
- arg_s_mtrl.ifchanged[i] = arg_s_mtrl.ifchanged[i - ll_arr_add]
- ELSE
- arg_s_mtrl.scid[i] = arg_s_mtrl.scid[arg_begin_i]
- arg_s_mtrl.orderid[i] = arg_s_mtrl.orderid[arg_begin_i]
- arg_s_mtrl.mtrlid[i] = arg_s_mtrl.mtrlid[arg_begin_i]
- arg_s_mtrl.status[i] = arg_s_mtrl.status[arg_begin_i]
- arg_s_mtrl.woodcode[i] = arg_s_mtrl.woodcode[arg_begin_i]
- arg_s_mtrl.pcode[i] = arg_s_mtrl.pcode[arg_begin_i]
- arg_s_mtrl.pfcode[i] = arg_s_mtrl.pfcode[arg_begin_i]
- arg_s_mtrl.qty[i] = arg_s_mtrl.qty[arg_begin_i]
- arg_s_mtrl.cmplqty[i] = arg_s_mtrl.cmplqty[arg_begin_i]
- arg_s_mtrl.plantype[i] = arg_s_mtrl.plantype[arg_begin_i]
- arg_s_mtrl.mqty[i] = arg_s_mtrl.mqty[arg_begin_i]
- arg_s_mtrl.bqty[i] = arg_s_mtrl.bqty[arg_begin_i]
- arg_s_mtrl.wqty[i] = arg_s_mtrl.wqty[arg_begin_i]
- arg_s_mtrl.pqty[i] = arg_s_mtrl.pqty[arg_begin_i]
- arg_s_mtrl.otherrqqty[i] = arg_s_mtrl.otherrqqty[arg_begin_i]
- arg_s_mtrl.samerqqty[i] = arg_s_mtrl.samerqqty[arg_begin_i]
- arg_s_mtrl.sdate[i] = arg_s_mtrl.sdate[arg_begin_i]
- arg_s_mtrl.edate[i] = arg_s_mtrl.edate[arg_begin_i]
-
- arg_s_mtrl.mtrlcode[i] = arg_s_mtrl.mtrlcode[arg_begin_i]
- arg_s_mtrl.mtrlname[i] = arg_s_mtrl.mtrlname[arg_begin_i]
- arg_s_mtrl.mtrlmode[i] = arg_s_mtrl.mtrlmode[arg_begin_i]
- arg_s_mtrl.mtrltype[i] = arg_s_mtrl.mtrltype[arg_begin_i]
- arg_s_mtrl.unit[i] = arg_s_mtrl.unit[arg_begin_i]
- arg_s_mtrl.Mtrlorigin[i] = arg_s_mtrl.Mtrlorigin[arg_begin_i]
- arg_s_mtrl.mtrlprp[i] = arg_s_mtrl.mtrlprp[arg_begin_i]
- arg_s_mtrl.ifselforder[i] = arg_s_mtrl.ifselforder[arg_begin_i]
- arg_s_mtrl.gydscrp[i] = arg_s_mtrl.gydscrp[arg_begin_i]
- arg_s_mtrl.pfklmode[i] = arg_s_mtrl.pfklmode[arg_begin_i]
- arg_s_mtrl.pfgroup[i] = arg_s_mtrl.pfgroup[arg_begin_i]
- arg_s_mtrl.pfgroupmode[i] = arg_s_mtrl.pfgroupmode[arg_begin_i]
- arg_s_mtrl.ifcfg[i] = arg_s_mtrl.ifcfg[arg_begin_i]
- arg_s_mtrl.ifpack[i] = arg_s_mtrl.ifpack[arg_begin_i]
- arg_s_mtrl.ifpackpro[i] = arg_s_mtrl.ifpackpro[arg_begin_i]
- arg_s_mtrl.mtrlordertype[i] = arg_s_mtrl.mtrlordertype[arg_begin_i]
- arg_s_mtrl.ifpackpz[i] = arg_s_mtrl.ifpackpz[arg_begin_i]
-
- arg_s_mtrl.dytype[i] = arg_s_mtrl.dytype[arg_begin_i]
- arg_s_mtrl.ppfcode[i] = arg_s_mtrl.ppfcode[arg_begin_i]
- arg_s_mtrl.pcmplqty[i] = arg_s_mtrl.pcmplqty[arg_begin_i]
- arg_s_mtrl.produce_scid[i] = arg_s_mtrl.produce_scid[arg_begin_i]
-
- arg_s_mtrl.produce_wrkgrpid[i] = arg_s_mtrl.produce_wrkgrpid[arg_begin_i]
- arg_s_mtrl.wrkGrpid_scll[i] = arg_s_mtrl.wrkGrpid_scll[arg_begin_i]
- arg_s_mtrl.lp[i] = arg_s_mtrl.lp[arg_begin_i]
-
- arg_s_mtrl.ifmainmtrlid[i] = arg_s_mtrl.ifmainmtrlid[arg_begin_i]
- arg_s_mtrl.pmtrlid[i] = arg_s_mtrl.pmtrlid[arg_begin_i]
- arg_s_mtrl.ifchanged[i] = arg_s_mtrl.ifchanged[arg_begin_i]
- END IF
- NEXT
- FOR i = arg_begin_i TO arg_begin_i + ll_arr_add
-
- IF i = arg_begin_i AND arg_dy = 1 THEN
- arg_s_mtrl.qty[i] = arg_s_mtrl.qty[i] - arg_s_mtrl.cmplqty[i]
- arg_s_mtrl.cmplqty[i] = 0
- ELSE
- k++
- arg_s_mtrl.mtrlid[i] = arg_pf_dy.dymtrlid[k]
- arg_s_mtrl.status[i] = arg_pf_dy.status[k]
- arg_s_mtrl.woodcode[i] = arg_pf_dy.woodcode[k]
- arg_s_mtrl.pcode[i] = arg_pf_dy.pcode[k]
-
- arg_s_mtrl.mtrlcode[i] = arg_pf_dy.mtrlcode[k]
- arg_s_mtrl.mtrlname[i] = arg_pf_dy.mtrlname[k]
- arg_s_mtrl.mtrlmode[i] = arg_pf_dy.mtrlmode[k]
- arg_s_mtrl.unit[i] = arg_pf_dy.unit[k]
- arg_s_mtrl.Mtrlorigin[i] = arg_pf_dy.Mtrlorigin[k]
- arg_s_mtrl.mtrltype[i] = arg_pf_dy.mtrltype[k]
- arg_s_mtrl.mtrlprp[i] = arg_pf_dy.mtrlprp[k]
- arg_s_mtrl.ifselforder[i] = arg_pf_dy.ifselforder[k]
- arg_s_mtrl.ifpack[i] = arg_pf_dy.ifpack[k]
- arg_s_mtrl.ifpackpro[i] = arg_pf_dy.ifpackpro[k]
- arg_s_mtrl.mtrlordertype[i] = arg_pf_dy.ordertype[k]
- arg_s_mtrl.ifpackpz[i] = arg_pf_dy.ifpackpz[k]
- arg_s_mtrl.produce_scid[i] = arg_pf_dy.produce_scid[k]
- arg_s_mtrl.produce_wrkgrpid[i] = arg_pf_dy.produce_wrkgrpid[k]
-
- arg_s_mtrl.qty[i] = arg_pf_dy.dyqty[k]
- arg_s_mtrl.cmplqty[i] = 0
-
- arg_s_mtrl.mqty[i] = arg_pf_dy.mqty[k]
- arg_s_mtrl.bqty[i] = arg_pf_dy.bqty[k]
- arg_s_mtrl.wqty[i] = arg_pf_dy.wqty[k]
- arg_s_mtrl.pqty[i] = arg_pf_dy.pqty[k]
- arg_s_mtrl.otherrqqty[i] = arg_pf_dy.otherrqqty[k]
- arg_s_mtrl.samerqqty[i] = arg_pf_dy.samerqqty[k]
- END IF
- NEXT
- end subroutine
- public function integer uof_cmpl_rqmtrl_change (long arg_scid, long arg_pmtrlid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_pfcode, decimal arg_qty, long arg_wrkgrpid_scll, datetime arg_rqdate, string arg_gydscrp, string arg_pfklmode, string arg_pfgroup, string arg_pfgroupmode, decimal arg_advancetime, decimal arg_sonloss, decimal arg_sondecloss, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg);//解锁修改数量
- Int rslt = 1
- Int li_pfflag
- Long li_mxt
- Long ll_i
- String ls_mtrlcode,ls_mtrlname,ls_mtrlmode
- String ls_unit,ls_mtrltype
- Int li_mtrlorigin,li_ifselforder,li_mtrlprp
- Long ll_scid_mtrl,ll_wrkgrpid_mtrl
- Decimal ld_buydays,ld_orderdays,ld_wfjgdays,ld_aheaddays
- Date ld_sdate,ld_edate,ld_rqdate
- DateTime ldt_sdate,ldt_edate
- Decimal ld_cmpqty
- String ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode
- deep++
- If deep > 2000 Then
- arg_msg = '递归太深'+String(deep)
- rslt = 0
- Goto ext
- End If
- Select mtrlcode,
- mtrlname,
- mtrlmode,
- mtrltype,
- unit,
- Mtrlorigin,
- scid,
- dftwrkgrpid,
- buydays,
- orderdays,
- wfjgdays,
- aheaddays,
- ifselforder,
- mtrlprp,
- cmpqty,
- mtrlsectype,
- zxmtrlmode,
- usermtrlmode
- Into :ls_mtrlcode,
- :ls_mtrlname,
- :ls_mtrlmode,
- :ls_mtrltype,
- :ls_unit,
- :li_mtrlorigin,
- :ll_scid_mtrl,
- :ll_wrkgrpid_mtrl,
- :ld_buydays,
- :ld_orderdays,
- :ld_wfjgdays,
- :ld_aheaddays,
- :li_ifselforder,
- :li_mtrlprp,
- :ld_cmpqty,
- :ls_mtrlsectype,
- :ls_zxmtrlmode,
- :ls_usermtrlmode
- From u_mtrldef
- Where mtrlid = :arg_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料资失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If ld_cmpqty = 0 Then ld_cmpqty = 1
- If uof_pfcode_check(arg_mtrlid,ls_mtrlcode,arg_pfcode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- Decimal ld_advancetime_max_next //自制下级最大提前期
- //计算需求日期
- ld_rqdate = Date(String(arg_rqdate,'yyyy-mm-dd'))
- If li_mtrlorigin = 0 Then
-
- ld_edate = RelativeDate( ld_rqdate,0 - ld_orderdays - arg_advancetime )
-
- //取下级最大提前期
- If uof_get_max_advancetime(arg_mtrlid,arg_pfcode,ld_advancetime_max_next,arg_msg) = 0 Then
- arg_msg = ls_mtrlcode + arg_msg
- rslt = 0
- Goto ext
- End If
-
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- ElseIf li_mtrlorigin = 2 Then
- ld_edate = RelativeDate( ld_rqdate,0 - arg_advancetime )
- ld_sdate = RelativeDate ( ld_rqdate, 0 - ld_buydays - arg_advancetime )
- ElseIf li_mtrlorigin = 3 Then
- ld_edate = RelativeDate( ld_rqdate,0 - arg_advancetime )
- ld_sdate = RelativeDate ( ld_rqdate, 0 - ld_wfjgdays - arg_advancetime )
- ElseIf li_mtrlorigin = 6 Then
- ld_edate = RelativeDate( ld_rqdate,0 - arg_advancetime )
- ld_sdate = RelativeDate ( ld_edate, 0 - ld_aheaddays - arg_advancetime )
- End If
- ldt_sdate = DateTime(ld_sdate,Time(0))
- ldt_edate = DateTime(ld_edate,Time(0))
- //
- If deep > 1 Then
- li_mxt = UpperBound(arg_s_mtrl.mtrlid)
- li_mxt++
- arg_s_mtrl.mtrlid[li_mxt] = arg_mtrlid
- arg_s_mtrl.pfcode[li_mxt] = arg_pfcode
- arg_s_mtrl.qty[li_mxt] = arg_qty
- arg_s_mtrl.status[li_mxt] = arg_status
- arg_s_mtrl.woodcode[li_mxt] = arg_woodcode
- arg_s_mtrl.pcode[li_mxt] = arg_pcode
- arg_s_mtrl.cmplqty[li_mxt] = arg_qty
- arg_s_mtrl.plantype[li_mxt] = li_mtrlorigin
- arg_s_mtrl.sdate[li_mxt] = ldt_sdate
- arg_s_mtrl.edate[li_mxt] = ldt_edate
-
- arg_s_mtrl.mtrlcode[li_mxt] = ls_mtrlcode
- arg_s_mtrl.mtrlname[li_mxt] = ls_mtrlname
- arg_s_mtrl.mtrlmode[li_mxt] = ls_mtrlmode
- arg_s_mtrl.mtrltype[li_mxt] = ls_mtrltype
- arg_s_mtrl.unit[li_mxt] = ls_unit
- arg_s_mtrl.Mtrlorigin[li_mxt] = li_mtrlorigin
- arg_s_mtrl.produce_scid[li_mxt] = ll_scid_mtrl
- arg_s_mtrl.produce_wrkgrpid[li_mxt] = ll_wrkgrpid_mtrl
- arg_s_mtrl.wrkGrpid_scll[li_mxt] = arg_wrkGrpid_scll
-
- arg_s_mtrl.mtrlsectype[li_mxt] = ls_mtrlsectype
- arg_s_mtrl.zxmtrlmode[li_mxt] = ls_zxmtrlmode
- arg_s_mtrl.usermtrlmode[li_mxt] = ls_usermtrlmode
-
-
- arg_s_mtrl.gydscrp[li_mxt] = arg_gydscrp
- arg_s_mtrl.pfklmode[li_mxt] = arg_pfklmode
- arg_s_mtrl.pfgroup[li_mxt] = arg_pfgroup
- arg_s_mtrl.pfgroupmode[li_mxt] = arg_pfgroupmode
-
- arg_s_mtrl.pmtrlid[li_mxt] = arg_pmtrlid
-
- arg_s_mtrl.sonloss[li_mxt] = arg_sonloss
- arg_s_mtrl.sondecloss[li_mxt] = arg_sondecloss
- arg_s_mtrl.standardrqqty[li_mxt] = Round((arg_qty - arg_sondecloss) * (1 - arg_sonloss),uo_option_produce_dec)
-
- End If
- Choose Case li_mtrlorigin
- Case 2
- rslt = 1
- Goto ext
- Case 6
- If li_mtrlprp = 2 Or li_mtrlprp = 8 Then
- rslt = 1
- Goto ext
- End If
- Case 0
- If ll_scid_mtrl <> arg_scid Then
- rslt = 1
- Goto ext
- Else
- If li_ifselforder = 1 Then
- rslt = 1
- Goto ext
- End If
- End If
- Case 3
- If ll_scid_mtrl <> arg_scid Then
- rslt = 1
- Goto ext
- Else
- If li_ifselforder = 1 Then
- rslt = 1
- Goto ext
- End If
- End If
- End Choose
- Long count,ll_j
- Decimal cmpl_qty
- s_pfmx ls_s_pfmx[]
- count = 0
- Declare pf_cur Cursor For
- Select u_PrdPF.Sonscale,
- u_PrdPF.SonLoss,
- u_PrdPF.SonDECLosS,
- u_PrdPF.SonMtrlid,
- u_PrdPF.sonpfcode,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.wrkGrpid,
- u_PrdPF.dscrp,
- u_PrdPF.pfklmode,
- u_PrdPF.pfgroup,
- u_PrdPF.pfgroupmode,
- u_PrdPF.advancetime,
- u_PrdPF.baseqty,
- u_PrdPF.buyarg,
- u_mtrldef.mrptype,
- u_mtrldef.mrparg,
- u_prdpf.ifover,
- u_prdpf.dipztype
- From u_PrdPF,u_mtrldef
- Where ( u_PrdPF.mtrlid = :arg_mtrlid )
- And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- And ( u_PrdPF.pfcode = :arg_pfcode )
- And ( u_mtrldef.ifmrp = 1 )
- Order By u_PrdPF.printid;
- Open pf_cur;
- count = 1
- Fetch pf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].advancetime,&
- :ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype;
- Do While sqlca.SQLCode = 0
- count++
- Fetch pf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].advancetime,&
- :ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype;
- Loop
- count = count - 1
- Close pf_cur;
- If count = 0 Then
- rslt = 1
- Goto ext
- End If
- String ls_status_son,ls_woodcode_son,ls_pcode_son
- Long tem_long
- //物料清单基数
- arg_qty = arg_qty/ld_cmpqty
- For ll_j = 1 To count
- If ls_s_pfmx[ll_j].sonloss <> 1 Then
- If ls_s_pfmx[ll_j].baseqty > 1 Then
- cmpl_qty = Ceiling(Truncate(arg_qty/ls_s_pfmx[ll_j].baseqty * ls_s_pfmx[ll_j].Sonscale/(1 - ls_s_pfmx[ll_j].sonloss)+ls_s_pfmx[ll_j].sondecloss,10))
- Else
- If ls_s_pfmx[ll_j].u_mtrldef_mrptype = 0 Then
- cmpl_qty = Round(arg_qty * ls_s_pfmx[ll_j].Sonscale/(1 - ls_s_pfmx[ll_j].sonloss)+ls_s_pfmx[ll_j].sondecloss,ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- Else
- If ls_s_pfmx[ll_j].u_mtrldef_mrparg = 0 Then
- cmpl_qty = Ceiling(Truncate(arg_qty * ls_s_pfmx[ll_j].Sonscale/(1 - ls_s_pfmx[ll_j].sonloss) + ls_s_pfmx[ll_j].sondecloss,10))
- Else
- tem_long = 10^ls_s_pfmx[ll_j].u_mtrldef_mrparg
-
- cmpl_qty = Ceiling((Truncate(arg_qty * ls_s_pfmx[ll_j].Sonscale/(1 - ls_s_pfmx[ll_j].sonloss) + ls_s_pfmx[ll_j].sondecloss,10)) * tem_long)/tem_long
- cmpl_qty = Round(cmpl_qty , ls_s_pfmx[ll_j].u_mtrldef_mrparg)
-
- End If
- End If
- End If
- Else
- cmpl_qty = 0
- End If
-
- If ls_s_pfmx[ll_j].ifover = 1 Then
- Choose Case ls_s_pfmx[ll_j].dipztype
- Case 0
- ls_status_son = arg_status
- ls_woodcode_son = ''
- ls_pcode_son = ''
- Case 1
- ls_status_son = ''
- ls_woodcode_son = arg_woodcode
- ls_pcode_son = ''
- Case 2
- ls_status_son = ''
- ls_woodcode_son = ''
- ls_pcode_son = arg_pcode
- Case 3
- ls_status_son = arg_status
- ls_woodcode_son = arg_woodcode
- ls_pcode_son = ''
- Case 4
- ls_status_son = ''
- ls_woodcode_son = arg_woodcode
- ls_pcode_son = arg_pcode
- Case 5
- ls_status_son = arg_status
- ls_woodcode_son = ''
- ls_pcode_son = arg_pcode
- Case 6
- ls_status_son = arg_status
- ls_woodcode_son = arg_woodcode
- ls_pcode_son = arg_pcode
- End Choose
- Else
- ls_status_son = ls_s_pfmx[ll_j].status
- ls_woodcode_son = ls_s_pfmx[ll_j].woodcode
- ls_pcode_son = ls_s_pfmx[ll_j].pcode
- End If
-
- rslt = uof_cmpl_rqmtrl_change(arg_scid,arg_mtrlid,ls_s_pfmx[ll_j].SonMtrlid,&
- ls_status_son,ls_woodcode_son,ls_pcode_son,&
- ls_s_pfmx[ll_j].sonpfcode,&
- cmpl_qty,ls_s_pfmx[ll_j].wrkGrpid,ldt_edate,ls_s_pfmx[ll_j].dscrp,&
- ls_s_pfmx[ll_j].pfklmode,ls_s_pfmx[ll_j].pfgroup,&
- ls_s_pfmx[ll_j].pfgroupmode,ls_s_pfmx[ll_j].advancetime,&
- ls_s_pfmx[ll_j].sonloss,ls_s_pfmx[ll_j].sondecloss,&
- arg_s_mtrl,arg_msg) //递归处理下级
- If rslt = 0 Then
- Goto ext
- End If
- Next
- ext:
- Return rslt
- end function
- public function integer uof_get_prdpf_sonloss (string arg_sonlossstr, decimal arg_qty, ref decimal arg_sonloss);//查询损耗率
- Int rslt = 1
- Int ll_rst
- Long i,ll_pos,ll_row
- String ls_conditionstr,ls_conditionstr_l,ls_conditionstr_r
- String ls_modstr,ls_sonloss
- Boolean lb_f = FALSE
- s_pf_sonlossstr_array arg_s_sonlossstr_array
- datastore ds_cmpl
- ds_cmpl = CREATE datastore
- IF Trim(arg_sonlossstr) = '' THEN
- rslt = 0
- GOTO ext
- END IF
- f_pf_sonlossstr(arg_sonlossstr,arg_s_sonlossstr_array)
- FOR i = 1 TO UpperBound(arg_s_sonlossstr_array.conditionstr)
- ll_pos = Pos(arg_s_sonlossstr_array.conditionstr[i],',')
-
- IF ll_pos > 0 THEN
- ls_conditionstr_l = Left( arg_s_sonlossstr_array.conditionstr[i], ll_pos - 1)
- ls_conditionstr_r = Right( arg_s_sonlossstr_array.conditionstr[i],Len(arg_s_sonlossstr_array.conditionstr[i]) - ll_pos )
- ls_modstr = String(arg_qty,'###0.##########') + ls_conditionstr_l + ' and ' + String(arg_qty,'###0.##########') + ls_conditionstr_r
- ELSE
- ls_modstr = String(arg_qty,'###0.##########') + arg_s_sonlossstr_array.conditionstr[i]
- END IF
-
- ds_cmpl.DataObject = 'ds_pf_sonlossstr_cmpl'
- ll_row = ds_cmpl.InsertRow(0)
- ls_modstr = 'if('+ls_modstr+',1,0)'
- // messagebox('',ls_modstr)
- ds_cmpl.Modify("cmpl.expression='"+ls_modstr+"'")
- ll_rst = ds_cmpl.Object.cmpl[ll_row]
-
- ds_cmpl.Reset()
-
- IF ll_rst = 0 THEN CONTINUE
-
- ls_sonloss = arg_s_sonlossstr_array.sonlossstr[i]
-
- IF Pos(ls_sonloss,'数量') > 0 THEN
- ll_row = ds_cmpl.InsertRow(0)
- ls_modstr = Replace ( ls_sonloss, Pos(ls_sonloss,'数量'), 4, String(arg_qty,'#,##0.0#########') )
- ds_cmpl.Modify("cmpl.expression='"+ls_modstr+"'")
- arg_sonloss = ds_cmpl.Object.cmpl[ll_row]
- ds_cmpl.Reset()
- ELSE
- arg_sonloss = Dec(ls_sonloss)
- END IF
- lb_f = TRUE
- EXIT
- NEXT
- IF NOT lb_f THEN rslt = 0
- ext:
- RETURN rslt
- end function
- public function integer uof_get_qty_dscrp (integer arg_type, integer arg_ifdate, datetime arg_enddate, long arg_scid, long arg_orderid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_ref_dscrp, ref string arg_msg);//取相关数量
- Int rslt = 1
- Decimal ld_qty
- String ls_mtrlcode,ls_ordercode
- Int li_ordertype
- SELECT mtrlcode,ordertype
- INTO :ls_mtrlcode,:li_ordertype
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料编码失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CHOOSE CASE arg_type
- CASE 1 //采购未进仓数
- // SELECT sum(u_buytaskmx.qty - u_buytaskmx.consignedqty)
- // INTO :ld_qty
- // FROM u_buytaskmx,u_buytask
- // WHERE u_buytaskmx.scid = :arg_scid
- // AND u_buytaskmx.mtrlid = :arg_mtrlid
- // AND u_buytaskmx.status = :arg_status
- // AND u_buytaskmx.woodcode = :arg_woodcode
- // AND u_buytaskmx.pcode = :arg_pcode
- // AND u_buytaskmx.scid = u_buytask.scid
- // AND u_buytaskmx.taskid = u_buytask.taskid
- // AND u_buytaskmx.stopflag = 0
- // AND u_buytask.status = 1
- // AND ( :arg_ifdate = 0 OR :arg_ifdate = 1 AND u_buytaskmx.requiredate <= :arg_enddate );
- // IF sqlca.SQLCode = -1 THEN
- // arg_msg = '查询物料:'+ls_mtrlcode+' 采购未进仓数失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- CASE 2 //生产未进仓数
- DECLARE cur_pqty_dscrp CURSOR FOR
- SELECT u_Order_ml.orderqty - u_Order_ml.acmpqty,
- u_Order_ml.ordercode
- FROM u_Order_ml
- WHERE u_Order_ml.mtrlid = :arg_mtrlid
- AND u_Order_ml.scid = :arg_scid
- AND u_Order_ml.status_mode = :arg_status
- AND u_Order_ml.woodcode = :arg_woodcode
- AND u_Order_ml.pcode = :arg_pcode
- AND u_Order_ml.status = 1
- AND u_Order_ml.orderid <> :arg_orderid
- AND ( :li_ordertype = 0 OR :li_ordertype = 1 AND u_Order_ml.ordertype = 4 )
- AND ( :arg_ifdate = 0 OR :arg_ifdate = 1 AND u_Order_ml.requiredate <= :arg_enddate )
- AND u_Order_ml.orderqty - u_Order_ml.acmpqty > 0;
- OPEN cur_pqty_dscrp;
- FETCH cur_pqty_dscrp INTO :ld_qty,:ls_ordercode;
- DO WHILE sqlca.SQLCode = 0
- arg_ref_dscrp += ls_ordercode + ':'+String(ld_qty,'#,0.##########') + '|'
- FETCH cur_pqty_dscrp INTO :ld_qty,:ls_ordercode;
- LOOP
- CLOSE cur_pqty_dscrp;
-
- IF Len(arg_ref_dscrp) = 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+' 指令未进仓数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 3 //外协未进仓数
- // SELECT sum(u_order_wfjgMx.qty - u_order_wfjgMx.consignedqty - u_order_wfjgMx.wasteqty)
- // INTO :ld_qty
- // FROM u_order_wfjgMx,u_order_wfjg
- // WHERE u_order_wfjgMx.scid = :arg_scid
- // AND u_order_wfjgMx.mtrlid = :arg_mtrlid
- // AND u_order_wfjgMx.status = :arg_status
- // AND u_order_wfjgMx.woodcode = :arg_woodcode
- // AND u_order_wfjgMx.pcode = :arg_pcode
- // AND u_order_wfjgMx.scid = u_order_wfjg.scid
- // AND u_order_wfjgMx.wfjgID = u_order_wfjg.wfjgID
- // AND u_order_wfjg.status = 1
- // AND ( :arg_ifdate = 0 OR :arg_ifdate = 1 AND u_order_wfjgMx.requiredate <= :arg_enddate );
- // IF sqlca.SQLCode = -1 THEN
- // arg_msg = '查询物料:'+ls_mtrlcode+' 外协未进仓数失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- CASE 5 //生产计划未排指令当生产未进仓数
- // SELECT isnull(sum(u_OrderRqMtrl.truerqqty - u_OrderRqMtrl.consignedqty),0)
- // INTO :ld_qty
- // FROM u_Order_ml,u_OrderRqMtrl
- // WHERE u_Order_ml.scid = u_OrderRqMtrl.scid
- // AND u_Order_ml.orderid = u_OrderRqMtrl.orderid
- // AND u_OrderRqMtrl.mtrlid = :arg_mtrlid
- // AND u_OrderRqMtrl.scid = :arg_scid
- // AND u_OrderRqMtrl.status = :arg_status
- // AND u_OrderRqMtrl.woodcode = :arg_woodcode
- // AND u_OrderRqMtrl.pcode = :arg_pcode
- // AND u_Order_ml.status = 1
- // AND u_Order_ml.orderid <> :arg_orderid
- // AND ( u_Order_ml.ordertype <> 4 )
- // AND ( :arg_ifdate = 0 OR :arg_ifdate = 1 AND u_OrderRqMtrl.rqdate <= :arg_enddate );
- // IF sqlca.SQLCode = -1 THEN
- // arg_msg = '查询物料:'+ls_mtrlcode+' 生产计划未排指令当生产未进仓数失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- END CHOOSE
- IF Len(arg_ref_dscrp) > 0 THEN
- arg_ref_dscrp = Left(arg_ref_dscrp,Len(arg_ref_dscrp) - 1)
- END IF
- ext:
- RETURN rslt
- end function
- private function integer uof_get_max_advancetime2 (long arg_mtrlid, string arg_status, ref decimal arg_ref_advancetime, ref string arg_msg);//取下级最大提前期(组合配置)
- Int rslt = 1
- Long cnt,i
- s_mtrlcfg_expr s_mtrlcfg[]
- Long ll_cnt_s_mtrlcfg
- Decimal ld_advancetime
- IF arg_status = '' THEN
- arg_msg = '计划产品设置为使用组合配置属性,但计划配置内容非法,请检查'
- rslt = 0
- GOTO ext
- END IF
- //分解配置
- f_checkpz(arg_status,s_mtrlcfg)
- //
- ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg)
- IF ll_cnt_s_mtrlcfg = 0 THEN
- arg_msg = '产品分拆配置失败'
- rslt = 0
- GOTO ext
- END IF
- FOR i = 1 To ll_cnt_s_mtrlcfg
- SELECT count(*) INTO :cnt
- FROM u_prdpf
- WHERE mtrlid = :arg_mtrlid
- And pfcode = :s_mtrlcfg[i].cfgname;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询产品子件清单是否已设置下级用料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_ref_advancetime = 0
- // rslt = 0
- // arg_msg = '产品子件清单没有设置下级用料,请检查'
- // GOTO ext
- ELSE
- SELECT max(advancetime) INTO :ld_advancetime
- FROM u_prdpf
- WHERE mtrlid = :arg_mtrlid
- And pfcode = :s_mtrlcfg[i].cfgname;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料下级用料最大提前期失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF ld_advancetime > arg_ref_advancetime THEN
- arg_ref_advancetime = ld_advancetime
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uof_cmpl_rqmtrl_fp (long arg_scid, long arg_orderid, integer arg_if_allowuse, integer arg_ifdate, datetime arg_enddate, s_order_ml_rqmtrl arg_s_mtrl, ref s_mtrlware_assign_plan arg_ref_s_assign_plan, ref string arg_msg);Int rslt = 1
- Long ll_fp_array,ll_hz_array
- s_order_ml_rqmtrl l_s_rqmtrl_hz
- Long i,j,ll_f,k
- Decimal ld_fpqty_need
- Decimal ld_fpqty_m,ld_fpqty_b,ld_fpqty_p,ld_fpqty_w
- Long ll_m,ll_b,ll_p,ll_w
- datastore ds_plan_m,ds_plan_b,ds_plan_p,ds_plan_w
- ds_plan_m = Create datastore
- ds_plan_m.DataObject = 'ds_mtrlware_assign_plan_m'
- ds_plan_m.SetTransObject(sqlca)
- ds_plan_b = Create datastore
- ds_plan_b.DataObject = 'ds_mtrlware_assign_plan_b'
- ds_plan_b.SetTransObject(sqlca)
- ds_plan_p = Create datastore
- ds_plan_p.DataObject = 'ds_mtrlware_assign_plan_p'
- ds_plan_p.SetTransObject(sqlca)
- ds_plan_w = Create datastore
- ds_plan_w.DataObject = 'ds_mtrlware_assign_plan_w'
- ds_plan_w.SetTransObject(sqlca)
- IF arg_if_allowuse = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- FOR i = 1 To UpperBound(arg_s_mtrl.mtrlid)
- ll_f = 0
-
- //过滤
- IF arg_s_mtrl.iffp[i] = 0 THEN CONTINUE
- //只处理自制yyx20120824
- // If ( arg_s_mtrl.ifselforder[i] > 0 And arg_s_mtrl.mtrlorigin[i] = 0 Or arg_s_mtrl.mtrlorigin[i] > 0 ) THEN
- If ( arg_s_mtrl.ifselforder[i] > 0 And arg_s_mtrl.mtrlorigin[i] = 0 ) THEN
- IF ifzl_mtrl_not_useqty Or ifwx_mtrl_not_useqty THEN
- IF arg_s_mtrl.mtrlorigin[i] = 0 THEN
- IF arg_s_mtrl.ifselforder[i] = 2 THEN
- IF ifzl_mtrl_not_useqty THEN
- CONTINUE
- END IF
- END IF
- ELSEIF arg_s_mtrl.mtrlorigin[i] = 3 THEN
- IF ifwx_mtrl_not_useqty THEN
- CONTINUE
- END IF
- END IF
- END IF
-
-
- IF arg_s_mtrl.otherrqqty[i] >= arg_s_mtrl.mqty[i] + arg_s_mtrl.bqty[i] + arg_s_mtrl.wqty[i] + arg_s_mtrl.pqty[i] + arg_s_mtrl.pqty2[i] THEN
- CONTINUE
- ELSE
- ll_f = 0
- FOR j = 1 To ll_hz_array
- IF arg_s_mtrl.mtrlid[i] = l_s_rqmtrl_hz.mtrlid[j] And &
- arg_s_mtrl.status[i] = l_s_rqmtrl_hz.status[j] And &
- arg_s_mtrl.woodcode[i] = l_s_rqmtrl_hz.woodcode[j] And &
- arg_s_mtrl.pcode[i] = l_s_rqmtrl_hz.pcode[j] THEN
- ll_f = j
- EXIT
- END IF
- NEXT
-
- IF ll_f = 0 THEN
- ll_hz_array++
- l_s_rqmtrl_hz.mtrlid[ll_hz_array] = arg_s_mtrl.mtrlid[i]
- l_s_rqmtrl_hz.status[ll_hz_array] = arg_s_mtrl.status[i]
- l_s_rqmtrl_hz.woodcode[ll_hz_array] = arg_s_mtrl.woodcode[i]
- l_s_rqmtrl_hz.pcode[ll_hz_array] = arg_s_mtrl.pcode[i]
- l_s_rqmtrl_hz.mtrlorigin[ll_hz_array] = arg_s_mtrl.mtrlorigin[i]
- l_s_rqmtrl_hz.ifselforder[ll_hz_array] = arg_s_mtrl.ifselforder[i]
-
- l_s_rqmtrl_hz.qty[ll_hz_array] = arg_s_mtrl.qty[i]
- l_s_rqmtrl_hz.mqty[ll_hz_array] = arg_s_mtrl.mqty[i]
- l_s_rqmtrl_hz.bqty[ll_hz_array] = arg_s_mtrl.bqty[i]
- l_s_rqmtrl_hz.pqty[ll_hz_array] = arg_s_mtrl.pqty[i]
- l_s_rqmtrl_hz.pqty2[ll_hz_array] = arg_s_mtrl.pqty2[i]
- l_s_rqmtrl_hz.wqty[ll_hz_array] = arg_s_mtrl.wqty[i]
- l_s_rqmtrl_hz.otherrqqty[ll_hz_array] = arg_s_mtrl.otherrqqty[i]
- ELSE
- l_s_rqmtrl_hz.qty[ll_f] += arg_s_mtrl.qty[i]
- END IF
- END IF
- ELSE
- CONTINUE
- END IF
- //过滤完毕
- NEXT
- //计算分配类型
- FOR k = 1 To ll_hz_array
- ld_fpqty_m = 0
- ld_fpqty_b = 0
- ld_fpqty_p = 0
- ld_fpqty_w = 0
-
- ld_fpqty_need = l_s_rqmtrl_hz.qty[k]
-
- IF l_s_rqmtrl_hz.mtrlorigin[k] = 0 THEN
- IF if_pqty_not_zl THEN
- IF l_s_rqmtrl_hz.pqty2[k] >= l_s_rqmtrl_hz.otherrqqty[k] THEN
- l_s_rqmtrl_hz.otherrqqty[k] = 0
- ELSE
- l_s_rqmtrl_hz.otherrqqty[k] = l_s_rqmtrl_hz.otherrqqty[k] - l_s_rqmtrl_hz.pqty2[k]
- END IF
- END IF
- END IF
-
- IF l_s_rqmtrl_hz.mqty[k] > l_s_rqmtrl_hz.otherrqqty[k] THEN
- IF l_s_rqmtrl_hz.mqty[k] - l_s_rqmtrl_hz.otherrqqty[k] >= ld_fpqty_need THEN
- ld_fpqty_m = ld_fpqty_need
- ld_fpqty_b = 0
- ld_fpqty_p = 0
- ld_fpqty_w = 0
- ELSE
- ld_fpqty_m = l_s_rqmtrl_hz.mqty[k] - l_s_rqmtrl_hz.otherrqqty[k]
-
- ld_fpqty_need = ld_fpqty_need - (l_s_rqmtrl_hz.mqty[k] - l_s_rqmtrl_hz.otherrqqty[k])
-
- IF l_s_rqmtrl_hz.bqty[k] > 0 And ld_fpqty_need > 0 THEN
- IF l_s_rqmtrl_hz.bqty[k] >= ld_fpqty_need THEN
- ld_fpqty_b = ld_fpqty_need
- ld_fpqty_p = 0
- ld_fpqty_w = 0
- ELSE
- ld_fpqty_b = l_s_rqmtrl_hz.bqty[k]
- ld_fpqty_need = ld_fpqty_need - l_s_rqmtrl_hz.bqty[k]
- END IF
- END IF
-
- IF l_s_rqmtrl_hz.pqty[k] > 0 And ld_fpqty_need > 0 THEN
- IF l_s_rqmtrl_hz.pqty[k] >= ld_fpqty_need THEN
- ld_fpqty_p = ld_fpqty_need
- ld_fpqty_w = 0
- ELSE
- ld_fpqty_p = l_s_rqmtrl_hz.pqty[k]
- ld_fpqty_need = ld_fpqty_need - l_s_rqmtrl_hz.pqty[k]
- END IF
- END IF
-
- IF l_s_rqmtrl_hz.wqty[k] > 0 And ld_fpqty_need > 0 THEN
- IF l_s_rqmtrl_hz.wqty[k] >= ld_fpqty_need THEN
- ld_fpqty_w = ld_fpqty_need
- ELSE
- ld_fpqty_w = l_s_rqmtrl_hz.wqty[k]
- ld_fpqty_need = ld_fpqty_need - l_s_rqmtrl_hz.wqty[k]
- END IF
- END IF
- END IF
- ELSEIF l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] > l_s_rqmtrl_hz.otherrqqty[k] THEN
-
- ld_fpqty_m = 0
- IF l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] - l_s_rqmtrl_hz.otherrqqty[k] >= ld_fpqty_need THEN
- ld_fpqty_b = ld_fpqty_need
- ld_fpqty_p = 0
- ld_fpqty_w = 0
- ELSE
- ld_fpqty_b = l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] - l_s_rqmtrl_hz.otherrqqty[k]
- ld_fpqty_need = ld_fpqty_need - (l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] - l_s_rqmtrl_hz.otherrqqty[k])
-
- IF l_s_rqmtrl_hz.pqty[k] > 0 And ld_fpqty_need > 0 THEN
- IF l_s_rqmtrl_hz.pqty[k] >= ld_fpqty_need THEN
- ld_fpqty_p = ld_fpqty_need
- ld_fpqty_w = 0
- ELSE
- ld_fpqty_p = l_s_rqmtrl_hz.pqty[k]
- ld_fpqty_need = ld_fpqty_need - l_s_rqmtrl_hz.pqty[k]
- END IF
- END IF
-
- IF l_s_rqmtrl_hz.wqty[k] > 0 And ld_fpqty_need > 0 THEN
- IF l_s_rqmtrl_hz.wqty[k] >= ld_fpqty_need THEN
- ld_fpqty_w = ld_fpqty_need
- ELSE
- ld_fpqty_w = l_s_rqmtrl_hz.wqty[k]
- ld_fpqty_need = ld_fpqty_need - l_s_rqmtrl_hz.wqty[k]
- END IF
- END IF
- END IF
- ELSEIF l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] >= l_s_rqmtrl_hz.otherrqqty[k] THEN
- ld_fpqty_m = 0
- ld_fpqty_b = 0
- IF l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] - l_s_rqmtrl_hz.otherrqqty[k] >= ld_fpqty_need THEN
- ld_fpqty_p = ld_fpqty_need
- ld_fpqty_w = 0
- ELSE
- ld_fpqty_p = l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] - l_s_rqmtrl_hz.otherrqqty[k]
- ld_fpqty_need = ld_fpqty_need - (l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] - l_s_rqmtrl_hz.otherrqqty[k])
-
- IF l_s_rqmtrl_hz.wqty[k] > 0 And ld_fpqty_need > 0 THEN
- IF l_s_rqmtrl_hz.wqty[k] >= ld_fpqty_need THEN
- ld_fpqty_w = ld_fpqty_need
- ELSE
- ld_fpqty_w = l_s_rqmtrl_hz.wqty[k]
- ld_fpqty_need = ld_fpqty_need - l_s_rqmtrl_hz.wqty[k]
- END IF
- END IF
- END IF
- ELSEIF l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] + l_s_rqmtrl_hz.wqty[k] >= l_s_rqmtrl_hz.otherrqqty[k] THEN
- ld_fpqty_m = 0
- ld_fpqty_b = 0
- ld_fpqty_p = 0
- IF l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] + l_s_rqmtrl_hz.wqty[k] - l_s_rqmtrl_hz.otherrqqty[k] >= ld_fpqty_need THEN
- ld_fpqty_w = ld_fpqty_need
- ELSE
- ld_fpqty_w = l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] + l_s_rqmtrl_hz.wqty[k] - l_s_rqmtrl_hz.otherrqqty[k]
- ld_fpqty_need = ld_fpqty_need - (l_s_rqmtrl_hz.mqty[k] + l_s_rqmtrl_hz.bqty[k] + l_s_rqmtrl_hz.pqty[k] + l_s_rqmtrl_hz.wqty[k] - l_s_rqmtrl_hz.otherrqqty[k])
- END IF
- END IF
-
- //库存分配
-
- IF ld_fpqty_m > 0 THEN
- ds_plan_m.Retrieve(arg_scid,l_s_rqmtrl_hz.mtrlid[k],l_s_rqmtrl_hz.status[k],l_s_rqmtrl_hz.woodcode[k],l_s_rqmtrl_hz.pcode[k])
- ds_plan_m.AcceptText()
- FOR ll_m = 1 To ds_plan_m.RowCount()
- IF ld_fpqty_m = 0 THEN EXIT
- IF ld_fpqty_m <= ds_plan_m.Object.notfpqty[ll_m] THEN
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = ds_plan_m.Object.u_mtrlware_mtrlwareid[ll_m]
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ld_fpqty_m
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
-
- ld_fpqty_m = 0
- ELSE
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = ds_plan_m.Object.u_mtrlware_mtrlwareid[ll_m]
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ds_plan_m.Object.notfpqty[ll_m]
-
- ld_fpqty_m = ld_fpqty_m - ds_plan_m.Object.notfpqty[ll_m]
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
- END IF
- NEXT
-
- IF ld_fpqty_m > 0 THEN
- arg_msg = '库存分配数错误,运'
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //采购订单分配
- IF ld_fpqty_b > 0 THEN
- ds_plan_b.Retrieve(arg_scid,l_s_rqmtrl_hz.mtrlid[k],l_s_rqmtrl_hz.status[k],l_s_rqmtrl_hz.woodcode[k],l_s_rqmtrl_hz.pcode[k],arg_ifdate,arg_enddate)
- ds_plan_b.AcceptText()
-
- FOR ll_b = 1 To ds_plan_b.RowCount()
- IF ld_fpqty_b = 0 THEN EXIT
- IF ld_fpqty_b <= ds_plan_b.Object.notfpqty[ll_b] THEN
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 2
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = ds_plan_b.Object.u_buytaskmx_taskid[ll_b]
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = ds_plan_b.Object.u_buytaskmx_printid[ll_b]
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ld_fpqty_b
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
-
- ld_fpqty_b = 0
- ELSE
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 2
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = ds_plan_b.Object.u_buytaskmx_taskid[ll_b]
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = ds_plan_b.Object.u_buytaskmx_printid[ll_b]
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ds_plan_b.Object.notfpqty[ll_b]
-
- ld_fpqty_b = ld_fpqty_b - ds_plan_b.Object.notfpqty[ll_b]
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
- END IF
- NEXT
-
- IF ld_fpqty_b > 0 THEN
- arg_msg = '采购分配计划数错误'
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //指令单分配
- IF ld_fpqty_p > 0 THEN
- ds_plan_p.Retrieve(arg_scid,l_s_rqmtrl_hz.mtrlid[k],l_s_rqmtrl_hz.status[k],l_s_rqmtrl_hz.woodcode[k],l_s_rqmtrl_hz.pcode[k],arg_ifdate,arg_enddate)
- ds_plan_p.AcceptText()
- FOR ll_p = 1 To ds_plan_p.RowCount()
- IF ld_fpqty_p = 0 THEN EXIT
- IF ld_fpqty_p <= ds_plan_p.Object.notfpqty[ll_p] THEN
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = ds_plan_p.Object.u_order_ml_orderid[ll_p]
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ld_fpqty_p
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
-
-
- ld_fpqty_p = 0
- ELSE
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = ds_plan_p.Object.u_order_ml_orderid[ll_p]
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ds_plan_p.Object.notfpqty[ll_p]
-
- ld_fpqty_p = ld_fpqty_p - ds_plan_p.Object.notfpqty[ll_p]
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
- END IF
- NEXT
-
- IF ld_fpqty_p > 0 THEN
- arg_msg = '指令分配计划数错误'
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //外协单分配
- IF ld_fpqty_w > 0 THEN
- ds_plan_w.Retrieve(arg_scid,l_s_rqmtrl_hz.mtrlid[k],l_s_rqmtrl_hz.status[k],l_s_rqmtrl_hz.woodcode[k],l_s_rqmtrl_hz.pcode[k],arg_ifdate,arg_enddate)
- ds_plan_w.AcceptText()
- FOR ll_w = 1 To ds_plan_w.RowCount()
- IF ld_fpqty_w = 0 THEN EXIT
- IF ld_fpqty_w <= ds_plan_w.Object.notfpqty[ll_w] THEN
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 3
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = ds_plan_w.Object.u_order_wfjgmx_orderid[ll_w]
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = ds_plan_w.Object.u_order_wfjgmx_printid[ll_w]
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ld_fpqty_w
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
-
- ld_fpqty_w = 0
- ELSE
- ll_fp_array++
- arg_ref_s_assign_plan.planid[ll_fp_array] = 0
- arg_ref_s_assign_plan.assigntype[ll_fp_array] = 0
- arg_ref_s_assign_plan.Plantype[ll_fp_array] = 1
- arg_ref_s_assign_plan.Plankind[ll_fp_array] = 3
- arg_ref_s_assign_plan.Plankind_relbillid[ll_fp_array] = ds_plan_w.Object.u_order_wfjgmx_orderid[ll_w]
- arg_ref_s_assign_plan.Plankind_relprintid[ll_fp_array] = ds_plan_w.Object.u_order_wfjgmx_printid[ll_w]
- arg_ref_s_assign_plan.Scid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Mtrlwareid[ll_fp_array] = 0
- arg_ref_s_assign_plan.Relbillid[ll_fp_array] = arg_orderid
- arg_ref_s_assign_plan.Relprintid[ll_fp_array] = 0
- arg_ref_s_assign_plan.planassignqty[ll_fp_array] = ds_plan_w.Object.notfpqty[ll_w]
-
- ld_fpqty_w = ld_fpqty_w - ds_plan_w.Object.notfpqty[ll_w]
-
- arg_ref_s_assign_plan.mtrlid[ll_fp_array] = l_s_rqmtrl_hz.mtrlid[k]
- arg_ref_s_assign_plan.status[ll_fp_array] = l_s_rqmtrl_hz.status[k]
- arg_ref_s_assign_plan.woodcode[ll_fp_array] = l_s_rqmtrl_hz.woodcode[k]
- arg_ref_s_assign_plan.pcode[ll_fp_array] = l_s_rqmtrl_hz.pcode[k]
- END IF
- NEXT
-
- IF ld_fpqty_w > 0 THEN
- arg_msg = '外协分配计划数错误'
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- Destroy ds_plan_m
- Destroy ds_plan_b
- Destroy ds_plan_p
- Destroy ds_plan_w
- RETURN rslt
- end function
- public function integer uof_cmpl_rqmtrl_dy (integer arg_ifdate, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg);Int rslt = 1
- Long i,ch,l,arr_mxt,j,ll_dycnt,dy_arr_mxt
- Long ll_begin_i
- Decimal ld_pcmplqty,ld_cmplqty,ld_rate,ld_cqty,ld_cmplqty_old
- Decimal ld_dyqty
- Decimal ld_mqty
- Decimal ld_bqty
- Decimal ld_wqty
- Decimal ld_pqty
- Decimal ld_otherrqqty,ld_samerqqty
- s_prdpf_replace arg_pf_dy,arg_pf_dy_t,arg_pf_dy_tmp
- FOR i = 1 TO UpperBound(arg_s_mtrl.mtrlid)
- IF arg_s_mtrl.dytype[i] > 0 THEN
- ch++
- END IF
- NEXT
- IF ch = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- ll_begin_i = 1
- re_for:
- FOR i = ll_begin_i TO UpperBound(arg_s_mtrl.mtrlid)
-
- arg_pf_dy = arg_pf_dy_tmp
- arg_pf_dy_t = arg_pf_dy_tmp
- ll_dycnt = 0
- dy_arr_mxt = 0
-
- IF arg_s_mtrl.dytype[i] = 0 THEN CONTINUE
- IF NOT arg_s_mtrl.cmplqty[i] > 0 THEN CONTINUE
-
- ld_pcmplqty = arg_s_mtrl.pcmplqty[i]
-
- IF uof_get_prdpf_replace(arg_s_mtrl.pmtrlid[i],&
- arg_s_mtrl.ppfcode[i],&
- arg_s_mtrl.pfgroup[i],&
- arg_s_mtrl.mtrlid[i],&
- arg_s_mtrl.wrkgrpid_scll[i],&
- arg_s_mtrl.pfcode[i],&
- arg_pf_dy,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_mtrl.dytype[i] = 1 THEN
-
- ld_cqty = 0
- ld_cqty = arg_s_mtrl.cmplqty[i]
-
- FOR l = 1 TO UpperBound(arg_pf_dy.dymtrlid)
-
- ld_mqty = 0
- ld_bqty = 0
- ld_wqty = 0
- ld_pqty = 0
- ld_otherrqqty = 0
- ld_samerqqty = 0
- ld_dyqty = 0
-
- IF ld_cqty = 0 THEN EXIT
- IF arg_pf_dy.SonLoss[l] = 1 THEN CONTINUE
-
-
- ld_cmplqty = 0
- ld_cmplqty = Round(ld_pcmplqty * arg_pf_dy.Sonscale[l]/(1 - arg_pf_dy.SonLoss[l]),uo_option_produce_dec)
- ld_rate = Round(ld_cmplqty/arg_s_mtrl.qty[i],2)
-
- ld_cqty = ld_cqty * ld_rate
-
- IF uof_get_qty(1,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_bqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_qty(2,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_pqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_qty(3,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_wqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_qty(4,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_mqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_other_rqqty(arg_s_mtrl.scid[i],arg_s_mtrl.orderid[i],&
- arg_pf_dy.dymtrlid[l],arg_s_mtrl.mtrlorigin[i],arg_pf_dy.status[l],&
- arg_pf_dy.woodcode[l],arg_pf_dy.pcode[l],ld_otherrqqty,&
- arg_ifdate,arg_s_mtrl.edate[i],arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- arr_mxt = UpperBound(arg_s_mtrl.mtrlid)
-
- IF arr_mxt = 0 THEN
- ld_samerqqty = 0
- ELSE
- FOR j = 1 TO arr_mxt
- IF arg_s_mtrl.scid[j] = arg_s_mtrl.scid[i] AND &
- arg_s_mtrl.orderid[j] = arg_s_mtrl.orderid[i] AND &
- arg_s_mtrl.mtrlid[j] = arg_pf_dy.dymtrlid[l] AND &
- arg_s_mtrl.sdate[j] = arg_s_mtrl.sdate[i] AND &
- arg_s_mtrl.edate[j] = arg_s_mtrl.edate[i] AND &
- arg_s_mtrl.status[j] = arg_pf_dy.status[l] AND &
- arg_s_mtrl.woodcode[j] = arg_pf_dy.woodcode[l] AND &
- arg_s_mtrl.pcode[j] = arg_pf_dy.pcode[l] AND &
- arg_s_mtrl.wrkgrpid_scll[j] = arg_s_mtrl.wrkgrpid_scll[i] THEN
- ld_samerqqty = ld_samerqqty + arg_s_mtrl.qty[j]
- END IF
- NEXT
- END IF
-
- IF ( ld_samerqqty + ld_otherrqqty ) >= ( ld_mqty + ld_bqty + ld_wqty + ld_pqty ) THEN
- CONTINUE
- END IF
-
- IF ld_cqty > ld_mqty + ld_bqty + ld_wqty + ld_pqty - ( ld_samerqqty + ld_otherrqqty ) THEN
- ld_dyqty = ld_mqty + ld_bqty + ld_wqty + ld_pqty - ( ld_samerqqty + ld_otherrqqty )
- ld_cqty = ld_cqty - ( ld_mqty + ld_bqty + ld_wqty + ld_pqty - ( ld_samerqqty + ld_otherrqqty ) )
- ld_cqty = Round(ld_cqty/ld_rate,2)
- ELSE
- ld_dyqty = ld_cqty
- ld_cqty = 0
- END IF
-
- dy_arr_mxt++
- arg_pf_dy_t.dymtrlid[dy_arr_mxt] = arg_pf_dy.dymtrlid[l]
- arg_pf_dy_t.Sonscale[dy_arr_mxt] = arg_pf_dy.Sonscale[l]
- arg_pf_dy_t.SonLoss[dy_arr_mxt] = arg_pf_dy.SonLoss[l]
- arg_pf_dy_t.scllloss[dy_arr_mxt] = arg_pf_dy.scllloss[l]
- arg_pf_dy_t.dscrp[dy_arr_mxt] = arg_pf_dy.dscrp[l]
- arg_pf_dy_t.status[dy_arr_mxt] = arg_pf_dy.status[l]
- arg_pf_dy_t.woodcode[dy_arr_mxt] = arg_pf_dy.woodcode[l]
- arg_pf_dy_t.pcode[dy_arr_mxt] = arg_pf_dy.pcode[l]
- arg_pf_dy_t.mtrlcode[dy_arr_mxt] = arg_pf_dy.mtrlcode[l]
- arg_pf_dy_t.mtrlname[dy_arr_mxt] = arg_pf_dy.mtrlname[l]
- arg_pf_dy_t.mtrlmode[dy_arr_mxt] = arg_pf_dy.mtrlmode[l]
- arg_pf_dy_t.unit[dy_arr_mxt] = arg_pf_dy.unit[l]
- arg_pf_dy_t.mtrlorigin[dy_arr_mxt] = arg_pf_dy.mtrlorigin[l]
- arg_pf_dy_t.mtrltype[dy_arr_mxt] = arg_pf_dy.mtrltype[l]
- arg_pf_dy_t.mtrlprp[dy_arr_mxt] = arg_pf_dy.mtrlprp[l]
- arg_pf_dy_t.ifselforder[dy_arr_mxt] = arg_pf_dy.ifselforder[l]
- arg_pf_dy_t.ifpack[dy_arr_mxt] = arg_pf_dy.ifpack[l]
- arg_pf_dy_t.ifpackpro[dy_arr_mxt] = arg_pf_dy.ifpackpro[l]
- arg_pf_dy_t.produce_scid[dy_arr_mxt] = arg_pf_dy.produce_scid[l]
- arg_pf_dy_t.produce_wrkgrpid[dy_arr_mxt] = arg_pf_dy.produce_wrkgrpid[l]
- arg_pf_dy_t.ordertype[dy_arr_mxt] = arg_pf_dy.ordertype[l]
- arg_pf_dy_t.ifpackpz[dy_arr_mxt] = arg_pf_dy.ifpackpz[l]
-
- arg_pf_dy_t.dyqty[dy_arr_mxt] = ld_dyqty
- arg_pf_dy_t.mqty[dy_arr_mxt] = ld_mqty
- arg_pf_dy_t.bqty[dy_arr_mxt] = ld_bqty
- arg_pf_dy_t.wqty[dy_arr_mxt] = ld_wqty
- arg_pf_dy_t.pqty[dy_arr_mxt] = ld_pqty
- arg_pf_dy_t.otherrqqty[dy_arr_mxt] = ld_otherrqqty
- arg_pf_dy_t.samerqqty[dy_arr_mxt] = ld_samerqqty
- NEXT
-
- ll_dycnt = UpperBound(arg_pf_dy_t.dymtrlid)
-
- //代用
- IF ll_dycnt > 0 and ld_cqty = 0 THEN
- IF arg_s_mtrl.qty[i] > arg_s_mtrl.cmplqty[i] THEN
- uof_cmpl_rqmtrl_dy_mx(i,1,arg_s_mtrl,arg_pf_dy_t)
- ll_begin_i = i + ll_dycnt
- ELSEIF arg_s_mtrl.qty[i] = arg_s_mtrl.cmplqty[i] THEN
- uof_cmpl_rqmtrl_dy_mx(i,0,arg_s_mtrl,arg_pf_dy_t)
- ll_begin_i = i + ll_dycnt - 1
- END IF
- ll_begin_i = ll_begin_i + 1
- GOTO re_for
- END IF
- ELSEIF arg_s_mtrl.dytype[i] = 2 THEN
- FOR l = 1 TO UpperBound(arg_pf_dy.dymtrlid)
-
- IF arg_pf_dy.SonLoss[l] = 1 THEN CONTINUE
-
- ld_cmplqty = 0
- ld_cmplqty = Round(ld_pcmplqty * arg_pf_dy.Sonscale[l]/(1 - arg_pf_dy.SonLoss[l]),uo_option_produce_dec)
-
- IF uof_get_qty(1,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_bqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_qty(2,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_pqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_qty(3,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_wqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_qty(4,arg_ifdate,arg_s_mtrl.edate[i],arg_s_mtrl.scid[i],&
- arg_s_mtrl.orderid[i],arg_pf_dy.dymtrlid[l],&
- arg_pf_dy.status[l],arg_pf_dy.woodcode[l],&
- arg_pf_dy.pcode[l],ld_mqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_get_other_rqqty(arg_s_mtrl.scid[i],arg_s_mtrl.orderid[i],&
- arg_pf_dy.dymtrlid[l],arg_s_mtrl.mtrlorigin[i],arg_pf_dy.status[l],&
- arg_pf_dy.woodcode[l],arg_pf_dy.pcode[l],ld_otherrqqty,&
- arg_ifdate,arg_s_mtrl.edate[i],arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- arr_mxt = UpperBound(arg_s_mtrl.mtrlid)
-
- IF arr_mxt = 0 THEN
- ld_samerqqty = 0
- ELSE
- FOR j = 1 TO arr_mxt
- IF arg_s_mtrl.scid[j] = arg_s_mtrl.scid[i] AND &
- arg_s_mtrl.orderid[j] = arg_s_mtrl.orderid[i] AND &
- arg_s_mtrl.mtrlid[j] = arg_pf_dy.dymtrlid[l] AND &
- arg_s_mtrl.sdate[j] = arg_s_mtrl.sdate[i] AND &
- arg_s_mtrl.edate[j] = arg_s_mtrl.edate[i] AND &
- arg_s_mtrl.status[j] = arg_pf_dy.status[l] AND &
- arg_s_mtrl.woodcode[j] = arg_pf_dy.woodcode[l] AND &
- arg_s_mtrl.pcode[j] = arg_pf_dy.pcode[l] AND &
- arg_s_mtrl.wrkgrpid_scll[j] = arg_s_mtrl.wrkgrpid_scll[i] THEN
- ld_samerqqty = ld_samerqqty + arg_s_mtrl.qty[j]
- END IF
- NEXT
- END IF
-
- IF ld_cmplqty < ld_mqty + ld_bqty + ld_wqty + ld_pqty - ld_otherrqqty - ld_samerqqty THEN
-
- arg_s_mtrl.mtrlid[i] = arg_pf_dy.dymtrlid[l]
- arg_s_mtrl.status[i] = arg_pf_dy.status[l]
- arg_s_mtrl.woodcode[i] = arg_pf_dy.woodcode[l]
- arg_s_mtrl.pcode[i] = arg_pf_dy.pcode[l]
-
- arg_s_mtrl.mtrlcode[i] = arg_pf_dy.mtrlcode[l]
- arg_s_mtrl.mtrlname[i] = arg_pf_dy.mtrlname[l]
- arg_s_mtrl.mtrlmode[i] = arg_pf_dy.mtrlmode[l]
- arg_s_mtrl.unit[i] = arg_pf_dy.unit[l]
- arg_s_mtrl.mtrlorigin[i] = arg_pf_dy.mtrlorigin[l]
- arg_s_mtrl.mtrltype[i] = arg_pf_dy.mtrltype[l]
- arg_s_mtrl.mtrlprp[i] = arg_pf_dy.mtrlprp[l]
- arg_s_mtrl.ifselforder[i] = arg_pf_dy.ifselforder[l]
- arg_s_mtrl.ifpack[i] = arg_pf_dy.ifpack[l]
- arg_s_mtrl.ifpackpro[i] = arg_pf_dy.ifpackpro[l]
- arg_s_mtrl.mtrlordertype[i] = arg_pf_dy.ordertype[l]
- arg_s_mtrl.ifpackpz[i] = arg_pf_dy.ifpackpz[l]
- arg_s_mtrl.produce_scid[i] = arg_pf_dy.produce_scid[l]
- arg_s_mtrl.produce_wrkgrpid[i] = arg_pf_dy.produce_wrkgrpid[l]
-
- arg_s_mtrl.qty[i] = ld_cmplqty
- arg_s_mtrl.cmplqty[i] = 0
-
- arg_s_mtrl.mqty[i] = ld_mqty
- arg_s_mtrl.bqty[i] = ld_bqty
- arg_s_mtrl.wqty[i] = ld_wqty
- arg_s_mtrl.pqty[i] = ld_pqty
- arg_s_mtrl.otherrqqty[i] = ld_otherrqqty
- arg_s_mtrl.samerqqty[i] = ld_samerqqty
-
- EXIT
- END IF
- NEXT
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uof_aps_update_date (long arg_scid, long arg_orderid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Int li_flag
- SELECT plan_flag INTO :li_flag
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划排程标记失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_flag = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- UPDATE u_OrderRqMtrl
- SET u_OrderRqMtrl.RqDate = v_update_rqmtrl.new_rqdate,
- u_OrderRqMtrl.edate = v_update_rqmtrl.new_edate
- FROM u_OrderRqMtrl INNER JOIN
- (SELECT v_workgroup.mindate AS new_rqdate, DATEADD(dd, DATEDIFF(dd,
- u_OrderRqMtrl.RqDate, v_workgroup.mindate), u_OrderRqMtrl.edate)
- AS new_edate, u_OrderRqMtrl.scid, u_OrderRqMtrl.OrderID,
- u_OrderRqMtrl.MtrlID, u_OrderRqMtrl.wrkGrpid, u_OrderRqMtrl.status,
- u_OrderRqMtrl.woodcode, u_OrderRqMtrl.pcode, u_OrderRqMtrl.plantype,
- u_OrderRqMtrl.produce_wrkGrpid
- FROM u_OrderRqMtrl INNER JOIN
- (SELECT wrkGrpid, MIN(begindate) AS mindate, scid, orderid
- FROM u_OrderMtrl_workgroup
- WHERE (begindate IS NOT NULL)
- GROUP BY wrkGrpid, scid, orderid) v_workgroup ON
- u_OrderRqMtrl.scid = v_workgroup.scid AND
- u_OrderRqMtrl.OrderID = v_workgroup.orderid AND
- u_OrderRqMtrl.wrkGrpid = v_workgroup.wrkGrpid) v_update_rqmtrl ON
- u_OrderRqMtrl.scid = v_update_rqmtrl.scid AND
- u_OrderRqMtrl.OrderID = v_update_rqmtrl.OrderID AND
- u_OrderRqMtrl.MtrlID = v_update_rqmtrl.MtrlID AND
- u_OrderRqMtrl.wrkGrpid = v_update_rqmtrl.wrkGrpid AND
- u_OrderRqMtrl.status = v_update_rqmtrl.status COLLATE Chinese_PRC_CI_AS AND
- u_OrderRqMtrl.woodcode = v_update_rqmtrl.woodcode COLLATE Chinese_PRC_CI_AS AND
- u_OrderRqMtrl.pcode = v_update_rqmtrl.pcode COLLATE Chinese_PRC_CI_AS AND
- u_OrderRqMtrl.plantype = v_update_rqmtrl.plantype AND
- u_OrderRqMtrl.produce_wrkGrpid = v_update_rqmtrl.produce_wrkGrpid
- WHERE u_OrderRqMtrl.scid = :arg_scid
- And u_OrderRqMtrl.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新用料需求日期失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_OrderRqMtrl_tree
- SET u_OrderRqMtrl_tree.RqDate = v_updaet_date.new_rqdate,
- u_OrderRqMtrl_tree.edate = v_updaet_date.new_edate
- FROM u_OrderRqMtrl_tree INNER JOIN
- (SELECT u_OrderRqMtrl_tree.scid, u_OrderRqMtrl_tree.OrderID,
- u_OrderRqMtrl_tree.printid, v_workgroup.mindate AS new_rqdate,
- DATEADD(dd, DATEDIFF(dd, u_OrderRqMtrl_tree.RqDate,
- v_workgroup.mindate), u_OrderRqMtrl_tree.edate) AS new_edate
- FROM u_OrderRqMtrl_tree INNER JOIN
- (SELECT wrkGrpid, MIN(begindate) AS mindate, scid, orderid
- FROM u_OrderMtrl_workgroup
- WHERE (begindate IS NOT NULL)
- GROUP BY wrkGrpid, scid, orderid) v_workgroup ON
- u_OrderRqMtrl_tree.scid = v_workgroup.scid AND
- u_OrderRqMtrl_tree.OrderID = v_workgroup.orderid AND
- u_OrderRqMtrl_tree.wrkGrpid = v_workgroup.wrkGrpid) v_updaet_date ON
- u_OrderRqMtrl_tree.scid = v_updaet_date.scid AND
- u_OrderRqMtrl_tree.OrderID = v_updaet_date.OrderID AND
- u_OrderRqMtrl_tree.printid = v_updaet_date.printid
- WHERE u_OrderRqMtrl_tree.scid = :arg_scid
- And u_OrderRqMtrl_tree.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新物料需求结构表日期失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_cmpl_rqmtrl (long arg_lp, s_mrp_arg arg_s_mrp, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg);//主MRP运算
- Int rslt = 1
- Int li_pfflag
- Long ll_mtrlid_order,ll_ordertype_order,ll_saletaskmx_pf_cnt
- Long ll_taskid_order,ll_taskmxid_order
- DateTime ldt_orderdate,ldt_orderrqdate
- Int li_order_ifpackpro
- Int li_ifmainmtrlid
- Long arr_mxt
- Long ll_i,cnt
- Boolean if_special_notuse = False
- Int li_ifpzpf
- Long ll_pzpfcnt
- String ls_pfcode_local
- Long ll_ifbj_task
- int li_multtype
- decimal lde_eoq, lde_maxqty, lde_minqty
- decimal lde_addcmplqty, lde_sameaddcmplqty
- string ls_pdscrp
- If uo_option_packpro2_pf_pack2_useifover = -1000 Then
- rslt = 0
- arg_msg = '选项:[274]个性包件产品清单明细个性包件必须使用按配置拆装,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_ifpackpro2_if_no_pack2 = -1000 Then
- rslt = 0
- arg_msg = '选项:[340]个性包件产品物料清单允许没有个性包件,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- deep++
- If deep > 1000 Then
- arg_msg = '递归太深'+String(deep)
- rslt = 0
- Goto ext
- End If
- ls_pfcode_local = arg_s_mrp.arg_pfcode
- If arg_s_mrp.arg_orderid <> -1 Then
- Select u_order_ml.mtrlid,
- u_order_ml.orderdate,
- u_order_ml.requiredate,
- u_mtrldef.ifpackpro,
- u_order_ml.ordertype,
- u_order_ml.taskid,
- u_order_ml.taskmxid
- Into :ll_mtrlid_order,
- :ldt_orderdate,
- :ldt_orderrqdate,
- :li_order_ifpackpro,
- :ll_ordertype_order,
- :ll_taskid_order,
- :ll_taskmxid_order
- From u_order_ml Inner join u_mtrldef on u_order_ml.mtrlid = u_mtrldef.mtrlid
- Where u_order_ml.orderid = :arg_s_mrp.arg_orderid
- And u_order_ml.scid = :arg_s_mrp.arg_scid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询生产计划生产物料操作失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Select u_saletype.ifbj
- Into :ll_ifbj_task
- From u_SaleTask Inner JOIN
- u_saletype ON u_SaleTask.typeid = u_saletype.typeid
- Where u_SaleTask.scid = :arg_s_mrp.arg_scid
- And u_SaleTask.taskid = :ll_taskid_order;
- If sqlca.SQLCode <> 0 Then
- ll_ifbj_task = 0
- End If
-
-
- Else
- If deep = 1 Then
- ll_mtrlid_order = arg_s_mrp.arg_mtrlid
- Else
- ll_mtrlid_order = -1
- End If
- End If
- String ls_mtrlcode,ls_mtrlname,ls_mtrlmode
- String ls_unit,ls_mtrltype
- Int li_mtrlorigin,li_ifselforder,li_mtrlprp,li_statusflag,li_mtrlorigin_p
- Long ll_scid_mtrl,ll_wrkgrpid_mtrl
- Decimal ld_buydays,ld_orderdays,ld_wfjgdays,ld_aheaddays
- Date ld_sdate,ld_edate,ld_rqdate,ld_up_sdate
- DateTime ldt_sdate,ldt_edate
- Int li_ifpack,li_ifpackpro,li_ordertype,li_ifpackpz,li_iffp
- Decimal ld_cmpqty
- String ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode
- Select u_mtrldef.mtrlcode,
- u_mtrldef.mtrlname,
- u_mtrldef.mtrlmode,
- u_mtrldef.mtrltype,
- u_mtrldef.unit,
- u_mtrldef.Mtrlorigin,
- u_mtrldef.scid,
- u_mtrldef.dftwrkgrpid,
- u_mtrldef.buydays,
- u_mtrldef.orderdays,
- u_mtrldef.wfjgdays,
- u_mtrldef.aheaddays,
- u_mtrldef.ifselforder,
- u_mtrldef.mtrlprp,
- u_mtrldef.statusflag,
- u_mtrldef.ifpack,
- u_mtrldef.ifpackpro,
- u_mtrldef.ordertype,
- u_mtrldef.ifpackpz,
- u_mtrldef.cmpqty,
- u_mtrldef.mtrlsectype,
- u_mtrldef.zxmtrlmode,
- u_mtrldef.usermtrlmode,
- u_mtrldef.iffp,
- u_mtrldef.multtype,
- u_mtrldef.eoq,
- u_mtrldef.maxqty,
- u_mtrldef.minqty
- Into :ls_mtrlcode,
- :ls_mtrlname,
- :ls_mtrlmode,
- :ls_mtrltype,
- :ls_unit,
- :li_mtrlorigin,
- :ll_scid_mtrl,
- :ll_wrkgrpid_mtrl,
- :ld_buydays,
- :ld_orderdays,
- :ld_wfjgdays,
- :ld_aheaddays,
- :li_ifselforder,
- :li_mtrlprp,
- :li_statusflag,
- :li_ifpack,
- :li_ifpackpro,
- :li_ordertype,
- :li_ifpackpz,
- :ld_cmpqty,
- :ls_mtrlsectype,
- :ls_zxmtrlmode,
- :ls_usermtrlmode,
- :li_iffp,
- :li_multtype,
- :lde_eoq,
- :lde_maxqty,
- :lde_minqty
- From u_mtrldef
- Where mtrlid = :arg_s_mrp.arg_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- //yyx20120523
- If deep = 1 Then
- If li_ifpackpro = 1 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_PrdPF,u_mtrldef,u_mtrl_pf
- Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_mtrl_pf.ifdi = 0 )
- And ( u_mtrl_pf.ifdft = 1 )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.mtrlid = :arg_s_mrp.arg_mtrlid )
- And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- And ( u_mtrldef.ifpack = 2 );
- 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
- End If
-
- If li_ifpackpro = 2 Then
- If uo_option_ifpackpro2_if_no_pack2 = 0 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_PrdPF,u_mtrldef,u_mtrl_pf
- Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_mtrl_pf.ifdi = 0 )
- And ( u_mtrl_pf.ifdft = 1 )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.mtrlid = :arg_s_mrp.arg_mtrlid )
- And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- And ( u_mtrldef.ifpack = 2 );
- 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
- End If
-
- //检查订单生产计划相关订单明细是否设置了个性清单yyx120823
- If ll_ordertype_order = 1 And ll_taskid_order > 0 Then
- Select count(*)
- Into :ll_saletaskmx_pf_cnt
- From u_saletaskmx_pf
- Where u_saletaskmx_pf.scid = :arg_s_mrp.arg_scid
- And u_saletaskmx_pf.taskid = :ll_taskid_order
- And u_saletaskmx_pf.printid = :ll_taskmxid_order;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询主计划产品对应销售订单明细是否设置了个性清单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- //
- End If
-
- If uo_option_packpro2_pf_pack2_useifover = 1 Then
- If li_ifpackpro = 2 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_PrdPF,u_mtrldef,u_mtrl_pf
- Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_mtrl_pf.ifdi = 0 )
- And ( u_mtrl_pf.ifdft = 1 )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.mtrlid = :arg_s_mrp.arg_mtrlid )
- And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- And ( u_PrdPF.ifover = 0 )
- And ( u_mtrldef.ifpack = 2 );
- 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
- End If
- End If
-
- cnt = 0
- Select count(*) Into :cnt
- From u_PrdPF,u_mtrldef,u_mtrl_pf
- Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_mtrl_pf.ifdi = 0 )
- And ( u_mtrl_pf.ifdft = 1 )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.mtrlid = :arg_s_mrp.arg_mtrlid )
- And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- And ( u_PrdPF.ifover = 1 )
- And ( u_PrdPF.dipztype = -1 );
- 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
- End If
- //
- If arg_s_mrp.arg_pmtrlid > 0 Then
- Select mtrlorigin Into :li_mtrlorigin_p
- From u_mtrldef
- Where mtrlid = :arg_s_mrp.arg_pmtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询上级物料资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- If ld_cmpqty = 0 Then ld_cmpqty = 1
- //检查组合配置是否使用组合配置清单
- If li_statusflag = 2 And arg_s_mrp.arg_ifcfg = 0 Then
- If arg_s_mrp.arg_status = '' Then
- arg_msg = '计划产品设置为使用组合配置属性,但计划配置内容非法,请检查'
- rslt = 0
- Goto ext
- End If
-
- arg_s_mrp.arg_pfcode = arg_s_mrp.arg_status
-
- ll_pzpfcnt = 0
- Select count(*) Into :ll_pzpfcnt
- From u_mtrl_pf
- Where mtrlid = :arg_s_mrp.arg_mtrlid
- And pfcode = :arg_s_mrp.arg_pfcode
- And ifpzpf = 1;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料是否启用组合配置清单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If ll_pzpfcnt > 0 Then
- li_ifpzpf = 1
- If uof_pfcode_check(arg_s_mrp.arg_mtrlid,ls_mtrlcode,arg_s_mrp.arg_pfcode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- Else
- li_ifpzpf = 0
- End If
- Else
- li_ifpzpf = 0
- End If
- //如果不是组合配置或则检查物料清单审核标记
- If li_statusflag <> 2 Or arg_s_mrp.arg_ifcfg = 1 Then
- If uof_pfcode_check(arg_s_mrp.arg_mtrlid,ls_mtrlcode,arg_s_mrp.arg_pfcode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Decimal ld_cmplqty
- Decimal ld_mqty
- Decimal ld_wmqty
- Decimal ld_bqty
- Decimal ld_wqty
- Decimal ld_pqty
- Decimal ld_ckwareqty, ld_ckwareqty_af
- Decimal ld_pqty2,ld_pqty2_cmpl
- Decimal ld_rqwfjgqty,ld_rqwfjgqty_cmpl
- Decimal ld_rqbuyqty,ld_rqbuyqty_cmpl
- Decimal ld_otherrqqty,ld_otherrqqty_wx,ld_otherrqqty_sale,ld_samerqqty
- Decimal ld_advancetime_max_next //自制下级最大提前期
- Int li_dytype
- String ld_qty_dscrp //未进仓明细摘要
- //计算需求日期
- ld_rqdate = Date(String(arg_s_mrp.arg_up_rqdate,'yyyy-mm-dd'))
- ld_up_sdate = Date(String(arg_s_mrp.arg_up_sdate,'yyyy-mm-dd'))
- If li_mtrlorigin = 0 Then
- If deep = 1 Then
- ld_edate = ld_rqdate
-
- If li_ifpackpro > 0 Then
- If sys_option_ifuse_ordersdate = 0 Then
- ld_sdate = Date(ldt_orderdate)
- Else
- If uof_get_max_advancetime(arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_pfcode,ld_advancetime_max_next,arg_msg) = 0 Then
- arg_msg = ls_mtrlcode + arg_msg
- rslt = 0
- Goto ext
- End If
-
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- End If
- Else
- If li_ordertype = 0 Then
- If sys_option_ifuse_ordersdate = 0 Then
- ld_sdate = Date(ldt_orderdate)
- Else
- If uof_get_max_advancetime(arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_pfcode,ld_advancetime_max_next,arg_msg) = 0 Then
- arg_msg = ls_mtrlcode + arg_msg
- rslt = 0
- Goto ext
- End If
-
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- End If
- Else
- If li_statusflag = 2 And li_ifpzpf = 0 Then
- If sys_option_ifuse_ordersdate = 0 Then
- ld_sdate = Date(ldt_orderdate)
- Else
- If uof_get_max_advancetime2(arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_status,ld_advancetime_max_next,arg_msg) = 0 Then
- arg_msg = ls_mtrlcode + arg_msg
- rslt = 0
- Goto ext
- End If
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- End If
- Else
- If sys_option_ifuse_ordersdate = 0 Then
- ld_sdate = Date(ldt_orderdate)
- Else
- If uof_get_max_advancetime(arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_pfcode,ld_advancetime_max_next,arg_msg) = 0 Then
- arg_msg = ls_mtrlcode + arg_msg
- rslt = 0
- Goto ext
- End If
-
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- End If
- End If
- End If
- End If
- Else
- If li_ifpack > 0 And sys_option_ifuse_ordersdate = 0 Then
- ld_edate = Date(ldt_orderrqdate)
- ld_sdate = Date(ldt_orderdate)
- ElseIf (li_ifpackpro = 3 Or li_ifpackpro = 4) And sys_option_ifuse_ordersdate = 0 Then
- ld_edate = Date(ldt_orderrqdate)
- ld_sdate = Date(ldt_orderdate)
- Else
- If li_mtrlorigin_p = 3 Then
- ld_edate = ld_up_sdate
- Else
- ld_edate = RelativeDate( ld_rqdate,0 - ld_orderdays - arg_s_mrp.arg_advancetime )
- End If
- //取下级最大提前期
- If li_statusflag = 2 And ll_mtrlid_order = arg_s_mrp.arg_mtrlid Then
- If sys_option_ifuse_ordersdate = 0 Then
- ld_sdate = Date(ldt_orderdate)
- Else
- ld_advancetime_max_next = 0
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- End If
- Else
- If uof_get_max_advancetime(arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_pfcode,ld_advancetime_max_next,arg_msg) = 0 Then
- arg_msg = ls_mtrlcode + arg_msg
- rslt = 0
- Goto ext
- End If
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- End If
- End If
- End If
- ElseIf li_mtrlorigin = 2 Then
- If li_mtrlorigin_p = 3 Then
- ld_edate = ld_up_sdate
- Else
- ld_edate = RelativeDate( ld_rqdate,0 - arg_s_mrp.arg_advancetime )
- End If
- ld_edate = RelativeDate( ld_edate,0 - ld_orderdays )
- ld_sdate = RelativeDate ( ld_edate, 0 - ld_buydays )
- ElseIf li_mtrlorigin = 3 Then
- If li_mtrlorigin_p = 3 Then
- ld_edate = ld_up_sdate
- Else
- ld_edate = RelativeDate( ld_rqdate,0 - arg_s_mrp.arg_advancetime )
- End If
- ld_edate = RelativeDate( ld_edate,0 - ld_orderdays )
- ld_sdate = RelativeDate ( ld_edate, 0 - ld_wfjgdays )
- ElseIf li_mtrlorigin = 6 Then
- If li_mtrlorigin_p = 3 Then
- ld_edate = ld_up_sdate
- Else
- ld_edate = RelativeDate( ld_rqdate,0 - arg_s_mrp.arg_advancetime )
- End If
- ld_edate = RelativeDate( ld_edate,0 - ld_orderdays )
- ld_sdate = RelativeDate( ld_edate, 0 - ld_aheaddays )
- End If
- ldt_sdate = DateTime(ld_sdate,Time(0))
- ldt_edate = DateTime(ld_edate,Time(0))
- //-----------------------------------------
- //代用物料
- If li_mtrlorigin = 0 Then
- li_dytype = 0
- ElseIf li_mtrlorigin = 2 Then
- If arg_s_mrp.arg_if_allowuse = 1 Then
- If uof_get_prdpf_dytype(arg_s_mrp.arg_pmtrlid,arg_s_mrp.arg_ppfcode,arg_s_mrp.arg_pfgroup,arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_wrkgrpid_scll,arg_s_mrp.arg_pfcode,li_dytype,arg_msg) = 0 Then
- arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- rslt = 0
- Goto ext
- End If
- Else
- li_dytype = 0
- End If
- ElseIf li_mtrlorigin = 3 Then
- li_dytype = 0
- ElseIf li_mtrlorigin = 6 Then
- li_dytype = 0
- End If
- //
- If arg_s_mrp.arg_ifcfg = 1 Then
- li_ifmainmtrlid = 0
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- arr_mxt = UpperBound(arg_s_mtrl.mtrlid)
- ld_samerqqty = 0
- Else
- If arg_s_mrp.arg_mtrlid = ll_mtrlid_order Then
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- li_ifmainmtrlid = 1
- Else
- li_ifmainmtrlid = 0
- If arg_s_mrp.arg_if_allowuse = 1 And ( li_ifselforder > 0 And li_mtrlorigin = 0 Or li_mtrlorigin > 0 ) Then
- //改写存储过程
- If sys_option_if_newmrp = 0 Then
- Declare sp_qty Procedure For sp_order_ml_mrp_qty
- @arg_ifdate = :arg_s_mrp.arg_ifdate,
- @arg_enddate = :ldt_edate,
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_orderid = :arg_s_mrp.arg_orderid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_if_otherrq_mrpaudit = :if_otherrq_mrpaudit,
- @arg_if_wqty_norq = :sys_option_if_wqty_norq,
- @arg_plantype = :li_mtrlorigin,
- @arg_ref_bqty = :ld_bqty output,
- @arg_ref_pqty = :ld_pqty output,
- @arg_ref_wqty = :ld_wqty output,
- @arg_ref_mqty = :ld_mqty output,
- @arg_ref_wmqty = :ld_wmqty output,
- @arg_ref_pqty_nozl = :ld_pqty2 output,
- @arg_ref_otherrqqty = :ld_otherrqqty output,
- @arg_ref_rqwfjgqty = :ld_rqwfjgqty output,
- @arg_ref_rqbuyqty = :ld_rqbuyqty output,
- @arg_ref_otherrqqty_wx = :ld_otherrqqty_wx output,
- @arg_ref_otherrqqty_sale = :ld_otherrqqty_sale output;
-
- Execute sp_qty;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',调用查询数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Fetch sp_qty Into :ld_bqty,:ld_pqty,:ld_wqty,:ld_mqty,:ld_wmqty,:ld_pqty2,:ld_otherrqqty,:ld_rqwfjgqty,:ld_rqbuyqty,:ld_otherrqqty_wx,:ld_otherrqqty_sale;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',储存过程赋值变量失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Close sp_qty;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Else
- Declare sp_qty1 Procedure For sp_order_ml_mrp_qty_new
- @arg_ifdate = :arg_s_mrp.arg_ifdate,
- @arg_enddate = :ldt_edate,
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_ref_bqty = :ld_bqty output,
- @arg_ref_pqty = :ld_pqty output,
- @arg_ref_wqty = :ld_wqty output,
- @arg_ref_pqty_nozl = :ld_pqty2 output,
- @arg_ref_otherrqqty = :ld_otherrqqty output,
- @arg_ref_otherrqqty_wx = :ld_otherrqqty_wx output Using mrp_sqlca;
-
- Execute sp_qty1;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',调用查询数量储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Fetch sp_qty1 Into :ld_bqty,:ld_pqty,:ld_wqty,:ld_pqty2,:ld_otherrqqty,:ld_otherrqqty_wx;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',储存过程赋值变量失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Close sp_qty1;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询数量储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Declare sp_qty2 Procedure For sp_order_ml_mrp_qty_new2
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_ref_mqty = :ld_mqty output,
- @arg_ref_wmqty = :ld_wmqty output;
-
- Execute sp_qty2;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',调用查询库存数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Fetch sp_qty2 Into :ld_mqty,:ld_wmqty;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',库存数量储存过程赋值变量失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Close sp_qty2;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询库存数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- // IF uof_get_qty(1,arg_ifdate,ldt_edate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_bqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uof_get_qty(2,arg_ifdate,ldt_edate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_pqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
-
- If if_qty_dscrp And ld_pqty > 0 Then //查生产未进仓明细
- If uof_get_qty_dscrp(2,arg_s_mrp.arg_ifdate,ldt_edate,arg_s_mrp.arg_scid,arg_s_mrp.arg_orderid,arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_status,arg_s_mrp.arg_woodcode,arg_s_mrp.arg_pcode,ld_qty_dscrp,arg_msg) = 0 Then
- arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- rslt = 0
- Goto ext
- End If
- End If
-
- // IF uof_get_qty(3,arg_ifdate,ldt_edate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_wqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uof_get_qty(4,arg_ifdate,ldt_edate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_mqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uof_get_other_rqqty(arg_scid,arg_orderid,arg_mtrlid,li_mtrlorigin,arg_status,arg_woodcode,arg_pcode,ld_otherrqqty,arg_ifdate,ldt_edate,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
-
- // IF if_pqty_not_zl And li_mtrlorigin = 0 THEN
- // IF uof_get_qty(5,arg_ifdate,ldt_edate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_pqty2,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
- End If
-
- if sys_option_if_mrp_dscrp = 1 then
- Declare sp_pdscrp Procedure For Sp_order_ml_mrp_qty_pdscrp
- @arg_ifdate = :arg_s_mrp.arg_ifdate,
- @arg_enddate = :ldt_edate,
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_orderid = :arg_s_mrp.arg_orderid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_pdscrp = :ls_pdscrp output Using mrp_sqlca;
-
- Execute sp_pdscrp;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',调用查询数量明细备注储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Fetch sp_pdscrp Into :ls_pdscrp;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',储存过程赋值变量失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Close sp_pdscrp;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询数量明细备注储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- end if
-
- arr_mxt = UpperBound(arg_s_mtrl.mtrlid)
-
- If arr_mxt = 0 Then
- ld_samerqqty = 0
-
- lde_sameaddcmplqty = 0
- Else
- For ll_i = 1 To arr_mxt
- // Date(arg_s_mtrl.sdate[ll_i]) = Date(ldt_sdate) AND &
- // Date(arg_s_mtrl.edate[ll_i]) = Date(ldt_edate) AND &
- If arg_s_mtrl.scid[ll_i] = arg_s_mrp.arg_scid And &
- arg_s_mtrl.orderid[ll_i] = arg_s_mrp.arg_orderid And &
- arg_s_mtrl.mtrlid[ll_i] = arg_s_mrp.arg_mtrlid And &
- arg_s_mtrl.status[ll_i] = arg_s_mrp.arg_status And &
- arg_s_mtrl.woodcode[ll_i] = arg_s_mrp.arg_woodcode And &
- arg_s_mtrl.pcode[ll_i] = arg_s_mrp.arg_pcode And &
- arg_s_mtrl.wrkGrpid_scll[ll_i] = arg_s_mrp.arg_wrkgrpid_scll Then
- If arg_s_mtrl.ifselforder[ll_i] > 0 And arg_s_mtrl.Mtrlorigin[ll_i] = 0 Or arg_s_mtrl.Mtrlorigin[ll_i] > 0 Then
-
- if ((li_ifselforder > 0 And li_mtrlorigin = 0) or (sys_option_if_wqty_norq = 1 and li_mtrlorigin = 3) ) and li_multtype > 0 then
- ld_samerqqty = ld_samerqqty + arg_s_mtrl.qty[ll_i] - arg_s_mtrl.cmplqty[ll_i]
- else
- ld_samerqqty = ld_samerqqty + arg_s_mtrl.qty[ll_i]
- end if
-
- lde_sameaddcmplqty = lde_sameaddcmplqty + arg_s_mtrl.addcmplqty[ll_i]
- End If
- End If
- Next
- End If
-
- If arg_s_mrp.arg_if_allowuse = 1 And ( li_ifselforder > 0 And li_mtrlorigin = 0 Or li_mtrlorigin > 0 ) Then
- If ifzl_mtrl_not_useqty Or ifzl_mtrl_pwx_not_useqty Or ifwx_mtrl_not_useqty Or ifpack_mtrl_not_useqty Then
- If li_mtrlorigin = 0 Then
- If li_ifpack > 0 Then
- If ifpack_mtrl_not_useqty Then
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- End If
- End If
-
- If li_ifselforder = 2 And li_ifpack = 0 Then
- If ifzl_mtrl_not_useqty Then
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- End If
- End If
-
- If li_mtrlorigin_p = 3 And ifzl_mtrl_pwx_not_useqty Then
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- End If
- ElseIf li_mtrlorigin = 2 Then
- If li_ifpack > 0 Then
- If ifpack_mtrl_not_useqty Then
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- End If
- End If
- ElseIf li_mtrlorigin = 3 Then
- If ifwx_mtrl_not_useqty Then
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- End If
- End If
- End If
-
- If if_pqty_not_zl Then
- ld_pqty2_cmpl = ld_pqty2
- Else
- ld_pqty2_cmpl = 0
- End If
-
- If if_rqwfjg_useqty Then
- ld_rqwfjgqty_cmpl = ld_rqwfjgqty
- Else
- ld_rqwfjgqty_cmpl = 0
- End If
-
- If if_rqbuy_useqty Then
- ld_rqbuyqty_cmpl = ld_rqbuyqty
- Else
- ld_rqbuyqty_cmpl = 0
- End If
-
- //可用数, 不考虑本次的生产
- //if li_ifselforder > 0 And li_mtrlorigin = 0 and li_multtype > 0 then 是考虑了本次的生产
- //否则 是不考虑本次生产
- //
- ld_ckwareqty = (ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl) - (ld_otherrqqty + ld_otherrqqty_wx + ld_otherrqqty_sale + ld_samerqqty)
-
- If Not if_special_notuse Then
- if ld_ckwareqty > 0 then
- if ld_ckwareqty > arg_s_mrp.arg_cmplqty then
- ld_cmplqty = 0
- ld_ckwareqty_af = ld_ckwareqty - arg_s_mrp.arg_cmplqty
- else
- ld_cmplqty = arg_s_mrp.arg_cmplqty - ld_ckwareqty
- ld_ckwareqty_af = 0
- end if
- else
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- ld_ckwareqty_af = 0
- end if
-
- // If ld_otherrqqty + ld_otherrqqty_wx + ld_otherrqqty_sale >= ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl Then
- // ld_cmplqty = arg_s_mrp.arg_cmplqty
- // Else
- // If ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl - ld_otherrqqty - ld_otherrqqty_wx - ld_otherrqqty_sale - ld_samerqqty > 0 Then
- // If arg_s_mrp.arg_cmplqty > ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl - ld_otherrqqty - ld_otherrqqty_wx - ld_otherrqqty_sale - ld_samerqqty Then
- // ld_cmplqty = arg_s_mrp.arg_cmplqty - ( ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl - ld_otherrqqty - ld_otherrqqty_wx - ld_otherrqqty_sale - ld_samerqqty )
- // Else
- // ld_cmplqty = 0
- // End If
- // Else
- // ld_cmplqty = arg_s_mrp.arg_cmplqty
- // End If
- // End If
- End If
-
-
- //如果有设置‘物料运算倍数基数’, 按倍数生产
- //自制需求补足批量模式:
- //0- 不增补
- //1- 补足到最小经济生产批量
- //2- 补足到最小经济生产批量的整倍数
- //3- (现库存减需求后的可用数少于库存下限时)补足到库存上限且不少于最小经济批量
- if (li_ifselforder > 0 And li_mtrlorigin = 0) or (sys_option_if_wqty_norq = 1 and li_mtrlorigin = 3) then
- choose case li_multtype
- case 0
-
- case 1
- if ld_cmplqty > 0 then
- if ld_cmplqty < lde_eoq then
- lde_addcmplqty = lde_eoq - ld_cmplqty
- ld_cmplqty = lde_eoq
- end if
- end if
- case 2
- if ld_cmplqty > 0 then
- if mod(ld_cmplqty, lde_eoq) > 0 then
- lde_addcmplqty = lde_eoq - mod(ld_cmplqty, lde_eoq)
- ld_cmplqty = ld_cmplqty + (lde_eoq - mod(ld_cmplqty, lde_eoq))
- end if
- end if
- case 3
- if ld_cmplqty > 0 then
- if ld_ckwareqty_af < lde_minqty then //小于库存下限的才按库存上限生产
- if lde_eoq > lde_maxqty + ld_cmplqty then
- lde_addcmplqty = lde_eoq - ld_cmplqty
- else
- lde_addcmplqty = lde_maxqty
- end if
- else //不小于的只考虑经济批量
- if lde_eoq > ld_cmplqty then //不足经济批量的补足
- lde_addcmplqty = lde_eoq - ld_cmplqty
- else
- lde_addcmplqty = 0
- end if
- end if
- ld_cmplqty = ld_cmplqty + lde_addcmplqty
- //ld_cmplqty = max(lde_eoq, lde_maxqty + ld_cmplqty)
- else
- if ld_ckwareqty_af < lde_minqty then //小于库存下限的才按库存上限生产
- if lde_eoq > lde_maxqty then
- lde_addcmplqty = lde_eoq
- else
- lde_addcmplqty = lde_maxqty
- end if
- ld_cmplqty = ld_cmplqty + lde_addcmplqty
- end if
- end if
- end choose
- end if
- Else
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- End If
- End If
- End If
- //运算结果
- arr_mxt++
- arg_s_mtrl.scid[arr_mxt] = arg_s_mrp.arg_scid
- arg_s_mtrl.orderid[arr_mxt] = arg_s_mrp.arg_orderid
- arg_s_mtrl.mtrlid[arr_mxt] = arg_s_mrp.arg_mtrlid
- arg_s_mtrl.status[arr_mxt] = arg_s_mrp.arg_status
- arg_s_mtrl.woodcode[arr_mxt] = arg_s_mrp.arg_woodcode
- arg_s_mtrl.pcode[arr_mxt] = arg_s_mrp.arg_pcode
- arg_s_mtrl.pfcode[arr_mxt] = ls_pfcode_local //arg_pfcode
- arg_s_mtrl.qty[arr_mxt] = arg_s_mrp.arg_qty
- arg_s_mtrl.cmplqty[arr_mxt] = ld_cmplqty
- arg_s_mtrl.plantype[arr_mxt] = li_mtrlorigin
- arg_s_mtrl.mqty[arr_mxt] = ld_mqty
- arg_s_mtrl.wmqty[arr_mxt] = ld_wmqty
- arg_s_mtrl.bqty[arr_mxt] = ld_bqty
- arg_s_mtrl.wqty[arr_mxt] = ld_wqty
- arg_s_mtrl.pqty[arr_mxt] = ld_pqty
- arg_s_mtrl.pqty2[arr_mxt] = ld_pqty2
- arg_s_mtrl.rqwfjgqty[arr_mxt] = ld_rqwfjgqty
- arg_s_mtrl.rqbuyqty[arr_mxt] = ld_rqbuyqty
- //arg_s_mtrl.pqtydscrp[arr_mxt] = ld_qty_dscrp
- arg_s_mtrl.otherrqqty[arr_mxt] = ld_otherrqqty
- arg_s_mtrl.otherrqqty_wx[arr_mxt] = ld_otherrqqty_wx
- arg_s_mtrl.otherrqqty_sale[arr_mxt] = ld_otherrqqty_sale
- arg_s_mtrl.samerqqty[arr_mxt] = ld_samerqqty
- arg_s_mtrl.ckwareqty[arr_mxt] = ld_ckwareqty
- arg_s_mtrl.addcmplqty[arr_mxt] = lde_addcmplqty //由补足方式额外增加的数
- arg_s_mtrl.pdscrp[arr_mxt] = ls_pdscrp
- //有可用数不用计算开始日期
- If ld_cmplqty = 0 Then
- arg_s_mtrl.sdate[arr_mxt] = ldt_edate
- Else
- arg_s_mtrl.sdate[arr_mxt] = ldt_sdate
- End If
- arg_s_mtrl.edate[arr_mxt] = ldt_edate
- arg_s_mtrl.mtrlcode[arr_mxt] = ls_mtrlcode
- arg_s_mtrl.mtrlname[arr_mxt] = ls_mtrlname
- arg_s_mtrl.mtrlmode[arr_mxt] = ls_mtrlmode
- arg_s_mtrl.mtrltype[arr_mxt] = ls_mtrltype
- arg_s_mtrl.unit[arr_mxt] = ls_unit
- arg_s_mtrl.Mtrlorigin[arr_mxt] = li_mtrlorigin
- arg_s_mtrl.iffp[arr_mxt] = li_iffp
- arg_s_mtrl.mtrlprp[arr_mxt] = li_mtrlprp
- arg_s_mtrl.ifselforder[arr_mxt] = li_ifselforder
- arg_s_mtrl.gydscrp[arr_mxt] = arg_s_mrp.arg_gydscrp
- arg_s_mtrl.pfklmode[arr_mxt] = arg_s_mrp.arg_pfklmode
- arg_s_mtrl.pfgroup[arr_mxt] = arg_s_mrp.arg_pfgroup
- arg_s_mtrl.pfgroupmode[arr_mxt] = arg_s_mrp.arg_pfgroupmode
- arg_s_mtrl.ifcfg[arr_mxt] = arg_s_mrp.arg_ifcfg
- arg_s_mtrl.ifpack[arr_mxt] = li_ifpack
- arg_s_mtrl.ifpackpro[arr_mxt] = li_ifpackpro
- arg_s_mtrl.mtrlordertype[arr_mxt] = li_ordertype
- arg_s_mtrl.ifpackpz[arr_mxt] = li_ifpackpz
- arg_s_mtrl.mtrlsectype[arr_mxt] = ls_mtrlsectype
- arg_s_mtrl.zxmtrlmode[arr_mxt] = ls_zxmtrlmode
- arg_s_mtrl.usermtrlmode[arr_mxt] = ls_usermtrlmode
- arg_s_mtrl.dytype[arr_mxt] = li_dytype
- arg_s_mtrl.ppfcode[arr_mxt] = arg_s_mrp.arg_ppfcode
- arg_s_mtrl.pcmplqty[arr_mxt] = arg_s_mrp.arg_pqty
- arg_s_mtrl.SonLoss[arr_mxt] = arg_s_mrp.arg_SonLoss
- arg_s_mtrl.SonDECLoss[arr_mxt] = arg_s_mrp.arg_SonDECLoss
- arg_s_mtrl.scllLoss[arr_mxt] = arg_s_mrp.arg_scllLoss
- arg_s_mtrl.scllDECLoss[arr_mxt] = arg_s_mrp.arg_scllDECLoss
- arg_s_mtrl.scllqtytype[arr_mxt] = arg_s_mrp.arg_scllqtytype
- arg_s_mtrl.standardrqqty[arr_mxt] = arg_s_mrp.arg_strandqty
- arg_s_mtrl.scllqty[arr_mxt] = arg_s_mrp.arg_scllqty
- arg_s_mtrl.if_follow[arr_mxt] = arg_s_mrp.arg_if_follow
- arg_s_mtrl.lasthour[arr_mxt] = arg_s_mrp.arg_lasthour
- If IsNull(arg_s_mrp.arg_Sonscale) Then arg_s_mrp.arg_Sonscale = 0
- arg_s_mtrl.Sonscale[arr_mxt] = arg_s_mrp.arg_Sonscale
- If li_mtrlorigin = 2 Or li_mtrlorigin = 6 Then
- arg_s_mtrl.produce_scid[arr_mxt] = arg_s_mrp.arg_scid
- Else
- arg_s_mtrl.produce_scid[arr_mxt] = ll_scid_mtrl
- End If
- If ll_ifbj_task = 0 Then
- arg_s_mtrl.produce_wrkgrpid[arr_mxt] = ll_wrkgrpid_mtrl
- arg_s_mtrl.wrkGrpid_scll[arr_mxt] = arg_s_mrp.arg_wrkgrpid_scll
- Else
- If ll_wrkgrpid_mtrl > 0 Then
- arg_s_mtrl.produce_wrkgrpid[arr_mxt] = ins_produce_wrkgrpid_bj
- End If
-
- If li_mtrlorigin = 2 Then
- If deep = 1 Then
- arg_s_mtrl.produce_wrkgrpid[arr_mxt] = ins_produce_wrkgrpid_bj
- Else
- arg_s_mtrl.produce_wrkgrpid[arr_mxt] = 0
- End If
- End If
- arg_s_mtrl.wrkGrpid_scll[arr_mxt] = ins_wrkGrpid_scll_bj
- End If
- arg_s_mtrl.lp[arr_mxt] = arg_lp
- arg_s_mtrl.ifmainmtrlid[arr_mxt] = li_ifmainmtrlid
- arg_s_mtrl.pmtrlid[arr_mxt] = arg_s_mrp.arg_pmtrlid
- arg_s_mtrl.ifchanged[arr_mxt] = 0
- //yyx 20110617
- If ld_cmplqty < 0 Then ld_cmplqty = 0
- //IF ld_cmplqty <= 0 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- Choose Case li_mtrlorigin
- //采购或客户来料
- Case 2
- rslt = 1
- Goto ext
- Case 6
- If li_mtrlprp = 2 Or li_mtrlprp = 8 Then
- rslt = 1
- Goto ext
- End If
- Case 0
- If ll_scid_mtrl <> arg_s_mrp.arg_scid And ll_ifbj_task = 0 Then
- rslt = 1
- Goto ext
- Else
- If arg_s_mrp.arg_ifcfg = 0 And (li_ifselforder = 1 Or li_ifselforder = 3) And li_ifmainmtrlid = 0 Then
- rslt = 1
- Goto ext
- End If
- End If
- Case 3
-
- If ll_scid_mtrl <> arg_s_mrp.arg_scid And ll_ifbj_task = 0 Then
- rslt = 1
- Goto ext
- Else
- If arg_s_mrp.arg_ifcfg = 0 And li_ifselforder = 1 And li_ifmainmtrlid = 0 Then
- rslt = 1
- Goto ext
- End If
- End If
- End Choose
- Long count,ll_j
- Decimal cmpl_qty,ld_cmpl_qty_p
- s_pfmx ls_s_pfmx[]
- s_mtrlcfg_expr s_mtrlcfg[]
- Long ll_cfg,ll_cnt_s_mtrlcfg
- count = 0
- //配置运算
- If li_statusflag = 2 And arg_s_mrp.arg_ifcfg = 0 And li_ifpzpf = 0 Then
- If arg_s_mrp.arg_status = '' Then
- arg_msg = '计划产品设置为使用组合配置属性,但计划配置内容非法,请检查'
- rslt = 0
- Goto ext
- End If
-
- //分解配置
- f_checkpz_general(arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_status,s_mtrlcfg)
- // f_checkpz(arg_s_mrp.arg_status,s_mtrlcfg)
- //
-
- ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg)
- If ll_cnt_s_mtrlcfg = 0 Then
- count = 0
- Else
- For ll_cfg = 1 To ll_cnt_s_mtrlcfg
- count++
- ls_s_pfmx[count].sonmtrlid = arg_s_mrp.arg_mtrlid
- ls_s_pfmx[count].status = s_mtrlcfg[ll_cfg].cfgname
- ls_s_pfmx[count].woodcode = arg_s_mrp.arg_woodcode
- ls_s_pfmx[count].pcode = arg_s_mrp.arg_pcode
- ls_s_pfmx[count].sonpfcode = s_mtrlcfg[ll_cfg].cfgname
- ls_s_pfmx[count].ifcfg = 1
- ls_s_pfmx[count].wrkGrpid = ll_wrkgrpid_mtrl
- ls_s_pfmx[count].pfklmode = ''
- ls_s_pfmx[count].pfgroup = ''
- ls_s_pfmx[count].pfgroupmode = ''
- ls_s_pfmx[count].Sonscale = Dec(s_mtrlcfg[ll_cfg].qty) * ld_cmplqty
- ls_s_pfmx[count].baseqty = 1
- ls_s_pfmx[count].buyarg = 1
- ls_s_pfmx[count].SonLoss = 0
- ls_s_pfmx[count].ifover = 0
- ls_s_pfmx[count].dipztype = 0
- ls_s_pfmx[count].mrp_unit = 0
- ls_s_pfmx[count].scllLoss = 0
- ls_s_pfmx[count].scllDECLoss = 0
- ls_s_pfmx[count].scllqtytype = 0
- ls_s_pfmx[count].if_follow = 0
- ls_s_pfmx[count].lasthour = 0
- Next
- End If
-
- If count = 0 Then
- arg_msg = '物料分拆配置失败,请检查配置内容'
- rslt = 0
- Goto ext
- End If
-
- //查询附加常规清单
- cnt = 0
- Select count(*) Into :cnt
- From u_mtrl_pf
- Where ( u_mtrl_pf.mtrlid = :arg_s_mrp.arg_mtrlid )
- And ( u_mtrl_pf.ifdi = 0 )
- And ( u_mtrl_pf.ifdft = 1 );
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询组合配置产品附加默认清单失败,请检查是否已建立默认清单'
- rslt = 0
- Goto ext
- End If
-
- If cnt > 1 Then
- arg_msg = '组合配置产品附加默认清单只能设置1个,请检查资料'
- rslt = 0
- Goto ext
- End If
-
- If cnt = 1 Then
- Declare pf_cur_dft Cursor For
- Select u_PrdPF.Sonscale,
- u_PrdPF.SonLoss,
- u_PrdPF.SonDECLosS,
- u_PrdPF.SonMtrlid,
- u_PrdPF.sonpfcode,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.wrkGrpid,
- u_PrdPF.dscrp,
- u_PrdPF.pfklmode,
- u_PrdPF.pfgroup,
- u_PrdPF.pfgroupmode,
- 0,
- u_PrdPF.advancetime,
- u_PrdPF.baseqty,
- u_PrdPF.buyarg,
- u_mtrldef.mrptype,
- u_mtrldef.mrparg,
- u_PrdPF.sonlossstr,
- u_prdpf.ifover,
- u_prdpf.dipztype,
- u_mtrldef.mrp_unit,
- u_mtrldef.rate_buy,
- u_mtrldef.rate_sale,
- u_mtrldef.rate_scll,
- u_prdpf.scllloss,
- u_prdpf.sclldecloss,
- u_prdpf.scllqtytype,
- u_prdpf.if_follow,
- u_prdpf.lasthour
- From u_PrdPF,u_mtrldef,u_mtrl_pf
- Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_mtrl_pf.ifdi = 0 )
- And ( u_mtrl_pf.ifdft = 1 )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.mtrlid = :arg_s_mrp.arg_mtrlid )
- And ( u_PrdPF.mtrlid = u_mtrldef.mtrlid ) Order By u_PrdPF.printid;
- Open pf_cur_dft;
- count++
- Fetch pf_cur_dft Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].ifcfg,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,:ls_s_pfmx[count].sonlossstr,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
-
- Do While sqlca.SQLCode = 0
- count++
- Fetch pf_cur_dft Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].ifcfg,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,:ls_s_pfmx[count].sonlossstr,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
- Loop
- count = count - 1
- Close pf_cur_dft;
- End If
- Else
- //使用个性清单yyx20120823
- If ll_saletaskmx_pf_cnt > 0 Then
- Declare saletaskmxpf_cur Cursor For
- Select u_saletaskmx_pf.Sonscale/u_saletaskmx_pf.Sonscale_fm,
- 0,
- 0,
- u_saletaskmx_pf.SonMtrlid,
- isnull(u_mtrl_pf.pfcode,'[常规]'),
- u_saletaskmx_pf.status,
- u_saletaskmx_pf.woodcode,
- u_saletaskmx_pf.pcode,
- 0,
- '',
- '',
- '',
- '',
- 0,
- 0,
- 1,
- 0,
- u_mtrldef.mrptype,
- u_mtrldef.mrparg,
- '',
- 0,
- 0,
- u_mtrldef.mrp_unit,
- u_mtrldef.rate_buy,
- u_mtrldef.rate_sale,
- u_mtrldef.rate_scll,
- 0,
- 0,
- 0,
- 0,
- 0
- From u_saletaskmx_pf left Outer join u_mtrl_pf on u_saletaskmx_pf.sonmtrlid = u_mtrl_pf.mtrlid And
- u_mtrl_pf.ifdft = 1,
- u_mtrldef
- Where ( u_saletaskmx_pf.scid = :arg_s_mrp.arg_scid )
- And ( u_saletaskmx_pf.taskid = :ll_taskid_order )
- And ( u_saletaskmx_pf.printid = :ll_taskmxid_order )
- And ( u_saletaskmx_pf.sonmtrlid = u_mtrldef.mtrlid )
- Order By u_saletaskmx_pf.sonmtrlid;
-
- Open saletaskmxpf_cur;
- count++
- Fetch saletaskmxpf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].ifcfg,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,:ls_s_pfmx[count].sonlossstr,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
-
- Do While sqlca.SQLCode = 0
- count++
- Fetch saletaskmxpf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].ifcfg,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,:ls_s_pfmx[count].sonlossstr,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
- Loop
- count = count - 1
- Close saletaskmxpf_cur;
- End If
-
- Declare pf_cur Cursor For
- Select u_PrdPF.Sonscale,
- u_PrdPF.SonLoss,
- u_PrdPF.SonDECLosS,
- u_PrdPF.SonMtrlid,
- u_PrdPF.sonpfcode,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.wrkGrpid,
- u_PrdPF.dscrp,
- u_PrdPF.pfklmode,
- u_PrdPF.pfgroup,
- u_PrdPF.pfgroupmode,
- 0,
- u_PrdPF.advancetime,
- u_PrdPF.baseqty,
- u_PrdPF.buyarg,
- u_mtrldef.mrptype,
- u_mtrldef.mrparg,
- u_PrdPF.sonlossstr,
- u_prdpf.ifover,
- u_prdpf.dipztype,
- u_mtrldef.mrp_unit,
- u_mtrldef.rate_buy,
- u_mtrldef.rate_sale,
- u_mtrldef.rate_scll,
- u_prdpf.scllloss,
- u_prdpf.sclldecloss,
- u_prdpf.scllqtytype,
- u_prdpf.if_follow,
- u_prdpf.lasthour
- From u_PrdPF,u_mtrldef,u_mtrl_pf
- Where ( u_mtrl_pf.pfcode = :arg_s_mrp.arg_pfcode )
- And ( u_mtrl_pf.mtrlid = :arg_s_mrp.arg_mtrlid )
- And ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- And ( u_mtrldef.ifmrp = 1 )
- And ( :ll_saletaskmx_pf_cnt = 0 Or :ll_saletaskmx_pf_cnt > 0 And u_mtrldef.ifpack = 0 )
- Order By u_PrdPF.printid;
-
- Open pf_cur;
- count++
- Fetch pf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].ifcfg,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,:ls_s_pfmx[count].sonlossstr,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
-
- Do While sqlca.SQLCode = 0
- count++
- Fetch pf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].dscrp,&
- :ls_s_pfmx[count].pfklmode,:ls_s_pfmx[count].pfgroup,&
- :ls_s_pfmx[count].pfgroupmode,:ls_s_pfmx[count].ifcfg,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,:ls_s_pfmx[count].sonlossstr,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
- Loop
- count = count - 1
- Close pf_cur;
-
- If count = 0 Then
- rslt = 1
- Goto ext
- End If
- End If
- Decimal ld_qty_scll,ld_qty_cmpl,ld_qty_standard,ld_qty_cmpl_sonloss
- Decimal ld_sonloss
- String ls_status_son,ls_woodcode_son,ls_pcode_son
- Long tem_long
- s_mrp_arg s_mrp_arg1
- For ll_j = 1 To count
-
- ld_qty_scll = 0
- ld_qty_cmpl = 0
- ld_sonloss = 0
- ld_qty_standard = 0
- ld_qty_cmpl_sonloss = 0
-
- If ls_s_pfmx[ll_j].ifcfg = 0 Then
- ld_qty_standard = (ld_cmplqty/ld_cmpqty)/ls_s_pfmx[ll_j].baseqty * ls_s_pfmx[ll_j].Sonscale
- ld_qty_cmpl_sonloss = ld_cmplqty //yyx20110802 计算损耗率用上级数量计算
-
- If Trim(ls_s_pfmx[ll_j].sonlossstr) = '' Then
- ld_sonloss = ls_s_pfmx[ll_j].SonLoss
- Else
- If uof_get_prdpf_sonloss(Trim(ls_s_pfmx[ll_j].sonlossstr),ld_qty_cmpl_sonloss,ld_sonloss) = 0 Then
- ld_sonloss = 100 //非法
- rslt = 0
- arg_msg = '非法的损耗率,可能损耗率公式有问题,请检查'
- Goto ext
- End If
-
- If ld_sonloss > 1 Or ld_sonloss < 0 Then
- ld_sonloss = 100 //非法
- rslt = 0
- arg_msg = '非法的损耗率,可能损耗率公式有问题,请检查'
- Goto ext
- End If
- End If
-
- If ld_sonloss < 1 Then
- If ls_s_pfmx[ll_j].baseqty > 1 Then
- ld_qty_scll = Ceiling(Truncate(ld_qty_standard/(1 - ld_sonloss)+ls_s_pfmx[ll_j].SonDECLoss,10))
- Else
- If ls_s_pfmx[ll_j].u_mtrldef_mrptype = 0 Then
- ld_qty_scll = Round(ld_qty_standard/(1 - ld_sonloss)+ls_s_pfmx[ll_j].SonDECLoss,ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- Else
- If ls_s_pfmx[ll_j].u_mtrldef_mrparg = 0 Then
- ld_qty_scll = Ceiling(Truncate(ld_qty_standard/(1 - ld_sonloss)+ls_s_pfmx[ll_j].SonDECLoss,10))
- Else
- tem_long = 10^ls_s_pfmx[ll_j].u_mtrldef_mrparg
-
- ld_qty_scll = Ceiling(Truncate(ld_qty_standard/(1 - ld_sonloss)+ls_s_pfmx[ll_j].SonDECLoss,10) * tem_long)/tem_long
- ld_qty_scll = Round(ld_qty_scll , ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- End If
- End If
- End If
-
- If ls_s_pfmx[ll_j].buyarg = 0 Then ls_s_pfmx[ll_j].buyarg = 1
- ld_qty_cmpl = ld_qty_scll * ls_s_pfmx[ll_j].buyarg
- ld_cmpl_qty_p = ld_cmplqty
-
- //按辅助单位补数
- Choose Case ls_s_pfmx[ll_j].mrp_unit
- Case 1
- If ls_s_pfmx[ll_j].rate_unit_buy > 0 Then
- ld_qty_cmpl = Ceiling(ld_qty_cmpl/ls_s_pfmx[ll_j].rate_unit_buy) * ls_s_pfmx[ll_j].rate_unit_buy
- End If
- Case 2
- If ls_s_pfmx[ll_j].rate_unit_buy > 0 Then
- ld_qty_cmpl = Ceiling(ld_qty_cmpl/ls_s_pfmx[ll_j].rate_unit_scll) * ls_s_pfmx[ll_j].rate_unit_scll
- End If
- Case 3
- If ls_s_pfmx[ll_j].rate_unit_buy > 0 Then
- ld_qty_cmpl = Ceiling(ld_qty_cmpl/ls_s_pfmx[ll_j].rate_unit_sale) * ls_s_pfmx[ll_j].rate_unit_sale
- End If
- End Choose
- Else
- ld_qty_scll = 0
- ld_qty_cmpl = 0
- ld_cmpl_qty_p = 0
- ld_sonloss = 0
- End If
- Else
- ld_qty_scll = ls_s_pfmx[ll_j].Sonscale
- ld_qty_cmpl = ld_qty_scll
- ld_cmpl_qty_p = ld_cmplqty
- ld_sonloss = ls_s_pfmx[ll_j].SonLoss
- End If
-
- Choose Case ls_s_pfmx[ll_j].scllqtytype
- Case 0
- ls_s_pfmx[ll_j].scllqty = ld_qty_scll
- Case 1
- ls_s_pfmx[ll_j].scllqty = ld_qty_standard
- Case 2
- If ls_s_pfmx[ll_j].u_mtrldef_mrptype = 0 Then
- ls_s_pfmx[ll_j].scllqty = Round(ld_qty_standard/(1 - ls_s_pfmx[ll_j].scllLoss)+ls_s_pfmx[ll_j].scllDECLoss,ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- Else
- If ls_s_pfmx[ll_j].u_mtrldef_mrparg = 0 Then
- ls_s_pfmx[ll_j].scllqty = Ceiling(Truncate(ld_qty_standard/(1 - ls_s_pfmx[ll_j].scllLoss)+ls_s_pfmx[ll_j].scllDECLoss,10))
- Else
- tem_long = 10^ls_s_pfmx[ll_j].u_mtrldef_mrparg
-
- ls_s_pfmx[ll_j].scllqty = Ceiling(Truncate(ld_qty_standard/(1 - ls_s_pfmx[ll_j].scllLoss)+ls_s_pfmx[ll_j].scllDECLoss,10) * tem_long)/tem_long
- ls_s_pfmx[ll_j].scllqty = Round(ls_s_pfmx[ll_j].scllqty , ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- End If
- End If
- End Choose
-
- If ls_s_pfmx[ll_j].ifover = 1 Then
- Choose Case ls_s_pfmx[ll_j].dipztype
- Case 0
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = ''
- ls_pcode_son = ''
- Case 1
- ls_status_son = ''
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = ''
- Case 2
- ls_status_son = ''
- ls_woodcode_son = ''
- ls_pcode_son = arg_s_mrp.arg_pcode
- Case 3
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = ''
- Case 4
- ls_status_son = ''
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = arg_s_mrp.arg_pcode
- Case 5
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = ''
- ls_pcode_son = arg_s_mrp.arg_pcode
- Case 6
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = arg_s_mrp.arg_pcode
- End Choose
- Else
- ls_status_son = ls_s_pfmx[ll_j].status
- ls_woodcode_son = ls_s_pfmx[ll_j].woodcode
- ls_pcode_son = ls_s_pfmx[ll_j].pcode
- End If
-
- s_mrp_arg1.arg_scid = arg_s_mrp.arg_scid
- s_mrp_arg1.arg_orderid = arg_s_mrp.arg_orderid
- s_mrp_arg1.arg_ifdate = arg_s_mrp.arg_ifdate
- s_mrp_arg1.arg_pmtrlid = arg_s_mrp.arg_mtrlid
- s_mrp_arg1.arg_mtrlid = ls_s_pfmx[ll_j].sonmtrlid
- s_mrp_arg1.arg_status = ls_status_son
- s_mrp_arg1.arg_woodcode = ls_woodcode_son
- s_mrp_arg1.arg_pcode = ls_pcode_son
- s_mrp_arg1.arg_pfcode = ls_s_pfmx[ll_j].sonpfcode
- s_mrp_arg1.arg_qty = ld_qty_scll
- s_mrp_arg1.arg_cmplqty = ld_qty_cmpl
- s_mrp_arg1.arg_ppfcode = arg_s_mrp.arg_pfcode
- s_mrp_arg1.arg_pqty = ld_cmpl_qty_p
- s_mrp_arg1.arg_wrkgrpid_scll = ls_s_pfmx[ll_j].wrkGrpid
- s_mrp_arg1.arg_up_sdate = ldt_sdate
- s_mrp_arg1.arg_up_rqdate = ldt_edate
- s_mrp_arg1.arg_if_allowuse = arg_s_mrp.arg_if_allowuse
- s_mrp_arg1.arg_gydscrp = ls_s_pfmx[ll_j].dscrp
- s_mrp_arg1.arg_pfklmode = ls_s_pfmx[ll_j].pfklmode
- s_mrp_arg1.arg_pfgroup = ls_s_pfmx[ll_j].pfgroup
- s_mrp_arg1.arg_pfgroupmode = ls_s_pfmx[ll_j].pfgroupmode
- s_mrp_arg1.arg_ifcfg = ls_s_pfmx[ll_j].ifcfg
- s_mrp_arg1.arg_advancetime = ls_s_pfmx[ll_j].advancetime
- s_mrp_arg1.arg_Sonscale = ls_s_pfmx[ll_j].Sonscale
- s_mrp_arg1.arg_SonLoss = ld_sonloss
- s_mrp_arg1.arg_SonDECLoss = ls_s_pfmx[ll_j].SonDECLoss
- s_mrp_arg1.arg_scllLoss = ls_s_pfmx[ll_j].scllLoss
- s_mrp_arg1.arg_scllDECLoss = ls_s_pfmx[ll_j].scllDECLoss
- s_mrp_arg1.arg_scllqtytype = ls_s_pfmx[ll_j].scllqtytype
- s_mrp_arg1.arg_scllqty = ls_s_pfmx[ll_j].scllqty
- s_mrp_arg1.arg_if_follow = ls_s_pfmx[ll_j].if_follow
- s_mrp_arg1.arg_lasthour = ls_s_pfmx[ll_j].lasthour
- s_mrp_arg1.arg_strandqty = ld_qty_standard
-
-
-
- rslt = uof_cmpl_rqmtrl(arg_lp + 1,s_mrp_arg1,arg_s_mtrl,arg_msg) //递归处理下级
- If rslt = 0 Then
- Goto ext
- End If
- Next
- ext:
- Return rslt
- end function
- public function integer uof_cmpl_rqmtrl_re (long arg_lp, integer arg_plantype, s_mrp_arg arg_s_mrp, ref s_order_ml_rqmtrl arg_s_mtrl, ref string arg_msg);//解锁修改重算
- Int rslt = 1
- Int li_pfflag
- Long arr_mxt
- Long ll_i
- Boolean if_special_notuse = False
- Int li_ifpzpf
- Long ll_pzpfcnt
- String ls_pfcode_local
- Long ll_ifbj_task
- int li_multtype
- decimal lde_eoq, lde_maxqty, lde_minqty
- decimal lde_addcmplqty, lde_sameaddcmplqty
- string ls_pdscrp
- deep++
- IF deep > 5000 THEN
- arg_msg = '递归太深'+String(deep)
- rslt = 0
- GOTO ext
- END IF
- String ls_mtrlcode,ls_mtrlname,ls_mtrlmode
- String ls_unit,ls_mtrltype
- Int li_mtrlorigin,li_ifselforder,li_mtrlprp,li_statusflag,li_mtrlorigin_p
- Long ll_scid_mtrl,ll_wrkgrpid_mtrl
- Decimal ld_buydays,ld_orderdays,ld_wfjgdays,ld_aheaddays
- Date ld_sdate,ld_edate,ld_rqdate,ld_up_sdate
- DateTime ldt_sdate,ldt_edate
- Int li_ifpack,li_ifpackpro,li_ordertype,li_ifpackpz,li_iffp
- Decimal ld_cmpqty
- String ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode
- Select u_mtrldef.mtrlcode,
- u_mtrldef.mtrlname,
- u_mtrldef.mtrlmode,
- u_mtrldef.mtrltype,
- u_mtrldef.unit,
- u_mtrldef.Mtrlorigin,
- u_mtrldef.scid,
- u_mtrldef.dftwrkgrpid,
- u_mtrldef.buydays,
- u_mtrldef.orderdays,
- u_mtrldef.wfjgdays,
- u_mtrldef.aheaddays,
- u_mtrldef.ifselforder,
- u_mtrldef.mtrlprp,
- u_mtrldef.statusflag,
- u_mtrldef.ifpack,
- u_mtrldef.ifpackpro,
- u_mtrldef.ordertype,
- u_mtrldef.ifpackpz,
- u_mtrldef.cmpqty,
- u_mtrldef.mtrlsectype,
- u_mtrldef.zxmtrlmode,
- u_mtrldef.usermtrlmode,
- u_mtrldef.iffp,
- u_mtrldef.multtype,
- u_mtrldef.eoq,
- u_mtrldef.maxqty,
- u_mtrldef.minqty
- Into :ls_mtrlcode,
- :ls_mtrlname,
- :ls_mtrlmode,
- :ls_mtrltype,
- :ls_unit,
- :li_mtrlorigin,
- :ll_scid_mtrl,
- :ll_wrkgrpid_mtrl,
- :ld_buydays,
- :ld_orderdays,
- :ld_wfjgdays,
- :ld_aheaddays,
- :li_ifselforder,
- :li_mtrlprp,
- :li_statusflag,
- :li_ifpack,
- :li_ifpackpro,
- :li_ordertype,
- :li_ifpackpz,
- :ld_cmpqty,
- :ls_mtrlsectype,
- :ls_zxmtrlmode,
- :ls_usermtrlmode,
- :li_iffp,
- :li_multtype,
- :lde_eoq,
- :lde_maxqty,
- :lde_minqty
- From u_mtrldef
- Where mtrlid = :arg_s_mrp.arg_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- IF arg_s_mrp.arg_pmtrlid > 0 THEN
- SELECT mtrlorigin INTO :li_mtrlorigin_p
- FROM u_mtrldef
- Where mtrlid = :arg_s_mrp.arg_pmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询上级物料资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF ld_cmpqty = 0 THEN ld_cmpqty = 1
- IF uof_pfcode_check(arg_s_mrp.arg_mtrlid,ls_mtrlcode,arg_s_mrp.arg_pfcode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- Decimal ld_advancetime_max_next //自制下级最大提前期
- //计算需求日期
- ld_rqdate = Date(String(arg_s_mrp.arg_up_rqdate,'yyyy-mm-dd'))
- ld_up_sdate = Date(String(arg_s_mrp.arg_up_sdate,'yyyy-mm-dd'))
- IF arg_plantype = 0 THEN
- IF li_mtrlorigin_p = 3 THEN
- ld_edate = ld_up_sdate
- ELSE
- ld_edate = RelativeDate( ld_rqdate,0 - ld_orderdays - arg_s_mrp.arg_advancetime )
- END IF
- //取下级最大提前期
- IF uof_get_max_advancetime(arg_s_mrp.arg_mtrlid,arg_s_mrp.arg_pfcode,ld_advancetime_max_next,arg_msg) = 0 THEN
- arg_msg = ls_mtrlcode + arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- ld_sdate = RelativeDate( ld_edate, 0 - ld_advancetime_max_next )
- ELSEIF arg_plantype = 2 THEN
- IF li_mtrlorigin_p = 3 THEN
- ld_edate = ld_up_sdate
- ELSE
- ld_edate = RelativeDate( ld_rqdate,0 - arg_s_mrp.arg_advancetime )
- END IF
- ld_edate = RelativeDate( ld_edate,0 - ld_orderdays )
- ld_sdate = RelativeDate ( ld_edate, 0 - ld_buydays )
- ELSEIF arg_plantype = 3 THEN
- IF li_mtrlorigin_p = 3 THEN
- ld_edate = ld_up_sdate
- ELSE
- ld_edate = RelativeDate( ld_rqdate,0 - arg_s_mrp.arg_advancetime )
- END IF
- ld_edate = RelativeDate( ld_edate,0 - ld_orderdays )
- ld_sdate = RelativeDate ( ld_edate, 0 - ld_wfjgdays )
- ELSEIF arg_plantype = 6 THEN
- IF li_mtrlorigin_p = 3 THEN
- ld_edate = ld_up_sdate
- ELSE
- ld_edate = RelativeDate( ld_rqdate,0 - arg_s_mrp.arg_advancetime )
- END IF
- ld_edate = RelativeDate( ld_edate,0 - ld_orderdays )
- ld_sdate = RelativeDate ( ld_edate, 0 - ld_aheaddays )
- END IF
- ldt_sdate = DateTime(ld_sdate,Time(0))
- ldt_edate = DateTime(ld_edate,Time(0))
- //
- Decimal ld_cmplqty
- Decimal ld_mqty
- Decimal ld_wmqty
- Decimal ld_bqty
- Decimal ld_wqty
- Decimal ld_pqty
- Decimal ld_ckwareqty, ld_ckwareqty_af
- Decimal ld_pqty2,ld_pqty2_cmpl
- Decimal ld_rqwfjgqty,ld_rqwfjgqty_cmpl
- Decimal ld_rqbuyqty,ld_rqbuyqty_cmpl
- Decimal ld_otherrqqty,ld_otherrqqty_wx,ld_otherrqqty_sale,ld_samerqqty
- IF arg_s_mrp.arg_if_allowuse = 1 And ( li_ifselforder > 0 And li_mtrlorigin = 0 Or li_mtrlorigin > 0 ) THEN
- //改写存储过程
- IF sys_option_if_newmrp = 0 THEN
- DECLARE sp_qty PROCEDURE FOR sp_order_ml_mrp_qty
- @arg_ifdate = :arg_s_mrp.arg_ifdate,
- @arg_enddate = :ldt_edate,
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_orderid = :arg_s_mrp.arg_orderid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_if_otherrq_mrpaudit = :if_otherrq_mrpaudit,
- @arg_if_wqty_norq = :sys_option_if_wqty_norq,
- @arg_plantype = :li_mtrlorigin,
- @arg_ref_bqty = :ld_bqty output,
- @arg_ref_pqty = :ld_pqty output,
- @arg_ref_wqty = :ld_wqty output,
- @arg_ref_mqty = :ld_mqty output,
- @arg_ref_wmqty = :ld_wmqty output,
- @arg_ref_pqty_nozl = :ld_pqty2 output,
- @arg_ref_otherrqqty = :ld_otherrqqty output,
- @arg_ref_rqwfjgqty = :ld_rqwfjgqty output,
- @arg_ref_rqbuyqty = :ld_rqbuyqty output,
- @arg_ref_otherrqqty_wx = :ld_otherrqqty_wx output,
- @arg_ref_otherrqqty_sale = :ld_otherrqqty_sale output;
-
- EXECUTE sp_qty;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',调用查询数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- FETCH sp_qty Into :ld_bqty,:ld_pqty,:ld_wqty,:ld_mqty,:ld_wmqty,:ld_pqty2,:ld_otherrqqty,:ld_rqwfjgqty,:ld_rqbuyqty,:ld_otherrqqty_wx,:ld_otherrqqty_sale;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',储存过程赋值变量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- CLOSE sp_qty;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- DECLARE sp_qty1 PROCEDURE FOR sp_order_ml_mrp_qty_new
- @arg_ifdate = :arg_s_mrp.arg_ifdate,
- @arg_enddate = :ldt_edate,
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_ref_bqty = :ld_bqty output,
- @arg_ref_pqty = :ld_pqty output,
- @arg_ref_wqty = :ld_wqty output,
- @arg_ref_pqty_nozl = :ld_pqty2 output,
- @arg_ref_otherrqqty = :ld_otherrqqty output,
- @arg_ref_otherrqqty_wx = :ld_otherrqqty_wx output Using mrp_sqlca;
-
- EXECUTE sp_qty1;
- IF mrp_sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',调用查询数量储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- FETCH sp_qty1 Into :ld_bqty,:ld_pqty,:ld_wqty,:ld_pqty2,:ld_otherrqqty,:ld_otherrqqty_wx;
- IF mrp_sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',储存过程赋值变量失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- CLOSE sp_qty1;
- IF mrp_sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询数量储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- DECLARE sp_qty2 PROCEDURE FOR sp_order_ml_mrp_qty_new2
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_ref_mqty = :ld_mqty output,
- @arg_ref_wmqty = :ld_wmqty output;
-
- EXECUTE sp_qty2;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',调用查询库存数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- FETCH sp_qty2 Into :ld_mqty,:ld_wmqty;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',库存数量储存过程赋值变量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- CLOSE sp_qty2;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询库存数量储存过程失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- // IF uof_get_qty(1,arg_ifdate,arg_rqdate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_bqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uof_get_qty(2,arg_ifdate,arg_rqdate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_pqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uof_get_qty(3,arg_ifdate,arg_rqdate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_wqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uof_get_qty(4,arg_ifdate,arg_rqdate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_mqty,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uof_get_other_rqqty(arg_scid,arg_orderid,arg_mtrlid,li_mtrlorigin,arg_status,arg_woodcode,arg_pcode,ld_otherrqqty,arg_ifdate,ldt_edate,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF if_pqty_not_zl And li_mtrlorigin = 0 THEN
- // IF uof_get_qty(5,arg_ifdate,arg_rqdate,arg_scid,arg_orderid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_pqty2,arg_msg) = 0 THEN
- // arg_msg = '物料:'+ls_mtrlcode + ',' + arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
-
- if sys_option_if_mrp_dscrp = 1 then
- Declare sp_pdscrp Procedure For Sp_order_ml_mrp_qty_pdscrp
- @arg_ifdate = :arg_s_mrp.arg_ifdate,
- @arg_enddate = :ldt_edate,
- @arg_scid = :arg_s_mrp.arg_scid,
- @arg_orderid = :arg_s_mrp.arg_orderid,
- @arg_mtrlid = :arg_s_mrp.arg_mtrlid,
- @arg_status = :arg_s_mrp.arg_status,
- @arg_woodcode = :arg_s_mrp.arg_woodcode,
- @arg_pcode = :arg_s_mrp.arg_pcode,
- @arg_pdscrp = :ls_pdscrp output Using mrp_sqlca;
-
- Execute sp_pdscrp;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',调用查询数量明细备注储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Fetch sp_pdscrp Into :ls_pdscrp;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',储存过程赋值变量失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Close sp_pdscrp;
- If mrp_sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+',关闭查询数量明细备注储存过程失败,'+mrp_sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- end if
- END IF
- IF deep = 1 THEN
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- ELSE
- arr_mxt = UpperBound(arg_s_mtrl.mtrlid)
- IF arr_mxt = 0 THEN
- ld_samerqqty = 0
- lde_sameaddcmplqty = 0
- ELSE
- FOR ll_i = 1 To arr_mxt
- IF arg_s_mtrl.scid[ll_i] = arg_s_mrp.arg_scid And &
- arg_s_mtrl.orderid[ll_i] = arg_s_mrp.arg_orderid And &
- arg_s_mtrl.mtrlid[ll_i] = arg_s_mrp.arg_mtrlid And &
- arg_s_mtrl.status[ll_i] = arg_s_mrp.arg_status And &
- arg_s_mtrl.woodcode[ll_i] = arg_s_mrp.arg_woodcode And &
- arg_s_mtrl.pcode[ll_i] = arg_s_mrp.arg_pcode And &
- arg_s_mtrl.wrkgrpid_scll[ll_i] = arg_s_mrp.arg_wrkgrpid_scll THEN
- IF arg_s_mtrl.ifselforder[ll_i] > 0 And arg_s_mtrl.mtrlorigin[ll_i] = 0 Or arg_s_mtrl.mtrlorigin[ll_i] > 0 THEN
- if ((li_ifselforder > 0 And li_mtrlorigin = 0) or (sys_option_if_wqty_norq = 1 and li_mtrlorigin = 3) ) and li_multtype > 0 then
- ld_samerqqty = ld_samerqqty + arg_s_mtrl.qty[ll_i] - arg_s_mtrl.cmplqty[ll_i]
- else
- ld_samerqqty = ld_samerqqty + arg_s_mtrl.qty[ll_i]
- end if
- lde_sameaddcmplqty = lde_sameaddcmplqty + arg_s_mtrl.addcmplqty[ll_i]
- END IF
- END IF
- NEXT
- END IF
-
- IF arg_s_mrp.arg_if_allowuse = 1 And ( li_ifselforder > 0 And li_mtrlorigin = 0 Or li_mtrlorigin > 0 ) THEN
- IF ifzl_mtrl_not_useqty Or ifzl_mtrl_pwx_not_useqty Or ifwx_mtrl_not_useqty Or ifpack_mtrl_not_useqty THEN
- IF li_mtrlorigin = 0 THEN
- IF li_ifpack > 0 THEN
- IF ifpack_mtrl_not_useqty THEN
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- END IF
- END IF
-
- IF li_ifselforder = 2 And li_ifpack = 0 THEN
- IF ifzl_mtrl_not_useqty THEN
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- END IF
- END IF
-
- IF li_mtrlorigin_p = 3 And ifzl_mtrl_pwx_not_useqty THEN
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- END IF
- ELSEIF li_mtrlorigin = 2 THEN
- IF li_ifpack > 0 THEN
- IF ifpack_mtrl_not_useqty THEN
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- END IF
- END IF
-
- ELSEIF li_mtrlorigin = 3 THEN
- IF ifwx_mtrl_not_useqty THEN
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- if_special_notuse = True
- END IF
- END IF
- END IF
-
- IF if_pqty_not_zl THEN
- ld_pqty2_cmpl = ld_pqty2
- ELSE
- ld_pqty2_cmpl = 0
- END IF
-
-
- IF if_rqwfjg_useqty THEN
- ld_rqwfjgqty_cmpl = ld_rqwfjgqty
- ELSE
- ld_rqwfjgqty_cmpl = 0
- END IF
-
- IF if_rqbuy_useqty THEN
- ld_rqbuyqty_cmpl = ld_rqbuyqty
- ELSE
- ld_rqbuyqty_cmpl = 0
- END IF
-
- ld_ckwareqty = (ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl) - (ld_otherrqqty + ld_otherrqqty_wx + ld_otherrqqty_sale + ld_samerqqty)
-
-
- IF Not if_special_notuse THEN
- if ld_ckwareqty > 0 then
- if ld_ckwareqty > arg_s_mrp.arg_cmplqty then
- ld_cmplqty = 0
- ld_ckwareqty_af = ld_ckwareqty - arg_s_mrp.arg_cmplqty
- else
- ld_cmplqty = arg_s_mrp.arg_cmplqty - ld_ckwareqty
- ld_ckwareqty_af = 0
- end if
- else
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- ld_ckwareqty_af = 0
- end if
-
- //如果有设置‘物料运算倍数基数’, 按倍数生产
- //自制需求补足批量模式:
- //0- 不增补
- //1- 补足到最小经济生产批量
- //2- 补足到最小经济生产批量的整倍数
- //3- (现库存减需求后的可用数少于库存下限时)补足到库存上限且不少于最小经济批量
- if (li_ifselforder > 0 And li_mtrlorigin = 0) or (sys_option_if_wqty_norq = 1 and li_mtrlorigin = 3) then
- choose case li_multtype
- case 0
-
- case 1
- if ld_cmplqty > 0 then
- if ld_cmplqty < lde_eoq then
- lde_addcmplqty = lde_eoq - ld_cmplqty
- ld_cmplqty = lde_eoq
- end if
- end if
- case 2
- if ld_cmplqty > 0 then
- if mod(ld_cmplqty, lde_eoq) > 0 then
- lde_addcmplqty = lde_eoq - mod(ld_cmplqty, lde_eoq)
- ld_cmplqty = ld_cmplqty + (lde_eoq - mod(ld_cmplqty, lde_eoq))
- end if
- end if
- case 3
- if ld_cmplqty > 0 then
- if ld_ckwareqty_af < lde_minqty then //小于库存下限的才按库存上限生产
- if lde_eoq > lde_maxqty + ld_cmplqty then
- lde_addcmplqty = lde_eoq - ld_cmplqty
- else
- lde_addcmplqty = lde_maxqty
- end if
- else //不小于的只考虑经济批量
- if lde_eoq > ld_cmplqty then //不足经济批量的补足
- lde_addcmplqty = lde_eoq - ld_cmplqty
- else
- lde_addcmplqty = 0
- end if
- end if
- ld_cmplqty = ld_cmplqty + lde_addcmplqty
- //ld_cmplqty = max(lde_eoq, lde_maxqty + ld_cmplqty)
- else
- if ld_ckwareqty_af < lde_minqty then //小于库存下限的才按库存上限生产
- if lde_eoq > lde_maxqty then
- lde_addcmplqty = lde_eoq
- else
- lde_addcmplqty = lde_maxqty
- end if
- ld_cmplqty = ld_cmplqty + lde_addcmplqty
- end if
- end if
- end choose
- end if
- // IF ld_otherrqqty + ld_otherrqqty_wx + ld_otherrqqty_sale >= ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl THEN
- // ld_cmplqty = arg_s_mrp.arg_cmplqty
- // ELSE
- // IF ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl - ld_otherrqqty - ld_otherrqqty_wx - ld_otherrqqty_sale - ld_samerqqty > 0 THEN
- // IF arg_s_mrp.arg_cmplqty > ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl - ld_otherrqqty - ld_otherrqqty_wx - ld_otherrqqty_sale - ld_samerqqty THEN
- // ld_cmplqty = arg_s_mrp.arg_cmplqty - ( ld_mqty + ld_wmqty + ld_bqty + ld_wqty + ld_pqty + ld_pqty2_cmpl + ld_rqwfjgqty_cmpl + ld_rqbuyqty_cmpl - ld_otherrqqty - ld_otherrqqty_wx - ld_otherrqqty_sale - ld_samerqqty )
- // ELSE
- // ld_cmplqty = 0
- // END IF
- // ELSE
- // ld_cmplqty = arg_s_mrp.arg_cmplqty
- // END IF
- // END IF
- END IF
- ELSE
- ld_cmplqty = arg_s_mrp.arg_cmplqty
- END IF
-
- arr_mxt++
- arg_s_mtrl.scid[arr_mxt] = arg_s_mrp.arg_scid
- arg_s_mtrl.orderid[arr_mxt] = arg_s_mrp.arg_orderid
- arg_s_mtrl.mtrlid[arr_mxt] = arg_s_mrp.arg_mtrlid
- arg_s_mtrl.status[arr_mxt] = arg_s_mrp.arg_status
- arg_s_mtrl.woodcode[arr_mxt] = arg_s_mrp.arg_woodcode
- arg_s_mtrl.pcode[arr_mxt] = arg_s_mrp.arg_pcode
- arg_s_mtrl.pfcode[arr_mxt] = arg_s_mrp.arg_pfcode
- arg_s_mtrl.qty[arr_mxt] = arg_s_mrp.arg_qty
- arg_s_mtrl.cmplqty[arr_mxt] = ld_cmplqty
- arg_s_mtrl.plantype[arr_mxt] = arg_plantype
- arg_s_mtrl.mqty[arr_mxt] = ld_mqty
- arg_s_mtrl.wmqty[arr_mxt] = ld_wmqty
- arg_s_mtrl.bqty[arr_mxt] = ld_bqty
- arg_s_mtrl.wqty[arr_mxt] = ld_wqty
- arg_s_mtrl.pqty[arr_mxt] = ld_pqty
- arg_s_mtrl.pqty2[arr_mxt] = ld_pqty2
- arg_s_mtrl.rqwfjgqty[arr_mxt] = ld_rqwfjgqty
- arg_s_mtrl.rqbuyqty[arr_mxt] = ld_rqbuyqty
- arg_s_mtrl.otherrqqty[arr_mxt] = ld_otherrqqty
- arg_s_mtrl.otherrqqty_wx[arr_mxt] = ld_otherrqqty_wx
- arg_s_mtrl.otherrqqty_sale[arr_mxt] = ld_otherrqqty_sale
- arg_s_mtrl.samerqqty[arr_mxt] = ld_samerqqty
- arg_s_mtrl.ckwareqty[arr_mxt] = ld_ckwareqty
- arg_s_mtrl.addcmplqty[arr_mxt] = lde_addcmplqty //由补足方式额外增加的数
- arg_s_mtrl.pdscrp[arr_mxt] = ls_pdscrp
-
-
- //有可用数不用计算开始日期
- IF ld_cmplqty = 0 THEN
- arg_s_mtrl.sdate[arr_mxt] = ldt_edate
- ELSE
- arg_s_mtrl.sdate[arr_mxt] = ldt_sdate
- END IF
- arg_s_mtrl.edate[arr_mxt] = ldt_edate
-
- arg_s_mtrl.mtrlcode[arr_mxt] = ls_mtrlcode
- arg_s_mtrl.mtrlname[arr_mxt] = ls_mtrlname
- arg_s_mtrl.mtrlmode[arr_mxt] = ls_mtrlmode
- arg_s_mtrl.mtrltype[arr_mxt] = ls_mtrltype
- arg_s_mtrl.unit[arr_mxt] = ls_unit
- arg_s_mtrl.mtrlorigin[arr_mxt] = arg_plantype
- arg_s_mtrl.iffp[arr_mxt] = li_iffp
- arg_s_mtrl.ifselforder[arr_mxt] = li_ifselforder
- arg_s_mtrl.gydscrp[arr_mxt] = arg_s_mrp.arg_gydscrp
- arg_s_mtrl.pfklmode[arr_mxt] = arg_s_mrp.arg_pfklmode
- arg_s_mtrl.pfgroup[arr_mxt] = arg_s_mrp.arg_pfgroup
- arg_s_mtrl.pfgroupmode[arr_mxt] = arg_s_mrp.arg_pfgroupmode
- arg_s_mtrl.ifpack[arr_mxt] = li_ifpack
- arg_s_mtrl.ifpackpro[arr_mxt] = li_ifpackpro
- arg_s_mtrl.produce_scid[arr_mxt] = ll_scid_mtrl
- arg_s_mtrl.produce_wrkgrpid[arr_mxt] = ll_wrkgrpid_mtrl
- arg_s_mtrl.wrkgrpid_scll[arr_mxt] = arg_s_mrp.arg_wrkgrpid_scll
-
- arg_s_mtrl.mtrlsectype[arr_mxt] = ls_mtrlsectype
- arg_s_mtrl.zxmtrlmode[arr_mxt] = ls_zxmtrlmode
- arg_s_mtrl.usermtrlmode[arr_mxt] = ls_usermtrlmode
-
-
-
- arg_s_mtrl.sonloss[arr_mxt] = arg_s_mrp.arg_sonloss
- arg_s_mtrl.sondecloss[arr_mxt] = arg_s_mrp.arg_sondecloss
- arg_s_mtrl.scllloss[arr_mxt] = arg_s_mrp.arg_scllloss
- arg_s_mtrl.sclldecloss[arr_mxt] = arg_s_mrp.arg_sclldecloss
- arg_s_mtrl.scllqtytype[arr_mxt] = arg_s_mrp.arg_scllqtytype
- arg_s_mtrl.standardrqqty[arr_mxt] = arg_s_mrp.arg_strandqty
- arg_s_mtrl.scllqty[arr_mxt] = arg_s_mrp.arg_scllqty
- arg_s_mtrl.if_follow[arr_mxt] = arg_s_mrp.arg_if_follow
- arg_s_mtrl.lasthour[arr_mxt] = arg_s_mrp.arg_lasthour
- if isnull(arg_s_mrp.arg_Sonscale) then arg_s_mrp.arg_Sonscale = 0
- arg_s_mtrl.Sonscale[arr_mxt] = arg_s_mrp.arg_Sonscale
-
- arg_s_mtrl.lp[arr_mxt] = arg_lp
-
- arg_s_mtrl.samerqqty[arr_mxt] = ld_samerqqty
- arg_s_mtrl.ifmainmtrlid[arr_mxt] = 0
-
- arg_s_mtrl.pmtrlid[arr_mxt] = arg_s_mrp.arg_pmtrlid
- arg_s_mtrl.ifchanged[arr_mxt] = 0
- arg_s_mtrl.pdscrp[arr_mxt] = ls_pdscrp
-
- IF arg_plantype = 0 THEN
- IF ll_scid_mtrl <> arg_s_mrp.arg_scid THEN
- rslt = 1
- GOTO ext
- ELSE
- IF li_ifselforder = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- END IF
- END IF
-
- IF arg_plantype = 2 THEN
- rslt = 1
- GOTO ext
- END IF
-
-
- IF arg_plantype = 3 THEN
- IF ll_scid_mtrl <> arg_s_mrp.arg_scid THEN
- rslt = 1
- GOTO ext
- ELSE
- IF li_ifselforder = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- END IF
- END IF
-
- IF arg_plantype = 6 THEN
- IF li_mtrlprp = 2 Or li_mtrlprp = 8 THEN
- rslt = 1
- GOTO ext
- END IF
- END IF
-
- END IF
- IF ld_cmplqty <= 0 THEN
- rslt = 1
- GOTO ext
- END IF
- Long count,ll_j
- s_pfmx ls_s_pfmx[]
- count = 0
- DECLARE pf_cur CURSOR FOR
- SELECT u_PrdPF.Sonscale,
- u_PrdPF.SonLoss,
- u_PrdPF.SonDECLosS,
- u_PrdPF.SonMtrlid,
- u_PrdPF.sonpfcode,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.wrkGrpid,
- u_mtrldef.mtrlorigin,
- u_PrdPF.dscrp,
- u_PrdPF.pfklmode,
- u_PrdPF.pfgroup,
- u_PrdPF.pfgroupmode,
- u_PrdPF.advancetime,
- u_PrdPF.baseqty,
- u_PrdPF.buyarg,
- u_mtrldef.mrptype,
- u_mtrldef.mrparg,
- u_prdpf.ifover,
- u_prdpf.dipztype,
- u_mtrldef.mrp_unit,
- u_mtrldef.rate_buy,
- u_mtrldef.rate_sale,
- u_mtrldef.rate_scll,
- u_prdpf.scllloss,
- u_prdpf.sclldecloss,
- u_prdpf.scllqtytype,
- u_prdpf.if_follow,
- u_prdpf.lasthour
- FROM u_PrdPF,u_mtrldef
- WHERE ( u_PrdPF.mtrlid = :arg_s_mrp.arg_mtrlid )
- AND ( u_PrdPF.pfcode = :arg_s_mrp.arg_pfcode )
- AND ( u_mtrldef.ifmrp = 1 )
- AND ( u_PrdPF.SonMtrlid = u_mtrldef.mtrlid )
- Order By u_PrdPF.printid;
- OPEN pf_cur;
- count = 1
- FETCH pf_cur INTO :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].Mtrlorigin,&
- :ls_s_pfmx[count].dscrp,:ls_s_pfmx[count].pfklmode,&
- :ls_s_pfmx[count].pfgroup,:ls_s_pfmx[count].pfgroupmode,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
- DO WHILE sqlca.SQLCode = 0
- count++
- FETCH pf_cur INTO :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,&
- :ls_s_pfmx[count].sonpfcode,:ls_s_pfmx[count].status,&
- :ls_s_pfmx[count].woodcode,:ls_s_pfmx[count].pcode,&
- :ls_s_pfmx[count].wrkGrpid,:ls_s_pfmx[count].Mtrlorigin,&
- :ls_s_pfmx[count].dscrp,:ls_s_pfmx[count].pfklmode,&
- :ls_s_pfmx[count].pfgroup,:ls_s_pfmx[count].pfgroupmode,&
- :ls_s_pfmx[count].advancetime,:ls_s_pfmx[count].baseqty,&
- :ls_s_pfmx[count].buyarg,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg,&
- :ls_s_pfmx[count].ifover,:ls_s_pfmx[count].dipztype,&
- :ls_s_pfmx[count].mrp_unit,:ls_s_pfmx[count].rate_unit_buy,&
- :ls_s_pfmx[count].rate_unit_sale,:ls_s_pfmx[count].rate_unit_scll,&
- :ls_s_pfmx[count].scllloss,:ls_s_pfmx[count].sclldecloss,&
- :ls_s_pfmx[count].scllqtytype,:ls_s_pfmx[count].if_follow,:ls_s_pfmx[count].lasthour;
- LOOP
- count = count - 1
- CLOSE pf_cur;
- IF count = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- Decimal ld_qty_scll,ld_qty_cmpl,ld_qty_standard
- Decimal ld_sonloss
- String ls_status_son,ls_woodcode_son,ls_pcode_son
- Long tem_long
- s_mrp_arg s_mrp_arg1
- FOR ll_j = 1 To count
-
- ld_qty_scll = 0
- ld_qty_cmpl = 0
- ld_sonloss = 0
- ld_qty_standard = 0
-
- ld_qty_standard = (ld_cmplqty/ld_cmpqty)/ls_s_pfmx[ll_j].baseqty * ls_s_pfmx[ll_j].Sonscale
-
- IF Trim(ls_s_pfmx[ll_j].sonlossstr) = '' THEN
- ld_sonloss = ls_s_pfmx[ll_j].sonloss
- ELSE
- IF uof_get_prdpf_sonloss(Trim(ls_s_pfmx[ll_j].sonlossstr),ld_qty_standard,ld_sonloss) = 0 THEN
- ld_sonloss = 100 //非法
- END IF
-
- IF ld_sonloss > 1 Or ld_sonloss < 0 THEN
- ld_sonloss = 100 //非法
- END IF
- END IF
-
- IF ld_sonloss < 1 THEN
- IF ls_s_pfmx[ll_j].baseqty > 1 THEN
- ld_qty_scll = Ceiling(Truncate(ld_qty_standard/(1 - ld_sonloss) + ls_s_pfmx[ll_j].sondecloss,10))
- ELSE
- IF ls_s_pfmx[ll_j].u_mtrldef_mrptype = 0 THEN
- ld_qty_scll = Round(ld_qty_standard/(1 - ld_sonloss) + ls_s_pfmx[ll_j].sondecloss,ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- ELSE
- IF ls_s_pfmx[ll_j].u_mtrldef_mrparg = 0 THEN
- ld_qty_scll = Ceiling(Truncate(ld_qty_standard/(1 - ld_sonloss) + ls_s_pfmx[ll_j].sondecloss,10))
- ELSE
- tem_long = 10^ls_s_pfmx[ll_j].u_mtrldef_mrparg
-
- ld_qty_scll = Ceiling(Truncate(ld_qty_standard/(1 - ld_sonloss) + ls_s_pfmx[ll_j].sondecloss,10) * tem_long)/tem_long
- ld_qty_scll = Round(ld_qty_scll , ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- END IF
- END IF
- END IF
-
-
- IF ls_s_pfmx[ll_j].buyarg = 0 THEN ls_s_pfmx[ll_j].buyarg = 1
- ld_qty_cmpl = ld_qty_scll * ls_s_pfmx[ll_j].buyarg
-
- //按辅助单位补数
- CHOOSE CASE ls_s_pfmx[ll_j].mrp_unit
- CASE 1
- IF ls_s_pfmx[ll_j].rate_unit_buy > 0 THEN
- ld_qty_cmpl = Ceiling(ld_qty_cmpl/ls_s_pfmx[ll_j].rate_unit_buy) * ls_s_pfmx[ll_j].rate_unit_buy
- END IF
- CASE 2
- IF ls_s_pfmx[ll_j].rate_unit_buy > 0 THEN
- ld_qty_cmpl = Ceiling(ld_qty_cmpl/ls_s_pfmx[ll_j].rate_unit_scll) * ls_s_pfmx[ll_j].rate_unit_scll
- END IF
- CASE 3
- IF ls_s_pfmx[ll_j].rate_unit_buy > 0 THEN
- ld_qty_cmpl = Ceiling(ld_qty_cmpl/ls_s_pfmx[ll_j].rate_unit_sale) * ls_s_pfmx[ll_j].rate_unit_sale
- END IF
- END CHOOSE
- ELSE
- ld_qty_scll = 0
- ld_qty_cmpl = 0
- ld_sonloss = 0
- END IF
-
- CHOOSE CASE ls_s_pfmx[ll_j].scllqtytype
- CASE 0
- ls_s_pfmx[ll_j].scllqty = ld_qty_scll
- CASE 1
- ls_s_pfmx[ll_j].scllqty = ld_qty_standard
- CASE 2
- IF ls_s_pfmx[ll_j].u_mtrldef_mrptype = 0 THEN
- ls_s_pfmx[ll_j].scllqty = Round(ld_qty_standard/(1 - ls_s_pfmx[ll_j].scllloss)+ls_s_pfmx[ll_j].sclldecloss,ls_s_pfmx[ll_j].u_mtrldef_mrparg)
- ELSE
- IF ls_s_pfmx[ll_j].u_mtrldef_mrparg = 0 THEN
- ls_s_pfmx[ll_j].scllqty = Ceiling(Truncate(ld_qty_standard/(1 - ls_s_pfmx[ll_j].scllloss)+ls_s_pfmx[ll_j].sclldecloss,10))
- ELSE
- tem_long = 10^ls_s_pfmx[ll_j].u_mtrldef_mrparg
-
- ls_s_pfmx[ll_j].scllqty = Ceiling(Truncate(ld_qty_standard/(1 - ls_s_pfmx[ll_j].scllloss)+ls_s_pfmx[ll_j].sclldecloss,10) * tem_long)/tem_long
- ls_s_pfmx[ll_j].scllqty = Round(ls_s_pfmx[ll_j].scllqty , ls_s_pfmx[ll_j].u_mtrldef_mrparg )
- END IF
- END IF
- END CHOOSE
-
- IF ls_s_pfmx[ll_j].ifover = 1 THEN
- CHOOSE CASE ls_s_pfmx[ll_j].dipztype
- CASE 0
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = ''
- ls_pcode_son = ''
- CASE 1
- ls_status_son = ''
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = ''
- CASE 2
- ls_status_son = ''
- ls_woodcode_son = ''
- ls_pcode_son = arg_s_mrp.arg_pcode
- CASE 3
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = ''
- CASE 4
- ls_status_son = ''
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = arg_s_mrp.arg_pcode
- CASE 5
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = ''
- ls_pcode_son = arg_s_mrp.arg_pcode
- CASE 6
- ls_status_son = arg_s_mrp.arg_status
- ls_woodcode_son = arg_s_mrp.arg_woodcode
- ls_pcode_son = arg_s_mrp.arg_pcode
- END CHOOSE
- ELSE
- ls_status_son = ls_s_pfmx[ll_j].status
- ls_woodcode_son = ls_s_pfmx[ll_j].woodcode
- ls_pcode_son = ls_s_pfmx[ll_j].pcode
- END IF
-
- s_mrp_arg1.arg_scid = arg_s_mrp.arg_scid
- s_mrp_arg1.arg_orderid = arg_s_mrp.arg_orderid
- s_mrp_arg1.arg_ifdate = arg_s_mrp.arg_ifdate
- s_mrp_arg1.arg_pmtrlid = arg_s_mrp.arg_mtrlid
- s_mrp_arg1.arg_mtrlid = ls_s_pfmx[ll_j].SonMtrlid
- s_mrp_arg1.arg_status = ls_status_son
- s_mrp_arg1.arg_woodcode = ls_woodcode_son
- s_mrp_arg1.arg_pcode = ls_pcode_son
- s_mrp_arg1.arg_pfcode = ls_s_pfmx[ll_j].sonpfcode
- s_mrp_arg1.arg_qty = ld_qty_scll
- s_mrp_arg1.arg_cmplqty = ld_qty_cmpl
- s_mrp_arg1.arg_wrkgrpid_scll = ls_s_pfmx[ll_j].wrkGrpid
- s_mrp_arg1.arg_up_sdate = ldt_sdate
- s_mrp_arg1.arg_up_rqdate = ldt_edate
- s_mrp_arg1.arg_if_allowuse = arg_s_mrp.arg_if_allowuse
- s_mrp_arg1.arg_gydscrp = ls_s_pfmx[ll_j].dscrp
- s_mrp_arg1.arg_pfklmode = ls_s_pfmx[ll_j].pfklmode
- s_mrp_arg1.arg_pfgroup = ls_s_pfmx[ll_j].pfgroup
- s_mrp_arg1.arg_pfgroupmode = ls_s_pfmx[ll_j].pfgroupmode
- s_mrp_arg1.arg_advancetime = ls_s_pfmx[ll_j].advancetime
- s_mrp_arg1.arg_Sonscale = ls_s_pfmx[ll_j].Sonscale
- s_mrp_arg1.arg_sonloss = ld_sonloss
- s_mrp_arg1.arg_sondecloss = ls_s_pfmx[ll_j].sondecloss
- s_mrp_arg1.arg_scllloss = ls_s_pfmx[ll_j].scllloss
- s_mrp_arg1.arg_sclldecloss = ls_s_pfmx[ll_j].sclldecloss
- s_mrp_arg1.arg_scllqtytype = ls_s_pfmx[ll_j].scllqtytype
- s_mrp_arg1.arg_scllqty = ls_s_pfmx[ll_j].scllqty
- s_mrp_arg1.arg_if_follow = ls_s_pfmx[ll_j].if_follow
- s_mrp_arg1.arg_lasthour = ls_s_pfmx[ll_j].lasthour
- s_mrp_arg1.arg_strandqty = ld_qty_standard
-
- rslt = uof_cmpl_rqmtrl_re(arg_lp + 1,ls_s_pfmx[ll_j].mtrlorigin,s_mrp_arg1,arg_s_mtrl,arg_msg) //递归处理下级
- IF rslt = 0 THEN
- GOTO ext
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uof_saletaskmx_pf_add (s_saletaskmx_pf arg_s_stpf, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i
- IF UpperBound(arg_s_stpf.scid) > 0 THEN
- FOR i = 1 To UpperBound(arg_s_stpf.scid)
- INSERT INTO u_saletaskmx_pf(scid,taskid,printid,mtrlid,sonmtrlid,status,woodcode,pcode,sonscale)
- VALUES (:arg_s_stpf.scid[i],
- :arg_s_stpf.taskid[i],
- :arg_s_stpf.printid[i],
- :arg_s_stpf.mtrlid[i],
- :arg_s_stpf.sonmtrlid[i],
- :arg_s_stpf.status[i],
- :arg_s_stpf.woodcode[i],
- :arg_s_stpf.pcode[i],
- :arg_s_stpf.sonscale[i]);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '建立销售订单明细个性清单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- 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 uof_saletaskmx_pf_del (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DELETE FROM u_saletaskmx_pf
- WHERE u_saletaskmx_pf.scid = :arg_scid
- AND u_saletaskmx_pf.taskid = :arg_taskid
- And u_saletaskmx_pf.printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除销售订单明细原个性清单失败,'+sqlca.SQLErrText
- 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 uof_add_rqmtrl_scll_find (long arg_p, long arg_p_mtrlid, integer arg_ifpackpro, string arg_status, string arg_woodcode, string arg_pcode, s_order_ml_rqmtrl arg_s_mtrl, ref s_order_ml_rqmtrl_scll arg_s_mtrl_scll, long arg_e, ref string arg_msg);Int rslt = 1
- Long ll_i,i
- Long ll_p
- Long ll_lp_f
- Long ll_p_end,ll_p_start
- Boolean lb_f
- Boolean lb_f_lb = False
- Int li_ft
- DO WHILE arg_p <> -1
- ll_p_start = 0
- ll_p_end = 0
- lb_f = False
- lb_f_lb = False
- li_ft = 0
- ll_lp_f = 0
-
- FOR i = arg_p To arg_e //UpperBound(arg_s_mtrl.mtrlid)
- // IF i = UpperBound(arg_s_mtrl.mtrlid) THEN
- IF i = arg_e THEN
- IF Not lb_f THEN
- ll_p_start = arg_e
- END IF
-
- ll_p_end = arg_e //UpperBound(arg_s_mtrl.mtrlid)
- EXIT
- END IF
-
- IF arg_s_mtrl.qty[i] = 0 THEN CONTINUE
-
- // IF arg_ifpackpro = 4 And arg_s_mtrl.ifcfg[i] = 1 THEN CONTINUE
- IF arg_s_mtrl.ifcfg[i] = 1 THEN CONTINUE
-
- //找下级最后行
- IF lb_f THEN
- IF li_ft = 1 And arg_s_mtrl.lp[i] < ll_lp_f THEN
- lb_f_lb = True
- ll_p_end = i
- EXIT
- ELSEIF li_ft = 2 And arg_s_mtrl.lp[i] <= ll_lp_f THEN
- lb_f_lb = True
- ll_p_end = i
- EXIT
- END IF
- END IF
-
- //找开始级别
- IF Not lb_f And arg_s_mtrl.pmtrlid[i] = arg_p_mtrlid THEN
- IF arg_ifpackpro <> 3 And arg_ifpackpro <> 4 THEN
- lb_f = True
- ll_lp_f = arg_s_mtrl.lp[i]
- ll_p_start = i
- li_ft = 1
- ELSEIF arg_ifpackpro = 3 And Trim(arg_s_mtrl.status[i]) = Trim(arg_status) And Trim(arg_s_mtrl.woodcode[i]) = Trim(arg_woodcode) And Trim(arg_s_mtrl.pcode[i]) = Trim(arg_pcode) THEN
- lb_f = True
- ll_lp_f = arg_s_mtrl.lp[i]
- ll_p_start = i + 1
- li_ft = 2
- ELSEIF arg_ifpackpro = 4 THEN
- lb_f = True
- ll_lp_f = arg_s_mtrl.lp[i]
- ll_p_start = i
- li_ft = 2
- END IF
- END IF
- NEXT
-
- IF lb_f_lb THEN
- ll_p_end = ll_p_end - 1
- ELSE
- ll_p_end = ll_p_end
- END IF
-
- IF ll_p_start = 0 THEN
- ll_p_start += 1
- END IF
-
- IF ll_p_start > ll_p_end THEN
- rslt = 1
- GOTO ext
- END IF
-
- //yyx2012-11-14
- // IF upperbound(arg_s_mtrl_scll.mtrlid) > 0 And ll_p_start = 1 And ll_p_end = UpperBound(arg_s_mtrl.mtrlid) then
- IF UpperBound(arg_s_mtrl_scll.mtrlid) > 0 And ll_p_start = 1 And ll_p_end = arg_e THEN
- rslt = 1
- GOTO ext
- END IF
- //yyx2012-11-14_end
-
- // IF ll_p_end = UpperBound(arg_s_mtrl.mtrlid) THEN
- IF ll_p_end = arg_e THEN
- arg_p = -1
- ELSE
- arg_p = ll_p_end + 1
- END IF
-
- FOR ll_i = ll_p_start To ll_p_end
-
- IF arg_s_mtrl.qty[ll_i] = 0 THEN CONTINUE
- // IF arg_ifpackpro = 4 And arg_s_mtrl.ifcfg[ll_i] = 1 THEN CONTINUE
- IF arg_s_mtrl.ifcfg[ll_i] = 1 THEN CONTINUE
- If (arg_ifpackpro = 1 Or arg_ifpackpro = 2) And arg_s_mtrl.ifpack[ll_i] > 0 THEN CONTINUE
-
- IF arg_s_mtrl.pmtrlid[ll_i] = arg_p_mtrlid THEN
- Int li_ifselforder,li_mtrlorigin
- String ls_mtrlcode
-
- SELECT mtrlcode,
- ifselforder,
- mtrlorigin
- INTO :ls_mtrlcode,
- :li_ifselforder,
- :li_mtrlorigin
- FROM u_mtrldef
- Where mtrlid = :arg_s_mtrl.mtrlid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- Long ll_p_mtrlid
- Long ll_arr
-
- ll_arr = UpperBound(arg_s_mtrl_scll.mtrlid)
-
- IF li_ifselforder = 0 And li_mtrlorigin = 0 THEN //自制虚拟件
- // IF arg_s_mtrl.ifselforder[ll_i] = 0 And arg_s_mtrl.mtrlorigin[ll_i] = 0 THEN //自制虚拟件
- // IF ll_i = UpperBound(arg_s_mtrl.mtrlid) THEN
- IF ll_i = arg_e THEN
- ll_arr++
- arg_s_mtrl_scll.mtrlid[ll_arr] = arg_s_mtrl.mtrlid[ll_i]
- arg_s_mtrl_scll.wrkgrpid[ll_arr] = arg_s_mtrl.wrkgrpid_scll[ll_i]
- arg_s_mtrl_scll.status[ll_arr] = arg_s_mtrl.status[ll_i]
- arg_s_mtrl_scll.woodcode[ll_arr] = arg_s_mtrl.woodcode[ll_i]
- arg_s_mtrl_scll.pcode[ll_arr] = arg_s_mtrl.pcode[ll_i]
- arg_s_mtrl_scll.truerqqty[ll_arr] = arg_s_mtrl.scllqty[ll_i]
- rslt = 1
- GOTO ext
- ELSE
- ll_p = ll_i
- IF arg_s_mtrl.qty[ll_i] > arg_s_mtrl.cmplqty[ll_i] THEN
- // arg_s_mtrl_scll.truerqqty[ll_arr] = arg_s_mtrl.qty[ll_i] - arg_s_mtrl.cmplqty[ll_i]
-
- IF arg_s_mtrl.cmplqty[ll_i] > 0 THEN
- ll_p_mtrlid = arg_s_mtrl.mtrlid[ll_i]
- IF uof_add_rqmtrl_scll_find(ll_p,ll_p_mtrlid,arg_s_mtrl.ifpackpro[ll_i],&
- arg_s_mtrl.status[ll_i],arg_s_mtrl.woodcode[ll_i],arg_s_mtrl.pcode[ll_i],&
- arg_s_mtrl,arg_s_mtrl_scll,ll_p_end,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- rslt = 1
- GOTO ext
- END IF
- ELSE
- ll_p_mtrlid = arg_s_mtrl.mtrlid[ll_i]
- IF uof_add_rqmtrl_scll_find(ll_p,ll_p_mtrlid,arg_s_mtrl.ifpackpro[ll_i],&
- arg_s_mtrl.status[ll_i],arg_s_mtrl.woodcode[ll_i],arg_s_mtrl.pcode[ll_i],&
- arg_s_mtrl,arg_s_mtrl_scll,ll_p_end,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- ELSE
- ll_arr++
- arg_s_mtrl_scll.mtrlid[ll_arr] = arg_s_mtrl.mtrlid[ll_i]
- arg_s_mtrl_scll.wrkgrpid[ll_arr] = arg_s_mtrl.wrkgrpid_scll[ll_i]
- arg_s_mtrl_scll.status[ll_arr] = arg_s_mtrl.status[ll_i]
- arg_s_mtrl_scll.woodcode[ll_arr] = arg_s_mtrl.woodcode[ll_i]
- arg_s_mtrl_scll.pcode[ll_arr] = arg_s_mtrl.pcode[ll_i]
- arg_s_mtrl_scll.truerqqty[ll_arr] = arg_s_mtrl.scllqty[ll_i]
- END IF
- END IF
- NEXT
- LOOP
- ext:
- RETURN rslt
- end function
- on uo_order_ml_mrp.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_ml_mrp.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('274',str_optionvalue,arg_msg)
- uo_option_packpro2_pf_pack2_useifover = Long(str_optionvalue)
- f_get_sys_option_value('340',str_optionvalue,arg_msg)
- uo_option_ifpackpro2_if_no_pack2 = Long(str_optionvalue)
- f_get_sys_option_value('356',str_optionvalue,arg_msg)
- uo_option_scll_ifchanged = Long(str_optionvalue)
- f_get_sys_option_value('089',str_optionvalue,arg_msg)
- uo_option_produce_dec = Long(str_optionvalue)
- SELECT wrkgrpid INTO :ins_produce_wrkgrpid_bj
- FROM u_sc_wkp
- Where ifbj = 1;
- IF sqlca.SQLCode <> 0 THEN
- ins_produce_wrkgrpid_bj = 0
- END IF
- SELECT wrkgrpid INTO :ins_wrkGrpid_scll_bj
- FROM u_sc_workgroup
- Where ifbj = 1;
- IF sqlca.SQLCode <> 0 THEN
- ins_wrkGrpid_scll_bj = 0
- END IF
- end event
|