123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875 |
- $PBExportHeader$uo_checkpda.sru
- forward
- global type uo_checkpda from uo_transactionobject
- end type
- type s_p_barcode_pda from structure within uo_checkpda
- end type
- end forward
- type s_p_barcode_pda from structure
- string barcode
- long wrkgrpid
- long kind
- long flag
- string opemp
- datetime opdate
- long workgroupid
- end type
- global type uo_checkpda from uo_transactionobject
- end type
- global uo_checkpda uo_checkpda
- forward prototypes
- public function integer uof_outware_sale_audit (ref string arg_msg, ref long arg_cnt, ref long arg_failcnt)
- public function integer uof_reallocqty_for_order_by_mtrlid (long arg_mtrlid, long arg_fpgrade, ref string arg_msg)
- public function integer uof_ordermtrl_workgroup_changed (long arg_scid, long arg_orderid, long arg_wrkgrpid, ref string arg_msg)
- public function integer uof_reallocqty_ifpack_bak (long arg_fpgrade, ref string arg_msg)
- public function integer uof_reallocqty_ifpack (long arg_fpgrade, long arg_datenum, ref string arg_msg)
- public function integer uof_delallocqty (decimal arg_assignday, decimal arg_outday, ref string arg_msg)
- public subroutine uf_audit_getbar (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg)
- public subroutine uf_audit_finish (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg)
- public subroutine uf_secaudit_finish (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg)
- public subroutine uf_thraudit_finish (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg)
- public subroutine uof_recmpl_mtrlware_ifpackpro_capacity (ref string arg_msg)
- public function integer uof_inware_cp_audit (ref string arg_msg, ref long arg_cnt, ref long arg_failcnt)
- public function integer uof_outware_scll_secaudit (ref string arg_msg, ref long arg_cnt, ref long arg_failcnt)
- public function integer uof_ordermtrl_workgroup_barcode_pt (long arg_scid, long arg_orderid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_ordermtrl_workgroup_barcode_pt_auto (long arg_days, ref string arg_msg)
- private function integer uof_add_workgroup_qty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_workgroupid, datetime arg_finishdate, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_workgroup_barcode_pt (long arg_scid, long arg_orderid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_saleoutcodestr (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg)
- public function integer uof_reallocqty (boolean arg_reallocall, boolean arg_ignorout, long arg_fpgrade, ref string arg_msg)
- public function integer uof_inware_cp_uof_auto_scll_p (ref string arg_msg)
- public function integer uof_reconnect (ref string arg_msg)
- public subroutine uof_send_buytask_jd (ref string arg_msg)
- public function integer uof_order_wkp_barcode_pda_bak (boolean arg_replace, boolean arg_finishbarcode, ref string arg_msg, ref long arg_cnt, ref long arg_failcnt)
- public function integer uof_order_wkp_barcode_pda (boolean arg_replace, boolean arg_finishbarcode, ref string arg_msg, ref long arg_cnt, ref long arg_failcnt)
- private function integer pf_get_barcodes_notflag (ref s_p_barcode_pda arg_bars[], ref string arg_msg)
- public function integer uf_cmpl_cost_balcdateint (ref string arg_msg)
- public function integer uof_cmpl_warebalc_amt (long arg_storageid, long arg_balcdateint, ref string arg_msg)
- public function integer uof_cmpl_mtrlcost_planprice (long arr_mtrlid[], string arr_pfcode[], string arr_status[], string arr_woodcode[], string arr_pcode[], long li_dec, boolean if_auto_copy, integer ifprice, integer ifwfjgprice, integer ifjgprice, integer ifoutcost, integer ifotherprice, integer ifeqprice, ref string ls_msg)
- private function integer pf_outware_to_inwarebuy (string ls_sn, datetime dt_server, ref string arg_msg)
- public function integer uof_outware_to_inwarebuy (ref string ls_msg)
- end prototypes
- public function integer uof_outware_sale_audit (ref string arg_msg, ref long arg_cnt, ref long arg_failcnt);
- uo_outware_sale uo_ware
- uo_ware = Create uo_outware_sale
- uo_ware.commit_transaction = commit_transaction
- datastore ds_outware
- ds_outware = Create datastore
- ds_outware.DataObject = 'ds_outware_sale_noaudit_pda'
- ds_outware.SetTransObject(commit_transaction)
- ds_outware.Retrieve()
- Long ll_i
- String ls_outwarecode
- Long ll_scid,ll_outwareid
- String ls_msg
- Long ll_fail,ll_suc
- FOR ll_i = 1 To ds_outware.RowCount()
- ll_scid = ds_outware.Object.scid[ll_i]
- ll_outwareid = ds_outware.Object.outwareid[ll_i]
- ls_outwarecode = ds_outware.Object.outwarecode[ll_i]
-
- IF uo_ware.getinfo(ll_scid,ll_outwareid,ls_msg) = 0 THEN
- ROLLBACK;
- arg_msg = arg_msg + ls_outwarecode + ' 审核失败,'+ls_msg + '~r~n'
- ll_fail++
- CONTINUE
- END IF
-
- IF uo_ware.auditing(True,ls_msg) = 0 THEN
- ROLLBACK;
- arg_msg = arg_msg + ls_outwarecode + ' 审核失败,'+ls_msg + '~r~n'
- ll_fail++
- CONTINUE
- END IF
-
- ll_suc++
- NEXT
- arg_cnt = ll_suc
- arg_failcnt = ll_fail
- Destroy uo_ware
- Destroy ds_outware
- RETURN 1
- end function
- public function integer uof_reallocqty_for_order_by_mtrlid (long arg_mtrlid, long arg_fpgrade, ref string arg_msg);Int rslt = 1
- uo_mtrlware_assign uo_assign
- uo_assign = Create uo_mtrlware_assign
- uo_assign.commit_transaction = commit_transaction
- Long ll_cnt
- SELECT COUNT(0) Into :ll_cnt From u_mtrldef Where mtrlid = :arg_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '检测物料是否存在失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_cnt = 0 THEN
- rslt = 0
- arg_msg = '物料不存在,mtrlid=' + String(arg_mtrlid)
- GOTO ext
- END IF
- IF uo_assign.uof_adjust_order_by_mtrlid(arg_mtrlid, arg_fpgrade, Ref arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- Destroy uo_assign
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_ordermtrl_workgroup_changed (long arg_scid, long arg_orderid, long arg_wrkgrpid, ref string arg_msg);Int rslt = 1
- uo_ordermtrl_workgroup uo_omw
- uo_omw = Create uo_ordermtrl_workgroup
- uo_omw.commit_transaction = commit_transaction
- IF uo_omw.uf_begindate_changed(arg_scid, arg_orderid, arg_wrkgrpid, Ref arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- GOTO ext
- ext:
- Destroy uo_omw
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_reallocqty_ifpack_bak (long arg_fpgrade, ref string arg_msg);Int rslt = 1
- uo_mtrlware_assign uo_mtrlware_fp
- uo_mtrlware_fp = Create uo_mtrlware_assign
- uo_mtrlware_fp.commit_transaction = commit_transaction
- Long c_assignid[], ll_c_assignid
- Decimal c_fpqty[], ld_c_fpqty
- Long ll_c_cnt = 0
- // 取消分配
- DECLARE cur1 CURSOR FOR SELECT u_mtrlware_assign.Assignid, u_mtrlware_assign.assignqty - u_mtrlware_assign.Outqty AS fpqty
- FROM u_mtrlware_assign INNER JOIN
- u_mtrldef ON u_mtrlware_assign.mtrlid = u_mtrldef.mtrlid
- WHERE (u_mtrlware_assign.fpgrade <= :arg_fpgrade) AND (u_mtrldef.ifpack = 1) AND (u_mtrlware_assign.assigntype = 1) AND
- (u_mtrlware_assign.assignqty > u_mtrlware_assign.Outqty) AND (NOT EXISTS
- (SELECT TOP 1 1 AS Expr1
- FROM u_outware INNER JOIN
- u_outwaremx ON u_outware.scid = u_outwaremx.scid AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE (u_outware.billtype = 1) AND (u_outwaremx.relid = u_mtrlware_assign.Relbillid) AND
- (u_outwaremx.relprintid = u_mtrlware_assign.relprintid) And (u_outware.flag = 0))) Using commit_transaction;
- OPEN cur1;
- FETCH cur1 Into :ll_c_assignid, :ld_c_fpqty;
- DO WHILE commit_transaction.SQLCode = 0
- ll_c_cnt ++
- c_assignid[ll_c_cnt] = ll_c_assignid
- c_fpqty[ll_c_cnt] = ld_c_fpqty
- FETCH cur1 Into :ll_c_assignid, :ld_c_fpqty;
- LOOP
- CLOSE cur1;
- Long ll_i
- FOR ll_i = 1 To ll_c_cnt
- IF uo_mtrlware_fp.uof_assign_del(c_assignid[ll_i],&
- c_fpqty[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- COMMIT Using commit_transaction;
- Long ll_scid, arr_scid[]
- Long ll_TaskID, arr_TaskID[]
- Long ll_printid, arr_printid[]
- Decimal ld_notfpqty, arr_notfpqty[]
- Long ll_MtrlID, arr_MtrlID[]
- String ls_status, arr_status[]
- String ls_woodcode, arr_woodcode[]
- String ls_pcode, arr_pcode[]
- Long ll_cnt = 0
- // 重新分配订单明细
- DECLARE cur2 CURSOR FOR SELECT u_SaleTaskMx.scid, u_SaleTaskMx.TaskID, u_SaleTaskMx.printid, u_SaleTaskMx.SaleQty - u_SaleTaskMx.stopqty - u_SaleTaskMx.fpqty AS notfpqty,
- u_SaleTaskMx.MtrlID, u_SaleTaskMx.status, u_SaleTaskMx.woodcode, u_SaleTaskMx.pcode
- FROM u_SaleTaskMx INNER JOIN
- u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid INNER JOIN
- u_SaleTask ON u_SaleTaskMx.scid = u_SaleTask.scid AND u_SaleTaskMx.TaskID = u_SaleTask.TaskID
- WHERE (u_SaleTaskMx.SaleQty - u_SaleTaskMx.stopqty - u_SaleTaskMx.fpqty > 0) AND (u_mtrldef.ifpack = 1) AND (u_SaleTask.Status = 1)
- Order By u_SaleTaskMx.requiredate Using commit_transaction;
- OPEN cur2;
- FETCH cur2 INTO :ll_scid,
- :ll_TaskID,
- :ll_printid,
- :ld_notfpqty,
- :ll_MtrlID,
- :ls_status,
- :ls_woodcode,
- :ls_pcode;
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- arr_scid[ll_cnt] = ll_scid
- arr_TaskID[ll_cnt] = ll_TaskID
- arr_printid[ll_cnt] = ll_printid
- arr_notfpqty[ll_cnt] = ld_notfpqty
- arr_MtrlID[ll_cnt] = ll_MtrlID
- arr_status[ll_cnt] = ls_status
- arr_woodcode[ll_cnt] = ls_woodcode
- arr_pcode[ll_cnt] = ls_pcode
-
- FETCH cur2 INTO :ll_scid,
- :ll_TaskID,
- :ll_printid,
- :ld_notfpqty,
- :ll_MtrlID,
- :ls_status,
- :ls_woodcode,
- :ls_pcode;
- LOOP
- CLOSE cur2;
- Long ware_l_scid, ware__scid[]
- Long ware_l_mtrlwareid, ware__mtrlwareid[]
- Decimal ware_d_notfpqty, ware__notfpqty[]
- Long ware_cnt = 0
- Long ll_j
- Decimal ld_curqty
- String arg_log = ''
- Long ml_cnt = 0
- FOR ll_i = 1 To ll_cnt
-
- // 主计划未用料审的跳过
- ml_cnt = 0
- SELECT COUNT(0)
- INTO :ml_cnt
- FROM u_order_ml
- WHERE taskscid = :arr_scid[ll_i]
- AND taskid = :arr_TaskID[ll_i]
- AND taskmxid = :arr_printid[ll_i]
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单明细是否有主计划失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ml_cnt <= 0 THEN // 未有主计划跳过
- CONTINUE
- END IF
-
- ml_cnt = 0
- SELECT count(0)
- INTO :ml_cnt
- FROM u_order_ml
- WHERE taskscid = :arr_scid[ll_i]
- AND taskid = :arr_TaskID[ll_i]
- AND taskmxid = :arr_printid[ll_i]
- AND (scllflag = 0 OR scllsecflag = 0)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询订单明细未用料审主计划失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ml_cnt > 0 THEN // 主计划未用料审
- CONTINUE
- END IF
-
- // 查询可分配库存
- ware_cnt = 0
- DECLARE cur3 CURSOR FOR SELECT u_mtrlware.scid, u_mtrlware.mtrlwareid, u_mtrlware.noallocqty - u_mtrlware.allocqty AS notfpqty
- FROM u_mtrlware INNER JOIN
- u_storage ON u_mtrlware.storageid = u_storage.storageid
- WHERE (u_storage.inuse = 1) AND (u_storage.storagetype = 1) AND (u_mtrlware.scid = :arr_scid[ll_i]) AND (u_mtrlware.mtrlid = :arr_mtrlid[ll_i]) AND
- (u_mtrlware.status = :arr_status[ll_i]) And (u_mtrlware.woodcode = :arr_woodcode[ll_i]) And (u_mtrlware.pcode = :arr_pcode[ll_i]) Using commit_transaction;
- OPEN cur3;
- FETCH cur3 INTO :ware_l_scid,
- :ware_l_mtrlwareid,
- :ware_d_notfpqty;
- DO WHILE commit_transaction.SQLCode = 0
-
- ware_cnt ++
- ware__scid[ware_cnt] = ware_l_scid
- ware__mtrlwareid[ware_cnt] = ware_l_mtrlwareid
- ware__notfpqty[ware_cnt] = ware_d_notfpqty
-
- FETCH cur3 INTO :ware_l_scid,
- :ware_l_mtrlwareid,
- :ware_d_notfpqty;
- LOOP
- CLOSE cur3;
-
-
- ld_notfpqty = arr_notfpqty[ll_i]
- FOR ll_j = 1 To ware_cnt
-
- IF ld_notfpqty <= 0 THEN EXIT
-
- IF ld_notfpqty > ware__notfpqty[ll_j] THEN
- ld_curqty = ware__notfpqty[ll_j]
- ELSE
- ld_curqty = ld_notfpqty
- END IF
-
- IF ld_curqty > 0 THEN
- IF uo_mtrlware_fp.uof_assign_add(ware__scid[ll_j],ware__mtrlwareid[ll_j],1,arr_TaskID[ll_i],arr_printid[ll_i],&
- ld_curqty,0,'','','',0,2,publ_operator,arg_msg,False) = 0 THEN
- arg_log += '分配失败,' + arg_msg + '~r~n'
- GOTO _next
- END IF
- ld_notfpqty -= ld_curqty
- END IF
-
- _next:
- NEXT
-
- NEXT
- ext:
- Destroy uo_mtrlware_fp
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_reallocqty_ifpack (long arg_fpgrade, long arg_datenum, ref string arg_msg);Int rslt = 1
- Long ll_i
- uo_mtrlware_assign uo_mtrlware_fp
- uo_mtrlware_fp = Create uo_mtrlware_assign
- uo_mtrlware_fp.commit_transaction = commit_transaction
- datastore ds_refp_pack1
- ds_refp_pack1 = Create datastore
- ds_refp_pack1.DataObject = 'ds_pack1_refp_task'
- ds_refp_pack1.SetTransObject(commit_transaction)
- datastore ds_refp_pack_mx
- ds_refp_pack_mx = Create datastore
- ds_refp_pack_mx.DataObject = 'ds_pack1_refp_mx'
- ds_refp_pack_mx.SetTransObject(commit_transaction)
- Long c_assignid[], ll_c_assignid
- Decimal c_fpqty[], ld_c_fpqty
- Long ll_c_cnt = 0
- // 取消分配
- DECLARE cur1 CURSOR FOR
- SELECT u_mtrlware_assign.assignid,
- u_mtrlware_assign.assignqty - u_mtrlware_assign.outqty as fpqty
- FROM u_mtrlware_assign INNER join
- u_mtrldef on u_mtrlware_assign.mtrlid = u_mtrldef.mtrlid
- WHERE ( u_mtrlware_assign.fpgrade <= :arg_fpgrade )
- AND ( u_mtrldef.ifpack = 1 )
- AND ( u_mtrlware_assign.assigntype = 1 )
- AND ( u_mtrlware_assign.assignqty > u_mtrlware_assign.outqty )
- AND (NOT EXISTS
- (SELECT top 1 1 as expr1
- FROM u_outware INNER join
- u_outwaremx on u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- WHERE ( u_outware.billtype = 1 )
- AND ( u_outwaremx.scid = u_mtrlware_assign.scid )
- AND ( u_outwaremx.relid = u_mtrlware_assign.relbillid )
- AND ( u_outwaremx.relprintid = u_mtrlware_assign.relprintid )
- And ( u_outware.flag = 0))) Using commit_transaction;
- OPEN cur1;
- FETCH cur1 Into :ll_c_assignid, :ld_c_fpqty;
- DO WHILE commit_transaction.SQLCode = 0
- ll_c_cnt ++
- c_assignid[ll_c_cnt] = ll_c_assignid
- c_fpqty[ll_c_cnt] = ld_c_fpqty
- FETCH cur1 Into :ll_c_assignid, :ld_c_fpqty;
- LOOP
- CLOSE cur1;
- FOR ll_i = 1 To ll_c_cnt
- IF uo_mtrlware_fp.uof_assign_del(c_assignid[ll_i],&
- c_fpqty[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- COMMIT Using commit_transaction;
- arg_msg = arg_msg + '取消分配成功:' + String(ll_c_cnt)
- //订单明细用
- Long ll_scid
- Long ll_taskid
- Long ll_printid
- Decimal ld_notfpqty
- Long ll_mtrlid
- String ls_status
- String ls_woodcode
- String ls_pcode
- Long ll_cnt
- //库存用
- Long ware_l_scid, ware_scid[]
- Long ware_l_mtrlwareid, ware_mtrlwareid[]
- Decimal ware_d_notfpqty, ware_notfpqty[]
- Long ware_cnt = 0
- Long ll_j
- Decimal ld_curqty
- String arg_log = ''
- Long ml_cnt = 0
- Boolean if_enough
- Long k
- // 重新分配订单明细
- ll_cnt = ds_refp_pack1.Retrieve(arg_datenum)
- IF ll_cnt = -1 THEN
- rslt = 0
- arg_msg += ';获取重新分配订单明细失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- ll_cnt = ds_refp_pack1.RowCount()
- arg_msg = arg_msg + ';正在执行分配' + String(ll_cnt)
- FOR ll_i = 1 To ll_cnt
- ll_scid = ds_refp_pack1.Object.u_saletaskmx_scid[ll_i]
- ll_taskid = ds_refp_pack1.Object.u_saletaskmx_taskid[ll_i]
-
- ds_refp_pack_mx.Retrieve(ll_scid,ll_taskid)
-
- IF ds_refp_pack_mx.RowCount() = 0 THEN
- //不齐货
- // arg_log += '分配失败,没有明细'
- // f_task_writelog(ll_scid,ll_taskid,arg_log)
- CONTINUE
- ELSE
- if_enough = True
-
- FOR k = 1 To ds_refp_pack_mx.RowCount()
- IF ds_refp_pack_mx.Object.notfpqty[k] > ds_refp_pack_mx.Object.warenotfpqty[k] THEN
- if_enough = False
- EXIT
- END IF
- NEXT
-
- IF Not if_enough THEN
- CONTINUE
- ELSE
-
- FOR k = 1 To ds_refp_pack_mx.RowCount()
- ll_printid = ds_refp_pack_mx.Object.u_saletaskmx_printid[k]
-
- ll_mtrlid = ds_refp_pack_mx.Object.u_saletaskmx_mtrlid[k]
- ls_status = ds_refp_pack_mx.Object.u_saletaskmx_status[k]
- ls_woodcode = ds_refp_pack_mx.Object.u_saletaskmx_woodcode[k]
- ls_pcode = ds_refp_pack_mx.Object.u_saletaskmx_pcode[k]
- ld_notfpqty = ds_refp_pack_mx.Object.notfpqty[k]
- arg_msg = arg_msg + ',' + String(ll_taskid)
- // 主计划未用料审的跳过
- ml_cnt = 0
- SELECT count(0)
- INTO :ml_cnt
- FROM u_order_ml
- WHERE u_order_ml.taskscid = :ll_scid
- AND u_order_ml.taskid = :ll_taskid
- AND u_order_ml.taskmxid = :ll_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg += '查询订单明细是否有主计划失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ml_cnt <= 0 THEN // 未有主计划跳过
- // If ll_taskid = 8835 Then
- // arg_msg = arg_msg + '未有主计划跳过'
- // End If
- CONTINUE
- END IF
-
- ml_cnt = 0
- SELECT count(0)
- INTO :ml_cnt
- FROM u_order_ml
- WHERE u_order_ml.taskscid = :ll_scid
- AND u_order_ml.taskid = :ll_taskid
- AND u_order_ml.taskmxid = :ll_printid
- AND (u_order_ml.scllflag = 0 OR u_order_ml.scllsecflag = 0)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg += '查询订单明细未用料审主计划失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ml_cnt > 0 THEN // 主计划未用料审
- // If ll_taskid = 8835 Then
- // arg_msg = arg_msg + '主计划未用料审'
- // End If
- CONTINUE
- END IF
-
- // If ll_taskid = 8835 Then
- // arg_msg = arg_msg + '正在分配'
- // End If
- //查询可分配库存
- ware_cnt = 0
- DECLARE cur3 CURSOR FOR
- SELECT u_mtrlware.scid,
- u_mtrlware.mtrlwareid,
- u_mtrlware.noallocqty - u_mtrlware.allocqty as notfpqty
- FROM u_mtrlware INNER join
- u_storage on u_mtrlware.storageid = u_storage.storageid
- WHERE (u_storage.inuse = 1)
- AND (u_storage.storagetype = 1)
- AND (u_mtrlware.scid = :ll_scid)
- AND (u_mtrlware.mtrlid = :ll_mtrlid)
- AND (u_mtrlware.status = :ls_status)
- AND (u_mtrlware.woodcode = :ls_woodcode)
- AND (u_mtrlware.pcode = :ls_pcode)
- And (u_mtrlware.noallocqty - u_mtrlware.allocqty > 0 ) Using commit_transaction;
- OPEN cur3;
- FETCH cur3 INTO :ware_l_scid,
- :ware_l_mtrlwareid,
- :ware_d_notfpqty;
- DO WHILE commit_transaction.SQLCode = 0
- ware_cnt ++
- ware_scid[ware_cnt] = ware_l_scid
- ware_mtrlwareid[ware_cnt] = ware_l_mtrlwareid
- ware_notfpqty[ware_cnt] = ware_d_notfpqty
-
- FETCH cur3 INTO :ware_l_scid,
- :ware_l_mtrlwareid,
- :ware_d_notfpqty;
- LOOP
- CLOSE cur3;
-
- FOR ll_j = 1 To ware_cnt
-
- IF ld_notfpqty <= 0 THEN EXIT
-
- IF ld_notfpqty > ware_notfpqty[ll_j] THEN
- ld_curqty = ware_notfpqty[ll_j]
- ld_notfpqty = ld_notfpqty - ld_curqty
- ELSE
- ld_curqty = ld_notfpqty
- ld_notfpqty = 0
- END IF
-
- IF ld_curqty > 0 THEN
-
- // If ll_taskid = 8835 Then
- // arg_msg = arg_msg + '分配数量' + String(ld_curqty)
- // End If
-
- IF uo_mtrlware_fp.uof_assign_add(ll_scid,&
- ware_mtrlwareid[ll_j],&
- 1,&
- ll_taskid,&
- ll_printid,&
- ld_curqty,&
- 0,'','','',0,2,publ_operator,arg_log,False) = 0 THEN
- arg_msg += ';分配失败,' + arg_log + '~r~n'
- GOTO _next
- END IF
- END IF
- _next:
- NEXT
- NEXT
- END IF
- END IF
- NEXT
- ext:
- Destroy uo_mtrlware_fp
- Destroy ds_refp_pack1
- Destroy ds_refp_pack_mx
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_delallocqty (decimal arg_assignday, decimal arg_outday, ref string arg_msg);return f_delallocqty(arg_assignday, arg_outday, ref arg_msg)
- end function
- public subroutine uf_audit_getbar (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg);//====================================================================
- // 事件: uo_db_ys.uf_audit_getbar()
- //--------------------------------------------------------------------
- // 描述: 自动审核未审的条码生成单
- //--------------------------------------------------------------------
- // 参数:
- // ref long arg_sec
- // ref long arg_fail
- // ref string arg_msg
- //--------------------------------------------------------------------
- // 返回: (none)
- //--------------------------------------------------------------------
- // 作者: lwl 日期: 2012年06月04日
- //--------------------------------------------------------------------
- // LONGJOE
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- arg_sec = 0
- arg_fail = 0
- arg_msg = ''
- String ls_msg = ''
- uo_getbar uo_get
- uo_get = Create uo_getbar
- Long ll_billids[], ll_billid
- String ls_billcodes[], ls_billcode
- Long ll_i, ll_cnt = 0
- Long ll_ifpdaonly
- IF arg_ifpdaonly THEN
- ll_ifpdaonly = 1
- ELSE
- ll_ifpdaonly = 0
- END IF
- DECLARE cur1 CURSOR FOR
- SELECT getbarid, getbarcode From u_getbar Where flag = 0 And (:ll_ifpdaonly = 0 Or :ll_ifpdaonly = 1 And dscrp = '系统自动生成');
- OPEN cur1;
- FETCH cur1 Into :ll_billid, :ls_billcode;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt ++
- ll_billids[ll_cnt] = ll_billid
- ls_billcodes[ll_cnt] = ls_billcode
- FETCH cur1 Into :ll_billid, :ls_billcode;
- LOOP
- CLOSE cur1;
- FOR ll_i = 1 To ll_cnt
- ls_msg = ''
- IF uo_get.auditing(ll_billids[ll_i],publ_operator,Ref ls_msg,True) = 1 THEN
- arg_sec++
- ELSE
- ROLLBACK;
- arg_fail++
- ls_msg = '[' + ls_billcodes[ll_i] + ']审核失败:' + ls_msg
- IF arg_msg <> '' THEN
- ls_msg = ls_msg + '~r~n'
- END IF
- arg_msg = ls_msg + arg_msg
- END IF
- NEXT
- Destroy uo_get
- end subroutine
- public subroutine uf_audit_finish (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg);uo_finish uo_finish_wg
- uo_finish_wg = Create uo_finish
- arg_sec = 0
- arg_fail = 0
- arg_msg = ''
- String ls_msg = ''
- Long ll_billid, ll_billids[]
- String ls_billcode, ls_billcodes[]
- Long ll_i, ll_cnt = 0
- Long ll_ifpdaonly
- IF arg_ifpdaonly THEN
- ll_ifpdaonly = 1
- ELSE
- ll_ifpdaonly = 0
- END IF
- DECLARE cur1 CURSOR FOR
- SELECT finishid, finishcode From u_finish Where flag = 0 And (:ll_ifpdaonly = 0 Or :ll_ifpdaonly = 1 And dscrp = '系统自动生成');
- OPEN cur1;
- FETCH cur1 Into :ll_billid, :ls_billcode;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- ll_billids[ll_cnt] = ll_billid
- ls_billcodes[ll_cnt] = ls_billcode
- FETCH cur1 Into :ll_billid, :ls_billcode;
- LOOP
- CLOSE cur1;
- FOR ll_i = 1 To ll_cnt
- IF uo_finish_wg.audit(ll_billids[ll_i], Ref ls_msg, True) = 1 THEN
- arg_sec++
- ELSE
- ROLLBACK;
- arg_fail++
- ls_msg = '[' + ls_billcodes[ll_i] + ']确认失败:' + ls_msg
- IF arg_msg <> '' THEN
- ls_msg = ls_msg + '~r~n'
- END IF
- arg_msg = ls_msg + arg_msg
- END IF
- NEXT
- Destroy uo_finish_wg
- end subroutine
- public subroutine uf_secaudit_finish (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg);uo_finish uo_finish_wg
- uo_finish_wg = Create uo_finish
- arg_sec = 0
- arg_fail = 0
- arg_msg = ''
- String ls_msg = ''
- Long ll_billid, ll_billids[]
- String ls_billcode, ls_billcodes[]
- Long ll_i, ll_cnt = 0
- Long ll_ifpdaonly
- IF arg_ifpdaonly THEN
- ll_ifpdaonly = 1
- ELSE
- ll_ifpdaonly = 0
- END IF
- DECLARE cur1 CURSOR FOR
- SELECT finishid, finishcode From u_finish Where flag = 1 AND secflag = 0 And (:ll_ifpdaonly = 0 Or :ll_ifpdaonly = 1 And dscrp = '系统自动生成');
- OPEN cur1;
- FETCH cur1 Into :ll_billid, :ls_billcode;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- ll_billids[ll_cnt] = ll_billid
- ls_billcodes[ll_cnt] = ls_billcode
- FETCH cur1 Into :ll_billid, :ls_billcode;
- LOOP
- CLOSE cur1;
- FOR ll_i = 1 To ll_cnt
- IF uo_finish_wg.secauditing(ll_billids[ll_i], Ref ls_msg, True) = 1 THEN
- arg_sec++
- ELSE
- ROLLBACK;
- arg_fail++
- ls_msg = '[' + ls_billcodes[ll_i] + ']仓审失败:' + ls_msg
- IF arg_msg <> '' THEN
- ls_msg = ls_msg + '~r~n'
- END IF
- arg_msg = ls_msg + arg_msg
- END IF
- NEXT
- Destroy uo_finish_wg
- end subroutine
- public subroutine uf_thraudit_finish (boolean arg_ifpdaonly, ref long arg_sec, ref long arg_fail, ref string arg_msg);uo_finish uo_finish_wg
- uo_finish_wg = Create uo_finish
- arg_sec = 0
- arg_fail = 0
- arg_msg = ''
- String ls_msg = ''
- Long ll_billid, ll_billids[]
- String ls_billcode, ls_billcodes[]
- Long ll_i, ll_cnt = 0
- Long ll_ifpdaonly
- IF arg_ifpdaonly THEN
- ll_ifpdaonly = 1
- ELSE
- ll_ifpdaonly = 0
- END IF
- DECLARE cur1 CURSOR FOR
- SELECT finishid, finishcode From u_finish Where flag = 1 AND secflag = 1 AND thrflag = 0 And (:ll_ifpdaonly = 0 Or :ll_ifpdaonly = 1 And dscrp = '系统自动生成');
- OPEN cur1;
- FETCH cur1 Into :ll_billid, :ls_billcode;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- ll_billids[ll_cnt] = ll_billid
- ls_billcodes[ll_cnt] = ls_billcode
- FETCH cur1 Into :ll_billid, :ls_billcode;
- LOOP
- CLOSE cur1;
- FOR ll_i = 1 To ll_cnt
- IF uo_finish_wg.thrauditing(ll_billids[ll_i], Ref ls_msg, True,0) = 1 THEN
- arg_sec++
- ELSE
- ROLLBACK;
- arg_fail++
- ls_msg = '[' + ls_billcodes[ll_i] + ']计审失败:' + ls_msg
- IF arg_msg <> '' THEN
- ls_msg = ls_msg + '~r~n'
- END IF
- arg_msg = ls_msg + arg_msg
- END IF
- NEXT
- Destroy uo_finish_wg
- end subroutine
- public subroutine uof_recmpl_mtrlware_ifpackpro_capacity (ref string arg_msg);datastore dw_pageretr
- Long ll_mtrlid,ll_storageid,ll_mtrlwareid
- String ls_status
- Decimal ld_ref_qty
- Long ll_i,ll_j,ll_scid
- Int li_statusflag,li_ifpackpro
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Long ll_fail = 0,ll_suc = 0
- String ls_mtrlcode
- dw_pageretr = Create datastore
- dw_pageretr.DataObject = 'ds_recmpl_mtrlware_capacity'
- dw_pageretr.SetTransObject(sqlca)
- dw_pageretr.Retrieve()
- dw_pageretr.AcceptText()
- FOR ll_i = 1 To dw_pageretr.RowCount()
-
- ll_mtrlid = dw_pageretr.Object.u_mtrlware_mtrlid[ll_i]
- ll_mtrlwareid = dw_pageretr.Object.u_mtrlware_mtrlwareid[ll_i]
- ls_status = dw_pageretr.Object.u_mtrlware_status[ll_i]
- ls_mtrlcode = dw_pageretr.Object.u_mtrldef_mtrlcode[ll_i]
- ll_scid = dw_pageretr.Object.u_mtrlware_scid[ll_i]
-
- SELECT capacity,statusflag,ifpackpro
- INTO :ld_capacity,:li_statusflag,:li_ifpackpro
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = arg_msg + '物料编码:'+ls_mtrlcode+' 查询资料失败,'+sqlca.SQLErrText + '~r~n'
- ll_fail++
- CONTINUE
- END IF
-
- IF li_statusflag = 2 THEN
- ld_capacity = 0
- f_checkpz(ls_status,s_pz[])
- FOR ll_j = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_j].cfgname
-
- SELECT capacity
- INTO :ld_capacity_zj
- FROM u_mtrl_configure
- WHERE mtrlid = :ll_mtrlid
- And Name = :ls_status_zj;
- IF sqlca.SQLCode <> 0 THEN
- ld_capacity_zj = 0
- END IF
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_j].qty)
-
- NEXT
- END IF
-
- IF li_ifpackpro = 0 THEN
- UPDATE u_mtrlware
- SET u_mtrlware.capacity = u_mtrlware.noallocqty * :ld_capacity
- WHERE u_mtrlware.mtrlwareid = :ll_mtrlwareid
- And u_mtrlware.scid = :ll_scid;
- ELSEIF li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
- UPDATE u_mtrlware
- SET u_mtrlware.capacity = u_mtrlware.canuseqty * :ld_capacity
- WHERE u_mtrlware.mtrlwareid = :ll_mtrlwareid
- And u_mtrlware.scid = :ll_scid;
- ELSEIF li_ifpackpro = 3 Or li_ifpackpro = 4 THEN
- IF Pos(ls_status,'+') > 0 Or Pos(ls_status,'*') > 0 THEN
- UPDATE u_mtrlware
- SET u_mtrlware.capacity = u_mtrlware.canuseqty * :ld_capacity
- WHERE u_mtrlware.mtrlwareid = :ll_mtrlwareid
- And u_mtrlware.scid = :ll_scid;
- ELSE
- UPDATE u_mtrlware
- SET u_mtrlware.capacity = u_mtrlware.noallocqty * :ld_capacity
- WHERE u_mtrlware.mtrlwareid = :ll_mtrlwareid
- And u_mtrlware.scid = :ll_scid;
- END IF
- END IF
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- arg_msg = arg_msg + '编码:'+ls_mtrlcode+' 失败,~n'
- ll_fail++
- CONTINUE
- END IF
-
- ll_suc++
- COMMIT;
- NEXT
- IF ll_fail > 0 THEN
- arg_msg = '重算包件产品折算套数~n'+arg_msg
- ELSE
- arg_msg = '重算包件产品折算套数成功:'+string(ll_suc)
- END IF
- end subroutine
- public function integer uof_inware_cp_audit (ref string arg_msg, ref long arg_cnt, ref long arg_failcnt);Int rslt = 1
- uo_inware_cp uo_ware
- uo_ware = Create uo_inware_cp
- datastore ds_inware
- ds_inware = Create datastore
- Long ll_cnt
- SELECT count(0) INTO :ll_cnt
- FROM u_inware
- Where (billtype = 3) And (flag = 0) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询共需要处理数据失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_msg = '共有' + String(ll_cnt) + '条语句需要处理'
- uo_ware.commit_transaction = commit_transaction
- ds_inware.DataObject = 'ds_inware_cp_noaudit_pda'
- ds_inware.SetTransObject(commit_transaction)
- IF ds_inware.Retrieve() < 0 THEN
- rslt = 0
- arg_msg = arg_msg + '查询未审生产进仓单失败'
- GOTO ext
- END IF
- Long ll_i
- String ls_inwarecode
- Long ll_scid,ll_inwareid
- String ls_msg
- Long ll_fail,ll_suc
- FOR ll_i = 1 To ds_inware.RowCount()
- ll_scid = ds_inware.Object.scid[ll_i]
- ll_inwareid = ds_inware.Object.inwareid[ll_i]
- ls_inwarecode = ds_inware.Object.inwarecode[ll_i]
-
- IF uo_ware.getinfo(ll_scid,ll_inwareid,ls_msg) = 0 THEN
- ROLLBACK;
- arg_msg = arg_msg + ls_inwarecode + ' 审核失败,'+ls_msg + '~r~n'
- ll_fail++
- CONTINUE
- END IF
-
- IF uo_ware.auditing(True,ls_msg) = 0 THEN
- ROLLBACK;
- arg_msg = arg_msg + ls_inwarecode + ' 审核失败,'+ls_msg + '~r~n'
- ll_fail++
- CONTINUE
- END IF
-
- ll_suc++
- NEXT
- arg_cnt = ll_suc
- arg_failcnt = ll_fail
- ext:
- Destroy uo_ware
- Destroy ds_inware
- RETURN rslt
- end function
- public function integer uof_outware_scll_secaudit (ref string arg_msg, ref long arg_cnt, ref long arg_failcnt);Int rslt = 1
- uo_outware_scll uo_ware
- uo_ware = Create uo_outware_scll
- Long ll_cnt
- SELECT count(0)
- INTO :ll_cnt
- FROM u_outware
- Where (billtype = 3) And (flag = 1) And (secflag = 0) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询共需要处理数据失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_msg = '共有' + String(ll_cnt) + '条语句需要处理'
- uo_ware.commit_transaction = commit_transaction
- Long ll_scid, ll_outwareid
- Long arr_scid[], arr_outwareid[]
- String ls_outwarecode
- String arr_outwarecode[]
- ll_cnt = 0
- DECLARE cur1 CURSOR FOR
- SELECT scid, outwareid, outwarecode
- FROM u_outware
- Where (billtype = 3) And (flag = 1) And (secflag = 0) Using commit_transaction;
- OPEN cur1;
- FETCH cur1 Into :ll_scid, :ll_outwareid, :ls_outwarecode;
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- arr_scid[ll_cnt] = ll_scid
- arr_outwareid[ll_cnt] = ll_outwareid
- arr_outwarecode[ll_cnt] = ls_outwarecode
- FETCH cur1 Into :ll_scid, :ll_outwareid, :ls_outwarecode;
- LOOP
- CLOSE cur1;
- Long ll_i
- String ls_msg
- Long ll_fail,ll_suc
- FOR ll_i = 1 To ll_cnt
- ll_scid = arr_scid[ll_i]
- ll_outwareid = arr_outwareid[ll_i]
- ls_outwarecode = arr_outwarecode[ll_i]
-
- IF uo_ware.getinfo(ll_scid,ll_outwareid,ls_msg) = 0 THEN
- ROLLBACK;
- arg_msg = arg_msg + ls_outwarecode + ' 查询失败,'+ls_msg + '~r~n'
- ll_fail++
- CONTINUE
- END IF
-
- IF uo_ware.uof_auto_secaudit(ls_msg) = 0 THEN
- ROLLBACK;
- arg_msg = arg_msg + ls_outwarecode + ' 二审失败,'+ls_msg + '~r~n'
- ll_fail++
- CONTINUE
- END IF
-
- ll_suc++
- NEXT
- arg_cnt = ll_suc
- arg_failcnt = ll_fail
- ext:
- Destroy uo_ware
- RETURN rslt
- end function
- public function integer uof_ordermtrl_workgroup_barcode_pt (long arg_scid, long arg_orderid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_cnt = 0
- DateTime ld_sdate, arr_sdate[]
- Long ll_jdtype
- SELECT jdtype
- INTO :ll_jdtype
- FROM u_sc_workgroup
- Where wrkgrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工组进度生成模式失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_jdtype <> 6 THEN
- GOTO ext
- END IF
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = 0,
- finishflag = 0,
- finishdate = NULL
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And wrkgrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '1.更新工组进度失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_ordermtrl_workgroup_barcode
- SET ptflag = 0,
- ptdate = NULL
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And swkpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '2.更新配套标记失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderMtrl_workgroup_date
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And wrkgrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '3.删除工组日进度失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF uof_workgroup_barcode_pt(arg_scid, arg_orderid, arg_wrkgrpid, arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- GOTO ext
- ext:
- IF arg_ifcommit THEN
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- END IF
- RETURN rslt
- end function
- public function integer uof_ordermtrl_workgroup_barcode_pt_auto (long arg_days, ref string arg_msg);Int rslt = 1
- Long ll_scid, arr_scid[]
- Long ll_orderid, arr_orderid[]
- Long ll_wrkgrpid, arr_wrkgrpid[]
- Long ll_cnt = 0
- DateTime dt_server
- SELECT top 1 getdate()
- INTO :dt_server
- From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询服务器时间失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- dt_server = DateTime(Date(dt_server), Time(0))
- dt_server = DateTime(RelativeDate(Date(dt_server), - arg_days), Time(0))
- DECLARE cur1 CURSOR FOR
- SELECT DISTINCT u_ordermtrl_workgroup_barcode.scid, u_ordermtrl_workgroup_barcode.orderid, u_ordermtrl_workgroup_barcode.swkpid
- FROM u_ordermtrl_workgroup_barcode INNER JOIN
- u_Order_ml ON u_ordermtrl_workgroup_barcode.scid = u_Order_ml.scid AND
- u_ordermtrl_workgroup_barcode.orderid = u_Order_ml.OrderID INNER JOIN
- u_OrderMtrl_workgroup_tree ON u_ordermtrl_workgroup_barcode.scid = u_OrderMtrl_workgroup_tree.scid AND
- u_ordermtrl_workgroup_barcode.orderid = u_OrderMtrl_workgroup_tree.orderid AND
- u_ordermtrl_workgroup_barcode.printid = u_OrderMtrl_workgroup_tree.printid INNER JOIN
- u_OrderMtrl_workgroup ON u_ordermtrl_workgroup_barcode.scid = u_OrderMtrl_workgroup.scid AND
- u_ordermtrl_workgroup_barcode.orderid = u_OrderMtrl_workgroup.orderid AND
- u_ordermtrl_workgroup_barcode.swkpid = u_OrderMtrl_workgroup.wrkGrpid
- Where (u_ordermtrl_workgroup_barcode.sflag = 1) And (u_ordermtrl_workgroup_barcode.sdate >= :dt_server) And (u_OrderMtrl_workgroup_tree.iflast = 0);
- OPEN cur1;
- FETCH cur1 Into :ll_scid, :ll_orderid, :ll_wrkgrpid;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- arr_scid[ll_cnt] = ll_scid
- arr_orderid[ll_cnt] = ll_orderid
- arr_wrkgrpid[ll_cnt] = ll_wrkgrpid
- FETCH cur1 Into :ll_scid, :ll_orderid, :ll_wrkgrpid;
- LOOP
- CLOSE cur1;
- Long i
- String ls_msg
- arg_msg = ''
- FOR i = 1 To ll_cnt
- IF uof_ordermtrl_workgroup_barcode_pt(arr_scid[i], arr_orderid[i], arr_wrkgrpid[i], ls_msg, True) <> 1 THEN
- arg_msg = arg_msg + ls_msg + '~r~n'
- END IF
- NEXT
- IF arg_msg <> '' THEN
- rslt = 0
- END IF
- ext:
- RETURN rslt
- end function
- private function integer uof_add_workgroup_qty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_workgroupid, datetime arg_finishdate, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);//更新工组进度完成数
- Int rslt = 1
- String ls_ordercode
- String ls_mtrlcode
- Decimal ld_orderqty,ld_acmpqty,ld_trueqty
- DateTime null_dt
- SetNull(null_dt)
- DateTime dt_fdate
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误的计划唯一码'
- GOTO ext
- END IF
- SELECT ordercode INTO :ls_ordercode
- FROM u_Order_ml
- WHERE OrderID = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划编号失败'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_mtrldef.mtrlcode ,
- u_order_ml.orderqty,
- u_order_ml.acmpqty
- INTO :ls_mtrlcode,
- :ld_orderqty,
- :ld_acmpqty
- FROM u_mtrldef,u_order_ml
- WHERE u_order_ml.mtrlid = u_mtrldef.mtrlid
- AND u_order_ml.scid = :arg_scid
- And u_Order_ml.OrderID = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料编号失败'
- rslt = 0
- GOTO ext
- END IF
- //arg_wrkgrpid:源工组;
- Decimal not_finishqty
- SELECT isnull(sum(orderqty - finishqty - stopqty),0)
- INTO :not_finishqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkgrpid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = ',查询物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_qty > not_finishqty THEN
- // arg_msg = '物料:'+ls_mtrlcode+'当前数量'+String(arg_qty,'#,##0.0###')+' > 工组未完成数量'+String(not_finishqty,'#,##0.0###')+',不能审核'
- // rslt = 0
- // GOTO ext
- arg_qty = not_finishqty
- END IF
- Long ll_owrkgrpid, arr_owrkgrpid[]
- String ls_wkpname, arr_wkpname[]
- Long ll_workgroupid, arr_workgroupid[]
- Decimal ld_ufqty, arr_ufqty[]
- Long ll_cnt = 0
- DECLARE cur1 CURSOR FOR
- SELECT owrkgrpid, wkpname, workgroupid, orderqty - finishqty - stopqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkgrpid
- AND workgroupid = :arg_workgroupid
- UNION
- SELECT owrkgrpid, wkpname, workgroupid, orderqty - finishqty - stopqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkgrpid
- And workgroupid <> :arg_workgroupid;
- OPEN cur1;
- FETCH cur1 Into :ll_owrkgrpid, :ls_wkpname, :ll_workgroupid, :ld_ufqty;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- arr_owrkgrpid[ll_cnt] = ll_owrkgrpid
- arr_wkpname[ll_cnt] = ls_wkpname
- arr_workgroupid[ll_cnt] = ll_workgroupid
- arr_ufqty[ll_cnt] = ld_ufqty
- FETCH cur1 Into :ll_owrkgrpid, :ls_wkpname, :ll_workgroupid, :ld_ufqty;
- LOOP
- CLOSE cur1;
- Long i
- Decimal ld_addqty
- ld_addqty = arg_qty
- FOR i = 1 To ll_cnt
- ll_owrkgrpid = arr_owrkgrpid[i]
- ls_wkpname = arr_wkpname[i]
- ll_workgroupid = arr_workgroupid[i]
- ld_ufqty = arr_ufqty[i]
-
- IF ld_addqty <= 0 THEN
- EXIT
- END IF
-
- IF ld_addqty >= ld_ufqty THEN
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty + :ld_ufqty,
- finishflag = 1,
- finishdate = :arg_finishdate
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_wrkgrpid
- AND owrkgrpid = :ll_owrkgrpid
- AND wkpname = :ls_wkpname
- And workgroupid = :ll_workgroupid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ld_addqty = ld_addqty - ld_ufqty
- ELSE
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty + :ld_addqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_wrkgrpid
- AND owrkgrpid = :ll_owrkgrpid
- AND wkpname = :ls_wkpname
- And workgroupid = :ll_workgroupid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ld_addqty = 0
- END IF
- NEXT
- Decimal ld_sumorderqty
- SELECT isnull(sum(orderqty),0)
- INTO :ld_sumorderqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And wrkGrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料:'+ls_mtrlcode+'计划数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- Decimal ld_sumfqty
- SELECT isnull(sum(fqty),0)
- INTO :ld_sumfqty
- FROM u_OrderMtrl_workgroup_date
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And wrkGrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料:'+ls_mtrlcode+'已完成数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ld_addqty = arg_qty
- IF ld_addqty + ld_sumfqty > ld_sumorderqty THEN
- ld_addqty = ld_sumorderqty - ld_sumfqty
- END IF
- dt_fdate = DateTime(Date(arg_finishdate), Time(0))
- UPDATE u_OrderMtrl_workgroup_date
- SET fqty = fqty + :ld_addqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_wrkgrpid
- And fdate = :dt_fdate;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_OrderMtrl_workgroup_date
- (scid,orderid,wrkgrpid,fdate,fqty)
- VALUES
- (:arg_scid,:arg_orderid,:arg_wrkgrpid,:dt_fdate,:ld_addqty);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入工组当天进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新工组当天进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_workgroup_barcode_pt (long arg_scid, long arg_orderid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_cnt = 0
- DateTime ld_sdate, arr_sdate[]
- Long ll_jdtype
- SELECT jdtype
- INTO :ll_jdtype
- FROM u_sc_workgroup
- Where wrkgrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工组进度生成模式失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_jdtype <> 6 THEN
- GOTO ext
- END IF
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And wrkgrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '锁住工组进度失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- DECLARE cur1 CURSOR FOR
- SELECT DISTINCT CAST(CONVERT(varchar(10), sdate, 120) AS datetime) AS sdate
- FROM u_ordermtrl_workgroup_barcode
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- AND (swkpid = :arg_wrkgrpid)
- AND (sflag = 1)
- AND (ptflag = 0)
- Order By sdate;
- OPEN cur1;
- FETCH cur1 Into :ld_sdate;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- arr_sdate[ll_cnt] = ld_sdate
- FETCH cur1 Into :ld_sdate;
- LOOP
- CLOSE cur1;
- Long i,j,k
- Decimal ld_qty1, ld_qty2, ld_addqty
- Long ll_printid, arr_printid[]
- Long ll_gycnt
- Long ll_pid, arr_pid[]
- Decimal ld_qty, arr_qty[]
- Long ll_ptflag, arr_ptflag[]
- Long ll_bcnt
- FOR i = 1 To ll_cnt
- ld_sdate = DateTime(RelativeDate(Date(arr_sdate[i]), 1))
- ld_qty1 = 0
- ld_qty2 = 0
-
- SELECT ISNULL(MIN(sqty),0)
- INTO :ld_qty1
- FROM (SELECT SUM(CASE WHEN (ptflag = 1) AND (ptdate < :ld_sdate) THEN qty ELSE 0 END) AS sqty, printid
- FROM u_ordermtrl_workgroup_barcode
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- AND (swkpid = :arg_wrkgrpid)
- Group By printid) AS vvv;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询已配套数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT ISNULL(MIN(sqty),0)
- INTO :ld_qty2
- FROM (SELECT SUM(CASE WHEN (sflag = 1) AND (sdate < :ld_sdate) THEN qty ELSE 0 END) AS sqty, printid
- FROM u_ordermtrl_workgroup_barcode
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- AND (swkpid = :arg_wrkgrpid)
- Group By printid) AS vvv;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询已配套数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
-
-
- IF ld_qty2 - ld_qty1 > 0 THEN
- ll_gycnt = 0
- DECLARE cur2 CURSOR FOR
- SELECT printid
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And swkpid = :arg_wrkgrpid;
- OPEN cur2;
- FETCH cur2 Into :ll_printid;
- DO WHILE sqlca.SQLCode = 0
- ll_gycnt++
- arr_printid[ll_gycnt] = ll_printid
- FETCH cur2 Into :ll_printid;
- LOOP
- CLOSE cur2;
-
- FOR j = 1 To ll_gycnt
- ld_addqty = ld_qty2
- ll_bcnt = 0
- DECLARE cur3 CURSOR FOR
- SELECT pid, qty, ptflag
- FROM u_ordermtrl_workgroup_barcode
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arr_printid[j]
- AND sflag = 1
- AND sdate < :ld_sdate
- Order By ptflag Desc, sdate;
- OPEN cur3;
- FETCH cur3 Into :ll_pid, :ld_qty, :ll_ptflag;
- DO WHILE sqlca.SQLCode = 0
- ll_bcnt++
- arr_pid[ll_bcnt] = ll_pid
- arr_qty[ll_bcnt] = ld_qty
- arr_ptflag[ll_bcnt] = ll_ptflag
- FETCH cur3 Into :ll_pid, :ld_qty, :ll_ptflag;
- LOOP
- CLOSE cur3;
-
- FOR k = 1 To ll_bcnt
- IF ld_addqty <= 0 THEN
- EXIT
- END IF
-
- ld_addqty -= arr_qty[k]
-
- IF arr_ptflag[k] = 0 THEN
- UPDATE u_ordermtrl_workgroup_barcode
- SET ptflag = 1, ptdate = :arr_sdate[i]
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arr_printid[j]
- And pid = :arr_pid[k];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新配套标记失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
- NEXT
-
- ld_addqty = ld_qty2 - ld_qty1
-
- IF uof_add_workgroup_qty(arg_scid, arg_orderid, arg_wrkgrpid, 0, arr_sdate[i], ld_addqty, arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- GOTO ext
- ext:
- IF arg_ifcommit THEN
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- END IF
- RETURN rslt
- end function
- public function integer uof_update_saleoutcodestr (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg);return f_update_saleoutcodestr(arg_scid, arg_taskid, arg_printid, true, arg_msg)
- end function
- public function integer uof_reallocqty (boolean arg_reallocall, boolean arg_ignorout, long arg_fpgrade, ref string arg_msg);TRY
- RETURN f_reallocqty_yyx(arg_reallocall, arg_ignorout, arg_fpgrade, Ref arg_msg)
- Catch (throwable ex)
- arg_msg = ex.Text
- RETURN 0
- END TRY
- end function
- public function integer uof_inware_cp_uof_auto_scll_p (ref string arg_msg);Int rslt = 1
- uo_inware_cp uo_ware
- uo_ware = Create uo_inware_cp
- uo_ware.commit_transaction = commit_transaction
- IF uo_ware.uof_auto_scll_p(Ref arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- Destroy uo_ware
- RETURN rslt
- end function
- public function integer uof_reconnect (ref string arg_msg);Int rslt = 1
- DISCONNECT Using id_sqlca;
- CONNECT Using id_sqlca;
- IF id_sqlca.SQLCode < 0 THEN
- rslt = 0
- arg_msg = 'ID连接数据库失败,' + id_sqlca.SQLErrText
- GOTO ext
- END IF
- DISCONNECT;
- CONNECT;
- IF sqlca.SQLCode < 0 THEN
- rslt = 0
- arg_msg = '连接数据库失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public subroutine uof_send_buytask_jd (ref string arg_msg);uo_saletask_jdbll uo_bll
- uo_bll = create uo_saletask_jdbll
- uo_bll.uf_send_buytask_jd(arg_msg)
- destroy uo_bll
- end subroutine
- public function integer uof_order_wkp_barcode_pda_bak (boolean arg_replace, boolean arg_finishbarcode, ref string arg_msg, ref long arg_cnt, ref long arg_failcnt);//====================================================================
- // 事件: .f_order_wkp_barcode_pda()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- // value boolean arg_replace 优先完成时间较早的计划
- // reference string arg_msg
- // reference long arg_cnt
- // reference long arg_failcnt
- //--------------------------------------------------------------------
- // 返回: integer
- //--------------------------------------------------------------------
- // 作者: lwl 日期: 2012年02月24日
- //--------------------------------------------------------------------
- // LONGJOE
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- Int rslt = 1
- Long ll_i,ll_j,ll_k,ll_l,ll_m
- Long ll_wrkgrpid
- String ls_barcode
- Long ll_swkpid,ll_owkpid
- Int li_sflag,li_oflag
- Long ll_scid,ll_orderid,ll_printid
- Long ll_printid_tree
- Int li_kind
- Long ll_pid
- DateTime ldt_opdate
- String ls_opemp
- Decimal ld_packqty
- Long ll_row
- DateTime server_dt,ldt_fdate
- Decimal ld_addqty
- String ls_wkpname
- String ls_relname,ls_partname
- String ls_p_barcode
- Decimal ld_min_orderqty,ld_sum_fqty
- Decimal ld_maxqty, ld_finishqty
- String ls_bar_relname, ls_bar_partname
- Long ll_f_mtrlid
- String ls_f_status ,ls_f_woodcode,ls_f_pcode
- Long ll_f_swkpid, ll_f_owkpid
- String ls_f_relname,ls_f_partname
- Long ll_f_scid,ll_f_orderid
- DateTime ld_f_requiredate
- Long cnt
- Long ll_ifrel, ll_storageid, ll_cusid
- String ls_plancode, ls_mtrlcuscode, ls_location
- Long ll_f_printid,ll_f_pid
- Long ll_r_scid,ll_r_orderid,ll_r_printid,ll_r_pid
- String ls_r_barcode
- Long ll_scid_tmp
- Long ll_orderid_tmp
- Long ll_suc,ll_fail
- Long ll_sqty,ll_oqty
- Long ll_getbarid
- Long ll_r_getbarid
- Long ll_workgroupid
- Long ll_scid_ds,ll_orderid_ds,ll_swkpid_ds,ll_workgroupid_ds
- Decimal ld_minsqty_ds
- Long ll_workgroupid_up,ll_owrkGrpid_up
- String ls_wkpname_up
- Decimal ld_update_qty,ld_orderqty_ds,ld_stopqty_ds,ld_finishqty_ds
- Long ll_row_wkp
- String ls_orderstr_arr[]
- Long ll_rowcnt
- Long ll_mxbt
- Long ls_p
- Long ll_mxbt_wrk
- Long ll_scid_arr[],ll_orderid_arr[],ll_wrkgrpid_arr[],ll_scid_wkp[],ll_orderid_wkp[]
- Decimal ld_minsqty
- Long ll_workgroupid_p
- Int li_barcode_check
- Decimal ld_qty
- String arg_barcode[]
- Long arg_wrkgrpid[]
- DateTime arg_opdate[]
- Long arg_mxbt = 0
- Decimal ld_ld_minsqty
- Long ls_printid
- String ls_msg
- ll_mxbt = 0
- ll_mxbt_wrk = 0
- ll_suc = 0
- ll_fail = 0
- Int ll_oldfail = 0
- uo_sc_task_finish sc_task
- sc_task = Create uo_sc_task_finish
- datastore ds_pda
- ds_pda = Create datastore
- ds_pda.DataObject = 'ds_order_wkp_barcode_pda'
- ds_pda.SetTransObject(sqlca)
- datastore ds_update_wrk
- ds_update_wrk = Create datastore
- ds_update_wrk.DataObject = 'ds_barcode_update_ordermtrl_workgroup_id'
- ds_update_wrk.SetTransObject(sqlca)
- datastore ds_order_wkp
- ds_order_wkp = Create datastore
- ds_order_wkp.DataObject = 'ds_barcode_order_wkp_workgroupid'
- ds_order_wkp.SetTransObject(sqlca)
- datastore ds_relname
- ds_relname = Create datastore
- ds_relname.DataObject = 'ds_cmp_date_barcode_relname'
- ds_relname.SetTransObject(sqlca)
- datastore ds_mx
- ds_mx = Create datastore
- ds_mx.DataObject = 'ds_cmp_date_barcode_mx'
- ds_mx.SetTransObject(sqlca)
- ll_row = ds_pda.Retrieve()
- IF ll_row = -1 THEN
- IF f_re_conect(arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '重库数据库失败,' + arg_msg
- GOTO ext
- END IF
- ll_row = ds_pda.Retrieve()
- IF ll_row = -1 THEN
- arg_msg = '查询未处理条码失败,' + sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user;
- //取得系统时间,借用操作员表
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询日期失败,'+sqlca.SQLErrText
- ROLLBACK;
- rslt = 0
- GOTO ext
- END IF
- ldt_fdate = DateTime(Date(server_dt),Time(0))
- FOR ll_i = 1 To ll_row
-
- // 临时处理 重连数据库
- IF ll_fail - ll_oldfail >= 5 THEN
- DISCONNECT;
- CONNECT;
- END IF
-
- ls_barcode = ds_pda.Object.barcode[ll_i]
- ll_wrkgrpid = ds_pda.Object.wrkgrpid[ll_i]
- li_kind = ds_pda.Object.Kind[ll_i]
- ldt_opdate = ds_pda.Object.opdate[ll_i]
- ls_opemp = ds_pda.Object.opemp[ll_i]
- ll_workgroupid = ds_pda.Object.workgroupid[ll_i]
-
- UPDATE u_order_wkp_barcode_pda
- SET flag = 1
- WHERE barcode = :ls_barcode
- AND wrkgrpid = :ll_wrkgrpid
- AND Kind = :li_kind
- And flag <> 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新条码状态失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- IF sqlca.SQLNRows = 0 THEN
- CONTINUE
- END IF
-
- SELECT barcode_check
- INTO :li_barcode_check
- FROM u_sc_workgroup
- Where wrkgrpid = :ll_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN li_barcode_check = 0
-
- ll_r_orderid = 0
- IF li_kind = 0 THEN // 完工模式
- //按顺序查找同工的最早条码
- SELECT u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- u_ordermtrl_workgroup_barcode.swkpid,
- u_ordermtrl_workgroup_barcode.owkpid,
- u_ordermtrl_workgroup_barcode.relname,
- u_ordermtrl_workgroup_barcode.partname,
- u_ordermtrl_workgroup_barcode.scid,
- u_ordermtrl_workgroup_barcode.orderid,
- u_OrderMtrl_workgroup.requiredate,
- u_ordermtrl_workgroup_barcode.printid,
- u_ordermtrl_workgroup_barcode.pid
- INTO :ll_f_mtrlid,
- :ls_f_status,
- :ls_f_woodcode,
- :ls_f_pcode,
- :ll_f_swkpid,
- :ll_f_owkpid,
- :ls_f_relname,
- :ls_f_partname,
- :ll_f_scid,
- :ll_f_orderid,
- :ld_f_requiredate,
- :ll_f_printid,
- :ll_f_pid
- FROM u_ordermtrl_workgroup_barcode INNER JOIN
- u_Order_ml ON u_ordermtrl_workgroup_barcode.scid = u_Order_ml.scid AND
- u_ordermtrl_workgroup_barcode.orderid = u_Order_ml.OrderID INNER JOIN
- u_OrderMtrl_workgroup ON
- u_ordermtrl_workgroup_barcode.scid = u_OrderMtrl_workgroup.scid AND
- u_ordermtrl_workgroup_barcode.swkpid = u_OrderMtrl_workgroup.wrkGrpid AND
- u_ordermtrl_workgroup_barcode.orderid = u_OrderMtrl_workgroup.orderid
- WHERE u_ordermtrl_workgroup_barcode.barcode = :ls_barcode
- And u_ordermtrl_workgroup_barcode.swkpid = :ll_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- // ROLLBACK;
- // arg_msg = '查询条码 '+ls_barcode+' 相关信息失败,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- GOTO _update_data
- END IF
-
- cnt = 0
-
- SELECT count(0) INTO :cnt
- FROM u_ordermtrl_workgroup_barcode INNER JOIN
- u_Order_ml ON u_ordermtrl_workgroup_barcode.scid = u_Order_ml.scid AND
- u_ordermtrl_workgroup_barcode.orderid = u_Order_ml.OrderID INNER JOIN
- u_OrderMtrl_workgroup ON
- u_ordermtrl_workgroup_barcode.scid = u_OrderMtrl_workgroup.scid AND
- u_ordermtrl_workgroup_barcode.swkpid = u_OrderMtrl_workgroup.wrkGrpid AND
- u_ordermtrl_workgroup_barcode.orderid = u_OrderMtrl_workgroup.orderid
- WHERE u_Order_ml.mtrlid = :ll_f_mtrlid AND
- u_Order_ml.status_mode = :ls_f_status AND
- u_Order_ml.woodcode = :ls_f_woodcode AND
- u_Order_ml.pcode = :ls_f_pcode AND
- u_ordermtrl_workgroup_barcode.swkpid = :ll_f_swkpid AND
- u_ordermtrl_workgroup_barcode.owkpid = :ll_f_owkpid AND
- u_ordermtrl_workgroup_barcode.relname = :ls_f_relname AND
- u_ordermtrl_workgroup_barcode.partname = :ls_f_partname AND
- u_ordermtrl_workgroup_barcode.orderid <> :ll_f_orderid AND
- u_OrderMtrl_workgroup.requiredate < :ld_f_requiredate AND
- u_ordermtrl_workgroup_barcode.sflag = 0 AND
- u_Order_ml.status = 1 ;
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- // arg_msg = '查询条码 '+ls_barcode+' 相同部件未完成情况失败,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- ll_r_scid = 0
- ll_r_orderid = 0
- ll_r_printid = 0
- ll_r_pid = 0
- GOTO _update_data
- END IF
-
-
- IF cnt > 0 And arg_replace THEN
- SELECT top 1 u_ordermtrl_workgroup_barcode.scid,
- u_ordermtrl_workgroup_barcode.orderid,
- u_ordermtrl_workgroup_barcode.printid,
- u_ordermtrl_workgroup_barcode.pid,
- u_ordermtrl_workgroup_barcode.barcode
- INTO :ll_r_scid,
- :ll_r_orderid,
- :ll_r_printid,
- :ll_r_pid,
- :ls_r_barcode
- FROM u_ordermtrl_workgroup_barcode INNER JOIN
- u_Order_ml ON u_ordermtrl_workgroup_barcode.scid = u_Order_ml.scid AND
- u_ordermtrl_workgroup_barcode.orderid = u_Order_ml.OrderID INNER JOIN
- u_OrderMtrl_workgroup ON
- u_ordermtrl_workgroup_barcode.scid = u_OrderMtrl_workgroup.scid AND
- u_ordermtrl_workgroup_barcode.swkpid = u_OrderMtrl_workgroup.wrkGrpid AND
- u_ordermtrl_workgroup_barcode.orderid = u_OrderMtrl_workgroup.orderid
- WHERE u_Order_ml.mtrlid = :ll_f_mtrlid AND
- u_Order_ml.status_mode = :ls_f_status AND
- u_Order_ml.woodcode = :ls_f_woodcode AND
- u_Order_ml.pcode = :ls_f_pcode AND
- u_ordermtrl_workgroup_barcode.swkpid = :ll_f_swkpid AND
- u_ordermtrl_workgroup_barcode.owkpid = :ll_f_owkpid AND
- u_ordermtrl_workgroup_barcode.relname = :ls_f_relname AND
- u_ordermtrl_workgroup_barcode.partname = :ls_f_partname AND
- u_ordermtrl_workgroup_barcode.orderid <> :ll_f_orderid AND
- u_OrderMtrl_workgroup.requiredate < :ld_f_requiredate AND
- u_ordermtrl_workgroup_barcode.sflag = 0 AND
- u_Order_ml.status = 1
- Order By u_OrderMtrl_workgroup.requiredate;
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- // arg_msg = '查询条码 '+ls_barcode+' 相同部件未完成情况失败2,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- ll_r_scid = 0
- ll_r_orderid = 0
- ll_r_printid = 0
- ll_r_pid = 0
- GOTO _update_data
- END IF
-
- ll_scid_tmp = ll_r_scid - 100000000
- ll_orderid_tmp = ll_r_orderid - 100000000
-
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET scid = :ll_scid_tmp,
- orderid = :ll_orderid_tmp
- WHERE scid = :ll_r_scid
- AND orderid = :ll_r_orderid
- AND barcode = :ls_r_barcode
- And pid = :ll_r_pid;
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- // arg_msg = '更新条码 '+ls_barcode+' 信息失败 ,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- ll_r_scid = 0
- ll_r_orderid = 0
- ll_r_printid = 0
- ll_r_pid = 0
- GOTO _update_data
- END IF
-
- // UPDATE u_ordermtrl_workgroup_barcode
- // SET barcode = :ls_barcode
- // WHERE scid = :ll_r_scid
- // AND orderid = :ll_r_orderid
- // AND barcode = :ls_r_barcode;
- // IF sqlca.SQLCode <> 0 THEN
- // ROLLBACK;
- // arg_msg = '更新条码 '+ls_barcode+' 信息失败 ,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- // END IF
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET scid = :ll_r_scid,
- orderid = :ll_r_orderid,
- pid = :ll_r_pid
- WHERE scid = :ll_f_scid
- AND orderid = :ll_f_orderid
- AND barcode = :ls_barcode
- And pid = :ll_f_pid;
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- // arg_msg = '更新条码 '+ls_barcode + '对应更换条码 '+ls_r_barcode+' 信息失败_1,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- ll_r_scid = 0
- ll_r_orderid = 0
- ll_r_printid = 0
- ll_r_pid = 0
- GOTO _update_data
- END IF
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET scid = :ll_f_scid,
- orderid = :ll_f_orderid,
- pid = :ll_f_pid
- WHERE scid = :ll_scid_tmp
- And orderid = :ll_orderid_tmp;
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- // arg_msg = '更新条码 '+ls_barcode + '对应更换条码 '+ls_r_barcode+' 信息失败_2,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- ll_r_scid = 0
- ll_r_orderid = 0
- ll_r_printid = 0
- ll_r_pid = 0
- GOTO _update_data
- END IF
- END IF
-
-
- _update_data:
-
- SELECT COUNT(0)
- INTO :cnt
- FROM u_ordermtrl_workgroup_barcode
- WHERE barcode = :ls_barcode
- AND swkpid = :ll_wrkgrpid
- And sflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '1.0查询条码 '+ls_barcode+' 未完成数失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- IF cnt <= 0 THEN
- GOTO _okandnext
- END IF
-
- SELECT top 1 scid,
- orderid,
- printid,
- swkpid,
- owkpid,
- sflag,
- oflag,
- pid,
- relname,
- partname,
- workgroupid,
- qty
- INTO :ll_scid,
- :ll_orderid,
- :ll_printid,
- :ll_swkpid,
- :ll_owkpid,
- :li_sflag,
- :li_oflag,
- :ll_pid,
- :ls_bar_relname,
- :ls_bar_partname,
- :ll_workgroupid_p,
- :ld_qty
- FROM u_ordermtrl_workgroup_barcode
- WHERE barcode = :ls_barcode
- AND swkpid = :ll_wrkgrpid
- AND sflag = 0
- Order By printid Desc;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '1.0查询条码 '+ls_barcode+' 相关信息失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- //不严格限制工作中心或条码本身没有指定工作中心,则程序为条码匹配工作中心
- IF li_barcode_check = 0 Or ll_workgroupid_p = 0 THEN
-
- //20111013 应急处理
- UPDATE u_OrderMtrl_workgroup_barcode
- SET u_ordermtrl_workgroup_barcode.workgroupid = u_OrderMtrl_workgroup.workgroupid
- FROM u_ordermtrl_workgroup_barcode INNER JOIN
- u_OrderMtrl_workgroup ON
- u_ordermtrl_workgroup_barcode.scid = u_OrderMtrl_workgroup.scid AND
- u_ordermtrl_workgroup_barcode.orderid = u_OrderMtrl_workgroup.orderid AND
- u_ordermtrl_workgroup_barcode.swkpid = u_OrderMtrl_workgroup.wrkGrpid AND
- u_ordermtrl_workgroup_barcode.workgroupid <> u_OrderMtrl_workgroup.workgroupid
- WHERE u_ordermtrl_workgroup_barcode.scid = :ll_scid
- AND u_ordermtrl_workgroup_barcode.orderid = :ll_orderid
- And u_ordermtrl_workgroup_barcode.workgroupid <> u_OrderMtrl_workgroup.workgroupid;
- //
-
- SELECT count(*) INTO :cnt
- FROM u_OrderMtrl_workgroup
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND wrkgrpid = :ll_swkpid
- And workgroupid = :ll_workgroupid;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
-
- IF cnt = 0 THEN
-
- SELECT COUNT(0)
- INTO :cnt
- FROM u_OrderMtrl_workgroup
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- And wrkgrpid = :ll_swkpid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '2.查询条码 '+ls_barcode+' 相关生产计划工组数量失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- IF cnt = 0 THEN
- GOTO _okandnext
- END IF
-
- SELECT top 1 workgroupid
- INTO :ll_workgroupid
- FROM u_OrderMtrl_workgroup
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- And wrkgrpid = :ll_swkpid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '2.查询条码 '+ls_barcode+' 相关生产计划工组进度信息失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
- END IF
- ELSE
- IF ll_workgroupid_p <> ll_workgroupid THEN
- arg_msg += '条码 '+ls_barcode+' 所属工作中心与当前选择的工作中心不符,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
- END IF
-
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET sflag = 1,
- sdate = :ldt_opdate,
- semp = :ls_opemp,
- workgroupid = :ll_workgroupid
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND printid = :ll_printid
- And pid = :ll_pid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新条码完成状态失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- // SELECT sum(sflag*qty),sum(oflag*qty)
- // INTO :ll_sqty,:ll_oqty
- // FROM u_ordermtrl_workgroup_barcode
- // WHERE scid = :ll_scid
- // AND orderid = :ll_orderid
- // And printid = :ll_printid;
- // IF sqlca.SQLCode <> 0 THEN
- // ROLLBACK;
- // arg_msg = '查询工组完成进度失败,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- // END IF
-
- SELECT printid INTO :ll_printid_tree
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND relname = :ls_bar_relname
- AND partname = :ls_bar_partname
- AND workgroupid = :ll_workgroupid
- And orderqty > sqty ;
- IF sqlca.SQLCode <> 0 THEN
- SELECT top 1 printid
- INTO :ll_printid_tree
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND relname = :ls_bar_relname
- AND partname = :ls_bar_partname
- And orderqty > sqty ;
- IF sqlca.SQLCode <> 0 THEN
- ll_printid_tree = ll_printid
- END IF
- END IF
-
- UPDATE u_OrderMtrl_workgroup_tree
- SET u_ordermtrl_workgroup_tree.sqty = case when u_ordermtrl_workgroup_tree.sqty + :ld_qty > u_ordermtrl_workgroup_tree.orderqty then u_ordermtrl_workgroup_tree.orderqty else u_ordermtrl_workgroup_tree.sqty + :ld_qty END,
- u_ordermtrl_workgroup_tree.sdate = :ldt_opdate
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- And printid = :ll_printid_tree;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新工组条码进度已完成数失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
-
- IF ll_r_orderid > 0 THEN
-
- UPDATE u_OrderMtrl_workgroup_tree
- SET u_OrderMtrl_workgroup_tree.sqty = case when isnull(a.sqty,0) > u_ordermtrl_workgroup_tree.orderqty then u_ordermtrl_workgroup_tree.orderqty else isnull(a.sqty,0) END,
- u_OrderMtrl_workgroup_tree.oqty = case when isnull(a.oqty,0) > u_ordermtrl_workgroup_tree.orderqty then u_ordermtrl_workgroup_tree.orderqty else isnull(a.oqty,0) END
- FROM u_OrderMtrl_workgroup_tree INNER JOIN
- (SELECT SUM(sflag*qty) AS sqty, SUM(oflag*qty) AS oqty, scid, orderid, printid
- FROM u_ordermtrl_workgroup_barcode
- WHERE scid = :ll_f_scid
- AND orderid = :ll_f_orderid
- GROUP BY scid, orderid, printid) a ON
- u_OrderMtrl_workgroup_tree.scid = a.scid AND
- u_OrderMtrl_workgroup_tree.orderid = a.orderid AND
- u_OrderMtrl_workgroup_tree.printid = a.printid
- WHERE u_OrderMtrl_workgroup_tree.scid = :ll_f_scid
- And u_OrderMtrl_workgroup_tree.orderid = :ll_f_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新工组条码进度已完成数失败(原计划),'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- UPDATE u_OrderMtrl_workgroup_tree
- SET u_OrderMtrl_workgroup_tree.sqty = case when isnull(a.sqty,0) > u_ordermtrl_workgroup_tree.orderqty then u_ordermtrl_workgroup_tree.orderqty else isnull(a.sqty,0) END,
- u_OrderMtrl_workgroup_tree.oqty = case when isnull(a.oqty,0) > u_ordermtrl_workgroup_tree.orderqty then u_ordermtrl_workgroup_tree.orderqty else isnull(a.oqty,0) END
- FROM u_OrderMtrl_workgroup_tree INNER JOIN
- (SELECT SUM(sflag*qty) AS sqty, SUM(oflag*qty) AS oqty, scid, orderid, printid
- FROM u_ordermtrl_workgroup_barcode
- WHERE scid = :ll_f_scid
- AND orderid = :ll_f_orderid
- GROUP BY scid, orderid, printid) a ON
- u_OrderMtrl_workgroup_tree.scid = a.scid AND
- u_OrderMtrl_workgroup_tree.orderid = a.orderid AND
- u_OrderMtrl_workgroup_tree.printid = a.printid
- WHERE u_OrderMtrl_workgroup_tree.scid = :ll_r_scid
- And u_OrderMtrl_workgroup_tree.orderid = :ll_r_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新工组条码进度已完成数失败(新替换计划),'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
- END IF
-
- arg_mxbt++
- arg_barcode[arg_mxbt] = ls_barcode
- arg_wrkgrpid[arg_mxbt] = ll_wrkgrpid
- arg_opdate[arg_mxbt] = ldt_opdate
-
-
- ELSEIF li_kind = 1 THEN // 接收模式
- SELECT scid,
- orderid,
- printid,
- swkpid,
- owkpid,
- sflag,
- oflag,
- pid,
- relname,
- partname,
- qty
- INTO :ll_scid,
- :ll_orderid,
- :ll_printid,
- :ll_swkpid,
- :ll_owkpid,
- :li_sflag,
- :li_oflag,
- :ll_pid,
- :ls_bar_relname,
- :ls_bar_partname,
- :ld_qty
- FROM u_ordermtrl_workgroup_barcode
- WHERE barcode = :ls_barcode
- And owkpid = :ll_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '3.查询条码 '+ls_barcode+' 相关信息失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET oflag = 1,
- odate = :ldt_opdate,
- oemp = :ls_opemp
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND printid = :ll_printid
- And pid = :ll_pid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新条码接收状态失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
-
- SELECT top 1 printid
- INTO :ll_printid_tree
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND relname = :ls_bar_relname
- AND partname = :ls_bar_partname
- And sqty > oqty ;
- IF sqlca.SQLCode <> 0 THEN
- ll_printid_tree = ll_printid
- END IF
-
- UPDATE u_OrderMtrl_workgroup_tree
- SET u_ordermtrl_workgroup_tree.oqty = case when u_ordermtrl_workgroup_tree.oqty + :ld_qty > u_ordermtrl_workgroup_tree.orderqty then u_ordermtrl_workgroup_tree.orderqty else u_ordermtrl_workgroup_tree.oqty + :ld_qty END ,
- u_ordermtrl_workgroup_tree.odate = :ldt_opdate
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND printid = :ll_printid_tree
- And u_OrderMtrl_workgroup_tree.oqty < u_OrderMtrl_workgroup_tree.orderqty;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新工组条码进度已接收数失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
- ELSE // Marker: 最后工组完工
- SELECT u_mtrlware_mx.getbarid,
- u_getbar.orderid,
- u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- u_OrderMtrl_workgroup.wrkGrpid,
- u_OrderMtrl_workgroup.wkpname,
- u_OrderMtrl_workgroup.requiredate,
- u_getbar.scid,
- u_mtrlware_mx.packqty * u_mtrlware_mx.qty AS packqty,
- u_getbar.ifrel,
- u_getbar.storageid,
- u_getbar.cusid,
- u_getbar.plancode,
- u_getbar.mtrlcuscode,
- u_getbar.location
- INTO :ll_getbarid,
- :ll_orderid,
- :ll_f_mtrlid,
- :ls_f_status,
- :ls_f_woodcode,
- :ls_f_pcode,
- :ll_wrkgrpid,
- :ls_wkpname,
- :ld_f_requiredate,
- :ll_scid,
- :ld_packqty,
- :ll_ifrel,
- :ll_storageid,
- :ll_cusid,
- :ls_plancode,
- :ls_mtrlcuscode,
- :ls_location
- FROM u_mtrlware_mx INNER JOIN
- u_getbar ON u_mtrlware_mx.getbarid = u_getbar.getbarid INNER JOIN
- u_Order_ml ON u_getbar.scid = u_Order_ml.scid AND u_getbar.orderid = u_Order_ml.OrderID INNER JOIN
- u_OrderMtrl_workgroup ON u_Order_ml.scid = u_OrderMtrl_workgroup.scid AND u_Order_ml.OrderID = u_OrderMtrl_workgroup.orderid AND
- u_OrderMtrl_workgroup.iflast = 1
- Where (u_mtrlware_mx.barcode = :ls_barcode);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '4.查询条码 '+ls_barcode+' 相关信息失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- IF arg_replace THEN
- SELECT COUNT(0)
- INTO :cnt
- FROM u_mtrlware_mx INNER JOIN
- u_getbar ON u_mtrlware_mx.getbarid = u_getbar.getbarid INNER JOIN
- u_Order_ml ON u_getbar.scid = u_Order_ml.scid AND u_getbar.orderid = u_Order_ml.OrderID INNER JOIN
- u_OrderMtrl_workgroup ON u_Order_ml.scid = u_OrderMtrl_workgroup.scid AND u_Order_ml.OrderID = u_OrderMtrl_workgroup.orderid AND
- u_OrderMtrl_workgroup.iflast = 1
- WHERE (u_mtrlware_mx.getbarid <> :ll_getbarid)
- AND (u_Order_ml.status_mode = :ls_f_status)
- AND (u_OrderMtrl_workgroup.wkpname = :ls_wkpname)
- AND (u_OrderMtrl_workgroup.wrkGrpid = :ll_wrkgrpid)
- AND (u_Order_ml.pcode = :ls_f_pcode)
- AND (u_Order_ml.woodcode = :ls_f_woodcode)
- AND (u_Order_ml.mtrlid = :ll_f_mtrlid)
- AND (NOT EXISTS
- (SELECT 1
- FROM u_order_wkp_barcode_pda
- WHERE (barcode = u_mtrlware_mx.barcode) AND (kind = 2)))
- AND (u_OrderMtrl_workgroup.requiredate < :ld_f_requiredate)
- AND (u_getbar.orderid <> :ll_orderid)
- AND (u_mtrlware_mx.packqty * u_mtrlware_mx.qty = :ld_packqty)
- AND (u_getbar.ifrel = :ll_ifrel)
- AND (u_getbar.storageid = :ll_storageid)
- AND (u_getbar.cusid = :ll_cusid)
- AND (u_getbar.plancode = :ls_plancode)
- AND (u_getbar.mtrlcuscode = :ls_mtrlcuscode)
- AND (u_getbar.Location = :ls_location)
- And (u_mtrlware_mx.inflag = 0);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '查询可替换最后工组失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- IF cnt > 0 THEN
-
- SELECT TOP 1 u_mtrlware_mx.getbarid,
- u_mtrlware_mx.barcode,
- u_getbar.scid,
- u_getbar.orderid
- INTO :ll_r_getbarid,
- :ls_r_barcode,
- :ll_r_scid,
- :ll_r_orderid
- FROM u_mtrlware_mx INNER JOIN
- u_getbar ON u_mtrlware_mx.getbarid = u_getbar.getbarid INNER JOIN
- u_Order_ml ON u_getbar.scid = u_Order_ml.scid AND u_getbar.orderid = u_Order_ml.OrderID INNER JOIN
- u_OrderMtrl_workgroup ON u_Order_ml.scid = u_OrderMtrl_workgroup.scid AND u_Order_ml.OrderID = u_OrderMtrl_workgroup.orderid AND
- u_OrderMtrl_workgroup.iflast = 1
- WHERE (u_mtrlware_mx.getbarid <> :ll_getbarid)
- AND (u_Order_ml.status_mode = :ls_f_status)
- AND (u_OrderMtrl_workgroup.wkpname = :ls_wkpname)
- AND (u_OrderMtrl_workgroup.wrkGrpid = :ll_wrkgrpid)
- AND (u_Order_ml.pcode = :ls_f_pcode)
- AND (u_Order_ml.woodcode = :ls_f_woodcode)
- AND (u_Order_ml.mtrlid = :ll_f_mtrlid)
- AND (NOT EXISTS
- (SELECT 1
- FROM u_order_wkp_barcode_pda
- WHERE (barcode = u_mtrlware_mx.barcode) AND (kind = 2)))
- AND (u_OrderMtrl_workgroup.requiredate < :ld_f_requiredate)
- AND (u_getbar.orderid <> :ll_orderid)
- AND (u_mtrlware_mx.packqty * u_mtrlware_mx.qty = :ld_packqty)
- AND (u_getbar.ifrel = :ll_ifrel)
- AND (u_getbar.storageid = :ll_storageid)
- AND (u_getbar.cusid = :ll_cusid)
- AND (u_getbar.plancode = :ls_plancode)
- AND (u_getbar.mtrlcuscode = :ls_mtrlcuscode)
- AND (u_getbar.Location = :ls_location)
- And (u_mtrlware_mx.inflag = 0);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '查询可替换信息失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- UPDATE u_mtrlware_mx SET
- getbarid = :ll_r_getbarid,
- scid = :ll_r_scid,
- orderid = :ll_r_orderid
- Where barcode = :ls_barcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更改当前条码的条码生成单失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- UPDATE u_mtrlware_mx SET
- getbarid = :ll_getbarid,
- scid = :ll_scid,
- orderid = :ll_orderid
- Where barcode = :ls_r_barcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更改被替换条码的条码生成单失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- ll_scid = ll_r_scid
- ll_orderid = ll_r_orderid
-
- END IF
-
- END IF
-
- // SELECT TOP 1 u_ordermtrl_workgroup_barcode.barcode
- // INTO :ls_p_barcode
- // FROM u_ordermtrl_workgroup_barcode INNER JOIN
- // u_ordermtrl_workgroup_barcode AS u_ordermtrl_workgroup_barcode_p ON
- // u_ordermtrl_workgroup_barcode.scid = u_ordermtrl_workgroup_barcode_p.scid AND
- // u_ordermtrl_workgroup_barcode.orderid = u_ordermtrl_workgroup_barcode_p.orderid AND
- // u_ordermtrl_workgroup_barcode.swkpid = u_ordermtrl_workgroup_barcode_p.owkpid AND
- // u_ordermtrl_workgroup_barcode.barcode = u_ordermtrl_workgroup_barcode_p.barcode
- // WHERE (u_ordermtrl_workgroup_barcode_p.oflag = 1)
- // AND (u_ordermtrl_workgroup_barcode_p.ptflag = 1)
- // AND (u_ordermtrl_workgroup_barcode.swkpid = :ll_wrkgrpid)
- // AND (u_ordermtrl_workgroup_barcode.scid = :ll_scid)
- // AND (u_ordermtrl_workgroup_barcode.orderid = :ll_orderid)
- // And (u_ordermtrl_workgroup_barcode.ptflag = 0);
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg += '查询最后工组未配对部件条码失败,'+sqlca.SQLErrText
- // GOTO _failandnext
- // END IF
- //
- // UPDATE u_ordermtrl_workgroup_barcode SET sflag = 1, ptflag = 1
- // WHERE barcode = :ls_p_barcode
- // AND swkpid = :ll_wrkgrpid
- // AND orderid = :ll_orderid
- // AND scid = :ll_scid
- // And ptflag = 0;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg += '更新最后工组未配对部件条码失败,'+sqlca.SQLErrText
- // GOTO _failandnext
- // END IF
- //
- // IF sqlca.SQLNRows <> 1 THEN
- // arg_msg += '更新最后工组未配对部件条码失败,条码已被更新'
- // GOTO _failandnext
- // END IF
-
- SELECT isnull(MIN(finishqty),0)
- INTO :ld_maxqty
- FROM u_OrderMtrl_workgroup
- WHERE (scid = :ll_scid)
- AND (orderid = :ll_orderid)
- And (owrkGrpid = :ll_wrkgrpid);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '查询最后工组可完成数失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- IF ld_maxqty > 0 THEN
- SELECT finishqty
- INTO :ld_finishqty
- FROM u_OrderMtrl_workgroup
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND wrkgrpid = :ll_wrkgrpid
- And iflast = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '查询最后工组已完成数失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- IF ld_finishqty + ld_packqty > ld_maxqty THEN
- arg_msg += '上工组未配套,上工组配套数:' + String(ld_maxqty,'#,##0.#####') + ',已完成数:' + String(ld_finishqty,'#,##0.#####') + ',本次完成数:' + String(ld_packqty,'#,##0.#####')
- GOTO _failandnext
- END IF
-
- END IF
-
- UPDATE u_OrderMtrl_workgroup_tree
- SET u_ordermtrl_workgroup_tree.sqty = case when u_ordermtrl_workgroup_tree.sqty + :ld_packqty > u_ordermtrl_workgroup_tree.orderqty then u_ordermtrl_workgroup_tree.orderqty else u_ordermtrl_workgroup_tree.sqty + :ld_packqty END ,
- u_ordermtrl_workgroup_tree.sdate = :ldt_opdate
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND iflast = 1
- And u_OrderMtrl_workgroup_tree.sqty < u_OrderMtrl_workgroup_tree.orderqty;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新最后工组已完成数失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- arg_mxbt++
- arg_barcode[arg_mxbt] = ls_barcode
- arg_wrkgrpid[arg_mxbt] = ll_wrkgrpid
- arg_opdate[arg_mxbt] = ldt_opdate
-
- END IF
-
-
- _okandnext:
-
- IF li_kind <> 2 THEN
-
- // SELECT sum(s_qty.minsqty)
- // INTO :ld_addqty
- // FROM u_OrderMtrl_workgroup INNER JOIN
- // (SELECT scid, orderid, swkpid, MIN(sqty) AS minsqty
- // FROM (SELECT scid, orderid, swkpid, SUM(sflag) AS sqty, relname,
- // partname
- // FROM u_ordermtrl_workgroup_barcode
- // WHERE sflag = 1
- // AND CONVERT(varchar(10), sdate, 120) = CONVERT(varchar(10), :ldt_fdate, 120)
- // GROUP BY scid, orderid, swkpid, relname, partname) a
- // GROUP BY scid, orderid, swkpid) s_qty ON
- // u_OrderMtrl_workgroup.scid = s_qty.scid AND
- // u_OrderMtrl_workgroup.orderid = s_qty.orderid AND
- // u_OrderMtrl_workgroup.wrkGrpid = s_qty.swkpid
- // WHERE (u_OrderMtrl_workgroup.scid = :ll_scid)
- // AND (u_OrderMtrl_workgroup.orderid = :ll_orderid)
- // AND (u_OrderMtrl_workgroup.wrkgrpid = :ll_wrkgrpid)
- // And (u_OrderMtrl_workgroup.iflast = 0);
- // IF sqlca.SQLCode <> 0 THEN
- // ld_addqty = 0
- // END IF
- //
- // IF ld_addqty > 0 THEN
- // UPDATE u_OrderMtrl_workgroup_date
- // SET fqty = :ld_addqty
- // WHERE scid = :ll_scid
- // AND orderid = :ll_orderid
- // AND wrkgrpid = :ll_wrkgrpid
- // And fdate = :ldt_fdate;
- // IF sqlca.SQLCode = 0 THEN
- // IF sqlca.SQLNRows = 0 THEN
- // INSERT INTO u_OrderMtrl_workgroup_date
- // (scid,orderid,wrkgrpid,fdate,fqty)
- // VALUES
- // (:ll_scid,:ll_orderid,:ll_wrkgrpid,:ldt_fdate,:ld_addqty);
- // IF sqlca.SQLCode <> 0 THEN
- // ROLLBACK;
- // arg_msg = '更新工组当天进度失败,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- // END IF
- // END IF
- // ELSE
- // ROLLBACK;
- // arg_msg = '更新工组当天进度失败,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- // END IF
- // END IF
- IF li_kind = 0 THEN
- FOR ls_p = 1 To ll_mxbt
- IF ll_orderid = ll_orderid_arr[ls_p] And ll_scid = ll_scid_arr[ls_p] THEN
- GOTO _find_wrk
- END IF
- NEXT
- ll_mxbt++
- ls_orderstr_arr[ll_mxbt] = String(ll_orderid)+'_'+String(ll_scid)
- ll_orderid_arr[ll_mxbt] = ll_orderid
- ll_scid_arr[ll_mxbt] = ll_scid
-
- _find_wrk:
- FOR ls_p = 1 To ll_mxbt_wrk
- IF ll_orderid = ll_orderid_wkp[ls_p] And ll_scid = ll_scid_wkp[ls_p] And ll_wrkgrpid = ll_wrkgrpid_arr[ls_p] THEN
- GOTO _find_end
- END IF
- NEXT
- ll_mxbt_wrk++
- ll_orderid_wkp[ll_mxbt_wrk] = ll_orderid
- ll_scid_wkp[ll_mxbt_wrk] = ll_scid
- ll_wrkgrpid_arr[ll_mxbt_wrk] = ll_wrkgrpid
-
- _find_end:
- END IF
-
-
-
-
- //
- // UPDATE u_OrderMtrl_workgroup
- // SET u_OrderMtrl_workgroup.finishqty = s_qty.minsqty
- // FROM u_OrderMtrl_workgroup INNER JOIN
- // (SELECT scid, orderid, swkpid, workgroupid,MIN(sqty) AS minsqty
- // FROM (SELECT scid, orderid, swkpid,workgroupid, SUM(sflag) AS sqty, relname,
- // partname
- // FROM u_ordermtrl_workgroup_barcode
- // GROUP BY scid, orderid, swkpid, relname, partname,workgroupid) a
- // GROUP BY scid, orderid, swkpid,workgroupid) s_qty ON
- // u_OrderMtrl_workgroup.scid = s_qty.scid AND
- // u_OrderMtrl_workgroup.orderid = s_qty.orderid AND
- // u_OrderMtrl_workgroup.wrkGrpid = s_qty.swkpid and
- // u_OrderMtrl_workgroup.workgroupid = s_qty.workgroupid
- // WHERE (u_OrderMtrl_workgroup.scid = :ll_scid)
- // AND (u_OrderMtrl_workgroup.orderid = :ll_orderid)
- // And (u_OrderMtrl_workgroup.iflast = 0);
- // IF sqlca.SQLCode <> 0 THEN
- // ROLLBACK;
- // arg_msg = '更新工组进度失败,'+sqlca.SQLErrText
- // ll_fail++
- // CONTINUE
- // END IF
-
- ELSE
- IF ld_packqty > 0 THEN
- UPDATE u_OrderMtrl_workgroup_date
- SET fqty = fqty + :ld_packqty
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- AND wrkgrpid = :ll_wrkgrpid
- And fdate = :ldt_fdate;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_OrderMtrl_workgroup_date
- (scid,orderid,wrkgrpid,fdate,fqty)
- VALUES
- (:ll_scid,:ll_orderid,:ll_wrkgrpid,:ldt_fdate,:ld_packqty);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新工组当天进度失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
- END IF
- ELSE
- arg_msg += '更新工组当天进度失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
- END IF
-
- UPDATE u_OrderMtrl_workgroup
- SET u_OrderMtrl_workgroup.finishqty = case when u_OrderMtrl_workgroup.finishqty + :ld_packqty > u_OrderMtrl_workgroup.orderqty then u_OrderMtrl_workgroup.orderqty else u_OrderMtrl_workgroup.finishqty + :ld_packqty END
- FROM u_OrderMtrl_workgroup INNER JOIN
- u_sc_workgroup ON
- u_OrderMtrl_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid
- WHERE (u_OrderMtrl_workgroup.scid = :ll_scid)
- AND (u_OrderMtrl_workgroup.orderid = :ll_orderid)
- AND (u_OrderMtrl_workgroup.iflast = 1)
- AND (u_sc_workgroup.jdtype = 6)
- And (u_OrderMtrl_workgroup.finishqty < u_OrderMtrl_workgroup.orderqty);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新工组进度失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
- END IF
-
- UPDATE u_OrderMtrl_workgroup
- SET finishflag = 1,finishdate = :server_dt
- WHERE orderid = :ll_orderid
- AND scid = :ll_scid
- And orderqty <= finishqty + stopqty;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新工组完成状态失败,'+sqlca.SQLErrText
- GOTO _failandnext
- END IF
-
- COMMIT;
- ll_suc++
- CONTINUE
-
- _failandnext:
- ROLLBACK;
- ll_fail++
-
- UPDATE u_order_wkp_barcode_pda
- SET flag = 2
- WHERE barcode = :ls_barcode
- AND wrkgrpid = :ll_wrkgrpid
- And Kind = :li_kind;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg += '更新条码错误状态失败,'+sqlca.SQLErrText
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
-
-
- CONTINUE
-
-
- NEXT
- FOR ll_k = 1 To ll_mxbt_wrk
- IF uof_workgroup_barcode_pt(ll_scid_wkp[ll_k], ll_orderid_wkp[ll_k], ll_wrkgrpid_arr[ll_k], ls_msg, True) <> 1 THEN
- arg_msg += '工组自动配套失败,' + ls_msg
- END IF
- NEXT
- IF arg_finishbarcode THEN
- IF sc_task.uf_finishbarcode(arg_wrkgrpid, arg_barcode, arg_opdate, ls_msg) <> 1 THEN
- rslt = 0
- arg_msg += '生成工序完工单失败,' + ls_msg
- GOTO ext
- END IF
- END IF
- ext:
- Destroy sc_task
- Destroy ds_order_wkp
- Destroy ds_update_wrk
- Destroy ds_relname
- Destroy ds_mx
- Destroy ds_pda
- arg_cnt = ll_suc
- arg_failcnt = ll_fail
- RETURN rslt
- end function
- public function integer uof_order_wkp_barcode_pda (boolean arg_replace, boolean arg_finishbarcode, ref string arg_msg, ref long arg_cnt, ref long arg_failcnt);//====================================================================
- // 事件: .f_order_wkp_barcode_pda()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- // value boolean arg_replace 优先完成时间较早的计划
- // reference string arg_msg
- // reference long arg_cnt
- // reference long arg_failcnt
- //--------------------------------------------------------------------
- // 返回: integer
- //--------------------------------------------------------------------
- // 作者: lwl 日期: 2012年02月24日
- //--------------------------------------------------------------------
- // LONGJOE
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- Int rslt = 1
- s_p_barcode_pda arr_bars[]
- String arg_barcode[]
- Long arg_wrkgrpid[]
- DateTime arg_opdate[]
- Long j = 0
- uo_partbarcode uo_bar
- uo_bar = Create uo_partbarcode
- uo_sc_task_finish sc_task
- sc_task = Create uo_sc_task_finish
- IF pf_get_barcodes_notflag(Ref arr_bars, Ref arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- arg_cnt = 0
- arg_failcnt = 0
- Long i
- String ls_msg
- FOR i = 1 To UpperBound(arr_bars)
- UPDATE u_order_wkp_barcode_pda
- SET flag = 1
- WHERE barcode = :arr_bars[i].barcode
- AND wrkgrpid = :arr_bars[i].wrkgrpid
- AND kind = :arr_bars[i].kind
- And flag = :arr_bars[i].flag;
- IF sqlca.SQLCode <> 0 THEN
- ls_msg = '更新PDA部件条码标记失败,' + sqlca.SQLErrText
- GOTO _failt
- END IF
-
- IF sqlca.SQLNRows <= 0 THEN
- ls_msg = '条码被其它任务占用,本任务终止'
- GOTO _failt
- END IF
-
- IF arr_bars[i].Kind = 0 THEN
- IF uo_bar.uf_finish_barcode(arr_bars[i].wrkgrpid, arr_bars[i].barcode, arr_bars[i].opemp, arr_bars[i].opdate, arr_bars[i].workgroupid, arg_replace, Ref ls_msg, False) <> 1 THEN
- GOTO _failt
- END IF
- ELSEIF arr_bars[i].Kind = 1 THEN
- IF uo_bar.uf_o_barcode(arr_bars[i].wrkgrpid, arr_bars[i].barcode, arr_bars[i].opemp, arr_bars[i].opdate, Ref ls_msg, False) <> 1 THEN
- GOTO _failt
- END IF
- ELSEIF arr_bars[i].Kind = 2 THEN
- IF uo_bar.uf_finish_barcode_last(arr_bars[i].wrkgrpid, arr_bars[i].barcode, arr_bars[i].opdate, arg_replace, Ref ls_msg, False) <> 1 THEN
- GOTO _failt
- END IF
- END IF
-
- arg_cnt++
- COMMIT;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '事务提交失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF arg_finishbarcode And (arr_bars[i].Kind = 0 Or arr_bars[i].Kind = 2) THEN
- j++
- arg_barcode[j] = arr_bars[i].barcode
- arg_wrkgrpid[j] = arr_bars[i].wrkgrpid
- arg_opdate[j] = arr_bars[i].opdate
- END IF
-
- CONTINUE
-
- _failt:
- arg_failcnt ++
- ROLLBACK;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '事务回滚失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- arg_msg += ls_msg
- UPDATE u_order_wkp_barcode_pda
- SET errmsg = :ls_msg,
- flag = 2
- WHERE barcode = :arr_bars[i].barcode
- AND wrkgrpid = :arr_bars[i].wrkgrpid
- And Kind = :arr_bars[i].Kind
- And flag = :arr_bars[i].flag;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新PDA部件条码错误信息失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- COMMIT;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '事务提交失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- NEXT
- ext:
- IF arg_finishbarcode AND UpperBound(arg_barcode) > 0 THEN
- IF sc_task.uf_finishbarcode(arg_wrkgrpid, arg_barcode, arg_opdate, ls_msg) <> 1 THEN
- rslt = 0
- arg_msg = '生成工序完工单失败,' + ls_msg
- END IF
- END IF
- Destroy uo_bar
- Destroy sc_task
- RETURN rslt
- end function
- private function integer pf_get_barcodes_notflag (ref s_p_barcode_pda arg_bars[], ref string arg_msg);// 获取所有未处理的条码
- Int rslt = 1
- s_p_barcode_pda arr_bars[]
- Long i = 0
- String barcode,opemp
- Long wrkgrpid,Kind,flag,workgroupid
- DateTime opdate
- DECLARE cur1 CURSOR FOR SELECT barcode,wrkgrpid,kind,flag,opemp,opdate,workgroupid
- FROM u_order_wkp_barcode_pda
- Where flag <> 1;
- OPEN cur1;
- FETCH cur1 Into :barcode,:wrkgrpid,:Kind,:flag,:opemp,:opdate,:workgroupid;
- DO WHILE sqlca.SQLCode = 0
- i++
- arr_bars[i].barcode = barcode
- arr_bars[i].wrkgrpid = wrkgrpid
- arr_bars[i].Kind = Kind
- arr_bars[i].flag = flag
- arr_bars[i].opemp = opemp
- arr_bars[i].opdate = opdate
- arr_bars[i].workgroupid = workgroupid
- FETCH cur1 Into :barcode,:wrkgrpid,:Kind,:flag,:opemp,:opdate,:workgroupid;
- LOOP
- CLOSE cur1;
- arg_bars = arr_bars
- RETURN rslt
- end function
- public function integer uf_cmpl_cost_balcdateint (ref string arg_msg);//If MessageBox('确认','本功能将按各仓库最近一次结存数据为目标重算,为确保重算成本的准确,请尽量把各仓库同时结存'+'~r~n'+'确定要继续执行本功能?',question!,yesno!) = 2 Then Return
- datastore ds_warebalc
- ds_warebalc = Create datastore
- ds_warebalc.DataObject = 'ds_cmpl_cost_balcdateint_warebalc'
- ds_warebalc.SetTransObject(sqlca)
- datastore ds_mtrlcost
- ds_mtrlcost = Create datastore
- ds_mtrlcost.DataObject = 'ds_rp_mtrlprice'
- ds_mtrlcost.SetTransObject(sqlca)
- datastore ds_inwaremx
- ds_inwaremx = Create datastore
- ds_inwaremx.DataObject = 'ds_inwaremx_cmpl_balcdateint'
- ds_inwaremx.SetTransObject(sqlca)
- Int li_status_step = 0 //当前步骤
- s_mtrlprice_mx arg_s_mx[],arg_s_empty[]
- Long ll_i,ll_j
- Long ll_storageid,ll_balcdateint,ll_mtrlid,ll_sptid,ll_scid,ll_mtrlwareid
- String ls_status,ls_woodcode,ls_pcode,ls_plancode,ls_mtrlcuscode,ls_location
- Decimal ld_inqty,ld_inamt,ld_cost,ld_bgqty,ld_bgamt
- Decimal ld_inqty_sum,ld_inamt_sum
- String ls_storagename,ls_mtrlcode,ls_mtrlname
- //String arg_msg
- Int rslt
- Int li_statusflag,li_woodcodeflag,li_pcodeflag
- String ls_status_config,ls_woodcode_config,ls_pcode_config
- String ls_pfcode
- Decimal ld_price,ld_wfjgprice,ld_outcost,ld_wageprice,ld_otherprice,ld_eqprice,ld_outcost_self
- Long sumdate
- Int li_dec
- String ls_msg
- Long ll_fail
- Long ll_row
- String ls_findstr
- //开始
- //ins_ifstart = 1
- //p_1.PictureName = 'waiting.jpg'
- //st_per_1.Visible = False
- //hpb_1.Visible = False
- //st_msg_1.Visible = False
- //p_2.PictureName = 'waiting.jpg'
- //st_per_2.Visible = False
- //hpb_2.Visible = False
- //st_msg_2.Visible = False
- //p_3.PictureName = 'waiting.jpg'
- //st_per_3.Visible = False
- //st_msg_3.Visible = False
- //p_4.PictureName = 'waiting.jpg'
- //st_per_4.Visible = False
- //hpb_4.Visible = False
- //st_msg_4.Visible = False
- //
- //p_5.PictureName = 'waiting.jpg'
- //st_per_5.Visible = False
- //st_msg_5.Visible = False
- li_dec = 2
- uo_cmplcost uo_cmpl
- uo_cmpl = Create uo_cmplcost
- rslt = 1
- //1.计算采购物料成本价
- li_status_step = 1
- ds_warebalc.Retrieve(2)
- ds_inwaremx.Retrieve(2)
- //p_1.PictureName = 'doing.jpg'
- //hpb_1.MinPosition = 0
- //hpb_1.MaxPosition = ds_warebalc.RowCount()
- //hpb_1.Position = 0
- //
- //hpb_1.Visible = True
- //st_per_1.Visible = True
- For ll_i = 1 To ds_warebalc.RowCount()
- ll_storageid = ds_warebalc.Object.storageid[ll_i]
- ll_balcdateint = ds_warebalc.Object.balcdateint[ll_i]
- ll_mtrlid = ds_warebalc.Object.mtrlid[ll_i]
- ll_sptid = ds_warebalc.Object.sptid[ll_i]
- ls_status = ds_warebalc.Object.status[ll_i]
- ls_woodcode = ds_warebalc.Object.woodcode[ll_i]
- ls_pcode = ds_warebalc.Object.pcode[ll_i]
- ls_plancode = ds_warebalc.Object.plancode[ll_i]
- ls_mtrlcuscode = ds_warebalc.Object.mtrlcuscode[ll_i]
- ls_location = ds_warebalc.Object.Location[ll_i]
- ld_bgqty = ds_warebalc.Object.bgqty[ll_i]
- ld_bgamt = ds_warebalc.Object.bgamt[ll_i]
- ll_scid = ds_warebalc.Object.scid[ll_i]
- ls_storagename = ds_warebalc.Object.storagename[ll_i]
- ls_mtrlcode = ds_warebalc.Object.mtrlcode[ll_i]
- ls_mtrlname = ds_warebalc.Object.mtrlname[ll_i]
- ll_mtrlwareid = ds_warebalc.Object.mtrlwareid[ll_i]
-
- ls_findstr = 'balcdateint = '+String(ll_balcdateint) + ' and storageid = '+String(ll_storageid)
- ls_findstr = ls_findstr + ' and mtrlid = '+String(ll_mtrlid) + ' and status = "'+ls_status+'" '
- ls_findstr = ls_findstr + ' and woodcode = "'+ ls_woodcode + '" and pcode = "'+ls_pcode+'" '
- ls_findstr = ls_findstr + ' and plancode = "'+ ls_plancode + '" and mtrlcuscode = "'+ls_mtrlcuscode+'" '
- ls_findstr = ls_findstr + ' and location = "'+ ls_location + '" and scid = '+String(ll_scid)
-
-
- ll_row = ds_inwaremx.Find(ls_findstr,1,ds_inwaremx.RowCount())
-
- If ll_row > 0 Then
- ld_inamt = ds_inwaremx.Object.inamt[ll_row]
- ld_inqty = ds_inwaremx.Object.inqty[ll_row]
-
- ds_inwaremx.DeleteRow(ll_row)
- Else
- ld_inamt = 0
- ld_inqty = 0
- End If
-
- // SELECT sum(u_inwaremx.cost * u_inwaremx.qty),
- // sum(u_inwaremx.qty)
- // INTO :ld_inamt,
- // :ld_inqty
- // FROM u_inware INNER JOIN
- // u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- // u_inware.inwareid = u_inwaremx.inwareid
- // WHERE (u_inware.balcdateint = :ll_balcdateint)
- // AND (u_inware.thflag = 0)
- // AND (u_inware.storageid = :ll_storageid)
- // AND (u_inwaremx.mtrlid = :ll_mtrlid)
- // AND (u_inwaremx.status = :ls_status)
- // AND (u_inwaremx.woodcode = :ls_woodcode)
- // AND (u_inwaremx.pcode = :ls_pcode)
- // AND (u_inwaremx.plancode = :ls_plancode)
- // AND (u_inwaremx.mtrlcuscode = :ls_mtrlcuscode)
- // AND (u_inwaremx.Location = :ls_location)
- // And (u_inware.scid = :ll_scid);
- // IF sqlca.SQLCode <> 0 THEN
- // ld_inamt = 0
- // ld_inqty = 0
- // END IF
-
- If IsNull(ld_inamt) Then ld_inamt = 0
- If IsNull(ld_inqty) Then ld_inqty = 0
-
- If ld_bgamt < 0 Then
- If ld_inqty > 0 Then
- ld_bgamt = ld_bgqty * (ld_inamt / ld_inqty)
- Else
- Select top 1 cost
- Into :ld_cost
- From u_mtrlware
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode <> 0 Then
- ld_cost = 0
- End If
-
- ld_bgamt = ld_bgqty * ld_cost
- End If
- End If
-
- If ld_bgqty + ld_inqty <> 0 Then
- ld_cost = (ld_bgamt + ld_inamt) / (ld_bgqty + ld_inqty)
- End If
-
- If ld_bgqty + ld_inqty <> 0 Then
- ld_cost = (ld_bgamt + ld_inamt) / (ld_bgqty + ld_inqty)
- End If
-
- If (ld_bgqty + ld_inqty = 0) Or ld_cost < 0 Then
- Select top 1 cost
- Into :ld_cost
- From u_mtrlware
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode <> 0 Then
- ld_cost = 0
- End If
- End If
-
- If IsNull(ld_cost) Then ld_cost = 0
-
- Update u_inwaremx
- Set u_inwaremx.cost = :ld_cost
- From u_inware Inner JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid And
- u_inware.inwareid = u_inwaremx.inwareid
- Where (u_inware.balcdateint = :ll_balcdateint)
- And (u_inware.thflag = 1)
- And (u_inware.storageid = :ll_storageid)
- And (u_inwaremx.mtrlid = :ll_mtrlid)
- And (u_inwaremx.status = :ls_status)
- And (u_inwaremx.woodcode = :ls_woodcode)
- And (u_inwaremx.pcode = :ls_pcode)
- And (u_inwaremx.plancode = :ls_plancode)
- And (u_inwaremx.mtrlcuscode = :ls_mtrlcuscode)
- And (u_inwaremx.Location = :ls_location)
- And (u_inware.scid = :ll_scid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新退货单成本价失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
- //更新当前仓库结存表的期间进仓
- Select isnull(sum(u_inwaremx.qty),0),
- isnull(sum(round(u_inwaremx.cost * u_inwaremx.qty,2)),0)
- Into :ld_inqty_sum,
- :ld_inamt_sum
- From u_inware Inner JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid And
- u_inware.inwareid = u_inwaremx.inwareid
- Where (u_inware.balcdateint = :ll_balcdateint)
- And (u_inware.storageid = :ll_storageid)
- And (u_inwaremx.mtrlid = :ll_mtrlid)
- And (u_inwaremx.status = :ls_status)
- And (u_inwaremx.woodcode = :ls_woodcode)
- And (u_inwaremx.pcode = :ls_pcode)
- And (u_inwaremx.plancode = :ls_plancode)
- And (u_inwaremx.mtrlcuscode = :ls_mtrlcuscode)
- And (u_inwaremx.Location = :ls_location)
- And (u_inware.scid = :ll_scid);
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '查询期间进仓失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
-
- // ld_inamt_sum = Round(ld_inqty * ld_cost,2)
- // ld_inqty_sum = ld_inqty
-
- If IsNull(ld_inqty_sum) Then ld_inqty_sum = 0
- If IsNull(ld_inamt_sum) Then ld_inamt_sum = 0
-
-
- Update u_warebalc
- Set u_warebalc.incqty = :ld_inqty_sum,
- u_warebalc.incamt = :ld_inamt_sum,
- u_warebalc.bgamt = :ld_bgamt
- Where u_warebalc.scid = :ll_scid
- And u_warebalc.balcdateint = :ll_balcdateint
- And u_warebalc.mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新结存表期间进数量金额失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
- If ld_bgqty + ld_inqty_sum <> 0 Then
- ld_cost = (ld_bgamt + ld_inamt_sum) / (ld_bgqty + ld_inqty_sum)
-
- If ld_cost > 0 Then
- Update u_mtrlware
- Set cost = :ld_cost,
- wareamt = :ld_cost * noallocqty
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新库存成本价失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- End If
-
- //更新当前仓库所有出仓明细的成本价
- Update u_outwaremx
- Set u_outwaremx.cost = :ld_cost,
- u_outwaremx.costamt = :ld_cost * qty
- From u_outwaremx Inner JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid And
- u_outwaremx.outwareid = u_outware.outwareid
- Where u_outwaremx.scid = :ll_scid
- And u_outwaremx.mtrlwareid = :ll_mtrlwareid
- And u_outware.balcdateint = :ll_balcdateint;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新出仓单成本价失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
-
- Update u_warebalc
- Set u_warebalc.desamt = v_outwaremx.desamt
- From u_warebalc Inner JOIN
- (Select u_outwaremx.scid, u_outwaremx.mtrlwareid, u_outware.balcdateint,
- SUM(u_outwaremx.costamt) AS desamt
- From u_outware Inner JOIN
- u_outwaremx ON u_outware.scid = u_outwaremx.scid And
- u_outware.outwareid = u_outwaremx.outwareid
- Where u_outwaremx.scid = :ll_scid
- And u_outwaremx.mtrlwareid = :ll_mtrlwareid
- And u_outware.balcdateint = :ll_balcdateint
- Group By u_outwaremx.scid, u_outwaremx.mtrlwareid, u_outware.balcdateint)
- v_outwaremx ON u_warebalc.scid = v_outwaremx.scid And
- u_warebalc.balcdateint = v_outwaremx.balcdateint And
- u_warebalc.mtrlwareid = v_outwaremx.mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新结存表期间出金额失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
- //重算一次结余数量,结余金额,并得出新的成本价
- Update u_warebalc
- Set balcqty = bgqty + incqty - desqty,
- balcamt = bgamt + incamt - desamt
- Where u_warebalc.scid = :ll_scid
- And u_warebalc.balcdateint = :ll_balcdateint
- And u_warebalc.mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新结存表结余数量金额失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
- Commit;
-
- // hpb_1.Position = ll_i
- // st_per_1.Text = String(ll_i/ds_warebalc.RowCount(),'0.0%')
- Next
- //hpb_1.Visible = False
- //st_per_1.Visible = False
- //p_1.PictureName = 'done.jpg'
- //2.统计产品最新成本
- li_status_step = 2
- //p_2.PictureName = 'doing.jpg'
- Insert Into u_mtrlprice_sum
- (mtrlid,
- status,
- woodcode,
- pcode,
- pfcode,
- sumdate)
- Select u_mtrl_configure.Mtrlid,
- u_mtrl_configure.name,
- '' AS woodcode,
- '' AS pcode,
- u_mtrl_configure.name ,
- 0
- From u_mtrl_configure Inner JOIN
- u_mtrldef ON u_mtrl_configure.Mtrlid = u_mtrldef.mtrlid
- Where (u_mtrldef.statusflag = 2) And (Not Exists
- (Select *
- From u_mtrlprice_sum
- Where mtrlid = u_mtrl_configure.mtrlid And status = u_mtrl_configure.name And
- woodcode = '' And pcode = ''));
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '插入新增的组合配置到统计列表失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Insert Into u_mtrlprice_sum
- (mtrlid,
- status,
- woodcode,
- pcode,
- pfcode,
- sumdate)
- Select u_mtrldef.mtrlid,
- CASE statusflag WHEN 4 THEN status_config ELSE '' End AS status,
- CASE woodcodeflag WHEN 4 THEN woodcode_config ELSE '' End AS woodcode,
- CASE pcodeflag WHEN 4 THEN pcode_config ELSE '' End AS pcode,
- u_mtrl_pf.pfcode,
- 0
- From u_mtrldef Inner JOIN
- u_mtrl_pf ON u_mtrldef.mtrlid = u_mtrl_pf.Mtrlid
- Where (u_mtrldef.statusflag <> 2) And (u_mtrl_pf.Ifdft = 1) And (Not Exists
- (Select *
- From u_mtrlprice_sum
- Where mtrlid = u_mtrldef.mtrlid And
- status = CASE statusflag WHEN 4 THEN status_config ELSE '' End And
- woodcode = CASE woodcodeflag WHEN 4 THEN woodcode_config ELSE '' End
- And pcode = Case pcodeflag WHEN 4 Then pcode_config Else '' End));
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入新增的产品及物料到统计列表失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Insert Into u_mtrlprice_sum
- (mtrlid,
- status,
- woodcode,
- pcode,
- pfcode,
- sumdate)
- Select DISTINCT
- u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- CASE u_mtrldef.statusflag WHEN 2 THEN u_Order_ml.status_mode ELSE u_order_ml.pfcode
- End AS pfcode,
- 0
- From u_Order_ml Inner JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- Where (Not Exists
- (Select *
- From u_mtrlprice_sum
- Where mtrlid = u_order_ml.mtrlid And status = u_Order_ml.status_mode And
- woodcode = u_Order_ml.woodcode And pcode = u_Order_ml.pcode)) And
- (u_Order_ml.status <> 0) And (u_mtrldef.statusflag = 4 Or u_mtrldef.woodcodeflag = 4 Or u_mtrldef.pcodeflag = 4);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入生产中涉及到的新部件选配产品到统计列表失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Commit;
- ds_mtrlcost.Retrieve(0,'',1)
- sumdate = Year(Date(Today())) * 10000 + Month(Date(Today())) * 100 + Day(Date(Today()))
- /// //
- //hpb_2.MinPosition = 0
- //hpb_2.MaxPosition = ds_mtrlcost.RowCount()
- //hpb_2.Position = 0
- //
- //hpb_2.Visible = True
- //st_per_2.Visible = True
- //
- For ll_i = 1 To ds_mtrlcost.RowCount()
- // hpb_2.Position = ll_i
- // st_per_2.Text = String(ll_i/ds_mtrlcost.RowCount(),'0.0%')
-
-
-
- ll_mtrlid = ds_mtrlcost.Object.mtrlid[ll_i]
- ls_mtrlcode = ds_mtrlcost.Object.mtrlcode[ll_i]
- ls_pfcode = ds_mtrlcost.Object.u_mtrlprice_sum_pfcode[ll_i]
- ll_scid = ds_mtrlcost.Object.u_mtrldef_scid[ll_i]
- ls_status = ds_mtrlcost.Object.status[ll_i]
- ls_woodcode = ds_mtrlcost.Object.woodcode[ll_i]
- ls_pcode = ds_mtrlcost.Object.pcode[ll_i]
-
- li_statusflag = ds_mtrlcost.Object.statusflag[ll_i]
- li_woodcodeflag = ds_mtrlcost.Object.woodcodeflag[ll_i]
- li_pcodeflag = ds_mtrlcost.Object.pcodeflag[ll_i]
- ls_status_config = ds_mtrlcost.Object.status_config[ll_i]
- ls_woodcode_config = ds_mtrlcost.Object.woodcode_config[ll_i]
- ls_pcode_config = ds_mtrlcost.Object.pcode_config[ll_i]
-
-
- If ls_pfcode = '' Then Continue
-
- ld_price = 0
- ld_wfjgprice = 0
- ld_outcost_self = 0
- ld_outcost = 0
- ld_wageprice = 0
- ld_otherprice = 0
- ld_eqprice = 0
-
- arg_msg = ''
-
- uo_cmpl.deep = 0
- uo_cmpl.ifcmpl_1 = True
- uo_cmpl.ins_cnt = 0
-
- arg_s_mx = arg_s_empty
-
- If (li_statusflag = 4 And ls_status <> ls_status_config Or &
- li_woodcodeflag = 4 And ls_woodcode <> ls_woodcode_config Or &
- li_pcodeflag = 4 And ls_pcode <> ls_pcode_config) Then
-
- If uo_cmpl.uof_get_cost_dz(1,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_price,ld_wfjgprice,ld_outcost,ld_wageprice,ld_eqprice,arg_msg,arg_s_mx) = 0 Then
- arg_msg = '物料:'+ls_mtrlcode+'取成本失败,'+arg_msg
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Continue
-
- ld_price = 0
- ld_wfjgprice = 0
- ld_outcost = 0
- ld_wageprice = 0
- ld_eqprice = 0
- End If
- Else
- If uo_cmpl.uof_get_cost(1,ll_scid,ll_mtrlid,ls_mtrlcode,ls_pfcode,1,1,ld_price,ld_wfjgprice,ld_outcost,ld_wageprice,ld_eqprice,0,arg_msg,arg_s_mx,1) = 0 Then
- arg_msg = '物料:'+ls_mtrlcode+'取成本失败,'+arg_msg
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Continue
-
- ld_price = 0
- ld_wfjgprice = 0
- ld_outcost = 0
- ld_wageprice = 0
- ld_eqprice = 0
- End If
- End If
-
- ld_price = Round(ld_price,li_dec)
- ld_wfjgprice = Round(ld_wfjgprice,li_dec)
- ld_outcost = Round(ld_outcost,li_dec)
- ld_wageprice = Round(ld_wageprice,li_dec)
- ld_eqprice = Round(ld_eqprice,li_dec)
-
-
- Select top 1 otherprice Into :ld_otherprice
- From u_mtrlprice_sum
- Where mtrlid = :ll_mtrlid
- And pfcode = :ls_pfcode
- And sumdate < :sumdate
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- Order By sumdate Desc;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '物料:'+ls_mtrlcode+'取上次附加成本失败,'+arg_msg
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Continue
- End If
-
- If IsNull(ld_otherprice) Then ld_otherprice = 0
-
-
- Update u_mtrlprice_sum
- Set price = :ld_price,
- cost = :ld_price + :ld_wfjgprice + :ld_wageprice + :ld_outcost + :ld_otherprice + :ld_eqprice,
- wfjgprice = :ld_wfjgprice,
- jgprice = :ld_wageprice,
- outcost = :ld_outcost,
- otherprice = :ld_otherprice,
- eqprice = :ld_eqprice,
- dscrp = :arg_msg,
- sumdate = :sumdate
- Where mtrlid = :ll_mtrlid
- And pfcode = :ls_pfcode
- And (sumdate = :sumdate Or sumdate = 0 )
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode;
- If sqlca.SQLCode = 0 Then
- If sqlca.SQLNRows = 0 Then
- Insert Into u_mtrlprice_sum
- (sumdate,
- pfcode,
- mtrlid,
- price,
- cost,
- wfjgprice,
- jgprice,
- eqprice,
- outcost,
- otherprice,
- dscrp,
- status,
- woodcode,
- pcode)
- Values(:sumdate,
- :ls_pfcode,
- :ll_mtrlid,
- :ld_price,
- :ld_price + :ld_wfjgprice + :ld_wageprice + :ld_outcost + :ld_eqprice,
- :ld_wfjgprice,
- :ld_wageprice,
- :ld_eqprice,
- :ld_outcost,
- :ld_otherprice,
- :arg_msg,
- :ls_status,
- :ls_woodcode,
- :ls_pcode);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '新增物料:'+ls_mtrlcode+'成本失败,'+sqlca.SQLErrText
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Continue
- End If
- End If
- Else
- arg_msg = '更新物料:'+ls_mtrlcode+'成本失败,'+sqlca.SQLErrText
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Continue
- End If
-
- Delete From u_mtrlprice_mx
- Where mtrlid = :ll_mtrlid
- And pfcode = :ls_pfcode
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode;
- If sqlca.SQLCode <> 0 Then
- Rollback;
- arg_msg = '删除物料:'+ls_mtrlcode+'原成本组成明细失败,'+sqlca.SQLErrText
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Continue
- End If
-
- For ll_j = 1 To UpperBound(arg_s_mx)
- Update u_mtrlprice_mx
- Set price = price + :arg_s_mx[ll_j].price,
- wfjgprice = wfjgprice + :arg_s_mx[ll_j].wfjgprice,
- jgprice = jgprice + :arg_s_mx[ll_j].jgprice,
- outcost = outcost + :arg_s_mx[ll_j].outcost,
- eqprice = eqprice + :arg_s_mx[ll_j].eqprice,
- qty = qty + :arg_s_mx[ll_j].qty
- Where mtrlid = :ll_mtrlid
- And pfcode = :ls_pfcode
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- And sonmtrlid = :arg_s_mx[ll_j].sonmtrlid;
- If sqlca.SQLCode = 0 Then
- If sqlca.SQLNRows = 0 Then
- Insert Into u_mtrlprice_mx
- (mtrlid,
- pfcode,
- status,
- woodcode,
- pcode,
- sonmtrlid,
- price,
- wfjgprice,
- jgprice,
- outcost,
- eqprice,
- qty)
- Values (:ll_mtrlid,
- :ls_pfcode,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :arg_s_mx[ll_j].sonmtrlid,
- :arg_s_mx[ll_j].price,
- :arg_s_mx[ll_j].wfjgprice,
- :arg_s_mx[ll_j].jgprice,
- :arg_s_mx[ll_j].outcost,
- :arg_s_mx[ll_j].eqprice,
- :arg_s_mx[ll_j].qty);
- If sqlca.SQLCode <> 0 Then
- Rollback;
- arg_msg = '物料:'+ls_mtrlcode+'插入成本组成明细失败,'+sqlca.SQLErrText
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Goto _next
- End If
- End If
- Else
- Rollback;
- arg_msg = '更新物料:'+ls_mtrlcode+'成本组成明细失败,'+sqlca.SQLErrText
- ls_msg = ls_msg + arg_msg + '~n'
- ll_fail++
- Goto _next
- End If
-
- Next
-
- Commit;
- _next:
- Next
- //hpb_2.Visible = False
- //st_per_2.Visible = False
- //p_2.PictureName = 'done.jpg'
- //3.更新成品进仓单成本价
- li_status_step = 3
- //p_3.PictureName = 'doing.jpg'
- //st_per_3.Visible = True
- Update u_inwaremx
- Set u_inwaremx.cost = isnull(v_cost.cost,0),
- u_inwaremx.fprice = isnull(v_cost.cost,0),
- u_inwaremx.uprice = isnull(v_cost.cost,0),
- u_inwaremx.enprice = isnull(v_cost.cost,0),
- u_inwaremx.enprice_tax = isnull(v_cost.cost,0),
- u_inwaremx.enprice_notax = isnull(v_cost.cost,0),
- u_inwaremx.price = isnull(v_cost.cost,0)
- From u_inwaremx Inner JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid And
- u_inwaremx.inwareid = u_inware.inwareid Inner JOIN
- (Select DISTINCT Storageid, MAX(balcdateint) AS balcdateint
- From u_warebalc
- Where (balcdateint > 0)
- Group By Storageid) v_balcint ON u_inware.storageid = v_balcint.Storageid And
- u_inware.balcdateint = v_balcint.balcdateint Inner JOIN
- (Select u_mtrlprice_sum.mtrlid, u_mtrlprice_sum.status,
- u_mtrlprice_sum.woodcode, u_mtrlprice_sum.pcode,
- MAX(u_mtrlprice_sum.cost) AS cost
- From u_mtrlprice_sum Inner JOIN
- (Select MAX(sumdate) AS sumdate, mtrlid, pfcode, status, woodcode,pcode
- From u_mtrlprice_sum
- Group By mtrlid, pfcode, status, woodcode, pcode) v_mtrlid_sumdate ON
- u_mtrlprice_sum.pcode = v_mtrlid_sumdate.pcode COLLATE Chinese_PRC_CI_AS
- And
- u_mtrlprice_sum.woodcode = v_mtrlid_sumdate.woodcode COLLATE Chinese_PRC_CI_AS
- And
- u_mtrlprice_sum.status = v_mtrlid_sumdate.status COLLATE Chinese_PRC_CI_AS
- And u_mtrlprice_sum.mtrlid = v_mtrlid_sumdate.mtrlid And
- u_mtrlprice_sum.pfcode = v_mtrlid_sumdate.pfcode And
- u_mtrlprice_sum.sumdate = v_mtrlid_sumdate.sumdate
- Group By u_mtrlprice_sum.mtrlid, u_mtrlprice_sum.status,
- u_mtrlprice_sum.woodcode, u_mtrlprice_sum.pcode) v_cost ON
- u_inwaremx.mtrlid = v_cost.mtrlid And u_inwaremx.status = v_cost.status And
- u_inwaremx.woodcode = v_cost.woodcode And
- u_inwaremx.pcode = v_cost.pcode
- Where (u_inware.billtype <> 1);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新生产进仓单单价及成本价失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Commit;
- //st_per_3.Visible = False
- //p_3.PictureName = 'done.jpg'
- //4.更新产品结存表成本价,库存成本价
- li_status_step = 4
- ds_warebalc.Retrieve(30)
- ds_inwaremx.Retrieve(30)
- //p_4.PictureName = 'doing.jpg'
- //hpb_4.MinPosition = 0
- //hpb_4.MaxPosition = ds_warebalc.RowCount()
- //hpb_4.Position = 0
- //
- //hpb_4.Visible = True
- //st_per_4.Visible = True
- For ll_i = 1 To ds_warebalc.RowCount()
- ll_storageid = ds_warebalc.Object.storageid[ll_i]
- ll_balcdateint = ds_warebalc.Object.balcdateint[ll_i]
- ll_mtrlid = ds_warebalc.Object.mtrlid[ll_i]
- ll_sptid = ds_warebalc.Object.sptid[ll_i]
- ls_status = ds_warebalc.Object.status[ll_i]
- ls_woodcode = ds_warebalc.Object.woodcode[ll_i]
- ls_pcode = ds_warebalc.Object.pcode[ll_i]
- ls_plancode = ds_warebalc.Object.plancode[ll_i]
- ls_mtrlcuscode = ds_warebalc.Object.mtrlcuscode[ll_i]
- ls_location = ds_warebalc.Object.Location[ll_i]
- ld_bgqty = ds_warebalc.Object.bgqty[ll_i]
- ld_bgamt = ds_warebalc.Object.bgamt[ll_i]
- ll_scid = ds_warebalc.Object.scid[ll_i]
- ls_storagename = ds_warebalc.Object.storagename[ll_i]
- ls_mtrlcode = ds_warebalc.Object.mtrlcode[ll_i]
- ls_mtrlname = ds_warebalc.Object.mtrlname[ll_i]
- ll_mtrlwareid = ds_warebalc.Object.mtrlwareid[ll_i]
-
- // SELECT sum(u_inwaremx.cost * u_inwaremx.qty),
- // sum(u_inwaremx.qty)
- // INTO :ld_inamt,
- // :ld_inqty
- // FROM u_inware INNER JOIN
- // u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- // u_inware.inwareid = u_inwaremx.inwareid
- // WHERE (u_inware.balcdateint = :ll_balcdateint)
- // AND (u_inware.storageid = :ll_storageid)
- // AND (u_inwaremx.mtrlid = :ll_mtrlid)
- // AND (u_inwaremx.status = :ls_status)
- // AND (u_inwaremx.woodcode = :ls_woodcode)
- // AND (u_inwaremx.pcode = :ls_pcode)
- // AND (u_inwaremx.plancode = :ls_plancode)
- // AND (u_inwaremx.mtrlcuscode = :ls_mtrlcuscode)
- // AND (u_inwaremx.Location = :ls_location)
- // And (u_inware.scid = :ll_scid);
- // IF sqlca.SQLCode <> 0 THEN
- // ld_inamt = 0
- // ld_inqty = 0
- // END IF
-
-
- ls_findstr = 'balcdateint = '+String(ll_balcdateint) + ' and storageid = '+String(ll_storageid)
- ls_findstr = ls_findstr + ' and mtrlid = '+String(ll_mtrlid) + ' and status = "'+ls_status+'" '
- ls_findstr = ls_findstr + ' and woodcode = "'+ ls_woodcode + '" and pcode = "'+ls_pcode+'" '
- ls_findstr = ls_findstr + ' and plancode = "'+ ls_plancode + '" and mtrlcuscode = "'+ls_mtrlcuscode+'" '
- ls_findstr = ls_findstr + ' and location = "'+ ls_location + '" and scid = '+String(ll_scid)
-
-
- ll_row = ds_inwaremx.Find(ls_findstr,1,ds_inwaremx.RowCount())
-
- If ll_row > 0 Then
- ld_inamt = ds_inwaremx.Object.inamt[ll_row]
- ld_inqty = ds_inwaremx.Object.inqty[ll_row]
- ds_inwaremx.DeleteRow(ll_row)
- Else
- ld_inamt = 0
- ld_inqty = 0
- End If
-
- If IsNull(ld_inamt) Then ld_inamt = 0
- If IsNull(ld_inqty) Then ld_inqty = 0
-
- If ld_bgamt < 0 Then
- If ld_inqty > 0 Then
- ld_bgamt = ld_bgqty * (ld_inamt / ld_inqty)
- Else
- Select top 1 cost
- Into :ld_cost
- From u_mtrlware
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode <> 0 Then
- ld_cost = 0
- End If
-
- ld_bgamt = ld_bgqty * ld_cost
- End If
- End If
-
- If ld_bgqty + ld_inqty <> 0 Then
- ld_cost = (ld_bgamt + ld_inamt) / (ld_bgqty + ld_inqty)
- End If
-
- If (ld_bgqty + ld_inqty = 0) Or ld_cost < 0 Then
- Select top 1 cost
- Into :ld_cost
- From u_mtrlware
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode <> 0 Then
- ld_cost = 0
- End If
- End If
-
- If IsNull(ld_cost) Then ld_cost = 0
-
-
-
- //更新当前仓库结存表的期间进仓
- // SELECT isnull(sum(u_inwaremx.qty),0),
- // isnull(sum(round(u_inwaremx.cost * u_inwaremx.qty,2)),0)
- // INTO :ld_inqty_sum,
- // :ld_inamt_sum
- // FROM u_inware INNER JOIN
- // u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- // u_inware.inwareid = u_inwaremx.inwareid
- // WHERE (u_inware.balcdateint = :ll_balcdateint)
- // AND (u_inware.storageid = :ll_storageid)
- // AND (u_inwaremx.mtrlid = :ll_mtrlid)
- // AND (u_inwaremx.status = :ls_status)
- // AND (u_inwaremx.woodcode = :ls_woodcode)
- // AND (u_inwaremx.pcode = :ls_pcode)
- // AND (u_inwaremx.plancode = :ls_plancode)
- // AND (u_inwaremx.mtrlcuscode = :ls_mtrlcuscode)
- // AND (u_inwaremx.Location = :ls_location)
- // And (u_inware.scid = :ll_scid);
- // IF sqlca.SQLCode = -1 THEN
- // rslt = 0
- // arg_msg = '查询期间进仓失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- // GOTO ext
- // END IF
-
-
- ld_inqty_sum = ld_inqty
- ld_inamt_sum = ld_inamt
-
-
- If IsNull(ld_inqty_sum) Then ld_inqty_sum = 0
- If IsNull(ld_inamt_sum) Then ld_inamt_sum = 0
-
-
- Update u_warebalc
- Set u_warebalc.incqty = :ld_inqty_sum,
- u_warebalc.incamt = :ld_inamt_sum,
- u_warebalc.bgamt = :ld_bgamt
- Where u_warebalc.scid = :ll_scid
- And u_warebalc.balcdateint = :ll_balcdateint
- And u_warebalc.mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新结存表期间进数量金额失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
- //更新当前仓库所有出仓明细的成本价
- Update u_outwaremx
- Set u_outwaremx.cost = :ld_cost,
- u_outwaremx.costamt = :ld_cost * qty
- From u_outwaremx Inner JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid And
- u_outwaremx.outwareid = u_outware.outwareid
- Where u_outwaremx.scid = :ll_scid
- And u_outwaremx.mtrlwareid = :ll_mtrlwareid
- And u_outware.balcdateint = :ll_balcdateint;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新出仓单成本价失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_warebalc
- Set u_warebalc.desamt = v_outwaremx.desamt
- From u_warebalc Inner JOIN
- (Select u_outwaremx.scid, u_outwaremx.mtrlwareid, u_outware.balcdateint,
- SUM(u_outwaremx.costamt) AS desamt
- From u_outware Inner JOIN
- u_outwaremx ON u_outware.scid = u_outwaremx.scid And
- u_outware.outwareid = u_outwaremx.outwareid
- Where u_outwaremx.scid = :ll_scid
- And u_outwaremx.mtrlwareid = :ll_mtrlwareid
- And u_outware.balcdateint = :ll_balcdateint
- Group By u_outwaremx.scid, u_outwaremx.mtrlwareid, u_outware.balcdateint)
- v_outwaremx ON u_warebalc.scid = v_outwaremx.scid And
- u_warebalc.balcdateint = v_outwaremx.balcdateint And
- u_warebalc.mtrlwareid = v_outwaremx.mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新结存表期间出金额失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
- //重算一次结余数量,结余金额,并得出新的成本价
- Update u_warebalc
- Set balcqty = bgqty + incqty - desqty,
- balcamt = bgamt + incamt - desamt
- Where u_warebalc.scid = :ll_scid
- And u_warebalc.balcdateint = :ll_balcdateint
- And u_warebalc.mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新结存表结余数量金额失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
-
-
- If ld_bgqty + ld_inqty_sum <> 0 Then
- ld_cost = (ld_bgamt + ld_inamt_sum) / (ld_bgqty + ld_inqty_sum)
-
- If ld_cost > 0 Then
- Update u_mtrlware
- Set cost = :ld_cost,
- wareamt = :ld_cost * noallocqty
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode = -1 Then
- rslt = 0
- arg_msg = '更新库存成本价失败,仓库:'+ls_storagename+',物料:['+ls_mtrlcode+']'+ls_mtrlname + '~r~n' +sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- End If
-
- Commit;
-
- // hpb_4.Position = ll_i
- // st_per_4.Text = String(ll_i/ds_warebalc.RowCount(),'0.0%')
- Next
- //hpb_4.Visible = False
- //st_per_4.Visible = False
- //p_4.PictureName = 'done.jpg'
- //5.按最近结存的结余金额更新本期期初
- li_status_step = 5
- //p_5.PictureName = 'doing.jpg'
- //st_per_5.Visible = True
- Update u_warebalc
- Set u_warebalc.bgqty = v_last.balcqty,
- u_warebalc.bgamt = v_last.balcamt
- From u_warebalc Inner JOIN
- (Select u_warebalc.scid, u_warebalc.balcdateint, u_warebalc.mtrlwareid,
- u_warebalc.balcqty, u_warebalc.balcamt
- From u_warebalc Inner JOIN
- (Select DISTINCT Storageid, MAX(balcdateint) AS balcdateint
- From u_warebalc
- Where (balcdateint > 0)
- Group By Storageid) v_balcint ON
- u_warebalc.Storageid = v_balcint.Storageid And
- u_warebalc.balcdateint = v_balcint.balcdateint) v_last ON
- u_warebalc.scid = v_last.scid And
- u_warebalc.mtrlwareid = v_last.mtrlwareid Inner JOIN
- u_mtrldef ON u_warebalc.mtrlid = u_mtrldef.mtrlid Inner JOIN
- u_storage ON u_warebalc.Storageid = u_storage.storageid
- Where (u_warebalc.balcdateint = 0)
- And ( u_warebalc.bgqty <> v_last.balcqty Or u_warebalc.bgamt <> v_last.balcamt);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '按最近结存的结余金额更新本期期初失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Update u_warebalc
- Set balcqty = bgqty + incqty - desqty,
- balcamt = bgamt + incamt - desamt
- Where (balcdateint = 0)
- And (balcqty <> bgqty + incqty - desqty Or balcamt <> bgamt + incamt - desamt);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '按最近结存的结余金额更新本期结余失败,'+sqlca.SQLErrText
- Goto ext
- End If
- //更新指令单领用明细金额
- Update u_OrderRqMtrl_scll
- Set u_OrderRqMtrl_scll.costamt = v_outware.cost * u_OrderRqMtrl_scll.DstrQty
- From u_OrderRqMtrl_scll Inner JOIN
- (Select u_outware.scid, u_outwaremx.relid AS orderid,
- u_outware.relid AS wrkgrpid, u_outwaremx.mtrlid, u_outwaremx.status,
- u_outwaremx.woodcode, u_outwaremx.pcode, SUM(u_outwaremx.costamt)
- / SUM(u_outwaremx.qty) AS cost
- From u_outwaremx Inner JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid And
- u_outwaremx.outwareid = u_outware.outwareid Inner JOIN
- (Select DISTINCT Storageid, MAX(balcdateint) AS balcdateint
- From u_warebalc
- Where (balcdateint > 0)
- Group By Storageid) v_balcint ON
- u_outware.StorageID = v_balcint.Storageid And
- u_outware.balcdateint = v_balcint.balcdateint
- Where (u_outware.billtype = 3) And (u_outwaremx.relid > 0) And
- (u_outwaremx.qty > 0) And (u_outwaremx.cost > 0)
- Group By u_outware.scid, u_outwaremx.relid, u_outware.relid,
- u_outwaremx.mtrlid, u_outwaremx.status, u_outwaremx.woodcode,
- u_outwaremx.pcode
- Having (SUM(u_outwaremx.qty) > 0)) v_outware ON
- u_OrderRqMtrl_scll.scid = v_outware.scid And
- u_OrderRqMtrl_scll.OrderID = v_outware.orderid And
- u_OrderRqMtrl_scll.MtrlID = v_outware.mtrlid And
- u_OrderRqMtrl_scll.wrkGrpid = v_outware.wrkgrpid And
- u_OrderRqMtrl_scll.status = v_outware.status COLLATE Chinese_PRC_CI_AS And
- u_OrderRqMtrl_scll.woodcode = v_outware.woodcode COLLATE Chinese_PRC_CI_AS And
- u_OrderRqMtrl_scll.pcode = v_outware.pcode COLLATE Chinese_PRC_CI_AS
- Where v_outware.cost > 0
- And u_OrderRqMtrl_scll.costamt <> v_outware.cost * u_OrderRqMtrl_scll.DstrQty ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新指令单领用明细金额失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Commit;
- //st_per_5.Visible = False
- //p_5.PictureName = 'done.jpg'
- ext:
- Destroy ds_warebalc
- Destroy ds_mtrlcost
- Destroy ds_inwaremx
- Destroy uo_cmpl
- If rslt = 0 Then
- Rollback;
-
- // If li_status_step = 1 Then
- // p_1.PictureName = 'wrong.jpg'
- // st_per_1.Visible = False
- // hpb_1.Visible = False
- // st_msg_1.Text = arg_msg
- // ElseIf li_status_step = 2 Then
- // p_2.PictureName = 'wrong.jpg'
- // st_per_2.Visible = False
- // hpb_2.Visible = False
- // st_msg_2.Text = arg_msg
- // ElseIf li_status_step = 3 Then
- // p_3.PictureName = 'wrong.jpg'
- // st_per_3.Visible = False
- // st_msg_3.Text = arg_msg
- // ElseIf li_status_step = 4 Then
- // p_4.PictureName = 'wrong.jpg'
- // st_per_4.Visible = False
- // hpb_4.Visible = False
- // st_msg_4.Text = arg_msg
- // ElseIf li_status_step = 5 Then
- // p_5.PictureName = 'wrong.jpg'
- // st_per_5.Visible = False
- // st_msg_5.Text = arg_msg
- // End If
-
- f_setsysoplog('按月重算产品成本','按月重算产品成本失败,原因:'+arg_msg,ls_msg,True)
-
- Else
- f_setsysoplog('按月重算产品成本','按月重算产品成本成功',ls_msg,True)
-
- // MessageBox('系统提示','重算完成')
-
- End If
- //ins_ifstart = 0
- return rslt
- end function
- public function integer uof_cmpl_warebalc_amt (long arg_storageid, long arg_balcdateint, ref string arg_msg);uo_warebalc_cmpl uo_cmpl
- uo_cmpl = Create uo_warebalc_cmpl
- Int rslt = 1
- rslt = uo_cmpl.uof_cmpl_warebalc_amt(arg_storageid, arg_balcdateint, Ref arg_msg)
- Destroy uo_cmpl
- RETURN rslt
- end function
- public function integer uof_cmpl_mtrlcost_planprice (long arr_mtrlid[], string arr_pfcode[], string arr_status[], string arr_woodcode[], string arr_pcode[], long li_dec, boolean if_auto_copy, integer ifprice, integer ifwfjgprice, integer ifjgprice, integer ifoutcost, integer ifotherprice, integer ifeqprice, ref string ls_msg);Int rslt = 1
- Long ll_fail = 0
- Long i
- ls_msg = ''
- String arg_msg
- uo_cmplcost uo_cmpl
- uo_cmpl = Create uo_cmplcost
- FOR i = 1 To UpperBound(arr_mtrlid)
- IF arr_pfcode[i] = '' THEN CONTINUE
- arg_msg = ''
- IF uo_cmpl.uof_cmpl_mtrlcost(arr_mtrlid[i], arr_pfcode[i], arr_status[i], arr_woodcode[i], arr_pcode[i], li_dec, if_auto_copy,&
- ifprice, ifwfjgprice, ifjgprice, ifoutcost, ifotherprice, ifeqprice, Ref arg_msg) <> 1 THEN
- ls_msg = ls_msg + arg_msg + '~r~n'
- ll_fail++
- CONTINUE
- END IF
- NEXT
- Destroy uo_cmpl
- IF ll_fail > 0 THEN
- rslt = 0
- ls_msg = "统计失败:~r~n" + ls_msg
- ELSE
- ls_msg = "统计成功"
- END IF
- RETURN rslt
- end function
- private function integer pf_outware_to_inwarebuy (string ls_sn, datetime dt_server, ref string arg_msg);Int rslt = 1
- Long ll_scid
- String ls_sccode, ls_outwarecode, ls_banktypename, ls_moneyname
- Long ll_banktypeid, ll_moneyid
- String ls_cuscode, ls_sendsccode // 供应商
- Long ll_sptid // 供应商
- Long ll_storageid = 0
- Long ll_printid, arr_printid[], arr_ll_empty[]
- Long j = 0, cnt = 0, i = 0
- String ls_sptmtrlcode, ls_status, ls_woodcode, ls_pcode, ls_plancode, ls_unit, ls_mtrlcuscode
- String ls_fiebrelcode
- Long ll_mtrlid
- Long ll_ifrel, ll_relid, ll_relprintid
- String ls_mtrlcode
- Decimal ld_qty, ld_enprice, ld_rebate
- Decimal ld_amt
- String ls_itemname, ls_itemcode, ls_mxdscrp
- Long ll_itemid
- String ls_inwarecode
- Long ll_inwareid
- s_getbar arg_s_gb, s_empty
- Long ll_sptmtrlid, arr_sptmtrlid[]
- String arr_status[], arr_woodcode[], arr_pcode[]
- Dec ld_packqty, arr_packqty[], ld_num, arr_num[]
- String ls_barcode
- uo_inware_buy uo_ware
- uo_ware = Create uo_inware_buy
- uo_ware.commit_transaction = sqlca
- uo_getbar uo_get
- uo_get = Create uo_getbar
- SELECT LJFIEB_packet.ReceiveSCcode,
- LJFIEB_tempoutware.outwarecode,
- cuscomm_s.CusCode,
- LJFIEB_packet.SendSCcode,
- LJFIEB_tempoutware.banktypename,
- LJFIEB_tempoutware.moneyname
-
- INTO :ls_sccode, :ls_outwarecode, :ls_cuscode, :ls_sendsccode, :ls_banktypename, :ls_moneyname
- FROM LJFIEB_packet INNER JOIN
- LJFIEB_tempoutware ON LJFIEB_packet.SerialNum = LJFIEB_tempoutware.serialnum INNER JOIN
- LJFIEB_CusComm AS cuscomm_s ON LJFIEB_packet.SendCusCommID = cuscomm_s.CusCommID
- WHERE LJFIEB_packet.SerialNum = :ls_sn
- Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询接收分部编码失败,' + sys_email_sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT scid
- INTO :ll_scid
- FROM u_scdef
- Where sccode = :ls_sccode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询接收分部失败,编码['+ls_sccode+'],' + sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT sptid, banktypeid
- INTO :ll_sptid, :ll_banktypeid
- FROM u_spt
- WHERE commcode = :ls_cuscode
- And commsccode = :ls_sendsccode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询发送供应商['+ls_cuscode+']['+ls_sendsccode+']失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- //SELECT banktypeid
- // INTO :ll_banktypeid
- // FROM cw_banktype
- // Where inuse = 1 And banktype = 1 And banktypename = :ls_banktypename;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询结算方式['+ls_banktypename+']失败,' + sqlca.SQLErrText
- // GOTO ext
- //END IF
- SELECT moneyid INTO :ll_moneyid
- FROM cw_currency
- Where Name = :ls_moneyname;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询币种['+ls_moneyname+']失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF uo_ware.newbegin(ll_scid,1,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_ware.indate = dt_server // 发生时间
- uo_ware.inrep = publ_operator // 经手人
- uo_ware.part = ls_outwarecode
- uo_ware.dscrp = ''
- uo_ware.storageid = ll_storageid // DONE: dw_uc.Object.storageid[uc_row]
- uo_ware.sptid = ll_sptid
- uo_ware.otheramt = 0
- uo_ware.relint_1 = ll_banktypeid
- uo_ware.relid = 0
- uo_ware.thflag = 0
- uo_ware.moneyid = ll_moneyid
- uo_ware.mrate = f_get_mrate(ll_moneyid)
- arr_printid = arr_ll_empty
- j = 0
- DECLARE cur2 CURSOR FOR
- SELECT printid
- FROM LJFIEB_tempoutwaremx
- WHERE (serialnum = :ls_sn)
- ORDER BY printid
- Using sys_email_sqlca;
- OPEN cur2;
- FETCH cur2 Into :ll_printid;
- DO WHILE sys_email_sqlca.SQLCode = 0
- j++
- arr_printid[j] = ll_printid
- FETCH cur2 Into :ll_printid;
- LOOP
- CLOSE cur2;
- FOR j = 1 To UpperBound(arr_printid)
- ll_printid = arr_printid[j]
-
- SELECT sptmtrlcode, status, woodcode, pcode, plancode, unit, qty, enprice, rebate, fiebrelcode, mtrlcuscode
-
- INTO :ls_sptmtrlcode, :ls_status, :ls_woodcode, :ls_pcode, :ls_plancode, :ls_unit, :ld_qty, :ld_enprice, :ld_rebate, :ls_fiebrelcode, :ls_mtrlcuscode
- FROM LJFIEB_tempoutwaremx
- WHERE (serialnum = :ls_sn)
- AND (printid = :ll_printid)
- Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询对方发货单明细失败,' + sys_email_sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT u_sptmtrlname.mtrlid,
- u_mtrldef.mtrlcode
- INTO :ll_mtrlid,
- :ls_mtrlcode
- FROM u_sptmtrlname INNER JOIN
- u_mtrldef ON u_sptmtrlname.mtrlid = u_mtrldef.mtrlid
- WHERE u_sptmtrlname.sptid = :ll_sptid
- And u_sptmtrlname.sptmtrlcode = :ls_sptmtrlcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询供应商物料['+ls_sptmtrlcode+']本地对应物料失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_ifrel = 0
- ll_relid = 0
- ll_relprintid = 0
- IF ls_fiebrelcode <> '' And ll_mtrlid > 0 THEN
- SELECT top 1 u_buyTaskMx.TaskID, u_buyTaskMx.printid
- INTO :ll_relid,:ll_relprintid
- FROM u_buyTask INNER JOIN
- u_buyTaskMx ON u_buyTask.scid = u_buyTaskMx.scid AND
- u_buyTask.TaskID = u_buyTaskMx.TaskID
- WHERE u_buyTask.taskcode = :ls_fiebrelcode
- AND u_buyTaskMx.mtrlid = :ll_mtrlid
- AND u_buyTaskMx.status = :ls_status
- AND u_buyTaskMx.woodcode = :ls_woodcode
- And u_buyTaskMx.pcode = :ls_pcode;
- IF sqlca.SQLCode <> 0 THEN
- ll_ifrel = 0
- ll_relid = 0
- ll_relprintid = 0
- ELSE
- ll_ifrel = 1
- END IF
- END IF
-
- IF ll_storageid = 0 THEN // 取第一个物料的默认存放仓库
- SELECT top 1 storageid
- INTO :ll_storageid
- FROM u_mtrl_storage
- WHERE mtrlid = :ll_mtrlid
- Order By dft Desc;
- IF sqlca.SQLCode <> 0 THEN
- ll_storageid = 0
- ELSE
- uo_ware.storageid = ll_storageid
- END IF
- END IF
-
- IF uo_ware.acceptmx(j,&
- ll_mtrlid,&
- ls_mtrlcode,&
- ls_plancode,&
- ls_status,&
- ld_qty,&
- ld_enprice,&
- ld_rebate,&
- '',&
- arg_msg,0,&
- ll_relid,&
- ll_ifrel,&
- ls_woodcode,&
- ls_pcode,&
- 0,&
- ls_unit,&
- 1,&
- ld_qty,&
- ll_relprintid,&
- ld_qty,&
- '','',&
- 0,&
- 0,&
- ls_mtrlcuscode,&
- '',&
- ld_qty,&
- 0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
- IF uo_ware.uf_cmp_mxmx(arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- arr_printid = arr_ll_empty
- j = 0
- DECLARE cur3 CURSOR FOR
- SELECT printid
- FROM LJFIEB_tempoutware_itemmx
- WHERE (serialnum = :ls_sn)
- ORDER BY printid
- Using sys_email_sqlca;
- FETCH cur3 Into :ll_printid;
- DO WHILE sys_email_sqlca.SQLCode = 0
- j++
- arr_printid[j] = ll_printid
- FETCH cur3 Into :ll_printid;
- LOOP
- CLOSE cur3;
- FOR j = 1 To UpperBound(arr_printid)
- ll_printid = arr_printid[j]
-
- SELECT amt, itemname, mxdscrp
- INTO :ld_amt, :ls_itemname, :ls_mxdscrp
- FROM LJFIEB_tempoutware_itemmx
- WHERE (serialnum = :ls_sn)
- AND (printid = :ll_printid)
- Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询对方销售发货单费用明细失败,' + sys_email_sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT itemid,
- itemcode
- INTO :ll_itemid,
- :ls_itemcode
- FROM u_itemdef
- Where itemname = :ls_itemname;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询费用明细项目['+ls_itemname+']对应本地收支项目失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF uo_ware.acceptmx_item(j,&
- ll_itemid,&
- ld_amt,&
- ls_mxdscrp,&
- arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF uo_ware.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ls_inwarecode = uo_ware.inwarecode
- ll_inwareid = uo_ware.inwareid
- UPDATE LJFIEB_tempoutware
- SET relreissuecode = :ls_inwarecode,
- flag = 1,
- ConfirmTime = getdate(),
- ConfirmUser = :publ_operator
- Where SerialNum = :ls_sn Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关单号失败,'+sys_email_sqlca.SQLErrText
- GOTO ext
- END IF
- //更新本地通信记录
- UPDATE LJFIEB_packet
- SET status = 6,
- Complete = 1,
- ConfirmTime = getdate(),
- ConfirmUser = :publ_operator
- Where SerialNum = :ls_sn Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新本地通信记录失败,'+sys_email_sqlca.SQLErrText
- GOTO ext
- END IF
- // DONE: 如果有条码,则生成条码生成单
- SELECT count(0)
- INTO :cnt
- FROM LJFIEB_tempoutwaremx_mx_barcode
- WHERE serialnum = :ls_sn
- Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询接收条码数量失败,' + sys_email_sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
-
- i = 0
- arg_s_gb = s_empty
-
- DECLARE cur4 CURSOR FOR
- SELECT qty, mtrlid, status, woodcode, pcode, COUNT(0)
- FROM LJFIEB_tempoutwaremx_mx_barcode
- WHERE serialnum = :ls_sn
- GROUP BY qty, mtrlid, status, woodcode, pcode
- Using sys_email_sqlca;
- OPEN cur4;
- FETCH cur4 Into :ld_packqty, :ll_sptmtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ld_num;
- DO WHILE sys_email_sqlca.SQLCode = 0
- i++
- arr_packqty[i] = ld_packqty
- arr_sptmtrlid[i] = ll_sptmtrlid
- arr_status[i] = ls_status
- arr_woodcode[i] = ls_woodcode
- arr_pcode[i] = ls_pcode
- arr_num[i] = ld_num
- FETCH cur4 Into :ld_packqty, :ll_sptmtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ld_num;
- LOOP
- CLOSE cur4;
-
- FOR i = 1 To UpperBound(arr_sptmtrlid)
- ld_packqty = arr_packqty[i]
- ll_sptmtrlid = arr_sptmtrlid[i]
- ls_status = arr_status[i]
- ls_woodcode = arr_woodcode[i]
- ls_pcode = arr_pcode[i]
- ld_num = arr_num[i]
-
- SELECT top 1 sptmtrlcode
- INTO :ls_sptmtrlcode
- FROM LJFIEB_tempoutwaremx
- WHERE serialnum = :ls_sn
- AND mtrlid = :ll_sptmtrlid
- Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- SELECT top 1 sptmtrlcode
- INTO :ls_sptmtrlcode
- FROM LJFIEB_tempoutwaremx_mx
- WHERE serialnum = :ls_sn
- AND mtrlid = :ll_sptmtrlid
- Using sys_email_sqlca;
- IF sys_email_sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询条码对应的供应商物料编码失败'
- GOTO ext
- END IF
- END IF
-
- SELECT u_sptmtrlname.mtrlid,
- u_mtrldef.mtrlcode
- INTO :ll_mtrlid,
- :ls_mtrlcode
- FROM u_sptmtrlname INNER JOIN
- u_mtrldef ON u_sptmtrlname.mtrlid = u_mtrldef.mtrlid
- WHERE u_sptmtrlname.sptid = :ll_sptid
- And u_sptmtrlname.sptmtrlcode = :ls_sptmtrlcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '2.查询供应商物料['+ls_sptmtrlcode+']本地对应物料失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- arg_s_gb.scid = ll_scid
- arg_s_gb.getbarid = 0
- arg_s_gb.getbardate = DateTime(Today(), Now())
- arg_s_gb.ifrel = 3
- arg_s_gb.orderid = 0
- arg_s_gb.storageid = ll_storageid
- arg_s_gb.mtrlid = ll_mtrlid
- arg_s_gb.cusid = 0
- arg_s_gb.plancode = ''
- arg_s_gb.status = ls_status
- arg_s_gb.woodcode = ls_woodcode
- arg_s_gb.pcode = ls_pcode
- arg_s_gb.mtrlcuscode = ''
- arg_s_gb.Location = ''
- arg_s_gb.packqty = ld_packqty
- arg_s_gb.qty = ld_packqty * ld_num
- arg_s_gb.dscrp = ''
- arg_s_gb.dscrp2 = ''
- arg_s_gb.reason = ''
- arg_s_gb.buytaskprintid = 0
-
- arg_s_gb.uqty = 0
- arg_s_gb.packuqty = 0
- arg_s_gb.rate = 0
-
- j = 0
- DECLARE cur5 CURSOR FOR
- SELECT barcode
- FROM LJFIEB_tempoutwaremx_mx_barcode
- WHERE serialnum = :ls_sn
- AND qty = :ld_packqty
- AND mtrlid = :ll_sptmtrlid
- AND status = :ls_status
- AND woodcode = :ls_woodcode
- AND pcode = :ls_pcode
- Using sys_email_sqlca;
- OPEN cur5;
- FETCH cur5 Into :ls_barcode;
- DO WHILE sys_email_sqlca.SQLCode = 0
- j++
- arg_s_gb.arg_s_mx[j].barcode = ls_barcode
- arg_s_gb.arg_s_mx[j].packqty = ld_packqty
- arg_s_gb.arg_s_mx[j].packuqty = 0
- arg_s_gb.arg_s_mx[j].rate = 0
- arg_s_gb.arg_s_mx[j].qty = 0
- arg_s_gb.arg_s_mx[j].mxdscrp = ''
- arg_s_gb.arg_s_mx[j].mxdscrp2 = ''
- arg_s_gb.arg_s_mx[j].mxdscrp3 = ''
- arg_s_gb.arg_s_mx[j].mxdscrp4 = ''
-
- INSERT INTO U_inwaremx_mx_barcode
- (billtype
- ,scid
- ,inwareid
- ,barcode
- ,qty)
- VALUES
- (1
- ,:ll_scid
- ,:ll_inwareid
- ,:ls_barcode
- ,:ld_packqty);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入采购收货单条码明细失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- FETCH cur5 Into :ls_barcode;
- LOOP
- CLOSE cur5;
-
- IF uo_get.Save(arg_s_gb,publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_get.auditing(uo_get.uo_getbarid, publ_operator,arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
-
- END IF
- // 生成采购收货单并审核
- IF uo_ware.getinfo(ll_scid,ll_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware.auditing(True,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- Destroy uo_ware
- Destroy uo_get
- IF rslt = 1 THEN
- COMMIT;
- COMMIT Using sys_email_sqlca;
- ELSE
- ROLLBACK;
- ROLLBACK Using sys_email_sqlca;
- IF IsNull(arg_msg) THEN
- arg_msg = 'pf_outware_to_inwarebuy错误信息为null'
- END IF
- END IF
- RETURN rslt
- end function
- public function integer uof_outware_to_inwarebuy (ref string ls_msg);// DONE: 将未接收的发货单转成采购收货单
- Int rslt = 1
- String arr_sn[], ls_sn
- Long i = 0
- DateTime dt_server
- ls_msg = ''
- IF IsNull(sys_email_sqlca) THEN
- rslt = 0
- ls_msg = '请设置邮件数据库'
- GOTO ext
- END IF
- IF sys_email_sqlca.DBHandle() <= 0 THEN
- rslt = 0
- ls_msg = '邮件数据库连接失败,请检查'
- GOTO ext
- END IF
- DECLARE cur1 CURSOR FOR
- SELECT LJFIEB_packet.SerialNum
- FROM LJFIEB_packet INNER JOIN
- LJFIEB_CusComm AS cuscomm_s ON LJFIEB_packet.SendCusCommID = cuscomm_s.CusCommID INNER JOIN
- LJFIEB_CusComm AS CusComm_r ON LJFIEB_packet.ReceiveCusCommID = CusComm_r.CusCommID INNER JOIN
- LJFIEB_tempoutware ON LJFIEB_packet.SerialNum = LJFIEB_tempoutware.serialnum
- WHERE (CusComm_r.CusType = 0)
- AND (LJFIEB_packet.BillType = 4)
- AND (LJFIEB_packet.Complete = 0)
- Using sys_email_sqlca;
-
- OPEN cur1;
- FETCH cur1 Into :ls_sn;
- DO WHILE sys_email_sqlca.SQLCode = 0
- i++
- arr_sn[i] = ls_sn
- FETCH cur1 Into :ls_sn;
- LOOP
- CLOSE cur1;
- SELECT top 1 getdate()
- INTO :dt_server
- From u_user;
- IF sqlca.SQLCode <> 0 THEN
- ls_msg = '查询服务器时间失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- String arg_msg = ''
- Long sec = 0, fail = 0
- FOR i = 1 To UpperBound(arr_sn)
- ls_sn = arr_sn[i]
- arg_msg = ''
- TRY
- IF pf_outware_to_inwarebuy(ls_sn, dt_server, Ref arg_msg) <> 1 THEN
- ls_msg = ls_msg + arg_msg + '~r~n'
- fail ++
- ELSE
- sec ++
- END IF
- Catch (RuntimeError ex)
- ls_msg = ls_msg + ex.Text + '~r~n'
- fail ++
- END TRY
- NEXT
- ls_msg = '成功:'+String(sec)+'失败:'+String(fail)+',' + ls_msg
- ext:
- IF IsNull(ls_msg) THEN
- ls_msg = 'uof_outware_to_inwarebuy未知错误导至错误信息为null'
- END IF
- RETURN rslt
- end function
- on uo_checkpda.create
- call super::create
- end on
- on uo_checkpda.destroy
- call super::destroy
- end on
|