12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509 |
- $PBExportHeader$uo_order_ml.sru
- forward
- global type uo_order_ml from nonvisualobject
- end type
- type s_order_ml from structure within uo_order_ml
- end type
- end forward
- type s_order_ml from structure
- string relcode
- datetime orderdate
- long taskid
- string taskcode
- long mtrlid
- string status_mode
- string woodcode
- string pcode
- decimal { 10 } orderqty
- datetime requiredate
- string dscrp
- string gydscrp
- string assign_emp
- integer ordertype
- string taskrelcode
- long cusid
- string pfcode
- long taskmxid
- string mtrlcode
- integer iffp
- long porderid
- string pordercode
- long utid
- long wrkgrpid
- string pfklmode
- long pforderid
- string pfordercode
- decimal { 10 } pfqty
- string secdscrp
- string thdscrp
- long taskscid
- datetime perfinishdate
- long storageid
- decimal { 5 } capacity
- long tmpid
- integer level
- string typename
- string p_taskrelcode
- string cusname
- integer p_ordertype
- long p_cusid
- string outtypestr
- integer inwareflag
- integer outscllflag
- long pzlorderid
- string saletaskcode
- string saletaskrelcode
- long upmtrlid
- integer iffg
- integer ifwforder
- integer ifauto
- long p_taskid
- long p_taskmxid
- long p_mtrlid
- integer fpkind
- long fgid
- integer if_inherit
- decimal { 10 } addqty
- string wpcode
- integer pctype
- decimal { 10 } notmrpqty
- integer ifpban
- integer ifupban
- end type
- global type uo_order_ml from nonvisualobject
- end type
- global uo_order_ml uo_order_ml
- type variables
- Public ProtectedWrite Long scid
- Public ProtectedWrite Long orderid
- Public ProtectedWrite String ordercode
- Public ProtectedWrite Int okplan_flag
- Public ProtectedWrite Int scllflag
- Public ProtectedWrite Int scllsecflag
- Public ProtectedWrite Int status
- Public ProtectedWrite DateTime accomplishdate
- Public ProtectedWrite String Accomplishemp
- Public ProtectedWrite String permit_emp
- Public ProtectedWrite DateTime permit_date
- Public ProtectedWrite String opemp
- Public ProtectedWrite DateTime opdate
- Public ProtectedWrite String modemp
- Public ProtectedWrite DateTime moddate
- Public ProtectedWrite String stopemp
- Public ProtectedWrite Long ctmint
- Public ProtectedWrite Int ifpackpro_mtrl
- String billcode
- Int ordertype
- String relcode
- DateTime orderdate
- Long mtrlid
- String status_mode
- String woodcode
- String pcode
- Decimal orderqty
- Decimal AcmpQty
- Decimal stopqty
- DateTime requiredate
- String dscrp
- String Assign_emp
- String taskrelcode
- String pfcode,wpcode
- Long taskid
- Long taskmxid
- String taskcode
- Long cusid
- Long porderid
- String pordercode
- Long relrqbuyid
- String relrqbuycode
- Decimal planqty
- Long wrkGrpid
- String gydscrp
- String pfklmode
- Long relrqwfjgid
- String relrqwfjgcode
- DateTime perfinishdate
- int pctype
- Decimal addqty
- Long pforderid
- String pfordercode
- Decimal pfqty
- String secdscrp
- String thdscrp
- Long taskscid
- Int stopjj
- String stopjjemp
- DateTime stopjjdate
- String stopjjreason
- Long storageid
- Decimal capacity
- String cusname,p_taskrelcode
- String outtypestr
- Int ifwforder
- Int inwareflag,outscllflag
- Long pzlorderid
- String pzlordercode_tmp //用于生成派生指令单号
- Int iffg
- Int ifauto
- Long fgid
- Int ifauto_optype = 1 //对象调用模式, 0:手动, 1:自动
- Int if_inherit
- int ifpban,ifupban
- Long orderid_arr[],orderqty_arr[]
- String arg_msg_str = ''
- Long audit_buildtype
- Int Level
- String typename
- Boolean if_getid_ture = True
- s_aps_orderrqmtrl ins_s_rqmtrl,ins_s_empty
- Long it_mx_rq
- s_workpricetable ins_s_wp[]
- Long it_mx_bomwp
- Long deep
- Private:
- Long it_mxbt = 0
- s_order_ml s_order_mx[]
- Long it_mxbt_ut = 0
- s_order_ml s_order_ut[]
- Long it_mxbt_wrk = 0
- s_ordermtrl_workgroup_tmp s_wrk_tmp[]
- Int uo_option_if_oa_order_ml
- Int uo_option_order_ml_secaudit
- Int uo_option_if_oa_order_zl
- Int uo_option_order_ml_zl_secaudit
- Int uo_option_order_bh_use_yc
- Int uo_option_def_bom
- Int uo_option_order_mtrlware
- Int uo_option_inware_mtrlcuscode
- Int uo_option_order_ml_save_reccl
- Int uo_option_order_ml_add_use_wkp
- Int uo_option_ifovertask_cp
- Int uo_option_if_taskwork_acmpqty
- Int uo_option_ml_wkp
- Int uo_option_auto_wrkdate
- Int uo_option_use_sc_date
- Int uo_option_unite_order_ml
- Int uo_option_unite_order_ml_zl
- Int uo_option_order_ml_scll_secaudit
- Int uo_option_autocreate_buy
- Int uo_option_autocreate_wfjg
- Int uo_option_def_workprice
- Int uo_option_orderrqwp_union
- Int uo_option_requestbuy_hz
- Int uo_option_requestwfjg_hz
- Int uo_option_zlmtrlchange_wx_update_rqwfjg
- Int uo_option_scll_rate
- Int uo_option_skl_overscll
- Int uo_option_skl_overscll_rate
- Int uo_option_use_suliao
- Int uo_option_management_cost
- Int uo_option_ect_price
- Int uo_option_order_ml_use_zl
- Int uo_option_use_workgroup_tree = 0 //使用工艺路线
- Int uo_option_scllaudit_autobuild = 0 //主生产计划用料审核自动生成相关指令单及派工单
- Int uo_option_def_mtrlwkp = 0 //生产计划审核前检查工组流程是否定义
- Int uo_option_scllaudit_autobuild_tech = 0
- Int uo_option_auto_finish_zl
- Int uo_option_update_lockdateflag
- Int uo_option_packpro2_not_use_pack1
- Int uo_option_order_capacity
- Int uo_option_order_ml_zl_checkdate
- Int uo_option_order_zl_3_day
- Long ins_produce_wrkgrpid_bj
- Int uo_option_ifpackpro2_if_no_pack2
- int uo_option_scll_back_check
- int uo_option_autostop_porder
- int uo_option_bujian_notmrpqty
- int uo_option_orderrqwp_auditgj
- int uo_option_order_zl_auto_getbar
- int uo_option_canpack_ifzanyong
- end variables
- forward prototypes
- private function integer p_reset ()
- public function integer f_distribute_dstrqty (long arg_atid, ref string arg_msg)
- public function integer add_dscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg)
- public function integer del (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_scid, long arg_orderid, ref string arg_msg)
- public function integer audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer tmpstoporder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishorder (integer arg_finishtype, long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer tryfinishorder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel_finishorder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer save (ref string arg_msg, boolean arg_ifcommit)
- public function integer update (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- private function integer p_getinfo (long arg_scid, long arg_orderid, ref string arg_msg)
- private function integer p_clearmx ()
- public function integer newbegin (long arg_scid)
- public function integer update_bom (long arg_scid, long arg_orderid, string arg_pfcode, ref string arg_msg)
- public function integer uof_finish_procode_qty (long arg_scid, long arg_orderid, string arg_procode, integer arg_type, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl_planqty (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- private subroutine p_replace_mx ()
- public function integer getinfo (long arg_scid, long arg_orderid, ref string arg_msg)
- public function integer f_assign_inqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, integer arg_plantype, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_pz_change (integer arg_type, string arg_updatestr, long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_msg)
- public function integer audit_scll (long arg_scid, long arg_orderid, integer arg_scllflag, ref string arg_msg, boolean arg_ifcommit)
- public function integer caudit_scll (long arg_scid, long arg_orderid, integer arg_scllflag, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_check_if_zl (long arg_scid, long arg_orderid, ref string arg_msg)
- public function integer uof_get_scllflag (long arg_scid, long arg_orderid, ref integer arg_scllflag, ref string arg_msg)
- public function integer uof_check_if_rbuy (long arg_scid, long arg_orderid, ref string arg_msg)
- public function integer uof_check_if_wfjg (long arg_scid, long arg_orderid, ref string arg_msg)
- public function integer f_add_conpfqty (long arg_scid, long arg_orderid, decimal arg_pfqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer f_add_rqbuyqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_plantype, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer f_assign_rqmtrlqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, integer arg_plantype, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_secdscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg)
- public function integer add_thdscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg)
- public function integer uof_tryfinish_packorder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer mod_perfinishdate (long arg_scid, long arg_orderid, datetime arg_oridate, datetime arg_newdate, string arg_reason, ref string arg_msg, boolean arg_ifcommit)
- public function integer f_add_dstrqty_ws (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_noallocqty, decimal arg_allocqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer f_add_dstrqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, decimal arg_costamt, ref string arg_msg, boolean arg_ifcommit, long arg_relint_1, ref decimal arg_overqty)
- public function integer uof_stopjj (long arg_scid, long arg_orderid, string arg_reason, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_fpqty (long arg_scid, long arg_orderid, long arg_fpscid, long arg_fporderid, decimal arg_fpqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_del_fpqty (long arg_scid, long arg_orderid, long arg_fpscid, long arg_fporderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uf_add_taskqty (long arg_scid, long arg_orderid, long arg_mtrlid, string arg_procode, decimal arg_taskqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxskl (long arg_scid, long arg_orderid, decimal arg_qty, decimal arg_costamt, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_order_cmpcost (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_reccl (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_order_add_wkp_tree (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl_planqty_wkp (long arg_scid, long arg_orderid, string arg_wkpname, long arg_wrkgrpid, long arg_owrkgrpid, decimal arg_addqty, datetime arg_bdate, datetime arg_edate, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx_wrk (long arg_tmpid, long arg_wrkgrpid, long arg_owrkgrpid, string arg_wkpname, datetime arg_begindate, datetime arg_requiredate, decimal arg_lastdays, decimal arg_lasthour, ref string arg_msg)
- public function integer uof_order_add_wkp_tmp (long arg_scid, long arg_orderid, long arg_tmpid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auto_order_plan (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_newdscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg)
- public function integer sec_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_sec_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_procode_qty (long arg_scid, long arg_orderid, string arg_procode, datetime arg_billdate, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_workgroup_qty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, datetime arg_finishdate, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uo_cmp_datediff_wrk (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_ordermtrl_tree_acmpqty (long arg_scid, long arg_orderid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_ordermtrl_tree_sqty (long arg_scid, long arg_orderid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uo_cmp_tree_date (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uo_cmp_wrk_edate (datetime arg_sdate, long arg_wrkgrpid, decimal arg_lasthour, ref datetime arg_edate, ref decimal arg_resthour_e, ref string arg_msg)
- public function integer uof_create_order_plan_tech (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_delete_order_plan_tech (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_order_cmp_wrk_date (long arg_scid, long arg_orderid, datetime arg_sdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer mod_order_requiredate (long arg_scid, long arg_orderid, datetime arg_oridate, datetime arg_newdate, datetime arg_oriredate, datetime arg_newredate, string arg_reason, boolean arg_ifcmpdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_outtypestr_zl (long arg_scid[], long arg_orderid[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_tryfinish_packorder2 (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uf_add_ftaskqty (long arg_scid, long arg_orderid, long arg_mtrlid, string arg_procode, datetime arg_billdate, decimal arg_ftaskqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_okplan (long arg_scid, long arg_orderid, integer arg_okplanflag, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_reset_tree_barcode (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_order_add_wkp_tree_doing (long arg_scid, long arg_orderid, long arg_this_printid, long arg_next_printid, s_ordermtrl_workgroup_tree arg_s_tree[], integer arg_kind, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_minbdate (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_orderrqmtrl_zlqty (long arg_scid, long arg_orderid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_zlqty, 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_mrpcode (long arg_scid, long arg_orderid, string arg_mrpcode, ref string arg_msg, boolean arg_ifcommit)
- public function integer stoporder_cancel (long arg_scid, long arg_orderid, integer arg_ifchange, ref string arg_msg, boolean arg_ifcommit)
- public function integer plan_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_plan_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_update_orderdate (long arg_scid, long arg_orderid, datetime arg_orderdate, datetime arg_requiredate, string arg_dscrp, decimal arg_addqty, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_createorder_pt (long arg_scid, long arg_orderid, integer arg_pttype, integer arg_bomflag, boolean arg_ifcommit, ref string arg_msg)
- public function integer stoporder (long arg_scid, long arg_orderid, integer arg_ifchange, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer f_add_flqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_bom_workprice (long arg_mtrlid, string arg_pfcode, decimal arg_qty, ref string arg_msg)
- public function integer uof_protype_workprice (long arg_mtrlid, string arg_pfcode, string arg_wpcode, decimal arg_qty, ref string arg_msg)
- public function integer add_gydscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg)
- public function integer uof_stop_tree (long arg_scid, long arg_orderid, decimal arg_stopqty, integer arg_type, integer arg_ifaddhis, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_mtrl_change (long arg_scid, long arg_orderid, decimal arg_rate, integer arg_type, integer arg_ifchange, integer arg_ifaddhis, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_c_stopjj (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_workprice_parm (long arg_mtrlid, string arg_wpcode, string arg_procode, decimal arg_proqty, string arg_parmstr, integer arg_kind, ref string arg_value_str, ref decimal arg_value_dec)
- public function integer uof_tryfinish_packorder_buy (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_reccl_cf (long arg_scid, long arg_orderid, s_order_ml_rqmtrl_scll arg_s_mtrl_scll, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_order_add_tree_barcode (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (string arg_relcode, datetime arg_orderdate, long arg_taskid, string arg_taskcode, long arg_cusid, long arg_mtrlid, string arg_status_mode, string arg_woodcode, string arg_pcode, decimal arg_orderqty, string arg_dscrp, string arg_assign_emp, datetime arg_requiredate, integer arg_ordertype, string arg_taskrelcode, string arg_pfcode, long arg_taskmxid, long arg_porderid, long arg_utid, long arg_wrkgrpid, string arg_gydscrp, string arg_pfklmode, long arg_pforderid, string arg_pfordercode, decimal arg_pfqty, string arg_secdscrp, string arg_thdscrp, long arg_taskscid, datetime arg_perfinishdate, long arg_storageid, long arg_tmpid, integer arg_level, string arg_typename, string arg_outtypestr, long arg_pzlorderid, integer arg_iffg, integer arg_ifauto, integer arg_if_inherit, decimal arg_addqty, string arg_wpcode, integer arg_pctype, ref string arg_msg)
- public function integer tmp_order_add_pro (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_order_add_pro (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit, boolean arg_ifall, boolean arg_ifupdateprice, integer arg_ifproaudit)
- public function integer uof_order_add_wkp (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit, integer arg_if_olddate)
- public function integer addmxcmpl_rqacmpqty (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmx_sptcheckqty (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- private function integer p_reset ();//int p_reset()
- //清除对象及其明细
- scid = 0
- orderid = 0
- ordercode = ''
- Accomplishemp = ''
- permit_emp = ''
- opemp = ''
- modemp = ''
- stopemp = ''
- relcode = ''
- mtrlid = 0
- status_mode = ''
- woodcode = ''
- pcode = ''
- orderqty = 0
- AcmpQty = 0
- stopqty = 0
- dscrp = ''
- Assign_emp = ''
- wrkGrpid = 0
- gydscrp = ''
- secdscrp = ''
- thdscrp = ''
- stopjj = 0
- stopjjemp = ''
- stopjjreason = ''
- storageid = 0
- capacity = 0
- arg_msg_str = ''
- //清除明细
- p_clearmx()
- RETURN 1
- end function
- public function integer f_distribute_dstrqty (long arg_atid, ref string arg_msg);//分摊材料用量
- //1.查询时间段副材料用料量
- //2.查询时间段生产计划明细完成时间入仓产品用料分摊
- //====================================================================
- // Function: f_distribute_dstrqty()
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_atid
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2004.10.04
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- int rslt = 1
- //long count,i,k
- //long ls_mtrlid,arr_mtrlid[]
- //string ls_mtrlcode,arr_mtrlcode[],ls_mtrlname,arr_mtrlname[]
- //decimal ls_outqty,arr_outqty[]
- //datetime ls_firstdate,ls_enddate
- //datastore ds_dstrqty
- //long li_orderid,li_olmtrlid,li_mtrlid
- //decimal li_rqqty,li_sumrqqty
- //
- //select firstdate,enddate
- //into :ls_firstdate,:ls_enddate
- //from u_apportion_time
- //where atid = :arg_atid;
- //if sqlca.sqlcode <> 0 then
- // rslt =0
- // arg_msg = '查询盘点时间失败'
- // goto ext
- //end if
- //
- //declare cur_apportion cursor for
- // select u_mtrldef.mtrlid,
- // u_apportion.orqty + u_apportion.inqty - u_apportion.balcqty,
- // u_mtrldef.mtrlcode,
- // u_mtrldef.mtrlname
- // from u_mtrldef,
- // u_apportion
- // where ( u_mtrldef.mtrlid = u_apportion.mtrlid )
- // and ( u_mtrldef.mtrlkind = 1 )
- // and ( u_apportion.atid = :arg_atid );
- //open cur_apportion;
- //fetch cur_apportion into :ls_mtrlid,:ls_outqty,:ls_mtrlcode,:ls_mtrlname;
- //do while sqlca.sqlcode = 0
- // count++
- // arr_mtrlid[count] = ls_mtrlid
- // arr_mtrlcode[count] = ls_mtrlcode
- // arr_mtrlname[count] = ls_mtrlname
- // arr_outqty[count] = ls_outqty
- // fetch cur_apportion into :ls_mtrlid,:ls_outqty,:ls_mtrlcode,:ls_mtrlname;
- //loop
- //close cur_apportion;
- //
- //if count <= 0 then
- // arg_msg = '该分摊时间还未盘车间数量'
- // rslt = 0
- // goto ext
- //end if
- //
- //ds_dstrqty = create datastore
- //ds_dstrqty.dataobject = 'ds_distribute_dstrqty'
- //ds_dstrqty.settransobject(sqlca)
- //for i = 1 to count
- // li_orderid = 0
- // li_olmtrlid = 0
- // li_mtrlid = 0
- // li_rqqty = 0
- // li_sumrqqty = 0
- //
- // if ds_dstrqty.retrieve(ls_firstdate,ls_enddate,arr_mtrlid[i]) <= 0 then continue
- // li_sumrqqty = ds_dstrqty.object.sum_rqqty[1]
- //
- // ds_dstrqty.accepttext()
- // for k = 1 to ds_dstrqty.rowcount()
- // li_orderid = ds_dstrqty.object.u_orderrqmtrl_orderid[i]
- // li_olmtrlid = ds_dstrqty.object.u_orderrqmtrl_olmtrlid[i]
- // li_mtrlid = ds_dstrqty.object.u_orderrqmtrl_mtrlid[i]
- // li_rqqty = ds_dstrqty.object.u_orderrqmtrl_rqqty[i]
- //
- // update u_OrderRqMtrl
- // set DstrQty = DstrQty + (:li_rqqty / :li_sumrqqty) * :li_sumrqqty,
- // atid = :arg_atid
- // where orderid = :li_orderid
- // and olmtrlid = :li_olmtrlid
- // and mtrlid = :li_mtrlid;
- // if sqlca.sqlcode <> 0 then
- // rslt = 0
- // arg_msg = '分摊物料'+arr_mtrlname[i]+'用料量失败~n'+sqlca.sqlerrtext
- // goto ext
- // end if
- // next
- //next
- //
- //ext:
- return rslt
- end function
- public function integer add_dscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加计划备注操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK;
- GOTO ext
- END IF
- DSCRP = DSCRP+' '+arg_newdescppart
- ext:
- IF rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer del (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_fp
- Long i,cnt
- Long ll_scid,ll_orderid,ll_mtrlid,ll_wrkgrpid
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_fpqty
- uo_mtrlware_assign uo_fp_plan
- uo_fp_plan = Create uo_mtrlware_assign
- uo_fp_plan.commit_transaction = sqlca
- datastore ds_fp_plan_del
- ds_fp_plan_del = Create datastore
- ds_fp_plan_del.DataObject = 'ds_fp_plan_plankind_del'
- ds_fp_plan_del.SetTransObject(sqlca)
- datastore ds_zl_fp_del
- ds_zl_fp_del = Create datastore
- ds_zl_fp_del.DataObject = 'ds_zl_scllqty_from_orderrqmtrl_fp_cancel'
- ds_zl_fp_del.SetTransObject(sqlca)
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF Status <> 0 THEN
- rslt = 0
- arg_msg = "计划已经审核,不可以删除"
- GOTO ext
- END IF
- DELETE FROM u_OrderRqMtrl
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计划的计划用料表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM U_OrderRqwp
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计划的工序表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderMtrl_workgroup
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计划的交接明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_ordermtrl_wrk_jd
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除工组工作量明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml_perfinishdate_log
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计划的预计完成日期修改日志操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderRqMtrl_tree
- WHERE u_OrderRqMtrl_tree.orderid = :arg_orderid
- And u_OrderRqMtrl_tree.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划运算树操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //处理分配占用数
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_OrderRqMtrl_scll
- WHERE ( u_OrderRqMtrl_scll.scid = :arg_scid ) AND
- ( u_OrderRqMtrl_scll.OrderID = :arg_orderid ) AND
- ( u_OrderRqMtrl_scll.fpqty > 0 );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令领料明细是否有已分配数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //取消分配
- IF cnt > 0 THEN
- ds_zl_fp_del.Retrieve(arg_scid,arg_orderid)
- FOR i = 1 To ds_zl_fp_del.RowCount()
- ll_scid = ds_zl_fp_del.Object.scid[i]
- ll_orderid = ds_zl_fp_del.Object.orderid[i]
- ll_mtrlid = ds_zl_fp_del.Object.mtrlid[i]
- ll_wrkgrpid = ds_zl_fp_del.Object.wrkgrpid[i]
- ls_status = ds_zl_fp_del.Object.Status[i]
- ls_woodcode = ds_zl_fp_del.Object.woodcode[i]
- ls_pcode = ds_zl_fp_del.Object.pcode[i]
- ld_fpqty = ds_zl_fp_del.Object.fpqty[i]
-
- IF uo_fp_plan.uof_assign_add_to_zl_scll(ll_scid,ll_orderid,ll_mtrlid,ll_wrkgrpid,&
- ls_status,ls_woodcode,ls_pcode,0 - ld_fpqty,0,0,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- /////////////////////////////////// //
- DELETE FROM u_OrderRqMtrl_scll
- WHERE u_OrderRqMtrl_scll.orderid = :arg_orderid
- And u_OrderRqMtrl_scll.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划用料明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml_mx
- WHERE u_order_ml_mx.orderid = :arg_orderid
- And u_order_ml_mx.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //删除原有分配计划明细
- ds_fp_plan_del.Retrieve(arg_scid,arg_orderid,1)
- IF ds_fp_plan_del.RowCount() > 0 THEN
- IF ds_fp_plan_del.Object.sumassignqty[1] > 0 THEN
- rslt = 0
- arg_msg = "原分配计划明细已有分配数,操作取消"
- GOTO ext
- END IF
- END IF
- FOR ll_fp = 1 To ds_fp_plan_del.RowCount()
- IF uo_fp_plan.uof_plan_del(ds_fp_plan_del.Object.id[ll_fp],&
- ds_fp_plan_del.Object.qty[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '删除分配计划失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- /////////////////////////////////// //
- DELETE FROM u_order_zl_planmx
- WHERE u_order_zl_planmx.orderid = :arg_orderid
- And u_order_zl_planmx.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划进仓计划操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml
- WHERE u_order_ml.orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //扣减相关部件生产计划的已分配数量
- IF pforderid > 0 THEN
- IF f_add_conpfqty(arg_scid,pforderid,0 - pfqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //更新主计划自制需求指令单数量yyx20120815
- IF ordertype = 4 And pzlorderid = 0 THEN
- IF uof_update_orderrqmtrl_zlqty(arg_scid,porderid,mtrlid,wrkgrpid,&
- status_mode,woodcode,pcode,0 - orderqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_fp_plan
- Destroy ds_fp_plan_del
- Destroy ds_zl_fp_del
- Return (rslt)
- end function
- public function integer updatebegin (long arg_scid, long arg_orderid, ref string arg_msg);Long rslt = 1
- IF uo_option_if_oa_order_ml = -1000 THEN
- rslt = 0
- arg_msg = '选项:[230]生产计划使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[225]生产计划使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_if_oa_order_zl = -1000 THEN
- rslt = 0
- arg_msg = '选项:[231]生产指令单使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_zl_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[226]生产指令单使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- p_reset()
- rslt = p_getinfo(arg_scid,arg_orderid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF ordertype <> 4 THEN
- IF uo_option_if_oa_order_ml = 1 And uo_option_order_ml_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_orderid,36,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_if_oa_order_zl = 1 And uo_option_order_ml_zl_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_orderid,1138,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF Status <> 0 THEN
- rslt = 0
- arg_msg = '已经处于审核或完成等状态,不可以修改,如果计划未领料并要修改请先撤销审核'
- GOTO ext
- END IF
- p_clearmx() //清除明细
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Long ls_i
- String ls_mtrlcode
- Int ll_statustype,ll_ordertype,li_ifpackpro,li_ifpack,li_storagetype_mtrl
- Long ll_porderid
- Int li_ifzl_add0ware
- String ls_wpcode
- Long ll_mtrlid,ll_wrkid
- Int li_mtrlorigin
- Decimal ld_packqty_mtrl
- String ls_plancode
- If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_orderrqmtrl_tree_ifpack2'
- ds_tree.SetTransObject(sqlca)
- datastore ds_gb_mx
- ds_gb_mx = Create datastore
- ds_gb_mx.DataObject = 'dw_getbarmx_edit'
- ds_gb_mx.SetTransObject(sqlca)
- uo_order_ml uo_zl
- uo_zl = Create uo_order_ml
- uo_getbar uo_get
- uo_get = Create uo_getbar
- If uo_option_if_oa_order_ml = -1000 Then
- rslt = 0
- arg_msg = '选项:[230]生产计划使用审批流程,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_order_ml_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[225]生产计划使用二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_if_oa_order_zl = -1000 Then
- rslt = 0
- arg_msg = '选项:[231]生产指令单使用审批流程,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_order_ml_zl_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[226]生产指令单使用二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_order_bh_use_yc = -1000 Then
- rslt = 0
- arg_msg = '选项:[074]备货生产计划选销售预测单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_def_bom = -1000 Then
- rslt = 0
- arg_msg = '选项:[013]生产计划审核时需要检查是否已定义物料清单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_order_mtrlware = -1000 Then
- rslt = 0
- arg_msg = '选项:[143]生产计划审核增加0库存,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_inware_mtrlcuscode = -1000 Then
- rslt = 0
- arg_msg = '选项:[138]生产进仓单产品批号策略按指令单号,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_use_workgroup_tree = -1000 Then
- rslt = 0
- arg_msg = '选项:[233]使用工艺路线,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_def_mtrlwkp = -1000 Then
- rslt = 0
- arg_msg = '选项:[239]生产计划审核时需要检查是否检查工组流程是否定义,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_ifpackpro2_if_no_pack2 = -1000 Then
- rslt = 0
- arg_msg = '选项:[340]个性包件产品物料清单允许没有个性包件,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_order_zl_auto_getbar = -1000 Then
- rslt = 0
- arg_msg = '选项:[403]胚板指令单终审是否自动生成条码生成单并审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_canpack_ifzanyong = -1000 Then
- rslt = 0
- arg_msg = '选项:[417]通用包件产品可装数选项,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- uo_saletask_ll uo_task_ll
- uo_task_ll = Create uo_saletask_ll
- uo_task_ll.commit_transaction = sqlca
- If arg_orderid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If status <> 0 Then
- rslt = 0
- arg_msg = "计划只有在待审批状态才可以执行审批,请核对"
- Goto ext
- End If
- If getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- //检查是否有相关配置变更单未审
- cnt = 0
- Select count(*)
- Into :cnt
- From u_saletaskmx_change Inner JOIN
- u_saletaskmx_changemx ON
- u_saletaskmx_change.Billid = u_saletaskmx_changemx.billid
- Where (u_saletaskmx_change.affirmflag = 0 Or u_saletaskmx_change.flag = 0)
- And (u_saletaskmx_changemx.orderid = :arg_orderid)
- And (u_saletaskmx_changemx.scid = :arg_scid) ;
- If sqlca.SQLCode <> 0 Then
- arg_msg = ordercode + ',查询是否有相关配置变更单未审失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
- arg_msg = ordercode + ',有相关配置变更单未审,请先审核'
- rslt = 0
- Goto ext
- End If
- Select mtrlcode,
- statusflag,
- ordertype,
- ifpackpro,
- ifpack,
- storagetype,
- mtrlorigin,
- packqty
- Into :ls_mtrlcode,
- :ll_statustype,
- :ll_ordertype,
- :li_ifpackpro,
- :li_ifpack,
- :li_storagetype_mtrl,
- :li_mtrlorigin,
- :ld_packqty_mtrl
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- //检查是否已建立清单
- If ordertype <> 4 Then
- If ll_statustype <> 2 Then
- If uo_option_def_bom = 1 Then
- If li_mtrlorigin <> 2 Then
-
- cnt = 0
- Select count(*) Into :cnt
- From u_PrdPF,u_Mtrl_pf
- Where u_PrdPF.mtrlid = :mtrlid
- And u_PrdPF.pfcode = u_Mtrl_pf.pfcode
- And u_PrdPF.mtrlid = u_Mtrl_pf.mtrlid
- And u_Mtrl_pf.pfcode = :pfcode
- And u_Mtrl_pf.flag = 1;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品:'+ls_mtrlcode + ',清单:'+ pfcode +',是否已设置物料清单明细失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '产品:'+ls_mtrlcode + ',清单:'+ pfcode +',物料清单用料明细未建立,请检查'
- rslt = 0
- Goto ext
- End If
- End If
- ElseIf uo_option_def_bom = 2 Then
- If f_check_pf_flag(mtrlid,pfcode,0,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- End If
- //检查是否已建立工组流程
- If uo_option_def_mtrlwkp = 1 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_mtrl_wkp
- Where u_mtrl_wkp.mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品:'+ls_mtrlcode +',是否已设置工组流程明细失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '产品:'+ls_mtrlcode + ',工组流程明细未建立,请检查'
- rslt = 0
- Goto ext
- End If
- End If
- If ordertype = 1 Or &
- ordertype = 2 Or &
- ordertype = 3 Or &
- ordertype = 0 And &
- uo_option_order_bh_use_yc = 1 Then
-
- If ordertype <> 3 Then
- If it_mxbt = 0 Then
- rslt = 0
- arg_msg = '没有订单明细,操作终止,请检查'
- Goto ext
- End If
- End If
-
- If ordertype = 2 Then
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- If uo_task_ll.updateassignqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,s_order_mx[ls_i].orderqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- Else
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- If uo_task.updateassignqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,s_order_mx[ls_i].orderqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- End If
- ElseIf ordertype = 4 And pzlorderid = 0 Then
- If it_mxbt = 0 Then
- rslt = 0
- arg_msg = '没有计划明细,操作终止,请检查'
- Goto ext
- End If
-
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- Int li_plantype
- Long ll_wrkGrpid_scll
-
- Select plantype,wrkGrpid
- Into :li_plantype,:ll_wrkGrpid_scll
- From u_OrderRqMtrl
- Where scid = :scid
- And orderid = :s_order_mx[ls_i].taskid
- And mxpkid = :s_order_mx[ls_i].taskmxid;
-
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询生产自制需求资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
-
- If f_assign_rqmtrlqty(scid,s_order_mx[ls_i].taskid,ll_wrkGrpid_scll,&
- mtrlid,ls_mtrlcode,status_mode,&
- woodcode,pcode,s_order_mx[ls_i].orderqty,0,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- End If
- Update u_order_ml
- Set permit_emp = :publ_operator,
- permit_date = getdate(),
- status = 7
- Where orderid = :arg_orderid
- And scid = :scid
- And status = 0;
- If sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致计划审批操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //====================================================================
- // 更新订单排产数量,加工生产计划工序
- //====================================================================
- If Not (ordertype <> 4 And ll_ordertype = 1) Then
- If outscllflag = 1 And ordertype <> 3 Then
- If uof_order_add_pro(arg_scid,arg_orderid,arg_msg,False,True,False,0) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uof_order_add_wkp(arg_scid,arg_orderid,arg_msg,False,0) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uof_order_add_wkp_tree(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
-
- End If
- End If
- If uo_option_order_mtrlware > 0 Then
- Long ll_mtrlwareid,ll_storageid_p
- Long ll_mtrlid_p
- String ls_mtrlcuscode
- String ls_taskrelcode_p,ls_ordercode_p
- Long ll_cusid_p
- Int li_balctype
-
- If uo_option_inware_mtrlcuscode = 0 Or li_ifpackpro = 1 Or li_ifpackpro = 3 Then
- ls_mtrlcuscode = ''
- Else
- ls_mtrlcuscode = ordercode
- End If
-
- If storageid > 0 Then
- Select balctype
- Into :li_balctype
- From u_storage
- Where storageid = :storageid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询仓库是否使用客户库存失败失败,"+sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- If ordertype <> 4 And ll_ordertype = 0 And storageid > 0 Then //合并排产,生产计划增加0库存,否则相关指令单增加库存
- If (li_ifpackpro = 2 Or li_ifpackpro = 4) And ll_ordertype = 0 Then
- ls_mtrlcuscode = ordercode
- End If
-
- If li_balctype = 0 Then
- cusid = 0
- Else
- If li_storagetype_mtrl = 1 Then cusid = 0
- End If
-
- If li_ifpackpro = 1 And uo_option_canpack_ifzanyong = 1 Then
- ls_plancode = ''
- Else
- ls_plancode = taskrelcode
- End If
-
- Select top 1 mtrlwareid Into :ll_mtrlwareid
- From u_mtrlware
- Where mtrlid = :mtrlid
- And status = :status_mode
- And storageid = :storageid
- And woodcode = :woodcode
- And plancode = :ls_plancode
- And pcode = :pcode
- And sptid = :cusid
- And mtrlcuscode = :ls_mtrlcuscode;
-
- If sqlca.SQLCode = -1 Then
- arg_msg = '查询产品库存失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- ElseIf sqlca.SQLCode = 100 Then
- ll_mtrlwareid = 0
-
- ll_mtrlwareid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ll_mtrlwareid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- Insert Into u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid,mtrlcuscode)
- Values(:scid,:ll_mtrlwareid,:mtrlid,:storageid,0,:status_mode,:ls_plancode,:woodcode,:pcode,:cusid,:ls_mtrlcuscode);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '主生产计划产品加0库存失败或物料已经有库存,请检查,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- ElseIf ordertype = 4 And porderid > 0 Then
- Select u_order_ml.mtrlid,u_order_ml.taskrelcode,u_order_ml.cusid,u_order_ml.storageid,u_order_ml.ordercode
- Into :ll_mtrlid_p,:ls_taskrelcode_p,:ll_cusid_p,:ll_storageid_p,:ls_ordercode_p
- From u_order_ml
- Where u_order_ml.orderid = :porderid
- And u_order_ml.scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "加0库存时,指令单查询上级主生产计划资料失败,"+sqlca.SQLErrText
- Goto ext
- End If
-
- If ll_storageid_p > 0 Then
- Select balctype
- Into :li_balctype
- From u_storage
- Where storageid = :ll_storageid_p;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询主生产计划仓库是否使用客户库存失败失败,"+sqlca.SQLErrText
- Goto ext
- End If
-
- If ll_ordertype = 1 And ll_mtrlid_p = mtrlid Or li_ifpack = 2 Then
- If ll_ordertype = 1 And ll_mtrlid_p = mtrlid And (li_ifpackpro = 0 Or li_ifpackpro = 2 Or li_ifpackpro = 4) And pzlorderid = 0 Then
- ls_mtrlcuscode = ordercode
- ls_plancode = ls_taskrelcode_p
- li_ifzl_add0ware = 1
-
- ElseIf ll_ordertype = 1 And ll_mtrlid_p = mtrlid And (li_ifpackpro = 2 Or li_ifpackpro = 4) And pzlorderid > 0 Or li_ifpack = 2 And ll_mtrlid_p <> mtrlid Then
- Select u_order_ml.taskrelcode,u_order_ml.cusid,u_order_ml.ordercode
- Into :ls_taskrelcode_p,:ll_cusid_p,:ls_ordercode_p
- From u_order_ml
- Where u_order_ml.orderid = :pzlorderid
- And u_order_ml.scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "加0库存时,查询上级指令资料失败,"+sqlca.SQLErrText
- Goto ext
- End If
- ls_mtrlcuscode = ls_ordercode_p
-
- If uo_option_order_mtrlware = 1 Then
- li_ifzl_add0ware = 1
- ElseIf uo_option_order_mtrlware = 2 Then
- li_ifzl_add0ware = 0
- End If
- ElseIf ll_ordertype = 1 And li_ifpack = 2 And ll_mtrlid_p = mtrlid Then
- ls_mtrlcuscode = ordercode
- ls_plancode = ls_taskrelcode_p
- If uo_option_order_mtrlware = 1 Then
- li_ifzl_add0ware = 1
- ElseIf uo_option_order_mtrlware = 2 Then
- li_ifzl_add0ware = 0
- End If
- ElseIf ll_ordertype = 1 And ll_mtrlid_p = mtrlid And (li_ifpackpro = 1 Or li_ifpackpro = 3) Then
- ls_mtrlcuscode = ''
-
- If li_ifpackpro = 1 And uo_option_canpack_ifzanyong = 1 Then
- ls_plancode = ''
- Else
- ls_plancode = ls_taskrelcode_p
- End If
- li_ifzl_add0ware = 1
- End If
-
- If li_ifzl_add0ware = 1 Then
- If li_balctype = 0 Then
- ll_cusid_p = 0
- Else
- If li_storagetype_mtrl = 1 Then ll_cusid_p = 0
- End If
-
- Select top 1 mtrlwareid Into :ll_mtrlwareid
- From u_mtrlware
- Where mtrlid = :mtrlid
- And status = :status_mode
- And storageid = :ll_storageid_p
- And woodcode = :woodcode
- And plancode = :ls_plancode
- And pcode = :pcode
- And sptid = :ll_cusid_p
- And mtrlcuscode = :ls_mtrlcuscode;
-
- If sqlca.SQLCode = -1 Then
- arg_msg = '查询指令单产品是否有库存记录失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- ElseIf sqlca.SQLCode = 100 Then
- ll_mtrlwareid = 0
-
- ll_mtrlwareid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ll_mtrlwareid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- Insert Into u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid,mtrlcuscode)
- Values(:scid,:ll_mtrlwareid,:mtrlid,:ll_storageid_p,0,:status_mode,:ls_plancode,:woodcode,:pcode,:ll_cusid_p,:ls_mtrlcuscode);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '指令单产品加0库存失败或物料已经有库存,请检查,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- End If
- End If
- End If
- End If
- End If
- Int li_ordertype_p,li_ifpackpro_p
- Long ll_i,ll_j
- Long ll_orderid_tmp
- Long ll_pmtrlid
- String ls_p_status,ls_p_woodcode,ls_p_pcode
- Boolean lb_if_autozl = False
- s_mtrlcfg_expr s_pz[]
- If ordertype <> 4 Then
- If (li_ifpackpro = 4 Or li_ifpackpro = 2 ) And ll_ordertype = 0 Then
- lb_if_autozl = True
- End If
-
- ll_porderid = arg_orderid
- Else
- If porderid = 0 Then
- lb_if_autozl = False
- Else
- Select u_mtrldef.ordertype,
- u_mtrldef.ifpackpro,
- u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode
- Into :li_ordertype_p,
- :li_ifpackpro_p,
- :ll_pmtrlid,
- :ls_p_status,
- :ls_p_woodcode,
- :ls_p_pcode
- From u_Order_ml Inner JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- Where u_Order_ml.orderid = :porderid
- And u_order_ml.scid = :scid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询上级计划产品相关信息失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If li_ordertype_p = 1 And &
- mtrlid = ll_pmtrlid And &
- (li_ifpackpro_p = 2 Or li_ifpackpro_p = 4 And status_mode = ls_p_status And woodcode = ls_p_woodcode And pcode = ls_p_pcode And pzlorderid = 0) Then
- lb_if_autozl = True
- End If
- ll_porderid = porderid
- End If
- End If
- Decimal ld_pzqty
- If lb_if_autozl Then
-
- uo_zl.newbegin(arg_scid)
- If li_ifpackpro = 4 Then
- f_checkpz(status_mode,s_pz[])
-
- For ll_i = 1 To UpperBound(s_pz)
- ld_pzqty = Dec(s_pz[ll_i].qty)
- If uo_zl.acceptmx(relcode,&
- orderdate,&
- 0,&
- '',&
- 0,&
- mtrlid,&
- s_pz[ll_i].cfgname,&
- woodcode,&
- pcode,&
- orderqty * ld_pzqty,&
- dscrp,&
- publ_operator,&
- requiredate,&
- 4,&
- taskrelcode,&
- pfcode,&
- taskmxid,&
- ll_porderid,&
- ll_i,&
- wrkGrpid,&
- gydscrp,&
- pfklmode,&
- 0,'',0,&
- secdscrp,&
- thdscrp,&
- arg_scid,&
- perfinishdate,&
- 0,&
- 0,&
- Level,&
- typename,&
- outtypestr,&
- arg_orderid,&
- 0,&
- 0,0,addqty,&
- wpcode,0,&
- arg_msg) = 0 Then
- arg_msg = '建立相关生产指令单失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
- Next
- ElseIf li_ifpackpro = 2 Then
- If ll_ordertype = 0 Then
- ds_tree.Retrieve(arg_scid,arg_orderid)
- Else
- ds_tree.Retrieve(arg_scid,ll_porderid)
- End If
-
- For ll_i = 1 To ds_tree.RowCount()
- ll_mtrlid = ds_tree.Object.u_orderrqmtrl_tree_mtrlid[ll_i]
- ll_wrkid = ds_tree.Object.u_orderrqmtrl_tree_produce_wrkgrpid[ll_i]
-
- Select top 1 wpcode
- Into :ls_wpcode
- From u_mtrl_workprice
- Where mtrlid = :ll_mtrlid
- And wrkid = :ll_wrkid
- Order By ifdft Desc;
- If sqlca.SQLCode <> 0 Then ls_wpcode = ''
-
- If uo_zl.acceptmx(relcode,&
- orderdate,&
- 0,&
- '',&
- 0,&
- ds_tree.Object.u_orderrqmtrl_tree_mtrlid[ll_i],&
- ds_tree.Object.u_orderrqmtrl_tree_status[ll_i],&
- ds_tree.Object.u_orderrqmtrl_tree_woodcode[ll_i],&
- ds_tree.Object.u_orderrqmtrl_tree_pcode[ll_i],&
- ds_tree.Object.u_orderrqmtrl_tree_truerqqty[ll_i]*orderqty/ds_tree.Object.u_order_ml_orderqty[ll_i],&
- dscrp,&
- publ_operator,&
- requiredate,&
- 4,&
- taskrelcode,&
- ds_tree.Object.u_orderrqmtrl_tree_pfcode[ll_i],&
- taskmxid,&
- ll_porderid,&
- ll_i,&
- ds_tree.Object.u_orderrqmtrl_tree_produce_wrkgrpid[ll_i],&
- gydscrp,&
- pfklmode,&
- 0,'',0,&
- secdscrp,&
- thdscrp,&
- arg_scid,&
- perfinishdate,&
- 0,&
- 0,&
- Level,&
- typename,&
- outtypestr,&
- arg_orderid,&
- 0,&
- 0,0,0,&
- ls_wpcode,0,&
- arg_msg) = 0 Then
- arg_msg = '建立相关生产指令单失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
- Next
- End If
-
- uo_zl.pzlordercode_tmp = ordercode
-
- If ds_tree.RowCount() > 0 And li_ifpackpro = 2 Or UpperBound(s_pz) > 0 And li_ifpackpro = 4 Then
- If uo_zl.Save(arg_msg,False) = 0 Then
- arg_msg = '保存相关生产指令单失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
-
- uo_zl.pzlordercode_tmp = ''
-
- If uo_option_ifpackpro2_if_no_pack2 = 0 Then
- If UpperBound(uo_zl.orderid_arr) = 0 Then
- rslt = 0
- arg_msg = '没有生成相关进仓指令单,请检查,可能没有个性包件或组合配置子件'
- Goto ext
- End If
- End If
-
- For ll_j = 1 To UpperBound(uo_zl.orderid_arr)
- ll_orderid_tmp = uo_zl.orderid_arr[ll_j]
- If uo_zl.audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '审核相关生产指令单失败(初审),'+arg_msg
- Goto ext
- End If
-
- If uo_zl.plan_audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '审核相关生产指令单失败(二审),'+arg_msg
- Goto ext
- End If
-
- If uo_zl.sec_audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '审核相关生产指令单失败(终审),'+arg_msg
- Goto ext
- End If
- Next
- End If
- End If
- If ordertype <> 4 Then
- If uo_option_if_oa_order_ml = 1 And uo_option_order_ml_secaudit = 1 Then
- If f_oa(sqlca,False,arg_msg,36,arg_scid,arg_orderid,ordercode,relcode,dscrp) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Else
- If uo_option_if_oa_order_zl = 1 And uo_option_order_ml_zl_secaudit = 1 Then
- If f_oa(sqlca,False,arg_msg,1138,arg_scid,arg_orderid,ordercode,relcode,dscrp) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- //yyx20140723
- //胚板指令终审自动建立条码生成单
- If uo_option_order_zl_auto_getbar = 1 And ordertype = 4 And ifpban = 1 Then
- s_getbar arg_s_gb
- Long ll_storageid_wrkgrpid
- Decimal ld_packqty
- Long ll_cnt,child_row,j
- String ls_barcode
- DateTime server_dt
-
- Select Top 1 getdate() Into :server_dt From u_user;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询服务器时间失败,操作取消'
- rslt = 0
- Goto ext
- End If
-
- Select storageid Into :ll_storageid_wrkgrpid From u_sc_wkp Where wrkGrpid = :wrkGrpid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询胚板指令单车间资料对应仓库失败,操作取消'
- rslt = 0
- Goto ext
- End If
-
- If ll_storageid_wrkgrpid = 0 Then
- arg_msg = '胚板指令单车间资料对应仓库未设置,操作取消'
- rslt = 0
- Goto ext
- End If
-
- If ld_packqty_mtrl = 0 Then
- ld_packqty_mtrl = 1
- // arg_msg = '胚板指令单物料未设置包装件数,操作取消'
- // rslt = 0
- // GOTO ext
- End If
-
- arg_s_gb.scid = arg_scid
- arg_s_gb.getbarid = 0
- arg_s_gb.getbardate = server_dt
- arg_s_gb.ifrel = 1
- arg_s_gb.orderid = arg_orderid
- arg_s_gb.storageid = ll_storageid_wrkgrpid
- arg_s_gb.mtrlid = mtrlid
- arg_s_gb.cusid = 0
- arg_s_gb.plancode = ''
- arg_s_gb.status = status_mode
- arg_s_gb.woodcode = woodcode
- arg_s_gb.pcode = pcode
- arg_s_gb.mtrlcuscode = ''
- arg_s_gb.Location = ''
- arg_s_gb.packqty = ld_packqty_mtrl
- arg_s_gb.qty = orderqty
- arg_s_gb.dscrp = '胚板指令单终审自动建立条码单'
- arg_s_gb.reason = ''
- arg_s_gb.buytaskprintid = 0
- arg_s_gb.packuqty = 0
- arg_s_gb.uqty = 0
- arg_s_gb.rate = 0
-
- ds_gb_mx.Reset()
- If ld_packqty_mtrl >= 1 Then
- ll_cnt = Ceiling(Truncate(orderqty/ld_packqty_mtrl,10))
- ld_packqty = ld_packqty_mtrl
- Else
- ll_cnt = Ceiling(orderqty*ld_packqty_mtrl)
- ld_packqty = Long(1/ld_packqty_mtrl)
- End If
-
- For j = 1 To ll_cnt
- ls_barcode = getid(0,"TXM",Date(server_dt),False,sqlca) //取得新单据编号
- If ls_barcode = "err" Then
- ls_barcode = ''
- arg_msg = '胚板指令单无法获取条码,操作取消'
- rslt = 0
- Goto ext
- End If
-
- child_row = ds_gb_mx.InsertRow(0)
- ds_gb_mx.Object.barcode[child_row] = ls_barcode
-
- If Mod(orderqty,ld_packqty) = 0 Then
- ds_gb_mx.Object.packqty[child_row] = ld_packqty
- Else
- If j <> ll_cnt Then
- ds_gb_mx.Object.packqty[child_row] = ld_packqty
- Else
- ds_gb_mx.Object.packqty[child_row] = orderqty - ld_packqty * ( ll_cnt - 1 )
- End If
- End If
- Next
- ds_gb_mx.AcceptText()
-
- For j = 1 To ds_gb_mx.RowCount()
- arg_s_gb.arg_s_mx[j].barcode = ds_gb_mx.Object.barcode[j]
- arg_s_gb.arg_s_mx[j].packqty = ds_gb_mx.Object.packqty[j]
- arg_s_gb.arg_s_mx[j].packuqty = ds_gb_mx.Object.packuqty[j]
- arg_s_gb.arg_s_mx[j].rate = ds_gb_mx.Object.rate[j]
- arg_s_gb.arg_s_mx[j].qty = ds_gb_mx.Object.qty[j]
- arg_s_gb.arg_s_mx[j].mxdscrp = ''
- Next
-
- If uo_get.Save(arg_s_gb,publ_operator,arg_msg,False) = 0 Then
- arg_msg = '保存胚板指令单终审自动建立条码生成单失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
-
- If uo_get.auditing(uo_get.uo_getbarid,publ_operator,arg_msg,False) = 0 Then
- arg_msg = '审核胚板指令单终审自动建立条码生成单失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
- End If
- //
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy uo_task
- Destroy uo_task_ll
- Destroy uo_zl
- Destroy uo_get
- Destroy ds_tree
- Destroy ds_gb_mx
- Return rslt
- end function
- public function integer tmpstoporder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- If rslt = 0 Then Goto ext
- If status <> 1 And status <> 2 Then
- rslt = 0
- arg_msg = "计划只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
- Goto ext
- End If
- If status = 1 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_inwaremx Inner JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid And
- u_inwaremx.inwareid = u_inware.inwareid
- Where (u_inware.billtype = 3)
- And (u_inware.flag = 0)
- And (u_inwaremx.scid = :arg_scid)
- And (u_inwaremx.relid = :arg_orderid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = OrderCode+' 查询是否有相关未审核生产进仓单失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If cnt > 0 Then
- rslt = 0
- arg_msg = OrderCode+' 有相关未审核生产进仓单,不能暂停'
- Goto ext
- End If
-
- Update u_order_ml
- Set status = 2,
- stopemp = :publ_operator
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致暂停计划操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Else
- Update u_order_ml
- Set status = 1,
- stopemp = ''
- Where orderid = :arg_orderid
- And scid = :arg_scid ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致取消暂停计划操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Return (rslt)
- end function
- public function integer finishorder (integer arg_finishtype, long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- If uo_option_auto_finish_zl = -1000 Then
- rslt = 0
- arg_msg = '选项:[255]生产计划完成,相关指令单自动完成,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- If rslt = 0 Then Goto ext
- If arg_finishtype = 5 Or arg_finishtype = 6 Then
- If status <> 1 Then
- rslt = 0
- arg_msg = "生产计划只有在进行状态才可以执行完成,请核对"
- Goto ext
- End If
-
- //如果是主计划,下级指令单状态有1,2,4,7,不允许终止主计划
- If ordertype <> 4 Then
- Select count(*) Into :cnt
- From u_order_ml
- Where ordertype = 4
- And porderid = :arg_orderid
- And scid = :arg_scid
- And status In (1,2,4,7);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = OrderCode+'查询下级指令单状态失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If cnt > 0 Then
- rslt = 0
- arg_msg = OrderCode+',有下级指令单处于在进行、暂停、待二审或待终审状态,不能手动完成主计划'
- Goto ext
- End If
- End If
-
- Else
- If arg_finishtype = 1 Then
- If status <> 6 Then
- rslt = 0
- arg_msg = "生产计划只有在手动完成状态下才可以执行取消手动完成,请核对"
- Goto ext
- End If
- End If
- End If
- If arg_finishtype = 5 Or arg_finishtype = 6 Then
- Update u_order_ml
- Set status = :arg_finishtype,
- accomplishdate = getdate(),
- Accomplishemp = :publ_operator
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致完成生产计划操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Else
- Update u_order_ml
- Set status = :arg_finishtype,
- accomplishdate = :null_dt,
- Accomplishemp = ''
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致取消手动完成生产计划操作失败"+"~n"+sqlca.SQLErrText
-
- Goto ext
- End If
- End If
- If uo_option_auto_finish_zl = 1 And ordertype <> 4 Then
- If arg_finishtype = 5 Or arg_finishtype = 6 Then
- Update u_order_ml
- Set status = 5
- Where porderid = :arg_orderid
- And scid = :arg_scid
- And ordertype = 4;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其他原因导致更新相关指令单状态操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Else
- Update u_order_ml
- Set status = 1
- Where porderid = :arg_orderid
- And scid = :arg_scid
- And orderqty > acmpqty
- And ordertype = 4;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其他原因导致更新相关指令单状态操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- End If
- Int li_ifpack
- If ordertype = 4 Then
- Select u_mtrldef.ifpack Into :li_ifpack
- From u_mtrldef
- Where u_mtrldef.mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询物料是否属于包件失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If li_ifpack = 1 Then
- If uof_tryfinish_packorder(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- If uof_order_cmpcost(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- p_reset()
- Return (rslt)
- end function
- public function integer tryfinishorder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,cnt = 0
- Decimal ld_not_finishqty
- Boolean if_finish
- DateTime null_dt
- SetNull(null_dt)
- IF uo_option_auto_finish_zl = -1000 THEN
- rslt = 0
- arg_msg = '选项:[255]生产计划完成,相关指令单自动完成,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "生产计划只有在进行状态下才可以执行设完成状态"
- ELSEIF status <> 5 THEN
- arg_msg = "生产计划只有在完成状态下才可以执行撤消完成状态"
- END IF
- GOTO ext
- END IF
- if_finish = True
- SELECT u_order_ml.orderqty - u_order_ml.acmpqty - u_order_ml.stopqty
- INTO :ld_not_finishqty
- FROM u_order_ml
- WHERE ( u_order_ml.orderid = :arg_orderid )
- And ( u_order_ml.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划未完成数量失败'
- rslt = 0
- GOTO ext
- END IF
- IF if_finish THEN
- IF ld_not_finishqty > 0 THEN if_finish = False
- END IF
- IF status = 1 And if_finish THEN
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator
- WHERE ( u_order_ml.orderid = :arg_orderid )
- And ( u_order_ml.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致生产计划完成状态设置操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- IF status = 5 And Not if_finish THEN
- UPDATE u_order_ml
- SET status = 1,
- accomplishdate = :null_dt,
- accomplishemp = ''
- WHERE ( u_order_ml.orderid = :arg_orderid )
- And ( u_order_ml.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致生产计划撤消完成状态设置操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- IF uo_option_auto_finish_zl = 1 And ordertype <> 4 THEN
- IF if_finish THEN
- UPDATE u_order_ml
- SET status = 5
- WHERE porderid = :arg_orderid
- AND scid = :arg_scid
- And ordertype = 4;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致更新相关指令单状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_order_ml
- SET status = 1
- WHERE porderid = :arg_orderid
- AND scid = :arg_scid
- AND orderqty > acmpqty
- And ordertype = 4;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致更新相关指令单状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- Int li_ifpack,li_ifpackpro
- IF ordertype = 4 THEN
- SELECT u_mtrldef.ifpack,u_mtrldef.ifpackpro
- INTO :li_ifpack,:li_ifpackpro
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料是否属于包件失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF li_ifpack = 1 Or li_ifpack = 2 Or li_ifpackpro = 3 THEN
- IF uof_tryfinish_packorder(arg_scid,arg_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF li_ifpackpro = 4 THEN
- IF uof_tryfinish_packorder2(arg_scid,arg_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF uof_order_cmpcost(arg_scid,arg_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- p_reset()
- Return(rslt)
- end function
- public function integer cancel_finishorder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);
- int rslt = 1,cnt = 0
- datetime null_dt
- setnull(null_dt)
- rslt =p_getinfo(arg_scid,arg_orderid,arg_msg)
- if rslt = 0 then goto ext
- update u_order_ml
- set status = 1,
- accomplishdate = :null_dt,
- Accomplishemp = ''
- where orderid = :arg_orderid
- and scid = :arg_scid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = "因网络或其它原因导致取消完成生产计划操作失败"+"~n"+sqlca.sqlerrtext
- goto ext
- end if
- ext:
- if rslt=0 then
- rollback;
- elseif arg_ifcommit and rslt = 1 then
- commit;
- end if
- p_reset()
- return (rslt)
- end function
- public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long ls_i,ls_j,ll_k,ll_m,ll_n,ll_o,ll_p
- DateTime server_dt
- String ls_sccode
- String ls_billcode
- Long ll_orderid[],ll_orderqty_array[],ll_tmp_orderid
- String ls_ordercode[],ls_tmp_ordercode
- Decimal ld_SaleQty,ld_AssignQty,ld_ordermx_qty
- Long cnt,mx_cnt
- Long ll_taskid
- String ls_taskcode
- Decimal ld_upddrate,ld_upddqty
- Long ll_cnt_code
- String ls_code_find_str
- Long ll_lp,ll_loop
- Long ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- Boolean lb_iffind = False
- DateTime ldt_RqDate,ldt_edate,ldt_RqDate_tree,ldt_edate_tree,ldt_rqdate_up,ldt_edate_up
- Decimal ld_buydays,ld_wfjgdays,ld_Relative
- Long ll_mtrlid_tree,ll_wrkgrpid,ll_produce_wrkgrpid,li_plantype
- String ls_status_tree,ls_woodcode_tree,ls_pcode_tree
- // ll_printid
- Long ll_fp_array,ll_fp
- Int li_ifpackpro,li_ordertype
- s_mtrlware_assign_plan s_fp_plan
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_orderrqmtrl_tree_stop'
- ds_tree.SetTransObject(sqlca)
- uo_mtrlware_assign uo_fp_plan
- uo_fp_plan = Create uo_mtrlware_assign
- uo_fp_plan.commit_transaction = sqlca
- IF uo_option_order_bh_use_yc = -1000 THEN
- rslt = 0
- arg_msg = '选项:[074]备货生产计划选销售预测单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_save_reccl = -1000 THEN
- rslt = 0
- arg_msg = '选项:[222]生产指令单保存时计算用料,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_add_use_wkp = -1000 THEN
- rslt = 0
- arg_msg = '选项:[186]生产计划新建时显示工作量,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_zl_3_day = -1000 THEN
- rslt = 0
- arg_msg = '选项:[316]指令单保存时更新相关采购需求明细日期,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF scid < 0 THEN
- rslt = 0
- arg_msg = '请选择正确的分部'
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN
- arg_msg = '没有计划明细保存'
- rslt = 0
- GOTO ext
- END IF
- FOR ls_i = 1 To it_mxbt
- IF s_order_mx[ls_i].ordertype = 1 THEN //检查主计划
- SELECT u_SaleTaskMx.pqty,
- u_SaleTaskMx.AssignQty,
- u_mtrldef.upddrate,
- u_mtrldef.upddqty
- INTO :ld_SaleQty,
- :ld_AssignQty,
- :ld_upddrate,
- :ld_upddqty
- FROM u_SaleTaskMx,u_mtrldef
- WHERE u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid AND
- u_SaleTaskMx.scid = :s_order_mx[ls_i].taskscid AND
- u_SaleTaskMx.taskid = :s_order_mx[ls_i].taskid AND
- u_SaleTaskMx.printid = :s_order_mx[ls_i].taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询销售订单已排产数量失败!'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml_mx INNER JOIN
- u_Order_ml ON u_order_ml_mx.scid = u_Order_ml.scid AND
- u_order_ml_mx.orderid = u_Order_ml.OrderID
- WHERE u_order_ml_mx.taskid = :s_order_mx[ls_i].taskid AND
- u_order_ml_mx.taskscid = :s_order_mx[ls_i].taskscid AND
- u_order_ml_mx.taskmxid = :s_order_mx[ls_i].taskmxid AND
- u_Order_ml.status = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有未审核生产计划失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ld_ordermx_qty = 0
- IF cnt > 0 THEN
- SELECT sum(u_order_ml_mx.qty)
- INTO :ld_ordermx_qty
- FROM u_order_ml_mx INNER JOIN
- u_Order_ml ON u_order_ml_mx.scid = u_Order_ml.scid AND
- u_order_ml_mx.orderid = u_Order_ml.OrderID
- WHERE u_order_ml_mx.taskid = :s_order_mx[ls_i].taskid AND
- u_order_ml_mx.taskscid = :s_order_mx[ls_i].taskscid AND
- u_order_ml_mx.taskmxid = :s_order_mx[ls_i].taskmxid AND
- u_Order_ml.status = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询已开生计划未审核数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF s_order_mx[ls_i].orderqty > ld_SaleQty * (1 + ld_upddrate) + ld_upddqty - ld_AssignQty - ld_ordermx_qty THEN
- arg_msg = '第'+String(ls_i)+'行待排产数只有:'+String(ld_SaleQty * (1 + ld_upddrate) + ld_upddqty - ld_AssignQty - ld_ordermx_qty,'#,##0.##########')+',不能再排产:'+String(s_order_mx[ls_i].orderqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- ELSEIF s_order_mx[ls_i].ordertype = 4 THEN //检查指令单
- IF s_order_mx[ls_i].pzlorderid = 0 THEN
- SELECT sum(u_OrderRqMtrl.truerqqty),
- sum(u_OrderRqMtrl.consignedQty),
- u_mtrldef.upddrate,
- u_mtrldef.upddqty
- INTO :ld_SaleQty,
- :ld_AssignQty,
- :ld_upddrate,
- :ld_upddqty
- FROM u_OrderRqMtrl,u_mtrldef
- WHERE u_OrderRqMtrl.mtrlid = u_mtrldef.mtrlid AND
- u_OrderRqMtrl.scid = :scid AND
- u_OrderRqMtrl.orderid = :s_order_mx[ls_i].porderid AND
- u_OrderRqMtrl.mtrlid = :s_order_mx[ls_i].mtrlid AND
- u_OrderRqMtrl.status = :s_order_mx[ls_i].status_mode AND
- u_OrderRqMtrl.woodcode = :s_order_mx[ls_i].woodcode AND
- u_OrderRqMtrl.pcode = :s_order_mx[ls_i].pcode
- GROUP BY u_mtrldef.upddrate,
- u_mtrldef.upddqty;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询主生产计划已排产数量失败!'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_Order_ml
- WHERE u_Order_ml.scid = :scid AND
- u_Order_ml.porderid = :s_order_mx[ls_i].porderid AND
- u_Order_ml.mtrlid = :s_order_mx[ls_i].mtrlid AND
- u_Order_ml.status_mode = :s_order_mx[ls_i].status_mode AND
- u_Order_ml.woodcode = :s_order_mx[ls_i].woodcode AND
- u_Order_ml.pcode = :s_order_mx[ls_i].pcode AND
- u_Order_ml.status = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有未审核车间生产指令失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ld_ordermx_qty = 0
- IF cnt > 0 THEN
- SELECT sum(u_Order_ml.orderqty)
- INTO :ld_ordermx_qty
- FROM u_Order_ml
- WHERE u_Order_ml.scid = :scid AND
- u_Order_ml.porderid = :s_order_mx[ls_i].porderid AND
- u_Order_ml.mtrlid = :s_order_mx[ls_i].mtrlid AND
- u_Order_ml.status_mode = :s_order_mx[ls_i].status_mode AND
- u_Order_ml.woodcode = :s_order_mx[ls_i].woodcode AND
- u_Order_ml.pcode = :s_order_mx[ls_i].pcode AND
- u_Order_ml.status = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询已开车间生产指令未审核数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF s_order_mx[ls_i].orderqty > ld_SaleQty * (1 + ld_upddrate) + ld_upddqty - ld_AssignQty - ld_ordermx_qty THEN
- arg_msg = '第'+String(ls_i)+'行待排产数只有:'+String(ld_SaleQty * (1 + ld_upddrate) + ld_upddqty - ld_AssignQty - ld_ordermx_qty,'#,##0.##########')+',不能再排产:'+String(s_order_mx[ls_i].orderqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- //**合并产品
- p_replace_mx()
- IF it_mxbt_ut = 0 THEN
- arg_msg = '没有计划保存'
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF f_get_sccode(scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_if_order_billcode = 1 THEN
- ls_billcode = getid(scid,ls_sccode+"PC",Date(server_dt),if_getid_ture,sqlca)
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取排产号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- ls_billcode = ''
- END IF
- //**取ID,单号
- FOR ls_i = 1 To it_mxbt_ut
- ll_tmp_orderid = f_sys_scidentity(scid,"u_order_ml","orderid",arg_msg,True,id_sqlca)
- IF ll_tmp_orderid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF s_order_ut[1].ordertype = 4 THEN
- IF s_order_ut[ls_i].pzlorderid = 0 THEN
- ls_tmp_ordercode = getid(scid,ls_sccode+"ZL",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
- ELSE
-
- ls_code_find_str = pzlordercode_tmp+'.%'
-
- ll_cnt_code = 0
-
- SELECT COUNT(*)
- INTO :ll_cnt_code
- FROM u_Order_ml
- Where (OrderCode Like :ls_code_find_str);
- IF sqlca.SQLCode <> 0 THEN ll_cnt_code = 0
-
- ll_cnt_code++
- ls_tmp_ordercode = pzlordercode_tmp + '.'+String(ll_cnt_code,'00')
-
- FOR ll_k = 1 To UpperBound(ls_ordercode)
- IF ls_tmp_ordercode = ls_ordercode[ll_k] THEN
- ll_cnt_code++
- ls_tmp_ordercode = pzlordercode_tmp + '.'+String(ll_cnt_code,'00')
- ll_k = 0
- END IF
- NEXT
-
- END IF
- ELSE
- ls_tmp_ordercode = getid(scid,ls_sccode+"SC",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
- END IF
-
- IF ls_tmp_ordercode = "err" THEN
- rslt = 0
- arg_msg = "无法获取计划编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_orderid[ls_i] = ll_tmp_orderid
- ls_ordercode[ls_i] = ls_tmp_ordercode
- ll_orderqty_array[ls_i] = s_order_ut[ls_i].orderqty
- NEXT
- FOR ls_i = 1 To it_mxbt_ut
- mx_cnt = 0
- ls_taskcode = s_order_ut[ls_i].taskcode
- IF lena(ls_taskcode) > 255 THEN ls_taskcode = lefta(ls_taskcode,255)
-
- if isnull(s_order_ut[ls_i].ifpban) then s_order_ut[ls_i].ifpban = 0
- if isnull(s_order_ut[ls_i].ifupban) then s_order_ut[ls_i].ifupban = 0
-
- INSERT INTO u_order_ml
- (scid,
- orderid,
- ordercode,
- billcode,
- relcode,
- orderdate,
- mtrlid,
- status_mode,
- woodcode,
- pcode,
- requiredate,
- orderqty,
- Opemp,
- opdate,
- dscrp,
- Assign_emp,
- ordertype,
- taskrelcode,
- pfcode,
- taskid,
- taskcode,
- taskmxid,
- cusid,
- porderid,
- pordercode,
- wrkGrpid,
- gydscrp,
- pfklmode,
- pforderid,
- pfordercode,
- pfqty,
- secdscrp,
- thdscrp,
- taskscid,
- perfinishdate,
- storageid,
- capacity,
- level,
- typename,
- p_taskrelcode,
- saletaskcode,
- saletaskrelcode,
- cusname,
- p_ordertype,
- p_cusid,
- p_mtrlid,
- outtypestr,
- pzlorderid,
- inwareflag,
- outscllflag,
- iffg,
- ifauto,
- upmtrlid,
- if_inherit,
- addqty,
- ifwforder,
- wpcode,
- pctype,
- notmrpqty,
- ifpban,
- ifupban)
- VALUES (
- :scid,
- :ll_orderid[ls_i],
- :ls_ordercode[ls_i],
- :ls_billcode,
- :s_order_ut[ls_i].relcode,
- :s_order_ut[ls_i].orderdate,
- :s_order_ut[ls_i].mtrlid,
- :s_order_ut[ls_i].status_mode,
- :s_order_ut[ls_i].woodcode,
- :s_order_ut[ls_i].pcode,
- :s_order_ut[ls_i].requiredate,
- :s_order_ut[ls_i].orderqty,
- :publ_operator,
- :server_dt,
- :s_order_ut[ls_i].dscrp,
- :s_order_ut[ls_i].Assign_emp,
- :s_order_ut[ls_i].ordertype,
- :s_order_ut[ls_i].taskrelcode,
- :s_order_ut[ls_i].pfcode,
- :s_order_ut[ls_i].taskid,
- :ls_taskcode,
- :s_order_ut[ls_i].taskmxid,
- :s_order_ut[ls_i].cusid,
- :s_order_ut[ls_i].porderid,
- :s_order_ut[ls_i].pordercode,
- :s_order_ut[ls_i].wrkGrpid,
- :s_order_ut[ls_i].gydscrp,
- :s_order_ut[ls_i].pfklmode,
- :s_order_ut[ls_i].pforderid,
- :s_order_ut[ls_i].pfordercode,
- :s_order_ut[ls_i].pfqty,
- :s_order_ut[ls_i].secdscrp,
- :s_order_ut[ls_i].thdscrp,
- :s_order_ut[ls_i].taskscid,
- :s_order_ut[ls_i].perfinishdate,
- :s_order_ut[ls_i].storageid,
- :s_order_ut[ls_i].capacity,
- :s_order_ut[ls_i].level,
- :s_order_ut[ls_i].typename,
- :s_order_ut[ls_i].p_taskrelcode,
- :s_order_ut[ls_i].saletaskcode,
- :s_order_ut[ls_i].saletaskrelcode,
- :s_order_ut[ls_i].cusname,
- :s_order_ut[ls_i].p_ordertype,
- :s_order_ut[ls_i].p_cusid,
- :s_order_ut[ls_i].p_mtrlid,
- :s_order_ut[ls_i].outtypestr,
- :s_order_ut[ls_i].pzlorderid,
- :s_order_ut[ls_i].inwareflag,
- :s_order_ut[ls_i].outscllflag,
- :s_order_ut[ls_i].iffg,
- :s_order_ut[ls_i].ifauto,
- :s_order_ut[ls_i].upmtrlid,
- :s_order_ut[ls_i].if_inherit,
- :s_order_ut[ls_i].addqty,
- :s_order_ut[ls_i].ifwforder,
- :s_order_ut[ls_i].wpcode,
- :s_order_ut[ls_i].pctype,
- :s_order_ut[ls_i].notmrpqty,
- :s_order_ut[ls_i].ifpban,
- :s_order_ut[ls_i].ifupban) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入计划操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- IF s_order_ut[ls_i].ordertype = 1 Or &
- s_order_ut[ls_i].ordertype = 2 Or &
- s_order_ut[ls_i].ordertype = 3 Or &
- s_order_ut[ls_i].ordertype = 4 Or &
- s_order_ut[ls_i].ordertype = 0 And &
- uo_option_order_bh_use_yc = 1 THEN
- FOR ls_j = 1 To it_mxbt
- IF s_order_mx[ls_j].utid = s_order_ut[ls_i].utid THEN
-
- IF s_order_ut[ls_i].iffp = 1 And s_order_ut[ls_i].inwareflag = 1 And s_order_ut[ls_i].fpkind >= 0 THEN
- IF s_order_ut[ls_i].ordertype = 4 And s_order_mx[ls_j].porderid > 0 THEN
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
-
- IF s_order_ut[ls_i].fpkind = 1 THEN
- s_fp_plan.assigntype[ll_fp_array] = 1
- ELSE
- s_fp_plan.assigntype[ll_fp_array] = 0
- END IF
-
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 1
- s_fp_plan.plankind_relbillid[ll_fp_array] = ll_orderid[ls_i]
- s_fp_plan.plankind_relprintid[ll_fp_array] = 0
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- IF s_order_ut[ls_i].fpkind = 1 THEN
- s_fp_plan.relbillid[ll_fp_array] = s_order_mx[ls_j].p_taskid
- s_fp_plan.relprintid[ll_fp_array] = s_order_mx[ls_j].p_taskmxid
- ELSE
- s_fp_plan.relbillid[ll_fp_array] = s_order_mx[ls_j].porderid
- s_fp_plan.relprintid[ll_fp_array] = 0
- END IF
- s_fp_plan.planassignqty[ll_fp_array] = s_order_mx[ls_j].orderqty
- s_fp_plan.mtrlid[ll_fp_array] = s_order_mx[ls_j].mtrlid
- s_fp_plan.status[ll_fp_array] = s_order_mx[ls_j].status_mode
- s_fp_plan.woodcode[ll_fp_array] = s_order_mx[ls_j].woodcode
- s_fp_plan.pcode[ll_fp_array] = s_order_mx[ls_j].pcode
- ELSEIF s_order_ut[ls_i].ordertype = 1 THEN //订单
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 1
- s_fp_plan.plankind_relbillid[ll_fp_array] = ll_orderid[ls_i]
- s_fp_plan.plankind_relprintid[ll_fp_array] = 0
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.relbillid[ll_fp_array] = s_order_mx[ls_j].taskid
- s_fp_plan.relprintid[ll_fp_array] = s_order_mx[ls_j].taskmxid
- s_fp_plan.planassignqty[ll_fp_array] = s_order_mx[ls_j].orderqty
- s_fp_plan.mtrlid[ll_fp_array] = s_order_mx[ls_j].mtrlid
- s_fp_plan.status[ll_fp_array] = s_order_mx[ls_j].status_mode
- s_fp_plan.woodcode[ll_fp_array] = s_order_mx[ls_j].woodcode
- s_fp_plan.pcode[ll_fp_array] = s_order_mx[ls_j].pcode
- END IF
- END IF
-
- IF s_order_ut[ls_i].ordertype = 1 Or &
- s_order_ut[ls_i].ordertype = 2 Or &
- s_order_ut[ls_i].ordertype = 3 Or &
- s_order_ut[ls_i].ordertype = 0 And &
- uo_option_order_bh_use_yc = 1 THEN
- ll_taskid = s_order_mx[ls_j].taskid
- ls_taskcode = s_order_mx[ls_j].taskcode
- ELSE
- ll_taskid = s_order_mx[ls_j].porderid
- ls_taskcode = s_order_mx[ls_j].pordercode
- END IF
-
- UPDATE u_order_ml_mx
- SET qty = qty + :s_order_mx[ls_j].orderqty
- WHERE scid = :scid
- AND orderid = :ll_orderid[ls_i]
- AND taskid = :ll_taskid
- And taskmxid = :s_order_mx[ls_j].taskmxid;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_order_ml_mx
- (scid,
- orderid,
- taskid,
- taskmxid,
- taskcode,
- qty,
- cusid,
- taskscid)
- VALUES(
- :scid,
- :ll_orderid[ls_i],
- :ll_taskid,
- :s_order_mx[ls_j].taskmxid,
- :ls_taskcode,
- :s_order_mx[ls_j].orderqty,
- :s_order_mx[ls_j].cusid,
- :s_order_mx[ls_j].taskscid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入计划明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- mx_cnt++
- END IF
- ELSE
- rslt = 0
- arg_msg = "因网络或其它原因导致更新计划明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
-
- IF mx_cnt = 0 THEN
- rslt = 0
- IF s_order_ut[ls_i].ordertype = 4 THEN
- arg_msg = '指令单没有相关计划明细,请检查'
- ELSE
- arg_msg = '主生产计划没有相关订单明细,请检查'
- END IF
- GOTO ext
- END IF
- END IF
-
-
-
- IF uo_option_order_ml_save_reccl = 1 THEN
- IF s_order_ut[ls_i].ordertype = 4 And s_order_ut[ls_i].pzlorderid = 0 THEN
- IF uof_reccl(scid,ll_orderid[ls_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '计算领料明细失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- IF uo_option_order_zl_3_day = 1 THEN
- IF s_order_ut[ls_i].ordertype = 4 THEN
- //如果是包件产品并且是分离排产的,下级的采购包件按指令单要求完成日期减7天
- SELECT ifpackpro,ordertype
- INTO :li_ifpackpro,:li_ordertype
- FROM u_mtrldef
- Where mtrlid = :s_order_ut[ls_i].mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询产品信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF li_ifpackpro > 0 And li_ordertype = 1 THEN
- UPDATE u_OrderRqMtrl
- SET u_orderrqmtrl.RqDate = dateadd(day, -7, u_Order_ml.requiredate),
- u_orderrqmtrl.edate = dateadd(day, 0 - u_mtrldef.buydays, dateadd(day, -7, u_Order_ml.requiredate)),
- u_orderrqmtrl.rqdate_ori = case when u_orderrqmtrl.rqdate_ori is NULL then u_orderrqmtrl.RqDate else u_orderrqmtrl.rqdate_ori END ,
- u_orderrqmtrl.edate_ori = case when u_orderrqmtrl.edate_ori is NULL then u_orderrqmtrl.edate else u_orderrqmtrl.edate_ori END
- FROM u_Order_ml INNER JOIN
- u_OrderRqMtrl_scll ON u_Order_ml.OrderID = u_OrderRqMtrl_scll.OrderID AND
- u_Order_ml.scid = u_OrderRqMtrl_scll.scid INNER JOIN
- u_Order_ml u_Order_ml_p ON u_Order_ml.porderid = u_Order_ml_p.OrderID AND
- u_Order_ml.scid = u_Order_ml_p.scid INNER JOIN
- u_OrderRqMtrl ON u_Order_ml_p.OrderID = u_OrderRqMtrl.OrderID AND
- u_Order_ml_p.scid = u_OrderRqMtrl.scid AND
- u_OrderRqMtrl_scll.MtrlID = u_OrderRqMtrl.MtrlID AND
- u_OrderRqMtrl_scll.wrkGrpid = u_OrderRqMtrl.wrkGrpid INNER JOIN
- u_mtrldef ON u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid
- WHERE (u_OrderRqMtrl.plantype = 2)
- AND (u_mtrldef.ifpack > 0)
- AND (u_OrderRqMtrl_scll.scid = :scid)
- And (u_OrderRqMtrl_scll.orderid = :ll_orderid[ls_i]) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新需求明细日期操作失败(采购包件)"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- //直接采购下级
- UPDATE u_OrderRqMtrl
- SET u_orderrqmtrl.RqDate = dateadd(day, -3, u_Order_ml.orderdate),
- u_orderrqmtrl.edate = dateadd(day, 0 - u_mtrldef.buydays, dateadd(day, -3, u_Order_ml.orderdate)),
- u_orderrqmtrl.rqdate_ori = case when u_orderrqmtrl.rqdate_ori is NULL then u_orderrqmtrl.RqDate else u_orderrqmtrl.rqdate_ori END ,
- u_orderrqmtrl.edate_ori = case when u_orderrqmtrl.edate_ori is NULL then u_orderrqmtrl.edate else u_orderrqmtrl.edate_ori END
- FROM u_Order_ml INNER JOIN
- u_OrderRqMtrl_scll ON u_Order_ml.OrderID = u_OrderRqMtrl_scll.OrderID AND
- u_Order_ml.scid = u_OrderRqMtrl_scll.scid INNER JOIN
- u_Order_ml u_Order_ml_p ON u_Order_ml.porderid = u_Order_ml_p.OrderID AND
- u_Order_ml.scid = u_Order_ml_p.scid INNER JOIN
- u_OrderRqMtrl ON u_Order_ml_p.OrderID = u_OrderRqMtrl.OrderID AND
- u_Order_ml_p.scid = u_OrderRqMtrl.scid AND
- u_OrderRqMtrl_scll.MtrlID = u_OrderRqMtrl.MtrlID AND
- u_OrderRqMtrl_scll.wrkGrpid = u_OrderRqMtrl.wrkGrpid INNER JOIN
- u_mtrldef ON u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid
- WHERE (u_OrderRqMtrl.plantype = 2)
- AND (u_OrderRqMtrl_scll.scid = :scid)
- And (u_OrderRqMtrl_scll.orderid = :ll_orderid[ls_i]) ;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新需求明细日期操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //下级外协,以及外协下级的外协或采购
- ds_tree.Retrieve(scid,s_order_ut[ls_i].porderid)
-
- //定位指令单在运算树中的位置
- FOR ll_m = 1 To ds_tree.RowCount()
- ll_mtrlid = ds_tree.Object.mtrlid[ll_m]
- ls_status = ds_tree.Object.status[ll_m]
- ls_woodcode = ds_tree.Object.woodcode[ll_m]
- ls_pcode = ds_tree.Object.pcode[ll_m]
-
- IF ll_mtrlid = s_order_ut[ls_i].mtrlid And ls_status = s_order_ut[ls_i].status_mode And ls_woodcode = s_order_ut[ls_i].woodcode And ls_pcode = s_order_ut[ls_i].pcode THEN
- ll_lp = ds_tree.Object.lp[ll_m]
- lb_iffind = True
- EXIT
- END IF
- NEXT
-
- IF lb_iffind THEN
- FOR ll_n = ll_m + 1 To ds_tree.RowCount()
- IF ds_tree.Object.lp[ll_n] <= ll_lp THEN EXIT
-
- IF ds_tree.Object.lp[ll_n] = ll_lp + 1 And ds_tree.Object.plantype[ll_n] = 3 THEN
-
- ld_wfjgdays = ds_tree.Object.u_mtrldef_wfjgdays[ll_n]
-
- ll_mtrlid_tree = ds_tree.Object.mtrlid[ll_n]
- ll_wrkgrpid = ds_tree.Object.wrkGrpid[ll_n]
- ll_produce_wrkgrpid = ds_tree.Object.produce_wrkgrpid[ll_n]
- li_plantype = ds_tree.Object.plantype[ll_n]
- ls_status_tree = ds_tree.Object.status[ll_n]
- ls_woodcode_tree = ds_tree.Object.woodcode[ll_n]
- ls_pcode_tree = ds_tree.Object.pcode[ll_n]
-
- ldt_RqDate = DateTime(RelativeDate(Date(s_order_ut[ls_i].orderdate),-3),Time(0))
- ldt_edate = DateTime(RelativeDate(Date(ldt_RqDate),0 - Int(ld_wfjgdays)),Time(0))
-
- ds_tree.Object.u_orderrqmtrl_tree_rqdate[ll_n] = ldt_RqDate
- ds_tree.Object.u_orderrqmtrl_tree_edate[ll_n] = ldt_edate
- ds_tree.AcceptText()
-
- UPDATE u_orderrqmtrl
- SET u_orderrqmtrl.RqDate = :ldt_RqDate,
- u_orderrqmtrl.edate = :ldt_edate,
- u_orderrqmtrl.rqdate_ori = case when u_orderrqmtrl.rqdate_ori is NULL then u_orderrqmtrl.RqDate else u_orderrqmtrl.rqdate_ori END ,
- u_orderrqmtrl.edate_ori = case when u_orderrqmtrl.edate_ori is NULL then u_orderrqmtrl.edate else u_orderrqmtrl.edate_ori END
- WHERE scid = :scid
- AND orderid = :s_order_ut[ls_i].porderid
- AND mtrlid = :ll_mtrlid_tree
- AND wrkgrpid = :ll_wrkgrpid
- AND status = :ls_status_tree
- AND woodcode = :ls_woodcode_tree
- AND pcode = :ls_pcode_tree
- And plantype = :li_plantype;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划用料需求日期失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- FOR ll_o = ll_n + 1 To ds_tree.RowCount()
- IF ds_tree.Object.lp[ll_o] <= ll_lp + 1 THEN EXIT
-
- IF ds_tree.Object.plantype[ll_o] <> 2 And ds_tree.Object.plantype[ll_o] <> 3 THEN EXIT
-
- ll_mtrlid_tree = ds_tree.Object.mtrlid[ll_o]
- ll_wrkgrpid = ds_tree.Object.wrkGrpid[ll_o]
- ll_produce_wrkgrpid = ds_tree.Object.produce_wrkgrpid[ll_o]
- li_plantype = ds_tree.Object.plantype[ll_o]
- ls_status_tree = ds_tree.Object.status[ll_o]
- ls_woodcode_tree = ds_tree.Object.woodcode[ll_o]
- ls_pcode_tree = ds_tree.Object.pcode[ll_o]
-
- FOR ll_p = ll_o - 1 To 1 Step -1
- IF ds_tree.Object.lp[ll_p] = ds_tree.Object.lp[ll_o] - 1 THEN
- ldt_rqdate_up = ds_tree.Object.u_orderrqmtrl_tree_rqdate[ll_p]
- ldt_edate_up = ds_tree.Object.u_orderrqmtrl_tree_edate[ll_p]
- EXIT
- END IF
- NEXT
-
- IF ds_tree.Object.plantype[ll_o] = 2 THEN
- ld_Relative = ds_tree.Object.u_mtrldef_buydays[ll_o]
- ELSEIF ds_tree.Object.plantype[ll_o] = 3 THEN
- ld_Relative = ds_tree.Object.u_mtrldef_wfjgdays[ll_o]
- END IF
-
- ldt_RqDate_tree = DateTime(RelativeDate(Date(ldt_edate_up),-3),Time(0))
- ldt_edate_tree = DateTime(RelativeDate(Date(ldt_RqDate_tree),0 - Int(ld_Relative)),Time(0))
-
- ds_tree.Object.u_orderrqmtrl_tree_rqdate[ll_o] = ldt_RqDate_tree
- ds_tree.Object.u_orderrqmtrl_tree_edate[ll_o] = ldt_edate_tree
- ds_tree.AcceptText()
-
- UPDATE u_orderrqmtrl
- SET u_orderrqmtrl.RqDate = :ldt_RqDate_tree,
- u_orderrqmtrl.edate = :ldt_edate_tree,
- u_orderrqmtrl.rqdate_ori = case when u_orderrqmtrl.rqdate_ori is NULL then u_orderrqmtrl.RqDate else u_orderrqmtrl.rqdate_ori END ,
- u_orderrqmtrl.edate_ori = case when u_orderrqmtrl.edate_ori is NULL then u_orderrqmtrl.edate else u_orderrqmtrl.edate_ori END
- WHERE scid = :scid
- AND orderid = :s_order_ut[ls_i].porderid
- AND mtrlid = :ll_mtrlid_tree
- AND wrkgrpid = :ll_wrkgrpid
- AND status = :ls_status_tree
- AND woodcode = :ls_woodcode_tree
- AND pcode = :ls_pcode_tree
- And plantype = :li_plantype;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划用料需求日期失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- NEXT
-
-
- ll_n = ll_o - 1
- END IF
- NEXT
- END IF
-
- END IF
-
- END IF
- END IF
-
- END IF
-
- IF uo_option_order_ml_add_use_wkp = 1 THEN
- IF s_order_ut[ls_i].ordertype <> 4 THEN
- IF uof_order_add_wkp_tmp(scid,ll_orderid[ls_i],s_order_ut[ls_i].tmpid,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '生成工组进度失败,'+arg_msg
- GOTO ext
- END IF
- END IF
- END IF
-
- //更新主计划自制需求指令单数量yyx20120815
- IF s_order_ut[ls_i].ordertype = 4 And s_order_ut[ls_i].pzlorderid = 0 THEN
- IF uof_update_orderrqmtrl_zlqty(scid,s_order_ut[ls_i].porderid,s_order_ut[ls_i].mtrlid,&
- s_order_ut[ls_i].wrkGrpid,s_order_ut[ls_i].status_mode,s_order_ut[ls_i].woodcode,&
- s_order_ut[ls_i].pcode,s_order_ut[ls_i].orderqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
-
- //加入进仓计划
- IF s_order_ut[ls_i].inwareflag = 1 THEN
- INSERT INTO u_order_zl_planmx
- (scid,orderid,aps_plancode,begindate,enddate,orderqty)
- VALUES(:scid,:ll_orderid[ls_i],'',
- :s_order_ut[ls_i].orderdate,
- :s_order_ut[ls_i].requiredate,
- :s_order_ut[ls_i].orderqty);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入进仓计划操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
- FOR ll_fp = 1 To ll_fp_array
- IF uo_fp_plan.uof_plan_add(s_fp_plan.scid[ll_fp],&
- s_fp_plan.mtrlwareid[ll_fp],s_fp_plan.assigntype[ll_fp],&
- s_fp_plan.relbillid[ll_fp],s_fp_plan.relprintid[ll_fp],&
- s_fp_plan.planassignqty[ll_fp],&
- '',publ_operator,s_fp_plan.plantype[ll_fp],&
- s_fp_plan.plankind[ll_fp],s_fp_plan.plankind_relbillid[ll_fp],&
- s_fp_plan.plankind_relprintid[ll_fp],2,s_fp_plan.mtrlid[ll_fp],&
- s_fp_plan.status[ll_fp],s_fp_plan.woodcode[ll_fp],s_fp_plan.pcode[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(ll_fp)+',保存库存分配计划明细表失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- orderid_arr = ll_orderid
- orderqty_arr = ll_orderqty_array
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_clearmx()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- Destroy ds_tree
- Destroy uo_fp_plan
- Return(rslt)
- end function
- public function integer update (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long cnt = 0,ls_j
- String ls_mtrlcode
- Decimal ld_SaleQty,ld_AssignQty,ld_ordermx_qty,ld_this_orderqty
- Decimal ld_upddrate,ld_upddqty
- Long ll_fp_array,ll_fp
- Int li_p_ordertype,li_p_ifpackpro,li_ifpack,li_ordertype_mtrldef
- Long ll_p_mtrlid,ll_p_taskid,ll_p_taskmxid
- Long ll_statustype
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- long ll_i
- long ll_p_taskscid
- int li_ifbj
- decimal ld_notmrpqty
- s_mtrlware_assign_plan s_fp_plan
- uo_mtrlware_assign uo_fp_plan
- uo_fp_plan = Create uo_mtrlware_assign
- uo_fp_plan.commit_transaction = sqlca
- datastore ds_fp_plan_del
- ds_fp_plan_del = Create datastore
- ds_fp_plan_del.DataObject = 'ds_fp_plan_plankind_del'
- ds_fp_plan_del.SetTransObject(sqlca)
- IF uo_option_def_bom = -1000 THEN
- rslt = 0
- arg_msg = '选项:[013]生产计划审核时需要检查是否已定义物料清单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- If uo_option_order_capacity = -1000 Then
- rslt = 0
- arg_msg = '选项:[304]指令单保存按车间产能总量限制,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_bujian_notmrpqty = -1000 Then
- rslt = 0
- arg_msg = '选项:[388]补件类型主计划下属的半成品不参与其他计划的可用数,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- IF IsNull(billcode) THEN billcode = ''
- IF IsNull(ordertype) THEN ordertype = 0
- IF IsNull(relcode) THEN relcode = ''
- IF IsNull(mtrlid) THEN mtrlid = 0
- IF IsNull(status_mode) THEN status_mode = ''
- IF IsNull(woodcode) THEN woodcode = ''
- IF IsNull(pcode) THEN pcode = ''
- IF IsNull(orderqty) THEN orderqty = 0
- IF IsNull(Assign_emp) THEN Assign_emp = ''
- IF IsNull(pfcode) THEN pfcode = ''
- IF IsNull(taskrelcode) THEN taskrelcode = ''
- IF IsNull(taskcode) THEN taskcode = ''
- IF IsNull(taskid) THEN taskid = 0
- IF IsNull(taskmxid) THEN taskmxid = 0
- IF IsNull(cusid) THEN cusid = 0
- IF IsNull(wrkGrpid) THEN wrkGrpid = 0
- IF IsNull(porderid) THEN porderid = 0
- IF IsNull(pordercode) THEN pordercode = ''
- IF IsNull(gydscrp) THEN gydscrp = ''
- IF IsNull(pfklmode) THEN pfklmode = ''
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(secdscrp) THEN secdscrp = ''
- IF IsNull(thdscrp) THEN thdscrp = ''
- IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
- IF IsNull(storageid) THEN storageid = 0
- IF IsNull(Level) THEN Level = 2
- IF IsNull(typename) THEN typename = ''
- IF IsNull(p_taskrelcode) THEN p_taskrelcode = ''
- IF IsNull(cusname) THEN cusname = ''
- IF IsNull(outtypestr) THEN outtypestr = ''
- IF IsNull(iffg) THEN iffg = 0
- IF IsNull(ifauto) THEN ifauto = 0
- IF IsNull(fgid) THEN fgid = 0
- if isnull(if_inherit) then if_inherit = 0
- if isnull(addqty) then addqty = 0
- if isnull(wpcode) then wpcode = ''
- if isnull(pctype) then pctype = 0
- IF Assign_emp = '' THEN
- arg_msg = '请输入计划负责人'
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(orderdate) Or Year(Date(orderdate)) < 2001 THEN
- rslt = 0
- arg_msg = "请输入合理计划日期"
- GOTO ext
- END IF
- if wpcode = '' then
- arg_msg = '请选择工价表号'
- rslt = 0
- goto ext
- end if
- SELECT mtrlcode,ifpack,ordertype
- INTO :ls_mtrlcode,:li_ifpack,:li_ordertype_mtrldef
- FROM u_mtrldef
- Where mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料编码失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_def_bom = 1 THEN
- IF pfcode = '' THEN
- arg_msg = '物料:'+ls_mtrlcode+'请选择物料清单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT count(*) INTO :cnt
- FROM u_mtrl_pf
- WHERE mtrlid = :mtrlid
- And pfcode = :pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'对应物料清单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt <> 1 THEN
- arg_msg = '物料:'+ls_mtrlcode+'不存在或重复物料清单:'+pfcode
- rslt = 0
- GOTO ext
- END IF
- END IF
- Select mtrlcode,
- statusflag,
- capacity * capaparm
- Into :ls_mtrlcode,
- :ll_statustype,
- :ld_capacity
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料编号失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If ll_statustype = 2 Then
- ld_capacity = 0
- f_checkpz(status_mode,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- Select capacity * capaparm
- Into :ld_capacity_zj
- From u_mtrl_configure
- Where mtrlid = :mtrlid
- And Name = :ls_status_zj;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询子件 "+ls_status_zj+" 折算套数参数操作失败"
- Goto ext
- End If
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
- Next
- End If
- If uo_option_order_capacity = 1 then //And outscllflag = 1 Then
- DateTime server_dt,ldt_sdate,ldt_edate
- Decimal ld_capatotal,ld_capatotal_ot,ld_capacity_sum
- String ls_wrkgrpname
-
- Select Top 1 getdate() Into :server_dt From u_user;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- Goto ext
- End If
-
- ldt_sdate = DateTime(Date(server_dt),Time(0))
- ldt_edate = DateTime(Date(server_dt),Time('23:59:59'))
-
-
- Select capatotal,capatotal_ot,wrkgrpname
- Into :ld_capatotal,:ld_capatotal_ot,:ls_wrkgrpname
- From u_sc_wkp
- Where wrkGrpid = :wrkgrpid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询车间设定产能总量失败,车间ID:'+String(wrkgrpid)
- Goto ext
- End If
-
- Select sum(capacity)
- Into :ld_capacity_sum
- From u_order_ml
- Where orderdate >= :ldt_sdate
- And orderdate <= :ldt_edate
- And wrkGrpid = :wrkgrpid
- and orderid <> :orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询车间当天已排产能失败,车间:'+ls_wrkgrpname
- Goto ext
- End If
-
- if isnull(ld_capacity_sum) then ld_capacity_sum = 0
-
- If ld_capacity_sum + ld_capacity * orderqty > ld_capatotal + ld_capatotal_ot Then
- rslt = 0
- arg_msg = '车间:'+ls_wrkgrpname+'当天已排产能:'+String(ld_capacity_sum,'#,##0.##########')+',车间设定产能总量:'+String(ld_capatotal + ld_capatotal_ot,'#,##0.##########')+',不能再排产能:'+String(ld_capacity * orderqty,'#,##0.##########')
- Goto ext
- End If
-
- End If
- IF ordertype = 1 THEN
- IF it_mxbt = 0 THEN
- arg_msg = '没有计划明细保存'
- rslt = 0
- GOTO ext
- END IF
-
- IF it_mxbt = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_cust
- Where cusid = :cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt <> 1 THEN
- arg_msg = '不存在客户资料或客户资料重复'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT name INTO :cusname
- FROM u_cust
- Where cusid = :cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- FOR ls_j = 1 To it_mxbt
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_saletaskmx
- WHERE scid = :s_order_mx[ls_j].taskscid
- AND taskid = :s_order_mx[ls_j].taskid
- And printid = :s_order_mx[ls_j].taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'订单资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_msg = '不存在订单明细:'+ls_mtrlcode
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_SaleTaskMx.pqty,
- u_SaleTaskMx.AssignQty,
- u_mtrldef.upddrate,
- u_mtrldef.upddqty
- INTO :ld_SaleQty,
- :ld_AssignQty,
- :ld_upddrate,
- :ld_upddqty
- FROM u_SaleTaskMx,u_mtrldef
- WHERE u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid AND
- u_SaleTaskMx.scid = :s_order_mx[ls_j].taskscid AND
- u_SaleTaskMx.taskid = :s_order_mx[ls_j].taskid AND
- u_saletaskmx.printid = :s_order_mx[ls_j].taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询销售订单已排产数量失败!'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml_mx
- WHERE u_order_ml_mx.taskid = :s_order_mx[ls_j].taskid AND
- u_order_ml_mx.taskscid = :s_order_mx[ls_j].taskscid AND
- u_order_ml_mx.taskmxid = :s_order_mx[ls_j].taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否已开生计划失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ld_ordermx_qty = 0
- ld_this_orderqty = 0
- IF cnt > 0 THEN
- SELECT sum(u_order_ml_mx.qty)
- INTO :ld_ordermx_qty
- FROM u_order_ml_mx
- WHERE u_order_ml_mx.taskid = :s_order_mx[ls_j].taskid AND
- u_order_ml_mx.taskscid = :s_order_mx[ls_j].taskscid AND
- u_order_ml_mx.taskmxid = :s_order_mx[ls_j].taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询已开生产计划数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_order_ml_mx.qty
- INTO :ld_this_orderqty
- FROM u_order_ml_mx
- WHERE u_order_ml_mx.scid = :arg_scid AND
- u_order_ml_mx.orderid = :arg_orderid AND
- u_order_ml_mx.taskid = :s_order_mx[ls_j].taskid AND
- u_order_ml_mx.taskscid = :s_order_mx[ls_j].taskscid AND
- u_order_ml_mx.taskmxid = :s_order_mx[ls_j].taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询修改前的已开生产计划数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF s_order_mx[ls_j].orderqty > ld_SaleQty * (1 + ld_upddrate) + ld_upddqty - ld_AssignQty - ld_ordermx_qty + ld_this_orderqty THEN
- arg_msg = '第'+String(ls_j)+'行待排产数只有:'+String(ld_SaleQty * (1 + ld_upddrate) + ld_upddqty - ld_AssignQty - ld_ordermx_qty + ld_this_orderqty,'#,##0.##########')+',不能再排产:'+String(s_order_mx[ls_j].orderqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- ELSEIF ordertype = 4 THEN
- IF porderid = 0 THEN
- arg_msg = '指令单没有主生产计划相关联'
- rslt = 0
- GOTO ext
- END IF
-
- IF wrkGrpid = 0 THEN
- arg_msg = '指令单没有生产车间'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_order_ml.taskrelcode,
- u_order_ml.cusname,
- u_order_ml.ordertype,
- u_order_ml.mtrlid,
- u_mtrldef.ifpackpro,
- u_order_ml.taskid,
- u_order_ml.taskmxid,
- u_order_ml.taskscid
- INTO :p_taskrelcode,
- :cusname,
- :li_p_ordertype,
- :ll_p_mtrlid,
- :li_p_ifpackpro,
- :ll_p_taskid,
- :ll_p_taskmxid,
- :ll_p_taskscid
- FROM u_order_ml,u_mtrldef
- WHERE u_order_ml.mtrlid = u_mtrldef.mtrlid
- AND u_order_ml.scid = :scid
- And u_order_ml.orderid = :porderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询相关主生产计划信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- Select u_saletype.ifbj
- Into :li_ifbj
- From u_SaleTask Inner JOIN
- u_saletype ON u_SaleTask.typeid = u_saletype.typeid
- Where u_SaleTask.scid = :ll_p_taskscid
- And u_saletask.taskid = :ll_p_taskid;
- If sqlca.SQLCode <> 0 Then li_ifbj = 0
-
- If li_ifbj = 1 And uo_option_bujian_notmrpqty = 1 Then
- ld_notmrpqty = orderqty
- Else
- ld_notmrpqty = 0
- End If
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_sc_wkp
- Where wrkGrpid = :wrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询车间资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_order_ml
- SET
- relcode = :relcode,
- orderdate = :orderdate,
- requiredate = :requiredate,
- orderqty = :orderqty,
- modemp = :publ_operator,
- moddate = getdate(),
- dscrp = :dscrp,
- Assign_emp = :Assign_emp,
- taskrelcode = :taskrelcode,
- billcode = :billcode,
- status_mode = :status_mode,
- woodcode = :woodcode,
- pcode = :pcode,
- pfcode = :pfcode,
- taskid = :taskid,
- taskmxid = :taskmxid,
- taskcode = :taskcode,
- cusid = :cusid,
- mtrlid = :mtrlid,
- wrkGrpid = :wrkGrpid,
- gydscrp = :gydscrp,
- pfqty = :pfqty,
- porderid = :porderid,
- pordercode = :pordercode,
- secdscrp = :secdscrp,
- thdscrp = :thdscrp,
- perfinishdate = :perfinishdate,
- storageid = :storageid,
- level = :Level,
- typename = :typename,
- p_taskrelcode = :p_taskrelcode,
- cusname = :cusname,
- outtypestr = :outtypestr,
- iffg = :iffg,
- ifauto = :ifauto,
- if_inherit = :if_inherit,
- addqty = :addqty,
- capacity = :ld_capacity * :orderqty,
- wpcode = :wpcode,
- pctype = :pctype,
- notmrpqty = :ld_notmrpqty
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid
- And status = 0 ;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新计划操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml_mx
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致删除计划明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //删除原有分配计划明细
- ds_fp_plan_del.Retrieve(arg_scid,arg_orderid,1)
- IF ds_fp_plan_del.RowCount() > 0 THEN
- IF ds_fp_plan_del.Object.sumassignqty[1] > 0 THEN
- rslt = 0
- arg_msg = "原分配计划明细已有分配数,操作取消"
- GOTO ext
- END IF
- END IF
- FOR ll_fp = 1 To ds_fp_plan_del.RowCount()
- IF uo_fp_plan.uof_plan_del(ds_fp_plan_del.Object.id[ll_fp],&
- ds_fp_plan_del.Object.qty[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '删除分配计划失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- /////////////////////////////////// //
- FOR ls_j = 1 To it_mxbt
-
- Long ll_taskid
- String ls_taskcode
-
- IF ordertype <> 4 THEN
- ll_taskid = s_order_mx[ls_j].taskid
- ls_taskcode = s_order_mx[ls_j].taskcode
- ELSE
- ll_taskid = s_order_mx[ls_j].porderid
- ls_taskcode = s_order_mx[ls_j].pordercode
- END IF
-
- INSERT INTO u_order_ml_mx
- (scid,
- orderid,
- taskid,
- taskmxid,
- taskcode,
- cusid,
- qty,
- taskscid)
- VALUES(
- :arg_scid,
- :arg_orderid,
- :ll_taskid,
- :s_order_mx[ls_j].taskmxid,
- :ls_taskcode,
- :s_order_mx[ls_j].cusid,
- :s_order_mx[ls_j].orderqty,
- :s_order_mx[ls_j].taskscid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入计划明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF inwareflag = 1 THEN
- IF ordertype = 4 And li_p_ordertype = 1 THEN
- IF s_order_mx[ls_j].iffp = 1 And s_order_mx[ls_j].porderid > 0 THEN
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
-
- CHOOSE CASE li_p_ifpackpro
- CASE 0,3,4
- IF li_ordertype_mtrldef = 1 And ll_p_mtrlid = mtrlid THEN
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = ll_p_taskid
- s_fp_plan.relprintid[ll_fp_array] = ll_p_taskmxid
- ELSE
- s_fp_plan.assigntype[ll_fp_array] = 0
- s_fp_plan.relbillid[ll_fp_array] = s_order_mx[ls_j].porderid
- s_fp_plan.relprintid[ll_fp_array] = 0
- END IF
- CASE 1,2
- IF li_ifpack > 0 THEN
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = ll_p_taskid
- s_fp_plan.relprintid[ll_fp_array] = ll_p_taskmxid
- ELSE
- s_fp_plan.assigntype[ll_fp_array] = 0
- s_fp_plan.relbillid[ll_fp_array] = s_order_mx[ls_j].porderid
- s_fp_plan.relprintid[ll_fp_array] = 0
- END IF
- END CHOOSE
-
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 1
- s_fp_plan.plankind_relbillid[ll_fp_array] = arg_orderid
- s_fp_plan.plankind_relprintid[ll_fp_array] = 0
- s_fp_plan.scid[ll_fp_array] = arg_scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = s_order_mx[ls_j].orderqty
- s_fp_plan.mtrlid[ll_fp_array] = s_order_mx[ls_j].mtrlid
- s_fp_plan.status[ll_fp_array] = s_order_mx[ls_j].status_mode
- s_fp_plan.woodcode[ll_fp_array] = s_order_mx[ls_j].woodcode
- s_fp_plan.pcode[ll_fp_array] = s_order_mx[ls_j].pcode
- END IF
- ELSEIF ordertype = 1 THEN
- IF s_order_mx[ls_j].iffp = 1 And s_order_mx[ls_j].porderid > 0 THEN
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 1
- s_fp_plan.plankind_relbillid[ll_fp_array] = arg_orderid
- s_fp_plan.plankind_relprintid[ll_fp_array] = 0
- s_fp_plan.scid[ll_fp_array] = arg_scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.relbillid[ll_fp_array] = s_order_mx[ls_j].taskid
- s_fp_plan.relprintid[ll_fp_array] = s_order_mx[ls_j].taskmxid
- s_fp_plan.planassignqty[ll_fp_array] = s_order_mx[ls_j].orderqty
- s_fp_plan.mtrlid[ll_fp_array] = s_order_mx[ls_j].mtrlid
- s_fp_plan.status[ll_fp_array] = s_order_mx[ls_j].status_mode
- s_fp_plan.woodcode[ll_fp_array] = s_order_mx[ls_j].woodcode
- s_fp_plan.pcode[ll_fp_array] = s_order_mx[ls_j].pcode
- END IF
- END IF
- END IF
- NEXT
- FOR ll_fp = 1 To ll_fp_array
- IF uo_fp_plan.uof_plan_add(s_fp_plan.scid[ll_fp],&
- s_fp_plan.mtrlwareid[ll_fp],s_fp_plan.assigntype[ll_fp],&
- s_fp_plan.relbillid[ll_fp],s_fp_plan.relprintid[ll_fp],&
- s_fp_plan.planassignqty[ll_fp],&
- '',publ_operator,s_fp_plan.plantype[ll_fp],&
- s_fp_plan.plankind[ll_fp],s_fp_plan.plankind_relbillid[ll_fp],&
- s_fp_plan.plankind_relprintid[ll_fp],2,s_fp_plan.mtrlid[ll_fp],&
- s_fp_plan.status[ll_fp],s_fp_plan.woodcode[ll_fp],s_fp_plan.pcode[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(s_fp_plan.plankind_relprintid[ll_fp])+',保存库存分配计划明细表失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_clearmx()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- Destroy uo_fp_plan
- Destroy ds_fp_plan_del
- Return(rslt)
- end function
- public function integer addmxcmpl (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0,ll_mtrlid,ll_mtrlid_p
- Decimal ld_orderqty,ld_acmpqty,ld_inqty,ld_inqty_update
- Long j
- String ls_aps_plancode
- String ls_mtrlname,ls_mtrlcode
- datastore ds_order_inplanmx
- ds_order_inplanmx = Create datastore
- If arg_addqty > 0 Then
- ds_order_inplanmx.DataObject = 'ds_aps_order_plancode_in'
- Else
- ds_order_inplanmx.DataObject = 'ds_aps_order_plancode_in_cancel'
- End If
- ds_order_inplanmx.SetTransObject(sqlca)
- If uo_option_order_bh_use_yc = -1000 Then
- rslt = 0
- arg_msg = '选项:[074]备货生产计划选销售预测单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_ifovertask_cp = -1000 Then
- rslt = 0
- arg_msg = '选项:[112]超生产计划进仓,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- If rslt = 0 Then Goto ext
- If arg_addqty = 0 Then
- arg_msg = '没有完成数量'
- rslt = 0
- Goto ext
- End If
- If status <> 1 And status <> 5 Then
- rslt = 0
- arg_msg = "计划["+ordercode+"]只有在进行或完成状态下才可以执行操作"
- Goto ext
- End If
- Select mtrlname,mtrlcode,u_order_ml.mtrlid
- Into :ls_mtrlname,:ls_mtrlcode,:ll_mtrlid
- From u_mtrldef,u_order_ml
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_mtrldef.mtrlid = u_order_ml.mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致查询产品操作失败"
- Goto ext
- End If
- Decimal ld_uprate,ld_upqty
- If uo_option_ifovertask_cp = 1 or uo_option_ifovertask_cp = 4 Then //不允许超收
- //检查是否完成
- Select orderqty - stopqty,acmpqty Into :ld_orderqty,:ld_acmpqty
- From u_order_ml
- Where ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或错误查询产品唯一码或计划计划数和完成数量操作失败"
- Goto ext
- End If
-
- If ld_orderqty < arg_addqty + ld_acmpqty Then
- rslt = 0
- arg_msg = '该计划明细产品['+ls_mtrlname+']未完成数量'+String(ld_orderqty - ld_acmpqty,'#,##0.00##' )+'小于本次完成数量'
- Goto ext
- End If
- ElseIf uo_option_ifovertask_cp = 3 Then //允许超收但按比例限制
- Select uprate , upqty
- Into :ld_uprate,:ld_upqty
- From u_mtrldef
- Where mtrlid = :ll_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料:'+Trim(ls_mtrlcode)+'超收货比例失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Select orderqty - stopqty,acmpqty Into :ld_orderqty,:ld_acmpqty
- From u_order_ml
- Where ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或错误查询产品唯一码或计划计划数和完成数量操作失败"
- Goto ext
- End If
-
- If ld_orderqty * (1 + ld_uprate) + ld_upqty < arg_addqty + ld_acmpqty Then
- rslt = 0
- arg_msg = '该计划明细产品['+ls_mtrlname+']未完成数量'+String(ld_orderqty - ld_acmpqty,'#,##0.00##' )+',允许超收上限:'+String(ld_orderqty * (1 + ld_uprate) + ld_upqty - ld_acmpqty,'#,##0.00##' )+',小于本次完成数量:'+String(arg_addqty,'#,##0.00##' )
- Goto ext
- End If
-
- End If
- Update u_order_ml
- Set acmpqty = acmpqty + :arg_addqty
- Where ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致更新生产计划完成数量操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- Long ls_i
- If getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- Decimal ld_addqty,ld_noinwareqty,ld_addinqty,ld_inwareqty,ld_saleqty
- ld_addqty = arg_addqty
- If ordertype = 0 And uo_option_order_bh_use_yc = 1 Then
- If ld_addqty > 0 Then
-
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- Select SaleQty , inwareQty Into :ld_saleqty,:ld_inwareqty
- From u_saletaskmx
- Where scid = :s_order_mx[ls_i].taskscid
- And taskid = :s_order_mx[ls_i].taskid
- And printid = :s_order_mx[ls_i].taskmxid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询相关订单明细未进仓数失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- ld_noinwareqty = ld_saleqty - ld_inwareqty
- If ld_noinwareqty > 0 Then
- If ld_addqty > ld_noinwareqty Then
- ld_addinqty = ld_noinwareqty
- ld_addqty = ld_addqty - ld_noinwareqty
- Else
- ld_addinqty = ld_addqty
- ld_addqty = 0
- End If
-
- If uo_task.updateinwareqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,ld_addinqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
-
- If uo_task.trycmptask_fore(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If ld_addqty = 0 Then Exit
- End If
- Next
-
- Else
-
- For ls_i = it_mxbt To 1 Step -1
- If s_order_mx[ls_i].taskid > 0 Then
- Select SaleQty , inwareQty Into :ld_saleqty,:ld_inwareqty
- From u_saletaskmx
- Where scid = :s_order_mx[ls_i].taskscid
- And taskid = :s_order_mx[ls_i].taskid
- And printid = :s_order_mx[ls_i].taskmxid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询相关订单明细未进仓数失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- If ld_inwareqty > 0 Then
- If 0 - ld_addqty > ld_inwareqty Then
- ld_addinqty = 0 - ld_inwareqty
- ld_addqty = ld_addqty + ld_inwareqty
- Else
- ld_addinqty = ld_addqty
- ld_addqty = 0
- End If
- End If
-
- If uo_task.updateinwareqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,ld_addinqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
-
- If uo_task.trycmptask_fore(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If ld_addqty = 0 Then Exit
- End If
- Next
- End If
- End If
- //更新分离排产产品上级计划完成数
- If ordertype = 4 And porderid > 0 And pzlorderid = 0 Then
- Long ll_cnt_order
- Select count(*) Into :ll_cnt_order
- From u_order_ml
- Where scid = :scid
- And orderid = :porderid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询相关生产计划失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If ll_cnt_order > 0 Then
- If uo_order.f_assign_inqty(scid,porderid,wrkGrpid,0,&
- mtrlid,ls_mtrlcode,status_mode,&
- woodcode,pcode,arg_addqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Select u_order_ml.mtrlid
- Into :ll_mtrlid_p
- From u_order_ml
- Where u_order_ml.orderid = :porderid
- And u_order_ml.scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询主生产计划物料ID失败,"+sqlca.SQLErrText
- Goto ext
- End If
-
- If ll_mtrlid_p = ll_mtrlid Then
- If uo_order.addmxcmpl(arg_scid,porderid,arg_addqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uo_order.tryfinishorder(arg_scid,porderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- End If
- //更新进仓计划
- If inwareflag = 1 Then
- ds_order_inplanmx.Retrieve(arg_scid,arg_orderid)
- If arg_addqty > 0 Then
- ld_inqty = arg_addqty
- If ds_order_inplanmx.RowCount() = 0 Then
- arg_msg = '指令单没有排程批次,请检查'
- rslt = 0
- Goto ext
- End If
-
- For j = 1 To ds_order_inplanmx.RowCount()
- If ld_inqty = 0 Then Exit
-
- If j = ds_order_inplanmx.RowCount() Then
- ld_inqty_update = ld_inqty
- ld_inqty = 0
- Else
-
- If ds_order_inplanmx.Object.notinqty[j] <= 0 Then Continue
-
- If ld_inqty > ds_order_inplanmx.Object.notinqty[j] Then
- ld_inqty_update = ds_order_inplanmx.Object.notinqty[j]
- ld_inqty = ld_inqty - ds_order_inplanmx.Object.notinqty[j]
- Else
- ld_inqty_update = ld_inqty
- ld_inqty = 0
- End If
-
- End If
-
- ls_aps_plancode = ds_order_inplanmx.Object.aps_plancode[j]
- Update u_order_zl_planmx
- Set inqty = inqty + :ld_inqty_update
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And aps_plancode = :ls_aps_plancode;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '更新进仓计划已进仓数失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Next
-
- // IF ld_inqty > 0 THEN
- // arg_msg = '进仓计划有余数,请检查'
- // rslt = 0
- // GOTO ext
- // END IF
- Else
- ld_inqty = Abs(arg_addqty)
- If ds_order_inplanmx.RowCount() = 0 Then
- arg_msg = '指令单没有排程批次,请检查'
- rslt = 0
- Goto ext
- End If
-
- For j = 1 To ds_order_inplanmx.RowCount()
- If ld_inqty = 0 Then Exit
- If ld_inqty > ds_order_inplanmx.Object.inqty[j] Then
- ld_inqty_update = ds_order_inplanmx.Object.inqty[j]
- ld_inqty = ld_inqty - ds_order_inplanmx.Object.inqty[j]
- Else
- ld_inqty_update = ld_inqty
- ld_inqty = 0
- End If
-
- ls_aps_plancode = ds_order_inplanmx.Object.aps_plancode[j]
- Update u_order_zl_planmx
- Set inqty = inqty - :ld_inqty_update
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And aps_plancode = :ls_aps_plancode;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '更新进仓计划已进仓数失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Next
-
- If ld_inqty > 0 Then
- arg_msg = '进仓计划有余数,请检查'
- rslt = 0
- Goto ext
- End If
- End If
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy uo_order
- p_reset()
- Return (rslt)
- end function
- private function integer p_getinfo (long arg_scid, long arg_orderid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误生产计划唯一码'
- GOTO ext
- END IF
- SELECT u_Order_ml.OrderCode,
- u_Order_ml.relcode,
- u_Order_ml.orderdate,
- u_Order_ml.mtrlid,
- u_Order_ml.Status,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- u_Order_ml.orderqty,
- u_Order_ml.AcmpQty,
- u_Order_ml.stopqty,
- u_Order_ml.Requiredate,
- u_Order_ml.Accomplishdate,
- u_Order_ml.Accomplishemp,
- u_Order_ml.Opemp,
- u_Order_ml.Permit_emp,
- u_Order_ml.Permit_date,
- u_Order_ml.Opdate,
- u_Order_ml.stopemp,
- u_Order_ml.Dscrp,
- u_Order_ml.Modemp,
- u_Order_ml.moddate,
- u_Order_ml.Assign_emp,
- u_Order_ml.ordertype,
- u_Order_ml.taskrelcode,
- u_Order_ml.pfcode,
- u_Order_ml.taskid,
- u_Order_ml.taskmxid,
- u_Order_ml.taskcode,
- u_Order_ml.cusid,
- u_Order_ml.ctmint,
- u_Order_ml.porderid,
- u_Order_ml.pordercode,
- u_Order_ml.scllflag,
- u_Order_ml.scllsecflag,
- u_Order_ml.relrqbuyid,
- u_Order_ml.relrqbuycode,
- u_Order_ml.planqty,
- u_Order_ml.wrkGrpid,
- u_Order_ml.gydscrp,
- u_Order_ml.pfklmode,
- u_Order_ml.relrqwfjgid,
- u_Order_ml.relrqwfjgcode,
- u_order_ml.pforderid,
- u_order_ml.pfordercode,
- u_order_ml.pfqty,
- u_order_ml.taskscid,
- u_order_ml.perfinishdate,
- u_order_ml.stopjj,
- u_order_ml.stopjjemp,
- u_order_ml.stopjjdate,
- u_order_ml.stopjjreason,
- u_order_ml.storageid,
- u_order_ml.capacity,
- u_order_ml.inwareflag,
- u_order_ml.outscllflag,
- u_order_ml.pzlorderid,
- u_order_ml.secdscrp,
- u_order_ml.thdscrp,
- u_order_ml.Level,
- u_order_ml.typename,
- u_mtrldef.ifpackpro,
- u_order_ml.iffg,
- u_order_ml.ifauto,
- u_order_ml.okplan_flag,
- u_order_ml.if_inherit,
- u_order_ml.addqty,
- u_order_ml.ifwforder,
- u_order_ml.wpcode,
- u_order_ml.pctype,
- u_order_ml.ifpban,
- u_order_ml.ifupban
- INTO :OrderCode,
- :relcode,
- :orderdate,
- :mtrlid,
- :Status,
- :status_mode,
- :woodcode,
- :pcode,
- :orderqty,
- :AcmpQty,
- :stopqty,
- :Requiredate,
- :Accomplishdate,
- :Accomplishemp,
- :Opemp,
- :Permit_emp,
- :Permit_date,
- :Opdate,
- :stopemp,
- :Dscrp,
- :Modemp,
- :moddate,
- :Assign_emp,
- :ordertype,
- :taskrelcode,
- :pfcode,
- :taskid,
- :taskmxid,
- :taskcode,
- :cusid,
- :ctmint,
- :porderid,
- :pordercode,
- :scllflag,
- :scllsecflag,
- :relrqbuyid,
- :relrqbuycode,
- :planqty,
- :wrkGrpid,
- :gydscrp,
- :pfklmode,
- :relrqwfjgid,
- :relrqwfjgcode,
- :pforderid,
- :pfordercode,
- :pfqty,
- :taskscid,
- :perfinishdate,
- :stopjj,
- :stopjjemp,
- :stopjjdate,
- :stopjjreason,
- :storageid,
- :capacity,
- :inwareflag,
- :outscllflag,
- :pzlorderid,
- :secdscrp,
- :thdscrp,
- :Level,
- :typename,
- :ifpackpro_mtrl,
- :iffg,
- :ifauto,
- :okplan_flag,
- :if_inherit,
- :addqty,
- :ifwforder,
- :wpcode,
- :pctype,
- :ifpban,
- :ifupban
- FROM u_Order_ml inner join u_mtrldef on u_Order_ml.mtrlid = u_mtrldef.mtrlid
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_Order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划内容失败(错误生产计划唯一码)'
- GOTO ext
- END IF
- scid = arg_scid
- orderid = arg_orderid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- private function integer p_clearmx ();//int p_clearmx()
- //清除明细
- it_mxbt = 0
- it_mxbt_ut = 0
- it_mxbt_wrk = 0
- RETURN 1
- end function
- public function integer newbegin (long arg_scid);Long rslt = 1
- p_reset()
- scid = arg_scid
- RETURN rslt
- end function
- public function integer update_bom (long arg_scid, long arg_orderid, string arg_pfcode, ref string arg_msg);
- Int rslt = 1
- Long cnt = 0
- Int li_ifpackpro
- rslt = p_getinfo(arg_scid,arg_orderid, arG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF status <> 1 THEN
- rslt = 0
- arG_MSG = "只有在进行状态下才能重选清单"
- GOTO ext
- END IF
- //
- IF scllflag = 1 THEN
- rslt = 0
- arG_MSG = "计划已执行用料初审,不能重选清单"
- GOTO ext
- END IF
- IF scllsecflag = 1 THEN
- rslt = 0
- arG_MSG = "计划已执行用料终审,不能重选清单"
- GOTO ext
- END IF
- //
- //检查是否已开指令单,申购单,外协申请单
- IF uof_check_if_zl(arg_scid,arg_orderid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uof_check_if_rbuy(arg_scid,arg_orderid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uof_check_if_wfjg(arg_scid,arg_orderid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //
- SELECT count(*) INTO :cnt
- FROM u_mtrl_pf
- WHERE mtrlid = :mtrlid
- And pfcode = :arg_pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '查询产品BOM资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arG_MSG = '产品BOM资料不存在'
- rslt = 0
- GOTO ext
- END IF
- SELECT ifpackpro
- INTO :li_ifpackpro
- FROM u_mtrldef
- Where mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '查询计划物料包件产品属性失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpackpro = 2 And pfcode <> arg_pfcode THEN
- DELETE FROM u_saletaskmx_pf
- WHERE scid = :arg_scid
- AND taskid = :taskid
- And printid = :taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '主生产计划对应销售订单明细删除包件清单明细失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_saletaskmx_pf
- (scid,
- taskid,
- printid,
- mtrlid,
- sonmtrlid,
- status,
- woodcode,
- pcode,
- Sonscale,
- Sonscale_fm)
- SELECT :arg_scid,
- :taskid,
- :taskmxid,
- :MtrlID,
- u_prdpf.sonmtrlid,
- case u_prdpf.ifover when 0 then u_prdpf.status when 1 then case when u_prdpf.dipztype=0 or u_prdpf.dipztype=3 or u_prdpf.dipztype=5 or u_prdpf.dipztype=6 then :status_mode else '' END END,
- case u_prdpf.ifover when 0 then u_prdpf.woodcode when 1 then case when u_prdpf.dipztype=1 or u_prdpf.dipztype=3 or u_prdpf.dipztype=4 or u_prdpf.dipztype=6 then :woodcode else '' END END,
- case u_prdpf.ifover when 0 then u_prdpf.pcode when 1 then case when u_prdpf.dipztype=2 or u_prdpf.dipztype=4 or u_prdpf.dipztype=5 or u_prdpf.dipztype=6 then :pcode else '' END END,
- u_prdpf.sonscale,
- 1
- FROM u_prdpf,u_mtrldef
- WHERE u_prdpf.mtrlid = :MtrlID
- AND u_prdpf.pfcode = :arg_pfcode
- AND u_prdpf.sonmtrlid = u_mtrldef.mtrlid
- AND u_mtrldef.ifpack > 0;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '新建主生产计划对应销售订单明细包件清单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END if
-
- UPDATE u_order_ml
- SET pfcode = :arg_pfcode
- WHERE u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致更新计划BOM失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ext:
- IF rslt = 1 THEN
- COMMIT;
- else
- rollback;
- END IF
-
- p_reset()
- Return (rslt)
-
- end function
- public function integer uof_finish_procode_qty (long arg_scid, long arg_orderid, string arg_procode, integer arg_type, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_finishflag
- DateTime null_dt
- SetNull(null_dt)
- IF uo_option_ml_wkp = -1000 THEN
- rslt = 0
- arg_msg = '选项:[047]生产计划直接确认车间完成,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_ml_wkp = 0 THEN
- arg_msg = '系统没有设置为直接确认生产计划车间完成'
- rslt = 0
- GOTO ext
- END IF
- SELECT finishflag INTO :li_finishflag
- FROM U_OrderRqwp
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND Procode = :arg_procode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序完成标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_type = 0 THEN
- IF li_finishflag = 1 THEN
- arg_msg = '工序已确认完成,不能再确认'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE U_OrderRqwp
- SET finishflag = 1,
- finishdate = getdate(),
- finishqty = proqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND Procode = :arg_procode
- AND finishflag = 0;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '确认工序完成失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
-
- IF li_finishflag = 0 THEN
- arg_msg = '工序还未确认,不能取消确认'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE U_OrderRqwp
- SET finishflag = 0,
- finishdate = :null_dt,
- finishqty = 0
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND Procode = :arg_procode
- AND finishflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '取消确认工序完成失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- 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 addmxcmpl_planqty (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- long cnt = 0
- Dec ld_orderqty,ld_planqty
- String ls_mtrlname
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF arg_addqty = 0 THEN
- arg_msg = '没有完成数量'
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- rslt = 0
- arg_msg = "计划["+ordercode+"]只有在进行状态下才可以执行操作"
- GOTO ext
- END IF
- SELECT mtrlname INTO :ls_mtrlname
- FROM u_mtrldef,u_order_ml
- Where u_order_ml.orderid = :arg_orderid
- and u_order_ml.scid = :arg_scid
- and u_mtrldef.mtrlid = u_order_ml.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致查询产品操作失败"
- GOTO ext
- END IF
- //检查是否完成
- SELECT orderqty,planqty INTO :ld_orderqty,:ld_planqty
- FROM u_order_ml
- WHERE ( orderid = :arg_orderid )
- AND ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误查询产品唯一码或计划计划数和已排程数量操作失败"
- GOTO ext
- END IF
- IF status = 1 THEN
- IF ld_orderqty < arg_addqty + ld_planqty THEN
- rslt = 0
- arg_msg = '该计划明细产品:'+ls_mtrlname+',未排程数'+String(ld_orderqty - ld_planqty,'#,##0.00##' )+'小于本次排程数'
- GOTO ext
- END IF
- END IF
- UPDATE u_order_ml
- SET planqty = planqty + :arg_addqty
- WHERE ( orderid = :arg_orderid )
- AND ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致更新生产计划完成数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- private subroutine p_replace_mx ();Long ll_i,ll_j
- FOR ll_i = 1 TO it_mxbt
-
- If ( s_order_mx[ll_i].ordertype = 1 AND uo_option_unite_order_ml = 1 OR &
- s_order_mx[ll_i].ordertype = 4 AND uo_option_unite_order_ml_zl = 1 OR &
- s_order_mx[ll_i].ordertype = 0 AND uo_option_order_bh_use_yc = 1 ) THEN
- FOR ll_j = 1 TO it_mxbt_ut
- IF s_order_ut[ll_j].utid = s_order_mx[ll_i].utid THEN
- s_order_ut[ll_j].orderqty = s_order_ut[ll_j].orderqty + s_order_mx[ll_i].orderqty
- s_order_ut[ll_j].pfqty = s_order_ut[ll_j].pfqty + s_order_mx[ll_i].pfqty
- s_order_ut[ll_j].capacity = s_order_ut[ll_j].capacity + s_order_mx[ll_i].capacity
- s_order_ut[ll_j].addqty = s_order_ut[ll_j].addqty + s_order_mx[ll_i].addqty
- s_order_ut[ll_j].notmrpqty = s_order_ut[ll_j].notmrpqty + s_order_mx[ll_i].notmrpqty
-
- s_order_ut[ll_j].taskcode = s_order_ut[ll_j].taskcode + ','+s_order_mx[ll_i].taskcode
- s_order_ut[ll_j].taskrelcode = ''
- s_order_ut[ll_j].cusid = 0
- s_order_ut[ll_j].taskid = 0
- s_order_ut[ll_j].taskmxid = 0
- s_order_ut[ll_j].pzlorderid = 0
- s_order_ut[ll_j].porderid = 0
- s_order_ut[ll_j].pordercode = ''
- s_order_ut[ll_j].p_taskrelcode = ''
- s_order_ut[ll_j].cusname = ''
- s_order_ut[ll_j].outtypestr = ''
-
- GOTO next_
- END IF
- NEXT
- END IF
-
- it_mxbt_ut++
- s_order_ut[it_mxbt_ut].relcode = s_order_mx[ll_i].relcode
- s_order_ut[it_mxbt_ut].orderdate = s_order_mx[ll_i].orderdate
- s_order_ut[it_mxbt_ut].mtrlid = s_order_mx[ll_i].mtrlid
- s_order_ut[it_mxbt_ut].status_mode = s_order_mx[ll_i].status_mode
- s_order_ut[it_mxbt_ut].woodcode = s_order_mx[ll_i].woodcode
- s_order_ut[it_mxbt_ut].pcode = s_order_mx[ll_i].pcode
- s_order_ut[it_mxbt_ut].orderqty = s_order_mx[ll_i].orderqty
- s_order_ut[it_mxbt_ut].dscrp = s_order_mx[ll_i].dscrp
- s_order_ut[it_mxbt_ut].assign_emp = s_order_mx[ll_i].assign_emp
- s_order_ut[it_mxbt_ut].requiredate = s_order_mx[ll_i].requiredate
- s_order_ut[it_mxbt_ut].ordertype = s_order_mx[ll_i].ordertype
- s_order_ut[it_mxbt_ut].pfcode = s_order_mx[ll_i].pfcode
- s_order_ut[it_mxbt_ut].taskid = s_order_mx[ll_i].taskid
- s_order_ut[it_mxbt_ut].taskcode = s_order_mx[ll_i].taskcode
- s_order_ut[it_mxbt_ut].taskrelcode = s_order_mx[ll_i].taskrelcode
- s_order_ut[it_mxbt_ut].taskmxid = s_order_mx[ll_i].taskmxid
- s_order_ut[it_mxbt_ut].cusid = s_order_mx[ll_i].cusid
- s_order_ut[it_mxbt_ut].porderid = s_order_mx[ll_i].porderid
- s_order_ut[it_mxbt_ut].pordercode = s_order_mx[ll_i].pordercode
- s_order_ut[it_mxbt_ut].utid = s_order_mx[ll_i].utid
- s_order_ut[it_mxbt_ut].wrkGrpid = s_order_mx[ll_i].wrkGrpid
- s_order_ut[it_mxbt_ut].gydscrp = s_order_mx[ll_i].gydscrp
- s_order_ut[it_mxbt_ut].pfklmode = s_order_mx[ll_i].pfklmode
- s_order_ut[it_mxbt_ut].pforderid = s_order_mx[ll_i].pforderid
- s_order_ut[it_mxbt_ut].pfordercode = s_order_mx[ll_i].pfordercode
- s_order_ut[it_mxbt_ut].pfqty = s_order_mx[ll_i].pfqty
- s_order_ut[it_mxbt_ut].secdscrp = s_order_mx[ll_i].secdscrp
- s_order_ut[it_mxbt_ut].thdscrp = s_order_mx[ll_i].thdscrp
- s_order_ut[it_mxbt_ut].taskscid = s_order_mx[ll_i].taskscid
- s_order_ut[it_mxbt_ut].perfinishdate = s_order_mx[ll_i].perfinishdate
- s_order_ut[it_mxbt_ut].storageid = s_order_mx[ll_i].storageid
- s_order_ut[it_mxbt_ut].capacity = s_order_mx[ll_i].capacity
- s_order_ut[it_mxbt_ut].tmpid = s_order_mx[ll_i].tmpid
- s_order_ut[it_mxbt_ut].level = s_order_mx[ll_i].level
- s_order_ut[it_mxbt_ut].typename = s_order_mx[ll_i].typename
- s_order_ut[it_mxbt_ut].p_taskrelcode = s_order_mx[ll_i].p_taskrelcode
- s_order_ut[it_mxbt_ut].saletaskcode = s_order_mx[ll_i].saletaskcode
- s_order_ut[it_mxbt_ut].saletaskrelcode = s_order_mx[ll_i].saletaskrelcode
- s_order_ut[it_mxbt_ut].cusname = s_order_mx[ll_i].cusname
- s_order_ut[it_mxbt_ut].p_ordertype = s_order_mx[ll_i].p_ordertype
- s_order_ut[it_mxbt_ut].p_cusid = s_order_mx[ll_i].p_cusid
- s_order_ut[it_mxbt_ut].p_mtrlid = s_order_mx[ll_i].p_mtrlid
- s_order_ut[it_mxbt_ut].outtypestr = s_order_mx[ll_i].outtypestr
- s_order_ut[it_mxbt_ut].pzlorderid = s_order_mx[ll_i].pzlorderid
- s_order_ut[it_mxbt_ut].inwareflag = s_order_mx[ll_i].inwareflag
- s_order_ut[it_mxbt_ut].outscllflag = s_order_mx[ll_i].outscllflag
- s_order_ut[it_mxbt_ut].iffg = s_order_mx[ll_i].iffg
- s_order_ut[it_mxbt_ut].ifauto = s_order_mx[ll_i].ifauto
- s_order_ut[it_mxbt_ut].upmtrlid = s_order_mx[ll_i].upmtrlid
- s_order_ut[it_mxbt_ut].iffp = s_order_mx[ll_i].iffp
- s_order_ut[it_mxbt_ut].fpkind = s_order_mx[ll_i].fpkind
- s_order_ut[it_mxbt_ut].p_taskid = s_order_mx[ll_i].p_taskid
- s_order_ut[it_mxbt_ut].p_taskmxid = s_order_mx[ll_i].p_taskmxid
- s_order_ut[it_mxbt_ut].fgid = s_order_mx[ll_i].fgid
- s_order_ut[it_mxbt_ut].if_inherit = s_order_mx[ll_i].if_inherit
- s_order_ut[it_mxbt_ut].addqty = s_order_mx[ll_i].addqty
- s_order_ut[it_mxbt_ut].ifwforder = s_order_mx[ll_i].ifwforder
- s_order_ut[it_mxbt_ut].wpcode = s_order_mx[ll_i].wpcode
- s_order_ut[it_mxbt_ut].pctype = s_order_mx[ll_i].pctype
- s_order_ut[it_mxbt_ut].notmrpqty = s_order_mx[ll_i].notmrpqty
- s_order_ut[it_mxbt_ut].ifpban = s_order_mx[ll_i].ifpban
- s_order_ut[it_mxbt_ut].ifupban = s_order_mx[ll_i].ifupban
-
-
- next_:
- NEXT
- end subroutine
- public function integer getinfo (long arg_scid, long arg_orderid, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = "非法单据唯一码"
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_ordermx CURSOR FOR
- SELECT u_order_ml_mx.taskid,
- u_order_ml_mx.taskmxid,
- u_order_ml_mx.qty,
- u_order_ml_mx.taskscid
- FROM u_order_ml_mx
- WHERE u_order_ml_mx.orderid = :arg_orderid AND
- u_order_ml_mx.scid = :arg_scid ;
-
- OPEN cur_ordermx;
- FETCH cur_ordermx INTO :s_order_mx[i].taskid,
- :s_order_mx[i].taskmxid,
- :s_order_mx[i].orderqty,
- :s_order_mx[i].taskscid;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_ordermx INTO :s_order_mx[i].taskid,
- :s_order_mx[i].taskmxid,
- :s_order_mx[i].orderqty,
- :s_order_mx[i].taskscid;
- LOOP
- CLOSE cur_ordermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_ml_mx
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,计划明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,计划明细"
- GOTO ext
- END IF
- it_mxbt = i - 1
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer f_assign_inqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, integer arg_plantype, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_mtrlkind,li_ifpack,li_ifpackpro,li_ifpackpro2
- Int li_pordermtrl_ordertype
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误的计划唯一码'
- GOTO ext
- END IF
- IF arg_mtrlid <= 0 THEN
- rslt = 0
- arg_msg = '错误的物料唯一码'
- GOTO ext
- END IF
- SELECT mtrlkind,ifpack,ifpackpro2
- INTO :li_mtrlkind,:li_ifpack,:li_ifpackpro2
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+arg_mtrlcode+'查询领料属性失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_mtrlkind = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- CHOOSE CASE arg_plantype
- CASE 0
- UPDATE u_OrderRqMtrl
- SET inqty = inqty + :arg_qty
- WHERE orderid = :arg_orderid
- AND produce_wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- And plantype = 0;
- CASE 2,3
- UPDATE u_OrderRqMtrl
- SET inqty = inqty + :arg_qty
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- And (plantype = 2 Or plantype = 3);
- END CHOOSE
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '已进仓数明细失败(更新行数 = 0),'+sqlca.SQLErrText
- rslt = 1
- ELSEIF sqlca.SQLNRows > 1 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '已进仓数明细失败(更新行数 > 1),'+sqlca.SQLErrText
- rslt = 1
- END IF
-
- IF Trim(arg_msg) <> '' THEN
- arg_msg_str = arg_msg
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+'已进仓数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ifpack > 0 THEN
- SELECT u_mtrldef.ifpackpro,u_mtrldef.ordertype
- INTO :li_ifpackpro,:li_pordermtrl_ordertype
- FROM u_order_ml,u_mtrldef
- 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
- rslt = 0
- arg_msg = '查询物料:'+arg_mtrlcode+'对应生产计划产品是否包件产品失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- //当是包件产品生产计划包件进仓时,进仓数自动更新为已领数
- //当是组合配置包件产品生产计划包件进仓时,进仓数自动更新为已领数
- IF arg_plantype = 0 THEN
- IF li_ifpack = 1 And li_ifpackpro = 1 Or li_ifpackpro2 = 1 THEN
- UPDATE u_OrderRqMtrl
- SET DstrQty = DstrQty + :arg_qty
- WHERE orderid = :arg_orderid
- AND produce_wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- And plantype = 0;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '已领数明细失败(包件,更新行数 = 0),'+sqlca.SQLErrText
- rslt = 1
- ELSEIF sqlca.SQLNRows > 1 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '已领数明细失败(包件,行数 > 1),'+sqlca.SQLErrText
- rslt = 1
- END IF
-
- IF Trim(arg_msg) <> '' THEN
- arg_msg_str = arg_msg
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+'已进仓数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSEIF arg_plantype = 2 THEN //yyx2013-9-3 采购包件进仓完成计划
- IF li_ifpack = 1 And li_ifpackpro = 1 THEN
- UPDATE u_OrderRqMtrl
- SET DstrQty = DstrQty + :arg_qty
- WHERE orderid = :arg_orderid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- And plantype = 2;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '已领数明细失败(包件,更新行数 = 0),'+sqlca.SQLErrText
- rslt = 1
- ELSEIF sqlca.SQLNRows > 1 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '已领数明细失败(包件,行数 > 1),'+sqlca.SQLErrText
- rslt = 1
- END IF
-
- IF Trim(arg_msg) <> '' THEN
- arg_msg_str = arg_msg
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+'已进仓数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- IF uof_tryfinish_packorder_buy(arg_scid,arg_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- 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_pz_change (integer arg_type, string arg_updatestr, long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_msg);Int rslt = 1
- CHOOSE CASE arg_type
- CASE 1
- UPDATE u_OrderRqMtrl_scll
- SET status = :arg_updatestr
- WHERE u_OrderRqMtrl_scll.scid = :arg_scid
- AND u_OrderRqMtrl_scll.wrkgrpid = :arg_wrkgrpid
- AND u_OrderRqMtrl_scll.orderid = :arg_orderid
- AND u_OrderRqMtrl_scll.mtrlid = :arg_mtrlid
- AND u_OrderRqMtrl_scll.status = :arg_status
- AND u_OrderRqMtrl_scll.woodcode = :arg_woodcode
- And u_OrderRqMtrl_scll.pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 2
- UPDATE u_OrderRqMtrl_scll
- SET woodcode = :arg_updatestr
- WHERE u_OrderRqMtrl_scll.scid = :arg_scid
- AND u_OrderRqMtrl_scll.wrkgrpid = :arg_wrkgrpid
- AND u_OrderRqMtrl_scll.orderid = :arg_orderid
- AND u_OrderRqMtrl_scll.mtrlid = :arg_mtrlid
- AND u_OrderRqMtrl_scll.status = :arg_status
- AND u_OrderRqMtrl_scll.woodcode = :arg_woodcode
- And u_OrderRqMtrl_scll.pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- CASE 3
- UPDATE u_OrderRqMtrl_scll
- SET pcode = :arg_updatestr
- WHERE u_OrderRqMtrl_scll.scid = :arg_scid
- AND u_OrderRqMtrl_scll.wrkgrpid = :arg_wrkgrpid
- AND u_OrderRqMtrl_scll.orderid = :arg_orderid
- AND u_OrderRqMtrl_scll.mtrlid = :arg_mtrlid
- AND u_OrderRqMtrl_scll.status = :arg_status
- AND u_OrderRqMtrl_scll.woodcode = :arg_woodcode
- And u_OrderRqMtrl_scll.pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END CHOOSE
- UPDATE u_OrderRqMtrl
- SET u_OrderRqMtrl.status = u_OrderRqMtrl_scll.status,
- u_OrderRqMtrl.woodcode = u_OrderRqMtrl_scll.woodcode,
- u_OrderRqMtrl.pcode = u_OrderRqMtrl_scll.pcode
- FROM u_OrderRqMtrl INNER JOIN
- u_OrderRqMtrl_scll ON u_OrderRqMtrl.scid = u_OrderRqMtrl_scll.scid AND
- u_OrderRqMtrl.OrderID = u_OrderRqMtrl_scll.OrderID AND
- u_OrderRqMtrl.MtrlID = u_OrderRqMtrl_scll.MtrlID AND
- u_OrderRqMtrl.wrkGrpid = u_OrderRqMtrl_scll.wrkGrpid
- WHERE ((u_OrderRqMtrl.status <> u_OrderRqMtrl_scll.status) OR
- (u_OrderRqMtrl.woodcode <> u_OrderRqMtrl_scll.woodcode) OR
- (u_OrderRqMtrl.pcode <> u_OrderRqMtrl_scll.pcode))
- AND (u_OrderRqMtrl.scid = :arg_scid)
- And (u_OrderRqMtrl.orderid = :arg_orderid);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新需求表失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer audit_scll (long arg_scid, long arg_orderid, integer arg_scllflag, ref string arg_msg, boolean arg_ifcommit);//arg_scllflag 1 :初审,2:终审
- Int rslt = 1
- Long cnt = 0
- Long ls_i,ll_j,ll_k,ll_sp_cnt,ll_l
- Long ll_orderid_tmp
- Decimal ld_eoq,ld_splitrate,ld_truerqqty,ld_qty
- Long ll_cnt = 0
- Long ll_porderid
- Int li_ifpackpro
- String ls_mtrlcode
- String ls_mtrlsectype
- String ls_zxmtrlmode
- String ls_unit
- Long ll_OrderID
- Long ll_MtrlID
- Decimal ld_noconsignedqty
- String ls_status
- String ls_woodcode
- String ls_pcode
- Long ll_wrkgrpid,ll_wrkid
- Long ll_storageid_last,ll_m
- DateTime ld_rqdate
- String ls_wpcode
- String ls_taskrelcode
- Long ll_cnt_mxt
- Decimal ld_qty_arr[],ld_trueqty_tmp
- Long count = 0
- String ls_plancode
- rslt = 1
- If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If uo_option_order_ml_scll_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[065]生产计划用料二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_autocreate_buy = -1000 Then
- rslt = 0
- arg_msg = '选项:[054]生产计划审核自动建立申购单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_autocreate_wfjg = -1000 Then
- rslt = 0
- arg_msg = '选项:[068]生产计划审核自动建立外协申请单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_scllaudit_autobuild = -1000 Then
- rslt = 0
- arg_msg = '选项:[234]主生产计划用料审自动生成相关指令单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_scllaudit_autobuild_tech = -1000 Then
- rslt = 0
- arg_msg = '选项:[245]主生产计划用料审自动生成相关指令单的工组派工单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- uo_requestbuy uo_rqbuy
- uo_rqbuy = Create uo_requestbuy
- uo_request_wfjg uo_wfjg
- uo_wfjg = Create uo_request_wfjg
- uo_wfjg.commit_transaction = sqlca
- uo_wfjg.if_getid_ture = False
- uo_order_ml uo_ml
- uo_ml = Create uo_order_ml
- uo_ml.if_getid_ture = False
- uo_order_ml_mrp uo_ml_mrp
- uo_ml_mrp = Create uo_order_ml_mrp
- s_order_ml_rqmtrl s_mtrl,s_mtrl_null
- datastore ds_ch_pack
- ds_ch_pack = Create datastore
- ds_ch_pack.DataObject = 'ds_order_ml_mrptree_pack'
- ds_ch_pack.SetTransObject(sqlca)
- datastore ds_orderrqmx
- ds_orderrqmx = Create datastore
- ds_orderrqmx.DataObject = 'dw_order_ml_zl_orderrqmx'
- ds_orderrqmx.SetTransObject(sqlca)
- datastore ds_reqmtrl
- ds_reqmtrl = Create datastore
- ds_reqmtrl.DataObject = 'ds_order_ml_reqmtrl_mx'
- ds_reqmtrl.SetTransObject(sqlca)
- If arg_orderid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If status <> 1 Then
- rslt = 0
- arg_msg = "计划只有在在进行状态才可以执行用料审批,请核对"
- Goto ext
- End If
- //检查是否有相关配置变更单未审
- cnt = 0
- Select count(*)
- Into :cnt
- From u_saletaskmx_change Inner JOIN
- u_saletaskmx_changemx ON
- u_saletaskmx_change.Billid = u_saletaskmx_changemx.billid
- Where (u_saletaskmx_change.affirmflag = 0 Or u_saletaskmx_change.flag = 0)
- And (u_saletaskmx_changemx.orderid = :arg_orderid)
- And (u_saletaskmx_changemx.scid = :arg_scid) ;
- If sqlca.SQLCode <> 0 Then
- arg_msg = ordercode + ',查询是否有相关配置变更单未审失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
- arg_msg = ordercode + ',有相关配置变更单未审,请先审核'
- rslt = 0
- Goto ext
- End If
- If uo_option_order_ml_scll_secaudit = 0 Then
- If scllflag = 1 Then
- rslt = 0
- arg_msg = "计划已执行用料审批,请核对"
- Goto ext
- End If
- Else
- If arg_scllflag = 1 Then
- If scllflag = 1 Then
- rslt = 0
- arg_msg = "计划已执行用料初审,请核对"
- Goto ext
- End If
- Else
- If scllflag = 0 Then
- rslt = 0
- arg_msg = "计划未执行用料初审,请核对"
- Goto ext
- End If
-
- If scllsecflag = 1 Then
- rslt = 0
- arg_msg = "计划已执行用料终审,请核对"
- Goto ext
- End If
- End If
- End If
- If uo_option_order_ml_scll_secaudit = 0 Then
- Update u_order_ml
- Set scllemp = :publ_operator,
- sclldate = getdate(),
- scllflag = 1,
- scllsecemp = :publ_operator,
- scllsecdate = getdate(),
- scllsecflag = 1
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And scllflag = 0
- And scllsecflag = 0
- And status = 1;
- Else
- If arg_scllflag = 1 Then
- Update u_order_ml
- Set scllemp = :publ_operator,
- sclldate = getdate(),
- scllflag = 1
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And scllflag = 0
- And status = 1;
- Else
- Update u_order_ml
- Set scllsecemp = :publ_operator,
- scllsecdate = getdate(),
- scllsecflag = 1
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And scllflag = 1
- And scllsecflag = 0
- And status = 1;
- End If
- End If
- If sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致更新计划用料审核标记失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If uo_option_order_ml_scll_secaudit = 0 Or &
- uo_option_order_ml_scll_secaudit = 1 And arg_scllflag = 2 Then
-
- //自动建申购单
- If uo_option_autocreate_buy = 1 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_mtrldef,
- u_OrderRqMtrl
- Where ( u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid ) And
- ( u_OrderRqMtrl.plantype = 2 ) And
- ( u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 2) And
- ( u_OrderRqMtrl.scid = :arg_scid ) And
- ( u_OrderRqMtrl.orderid = :arg_orderid ) And
- ( u_OrderRqMtrl.truerqqty - u_OrderRqMtrl.consignedqty > 0);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询自动材料申购单物料明细数目失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- s_requestbuy arg_s_rqbuy
-
-
-
- arg_s_rqbuy.scid = scid
- arg_s_rqbuy.requestbuyid = 0
- arg_s_rqbuy.requestbuydate = DateTime(Today(),Time(0))
- arg_s_rqbuy.assign_emp = publ_operator
- arg_s_rqbuy.relcode = ''
- arg_s_rqbuy.dscrp = ''
- arg_s_rqbuy.ifauto = 1
- arg_s_rqbuy.billtype = 0
-
- Declare cur_rqbuy Cursor For
- Select u_mtrldef.mtrlcode,
- u_mtrldef.mtrlsectype,
- u_mtrldef.zxmtrlmode,
- u_OrderRqMtrl.OrderID,
- u_OrderRqMtrl.MtrlID,
- u_OrderRqMtrl.truerqqty - u_OrderRqMtrl.consignedqty,
- u_OrderRqMtrl.status ,
- u_OrderRqMtrl.woodcode ,
- u_OrderRqMtrl.pcode,
- u_OrderRqMtrl.wrkgrpid,
- u_orderrqmtrl.rqdate,
- u_mtrldef.unit
- From u_mtrldef,
- u_OrderRqMtrl
- Where ( u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid ) And
- ( u_OrderRqMtrl.plantype = 2 ) And
- ( u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 2 ) And
- ( u_OrderRqMtrl.scid = :arg_scid ) And
- ( u_OrderRqMtrl.orderid = :arg_orderid ) And
- ( u_OrderRqMtrl.truerqqty - u_OrderRqMtrl.consignedqty > 0);
-
- Open cur_rqbuy;
-
- Fetch cur_rqbuy Into :ls_mtrlcode,:ls_mtrlsectype,:ls_zxmtrlmode,
- :ll_OrderID,:ll_MtrlID,:ld_noconsignedqty,:ls_status,
- :ls_woodcode,:ls_pcode,:ll_wrkgrpid,:ld_rqdate,:ls_unit;
-
-
- Do While sqlca.SQLCode = 0
- count++
- arg_s_rqbuy.arg_s_rqbuymx[count].mtrlcode = ls_mtrlcode
- arg_s_rqbuy.arg_s_rqbuymx[count].uqty = ld_noconsignedqty
- arg_s_rqbuy.arg_s_rqbuymx[count].unit = ls_unit
- arg_s_rqbuy.arg_s_rqbuymx[count].status = ls_status
- arg_s_rqbuy.arg_s_rqbuymx[count].woodcode = ls_woodcode
- arg_s_rqbuy.arg_s_rqbuymx[count].pcode = ls_pcode
- arg_s_rqbuy.arg_s_rqbuymx[count].mxdscrp = ''
- arg_s_rqbuy.arg_s_rqbuymx[count].MtrlID = ll_MtrlID
- arg_s_rqbuy.arg_s_rqbuymx[count].orderid = ll_OrderID
- arg_s_rqbuy.arg_s_rqbuymx[count].wrkgrpid = ll_wrkgrpid
- arg_s_rqbuy.arg_s_rqbuymx[count].storageid = ll_storageid_last
- arg_s_rqbuy.arg_s_rqbuymx[count].ifrel = 1
- arg_s_rqbuy.arg_s_rqbuymx[count].printid = count
- arg_s_rqbuy.arg_s_rqbuymx[count].rate = 1
- arg_s_rqbuy.arg_s_rqbuymx[count].rqdate = ld_rqdate
-
- If if_inherit = 1 Then
- arg_s_rqbuy.arg_s_rqbuymx[count].plancode = taskrelcode
- Else
- arg_s_rqbuy.arg_s_rqbuymx[count].plancode = ''
- End If
-
- Fetch cur_rqbuy Into :ls_mtrlcode,:ls_mtrlsectype,:ls_zxmtrlmode,
- :ll_OrderID,:ll_MtrlID,:ld_noconsignedqty,:ls_status,
- :ls_woodcode,:ls_pcode,:ll_wrkgrpid,:ld_rqdate,:ls_unit;
- Loop
-
- Close cur_rqbuy;
-
- //查默认仓库及最近收货仓库
- For ll_m = 1 To count
- arg_s_rqbuy.arg_s_rqbuymx[ll_m].storageid = f_mtrl_storageid(scid,arg_s_rqbuy.arg_s_rqbuymx[ll_m].MtrlID)
- Next
-
- If uo_rqbuy.Save(arg_s_rqbuy,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uo_rqbuy.audit(scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uo_rqbuy.audit_2(scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uo_rqbuy.uo_requestbuyid = 0 Or uo_rqbuy.uo_requestbuycode = '' Then
- arg_msg = '更新计划时获得错误的自动申购单号唯一码'
- rslt = 0
- Goto ext
- End If
-
- Update u_order_ml
- Set relrqbuyid = :uo_rqbuy.uo_requestbuyid,
- relrqbuycode = :uo_rqbuy.uo_requestbuycode
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '更新计划申购单号失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- End If
-
- //自动建外协申请单
- If uo_option_autocreate_wfjg = 1 Then
-
- cnt = 0
- Select count(*) Into :cnt
- From u_mtrldef,u_OrderRqMtrl
- Where ( u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid ) And
- ( u_OrderRqMtrl.plantype = 3 ) And
- ( u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 2) And
- ( u_OrderRqMtrl.scid = :arg_scid ) And
- ( u_OrderRqMtrl.orderid = :arg_orderid ) And
- ( u_OrderRqMtrl.truerqqty - u_OrderRqMtrl.consignedqty > 0);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询自动外协申请单物料明细数目失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- datastore ds_wfjg
- ds_wfjg = Create datastore
- ds_wfjg.DataObject = 'ds_order_ml_rqwfjg'
- ds_wfjg.SetTransObject(sqlca)
- ds_wfjg.Retrieve(arg_orderid,arg_scid)
-
- If uo_wfjg.newbegin(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- uo_wfjg.Requiredate = DateTime(Today(),Time(0))
- uo_wfjg.assign_emp = publ_operator
- uo_wfjg.dscrp = ''
- uo_wfjg.ifauto = 1
-
- If if_inherit = 1 Then
- ls_plancode = taskrelcode
- Else
- ls_plancode = ''
- End If
-
- For ll_j = 1 To ds_wfjg.RowCount()
- If uo_wfjg.acceptmx(1,&
- arg_orderid,&
- ds_wfjg.Object.u_order_ml_ordercode[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_mtrlid[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_truerqqty[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_gydscrp[ll_j],&
- ds_wfjg.Object.u_mtrldef_mtrlcode[ll_j],&
- arg_msg,&
- ll_j,&
- ds_wfjg.Object.u_orderrqmtrl_rqdate[ll_j],&
- '',&
- ds_wfjg.Object.u_orderrqmtrl_status[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_woodcode[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_pcode[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_wrkgrpid[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_pfcode[ll_j],&
- ls_plancode,&
- ds_wfjg.Object.u_mtrldef_unit[ll_j],&
- ds_wfjg.Object.u_orderrqmtrl_truerqqty[ll_j],&
- 1) = 0 Then
- rslt = 0
- Goto ext
- End If
- Next
-
-
- If uo_wfjg.savesubmit(publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uo_wfjg.audit(scid,uo_wfjg.wfjgid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uo_wfjg.audit_2(scid,uo_wfjg.wfjgid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If uo_wfjg.wfjgid = 0 Or uo_wfjg.taskcode = '' Then
- arg_msg = '更新计划时获得错误的自动外协申请单号唯一码'
- rslt = 0
- Goto ext
- End If
-
- Update u_order_ml
- Set relrqwfjgid = :uo_wfjg.wfjgid,
- relrqwfjgcode = :uo_wfjg.taskcode
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '更新计划外协申请单号失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- End If
-
- If uo_option_scllaudit_autobuild <> 0 Then
- SELECT u_mtrldef.ifpackpro INTO :li_ifpackpro
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.scid = :arg_scid
- And u_order_ml.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询计划包件产品属性失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- If uo_option_scllaudit_autobuild_tech = 1 Then
- If uof_create_order_plan_tech(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
-
- ds_reqmtrl.Retrieve(arg_scid,arg_orderid)
-
- If ds_reqmtrl.RowCount() > 0 Then
- uo_ml.newbegin(arg_scid)
- End If
-
- For ll_j = 1 To ds_reqmtrl.RowCount()
- ld_eoq = ds_reqmtrl.Object.u_mtrldef_eoq[ll_j] //最小经济批量
- ld_splitrate = ds_reqmtrl.Object.u_mtrldef_splitrate[ll_j] //最大经济批量
- ld_truerqqty = ds_reqmtrl.Object.u_orderrqmtrl_truerqqty[ll_j]
-
- ld_trueqty_tmp = ld_truerqqty
-
- //yyx2014-2-28 //yyx2014-09-17
- // IF pctype = 1 THEN
- // ld_eoq = 1
- // ld_splitrate = 1
- // END IF
-
- If ld_splitrate > 0 And ld_truerqqty > ld_splitrate Then
- ll_sp_cnt = Ceiling(Truncate(ld_truerqqty / ld_splitrate,10))
- Else
- ll_sp_cnt = 1
- End If
-
- ll_cnt_mxt = 0
-
- For ll_k = 1 To ll_sp_cnt
- If ll_k = ll_sp_cnt Then
- ll_cnt_mxt++
- ld_qty_arr[ll_cnt_mxt] = ld_trueqty_tmp
- ld_trueqty_tmp = 0
- Else
- If ld_trueqty_tmp - ld_splitrate < ld_eoq Then
- ll_cnt_mxt++
- ld_qty_arr[ll_cnt_mxt] = ld_trueqty_tmp - ld_eoq
- ld_trueqty_tmp = ld_eoq
- Else
- ll_cnt_mxt++
- ld_qty_arr[ll_cnt_mxt] = ld_splitrate
- ld_trueqty_tmp = ld_trueqty_tmp - ld_splitrate
- End If
- End If
- Next
-
-
- For ll_k = 1 To ll_cnt_mxt
- ls_taskrelcode = ''
- If MtrlID = ds_reqmtrl.Object.u_orderrqmtrl_mtrlid[ll_j] Or ds_reqmtrl.Object.u_mtrldef_if_inherit[ll_j] = 1 Then
- ls_taskrelcode = taskrelcode
- Else
- ls_taskrelcode = ''
- End If
-
- ll_MtrlID = ds_reqmtrl.Object.u_orderrqmtrl_mtrlid[ll_j]
- ll_wrkid = ds_reqmtrl.Object.u_orderrqmtrl_produce_wrkGrpid[ll_j]
-
- Select top 1 wpcode
- Into :ls_wpcode
- From u_mtrl_workprice
- Where mtrlid = :ll_mtrlid
- And wrkid = :ll_wrkid
- Order By ifdft Desc;
- If sqlca.SQLCode <> 0 Then ls_wpcode = ''
-
-
- ll_cnt++
- If uo_ml.acceptmx(relcode,&
- ds_reqmtrl.Object.u_orderrqmtrl_edate[ll_j],&
- 0,&
- '',&
- 0,&
- ds_reqmtrl.Object.u_orderrqmtrl_mtrlid[ll_j],&
- ds_reqmtrl.Object.u_orderrqmtrl_status[ll_j],&
- ds_reqmtrl.Object.u_orderrqmtrl_woodcode[ll_j],&
- ds_reqmtrl.Object.u_orderrqmtrl_pcode[ll_j],&
- ld_qty_arr[ll_k],&
- dscrp,&
- publ_operator,&
- ds_reqmtrl.Object.u_orderrqmtrl_rqdate[ll_j],&
- 4,&
- ls_taskrelcode,&
- ds_reqmtrl.Object.u_orderrqmtrl_pfcode[ll_j],&
- ds_reqmtrl.Object.u_orderrqmtrl_mxpkid[ll_j],&
- arg_orderid,&
- ll_cnt,&
- ds_reqmtrl.Object.u_orderrqmtrl_produce_wrkGrpid[ll_j],&
- ds_reqmtrl.Object.u_orderrqmtrl_gydscrp[ll_j],&
- ds_reqmtrl.Object.u_orderrqmtrl_pfklmode[ll_j],&
- 0,'',0,&
- secdscrp,&
- thdscrp,&
- arg_scid,&
- ds_reqmtrl.Object.u_orderrqmtrl_rqdate[ll_j],&
- 0,&
- 0,&
- ds_reqmtrl.Object.u_order_ml_level[ll_j],&
- ds_reqmtrl.Object.u_order_ml_typename[ll_j],&
- ds_reqmtrl.Object.u_order_ml_outtypestr[ll_j],&
- 0,&
- 0,&
- 0,0,0,&
- ls_wpcode,0,&
- arg_msg) = 0 Then
- arg_msg = '建立相关生产指令单失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
- Next
- Next
-
- If ds_reqmtrl.RowCount() > 0 Then
- If uo_ml.Save(arg_msg,False) = 0 Then
- arg_msg = '保存相关生产指令单失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
-
- If uo_option_scllaudit_autobuild = 1 Then
- For ll_j = 1 To UpperBound(uo_ml.orderid_arr)
- ll_orderid_tmp = uo_ml.orderid_arr[ll_j]
- If uo_ml.audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '审核相关生产指令单失败(初审),'+arg_msg
- Goto ext
- End If
-
- If uo_ml.plan_audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '审核相关生产指令单失败(二审),'+arg_msg
- Goto ext
- End If
-
- If uo_ml.sec_audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '审核相关生产指令单失败(终审),'+arg_msg
- Goto ext
- End If
-
- If ifpackpro_mtrl = 5 Then
- If uo_ml.uof_order_add_tree_barcode(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '相关生产指令单生成工艺条码失败,'+arg_msg
- Goto ext
- End If
- End If
-
- If uo_ml_mrp.uof_del_rqmtrl_scll(arg_scid,ll_orderid_tmp,False,arg_msg) = 0 Then
- arg_msg = '删除相关生产指令单用料失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
-
- ds_orderrqmx.Retrieve(ll_orderid_tmp,arg_scid)
-
- For ll_l = 1 To ds_orderrqmx.RowCount()
- s_mtrl = s_mtrl_null
-
- ll_porderid = ds_orderrqmx.Object.u_order_ml_mx_taskid[ll_l]
-
- If uo_ml_mrp.uof_get_rqmtrl(arg_scid,ll_orderid_tmp,ll_porderid,s_mtrl,arg_msg) = 0 Then
- arg_msg = '计算相关生产指令单用料失败1,'+arg_msg
- rslt = 0
- Goto ext
- End If
-
- If uo_ml_mrp.uof_add_rqmtrl_scll(s_mtrl,False,arg_msg) = 0 Then
- arg_msg = '计算相关生产指令单用料失败2,'+arg_msg
- rslt = 0
- Goto ext
- End If
- Next
-
- If uo_option_scllaudit_autobuild_tech = 1 Then
- If uo_ml.uof_create_order_plan_tech(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- End If
- End If
- End If
-
- //yyx2-12=10-24
- //删进仓计划
- Delete From u_order_zl_planmx
- Where u_order_zl_planmx.orderid = :arg_orderid
- And u_order_zl_planmx.scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除生产计划进仓计划操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //加入进仓计划
- If inwareflag = 1 Then
- Insert Into u_order_zl_planmx
- (scid,orderid,aps_plancode,begindate,enddate,orderqty)
- Values(:arg_scid,:arg_orderid,'',
- :orderdate,
- :requiredate,
- :orderqty);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致插入进仓计划操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- End If
- //个性包件产品如果有换包件则更新到订单包件明细
- Long k
- Long ll_s_mtrlid
- String ls_s_status,ls_s_woodcode,ls_s_pcode
- Decimal ld_s_soncale,ld_s_soncale_fm
- If arg_scllflag = 1 And ifpackpro_mtrl = 2 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_OrderRqMtrl_tree,u_mtrldef
- Where ( u_OrderRqMtrl_tree.MtrlID = u_mtrldef.mtrlid ) And
- ( u_OrderRqMtrl_tree.scid = :arg_scid ) And
- ( u_OrderRqMtrl_tree.OrderID = :arg_orderid ) And
- ( u_OrderRqMtrl_tree.lp = 1 ) And
- ( u_mtrldef.ifpack > 0 ) And
- ( u_OrderRqMtrl_tree.ifchanged = 1 );
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询主生产计划是否有换包件失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- ds_ch_pack.Retrieve(arg_scid,arg_orderid)
-
- If ds_ch_pack.RowCount() > 0 Then
- Delete From u_saletaskmx_pf
- Where scid = :arg_scid
- And taskid = :taskid
- And printid = :taskmxid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '主生产计划对应销售订单明细删除包件清单明细失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- For k = 1 To ds_ch_pack.RowCount()
- ll_s_mtrlid = ds_ch_pack.Object.u_orderrqmtrl_tree_mtrlid[k]
- ls_s_status = ds_ch_pack.Object.u_orderrqmtrl_tree_status[k]
- ls_s_woodcode = ds_ch_pack.Object.u_orderrqmtrl_tree_woodcode[k]
- ls_s_pcode = ds_ch_pack.Object.u_orderrqmtrl_tree_pcode[k]
- ld_s_soncale = ds_ch_pack.Object.u_orderrqmtrl_tree_rqqty[k]
- ld_s_soncale_fm = orderqty
-
- Insert Into u_saletaskmx_pf
- (scid,taskid,printid,mtrlid,sonmtrlid,status,woodcode,pcode,Sonscale,Sonscale_fm)
- Values(:arg_scid,:taskid,:taskmxid,:MtrlID,:ll_s_mtrlid,:ls_s_status,:ls_s_woodcode,:ls_s_pcode,:ld_s_soncale,:ld_s_soncale_fm);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '新建主生产计划对应销售订单明细包件清单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Next
- End If
- End If
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy uo_rqbuy
- Destroy uo_wfjg
- Destroy uo_ml
- Destroy ds_reqmtrl
- Destroy ds_wfjg
- Destroy ds_ch_pack
- Return rslt
- end function
- public function integer caudit_scll (long arg_scid, long arg_orderid, integer arg_scllflag, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- Long ll_orderid_arr[]
- Long ll_mxbt = 1,ll_i
- Int li_status
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_order_ml_scll_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[065]生产计划用料二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_autocreate_buy = -1000 THEN
- rslt = 0
- arg_msg = '选项:[054]生产计划审核自动建立申购单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_autocreate_wfjg = -1000 THEN
- rslt = 0
- arg_msg = '选项:[068]生产计划审核自动建立外协申请单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_scllaudit_autobuild = -1000 THEN
- rslt = 0
- arg_msg = '选项:[234]主生产计划用料审核自动生成相关指令单及派工单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_requestbuy uo_rqbuy
- uo_rqbuy = Create uo_requestbuy
- uo_request_wfjg uo_wfjg
- uo_wfjg = Create uo_request_wfjg
- uo_wfjg.commit_transaction = sqlca
- uo_order_ml uo_ml
- uo_ml = Create uo_order_ml
- DateTime null_dt
- SetNull(null_dt)
- IF arg_orderid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- rslt = 0
- arg_msg = "计划只有在在进行状态才可以执行用料撤审,请核对"
- GOTO ext
- END IF
- IF uo_option_order_ml_scll_secaudit = 0 THEN
- IF scllflag = 0 THEN
- rslt = 0
- arg_msg = "计划还未执行用料审批,请核对"
- GOTO ext
- END IF
- ELSE
- IF arg_scllflag = 1 THEN
- IF scllflag = 0 THEN
- rslt = 0
- arg_msg = "计划还未执行用料初审,请核对"
- GOTO ext
- END IF
-
- IF scllsecflag = 1 THEN
- rslt = 0
- arg_msg = "计划已执行用料终审,请核对"
- GOTO ext
- END IF
- ELSE
- IF scllsecflag = 0 THEN
- rslt = 0
- arg_msg = "计划还未执行用料终审,请核对"
- GOTO ext
- END IF
- END IF
- END IF
- //检查是否已开指令单
- IF ordertype <> 4 And uo_option_scllaudit_autobuild = 0 THEN
- IF uof_check_if_zl(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- IF uo_option_order_ml_scll_secaudit = 0 THEN
- UPDATE u_order_ml
- SET scllemp = '',
- sclldate = :null_dt,
- scllflag = 0,
- scllsecemp = '',
- scllsecdate = :null_dt,
- scllsecflag = 0
- WHERE orderid = :arg_orderid
- AND scid = :scid
- AND scllflag = 1
- AND scllsecflag = 1
- And status = 1;
- ELSE
- IF arg_scllflag = 1 THEN
- UPDATE u_order_ml
- SET scllemp = '',
- sclldate = :null_dt,
- scllflag = 0
- WHERE orderid = :arg_orderid
- AND scid = :scid
- AND scllflag = 1
- AND scllsecflag = 0
- And status = 1;
- ELSE
- UPDATE u_order_ml
- SET scllsecemp = '',
- scllsecdate = :null_dt,
- scllsecflag = 0
- WHERE orderid = :arg_orderid
- AND scid = :scid
- AND scllflag = 1
- AND scllsecflag = 1
- And status = 1;
- END IF
- END IF
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新计划用料审批标记失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF uo_option_order_ml_scll_secaudit = 0 Or &
- uo_option_order_ml_scll_secaudit = 1 And arg_scllflag = 2 THEN
-
- cnt = 0
- IF relrqbuyid > 0 THEN
- SELECT count(*) INTO :cnt
- FROM u_requestbuy
- WHERE scid = :scid AND
- requestbuyid = :relrqbuyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关申购单是否存在失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
-
- IF uo_option_autocreate_buy = 1 And cnt > 0 THEN
-
- IF uo_rqbuy.caudit_2(scid,relrqbuyid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.caudit(scid,relrqbuyid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.del(scid,relrqbuyid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- cnt = 0
- IF relrqwfjgid > 0 THEN
- SELECT count(*) INTO :cnt
- FROM u_request_wfjg
- WHERE scid = :scid AND
- wfjgid = :relrqwfjgid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关外协申请单是否存在失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
-
- IF uo_option_autocreate_wfjg = 1 And cnt > 0 THEN
- IF uo_wfjg.caudit_2(scid,relrqwfjgid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_wfjg.caudit(scid,relrqwfjgid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_wfjg.Cancel(scid,relrqwfjgid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- //检查是否已开材料申购单,外协申请单
- IF ordertype <> 4 THEN
- IF uof_check_if_rbuy(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uof_check_if_wfjg(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- UPDATE u_order_ml
- SET relrqwfjgid = 0,
- relrqwfjgcode = '',
- relrqbuyid = 0,
- relrqbuycode = ''
- WHERE orderid = :arg_orderid
- And scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新相关申购单信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF uo_option_scllaudit_autobuild <> 0 And ordertype <> 4 THEN
- IF uof_delete_order_plan_tech(arg_scid,arg_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- DECLARE cur_porder CURSOR FOR
- SELECT orderid
- FROM u_order_ml
- WHERE porderid = :arg_orderid
- AND scid = :arg_scid
- And pzlorderid = 0;
- OPEN cur_porder;
-
- FETCH cur_porder Into :ll_orderid_arr[ll_mxbt];
- DO WHILE sqlca.SQLCode = 0
- ll_mxbt++
- FETCH cur_porder Into :ll_orderid_arr[ll_mxbt];
- LOOP
-
- CLOSE cur_porder;
-
- ll_mxbt = ll_mxbt - 1
-
- FOR ll_i = 1 To ll_mxbt
- IF uo_ml.uof_delete_order_plan_tech(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :ll_orderid_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,id:'+String(ll_orderid_arr[ll_i])+','+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 1 THEN
- IF uo_ml.c_sec_audit(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,id:'+String(ll_orderid_arr[ll_i])+','+arg_msg
- GOTO ext
- END IF
- END IF
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :ll_orderid_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,id:'+String(ll_orderid_arr[ll_i])+','+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 4 THEN
- IF uo_ml.c_plan_audit(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,id:'+String(ll_orderid_arr[ll_i])+','+arg_msg
- GOTO ext
- END IF
- END IF
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :ll_orderid_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,id:'+String(ll_orderid_arr[ll_i])+','+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 7 THEN
- IF uo_ml.c_audit(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,id:'+String(ll_orderid_arr[ll_i])+','+arg_msg
- GOTO ext
- END IF
- END IF
- IF uo_ml.del(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '删除相关生产指令单失败,id:'+String(ll_orderid_arr[ll_i])+','+arg_msg
- GOTO ext
- END IF
- NEXT
- END IF
-
- UPDATE u_order_ml
- SET u_order_ml.plan_flag = 0
- WHERE u_order_ml.scid = :arg_scid
- And u_order_ml.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新主生产计划排程标记失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //删进仓计划
- DELETE FROM u_order_zl_planmx
- WHERE u_order_zl_planmx.orderid = :arg_orderid
- And u_order_zl_planmx.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划进仓计划操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- //个性包件产品如果有换包件则更新到订单包件明细
- //IF arg_scllflag = 1 And ifpackpro_mtrl = 2 THEN
- // DELETE FROM u_saletaskmx_pf
- // WHERE scid = :arg_scid
- // AND taskid = :taskid
- // And printid = :taskmxid;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '删除主生产计划对应销售订单明细包件清单失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- Destroy uo_rqbuy
- Destroy uo_wfjg
- Destroy uo_ml
- RETURN rslt
- end function
- public function integer uof_check_if_zl (long arg_scid, long arg_orderid, ref string arg_msg);Int rslt = 1
- Long cnt
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_Order_ml INNER JOIN
- u_order_ml_mx ON u_Order_ml.scid = u_order_ml_mx.scid AND
- u_Order_ml.OrderID = u_order_ml_mx.orderid
- WHERE u_order_ml_mx.scid = :arg_scid
- AND u_order_ml_mx.taskid = :arg_orderid
- AND u_Order_ml.ordertype = 4
- and u_order_ml.pzlorderid = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '检查生产计划是否已开指令单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(cnt) THEN cnt = 0
- IF cnt > 0 THEN
- arg_msg = '生产计划已开指令单,不能撤审或修改用料'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_get_scllflag (long arg_scid, long arg_orderid, ref integer arg_scllflag, ref string arg_msg);Int rslt = 1
- int li_scllflag
- SELECT scllflag INTO :li_scllflag
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '检查生产计划是否已用料审失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- arg_scllflag = li_scllflag
- ext:
- RETURN rslt
- end function
- public function integer uof_check_if_rbuy (long arg_scid, long arg_orderid, ref string arg_msg);Int rslt = 1
- Long cnt
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_requestbuymx,u_requestbuy
- WHERE u_requestbuymx.scid = :arg_scid
- AND u_requestbuymx.orderid = :arg_orderid
- and u_requestbuymx.scid = u_requestbuy.scid
- and u_requestbuymx.requestbuyid = u_requestbuy.requestbuyid
- and u_requestbuy.billtype = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '检查生产计划是否已开材料申购单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(cnt) THEN cnt = 0
- IF cnt > 0 THEN
- arg_msg = '生产计划已开材料申购单,不能撤审或修改用料'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_requestbuymxmx,u_requestbuy
- WHERE u_requestbuymxmx.scid = :arg_scid
- AND u_requestbuymxmx.orderid = :arg_orderid
- and u_requestbuymxmx.scid = u_requestbuy.scid
- and u_requestbuymxmx.requestbuyid = u_requestbuy.requestbuyid
- and u_requestbuy.billtype = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '检查生产计划是否已开材料申购单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(cnt) THEN cnt = 0
- IF cnt > 0 THEN
- arg_msg = '生产计划已开材料申购单,不能撤审或修改用料'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_check_if_wfjg (long arg_scid, long arg_orderid, ref string arg_msg);Int rslt = 1
- Long cnt
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_request_wfjgMx
- WHERE u_request_wfjgMx.scid = :arg_scid
- AND u_request_wfjgMx.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '检查生产计划是否已开外协申请单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(cnt) THEN cnt = 0
- IF cnt > 0 THEN
- arg_msg = '生产计划已开外协申请单,不能撤审或修改用料'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_request_wfjgMxmx
- WHERE u_request_wfjgMxmx.scid = :arg_scid
- AND u_request_wfjgMxmx.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '检查生产计划是否已开外协申请单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(cnt) THEN cnt = 0
- IF cnt > 0 THEN
- arg_msg = '生产计划已开外协申请单,不能撤审或修改用料'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer f_add_conpfqty (long arg_scid, long arg_orderid, decimal arg_pfqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_orderqty,ld_conpfqty
- SELECT orderqty,conpfqty
- INTO :ld_orderqty,:ld_conpfqty
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询部件生产计划相关信息失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF arg_pfqty > ld_orderqty - ld_conpfqty THEN
- rslt = 0
- arg_msg = '部件生产计划未分配数量只有:'+String( ld_orderqty - ld_conpfqty,'#,##0.0###')+',不能再分配:'+String(arg_pfqty,'#,##0.0###')
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET conpfqty = conpfqty + :arg_pfqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- 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 f_add_rqbuyqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_plantype, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_mtrlkind
- Decimal ld_consignedqty,ld_truerqqty,ld_adddec
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误的计划唯一码'
- GOTO ext
- END IF
- IF arg_mtrlid <= 0 THEN
- rslt = 0
- arg_msg = '错误的物料唯一码'
- GOTO ext
- END IF
- SELECT mtrlkind,adddec INTO :li_mtrlkind,:ld_adddec
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+arg_mtrlcode+'查询MRP属性失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_mtrlkind = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT rqbuyqty,
- truerqqty
- INTO :ld_consignedqty,
- :ld_truerqqty
- FROM u_OrderRqMtrl
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- and plantype = :arg_plantype;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+arg_mtrlcode+'计划已申购数(申请)数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_consignedqty) THEN ld_consignedqty = 0
- IF IsNull(ld_truerqqty) THEN ld_truerqqty = 0
- IF ld_consignedqty + arg_qty > ld_truerqqty + ld_adddec THEN
- arg_msg = '物料:'+arg_mtrlcode+'未安排申购(申请)只有:'+String(ld_truerqqty - ld_consignedqty,'#,#0.0#########')+',不能安排:'+String(arg_qty,'#,#0.0#########')
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_OrderRqMtrl
- SET rqbuyqty = rqbuyqty + :arg_qty
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- and plantype = :arg_plantype;
-
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '需求申购(申请)明细失败(更新行数 = 0),'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLNRows > 1 THEN
- arg_msg = '更新物料:'+arg_mtrlcode + '需求申购(申请)明细失败(更新行数 > 1),'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+'已申购(申请)数量失败,'+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 f_assign_rqmtrlqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, integer arg_plantype, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_mtrlkind
- Long i
- String ls_ordercode
- DateTime ldt_rqdate,ldt_edate
- Decimal ld_consignedqty,ld_truerqqty,ld_uprate,ld_upqty
- Decimal ld_updateqty,ld_oriqty
- Boolean lb_ifcheck = True
- IF uo_option_requestbuy_hz = -1000 THEN
- rslt = 0
- arg_msg = '选项:[111]申购单汇总采购,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_requestwfjg_hz = -1000 THEN
- rslt = 0
- arg_msg = '选项:[121]外协申请单汇总外协,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_zlmtrlchange_wx_update_rqwfjg = -1000 THEN
- rslt = 0
- arg_msg = '选项:[333]指令单外协物料换料单更新外协申请单和外协订单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- datastore ds_update
- ds_update = Create datastore
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误的计划唯一码'
- GOTO ext
- END IF
- SELECT ordercode
- INTO :ls_ordercode
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+arg_mtrlcode+'查询主生产计划编号失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_mtrlid <= 0 THEN
- rslt = 0
- arg_msg = '错误的物料唯一码'
- GOTO ext
- END IF
- SELECT mtrlkind,uprate , upqty,mtrlcode
- INTO :li_mtrlkind,:ld_uprate,:ld_upqty,:arg_mtrlcode
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+arg_mtrlcode+'查询MRP属性失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_mtrlkind = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT sum(consignedqty),
- sum(truerqqty)
- INTO :ld_consignedqty,
- :ld_truerqqty
- FROM u_OrderRqMtrl
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- And plantype = :arg_plantype ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',已安排数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_consignedqty) THEN ld_consignedqty = 0
- IF IsNull(ld_truerqqty) THEN ld_truerqqty = 0
- IF arg_plantype = 0 Or arg_plantype = 6 THEN
- lb_ifcheck = True
- ELSEIF arg_plantype = 2 THEN
- IF uo_option_requestbuy_hz = 0 THEN
- lb_ifcheck = True
- ELSE
- lb_ifcheck = False
- END IF
- ELSEIF arg_plantype = 3 THEN
- IF uo_option_requestwfjg_hz = 0 THEN
- IF uo_option_zlmtrlchange_wx_update_rqwfjg = 0 THEN
- lb_ifcheck = False
- ELSE
- lb_ifcheck = True
- END IF
- ELSE
- lb_ifcheck = False
- END IF
- END IF
- IF lb_ifcheck THEN
- IF arg_qty > 0 THEN
- IF Not f_power_ind(1405,sys_msg_pow) Or sys_power_issuper THEN
- IF ld_truerqqty * (1 + ld_uprate) + ld_upqty < (arg_qty + ld_consignedqty) THEN
- rslt = 0
- arg_msg = '物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',需求未安排数只有:'+String(ld_truerqqty - ld_consignedqty,'#,##0.0####' )+',允许订货上限为:'+String(ld_truerqqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty,'#,##0.00##')+',少于本次安排数量:'+String(arg_qty,'#,##0.00##')
- GOTO ext
- END IF
- ELSE
- IF ld_consignedqty + arg_qty > ld_truerqqty THEN
- arg_msg = '物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',未安排数只有:'+String(ld_truerqqty - ld_consignedqty,'#,#0.0#')+',不能安排:'+String(arg_qty,'#,#0.0#')
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF ld_consignedqty < Abs( arg_qty ) THEN
- arg_msg = '物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',已安排数只有:'+String(ld_consignedqty,'#,#0.0#')+',不能取消安排:'+String(Abs(arg_qty),'#,#0.0#')
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_plantype = 2 And uo_option_requestbuy_hz = 1 THEN
- IF arg_qty > 0 THEN
- ds_update.DataObject = 'ds_assign_rqmtrlqty1'
- ELSE
- ds_update.DataObject = 'ds_assign_rqmtrlqty2'
- END IF
- ds_update.SetTransObject(sqlca)
-
- ds_update.Retrieve(arg_scid,arg_orderid,arg_mtrlid,arg_wrkGrpid,arg_status,arg_woodcode,arg_pcode,arg_plantype)
-
- IF ds_update.RowCount() = 0 THEN
- rslt = 1
- GOTO ext
- // arg_msg = '物料:'+arg_mtrlcode +',计划:'+ls_ordercode+',没有需求明细,请检查主生产计划需求明细'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- END IF
-
- IF arg_qty > 0 THEN
- ld_oriqty = arg_qty
- FOR i = 1 To ds_update.RowCount()
- ldt_rqdate = ds_update.Object.rqdate[i]
- ldt_edate = ds_update.Object.edate[i]
-
- IF ld_oriqty > ds_update.Object.notconsignedqty[i] THEN
- ld_updateqty = ds_update.Object.notconsignedqty[i]
- ld_oriqty = ld_oriqty - ds_update.Object.notconsignedqty[i]
- ELSE
- ld_updateqty = ld_oriqty
- ld_oriqty = 0
- END IF
-
- IF i = ds_update.RowCount() THEN
- //处理超申购特殊情况
- IF ld_oriqty > 0 THEN
- ld_updateqty = ld_updateqty + ld_oriqty
- ld_oriqty = 0
- END IF
- END IF
-
- UPDATE u_OrderRqMtrl
- SET consignedqty = consignedqty + :ld_updateqty
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- AND plantype = :arg_plantype
- AND rqdate = :ldt_rqdate
- And edate = :ldt_edate;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '更新物料:'+arg_mtrlcode +',计划:'+ls_ordercode+',需求明细失败,(没有找到更新行)'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',已安排数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- IF ld_oriqty > 0 THEN
- rslt = 0
- arg_msg = '物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',已安排数量更新有更新余数:'+String(ld_oriqty)+',操作取消'
- GOTO ext
- END IF
- ELSE
- ld_oriqty = Abs(arg_qty)
- FOR i = 1 To ds_update.RowCount()
- ldt_rqdate = ds_update.Object.rqdate[i]
- ldt_edate = ds_update.Object.edate[i]
-
- IF ld_oriqty > ds_update.Object.notconsignedqty[i] THEN
- ld_updateqty = ds_update.Object.notconsignedqty[i]
- ld_oriqty = ld_oriqty - ds_update.Object.notconsignedqty[i]
- ELSE
- ld_updateqty = ld_oriqty
- ld_oriqty = 0
- END IF
-
- UPDATE u_OrderRqMtrl
- SET consignedqty = consignedqty - :ld_updateqty
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- AND plantype = :arg_plantype
- AND rqdate = :ldt_rqdate
- And edate = :ldt_edate;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '更新物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',需求明细失败,(没有找到更新行)'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',已安排数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- // IF ld_oriqty > 0 THEN
- // rslt = 0
- // arg_msg = '物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',已安排数量更新有更新余数:'+String(ld_oriqty)+',操作取消'
- // GOTO ext
- // END IF
- END IF
- ELSE
- UPDATE u_OrderRqMtrl
- SET consignedqty = consignedqty + :arg_qty
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkGrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND scid = :arg_scid
- And plantype = :arg_plantype;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '更新物料:'+arg_mtrlcode +',计划:'+ls_ordercode+',需求明细失败,(没有找到更新行)'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+',计划:'+ls_ordercode+',已安排数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- UPDATE u_order_ml
- SET u_Order_ml.zlflag = isnull(uv_order_zl_flag.flag,0)
- FROM u_Order_ml LEFT OUTER JOIN
- uv_order_zl_flag ON u_Order_ml.scid = uv_order_zl_flag.scid AND
- u_Order_ml.OrderID = uv_order_zl_flag.OrderID
- WHERE u_order_ml.scid = :arg_scid
- And u_order_ml.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- 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
- Destroy ds_update
- RETURN rslt
- end function
- public function integer add_secdscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET secdscrp = :arg_newdescppart
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致修改计划备注2操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK;
- GOTO ext
- END IF
- secdscrp = arg_newdescppart
- ext:
- IF rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer add_thdscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET thdscrp = :arg_newdescppart
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致修改计划备注3操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK;
- GOTO ext
- END IF
- thdscrp = arg_newdescppart
- ext:
- IF rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer uof_tryfinish_packorder (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt
- rslt = 1
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- Decimal ld_qty
- Int li_ifpackpro,li_ifpack,li_pordermtrl_ordertype
- Long ll_porder_mtrlid
- DateTime null_dt
- SetNull(null_dt)
- Long ll_cnt_zl,ll_cnt_zl_finish
- Int ll_pack1_finish
- //如果不是指令单,或者合并指令单的情况不作处理
- IF porderid = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT u_mtrldef.ifpackpro,u_mtrldef.ordertype,u_mtrldef.mtrlid
- INTO :li_ifpackpro,:li_pordermtrl_ordertype,:ll_porder_mtrlid
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.orderid = :porderid
- And u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关主计划产品是否全包件产品失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ifpackpro = 0 THEN //不是全包件产品,退出函数,否则检查主计划相关指令单是否全部完成
- rslt = 1
- GOTO ext
- END IF
- Long ll_cnt,cnt
- ll_cnt = 0
- IF li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
- SELECT count(*) INTO :ll_cnt
- FROM u_orderrqmtrl,u_mtrldef
- WHERE u_orderrqmtrl.mtrlid = u_mtrldef.mtrlid
- AND u_orderrqmtrl.orderid = :porderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND ( u_mtrldef.ifpack = 1 OR u_mtrldef.ifpack = 2 )
- And (u_orderrqmtrl.plantype = 0 or u_orderrqmtrl.plantype = 2) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询包件产品主生产计划相关生产需求失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSEIF li_ifpackpro = 3 THEN
- SELECT count(*) INTO :ll_cnt
- FROM u_orderrqmtrl,u_order_ml
- WHERE u_orderrqmtrl.scid = u_order_ml.scid
- AND u_orderrqmtrl.orderid = u_order_ml.orderid
- AND u_orderrqmtrl.mtrlid = u_order_ml.mtrlid
- AND u_orderrqmtrl.orderid = :porderid
- AND u_orderrqmtrl.scid = :arg_scid
- And u_orderrqmtrl.plantype = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询组合配置包件产品主生产计划相关生产需求失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- //1.先检查主生产计划自制需求,需求数是否等于用料数,不等即说明有分配库存,跳过判断完成比例
- //2.查询相应部件的完成情况,按需求量对比后得出主计划物料的完成数量
- IF li_ifpackpro = 1 Or li_ifpackpro = 3 THEN
- IF ll_cnt > 0 THEN
- cnt = 0
- IF li_ifpackpro = 1 THEN
- SELECT count(*) INTO :cnt
- FROM u_orderrqmtrl,u_mtrldef
- WHERE u_orderrqmtrl.mtrlid = u_mtrldef.mtrlid
- AND ( u_mtrldef.ifpack = 1 )
- AND u_orderrqmtrl.orderid = :porderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND u_orderrqmtrl.inqty < u_orderrqmtrl.truerqqty
- And (u_orderrqmtrl.plantype = 0 or u_orderrqmtrl.plantype = 2) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询包件产品主生产计划相关指令单是否全部完成失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSEIF li_ifpackpro = 3 THEN
- SELECT count(*) INTO :cnt
- FROM u_orderrqmtrl,u_order_ml
- WHERE u_orderrqmtrl.scid = u_order_ml.scid
- AND u_orderrqmtrl.orderid = u_order_ml.orderid
- AND u_orderrqmtrl.mtrlid = u_order_ml.mtrlid
- AND u_orderrqmtrl.orderid = :porderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND u_orderrqmtrl.inqty < u_orderrqmtrl.truerqqty
- And u_orderrqmtrl.plantype = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询组合配置包件产品主生产计划相关指令单是否全部完成失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
-
- IF cnt = 0 THEN //相关自制需求全部完成,更新主生产计划已完成数及状态
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator,
- acmpqty = orderqty
- WHERE ( u_order_ml.orderid = :porderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致生产计划完成状态设置操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //更新分离排产包件产品指令完成数
- IF li_ifpackpro = 1 And li_pordermtrl_ordertype = 1 THEN
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator,
- acmpqty = orderqty
- FROM u_order_ml
- WHERE (u_order_ml.scid = :arg_scid)
- AND (u_order_ml.porderid = :porderid)
- And (u_order_ml.mtrlid = :ll_porder_mtrlid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新包件产品主生产计划对应【指令单分离】相关对应产品指令单状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- //如果没有全部完成,则取自制需求的最小完成率去计算主生产计划的完成数
- Decimal ld_minrate
-
- IF li_ifpackpro = 1 THEN
- SELECT min(inqty / truerqqty) INTO :ld_minrate
- FROM u_orderrqmtrl,u_mtrldef
- WHERE u_orderrqmtrl.mtrlid = u_mtrldef.mtrlid
- AND u_orderrqmtrl.orderid = :porderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND ( u_mtrldef.ifpack = 1 )
- AND (u_orderrqmtrl.plantype = 0 or u_orderrqmtrl.plantype = 2)
- And u_orderrqmtrl.truerqqty > 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关包件产品主生产计划自制需求完成率失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ElseIf ( li_ifpackpro = 3 ) THEN
- SELECT min(inqty / truerqqty) INTO :ld_minrate
- FROM u_orderrqmtrl,u_order_ml
- WHERE u_orderrqmtrl.scid = u_order_ml.scid
- AND u_orderrqmtrl.orderid = u_order_ml.orderid
- AND u_orderrqmtrl.mtrlid = u_order_ml.mtrlid
- AND u_orderrqmtrl.orderid = :porderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND u_orderrqmtrl.plantype = 0
- And u_orderrqmtrl.truerqqty > 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关组合配置包件产品主生产计划自制需求完成率失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
-
- UPDATE u_order_ml
- SET status = 1,
- accomplishdate = :null_dt,
- accomplishemp = '',
- acmpqty = orderqty * :ld_minrate
- WHERE ( u_order_ml.orderid = :porderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新包件产品主生产计划状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //更新分离排产包件产品指令完成数
- IF li_ifpackpro = 1 And li_pordermtrl_ordertype = 1 THEN
- UPDATE u_order_ml
- SET status = 1,
- accomplishdate = :null_dt,
- accomplishemp = '',
- acmpqty = orderqty * :ld_minrate
- WHERE (u_order_ml.scid = :arg_scid)
- AND (u_order_ml.porderid = :porderid)
- And (u_order_ml.mtrlid = :ll_porder_mtrlid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新包件产品主生产计划对应【指令单分离】相关对应产品指令单状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- ELSE
- //1.先检查主生产计划自制需求,需求数是否等于用料数,不等即说明有分配库存,跳过判断完成比例
- //2.查询相应部件的完成情况,按需求量对比后得出主计划物料的完成数量
- SELECT count(*)
- INTO :ll_cnt_zl
- FROM u_order_ml,u_mtrldef
- WHERE (u_order_ml.mtrlid = u_mtrldef.mtrlid)
- AND ( u_order_ml.porderid = :porderid )
- AND ( u_order_ml.scid = :arg_scid )
- AND ( u_order_ml.pzlorderid > 0 )
- And ( u_mtrldef.ifpack = 2 );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询包件产品主生产计划个性包件指令状态失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_cnt_zl = 0 THEN
- arg_msg = '错误的个性包件指令数量,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE u_order_ml.pzlorderid = :pzlorderid
- AND u_order_ml.scid = :arg_scid
- AND u_order_ml.AcmpQty < u_order_ml.orderqty - u_order_ml.stopqty
- And u_order_ml.ordertype = 4;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询个性包件产品主生产计划【分离指令】相关个性包件指令是否全部完成或终止失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt = 0 THEN //相关自制需求全部完成,更新主生产计划已完成数及状态
- IF pzlorderid = 0 THEN
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator,
- acmpqty = orderqty
- WHERE ( u_order_ml.porderid = :porderid )
- AND (u_order_ml.scid = :arg_scid)
- And (u_order_ml.mtrlid = :ll_porder_mtrlid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "通用包件指令更新个性包件产品主生产计划【分离指令】完成状态失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator,
- acmpqty = orderqty
- WHERE ( u_order_ml.orderid = :pzlorderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "个性包件指令更新个性包件产品主生产计划【分离指令】完成状态失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- //如果没有全部完成,则取自制需求的最小完成率去计算主生产计划的完成数
- IF pzlorderid > 0 THEN
- SELECT min(AcmpQty/orderqty) INTO :ld_minrate
- FROM u_order_ml
- WHERE u_order_ml.pzlorderid = :pzlorderid
- AND u_order_ml.scid = :arg_scid
- And u_order_ml.ordertype = 4;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询个性包件产品主生产计划【分离指令】相关个性包件指令完成率失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_order_ml
- SET status = 1,
- accomplishdate = :null_dt,
- accomplishemp = '',
- acmpqty = orderqty * :ld_minrate
- WHERE ( u_order_ml.orderid = :pzlorderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新个性包件产品主生产计划【分离指令】完成状态失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
-
- IF ll_cnt > 0 THEN
- IF uo_option_packpro2_not_use_pack1 = 1 THEN
- ll_pack1_finish = 1
- ELSE
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_orderrqmtrl,u_mtrldef
- WHERE u_orderrqmtrl.mtrlid = u_mtrldef.mtrlid
- AND ( u_mtrldef.ifpack = 1 )
- AND u_orderrqmtrl.orderid = :porderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND u_orderrqmtrl.inqty < u_orderrqmtrl.truerqqty
- AND u_orderrqmtrl.plantype = 0
- And u_mtrldef.ifpack = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询个性包件产品主生产计划自制需求通用包件是否全部完成失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- ll_pack1_finish = 0
- ELSE
- ll_pack1_finish = 1
- END IF
- END IF
- ELSE
- ll_pack1_finish = 1
- END IF
-
- ld_qty = 0
- SELECT isnull(sum(AcmpQty),0)
- INTO :ld_qty
- FROM u_order_ml
- WHERE u_order_ml.porderid = :porderid
- AND u_order_ml.ordertype = 4
- AND u_order_ml.pzlorderid = 0
- And u_order_ml.mtrlid = :ll_porder_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关相关个性包件产品主生产计划【分离指令】完成数失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_order_ml
- SET status = case when :ll_pack1_finish = 1 AND u_order_ml.orderqty - u_order_ml.stopqty = :ld_qty then 5 else 1 END,
- accomplishdate = case when :ll_pack1_finish = 1 AND u_order_ml.orderqty - u_order_ml.stopqty = :ld_qty then getdate() else :null_dt END,
- accomplishemp = case when :ll_pack1_finish = 1 AND u_order_ml.orderqty - u_order_ml.stopqty = :ld_qty then :publ_operator else '' END,
- acmpqty = :ld_qty
- WHERE ( u_order_ml.orderid = :porderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新个性包件产品主生产计划完成状态失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- 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 mod_perfinishdate (long arg_scid, long arg_orderid, datetime arg_oridate, datetime arg_newdate, string arg_reason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime server_dt
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Date(arg_oridate) = Date(arg_newdate) THEN
- rslt = 0
- arg_msg = '新预计完成日期与原日期相同,无须更新,操作取消'
- GOTO ext
- END IF
- IF Date(arg_newdate) < Date(orderdate) THEN
- rslt = 0
- arg_msg = '不合理的新预计完成日期(新预计完成日期早于生产计划日期)'
- GOTO ext
- END IF
- arg_reason = Trim(arg_reason)
- Long cnt
- Long ll_printid
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml_perfinishdate_log
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- and logtype = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询预计完成日期修改日志失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- ll_printid = 0
- ELSE
- SELECT max(printid) INTO :ll_printid
- FROM u_order_ml_perfinishdate_log
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- and logtype = 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询预计完成日期修改日志失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ll_printid++
- SELECT Top 1 getdate() INTO :server_dt FROM u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- INSERT INTO u_order_ml_perfinishdate_log
- (scid,
- orderid,
- printid,
- logtype,
- oridate,
- newdate,
- reason,
- modemp,
- moddate)
- VALUES
- (:arg_scid,
- :arg_orderid,
- :ll_printid,
- 0,
- :arg_oridate,
- :arg_newdate,
- :arg_reason,
- :publ_operator,
- :server_dt);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入预计完成日期修改日志操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET perfinishdate = :arg_newdate
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新预计完成日期失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- Return(rslt)
- end function
- public function integer f_add_dstrqty_ws (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_noallocqty, decimal arg_allocqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_ordertype
- Long cnt
- Long ll_taskid[]
- Decimal ld_qty_tmp,ld_rqqty_tmp,ld_dstrqty_tmp,ld_update_qty
- Long ll_porderid
- Long i
- Boolean lb_iffind
- Long ll_i,ll_cnt
- Long ll_issuliao
- Long ll_wrkGrpid,ll_storageid
- Decimal ld_price
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误的指令单唯一码'
- GOTO ext
- END IF
- IF arg_wrkGrpid <= 0 THEN
- rslt = 0
- arg_msg = '错误的工作组唯一码'
- GOTO ext
- END IF
- IF arg_mtrlid <= 0 THEN
- rslt = 0
- arg_msg = '错误的物料唯一码'
- GOTO ext
- END IF
- SELECT issuliao
- INTO :ll_issuliao
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料领料属性失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ll_issuliao = 2 Or ll_issuliao = 3 THEN
- Decimal ld_slscllweight,ld_orderweight
-
- UPDATE u_order_ml
- SET slscllweight = slscllweight + :arg_noallocqty
- FROM u_order_ml
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新塑料领料总重失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- SELECT wrkGrpid INTO :ll_wrkGrpid
- FROM u_order_ml
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单所属车间失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT u_sc_wkp.storageid
- INTO :ll_storageid
- FROM u_storage,u_sc_wkp
- WHERE u_sc_wkp.wrkgrpid = :ll_wrkgrpid
- And u_sc_wkp.storageid = u_storage.storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询车间对应仓库属性失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT top 1 u_mtrlware.cost
- INTO :ld_price
- FROM u_mtrlware,u_mtrldef
- WHERE u_mtrlware.storageid = :ll_storageid
- AND u_mtrlware.mtrlid = :arg_mtrlid
- AND u_mtrlware.status = :arg_status
- AND u_mtrlware.woodcode = :arg_woodcode
- AND u_mtrlware.pcode = :arg_pcode
- And u_mtrlware.mtrlid = u_mtrldef.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询库存成本价失败,'+string(arg_mtrlid)+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- ld_price = 0
- END IF
- IF IsNull(ld_price) THEN ld_price = 0
- UPDATE u_orderrqmtrl_scll
- SET DstrQty = DstrQty + :arg_noallocqty,
- wsdstrqty = wsdstrqty + :arg_noallocqty + :arg_allocqty,
- costamt = costamt + :arg_noallocqty * :ld_price
- WHERE orderid = :arg_orderid
- AND mtrlid = :arg_mtrlid
- AND wrkGrpid = :arg_wrkGrpid
- AND scid = :arg_scid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml_mx
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询计划明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT ordertype,porderid
- INTO :li_ordertype,:ll_porderid
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 1 THEN
- IF li_ordertype = 4 And ll_porderid = 0 THEN
- arg_msg = '错误的计划资料,计划类型为指令单,但没有上级生产计划'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_ordertype = 4 THEN
- IF arg_noallocqty > 0 THEN
- DECLARE cur_mx CURSOR FOR
- SELECT taskid
- FROM u_order_ml_mx
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- Order By taskid ;
- OPEN cur_mx ;
- FETCH cur_mx Into :ll_taskid[i];
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx Into :ll_taskid[i];
- LOOP
- CLOSE cur_mx;
- ELSE
- DECLARE cur_mx_2 CURSOR FOR
- SELECT taskid
- FROM u_order_ml_mx
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- Order By taskid Desc;
- OPEN cur_mx_2 ;
- FETCH cur_mx_2 Into :ll_taskid[i];
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx_2 Into :ll_taskid[i];
- LOOP
- CLOSE cur_mx_2;
- END IF
- END IF
- END IF
- //更新需求表
- Long ll_orderid_update
- IF cnt = 1 THEN
- IF li_ordertype = 4 THEN
- ll_orderid_update = ll_porderid
- ELSE
- ll_orderid_update = arg_orderid
- END IF
- UPDATE u_orderrqmtrl
- SET DstrQty = DstrQty + :arg_noallocqty
- WHERE orderid = :ll_orderid_update
- AND mtrlid = :arg_mtrlid
- AND wrkGrpid = :arg_wrkgrpid
- AND scid = :arg_scid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- IF li_ordertype <> 4 THEN //如果是主计划,直接更新
- UPDATE u_orderrqmtrl
- SET DstrQty = DstrQty + :arg_noallocqty
- WHERE orderid = :arg_orderid
- AND mtrlid = :arg_mtrlid
- AND wrkGrpid = :arg_wrkgrpid
- AND scid = :arg_scid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- ld_qty_tmp = arg_noallocqty
- lb_iffind = False
- FOR ll_i = 1 To cnt
- ll_cnt = 0
- SELECT count(*) INTO :ll_cnt
- FROM u_orderrqmtrl
- WHERE orderid = :ll_taskid[ll_i]
- AND mtrlid = :arg_mtrlid
- AND wrkGrpid = :arg_wrkgrpid
- AND scid = :arg_scid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_cnt = 0 THEN
- IF ll_i = cnt And lb_iffind = False THEN
- rslt = 0
- arg_msg = '查询物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- GOTO ext
- ELSE
- CONTINUE
- END IF
- ELSE
- lb_iffind = True
- END IF
-
- SELECT rqqty,DstrQty INTO :ld_rqqty_tmp,:ld_dstrqty_tmp
- FROM u_orderrqmtrl
- WHERE orderid = :ll_taskid[ll_i]
- AND mtrlid = :arg_mtrlid
- AND wrkGrpid = :arg_wrkgrpid
- AND scid = :arg_scid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF arg_noallocqty > 0 THEN //领料单审核
- IF ld_qty_tmp > ld_rqqty_tmp - ld_dstrqty_tmp THEN
- IF ll_i = cnt THEN
- ld_update_qty = ld_qty_tmp
- ld_qty_tmp = 0
- ELSE
- ld_update_qty = ld_rqqty_tmp - ld_dstrqty_tmp
- ld_qty_tmp = ld_qty_tmp - (ld_rqqty_tmp - ld_dstrqty_tmp)
- END IF
- ELSE
- ld_update_qty = ld_qty_tmp
- ld_qty_tmp = 0
- END IF
- ELSEIF arg_noallocqty < 0 THEN //领料单撤审
- IF 0 - ld_qty_tmp > ld_dstrqty_tmp THEN
- IF ll_i = cnt THEN
- ld_update_qty = 0 - ld_dstrqty_tmp
- ld_qty_tmp = 0
- ELSE
- ld_update_qty = 0 - ld_dstrqty_tmp
- ld_qty_tmp = ld_qty_tmp + ld_dstrqty_tmp
- END IF
- ELSE
- ld_update_qty = ld_qty_tmp
- ld_qty_tmp = 0
- END IF
- END IF
-
- UPDATE u_orderrqmtrl
- SET DstrQty = DstrQty + :ld_update_qty
- WHERE orderid = :ll_taskid[ll_i]
- AND mtrlid = :arg_mtrlid
- AND wrkGrpid = :arg_wrkgrpid
- AND scid = :arg_scid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ld_qty_tmp = 0 THEN EXIT
- NEXT
- END IF
- 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 f_add_dstrqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, decimal arg_costamt, ref string arg_msg, boolean arg_ifcommit, long arg_relint_1, ref decimal arg_overqty);Int rslt = 1
- Long ll_wrkgrpid,ll_porderid
- Decimal ld_rqqty,ld_dstrqty
- Int li_ordertype
- Long cnt
- Long ll_taskid[]
- String ls_taskcode[]
- Long i = 1
- Long ll_i
- Decimal ld_qty_tmp,ld_rqqty_tmp,ld_dstrqty_tmp,ld_update_qty
- Long ll_cnt
- Boolean lb_iffind = False
- Decimal ld_update_qty_scll,ld_update_amt_scll
- Long ll_mtrlkind,ll_issuliao
- Decimal ld_scllrate,ld_scllqty
- String ls_ordercode,ls_pordercode
- If uo_option_scll_back_check = -1000 Then
- rslt = 0
- arg_msg = '选项:[379]退料单检查允许退料数量,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- it_mx_rq = 0
- ins_s_rqmtrl = ins_s_empty
- If arg_orderid <= 0 Then
- rslt = 0
- arg_msg = '错误的计划唯一码'
- Goto ext
- End If
- cnt = 0
- Select count(*) Into :cnt
- From u_order_ml_mx
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询计划明细失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Select ordertype,porderid,ordercode,pordercode
- Into :li_ordertype,:ll_porderid,:ls_ordercode,:ls_pordercode
- From u_order_ml
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询生产计划资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt = 1 Then
- If li_ordertype = 4 And ll_porderid = 0 Then
- arg_msg = '错误的计划资料,计划类型为指令单,但没有上级生产计划'
- rslt = 0
- Goto ext
- End If
- Else
- If li_ordertype = 4 Then
- If arg_qty > 0 Then
- Declare cur_mx Cursor For
- Select taskid,taskcode
- From u_order_ml_mx
- Where scid = :arg_scid
- And orderid = :arg_orderid
- Order By taskid ;
- Open cur_mx ;
- Fetch cur_mx Into :ll_taskid[i],:ls_taskcode[i];
- Do While sqlca.SQLCode = 0
- i++
- Fetch cur_mx Into :ll_taskid[i],:ls_taskcode[i];
- Loop
- Close cur_mx;
- Else
- Declare cur_mx_2 Cursor For
- Select taskid,taskcode
- From u_order_ml_mx
- Where scid = :arg_scid
- And orderid = :arg_orderid
- Order By taskid Desc;
- Open cur_mx_2 ;
- Fetch cur_mx_2 Into :ll_taskid[i],:ls_taskcode[i];
- Do While sqlca.SQLCode = 0
- i++
- Fetch cur_mx_2 Into :ll_taskid[i],:ls_taskcode[i];
- Loop
- Close cur_mx_2;
- End If
- End If
- End If
- //后面增加top 1 处理 2013.06.18
- //If arg_wrkGrpid <= 0 Then
- // rslt = 0
- // arg_msg = '错误的工作中心唯一码'
- // Goto ext
- //End If
- If arg_mtrlid <= 0 Then
- rslt = 0
- arg_msg = '错误的物料唯一码'
- Goto ext
- End If
- Select mtrlkind,
- issuliao,
- scllrate,
- scllqty
- Into :ll_mtrlkind,
- :ll_issuliao,
- :ld_scllrate,
- :ld_scllqty
- From u_mtrldef
- Where mtrlid = :arg_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '指令单:'+ls_ordercode+'查询物料领料属性失败,ID'+String(arg_mtrlid) +' ' +sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- //后面增加top 1 处理 2013.06.18
- If arg_wrkGrpid > 0 Then
- Select wrkGrpid
- Into :ll_wrkgrpid
- From u_workgroup
- Where workgroupid = :arg_wrkGrpid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '指令单:'+ls_ordercode+'查询工作中心所属工组失败,ID:'+String(arg_wrkGrpid) +' ' +sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Else
- ll_wrkgrpid = 0
- End If
- If ll_issuliao = 2 Or ll_issuliao = 3 Then
- Decimal ld_slscllweight,ld_orderweight
-
- Update u_order_ml
- Set slscllweight = slscllweight + :arg_qty
- From u_order_ml
- Where orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '更新塑料领料总重失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- If arg_relint_1 = 0 Or arg_relint_1 = 2 Or arg_relint_1 = 5 Then //领料单 or 退料单
- Select truerqqty,dstrqty
- Into :ld_rqqty,:ld_dstrqty
- From u_orderrqmtrl_scll
- Where orderid = :arg_orderid
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '指令单:'+ls_ordercode+'查询物料:'+arg_mtrlcode+'已领料数失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If IsNull(ld_rqqty) Then ld_rqqty = 0
- If IsNull(ld_dstrqty) Then ld_dstrqty = 0
-
- If arg_relint_1 = 0 Or arg_relint_1 = 5 Then
- If ll_mtrlkind = 0 Then
- If ld_dstrqty + arg_qty > ld_rqqty * (1 + ld_scllrate) + ld_scllqty Then
- arg_msg = '指令单:'+ls_ordercode+'物料:'+arg_mtrlcode+'未领料数只有:'+String(ld_rqqty - ld_dstrqty,'#,#0.0#') + ',可领数只有:' +String(ld_rqqty * (1 + ld_scllrate) + ld_scllqty - ld_dstrqty,'#,#0.0#')+',不能领料:'+String(arg_qty,'#,#0.0#')
- rslt = 0
- Goto ext
- End If
- ld_update_qty_scll = arg_qty
- ld_update_amt_scll = arg_costamt
- arg_overqty = 0
- Else
- If arg_qty > 0 Then
- If ld_dstrqty + arg_qty > ld_rqqty Then
- ld_update_qty_scll = ld_rqqty - ld_dstrqty
- ld_update_amt_scll = (arg_costamt / arg_qty) * (ld_rqqty - ld_dstrqty)
- arg_overqty = ld_dstrqty + arg_qty - ld_rqqty
- Else
- ld_update_qty_scll = arg_qty
- ld_update_amt_scll = arg_costamt
- arg_overqty = 0
- End If
- Else
- If ld_dstrqty + arg_qty < 0 Then
- ld_update_qty_scll = 0 - ld_dstrqty
- ld_update_amt_scll = (arg_costamt / arg_qty) * (0 - ld_dstrqty)
- arg_overqty = ld_dstrqty + arg_qty
- Else
- ld_update_qty_scll = arg_qty
- ld_update_amt_scll = arg_costamt
- arg_overqty = 0
- End If
- End If
- End If
- ElseIf arg_relint_1 = 2 Then
- If arg_qty < 0 Then //审核还料单时检查,撤审时不检查
-
- If ld_dstrqty < Abs(arg_qty) Then
- arg_msg = '指令单:'+ls_ordercode+'物料:'+arg_mtrlcode+'已领料数只有:'+String(ld_dstrqty,'#,#0.0#')+',不能退料:'+String(arg_qty,'#,#0.0#')
- rslt = 0
- Goto ext
- End If
-
- If uo_option_scll_back_check = 1 Then
- Decimal ld_orderqty,ld_acmpqty
- Decimal ld_blrate,ld_canbackqty
-
- Select orderqty,acmpqty
- Into :ld_orderqty,:ld_acmpqty
- From u_order_ml
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询指令单:'+ls_ordercode+'已进仓数失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- If ld_orderqty > 0 Then
- ld_blrate = ld_rqqty / ld_orderqty
-
- ld_canbackqty = ld_dstrqty - ld_blrate * ld_acmpqty
-
- If Abs(arg_qty) > ld_canbackqty Then
- arg_msg = '指令单:'+ls_ordercode+'已进仓数:'+string(ld_acmpqty,'#,#0.0#')+',物料:'+arg_mtrlcode+'对应已用料数量:'+string(ld_blrate * ld_acmpqty,'#,#0.0#')+',已领数:'+string(ld_dstrqty,'#,#0.0#')+',可退料数只有:'+String(ld_canbackqty,'#,#0.0#')+',不能退料:'+String(arg_qty,'#,#0.0#')
- rslt = 0
- Goto ext
- End If
- End If
- End If
-
- End If
-
- ld_update_qty_scll = arg_qty
- ld_update_amt_scll = arg_costamt
-
- End If
- ElseIf arg_relint_1 = -1 Then
- ld_update_qty_scll = arg_qty
- ld_update_amt_scll = arg_costamt
- End If
- If Not (arg_relint_1 = -1 And li_ordertype <> 3) Then
-
- Update u_orderrqmtrl_scll
- Set DstrQty = DstrQty + :ld_update_qty_scll,
- costamt = costamt + :ld_update_amt_scll
- Where orderid = :arg_orderid
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
-
- If sqlca.SQLCode = 0 Then
- If sqlca.SQLNRows = 0 Then
- Insert Into u_orderrqmtrl_scll
- (scid,
- OrderID,
- MtrlID,
- wrkGrpid,
- truerqqty,
- DstrQty,
- costamt,
- status,
- woodcode,
- pcode)
- Values
- (:arg_scid,
- :arg_orderid,
- :arg_mtrlid,
- :ll_wrkgrpid,
- :arg_Qty,
- 0,
- :arg_costamt,
- :arg_status,
- :arg_woodcode,
- :arg_pcode);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '指令单:'+ls_ordercode+'物料:'+arg_mtrlcode + '新建领料明细失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
-
- datastore ds_sl
- ds_sl = Create datastore
- ds_sl.DataObject = "ds_slcost"
- ds_sl.SetTransObject(sqlca)
- ds_sl.Retrieve(arg_scid,arg_orderid)
- Long ll_row
- Decimal ld_slcost = 0,ld_planslcost = 0
- ll_row = ds_sl.RowCount()
- If ll_row > 0 Then
- For ll_i = 1 To ll_row
- If ds_sl.Object.u_mtrldef_issuliao[ll_i] = 2 Or ds_sl.Object.u_mtrldef_issuliao[ll_i] = 3 Then
- ld_slcost = ld_slcost + ds_sl.Object.u_orderrqmtrl_scll_costamt[ll_i] //ds_sl.Object.u_orderrqmtrl_truerqqty[ll_i] * ds_sl.Object.price[ll_i]
- ld_planslcost = ld_planslcost + ds_sl.Object.u_orderrqmtrl_scll_truerqqty[ll_i] * ds_sl.Object.price[ll_i]
- End If
- Next
- End If
-
- Update u_order_ml
- Set u_order_ml.slcost = :ld_slcost,
- u_order_ml.planslcost = :ld_planslcost
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '指令单:'+ls_ordercode+'更新计划塑料成本失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- rslt = 0
- arg_msg = '指令单:'+ls_ordercode+'更新物料:'+arg_mtrlcode+',领料数失败>>'+sqlca.SQLErrText
- Goto ext
- End If
-
- End If
- //更新需求表
- Long ll_orderid_update
- String ls_ordercode_update
- If cnt = 1 Then
- If li_ordertype = 4 Then
- ll_orderid_update = ll_porderid
- ls_ordercode_update = ls_pordercode
- Else
- ll_orderid_update = arg_orderid
- ls_ordercode_update = ls_ordercode
- End If
-
- Update u_orderrqmtrl
- Set DstrQty = DstrQty + :arg_qty
- Where orderid = :ll_orderid_update
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode_update +',更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- Goto ext
- ElseIf sqlca.SQLNRows = 0 Then
-
- Select top 1 wrkgrpid Into :ll_wrkgrpid
- From u_orderrqmtrl
- Where orderid = :ll_orderid_update
- And mtrlid = :arg_mtrlid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode_update +',物料:'+arg_mtrlcode+',查询物料需求明细失败(领料组)>>'+sqlca.SQLErrText
- Goto ext
- ElseIf sqlca.SQLNRows = 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode_update +',物料:'+arg_mtrlcode+',查询物料需求明细失败(领料组)>>找不到相关行'
- Goto ext
- End If
-
-
- Update u_orderrqmtrl
- Set DstrQty = DstrQty + :arg_qty
- Where orderid = :ll_orderid_update
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode_update +',更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- Goto ext
- ElseIf sqlca.SQLNRows = 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode_update +',更新物料:'+arg_mtrlcode+',计划需求明细失败>>找不到相关更新行'
- Goto ext
- End If
-
- End If
-
- it_mx_rq++
- ins_s_rqmtrl.mtrlid[it_mx_rq] = arg_mtrlid
- ins_s_rqmtrl.status[it_mx_rq] = arg_status
- ins_s_rqmtrl.woodcode[it_mx_rq] = arg_woodcode
- ins_s_rqmtrl.pcode[it_mx_rq] = arg_pcode
- ins_s_rqmtrl.wrkGrpid[it_mx_rq] = ll_wrkgrpid
- ins_s_rqmtrl.orderid[it_mx_rq] = ll_orderid_update
- ins_s_rqmtrl.qty[it_mx_rq] = arg_qty
- ins_s_rqmtrl.scid[it_mx_rq] = arg_scid
-
-
- Else
- If li_ordertype <> 4 Then //如果是主计划,直接更新
- Update u_orderrqmtrl
- Set DstrQty = DstrQty + :arg_qty
- Where orderid = :arg_orderid
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode+'更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- Goto ext
- ElseIf sqlca.SQLNRows = 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode+'更新物料:'+arg_mtrlcode+',计划需求明细失败>>找不到相关更新行'
- Goto ext
- End If
-
- it_mx_rq++
- ins_s_rqmtrl.mtrlid[it_mx_rq] = arg_mtrlid
- ins_s_rqmtrl.status[it_mx_rq] = arg_status
- ins_s_rqmtrl.woodcode[it_mx_rq] = arg_woodcode
- ins_s_rqmtrl.pcode[it_mx_rq] = arg_pcode
- ins_s_rqmtrl.wrkGrpid[it_mx_rq] = ll_wrkgrpid
- ins_s_rqmtrl.orderid[it_mx_rq] = arg_orderid
- ins_s_rqmtrl.qty[it_mx_rq] = arg_qty
- ins_s_rqmtrl.scid[it_mx_rq] = arg_scid
- Else
- ld_qty_tmp = arg_qty
- lb_iffind = False
- For ll_i = 1 To cnt
- ll_cnt = 0
- Select count(*) Into :ll_cnt
- From u_orderrqmtrl
- Where orderid = :ll_taskid[ll_i]
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_taskcode[ll_i]+',查询物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- Goto ext
- End If
-
- If ll_cnt = 0 Then
- If ll_i = cnt And lb_iffind = False Then
- rslt = 0
- arg_msg = '生产计划:'+ls_taskcode[ll_i]+',查询物料:'+arg_mtrlcode+',计划需求明细失败>>找不到相关行'
- Goto ext
- Else
- Continue
- End If
- Else
- lb_iffind = True
- End If
-
- Select rqqty,DstrQty Into :ld_rqqty_tmp,:ld_dstrqty_tmp
- From u_orderrqmtrl
- Where orderid = :ll_taskid[ll_i]
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_taskcode[ll_i]+',查询物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- Goto ext
- ElseIf sqlca.SQLNRows = 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_taskcode[ll_i]+',查询物料:'+arg_mtrlcode+',计划需求明细失败>>找不到相关行'
- Goto ext
- End If
-
- If arg_qty > 0 Then //领料单审核
- If ld_qty_tmp > ld_rqqty_tmp - ld_dstrqty_tmp Then
- If ll_i = cnt Then
- ld_update_qty = ld_qty_tmp
- ld_qty_tmp = 0
- Else
- ld_update_qty = ld_rqqty_tmp - ld_dstrqty_tmp
- ld_qty_tmp = ld_qty_tmp - (ld_rqqty_tmp - ld_dstrqty_tmp)
- End If
- Else
- ld_update_qty = ld_qty_tmp
- ld_qty_tmp = 0
- End If
- ElseIf arg_qty < 0 Then //领料单撤审
- If 0 - ld_qty_tmp > ld_dstrqty_tmp Then
- If ll_i = cnt Then
- ld_update_qty = 0 - ld_dstrqty_tmp
- ld_qty_tmp = 0
- Else
- ld_update_qty = 0 - ld_dstrqty_tmp
- ld_qty_tmp = ld_qty_tmp + ld_dstrqty_tmp
- End If
- Else
- ld_update_qty = ld_qty_tmp
- ld_qty_tmp = 0
- End If
- End If
-
- Update u_orderrqmtrl
- Set DstrQty = DstrQty + :ld_update_qty
- Where orderid = :ll_taskid[ll_i]
- And mtrlid = :arg_mtrlid
- And wrkGrpid = :ll_wrkgrpid
- And scid = :arg_scid
- And status = :arg_status
- And woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_taskcode[ll_i]+',更新物料:'+arg_mtrlcode+',计划需求明细失败>>'+sqlca.SQLErrText
- Goto ext
- ElseIf sqlca.SQLNRows = 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_taskcode[ll_i]+',更新物料:'+arg_mtrlcode+',计划需求明细失败>>找不到相关更新行'
- Goto ext
- End If
-
- it_mx_rq++
- ins_s_rqmtrl.mtrlid[it_mx_rq] = arg_mtrlid
- ins_s_rqmtrl.status[it_mx_rq] = arg_status
- ins_s_rqmtrl.woodcode[it_mx_rq] = arg_woodcode
- ins_s_rqmtrl.pcode[it_mx_rq] = arg_pcode
- ins_s_rqmtrl.wrkGrpid[it_mx_rq] = ll_wrkgrpid
- ins_s_rqmtrl.orderid[it_mx_rq] = ll_taskid[ll_i]
- ins_s_rqmtrl.qty[it_mx_rq] = ld_update_qty
- ins_s_rqmtrl.scid[it_mx_rq] = arg_scid
- If ld_qty_tmp = 0 Then Exit
- Next
- End If
- 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_stopjj (long arg_scid, long arg_orderid, string arg_reason, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF status = 0 THEN
- rslt = 0
- arg_msg = "待审核状态下不能执行终止计件操作,请核对"
- GOTO ext
- END IF
- IF stopjj = 1 THEN
- rslt = 0
- arg_msg = '已执行过终止计件操作,不能重复执行'
- GOTO ext
- END IF
- IF Trim(arg_reason) = '' THEN
- rslt = 0
- arg_msg = '请说明终止计件的原因'
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET stopjj = 1,
- stopjjemp = :publ_operator,
- stopjjdate = getdate(),
- stopjjreason = :arg_reason
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- and stopjj = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致终止计件操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer uof_add_fpqty (long arg_scid, long arg_orderid, long arg_fpscid, long arg_fporderid, decimal arg_fpqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- String ls_ordercode
- String ls_fpdscrp
- IF IsNull(arg_scid) THEN arg_scid = 0
- IF IsNull(arg_orderid) THEN arg_orderid = 0
- IF IsNull(arg_fpscid) THEN arg_fpscid = 0
- IF IsNull(arg_fporderid) THEN arg_fporderid = 0
- IF IsNull(arg_fpqty) THEN arg_fpqty = 0
- IF arg_fpqty <= 0 THEN
- rslt = 0
- arg_msg = '不合理的分配数量'
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询主计划资料失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '主计划资料不存在'
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_fpscid
- AND orderid = :arg_fporderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询被分配主计划资料失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '被分配计划资料不存在'
- GOTO ext
- END IF
- Decimal ld_fpqty
- Decimal ld_orderqty
- SELECT orderqty,fpqty
- INTO :ld_orderqty,:ld_fpqty
- FROM u_order_ml
- WHERE scid = :arg_fpscid
- AND orderid = :arg_fporderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询被分配计划信息失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_fpqty + arg_fpqty > ld_orderqty THEN
- rslt = 0
- arg_msg = '分配数量'+String(arg_fpqty,'#,##0.##########')+' 不能大于被分配计划的未分配数量'+String(ld_orderqty - ld_fpqty,'#,##0.##########')
- GOTO ext
- END IF
- INSERT INTO u_order_fpmx
- (scid,
- orderid,
- fpscid,
- fporderid,
- fpqty)
- VALUES
- (:arg_scid,
- :arg_orderid,
- :arg_fpscid,
- :arg_fporderid,
- :arg_fpqty);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入分配明细表失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT ordercode
- INTO :ls_ordercode
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询主计划号失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ls_fpdscrp = ls_ordercode+'/'+String(arg_fpqty,'#,##0.##########')+';'
- UPDATE u_order_ml
- SET fpqty = fpqty + :arg_fpqty,
- fpdscrp = fpdscrp + :ls_fpdscrp
- WHERE scid = :arg_fpscid
- AND orderid = :arg_fporderid;
- IF sqlca.SQLCode <> 0 THEN
- 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_del_fpqty (long arg_scid, long arg_orderid, long arg_fpscid, long arg_fporderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- String ls_ordercode
- String ls_fpdscrp
- IF IsNull(arg_scid) THEN arg_scid = 0
- IF IsNull(arg_orderid) THEN arg_orderid = 0
- IF IsNull(arg_fpscid) THEN arg_fpscid = 0
- IF IsNull(arg_fporderid) THEN arg_fporderid = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询主计划资料失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '主计划资料不存在'
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_fpscid
- AND orderid = :arg_fporderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询被分配主计划资料失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '被分配计划资料不存在'
- GOTO ext
- END IF
- Decimal ld_fpqty
- SELECT fpqty
- INTO :ld_fpqty
- FROM u_order_fpmx
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND fpscid = :arg_fpscid
- AND fporderid = :arg_fporderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询分配数量失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT ordercode
- INTO :ls_ordercode
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询主计划号失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ls_fpdscrp = ls_ordercode+'/'+String(ld_fpqty,'#,##0.##########')+';'
- UPDATE u_order_ml
- SET fpqty = fpqty - :ld_fpqty,
- fpdscrp = replace(fpdscrp,:ls_fpdscrp,'')
- WHERE scid = :arg_fpscid
- AND orderid = :arg_fporderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询被分配计划的分配数量失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_fpmx
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- and fpscid = :arg_fpscid
- and fporderid = :arg_fporderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计划分配明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uf_add_taskqty (long arg_scid, long arg_orderid, long arg_mtrlid, string arg_procode, decimal arg_taskqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- If arg_orderid <= 0 Then
- rslt = 0
- arg_msg = '错误的计划唯一码'
- Goto ext
- End If
- If arg_mtrlid <= 0 Then
- rslt = 0
- arg_msg = '错误的物料ID唯一码'
- Goto ext
- End If
- If arg_procode = '' Or IsNull(arg_procode) Then
- rslt = 0
- arg_msg = '错误的工序序号'
- Goto ext
- End If
- Int li_status,li_finish_scflag
- Select status,finish_scflag
- Into :li_status,:li_finish_scflag
- From u_order_ml
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询单据审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- //IF li_status <> 1 and li_status <> 5 and li_status <> 6 THEN
- // rslt = 0
- // arg_msg = "计划只有在进行或已完成状态才可以执行操作,请核对"
- // GOTO ext
- //END IF
- If li_status = 0 Then
- rslt = 0
- arg_msg = "计划只有在进行或已完成状态才可以执行操作,请核对"
- Goto ext
- End If
- If li_finish_scflag = 1 Then
- rslt = 0
- arg_msg = '生产计划/指令单已完成派工,请核对'
- Goto ext
- End If
- Update u_orderrqwp
- Set taskqty = taskqty + :arg_taskqty
- Where orderid = :arg_orderid
- And mtrlid = :arg_mtrlid
- And procode = :arg_procode
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其他原因导致更新已安排时数失败'+sqlca.SQLErrText
- Goto ext
- Else
- If sqlca.SQLNRows = 0 Then
- rslt = 0
- arg_msg = '没有找到可更新的指令单工序进度'
- Goto ext
- End If
- 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 addmxskl (long arg_scid, long arg_orderid, decimal arg_qty, decimal arg_costamt, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Decimal ld_slweight,ld_sklweight,ld_slscllweight
- String ls_mtrlname
- IF uo_option_skl_overscll = -1000 THEN
- rslt = 0
- arg_msg = '选项:[160]是否允许水口料超领料数入库,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_skl_overscll_rate = -1000 THEN
- rslt = 0
- arg_msg = '选项:[197]水口料超计划回收比例,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF arg_qty = 0 THEN
- rslt = 0
- arg_msg = "没有水口料回收数量"
- GOTO ext
- END IF
- SELECT u_mtrldef.mtrlname
- INTO :ls_mtrlname
- FROM u_Order_ml INNER JOIN
- u_mtrldef_sl ON u_Order_ml.mtrlid = u_mtrldef_sl.mtrlid INNER JOIN
- u_mtrldef ON u_mtrldef_sl.sk_mtrlid = u_mtrldef.mtrlid
- Where u_Order_ml.orderid = :arg_orderid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致查询水口料操作失败"
- GOTO ext
- END IF
- IF uo_option_skl_overscll = 0 THEN //不允许超计划
- SELECT slweight,sklweight,slscllweight INTO :ld_slweight,:ld_sklweight,:ld_slscllweight
- FROM u_order_ml
- WHERE ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误查询生产计划塑料成品总重或水口料总重操作失败"
- GOTO ext
- END IF
-
- IF ld_slscllweight < ld_sklweight + ld_slweight + arg_qty THEN
- rslt = 0
- arg_msg = '该计划明细对应的水口料['+ls_mtrlname+']'+'~r~n'+'本次回收数量大于本计划水口料可回收数:'+String(ld_slscllweight - ld_slweight - ld_sklweight,'0.####')+'~r~n' +'塑料成品总重:'+String(ld_slweight,'0.####')+',塑料领料总重:'+String(ld_slscllweight,'0.####')+', 已回收水口料重量:'+String(ld_sklweight,'0.####')
- GOTO ext
- END IF
- ELSEIF uo_option_skl_overscll = 2 THEN //允许但按比例限制
- SELECT slweight,sklweight,slscllweight INTO :ld_slweight,:ld_sklweight,:ld_slscllweight
- FROM u_order_ml
- WHERE ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误查询生产计划塑料成品总重或水口料总重操作失败"
- GOTO ext
- END IF
-
- IF (ld_slscllweight - ld_slweight) * (1 + uo_option_skl_overscll_rate) < ld_sklweight + arg_qty THEN
- rslt = 0
- arg_msg = '该计划明细对应的水口料['+ls_mtrlname+']'+'~r~n'+'本次回收数量大于本计划水口料可回收数:'+String( (ld_slscllweight - ld_slweight) * (1 + uo_option_skl_overscll_rate) - ld_sklweight,'0.####')+'~r~n' +'塑料成品总重:'+String(ld_slweight,'0.####')+',塑料领料总重:'+String(ld_slscllweight,'0.####')+', 已回收水口料重量:'+String(ld_sklweight,'0.####')
- GOTO ext
- END IF
- END IF
- UPDATE u_order_ml
- SET sklweight = sklweight + :arg_qty,
- slcost = slcost - :arg_costamt
- WHERE ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致更新生产计划水口料重量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer uof_order_cmpcost (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Long ll_issuliao
- Long ll_mtrlid
- IF uo_option_use_suliao = -1000 THEN
- rslt = 0
- arg_msg = '选项:[159]启用注塑模块,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_management_cost = -1000 THEN
- rslt = 0
- arg_msg = '选项:[161]月设备总管理费,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_ect_price = -1000 THEN
- rslt = 0
- arg_msg = '选项:[162]电费单价,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_use_suliao = 0 THEN RETURN 1
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- SELECT u_mtrldef.mtrlid,issuliao INTO :ll_mtrlid,:ll_issuliao
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料属性失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_issuliao = 1 THEN //如果是塑料件,则计算注塑成本
- Decimal ld_ysamt,ld_bgamt,ld_kcamt,ld_bxamt,ld_bzamt,ld_wfjgamt,ld_qtamt
- Decimal ld_ftqty
- Decimal ld_ftcost
- Long ll_macnt,ll_wage_rowcnt,ll_i,ll_sb_rowcnt,ll_j
- Decimal ld_award,ld_stantby,ld_zxcost,ld_cp,ld_bcp,ld_rlcost
- Decimal ld_time,ld_ect,ld_sbcost,ld_glcost,ld_ectcost
-
- //查询分滩成本
- SELECT ysamt,
- bgamt,
- kcamt,
- bxamt,
- bzamt,
- ftqty,
- wfjgamt,
- qtamt
- INTO :ld_ysamt,
- :ld_bgamt,
- :ld_kcamt,
- :ld_bxamt,
- :ld_bzamt,
- :ld_ftqty ,
- :ld_wfjgamt,
- :ld_qtamt
- FROM u_order_ml
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询分滩数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ld_ftqty > 0 THEN
- ld_ftcost = (ld_ysamt + ld_bgamt + ld_kcamt + ld_bxamt + ld_bzamt + ld_qtamt) / ld_ftqty
- ELSE
- ld_ftcost = 0
- END IF
-
- //查询本厂机台数量,用于计算管理成本
- SELECT count(*) INTO :ll_macnt
- FROM u_workgroup
- WHERE mode = 1
- And ifm = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询机台数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //计算工资成本,数据来源于相关质检单的工资明细
- datastore ds_wage
- ds_wage = Create datastore
- ds_wage.DataObject = "ds_data_wage"
- ds_wage.SetTransObject(sqlca)
- ds_wage.Retrieve(arg_scid,arg_orderid)
-
- ll_wage_rowcnt = ds_wage.RowCount()
- IF ll_wage_rowcnt > 0 THEN
- FOR ll_i = 1 To ll_wage_rowcnt
- ld_award = ds_wage.Object.awardprice[ll_i]
- ld_stantby = ds_wage.Object.stantby_price[ll_i]
- ld_zxcost = ds_wage.Object.zx_price[ll_i] * ds_wage.Object.zx_qty[ll_i]
- ld_cp = ds_wage.Object.cp_price[ll_i]
- ld_bcp = ds_wage.Object.bcp_price[ll_i]
- ld_rlcost = ld_rlcost + ld_award + ld_stantby + ld_cp + ld_bcp //+ ld_zxcost
- NEXT
- END IF
-
- //设备成本 -电费,管理费,设备耗损费,数据源于质检单"生产现场数据"及设备定义
- datastore ds_sb
- ds_sb = Create datastore
- ds_sb.DataObject = "ds_sbcost"
- ds_sb.SetTransObject(sqlca)
- ds_sb.Retrieve(arg_orderid)
-
- ll_sb_rowcnt = ds_sb.RowCount()
- IF ll_sb_rowcnt > 0 THEN
- FOR ll_j = 1 To ll_sb_rowcnt
- ld_time = ds_sb.Object.u_data_collect_stantby_time[ll_j] + ds_sb.Object.u_data_collect_worktime[ll_j]
- ld_ect = ds_sb.Object.u_data_collect_ammeter_end[ll_j] - ds_sb.Object.u_data_collect_ammeter_start[ll_j]
- ld_sbcost = ld_sbcost + ld_time * ds_sb.Object.u_equipment_manage_depreciation_cost[ll_j]
- ld_glcost = ld_glcost + (uo_option_management_cost / 30 / ll_macnt / 24 ) * ld_time
- ld_ectcost = ld_ectcost + ld_ect * uo_option_ect_price
- NEXT
- END IF
-
- //更新生产计划成本
- UPDATE u_order_ml
- SET rlcost = :ld_rlcost,
- sbcost = :ld_sbcost,
- glcost = :ld_glcost,
- ectcost = :ld_ectcost
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新成本失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- //重算所有相关成本,得出生产计划成本
- //ds_slcost - 本生产计划领料明细
- datastore ds_sl,ds_son
- ds_sl = Create datastore
- ds_sl.DataObject = "ds_slcost"
- ds_sl.SetTransObject(sqlca)
- ds_sl.Retrieve(arg_scid,arg_orderid)
- Long ll_row,ll_sonrow,i
- Decimal ld_slcost = 0,ld_planslcost = 0
- Decimal ld_slmtrlcost = 0,ld_slqty
- ll_row = ds_sl.RowCount()
- //计算产品材料成本.如果下级物料有子生产计划,则取子生产计划的成本作为下级物料的领料成本,否则按领料单.
- IF ll_row > 0 THEN
- FOR ll_i = 1 To ll_row
- IF ds_sl.Object.u_mtrldef_issuliao[ll_i] = 0 Or ds_sl.Object.u_mtrldef_issuliao[ll_i] = 1 THEN
- ld_slcost = ld_slcost + ds_sl.Object.u_orderrqmtrl_scll_costamt[ll_i]
- END IF
- NEXT
- END IF
- UPDATE u_order_ml
- SET u_order_ml.sumclcost = :ld_slcost
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新非塑料材料成本失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- Decimal ld_sumrlcost
- Decimal ld_taskworkcost,ld_scwg_cost,ld_scwg_day_cost
- SELECT isnull(sum(Workprice * Amount),0) INTO :ld_taskworkcost
- FROM u_sc_taskworkmx INNER JOIN
- u_sc_taskwork ON u_sc_taskworkmx.Billid = u_sc_taskwork.billid
- WHERE u_sc_taskwork.orderid = :arg_orderid
- And u_sc_taskwork.scid = :arg_scid;
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询生产计划相关产品个人计件单失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_taskworkcost) THEN ld_taskworkcost = 0
- SELECT isnull(sum(u_scwg_taskwork_2_mx.qty * u_scwg_taskwork_2_mx.price),0)
- INTO :ld_scwg_cost
- FROM u_scwg_taskwork_2 INNER JOIN
- u_scwg_taskwork_2_mx ON
- u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid
- WHERE u_scwg_taskwork_2.scid = :arg_scid
- And u_scwg_taskwork_2_mx.orderid = :arg_orderid;
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询生产计划相关工组月计件单失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_scwg_cost) THEN ld_scwg_cost = 0
- SELECT isnull(sum(u_scwg_taskwork_day_mx.qty * u_scwg_taskwork_day_mx.price),0)
- INTO :ld_scwg_day_cost
- FROM u_scwg_taskwork_day INNER JOIN
- u_scwg_taskwork_day_mx ON
- u_scwg_taskwork_day.billid = u_scwg_taskwork_day_mx.billid
- WHERE u_scwg_taskwork_day.scid = :arg_scid
- And u_scwg_taskwork_day_mx.orderid = :arg_orderid;
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = "查询生产计划相关工组日计件单失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_scwg_day_cost) THEN ld_scwg_day_cost = 0
- ld_sumrlcost = ld_taskworkcost + ld_scwg_cost + ld_scwg_day_cost
- UPDATE u_order_ml
- SET sumrlcost = :ld_sumrlcost
- Where u_order_ml.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新非塑料人力成本失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT ysamt,bgamt,kcamt,bxamt,bzamt,ftqty,wfjgamt,qtamt INTO :ld_ysamt,:ld_bgamt,:ld_kcamt,:ld_bxamt,:ld_bzamt,:ld_ftqty , :ld_wfjgamt , :ld_qtamt
- FROM u_order_ml
- Where orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询分滩费用/加工费失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_ftqty > 0 THEN
- ld_ftcost = (ld_ysamt + ld_bgamt + ld_kcamt + ld_bxamt + ld_bzamt + ld_qtamt) / ld_ftqty
- ELSE
- ld_ftcost = 0
- END IF
- UPDATE u_order_ml
- SET sumcost = :ld_ftcost * acmpqty + sumrlcost + sumclcost + slcost + rlcost + sbcost + glcost + ectcost + :ld_wfjgamt
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新生产计划总成本失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- //计算单产品成本 :生产计划总成本 / 生产数量
- Decimal ld_latest_pdcode
- SELECT CASE u_order_ml.acmpqty when 0 THEN 0 ELSE u_order_ml.sumcost / u_order_ml.acmpqty END
- Into :ld_latest_pdcode
- From u_order_ml
- Where u_order_ml.orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新生产计划单产品成本失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_latest_pdcode > 0 THEN
- // UPDATE u_mtrldef
- // SET u_mtrldef.planprice = case u_mtrldef.latest_pdcost when 0 then u_mtrldef.planprice else u_mtrldef.latest_pdcost end ,
- // u_mtrldef.latest_pdcost = :ld_latest_pdcode
- // Where u_mtrldef.mtrlid = :ll_mtrlid ;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "更新产品最新成本价失败,"+sqlca.SQLErrText
- // GOTO ext
- // END IF
-
- IF f_update_planprice(ll_mtrlid,status_mode,woodcode,pcode,1,ld_latest_pdcode,arg_msg,False,sqlca) = 0 THEN
- rslt = 0
- arg_msg = '更新产品计划成本价失败'+arg_msg
- GOTO ext
- END IF
- 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_reccl (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_scid
- Long ll_orderid,ll_porderid
- String ls_ordercode,ls_pordercode
- Long cnt
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_OrderRqMtrl_scll
- WHERE orderid = :ll_orderid
- AND scid = :ll_scid
- AND u_OrderRqMtrl_scll.DstrQty > 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否有已领数失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '已有已领料,不能重新计算用料'
- GOTO ext
- END IF
- uo_order_ml_mrp uo_ml_mrp
- uo_ml_mrp = CREATE uo_order_ml_mrp
- IF uo_ml_mrp.uof_del_rqmtrl_scll(arg_scid,arg_orderid,FALSE,arg_msg) = 0 THEN
- // arg_msg = ls_ordercode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- Long ll_i
- Boolean if_commit
- //20080715改,方便批操作调用而改成用datastore
- datastore ds_orderrqmx
- ds_orderrqmx = CREATE datastore
- ds_orderrqmx.DataObject = 'dw_order_ml_zl_orderrqmx'
- ds_orderrqmx.SetTransObject(sqlca)
- ds_orderrqmx.Retrieve(arg_orderid,arg_scid)
- s_order_ml_rqmtrl s_mtrl,s_mtrl_null
- FOR ll_i = 1 TO ds_orderrqmx.RowCount()
- s_mtrl = s_mtrl_null
-
- ll_porderid = ds_orderrqmx.Object.u_order_ml_mx_taskid[ll_i]
- ls_pordercode = ds_orderrqmx.Object.u_order_ml_mx_taskcode[ll_i]
-
- IF uo_ml_mrp.uof_get_rqmtrl(arg_scid,arg_orderid,ll_porderid,s_mtrl,arg_msg) = 0 THEN
- arg_msg = '上级计划:'+ls_pordercode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ml_mrp.uof_add_rqmtrl_scll(s_mtrl,arg_ifcommit,arg_msg) = 0 THEN
- arg_msg = '上级计划:'+ls_pordercode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- DESTROY uo_ml_mrp
- DESTROY ds_orderrqmx
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- Return(rslt)
- end function
- public function integer uof_order_add_wkp_tree (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_finishqty,ld_sqty,ld_oqty
- Long ll_dftwrkgrpid
- Int li_if_tree_wkp
- DateTime ldt_tmp
- Long ll_statusflag,ll_ordertype,ll_printid
- Long ll_swkpid,ll_owkpid
- String ls_partname,ls_relname
- Long ll_lp
- Int li_if_inherit
- String ls_partname_inherit
- Long ll_parentid,ll_workgroupid
- Decimal ld_minlasthour,ld_lasthour,ld_eoq,ld_splitrate,ld_waittime,ld_beforehour,ld_afterhour,ld_eq_empnum,ld_eqworkhour
- Int li_if_barcode
- Long ll_equipmenttypeid
- Int li_ifaccept
- Decimal ld_baseqty
- Int li_if_follow,li_ifgroup
- Decimal ld_workhour_minute,ld_workhour
- Long ll_printid_mx
- Long ll_j
- Long ll_mtrlid
- Decimal ld_orderqty
- Long printid,iflast,lp
- Decimal lasthour,workhour
- Long workgroupid
- DateTime begindate,enddate
- String ls_pfgroup,ls_promode,ls_pfklmode,ls_pfgroupmode,ls_gydscrp
- Decimal ld_pfgroupqty
- String ls_relname_up
- Int li_ifsj_ban
- String ls_wenli, ls_fengbian, ls_paikong, ls_luoji, ls_penyou
- Long ll_sonmtrlid
- datastore ds_tree_hz
- ds_tree_hz = Create datastore
- ds_tree_hz.DataObject = 'ds_ordermtrl_workgroup_tree_hz'
- ds_tree_hz.SetTransObject(sqlca)
- datastore ds_tech_mx
- ds_tech_mx = Create datastore
- ds_tech_mx.DataObject = 'ds_mtrl_wkp_tech_mx'
- ds_tech_mx.SetTransObject(sqlca)
- datastore ds_modle_pf
- ds_modle_pf = Create datastore
- ds_modle_pf.DataObject = 'ds_mtrl_wkp_tech_modle_pf'
- ds_modle_pf.SetTransObject(sqlca)
- If arg_orderid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If wrkGrpid = 0 Then
- rslt = 1
- Goto ext
- End If
- Select ordertype Into :ll_ordertype
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询物料计划属性失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If (ordertype <> 4 And ll_ordertype = 1) Then
- rslt = 1
- Goto ext
- End If
- If status <> 4 And status <> 1 And status <> 7 Then
- rslt = 0
- arg_msg = "计划只有在已审核状态才可以执行生成工组进度,请核对"
- Goto ext
- End If
- Select dftwrkgrpid,statusflag
- Into :ll_dftwrkgrpid,:ll_statusflag
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询物料默认生产车间失败'+'~n'+sqlca.SQLErrText
- Goto ext
- End If
- If wrkGrpid <> ll_dftwrkgrpid Then
- rslt = 1
- arg_msg = '生产指令单或生产计划的车间与计划物料默认的生产车间不一致,不能生成工组进度'
- Goto ext
- End If
- Select if_tree_wkp Into :li_if_tree_wkp
- From u_sc_wkp
- Where wrkGrpid = :wrkGrpid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产车间排程属性失败'+'~n'+sqlca.SQLErrText
- Goto ext
- End If
- Select sum(sqty),sum(oqty)
- Into :ld_sqty,:ld_oqty
- From u_OrderMtrl_workgroup_tree
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询计划是否已交接操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If IsNull(ld_sqty) Then ld_sqty = 0
- If IsNull(ld_oqty) Then ld_oqty = 0
- If ld_sqty > 0 Then
- arg_msg = '计划已有完成数,不能重新生成条码工组进度'
- rslt = 0
- Goto ext
- End If
- If ld_oqty > 0 Then
- arg_msg = '计划已有接收数,不能重新生成条码工组进度'
- rslt = 0
- Goto ext
- End If
- Long ll_wrkgrpid[],ll_owrkgrpid[]
- String ls_wkpname[]
- Long ll_ifjd[]
- DateTime ld_requiredate[],ld_begindate[]
- String ls_dscrp[]
- Decimal ll_lastdays[]
- Long i,cnt
- Long ll_i
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Decimal ld_qty_zj
- Int li_ifpackpro_p
- If ordertype = 4 And porderid > 0 Then
- Select ifpackpro
- Into :li_ifpackpro_p
- From u_Order_ml Inner JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- Where u_order_ml.orderid = :porderid
- And u_Order_ml.scid = :scid;
- If sqlca.SQLCode <> 0 Then li_ifpackpro_p = 0
- Else
- li_ifpackpro_p = 0
- End If
- Delete From u_OrderMtrl_workgroup_tree
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除计划的交接明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If li_ifpackpro_p <> 5 Then
- Insert Into u_OrderMtrl_workgroup_tree
- (scid,
- orderid,
- printid,
- swkpid,
- owkpid,
- partname,
- lp,
- iflast,
- relname,
- orderqty,
- sqty,
- oqty,
- if_inherit,
- partname_inherit,
- parentid,
- workgroupid,
- lasthour,
- workhour,
- if_barcode,
- eoq,
- splitrate,
- waittime,
- beforehour,
- afterhour,
- eq_empnum,
- eqworkhour,
- equipmenttypeid,
- ifaccept,
- baseqty,
- if_follow,
- printid_sort,
- ifgroup,
- ifsj_ban)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_mtrl_wkp_tech.printid,
- u_mtrl_wkp_tech.swkpid,
- u_mtrl_wkp_tech.owkpid,
- u_mtrl_wkp_tech.partname,
- u_mtrl_wkp_tech.lp,
- u_mtrl_wkp_tech.iflast,
- u_mtrl_wkp_tech.relname,
- :orderqty,
- 0,
- 0,
- u_mtrl_wkp_tech.if_inherit,
- u_mtrl_wkp_tech.partname_inherit,
- u_mtrl_wkp_tech.parentid,
- u_mtrl_wkp_tech.workgroupid,
- case when :Level = 0 then u_mtrl_wkp_tech.minlasthour else u_mtrl_wkp_tech.lasthour End ,
- u_mtrl_wkp_tech.workhour,
- u_mtrl_wkp_tech.if_barcode,
- u_mtrl_wkp_tech.eoq,
- u_mtrl_wkp_tech.splitrate,
- u_mtrl_wkp_tech.waittime,
- u_mtrl_wkp_tech.beforehour,
- u_mtrl_wkp_tech.afterhour,
- u_mtrl_wkp_tech.eq_empnum,
- u_mtrl_wkp_tech.eqworkhour,
- u_mtrl_wkp_tech.equipmenttypeid,
- u_mtrl_wkp_tech.ifaccept,
- case u_mtrl_wkp_tech.baseqty when 0 then :orderqty else u_mtrl_wkp_tech.baseqty End,
- u_mtrl_wkp_tech.if_follow,
- u_mtrl_wkp_tech.printid * 10,
- u_mtrl_wkp_tech.ifgroup,
- u_mtrl_wkp_tech.ifsj_ban
- From u_mtrl_wkp_tech,u_order_ml
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_mtrl_wkp_tech.mtrlid = u_Order_ml.mtrlid;
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从产品工艺流程加入生产计划工艺进度失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
-
-
-
- If ll_statusflag = 2 Then
- f_checkpz(status_mode,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- ld_qty_zj = Dec(s_pz[ll_i].qty)
-
- ds_tech_mx.Retrieve(mtrlid,ls_status_zj)
-
- For ll_j = 1 To ds_tech_mx.RowCount()
- ll_printid_mx = ds_tech_mx.Object.printid[ll_j]
- ld_workhour_minute = ds_tech_mx.Object.workhour_minute[ll_j]
- ld_workhour = ds_tech_mx.Object.workhour[ll_j]
- ld_beforehour = ds_tech_mx.Object.beforehour[ll_j]
- ld_afterhour = ds_tech_mx.Object.afterhour[ll_j]
- ld_eq_empnum = ds_tech_mx.Object.eq_empnum[ll_j]
- ld_eqworkhour = ds_tech_mx.Object.eqworkhour[ll_j]
-
- Update u_OrderMtrl_workgroup_tree
- Set workhour = workhour + :ld_workhour * :ld_qty_zj,
- beforehour = beforehour + :ld_beforehour * :ld_qty_zj,
- afterhour = afterhour + :ld_afterhour * :ld_qty_zj,
- eq_empnum = eq_empnum + :ld_eq_empnum * :ld_qty_zj,
- eqworkhour = eqworkhour + :ld_eqworkhour * :ld_qty_zj
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And printid = :ll_printid_mx;
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从工艺流程配置明细更新生产计划工艺进度失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- Next
- End If
-
- Else
- ds_modle_pf.Retrieve(mtrlid,pfcode)
-
- ll_printid = 1
-
- Insert Into u_OrderMtrl_workgroup_tree
- (scid,
- orderid,
- printid,
- partname,
- lp,
- iflast,
- relname,
- orderqty)
- Values
- (:arg_scid,
- :arg_orderid,
- :ll_printid,
- '成品',
- 0,
- 1,
- '成品',
- :orderqty);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从工艺流程配置明细更新生产计划工艺进度失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
-
- For ll_i = 1 To ds_modle_pf.RowCount()
- ll_printid++
-
- ll_swkpid = ds_modle_pf.Object.u_mtrl_wkp_tech_swkpid[ll_i]
- ll_owkpid = ds_modle_pf.Object.u_mtrl_wkp_tech_owkpid[ll_i]
-
- ll_lp = ds_modle_pf.Object.u_mtrl_wkp_tech_lp[ll_i]
-
-
-
- li_if_inherit = ds_modle_pf.Object.u_mtrl_wkp_tech_if_inherit[ll_i]
- ls_partname_inherit = ds_modle_pf.Object.u_mtrl_wkp_tech_partname_inherit[ll_i]
- ll_parentid = ds_modle_pf.Object.u_mtrl_wkp_tech_parentid[ll_i]
- ll_workgroupid = ds_modle_pf.Object.u_mtrl_wkp_tech_workgroupid[ll_i]
-
- ld_minlasthour = ds_modle_pf.Object.u_mtrl_wkp_tech_minlasthour[ll_i]
- ld_lasthour = ds_modle_pf.Object.u_mtrl_wkp_tech_lasthour[ll_i]
-
- ld_workhour = ds_modle_pf.Object.u_mtrl_wkp_tech_workhour[ll_i]
- li_if_barcode = ds_modle_pf.Object.u_mtrl_wkp_tech_if_barcode[ll_i]
- ld_eoq = ds_modle_pf.Object.u_mtrl_wkp_tech_eoq[ll_i]
- ld_splitrate = ds_modle_pf.Object.u_mtrl_wkp_tech_splitrate[ll_i]
- ld_waittime = ds_modle_pf.Object.u_mtrl_wkp_tech_waittime[ll_i]
- ld_beforehour = ds_modle_pf.Object.u_mtrl_wkp_tech_beforehour[ll_i]
- ld_afterhour = ds_modle_pf.Object.u_mtrl_wkp_tech_afterhour[ll_i]
- ld_eq_empnum = ds_modle_pf.Object.u_mtrl_wkp_tech_eq_empnum[ll_i]
- ld_eqworkhour = ds_modle_pf.Object.u_mtrl_wkp_tech_eqworkhour[ll_i]
- ll_equipmenttypeid = ds_modle_pf.Object.u_mtrl_wkp_tech_equipmenttypeid[ll_i]
- li_ifaccept = ds_modle_pf.Object.u_mtrl_wkp_tech_ifaccept[ll_i]
- ld_baseqty = ds_modle_pf.Object.u_mtrl_wkp_tech_baseqty[ll_i]
- li_if_follow = ds_modle_pf.Object.u_mtrl_wkp_tech_if_follow[ll_i]
- li_ifgroup = ds_modle_pf.Object.u_mtrl_wkp_tech_ifgroup[ll_i]
-
- ld_pfgroupqty = ds_modle_pf.Object.u_prdpf_pfgroupqty[ll_i]
- ls_pfgroupmode = ds_modle_pf.Object.u_prdpf_pfgroupmode[ll_i]
- ls_gydscrp = ds_modle_pf.Object.u_prdpf_dscrp[ll_i]
-
- ls_pfgroup = ds_modle_pf.Object.u_prdpf_pfgroup[ll_i]
- ls_promode = ds_modle_pf.Object.u_prdpf_promode[ll_i]
- ls_pfklmode = ds_modle_pf.Object.u_prdpf_pfklmode[ll_i]
-
- li_ifsj_ban = ds_modle_pf.Object.u_mtrl_wkp_tech_ifsj_ban[ll_i]
- ls_partname = ds_modle_pf.Object.u_mtrl_wkp_tech_partname[ll_i]
- ls_wenli = ds_modle_pf.Object.u_prdpf_wenli[ll_i]
- ls_fengbian = ds_modle_pf.Object.u_prdpf_fengbian[ll_i]
- ls_paikong = ds_modle_pf.Object.u_prdpf_paikong[ll_i]
- ls_luoji = ds_modle_pf.Object.u_prdpf_luoji[ll_i]
- ls_penyou = ds_modle_pf.Object.u_prdpf_penyou[ll_i]
- ll_sonmtrlid = ds_modle_pf.Object.u_prdpf_sonmtrlid[ll_i]
-
-
- If IsNull(ll_swkpid) Then ll_swkpid = 0
- If IsNull(ll_owkpid) Then ll_owkpid = 0
- If IsNull(ll_lp) Then ll_lp = 0
- If IsNull(li_if_inherit) Then li_if_inherit = 0
- If IsNull(ls_partname_inherit) Then ls_partname_inherit = ''
- If IsNull(ll_parentid) Then ll_parentid = 0
- If IsNull(ll_workgroupid) Then ll_workgroupid = 0
- If IsNull(ld_minlasthour) Then ld_minlasthour = 0
- If IsNull(ld_lasthour) Then ld_lasthour = 0
- If IsNull(ld_workhour) Then ld_workhour = 0
- If IsNull(li_if_barcode) Then li_if_barcode = 1
- If IsNull(ld_eoq) Then ld_eoq = 0
- If IsNull(ld_splitrate) Then ld_splitrate = 0
- If IsNull(ld_waittime) Then ld_waittime = 0
- If IsNull(ld_beforehour) Then ld_beforehour = 0
- If IsNull(ld_afterhour) Then ld_afterhour = 0
- If IsNull(ld_eq_empnum) Then ld_eq_empnum = 0
- If IsNull(ld_eqworkhour) Then ld_eqworkhour = 0
- If IsNull(ll_equipmenttypeid) Then ll_equipmenttypeid = 0
- If IsNull(li_ifaccept) Then li_ifaccept = 0
- If IsNull(ld_baseqty) Then ld_baseqty = 0
- If IsNull(li_if_follow) Then li_if_follow = 0
- If IsNull(li_ifgroup) Then li_ifgroup = 0
- If IsNull(ld_pfgroupqty) Then ld_pfgroupqty = 1
- If IsNull(ls_pfgroupmode) Then ls_pfgroupmode = ''
- If IsNull(ls_gydscrp) Then ls_gydscrp = ''
- If IsNull(ls_pfgroup) Then ls_pfgroup = ''
- If IsNull(ls_promode) Then ls_promode = ''
- If IsNull(ls_pfklmode) Then ls_pfklmode = ''
- If IsNull(ls_partname) Then ls_partname = ''
- If IsNull(li_ifsj_ban) Then li_ifsj_ban = 0
-
- If IsNull(ls_wenli) Then ls_wenli = ''
- If IsNull(ls_fengbian) Then ls_fengbian = ''
- If IsNull(ls_paikong) Then ls_paikong = ''
- If IsNull(ls_luoji) Then ls_luoji = ''
- If IsNull(ls_penyou) Then ls_penyou = ''
- If IsNull(ll_sonmtrlid) Then ll_sonmtrlid = 0
-
-
- If ll_lp = 0 Then
- If li_ifsj_ban = 0 Then
- ls_partname = ls_pfgroup + '('+ls_pfklmode+')'
- ls_relname = ls_pfgroup + '('+ls_pfklmode+')'
- ls_relname_up = ls_relname
- Else
- ls_partname = ls_pfgroup + '['+ ls_partname + ']'
- ls_relname = ls_partname
- ls_relname_up = ls_relname
- End If
- Else
- ls_partname = ds_modle_pf.Object.u_mtrl_wkp_tech_partname[ll_i]
- ls_relname = ls_relname_up //ds_modle_pf.Object.u_mtrl_wkp_tech_relname[ll_i]
- End If
-
- Insert Into u_OrderMtrl_workgroup_tree
- (scid,
- orderid,
- printid,
- swkpid,
- owkpid,
- partname,
- lp,
- iflast,
- relname,
- orderqty,
- sqty,
- oqty,
- if_inherit,
- partname_inherit,
- parentid,
- workgroupid,
- lasthour,
- workhour,
- if_barcode,
- eoq,
- splitrate,
- waittime,
- beforehour,
- afterhour,
- eq_empnum,
- eqworkhour,
- equipmenttypeid,
- ifaccept,
- baseqty,
- if_follow,
- printid_sort,
- ifgroup,
- pfgroup,
- promode,
- pfgroupmode,
- pfklmode,
- gydscrp,
- ifsj_ban,
- wenli,
- fengbian,
- paikong,
- luoji,
- penyou,
- sonmtrlid)
- Values
- (:arg_scid,
- :arg_orderid,
- :ll_printid,
- :ll_swkpid,
- :ll_owkpid,
- :ls_partname,
- :ll_lp + 1,
- 0,
- :ls_relname,
- :orderqty * :ld_pfgroupqty,
- 0,
- 0,
- :li_if_inherit,
- :ls_partname_inherit,
- :ll_parentid,
- :ll_workgroupid,
- case when :Level = 0 then :ld_minlasthour else :ld_lasthour End ,
- :ld_workhour,
- :li_if_barcode,
- :ld_eoq,
- :ld_splitrate,
- :ld_waittime,
- :ld_beforehour,
- :ld_afterhour,
- :ld_eq_empnum,
- :ld_eqworkhour,
- :ll_equipmenttypeid,
- :li_ifaccept,
- case :ld_baseqty when 0 then :orderqty else :ld_baseqty End ,
- :li_if_follow,
- :ll_printid * 10,
- :li_ifgroup,
- :ls_pfgroup,
- :ls_promode,
- :ls_pfgroupmode,
- :ls_pfklmode,
- :ls_gydscrp,
- :li_ifsj_ban,
- :ls_wenli,
- :ls_fengbian,
- :ls_paikong,
- :ls_luoji,
- :ls_penyou,
- :ll_sonmtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从工艺流程配置明细更新生产计划工艺进度失败,原因:'+sqlca.SQLErrText + '~r~n'
- Goto ext
- End If
- Next
- End If
- //根据公式刷新工时及周期
- String ls_workhour_formula,ls_lasthour_formula
- Long ll_printid_tree
- Decimal ld_orderqty_tree
- String s_rtn
- Decimal ld_workhour_str,ld_lasthour_str
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_ordermtrl_workgroup_tree_cmp'
- ds_tree.SetTransObject(sqlca)
- ds_tree.Retrieve(arg_scid,arg_orderid)
- datastore ds_pricestr
- ds_pricestr = Create datastore
- ds_pricestr.DataObject = 'ds_pricestr_cmpl'
- ds_pricestr.SetTransObject(sqlca)
- For ll_i = 1 To ds_tree.RowCount()
- ls_workhour_formula = ds_tree.Object.u_mtrl_wkp_tech_workhour_formula[ll_i]
- ls_lasthour_formula = ds_tree.Object.u_mtrl_wkp_tech_lasthour_formula[ll_i]
- ll_printid_tree = ds_tree.Object.printid[ll_i]
- ld_orderqty_tree = ds_tree.Object.orderqty[ll_i]
-
- If Trim(ls_workhour_formula) <> '' Then
- Select Top 1 Replace( :ls_workhour_formula,'不包含',' not like ') Into :ls_workhour_formula From u_user;
- Select Top 1 Replace( :ls_workhour_formula,'不等于','<>') Into :ls_workhour_formula From u_user;
- Select Top 1 Replace( :ls_workhour_formula,'包含',' like ') Into :ls_workhour_formula From u_user;
- Select Top 1 Replace( :ls_workhour_formula,'数量',:ld_orderqty_tree) Into :ls_workhour_formula From u_user;
-
- Select Top 1 Replace( :ls_workhour_formula,'等于',' = ') Into :ls_workhour_formula From u_user;
- Select Top 1 Replace( :ls_workhour_formula,'大于',' > ') Into :ls_workhour_formula From u_user;
- Select Top 1 Replace( :ls_workhour_formula,'小于',' < ') Into :ls_workhour_formula From u_user;
-
- If Pos(ls_workhour_formula,'配置2') > 0 Then
- Select Top 1 Replace( :ls_workhour_formula,'配置2',"'"+:pcode+"'") Into :ls_workhour_formula From u_user;
- End If
-
- If Pos(ls_workhour_formula,'配置1') > 0 Then
- Select Top 1 Replace( :ls_workhour_formula,'配置1',"'"+:woodcode+"'") Into :ls_workhour_formula From u_user;
- End If
-
- If Pos(ls_workhour_formula,'配置') > 0 Then
- Select Top 1 Replace( :ls_workhour_formula,'配置',"'"+:status_mode+"'") Into :ls_workhour_formula From u_user;
- End If
-
- ds_pricestr.Retrieve()
- ds_pricestr.Modify('cmpl.expression= "'+ls_workhour_formula+'"')
-
- s_rtn = String(ds_pricestr.Object.cmpl[1])
- If s_rtn = 'false' Then
- Goto _lasthour
- Else
- ld_workhour_str = Round(Dec(s_rtn),5)
- End If
-
- Update u_OrderMtrl_workgroup_tree
- Set workhour = :ld_workhour_str / 60
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And printid = :ll_printid_tree;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '按公式更新工时失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- End If
-
- _lasthour:
- If Trim(ls_lasthour_formula) <> '' Then
- Select Top 1 Replace( :ls_lasthour_formula,'不包含',' not like ') Into :ls_lasthour_formula From u_user;
- Select Top 1 Replace( :ls_lasthour_formula,'不等于','<>') Into :ls_lasthour_formula From u_user;
- Select Top 1 Replace( :ls_lasthour_formula,'包含',' like ') Into :ls_lasthour_formula From u_user;
- Select Top 1 Replace( :ls_lasthour_formula,'数量',:ld_orderqty_tree) Into :ls_lasthour_formula From u_user;
-
- Select Top 1 Replace( :ls_lasthour_formula,'等于',' = ') Into :ls_lasthour_formula From u_user;
- Select Top 1 Replace( :ls_lasthour_formula,'大于',' > ') Into :ls_lasthour_formula From u_user;
- Select Top 1 Replace( :ls_lasthour_formula,'小于',' < ') Into :ls_lasthour_formula From u_user;
-
- If Pos(ls_lasthour_formula,'配置2') > 0 Then
- Select Top 1 Replace( :ls_lasthour_formula,'配置2',"'"+:pcode+"'") Into :ls_lasthour_formula From u_user;
- End If
-
- If Pos(ls_lasthour_formula,'配置1') > 0 Then
- Select Top 1 Replace( :ls_lasthour_formula,'配置1',"'"+:woodcode+"'") Into :ls_lasthour_formula From u_user;
- End If
-
- If Pos(ls_lasthour_formula,'配置') > 0 Then
- Select Top 1 Replace( :ls_lasthour_formula,'配置',"'"+:status_mode+"'") Into :ls_lasthour_formula From u_user;
- End If
-
- ds_pricestr.Retrieve()
- ds_pricestr.Modify('cmpl.expression= "'+ls_lasthour_formula+'"')
-
- s_rtn = String(ds_pricestr.Object.cmpl[1])
- If s_rtn = 'false' Then
- Continue
- Else
- ld_lasthour_str = Round(Dec(s_rtn),5)
- End If
-
- Update u_OrderMtrl_workgroup_tree
- Set lasthour = :ld_lasthour_str
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And printid = :ll_printid_tree;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '按公式更新交接周期失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- End If
-
- Next
- If uo_cmp_tree_date(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- Delete From u_ordermtrl_workgroup_barcode
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除计划已生成的工组条码操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If li_if_tree_wkp = 1 Then
- Delete From u_OrderMtrl_workgroup
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除计划已工组进度操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- ds_tree_hz.Retrieve(arg_scid,arg_orderid)
-
-
- For ll_i = 1 To ds_tree_hz.RowCount()
- ll_mtrlid = ds_tree_hz.Object.mtrlid[ll_i]
- ll_swkpid = ds_tree_hz.Object.swkpid[ll_i]
- ll_owkpid = ds_tree_hz.Object.owkpid[ll_i]
- ld_orderqty = ds_tree_hz.Object.min_orderqty[ll_i]
- iflast = ds_tree_hz.Object.iflast[ll_i]
- lp = ds_tree_hz.Object.max_lp[ll_i]
- lasthour = ds_tree_hz.Object.lasthour[ll_i]
- workhour = ds_tree_hz.Object.workhour[ll_i]
- workgroupid = ds_tree_hz.Object.workgroupid[ll_i]
- begindate = ds_tree_hz.Object.begindate[ll_i]
- enddate = ds_tree_hz.Object.enddate[ll_i]
-
- Insert Into u_ordermtrl_workgroup
- (scid,
- orderid,
- mtrlid,
- wrkgrpid,
- owrkgrpid,
- orderqty,
- lastdays,
- ifjd,
- wkpname,
- printid,
- iflast,
- groupstr,
- lp,
- printlp,
- lasthour,
- workgroupid,
- begindate,
- requiredate,
- workhour)
- Values
- (:arg_scid,
- :arg_orderid,
- :ll_mtrlid,
- :ll_swkpid,
- :ll_owkpid,
- :ld_orderqty,
- :lasthour / 8,
- 1,
- '',
- :ll_i,
- :iflast,
- '',
- :lp,
- 0,
- :lasthour,
- :workgroupid,
- :begindate,
- :enddate,
- :workhour);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从工艺流程进度加入生产计划工组进度失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- If uof_update_minbdate(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- ////按APS结果更新工艺进度开始结束时间 2014-09-22
- Update u_OrderMtrl_workgroup_tree
- Set u_OrderMtrl_workgroup_tree.begindate = u_OrderRqMtrl_tech.begindate,
- u_OrderMtrl_workgroup_tree.enddate = u_OrderRqMtrl_tech.enddate,
- u_OrderMtrl_workgroup_tree.workhour = u_OrderRqMtrl_tech.workhour,
- u_OrderMtrl_workgroup_tree.beforehour = u_OrderRqMtrl_tech.beforehour,
- u_OrderMtrl_workgroup_tree.afterhour = u_OrderRqMtrl_tech.afterhour
- From u_OrderMtrl_workgroup_tree Inner JOIN
- u_Order_ml ON u_OrderMtrl_workgroup_tree.scid = u_Order_ml.scid And
- u_OrderMtrl_workgroup_tree.orderid = u_Order_ml.OrderID Inner JOIN
- u_OrderRqMtrl_tech ON u_Order_ml.scid = u_OrderRqMtrl_tech.scid And
- u_Order_ml.mtrlid = u_OrderRqMtrl_tech.MtrlID And
- u_Order_ml.status_mode = u_OrderRqMtrl_tech.status And
- u_Order_ml.woodcode = u_OrderRqMtrl_tech.woodcode And
- u_Order_ml.pcode = u_OrderRqMtrl_tech.pcode And
- u_Order_ml.wrkGrpid = u_OrderRqMtrl_tech.wrkGrpid And
- u_OrderMtrl_workgroup_tree.swkpid = u_OrderRqMtrl_tech.swkpid And
- u_OrderMtrl_workgroup_tree.owkpid = u_OrderRqMtrl_tech.owkpid And
- u_OrderMtrl_workgroup_tree.lp = u_OrderRqMtrl_tech.lp And
- u_OrderMtrl_workgroup_tree.partname = u_OrderRqMtrl_tech.partname And
- u_OrderMtrl_workgroup_tree.relname = u_OrderRqMtrl_tech.relname
- Where (u_Order_ml.porderid = u_OrderRqMtrl_tech.OrderID And u_order_ml.ordertype = 4
- Or u_Order_ml.orderid = u_OrderRqMtrl_tech.OrderID And u_order_ml.ordertype <> 4)
- And (u_order_ml.scid = :arg_scid)
- And (u_Order_ml.orderid = :arg_orderid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '按APS结果更新工艺进度开始结束时间失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- ////
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy ds_tree_hz
- Destroy ds_tech_mx
- Destroy ds_tree
- Destroy ds_pricestr
- Destroy ds_modle_pf
- Return rslt
- end function
- public function integer addmxcmpl_planqty_wkp (long arg_scid, long arg_orderid, string arg_wkpname, long arg_wrkgrpid, long arg_owrkgrpid, decimal arg_addqty, datetime arg_bdate, datetime arg_edate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- Dec ld_orderqty,ld_planqty
- String ls_mtrlname
- IF uo_option_update_lockdateflag = -1000 THEN
- rslt = 0
- arg_msg = '选项:[270]工组派工单审核完毕自动写排程审核状态为最高级审核(全锁),读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF arg_addqty = 0 THEN
- arg_msg = '没有完成数量'
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- rslt = 0
- arg_msg = "计划["+ordercode+"]只有在进行状态下才可以执行操作"
- GOTO ext
- END IF
- SELECT mtrlname INTO :ls_mtrlname
- FROM u_mtrldef,u_order_ml
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid
- And u_mtrldef.mtrlid = u_order_ml.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致查询产品操作失败"
- GOTO ext
- END IF
- //检查是否完成
- SELECT orderqty,taskqty INTO :ld_orderqty,:ld_planqty
- FROM u_OrderMtrl_workgroup
- WHERE ( u_OrderMtrl_workgroup.orderid = :arg_orderid )
- AND ( u_OrderMtrl_workgroup.scid = :arg_scid )
- AND ( u_OrderMtrl_workgroup.wkpname = :arg_wkpname )
- AND ( u_OrderMtrl_workgroup.wrkgrpid = :arg_wrkgrpid )
- And ( u_OrderMtrl_workgroup.owrkgrpid = :arg_owrkgrpid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误查询产品唯一码或计划计划数和已排程数量操作失败"
- GOTO ext
- END IF
- IF status = 1 THEN
- IF ld_orderqty < arg_addqty + ld_planqty THEN
- rslt = 0
- arg_msg = '该计划明细产品:'+ls_mtrlname+',未派工数'+String(ld_orderqty - ld_planqty,'#,##0.00##' )+'小于本次排程数'
- GOTO ext
- END IF
- END IF
- IF arg_addqty < 0 THEN
- SetNull(arg_bdate)
- SetNull(arg_edate)
- END IF
- UPDATE u_OrderMtrl_workgroup
- SET u_OrderMtrl_workgroup.taskqty = u_OrderMtrl_workgroup.taskqty + :arg_addqty,
- u_OrderMtrl_workgroup.bdate = :arg_bdate,
- u_OrderMtrl_workgroup.edate = :arg_edate
- WHERE ( u_OrderMtrl_workgroup.orderid = :arg_orderid )
- AND ( u_OrderMtrl_workgroup.scid = :arg_scid )
- AND ( u_OrderMtrl_workgroup.wkpname = :arg_wkpname )
- AND ( u_OrderMtrl_workgroup.wrkgrpid = :arg_wrkgrpid )
- And ( u_OrderMtrl_workgroup.owrkgrpid = :arg_owrkgrpid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致更新生产计划完成数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF uo_option_update_lockdateflag = 1 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_OrderMtrl_workgroup
- WHERE orderqty > taskqty
- AND scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单工组是否完成派工失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- UPDATE u_order_ml
- SET lockdateflag = 0
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- ELSE
- UPDATE u_order_ml
- SET lockdateflag = 3
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- END IF
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新指令单排程状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer acceptmx_wrk (long arg_tmpid, long arg_wrkgrpid, long arg_owrkgrpid, string arg_wkpname, datetime arg_begindate, datetime arg_requiredate, decimal arg_lastdays, decimal arg_lasthour, ref string arg_msg);Int rslt = 1
- IF IsNull(arg_tmpid) THEN arg_tmpid = 0
- IF IsNull(arg_wrkgrpid) THEN arg_wrkgrpid = 0
- IF IsNull(arg_owrkgrpid) THEN arg_owrkgrpid = 0
- IF IsNull(arg_wkpname) THEN arg_wkpname = ''
- IF IsNull(arg_lastdays) THEN arg_lastdays = 0
- IF IsNull(arg_lasthour) THEN arg_lasthour = 0
- it_mxbt_wrk++
- s_wrk_tmp[it_mxbt_wrk].tmpid = arg_tmpid
- s_wrk_tmp[it_mxbt_wrk].wrkgrpid = arg_wrkgrpid
- s_wrk_tmp[it_mxbt_wrk].owrkgrpid = arg_owrkgrpid
- s_wrk_tmp[it_mxbt_wrk].wkpname = arg_wkpname
- s_wrk_tmp[it_mxbt_wrk].begindate = arg_begindate
- s_wrk_tmp[it_mxbt_wrk].requiredate = arg_requiredate
- s_wrk_tmp[it_mxbt_wrk].lastdays = arg_lastdays
- s_wrk_tmp[it_mxbt_wrk].lasthour = arg_lasthour
- RETURN rslt
- end function
- public function integer uof_order_add_wkp_tmp (long arg_scid, long arg_orderid, long arg_tmpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_finishqty
- Long ll_dftwrkgrpid
- DateTime ldt_tmp
- IF arg_orderid = 0 THEN
- rslt = 0
- arg_msg = "没有建立对象"
- GOTO ext
- END IF
- Long ll_wrkgrpid[],ll_owrkgrpid[]
- String ls_wkpname[]
- Long ll_ifjd[]
- DateTime ld_requiredate[],ld_begindate[]
- String ls_dscrp[]
- Decimal ll_lastdays[],ld_lasthour[]
- Decimal ld_orderqty[]
- Long i,cnt
- Long ll_i
- i = 1
- DELETE FROM u_OrderMtrl_workgroup
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计划的交接明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- INSERT INTO u_ordermtrl_workgroup
- (scid,
- orderid,
- mtrlid,
- wrkgrpid,
- owrkgrpid,
- orderqty,
- lastdays,
- ifjd,
- wkpname,
- printid,
- iflast,
- groupstr,
- lp,
- printlp,
- lasthour,
- workgroupid)
- SELECT u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_mtrl_wkp.swkpid,
- u_mtrl_wkp.owkpid,
- u_order_ml.orderqty,
- u_mtrl_wkp.lastdays,
- 1,
- u_mtrl_wkp.wkpname,
- u_mtrl_wkp.printid,
- u_mtrl_wkp.iflast,
- u_mtrl_wkp.groupstr,
- u_mtrl_wkp.lp,
- u_mtrl_wkp.printlp,
- u_mtrl_wkp.lasthour,
- u_mtrl_wkp.workgroupid
- FROM u_mtrl_wkp,u_order_ml
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid
- AND u_mtrl_wkp.mtrlid = u_order_ml.mtrlid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '从物料生产流程加入生产计划车间失败,原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ordertype <> 4 THEN
- INSERT INTO u_ordermtrl_workgroup
- (scid,
- orderid,
- mtrlid,
- wrkgrpid,
- owrkgrpid,
- orderqty,
- lastdays,
- ifjd,
- printid,
- groupstr,
- lp,
- printlp)
- SELECT u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workgroup.wrkgrpid,
- 0,
- u_order_ml.orderqty,
- 0,0,1000,'',0,0
- FROM u_sc_workgroup,u_order_ml
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid
- AND u_sc_workgroup.ifprint = 1
- AND u_sc_workgroup.ifjj = 1
- AND u_sc_workgroup.wrkgrpid NOT In (SELECT u_mtrl_wkp.swkpid FROM u_mtrl_wkp Where u_mtrl_wkp.mtrlid = :mtrlid) ;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '从车间资料加入工生产计划车间失败,原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- Long l_wrkgrpid[],l_owrkgrpid[],l_ifjd[],l_printid[]
- Decimal l_lastdays[],l_lasthour[]
- String l_wkpname[],l_groupstr[]
- Long j,cnt_2,ll_count,ll_j
- DateTime ld_sdate,ld_edate,ld_update_edate
- DateTime ld_sdate_max
- Decimal ld_resthour,ld_workhour,ld_resthour_e
- Int li_timehour
- Int li_rdate
- Decimal ld_resthour_tmp
- DateTime ld_workdate_tmp
- Long l_printid_gr[]
- String l_groupstr_gr[]
- Long cnt_gr
- DateTime ld_sdate_gr[]
- Long ll_workgroupid[]
- Long k
- Boolean lb_if_find = FALSE
- String ls_arg_date
- IF uo_option_auto_wrkdate = -1000 THEN
- rslt = 0
- arg_msg = '选项:[126]生产计划,生产指令自动计算工组开始日期,结束日期,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_use_sc_date = -1000 THEN
- rslt = 0
- arg_msg = '选项:[180]工组进度按小时统计,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_auto_wrkdate = 1 THEN
- SELECT orderdate
- INTO :ld_sdate_max
- FROM u_order_ml
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划或指令单计划开始日期失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ld_sdate_max = DateTime(Date(ld_sdate_max),Time('8:00:00'))
-
- IF uof_order_cmp_wrk_date(arg_scid,arg_orderid,ld_sdate_max,arg_msg,False) = 0 THEN
- arg_msg = '计算工组日期失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- // j = 1
- //
- // DECLARE cur_wrkmx_2 CURSOR FOR
- // SELECT wrkgrpid,
- // owrkgrpid,
- // wkpname,
- // ifjd,
- // printid,
- // lastdays,
- // groupstr,
- // lasthour
- // FROM u_OrderMtrl_workgroup
- // WHERE orderid = :arg_orderid
- // AND scid = :arg_scid
- // Order By printid;
- //
- // OPEN cur_wrkmx_2;
- // FETCH cur_wrkmx_2 INTO :l_wrkgrpid[j],:l_owrkgrpid[j],
- // :l_wkpname[j],:l_ifjd[j],:l_printid[j],:l_lastdays[j],
- // :l_groupstr[j],:l_lasthour[j];
- //
- // DO WHILE sqlca.SQLCode = 0
- // j++
- // FETCH cur_wrkmx_2 INTO :l_wrkgrpid[j],:l_owrkgrpid[j],
- // :l_wkpname[j],:l_ifjd[j],:l_printid[j],:l_lastdays[j],
- // :l_groupstr[j],:l_lasthour[j];
- // LOOP
- // CLOSE cur_wrkmx_2;
- // cnt_2 = j - 1
- //
- // FOR ll_i = 1 TO cnt_2
- // ll_count = 0
- // IF l_ifjd[ll_i] = 1 THEN
- //
- // IF l_groupstr[ll_i] <> '' THEN
- // lb_if_find = FALSE
- // FOR k = 1 TO cnt_gr
- // IF l_groupstr_gr[k] = l_groupstr[ll_i] THEN
- // ld_sdate = ld_sdate_gr[k]
- // lb_if_find = TRUE
- // EXIT
- // END IF
- // NEXT
- //
- // IF lb_if_find = FALSE THEN
- // ld_sdate = ld_sdate_max
- // END IF
- // ELSE
- // ld_sdate = ld_sdate_max
- // END IF
- //
- // ls_arg_date = String(ld_sdate,'yyyy-mm-dd')
- //
- // IF uo_option_use_sc_date = 1 THEN
- // SELECT sum(banhour) INTO :ld_workhour
- // FROM u_sc_date
- // WHERE CONVERT(CHAR(10), Workdate, 120) = :ls_arg_date
- // AND Proid = :l_wrkgrpid[ll_i];
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询工组日历失败'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- // ELSE
- // ld_workhour = 8
- // END IF
- //
- // li_timehour = Hour(Time(ld_sdate))
- //
- // IF li_timehour <= 12 THEN
- // ld_resthour = ld_workhour - (li_timehour - 8)
- // ELSEIF li_timehour > 12 AND li_timehour <= 18 THEN
- // ld_resthour = ld_workhour - (li_timehour - 14 + 4)
- // ELSEIF li_timehour > 18 THEN
- // ld_resthour = ld_workhour - (li_timehour - 19 + 8)
- // END IF
- //
- // IF ld_resthour >= l_lasthour[ll_i] THEN
- // IF li_timehour + l_lasthour[ll_i] <= 12 THEN
- // ld_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_i]) + ':00:00'))
- // ELSEIF li_timehour + l_lasthour[ll_i] <= 18 THEN
- // IF li_timehour < 12 THEN
- // ld_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_i] + 2) + ':00:00'))
- // ELSE
- // ld_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_i]) + ':00:00'))
- // END IF
- // ELSE
- // IF li_timehour < 12 THEN
- // ld_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_i] + 3) + ':00:00'))
- // ELSEIF li_timehour < 18 THEN
- // ld_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_i] + 1) + ':00:00'))
- // ELSE
- // ld_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_i]) + ':00:00'))
- // END IF
- // END IF
- // ld_resthour_e = ld_resthour - l_lasthour[ll_i]
- // ELSE
- // IF uo_option_use_sc_date = 0 THEN
- // li_rdate = Int((l_lasthour[ll_i] - ld_resthour) / 8 )
- // ld_resthour_tmp = Mod((l_lasthour[ll_i] - ld_resthour),8)
- //
- //
- // IF ld_resthour_tmp = 0 THEN
- // ld_resthour_tmp = 8
- // li_rdate = li_rdate
- // ELSE
- // li_rdate = li_rdate + 1
- // END IF
- //
- // IF 8 + ld_resthour_tmp <= 12 THEN
- // ld_edate = DateTime(RelativeDate(Date(ld_sdate),li_rdate),Time(String(8 + ld_resthour_tmp) + ':00:00'))
- // ELSEIF 8 + ld_resthour_tmp + 2 <= 18 THEN
- // ld_edate = DateTime(RelativeDate(Date(ld_sdate),li_rdate),Time(String(8 + ld_resthour_tmp + 2) + ':00:00'))
- // ELSE
- // ld_edate = DateTime(RelativeDate(Date(ld_sdate),li_rdate),Time(String(8 + ld_resthour_tmp + 3) + ':00:00'))
- // END IF
- // ld_resthour_e = ld_workhour - ld_resthour_tmp
- // ELSE
- // ld_resthour_tmp = l_lasthour[ll_i] - ld_resthour
- //
- // SELECT top 1 sum(banhour),workdate INTO :ld_workhour,:ld_workdate_tmp
- // FROM u_sc_date
- // WHERE CONVERT(CHAR(10), Workdate, 120) > :ls_arg_date
- // AND Proid = :l_wrkgrpid[ll_i]
- // group by workdate
- // Order By Workdate;
- // DO WHILE ld_resthour_tmp > ld_workhour AND sqlca.SQLCode = 0
- //
- // ls_arg_date = String(ld_workdate_tmp,'yyyy-mm-dd')
- // ld_resthour_tmp = ld_resthour_tmp - ld_workhour
- // SELECT top 1 sum(banhour),workdate INTO :ld_workhour,:ld_workdate_tmp
- // FROM u_sc_date
- // WHERE CONVERT(CHAR(10), Workdate, 120) > :ls_arg_date
- // AND Proid = :l_wrkgrpid[ll_i]
- // group by workdate
- // Order By Workdate;
- // LOOP
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询工组日历失败'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- // IF 8 + ld_resthour_tmp <= 12 THEN
- // ld_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp) + ':00:00'))
- // ELSEIF 8 + ld_resthour_tmp + 2 <= 18 THEN
- // ld_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp + 2) + ':00:00'))
- // ELSE
- // ld_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp + 3) + ':00:00'))
- // END IF
- //
- // ld_resthour_e = ld_workhour - ld_resthour_tmp
- // END IF
- //
- // END IF
- //
- // UPDATE u_ordermtrl_workgroup
- // SET begindate = :ld_sdate,
- // requiredate = :ld_edate
- // WHERE orderid = :arg_orderid
- // AND scid = :arg_scid
- // AND wrkGrpid = :l_wrkgrpid[ll_i]
- // AND owrkgrpid = :l_owrkgrpid[ll_i]
- // AND wkpname = :l_wkpname[ll_i];
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新工组开始及完成时间失败'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF l_groupstr[ll_i] <> '' THEN
- // lb_if_find = FALSE
- //
- // IF ld_resthour_e > 0 THEN
- // IF Hour(Time(ld_edate)) = 12 THEN
- // ld_sdate = DateTime(Date(ld_edate),Time('14:00:00'))
- // ELSEIF Hour(Time(ld_edate)) = 18 THEN
- // ld_sdate = DateTime(Date(ld_edate),Time('19:00:00'))
- // ELSE
- // ld_sdate = ld_edate
- // END IF
- // ELSE
- // ld_sdate = DateTime(RelativeDate(Date(ld_edate),1),Time('8:00:00'))
- // END IF
- //
- // FOR k = 1 TO cnt_gr
- // IF l_groupstr_gr[k] = l_groupstr[ll_i] THEN
- // ld_sdate_gr[k] = ld_sdate
- // l_printid_gr[k] = l_printid[ll_i]
- // lb_if_find = TRUE
- // EXIT
- // END IF
- // NEXT
- //
- // IF lb_if_find = FALSE THEN
- // cnt_gr++
- // l_printid_gr[cnt_gr] = l_printid[ll_i]
- // l_groupstr_gr[cnt_gr] = l_groupstr[ll_i]
- // ld_sdate_gr[cnt_gr] = ld_sdate
- // END IF
- // END IF
- //
- // FOR ll_j = ll_i + 1 TO cnt_2
- // IF l_ifjd[ll_j] = 1 AND &
- // l_printid[ll_j] = l_printid[ll_i] THEN
- //
- //
- // IF l_groupstr[ll_j] <> '' THEN
- // lb_if_find = FALSE
- // FOR k = 1 TO cnt_gr
- // IF l_groupstr_gr[k] = l_groupstr[ll_j] THEN
- // ld_sdate = ld_sdate_gr[k]
- // lb_if_find = TRUE
- // EXIT
- // END IF
- // NEXT
- //
- // IF lb_if_find = FALSE THEN
- // ld_sdate = ld_sdate_max
- // END IF
- // ELSE
- // ld_sdate = ld_sdate_max
- // END IF
- //
- // ls_arg_date = String(ld_sdate,'yyyy-mm-dd')
- //
- // IF uo_option_use_sc_date = 1 THEN
- // SELECT sum(banhour) INTO :ld_workhour
- // FROM u_sc_date
- // WHERE CONVERT(CHAR(10), Workdate, 120) = :ls_arg_date
- // AND Proid = :l_wrkgrpid[ll_j];
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询工组日历失败'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- // ELSE
- // ld_workhour = 8
- // END IF
- //
- // li_timehour = Hour(Time(ld_sdate))
- //
- // IF li_timehour <= 12 THEN
- // ld_resthour = ld_workhour - (li_timehour - 8)
- // ELSEIF li_timehour > 12 AND li_timehour <= 18 THEN
- // ld_resthour = ld_workhour - (li_timehour - 14 + 4)
- // ELSEIF li_timehour > 18 THEN
- // ld_resthour = ld_workhour - (li_timehour - 19 + 8)
- // END IF
- //
- // IF ld_resthour >= l_lasthour[ll_j] THEN
- // IF li_timehour + l_lasthour[ll_j] <= 12 THEN
- // ld_update_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_j]) + ':00:00'))
- // ELSEIF li_timehour + l_lasthour[ll_j] <= 18 THEN
- // IF li_timehour < 12 THEN
- // ld_update_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_j] + 2) + ':00:00'))
- // ELSE
- // ld_update_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_j]) + ':00:00'))
- // END IF
- // ELSE
- // IF li_timehour < 12 THEN
- // ld_update_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_j] + 3) + ':00:00'))
- // ELSEIF li_timehour < 18 THEN
- // ld_update_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_j] + 1) + ':00:00'))
- // ELSE
- // ld_update_edate = DateTime(Date(ld_sdate),Time(String(li_timehour + l_lasthour[ll_j]) + ':00:00'))
- // END IF
- // END IF
- // ld_resthour_e = ld_resthour - l_lasthour[ll_j]
- // ELSE
- // IF uo_option_use_sc_date = 0 THEN
- // li_rdate = Int((l_lasthour[ll_j] - ld_resthour) / 8 )
- // ld_resthour_tmp = Mod((l_lasthour[ll_j] - ld_resthour),8)
- //
- // IF ld_resthour_tmp = 0 THEN
- // ld_resthour_tmp = 8
- // li_rdate = li_rdate
- // ELSE
- // li_rdate = li_rdate + 1
- // END IF
- //
- // IF 8 + ld_resthour_tmp <= 12 THEN
- // ld_update_edate = DateTime(RelativeDate(Date(ld_sdate),li_rdate),Time(String(8 + ld_resthour_tmp) + ':00:00'))
- // ELSEIF 8 + ld_resthour_tmp + 2 <= 18 THEN
- // ld_update_edate = DateTime(RelativeDate(Date(ld_sdate),li_rdate),Time(String(8 + ld_resthour_tmp + 2) + ':00:00'))
- // ELSE
- // ld_update_edate = DateTime(RelativeDate(Date(ld_sdate),li_rdate),Time(String(8 + ld_resthour_tmp + 3) + ':00:00'))
- // END IF
- // ld_resthour_e = ld_workhour - ld_resthour_tmp
- // ELSE
- // ld_resthour_tmp = l_lasthour[ll_j] - ld_resthour
- //
- // SELECT top 1 sum(banhour),workdate INTO :ld_workhour,:ld_workdate_tmp
- // FROM u_sc_date
- // WHERE CONVERT(CHAR(10), Workdate, 120) > :ls_arg_date
- // AND Proid = :l_wrkgrpid[ll_j]
- // group by workdate
- // Order By Workdate;
- // DO WHILE ld_resthour_tmp > ld_workhour AND sqlca.SQLCode = 0
- //
- // ls_arg_date = String(ld_workdate_tmp,'yyyy-mm-dd')
- // ld_resthour_tmp = ld_resthour_tmp - ld_workhour
- // SELECT top 1 sum(banhour),workdate INTO :ld_workhour,:ld_workdate_tmp
- // FROM u_sc_date
- // WHERE CONVERT(CHAR(10), Workdate, 120) > :ls_arg_date
- // AND Proid = :l_wrkgrpid[ll_j]
- // group by workdate
- // Order By Workdate;
- // LOOP
- //
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询工组日历失败'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF 8 + ld_resthour_tmp <= 12 THEN
- // ld_update_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp) + ':00:00'))
- // ELSEIF 8 + ld_resthour_tmp + 2 <= 18 THEN
- // ld_update_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp + 2) + ':00:00'))
- // ELSE
- // ld_update_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp + 3) + ':00:00'))
- // END IF
- // END IF
- // END IF
- //
- // UPDATE u_ordermtrl_workgroup
- // SET begindate = :ld_sdate,
- // requiredate = :ld_update_edate
- // WHERE orderid = :arg_orderid
- // AND scid = :arg_scid
- // AND wrkGrpid = :l_wrkgrpid[ll_j]
- // AND owrkgrpid = :l_owrkgrpid[ll_j]
- // AND wkpname = :l_wkpname[ll_j];
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新工组开始及完成时间失败'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF l_groupstr[ll_j] <> '' THEN
- // lb_if_find = FALSE
- //
- // IF ld_resthour_e > 0 THEN
- // IF Hour(Time(ld_update_edate)) = 12 THEN
- // ld_sdate = DateTime(Date(ld_update_edate),Time('14:00:00'))
- // ELSEIF Hour(Time(ld_edate)) = 18 THEN
- // ld_sdate = DateTime(Date(ld_update_edate),Time('19:00:00'))
- // ELSE
- // ld_sdate = ld_update_edate
- // END IF
- //
- // ELSE
- // ld_sdate = DateTime(RelativeDate(Date(ld_update_edate),1),Time('8:00:00'))
- // END IF
- //
- // FOR k = 1 TO cnt_gr
- // IF l_groupstr_gr[k] = l_groupstr[ll_j] THEN
- // ld_sdate_gr[k] = ld_sdate
- // l_printid_gr[k] = l_printid[ll_j]
- // lb_if_find = TRUE
- // EXIT
- // END IF
- // NEXT
- //
- // IF lb_if_find = FALSE THEN
- // cnt_gr++
- // l_printid_gr[cnt_gr] = l_printid[ll_j]
- // l_groupstr_gr[cnt_gr] = l_groupstr[ll_j]
- // ld_sdate_gr[cnt_gr] = ld_sdate
- // END IF
- // END IF
- //
- // IF ld_edate < ld_update_edate THEN
- // ld_edate = ld_update_edate
- // END IF
- // ll_count++
- // END IF
- // NEXT
- // ll_i = ll_i + ll_count
- //
- // IF Hour(Time(ld_edate)) = 18 THEN
- // ldt_tmp = DateTime(RelativeDate(Date(ld_edate),1),Time('8:00:00'))
- // ELSEIF Hour(Time(ld_edate)) = 12 THEN
- // ldt_tmp = DateTime(Date(ld_edate),Time('14:00:00'))
- // ELSE
- // ldt_tmp = ld_edate
- // END IF
- //
- // IF ld_sdate_max < ldt_tmp THEN
- // ld_sdate_max = ldt_tmp
- // END IF
- // END IF
- // NEXT
- END IF
- //更新要求完成日期
- DECLARE cur_wrk_tmp CURSOR FOR
- SELECT requiredate,
- begindate,
- lastdays,
- lasthour,
- workgroupid,
- wrkgrpid,
- owrkgrpid,
- wkpname
- FROM u_OrderMtrl_workgroup_tmp
- Where tmpid = :arg_tmpid;
-
- OPEN cur_wrk_tmp;
- j = 1
- FETCH cur_wrk_tmp INTO :ld_requiredate[j],:ld_begindate[j],:ll_lastdays[j],:ld_lasthour[j],:ll_workgroupid[j],
- :ll_wrkgrpid[j],:ll_owrkgrpid[j],:ls_wkpname[j];
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_wrk_tmp INTO :ld_requiredate[j],:ld_begindate[j],:ll_lastdays[j],:ld_lasthour[j],:ll_workgroupid[j],
- :ll_wrkgrpid[j],:ll_owrkgrpid[j],:ls_wkpname[j];
- LOOP
- CLOSE cur_wrk_tmp;
- cnt = j - 1
- FOR ll_i = 1 TO cnt
- UPDATE u_ordermtrl_workgroup
- SET requiredate = :ld_requiredate[ll_i],
- begindate = :ld_begindate[ll_i],
- lastdays = :ll_lastdays[ll_i],
- lasthour = :ld_lasthour[ll_i],
- workgroupid = :ll_workgroupid[ll_i]
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- AND wrkgrpid = :ll_wrkgrpid[ll_i]
- AND owrkgrpid = :ll_owrkgrpid[ll_i]
- AND wkpname = :ls_wkpname[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新要求完成时间失败,原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- //按日期加入进度表
- DELETE FROM u_ordermtrl_wrk_jd
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除工组工作量明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- j = 1
- DECLARE cur_wrkmx_jd CURSOR FOR
- SELECT wrkgrpid,
- owrkgrpid,
- wkpname,
- requiredate,
- begindate,
- orderqty,
- workgroupid
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid;
-
- OPEN cur_wrkmx_jd;
- FETCH cur_wrkmx_jd INTO :ll_wrkgrpid[j],:ll_owrkgrpid[j],
- :ls_wkpname[j],:ld_requiredate[j],:ld_begindate[j],:ld_orderqty[j],:ll_workgroupid[j];
-
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_wrkmx_jd INTO :ll_wrkgrpid[j],:ll_owrkgrpid[j],
- :ls_wkpname[j],:ld_requiredate[j],:ld_begindate[j],:ld_orderqty[j],:ll_workgroupid[j];
-
- LOOP
- CLOSE cur_wrkmx_jd;
- cnt = j - 1
- Long ll_DaysAfter
- DateTime ldt_wrkdate
- Decimal ld_order_wrk
- FOR ll_i = 1 TO cnt
- ll_DaysAfter = DaysAfter(Date(ld_begindate[ll_i]), Date(ld_requiredate[ll_i]))
-
- IF ll_DaysAfter + 1 <> 0 THEN
-
- ld_order_wrk = ld_orderqty[ll_i] / (ll_DaysAfter + 1)
-
- FOR ll_j = 1 TO ll_DaysAfter + 1
-
- ldt_wrkdate = DateTime(RelativeDate(Date(ld_begindate[ll_i]),ll_j - 1 ),Time(0))
-
- INSERT INTO u_ordermtrl_wrk_jd
- (scid,
- orderid,
- wrkgrpid,
- owrkgrpid,
- wkpname,
- wrkdate,
- orderqty,
- workgroupid)
- VALUES
- (:arg_scid,
- :arg_orderid,
- :ll_wrkgrpid[ll_i],
- :ll_owrkgrpid[ll_i],
- :ls_wkpname[ll_i],
- :ldt_wrkdate,
- :ld_order_wrk,
- :ll_workgroupid[ll_i]);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "插入工组工作量明细表失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- NEXT
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_auto_order_plan (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- s_order_plan arg_s_plan,arg_s_empty
- Long ll_wrkgrpid[],ll_owrkgrpid[]
- String ls_mtrlcode[]
- Decimal ld_orderqty[]
- DateTime ldt_requiredate[],ldt_begindate[]
- String ls_wkpname[]
- Long ll_workgroupid[],ll_rel_planid[],ll_rel_planprintid[]
- Long ll_mxbt
- Long ll_i
- Long cnt
- Long ll_planid,ll_printid
- Int li_flag,li_secflag
- uo_order_Plan uo_plan
- uo_plan = CREATE uo_order_Plan
- ll_mxbt = 1
- DECLARE cur_ordermtrl CURSOR FOR
- SELECT u_OrderMtrl_workgroup.wrkGrpid,
- u_OrderMtrl_workgroup.owrkGrpid,
- u_mtrldef.mtrlcode,
- u_OrderMtrl_workgroup.orderqty,
- u_OrderMtrl_workgroup.begindate,
- u_OrderMtrl_workgroup.requiredate,
- u_OrderMtrl_workgroup.wkpname,
- u_OrderMtrl_workgroup.workgroupid,
- u_OrderMtrl_workgroup.rel_planid,
- u_OrderMtrl_workgroup.rel_planprintid
- FROM u_OrderMtrl_workgroup INNER JOIN
- u_mtrldef ON u_OrderMtrl_workgroup.mtrlid = u_mtrldef.mtrlid
- WHERE u_OrderMtrl_workgroup.scid = :arg_scid
- AND u_OrderMtrl_workgroup.orderid = :arg_orderid
- Order By u_OrderMtrl_workgroup.printid,u_OrderMtrl_workgroup.groupstr;
-
- OPEN cur_ordermtrl;
- FETCH cur_ordermtrl INTO
- :ll_wrkgrpid[ll_mxbt],
- :ll_owrkgrpid[ll_mxbt],
- :ls_mtrlcode[ll_mxbt],
- :ld_orderqty[ll_mxbt],
- :ldt_begindate[ll_mxbt],
- :ldt_requiredate[ll_mxbt],
- :ls_wkpname[ll_mxbt],
- :ll_workgroupid[ll_mxbt],
- :ll_rel_planid[ll_mxbt],
- :ll_rel_planprintid[ll_mxbt];
-
- DO WHILE sqlca.SQLCode = 0
- ll_mxbt++
- FETCH cur_ordermtrl INTO
- :ll_wrkgrpid[ll_mxbt],
- :ll_owrkgrpid[ll_mxbt],
- :ls_mtrlcode[ll_mxbt],
- :ld_orderqty[ll_mxbt],
- :ldt_begindate[ll_mxbt],
- :ldt_requiredate[ll_mxbt],
- :ls_wkpname[ll_mxbt],
- :ll_workgroupid[ll_mxbt],
- :ll_rel_planid[ll_mxbt],
- :ll_rel_planprintid[ll_mxbt];
- LOOP
- CLOSE cur_ordermtrl;
- ll_mxbt = ll_mxbt - 1
- FOR ll_i = 1 TO ll_mxbt
- IF ll_rel_planid[ll_i] > 0 AND ll_rel_planprintid[ll_i] > 0 THEN
- cnt = 0
-
- SELECT count(*) INTO :cnt
- FROM u_order_planmx
- WHERE scid = :arg_scid
- AND oplanid = :ll_rel_planid[ll_i]
- AND printid = :ll_rel_planprintid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否已有派工单失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- ll_planid = 0
- ll_printid = 0
- ELSE
- ll_planid = ll_rel_planid[ll_i]
- ll_printid = ll_rel_planprintid[ll_i]
-
- SELECT flag,secflag
- INTO :li_flag,:li_secflag
- FROM u_order_plan
- WHERE scid = :arg_scid
- AND oplanid = :ll_planid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关派工单状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- ll_planid = 0
- ll_printid = 0
- END IF
-
- IF li_secflag = 1 THEN
- IF uo_plan.caudit_2(arg_scid,ll_planid,arg_msg,FALSE) = 0 THEN
- arg_msg = '相关派工单撤二审失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF li_flag = 1 THEN
- IF uo_plan.caudit(arg_scid,ll_planid,arg_msg,FALSE) = 0 THEN
- arg_msg = '相关派工单撤审失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- arg_s_plan = arg_s_empty
-
- arg_s_plan.scid = arg_scid
- arg_s_plan.oplanid = ll_planid
- arg_s_plan.oplandate = ldt_begindate[ll_i]
- arg_s_plan.assign_emp = publ_operator
- arg_s_plan.relcode = ''
- arg_s_plan.dscrp = ''
- arg_s_plan.workgroupid = ll_workgroupid[ll_i]
- arg_s_plan.wrkGrpid = ll_wrkgrpid[ll_i]
-
-
- arg_s_plan.arg_s_planmx[1].mtrlcode = ls_mtrlcode[ll_i]
- arg_s_plan.arg_s_planmx[1].qty = ld_orderqty[ll_i]
- arg_s_plan.arg_s_planmx[1].mxdscrp = ''
- arg_s_plan.arg_s_planmx[1].orderid = arg_orderid
- arg_s_plan.arg_s_planmx[1].requiredate = ldt_requiredate[ll_i]
- arg_s_plan.arg_s_planmx[1].wkpname = ls_wkpname[ll_i]
- arg_s_plan.arg_s_planmx[1].owrkGrpid = ll_owrkgrpid[ll_i]
- arg_s_plan.arg_s_planmx[1].printid = 1
-
- IF uo_plan.Save(arg_s_plan,publ_operator,arg_msg,FALSE) = 0 THEN
- arg_msg = '相关派工单保存失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_plan.audit(arg_scid,uo_plan.uo_oplanid,publ_operator,arg_msg,FALSE) = 0 THEN
- arg_msg = '相关派工单审核失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_plan.audit_2(arg_scid,uo_plan.uo_oplanid,publ_operator,arg_msg,FALSE) = 0 THEN
- arg_msg = '相关派工单二审失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_OrderMtrl_workgroup
- SET rel_planid = :uo_plan.uo_oplanid,
- rel_planprintid = 1
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :ll_wrkgrpid[ll_i]
- AND owrkGrpid = :ll_owrkgrpid[ll_i]
- AND wkpname = :ls_wkpname[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关单据唯一码失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer add_newdscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET DSCRP = :arg_newdescppart
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加计划备注操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK;
- GOTO ext
- END IF
- DSCRP = arg_newdescppart
- ext:
- IF rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer sec_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Long ls_i
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_order_ml = -1000 THEN
- rslt = 0
- arg_msg = '选项:[230]生产计划使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[225]生产计划使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_if_oa_order_zl = -1000 THEN
- rslt = 0
- arg_msg = '选项:[231]生产指令单使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_zl_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[226]生产指令单使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF arg_orderid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //检查是否有相关配置变更单未审
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_saletaskmx_change INNER JOIN
- u_saletaskmx_changemx ON
- u_saletaskmx_change.Billid = u_saletaskmx_changemx.billid
- WHERE (u_saletaskmx_change.affirmflag = 0 OR u_saletaskmx_change.flag = 0)
- AND (u_saletaskmx_changemx.orderid = :arg_orderid)
- And (u_saletaskmx_changemx.scid = :arg_scid) ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = ordercode + ',查询是否有相关配置变更单未审失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = ordercode + ',有相关配置变更单未审,请先审核'
- rslt = 0
- GOTO ext
- END IF
- IF ordertype <> 4 THEN
- IF uo_option_if_oa_order_ml = 1 And uo_option_order_ml_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_orderid,36,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_if_oa_order_zl = 1 And uo_option_order_ml_zl_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_orderid,1138,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF status <> 4 THEN
- rslt = 0
- arg_msg = "计划只有在待终审状态才可以执行终审,请核对"
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET sec_permit_emp = :publ_operator,
- sec_permit_date = getdate(),
- status = 1
- WHERE orderid = :arg_orderid
- AND scid = :scid
- And status = 4;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划终审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer c_sec_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Long ls_i
- String ls_mtrlcode
- Decimal finishqty,ld_sqty,ld_oqty
- DateTime null_dt
- SetNull(null_dt)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- //IF pzlorderid > 0 THEN
- // arg_msg = '自动生成的指令,不能操作'
- // rslt = 0
- // GOTO ext
- //END IF
- IF status <> 1 THEN
- rslt = 0
- arg_msg = "只有在已审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- IF scllflag = 1 THEN
- rslt = 0
- arg_msg = "计划已执行用料审批,请先用料撤审"
- GOTO ext
- END IF
- IF ordertype = 4 THEN
- IF ifauto_optype = 0 THEN
- IF iffg = 1 And ifauto = 1 THEN
- arg_msg = '自动生成的返工指令,不能手动撤审,需撤审相应返工物料运算批'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //查询是否已开生产指令单终止单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_ml_stop
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有相关的生产指令单终止单失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '本生产计划已开了相关的生产指令单终止单,不能撤审'
- GOTO ext
- END IF
- //
- //查询是否有相关的成品生产计划
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_scid
- And pforderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有相关的成品生产计划失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '本生产计划已开了相关的成品生产计划,不能撤审'
- GOTO ext
- END IF
- //
- SELECT mtrlcode INTO :ls_mtrlcode
- FROM u_mtrldef
- Where mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询产品编号失败'
- rslt = 0
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //检查报数单
- SELECT sum(finishqty) INTO :finishqty
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :arg_orderid
- And scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划工组报数失败'
- rslt = 0
- GOTO ext
- END IF
- IF finishqty > 0 THEN
- arg_msg = '生产计划已有工组报数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //条码进度
- SELECT sum(sqty),sum(oqty) INTO :ld_sqty,:ld_oqty
- FROM u_OrderMtrl_workgroup_tree
- WHERE orderid = :arg_orderid
- And scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划工组报数失败'
- rslt = 0
- GOTO ext
- END IF
- IF ld_sqty > 0 THEN
- arg_msg = '生产计划已有工组完成数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- IF ld_oqty > 0 THEN
- arg_msg = '生产计划已有工组接收数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //检查已完成数量
- IF AcmpQty > 0 THEN
- arg_msg = '生产计划已有进仓数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- IF planqty > 0 THEN
- arg_msg = '生产计划已有排程数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //检查工序已开单数,已确认完成数
- Decimal ld_amount
- Decimal ld_finishqty
- ld_amount = 0
- SELECT sum(isnull(v_order_procode.amount,0)) INTO :ld_amount
- FROM v_order_procode
- WHERE v_order_procode.orderid = :arg_orderid
- And v_order_procode.scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询工序已开单数操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_amount > 0 THEN
- arg_msg = '生产计划工序已有开单数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- ld_finishqty = 0
- SELECT sum(U_OrderRqwp.finishqty) INTO :ld_finishqty
- FROM U_OrderRqwp
- WHERE ( U_OrderRqwp.scid = :scid ) AND
- ( U_OrderRqwp.orderid = :arg_orderid ) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询工序已确认完成数操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_finishqty > 0 THEN
- arg_msg = '生产计划工序已确认完成数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //检查派工数量
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_planmx
- WHERE ( u_order_planmx.orderid = :arg_orderid ) AND
- ( u_order_planmx.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询计划是否已开生产派工单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "生产计划已经有相关派工单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查指令单
- IF ordertype <> 4 THEN
- IF uof_check_if_zl(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //检查进数量
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware,u_inwaremx
- WHERE ( u_inware.billtype = 3 ) AND
- ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inwaremx.relid = :arg_orderid ) AND
- ( u_inwaremx.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询计划是否已开生产进仓单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "生产计划已经有相关生产进仓单据,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查领料数量
- SELECT count(*)
- INTO :cnt
- FROM u_outware,u_outwaremx
- WHERE ( u_outware.billtype = 3 ) AND
- ( u_outware.scid = u_outwaremx.scid ) AND
- ( u_outware.outwareid = u_outwaremx.outwareid ) AND
- ( u_outwaremx.relid = :arg_orderid ) AND
- ( u_outwaremx.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询计划领料数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "生产计划已经有相关领料出仓单据,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查工序派工单
- SELECT count(*)
- INTO :cnt
- FROM u_sc_task
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关工序派工单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "生产计划已经有相关工序派工单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查是否已开发料通知单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_scllplan_mx,u_outware_scllplan
- WHERE ( u_outware_scllplan.outwareid = u_outware_scllplan_mx.outwareid ) AND
- ( u_outware_scllplan_mx.orderid = :arg_orderid ) AND
- ( u_outware_scllplan.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询指令单是否已开发料通知单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "指令单已经有相关发料通知单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET status = 4,
- sec_Permit_emp = '',
- sec_Permit_date = :null_dt
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- And status = 1;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划撤消审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer uof_add_procode_qty (long arg_scid, long arg_orderid, string arg_procode, datetime arg_billdate, 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
- Long cnt
- SetNull(null_dt)
- If uo_option_if_taskwork_acmpqty = -1000 Then
- rslt = 0
- arg_msg = '选项:[202]计件单选生产计划时按已进仓数限制,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- 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
- If uo_option_if_taskwork_acmpqty = 1 Then
- ld_trueqty = ld_acmpqty
- Else
- ld_trueqty = ld_orderqty
- End If
- Decimal ld_nofinqty
- Long ll_mtrlid
- Select (U_OrderRqwp.proqty / :ld_orderqty) * :ld_trueqty - U_OrderRqwp.finishqty, mtrlid
- Into :ld_nofinqty, :ll_mtrlid
- From U_OrderRqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And Procode = :arg_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',未完成数量失败>>'+sqlca.SQLErrText
- Goto ext
- End If
- If arg_qty > ld_nofinqty Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',未完成数量为:'+String(ld_nofinqty,'#,##0.##########')+',不能再完成:'+String(arg_qty,'#,##0.##########')
- Goto ext
- End If
- Update U_OrderRqwp
- Set finishqty = finishqty + :arg_qty
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And Procode = :arg_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',完成数量失败>>'+sqlca.SQLErrText
- Goto ext
- End If
- //如果工组进度解决方案为[按末工序计件确认数更新工组完成数],且工组末工序,更新工组完成数
- //////////////////////////////////////////////// //
- Long ll_wrkGrpid, ll_proorder_max, ll_proorder
- Select wrkGrpid, proorder
- Into :ll_wrkGrpid, :ll_proorder
- From U_OrderRqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And Procode = :arg_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',对应工组失败>>'+sqlca.SQLErrText
- Goto ext
- End If
- //检查工组,工组进度解决方案 110527
- Int li_jdtype
- Select jdtype
- Into :li_jdtype
- From u_sc_workgroup
- Where wrkGrpid = :ll_wrkGrpid Using sqlca;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询工组进度解决方案操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If li_jdtype = 2 Then
- Select max(proorder)
- Into :ll_proorder_max
- From U_OrderRqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And wrkGrpid = :ll_wrkGrpid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',所属工组最后工序失败>>'+sqlca.SQLErrText
- Goto ext
- End If
-
- Select count(*)
- Into :cnt
- From U_OrderRqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And proorder = :ll_proorder_max;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',最大工序号:'+String(ll_proorder_max)+'是否唯一失败>>'+sqlca.SQLErrText
- Goto ext
- End If
-
- If cnt > 1 Then
- rslt = 0
- arg_msg = '查询生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',存在多个工序设了相同的最大工序号,请检查'
- Goto ext
- End If
-
- If ll_proorder = ll_proorder_max Then //当前工序为最后工序
- If uof_add_workgroup_qty(arg_scid, arg_orderid , ll_wrkGrpid, ll_mtrlid, arg_billdate, arg_qty, arg_msg, False) = 0 Then
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',所属工组更新完成数失败>>'+arg_msg
- Goto ext
- End If
- End If
- End If
- //////////////////////////////////////////////// //
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Return rslt
- end function
- public function integer uof_add_workgroup_qty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, 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
- uo_order_wkp_jd uo_jd
- uo_jd = Create uo_order_wkp_jd
- 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 orderqty - finishqty - stopqty INTO :not_finishqty
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkgrpid
- AND owrkGrpid > 0
- and scid = :arg_scid
- and ifjd = 1
- 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
- END IF
- UPDATE u_OrderMtrl_workgroup
- SET finishqty = finishqty + :arg_qty,
- finishflag = case when orderqty <= finishqty + :arg_qty + stopqty then 1 else 0 END ,
- finishdate = case when orderqty <= finishqty + :arg_qty + stopqty then :arg_finishdate else :null_dt END
- WHERE orderid = :arg_orderid
- AND wrkGrpid = :arg_wrkgrpid
- AND owrkGrpid > 0
- and ifjd = 1
- and scid = :arg_scid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新物料:'+ls_mtrlcode+'源工组未完成数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- Long ll_cnt
- SELECT count(0)
- INTO :ll_cnt
- FROM u_OrderMtrl_workgroup
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And finishflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单是否派工完成失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_cnt = 0 THEN
- UPDATE u_Order_ml
- SET finish_scflag = 1
- WHERE scid = :arg_scid
- And OrderID = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新指令单派工完成标记失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- else
- UPDATE u_Order_ml
- SET finish_scflag = 0
- WHERE scid = :arg_scid
- And OrderID = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新指令单派工完成标记失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- IF uo_jd.uof_order_add_wrk_jd(arg_scid,arg_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- dt_fdate = DateTime(Date(arg_finishdate), Time(0))
- UPDATE u_OrderMtrl_workgroup_date
- SET fqty = fqty + :arg_qty
- 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,:arg_qty);
- 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
- Destroy uo_jd
- RETURN rslt
- end function
- public function integer uo_cmp_datediff_wrk (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- datastore ds_diff
- ds_diff = Create datastore
- ds_diff.DataObject = 'ds_order_ml_wkp_datediff'
- ds_diff.SetTransObject(sqlca)
- ds_diff.Retrieve(arg_scid,arg_orderid)
- ds_diff.AcceptText()
- ds_diff.SetSort('u_ordermtrl_workgroup_printid A ,u_ordermtrl_workgroup_groupstr A,u_ordermtrl_workgroup_wkpname A')
- ds_diff.Sort()
- Long ll_i,ll_j
- Long ll_owrkgrpid
- String ls_groupstr
- DateTime ldt_bdate,ldt_edate
- DateTime ldt_begindate,ldt_requiredate
- Decimal ld_hourdiffdef,ld_hourdiff
- Int li_datediff
- Int li_bhour,li_ehour
- Long ll_daysaffter
- Int li_diffhour
- DateTime ldt_nextbdate,ldt_nextedate
- Decimal ld_hourdiff_update,ld_hourdiffdef_update
- Long ll_wrkgrpid
- String ls_wkpname
- ds_diff.AcceptText()
- FOR ll_i = 1 To ds_diff.RowCount()
- IF ds_diff.Object.ifjd[ll_i] = 1 THEN
-
- ll_owrkgrpid = ds_diff.Object.u_ordermtrl_workgroup_owrkgrpid[ll_i]
- ldt_requiredate = ds_diff.Object.u_ordermtrl_workgroup_requiredate[ll_i]
-
- FOR ll_j = ll_i + 1 To ds_diff.RowCount()
-
- IF ds_diff.Object.u_ordermtrl_workgroup_wrkgrpid[ll_j] = ll_owrkgrpid And &
- ds_diff.Object.ifjd[ll_j] = 1 THEN
-
- ldt_edate = ds_diff.Object.u_ordermtrl_workgroup_requiredate[ll_j]
- ld_hourdiffdef = ds_diff.Object.lasthour[ll_j]
-
- IF Hour(Time(ldt_requiredate)) = 12 THEN
- ldt_bdate = DateTime(Date(ldt_requiredate),Time('14:00:00'))
- ELSEIF Hour(Time(ldt_requiredate)) = 18 THEN
- ldt_bdate = DateTime(RelativeDate(Date(ldt_requiredate),1),Time('8:00:00'))
- ELSE
- ldt_bdate = ldt_requiredate
- END IF
-
- ds_diff.Object.nextbdate[ll_i] = ldt_bdate
- ds_diff.Object.nextedate[ll_i] = ldt_edate
-
- //
-
- ll_daysaffter = DaysAfter(Date(ldt_bdate),Date(ldt_edate))
-
- li_bhour = Hour(Time(ldt_bdate))
- li_ehour = Hour(Time(ldt_edate))
-
- IF li_bhour <= 12 And li_ehour <= 12 THEN
- li_diffhour = li_ehour - li_bhour
- li_datediff = ll_daysaffter * 8 +li_diffhour
- ELSEIF li_bhour >= 14 And li_ehour >= 14 THEN
- li_diffhour = li_ehour - li_bhour
- li_datediff = ll_daysaffter * 8 +li_diffhour
- ELSEIF li_bhour >= 8 And li_bhour <= 12 And li_ehour >= 14 THEN
- li_diffhour = li_ehour - li_bhour - 2
- li_datediff = ll_daysaffter * 8 +li_diffhour
- ELSE
- li_diffhour = 10 + li_ehour - li_bhour
- li_datediff = (ll_daysaffter - 1) * 8 + li_diffhour
- END IF
-
- ld_hourdiff = li_datediff
-
- ds_diff.Object.hourdiff[ll_i] = ld_hourdiff
- ds_diff.Object.hourdiffdef[ll_i] = ld_hourdiffdef
- EXIT
- END IF
- NEXT
-
- END IF
- NEXT
- ds_diff.AcceptText()
- FOR ll_i = 1 To ds_diff.RowCount()
- IF ds_diff.Object.ifjd[ll_i] = 1 THEN
- ldt_nextbdate = ds_diff.Object.nextbdate[ll_i]
- ldt_nextedate = ds_diff.Object.nextedate[ll_i]
- ld_hourdiff_update = ds_diff.Object.hourdiff[ll_i]
- ld_hourdiffdef_update = ds_diff.Object.hourdiffdef[ll_i]
-
- ll_owrkgrpid = ds_diff.Object.u_ordermtrl_workgroup_owrkgrpid[ll_i]
- ll_wrkgrpid = ds_diff.Object.u_ordermtrl_workgroup_wrkgrpid[ll_i]
- ls_wkpname = ds_diff.Object.u_ordermtrl_workgroup_wkpname[ll_i]
-
- UPDATE u_ordermtrl_workgroup
- SET nextbdate = :ldt_nextbdate,
- nextedate = :ldt_nextedate,
- hourdiff = :ld_hourdiff_update,
- hourdiffdef = :ld_hourdiffdef_update
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :ll_wrkgrpid
- AND owrkgrpid = :ll_owrkgrpid
- And wkpname = :ls_wkpname;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新下工组完成时间失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- destroy ds_diff
- RETURN rslt
- end function
- public function integer uof_add_ordermtrl_tree_acmpqty (long arg_scid, long arg_orderid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);//更新工组进度完成数
- Int rslt = 1
- String ls_ordercode
- String ls_mtrlcode
- Decimal ld_orderqty,ld_acmpqty
- String ls_relname,ls_partname
- String ls_treename
- DateTime null_dt
- SetNull(null_dt)
- 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 relname,partname
- INTO :ls_relname,:ls_partname
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arg_printid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单:'+ls_ordercode+'工艺路线信息失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ls_relname = ls_partname THEN
- ls_treename = ls_relname
- ELSE
- ls_treename = ls_relname + '-'+ls_partname
- END IF
- Decimal not_finishqty
- SELECT orderqty - acmpqty INTO :not_finishqty
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arg_printid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单:'+ls_ordercode+'工艺路线:'+ls_treename +'未派工数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_addqty > not_finishqty THEN
- arg_msg = '指令单:'+ls_ordercode+'工艺路线:'+ls_treename+'未派工数量只有 '+String(not_finishqty,'#,##0.##########')+','+'不能派工'+String(arg_addqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_OrderMtrl_workgroup_tree
- SET acmpqty = acmpqty + :arg_addqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arg_printid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新指令单:'+ls_ordercode+'工艺路线:'+ls_treename+'已派工数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_add_ordermtrl_tree_sqty (long arg_scid, long arg_orderid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);//更新工组进度完成数
- Int rslt = 1
- String ls_ordercode
- String ls_mtrlcode
- Decimal ld_orderqty,ld_acmpqty
- String ls_relname,ls_partname
- String ls_treename
- DateTime null_dt
- SetNull(null_dt)
- 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 relname,partname
- INTO :ls_relname,:ls_partname
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arg_printid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单:'+ls_ordercode+'工艺路线信息失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ls_relname = ls_partname THEN
- ls_treename = ls_relname
- ELSE
- ls_treename = ls_relname + '-'+ls_partname
- END IF
- Decimal not_finishqty
- SELECT orderqty - sqty INTO :not_finishqty
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arg_printid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单:'+ls_ordercode+'工艺路线:'+ls_treename +'未完工数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_addqty > not_finishqty THEN
- arg_msg = '指令单:'+ls_ordercode+'工艺路线:'+ls_treename+'未完工数量只有 '+String(not_finishqty,'#,##0.##########')+','+'不能完工'+String(arg_addqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_OrderMtrl_workgroup_tree
- SET sqty = sqty + :arg_addqty,
- sdate = case when sqty + :arg_addqty = 0 then :null_dt else getdate() end
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :arg_printid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新指令单:'+ls_ordercode+'工艺路线:'+ls_treename+'已完工数量失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uo_cmp_tree_date (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i,ll_j
- Long ll_lp[],ll_mxbt = 1
- DateTime ldt_sdate,ldt_edate,ldt_sdate_order,ldt_edate_before
- Long ll_row,ll_printid
- String ls_arg_date
- Long ll_wrkgrpid
- Decimal ld_workhour,ld_resthour,ld_lasthour,ld_resthour_tmp
- Int li_timehour,li_rdate
- Decimal ld_workdate_tmp
- Decimal ld_resthour_e
- SELECT orderdate INTO :ldt_sdate_order
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单开始日期失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- DECLARE cur_lp CURSOR FOR
- SELECT DISTINCT lp
- FROM u_OrderMtrl_workgroup_tree
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- Order By lp Desc;
-
- OPEN cur_lp;
- FETCH cur_lp Into :ll_lp[ll_mxbt];
- DO WHILE sqlca.SQLCode = 0
- ll_mxbt++
- FETCH cur_lp Into :ll_lp[ll_mxbt];
- LOOP
- CLOSE cur_lp;
- ll_mxbt = ll_mxbt - 1
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_ordermtrl_workgroup_tree_date'
- ds_tree.SetTransObject(sqlca)
- ds_tree.Retrieve(arg_scid,arg_orderid)
- FOR ll_i = 1 To ll_mxbt
- FOR ll_j = 1 To ds_tree.RowCount()
- IF ds_tree.Object.lp[ll_j] = ll_lp[ll_i] THEN
- ll_printid = ds_tree.Object.printid[ll_j]
- ld_lasthour = ds_tree.Object.lasthour[ll_j]
- ll_wrkgrpid = ds_tree.Object.swkpid[ll_j]
- ll_row = ds_tree.Find('parentid = '+String(ll_printid),1,ds_tree.RowCount())
-
- IF ll_row = 0 THEN
- ldt_sdate = DateTime(Date(ldt_sdate_order),Time('8:00:00'))
- ELSE
- ldt_edate_before = ds_tree.Object.enddate[ll_row]
-
- IF Hour(Time(ldt_edate_before)) = 18 THEN
- ldt_sdate = DateTime(RelativeDate(Date(ldt_edate_before),1),Time('8:00:00'))
- ELSEIF Hour(Time(ldt_edate_before)) = 12 THEN
- ldt_sdate = DateTime(Date(ldt_edate_before),Time('14:00:00'))
- ELSE
- ldt_sdate = ldt_edate_before
- END IF
- END IF
-
-
-
- IF uo_cmp_wrk_edate(ldt_sdate,ll_wrkgrpid,ld_lasthour,ldt_edate,ld_resthour_e,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ds_tree.Object.begindate[ll_j] = ldt_sdate
- ds_tree.Object.enddate[ll_j] = ldt_edate
- ds_tree.AcceptText()
-
- UPDATE u_OrderMtrl_workgroup_tree
- SET begindate = :ldt_sdate,
- enddate = :ldt_edate
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And printid = :ll_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新日期失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
-
- NEXT
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uo_cmp_wrk_edate (datetime arg_sdate, long arg_wrkgrpid, decimal arg_lasthour, ref datetime arg_edate, ref decimal arg_resthour_e, ref string arg_msg);Int rslt = 1
- String ls_arg_date
- Decimal ld_workhour,ld_resthour
- Int li_timehour,li_rdate
- Decimal ld_resthour_tmp
- DateTime ld_workdate_tmp
- ls_arg_date = String(arg_sdate,'yyyy-mm-dd')
- IF uo_option_use_sc_date = 1 THEN
- SELECT sum(banhour) INTO :ld_workhour
- FROM u_sc_date
- WHERE CONVERT(CHAR(10), Workdate, 120) = :ls_arg_date
- And Proid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工组日历失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- ld_workhour = 8
- END IF
- li_timehour = Hour(Time(arg_sdate))
- IF li_timehour <= 12 THEN
- ld_resthour = ld_workhour - (li_timehour - 8)
- ELSEIF li_timehour > 12 And li_timehour <= 18 THEN
- ld_resthour = ld_workhour - (li_timehour - 14 + 4)
- ELSEIF li_timehour > 18 THEN
- ld_resthour = ld_workhour - (li_timehour - 19 + 8)
- END IF
- IF ld_resthour >= arg_lasthour THEN
- IF li_timehour + arg_lasthour <= 12 THEN
- arg_edate = DateTime(Date(arg_sdate),Time(String(li_timehour + arg_lasthour) + ':00:00'))
- ELSEIF li_timehour + arg_lasthour <= 18 THEN
- IF li_timehour < 12 THEN
- arg_edate = DateTime(Date(arg_sdate),Time(String(li_timehour + arg_lasthour + 2) + ':00:00'))
- ELSE
- arg_edate = DateTime(Date(arg_sdate),Time(String(li_timehour + arg_lasthour) + ':00:00'))
- END IF
- ELSE
- IF li_timehour < 12 THEN
- arg_edate = DateTime(Date(arg_sdate),Time(String(li_timehour + arg_lasthour + 3) + ':00:00'))
- ELSEIF li_timehour < 18 THEN
- arg_edate = DateTime(Date(arg_sdate),Time(String(li_timehour + arg_lasthour + 1) + ':00:00'))
- ELSE
- arg_edate = DateTime(Date(arg_sdate),Time(String(li_timehour + arg_lasthour) + ':00:00'))
- END IF
- END IF
- arg_resthour_e = ld_resthour - arg_lasthour
- ELSE
- IF uo_option_use_sc_date = 0 THEN
- li_rdate = Int((arg_lasthour - ld_resthour) / 8 )
- ld_resthour_tmp = Mod((arg_lasthour - ld_resthour),8)
-
- IF ld_resthour_tmp = 0 THEN
- ld_resthour_tmp = 8
- li_rdate = li_rdate
- ELSE
- li_rdate = li_rdate + 1
- END IF
-
- IF 8 + ld_resthour_tmp <= 12 THEN
- arg_edate = DateTime(RelativeDate(Date(arg_sdate),li_rdate),Time(String(8 + ld_resthour_tmp) + ':00:00'))
- ELSEIF 8 + ld_resthour_tmp + 2 <= 18 THEN
- arg_edate = DateTime(RelativeDate(Date(arg_sdate),li_rdate),Time(String(8 + ld_resthour_tmp + 2) + ':00:00'))
- ELSE
- arg_edate = DateTime(RelativeDate(Date(arg_sdate),li_rdate),Time(String(8 + ld_resthour_tmp + 3) + ':00:00'))
- END IF
- arg_resthour_e = ld_workhour - ld_resthour_tmp
- ELSE
-
- ld_resthour_tmp = arg_lasthour - ld_resthour
-
- SELECT top 1 sum(banhour),workdate INTO :ld_workhour,:ld_workdate_tmp
- FROM u_sc_date
- WHERE CONVERT(CHAR(10), Workdate, 120) > :ls_arg_date
- AND Proid = :arg_wrkgrpid
- GROUP BY workdate
- Order By Workdate;
- DO WHILE ld_resthour_tmp > ld_workhour And sqlca.SQLCode = 0
-
- ls_arg_date = String(ld_workdate_tmp,'yyyy-mm-dd')
- ld_resthour_tmp = ld_resthour_tmp - ld_workhour
- SELECT top 1 sum(banhour),workdate INTO :ld_workhour,:ld_workdate_tmp
- FROM u_sc_date
- WHERE CONVERT(CHAR(10), Workdate, 120) > :ls_arg_date
- AND Proid = :arg_wrkgrpid
- GROUP BY workdate
- Order By Workdate;
- LOOP
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工组日历失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF 8 + ld_resthour_tmp <= 12 THEN
- arg_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp) + ':00:00'))
- ELSEIF 8 + ld_resthour_tmp + 2 <= 18 THEN
- arg_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp + 2) + ':00:00'))
- ELSE
- arg_edate = DateTime(Date(ld_workdate_tmp),Time(String(8 + ld_resthour_tmp + 3) + ':00:00'))
- END IF
-
- arg_resthour_e = ld_workhour - ld_resthour_tmp
- END IF
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_create_order_plan_tech (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i
- datetime server_dt
- s_order_plan_tech arg_s_tech
- uo_order_plan_tech uo_tech
- uo_tech = Create uo_order_plan_tech
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_ordermtrl_workgroup_tree_date'
- ds_tree.SetTransObject(sqlca)
- SELECT Top 1 getdate() Into :server_dt From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- ds_tree.Retrieve(arg_scid,arg_orderid)
- ds_tree.setsort('printid desc')
- ds_tree.sort()
- FOR ll_i = 1 To ds_tree.RowCount()
- arg_s_tech.scid = ds_tree.Object.scid[ll_i]
- arg_s_tech.orderid = ds_tree.Object.orderid[ll_i]
- arg_s_tech.billid = 0
- arg_s_tech.rep = publ_operator
- arg_s_tech.wrkgrpid = ds_tree.Object.swkpid[ll_i]
- arg_s_tech.workgroupid = ds_tree.Object.workgroupid[ll_i]
- arg_s_tech.printid = ds_tree.Object.printid[ll_i]
- arg_s_tech.parentid = ds_tree.Object.parentid[ll_i]
- arg_s_tech.qty = ds_tree.Object.orderqty[ll_i]
- arg_s_tech.begindate = ds_tree.Object.begindate[ll_i]
- arg_s_tech.enddate = ds_tree.Object.enddate[ll_i]
- arg_s_tech.billdate = server_dt
-
- IF uo_tech.Save(arg_s_tech,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '建立相关派工单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_tech.audit(uo_tech.uo_billid,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '审核相关派工单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_tech
- Destroy ds_tree
- RETURN rslt
- end function
- public function integer uof_delete_order_plan_tech (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- String ls_ordercode
- Long ll_billid[]
- Int li_flag[]
- Long ll_mxbt = 1,ll_i
- uo_order_plan_tech uo_tech
- uo_tech = Create uo_order_plan_tech
- //SELECT ordercode INTO :ls_ordercode
- // FROM u_order_ml
- // WHERE scid = :arg_scid
- // And orderid = :arg_orderid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询指令单信息失败,'+sqlca.SQLErrText
- // GOTO ext
- //END IF
- //
- //SELECT count(*)
- // INTO :cnt
- // FROM u_order_plan_tech
- // WHERE scid = :arg_scid
- // AND orderid = :arg_orderid
- // And flag = 1;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询指令单:'+ls_ordercode+'相关已审工艺派工单失败,'+sqlca.SQLErrText
- // GOTO ext
- //END IF
- //
- //IF cnt > 0 THEN
- // rslt = 0
- // arg_msg = '指令单:'+ls_ordercode+'已有相关已审工艺派工单,不能删除相关工艺派工单'
- // GOTO ext
- //END IF
- DECLARE cur_plan CURSOR FOR
- SELECT billid,flag
- FROM u_order_plan_tech
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
-
- OPEN cur_plan;
- FETCH cur_plan Into :ll_billid[ll_mxbt],:li_flag[ll_mxbt];
- DO WHILE sqlca.SQLCode = 0
- ll_mxbt++
- FETCH cur_plan Into :ll_billid[ll_mxbt],:li_flag[ll_mxbt];
- LOOP
- CLOSE cur_plan;
- ll_mxbt = ll_mxbt - 1
- FOR ll_i = 1 To ll_mxbt
- IF li_flag[ll_i] = 1 THEN
- IF uo_tech.caudit(ll_billid[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关工艺派工单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- IF uo_tech.del(ll_billid[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '删除相关工艺派工单失败,'+arg_msg
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_tech
- RETURN rslt
- end function
- public function integer uof_order_cmp_wrk_date (long arg_scid, long arg_orderid, datetime arg_sdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long l_wrkgrpid[],l_owrkgrpid[],l_ifjd[],l_printid[]
- Decimal l_lastdays[],l_lasthour[]
- String l_wkpname[],l_groupstr[]
- Long j,cnt_2,ll_count,ll_j
- DateTime ld_sdate,ld_edate,ld_update_edate
- DateTime ld_sdate_max
- Decimal ld_resthour,ld_workhour,ld_resthour_e
- Int li_timehour
- Int li_rdate
- Decimal ld_resthour_tmp
- DateTime ld_workdate_tmp
- Long l_printid_gr[]
- String l_groupstr_gr[]
- Long cnt_gr
- DateTime ld_sdate_gr[]
- Long k
- Boolean lb_if_find = False
- String ls_arg_date
- DateTime ldt_tmp
- Long ll_i
- ld_sdate_max = arg_sdate
- j = 1
- DECLARE cur_wrkmx_2 CURSOR FOR
- SELECT wrkgrpid,
- owrkgrpid,
- wkpname,
- ifjd,
- printid,
- lastdays,
- groupstr,
- lasthour
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- Order By printid;
-
- OPEN cur_wrkmx_2;
- FETCH cur_wrkmx_2 INTO :l_wrkgrpid[j],:l_owrkgrpid[j],
- :l_wkpname[j],:l_ifjd[j],:l_printid[j],:l_lastdays[j],
- :l_groupstr[j],:l_lasthour[j];
-
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_wrkmx_2 INTO :l_wrkgrpid[j],:l_owrkgrpid[j],
- :l_wkpname[j],:l_ifjd[j],:l_printid[j],:l_lastdays[j],
- :l_groupstr[j],:l_lasthour[j];
- LOOP
- CLOSE cur_wrkmx_2;
- cnt_2 = j - 1
- FOR ll_i = 1 To cnt_2
- ll_count = 0
- IF l_ifjd[ll_i] = 1 THEN
-
- IF l_groupstr[ll_i] <> '' THEN
- lb_if_find = False
- FOR k = 1 To cnt_gr
- IF l_groupstr_gr[k] = l_groupstr[ll_i] THEN
- ld_sdate = ld_sdate_gr[k]
- lb_if_find = True
- EXIT
- END IF
- NEXT
-
- IF lb_if_find = False THEN
- ld_sdate = ld_sdate_max
- END IF
- ELSE
- ld_sdate = ld_sdate_max
- END IF
-
- IF uo_cmp_wrk_edate(ld_sdate,l_wrkgrpid[ll_i],l_lasthour[ll_i],ld_edate,ld_resthour_e,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_ordermtrl_workgroup
- SET begindate = :ld_sdate,
- requiredate = :ld_edate
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- AND wrkGrpid = :l_wrkgrpid[ll_i]
- AND owrkgrpid = :l_owrkgrpid[ll_i]
- And wkpname = :l_wkpname[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新工组开始及完成时间失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF l_groupstr[ll_i] <> '' THEN
- lb_if_find = False
-
- IF ld_resthour_e > 0 THEN
- IF Hour(Time(ld_edate)) = 12 THEN
- ld_sdate = DateTime(Date(ld_edate),Time('14:00:00'))
- ELSEIF Hour(Time(ld_edate)) = 18 THEN
- ld_sdate = DateTime(Date(ld_edate),Time('19:00:00'))
- ELSE
- ld_sdate = ld_edate
- END IF
- ELSE
- ld_sdate = DateTime(RelativeDate(Date(ld_edate),1),Time('8:00:00'))
- END IF
-
- FOR k = 1 To cnt_gr
- IF l_groupstr_gr[k] = l_groupstr[ll_i] THEN
- ld_sdate_gr[k] = ld_sdate
- l_printid_gr[k] = l_printid[ll_i]
- lb_if_find = True
- EXIT
- END IF
- NEXT
-
- IF lb_if_find = False THEN
- cnt_gr++
- l_printid_gr[cnt_gr] = l_printid[ll_i]
- l_groupstr_gr[cnt_gr] = l_groupstr[ll_i]
- ld_sdate_gr[cnt_gr] = ld_sdate
- END IF
- END IF
-
- FOR ll_j = ll_i + 1 To cnt_2
- IF l_ifjd[ll_j] = 1 And &
- l_printid[ll_j] = l_printid[ll_i] THEN
-
-
- IF l_groupstr[ll_j] <> '' THEN
- lb_if_find = False
- FOR k = 1 To cnt_gr
- IF l_groupstr_gr[k] = l_groupstr[ll_j] THEN
- ld_sdate = ld_sdate_gr[k]
- lb_if_find = True
- EXIT
- END IF
- NEXT
-
- IF lb_if_find = False THEN
- ld_sdate = ld_sdate_max
- END IF
- ELSE
- ld_sdate = ld_sdate_max
- END IF
-
- IF uo_cmp_wrk_edate(ld_sdate,l_wrkgrpid[ll_i],l_lasthour[ll_i],ld_update_edate,ld_resthour_e,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_ordermtrl_workgroup
- SET begindate = :ld_sdate,
- requiredate = :ld_update_edate
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- AND wrkGrpid = :l_wrkgrpid[ll_j]
- AND owrkgrpid = :l_owrkgrpid[ll_j]
- And wkpname = :l_wkpname[ll_j];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新工组开始及完成时间失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF l_groupstr[ll_j] <> '' THEN
- lb_if_find = False
-
- IF ld_resthour_e > 0 THEN
- IF Hour(Time(ld_update_edate)) = 12 THEN
- ld_sdate = DateTime(Date(ld_update_edate),Time('14:00:00'))
- ELSEIF Hour(Time(ld_edate)) = 18 THEN
- ld_sdate = DateTime(Date(ld_update_edate),Time('19:00:00'))
- ELSE
- ld_sdate = ld_update_edate
- END IF
-
- ELSE
- ld_sdate = DateTime(RelativeDate(Date(ld_update_edate),1),Time('8:00:00'))
- END IF
-
- FOR k = 1 To cnt_gr
- IF l_groupstr_gr[k] = l_groupstr[ll_j] THEN
- ld_sdate_gr[k] = ld_sdate
- l_printid_gr[k] = l_printid[ll_j]
- lb_if_find = True
- EXIT
- END IF
- NEXT
-
- IF lb_if_find = False THEN
- cnt_gr++
- l_printid_gr[cnt_gr] = l_printid[ll_j]
- l_groupstr_gr[cnt_gr] = l_groupstr[ll_j]
- ld_sdate_gr[cnt_gr] = ld_sdate
- END IF
- END IF
-
- IF ld_edate < ld_update_edate THEN
- ld_edate = ld_update_edate
- END IF
- ll_count++
- END IF
- NEXT
- ll_i = ll_i + ll_count
-
- IF Hour(Time(ld_edate)) = 18 THEN
- ldt_tmp = DateTime(RelativeDate(Date(ld_edate),1),Time('8:00:00'))
- ELSEIF Hour(Time(ld_edate)) = 12 THEN
- ldt_tmp = DateTime(Date(ld_edate),Time('14:00:00'))
- ELSE
- ldt_tmp = ld_edate
- END IF
-
- IF ld_sdate_max < ldt_tmp THEN
- ld_sdate_max = ldt_tmp
- END IF
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer mod_order_requiredate (long arg_scid, long arg_orderid, datetime arg_oridate, datetime arg_newdate, datetime arg_oriredate, datetime arg_newredate, string arg_reason, boolean arg_ifcmpdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime server_dt
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Date(arg_oridate) = Date(arg_newdate) And Date(arg_oriredate) = Date(arg_newredate) THEN
- rslt = 0
- arg_msg = '新日期与原日期相同,无须更新,操作取消'
- GOTO ext
- END IF
- arg_reason = Trim(arg_reason)
- Long cnt
- Long ll_printid
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml_perfinishdate_log
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And logtype = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询预计完成日期修改日志失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- ll_printid = 0
- ELSE
- SELECT max(printid) INTO :ll_printid
- FROM u_order_ml_perfinishdate_log
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And logtype = 1 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询预计完成日期修改日志失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ll_printid++
- SELECT Top 1 getdate() Into :server_dt From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- INSERT INTO u_order_ml_perfinishdate_log
- (scid,
- orderid,
- printid,
- logtype,
- oridate,
- newdate,
- oriredate,
- newredate,
- reason,
- modemp,
- moddate)
- VALUES
- (:arg_scid,
- :arg_orderid,
- :ll_printid,
- 1,
- :arg_oridate,
- :arg_newdate,
- :arg_oriredate,
- :arg_newredate,
- :arg_reason,
- :publ_operator,
- :server_dt);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入预计完成日期修改日志操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET orderdate = :arg_newdate,
- requiredate = :arg_newredate
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新预计完成日期失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF arg_ifcmpdate THEN
- DateTime ld_sdate_max
- ld_sdate_max = DateTime(Date(arg_newdate),Time('8:00:00'))
-
-
- IF uof_order_cmp_wrk_date(arg_scid,arg_orderid,ld_sdate_max,arg_msg,False) = 0 THEN
- arg_msg = '计算工组日期失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- Return(rslt)
- end function
- public function integer uof_update_outtypestr_zl (long arg_scid[], long arg_orderid[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_scid
- Long ll_i,ll_j,ll_k,ll_l
- Long ll_mxbt
- String ls_outtypestr_p
- String ls_outtypestr[],ls_empty[]
- Long ll_mtrlid,ll_orderid_mx,ll_porderid_mx
- String ls_status,ls_woodcode,ls_pcode
- String ls_outtypestr_zl
- DateTime server_dt
- IF UpperBound(arg_orderid) <= 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- ll_scid = arg_scid[1]
- datastore ds_outtype,ds_mtrlid,ds_mx
- ds_outtype = Create datastore
- ds_outtype.DataObject = 'ds_order_zl_outtypestr_cnt'
- ds_outtype.SetTransObject(sqlca)
- ds_mtrlid = Create datastore
- ds_mtrlid.DataObject = 'ds_order_zl_outtypestr_mtrlid'
- ds_mtrlid.SetTransObject(sqlca)
- ds_mx = Create datastore
- ds_mx.DataObject = 'ds_order_zl_outtypestr_mx'
- ds_mx.SetTransObject(sqlca)
- ds_outtype.Retrieve(ll_scid,arg_orderid)
- FOR ll_i = 1 To ds_outtype.RowCount()
- ls_outtypestr_p = ds_outtype.Object.outtypestr[ll_i]
-
- ls_outtypestr = ls_empty
- ll_mxbt = 0
-
- FOR ll_j = 1 To ds_outtype.Object.maxcnt[ll_i]
- //取组号
- ls_outtypestr_zl = getid(0,'OUT',Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
- IF ls_outtypestr_zl = "err" THEN
- rslt = 0
- arg_msg = "无法获取组号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //
- ll_mxbt++
- ls_outtypestr[ll_mxbt] = ls_outtypestr_zl
-
- NEXT
-
- ds_mtrlid.Retrieve(ll_scid,arg_orderid,ls_outtypestr_p)
-
- FOR ll_k = 1 To ds_mtrlid.RowCount()
- ll_mtrlid = ds_mtrlid.Object.u_order_ml_mtrlid[ll_k]
- ls_status = ds_mtrlid.Object.u_order_ml_status_mode[ll_k]
- ls_woodcode = ds_mtrlid.Object.u_order_ml_woodcode[ll_k]
- ls_pcode = ds_mtrlid.Object.u_order_ml_pcode[ll_k]
- ll_porderid_mx = ds_mtrlid.Object.u_order_ml_porderid[ll_k]
-
- ds_mx.Retrieve(ll_scid,ll_porderid_mx,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ls_outtypestr_p)
-
- FOR ll_l = 1 To ds_mx.RowCount()
- IF ll_l > ll_mxbt THEN EXIT
-
- ll_orderid_mx = ds_mx.Object.u_order_ml_orderid[ll_l]
-
- UPDATE u_order_ml
- SET outtypestr = :ls_outtypestr[ll_l]
- WHERE scid = :ll_scid
- And orderid = :ll_orderid_mx;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新指令单组号失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- NEXT
- NEXT
-
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_tryfinish_packorder2 (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt
- rslt = 1
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- Int li_ifpackpro,li_orderype_mtrl
- Long ll_porderid,cnt
- Decimal ld_minrate,ld_qty
- DateTime null_dt
- SetNull(null_dt)
- //如果不是指令单,或者合并指令单的情况不作处理
- IF porderid = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT u_mtrldef.ordertype,u_mtrldef.ifpackpro,u_order_ml.porderid
- INTO :li_orderype_mtrl,:li_ifpackpro,:ll_porderid
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.orderid = :pzlorderid
- And u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询组合配置整排指令是否指令单分离属性失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ifpackpro <> 4 THEN //不是整排散进组合配置包件产品,退出函数,否则检查主计划相关指令单是否全部完成
- rslt = 1
- GOTO ext
- END IF
- //1.先检查主生产计划自制需求,需求数是否等于用料数,不等即说明有分配库存,跳过判断完成比例
- //2.查询相应部件的完成情况,按需求量对比后得出主计划物料的完成数量
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE u_order_ml.pzlorderid = :pzlorderid
- AND u_order_ml.scid = :arg_scid
- AND u_order_ml.AcmpQty < u_order_ml.orderqty
- And u_order_ml.ordertype = 4;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- IF li_orderype_mtrl = 0 THEN
- arg_msg = '查询组合配置包件产品主生产计划相关分子件指令单是否全部完成失败'+sqlca.SQLErrText
- ELSE
- arg_msg = '查询组合配置包件产品主生产计划【分离指令】相关子件指令单是否全部完成失败'+sqlca.SQLErrText
- END IF
-
- GOTO ext
- END IF
- IF cnt = 0 THEN //相关自制需求全部完成,更新主生产计划已完成数及状态
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator,
- acmpqty = orderqty
- WHERE ( u_order_ml.orderid = :pzlorderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- IF li_orderype_mtrl = 0 THEN
- arg_msg = "更新组合配置包件产品主生产计划完成状态失败"+"~n"+sqlca.SQLErrText
- ELSE
- arg_msg = "更新组合配置包件产品主生产计划【分离指令】完成状态失败"+"~n"+sqlca.SQLErrText
- END IF
- GOTO ext
- END IF
- ELSE
- //如果没有全部完成,则取自制需求的最小完成率去计算主生产计划的完成数
- SELECT min(AcmpQty/orderqty) INTO :ld_minrate
- FROM u_order_ml
- WHERE u_order_ml.pzlorderid = :pzlorderid
- AND u_order_ml.scid = :arg_scid
- And u_order_ml.ordertype = 4;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- IF li_orderype_mtrl = 0 THEN
- arg_msg = '查询相关组合配置包件产品主生产计划子件指令完成率失败'+"~n"+sqlca.SQLErrText
- ELSE
- arg_msg = '查询相关组合配置包件产品主生产计划【分离指令】子件指令完成率失败'+"~n"+sqlca.SQLErrText
- END IF
- GOTO ext
- END IF
-
- UPDATE u_order_ml
- SET status = 1,
- accomplishdate = :null_dt,
- accomplishemp = '',
- acmpqty = orderqty * :ld_minrate
- WHERE ( u_order_ml.orderid = :pzlorderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- IF li_orderype_mtrl = 0 THEN
- arg_msg = "更新组合配置包件产品主生产计划完成状态失败"+"~n"+sqlca.SQLErrText
- ELSE
- arg_msg = "更新组合配置包件产品主生产计划【分离指令】完成状态失败"+"~n"+sqlca.SQLErrText
- END IF
- GOTO ext
- END IF
-
- END IF
- IF li_orderype_mtrl = 1 THEN
- SELECT isnull(sum(AcmpQty),0) INTO :ld_qty
- FROM u_order_ml
- WHERE u_order_ml.porderid = :ll_porderid
- AND u_order_ml.ordertype = 4
- AND u_order_ml.pzlorderid = 0
- And u_order_ml.mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询组合配置包件产品主生产计划相关【分离指令】完数失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_order_ml
- SET status = case when u_order_ml.orderqty - u_order_ml.stopqty = :ld_qty then 5 else 1 END,
- accomplishdate = case when u_order_ml.orderqty - u_order_ml.stopqty = :ld_qty then getdate() else :null_dt END,
- accomplishemp = case when u_order_ml.orderqty - u_order_ml.stopqty = :ld_qty then :publ_operator else '' END,
- acmpqty = :ld_qty
- WHERE ( u_order_ml.orderid = :ll_porderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新组合配置包件产品主生产计划完成状态失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- 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 c_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Long ls_i,ll_fp
- String ls_mtrlcode
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- uo_saletask_ll uo_task_ll
- uo_task_ll = Create uo_saletask_ll
- uo_task_ll.commit_transaction = sqlca
- uo_mtrlware_assign uo_mtrlware_fp
- uo_mtrlware_fp = Create uo_mtrlware_assign
- uo_mtrlware_fp.commit_transaction = sqlca
- uo_getbar uo_get
- uo_get = Create uo_getbar
- datastore ds_fp_del
- ds_fp_del = Create datastore
- ds_fp_del.DataObject = 'ds_order_fp_del'
- ds_fp_del.SetTransObject(sqlca)
- Decimal finishqty,ld_sqty,ld_oqty
- DateTime null_dt
- SetNull(null_dt)
- IF uo_option_if_oa_order_ml = -1000 THEN
- rslt = 0
- arg_msg = '选项:[230]生产计划使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[225]生产计划使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_if_oa_order_zl = -1000 THEN
- rslt = 0
- arg_msg = '选项:[231]生产指令单使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_zl_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[226]生产指令单使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_bh_use_yc = -1000 THEN
- rslt = 0
- arg_msg = '选项:[074]备货生产计划选销售预测单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- //IF pzlorderid > 0 THEN
- // arg_msg = '自动生成的指令,不能操作'
- // rslt = 0
- // GOTO ext
- //END IF
- //yyx20140723
- //胚板指令终审自动建立条码生成单
- IF uo_option_order_zl_auto_getbar = 1 And ordertype = 4 And ifpban = 1 THEN
- Long ll_getbarid
- SELECT getbarid Into :ll_getbarid From u_getbar Where ifrel = 1 And orderid = :arg_orderid And scid = :arg_scid;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询胚板指令单自动建立的条码生成单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- ll_getbarid = 0
- END IF
-
- IF ll_getbarid > 0 THEN
- IF uo_get.c_auditing(ll_getbarid,False,arg_msg,False) = 0 THEN
- arg_msg = '撤审胚板指令单自动建立的条码生成单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_get.del(ll_getbarid,arg_msg,False) = 0 THEN
- arg_msg = '删除胚板指令单自动建立的条码生成单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //end_yyx20140723
- IF ordertype = 4 THEN
- IF ifauto_optype = 0 THEN
- IF iffg = 1 And ifauto = 1 THEN
- arg_msg = '自动生成的返工指令,不能手动撤审,需撤审相应返工物料运算批'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF ordertype <> 4 THEN
- IF uo_option_order_ml_secaudit = 1 And uo_option_if_oa_order_ml = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow_caudit(arg_scid,arg_orderid,36,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_order_ml_zl_secaudit = 1 And uo_option_if_oa_order_zl = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow_caudit(arg_scid,arg_orderid,1138,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF Status <> 7 THEN
- rslt = 0
- arg_msg = "生产计划只有在待二审状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- IF scllflag = 1 THEN
- rslt = 0
- arg_msg = "计划已执行用料审批,请先用料撤审"
- GOTO ext
- END IF
- //查询是否已开生产指令单终止单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_ml_stop
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有相关的生产指令单终止单失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '本生产计划已开了相关的生产指令单终止单,不能撤审'
- GOTO ext
- END IF
- //
- //查询是否有相关的成品生产计划
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_scid
- And pforderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有相关的成品生产计划失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '本生产计划已开了相关的成品生产计划,不能撤审'
- GOTO ext
- END IF
- //
- SELECT mtrlcode INTO :ls_mtrlcode
- FROM u_mtrldef
- Where mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询产品编号失败'
- rslt = 0
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //检查报数单
- SELECT sum(finishqty) INTO :finishqty
- FROM u_OrderMtrl_workgroup
- WHERE orderid = :arg_orderid
- And scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划工组报数失败'
- rslt = 0
- GOTO ext
- END IF
- IF finishqty > 0 THEN
- arg_msg = '生产计划已有工组报数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //条码进度
- SELECT sum(sqty),sum(oqty) INTO :ld_sqty,:ld_oqty
- FROM u_OrderMtrl_workgroup_tree
- WHERE orderid = :arg_orderid
- And scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产计划工组报数失败'
- rslt = 0
- GOTO ext
- END IF
- IF ld_sqty > 0 THEN
- arg_msg = '生产计划已有工组完成数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- IF ld_oqty > 0 THEN
- arg_msg = '生产计划已有工组接收数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //检查已完成数量
- IF AcmpQty > 0 THEN
- arg_msg = '生产计划已有进仓数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- IF planqty > 0 THEN
- arg_msg = '生产计划已有排程数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //检查工序已开单数,已确认完成数
- Decimal ld_amount
- Decimal ld_finishqty
- ld_amount = 0
- SELECT sum(isnull(v_order_procode.amount,0)) INTO :ld_amount
- FROM v_order_procode
- WHERE v_order_procode.orderid = :arg_orderid
- And v_order_procode.scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询工序已开单数操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_amount > 0 THEN
- arg_msg = '生产计划工序已有开单数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- ld_finishqty = 0
- SELECT sum(U_OrderRqwp.finishqty) INTO :ld_finishqty
- FROM U_OrderRqwp
- WHERE ( U_OrderRqwp.scid = :scid ) AND
- ( U_OrderRqwp.orderid = :arg_orderid ) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询工序已确认完成数操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_finishqty > 0 THEN
- arg_msg = '生产计划工序已确认完成数,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- //检查派工数量
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_planmx
- WHERE ( u_order_planmx.orderid = :arg_orderid ) AND
- ( u_order_planmx.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询计划是否已开生产派工单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "生产计划已经有相关派工单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查指令单
- IF ordertype <> 4 THEN
- IF uof_check_if_zl(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //检查进数量
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware,u_inwaremx
- WHERE ( u_inware.billtype = 3 ) AND
- ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inwaremx.relid = :arg_orderid ) AND
- ( u_inwaremx.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询计划是否已开生产进仓单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "生产计划已经有相关生产进仓单据,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查领料数量
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware,u_outwaremx
- WHERE ( u_outware.billtype = 3 ) AND
- ( u_outware.scid = u_outwaremx.scid ) AND
- ( u_outware.outwareid = u_outwaremx.outwareid ) AND
- ( u_outwaremx.relid = :arg_orderid ) AND
- ( u_outwaremx.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询计划领料数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- String ls_rel_scllcode,ls_msg_scllcode
-
- DECLARE cur_check_code CURSOR FOR
- SELECT u_outware.outwarecode
- FROM u_outware,u_outwaremx
- WHERE ( u_outware.billtype = 3 ) AND
- ( u_outware.scid = u_outwaremx.scid ) AND
- ( u_outware.outwareid = u_outwaremx.outwareid ) AND
- ( u_outwaremx.relid = :arg_orderid ) AND
- ( u_outwaremx.scid = :arg_scid );
-
- OPEN cur_check_code;
-
- FETCH cur_check_code Into :ls_rel_scllcode;
-
- DO WHILE sqlca.SQLCode = 0
- IF Trim(ls_msg_scllcode) = '' THEN
- ls_msg_scllcode = ls_rel_scllcode
- ELSE
- ls_msg_scllcode = ls_msg_scllcode +',' + ls_rel_scllcode
- END IF
-
- FETCH cur_check_code Into :ls_rel_scllcode;
- LOOP
-
- CLOSE cur_check_code;
-
- rslt = 0
- arg_msg = "指令单已经有相关领料出仓单据,不可以撤消审核,请先删除相关单据再撤审"+'~r~n' + '相关领料单号:'+ls_msg_scllcode
- GOTO ext
- END IF
- //检查是否已开发料通知单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware_scllplan_mx,u_outware_scllplan
- WHERE ( u_outware_scllplan.outwareid = u_outware_scllplan_mx.outwareid ) AND
- ( u_outware_scllplan_mx.orderid = :arg_orderid ) AND
- ( u_outware_scllplan.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询指令单是否已开发料通知单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "指令单已经有相关发料通知单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查工序派工单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_sc_task
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关工序派工单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "指令单已经有相关工序派工单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查工艺派工单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_plan_tech
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关工艺派工单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "指令单已经有相关工艺派工单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //检查条码生成单
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_getbar
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And ifrel = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关条码生成单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "主计划或指令单已经有相关条码生成单,不可以撤消审核,请先删除相关单据再撤审"
- GOTO ext
- END IF
- //====================================================================
- // 删除工序明细/工组明细
- //====================================================================
- DELETE FROM U_OrderRqwp
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除指令单工序明细失败,原因>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderRqMtrl
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计划的计划用料表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderRqMtrl_tree
- WHERE u_OrderRqMtrl_tree.orderid = :arg_orderid
- And u_OrderRqMtrl_tree.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划运算树操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderMtrl_workgroup
- WHERE u_OrderMtrl_workgroup.orderid = :arg_orderid
- And u_OrderMtrl_workgroup.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划工组进度操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderMtrl_workgroup_tree
- WHERE u_OrderMtrl_workgroup_tree.orderid = :arg_orderid
- And u_OrderMtrl_workgroup_tree.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产计划条码工组进度操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_ordermtrl_workgroup_barcode
- WHERE u_ordermtrl_workgroup_barcode.orderid = :arg_orderid
- And u_ordermtrl_workgroup_barcode.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除相关工组条码明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml_barcode
- WHERE u_order_ml_barcode.orderid = :arg_orderid
- And u_order_ml_barcode.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除相关条码明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_ordermtrl_wrk_jd
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除工组工作量明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml_stop_mtrl_his
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除变更记录操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ordertype = 1 Or &
- ordertype = 2 Or &
- ordertype = 3 Or &
- ordertype = 0 And &
- uo_option_order_bh_use_yc = 1 THEN
- IF ordertype = 2 THEN
- FOR ls_i = 1 To it_mxbt
- IF s_order_mx[ls_i].taskid > 0 THEN
- IF uo_task_ll.updateassignqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,0 - s_order_mx[ls_i].orderqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ELSE
- FOR ls_i = 1 To it_mxbt
- IF s_order_mx[ls_i].taskid > 0 THEN
- IF uo_task.updateassignqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,0 - s_order_mx[ls_i].orderqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
- ELSEIF ordertype = 4 And pzlorderid = 0 THEN
-
- FOR ls_i = 1 To it_mxbt
- IF s_order_mx[ls_i].taskid > 0 THEN
- Int li_plantype
- Long ll_wrkGrpid_scll
-
- SELECT plantype,wrkGrpid
- INTO :li_plantype,:ll_wrkGrpid_scll
- FROM u_OrderRqMtrl
- WHERE scid = :scid
- AND orderid = :s_order_mx[ls_i].taskid
- And mxpkid = :s_order_mx[ls_i].taskmxid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产自制需求资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- IF f_assign_rqmtrlqty(scid,s_order_mx[ls_i].taskid,ll_wrkGrpid_scll,&
- mtrlid,ls_mtrlcode,status_mode,&
- woodcode,pcode,0 - s_order_mx[ls_i].orderqty,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
- IF ordertype <> 4 THEN
- //删除原分配
- ds_fp_del.Retrieve(arg_scid,arg_orderid)
- FOR ll_fp = 1 To ds_fp_del.RowCount()
- IF ds_fp_del.Object.fptype[ll_fp] = 0 THEN
- IF uo_mtrlware_fp.uof_assign_del(ds_fp_del.Object.id[ll_fp],&
- ds_fp_del.Object.qty[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '删除分配失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uo_mtrlware_fp.uof_plan_del(ds_fp_del.Object.id[ll_fp],&
- ds_fp_del.Object.qty[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '删除分配计划失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- //
- END IF
- /// //
- Long ll_mxbt = 1,ll_i,ll_orderid_arr[]
- Int li_status
- uo_order_ml uo_ml
- uo_ml = Create uo_order_ml
- DECLARE cur_porder CURSOR FOR
- SELECT orderid
- FROM u_order_ml
- WHERE pzlorderid = :arg_orderid
- And scid = :arg_scid;
-
- OPEN cur_porder;
- FETCH cur_porder Into :ll_orderid_arr[ll_mxbt];
- DO WHILE sqlca.SQLCode = 0
- ll_mxbt++
- FETCH cur_porder Into :ll_orderid_arr[ll_mxbt];
- LOOP
- CLOSE cur_porder;
- ll_mxbt = ll_mxbt - 1
- FOR ll_i = 1 To ll_mxbt
- IF uo_ml.uof_delete_order_plan_tech(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :ll_orderid_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,'+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 1 THEN
- IF uo_ml.c_sec_audit(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :ll_orderid_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,'+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 4 THEN
- IF uo_ml.c_plan_audit(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :ll_orderid_arr[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,'+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 7 THEN
- IF uo_ml.c_audit(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- IF uo_ml.del(arg_scid,ll_orderid_arr[ll_i],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '删除相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
- NEXT
- // //
- UPDATE u_order_ml
- SET status = 0,
- Permit_emp = '',
- Permit_date = :null_dt
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- And Status = 7;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划撤消审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_task
- Destroy uo_task_ll
- Destroy uo_mtrlware_fp
- Destroy ds_fp_del
- Destroy uo_ml
- Destroy uo_get
- Return (rslt)
- end function
- public function integer uf_add_ftaskqty (long arg_scid, long arg_orderid, long arg_mtrlid, string arg_procode, datetime arg_billdate, decimal arg_ftaskqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误的计划唯一码'
- GOTO ext
- END IF
- IF arg_mtrlid <= 0 THEN
- rslt = 0
- arg_msg = '错误的物料ID唯一码'
- GOTO ext
- END IF
- IF arg_procode = '' OR IsNull(arg_procode) THEN
- rslt = 0
- arg_msg = '错误的工序序号'
- GOTO ext
- END IF
- Int li_status
- string ls_mtrlcode,ls_ordercode
- long ll_mtrlid
- SELECT u_order_ml.status,
- u_mtrldef.mtrlcode,
- u_order_ml.ordercode,
- u_order_ml.mtrlid
- INTO :li_status,
- :ls_mtrlcode,
- :ls_ordercode,
- :ll_mtrlid
- FROM u_mtrldef,u_order_ml
- WHERE u_order_ml.mtrlid = u_mtrldef.mtrlid
- and u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单据审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //IF li_status <> 1 and li_status <> 5 and li_status <> 6 THEN
- // rslt = 0
- // arg_msg = "计划只有在进行或已完成状态才可以执行操作,请核对"
- // GOTO ext
- //END IF
- UPDATE u_orderrqwp
- SET ftaskqty = ftaskqty + :arg_ftaskqty
- WHERE orderid = :arg_orderid
- AND mtrlid = :arg_mtrlid
- AND procode = :arg_procode
- AND scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其他原因导致更新已安排时数失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- //如果工组进度解决方案为[按末工序计件确认数更新工组完成数],且工组末工序,更新工组完成数
- //////////////////////////////////////////////// //
- Long ll_wrkGrpid, ll_proorder_max, ll_proorder
- SELECT wrkGrpid, proorder
- INTO :ll_wrkGrpid, :ll_proorder
- FROM U_OrderRqwp
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- And Procode = :arg_procode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',对应工组失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- //检查工组,工组进度解决方案 110527
- Int li_jdtype
- SELECT jdtype
- INTO :li_jdtype
- FROM u_sc_workgroup
- Where wrkGrpid = :ll_wrkGrpid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询工组进度解决方案操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_jdtype = 3 or li_jdtype = 4 THEN
- SELECT max(proorder)
- INTO :ll_proorder_max
- FROM U_OrderRqwp
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- And wrkGrpid = :ll_wrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',所属工组最后工序失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_proorder = ll_proorder_max THEN //当前工序为最后工序
- IF uof_add_workgroup_qty(arg_scid, arg_orderid , ll_wrkGrpid, ll_mtrlid, arg_billdate, arg_ftaskqty, arg_msg, False) = 0 THEN
- rslt = 0
- arg_msg = '生产计划:'+ls_ordercode+',物料:'+ls_mtrlcode+',工序:'+arg_procode+',所属工组更新完成数失败>>'+arg_msg
- GOTO ext
- END IF
- END IF
- 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_okplan (long arg_scid, long arg_orderid, integer arg_okplanflag, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime null_dt
- SetNull(null_dt)
- rslt = p_getinfo(arg_scid,arg_orderid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF arg_okplanflag = 1 THEN
- IF okplan_flag = 1 THEN
- rslt = 1
- GOTO ext
- END IF
-
- UPDATE u_order_ml
- SET okplan_flag = 1,
- okplan_emp = :arg_opemp,
- okplan_date = getdate()
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "更新可排程标记失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- IF okplan_flag = 0 THEN
- rslt = 1
- GOTO ext
- END IF
-
- UPDATE u_order_ml
- SET okplan_flag = 0,
- okplan_emp = '',
- okplan_date = :null_dt
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "更新可排程标记失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer uof_reset_tree_barcode (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime ldt_null
- Long cnt
- SetNull(ldt_null)
- //1.删除PDA扫描记录
- DELETE FROM u_order_wkp_barcode_pda
- WHERE (barcode IN
- (SELECT barcode
- FROM u_ordermtrl_workgroup_barcode
- Where (orderid = :arg_orderid) And (scid = :arg_scid)));
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除PDA扫描记录失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //2.删除条码扫描更新工组每天进度记录
- DELETE FROM u_OrderMtrl_workgroup_date
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除工组每天进度记录失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //3.删除部件条码
- DELETE FROM u_ordermtrl_workgroup_barcode
- Where (orderid = :arg_orderid) And (scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除部件条码失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //4.清空工艺进度数量
- UPDATE u_OrderMtrl_workgroup_tree
- SET sqty = 0,
- oqty = 0,
- sdate = :ldt_null,
- odate = :ldt_null
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '清空工艺进度数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //5.清空使用条码更新模式的工组进度
- UPDATE u_OrderMtrl_workgroup
- SET u_OrderMtrl_workgroup.finishqty = 0,
- u_OrderMtrl_workgroup.finishdate = :ldt_null,
- u_OrderMtrl_workgroup.finishflag = 0
- FROM u_OrderMtrl_workgroup INNER JOIN
- u_sc_workgroup ON
- u_OrderMtrl_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid
- WHERE (u_sc_workgroup.jdtype = 6)
- AND (u_OrderMtrl_workgroup.scid = :arg_scid)
- And (u_OrderMtrl_workgroup.orderid = :arg_orderid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '清空使用条码更新模式的工组进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //6.清空工艺派工单的完成数
- SELECT count(*)
- INTO :cnt
- FROM u_finish_tech_mx
- WHERE relid IN (
- SELECT billid
- FROM u_order_plan_tech
- WHERE scid = :arg_scid
- And orderid = :arg_orderid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询相关是否已开相关工艺完工单失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "已开相关工艺完工单,请先删除"
- GOTO ext
- END IF
- UPDATE u_order_plan_tech
- SET fqty = 0
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致更新派工单完成数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_order_add_wkp_tree_doing (long arg_scid, long arg_orderid, long arg_this_printid, long arg_next_printid, s_ordermtrl_workgroup_tree arg_s_tree[], integer arg_kind, ref string arg_msg, boolean arg_ifcommit);//====================================================================
- // 修改:工艺进度插入并生成相关资料
- //--------------------------------------------------------------------
- // 作者: Dyy 日期: 2012年06月30日
- //====================================================================
- /*名称解释:
- A-本级(arg_this_printid) B-下级(arg_next_printid) C-新增级
- 情况1: A与B之间插入C (arg_kind : 1~4)
- 情况2: A加入下级C (arg_kind: 5,6)
- arg_kind 使用说明:
- (A与B之间插入C)
- 1.A本身继承B,新增的C必须继承B,A改为继承C(a,b,c)
- 2.A不是继承B,新增的C继承B(a,c)
- 3.A不是继承B,A继承新增的C(a,b,d)
- 4.A不是继承B,新增的C不存在继承关系(a,e)
- (A加入下级C)
- 5.A继承C(b,d)
- 6.A不继承C(e)
- 处理方法列表:
- a.更改B的parentid (1,2,3,4)
- b.更改A的继承关系(A条码要改继承属性) (1,3,5)
- c.增加C的条码(复制B条码) (1,2)
- d.增加C的条码(复制A条码)(A条码要改继承属性) (3,5)
- e.增加C的条码(新建条码) (4,6)
- **刷新printid_sort
- */
- Int rslt = 1
- Long ll_mxbt,ll_i
- Long swkpid ,owkpid ,printid
- String partname
- Long lp ,iflast
- String relname
- Decimal ld_orderqty
- String partname_inherit
- DateTime begindate ,enddate
- Long parentid ,workgroupid
- Decimal lasthour ,workhour ,eoq
- Long if_barcode
- Decimal splitrate ,waittime
- Long li_if_inherit ,ifaccept
- Decimal baseqty
- Long printid_sort
- DateTime server_dt
- Long ll_max_pid,ll_pid,ll_cnt
- String ls_barcode
- Decimal ld_qty
- Long ll_printid
- Long ll_lp_this,ll_lp_min,ll_printid_min
- datastore ds_barcode
- ds_barcode = Create datastore
- ds_barcode.DataObject = 'ds_ordermtrl_workgroup_barcode_doing'
- ds_barcode.SetTransObject(sqlca)
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_OrderMtrl_workgroup_tree_sort'
- ds_tree.SetTransObject(sqlca)
- IF uo_option_scllaudit_autobuild_tech = -1000 THEN
- rslt = 0
- arg_msg = '选项:[245]主生产计划用料审自动生成相关指令单的工组派工单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- s_order_plan_tech arg_s_tech
- uo_order_plan_tech uo_tech
- uo_tech = Create uo_order_plan_tech
- SELECT Top 1 getdate() Into :server_dt From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- ll_mxbt = UpperBound(arg_s_tree)
- IF ll_mxbt <> 1 THEN
- rslt = 0
- arg_msg = '没有正确的新增工艺资料'
- GOTO ext
- END IF
- //更新A下级的层级lp
- IF arg_kind = 1 Or arg_kind = 2 Or arg_kind = 3 Or arg_kind = 4 THEN
-
- SELECT lp
- INTO :ll_lp_this
- FROM u_ordermtrl_workgroup_tree
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And printid = :arg_this_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询本级层级数值失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT top 1 printid
- INTO :ll_printid_min
- FROM u_ordermtrl_workgroup_tree
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND lp <= :ll_lp_this
- AND printid > :arg_this_printid
- Order By printid_sort;
- IF sqlca.SQLCode <> 0 THEN
- IF sqlca.SQLCode = 100 THEN
- ll_printid_min = 0
- ELSE
- rslt = 0
- arg_msg = '查询本级所有层级数值失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
-
- UPDATE u_ordermtrl_workgroup_tree
- SET lp = lp + 1
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- AND (printid > :arg_this_printid)
- And (printid < :ll_printid_min Or :ll_printid_min = 0 );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新本级下级的层级数值失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- printid = arg_s_tree[1].printid
- swkpid = arg_s_tree[1].swkpid
- owkpid = arg_s_tree[1].owkpid
- partname = arg_s_tree[1].partname
- lp = arg_s_tree[1].lp
- iflast = arg_s_tree[1].iflast
- relname = arg_s_tree[1].relname
- ld_orderqty = arg_s_tree[1].orderqty
- partname_inherit = arg_s_tree[1].partname_inherit
- begindate = arg_s_tree[1].begindate
- enddate = arg_s_tree[1].enddate
- parentid = arg_s_tree[1].parentid
- workgroupid = arg_s_tree[1].workgroupid
- lasthour = arg_s_tree[1].lasthour
- workhour = arg_s_tree[1].workhour
- eoq = arg_s_tree[1].eoq
- if_barcode = arg_s_tree[1].if_barcode
- splitrate = arg_s_tree[1].splitrate
- waittime = arg_s_tree[1].waittime
- li_if_inherit = arg_s_tree[1].if_inherit
- ifaccept = arg_s_tree[1].ifaccept
- baseqty = arg_s_tree[1].baseqty
- printid_sort = arg_s_tree[1].printid_sort
- INSERT INTO u_ordermtrl_workgroup_tree
- (
- scid,
- orderid,
- printid,
- swkpid ,
- owkpid ,
- partname ,
- lp ,
- iflast ,
- relname ,
- orderqty ,
- partname_inherit ,
- begindate ,
- enddate ,
- parentid ,
- workgroupid ,
- lasthour ,
- workhour ,
- eoq ,
- if_barcode ,
- splitrate ,
- waittime ,
- if_inherit ,
- ifaccept ,
- baseqty ,
- printid_sort)
- VALUES
- (
- :arg_scid,
- :arg_orderid,
- :printid,
- :swkpid ,
- :owkpid ,
- :partname ,
- :lp ,
- :iflast ,
- :relname ,
- :ld_orderqty ,
- :partname_inherit ,
- :begindate ,
- :enddate ,
- :parentid ,
- :workgroupid ,
- :lasthour ,
- :workhour ,
- :eoq ,
- :if_barcode ,
- :splitrate ,
- :waittime ,
- :li_if_inherit ,
- :ifaccept ,
- :baseqty ,
- :printid_sort);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入工艺进度失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- Int li_scllsecflag,li_ordertype
- SELECT scllsecflag,ordertype
- INTO :li_scllsecflag,:li_ordertype
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单/生产计划属性失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ordertype = 4 Or (li_ordertype <> 4 And li_scllsecflag = 1 ) THEN
-
- IF uo_option_scllaudit_autobuild_tech = 1 THEN
- arg_s_tech.scid = arg_scid
- arg_s_tech.orderid = arg_orderid
- arg_s_tech.billid = 0
- arg_s_tech.rep = publ_operator
- arg_s_tech.wrkgrpid = swkpid
- arg_s_tech.workgroupid = workgroupid
- arg_s_tech.printid = printid
- arg_s_tech.parentid = parentid
- arg_s_tech.qty = ld_orderqty
- arg_s_tech.begindate = begindate
- arg_s_tech.enddate = enddate
- arg_s_tech.billdate = server_dt
-
- IF uo_tech.Save(arg_s_tech,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '建立相关派工单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_tech.audit(uo_tech.uo_billid,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '审核相关派工单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- END IF
- //根据arg_kind执行不同的操作
- //更改B的parentid
- IF arg_kind = 1 Or arg_kind = 2 Or arg_kind = 3 Or arg_kind = 4 THEN
-
- UPDATE u_ordermtrl_workgroup_tree
- SET parentid = :printid
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And printid = :arg_next_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新下级的相关parentid失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- //更改A的继承关系
- IF arg_kind = 1 Or arg_kind = 3 Or arg_kind = 5 THEN
-
- UPDATE u_ordermtrl_workgroup_tree
- SET partname_inherit = :partname,
- if_inherit = 1
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And printid = :arg_this_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新本级继承关系失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET partname_inherit = :partname
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And printid = :arg_this_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新本级相关条码继承关系失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- //增加C的条码(复制B条码)
- IF if_barcode = 1 THEN
- IF arg_kind = 1 Or arg_kind = 2 THEN
- ds_barcode.Retrieve(arg_scid,arg_orderid,arg_next_printid)
-
- SELECT max(pid)
- INTO :ll_max_pid
- FROM u_ordermtrl_workgroup_barcode
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工艺条码信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_cnt = 0
-
- FOR ll_i = 1 To ds_barcode.RowCount()
- ll_cnt++
- ll_pid = ll_max_pid + ll_cnt
-
- ls_barcode = ds_barcode.Object.barcode[ll_i]
- ld_qty = ds_barcode.Object.qty[ll_i]
-
- INSERT INTO u_ordermtrl_workgroup_barcode
- (scid,
- orderid,
- printid,
- pid,
- barcode,
- qty,
- swkpid,
- owkpid,
- relname,
- partname,
- if_inherit,
- partname_inherit,
- workgroupid)
- VALUES (:arg_scid,
- :arg_orderid,
- :printid,
- :ll_pid,
- :ls_barcode,
- :ld_qty,
- :swkpid,
- :owkpid,
- :relname,
- :partname,
- :li_if_inherit,
- :partname_inherit,
- :workgroupid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '生成新增工艺的条码失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- END IF
- END IF
- //增加C的条码(复制A条码)
- IF if_barcode = 1 THEN
- IF arg_kind = 3 Or arg_kind = 5 THEN
- ds_barcode.Retrieve(arg_scid,arg_orderid,arg_this_printid)
-
- SELECT max(pid)
- INTO :ll_max_pid
- FROM u_ordermtrl_workgroup_barcode
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工艺条码信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_cnt = 0
-
- FOR ll_i = 1 To ds_barcode.RowCount()
- ll_cnt++
- ll_pid = ll_max_pid + ll_cnt
-
- ls_barcode = ds_barcode.Object.barcode[ll_i]
- ld_qty = ds_barcode.Object.qty[ll_i]
-
- INSERT INTO u_ordermtrl_workgroup_barcode
- (scid,
- orderid,
- printid,
- pid,
- barcode,
- qty,
- swkpid,
- owkpid,
- relname,
- partname,
- if_inherit,
- partname_inherit,
- workgroupid)
- VALUES (:arg_scid,
- :arg_orderid,
- :printid,
- :ll_pid,
- :ls_barcode,
- :ld_qty,
- :swkpid,
- :owkpid,
- :relname,
- :partname,
- :li_if_inherit,
- :partname_inherit,
- :workgroupid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '生成新增工艺的条码失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET if_inherit = 1
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And printid = :arg_this_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新本级条码继承属性失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- END IF
- //增加C的条码(新建)
- IF if_barcode = 1 THEN
- IF arg_kind = 4 Or arg_kind = 6 THEN
- FOR ll_i = 1 To Ceiling(Round(ld_orderqty/baseqty,10))
- IF ll_i = Ceiling(Round(ld_orderqty/baseqty,10)) THEN
- ld_qty = ld_orderqty - (ll_i - 1) * baseqty
- ELSE
- ld_qty = baseqty
- END IF
-
- SELECT max(pid)
- INTO :ll_max_pid
- FROM u_ordermtrl_workgroup_barcode
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工艺条码信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_cnt = 0
-
- ll_cnt++
- ll_pid = ll_max_pid + ll_cnt
-
-
- ls_barcode = getid(0,"BARCODE1",Date(server_dt),True,sqlca)
-
- INSERT INTO u_ordermtrl_workgroup_barcode
- (scid,
- orderid,
- printid,
- pid,
- barcode,
- qty,
- swkpid,
- owkpid,
- relname,
- partname,
- if_inherit,
- partname_inherit,
- workgroupid)
- VALUES (:arg_scid,
- :arg_orderid,
- :printid,
- :ll_pid,
- :ls_barcode,
- :ld_qty,
- :swkpid,
- :owkpid,
- :relname,
- :partname,
- :li_if_inherit,
- :partname_inherit,
- :workgroupid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '生成新增工艺的条码失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- NEXT
-
- END IF
- END IF
- //更新工艺路线的printid_sort
- ds_tree.Retrieve(arg_scid,arg_orderid)
- FOR ll_i = 1 To ds_tree.RowCount()
- ll_printid = ds_tree.Object.printid[ll_i]
-
- UPDATE u_OrderMtrl_workgroup_tree
- SET printid_sort = :ll_i * 10
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And printid = :ll_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新工艺进度排序失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_tech
- Destroy ds_barcode
- RETURN rslt
- end function
- public function integer uof_update_minbdate (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_ordertype
- Long ll_porderid
- Long ll_orderid_tree
- SELECT ordertype,porderid INTO :li_ordertype,:ll_porderid
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ordertype <> 4 THEN
- ll_orderid_tree = arg_orderid
- ELSE
- ll_orderid_tree = ll_porderid
- END IF
- UPDATE u_OrderMtrl_workgroup
- SET u_OrderMtrl_workgroup.minbdate = DATEADD(dd,ISNULL(v_minbdate.dayadd, 0), GETDATE())
- FROM u_OrderMtrl_workgroup LEFT OUTER JOIN
- (SELECT wrkGrpid, MAX(dayadd) AS dayadd
- FROM (SELECT u_OrderRqMtrl_tree.wrkGrpid,
- CASE u_mtrldef.Mtrlorigin WHEN 2 THEN u_mtrldef.buydays WHEN 3 THEN
- u_mtrldef.wfjgdays WHEN 6 THEN u_mtrldef.aheaddays when 0 then u_mtrldef.expday END AS dayadd
- FROM u_OrderRqMtrl_tree INNER JOIN
- u_mtrldef ON u_OrderRqMtrl_tree.MtrlID = u_mtrldef.mtrlid
- WHERE (u_OrderRqMtrl_tree.OrderID = :ll_orderid_tree) AND
- (u_OrderRqMtrl_tree.scid = :arg_scid) AND
- (u_OrderRqMtrl_tree.truerqqty > 0) AND
- ((u_mtrldef.Mtrlorigin <> 0) or (u_mtrldef.Mtrlorigin = 0 and u_mtrldef.ifselforder = 1)))
- v_tree
- GROUP BY wrkGrpid) v_minbdate ON
- u_OrderMtrl_workgroup.wrkGrpid = v_minbdate.wrkGrpid
- WHERE u_OrderMtrl_workgroup.scid = :arg_scid
- And u_OrderMtrl_workgroup.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- 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_update_orderrqmtrl_zlqty (long arg_scid, long arg_orderid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_zlqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- UPDATE u_OrderRqMtrl
- SET u_OrderRqMtrl.zlqty = u_OrderRqMtrl.zlqty + :arg_zlqty
- FROM u_OrderRqMtrl
- WHERE u_OrderRqMtrl.produce_wrkGrpid = :arg_wrkgrpid
- AND u_OrderRqMtrl.status = :arg_status
- AND u_OrderRqMtrl.woodcode = :arg_woodcode
- AND u_OrderRqMtrl.pcode = :arg_pcode
- AND u_OrderRqMtrl.plantype = 0
- AND u_OrderRqMtrl.scid = :arg_scid
- AND u_OrderRqMtrl.orderid = :arg_orderid
- And u_OrderRqMtrl.mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关主生产计划自制需求指令单数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET u_Order_ml.zlflag = isnull(uv_order_zl_flag.flag,0)
- FROM u_Order_ml LEFT OUTER JOIN
- uv_order_zl_flag ON u_Order_ml.scid = uv_order_zl_flag.scid AND
- u_Order_ml.OrderID = uv_order_zl_flag.OrderID
- WHERE u_order_ml.scid = :arg_scid
- And u_order_ml.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- 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
- Decimal ld_minsqty
- Decimal ld_finishqty
- Decimal ld_addqty
- Long ll_printid, arr_printid[]
- Long ll_cnt = 0
- Long i, j
- Long ll_pid, arr_pid[]
- Long ll_ptflag, arr_ptflag[]
- Decimal ld_qty, arr_qty[]
- Long ll_bar_cnt = 0
- Decimal ld_ptqty
- DateTime dt_server
- 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
- 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
- ld_minsqty = 0
- SELECT MIN(sqty)
- INTO :ld_minsqty
- FROM (SELECT scid, orderid, swkpid, SUM(qty) AS sqty, printid
- FROM u_ordermtrl_workgroup_barcode
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND swkpid = :arg_wrkgrpid
- AND sflag = 1
- Group By scid, orderid, swkpid, printid) a;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单可配套数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_minsqty) THEN ld_minsqty = 0
- ld_finishqty = 0
- SELECT MIN(ptcnt)
- INTO :ld_finishqty
- FROM (SELECT scid, orderid, swkpid, printid, SUM(qty) AS ptcnt
- FROM u_ordermtrl_workgroup_barcode
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- AND (swkpid = :arg_wrkgrpid)
- AND sflag = 1 AND ptflag = 1
- Group By scid, orderid, swkpid, printid) b;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单已配套数失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_finishqty) THEN ld_finishqty = 0
- ld_addqty = ld_minsqty - ld_finishqty
- IF ld_addqty > 0 THEN
- ll_cnt = 0
- DECLARE cur1 CURSOR FOR
- SELECT printid
- FROM u_OrderMtrl_workgroup_tree
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- And (swkpid = :arg_wrkgrpid);
- OPEN cur1;
- FETCH cur1 Into :ll_printid;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- arr_printid[ll_cnt] = ll_printid
- FETCH cur1 Into :ll_printid;
- LOOP
- CLOSE cur1;
-
- FOR i = 1 To ll_cnt
- ll_printid = arr_printid[i]
-
- ll_bar_cnt = 0
- DECLARE cur2 CURSOR FOR
- SELECT pid, ptflag, qty
- FROM u_ordermtrl_workgroup_barcode
- WHERE (scid = :arg_scid)
- AND (orderid = :arg_orderid)
- AND (printid = :ll_printid)
- AND (sflag = 1)
- Order By ptflag Desc, sdate;
- OPEN cur2;
- FETCH cur2 Into :ll_pid, :ll_ptflag, :ld_qty;
- DO WHILE sqlca.SQLCode = 0
- ll_bar_cnt++
- arr_pid[ll_bar_cnt] = ll_pid
- arr_ptflag[ll_bar_cnt] = ll_ptflag
- arr_qty[ll_bar_cnt] = ld_qty
- FETCH cur2 Into :ll_pid, :ll_ptflag, :ld_qty;
- LOOP
- CLOSE cur2;
-
- j = 0
- ld_ptqty = ld_minsqty
-
- DO WHILE j < ll_bar_cnt And ld_ptqty > 0
- j++
- ll_pid = arr_pid[j]
- ll_ptflag = arr_ptflag[j]
- ld_qty = arr_qty[j]
- IF ll_ptflag <> 1 THEN
- UPDATE u_ordermtrl_workgroup_barcode
- SET ptflag = 1,
- ptdate = :dt_server
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND printid = :ll_printid
- And pid = :ll_pid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新配套标记失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '更新配套标记失败,部件条码已经不存在'
- GOTO ext
- END IF
- END IF
- ld_ptqty = ld_ptqty - ld_qty
- LOOP
-
- NEXT
-
- IF uof_add_workgroup_qty(arg_scid, arg_orderid, arg_wrkgrpid, 0, dt_server, ld_addqty, arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- 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_mrpcode (long arg_scid, long arg_orderid, string arg_mrpcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- UPDATE u_order_ml
- SET u_order_ml.mrpcode = :arg_mrpcode
- WHERE u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '主生产计划更新运算批号失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- IF arg_ifcommit THEN
- COMMIT;
- END IF
- END IF
- RETURN rslt
- end function
- public function integer stoporder_cancel (long arg_scid, long arg_orderid, integer arg_ifchange, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ll_rslt
- Int li_ifpackpro,li_ordertype,li_ifpack
- Long ll_porderid,ll_mtrlid_p,ls_i
- String ls_status_p,ls_woodcode_p,ls_pcode_p
- DateTime ld_nulldt
- SetNull(ld_nulldt)
- Decimal ld_stopqty_ori,ld_stopqty
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- If uo_option_order_bh_use_yc = -1000 Then
- rslt = 0
- arg_msg = '选项:[074]备货生产计划选销售预测单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_autostop_porder = -1000 Then
- rslt = 0
- arg_msg = '选项:[383]终止分离排产指令单自动终止相关主生产计划,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- If rslt = 0 Then Goto ext
- If status <> 3 Then
- rslt = 0
- arg_msg = "计划或指令单只有在终止状态才可以执行撤消终止,请核对"
- Goto ext
- End If
- If getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If ordertype = 0 And uo_option_order_bh_use_yc = 1 Then
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- Select stopqty
- Into :ld_stopqty_ori
- From u_saletaskmx
- Where scid = :s_order_mx[ls_i].taskscid
- And taskid = :s_order_mx[ls_i].taskid
- And printid = :s_order_mx[ls_i].taskmxid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产计划相关销售预测单信息失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- ld_stopqty = ld_stopqty_ori - s_order_mx[ls_i].orderqty
-
- If uo_task.stopqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,'',ld_stopqty,'',arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- End If
- Next
- End If
- //扣减相关部件生产计划的已分配数量
- If pforderid > 0 Then
- If f_add_conpfqty(arg_scid,pforderid, 0 - (pfqty * (acmpqty - orderqty)) / orderqty ,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- //是否终止用料
- If arg_ifchange = 1 Or arg_ifchange = 2 Then
- ll_rslt = uof_mtrl_change(arg_scid,arg_orderid,0,1,arg_ifchange,1,arg_msg,False)
- If ll_rslt = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- //yyx2013-11-9
- String ls_mtrlcode
- If ordertype = 4 And pzlorderid = 0 And (arg_ifchange = 1 Or arg_ifchange = 2) Then
- If it_mxbt = 0 Then
- rslt = 0
- arg_msg = '没有计划明细,操作终止,请检查'
- Goto ext
- End If
-
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- Int li_plantype
- Long ll_wrkGrpid_scll
-
- Select plantype,wrkGrpid
- Into :li_plantype,:ll_wrkGrpid_scll
- From u_OrderRqMtrl
- Where scid = :scid
- And orderid = :s_order_mx[ls_i].taskid
- And mxpkid = :s_order_mx[ls_i].taskmxid;
-
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询生产自制需求资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
-
- If f_assign_rqmtrlqty(scid,s_order_mx[ls_i].taskid,ll_wrkGrpid_scll,&
- mtrlid,ls_mtrlcode,status_mode,&
- woodcode,pcode,s_order_mx[ls_i].orderqty,0,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- End If
- //yyx2013-11-9_end
- //如果是通用包件产品,检查相关包件指令是否终止
- //如果是分离排产的指令单,要终止相关主生产计划
- If ordertype = 4 And porderid > 0 Then
- Select ifpack Into :li_ifpack
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询指令单物料资料包件属性失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Select u_mtrldef.ifpackpro,
- u_mtrldef.ordertype,
- u_order_ml.mtrlid,
- u_order_ml.status_mode,
- u_order_ml.woodcode,
- u_order_ml.pcode
- Into :li_ifpackpro,
- :li_ordertype,
- :ll_mtrlid_p,
- :ls_status_p,
- :ls_woodcode_p,
- :ls_pcode_p
- From u_Order_ml Inner JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- Where u_Order_ml.scid = :scid
- And u_order_ml.orderid = :porderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询相关主生产计划产品属性失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- ll_porderid = porderid
-
- If li_ifpackpro = 1 And li_ifpack = 1 Then
- Update u_order_ml
- Set status = 1,
- stopemp = '',
- Accomplishdate = :ld_nulldt,
- stopreason = ''
- Where u_order_ml.scid = :scid
- And u_order_ml.orderid = :porderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '自动取消终止包件产品主生产计划失败,'+arg_msg
- Goto ext
- End If
- End If
-
- //如果是分离排产,还要同时终止主生产计划对应的指令单(非包件产品)
- If uo_option_autostop_porder = 1 Then
- If li_ordertype = 1 And &
- ll_mtrlid_p = mtrlid And &
- ls_status_p = status_mode And &
- ls_woodcode_p = woodcode And &
- ls_pcode_p = pcode And &
- li_ifpackpro = 0 Then
-
- Update u_order_ml
- Set stopqty = stopqty - (:orderqty - :acmpqty - :stopqty),
- status = 1,
- stopemp = '',
- Accomplishdate = :ld_nulldt,
- stopreason = ''
- Where u_order_ml.scid = :scid
- And u_order_ml.orderid = :porderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新分离排产对应主生产计划终止数量失败,'+arg_msg
- Goto ext
- End If
- End If
- End If
- End If
- Update u_order_ml
- Set status = 1,
- stopemp = '',
- Accomplishdate = :ld_nulldt,
- stopreason = '',
- stopqty = 0
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And status = 3;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致终止生产计划操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- ElseIf sqlca.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "正在终止生产计划,请稍后重试"
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy uo_task
- Return (rslt)
- end function
- public function integer plan_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0,li_ptflag
- Long ls_i
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_orderid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 7 THEN
- rslt = 0
- arg_msg = "计划只有在待二审状态才可以执行二审,请核对"
- GOTO ext
- END IF
- IF ordertype = 4 THEN
- SELECT ptflag
- INTO :li_ptflag
- FROM u_sc_wkp
- Where wrkGrpid = :wrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = OrderCode+'查询生产车间配置属性失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ptflag = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_orderrqmtrl_scll
- WHERE u_orderrqmtrl_scll.scid = :arg_scid
- AND u_orderrqmtrl_scll.orderid = :arg_orderid
- And u_orderrqmtrl_scll.wareqty > 0;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单领料明细是否有配套材料失败,请检查,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_msg = OrderCode+'计划由于至少没有找到任何一种材料配套,不能审核'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_order_ml
- SET ptflag = 5
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- And status = 7;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = OrderCode+"更新指令单配套状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_order_ml
- SET plan_emp = :publ_operator,
- plan_auditdate = getdate(),
- status = 4
- WHERE orderid = :arg_orderid
- AND scid = :scid
- And status = 7;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划二审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer c_plan_audit (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Long ls_i,li_ptflag
- String ls_mtrlcode
- Decimal finishqty,ld_sqty,ld_oqty
- DateTime null_dt
- SetNull(null_dt)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF status <> 4 THEN
- rslt = 0
- arg_msg = "只有在待终审状态才可以执行撤消二审,请核对"
- GOTO ext
- END IF
- IF ordertype = 4 THEN
- SELECT ptflag
- INTO :li_ptflag
- FROM u_sc_wkp
- Where wrkGrpid = :wrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = OrderCode+'查询生产车间配置属性失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF li_ptflag = 1 THEN
- UPDATE u_order_ml
- SET ptflag = 1
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = OrderCode+"更新指令单配套状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_order_ml
- SET status = 7,
- plan_emp = '',
- plan_auditdate = :null_dt
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- And status = 4;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划撤消二审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer p_update_orderdate (long arg_scid, long arg_orderid, datetime arg_orderdate, datetime arg_requiredate, string arg_dscrp, decimal arg_addqty, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- IF uo_option_order_zl_3_day = -1000 THEN
- rslt = 0
- arg_msg = '选项:[316]指令单保存时更新相关采购需求明细日期,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET orderdate = :arg_orderdate,
- requiredate = :arg_requiredate,
- dscrp = :arg_dscrp,
- modemp = :publ_operator,
- moddate = getdate(),
- addqty = :arg_addqty
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "更新指令单信息失败!"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_order_zl_3_day = 1 THEN
- Int li_ordertype
- Long ll_porderid,cnt
-
- SELECT ordertype,porderid
- INTO :li_ordertype,:ll_porderid
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询指令信息失败!"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ordertype = 4 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_requestbuymxmx
- WHERE scid = :arg_scid
- And orderid = :ll_porderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询指令指相关主生产计划需求是否已开申购单失败!"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- UPDATE u_OrderRqMtrl
- SET u_orderrqmtrl.RqDate = dateadd(day, -3, u_Order_ml.orderdate),
- u_orderrqmtrl.edate = dateadd(day, 0 - u_mtrldef.buydays, dateadd(day, -3, u_Order_ml.orderdate)),
- u_orderrqmtrl.rqdate_ori = case when u_orderrqmtrl.rqdate_ori is NULL then u_orderrqmtrl.RqDate else u_orderrqmtrl.rqdate_ori END ,
- u_orderrqmtrl.edate_ori = case when u_orderrqmtrl.edate_ori is NULL then u_orderrqmtrl.edate else u_orderrqmtrl.edate_ori END
- FROM u_Order_ml INNER JOIN
- u_OrderRqMtrl_scll ON u_Order_ml.OrderID = u_OrderRqMtrl_scll.OrderID AND
- u_Order_ml.scid = u_OrderRqMtrl_scll.scid INNER JOIN
- u_Order_ml u_Order_ml_p ON u_Order_ml.porderid = u_Order_ml_p.OrderID AND
- u_Order_ml.scid = u_Order_ml_p.scid INNER JOIN
- u_OrderRqMtrl ON u_Order_ml_p.OrderID = u_OrderRqMtrl.OrderID AND
- u_Order_ml_p.scid = u_OrderRqMtrl.scid AND
- u_OrderRqMtrl_scll.MtrlID = u_OrderRqMtrl.MtrlID AND
- u_OrderRqMtrl_scll.wrkGrpid = u_OrderRqMtrl.wrkGrpid INNER JOIN
- u_mtrldef ON u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid
- WHERE (u_OrderRqMtrl.plantype = 2)
- AND (u_OrderRqMtrl_scll.scid = :arg_scid)
- And (u_OrderRqMtrl_scll.orderid = :arg_orderid) ;
-
- // UPDATE u_OrderRqMtrl
- // SET u_orderrqmtrl.RqDate = case when u_orderrqmtrl.rqdate_ori is NULL then dateadd(day, -3, u_Order_ml.orderdate) else case when dateadd(day, -3, u_Order_ml.orderdate) < u_orderrqmtrl.RqDate then dateadd(day, -3, u_Order_ml.orderdate) else u_orderrqmtrl.RqDate END END,
- // u_orderrqmtrl.edate = case when u_orderrqmtrl.rqdate_ori is NULL then dateadd(day, 0 - u_mtrldef.buydays, dateadd(day, -3, u_Order_ml.orderdate)) else case when dateadd(day, -3, u_Order_ml.orderdate) < u_orderrqmtrl.RqDate then dateadd(day, - u_mtrldef.buydays, dateadd(day, -3, u_Order_ml.orderdate)) else u_orderrqmtrl.edate END END ,
- // u_orderrqmtrl.rqdate_ori = case when u_orderrqmtrl.rqdate_ori is NULL then u_orderrqmtrl.RqDate else u_orderrqmtrl.rqdate_ori END ,
- // u_orderrqmtrl.edate_ori = case when u_orderrqmtrl.edate_ori is NULL then u_orderrqmtrl.edate else u_orderrqmtrl.edate_ori END
- // FROM u_Order_ml INNER JOIN
- // u_OrderRqMtrl_scll ON u_Order_ml.OrderID = u_OrderRqMtrl_scll.OrderID AND
- // u_Order_ml.scid = u_OrderRqMtrl_scll.scid INNER JOIN
- // u_Order_ml u_Order_ml_p ON u_Order_ml.porderid = u_Order_ml_p.OrderID AND
- // u_Order_ml.scid = u_Order_ml_p.scid INNER JOIN
- // u_OrderRqMtrl ON u_Order_ml_p.OrderID = u_OrderRqMtrl.OrderID AND
- // u_Order_ml_p.scid = u_OrderRqMtrl.scid AND
- // u_OrderRqMtrl_scll.MtrlID = u_OrderRqMtrl.MtrlID AND
- // u_OrderRqMtrl_scll.wrkGrpid = u_OrderRqMtrl.wrkGrpid INNER JOIN
- // u_mtrldef ON u_OrderRqMtrl.MtrlID = u_mtrldef.mtrlid
- // WHERE (u_OrderRqMtrl.plantype = 2)
- // AND (u_OrderRqMtrl_scll.scid = :arg_scid)
- // And (u_OrderRqMtrl_scll.orderid = :arg_orderid) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新需求明细日期操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- 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 uf_createorder_pt (long arg_scid, long arg_orderid, integer arg_pttype, integer arg_bomflag, boolean arg_ifcommit, ref string arg_msg);
- //检测配套数
- Int rslt = 1
- Int ls_ptflag
- Long ls_remtrl_cnt,ls_ware_cnt,ls_mtrlid
- Long i,j,d,k
- Decimal ls_wareqty,ld_qty,ld_standqty
- Long cus_c = 0,fai_c = 0,count
- String mtrlname,mtrlcode
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- If rslt = 0 Then Goto ext
- IF status <> 7 THEN
- rslt = 0
- arg_msg = '指令单只有在待二审状态下才能进行配套计算,失败'
- GOTO ext
- END IF
- //IF status = 0 THEN
- //
- // IF arg_pttype = 0 THEN arg_bomflag = -1
- //
- // IF f_cmpl_rqmtrl(orderid,arg_bomflag,TRUE,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //
- //END IF
- //
- s_mtrlware_noalloc_array ls_mtrl_array
- s_pfmx ls_pfmx[]
- s_mtrlware_noalloc_array s_array
- s_mtrlware_noalloc_array s_mx
- Decimal ls_sonscale,ls_stopqty
- Long ls_sonmtrlid
- DECLARE pf_cur CURSOR FOR
- SELECT u_orderrqmtrl_scll.mtrlid ,
- u_orderrqmtrl_scll.truerqqty/u_order_ml.orderqty,0
- FROM u_OrderRqMtrl_scll INNER JOIN
- u_Order_ml ON u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID AND
- u_OrderRqMtrl_scll.scid = u_Order_ml.scid
- WHERE u_orderrqmtrl_scll.orderid = :arg_orderid
- AND u_orderrqmtrl_scll.scid = :arg_scid
- And u_order_ml.orderqty > 0;
- OPEN pf_cur;
- count = 1
- FETCH pf_cur INTO :ls_sonmtrlid,&
- :ls_sonscale,:ls_stopqty;
-
- DO WHILE sqlca.SQLCode = 0 //循环读取明细数据
- ls_sonscale = Truncate(ls_sonscale,5)
- ls_pfmx[count].sonmtrlid = ls_sonmtrlid
- ls_pfmx[count].sonscale = ls_sonscale
- ls_pfmx[count].addqty = ls_stopqty
- count++
- FETCH pf_cur INTO :ls_sonmtrlid,&
- :ls_sonscale,:ls_stopqty;
- LOOP
- count = count - 1
- CLOSE pf_cur;
- //
- SELECT ptflag INTO :ls_ptflag
- FROM u_sc_wkp
- Where wrkGrpid = :wrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产车间配置属性失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ls_ptflag = 0 THEN
- rslt = 0
- arg_msg = '车间没有设置配套属性,不能配套'
- GOTO ext
- END IF
- IF count = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT u_mtrldef.mtrlcode,u_mtrldef.mtrlname INTO :mtrlcode,:mtrlname
- FROM u_mtrldef INNER JOIN
- u_Order_ml ON u_mtrldef.mtrlid = u_Order_ml.mtrlid
- WHERE u_Order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产指令物料名称失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- Decimal ld_freeqty,ld_notdstrqty
- String ls_mtrlcode,ls_mtrlname
- Decimal ld_noallocqty,ld_allqty,ld_maxqty,ld_wareqty,ls_TrueRqQty
- Long ll_storageid_err[]
- Long ls_storageid,ll_i
- Boolean bl_free = False
- ld_maxqty = 1000000
- IF arg_pttype = 0 THEN //单指令
-
- FOR ll_i = 1 To count
-
- ls_pfmx[ll_i].sonscale = Truncate(ls_pfmx[ll_i].sonscale,5)
- IF ls_pfmx[ll_i].sonscale = 0 THEN CONTINUE
-
- SELECT mtrlcode,
- mtrlname
- INTO :ls_mtrlcode,
- :ls_mtrlname
- FROM u_mtrldef
- Where mtrlid = :ls_pfmx[ll_i].sonmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = arg_msg+'~r~n'+'查询物料编码失败'+String(ls_pfmx[ll_i].sonmtrlid)
- //bl_free = TRUE
- CONTINUE
- END IF
-
- IF Pos(ls_mtrlname ,'胶水') > 0 Or Pos(ls_mtrlname ,'安装图') > 0 THEN CONTINUE
- IF Pos(Upper(mtrlcode),'B2060') > 0 And Pos(ls_mtrlname ,'胶袋') > 0 THEN CONTINUE
-
- ld_freeqty = 0
- ld_noallocqty = 0
- ld_notdstrqty = 0
- ld_allqty = 0
- //查找可用数量=库存数量-冻结数量
- SELECT freeqty,noallocqty,notdstrqty
- INTO :ld_freeqty,:ld_noallocqty,:ld_notdstrqty
- FROM uv_Order_ml_RqMtrl_freeqty
- Where mtrlid = :ls_pfmx[ll_i].sonmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- //bl_free = TRUE
- //CONTINUE
- END IF
-
-
- IF ld_freeqty < 0 THEN
- ld_freeqty = 0
- END IF
-
-
-
- ld_allqty = ld_freeqty/ls_pfmx[ll_i].sonscale
- // f_round_qty(ls_pfmx[ll_i].sonmtrlid, ld_allqty)
- // f_round_qty(ls_pfmx[ll_i].sonmtrlid, ld_notdstrqty)
-
- ld_maxqty = Min(ld_maxqty,ld_allqty)
- IF IsNull(ld_maxqty) THEN ld_maxqty = 0
- IF ld_maxqty = 0 THEN
- //bl_free = TRUE
- CONTINUE
- END IF
-
- NEXT
-
-
- ld_qty = Truncate ( ld_maxqty, 0 )
-
- d = 0
- FOR i = 1 To count
- ls_mtrlid = ls_pfmx[i].sonmtrlid
-
- IF ls_mtrlid = 0 THEN CONTINUE
- d++
- s_mx.mtrlid[d] = ls_mtrlid
- s_mx.sonscale[d] = ls_pfmx[i].sonscale
- s_mx.order_mtrlid[d] = mtrlid
- s_mx.qty [d] = ld_qty
- s_mx.mtrlwareid[d] = arg_orderid
- s_mx.scid[d] = arg_scid
- NEXT
-
- // OpenWithParm(w_createorder_pt2,s_mx)
- s_array = Message.PowerObjectParm
-
- IF UpperBound(s_array.mtrlid) > 0 THEN
- s_mx = s_array
- ld_qty = s_array.allocqty[1]
- d = UpperBound(s_array.mtrlid)
- ELSE
- arg_ifcommit = False
- rslt = 0
- arg_msg = '审核取消'
- GOTO ext
- END IF
-
- ELSE //多指令
-
- FOR ll_i = 1 To count
-
- ld_wareqty = 0
- ld_freeqty = 0
- ld_noallocqty = 0
- ld_notdstrqty = 0
- ld_allqty = 0
- ls_TrueRqQty = 0
- ld_standqty = 0
-
-
- SELECT mtrlcode,
- mtrlname
- INTO :ls_mtrlcode,
- :ls_mtrlname
- FROM u_mtrldef
- Where mtrlid = :ls_pfmx[ll_i].sonmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = arg_msg+'~r~n'+'查询物料编码失败'+String(ls_pfmx[ll_i].sonmtrlid)
- bl_free = True
- CONTINUE
- END IF
-
- SELECT wareqty INTO :ld_wareqty
- FROM u_orderrqmtrl_scll
- WHERE orderid = :arg_orderid
- AND mtrlid = :ls_pfmx[ll_i].sonmtrlid
- And ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- //continue
- END IF
-
-
- SELECT freeqty,noallocqty,notdstrqty
- INTO :ld_freeqty,:ld_noallocqty,:ld_notdstrqty
- FROM
- uv_Order_ml_RqMtrl_freeqty
- Where mtrlid = :ls_pfmx[ll_i].sonmtrlid;
- IF sqlca.SQLCode <> 0 THEN
- //continue
- END IF
- ls_pfmx[ll_i].sonscale = Truncate(ls_pfmx[ll_i].sonscale,5)
- ld_standqty = ls_pfmx[ll_i].sonscale* orderqty - ls_pfmx[ll_i].addqty //配套需求数量
- // f_round_qty(ls_pfmx[ll_i].sonmtrlid, ld_standqty )
- // f_round_qty(ls_pfmx[ll_i].sonmtrlid, ld_notdstrqty)
-
- ld_maxqty = ld_noallocqty - (ld_notdstrqty - ld_wareqty ) //本次指令计划冻结数
- IF ld_maxqty <= 0 THEN ld_maxqty = 0
- IF ld_maxqty >= ld_standqty THEN
- ld_wareqty = ld_standqty
- ELSE
- ld_wareqty = ld_maxqty
- END IF
-
- s_mx.mtrlid[ll_i] = ls_pfmx[ll_i].sonmtrlid
- s_mx.qty[ll_i] = ld_wareqty
- s_mx.u_mtrldef_mtrlname[ll_i] = ls_mtrlname
-
- NEXT
- ld_qty = orderqty
- d = UpperBound(s_mx.mtrlid)
- END IF
- UPDATE u_OrderRqMtrl_scll
- SET wareqty = 0
- WHERE ( u_OrderRqMtrl_scll.orderid = :arg_orderid )
- And ( u_orderrqmtrl_scll.scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新生产指令领料配套数量失败'
- rslt = 0
- GOTO ext
- END IF
- FOR i = 1 To d
- IF Pos(s_mx.u_mtrldef_mtrlname[i] ,'胶水') > 0 Or Pos(s_mx.u_mtrldef_mtrlname[i] ,'安装图') > 0 THEN CONTINUE
- IF Pos(Upper(mtrlcode),'B2060') > 0 And Pos(s_mx.u_mtrldef_mtrlname[i] ,'胶袋') > 0 THEN CONTINUE
-
- UPDATE u_OrderRqMtrl_scll
- SET wareqty = wareqty + :s_mx.qty[i]
- WHERE ( orderid = :arg_orderid )
- AND (mtrlid = :s_mx.mtrlid[i])
- And (scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新生产指令领料配套数量失败'
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
- UPDATE u_order_ml
- SET ptqty = :ld_qty,
- ptflag = 1,
- ptdate = getdate(),
- ptemp = :publ_operator
- Where OrderID = :arg_orderid
- and scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新生产指令领料配套数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF arg_ifcommit THEN
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
-
- END IF
- RETURN rslt
- end function
- public function integer stoporder (long arg_scid, long arg_orderid, integer arg_ifchange, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Long cnt
- Int rslt = 1,li_ptflag,ll_rslt
- Int li_ifpackpro,li_ordertype,li_ifpack,li_status
- Long ll_porderid,ll_mtrlid_p
- String ls_status_p,ls_woodcode_p,ls_pcode_p
- Decimal ld_notinqty_p
- Long ll_orderid_arr[]
- Int li_mxbt
- Long ll_i,ls_i
- Decimal ld_stopqty_ori,ld_stopqty
- String ls_mtrlcode
- li_mxbt = 1
- datastore ds_stop_zl
- ds_stop_zl = Create datastore
- ds_stop_zl.DataObject = 'ds_order_ml_stop_p_zl'
- ds_stop_zl.SetTransObject(sqlca)
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If uo_option_order_bh_use_yc = -1000 Then
- rslt = 0
- arg_msg = '选项:[074]备货生产计划选销售预测单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_if_oa_order_ml = -1000 Then
- rslt = 0
- arg_msg = '选项:[230]生产计划使用审批流程,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_order_ml_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[225]生产计划使用二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_if_oa_order_zl = -1000 Then
- rslt = 0
- arg_msg = '选项:[231]生产指令单使用审批流程,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_order_ml_zl_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[226]生产指令单使用二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_autostop_porder = -1000 Then
- rslt = 0
- arg_msg = '选项:[383]终止分离排产指令单自动终止相关主生产计划,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- If rslt = 0 Then Goto ext
- If ordertype <> 4 Then
- If uo_option_if_oa_order_ml = 1 And uo_option_order_ml_secaudit = 1 And audit_buildtype = 0 Then
- If f_check_if_oaflow(arg_scid,arg_orderid,36,arg_msg ) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Else
- If uo_option_if_oa_order_zl = 1 And uo_option_order_ml_zl_secaudit = 1 And audit_buildtype = 0 Then
- If f_check_if_oaflow(arg_scid,arg_orderid,1138,arg_msg ) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- If ordertype = 4 And porderid > 0 Then
- Select u_mtrldef.ifpackpro,
- u_mtrldef.ordertype,
- u_order_ml.mtrlid,
- u_order_ml.status_mode,
- u_order_ml.woodcode,
- u_order_ml.pcode,
- u_order_ml.orderqty - u_order_ml.acmpqty - u_order_ml.stopqty,
- u_order_ml.status
- Into :li_ifpackpro,
- :li_ordertype,
- :ll_mtrlid_p,
- :ls_status_p,
- :ls_woodcode_p,
- :ls_pcode_p,
- :ld_notinqty_p,
- :li_status
- From u_Order_ml Inner JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- Where u_Order_ml.scid = :scid
- And u_order_ml.orderid = :porderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询相关主生产计划产品属性失败,'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- //如果是包件产品生产计划分离的指令单,终止时不考虑状态(雅舍需求, 2014-06-24)
- If Not (ordertype = 4 And li_ifpackpro = 1 And &
- ll_mtrlid_p = mtrlid And &
- ls_status_p = status_mode And &
- ls_woodcode_p = woodcode And &
- ls_pcode_p = pcode) Then
-
- If status <> 1 Then
- rslt = 0
- arg_msg = "计划只有在进行状态才可以执行终止,请核对"
- Goto ext
- End If
-
- End If
- If getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If Trim(arg_stopreason) = '' Then
- rslt = 0
- arg_msg = '请输入终止原因'
- Goto ext
- End If
- //如果是主计划,下级指令单状态有1,2,4,7,不允许终止主计划
- If ordertype <> 4 Then
- Select count(*) Into :cnt
- From u_order_ml
- Where ordertype = 4
- And porderid = :arg_orderid
- And scid = :arg_scid
- And status In (1,2,4,7);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = OrderCode+'查询下级指令单状态失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If cnt > 0 Then
- rslt = 0
- arg_msg = OrderCode+',有下级指令单处于在进行、暂停、待二审或待终审状态,不能终止主计划'
- Goto ext
- End If
- End If
- If ordertype = 4 Then
- Select ptflag
- Into :li_ptflag
- From u_sc_wkp
- Where wrkGrpid = :wrkGrpid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = OrderCode+'查询生产车间配置属性失败'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- //
- cnt = 0
- Select count(*) Into :cnt
- From u_inwaremx Inner JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid And
- u_inwaremx.inwareid = u_inware.inwareid
- Where (u_inware.billtype = 3)
- And (u_inware.flag = 0)
- And (u_inwaremx.scid = :arg_scid)
- And (u_inwaremx.relid = :arg_orderid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = OrderCode+' 查询是否有相关未审核生产进仓单失败'+sqlca.SQLErrText
- Goto ext
- End If
- If cnt > 0 Then
- rslt = 0
- arg_msg = OrderCode+' 有相关未审核生产进仓单,不能终止'
- Goto ext
- End If
- If ordertype = 0 And uo_option_order_bh_use_yc = 1 Then
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- Select stopqty
- Into :ld_stopqty_ori
- From u_saletaskmx
- Where scid = :s_order_mx[ls_i].taskscid
- And taskid = :s_order_mx[ls_i].taskid
- And printid = :s_order_mx[ls_i].taskmxid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产计划相关销售预测单信息失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- ld_stopqty = ld_stopqty_ori + s_order_mx[ls_i].orderqty
-
- If uo_task.stopqty(s_order_mx[ls_i].taskscid,s_order_mx[ls_i].taskid,s_order_mx[ls_i].taskmxid,'',ld_stopqty,'',arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- End If
- Next
- End If
- //扣减相关部件生产计划的已分配数量
- If pforderid > 0 Then
- If f_add_conpfqty(arg_scid,pforderid, (pfqty * (acmpqty - orderqty)) / orderqty ,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- //是否终止用料
- If arg_ifchange = 1 Then
- ll_rslt = uof_mtrl_change(arg_scid,arg_orderid,0,0,arg_ifchange,1,arg_msg,False)
- If ll_rslt = 0 Then
- rslt = 0
- Goto ext
- ElseIf rslt = 2 Then
- Update u_order_ml
- Set stopreason = rtrim(stopreason) + ','+'已开申购单,不能终止物料需求'
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致补充生产计划终止原因失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- ElseIf arg_ifchange = 2 Then
- ll_rslt = uof_mtrl_change(arg_scid,arg_orderid,0,0,arg_ifchange,1,arg_msg,False)
- If ll_rslt = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- //yyx2013-11-9
- If ordertype = 4 And pzlorderid = 0 And (arg_ifchange = 1 Or arg_ifchange = 2) and status = 1 Then
- If it_mxbt = 0 Then
- rslt = 0
- arg_msg = '没有计划明细,操作终止,请检查'
- Goto ext
- End If
-
- For ls_i = 1 To it_mxbt
- If s_order_mx[ls_i].taskid > 0 Then
- Int li_plantype
- Long ll_wrkGrpid_scll
-
- Select plantype,wrkGrpid
- Into :li_plantype,:ll_wrkGrpid_scll
- From u_OrderRqMtrl
- Where scid = :scid
- And orderid = :s_order_mx[ls_i].taskid
- And mxpkid = :s_order_mx[ls_i].taskmxid;
-
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询生产自制需求资料失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
-
- If f_assign_rqmtrlqty(scid,s_order_mx[ls_i].taskid,ll_wrkGrpid_scll,&
- mtrlid,ls_mtrlcode,status_mode,&
- woodcode,pcode,0 - s_order_mx[ls_i].orderqty,0,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- End If
- //yyx2013-11-9_end
- If ordertype = 4 And li_ptflag = 1 Then
- Update u_orderrqmtrl_scll
- Set u_orderrqmtrl_scll.wareqty = u_orderrqmtrl_scll.dstrqty
- From u_orderrqmtrl_scll
- Where u_orderrqmtrl_scll.scid = :arg_scid
- And u_orderrqmtrl_scll.orderid = :arg_orderid
- And u_orderrqmtrl_scll.wareqty > u_orderrqmtrl_scll.dstrqty;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '更新指令单配套数量失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- //如果是通用包件产品,检查相关包件指令是否终止
- //如果是分离排产的指令单,要终止相关主生产计划
- If ordertype = 4 And porderid > 0 Then
- Select ifpack Into :li_ifpack
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询指令单物料资料包件属性失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
-
-
-
- ll_porderid = porderid
- li_mxbt = 1
- If li_ifpackpro = 1 And li_ifpack = 1 Then
- ds_stop_zl.Retrieve(scid,porderid)
-
- If ds_stop_zl.RowCount() > 0 Then
- If ds_stop_zl.Find('u_orderrqmtrl_truerqqty > stopqty',1,ds_stop_zl.RowCount()) = 0 Then
-
- Declare cur_zl_p Cursor For
- Select orderid
- From u_order_ml
- Where scid = :arg_scid
- And porderid = :ll_porderid
- And mtrlid = :ll_mtrlid_p
- And status_mode = :ls_status_p
- And woodcode = :ls_woodcode_p
- And pcode = :ls_pcode_p
- And ordertype = 4;
-
- Open cur_zl_p;
-
- Fetch cur_zl_p Into :ll_orderid_arr[li_mxbt];
-
- Do While sqlca.SQLCode = 0
- li_mxbt++
- Fetch cur_zl_p Into :ll_orderid_arr[li_mxbt];
- Loop
-
- Close cur_zl_p;
-
- For ll_i = 1 To li_mxbt - 1
- If stoporder(scid,ll_orderid_arr[ll_i],arg_ifchange,'终止包件指令自动终止',arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '自动终止包件产品主生产计划对应的分离指令单失败,'+arg_msg
- Goto ext
- End If
- Next
-
-
- // If stoporder(scid,porderid,arg_ifchange,'终止包件指令自动终止主计划',arg_msg,False) = 0 Then
- // rslt = 0
- // arg_msg = '自动终止包件产品主生产计划失败,'+arg_msg
- // Goto ext
- // End If
- End If
- End If
- End If
-
- //如果是分离排产,还要同时终止主生产计划对应的指令单(非包件产品)
- If uo_option_autostop_porder = 1 Then
- If li_ordertype = 1 And &
- ll_mtrlid_p = mtrlid And &
- ls_status_p = status_mode And &
- ls_woodcode_p = woodcode And &
- ls_pcode_p = pcode And &
- li_ifpackpro = 0 And &
- li_status <> 3 Then
-
- Update u_order_ml
- Set stopqty = stopqty + (:orderqty - :acmpqty - :stopqty)
- Where u_order_ml.scid = :scid
- And u_order_ml.orderid = :porderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新分离排产对应主生产计划终止数量失败,'+arg_msg
- Goto ext
- End If
-
- If ld_notinqty_p = orderqty - acmpqty - stopqty Then
- If stoporder(scid,porderid,arg_ifchange,'终止包件指令自动终止',arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '自动终止分离排产对应主生产计划失败,'+arg_msg
- Goto ext
- End If
- End If
- End If
-
- // DECLARE cur_zl_p CURSOR FOR
- // SELECT orderid
- // FROM u_order_ml
- // WHERE scid = :arg_scid
- // AND porderid = :ll_porderid
- // AND mtrlid = :ll_mtrlid_p
- // AND status_mode = :ls_status_p
- // AND woodcode = :ls_woodcode_p
- // And pcode = :ls_pcode_p;
- //
- // OPEN cur_zl_p;
- //
- // FETCH cur_zl_p Into :ll_orderid_arr[li_mxbt];
- //
- // DO WHILE sqlca.SQLCode = 0
- // li_mxbt++
- // FETCH cur_zl_p Into :ll_orderid_arr[li_mxbt];
- // LOOP
- //
- // CLOSE cur_zl_p;
- //
- // FOR ll_i = 1 To li_mxbt - 1
- // IF stoporder(scid,ll_orderid_arr[ll_i],arg_ifchange,'终止包件指令自动终止',arg_msg,False) = 0 THEN
- // rslt = 0
- // arg_msg = '自动终止包件产品主生产计划对应的分离指令单失败,'+arg_msg
- // GOTO ext
- // END IF
- // NEXT
- End If
- End If
- Update u_order_ml
- Set status = 3,
- stopemp = :publ_operator,
- Accomplishdate = getdate(),
- stopreason = :arg_stopreason,
- stopqty = orderqty - acmpqty
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致终止生产计划操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy uo_task
- Destroy ds_stop_zl
- Return (rslt)
- end function
- public function integer f_add_flqty (long arg_scid, long arg_orderid, long arg_wrkgrpid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt
- rslt = 1
- String ls_ordercode
- SELECT ordercode INTO :ls_ordercode
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单信息失败,scid:'+String(arg_scid)+',orderid:'+String(arg_orderid)+','+sqlca.SQLErrText
- GOTO ext
- END IF
- UPDATE u_OrderRqMtrl_scll
- SET flqty = flqty + :arg_addqty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND wrkgrpid = :arg_wrkgrpid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '指令单:'+ls_ordercode+'更新物料:'+arg_mtrlcode+',发料通知单数失败>>'+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_bom_workprice (long arg_mtrlid, string arg_pfcode, decimal arg_qty, ref string arg_msg);Int rslt = 1
- Int li_mtrlorigin
- Long count = 0,cnt
- Long ll_i
- s_pfmx ls_s_pfmx[]
- Decimal ld_cmpqty
- Decimal ld_qty,ld_bom_qty
- Long tem_long
- String ls_wpcode
- String ls_pricestr_value
- Decimal ld_workprice_str
- deep++
- If deep > 1000 Then
- arg_msg = '递归太深'+String(deep)
- rslt = 0
- Goto ext
- End If
- Select cmpqty Into :ld_cmpqty
- From u_mtrldef
- Where mtrlid = :arg_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料清单基数失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Declare pf_cur Cursor For
- Select u_PrdPF.Sonscale,
- u_PrdPF.SonLoss,
- u_PrdPF.SonDECLosS,
- u_PrdPF.SonMtrlid,
- u_PrdPF.sonpfcode,
- u_mtrldef.mtrlcode,
- u_mtrldef.mrptype,
- u_mtrldef.mrparg
- From u_PrdPF Inner JOIN
- u_mtrldef ON u_PrdPF.SonMtrlid = u_mtrldef.mtrlid
- Where (u_mtrldef.ifselforder = 0)
- And (u_mtrldef.mtrlorigin = 0)
- And ( u_PrdPF.mtrlid = :arg_mtrlid ) And
- ( u_PrdPF.pfcode = :arg_pfcode )
- Order By u_PrdPF.printid;
-
- Open pf_cur;
- count = 1
- Fetch pf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,:ls_s_pfmx[count].sonpfcode,&
- :ls_s_pfmx[count].mtrlcode,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg;
-
- Do While sqlca.SQLCode = 0
- count++
- Fetch pf_cur Into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,&
- :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,:ls_s_pfmx[count].sonpfcode,&
- :ls_s_pfmx[count].mtrlcode,:ls_s_pfmx[count].u_mtrldef_mrptype,&
- :ls_s_pfmx[count].u_mtrldef_mrparg;
- Loop
- count = count - 1
- Close pf_cur;
- For ll_i = 1 To count
- If ls_s_pfmx[ll_i].u_mtrldef_mrptype = 0 Then
- ld_qty = Round(arg_qty * (ls_s_pfmx[ll_i].Sonscale/(1 - ls_s_pfmx[ll_i].SonLoss)+ls_s_pfmx[ll_i].SonDECLosS)/ld_cmpqty,ls_s_pfmx[ll_i].u_mtrldef_mrparg)
- ld_bom_qty = Round((ls_s_pfmx[ll_i].Sonscale/(1 - ls_s_pfmx[ll_i].SonLoss)+ls_s_pfmx[ll_i].SonDECLosS)/ld_cmpqty,ls_s_pfmx[ll_i].u_mtrldef_mrparg)
- Else
- If ls_s_pfmx[ll_i].u_mtrldef_mrparg = 0 Then
- ld_qty = Ceiling(Truncate(arg_qty * ls_s_pfmx[ll_i].Sonscale/(1 - ls_s_pfmx[ll_i].SonLoss)+ls_s_pfmx[ll_i].SonDECLosS,10)/ld_cmpqty)
- ld_bom_qty = Ceiling(Truncate(ls_s_pfmx[ll_i].Sonscale/(1 - ls_s_pfmx[ll_i].SonLoss)+ls_s_pfmx[ll_i].SonDECLosS,10)/ld_cmpqty)
- Else
- tem_long = 10^ls_s_pfmx[ll_i].u_mtrldef_mrparg
-
- ld_qty = Ceiling((Truncate(arg_qty * ls_s_pfmx[ll_i].Sonscale/(1 - ls_s_pfmx[ll_i].SonLoss)+ls_s_pfmx[ll_i].SonDECLosS,10)/ld_cmpqty) * tem_long)/tem_long
- ld_qty = Round(ld_qty , ls_s_pfmx[ll_i].u_mtrldef_mrparg)
-
- ld_bom_qty = Ceiling((Truncate(ls_s_pfmx[ll_i].Sonscale/(1 - ls_s_pfmx[ll_i].SonLoss)+ls_s_pfmx[ll_i].SonDECLosS,10)/ld_cmpqty) * tem_long)/tem_long
- ld_bom_qty = Round(ld_bom_qty , ls_s_pfmx[ll_i].u_mtrldef_mrparg)
- End If
- End If
-
- ls_wpcode = f_get_dft_wp(ls_s_pfmx[ll_i].SonMtrlid)
-
- If ls_wpcode = '' Then
- rslt = 0
- arg_msg = '查询部件:'+ls_s_pfmx[count].mtrlcode+' 默认工价表号失败'
- Goto ext
- End If
-
- cnt = 0
- Select COUNT(*)
- Into :cnt
- From (Select rpcode, SUM(ifdftpg) AS ifdftpg
- From u_sc_workprice
- Where (Mtrlid = :ls_s_pfmx[ll_i].SonMtrlid)
- And (rpcode <> '')
- And (u_sc_workprice.wpcode = :ls_wpcode)
- Group By rpcode
- Having (SUM(ifdftpg) <> 1)) v_rpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询部件:'+ls_s_pfmx[count].mtrlcode+' 替代工序默认派工属性是否设置正确失败'
- Goto ext
- End If
-
- If cnt > 0 Then
- rslt = 0
- arg_msg = '部件:'+ls_s_pfmx[count].mtrlcode+' 替代工序默认派工属性必须设置且必须唯一'
- Goto ext
- End If
-
-
- Declare cur_wpmx Cursor For
- Select u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * :ld_qty,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workqty * :ld_qty,
- u_sc_workprice.u_workprice,
- :ls_s_pfmx[ll_i].mtrlcode,
- u_sc_workprice.workprice * :ld_bom_qty,
- u_sc_workprice.pricestr,
- '['+ltrim(rtrim(u_mtrldef.mtrlcode))+']' + ltrim(rtrim(u_mtrldef.mtrlname)) + '('+ltrim(rtrim(u_mtrldef.mtrlmode))+')',
- u_sc_workprice.replacestr,
- u_sc_workprice.mtrlid,
- u_sc_workprice.rpcode,
- u_sc_workprice.auditflag_gj
- From u_sc_workprice Inner JOIN
- u_mtrldef ON u_sc_workprice.Mtrlid = u_mtrldef.mtrlid
- Where u_sc_workprice.mtrlid = :ls_s_pfmx[ll_i].SonMtrlid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And u_sc_workprice.wpcode = :ls_wpcode;
-
- Open cur_wpmx;
-
- it_mx_bomwp++
-
- Fetch cur_wpmx Into :ins_s_wp[it_mx_bomwp].procode,&
- :ins_s_wp[it_mx_bomwp].proname,&
- :ins_s_wp[it_mx_bomwp].proorder,&
- :ins_s_wp[it_mx_bomwp].workqty,&
- :ins_s_wp[it_mx_bomwp].wrkgrpid,&
- :ins_s_wp[it_mx_bomwp].lsxtype,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].status,&
- :ins_s_wp[it_mx_bomwp].ifjd,&
- :ins_s_wp[it_mx_bomwp].lastflag,&
- :ins_s_wp[it_mx_bomwp].sctype,&
- :ins_s_wp[it_mx_bomwp].equipmentid,&
- :ins_s_wp[it_mx_bomwp].partname,&
- :ins_s_wp[it_mx_bomwp].eqworkhour,&
- :ins_s_wp[it_mx_bomwp].Workhour,&
- :ins_s_wp[it_mx_bomwp].beforehour,&
- :ins_s_wp[it_mx_bomwp].afterhour,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].worktype,&
- :ins_s_wp[it_mx_bomwp].eq_empnum,&
- :ins_s_wp[it_mx_bomwp].ifgroup,&
- :ins_s_wp[it_mx_bomwp].u_workqty,&
- :ins_s_wp[it_mx_bomwp].u_workprice,&
- :ins_s_wp[it_mx_bomwp].mtrlcode,&
- :ins_s_wp[it_mx_bomwp].workprice_bom,&
- :ins_s_wp[it_mx_bomwp].pricestr,&
- :ins_s_wp[it_mx_bomwp].pro_dscrp,&
- :ins_s_wp[it_mx_bomwp].replacestr,&
- :ins_s_wp[it_mx_bomwp].sonmtrlid,&
- :ins_s_wp[it_mx_bomwp].rpcode,&
- :ins_s_wp[it_mx_bomwp].auditflag_gj;
-
- Do While sqlca.SQLCode = 0
-
- //套入公式
- If ins_s_wp[it_mx_bomwp].pricestr <> '' Then
- If uof_workprice_parm(ls_s_pfmx[ll_i].SonMtrlid,ls_wpcode,ins_s_wp[it_mx_bomwp].procode,ins_s_wp[it_mx_bomwp].workqty,ins_s_wp[it_mx_bomwp].pricestr,0,ls_pricestr_value,ld_workprice_str) <> 0 Then
- ins_s_wp[it_mx_bomwp].workprice_bom = ld_workprice_str
- ins_s_wp[it_mx_bomwp].workprice = ld_workprice_str
- ins_s_wp[it_mx_bomwp].pricestr_value = ls_pricestr_value
- End If
- End If
-
-
- it_mx_bomwp++
- Fetch cur_wpmx Into :ins_s_wp[it_mx_bomwp].procode,&
- :ins_s_wp[it_mx_bomwp].proname,&
- :ins_s_wp[it_mx_bomwp].proorder,&
- :ins_s_wp[it_mx_bomwp].workqty,&
- :ins_s_wp[it_mx_bomwp].wrkgrpid,&
- :ins_s_wp[it_mx_bomwp].lsxtype,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].status,&
- :ins_s_wp[it_mx_bomwp].ifjd,&
- :ins_s_wp[it_mx_bomwp].lastflag,&
- :ins_s_wp[it_mx_bomwp].sctype,&
- :ins_s_wp[it_mx_bomwp].equipmentid,&
- :ins_s_wp[it_mx_bomwp].partname,&
- :ins_s_wp[it_mx_bomwp].eqworkhour,&
- :ins_s_wp[it_mx_bomwp].Workhour,&
- :ins_s_wp[it_mx_bomwp].beforehour,&
- :ins_s_wp[it_mx_bomwp].afterhour,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].worktype,&
- :ins_s_wp[it_mx_bomwp].eq_empnum,&
- :ins_s_wp[it_mx_bomwp].ifgroup,&
- :ins_s_wp[it_mx_bomwp].u_workqty,&
- :ins_s_wp[it_mx_bomwp].u_workprice,&
- :ins_s_wp[it_mx_bomwp].mtrlcode,&
- :ins_s_wp[it_mx_bomwp].workprice_bom,&
- :ins_s_wp[it_mx_bomwp].pricestr,&
- :ins_s_wp[it_mx_bomwp].pro_dscrp,&
- :ins_s_wp[it_mx_bomwp].replacestr,&
- :ins_s_wp[it_mx_bomwp].sonmtrlid,&
- :ins_s_wp[it_mx_bomwp].rpcode,&
- :ins_s_wp[it_mx_bomwp].auditflag_gj;
-
- Loop
-
- Close cur_wpmx;
-
- it_mx_bomwp = it_mx_bomwp - 1
-
- If uof_bom_workprice(ls_s_pfmx[ll_i].SonMtrlid,ls_s_pfmx[ll_i].sonpfcode,ld_qty,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Next
- ext:
- Return rslt
- end function
- public function integer uof_protype_workprice (long arg_mtrlid, string arg_pfcode, string arg_wpcode, decimal arg_qty, ref string arg_msg);Int rslt
- String ls_pricestr_value
- Decimal ld_workprice_str
- rslt = 1
- Declare cur_wpmx Cursor For
- Select u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * :arg_qty,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workqty * :arg_qty,
- u_sc_workprice.u_workprice,
- u_mtrldef.mtrlcode,
- u_sc_workprice.workprice,
- u_sc_workprice.pricestr,
- '['+ltrim(rtrim(u_mtrldef.mtrlcode))+']' + ltrim(rtrim(u_mtrldef.mtrlname)) + '('+ltrim(rtrim(u_mtrldef.mtrlmode))+')',
- u_sc_workprice.replacestr,
- u_sc_workprice.mtrlid,
- u_sc_workprice.rpcode,
- u_sc_workprice.auditflag_gj
- From u_sc_workprice Inner JOIN
- u_mtrldef ON u_sc_workprice.Mtrlid = u_mtrldef.mtrlid
- Where u_sc_workprice.mtrlid = :arg_mtrlid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And u_sc_workprice.wpcode = :arg_wpcode;
-
- Open cur_wpmx;
- it_mx_bomwp++
- Fetch cur_wpmx Into :ins_s_wp[it_mx_bomwp].procode,&
- :ins_s_wp[it_mx_bomwp].proname,&
- :ins_s_wp[it_mx_bomwp].proorder,&
- :ins_s_wp[it_mx_bomwp].workqty,&
- :ins_s_wp[it_mx_bomwp].wrkgrpid,&
- :ins_s_wp[it_mx_bomwp].lsxtype,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].status,&
- :ins_s_wp[it_mx_bomwp].ifjd,&
- :ins_s_wp[it_mx_bomwp].lastflag,&
- :ins_s_wp[it_mx_bomwp].sctype,&
- :ins_s_wp[it_mx_bomwp].equipmentid,&
- :ins_s_wp[it_mx_bomwp].partname,&
- :ins_s_wp[it_mx_bomwp].eqworkhour,&
- :ins_s_wp[it_mx_bomwp].Workhour,&
- :ins_s_wp[it_mx_bomwp].beforehour,&
- :ins_s_wp[it_mx_bomwp].afterhour,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].worktype,&
- :ins_s_wp[it_mx_bomwp].eq_empnum,&
- :ins_s_wp[it_mx_bomwp].ifgroup,&
- :ins_s_wp[it_mx_bomwp].u_workqty,&
- :ins_s_wp[it_mx_bomwp].u_workprice,&
- :ins_s_wp[it_mx_bomwp].mtrlcode,&
- :ins_s_wp[it_mx_bomwp].workprice_bom,&
- :ins_s_wp[it_mx_bomwp].pricestr,&
- :ins_s_wp[it_mx_bomwp].pro_dscrp,&
- :ins_s_wp[it_mx_bomwp].replacestr,&
- :ins_s_wp[it_mx_bomwp].sonmtrlid,&
- :ins_s_wp[it_mx_bomwp].rpcode,&
- :ins_s_wp[it_mx_bomwp].auditflag_gj;
-
- Do While sqlca.SQLCode = 0
- //套入公式
- If ins_s_wp[it_mx_bomwp].pricestr <> '' Then
- If uof_workprice_parm(arg_mtrlid,arg_wpcode,ins_s_wp[it_mx_bomwp].procode,ins_s_wp[it_mx_bomwp].workqty,ins_s_wp[it_mx_bomwp].pricestr,0,ls_pricestr_value,ld_workprice_str) <> 0 Then
- ins_s_wp[it_mx_bomwp].workprice_bom = ld_workprice_str
- ins_s_wp[it_mx_bomwp].workprice = ld_workprice_str
- ins_s_wp[it_mx_bomwp].pricestr_value = ls_pricestr_value
- End If
- End If
-
-
-
- it_mx_bomwp++
- Fetch cur_wpmx Into :ins_s_wp[it_mx_bomwp].procode,&
- :ins_s_wp[it_mx_bomwp].proname,&
- :ins_s_wp[it_mx_bomwp].proorder,&
- :ins_s_wp[it_mx_bomwp].workqty,&
- :ins_s_wp[it_mx_bomwp].wrkgrpid,&
- :ins_s_wp[it_mx_bomwp].lsxtype,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].status,&
- :ins_s_wp[it_mx_bomwp].ifjd,&
- :ins_s_wp[it_mx_bomwp].lastflag,&
- :ins_s_wp[it_mx_bomwp].sctype,&
- :ins_s_wp[it_mx_bomwp].equipmentid,&
- :ins_s_wp[it_mx_bomwp].partname,&
- :ins_s_wp[it_mx_bomwp].eqworkhour,&
- :ins_s_wp[it_mx_bomwp].Workhour,&
- :ins_s_wp[it_mx_bomwp].beforehour,&
- :ins_s_wp[it_mx_bomwp].afterhour,&
- :ins_s_wp[it_mx_bomwp].workprice,&
- :ins_s_wp[it_mx_bomwp].worktype,&
- :ins_s_wp[it_mx_bomwp].eq_empnum,&
- :ins_s_wp[it_mx_bomwp].ifgroup,&
- :ins_s_wp[it_mx_bomwp].u_workqty,&
- :ins_s_wp[it_mx_bomwp].u_workprice,&
- :ins_s_wp[it_mx_bomwp].mtrlcode,&
- :ins_s_wp[it_mx_bomwp].workprice_bom,&
- :ins_s_wp[it_mx_bomwp].pricestr,&
- :ins_s_wp[it_mx_bomwp].pro_dscrp,&
- :ins_s_wp[it_mx_bomwp].replacestr,&
- :ins_s_wp[it_mx_bomwp].sonmtrlid,&
- :ins_s_wp[it_mx_bomwp].rpcode,&
- :ins_s_wp[it_mx_bomwp].auditflag_gj;
-
- Loop
- Close cur_wpmx;
- it_mx_bomwp = it_mx_bomwp - 1
- If uof_bom_workprice(arg_mtrlid,arg_pfcode,arg_qty,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- ext:
- Return rslt
- end function
- public function integer add_gydscrp (long arg_scid, long arg_orderid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_orderid, arG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET gydscrp = :arg_newdescppart
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致修改工艺说明操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK;
- GOTO ext
- END IF
- gydscrp = arg_newdescppart
- ext:
- IF rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer uof_stop_tree (long arg_scid, long arg_orderid, decimal arg_stopqty, integer arg_type, integer arg_ifaddhis, ref string arg_msg, boolean arg_ifcommit);Int rslt
- rslt = 1
- Long ll_i,ll_j,ll_k
- Long ll_porderid,ll_printid
- Decimal ld_stopqty,ld_standardrqqty,ld_rate
- Long ll_mtrlid,ll_wrkgrpid,ll_produce_wrkgrpid,ll_wrkgrpid_zl
- Int li_plantype
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_rqqty_tree
- Long ll_lp,ll_mtrlid_zl,ll_printid_tree
- String ls_status_zl,ls_woodcode_zl,ls_pcode_zl
- Decimal ld_stopqty_sum,ld_stopqty_tmp
- Int li_ifwfjgup,li_ordertype_zl
- ld_stopqty_sum = arg_stopqty
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_orderrqmtrl_tree_stop'
- ds_tree.SetTransObject(sqlca)
- datastore ds_stop_his
- ds_stop_his = Create datastore
- ds_stop_his.DataObject = 'ds_order_ml_stop_mtrl_his'
- ds_stop_his.SetTransObject(sqlca)
- If arg_type = 0 Then
- //终止
- Select mtrlid,status_mode,woodcode,pcode,porderid,wrkgrpid,ordertype
- Into :ll_mtrlid_zl,:ls_status_zl,:ls_woodcode_zl,:ls_pcode_zl,:ll_porderid,:ll_wrkgrpid_zl,:li_ordertype_zl
- From u_order_ml
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询指令单信息失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- //yyx2014-8-14主计划也是指令单
- if li_ordertype_zl <> 4 then
- ll_porderid = arg_orderid
- end if
- //end_yyx2014-8-14主计划也是指令单
-
- Delete From u_order_ml_stop_mtrl_his
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除旧终止记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- ds_tree.Retrieve(arg_scid,ll_porderid)
-
- If ds_tree.RowCount() <= 0 Then
- rslt = 1
- Goto ext
- End If
-
- For ll_i = 1 To ds_tree.RowCount()
-
- If ld_stopqty_sum <= 0 Then Exit
-
- ll_mtrlid = ds_tree.Object.mtrlid[ll_i]
- ls_status = ds_tree.Object.status[ll_i]
- ls_woodcode = ds_tree.Object.woodcode[ll_i]
- ls_pcode = ds_tree.Object.pcode[ll_i]
-
- //1.定位指令单在运算树中的位置
- If ll_mtrlid = ll_mtrlid_zl And ls_status = ls_status_zl And ls_woodcode = ls_woodcode_zl And ls_pcode = ls_pcode_zl Then
- ll_lp = ds_tree.Object.lp[ll_i]
- ll_printid_tree = ds_tree.Object.printid[ll_i]
- ld_standardrqqty = ds_tree.Object.standardrqqty[ll_i]
-
- If ld_standardrqqty = 0 Then
- ld_standardrqqty = ds_tree.Object.rqqty[ll_i]
- End If
-
- If ld_stopqty_sum > ld_standardrqqty Then
- ld_stopqty_tmp = ld_standardrqqty
- ld_stopqty_sum = ld_stopqty_sum - ld_stopqty_tmp
- Else
- ld_stopqty_tmp = ld_stopqty_sum
- ld_stopqty_sum = 0
- End If
-
- If ld_standardrqqty = 0 Then
- ld_rate = 1
- Else
- ld_rate = ld_stopqty_tmp / ld_standardrqqty
- End If
-
-
- //1.1 终止指令单在运算树中的数量
- // UPDATE u_orderrqmtrl_tree
- // SET rqqty = rqqty - :ld_stopqty_tmp,
- // truerqqty = truerqqty- :ld_stopqty_tmp,
- // scllqty = scllqty - :ld_stopqty_tmp
- // WHERE scid = :arg_scid
- // AND orderid = :ll_porderid
- // And printid = :ll_printid_tree;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '因网络或其它原因导致更新生产计划运算数据失败'+"~n"+sqlca.SQLErrText
- // GOTO ext
- // END IF
-
- //yyx2013-10-31
- Update u_orderrqmtrl_tree
- Set truerqqty = truerqqty - :ld_stopqty_tmp
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And printid = :ll_printid_tree;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划运算数据失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_orderrqmtrl
- Set truerqqty = truerqqty - :ld_stopqty_tmp
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And mtrlid = :ll_mtrlid_zl
- And produce_wrkGrpid = :ll_wrkgrpid_zl
- And status = :ls_status_zl
- And woodcode = :ls_woodcode_zl
- And pcode = :ls_pcode_zl
- And plantype = 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划用料需求失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //
-
- If arg_ifaddhis = 1 Then
- Update u_order_ml_stop_mtrl_his
- Set stopqty = stopqty + :ld_stopqty_tmp
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And porderid = :ll_porderid
- And printid = :ll_printid_tree;
- If sqlca.SQLCode = 0 Then
-
- If sqlca.SQLNRows = 0 Then
- Insert Into u_order_ml_stop_mtrl_his
- (scid,
- orderid,
- porderid,
- printid,
- stopqty)
- Values (:arg_scid,
- :arg_orderid,
- :ll_porderid,
- :ll_printid_tree,
- :ld_stopqty_tmp);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致插入终止历史失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- rslt = 0
- arg_msg = '因网络或其它原因导致更新终止历史失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- // //1.1 end
-
- //2.如果直接上级是外协,终止相应数量
- For ll_j = ll_i - 1 To 1 Step -1
- If ds_tree.Object.lp[ll_j] <= ll_lp - 2 Then Exit
-
- If ds_tree.Object.lp[ll_j] = ll_lp - 1 Then
- If ds_tree.Object.plantype[ll_j] <> 3 Then Exit
-
- ll_mtrlid = ds_tree.Object.mtrlid[ll_j]
- ll_wrkgrpid = ds_tree.Object.wrkgrpid[ll_j]
- ll_produce_wrkgrpid = ds_tree.Object.produce_wrkGrpid[ll_j]
- li_plantype = ds_tree.Object.plantype[ll_j]
- ls_status = ds_tree.Object.status[ll_j]
- ls_woodcode = ds_tree.Object.woodcode[ll_j]
- ls_pcode = ds_tree.Object.pcode[ll_j]
- ld_rqqty_tree = ds_tree.Object.u_orderrqmtrl_tree_truerqqty[ll_j]
- ll_printid = ds_tree.Object.printid[ll_j]
-
- //上级是外协,只终止净需求数(上层的自制仍需领料)
- Update u_orderrqmtrl
- Set truerqqty = truerqqty - :ld_rqqty_tree * :ld_rate
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And mtrlid = :ll_mtrlid
- And wrkgrpid = :ll_wrkgrpid
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- And plantype = :li_plantype;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划用料需求失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_orderrqmtrl_tree
- Set truerqqty = truerqqty- :ld_rqqty_tree * :ld_rate
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And printid = :ll_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划运算数据失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
-
- If arg_ifaddhis = 1 Then
- Update u_order_ml_stop_mtrl_his
- Set stopqty = stopqty + :ld_rqqty_tree * :ld_rate
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And porderid = :ll_porderid
- And printid = :ll_printid;
- If sqlca.SQLCode = 0 Then
-
- If sqlca.SQLNRows = 0 Then
- Insert Into u_order_ml_stop_mtrl_his
- (scid,
- orderid,
- porderid,
- printid,
- stopqty,
- ifwfjgup)
- Values (:arg_scid,
- :arg_orderid,
- :ll_porderid,
- :ll_printid,
- :ld_rqqty_tree * :ld_rate,
- 1);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致插入终止历史失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- rslt = 0
- arg_msg = '因网络或其它原因导致更新终止历史失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
-
-
-
- Exit
- End If
- Next
-
- //3.下级外协件的采购数量按相应数量终止
- For ll_j = ll_i + 1 To ds_tree.RowCount()
- If ds_tree.Object.lp[ll_j] <= ll_lp Then Exit
-
- If ds_tree.Object.lp[ll_j] = ll_lp + 1 And ds_tree.Object.plantype[ll_j] = 3 Then
-
- For ll_k = ll_j + 1 To ds_tree.RowCount()
-
- If ds_tree.Object.lp[ll_k] <= ll_lp + 1 Then Exit
-
- If ds_tree.Object.lp[ll_k] = ll_lp + 2 And ds_tree.Object.plantype[ll_k] = 2 Then
- ll_mtrlid = ds_tree.Object.mtrlid[ll_k]
- ll_wrkgrpid = ds_tree.Object.wrkgrpid[ll_k]
- ll_produce_wrkgrpid = ds_tree.Object.produce_wrkGrpid[ll_k]
- li_plantype = ds_tree.Object.plantype[ll_k]
- ls_status = ds_tree.Object.status[ll_k]
- ls_woodcode = ds_tree.Object.woodcode[ll_k]
- ls_pcode = ds_tree.Object.pcode[ll_k]
- ld_rqqty_tree = ds_tree.Object.rqqty[ll_k]
- ll_printid = ds_tree.Object.printid[ll_k]
-
- Update u_orderrqmtrl
- Set RqQty = RqQty - :ld_rqqty_tree * :ld_rate,
- truerqqty = truerqqty- :ld_rqqty_tree * :ld_rate,
- scllqty = scllqty - :ld_rqqty_tree * :ld_rate
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And mtrlid = :ll_mtrlid
- And wrkgrpid = :ll_wrkgrpid
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- And plantype = :li_plantype;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划用料需求失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_orderrqmtrl_tree
- Set rqqty = rqqty - :ld_rqqty_tree * :ld_rate,
- truerqqty = truerqqty - :ld_rqqty_tree * :ld_rate,
- scllqty = scllqty - :ld_rqqty_tree * :ld_rate
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And printid = :ll_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划运算数据失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
-
- If arg_ifaddhis = 1 Then
- Update u_order_ml_stop_mtrl_his
- Set stopqty = stopqty + :ld_rqqty_tree * :ld_rate
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And porderid = :ll_porderid
- And printid = :ll_printid;
- If sqlca.SQLCode = 0 Then
-
- If sqlca.SQLNRows = 0 Then
- Insert Into u_order_ml_stop_mtrl_his
- (scid,
- orderid,
- porderid,
- printid,
- stopqty,
- ifwfjgup)
- Values (:arg_scid,
- :arg_orderid,
- :ll_porderid,
- :ll_printid,
- :ld_rqqty_tree * :ld_rate,
- 2);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致插入终止历史失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- rslt = 0
- arg_msg = '因网络或其它原因导致更新终止历史失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- End If
- Next
- ll_j = ll_k - 1
- End If
- Next
-
- End If
- Next
- Else
- //取消终止
- ds_stop_his.Retrieve(arg_scid,arg_orderid)
-
- For ll_i = 1 To ds_stop_his.RowCount()
- ll_porderid = ds_stop_his.Object.porderid[ll_i]
- ll_printid = ds_stop_his.Object.printid[ll_i]
- ld_stopqty = ds_stop_his.Object.stopqty[ll_i]
- ll_mtrlid = ds_stop_his.Object.u_orderrqmtrl_tree_mtrlid[ll_i]
- ll_wrkgrpid = ds_stop_his.Object.u_orderrqmtrl_tree_wrkgrpid[ll_i]
- ll_produce_wrkgrpid = ds_stop_his.Object.u_orderrqmtrl_tree_produce_wrkgrpid[ll_i]
- li_plantype = ds_stop_his.Object.u_orderrqmtrl_tree_plantype[ll_i]
- ls_status = ds_stop_his.Object.u_orderrqmtrl_tree_status[ll_i]
- ls_woodcode = ds_stop_his.Object.u_orderrqmtrl_tree_woodcode[ll_i]
- ls_pcode = ds_stop_his.Object.u_orderrqmtrl_tree_pcode[ll_i]
- li_ifwfjgup = ds_stop_his.Object.u_order_ml_stop_mtrl_his_ifwfjgup[ll_i]
-
- Update u_orderrqmtrl
- Set truerqqty = truerqqty + :ld_stopqty,
- RqQty = RqQty + case :li_ifwfjgup when 2 then :ld_stopqty else 0 End ,
- scllqty = scllqty + case :li_ifwfjgup when 2 then :ld_stopqty else 0 End
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And mtrlid = :ll_mtrlid
- And wrkgrpid = :ll_wrkgrpid
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- And plantype = :li_plantype;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划用料需求失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_orderrqmtrl_tree
- Set truerqqty = truerqqty + :ld_stopqty,
- rqqty = rqqty + case :li_ifwfjgup when 2 then :ld_stopqty else 0 End,
- scllqty = scllqty + case :li_ifwfjgup when 2 then :ld_stopqty else 0 End
- Where scid = :arg_scid
- And orderid = :ll_porderid
- And printid = :ll_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致更新生产计划运算数据失败'+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Delete From u_order_ml_stop_mtrl_his
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And porderid = :ll_porderid
- And printid = :ll_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除终止记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- End If
- ext:
- Destroy ds_tree
- Destroy ds_stop_his
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Return rslt
- end function
- public function integer uof_mtrl_change (long arg_scid, long arg_orderid, decimal arg_rate, integer arg_type, integer arg_ifchange, integer arg_ifaddhis, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i,cnt,ll_Ordertype,ll_porderid
- Long ll_scid,ll_orderid,ll_mtrlid,ll_wrkgrpid
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_sqty,ld_dqty,ld_orderqty
- String ls_mtrlcode
- uo_order_ml_mtrl_change uo_mtrl_ch
- uo_mtrl_ch = Create uo_order_ml_mtrl_change
- s_order_ml_mtrl_change arg_s_mtrl_ch
- s_order_ml_mtrl_change_mx arg_s_mx[],arg_s_empty_mx[]
- SELECT ordertype,porderid,orderqty
- INTO :ll_Ordertype,:ll_porderid,:ld_orderqty
- FROM u_order_ml
- WHERE u_order_ml.scid = :arg_scid
- And u_order_ml.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单类型失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //yyx2014-8-14注释,主计划为指令单
- //IF ll_Ordertype <> 4 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- IF arg_ifchange = 1 THEN
- IF ll_Ordertype = 4 THEN
- SELECT count(*) INTO :cnt
- FROM u_requestbuymxmx
- WHERE u_requestbuymxmx.scid = :arg_scid
- And u_requestbuymxmx.orderid = :ll_porderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单相关主计划是否已开申购单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 2
- GOTO ext
- END IF
- ELSE
- SELECT count(*) INTO :cnt
- FROM u_requestbuymxmx
- WHERE u_requestbuymxmx.scid = :arg_scid
- And u_requestbuymxmx.orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单相关主计划是否已开申购单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 2
- GOTO ext
- END IF
- END IF
- END IF
- datastore ds_scll
- ds_scll = Create datastore
- ds_scll.DataObject = 'ds_order_stop_mtrl_change'
- ds_scll.SetTransObject(sqlca)
- ds_scll.Retrieve(arg_scid,arg_orderid,arg_type)
- FOR ll_i = 1 To ds_scll.RowCount()
- ll_scid = ds_scll.Object.u_orderrqmtrl_scll_scid[ll_i]
- ll_orderid = ds_scll.Object.u_orderrqmtrl_scll_orderid[ll_i]
- ll_mtrlid = ds_scll.Object.u_orderrqmtrl_scll_mtrlid[ll_i]
- ll_wrkgrpid = ds_scll.Object.u_orderrqmtrl_scll_wrkgrpid[ll_i]
- ls_status = ds_scll.Object.u_orderrqmtrl_scll_status[ll_i]
- ls_woodcode = ds_scll.Object.u_orderrqmtrl_scll_woodcode[ll_i]
- ls_pcode = ds_scll.Object.u_orderrqmtrl_scll_pcode[ll_i]
-
- IF arg_type = 0 THEN
- ld_sqty = ds_scll.Object.u_orderrqmtrl_scll_truerqqty[ll_i]
-
- IF arg_rate * ds_scll.Object.u_orderrqmtrl_scll_truerqqty[ll_i] > ds_scll.Object.dstrqty[ll_i] THEN
- ld_dqty = arg_rate * ds_scll.Object.u_orderrqmtrl_scll_truerqqty[ll_i]
- ELSE
- ld_dqty = ds_scll.Object.dstrqty[ll_i]
- END IF
- ELSE
- ld_sqty = ds_scll.Object.u_orderrqmtrl_scll_truerqqty[ll_i]
- ld_dqty = ds_scll.Object.u_orderrqmtrl_scll_truerqqty_ori[ll_i]
-
- END IF
-
- ls_mtrlcode = ds_scll.Object.u_mtrldef_mtrlcode[ll_i]
-
- arg_s_mtrl_ch.scid = ll_scid
- arg_s_mtrl_ch.billid = 0
- arg_s_mtrl_ch.billdate = DateTime(Today(),Time(0))
- arg_s_mtrl_ch.billemp = publ_operator
- arg_s_mtrl_ch.relcode = ''
- arg_s_mtrl_ch.dscrp = '指令单终止自动生成' //注意修改时这里时要修改uo_order_ml_mtrl_change.audit
- arg_s_mtrl_ch.orderid = ll_orderid
- arg_s_mtrl_ch.smtrlid = ll_mtrlid
- arg_s_mtrl_ch.wrkgrpid = ll_wrkgrpid
- arg_s_mtrl_ch.status = ls_status
- arg_s_mtrl_ch.woodcode = ls_woodcode
- arg_s_mtrl_ch.pcode = ls_pcode
- arg_s_mtrl_ch.dmtrlid = ll_mtrlid
-
- arg_s_mtrl_ch.sqty = ld_sqty
- arg_s_mtrl_ch.dqty = ld_dqty
-
-
- arg_s_mtrl_ch.billtype = 1
-
- arg_s_mtrl_ch.ifchange = 1
-
- //加明细
- arg_s_mx = arg_s_empty_mx
-
- IF f_addmx_mtrl_change(ll_scid,ll_orderid,ll_mtrlid,ll_wrkgrpid,ls_status,ls_woodcode,ls_pcode,ld_sqty,ld_dqty,arg_s_mx,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '需求明细第'+String(ll_i)+'行,物料:'+ls_mtrlcode+',生成生产指令单换料单失败,原因:计算单据明细失败.'+arg_msg
- GOTO ext
- END IF
-
- arg_s_mtrl_ch.arg_s_mx = arg_s_mx
-
- IF uo_mtrl_ch.Save(arg_s_mtrl_ch,publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '需求明细第'+String(ll_i)+'行,物料:'+ls_mtrlcode+',生成生产指令单换料单失败,'+arg_msg
- GOTO ext
- END IF
-
- IF uo_mtrl_ch.audit(uo_mtrl_ch.uo_billid,publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '需求明细第'+String(ll_i)+'行,物料:'+ls_mtrlcode+',审核相关生产指令单换料单失败,'+arg_msg
- GOTO ext
- END IF
- NEXT
- IF uof_stop_tree (arg_scid,arg_orderid,ld_orderqty * (1 - arg_rate),arg_type,arg_ifaddhis,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '终止相关外协上下级需求失败,'+arg_msg
- GOTO ext
- END IF
- ext:
- Destroy uo_mtrl_ch
- Destroy ds_scll
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_c_stopjj (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- datetime null_dt
- setnull(null_dt)
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF stopjj = 0 THEN
- rslt = 0
- arg_msg = '没有执行过终止计件操作,不能取消终止'
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET stopjj = 0,
- stopjjemp = '',
- stopjjdate = :null_dt,
- stopjjreason = ''
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid
- and stopjj = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致取消终止计件操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer uof_workprice_parm (long arg_mtrlid, string arg_wpcode, string arg_procode, decimal arg_proqty, string arg_parmstr, integer arg_kind, ref string arg_value_str, ref decimal arg_value_dec);//arg_kind 0-单价, 1 -数量
- //如果外部调用,必须先执行 p_getinfo 获取指令单信息
- Int rslt = 1
- Decimal ld_splitrate
- String ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode,ls_mtrlmode
- Decimal arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9
- Decimal ld_eqworkhour,ld_Workhour,ld_beforehour,ld_afterhour,ld_eq_empnum
- String ls_parmname
- Decimal ld_parmvalue,ld_hourpay_cmp,ld_workprice,ld_workqty_ori,ld_hourpay,ld_workprice_def
- Long ll_j
- String s_rtn
- String ls_ban_gydscrp,ls_ban_pfklmode
- string ls_mtrltype
- datastore ds_pricestr
- ds_pricestr = Create datastore
- ds_pricestr.DataObject = 'ds_pricestr_cmpl'
- ds_pricestr.SetTransObject(sqlca)
- datastore ds_parm
- ds_parm = Create datastore
- ds_parm.DataObject = 'ds_workprice_parm_def'
- ds_parm.SetTransObject(sqlca)
- ds_parm.Retrieve()
- Select splitrate,
- mtrlsectype,
- zxmtrlmode,
- usermtrlmode,
- mtrlmode,
- mtrltype
- Into :ld_splitrate,
- :ls_mtrlsectype,
- :ls_zxmtrlmode,
- :ls_usermtrlmode,
- :ls_mtrlmode,
- :ls_mtrltype
- From u_mtrldef
- Where mtrlid = :arg_mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- Goto ext
- End If
- Select gydscrp,pfklmode
- Into :ls_ban_gydscrp,:ls_ban_pfklmode
- From u_mtrldef_ban
- Where mtrlid = :arg_mtrlid;
- If sqlca.SQLCode <> 0 Then
- ls_ban_gydscrp = ''
- ls_ban_pfklmode = ''
- End If
- Select workprice
- Into :ld_workprice_def
- From u_sc_workprocedure
- Where code = :arg_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- Goto ext
- End If
- Select u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.arg1,
- u_sc_workprice.arg2,
- u_sc_workprice.arg3,
- u_sc_workprice.arg4,
- u_sc_workprice.arg5,
- u_sc_workprice.arg6,
- u_sc_workprice.arg7,
- u_sc_workprice.arg8,
- u_sc_workprice.arg9,
- u_sc_workprice.workprice,
- u_sc_workprice.workqty,
- isnull(u_worktype.hourpay,0) as hourpay
- Into :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ld_eq_empnum,
- :arg1,
- :arg2,
- :arg3,
- :arg4,
- :arg5,
- :arg6,
- :arg7,
- :arg8,
- :arg9,
- :ld_workprice,
- :ld_workqty_ori,
- :ld_hourpay
- From u_sc_workprice LEFT Outer JOIN
- u_worktype ON u_sc_workprice.worktype = u_worktype.worktype
- Where u_sc_workprice.mtrlid = :arg_mtrlid
- And u_sc_workprice.procode = :arg_procode
- And u_sc_workprice.wpcode = :arg_wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- Goto ext
- End If
- //替换自定义参数
- For ll_j = 1 To ds_parm.RowCount()
- ls_parmname = ds_parm.Object.parmname[ll_j]
- ld_parmvalue = ds_parm.Object.parmvalue[ll_j]
-
- ld_parmvalue = Dec(String(ld_parmvalue,'#,##0.##########'))
-
- ls_parmname = '['+ls_parmname+']'
-
- Select Top 1 Replace( :arg_parmstr,:ls_parmname,:ld_parmvalue) Into :arg_parmstr From u_user;
-
- Next
- Select Top 1 Replace( :arg_parmstr,'不包含',' not like ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'不等于','<>') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'包含',' like ') Into :arg_parmstr From u_user;
- orderqty = Dec(String(orderqty,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'指令单数量',:orderqty) Into :arg_parmstr From u_user;
- arg_proqty = Dec(String(arg_proqty,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'数量',:arg_proqty) Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'等于',' = ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'大于',' > ') Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'小于',' < ') Into :arg_parmstr From u_user;
- If arg_proqty > ld_splitrate And ld_splitrate <> 0 Then
- ld_hourpay_cmp = (ld_splitrate * (ld_Workhour + ld_eqworkhour * ld_eq_empnum) + ld_beforehour + ld_afterhour) / ld_splitrate * ld_hourpay
- Else
- ld_hourpay_cmp = (arg_proqty * (ld_Workhour + ld_eqworkhour * ld_eq_empnum) + ld_beforehour + ld_afterhour) / arg_proqty * ld_hourpay
- End If
- ld_hourpay_cmp = Dec(String(ld_hourpay_cmp,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'按时薪计算',:ld_hourpay_cmp) Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'物料类别',"'"+:ls_mtrltype+"'") Into :arg_parmstr From u_user;
- If Pos(arg_parmstr,'配置2') > 0 Then
- Select Top 1 Replace( :arg_parmstr,'配置2',"'"+:pcode+"'") Into :arg_parmstr From u_user;
- End If
- If Pos(arg_parmstr,'配置1') > 0 Then
- Select Top 1 Replace( :arg_parmstr,'配置1',"'"+:woodcode+"'") Into :arg_parmstr From u_user;
- End If
- If Pos(arg_parmstr,'配置') > 0 Then
- Select Top 1 Replace( :arg_parmstr,'配置',"'"+:status_mode+"'") Into :arg_parmstr From u_user;
- End If
- Select Top 1 Replace( :arg_parmstr,'物料开料规格',"'"+:ls_ban_pfklmode+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'指令单开料规格',"'"+:pfklmode+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'工艺说明',"'"+:gydscrp+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'物料工艺备注',"'"+:ls_ban_gydscrp+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'自定义1',"'"+:ls_mtrlsectype+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'自定义2',"'"+:ls_zxmtrlmode+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'自定义3',"'"+:ls_usermtrlmode+"'") Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'物料规格',"'"+:ls_mtrlmode+"'") Into :arg_parmstr From u_user;
- ld_workprice = Dec(String(ld_workprice,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'工价表工价',:ld_workprice) Into :arg_parmstr From u_user;
- ld_workprice_def = Dec(String(ld_workprice_def,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'工序工价',:ld_workprice_def) Into :arg_parmstr From u_user;
- Select Top 1 Replace( :arg_parmstr,'生产批号',"'"+:taskrelcode+"'") Into :arg_parmstr From u_user;
- arg1 = Dec(String(arg1,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数1',:arg1) Into :arg_parmstr From u_user;
- arg2 = Dec(String(arg2,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数2',:arg2) Into :arg_parmstr From u_user;
- arg3 = Dec(String(arg3,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数3',:arg3) Into :arg_parmstr From u_user;
- arg4 = Dec(String(arg4,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数4',:arg4) Into :arg_parmstr From u_user;
- arg5 = Dec(String(arg5,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数5',:arg5) Into :arg_parmstr From u_user;
- arg6 = Dec(String(arg6,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数6',:arg6) Into :arg_parmstr From u_user;
- arg7 = Dec(String(arg7,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数7',:arg7) Into :arg_parmstr From u_user;
- arg8 = Dec(String(arg8,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数8',:arg8) Into :arg_parmstr From u_user;
- arg9 = Dec(String(arg9,'#,##0.##########'))
- Select Top 1 Replace( :arg_parmstr,'参数9',:arg9) Into :arg_parmstr From u_user;
- arg_value_str = arg_parmstr
- ds_pricestr.DataObject = 'ds_pricestr_cmpl'
- ds_pricestr.SetTransObject(sqlca)
- ds_pricestr.Retrieve()
- ds_pricestr.Modify('cmpl.expression= "'+arg_parmstr+'"')
- s_rtn = String(ds_pricestr.Object.cmpl[1])
- If arg_kind = 0 Then
- If s_rtn = 'false' Then
- arg_value_dec = 0
- Else
- arg_value_dec = Round(Dec(s_rtn),5)
- End If
- ElseIf arg_kind = 1 Then
- If s_rtn = 'false' Then
- arg_value_dec = arg_proqty
- Else
- arg_value_dec = Round(Dec(s_rtn),5) * (arg_proqty / ld_workqty_ori)
- End If
- End If
- ext:
- Destroy ds_pricestr
- Destroy ds_parm
- Return rslt
- end function
- public function integer uof_tryfinish_packorder_buy (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt
- rslt = 1
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- Decimal ld_qty
- Int li_ifpackpro,li_ifpack,li_pordermtrl_ordertype
- Long ll_porder_mtrlid
- DateTime null_dt
- SetNull(null_dt)
- Long ll_cnt_zl,ll_cnt_zl_finish
- Int ll_pack1_finish
- SELECT u_mtrldef.ifpackpro,u_mtrldef.ordertype,u_mtrldef.mtrlid
- INTO :li_ifpackpro,:li_pordermtrl_ordertype,:ll_porder_mtrlid
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关主计划产品是否全包件产品失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_ifpackpro = 0 THEN //不是全包件产品,退出函数,否则检查主计划相关指令单是否全部完成
- rslt = 1
- GOTO ext
- END IF
- Long ll_cnt,cnt
- ll_cnt = 0
- IF li_ifpackpro = 1 THEN
- SELECT count(*) INTO :ll_cnt
- FROM u_orderrqmtrl,u_mtrldef
- WHERE u_orderrqmtrl.mtrlid = u_mtrldef.mtrlid
- AND u_orderrqmtrl.orderid = :arg_orderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND ( u_mtrldef.ifpack = 1 )
- And (u_orderrqmtrl.plantype = 0 Or u_orderrqmtrl.plantype = 2) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询包件产品主生产计划相关生产需求失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //1.先检查主生产计划自制需求,需求数是否等于用料数,不等即说明有分配库存,跳过判断完成比例
- //2.查询相应部件的完成情况,按需求量对比后得出主计划物料的完成数量
-
- IF ll_cnt > 0 THEN
- cnt = 0
-
- SELECT count(*) INTO :cnt
- FROM u_orderrqmtrl,u_mtrldef
- WHERE u_orderrqmtrl.mtrlid = u_mtrldef.mtrlid
- AND ( u_mtrldef.ifpack = 1 )
- AND u_orderrqmtrl.orderid = :arg_orderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND u_orderrqmtrl.inqty < u_orderrqmtrl.truerqqty
- And (u_orderrqmtrl.plantype = 0 Or u_orderrqmtrl.plantype = 2) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询包件产品主生产计划相关指令单是否全部完成失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- IF cnt = 0 THEN //相关自制需求全部完成,更新主生产计划已完成数及状态
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator,
- acmpqty = orderqty
- WHERE ( u_order_ml.orderid = :arg_orderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致生产计划完成状态设置操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //更新分离排产包件产品指令完成数
- IF li_pordermtrl_ordertype = 1 THEN
- UPDATE u_order_ml
- SET status = 5,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator,
- acmpqty = orderqty
- FROM u_order_ml
- WHERE (u_order_ml.scid = :arg_scid)
- AND (u_order_ml.porderid = :arg_orderid)
- And (u_order_ml.mtrlid = :ll_porder_mtrlid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新包件产品主生产计划对应【指令单分离】相关对应产品指令单状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- //如果没有全部完成,则取自制需求的最小完成率去计算主生产计划的完成数
- Decimal ld_minrate
-
-
- SELECT min(inqty / truerqqty) INTO :ld_minrate
- FROM u_orderrqmtrl,u_mtrldef
- WHERE u_orderrqmtrl.mtrlid = u_mtrldef.mtrlid
- AND u_orderrqmtrl.orderid = :arg_orderid
- AND u_orderrqmtrl.scid = :arg_scid
- AND ( u_mtrldef.ifpack = 1 )
- AND (u_orderrqmtrl.plantype = 0 OR u_orderrqmtrl.plantype = 2)
- And u_orderrqmtrl.truerqqty > 0 ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关包件产品主生产计划自制需求完成率失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- UPDATE u_order_ml
- SET status = 1,
- accomplishdate = :null_dt,
- accomplishemp = '',
- acmpqty = orderqty * :ld_minrate
- WHERE ( u_order_ml.orderid = :arg_orderid )
- And (u_order_ml.scid = :arg_scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新包件产品主生产计划状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //更新分离排产包件产品指令完成数
- IF li_pordermtrl_ordertype = 1 THEN
- UPDATE u_order_ml
- SET status = 1,
- accomplishdate = :null_dt,
- accomplishemp = '',
- acmpqty = orderqty * :ld_minrate
- WHERE (u_order_ml.scid = :arg_scid)
- AND (u_order_ml.porderid = :arg_orderid)
- And (u_order_ml.mtrlid = :ll_porder_mtrlid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新包件产品主生产计划对应【指令单分离】相关对应产品指令单状态操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- 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_reccl_cf (long arg_scid, long arg_orderid, s_order_ml_rqmtrl_scll arg_s_mtrl_scll, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i
- DELETE FROM u_OrderRqMtrl_scll
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除原领料明细失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 To UpperBound(arg_s_mtrl_scll.mtrlid)
- INSERT INTO u_OrderRqMtrl_scll
- (scid,
- orderid,
- mtrlid,
- status,
- woodcode,
- pcode,
- truerqqty,
- wrkGrpid,
- ifchanged,
- truerqqty_ori,
- stopemp,
- stopdate,
- ifchmtrlbillstop,
- stopreason,
- sclldate)
- VALUES
- (:arg_scid,
- :arg_orderid,
- :arg_s_mtrl_scll.mtrlid[ll_i],
- :arg_s_mtrl_scll.status[ll_i],
- :arg_s_mtrl_scll.woodcode[ll_i],
- :arg_s_mtrl_scll.pcode[ll_i],
- :arg_s_mtrl_scll.truerqqty[ll_i],
- :arg_s_mtrl_scll.wrkGrpid[ll_i],
- :arg_s_mtrl_scll.ifchanged[ll_i],
- :arg_s_mtrl_scll.truerqqty_ori[ll_i],
- :arg_s_mtrl_scll.stopemp[ll_i],
- :arg_s_mtrl_scll.stopdate[ll_i],
- :arg_s_mtrl_scll.ifchmtrlbillstop[ll_i],
- :arg_s_mtrl_scll.stopreason[ll_i],
- :arg_s_mtrl_scll.sclldate[ll_i]);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '建立生产计划物料领料明细失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- Return(rslt)
- end function
- public function integer uof_order_add_tree_barcode (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_row,ll_i,ll_j,ll_m,ll_n
- Long cnt
- DateTime server_dt
- Long ll_pid
- Long ll_fail = 0,ll_suc = 0
- Long ll_cnt_lp = 0
- String arg_msg_tmp = '',ls_ordercode
- Long ll_swkpid,ll_owkpid,ll_printid,ll_workgroupid
- Decimal ld_orderqty,ld_qty
- String ls_barcode
- String ls_relname,ls_partname
- Int li_if_inherit
- String ls_partname_inherit
- String ls_str
- Long ll_cnt
- Long ll_k
- Long ll_orderid_f[],ll_scid_f[],ll_f_cnt = 0,ll_l
- String ls_ordercode_f[]
- Long ll_workgroupid_arr[],ll_empty_id[]
- Decimal ld_minqty_arr[],ld_maxqty_arr[],ll_empty_qty[]
- Decimal ld_qty_total
- Long ll_workgroupid_update,ll_mxbt_wgid
- Decimal ld_baseqty
- datastore ds_tree
- ds_tree = Create datastore
- ds_tree.DataObject = 'ds_OrderMtrl_workgroup_tree'
- ds_tree.SetTransObject(sqlca)
- datastore ds_workgroupid
- ds_workgroupid = Create datastore
- ds_workgroupid.DataObject = 'ds_find_ordermtrl_workgroupid'
- ds_workgroupid.SetTransObject(sqlca)
- datastore ds_inherit
- ds_inherit = Create datastore
- ds_inherit.DataObject = 'ds_find_inherit_barcode'
- ds_inherit.SetTransObject(sqlca)
- Select Top 1 getdate() Into :server_dt From u_user ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- Goto ext
- End If
- Select count(*) Into :cnt
- From u_OrderMtrl_workgroup_tree
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产指令单是否已生成条码工组进度失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If cnt = 0 Then
- If uof_order_add_wkp_tree(arg_scid,arg_orderid,arg_msg,True) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Select count(*) Into :cnt
- From u_OrderMtrl_workgroup_tree
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产指令单是否已生成条码工组进度失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If cnt = 0 Then
- rslt = 0
- arg_msg = '生产指令单没有生成条码工组进度,不能执行生成条码操作'
- Goto ext
- End If
- Select count(*) Into :cnt
- From u_ordermtrl_workgroup_barcode
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产指令单是否已生成条码失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If cnt > 0 Then
- rslt = 0
- arg_msg = '生产指令单已生成过条码,不能重复生成'
- Goto ext
- End If
- ds_tree.Retrieve(arg_scid,arg_orderid)
- //Open(w_sys_wait_2jdt) //初始化进度条
- //w_sys_wait_2jdt.Show()
- //w_sys_wait_2jdt.wf_accepttol(ds_tree.RowCount())
- For ll_i = 1 To ds_tree.RowCount()
-
- // w_sys_wait_2jdt.wf_inc(ll_i)
-
- If ds_tree.Object.if_barcode[ll_i] <> 1 Then Continue
-
- ll_swkpid = ds_tree.Object.swkpid[ll_i]
- ll_owkpid = ds_tree.Object.owkpid[ll_i]
- ld_orderqty = ds_tree.Object.orderqty[ll_i]
- ll_printid = ds_tree.Object.printid[ll_i]
- ls_relname = ds_tree.Object.relname[ll_i]
- ls_partname = ds_tree.Object.partname[ll_i]
- li_if_inherit = ds_tree.Object.if_inherit[ll_i]
- ls_partname_inherit = ds_tree.Object.partname_inherit[ll_i]
- ll_workgroupid = ds_tree.Object.workgroupid[ll_i]
- ld_baseqty = ds_tree.Object.baseqty[ll_i]
-
- If ld_baseqty = 0 Then ld_baseqty = 1
-
- If Trim(ls_relname) = Trim(ls_partname) Then
- ls_str = Trim(ls_partname)
- Else
- ls_str = Trim(ls_relname) +'-'+ Trim(ls_partname)
- End If
-
- // w_sys_wait_2jdt.st_msg.Text = "正在生成条码:"+ls_str //进度信息
-
-
- // w_sys_wait_2jdt.wf_accepttol2(Ceiling(ld_orderqty))
-
- ds_workgroupid.Retrieve(arg_scid,arg_orderid,ll_swkpid,ll_owkpid)
-
- ll_workgroupid_arr = ll_empty_id
- ld_minqty_arr = ll_empty_qty
- ld_maxqty_arr = ll_empty_qty
- ll_mxbt_wgid = 0
-
- For ll_m = 1 To ds_workgroupid.RowCount()
- ll_mxbt_wgid++
- ll_workgroupid_arr[ll_mxbt_wgid] = ds_workgroupid.Object.workgroupid[ll_m]
-
- If ll_m = 1 Then
- ld_minqty_arr[ll_mxbt_wgid] = 1
- ld_maxqty_arr[ll_mxbt_wgid] = ds_workgroupid.Object.orderqty[ll_m]
- Else
- ld_minqty_arr[ll_mxbt_wgid] = ds_workgroupid.Object.orderqty[ll_m - 1] + 1
- ld_maxqty_arr[ll_mxbt_wgid] = ds_workgroupid.Object.orderqty[ll_m] + ds_workgroupid.Object.orderqty[ll_m - 1]
- End If
- Next
-
- ld_qty_total = 0
-
- If li_if_inherit = 1 Then
- If ls_relname <> '成品' Then
- ds_inherit.Retrieve(arg_scid,arg_orderid,ls_relname,ls_partname_inherit)
- Else
- ds_inherit.Retrieve(arg_scid,arg_orderid,ls_partname_inherit,ls_partname_inherit)
- End If
-
- If ds_inherit.RowCount() <> Ceiling(Round(ld_orderqty/ld_baseqty,10)) Then
- // Close(w_sys_wait_2jdt)
- Rollback;
- Destroy ds_tree
- Destroy ds_workgroupid
- Destroy ds_inherit
- ll_f_cnt++
- ll_scid_f[ll_f_cnt] = arg_scid
- ll_orderid_f[ll_f_cnt] = arg_orderid
- ls_ordercode_f[ll_f_cnt] = ls_ordercode
- rslt = 0
- arg_msg = '生成条码失败,继承条码数量与被继承条码数量不一致 '+ls_partname_inherit + '~r~n'
- Goto _del_tmp
- End If
-
- End If
-
- For ll_j = 1 To Ceiling(Round(ld_orderqty/ld_baseqty,10))
- If ll_j = Ceiling(Round(ld_orderqty/ld_baseqty,10)) Then
- ld_qty = ld_orderqty - (ll_j - 1)* ld_baseqty
- Else
- ld_qty = ld_baseqty
- End If
-
- ld_qty_total = ld_qty_total + ld_qty
- ll_workgroupid_update = 0
-
- If ll_mxbt_wgid = 0 Then
- ll_workgroupid_update = ll_workgroupid
- Else
- For ll_n = 1 To ll_mxbt_wgid
- If ld_qty_total >= ld_minqty_arr[ll_n] And ld_qty_total <= ld_maxqty_arr[ll_n] Then
- ll_workgroupid_update = ll_workgroupid_arr[ll_n]
- Exit
- End If
- Next
- End If
-
- If ll_workgroupid_update = 0 Then
- ll_workgroupid_update = ll_workgroupid
- End If
-
- If li_if_inherit = 1 Then
- ls_barcode = ds_inherit.Object.barcode[ll_j]
- Else
- ls_barcode = getid(0,"BARCODE1",Date(server_dt),True,sqlca)
- End If
-
- ll_pid++
-
- Insert Into u_ordermtrl_workgroup_barcode
- (scid,
- orderid,
- printid,
- pid,
- barcode,
- qty,
- swkpid,
- owkpid,
- relname,
- partname,
- if_inherit,
- partname_inherit,
- workgroupid)
- Values (:arg_scid,
- :arg_orderid,
- :ll_printid,
- :ll_pid,
- :ls_barcode,
- :ld_qty,
- :ll_swkpid,
- :ll_owkpid,
- :ls_relname,
- :ls_partname,
- :li_if_inherit,
- :ls_partname_inherit,
- :ll_workgroupid_update);
- If sqlca.SQLCode <> 0 Then
- // Close(w_sys_wait_2jdt)
- Rollback;
- Destroy ds_tree
- ll_f_cnt++
- ll_scid_f[ll_f_cnt] = arg_scid
- ll_orderid_f[ll_f_cnt] = arg_orderid
- ls_ordercode_f[ll_f_cnt] = ls_ordercode
- rslt = 0
- arg_msg = '生成条码失败_2,'+sqlca.SQLErrText + '~r~n'
- Goto _del_tmp
- End If
-
- If arg_ifcommit Then
- Commit;
- End If
- // w_sys_wait_2jdt.wf_inc2(ll_j)
- Next
-
- // w_sys_wait_2jdt.wf_inc(ll_i)
- Next
- //Close(w_sys_wait_2jdt)
- _del_tmp:
- For ll_l = 1 To ll_f_cnt
- Delete From u_ordermtrl_workgroup_barcode
- Where scid = :ll_scid_f[ll_l]
- And orderid = :ll_orderid_f[ll_l];
- If sqlca.SQLCode <> 0 Then
- Rollback;
- rslt = 0
- arg_msg = arg_msg + ls_ordercode_f[ll_l]+ ' ' +'删除临时生成条码失败,'+sqlca.SQLErrText
- Continue
- End If
-
- If arg_ifcommit Then
- Commit;
- End If
- Next
- ext:
- Return rslt
- end function
- public function integer acceptmx (string arg_relcode, datetime arg_orderdate, long arg_taskid, string arg_taskcode, long arg_cusid, long arg_mtrlid, string arg_status_mode, string arg_woodcode, string arg_pcode, decimal arg_orderqty, string arg_dscrp, string arg_assign_emp, datetime arg_requiredate, integer arg_ordertype, string arg_taskrelcode, string arg_pfcode, long arg_taskmxid, long arg_porderid, long arg_utid, long arg_wrkgrpid, string arg_gydscrp, string arg_pfklmode, long arg_pforderid, string arg_pfordercode, decimal arg_pfqty, string arg_secdscrp, string arg_thdscrp, long arg_taskscid, datetime arg_perfinishdate, long arg_storageid, long arg_tmpid, integer arg_level, string arg_typename, string arg_outtypestr, long arg_pzlorderid, integer arg_iffg, integer arg_ifauto, integer arg_if_inherit, decimal arg_addqty, string arg_wpcode, integer arg_pctype, ref string arg_msg);Integer rslt = 1,cnt = 0
- String ls_mtrlcode,ls_pordercode,ls_mtrlname
- Long ls_i
- Long ll_statustype,li_mtrlorigin_mtrl
- Int li_bantype_mtrl
- Int li_ifpban_save,li_ifupban_save
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Long ll_i
- String ls_cusname,ls_p_taskrelcode,ls_saletaskcode,ls_saletaskrelcode
- Long ll_p_cusid,ll_p_taskid,ll_p_taskmxid,ll_p_ordertype
- Int li_ordertype,li_ifpackpro,li_ifpack,li_ifselforder,li_iffp
- Int li_p_ordertype_mtrldef,li_p_ifpackpro,li_p_ifpack
- Int li_ifmrppackpf //检查下级有无非包件【是否包件清单分离】
- Long ll_pf_cnt_pack0,ll_pf_cnt_packin
- Int li_inwareflag,li_outscllflag
- Decimal ld_SaleQty,ld_AssignQty,ld_ordermx_qty
- Long ll_p_mtrlid,ll_upmtrlid
- String ls_p_status,ls_p_woodcode,ls_p_pcode,ls_p_pfcode
- Long ll_typeid
- Int li_ifbj
- Long ll_lp,ll_printid,ll_lp_tmp
- Int li_fpkind
- Boolean lb_cd = True
- Int li_ifwforder
- Decimal ld_notmrpqty = 0
- Long ll_p_taskscid
- datastore ds_find_pmtrlid
- ds_find_pmtrlid = Create datastore
- ds_find_pmtrlid.DataObject = 'ds_orderrqmtrl_tree_find_pmtrlid'
- ds_find_pmtrlid.SetTransObject(sqlca)
- IF uo_option_def_bom = -1000 THEN
- rslt = 0
- arg_msg = '选项:[013]生产计划审核时需要检查是否已定义物料清单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_use_zl = -1000 THEN
- rslt = 0
- arg_msg = '选项:[073]系统使用指令单排产,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_mtrlware = -1000 THEN
- rslt = 0
- arg_msg = '选项:[143]生产计划审核增加0库存,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_inware_mtrlcuscode = -1000 THEN
- rslt = 0
- arg_msg = '选项:[138]生产进仓单产品批号策略按指令单号,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_capacity = -1000 THEN
- rslt = 0
- arg_msg = '选项:[304]指令单保存按车间产能总量限制,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_zl_checkdate = -1000 THEN
- rslt = 0
- arg_msg = '选项:[313]指令单保存不检查交货日期,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_bujian_notmrpqty = -1000 THEN
- rslt = 0
- arg_msg = '选项:[388]补件类型主计划下属的半成品不参与其他计划的可用数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF IsNull(arg_relcode) THEN arg_relcode = ''
- IF IsNull(arg_taskid) THEN arg_taskid = 0
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_cusid) THEN arg_cusid = 0
- IF IsNull(arg_status_mode) THEN arg_status_mode = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_orderqty) THEN arg_orderqty = 0
- IF IsNull(arg_Assign_emp) THEN arg_Assign_emp = ''
- IF IsNull(arg_taskcode) THEN arg_taskcode = ''
- IF IsNull(arg_taskrelcode) THEN arg_taskrelcode = ''
- IF IsNull(arg_pfcode) THEN arg_pfcode = ''
- IF IsNull(arg_ordertype) THEN arg_ordertype = 0
- IF IsNull(arg_taskmxid) THEN arg_taskmxid = 0
- IF IsNull(arg_porderid) THEN arg_porderid = 0
- IF IsNull(arg_utid) THEN arg_utid = 0
- IF IsNull(arg_wrkgrpid) THEN arg_wrkgrpid = 0
- IF IsNull(arg_taskscid) THEN arg_taskscid = 0
- IF IsNull(arg_outtypestr) THEN arg_outtypestr = ''
- IF IsNull(arg_gydscrp) THEN arg_gydscrp = ''
- IF IsNull(arg_pfklmode) THEN arg_pfklmode = ''
- IF IsNull(arg_pforderid) THEN arg_pforderid = 0
- IF IsNull(arg_pfordercode) THEN arg_pfordercode = ''
- IF IsNull(arg_pfqty) THEN arg_pfqty = 0
- IF IsNull(arg_secdscrp) THEN arg_secdscrp = ''
- IF IsNull(arg_thdscrp) THEN arg_thdscrp = ''
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF Len(arg_dscrp) > 0 THEN arg_dscrp = ' ' + arg_dscrp
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF IsNull(arg_tmpid) THEN arg_tmpid = 0
- IF IsNull(arg_level) THEN arg_level = 2
- IF IsNull(arg_typename) THEN arg_typename = ''
- IF IsNull(arg_iffg) THEN arg_iffg = 0
- IF IsNull(arg_ifauto) THEN arg_ifauto = 0
- IF IsNull(arg_addqty) THEN arg_addqty = 0
- IF IsNull(arg_wpcode) THEN arg_wpcode = ''
- IF arg_orderqty <= 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF arg_Assign_emp = '' THEN
- arg_msg = '请输入计划负责人'
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(arg_orderdate) Or Year(Date(arg_orderdate)) < 2001 THEN
- rslt = 0
- arg_msg = "请输入合理计划日期"
- GOTO ext
- END IF
- IF uo_option_order_ml_zl_checkdate = 1 THEN
- lb_cd = False
- END IF
- IF lb_cd THEN
- IF Date(arg_orderdate) > Date(arg_requiredate) THEN
- rslt = 0
- arg_msg = "计划日期大于要求完成日期"
- GOTO ext
- END IF
- END IF
- SELECT mtrlcode,
- mtrlname,
- statusflag,
- capacity * capaparm,
- ifpack,
- ifpackpro,
- ordertype,
- ifselforder,
- iffp,
- mtrlorigin,
- bantype
- INTO :ls_mtrlcode,
- :ls_mtrlname,
- :ll_statustype,
- :ld_capacity,
- :li_ifpack,
- :li_ifpackpro,
- :li_ordertype,
- :li_ifselforder,
- :li_iffp,
- :li_mtrlorigin_mtrl,
- :li_bantype_mtrl
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料编号失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_ordertype <> 4 THEN //主生产计划
- IF li_ifpackpro = 2 Or li_ifpackpro = 4 THEN
- IF uo_option_order_mtrlware = 0 THEN
- rslt = 0
- arg_msg = '产品是个性包件产品或组合配置整排散进包件产品,选项:[143]生产计划审核增加0库存必须开启,请检查'
- GOTO ext
- END IF
-
- IF uo_option_inware_mtrlcuscode = 0 THEN
- rslt = 0
- arg_msg = '产品是个性包件产品或组合配置整排散进包件产品,选项:[138]生产进仓单产品批号策略按指令单号必须开启,请检查'
- GOTO ext
- END IF
-
- IF arg_storageid = 0 THEN
- rslt = 0
- arg_msg = '产品是个性包件产品或组合配置整排散进包件产品,仓库未选择,请检查'
- GOTO ext
- END IF
- END IF
- END IF
- IF uo_option_def_bom = 1 And ll_statustype <> 2 THEN
- IF arg_pfcode = '' THEN
- arg_msg = '物料:'+ls_mtrlcode+'请选择物料清单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT count(*) INTO :cnt
- FROM u_mtrl_pf
- WHERE mtrlid = :arg_mtrlid
- And pfcode = :arg_pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'对应物料清单失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt <> 1 THEN
- arg_msg = '物料:'+ls_mtrlcode+'不存在或重复物料清单:'+arg_pfcode
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF ll_statustype = 2 THEN
- ld_capacity = 0
- f_checkpz(arg_status_mode,s_pz[])
- FOR ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- SELECT capacity * capaparm
- INTO :ld_capacity_zj
- FROM u_mtrl_configure
- WHERE mtrlid = :arg_mtrlid
- And Name = :ls_status_zj;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询子件 "+ls_status_zj+" 折算套数参数操作失败"
- GOTO ext
- END IF
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
- NEXT
- END IF
- IF arg_ordertype = 0 And uo_option_order_bh_use_yc = 1 THEN
- SELECT taskcode,relcode
- INTO :ls_saletaskcode,:ls_saletaskrelcode
- FROM u_saletask
- WHERE scid = :arg_taskscid
- And taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'预测订单编号失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_saletaskmx
- WHERE scid = :arg_taskscid
- AND taskid = :arg_taskid
- And printid = :arg_taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'预测订单明细资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_msg = '不存在订单明细:'+ls_mtrlcode
- rslt = 0
- GOTO ext
- END IF
- ELSEIF arg_ordertype = 1 THEN
- SELECT name INTO :ls_cusname
- FROM u_cust
- Where cusid = :arg_cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT taskcode,relcode,typeid
- INTO :ls_saletaskcode,:ls_saletaskrelcode,:ll_typeid
- FROM u_saletask
- WHERE scid = :arg_taskscid
- And taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'订单编号失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_typeid > 0 THEN
- SELECT ifbj INTO :li_ifbj
- FROM u_saletype
- Where typeid = :ll_typeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'相关订单的订单分类是否补件信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ifbj = 1 THEN
- arg_wrkgrpid = ins_produce_wrkgrpid_bj
-
- IF uo_option_bujian_notmrpqty = 1 THEN
- ld_notmrpqty = arg_orderqty
- ELSE
- ld_notmrpqty = 0
- END IF
-
- END IF
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_saletaskmx
- WHERE scid = :arg_taskscid
- AND taskid = :arg_taskid
- And printid = :arg_taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+ls_mtrlcode+'订单明细资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_msg = '不存在订单明细:'+ls_mtrlcode
- rslt = 0
- GOTO ext
- END IF
-
- ll_p_cusid = arg_cusid
- ELSEIF arg_ordertype = 4 THEN
- IF arg_porderid = 0 THEN
- arg_msg = '指令单没有上级计划'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_Order_ml.ordercode,
- u_Order_ml.taskrelcode,
- u_Order_ml.cusname,
- u_Order_ml.cusid,
- u_Order_ml.saletaskcode,
- u_Order_ml.saletaskrelcode,
- u_Order_ml.taskid,
- u_Order_ml.taskscid,
- u_Order_ml.taskmxid,
- u_Order_ml.ordertype,
- u_mtrldef.ordertype,
- u_mtrldef.ifpackpro,
- u_mtrldef.ifpack,
- u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- u_Order_ml.pfcode
- INTO :ls_pordercode,
- :ls_p_taskrelcode,
- :ls_cusname,
- :ll_p_cusid,
- :ls_saletaskcode,
- :ls_saletaskrelcode,
- :ll_p_taskid,
- :ll_p_taskscid,
- :ll_p_taskmxid,
- :ll_p_ordertype,
- :li_p_ordertype_mtrldef,
- :li_p_ifpackpro,
- :li_p_ifpack,
- :ll_p_mtrlid,
- :ls_p_status,
- :ls_p_woodcode,
- :ls_p_pcode,
- :ls_p_pfcode
- FROM u_Order_ml INNER JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- WHERE u_Order_ml.orderid = :arg_porderid
- And u_Order_ml.scid = :scid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询上级计划编号失败,请检查,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_saletype.ifbj
- INTO :li_ifbj
- FROM u_SaleTask INNER JOIN
- u_saletype ON u_SaleTask.typeid = u_saletype.typeid
- WHERE u_SaleTask.scid = :ll_p_taskscid
- And u_saletask.taskid = :ll_p_taskid;
- IF sqlca.SQLCode <> 0 THEN li_ifbj = 0
-
- IF li_ifbj = 1 And uo_option_bujian_notmrpqty = 1 THEN
- ld_notmrpqty = arg_orderqty
- ELSE
- ld_notmrpqty = 0
- END IF
-
-
- IF arg_pzlorderid = 0 THEN
- IF arg_taskmxid = 0 THEN
- arg_msg = '错误的计划:'+ls_pordercode+',自制需求明细'
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_OrderRqMtrl
- WHERE scid = :scid
- AND orderid = :arg_porderid
- And mxpkid = :arg_taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询计划:'+ls_pordercode+',自制需求明细失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- SELECT top 1 lp,printid
- INTO :ll_lp,:ll_printid
- FROM u_orderrqmtrl_tree
- WHERE u_orderrqmtrl_tree.scid = :scid
- AND u_orderrqmtrl_tree.orderid = :arg_porderid
- AND u_orderrqmtrl_tree.mtrlid = :arg_mtrlid
- Order By u_orderrqmtrl_tree.printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询指令单所属上级自制物料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ll_upmtrlid = 0
-
- ds_find_pmtrlid.Retrieve(scid,arg_porderid,ll_lp,ll_printid)
-
- FOR ll_i = ds_find_pmtrlid.RowCount() To 1 Step -1
- IF ll_i <> ds_find_pmtrlid.RowCount() THEN
- IF ds_find_pmtrlid.Object.u_orderrqmtrl_tree_lp[ll_i] >= ll_lp_tmp THEN CONTINUE
- END IF
-
- IF ds_find_pmtrlid.Object.u_mtrldef_mtrlorigin[ll_i] = 0 THEN
- ll_upmtrlid = ds_find_pmtrlid.Object.u_orderrqmtrl_tree_mtrlid[ll_i]
- EXIT
- ELSE
- ll_lp_tmp = ds_find_pmtrlid.Object.u_orderrqmtrl_tree_lp[ll_i]
- END IF
- NEXT
- END IF
- IF arg_ordertype <> 4 And uo_option_order_ml_use_zl = 1 Or &
- arg_ordertype = 4 THEN
-
- IF arg_wrkgrpid = 0 THEN
- arg_msg = '计划或指令单没有生产车间'
- rslt = 0
- GOTO ext
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_sc_wkp
- Where wrkGrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询车间资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_ordertype <> 4 THEN //主生产计划
- IF li_ifbj = 1 And li_mtrlorigin_mtrl = 2 THEN
- li_inwareflag = 1
- li_outscllflag = 1
- ELSE
- IF li_ifpackpro = 1 Or li_ifpackpro = 2 Or li_ifpackpro = 5 THEN
-
- //yyx20120820加强检查进仓包件指令
- // SELECT count(*)
- // INTO :cnt
- // FROM u_PrdPF INNER JOIN
- // u_mtrldef ON u_PrdPF.SonMtrlid = u_mtrldef.mtrlid
- // WHERE u_PrdPF.mtrlid = :arg_mtrlid
- // AND u_PrdPF.pfcode = :arg_pfcode
- // and u_mtrldef.ifpack = 0;
- // IF cnt > 0 THEN
- // li_ifmrppackpf = 1
- // ELSE
- // li_ifmrppackpf = 0
- // END IF
-
- SELECT count(*),
- sum(case when u_mtrldef.ifpack = 0 then 1 else 0 END),
- sum(case when u_mtrldef.ifpack > 0 AND (u_mtrldef.mtrlorigin = 2 OR u_mtrldef.mtrlorigin = 3) then 1
- when u_mtrldef.ifpack > 0 AND u_mtrldef.mtrlorigin = 0 AND u_mtrldef.ifselforder = 3 then 1 else 0 END)
- INTO :cnt,:ll_pf_cnt_pack0,:ll_pf_cnt_packin
- FROM u_PrdPF INNER JOIN
- u_mtrldef ON u_PrdPF.SonMtrlid = u_mtrldef.mtrlid
- WHERE u_PrdPF.mtrlid = :arg_mtrlid
- And u_PrdPF.pfcode = :arg_pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料清单是否存在非包件失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_pf_cnt_pack0 > 0 THEN
- li_ifmrppackpf = 1
- ELSE
- IF cnt = ll_pf_cnt_packin THEN
- li_ifmrppackpf = 1
- ELSE
- li_ifmrppackpf = 0
- END IF
- END IF
- //
- ELSE
- li_ifmrppackpf = 0
- END IF
-
- IF li_ifpackpro = 0 And li_ordertype = 0 THEN
- li_inwareflag = 1
- li_outscllflag = 1
- ELSEIF li_ifpackpro = 0 And li_ordertype = 1 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- ElseIf (li_ifpackpro = 1 Or li_ifpackpro = 5) And li_ordertype = 0 And li_ifmrppackpf = 0 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- ElseIf (li_ifpackpro = 1 Or li_ifpackpro = 5) And li_ordertype = 0 And li_ifmrppackpf = 1 THEN
- li_inwareflag = 0
- li_outscllflag = 1
- ElseIf (li_ifpackpro = 1 Or li_ifpackpro = 5) And li_ordertype = 1 And li_ifmrppackpf = 0 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- ElseIf (li_ifpackpro = 1 Or li_ifpackpro = 5) And li_ordertype = 1 And li_ifmrppackpf = 1 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- ELSEIF li_ifpackpro = 2 And li_ordertype = 1 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- ELSEIF li_ifpackpro = 3 And li_ordertype = 0 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- ELSEIF li_ifpackpro = 4 And li_ordertype = 0 THEN
- li_inwareflag = 0
- li_outscllflag = 1
- ELSEIF li_ifpackpro = 4 And li_ordertype = 1 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- END IF
- END IF
- ELSE
- // //合并在上面代码yyx20120815
- // SELECT u_mtrldef.ordertype,
- // u_mtrldef.ifpackpro,
- // u_Order_ml.mtrlid,
- // u_Order_ml.status_mode,
- // u_Order_ml.woodcode,
- // u_Order_ml.pcode
- // INTO :li_p_ordertype_mtrldef,
- // :li_p_ifpackpro,
- // :ll_p_mtrlid,
- // :ls_p_status,
- // :ls_p_woodcode,
- // :ls_p_pcode
- // FROM u_Order_ml INNER JOIN
- // u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- // WHERE u_Order_ml.orderid = :arg_porderid
- // And u_order_ml.scid = :scid;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询上级主计划产品相关信息失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
-
- IF li_p_ifpackpro = 1 Or li_p_ifpackpro = 2 Or li_p_ifpackpro = 5 THEN
- //yyx20120820加强检查进仓包件指令
- // SELECT count(*)
- // INTO :cnt
- // FROM u_PrdPF INNER JOIN
- // u_mtrldef ON u_PrdPF.SonMtrlid = u_mtrldef.mtrlid
- // WHERE u_PrdPF.mtrlid = :ll_p_mtrlid
- // AND u_PrdPF.pfcode = :arg_pfcode
- // And u_mtrldef.ifpack = 0 ;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询物料清单是否存在非包件失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF cnt > 0 THEN
- // li_ifmrppackpf = 1
- // ELSE
- // li_ifmrppackpf = 0
- // END IF
-
- SELECT count(*),
- sum(case when u_mtrldef.ifpack = 0 then 1 else 0 END),
- sum(case when u_mtrldef.ifpack > 0 AND (u_mtrldef.mtrlorigin = 2 OR u_mtrldef.mtrlorigin = 3) then 1
- when u_mtrldef.ifpack > 0 AND u_mtrldef.mtrlorigin = 0 AND u_mtrldef.ifselforder = 3 then 1 else 0 END)
- INTO :cnt,:ll_pf_cnt_pack0,:ll_pf_cnt_packin
- FROM u_PrdPF INNER JOIN
- u_mtrldef ON u_PrdPF.SonMtrlid = u_mtrldef.mtrlid
- WHERE u_PrdPF.mtrlid = :ll_p_mtrlid
- And u_PrdPF.pfcode = :arg_pfcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料清单是否存在非包件失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_pf_cnt_pack0 > 0 THEN
- li_ifmrppackpf = 1
- ELSE
- IF cnt = ll_pf_cnt_packin THEN
- li_ifmrppackpf = 1
- ELSE
- li_ifmrppackpf = 0
- END IF
- END IF
- ELSE
- li_ifmrppackpf = 0
- END IF
-
- IF arg_pzlorderid > 0 THEN
- li_inwareflag = 1
- li_outscllflag = 0
- ELSE
- IF li_p_ifpackpro = 0 THEN
- li_inwareflag = 1
- li_outscllflag = 1
- ElseIf (li_p_ifpackpro = 1 Or li_p_ifpackpro = 5) And li_p_ordertype_mtrldef = 0 THEN
- IF li_ifmrppackpf = 0 THEN
- li_inwareflag = 1
- li_outscllflag = 1
- ELSE
- IF li_ifpack = 1 THEN
- li_inwareflag = 1
- li_outscllflag = 0
- ELSE
- li_inwareflag = 1
- li_outscllflag = 1
- END IF
- END IF
- ElseIf (li_p_ifpackpro = 1 Or li_p_ifpackpro = 5) And li_p_ordertype_mtrldef = 1 THEN
- IF li_ifpackpro = 1 THEN
- IF li_ifmrppackpf = 0 THEN
- li_inwareflag = 0
- li_outscllflag = 0
- ELSE
- li_inwareflag = 0
- li_outscllflag = 1
- END IF
- ELSEIF li_ifpack = 1 THEN
- IF li_ifmrppackpf = 0 THEN
- li_inwareflag = 1
- li_outscllflag = 1
- ELSE
- li_inwareflag = 1
- li_outscllflag = 0
- END IF
- ELSE
- li_inwareflag = 1
- li_outscllflag = 1
- END IF
- ELSEIF li_p_ifpackpro = 2 And li_p_ordertype_mtrldef = 1 THEN
- IF li_ifpackpro = 2 THEN
- li_inwareflag = 0
- li_outscllflag = 1
- ELSE
- IF li_ifpack = 2 THEN
- li_inwareflag = 1
- li_outscllflag = 0
- ELSEIF li_ifpack = 1 THEN
- IF li_ifselforder = 3 THEN
- li_inwareflag = 1
- li_outscllflag = 0
- ELSE
- li_inwareflag = 1
- li_outscllflag = 1
- END IF
- ELSE
- li_inwareflag = 1
- li_outscllflag = 1
- END IF
- END IF
- ELSEIF li_p_ifpackpro = 3 And li_p_ordertype_mtrldef = 0 THEN
- li_inwareflag = 1
- li_outscllflag = 1
- ELSEIF li_p_ifpackpro = 4 And li_p_ordertype_mtrldef = 0 THEN
- IF ll_p_mtrlid = arg_mtrlid THEN
- li_inwareflag = 1
- li_outscllflag = 0
- ELSE
- li_inwareflag = 1
- li_outscllflag = 1
- END IF
- ELSEIF li_p_ifpackpro = 4 And li_p_ordertype_mtrldef = 1 THEN
- IF ll_p_mtrlid = arg_mtrlid And ls_p_status = arg_status_mode And ls_p_woodcode = arg_woodcode And ls_p_pcode = arg_pcode THEN
- li_inwareflag = 0
- li_outscllflag = 1
- ELSE
- IF ll_p_mtrlid = arg_mtrlid THEN
- li_inwareflag = 1
- li_outscllflag = 0
- ELSE
- li_inwareflag = 1
- li_outscllflag = 1
- END IF
- END IF
- END IF
- END IF
-
- //检查指令是否分离排产计划
- IF li_inwareflag = 1 THEN
- IF ll_p_ordertype = 1 THEN
- CHOOSE CASE li_p_ifpackpro
- CASE 0,3,4
- IF li_p_ordertype_mtrldef = 1 And ll_p_mtrlid = arg_mtrlid THEN
- li_fpkind = 1
- END IF
- CASE 1,2
- IF li_ifpack > 0 THEN
- li_fpkind = 1
- END IF
- END CHOOSE
- ELSE
- IF li_p_ordertype_mtrldef = 1 And ll_p_mtrlid = arg_mtrlid THEN
- li_fpkind = -1 //不分配
- END IF
- END IF
- END IF
- END IF
- IF Not (li_mtrlorigin_mtrl = 3 Or ordertype = 3 Or li_mtrlorigin_mtrl = 2 ) THEN
- IF li_outscllflag = 1 THEN
- IF arg_wpcode = '' THEN
- arg_msg = '请选择工价表号,产品编码:'+ls_mtrlcode+',产品名称:'+ls_mtrlname+',可能没有指定默认工价表'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF uo_option_order_capacity = 1 And orderid = 0 THEN //And li_outscllflag = 1 Then
- DateTime server_dt,ldt_sdate,ldt_edate
- Decimal ld_capatotal,ld_capatotal_ot,ld_capacity_sum
- String ls_wrkgrpname
-
- SELECT Top 1 getdate() Into :server_dt From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
-
- ldt_sdate = DateTime(Date(server_dt),Time(0))
- ldt_edate = DateTime(Date(server_dt),Time('23:59:59'))
-
- SELECT capatotal,capatotal_ot,wrkgrpname
- INTO :ld_capatotal,:ld_capatotal_ot,:ls_wrkgrpname
- FROM u_sc_wkp
- Where wrkGrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询车间设定产能总量失败,车间ID:'+String(arg_wrkgrpid)
- GOTO ext
- END IF
-
- SELECT sum(capacity)
- INTO :ld_capacity_sum
- FROM u_order_ml
- WHERE orderdate >= :ldt_sdate
- AND orderdate <= :ldt_edate
- And wrkGrpid = :arg_wrkgrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询车间当天已排产能失败,车间:'+ls_wrkgrpname
- GOTO ext
- END IF
-
- IF IsNull(ld_capacity_sum) THEN ld_capacity_sum = 0
-
- IF ld_capacity_sum + ld_capacity * arg_orderqty > ld_capatotal + ld_capatotal_ot THEN
- rslt = 0
- arg_msg = '车间:'+ls_wrkgrpname+'当天已排产能:'+String(ld_capacity_sum,'#,##0.##########')+',车间设定产能总量:'+String(ld_capatotal + ld_capatotal_ot,'#,##0.##########')+',不能再排产能:'+String(ld_capacity * arg_orderqty,'#,##0.##########')
- GOTO ext
- END IF
-
- END IF
- IF arg_ordertype = 3 THEN li_inwareflag = 0
- it_mxbt++
- s_order_mx[it_mxbt].relcode = arg_relcode
- s_order_mx[it_mxbt].orderdate = arg_orderdate
- s_order_mx[it_mxbt].taskid = arg_taskid
- s_order_mx[it_mxbt].mtrlid = arg_mtrlid
- s_order_mx[it_mxbt].status_mode = arg_status_mode
- s_order_mx[it_mxbt].woodcode = arg_woodcode
- s_order_mx[it_mxbt].pcode = arg_pcode
- s_order_mx[it_mxbt].orderqty = arg_orderqty
- s_order_mx[it_mxbt].dscrp = arg_dscrp
- s_order_mx[it_mxbt].assign_emp = arg_Assign_emp
- s_order_mx[it_mxbt].requiredate = arg_requiredate
- s_order_mx[it_mxbt].ordertype = arg_ordertype
- IF arg_ordertype = 4 THEN
- s_order_mx[it_mxbt].taskcode = ls_pordercode
- ELSE
- s_order_mx[it_mxbt].taskcode = arg_taskcode
- END IF
- s_order_mx[it_mxbt].taskrelcode = arg_taskrelcode
- s_order_mx[it_mxbt].taskmxid = arg_taskmxid
- s_order_mx[it_mxbt].pfcode = arg_pfcode
- s_order_mx[it_mxbt].cusid = arg_cusid
- s_order_mx[it_mxbt].porderid = arg_porderid
- s_order_mx[it_mxbt].pordercode = ls_pordercode
- s_order_mx[it_mxbt].utid = arg_utid
- s_order_mx[it_mxbt].wrkGrpid = arg_wrkgrpid
- s_order_mx[it_mxbt].gydscrp = arg_gydscrp
- s_order_mx[it_mxbt].pfklmode = arg_pfklmode
- s_order_mx[it_mxbt].pforderid = arg_pforderid
- s_order_mx[it_mxbt].pfordercode = arg_pfordercode
- s_order_mx[it_mxbt].pfqty = arg_pfqty
- s_order_mx[it_mxbt].secdscrp = arg_secdscrp
- s_order_mx[it_mxbt].thdscrp = arg_thdscrp
- s_order_mx[it_mxbt].taskscid = arg_taskscid
- s_order_mx[it_mxbt].perfinishdate = arg_perfinishdate
- s_order_mx[it_mxbt].storageid = arg_storageid
- s_order_mx[it_mxbt].capacity = ld_capacity * arg_orderqty
- s_order_mx[it_mxbt].typename = arg_typename
- s_order_mx[it_mxbt].tmpid = arg_tmpid
- s_order_mx[it_mxbt].Level = arg_level
- s_order_mx[it_mxbt].p_taskrelcode = ls_p_taskrelcode
- s_order_mx[it_mxbt].saletaskcode = ls_saletaskcode
- s_order_mx[it_mxbt].saletaskrelcode = ls_saletaskrelcode
- s_order_mx[it_mxbt].cusname = ls_cusname
- s_order_mx[it_mxbt].p_ordertype = li_p_ordertype_mtrldef
- s_order_mx[it_mxbt].p_cusid = ll_p_cusid
- s_order_mx[it_mxbt].p_mtrlid = ll_p_mtrlid
- s_order_mx[it_mxbt].outtypestr = arg_outtypestr
- s_order_mx[it_mxbt].pzlorderid = arg_pzlorderid
- s_order_mx[it_mxbt].inwareflag = li_inwareflag
- s_order_mx[it_mxbt].outscllflag = li_outscllflag
- s_order_mx[it_mxbt].iffg = arg_iffg
- s_order_mx[it_mxbt].ifauto = arg_ifauto
- s_order_mx[it_mxbt].upmtrlid = ll_upmtrlid
- s_order_mx[it_mxbt].iffp = li_iffp
- s_order_mx[it_mxbt].fpkind = li_fpkind
- s_order_mx[it_mxbt].if_inherit = arg_if_inherit
- s_order_mx[it_mxbt].addqty = arg_addqty
- IF li_mtrlorigin_mtrl = 3 THEN
- s_order_mx[it_mxbt].ifwforder = 1
- ELSE
- s_order_mx[it_mxbt].ifwforder = 0
- END IF
- s_order_mx[it_mxbt].wpcode = arg_wpcode
- s_order_mx[it_mxbt].pctype = arg_pctype
- s_order_mx[it_mxbt].notmrpqty = ld_notmrpqty
- //yyx2014-7-22
- IF li_inwareflag = 0 THEN
- li_ifpban_save = 0
- li_ifupban_save = 0
- ELSE
- IF arg_ordertype = 4 THEN
- IF li_p_ifpack = 1 THEN //主计划为包件
- IF li_bantype_mtrl = 0 THEN
- li_ifpban_save = 0
- li_ifupban_save = 0
- ELSEIF li_bantype_mtrl = 1 THEN
- li_ifpban_save = 1
-
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_prdpf
- WHERE u_prdpf.mtrlid = :ll_p_mtrlid
- AND u_prdpf.pfcode = :ls_p_pfcode
- And u_PrdPF.SonMtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
-
- IF cnt = 0 THEN
- li_ifupban_save = 0
- ELSE
- li_ifupban_save = 1
- END IF
- ELSEIF li_bantype_mtrl = 2 THEN
- li_ifpban_save = 0
- li_ifupban_save = 1
- END IF
- END IF
-
- IF li_p_ifpackpro = 1 THEN //主计划为包件产品
- IF li_bantype_mtrl = 0 THEN
- li_ifpban_save = 0
- li_ifupban_save = 0
- ELSEIF li_bantype_mtrl = 1 THEN
- li_ifpban_save = 1
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_prdpf,u_prdpf u_prdpf_p,u_mtrldef
- WHERE u_prdpf_p.mtrlid = :ll_p_mtrlid
- AND u_prdpf_p.pfcode = :ls_p_pfcode
- and u_prdpf_p.sonmtrlid = u_mtrldef.mtrlid
- and u_mtrldef.ifpack = 1
- and u_prdpf_p.sonmtrlid = u_prdpf.mtrlid
- and u_prdpf_p.sonpfcode = u_prdpf.pfcode
- And u_prdpf.SonMtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
- IF cnt = 0 THEN
- li_ifupban_save = 0
- ELSE
- li_ifupban_save = 1
- END IF
- ELSEIF li_bantype_mtrl = 2 THEN
- li_ifpban_save = 0
- li_ifupban_save = 1
- END IF
- END IF
-
- IF li_p_ifpack = 0 And li_p_ifpackpro <> 1 THEN //主计划非包件产品非包件
- IF li_bantype_mtrl = 0 THEN
- li_ifpban_save = 0
- li_ifupban_save = 0
- ELSEIF li_bantype_mtrl = 1 THEN
- li_ifpban_save = 1
-
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_prdpf
- WHERE u_prdpf.mtrlid = :ll_p_mtrlid
- AND u_prdpf.pfcode = :ls_p_pfcode
- And u_PrdPF.SonMtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
-
- IF cnt = 0 THEN
- li_ifupban_save = 0
- ELSE
- li_ifupban_save = 1
- END IF
- ELSEIF li_bantype_mtrl = 2 THEN
- li_ifpban_save = 0
- li_ifupban_save = 1
- END IF
- END IF
- ELSE
- IF li_bantype_mtrl = 0 THEN
- li_ifpban_save = 0
- li_ifupban_save = 0
- ELSEIF li_bantype_mtrl = 1 THEN
- li_ifpban_save = 1
- li_ifupban_save = 1
- ELSEIF li_bantype_mtrl = 2 THEN
- li_ifpban_save = 0
- li_ifupban_save = 1
- END IF
- END IF
- END IF
- s_order_mx[it_mxbt].ifpban = li_ifpban_save
- s_order_mx[it_mxbt].ifupban = li_ifupban_save
- ext:
- Destroy ds_find_pmtrlid
- Return(rslt)
- end function
- public function integer tmp_order_add_pro (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);//YS危险功能,勿删 2014-03-19
- Int rslt = 1
- Long cnt
- String ls_partname
- Long li_ordertype_mtrldef
- Long ll_statusflag,li_ifpackpro
- Decimal lde_price
- s_mtrlcfg_expr s_pz[],s_empty[]
- Long ll_i,ll_j
- String ls_status_zj
- Decimal ld_qty_zj
- String ls_utcode[]
- Long cnt_ut = 0
- Decimal ld_workprice,ld_workqty,ld_workprice_sum
- String ls_procode,ls_proname
- Long ll_proorder,ll_wrkgrpid,ll_lsxtype,ll_ifjd,ll_lastflag
- Int li_sctype
- Long ll_equipmentid
- Decimal ld_eqworkhour,ld_Workhour,ld_beforehour,ld_afterhour,ld_eq_empnum
- String ls_worktype
- Int li_if_hourpay
- Decimal ld_eoq,ld_splitrate
- Decimal ld_hourpay
- String ls_mtrlsectype,ls_usermtrlmode,ls_zxmtrlmode,ls_mtrlmode
- Int li_ifgroup
- Decimal ld_u_workqty,ld_u_workprice,ld_u_workprice_sum
- Int li_protype
- Long ll_mtrlid
- String ls_pricestr,s_rtn
- Decimal ld_workprice_str,ld_workqty_str,ld_workqty_ori
- Decimal ld_proqty,ld_hourpay_cmp
- String ls_pricestr_ori,ls_pricestr_value
- String ls_parmname
- Decimal ld_parmvalue
- String ls_workqtystr_ori,ls_workqtystr_value,ls_workqtystr
- Decimal ld_u_workqty_str,ld_u_workprice_str
- String ls_u_workqtystr,ls_u_workqtystr_value,ls_u_pricestr,ls_u_pricestr_value
- String ls_u_workqtystr_ori,ls_u_pricestr_ori
- datastore ds_orderrqwp
- ds_orderrqwp = Create datastore
- ds_orderrqwp.DataObject = 'ds_orderrqwp_workprice'
- ds_orderrqwp.SetTransObject(sqlca)
- datastore ds_pricestr
- ds_pricestr = Create datastore
- ds_pricestr.DataObject = 'ds_pricestr_cmpl'
- ds_pricestr.SetTransObject(sqlca)
- datastore ds_parm
- ds_parm = Create datastore
- ds_parm.DataObject = 'ds_workprice_parm_def'
- ds_parm.SetTransObject(sqlca)
- ds_parm.Retrieve()
- If uo_option_def_workprice = -1000 Then
- rslt = 0
- arg_msg = '选项:[012]生产计划审核时需要检查是否已定义工价表,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_orderrqwp_union = -1000 Then
- rslt = 0
- arg_msg = '选项:[148]生产计划工序明细按工价表配置及组号合并,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If arg_orderid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If ordertype = 3 Or ifwforder = 1 Then
- rslt = 1
- Goto ext
- End If
- Select ordertype,
- statusflag,
- ifpackpro,
- if_hourpay,
- eoq,
- splitrate,
- mtrlsectype,
- zxmtrlmode,
- usermtrlmode,
- mtrlmode,
- protype
- Into :li_ordertype_mtrldef,
- :ll_statusflag,
- :li_ifpackpro,
- :li_if_hourpay,
- :ld_eoq,
- :ld_splitrate,
- :ls_mtrlsectype,
- :ls_zxmtrlmode,
- :ls_usermtrlmode,
- :ls_mtrlmode,
- :li_protype
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询物料计划属性失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If (ordertype <> 4 And li_ordertype_mtrldef = 1) Then
- rslt = 1
- Goto ext
- End If
- If status <> 1 And status <> 4 And status <> 7 And status <> 5 And status <> 6 Then
- rslt = 0
- arg_msg = "计划只有在(已审核,完成)状态才可以执行重新生成工序,请核对"
- Goto ext
- End If
- //IF uo_option_def_workprice = 0 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- If li_protype = 0 Then
-
- If li_ifpackpro = 0 Then
-
- If ll_statusflag <> 2 Then
-
- If uo_option_def_workprice = 1 Or uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品工价表失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '产品对应车间的工价表未建立,请先建立工价表'
- rslt = 0
- Goto ext
- End If
- End If
-
- If uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And u_sc_workprice.auditflag = 0
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品工价表是否有未审核失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '产品对应车间的工价表存在未审核工价,请检查'
- rslt = 0
- Goto ext
- End If
- End If
- Else
- // f_checkpz(status_mode,s_pz[])
- f_checkpz_general(mtrlid,status_mode,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- If uo_option_def_workprice = 1 Or uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And (u_sc_workprice.status = :ls_status_zj Or u_sc_workprice.status = '')
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品子件:'+ls_status_zj+'工价表失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '产品对应车间的子件:'+ls_status_zj+'工价表未建立,请先建立工价表'
- rslt = 0
- Goto ext
- End If
- End If
-
- If uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And (u_sc_workprice.status = :ls_status_zj Or u_sc_workprice.status = '')
- And u_sc_workprice.auditflag = 0
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品工价表子件:'+ls_status_zj+'是否有未审核失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '产品对应车间的工价表子件:'+ls_status_zj+'存在未审核工价,请检查'
- rslt = 0
- Goto ext
- End If
- End If
-
- Next
- End If
- End If
-
- // cnt = 0
- // Select count(*) Into :cnt
- // From u_orderrqwp
- // Where (finishqty > 0 Or taskqty > 0 )
- // And orderid = :arg_orderid
- // And scid = :arg_scid;
- // If sqlca.SQLCode <> 0 Then
- // arg_msg = '查询计划工序明细是否有完成数量失败,'+sqlca.SQLErrText
- // rslt = 0
- // Goto ext
- // End If
- //
- // If cnt > 0 Then
- // arg_msg = '计划工序明细已有完成数量或已派工数,不能生成计划工序明细'
- // rslt = 0
- // Goto ext
- // End If
-
- Select count(*) Into :cnt
- From v_order_procode
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询计划工序明细是否已开计件单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '计划工序明细已开计件单,不能生成计划工序明细'
- rslt = 0
- Goto ext
- End If
-
- // Select count(*) Into :cnt
- // From u_sc_task
- // Where scid = :arg_scid
- // And orderid = :arg_orderid;
- // If sqlca.SQLCode <> 0 Then
- // arg_msg = '查询计划工序明细是否已开工序派工单失败,'+sqlca.SQLErrText
- // rslt = 0
- // Goto ext
- // End If
- //
- // If cnt > 0 Then
- // arg_msg = '计划工序明细开工序派工单,不能生成计划工序明细'
- // rslt = 0
- // Goto ext
- // End If
-
- Delete From u_orderrqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除计划的工序明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- s_pz = s_empty
-
- If ll_statusflag <> 2 Then //非组合配置产品
- cnt = 0
- Select count(*) Into :cnt
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And ltrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询产品价格表是否有组号失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If uo_option_orderrqwp_union = 0 Or uo_option_orderrqwp_union = 1 Or cnt = 0 Then
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workqty,
- u_workprice)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workqty * u_order_ml.orderqty,
- u_sc_workprice.u_workprice
- From u_sc_workprice,u_order_ml
- Where u_sc_workprice.mtrlid = u_order_ml.mtrlid
- And u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- cnt_ut = 1
- Declare cur_ut2 Cursor For
- Select distinct utcode
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And lTrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.wpcode = :wpcode;
-
- Open cur_ut2;
- Fetch cur_ut2 Into :ls_utcode[cnt_ut];
- Do While sqlca.SQLCode = 0
- cnt_ut++
- Fetch cur_ut2 Into :ls_utcode[cnt_ut];
- Loop
- Close cur_ut2;
-
- cnt_ut = cnt_ut - 1
-
- For ll_i = 1 To cnt_ut
- ld_workprice = 0
- ld_workqty = 0
-
- Select sum(workprice),sum(workqty),sum(u_workprice),sum(u_workqty)
- Into :ld_workprice,:ld_workqty,:ld_u_workprice,:ld_u_workqty
- From u_sc_workprice
- Where lTrim(rtrim(utcode)) = :ls_utcode[ll_i]
- And mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询组号:'+ls_utcode[ll_i]+' 合计工价,数量失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- Select top 1 u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup
- Into :ls_procode,
- :ls_proname,
- :ll_proorder,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And utcode = :ls_utcode[ll_i]
- And u_sc_workprice.wpcode = :wpcode
- Order By lastflag Desc,u_sc_workprice.proorder Desc;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询工价表组号:'+ls_utcode[ll_i]+'末工序相关信息失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- ls_proname = '工序:(组:'+Trim(ls_utcode[ll_i])+')'
-
- Insert Into u_orderrqwp
- (scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty)
- Values (:arg_scid,
- :arg_orderid,
- :mtrlid,
- :ls_procode,
- :ls_proname,
- :ll_proorder,
- :orderqty,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ld_workprice,
- :status_mode,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ld_workprice_sum,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup,
- :ld_u_workprice,
- :ld_u_workqty);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- //加空组号工序
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty
- From u_sc_workprice,u_order_ml
- Where u_sc_workprice.mtrlid = u_order_ml.mtrlid
- And u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.utcode = ''
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- cnt = 0
- Select count(*) Into :cnt
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And ltrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询产品价格表是否有组号失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If uo_option_orderrqwp_union = 0 Or cnt = 0 Then
- // f_checkpz(status_mode,s_pz[])
- f_checkpz_general(mtrlid,status_mode,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- ld_qty_zj = Dec(s_pz[ll_i].qty)
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj
- From u_sc_workprice,u_order_ml
- Where u_sc_workprice.mtrlid = u_order_ml.mtrlid
- And u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = :ls_status_zj)
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- //加空子件工序(公共)
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj
- From u_sc_workprice,u_order_ml
- Where u_sc_workprice.mtrlid = u_order_ml.mtrlid
- And u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = '')
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序[空子件]失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- // f_checkpz(status_mode,s_pz[])
- cnt_ut = 1
- f_checkpz_general(mtrlid,status_mode,s_pz[])
- Declare cur_ut Cursor For
- Select distinct utcode
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And lTrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.wpcode = :wpcode;
-
- Open cur_ut;
- Fetch cur_ut Into :ls_utcode[cnt_ut];
- Do While sqlca.SQLCode = 0
- cnt_ut++
- Fetch cur_ut Into :ls_utcode[cnt_ut];
- Loop
- Close cur_ut;
-
- cnt_ut = cnt_ut - 1
-
- For ll_i = 1 To cnt_ut
- ld_workprice_sum = 0
- For ll_j = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_j].cfgname
- ld_qty_zj = Dec(s_pz[ll_j].qty)
-
- ld_workprice = 0
- ld_workqty = 0
- ld_u_workprice = 0
- ld_u_workqty = 0
-
- Select workprice,
- workqty,
- u_workprice,
- u_workqty,pricestr,
- workqtystr,
- u_pricestr,
- u_workqtystr,
- procode
- Into :ld_workprice,
- :ld_workqty,
- :ld_u_workprice,
- :ld_u_workqty,
- :ls_pricestr,
- :ls_workqtystr,
- :ls_u_pricestr,
- :ls_u_workqtystr,
- :ls_procode
- From u_sc_workprice
- Where lTrim(rtrim(utcode)) = :ls_utcode[ll_i]
- And lTrim(rtrim(status)) = :ls_status_zj
- And mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询组号:'+ls_utcode[ll_i]+' 配置:'+ls_status_zj+' 工价失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- If Trim(ls_workqtystr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_workqtystr,1,ls_workqtystr_value,ld_workqty_str) = 1 Then
- ld_workqty = ld_workqty_str
- End If
- End If
-
- If Trim(ls_pricestr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_pricestr,0,ls_pricestr_value,ld_workprice_str) = 1 Then
- ld_workprice = ld_workprice_str
- End If
- End If
-
- If Trim(ls_u_workqtystr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_u_workqtystr,1,ls_u_workqtystr_value,ld_u_workqty_str) = 1 Then
- ld_u_workqty = ld_u_workqty_str
- End If
- End If
-
- If Trim(ls_u_pricestr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_u_pricestr,0,ls_u_pricestr_value,ld_u_workprice_str) = 1 Then
- ld_u_workprice = ld_u_workprice_str
- End If
- End If
-
- ld_workprice_sum = ld_workprice_sum + ld_workprice * ld_workqty * ld_qty_zj
- ld_u_workprice_sum = ld_u_workprice_sum + ld_u_workprice * ld_u_workqty * ld_qty_zj
- Next
-
- Select top 1 u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup
- Into :ls_procode,
- :ls_proname,
- :ll_proorder,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And utcode = :ls_utcode[ll_i]
- And u_sc_workprice.wpcode = :wpcode
- Order By lastflag Desc;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询工价表组号:'+ls_utcode[ll_i]+'相关信息失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- Insert Into u_orderrqwp
- (scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty)
- Values (:arg_scid,
- :arg_orderid,
- :mtrlid,
- :ls_procode,
- :ls_proname,
- :ll_proorder,
- :orderqty,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ld_workprice_sum,
- :status_mode,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ld_workprice_sum,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup,
- :ld_u_workprice_sum,
- :orderqty);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- //加空组号工序
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- ld_qty_zj = Dec(s_pz[ll_i].qty)
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- u_workprice,
- u_workqty)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj
- From u_sc_workprice,u_order_ml
- Where u_sc_workprice.mtrlid = u_order_ml.mtrlid
- And u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = :ls_status_zj)
- And u_sc_workprice.utcode = ''
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- //加空子件工序
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- u_workprice,
- u_workqty)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj
- From u_sc_workprice,u_order_ml
- Where u_sc_workprice.mtrlid = u_order_ml.mtrlid
- And u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = '')
- And u_sc_workprice.utcode = ''
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序[空子件]失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
-
- Update U_OrderRqwp
- Set U_OrderRqwp.workPrice = u_sc_workprice.workPrice,
- U_OrderRqwp.ori_workPrice = u_sc_workprice.workPrice
- From U_OrderRqwp Inner JOIN
- u_Order_ml ON U_OrderRqwp.scid = u_Order_ml.scid And
- U_OrderRqwp.orderid = u_Order_ml.OrderID Inner JOIN
- u_sc_workprice ON u_Order_ml.mtrlid = u_sc_workprice.Mtrlid And
- u_Order_ml.status_mode = u_sc_workprice.status And
- U_OrderRqwp.Proname = u_sc_workprice.Proname And
- u_Order_ml.wpcode = u_sc_workprice.wpcode
- Where U_OrderRqwp.scid = :arg_scid
- And u_orderrqwp.orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- End If
-
- //如果按组号合并,则不再执行公式
- If uo_option_orderrqwp_union = 0 Or uo_option_orderrqwp_union = 1 And cnt_ut = 0 Then
- ds_orderrqwp.Retrieve(arg_scid,arg_orderid,wpcode)
-
-
- For ll_i = 1 To ds_orderrqwp.RowCount()
- ls_pricestr = ds_orderrqwp.Object.u_sc_workprice_pricestr[ll_i]
- ll_mtrlid = ds_orderrqwp.Object.u_orderrqwp_mtrlid[ll_i]
- ls_procode = ds_orderrqwp.Object.u_orderrqwp_procode[ll_i]
- ls_worktype = ds_orderrqwp.Object.u_orderrqwp_worktype[ll_i]
- ld_hourpay = ds_orderrqwp.Object.hourpay[ll_i]
- ld_proqty = ds_orderrqwp.Object.u_orderrqwp_proqty[ll_i]
- ld_Workhour = ds_orderrqwp.Object.u_orderrqwp_workhour[ll_i]
- ld_beforehour = ds_orderrqwp.Object.u_orderrqwp_beforehour[ll_i]
- ld_afterhour = ds_orderrqwp.Object.u_orderrqwp_afterhour[ll_i]
- ld_eq_empnum = ds_orderrqwp.Object.u_orderrqwp_eq_empnum[ll_i]
- ld_eqworkhour = ds_orderrqwp.Object.u_orderrqwp_eqworkhour[ll_i]
- ls_workqtystr = ds_orderrqwp.Object.u_sc_workprice_workqtystr[ll_i]
- ld_workqty_ori = ds_orderrqwp.Object.u_sc_workprice_workqty[ll_i]
- ld_workprice_str = ds_orderrqwp.Object.u_orderrqwp_workprice[ll_i]
-
- ld_u_workqty_str = ds_orderrqwp.Object.u_orderrqwp_u_workqty[ll_i]
- ld_u_workprice_str = ds_orderrqwp.Object.u_orderrqwp_u_workprice[ll_i]
-
- ls_u_workqtystr = ds_orderrqwp.Object.u_sc_workprice_u_workqtystr[ll_i]
- ls_u_pricestr = ds_orderrqwp.Object.u_sc_workprice_u_pricestr[ll_i]
-
- ld_workqty_str = ld_proqty
-
- If ld_workqty_ori = 0 Then ld_workqty_ori = 1
-
- ls_pricestr_ori = ''
- ls_pricestr_value = ''
- ls_workqtystr_ori = ''
- ls_workqtystr_value = ''
-
- //1.数量公式
- If Trim(ls_workqtystr) <> '' Then
- ls_workqtystr_ori = ls_workqtystr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_workqtystr,1,ls_workqtystr_value,ld_workqty_str)
- ld_proqty = ld_workqty_str
-
- End If
-
-
- //2.单价公式
- If Trim(ls_pricestr) <> '' Then
- ls_pricestr_ori = ls_pricestr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_pricestr,0,ls_pricestr_value,ld_workprice_str)
- Else
- If li_if_hourpay = 2 Then
- If ld_proqty > ld_splitrate And ld_splitrate <> 0 Then
- ld_workprice_str = (ld_splitrate * (ld_Workhour + ld_eqworkhour * ld_eq_empnum) + ld_beforehour + ld_afterhour) / ld_splitrate * ld_hourpay
- Else
- ld_workprice_str = (ld_proqty * (ld_Workhour + ld_eqworkhour * ld_eq_empnum) + ld_beforehour + ld_afterhour) / ld_proqty * ld_hourpay
- End If
- Else
- Goto _u_workqty
- End If
- End If
-
- //3.折算数量
- _u_workqty:
- If Trim(ls_u_workqtystr) <> '' Then
- ls_u_workqtystr_ori = ls_u_workqtystr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_u_workqtystr,1,ls_u_workqtystr_value,ld_u_workqty_str)
-
- End If
-
-
- //4.折算单价
- If Trim(ls_u_pricestr) <> '' Then
- ls_u_pricestr_ori = ls_u_pricestr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_u_pricestr,0,ls_u_pricestr_value,ld_u_workprice_str)
-
- End If
-
-
- Update u_orderrqwp
- Set workprice = :ld_workprice_str,
- ori_workprice = :ld_workprice_str,
- pricestr = :ls_pricestr_ori,
- pricestr_value = :ls_pricestr_value,
- proqty = :ld_workqty_str,
- workqtystr = :ls_workqtystr_ori,
- workqtystr_value = :ls_workqtystr_value,
- u_workqty = :ld_u_workqty_str,
- u_workqtystr = :ls_u_workqtystr_ori,
- u_workqtystr_value = :ls_u_workqtystr_value,
- u_workprice = :ld_u_workprice_str,
- u_pricestr = :ls_u_pricestr_ori,
- u_pricestr_value = :ls_u_pricestr_value
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :ll_mtrlid
- And procode = :ls_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '按单价公式更新工序单价失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Next
- End If
- Else
- it_mx_bomwp = 0
- deep = 0
- If uof_protype_workprice(mtrlid,pfcode,wpcode,orderqty,arg_msg) = 0 Then
- rslt = 0
- arg_msg = '计算下级虚拟部件工价表失败,'+arg_msg
- Goto ext
- End If
-
- Delete From u_orderrqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除计划的工序明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
-
- If li_protype = 1 Then
- For ll_i = 1 To it_mx_bomwp
-
- Update u_orderrqwp
- Set proqty = proqty + :ins_s_wp[ll_i].workqty,
- u_workqty = u_workqty + :ins_s_wp[ll_i].u_workqty,
- pro_dscrp = case when len(pro_dscrp + ',' + :ins_s_wp[ll_i].pro_dscrp) < 255 then pro_dscrp + ',' + :ins_s_wp[ll_i].pro_dscrp else pro_dscrp End
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And procode = :ins_s_wp[ll_i].mtrlcode + '_' + :ins_s_wp[ll_i].procode;
- If sqlca.SQLCode = 0 Then
- If sqlca.SQLNRows = 0 Then
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workqty,
- u_workprice,
- pricestr,
- pricestr_value,
- procode_ori,
- pro_dscrp,
- sonmtrlid)
- Values (:arg_scid,
- :arg_orderid,
- :mtrlid,
- :ins_s_wp[ll_i].mtrlcode + '_' + :ins_s_wp[ll_i].procode,
- :ins_s_wp[ll_i].proname,
- :ins_s_wp[ll_i].proorder,
- :ins_s_wp[ll_i].workqty,
- :ins_s_wp[ll_i].wrkgrpid,
- :ins_s_wp[ll_i].lsxtype,
- :ins_s_wp[ll_i].workprice,
- :ins_s_wp[ll_i].status,
- :ins_s_wp[ll_i].ifjd,
- :ins_s_wp[ll_i].lastflag,
- :ins_s_wp[ll_i].sctype,
- :ins_s_wp[ll_i].equipmentid,
- :ins_s_wp[ll_i].partname,
- :ins_s_wp[ll_i].eqworkhour,
- :ins_s_wp[ll_i].Workhour,
- :ins_s_wp[ll_i].beforehour,
- :ins_s_wp[ll_i].afterhour,
- :ins_s_wp[ll_i].workprice,
- :ins_s_wp[ll_i].worktype,
- :ins_s_wp[ll_i].eq_empnum,
- :ins_s_wp[ll_i].ifgroup,
- :ins_s_wp[ll_i].u_workqty,
- :ins_s_wp[ll_i].u_workprice,
- :ins_s_wp[ll_i].pricestr,
- :ins_s_wp[ll_i].pricestr_value,
- :ins_s_wp[ll_i].procode,
- :ins_s_wp[ll_i].pro_dscrp,
- :ins_s_wp[ll_i].sonmtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Next
-
- // ElseIf li_protype = 2 Then
- //
- // s_workpricetable s_wp_union[]
- // Long ll_wp_union
- //
- // For ll_i = 1 To it_mx_bomwp
- // For ll_j = 1 To ll_wp_union
- // If ins_s_wp[ll_i].procode = s_wp_union[ll_j].procode Then
- // s_wp_union[ll_j].workprice_bom = s_wp_union[ll_j].workprice_bom + ins_s_wp[ll_i].workprice_bom
- //
- // If lena(s_wp_union[ll_j].pro_dscrp + ',' + ins_s_wp[ll_i].pro_dscrp) > 255 Then
- // s_wp_union[ll_j].pro_dscrp = leftA(s_wp_union[ll_j].pro_dscrp + ',' + ins_s_wp[ll_i].pro_dscrp,255)
- // Else
- // s_wp_union[ll_j].pro_dscrp = s_wp_union[ll_j].pro_dscrp + ',' + ins_s_wp[ll_i].pro_dscrp
- // End If
- // Goto _next_wp
- // End If
- // Next
- //
- // ll_wp_union++
- //
- // s_wp_union[ll_wp_union].procode = ins_s_wp[ll_i].procode
- // s_wp_union[ll_wp_union].proname = ins_s_wp[ll_i].proname
- // s_wp_union[ll_wp_union].proorder = ins_s_wp[ll_i].proorder
- // s_wp_union[ll_wp_union].workqty = ins_s_wp[ll_i].workqty
- // s_wp_union[ll_wp_union].wrkgrpid = ins_s_wp[ll_i].wrkgrpid
- // s_wp_union[ll_wp_union].lsxtype = ins_s_wp[ll_i].lsxtype
- // s_wp_union[ll_wp_union].workprice = ins_s_wp[ll_i].workprice
- // s_wp_union[ll_wp_union].status = ins_s_wp[ll_i].status
- // s_wp_union[ll_wp_union].ifjd = ins_s_wp[ll_i].ifjd
- // s_wp_union[ll_wp_union].lastflag = ins_s_wp[ll_i].lastflag
- // s_wp_union[ll_wp_union].sctype = ins_s_wp[ll_i].sctype
- // s_wp_union[ll_wp_union].equipmentid = ins_s_wp[ll_i].equipmentid
- // s_wp_union[ll_wp_union].partname = ins_s_wp[ll_i].partname
- // s_wp_union[ll_wp_union].eqworkhour = ins_s_wp[ll_i].eqworkhour
- // s_wp_union[ll_wp_union].Workhour = ins_s_wp[ll_i].Workhour
- // s_wp_union[ll_wp_union].beforehour = ins_s_wp[ll_i].beforehour
- // s_wp_union[ll_wp_union].afterhour = ins_s_wp[ll_i].afterhour
- // s_wp_union[ll_wp_union].workprice = ins_s_wp[ll_i].workprice
- // s_wp_union[ll_wp_union].worktype = ins_s_wp[ll_i].worktype
- // s_wp_union[ll_wp_union].eq_empnum = ins_s_wp[ll_i].eq_empnum
- // s_wp_union[ll_wp_union].ifgroup = ins_s_wp[ll_i].ifgroup
- // s_wp_union[ll_wp_union].u_workqty = ins_s_wp[ll_i].u_workqty
- // s_wp_union[ll_wp_union].u_workprice = ins_s_wp[ll_i].u_workprice
- // s_wp_union[ll_wp_union].workprice_bom = ins_s_wp[ll_i].workprice_bom
- // s_wp_union[ll_wp_union].pricestr = ''
- // s_wp_union[ll_wp_union].pricestr_value = ''
- // s_wp_union[ll_wp_union].pro_dscrp = ins_s_wp[ll_i].pro_dscrp
- //
- //
- // _next_wp:
- // Next
- //
- // For ll_i = 1 To ll_wp_union
- //
- // Insert Into u_orderrqwp(scid,
- // orderid,
- // mtrlid,
- // procode,
- // proname,
- // proorder,
- // proqty,
- // wrkgrpid,
- // lsxtype,
- // workprice,
- // status,
- // ifjd,
- // lastflag,
- // sctype,
- // equipmentid,
- // partname,
- // eqworkhour,
- // Workhour,
- // beforehour,
- // afterhour,
- // ori_workprice,
- // worktype,
- // eq_empnum,
- // ifgroup,
- // u_workqty,
- // u_workprice,
- // pricestr,
- // pricestr_value,
- // procode_ori,
- // pro_dscrp)
- // Values ( :arg_scid,
- // :arg_orderid,
- // :mtrlid,
- // :s_wp_union[ll_i].procode,
- // :s_wp_union[ll_i].proname,
- // :s_wp_union[ll_i].proorder,
- // :orderqty,
- // :s_wp_union[ll_i].wrkgrpid,
- // :s_wp_union[ll_i].lsxtype,
- // :s_wp_union[ll_i].workprice_bom,
- // :s_wp_union[ll_i].status,
- // :s_wp_union[ll_i].ifjd,
- // :s_wp_union[ll_i].lastflag,
- // :s_wp_union[ll_i].sctype,
- // :s_wp_union[ll_i].equipmentid,
- // :s_wp_union[ll_i].partname,
- // :s_wp_union[ll_i].eqworkhour,
- // :s_wp_union[ll_i].Workhour,
- // :s_wp_union[ll_i].beforehour,
- // :s_wp_union[ll_i].afterhour,
- // :s_wp_union[ll_i].workprice_bom,
- // :s_wp_union[ll_i].worktype,
- // :s_wp_union[ll_i].eq_empnum,
- // :s_wp_union[ll_i].ifgroup,
- // :orderqty,
- // :s_wp_union[ll_i].workprice_bom,
- // :s_wp_union[ll_i].pricestr,
- // :s_wp_union[ll_i].pricestr_value,
- // :s_wp_union[ll_i].procode,
- // :s_wp_union[ll_i].pro_dscrp);
- // If sqlca.SQLCode <> 0 Then
- // rslt = 0
- // arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- // Goto ext
- // End If
- // Next
-
- End If
-
- End If
- Update u_order_ml
- Set u_Order_ml.sctaskflag = isnull(uv_sc_task_qty_flag.sctaskflag, '')
- From u_Order_ml LEFT Outer JOIN
- uv_sc_task_qty_flag ON u_Order_ml.scid = uv_sc_task_qty_flag.scid And
- u_Order_ml.OrderID = uv_sc_task_qty_flag.OrderID
- Where u_Order_ml.scid = :arg_scid
- And u_order_ml.orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新派工状态失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy ds_pricestr
- Destroy ds_orderrqwp
- Destroy ds_parm
- Return rslt
- end function
- public function integer uof_order_add_pro (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit, boolean arg_ifall, boolean arg_ifupdateprice, integer arg_ifproaudit);Int rslt = 1
- Long cnt
- String ls_partname,ls_mtrlcode
- Long li_ordertype_mtrldef
- Long ll_statusflag,li_ifpackpro
- Decimal lde_price
- s_mtrlcfg_expr s_pz[],s_empty[]
- Long ll_i,ll_j
- String ls_status_zj
- Decimal ld_qty_zj
- String ls_utcode[]
- Long cnt_ut = 0
- Decimal ld_workprice,ld_workqty,ld_workprice_sum
- String ls_rpcode
- String ls_procode,ls_proname
- Long ll_proorder,ll_wrkgrpid,ll_lsxtype,ll_ifjd,ll_lastflag
- Int li_sctype
- Long ll_equipmentid
- Decimal ld_eqworkhour,ld_Workhour,ld_beforehour,ld_afterhour,ld_eq_empnum
- String ls_worktype
- Int li_if_hourpay
- Decimal ld_eoq,ld_splitrate
- Decimal ld_hourpay
- String ls_mtrlsectype,ls_usermtrlmode,ls_zxmtrlmode,ls_mtrlmode
- Int li_ifgroup
- Decimal ld_u_workqty,ld_u_workprice,ld_u_workprice_sum
- Int li_protype
- String ls_replacestr
- Long ll_mtrlid
- String ls_pricestr,s_rtn
- Decimal ld_workprice_str,ld_workqty_str,ld_workqty_ori
- Decimal ld_proqty,ld_hourpay_cmp
- String ls_pricestr_ori,ls_pricestr_value
- String ls_parmname
- Decimal ld_parmvalue
- String ls_workqtystr_ori,ls_workqtystr_value,ls_workqtystr
- Decimal ld_u_workqty_str,ld_u_workprice_str
- String ls_u_workqtystr,ls_u_workqtystr_value,ls_u_pricestr,ls_u_pricestr_value
- String ls_u_workqtystr_ori,ls_u_pricestr_ori
- datastore ds_orderrqwp
- ds_orderrqwp = Create datastore
- ds_orderrqwp.DataObject = 'ds_orderrqwp_workprice'
- ds_orderrqwp.SetTransObject(sqlca)
- datastore ds_pricestr
- ds_pricestr = Create datastore
- ds_pricestr.DataObject = 'ds_pricestr_cmpl'
- ds_pricestr.SetTransObject(sqlca)
- datastore ds_replacestr
- ds_replacestr = Create datastore
- ds_replacestr.DataObject = 'ds_orderrqwp_replacestr'
- ds_replacestr.SetTransObject(sqlca)
- datastore ds_parm
- ds_parm = Create datastore
- ds_parm.DataObject = 'ds_workprice_parm_def'
- ds_parm.SetTransObject(sqlca)
- ds_parm.Retrieve()
- If uo_option_def_workprice = -1000 Then
- rslt = 0
- arg_msg = '选项:[012]生产计划审核时需要检查是否已定义工价表,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_orderrqwp_union = -1000 Then
- rslt = 0
- arg_msg = '选项:[148]生产计划工序明细按工价表配置及组号合并,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_orderrqwp_auditgj = -1000 Then
- rslt = 0
- arg_msg = '选项:[398]工价表如果未进行工价审,指令单工序明细生成时对应工序工价为0,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If arg_orderid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If ordertype = 3 Or ifwforder = 1 Then
- rslt = 1
- Goto ext
- End If
- Select ordertype,
- statusflag,
- ifpackpro,
- if_hourpay,
- eoq,
- splitrate,
- mtrlsectype,
- zxmtrlmode,
- usermtrlmode,
- mtrlmode,
- protype,
- mtrlcode
- Into :li_ordertype_mtrldef,
- :ll_statusflag,
- :li_ifpackpro,
- :li_if_hourpay,
- :ld_eoq,
- :ld_splitrate,
- :ls_mtrlsectype,
- :ls_zxmtrlmode,
- :ls_usermtrlmode,
- :ls_mtrlmode,
- :li_protype,
- :ls_mtrlcode
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询物料计划属性失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If (ordertype <> 4 And li_ordertype_mtrldef = 1) Then
- rslt = 1
- Goto ext
- End If
- If status <> 1 And status <> 4 And status <> 7 And status <> 5 And status <> 6 Then
- rslt = 0
- arg_msg = "计划只有在(已审核,完成)状态才可以执行重新生成工序,请核对"
- Goto ext
- End If
- //IF uo_option_def_workprice = 0 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- //====================================================================
- // 处理前检查
- //====================================================================
- cnt = 0
- Select COUNT(*)
- Into :cnt
- From (Select rpcode, SUM(ifdftpg) AS ifdftpg
- From u_sc_workprice
- Where (Mtrlid = :mtrlid)
- And (rpcode <> '')
- And (u_sc_workprice.wpcode = :wpcode)
- Group By rpcode
- Having (SUM(ifdftpg) <> 1)) v_rpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询产品:'+ls_mtrlcode+' 替代工序默认派工属性是否设置正确失败'
- Goto ext
- End If
- If cnt > 0 Then
- rslt = 0
- arg_msg = '产品:'+ls_mtrlcode+' 替代工序默认派工属性必须设置且必须唯一'
- Goto ext
- End If
- If li_protype = 0 Then
-
- If li_ifpackpro = 0 Then
-
- If ll_statusflag <> 2 Then
-
- If uo_option_def_workprice = 1 Or uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品工价表失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '产品对应车间的工价表未建立,请先建立工价表'
- rslt = 0
- Goto ext
- End If
- End If
-
- If uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And u_sc_workprice.auditflag = 0
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品工价表是否有未审核失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '产品对应车间的工价表存在未审核工价,请检查'
- rslt = 0
- Goto ext
- End If
- End If
- Else
- // f_checkpz(status_mode,s_pz[])
- f_checkpz_general(mtrlid,status_mode,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- If uo_option_def_workprice = 1 Or uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And (u_sc_workprice.status = :ls_status_zj Or u_sc_workprice.status = '')
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品子件:'+ls_status_zj+'工价表失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '产品对应车间的子件:'+ls_status_zj+'工价表未建立,请先建立工价表'
- rslt = 0
- Goto ext
- End If
- End If
-
- If uo_option_def_workprice = 2 Then
- cnt = 0
- Select count(*)
- Into :cnt
- From u_sc_workprice
- Where u_sc_workprice.mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode
- And (u_sc_workprice.status = :ls_status_zj Or u_sc_workprice.status = '')
- And u_sc_workprice.auditflag = 0
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询产品工价表子件:'+ls_status_zj+'是否有未审核失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '产品对应车间的工价表子件:'+ls_status_zj+'存在未审核工价,请检查'
- rslt = 0
- Goto ext
- End If
- End If
-
- Next
- End If
- End If
- End If
- //====================================================================
- // 删除旧工序
- //====================================================================
- If arg_ifall Then // 全部重新生成
-
- cnt = 0
- Select count(*) Into :cnt
- From u_orderrqwp
- Where (finishqty > 0 Or taskqty > 0 )
- And orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询计划工序明细是否有完成数量失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '计划工序明细已有完成数量或已派工数,不能生成计划工序明细'
- rslt = 0
- Goto ext
- End If
-
- Select count(*) Into :cnt
- From v_order_procode
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询计划工序明细是否已开计件单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '计划工序明细已开计件单,不能生成计划工序明细'
- rslt = 0
- Goto ext
- End If
-
- Select count(*) Into :cnt
- From u_sc_task
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询计划工序明细是否已开工序派工单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '计划工序明细开工序派工单,不能生成计划工序明细'
- rslt = 0
- Goto ext
- End If
-
- Delete From u_orderrqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And finishqty = 0
- And taskqty = 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除计划的工序明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Else // 部分重新生成
-
- If arg_ifupdateprice Then
- Select count(0) Into :cnt
- From v_order_procode
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询计划工序明细是否已开计件单失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If cnt > 0 Then
- arg_msg = '计划工序明细已开计件单,不能更新工价'
- rslt = 0
- Goto ext
- End If
- End If
-
- Delete From u_sc_task
- From U_OrderRqwp Inner JOIN
- u_sc_task ON U_OrderRqwp.scid = u_sc_task.scid And U_OrderRqwp.orderid = u_sc_task.orderid And U_OrderRqwp.Procode = u_sc_task.procode And
- U_OrderRqwp.Mtrlid = u_sc_task.mtrlid
- Where (U_OrderRqwp.finishqty = 0)
- And (U_OrderRqwp.taskqty = 0)
- And (u_sc_task.scid = :arg_scid)
- And (u_sc_task.orderid = :arg_orderid)
- And (u_sc_task.flag = 0);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除未审工序派工单失败,' + sqlca.SQLErrText
- Goto ext
- End If
-
- Delete From u_orderrqwp
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And finishqty = 0
- And taskqty = 0
- And Not Exists (Select 1 From u_sc_task
- Where flag = 1
- And scid = u_orderrqwp.scid
- And orderid = u_orderrqwp.orderid
- And mtrlid = u_orderrqwp.mtrlid
- And Procode = u_orderrqwp.Procode);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除未派工工序进度失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- If li_protype = 0 Then
-
- s_pz = s_empty
-
- If ll_statusflag <> 2 Then //非组合配置产品
- cnt = 0
- Select count(*) Into :cnt
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And ltrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询产品价格表是否有组号失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If uo_option_orderrqwp_union = 0 Or uo_option_orderrqwp_union = 1 Or cnt = 0 Then
-
- If Not arg_ifall And arg_ifupdateprice Then
- Update U_OrderRqwp
- Set workPrice = u_sc_workprice.workPrice, ori_workprice = u_sc_workprice.workPrice
- From u_sc_workprice Inner JOIN
- U_OrderRqwp ON u_sc_workprice.Mtrlid = U_OrderRqwp.Mtrlid And u_sc_workprice.procode = U_OrderRqwp.Procode
- Where (u_sc_workprice.ifownpro = 0)
- And (u_sc_workprice.lsxtype <> 0)
- And (u_sc_workprice.wpcode = :wpcode)
- And (U_OrderRqwp.scid = :arg_scid)
- And (u_orderrqwp.orderid = :arg_orderid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workqty,
- u_workprice,
- replacestr,
- procode_ori,
- rpcode,
- auditflag_gj)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- case :uo_option_orderrqwp_auditgj when 0 then u_sc_workprice.workprice else (case u_sc_workprice.auditflag_gj when 0 then 0 else u_sc_workprice.workprice end ) end ,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- case :uo_option_orderrqwp_auditgj when 0 then u_sc_workprice.workprice else (case u_sc_workprice.auditflag_gj when 0 then 0 else u_sc_workprice.workprice end ) end ,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workqty * u_order_ml.orderqty,
- u_sc_workprice.u_workprice,
- u_sc_workprice.replacestr,
- u_sc_workprice.procode,
- u_sc_workprice.rpcode,
- u_sc_workprice.auditflag_gj
- From u_sc_workprice Inner JOIN
- u_Order_ml ON u_sc_workprice.Mtrlid = u_Order_ml.mtrlid LEFT Outer JOIN
- U_OrderRqwp AS U_OrderPro ON u_Order_ml.scid = U_OrderPro.scid And u_Order_ml.OrderID = U_OrderPro.orderid And u_Order_ml.mtrlid = U_OrderPro.Mtrlid And
- u_sc_workprice.procode = U_OrderPro.Procode
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.wpcode = :wpcode
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And U_OrderPro.scid Is Null;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- cnt_ut = 1
- Declare cur_ut2 Cursor For
- Select distinct utcode
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And lTrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.wpcode = :wpcode;
-
- Open cur_ut2;
- Fetch cur_ut2 Into :ls_utcode[cnt_ut];
- Do While sqlca.SQLCode = 0
- cnt_ut++
- Fetch cur_ut2 Into :ls_utcode[cnt_ut];
- Loop
- Close cur_ut2;
-
- cnt_ut = cnt_ut - 1
-
- For ll_i = 1 To cnt_ut
- ld_workprice = 0
- ld_workqty = 0
-
- Select sum(workprice),sum(workqty),sum(u_workprice),sum(u_workqty)
- Into :ld_workprice,:ld_workqty,:ld_u_workprice,:ld_u_workqty
- From u_sc_workprice
- Where lTrim(rtrim(utcode)) = :ls_utcode[ll_i]
- And mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询组号:'+ls_utcode[ll_i]+' 合计工价,数量失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- Select top 1 u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.replacestr,
- u_sc_workprice.rpcode
- Into :ls_procode,
- :ls_proname,
- :ll_proorder,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup,
- :ls_replacestr,
- :ls_rpcode
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And utcode = :ls_utcode[ll_i]
- And u_sc_workprice.wpcode = :wpcode
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- Order By lastflag Desc,u_sc_workprice.proorder Desc;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询工价表组号:'+ls_utcode[ll_i]+'末工序相关信息失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- ls_proname = '工序:(组:'+Trim(ls_utcode[ll_i])+')'
-
- cnt = 0
- Select COUNT(0) Into :cnt
- From u_orderrqwp
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And Procode = :ls_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询现有工序进度失败,' + sqlca.SQLErrText
- Goto ext
- End If
-
- If cnt = 0 Then
- Insert Into u_orderrqwp
- (scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty,
- replacestr,
- procode_ori,
- rpcode)
- Values (:arg_scid,
- :arg_orderid,
- :mtrlid,
- :ls_procode,
- :ls_proname,
- :ll_proorder,
- :orderqty,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ld_workprice,
- :status_mode,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ld_workprice_sum,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup,
- :ld_u_workprice,
- :ld_u_workqty,
- :ls_replacestr,
- :ls_procode,
- :ls_rpcode);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- If arg_ifupdateprice Then
- Update u_OrderRqwp Set workprice = :ld_workprice, ori_workprice = :ld_workprice_sum
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And Procode = :ls_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新工序进度工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
- End If
- Next
-
- //加空组号工序
- If Not arg_ifall And arg_ifupdateprice Then
- Update U_OrderRqwp
- Set workPrice = u_sc_workprice.workPrice, ori_workprice = u_sc_workprice.workPrice
- From u_sc_workprice Inner JOIN
- U_OrderRqwp ON u_sc_workprice.Mtrlid = U_OrderRqwp.Mtrlid And u_sc_workprice.procode = U_OrderRqwp.Procode
- Where U_OrderRqwp.orderid = :arg_orderid
- And U_OrderRqwp.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.utcode = ''
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty,
- replacestr,
- procode_ori,
- rpcode)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty,
- u_sc_workprice.replacestr,
- u_sc_workprice.procode,
- u_sc_workprice.rpcode
- From u_sc_workprice Inner JOIN
- u_Order_ml ON u_sc_workprice.Mtrlid = u_Order_ml.mtrlid LEFT Outer JOIN
- U_OrderRqwp AS U_OrderPro ON u_Order_ml.scid = U_OrderPro.scid And u_Order_ml.OrderID = U_OrderPro.orderid And u_Order_ml.mtrlid = U_OrderPro.Mtrlid And
- u_sc_workprice.procode = U_OrderPro.Procode
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.utcode = ''
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And u_sc_workprice.wpcode = :wpcode
- And U_OrderPro.scid Is Null;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- //组合配置产品
- cnt = 0
- Select count(*) Into :cnt
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And ltrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询产品价格表是否有组号失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- If uo_option_orderrqwp_union = 0 Or cnt = 0 Then
- // f_checkpz(status_mode,s_pz[])
- f_checkpz_general(mtrlid,status_mode,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- ld_qty_zj = Dec(s_pz[ll_i].qty)
-
-
- If Not arg_ifall And arg_ifupdateprice Then
- Update U_OrderRqwp
- Set workPrice = u_sc_workprice.workPrice, ori_workprice = u_sc_workprice.workPrice
- From u_sc_workprice Inner JOIN
- U_OrderRqwp ON u_sc_workprice.Mtrlid = U_OrderRqwp.Mtrlid And u_sc_workprice.procode = U_OrderRqwp.Procode
- Where U_OrderRqwp.orderid = :arg_orderid
- And U_OrderRqwp.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And (u_sc_workprice.status = :ls_status_zj)
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty,
- replacestr,
- procode_ori,
- rpcode,
- auditflag_gj)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- case :uo_option_orderrqwp_auditgj when 0 then u_sc_workprice.workprice else (case u_sc_workprice.auditflag_gj when 0 then 0 else u_sc_workprice.workprice end ) end ,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- case :uo_option_orderrqwp_auditgj when 0 then u_sc_workprice.workprice else (case u_sc_workprice.auditflag_gj when 0 then 0 else u_sc_workprice.workprice end ) end ,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.replacestr,
- u_sc_workprice.procode,
- u_sc_workprice.rpcode,
- u_sc_workprice.auditflag_gj
- From u_sc_workprice Inner JOIN
- u_Order_ml ON u_sc_workprice.Mtrlid = u_Order_ml.mtrlid LEFT Outer JOIN
- U_OrderRqwp AS U_OrderPro ON u_Order_ml.scid = U_OrderPro.scid And u_Order_ml.OrderID = U_OrderPro.orderid And u_Order_ml.mtrlid = U_OrderPro.Mtrlid And
- u_sc_workprice.procode = U_OrderPro.Procode
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And (u_sc_workprice.status = :ls_status_zj)
- And u_sc_workprice.wpcode = :wpcode
- And U_OrderPro.scid Is Null;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- //加空子件工序(公共)
- If Not arg_ifall And arg_ifupdateprice Then
- Update U_OrderRqwp
- Set workPrice = u_sc_workprice.workPrice, ori_workprice = u_sc_workprice.workPrice
- From u_sc_workprice Inner JOIN
- U_OrderRqwp ON u_sc_workprice.Mtrlid = U_OrderRqwp.Mtrlid And u_sc_workprice.procode = U_OrderRqwp.Procode
- Where U_OrderRqwp.orderid = :arg_orderid
- And U_OrderRqwp.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And (u_sc_workprice.status = '')
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty,
- replacestr,
- procode_ori,
- rpcode,
- auditflag_gj)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- case :uo_option_orderrqwp_auditgj when 0 then u_sc_workprice.workprice else (case u_sc_workprice.auditflag_gj when 0 then 0 else u_sc_workprice.workprice end ) end ,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- case :uo_option_orderrqwp_auditgj when 0 then u_sc_workprice.workprice else (case u_sc_workprice.auditflag_gj when 0 then 0 else u_sc_workprice.workprice end ) end ,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.replacestr,
- u_sc_workprice.procode,
- u_sc_workprice.rpcode,
- u_sc_workprice.auditflag_gj
- From u_sc_workprice Inner JOIN
- u_Order_ml ON u_sc_workprice.Mtrlid = u_Order_ml.mtrlid LEFT Outer JOIN
- U_OrderRqwp AS U_OrderPro ON u_Order_ml.scid = U_OrderPro.scid And u_Order_ml.OrderID = U_OrderPro.orderid And u_Order_ml.mtrlid = U_OrderPro.Mtrlid And
- u_sc_workprice.procode = U_OrderPro.Procode
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And (u_sc_workprice.status = '')
- And u_sc_workprice.wpcode = :wpcode
- And U_OrderPro.scid Is Null;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序[空子件]失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- // f_checkpz(status_mode,s_pz[])
- cnt_ut = 1
- f_checkpz_general(mtrlid,status_mode,s_pz[])
- Declare cur_ut Cursor For
- Select distinct utcode
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And lTrim(rtrim(utcode)) <> ''
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And u_sc_workprice.wpcode = :wpcode;
-
- Open cur_ut;
- Fetch cur_ut Into :ls_utcode[cnt_ut];
- Do While sqlca.SQLCode = 0
- cnt_ut++
- Fetch cur_ut Into :ls_utcode[cnt_ut];
- Loop
- Close cur_ut;
-
- cnt_ut = cnt_ut - 1
-
- For ll_i = 1 To cnt_ut
- ld_workprice_sum = 0
- For ll_j = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_j].cfgname
- ld_qty_zj = Dec(s_pz[ll_j].qty)
-
- ld_workprice = 0
- ld_workqty = 0
- ld_u_workprice = 0
- ld_u_workqty = 0
-
- Select workprice,
- workqty,
- u_workprice,
- u_workqty,pricestr,
- workqtystr,
- u_pricestr,
- u_workqtystr,
- procode
- Into :ld_workprice,
- :ld_workqty,
- :ld_u_workprice,
- :ld_u_workqty,
- :ls_pricestr,
- :ls_workqtystr,
- :ls_u_pricestr,
- :ls_u_workqtystr,
- :ls_procode
- From u_sc_workprice
- Where lTrim(rtrim(utcode)) = :ls_utcode[ll_i]
- And lTrim(rtrim(status)) = :ls_status_zj
- And mtrlid = :mtrlid
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询组号:'+ls_utcode[ll_i]+' 配置:'+ls_status_zj+' 工价失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- If Trim(ls_workqtystr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_workqtystr,1,ls_workqtystr_value,ld_workqty_str) = 1 Then
- ld_workqty = ld_workqty_str
- End If
- End If
-
- If Trim(ls_pricestr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_pricestr,0,ls_pricestr_value,ld_workprice_str) = 1 Then
- ld_workprice = ld_workprice_str
- End If
- End If
-
- If Trim(ls_u_workqtystr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_u_workqtystr,1,ls_u_workqtystr_value,ld_u_workqty_str) = 1 Then
- ld_u_workqty = ld_u_workqty_str
- End If
- End If
-
- If Trim(ls_u_pricestr) <> '' Then
- If uof_workprice_parm(mtrlid,wpcode,ls_procode,ld_workqty * ld_qty_zj,ls_u_pricestr,0,ls_u_pricestr_value,ld_u_workprice_str) = 1 Then
- ld_u_workprice = ld_u_workprice_str
- End If
- End If
-
- ld_workprice_sum = ld_workprice_sum + ld_workprice * ld_workqty * ld_qty_zj
- ld_u_workprice_sum = ld_u_workprice_sum + ld_u_workprice * ld_u_workqty * ld_qty_zj
- Next
-
- Select top 1 u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.ifgroup,
- u_sc_workprice.replacestr,
- u_sc_workprice.rpcode
- Into :ls_procode,
- :ls_proname,
- :ll_proorder,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup,
- :ls_replacestr,
- :ls_rpcode
- From u_sc_workprice
- Where mtrlid = :mtrlid
- And utcode = :ls_utcode[ll_i]
- And u_sc_workprice.wpcode = :wpcode
- Order By lastflag Desc;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询工价表组号:'+ls_utcode[ll_i]+'相关信息失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- cnt = 0
- Select count(0) Into :cnt
- From u_orderrqwp
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And Procode = :ls_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询旧工序进度失败,' + sqlca.SQLErrText
- Goto ext
- End If
- If cnt = 0 Then
- Insert Into u_orderrqwp
- (scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workprice,
- u_workqty,
- replacestr,
- procode_ori,
- rpcode)
- Values (:arg_scid,
- :arg_orderid,
- :mtrlid,
- :ls_procode,
- :ls_proname,
- :ll_proorder,
- :orderqty,
- :ll_wrkgrpid,
- :ll_lsxtype,
- :ld_workprice_sum,
- :status_mode,
- :ll_ifjd,
- :ll_lastflag,
- :li_sctype,
- :ll_equipmentid,
- :ls_partname,
- :ld_eqworkhour,
- :ld_Workhour,
- :ld_beforehour,
- :ld_afterhour,
- :ld_workprice_sum,
- :ls_worktype,
- :ld_eq_empnum,
- :li_ifgroup,
- :ld_u_workprice_sum,
- :orderqty,
- :ls_replacestr,
- :ls_procode,
- :ls_rpcode);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- If Not arg_ifall And arg_ifupdateprice Then
- Update u_orderrqwp
- Set workprice = :ld_workprice_sum, ori_workprice = :ld_workprice_sum
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And Procode = :ls_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新旧工序进度工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
- End If
- Next
-
- //加空组号工序
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- ld_qty_zj = Dec(s_pz[ll_i].qty)
- If Not arg_ifall And arg_ifupdateprice Then
- Update U_OrderRqwp
- Set workPrice = u_sc_workprice.workPrice, ori_workprice = u_sc_workprice.workPrice
- From u_sc_workprice Inner JOIN
- U_OrderRqwp ON u_sc_workprice.Mtrlid = U_OrderRqwp.Mtrlid And u_sc_workprice.procode = U_OrderRqwp.Procode
- Where U_OrderRqwp.orderid = :arg_orderid
- And U_OrderRqwp.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = :ls_status_zj)
- And u_sc_workprice.utcode = ''
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- u_workprice,
- u_workqty,
- replacestr,
- procode_ori,
- rpcode)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.replacestr,
- u_sc_workprice.procode,
- u_sc_workprice.rpcode
- From u_sc_workprice Inner JOIN
- u_Order_ml ON u_sc_workprice.Mtrlid = u_Order_ml.mtrlid LEFT Outer JOIN
- U_OrderRqwp AS U_OrderPro ON u_Order_ml.scid = U_OrderPro.scid And u_Order_ml.OrderID = U_OrderPro.orderid And u_Order_ml.mtrlid = U_OrderPro.Mtrlid And
- u_sc_workprice.procode = U_OrderPro.Procode
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = :ls_status_zj)
- And u_sc_workprice.utcode = ''
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And u_sc_workprice.wpcode = :wpcode
- And U_OrderPro.scid Is Null;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- //加空子件工序
- If Not arg_ifall And arg_ifupdateprice Then
- Update U_OrderRqwp
- Set workPrice = u_sc_workprice.workPrice, ori_workprice = u_sc_workprice.workPrice
- From u_sc_workprice Inner JOIN
- U_OrderRqwp ON u_sc_workprice.Mtrlid = U_OrderRqwp.Mtrlid And u_sc_workprice.procode = U_OrderRqwp.Procode
- Where U_OrderRqwp.orderid = :arg_orderid
- And U_OrderRqwp.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = '')
- And u_sc_workprice.utcode = ''
- And u_sc_workprice.wpcode = :wpcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- u_workprice,
- u_workqty,
- replacestr,
- procode_ori,
- rpcode)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workprice.procode,
- u_sc_workprice.proname,
- u_sc_workprice.proorder,
- u_sc_workprice.workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.wrkgrpid,
- u_sc_workprice.lsxtype,
- u_sc_workprice.workprice,
- u_sc_workprice.status,
- u_sc_workprice.ifjd,
- u_sc_workprice.lastflag,
- u_sc_workprice.sctype,
- u_sc_workprice.equipmentid,
- u_sc_workprice.partname,
- u_sc_workprice.eqworkhour,
- u_sc_workprice.Workhour,
- u_sc_workprice.beforehour,
- u_sc_workprice.afterhour,
- u_sc_workprice.workprice,
- u_sc_workprice.worktype,
- u_sc_workprice.eq_empnum,
- u_sc_workprice.u_workprice,
- u_sc_workprice.u_workqty * u_order_ml.orderqty * :ld_qty_zj,
- u_sc_workprice.replacestr,
- u_sc_workprice.procode,
- u_sc_workprice.rpcode
- From u_sc_workprice Inner JOIN
- u_Order_ml ON u_sc_workprice.Mtrlid = u_Order_ml.mtrlid LEFT Outer JOIN
- U_OrderRqwp AS U_OrderPro ON u_Order_ml.scid = U_OrderPro.scid And u_Order_ml.OrderID = U_OrderPro.orderid And u_Order_ml.mtrlid = U_OrderPro.Mtrlid And
- u_sc_workprice.procode = U_OrderPro.Procode
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workprice.ifownpro = 0
- And u_sc_workprice.lsxtype <> 0
- And (u_sc_workprice.status = '')
- And u_sc_workprice.utcode = ''
- And (ltrim(rtrim(u_sc_workprice.rpcode)) <> '' And u_sc_workprice.ifdftpg = 1 Or ltrim(rtrim(u_sc_workprice.rpcode)) = '')
- And u_sc_workprice.wpcode = :wpcode
- And U_OrderPro.scid Is Null;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序[空子件]失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
-
- Update U_OrderRqwp
- Set U_OrderRqwp.workPrice = u_sc_workprice.workPrice,
- U_OrderRqwp.ori_workPrice = u_sc_workprice.workPrice
- From U_OrderRqwp Inner JOIN
- u_Order_ml ON U_OrderRqwp.scid = u_Order_ml.scid And
- U_OrderRqwp.orderid = u_Order_ml.OrderID Inner JOIN
- u_sc_workprice ON u_Order_ml.mtrlid = u_sc_workprice.Mtrlid And
- u_Order_ml.status_mode = u_sc_workprice.status And
- U_OrderRqwp.Proname = u_sc_workprice.Proname And
- u_Order_ml.wpcode = u_sc_workprice.wpcode
- Where U_OrderRqwp.scid = :arg_scid
- And u_orderrqwp.orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- End If
-
- //如果按组号合并,则不再执行公式
- If uo_option_orderrqwp_union = 0 Or uo_option_orderrqwp_union = 1 And cnt_ut = 0 Then
- ds_orderrqwp.Retrieve(arg_scid,arg_orderid,wpcode)
-
-
- For ll_i = 1 To ds_orderrqwp.RowCount()
- ls_pricestr = ds_orderrqwp.Object.u_sc_workprice_pricestr[ll_i]
- ll_mtrlid = ds_orderrqwp.Object.u_orderrqwp_mtrlid[ll_i]
- ls_procode = ds_orderrqwp.Object.u_orderrqwp_procode[ll_i]
- ls_worktype = ds_orderrqwp.Object.u_orderrqwp_worktype[ll_i]
- ld_hourpay = ds_orderrqwp.Object.hourpay[ll_i]
- ld_proqty = ds_orderrqwp.Object.u_orderrqwp_proqty[ll_i]
- ld_Workhour = ds_orderrqwp.Object.u_orderrqwp_workhour[ll_i]
- ld_beforehour = ds_orderrqwp.Object.u_orderrqwp_beforehour[ll_i]
- ld_afterhour = ds_orderrqwp.Object.u_orderrqwp_afterhour[ll_i]
- ld_eq_empnum = ds_orderrqwp.Object.u_orderrqwp_eq_empnum[ll_i]
- ld_eqworkhour = ds_orderrqwp.Object.u_orderrqwp_eqworkhour[ll_i]
- ls_workqtystr = ds_orderrqwp.Object.u_sc_workprice_workqtystr[ll_i]
- ld_workqty_ori = ds_orderrqwp.Object.u_sc_workprice_workqty[ll_i]
- ld_workprice_str = ds_orderrqwp.Object.u_orderrqwp_workprice[ll_i]
-
- ld_u_workqty_str = ds_orderrqwp.Object.u_orderrqwp_u_workqty[ll_i]
- ld_u_workprice_str = ds_orderrqwp.Object.u_orderrqwp_u_workprice[ll_i]
-
- ls_u_workqtystr = ds_orderrqwp.Object.u_sc_workprice_u_workqtystr[ll_i]
- ls_u_pricestr = ds_orderrqwp.Object.u_sc_workprice_u_pricestr[ll_i]
-
- ld_workqty_str = ld_proqty
-
- If ld_workqty_ori = 0 Then ld_workqty_ori = 1
-
- ls_pricestr_ori = ''
- ls_pricestr_value = ''
- ls_workqtystr_ori = ''
- ls_workqtystr_value = ''
-
- //1.数量公式
- If Trim(ls_workqtystr) <> '' Then
- ls_workqtystr_ori = ls_workqtystr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_workqtystr,1,ls_workqtystr_value,ld_workqty_str)
- ld_proqty = ld_workqty_str
-
- End If
-
-
- //2.单价公式
- If Trim(ls_pricestr) <> '' Then
- ls_pricestr_ori = ls_pricestr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_pricestr,0,ls_pricestr_value,ld_workprice_str)
- Else
- If li_if_hourpay = 2 Then
- If ld_proqty > ld_splitrate And ld_splitrate <> 0 Then
- ld_workprice_str = (ld_splitrate * (ld_Workhour + ld_eqworkhour * ld_eq_empnum) + ld_beforehour + ld_afterhour) / ld_splitrate * ld_hourpay
- Else
- ld_workprice_str = (ld_proqty * (ld_Workhour + ld_eqworkhour * ld_eq_empnum) + ld_beforehour + ld_afterhour) / ld_proqty * ld_hourpay
- End If
- Else
- Goto _u_workqty
- End If
- End If
-
- //3.折算数量
- _u_workqty:
- If Trim(ls_u_workqtystr) <> '' Then
- ls_u_workqtystr_ori = ls_u_workqtystr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_u_workqtystr,1,ls_u_workqtystr_value,ld_u_workqty_str)
-
- End If
-
-
- //4.折算单价
- If Trim(ls_u_pricestr) <> '' Then
- ls_u_pricestr_ori = ls_u_pricestr
-
- uof_workprice_parm(ll_mtrlid,wpcode,ls_procode,ld_proqty,ls_u_pricestr,0,ls_u_pricestr_value,ld_u_workprice_str)
-
- End If
-
-
- Update u_orderrqwp
- Set workprice = :ld_workprice_str,
- ori_workprice = :ld_workprice_str,
- pricestr = :ls_pricestr_ori,
- pricestr_value = :ls_pricestr_value,
- proqty = :ld_workqty_str,
- workqtystr = :ls_workqtystr_ori,
- workqtystr_value = :ls_workqtystr_value,
- u_workqty = :ld_u_workqty_str,
- u_workqtystr = :ls_u_workqtystr_ori,
- u_workqtystr_value = :ls_u_workqtystr_value,
- u_workprice = :ld_u_workprice_str,
- u_pricestr = :ls_u_pricestr_ori,
- u_pricestr_value = :ls_u_pricestr_value
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :ll_mtrlid
- And Procode = :ls_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '按单价公式更新工序单价失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Next
- End If
- Else
- it_mx_bomwp = 0
- deep = 0
- If uof_protype_workprice(mtrlid,pfcode,wpcode,orderqty,arg_msg) = 0 Then
- rslt = 0
- arg_msg = '计算下级虚拟部件工价表失败,'+arg_msg
- Goto ext
- End If
-
- // DELETE FROM u_orderrqwp
- // WHERE orderid = :arg_orderid
- // And scid = :arg_scid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "删除计划的工序明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- // GOTO ext
- // END IF
- //
-
- If li_protype = 1 Then
-
- // 清空原工序的工序合并说明、原工序号
- Update u_orderrqwp
- Set pro_dscrp = '', procode_ori = ''
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '清空原工序的工序合并说明、原工序号失败,' + sqlca.SQLErrText
- Goto ext
- End If
-
- For ll_i = 1 To it_mx_bomwp
-
- // 更新原工序的工序合并说明、原工序号
- Update u_orderrqwp
- Set pro_dscrp = case when len(pro_dscrp + ',' + :ins_s_wp[ll_i].pro_dscrp) < 255 then pro_dscrp + ',' + :ins_s_wp[ll_i].pro_dscrp else pro_dscrp End,
- procode_ori = :ins_s_wp[ll_i].procode
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And Procode = :ins_s_wp[ll_i].mtrlcode + '_' + :ins_s_wp[ll_i].Procode
- And (finishqty > 0 Or taskqty > 0);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新原工序的工序合并说明、原工序号失败,' + sqlca.SQLErrText
- Goto ext
- End If
-
- If sqlca.SQLNRows = 0 Then
- Update u_orderrqwp
- Set proqty = proqty + :ins_s_wp[ll_i].workqty,
- u_workqty = u_workqty + :ins_s_wp[ll_i].u_workqty,
- pro_dscrp = case when len(pro_dscrp + ',' + :ins_s_wp[ll_i].pro_dscrp) < 255 then pro_dscrp + ',' + :ins_s_wp[ll_i].pro_dscrp else pro_dscrp End
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And Procode = :ins_s_wp[ll_i].mtrlcode + '_' + :ins_s_wp[ll_i].Procode;
- If sqlca.SQLCode = 0 Then
- If sqlca.SQLNRows = 0 Then
- Insert Into u_orderrqwp(scid,
- orderid,
- mtrlid,
- procode,
- proname,
- proorder,
- proqty,
- wrkgrpid,
- lsxtype,
- workprice,
- status,
- ifjd,
- lastflag,
- sctype,
- equipmentid,
- partname,
- eqworkhour,
- Workhour,
- beforehour,
- afterhour,
- ori_workprice,
- worktype,
- eq_empnum,
- ifgroup,
- u_workqty,
- u_workprice,
- pricestr,
- pricestr_value,
- procode_ori,
- pro_dscrp,
- replacestr,
- sonmtrlid,
- rpcode,
- auditflag_gj)
- Values (:arg_scid,
- :arg_orderid,
- :mtrlid,
- :ins_s_wp[ll_i].mtrlcode + '_' + :ins_s_wp[ll_i].procode,
- :ins_s_wp[ll_i].proname,
- :ins_s_wp[ll_i].proorder,
- :ins_s_wp[ll_i].workqty,
- :ins_s_wp[ll_i].wrkgrpid,
- :ins_s_wp[ll_i].lsxtype,
- case :uo_option_orderrqwp_auditgj when 0 then :ins_s_wp[ll_i].workprice else (case :ins_s_wp[ll_i].auditflag_gj when 0 then 0 else :ins_s_wp[ll_i].workprice end ) end ,
- :ins_s_wp[ll_i].status,
- :ins_s_wp[ll_i].ifjd,
- :ins_s_wp[ll_i].lastflag,
- :ins_s_wp[ll_i].sctype,
- :ins_s_wp[ll_i].equipmentid,
- :ins_s_wp[ll_i].partname,
- :ins_s_wp[ll_i].eqworkhour,
- :ins_s_wp[ll_i].Workhour,
- :ins_s_wp[ll_i].beforehour,
- :ins_s_wp[ll_i].afterhour,
- case :uo_option_orderrqwp_auditgj when 0 then :ins_s_wp[ll_i].workprice else (case :ins_s_wp[ll_i].auditflag_gj when 0 then 0 else :ins_s_wp[ll_i].workprice end ) end ,
- :ins_s_wp[ll_i].worktype,
- :ins_s_wp[ll_i].eq_empnum,
- :ins_s_wp[ll_i].ifgroup,
- :ins_s_wp[ll_i].u_workqty,
- :ins_s_wp[ll_i].u_workprice,
- :ins_s_wp[ll_i].pricestr,
- :ins_s_wp[ll_i].pricestr_value,
- :ins_s_wp[ll_i].procode,
- :ins_s_wp[ll_i].pro_dscrp,
- :ins_s_wp[ll_i].replacestr,
- :ins_s_wp[ll_i].sonmtrlid,
- :ins_s_wp[ll_i].rpcode,
- :ins_s_wp[ll_i].auditflag_gj);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新生产计划工序失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- If Not arg_ifall And arg_ifupdateprice Then
- Update u_orderrqwp
- Set workprice = :ins_s_wp[ll_i].workprice,
- ori_workprice = :ins_s_wp[ll_i].workprice,
- auditflag_gj = :ins_s_wp[ll_i].auditflag_gj
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :mtrlid
- And Procode = :ins_s_wp[ll_i].mtrlcode + '_' + :ins_s_wp[ll_i].Procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新旧工序进度工价失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
- End If
- Next
-
- ElseIf li_protype = 2 Then
-
- // s_workpricetable s_wp_union[]
- // Long ll_wp_union
- //
- // FOR ll_i = 1 To it_mx_bomwp
- // FOR ll_j = 1 To ll_wp_union
- // IF ins_s_wp[ll_i].Procode = s_wp_union[ll_j].Procode THEN
- // s_wp_union[ll_j].workprice_bom = s_wp_union[ll_j].workprice_bom + ins_s_wp[ll_i].workprice_bom
- // IF lena(s_wp_union[ll_j].pro_dscrp + ',' + ins_s_wp[ll_i].pro_dscrp) > 255 THEN
- // s_wp_union[ll_j].pro_dscrp = leftA(s_wp_union[ll_j].pro_dscrp + ',' + ins_s_wp[ll_i].pro_dscrp,255)
- // ELSE
- // s_wp_union[ll_j].pro_dscrp = s_wp_union[ll_j].pro_dscrp + ',' + ins_s_wp[ll_i].pro_dscrp
- // END IF
- // GOTO _next_wp
- // END IF
- // NEXT
- //
- // ll_wp_union++
- //
- // s_wp_union[ll_wp_union].Procode = ins_s_wp[ll_i].Procode
- // s_wp_union[ll_wp_union].proname = ins_s_wp[ll_i].proname
- // s_wp_union[ll_wp_union].proorder = ins_s_wp[ll_i].proorder
- // s_wp_union[ll_wp_union].workqty = ins_s_wp[ll_i].workqty
- // s_wp_union[ll_wp_union].wrkgrpid = ins_s_wp[ll_i].wrkgrpid
- // s_wp_union[ll_wp_union].lsxtype = ins_s_wp[ll_i].lsxtype
- // s_wp_union[ll_wp_union].workPrice = ins_s_wp[ll_i].workPrice
- // s_wp_union[ll_wp_union].status = ins_s_wp[ll_i].status
- // s_wp_union[ll_wp_union].ifjd = ins_s_wp[ll_i].ifjd
- // s_wp_union[ll_wp_union].lastflag = ins_s_wp[ll_i].lastflag
- // s_wp_union[ll_wp_union].sctype = ins_s_wp[ll_i].sctype
- // s_wp_union[ll_wp_union].equipmentid = ins_s_wp[ll_i].equipmentid
- // s_wp_union[ll_wp_union].partname = ins_s_wp[ll_i].partname
- // s_wp_union[ll_wp_union].eqworkhour = ins_s_wp[ll_i].eqworkhour
- // s_wp_union[ll_wp_union].Workhour = ins_s_wp[ll_i].Workhour
- // s_wp_union[ll_wp_union].beforehour = ins_s_wp[ll_i].beforehour
- // s_wp_union[ll_wp_union].afterhour = ins_s_wp[ll_i].afterhour
- // s_wp_union[ll_wp_union].workPrice = ins_s_wp[ll_i].workPrice
- // s_wp_union[ll_wp_union].worktype = ins_s_wp[ll_i].worktype
- // s_wp_union[ll_wp_union].eq_empnum = ins_s_wp[ll_i].eq_empnum
- // s_wp_union[ll_wp_union].ifgroup = ins_s_wp[ll_i].ifgroup
- // s_wp_union[ll_wp_union].u_workqty = ins_s_wp[ll_i].u_workqty
- // s_wp_union[ll_wp_union].u_workprice = ins_s_wp[ll_i].u_workprice
- // s_wp_union[ll_wp_union].workprice_bom = ins_s_wp[ll_i].workprice_bom
- // s_wp_union[ll_wp_union].pricestr = ''
- // s_wp_union[ll_wp_union].pricestr_value = ''
- // s_wp_union[ll_wp_union].pro_dscrp = ins_s_wp[ll_i].pro_dscrp
- // s_wp_union[ll_wp_union].replacestr = ins_s_wp[ll_i].replacestr
- //
- // _next_wp:
- // NEXT
- //
- // FOR ll_i = 1 To ll_wp_union
- //
- // UPDATE u_orderrqwp
- // SET procode_ori = :s_wp_union[ll_i].procode,
- // pro_dscrp = :s_wp_union[ll_i].pro_dscrp
- // WHERE scid = :arg_scid
- // AND orderid = :arg_orderid
- // AND mtrlid = :mtrlid
- // And Procode = :s_wp_union[ll_i].Procode;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新原工序进度工序合并说明、原工序号失败' + sqlca.SQLErrText
- // GOTO ext
- // END IF
- // IF sqlca.SQLNRows = 0 THEN
- // INSERT INTO u_orderrqwp(scid,
- // orderid,
- // mtrlid,
- // procode,
- // proname,
- // proorder,
- // proqty,
- // wrkgrpid,
- // lsxtype,
- // workprice,
- // status,
- // ifjd,
- // lastflag,
- // sctype,
- // equipmentid,
- // partname,
- // eqworkhour,
- // Workhour,
- // beforehour,
- // afterhour,
- // ori_workprice,
- // worktype,
- // eq_empnum,
- // ifgroup,
- // u_workqty,
- // u_workprice,
- // pricestr,
- // pricestr_value,
- // procode_ori,
- // pro_dscrp,
- // replacestr)
- // VALUES ( :arg_scid,
- // :arg_orderid,
- // :mtrlid,
- // :s_wp_union[ll_i].procode,
- // :s_wp_union[ll_i].proname,
- // :s_wp_union[ll_i].proorder,
- // :orderqty,
- // :s_wp_union[ll_i].wrkgrpid,
- // :s_wp_union[ll_i].lsxtype,
- // :s_wp_union[ll_i].workprice_bom,
- // :s_wp_union[ll_i].status,
- // :s_wp_union[ll_i].ifjd,
- // :s_wp_union[ll_i].lastflag,
- // :s_wp_union[ll_i].sctype,
- // :s_wp_union[ll_i].equipmentid,
- // :s_wp_union[ll_i].partname,
- // :s_wp_union[ll_i].eqworkhour,
- // :s_wp_union[ll_i].Workhour,
- // :s_wp_union[ll_i].beforehour,
- // :s_wp_union[ll_i].afterhour,
- // :s_wp_union[ll_i].workprice_bom,
- // :s_wp_union[ll_i].worktype,
- // :s_wp_union[ll_i].eq_empnum,
- // :s_wp_union[ll_i].ifgroup,
- // :orderqty,
- // :s_wp_union[ll_i].workprice_bom,
- // :s_wp_union[ll_i].pricestr,
- // :s_wp_union[ll_i].pricestr_value,
- // :s_wp_union[ll_i].procode,
- // :s_wp_union[ll_i].pro_dscrp,
- // :s_wp_union[ll_i].replacestr);
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '增加生产计划工序失败,原因:'+sqlca.SQLErrText
- // GOTO ext
- // END IF
- // ELSE
- // IF Not arg_ifall And arg_ifupdateprice THEN
- // UPDATE u_orderrqwp
- // SET workprice = :s_wp_union[ll_i].workprice_bom,
- // ori_workprice = :s_wp_union[ll_i].workprice_bom
- // WHERE scid = :arg_scid
- // AND orderid = :arg_orderid
- // AND mtrlid = :mtrlid
- // And Procode = :s_wp_union[ll_i].Procode;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新原工序进度工价失败' + sqlca.SQLErrText
- // GOTO ext
- // END IF
- // END IF
- // END IF
- // NEXT
-
- End If
-
- End If
- //更新默认替代工序
- String arg_replacestr,ls_str_dft,ls_price
- Decimal ld_price
- ds_replacestr.Retrieve(arg_scid,arg_orderid)
- For ll_i = 1 To ds_replacestr.RowCount()
- ll_mtrlid = ds_replacestr.Object.u_orderrqwp_mtrlid[ll_i]
- ls_procode = ds_replacestr.Object.u_orderrqwp_procode[ll_i]
- arg_replacestr = ds_replacestr.Object.u_orderrqwp_replacestr[ll_i]
-
- ls_str_dft = Mid(arg_replacestr,Pos(arg_replacestr,'(默认)') + Len('(默认)'), Pos(arg_replacestr,':',Pos(arg_replacestr,'(默认)')) - (Pos(arg_replacestr,'(默认)') + Len('(默认)') ))
-
- ls_price = Mid(arg_replacestr,Pos(arg_replacestr,ls_str_dft)+Len(ls_str_dft) + 1, Pos(arg_replacestr,';',Pos(arg_replacestr,ls_str_dft)) - Pos(arg_replacestr,':',Pos(arg_replacestr,ls_str_dft)) - 1)
-
- If Trim(ls_str_dft) = '' Then Continue
- If IsNumber(ls_price) = False Then Continue
-
- ld_price = Dec(ls_price)
-
- Update u_orderrqwp
- Set replace_proname = :ls_str_dft,
- workprice = :ld_price
- Where scid = :arg_scid
- And orderid = :arg_orderid
- And mtrlid = :ll_mtrlid
- And Procode = :ls_procode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新派工状态失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
- Update u_order_ml
- Set u_Order_ml.sctaskflag = isnull(uv_sc_task_qty_flag.sctaskflag, '')
- From u_Order_ml LEFT Outer JOIN
- uv_sc_task_qty_flag ON u_Order_ml.scid = uv_sc_task_qty_flag.scid And
- u_Order_ml.OrderID = uv_sc_task_qty_flag.OrderID
- Where u_Order_ml.scid = :arg_scid
- And u_order_ml.orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新派工状态失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- //
- If arg_ifproaudit = 1 Then
- Update u_order_ml
- Set proauditflag = 1,
- proauditemp = :publ_operator,
- proauditdate = getdate()
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '工序进度确认标志失败,' + sqlca.SQLErrText
- Goto ext
- End If
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy ds_pricestr
- Destroy ds_orderrqwp
- Destroy ds_parm
- Return rslt
- end function
- public function integer uof_order_add_wkp (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit, integer arg_if_olddate);Int rslt = 1
- Decimal ld_finishqty
- Long ll_dftwrkgrpid,ll_ordertype
- DateTime ldt_tmp
- Long ll_wrkgrpid[],ll_owrkgrpid[]
- String ls_wkpname[]
- Long ll_ifjd[],ll_workgroupid[]
- DateTime ld_requiredate[],ld_begindate[]
- String ls_dscrp[]
- Decimal ll_lastdays[],ld_lasthour[]
- Decimal ld_orderqty[],ld_uprate[]
- Long ll_rel_planid[],ll_rel_planprintid[]
- DateTime ld_minbdate[]
- Long i,cnt
- Long ll_i,ll_j
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Decimal ld_qty_zj
- Long ll_statusflag
- Long ll_swkpid,ll_owkpid
- String ls_wkpname_s
- Decimal ld_workhour,ld_beforehour,ld_afterhour
- uo_order_wkp_jd uo_jd
- uo_jd = Create uo_order_wkp_jd
- datastore ds_mx
- ds_mx = Create datastore
- ds_mx.DataObject = 'ds_mtrl_wkp_mx'
- ds_mx.SetTransObject(sqlca)
- If uo_option_order_ml_add_use_wkp = -1000 Then
- rslt = 0
- arg_msg = '选项:[186]生产计划新建时显示工作量,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_auto_wrkdate = -1000 Then
- rslt = 0
- arg_msg = '选项:[126]生产计划,生产指令自动计算工组开始日期,结束日期,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_use_sc_date = -1000 Then
- rslt = 0
- arg_msg = '选项:[180]工组进度按小时统计,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If arg_orderid = 0 Then
- rslt = 0
- arg_msg = "没有审核对象"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- Select ordertype,
- dftwrkgrpid,
- statusflag
- Into :ll_ordertype,
- :ll_dftwrkgrpid,
- :ll_statusflag
- From u_mtrldef
- Where mtrlid = :mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询物料信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If (ordertype <> 4 And ll_ordertype = 1) Then
- rslt = 1
- Goto ext
- End If
- //yyx20120912
- If outscllflag = 0 Then
- rslt = 1
- Goto ext
- End If
- //
- If uo_option_order_ml_add_use_wkp = 0 Then
- If status <> 1 And status <> 4 And status <> 7 Then
- rslt = 0
- arg_msg = "计划只有在在进行状态才可以执行重新生成工组进度,请核对"
- Goto ext
- End If
- End If
- If wrkGrpid <> ll_dftwrkgrpid Then
- rslt = 1
- arg_msg = '生产指令单或生产计划的车间与计划物料默认的生产车间不一致,不能生成工组进度'
- Goto ext
- End If
- Select sum(finishqty)
- Into :ld_finishqty
- From u_OrderMtrl_workgroup
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询计划是否已交接操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If IsNull(ld_finishqty) Then ld_finishqty = 0
- If ld_finishqty > 0 Then
- arg_msg = '计划已有交接数,不能重新生成工组进度'
- rslt = 0
- Goto ext
- End If
- Select count(*)
- Into :cnt
- From u_order_planmx
- Where scid = :arg_scid
- And orderid = :arg_orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询计划是否已开工组派工单操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If cnt > 0 Then
- rslt = 0
- arg_msg = "计划已开工组派工单操作,不能重新生成工组进度"
- Goto ext
- End If
- i = 1
- //arg_if_olddate 是否保留原开始结束日期及周期参数 0-保留 1-清空,重新生成
- If arg_if_olddate = 1 Then
- Declare cur_wrkmx Cursor For
- Select wrkgrpid,
- owrkgrpid,
- wkpname,
- ifjd,
- lastdays,
- lasthour,
- requiredate,
- dscrp,
- begindate,
- workgroupid,
- rel_planid,
- rel_planprintid,
- uprate,
- minbdate
- From u_OrderMtrl_workgroup
- Where orderid = :arg_orderid
- And scid = :arg_scid;
-
- Open cur_wrkmx;
- Fetch cur_wrkmx Into :ll_wrkgrpid[i],:ll_owrkgrpid[i],
- :ls_wkpname[i],:ll_ifjd[i],:ll_lastdays[i],:ld_lasthour[i],:ld_requiredate[i],
- :ls_dscrp[i],:ld_begindate[i],:ll_workgroupid[i],
- :ll_rel_planid[i],:ll_rel_planprintid[i],:ld_uprate[i],:ld_minbdate[i];
-
- Do While sqlca.SQLCode = 0
- i++
- Fetch cur_wrkmx Into :ll_wrkgrpid[i],:ll_owrkgrpid[i],
- :ls_wkpname[i],:ll_ifjd[i],:ll_lastdays[i],:ld_lasthour[i],:ld_requiredate[i],
- :ls_dscrp[i],:ld_begindate[i],:ll_workgroupid[i],
- :ll_rel_planid[i],:ll_rel_planprintid[i],:ld_uprate[i],:ld_minbdate[i];
- Loop
- Close cur_wrkmx;
- cnt = i - 1
- End If
- Delete From u_OrderMtrl_workgroup
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除计划的交接明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Insert Into u_ordermtrl_workgroup
- (scid,
- orderid,
- mtrlid,
- wrkgrpid,
- owrkgrpid,
- orderqty,
- lastdays,
- ifjd,
- wkpname,
- printid,
- iflast,
- groupstr,
- lp,
- printlp,
- lasthour,
- workgroupid,
- beforehour,
- afterhour,
- workhour,
- gydscrp,
- uprate,
- ifgroup)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_mtrl_wkp.swkpid,
- u_mtrl_wkp.owkpid,
- u_order_ml.orderqty,
- case when :Level = 0 then u_mtrl_wkp.minlasthour / 8 else u_mtrl_wkp.lastdays End ,
- 1,
- u_mtrl_wkp.wkpname,
- u_mtrl_wkp.printid,
- u_mtrl_wkp.iflast,
- u_mtrl_wkp.groupstr,
- u_mtrl_wkp.lp,
- u_mtrl_wkp.printlp,
- case when :Level = 0 then u_mtrl_wkp.minlasthour else u_mtrl_wkp.lasthour End ,
- u_mtrl_wkp.workgroupid,
- u_mtrl_wkp.beforehour,
- u_mtrl_wkp.afterhour,
- u_mtrl_wkp.workhour,
- u_mtrl_wkp.gydscrp,
- u_mtrl_wkp.uprate,
- u_mtrl_wkp.ifgroup
- From u_mtrl_wkp,u_order_ml
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_mtrl_wkp.mtrlid = u_order_ml.mtrlid;
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从物料生产流程加入生产计划车间失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- If ordertype <> 4 Then
- Insert Into u_ordermtrl_workgroup
- (scid,
- orderid,
- mtrlid,
- wrkgrpid,
- owrkgrpid,
- orderqty,
- lastdays,
- ifjd,
- printid,
- groupstr,
- lp,
- printlp,
- uprate,
- ifgroup)
- Select u_order_ml.scid,
- u_order_ml.orderid,
- u_order_ml.mtrlid,
- u_sc_workgroup.wrkgrpid,
- 0,
- u_order_ml.orderqty,
- 0,0,1000,'',0,0,0,0
- From u_sc_workgroup,u_order_ml
- Where u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :arg_scid
- And u_sc_workgroup.ifprint = 1
- And u_sc_workgroup.ifjj = 1
- And u_sc_workgroup.wrkGrpid Not In (Select u_mtrl_wkp.swkpid From u_mtrl_wkp Where u_mtrl_wkp.mtrlid = :mtrlid) ;
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从车间资料加入工生产计划车间失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- If ll_statusflag = 2 Then
- f_checkpz(status_mode,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- ld_qty_zj = Dec(s_pz[ll_i].qty)
-
- ds_mx.Retrieve(mtrlid,ls_status_zj)
-
- For ll_j = 1 To ds_mx.RowCount()
- ll_owkpid = ds_mx.Object.u_mtrl_wkp_mx_owkpid[ll_j]
- ll_swkpid = ds_mx.Object.u_mtrl_wkp_mx_swkpid[ll_j]
- ls_wkpname_s = ds_mx.Object.u_mtrl_wkp_mx_wkpname[ll_j]
- ld_workhour = ds_mx.Object.u_mtrl_wkp_mx_workhour[ll_j]
- ld_beforehour = ds_mx.Object.u_mtrl_wkp_mx_beforehour[ll_j]
- ld_afterhour = ds_mx.Object.u_mtrl_wkp_mx_afterhour[ll_j]
-
- Update u_OrderMtrl_workgroup
- Set workhour = workhour + :ld_workhour * :ld_qty_zj,
- beforehour = beforehour + :ld_beforehour * :ld_qty_zj,
- afterhour = afterhour + :ld_afterhour * :ld_qty_zj
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And wrkgrpid = :ll_swkpid
- And owrkgrpid = :ll_owkpid
- And wkpname = :ls_wkpname_s;
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '从工艺流程配置明细更新生产计划工艺进度失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- Next
- End If
- If uof_update_minbdate(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- Long l_wrkgrpid[],l_owrkgrpid[],l_ifjd[],l_printid[]
- Decimal l_lastdays[],l_lasthour[]
- String l_wkpname[],l_groupstr[]
- Long j,cnt_2,ll_count
- DateTime ld_sdate,ld_edate,ld_update_edate
- DateTime ld_sdate_max
- Decimal ld_resthour,ld_resthour_e
- Int li_timehour
- Int li_rdate
- Decimal ld_resthour_tmp
- DateTime ld_workdate_tmp
- Long l_printid_gr[]
- String l_groupstr_gr[]
- Long cnt_gr
- DateTime ld_sdate_gr[]
- Long k
- Boolean lb_if_find = False
- String ls_arg_date
- If uo_option_auto_wrkdate = 1 Then
- Select orderdate
- Into :ld_sdate_max
- From u_order_ml
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询生产计划或指令单计划开始日期失败'+sqlca.SQLErrText
- Goto ext
- End If
-
- ld_sdate_max = DateTime(Date(ld_sdate_max),Time('8:00:00'))
-
- If uof_order_cmp_wrk_date(arg_scid,arg_orderid,ld_sdate_max,arg_msg,False) = 0 Then
- arg_msg = '计算工组日期失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
-
- End If
- //更新要求完成日期
- If arg_if_olddate = 1 Then
- For ll_i = 1 To cnt
- Update u_ordermtrl_workgroup
- Set ifjd = :ll_ifjd[ll_i],
- requiredate = :ld_requiredate[ll_i],
- begindate = :ld_begindate[ll_i],
- OriBegindate = :ld_begindate[ll_i],
- OriRequiredate = :ld_requiredate[ll_i],
- lastdays = :ll_lastdays[ll_i],
- lasthour = :ld_lasthour[ll_i],
- dscrp = :ls_dscrp[ll_i],
- rel_planid = :ll_rel_planid[ll_i],
- rel_planprintid = :ll_rel_planprintid[ll_i]
- Where orderid = :arg_orderid
- And scid = :arg_scid
- And wrkgrpid = :ll_wrkgrpid[ll_i]
- And owrkgrpid = :ll_owrkgrpid[ll_i]
- And wkpname = :ls_wkpname[ll_i];
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新要求完成时间失败,原因:'+sqlca.SQLErrText
- Goto ext
- End If
- Next
- End If
- If uo_cmp_datediff_wrk(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- //按日期加入进度表
- Delete From u_ordermtrl_wrk_jd
- Where orderid = :arg_orderid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除工组工作量明细表相应记录操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- j = 1
- Declare cur_wrkmx_jd Cursor For
- Select wrkgrpid,
- owrkgrpid,
- wkpname,
- requiredate,
- begindate,
- orderqty,
- workgroupid
- From u_OrderMtrl_workgroup
- Where orderid = :arg_orderid
- And scid = :arg_scid;
-
- Open cur_wrkmx_jd;
- Fetch cur_wrkmx_jd Into :ll_wrkgrpid[j],:ll_owrkgrpid[j],
- :ls_wkpname[j],:ld_requiredate[j],:ld_begindate[j],:ld_orderqty[j],
- :ll_workgroupid[j];
-
- Do While sqlca.SQLCode = 0
- j++
- Fetch cur_wrkmx_jd Into :ll_wrkgrpid[j],:ll_owrkgrpid[j],
- :ls_wkpname[j],:ld_requiredate[j],:ld_begindate[j],:ld_orderqty[j],
- :ll_workgroupid[j];
-
- Loop
- Close cur_wrkmx_jd;
- cnt = j - 1
- Long ll_DaysAfter
- DateTime ldt_wrkdate
- Decimal ld_order_wrk
- For ll_i = 1 To cnt
- ll_DaysAfter = DaysAfter(Date(ld_begindate[ll_i]), Date(ld_requiredate[ll_i]))
-
- If ll_DaysAfter + 1 <> 0 Then
-
- ld_order_wrk = ld_orderqty[ll_i] / (ll_DaysAfter + 1)
-
- For ll_j = 1 To ll_DaysAfter + 1
-
- ldt_wrkdate = DateTime(RelativeDate(Date(ld_begindate[ll_i]),ll_j - 1 ),Time(0))
-
- Insert Into u_ordermtrl_wrk_jd
- (scid,
- orderid,
- wrkgrpid,
- owrkgrpid,
- wkpname,
- wrkdate,
- orderqty,
- workgroupid)
- Values
- (:arg_scid,
- :arg_orderid,
- :ll_wrkgrpid[ll_i],
- :ll_owrkgrpid[ll_i],
- :ls_wkpname[ll_i],
- :ldt_wrkdate,
- :ld_order_wrk,
- :ll_workgroupid[ll_i]);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入工组工作量明细表失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Next
- End If
- Next
- //if uof_auto_order_plan(arg_scid,arg_orderid,arg_msg,false) = 0 then
- // rslt = 0
- // goto ext
- //end if
- If uo_jd.uof_order_add_wrk_jd(arg_scid,arg_orderid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Destroy uo_jd
- Destroy ds_mx
- Return rslt
- end function
- public function integer addmxcmpl_rqacmpqty (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- Dec ld_orderqty,ld_rqacmpqty
- String ls_mtrlname
- rslt = p_getinfo(arg_scid,arg_orderid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF arg_addqty = 0 THEN
- arg_msg = '没有完成数量'
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- rslt = 0
- arg_msg = "计划["+ordercode+"]只有在进行状态下才可以执行操作"
- GOTO ext
- END IF
- SELECT mtrlname INTO :ls_mtrlname
- FROM u_mtrldef,u_order_ml
- WHERE u_order_ml.orderid = :arg_orderid
- AND u_order_ml.scid = :arg_scid
- And u_mtrldef.mtrlid = u_order_ml.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询产品操作失败"
- GOTO ext
- END IF
- //检查是否完成
- SELECT orderqty,rqacmpqty INTO :ld_orderqty,:ld_rqacmpqty
- FROM u_order_ml
- WHERE ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询计划数和已申购数量操作失败"
- GOTO ext
- END IF
- IF status = 1 THEN
- IF ld_orderqty < arg_addqty + ld_rqacmpqty THEN
- rslt = 0
- arg_msg = '该计划明细产品:'+ls_mtrlname+',未申购数'+String(ld_orderqty - ld_rqacmpqty,'#,##0.00##' )+'小于本次申购数'
- GOTO ext
- END IF
- END IF
- UPDATE u_order_ml
- SET rqacmpqty = rqacmpqty + :arg_addqty
- WHERE ( orderid = :arg_orderid )
- And ( scid = :arg_scid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新生产计划完成数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer addmx_sptcheckqty (long arg_scid, long arg_orderid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- //IF uo_option_ifovertask = -1000 THEN
- // rslt = 0
- // arg_msg = '选项:[010]超采购,外协订单收货,读取初始默认值失败,操作取消!'
- // GOTO ext
- //END IF
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = '错误指令单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_orderid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "指令单只有在进行状态下才可以执行质检"
- ELSEIF status <> 5 THEN
- arg_msg = "指令单只有在完成状态下才可以撤销质检"
- END IF
- GOTO ext
- END IF
- Decimal ld_qty,ld_sptcheckqty
- Long ll_mtrlid
- String ls_mtrlcode
- Decimal ld_uprate,ld_upqty,ld_stopqty
- SELECT u_mtrldef.mtrlcode,
- u_order_ml.orderqty,
- u_order_ml.sptcheckqty,
- u_order_ml.stopqty,
- u_order_ml.mtrlid
- INTO :ls_mtrlcode,
- :ld_qty,
- :ld_sptcheckqty,
- :ld_stopqty,
- :ll_mtrlid
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.scid = :arg_scid
- AND u_order_ml.orderid = :arg_orderid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //IF uo_option_ifovertask = 1 THEN //不允许超收
- IF ld_qty < ld_sptcheckqty + arg_addqty + ld_stopqty THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"未质检数量只有"+String(ld_qty - ld_sptcheckqty - ld_stopqty,'#,##0.0#########')+",不能质检"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
- //ELSEIF uo_option_ifovertask = 3 THEN //允许超收但按比例限制
- // SELECT uprate , upqty
- // INTO :ld_uprate,:ld_upqty
- // FROM u_mtrldef
- // Where mtrlid = :ll_mtrlid;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询物料:'+Trim(ls_mtrlcode)+'超收货比例失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF ld_qty * (1 + ld_uprate) + ld_upqty < ld_sptcheckqty + arg_addqty + ld_stopqty THEN
- // rslt = 0
- // arg_msg = "物料:"+ls_mtrlcode+"未完成数量只有"+String(ld_qty - ld_sptcheckqty - ld_stopqty, '#,##0.0#########')+"允许超收上限:"+String(ld_qty * (1 + ld_uprate) + ld_upqty - ld_sptcheckqty - ld_stopqty,'#,##0.0#########')+",不能入库"+String(arg_addqty,'#,##0.0#########')
- // GOTO ext
- // END IF
- //
- //END IF
- IF arg_addqty < 0 And arg_addqty + ld_sptcheckqty < 0 THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"已质检数量只有"+String(ld_sptcheckqty, '#,##0.0###')+",不能撤审质检数量"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET sptcheckqty = sptcheckqty + :arg_addqty
- WHERE ( u_order_ml.orderid = :arg_orderid ) AND
- ( u_order_ml.scid = :arg_scid) Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致指令单完成数量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using sqlca;
- ELSEIF arg_ifcommit THEN
- COMMIT Using sqlca;
- END IF
- p_reset()
- Return (rslt)
- end function
- on uo_order_ml.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_ml.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;arg_msg_str = ''
- String str_optionvalue,arg_msg
- f_get_sys_option_value('230',str_optionvalue,arg_msg)
- uo_option_if_oa_order_ml = Long(str_optionvalue)
- f_get_sys_option_value('225',str_optionvalue,arg_msg)
- uo_option_order_ml_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('231',str_optionvalue,arg_msg)
- uo_option_if_oa_order_zl = Long(str_optionvalue)
- f_get_sys_option_value('226',str_optionvalue,arg_msg)
- uo_option_order_ml_zl_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('074',str_optionvalue,arg_msg)
- uo_option_order_bh_use_yc = Long(str_optionvalue)
- f_get_sys_option_value('013',str_optionvalue,arg_msg)
- uo_option_def_bom = Long(str_optionvalue)
- f_get_sys_option_value('143',str_optionvalue,arg_msg)
- uo_option_order_mtrlware = Long(str_optionvalue)
- f_get_sys_option_value('138',str_optionvalue,arg_msg)
- uo_option_inware_mtrlcuscode = Long(str_optionvalue)
- f_get_sys_option_value('222',str_optionvalue,arg_msg)
- uo_option_order_ml_save_reccl = Long(str_optionvalue)
- f_get_sys_option_value('186',str_optionvalue,arg_msg)
- uo_option_order_ml_add_use_wkp = Long(str_optionvalue)
- f_get_sys_option_value('112',str_optionvalue,arg_msg)
- uo_option_ifovertask_cp = Long(str_optionvalue)
- f_get_sys_option_value('202',str_optionvalue,arg_msg)
- uo_option_if_taskwork_acmpqty = Long(str_optionvalue)
- f_get_sys_option_value('047',str_optionvalue,arg_msg)
- uo_option_ml_wkp = Long(str_optionvalue)
- f_get_sys_option_value('126',str_optionvalue,arg_msg)
- uo_option_auto_wrkdate = Long(str_optionvalue)
- f_get_sys_option_value('180',str_optionvalue,arg_msg)
- uo_option_use_sc_date = Long(str_optionvalue)
- f_get_sys_option_value('061',str_optionvalue,arg_msg)
- uo_option_unite_order_ml = Long(str_optionvalue)
- f_get_sys_option_value('071',str_optionvalue,arg_msg)
- uo_option_unite_order_ml_zl = Long(str_optionvalue)
- f_get_sys_option_value('065',str_optionvalue,arg_msg)
- uo_option_order_ml_scll_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('054',str_optionvalue,arg_msg)
- uo_option_autocreate_buy = Long(str_optionvalue)
- f_get_sys_option_value('068',str_optionvalue,arg_msg)
- uo_option_autocreate_wfjg = Long(str_optionvalue)
- f_get_sys_option_value('012',str_optionvalue,arg_msg)
- uo_option_def_workprice = Long(str_optionvalue)
- f_get_sys_option_value('148',str_optionvalue,arg_msg)
- uo_option_orderrqwp_union = Long(str_optionvalue)
- f_get_sys_option_value('111',str_optionvalue,arg_msg)
- uo_option_requestbuy_hz = Long(str_optionvalue)
- //f_get_sys_option_value('080',str_optionvalue,arg_msg)
- //uo_option_scll_rate = Long(str_optionvalue)
- //
- f_get_sys_option_value('160',str_optionvalue,arg_msg)
- uo_option_skl_overscll = Long(str_optionvalue)
- f_get_sys_option_value('197',str_optionvalue,arg_msg)
- uo_option_skl_overscll_rate = Long(str_optionvalue)
- f_get_sys_option_value('159',str_optionvalue,arg_msg)
- uo_option_use_suliao = Long(str_optionvalue)
- f_get_sys_option_value('161',str_optionvalue,arg_msg)
- uo_option_management_cost = Long(str_optionvalue)
- f_get_sys_option_value('162',str_optionvalue,arg_msg)
- uo_option_ect_price = Long(str_optionvalue)
- f_get_sys_option_value('073',str_optionvalue,arg_msg)
- uo_option_order_ml_use_zl = Long(str_optionvalue)
- f_get_sys_option_value('233',str_optionvalue,arg_msg)
- uo_option_use_workgroup_tree = Long(str_optionvalue)
- f_get_sys_option_value('234',str_optionvalue,arg_msg)
- uo_option_scllaudit_autobuild = Long(str_optionvalue)
- f_get_sys_option_value('239',str_optionvalue,arg_msg)
- uo_option_def_mtrlwkp = Long(str_optionvalue)
- f_get_sys_option_value('245',str_optionvalue,arg_msg)
- uo_option_scllaudit_autobuild_tech = Long(str_optionvalue)
- f_get_sys_option_value('255',str_optionvalue,arg_msg)
- uo_option_auto_finish_zl = Long(str_optionvalue)
- f_get_sys_option_value('270',str_optionvalue,arg_msg)
- uo_option_update_lockdateflag = Long(str_optionvalue)
- f_get_sys_option_value('289',str_optionvalue,arg_msg)
- uo_option_packpro2_not_use_pack1 = Long(str_optionvalue)
- f_get_sys_option_value('304',str_optionvalue,arg_msg)
- uo_option_order_capacity = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('313',str_optionvalue,arg_msg)
- uo_option_order_ml_zl_checkdate = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('316',str_optionvalue,arg_msg)
- uo_option_order_zl_3_day = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('121',str_optionvalue,arg_msg)
- uo_option_requestwfjg_hz = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('333',str_optionvalue,arg_msg)
- uo_option_zlmtrlchange_wx_update_rqwfjg = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('340',str_optionvalue,arg_msg)
- uo_option_ifpackpro2_if_no_pack2 = Long(str_optionvalue)
- SELECT wrkgrpid INTO :ins_produce_wrkgrpid_bj
- FROM u_sc_wkp
- Where ifbj = 1;
- IF sqlca.SQLCode <> 0 THEN
- ins_produce_wrkgrpid_bj = 0
- END IF
- str_optionvalue = ''
- f_get_sys_option_value('379',str_optionvalue,arg_msg)
- uo_option_scll_back_check = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('383',str_optionvalue,arg_msg)
- uo_option_autostop_porder = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('388',str_optionvalue,arg_msg)
- uo_option_bujian_notmrpqty = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('398',str_optionvalue,arg_msg)
- uo_option_orderrqwp_auditgj = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('403',str_optionvalue,arg_msg)
- uo_option_order_zl_auto_getbar = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('417',str_optionvalue,arg_msg)
- uo_option_canpack_ifzanyong = Long(str_optionvalue)
- end event
|