1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055 |
- $PBExportHeader$uo_order_wfjg.sru
- forward
- global type uo_order_wfjg from nonvisualobject
- end type
- end forward
- global type uo_order_wfjg from nonvisualobject
- end type
- global uo_order_wfjg uo_order_wfjg
- type variables
- PUBLIC PROTECTEDWRITE Long scid
- PUBLIC PROTECTEDWRITE Long wfjgid
- PUBLIC PROTECTEDWRITE String taskcode
- PUBLIC PROTECTEDWRITE DateTime opdate
- PUBLIC PROTECTEDWRITE String operator
- PUBLIC PROTECTEDWRITE Int status
- PUBLIC PROTECTEDWRITE DateTime accomplishdate
- PUBLIC PROTECTEDWRITE String permit_emp
- PUBLIC PROTECTEDWRITE Long ctmint
- Long sptid
- String assign_emp
- string reason
- int billtype //0-正常;1-异常; 2-退回;4-返工;9-盘盈
- DateTime requiredate
- String dscrp
- string relcode
- decimal dec_round = 2 //计算发出明细保留小数位, 取自外协订单界面
- int caudit_checkauto
- int uo_option_wfjg_outmx,uo_option_autocreate_outware
- int uo_option_ifovertask,uo_option_2unit
- int uo_option_update_rqmtrlqty_wfjg
- Transaction commit_transaction
- PRIVATE:
- s_order_wfjgmx wfjgmx[] //明细结构数组
- s_order_wfjgmx_out wfjgmx_out[],wfjghz_out[] //明细结构数组
- Long it_mxbt = 0 //明细结构数组末指针
- Long it_mxbt_out = 0 //明细结构数组末指针
- long it_mxbt_out_hz = 0
- Boolean it_newbegin = TRUE //新建标志
- Boolean it_updatebegin = FALSE//修改标志
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- public function integer newbegin (long arg_scid, ref string arg_msg)
- public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer add_dscrp (long arg_scid, long arg_wfjgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancelpermit (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer checkmxmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer firstpermit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer trycmplbuytask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg)
- public function integer checkmxmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer wasteqty (long arg_scid, decimal arg_wasteqty, long arg_wfjg_orderid, long arg_printid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, decimal arg_rewfjgqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_splitqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_splitqty, datetime arg_newdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopqty_out (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx_out (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, long arg_storageid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_uqty, decimal arg_rate, long arg_relprintid, long arg_wrkgrpid)
- public function integer addmx_sptcheckqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishmx (long arg_scid, long arg_wfjgid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopqty_out_mx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl_out_mx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopbuytask (long arg_scid, long arg_wfjgid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_jgdscrp, string arg_status, string arg_woodcode, string arg_pcode, long arg_wrkgrpid, long arg_relwfjgid, long arg_relprintid, string arg_pfcode, string arg_unit, decimal arg_uqty, decimal arg_rate, decimal arg_taxrate, string arg_plancode, long arg_relwfjgid2, long arg_relprintid2)
- public function integer uof_add_thqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_thqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_nonconsignedqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (s_order_wfjgmx s_mx, ref string arg_msg)
- public function integer stopaddqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, decimal arg_rewfjgqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_chk_ware_outhz (long arg_row, ref string arg_msg)
- public function integer uof_create_outware_wfjg (long arg_scid, string arg_emp, ref string arg_msg)
- public function integer uof_destroy_outware_wfjg (ref string arg_msg)
- public function integer uof_add_order_acmpqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_order_stopqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- protected function integer uof_add_dstrqty (long arg_scid, long arg_wfjgid, long arg_printid, long arg_orderid, long arg_mtrlid, string arg_pfcode, decimal arg_buyqty, decimal arg_addqty, integer arg_type, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- scid = 0
- wfjgid = 0
- taskcode = ''
- reason = ''
- operator = ''
- status = 0
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt = 0
- it_mxbt_out = 0
- it_mxbt_out_hz = 0
- RETURN 1
- end function
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long cnt = 0,i,j
- Long ls_newwfjgid
- DateTime server_datetime
- String ls_sccode
- Long ll_fp_array,ll_fp
- 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 = commit_transaction
- 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(commit_transaction)
- IF uo_option_wfjg_outmx = -1000 THEN
- rslt = 0
- arg_msg = '选项:[086]外协订单必须有发出明细,外协收货单必须有外协商库存明细,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(assign_emp) THEN assign_emp = ''
- IF IsNull(arg_operator) THEN arg_operator = ''
- IF IsNull(reason) THEN reason = ''
- //====================================================================
- // script - save ( ref string arg_msg, boolean arg_ifcommit )
- // reason:
- //--------------------------------------------------------------------
- // modified by: yyx date: 2004.02.20
- //--------------------------------------------------------------------
- IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
- //====================================================================
- operator = arg_operator
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- IF Trim(assign_emp) = '' THEN
- rslt = 0
- arg_msg = "请输入外加工负责人"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_spt
- Where sptid = :sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,供应商资料"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "供应商未定义或错误"
- GOTO ext
- END IF
- IF billtype = 1 And reason = '' THEN
- rslt = 0
- arg_msg = '请选择原因'
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF f_check_inoutdate(0,requiredate,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arg_msg = "没有正确外加工计划明细内容"
- GOTO ext
- END IF
- IF uo_option_wfjg_outmx = 1 And it_mxbt_out = 0 THEN
- rslt = 0
- arg_msg = "没有正确的发出明细内容"
- GOTO ext
- END IF
- IF uo_option_wfjg_outmx = 1 THEN
- FOR i = 1 To it_mxbt
- FOR j = 1 To it_mxbt_out
- IF wfjgmx[i].printid = wfjgmx_out[j].relprintid THEN
- GOTO _next_check
- END IF
- NEXT
-
- rslt = 0
- arg_msg = '收货明细第'+String(wfjgmx[i].printid)+'行,没有对应的发出明细,请检查'
- GOTO ext
- _next_check:
- NEXT
- FOR j = 1 To it_mxbt_out
- FOR i = 1 To it_mxbt
- IF wfjgmx[i].printid = wfjgmx_out[j].relprintid THEN
- GOTO _next_check2
- END IF
- NEXT
-
- rslt = 0
- arg_msg = '发出明细第'+String(wfjgmx[i].printid)+'行,没有对应的收货明细,请检查'
- GOTO ext
- _next_check2:
- NEXT
- END IF
- //必须选物料清单或计划 而且 必须有发出明细的 比较清单数量也必须相应; 2013-06-05
- IF sys_option_wfjg_out_cmp = 1 And uo_option_wfjg_outmx = 1 THEN
- Long ll_mtrlid_in, ll_mtrlid_out
- Decimal lde_qty_in, lde_qty_out, lde_qty_out_pf
- String ls_pfcode
- Decimal lde_truerqqty_in_pf, lde_rqqty_out_pf, lde_sonscale
- Boolean lb_find = False
-
- FOR i = 1 To it_mxbt
- ll_mtrlid_in = wfjgmx[i].mtrlid
- lde_qty_in = wfjgmx[i].qty
- ls_pfcode = wfjgmx[i].pfcode
- lb_find = False
-
- FOR j = 1 To it_mxbt_out
- IF wfjgmx[i].printid = wfjgmx_out[j].relprintid THEN
- ll_mtrlid_out = wfjgmx_out[j].mtrlid
- lde_qty_out = wfjgmx_out[j].qty
- lde_qty_out_pf = 0
- lb_find = True
-
- IF ll_mtrlid_in = ll_mtrlid_out THEN
- lde_qty_out_pf = lde_qty_in //返工类型, 发出物料和收货物料为同一种的,只检查数量关系
- lde_sonscale = 1
- ELSE
- IF wfjgmx[i].orderid > 0 THEN //查主计划
-
- SELECT top 1 u_OrderRqMtrl_tree.truerqqty
- INTO :lde_truerqqty_in_pf
- FROM u_OrderRqMtrl_tree
- WHERE ( u_OrderRqMtrl_tree.scid = :scid)
- AND ( u_OrderRqMtrl_tree.orderid = :wfjgmx[i].orderid)
- AND ( u_OrderRqMtrl_tree.mtrlid = :ll_mtrlid_in )
- And ( u_OrderRqMtrl_tree.pfcode = :ls_pfcode ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细行:'+String(wfjgmx[i].printid)+',查询对应的主计划运算结果资料失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT top 1 u_OrderRqMtrl_tree.rqqty, u_OrderRqMtrl_tree.sonscale
- INTO :lde_rqqty_out_pf, :lde_sonscale
- FROM u_OrderRqMtrl_tree
- WHERE ( u_OrderRqMtrl_tree.scid = :scid)
- AND ( u_OrderRqMtrl_tree.orderid = :wfjgmx[i].orderid)
- AND ( u_OrderRqMtrl_tree.pmtrlid = :ll_mtrlid_in )
- AND ( u_OrderRqMtrl_tree.mtrlid = :ll_mtrlid_out ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细行:'+String(wfjgmx[i].printid)+',对应发出明细行:'+String(wfjgmx_out[j].printid)+',查询对应的主计划运算结果资料失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF lde_sonscale = 0 THEN
- lde_sonscale = lde_rqqty_out_pf / lde_truerqqty_in_pf
- END IF
-
- lde_qty_out_pf = Round(lde_qty_in * lde_sonscale, dec_round)
- ELSE
-
-
- SELECT :lde_qty_in * u_prdpf.Sonscale / (1 - u_PrdPF.sonloss) + u_PrdPF.SonDECLoss, u_prdpf.Sonscale
- INTO :lde_qty_out_pf, :lde_sonscale
- FROM u_PrdPF
- WHERE ( u_PrdPF.mtrlid = :ll_mtrlid_in )
- AND ( u_PrdPF.sonmtrlid = :ll_mtrlid_out )
- And ( u_prdpf.pfcode = :ls_pfcode ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细行:'+String(wfjgmx[i].printid)+',对应发出明细行:'+String(wfjgmx_out[j].printid)+',查询对应的物料清单资料失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- lde_qty_out_pf = Round(lde_qty_out_pf, dec_round)
- END IF
- END IF
-
-
- IF lde_qty_out <> lde_qty_out_pf THEN
- Decimal lde_tmprate
- if lde_sonscale = 1 then
- lde_tmprate = 0
- else
- //临时,比例在99%以上的算正确
- IF lde_qty_out > lde_qty_out_pf THEN
- lde_tmprate = lde_qty_out_pf / lde_qty_out
- ELSE
- lde_tmprate = lde_qty_out / lde_qty_out_pf
- END IF
- end if
- IF lde_tmprate < 0.99 THEN
- rslt = 0
- arg_msg = '系统选项[086,253]限制收货明细与发出明细必须跟物料清单或主计划运算对应~r~n收货明细行'+String(wfjgmx[i].printid)+',对应发出明细行:'+String(wfjgmx_out[j].printid)+',数量比例与限制不相等,请检查'
- GOTO ext
- END IF
- END IF
-
- END IF
- NEXT
-
- IF Not lb_find THEN
- rslt = 0
- arg_msg = '系统选项[086,253]限制收货明细与供应商库存明细必须跟物料清单或主计划运算对应~r~n收货明细行'+String(wfjgmx[i].printid)+',找不到对应的发出明细,请检查'
- GOTO ext
- END IF
-
- NEXT
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :operator Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- opdate = server_datetime //填写单据建立时间(最近修改时间)
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF wfjgid = 0 THEN //新建
- ls_newwfjgid = f_sys_scidentity(scid,"u_order_wfjg","wfjgid",arg_msg,True,id_sqlca) //数据commit事务)
- IF ls_newwfjgid <= 0 THEN
- rslt = 0
- ROLLBACK;
- GOTO ext
- END IF
-
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF billtype = 2 THEN
- taskcode = getid(scid,ls_sccode + 'WB',Date(server_datetime),False,commit_transaction)
- ELSEIF billtype = 4 THEN
- taskcode = getid(scid,ls_sccode + 'WD',Date(server_datetime),False,commit_transaction)
- ELSE //IF billtype = 0 Or billtype = 1 Or billtype = 9 THEN
- taskcode = getid(scid,ls_sccode + 'WJ',Date(server_datetime),False,commit_transaction)
- END IF
-
-
-
- IF taskcode = "err" THEN
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取外加工编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_order_wfjg
- ( scid,
- wfjgid,
- taskcode,
- sptid,
- requiredate,
- status,
- opemp,
- assign_emp,
- permit_emp,
- dscrp,
- opdate,
- billtype,
- reason,
- relcode)
- VALUES ( :scid,
- :ls_newwfjgid,
- :taskcode,
- :sptid,
- :requiredate,
- :status,
- :operator,
- :assign_emp,
- :permit_emp,
- :dscrp,
- :opdate,
- :billtype,
- :reason,
- :relcode) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- wfjgid = ls_newwfjgid
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_order_wfjg
- SET sptid = :sptid,
- requiredate = :requiredate,
- assign_emp = :assign_emp,
- dscrp = :dscrp,
- moddate = getdate(),
- modemp = :publ_operator,
- billtype = :billtype,
- reason = :reason,
- relcode = :relcode
- WHERE u_order_wfjg.wfjgid = :wfjgid
- And u_order_wfjg.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_order_wfjgmx
- WHERE u_order_wfjgmx.wfjgid = :wfjgid
- And u_order_wfjgmx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有分配计划明细
- ds_fp_plan_del.Retrieve(scid,wfjgid,3)
- 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_wfjgmx_out_mx
- WHERE u_order_wfjgmx_out_mx.wfjgid = :wfjgid
- And u_order_wfjgmx_out_mx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细/计划出操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_order_wfjgmx_out
- WHERE u_order_wfjgmx_out.wfjgid = :wfjgid
- And u_order_wfjgmx_out.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细/计划出操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- END IF
- FOR i = 1 To it_mxbt
- INSERT INTO u_order_wfjgmx
- ( scid,
- wfjgid,
- mtrlid,
- qty,
- price,
- rebate,
- dscrp,
- printid,
- requiredate,
- orderid,
- storageid,
- jgdscrp,
- status,
- iforder,
- woodcode,
- pcode,
- wrkgrpid,
- relwfjgid,
- relprintid,
- pfcode,
- relcode,
- unit,
- uqty,
- rate,
- taxrate,
- plancode,
- relwfjgid2,
- relprintid2,
- thtype)
- VALUES (:scid,
- :wfjgid,
- :wfjgmx[i].mtrlid,
- :wfjgmx[i].qty,
- :wfjgmx[i].price,
- :wfjgmx[i].rebate,
- :wfjgmx[i].dscrp,
- :wfjgmx[i].printid,
- :wfjgmx[i].requiredate,
- :wfjgmx[i].orderid,
- :wfjgmx[i].storageid,
- :wfjgmx[i].jgdscrp,
- :wfjgmx[i].status,
- :wfjgmx[i].iforder,
- :wfjgmx[i].woodcode,
- :wfjgmx[i].pcode,
- :wfjgmx[i].wrkgrpid,
- :wfjgmx[i].relwfjgid,
- :wfjgmx[i].relprintid,
- :wfjgmx[i].pfcode,
- :wfjgmx[i].relcode,
- :wfjgmx[i].unit,
- :wfjgmx[i].uqty,
- :wfjgmx[i].rate,
- :wfjgmx[i].taxrate,
- :wfjgmx[i].plancode,
- :wfjgmx[i].relwfjgid2,
- :wfjgmx[i].relprintid2,
- :wfjgmx[i].thtype) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN wfjgid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF wfjgmx[i].iffp = 1 And wfjgmx[i].orderid > 0 THEN
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 0
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 3
- s_fp_plan.plankind_relbillid[ll_fp_array] = wfjgid
- s_fp_plan.plankind_relprintid[ll_fp_array] = wfjgmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.relbillid[ll_fp_array] = wfjgmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = wfjgmx[i].qty
- s_fp_plan.status[ll_fp_array] = wfjgmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = wfjgmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = wfjgmx[i].pcode
- END IF
- NEXT
- FOR j = 1 To it_mxbt_out
- INSERT INTO u_order_wfjgmx_out_mx
- ( scid,
- wfjgid,
- mtrlid,
- qty,
- price,
- dscrp,
- printid,
- storageid,
- status,
- woodcode,
- pcode,
- unit,
- uqty,
- rate,
- relprintid,
- wrkgrpid)
- VALUES (:scid,
- :wfjgid,
- :wfjgmx_out[j].mtrlid,
- :wfjgmx_out[j].qty,
- :wfjgmx_out[j].price,
- :wfjgmx_out[j].dscrp,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].storageid,
- :wfjgmx_out[j].status,
- :wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,
- :wfjgmx_out[j].unit,
- :wfjgmx_out[j].uqty,
- :wfjgmx_out[j].rate,
- :wfjgmx_out[j].relprintid,
- :wfjgmx_out[j].wrkgrpid
- ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN wfjgid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入发出明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- FOR j = 1 To it_mxbt_out_hz
- INSERT INTO u_order_wfjgmx_out
- ( scid,
- qty,
- price,
- mtrlid,
- wfjgid,
- dscrp,
- printid,
- storageid,
- status,
- woodcode,
- pcode,
- unit,
- uqty,
- rate)
- VALUES (:scid,
- :wfjghz_out[j].qty,
- :wfjghz_out[j].price,
- :wfjghz_out[j].mtrlid,
- :wfjgid,
- :wfjghz_out[j].dscrp ,
- :wfjghz_out[j].printid,
- :wfjghz_out[j].storageid,
- :wfjghz_out[j].status,
- :wfjghz_out[j].woodcode,
- :wfjghz_out[j].pcode,
- :wfjghz_out[j].unit,
- :wfjghz_out[j].uqty,
- :wfjghz_out[j].rate) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN wfjgid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入发出汇总操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- 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
- IF it_newbegin THEN wfjgid = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_fp_plan
- Destroy ds_fp_plan_del
- Return(rslt)
- end function
- public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
- //0 fail 1 success
- long rslt=1,CNT=0
- if arg_scid < 0 then
- arg_msg = '请选择分部'
- rslt = 0
- goto ext
- end if
- p_reset()
- it_newbegin=TRUE
- it_updatebegin=FALSE
- scid=arg_scid
- ext:
- if rslt = 0 then p_reset()
- return rslt
- end function
- public function integer p_getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1
- SELECT wfjgID,
- TaskCode,
- sptID,
- requiredate,
- accomplishdate,
- Status,
- Opemp,
- Assign_Emp,
- Permit_Emp,
- Dscrp,
- opdate ,
- billtype,
- reason ,
- ctmint,
- relcode
- INTO :wfjgID,
- :TaskCode,
- :sptID,
- :requiredate,
- :accomplishdate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Permit_Emp,
- :Dscrp,
- :opdate,
- :billtype,
- :reason,
- :ctmint,
- :relcode
- FROM u_order_wfjg
- WHERE u_order_wfjg.wfjgID = :arg_wfjgID
- And u_order_wfjg.scid = :arg_scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询外加工计划内容失败(错误外加工计划唯一码)'
- GOTO ext
- END IF
- scid = arg_scid
- ext:
- RETURN rslt
- end function
- public function integer getinfo (long arg_scid, long arg_wfjgid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0,j = 1,k = 1
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT u_order_wfjgmx.mtrlid,
- u_order_wfjgmx.qty,
- u_order_wfjgmx.price,
- u_order_wfjgmx.rebate,
- u_order_wfjgmx.dscrp,
- u_mtrldef.mtrlcode,
- u_order_wfjgmx.printid,
- u_order_wfjgmx.orderid,
- u_order_wfjgmx.storageid,
- u_order_wfjgmx.jgdscrp,
- u_order_wfjgmx.iforder,
- u_order_wfjgmx.status,
- u_order_wfjgmx.woodcode,
- u_order_wfjgmx.pcode,
- u_order_wfjgmx.wrkGrpid,
- u_order_wfjgmx.relwfjgid,
- u_order_wfjgmx.relprintid,
- u_order_wfjgmx.pfcode,
- u_order_wfjgmx.unit,
- u_order_wfjgmx.uqty,
- u_order_wfjgmx.rate,
- u_order_wfjgmx.taxrate,
- u_order_wfjgmx.plancode,
- u_order_wfjgmx.relwfjgid2,
- u_order_wfjgmx.relprintid2,
- u_order_wfjgmx.thtype
- FROM u_order_wfjgmx,u_mtrldef
- WHERE u_order_wfjgmx.wfjgid = :arg_wfjgid AND
- u_order_wfjgmx.scid = :arg_scid AND
- u_order_wfjgmx.mtrlid = u_mtrldef.mtrlid Using commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,:wfjgmx[i].qty,:wfjgmx[i].price,:wfjgmx[i].rebate,
- :wfjgmx[i].dscrp,:wfjgmx[i].mtrlcode,
- :wfjgmx[i].printid,:wfjgmx[i].orderid,
- :wfjgmx[i].storageid,:wfjgmx[i].jgdscrp,:wfjgmx[i].iforder,
- :wfjgmx[i].status,:wfjgmx[i].woodcode,:wfjgmx[i].pcode,
- :wfjgmx[i].wrkGrpid,:wfjgmx[i].relwfjgid,
- :wfjgmx[i].relprintid,:wfjgmx[i].pfcode,
- :wfjgmx[i].unit,:wfjgmx[i].uqty,:wfjgmx[i].rate,:wfjgmx[i].taxrate,:wfjgmx[i].plancode,:wfjgmx[i].relwfjgid2,
- :wfjgmx[i].relprintid2,:wfjgmx[i].thtype;
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_inwaermx INTO :wfjgmx[i].mtrlid,:wfjgmx[i].qty,:wfjgmx[i].price,:wfjgmx[i].rebate,
- :wfjgmx[i].dscrp,:wfjgmx[i].mtrlcode,
- :wfjgmx[i].printid,:wfjgmx[i].orderid,
- :wfjgmx[i].storageid,:wfjgmx[i].jgdscrp,:wfjgmx[i].iforder,
- :wfjgmx[i].status,:wfjgmx[i].woodcode,:wfjgmx[i].pcode,
- :wfjgmx[i].wrkGrpid,:wfjgmx[i].relwfjgid,
- :wfjgmx[i].relprintid,:wfjgmx[i].pfcode,
- :wfjgmx[i].unit,:wfjgmx[i].uqty,:wfjgmx[i].rate,:wfjgmx[i].taxrate,:wfjgmx[i].plancode,:wfjgmx[i].relwfjgid2,
- :wfjgmx[i].relprintid2,:wfjgmx[i].thtype;
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_wfjgmx
- WHERE u_order_wfjgmx.wfjgid = :arg_wfjgid
- And u_order_wfjgmx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划收货明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划收货明细"
- GOTO ext
- END IF
- it_mxbt = i - 1
- //
- //用游标读取明细
- DECLARE cur_inwaermx_out CURSOR FOR
- SELECT u_order_wfjgmx_out_mx.mtrlid,
- u_order_wfjgmx_out_mx.qty,
- u_order_wfjgmx_out_mx.price,
- u_order_wfjgmx_out_mx.dscrp,
- u_mtrldef.mtrlcode,
- u_mtrldef.unit,
- u_order_wfjgmx_out_mx.printid,
- u_order_wfjgmx_out_mx.storageid,
- u_order_wfjgmx_out_mx.status,
- u_order_wfjgmx_out_mx.woodcode,
- u_order_wfjgmx_out_mx.pcode,
- u_order_wfjgmx_out_mx.unit,
- u_order_wfjgmx_out_mx.uqty,
- u_order_wfjgmx_out_mx.rate,
- u_order_wfjgmx_out_mx.relprintid,
- u_order_wfjgmx_out_mx.wrkgrpid
- FROM u_order_wfjgmx_out_mx,u_mtrldef
- WHERE u_order_wfjgmx_out_mx.wfjgid = :arg_wfjgid AND
- u_order_wfjgmx_out_mx.scid = :arg_scid AND
- u_order_wfjgmx_out_mx.mtrlid = u_mtrldef.mtrlid
- Using commit_transaction;
-
- OPEN cur_inwaermx_out;
- FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,:wfjgmx_out[j].qty,
- :wfjgmx_out[j].price,
- :wfjgmx_out[j].dscrp,:wfjgmx_out[j].mtrlcode,:wfjgmx_out[j].unit_def,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].storageid,
- :wfjgmx_out[j].status,:wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,:wfjgmx_out[j].unit,:wfjgmx_out[j].uqty,:wfjgmx_out[j].rate,:wfjgmx_out[j].relprintid,
- :wfjgmx_out[j].wrkGrpid;
- DO WHILE commit_transaction.SQLCode = 0
- j++
- FETCH cur_inwaermx_out INTO :wfjgmx_out[j].mtrlid,:wfjgmx_out[j].qty,
- :wfjgmx_out[j].price,
- :wfjgmx_out[j].dscrp,:wfjgmx_out[j].mtrlcode,:wfjgmx_out[j].unit_def,
- :wfjgmx_out[j].printid,
- :wfjgmx_out[j].storageid,
- :wfjgmx_out[j].status,:wfjgmx_out[j].woodcode,
- :wfjgmx_out[j].pcode,:wfjgmx_out[j].unit,:wfjgmx_out[j].uqty,:wfjgmx_out[j].rate,:wfjgmx_out[j].relprintid,
- :wfjgmx_out[j].wrkGrpid;
- LOOP
- CLOSE cur_inwaermx_out;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_wfjgmx_out_mx
- WHERE u_order_wfjgmx_out_mx.wfjgid = :arg_wfjgid
- And u_order_wfjgmx_out_mx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划发出明细数量"
- GOTO ext
- END IF
- IF j <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划发出明细"
- GOTO ext
- END IF
- it_mxbt_out = j - 1
- //
- //用游标读取明细
- DECLARE cur_out_hz CURSOR FOR
- SELECT u_order_wfjgmx_out.mtrlid,
- u_order_wfjgmx_out.qty,
- u_order_wfjgmx_out.price,
- u_order_wfjgmx_out.dscrp,
- u_mtrldef.mtrlcode,
- u_mtrldef.unit,
- u_order_wfjgmx_out.printid,
- u_order_wfjgmx_out.storageid,
- u_order_wfjgmx_out.status,
- u_order_wfjgmx_out.woodcode,
- u_order_wfjgmx_out.pcode,
- u_order_wfjgmx_out.unit,
- u_order_wfjgmx_out.uqty,
- u_order_wfjgmx_out.rate
- FROM u_order_wfjgmx_out,u_mtrldef
- WHERE u_order_wfjgmx_out.wfjgid = :arg_wfjgid AND
- u_order_wfjgmx_out.scid = :arg_scid AND
- u_order_wfjgmx_out.mtrlid = u_mtrldef.mtrlid
- Using commit_transaction;
-
- OPEN cur_out_hz;
- FETCH cur_out_hz INTO :wfjghz_out[k].mtrlid,:wfjghz_out[k].qty,
- :wfjghz_out[k].price,
- :wfjghz_out[k].dscrp,:wfjghz_out[k].mtrlcode,:wfjghz_out[k].unit_def,
- :wfjghz_out[k].printid,
- :wfjghz_out[k].storageid,
- :wfjghz_out[k].status,:wfjghz_out[k].woodcode,
- :wfjghz_out[k].pcode,:wfjghz_out[k].unit,:wfjghz_out[k].uqty,:wfjghz_out[k].rate;
- DO WHILE commit_transaction.SQLCode = 0
- k++
- FETCH cur_out_hz INTO :wfjghz_out[k].mtrlid,:wfjghz_out[k].qty,
- :wfjghz_out[k].price,
- :wfjghz_out[k].dscrp,:wfjghz_out[k].mtrlcode,:wfjghz_out[k].unit_def,
- :wfjghz_out[k].printid,
- :wfjghz_out[k].storageid,
- :wfjghz_out[k].status,:wfjghz_out[k].woodcode,
- :wfjghz_out[k].pcode,:wfjghz_out[k].unit,:wfjghz_out[k].uqty,:wfjghz_out[k].rate;
- LOOP
- CLOSE cur_out_hz;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_wfjgmx_out
- WHERE u_order_wfjgmx_out.wfjgid = :arg_wfjgid
- And u_order_wfjgmx_out.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划发出汇总数量"+commit_transaction.sqlerrtext
- GOTO ext
- END IF
- IF k <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,外协计划发出汇总"
- GOTO ext
- END IF
- it_mxbt_out_hz = k - 1
- //
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_scid, long arg_wfjgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
- //0 fail 1 SUCCESS
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_order_wfjg
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_order_wfjg.wfjgid = :arg_wfjgid
- AND u_order_wfjg.scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加外加工计划备注操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- DSCRP = DSCRP+' '+arg_newdescppart
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer cancel (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
- //0 FAIL, 1 SUCCESS
- Int rslt = 1
- Long ll_fp
- uo_mtrlware_assign uo_fp_plan
- uo_fp_plan = Create uo_mtrlware_assign
- uo_fp_plan.commit_transaction = commit_transaction
- 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(commit_transaction)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = "外加工计划已经审核,不可以删除"
- GOTO ext
- END IF
- //删除原有分配计划明细
- ds_fp_plan_del.Retrieve(arg_scid,arg_wfjgid,3)
- 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_wfjgMx
- WHERE u_order_wfjgMx.wfjgid = :arg_wfjgid
- And u_order_wfjgMx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协订单收货明细操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_order_wfjgMx_out
- WHERE u_order_wfjgMx_out.wfjgid = :arg_wfjgid
- And u_order_wfjgMx_out.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协订单发出明细操作失败"+"~n"+SQLCA.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- DELETE FROM u_order_wfjgMx_out_mx
- WHERE u_order_wfjgMx_out_mx.wfjgid = :arg_wfjgid
- And u_order_wfjgMx_out_mx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协订单发出汇总操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_wfjg
- WHERE u_order_wfjg.wfjgid = :arg_wfjgid
- And u_order_wfjg.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除外协订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- it_newbegin = False
- it_updatebegin = False
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_fp_plan
- Destroy ds_fp_plan_del
- p_reset()
- Return (rslt)
- end function
- public function integer cancelpermit (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- Long ll_i
- Long ll_lp,ll_k, ll_j, ll_m
- String ls_mtrlcode_out
- Decimal ld_costamt_out ,ld_qty_out,ld_cost_out
- Long ll_wrkgrpid_out,ll_mtrlid_out
- String ls_status_out,ls_woodcode_out,ls_pcode_out
- Decimal ld_overqty
- Long ll_workgroupid
- Long ll_cnt_order,ll_orderid,ll_wrkGrpid,ll_mtrlid,ll_row_f,ll_mtrlid_order
- Int li_ordertype_order,li_ifwfjgorder
- String ls_wrkgrpname
- DateTime nulldate
- SetNull(nulldate)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_autocreate_outware = -1000 THEN
- rslt = 0
- arg_msg = '选项:[087]外协订单审核自动生成仓库外协发出单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_wfjg = -1000 THEN
- rslt = 0
- arg_msg = '选项:[343]外协订单审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- uo_request_wfjg uo_wfjg
- uo_wfjg = Create uo_request_wfjg
- uo_wfjg.commit_transaction = sqlca
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- datastore ds_mrpmx
- ds_mrpmx = Create datastore
- ds_mrpmx.DataObject = 'ds_order_ml_mrpmx'
- ds_mrpmx.SetTransObject(sqlca)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协计划唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 2 THEN //退回单,自动完成
- IF Status = 5 THEN
- UPDATE u_order_wfjg
- SET Status = 1,
- accomplishdate = NULL,
- finishemp = ''
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- And Status = 5 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "外协订单取消完成操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- Status = 1
- END IF
- END IF
- IF Status <> 1 THEN
- rslt = 0
- arg_msg = "外协计划只有在已审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- IF caudit_checkauto = 0 And &
- Trim(dscrp) = '返工单审核自动生成的外协订单' THEN
- arg_msg = '该单据为返工单审核自动生成的外协订单,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- IF caudit_checkauto = 0 And &
- Trim(dscrp) = '盘盈单审核自动生成的外协订单' THEN
- arg_msg = '该单据为盘盈单审核自动生成的外协订单,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjgmx_in_aft
- WHERE ( ow_wfjgmx_in_aft.scid = :arg_scid )
- And ( ow_wfjgmx_in_aft.relid = :arg_wfjgid ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询外协计划是否已开收货单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "外加工计划已经有相关收货单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_sptcheck_mx INNER JOIN
- u_sptcheck ON u_sptcheck_mx.billid = u_sptcheck.billid
- WHERE u_sptcheck_mx.reltaskid = :arg_wfjgid
- AND u_sptcheck.scid = :arg_scid
- AND u_sptcheck.billtype = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询外协计划是否已开质检单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "外加工计划已经有相关外协质检单,不可以撤消审核"
- GOTO ext
- END IF
- IF uo_option_autocreate_outware = 1 THEN
- //如果使用订单自动生成发出单,则检查是否有非自动生成的发出单(原则上没有)
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjgmx_out,ow_wfjg_out
- WHERE ( ow_wfjgmx_out.scid = :arg_scid )
- AND ( ow_wfjgmx_out.relid = :arg_wfjgid )
- AND (ow_wfjg_out.scid = ow_wfjgmx_out.scid)
- AND (ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid)
- And (ow_wfjg_out.relid <> :arg_wfjgid ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询外协计划是否已开发货单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjgmx_out
- WHERE ( ow_wfjgmx_out.scid = :arg_scid )
- And ( ow_wfjgmx_out.relid = :arg_wfjgid ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询外协计划是否已开发货单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "外加工计划已经有相关发出单据,不可以撤消审核"
- GOTO ext
- END IF
- //检查是否有退回类型的外协订单
- SELECT count(*)
- INTO :cnt
- FROM u_order_wfjg INNER JOIN
- u_order_wfjgMx ON u_order_wfjg.scid = u_order_wfjgMx.scid AND
- u_order_wfjg.wfjgID = u_order_wfjgMx.wfjgID
- WHERE u_order_wfjg.scid = :arg_scid
- AND u_order_wfjgMx.relwfjgid2 = :arg_wfjgid
- AND u_order_wfjg.billtype = 2
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询外协计划是否有相关外协订单(退回)操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "外协计划已经有相关外协订单(退回),不可以撤消审核"
- GOTO ext
- END IF
- UPDATE u_order_wfjg
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate
- WHERE wfjgid = :arg_wfjgid
- And scid = :arg_scid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "外协计划撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- String ls_unit_rq
- Decimal lde_rate_rq, lde_addqty
- FOR ll_i = 1 To it_mxbt
- //更新主计划 外协需求已订货数
- IF uo_option_update_rqmtrlqty_wfjg = 1 THEN
- IF wfjgmx[ll_i].orderid > 0 THEN
- IF uo_order.f_assign_rqmtrlqty(scid,wfjgmx[ll_i].orderid,wfjgmx[ll_i].wrkGrpid,&
- wfjgmx[ll_i].mtrlid,wfjgmx[ll_i].mtrlcode,&
- wfjgmx[ll_i].Status,wfjgmx[ll_i].woodcode,&
- wfjgmx[ll_i].pcode,0 - wfjgmx[ll_i].qty,3,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- IF wfjgmx[ll_i].relwfjgid > 0 THEN
- //处理单位转换,确认完成数量
- SELECT unit, rate INTO :ls_unit_rq, :lde_rate_rq
- FROM u_request_wfjgMx
- WHERE ( printid = :wfjgmx[ll_i].relprintid )
- AND ( wfjgid = :wfjgmx[ll_i].relwfjgid )
- And ( scid = :scid );
-
- IF ls_unit_rq = wfjgmx[ll_i].unit THEN //单位相同, 直接用订单数量
- lde_addqty = wfjgmx[ll_i].uqty
- ELSE
- //单位不同, 先转库存单位, 在转申购单位
- lde_addqty = wfjgmx[ll_i].qty
- lde_addqty = lde_addqty / lde_rate_rq
- END IF
-
- IF billtype = 2 THEN
- IF wfjgmx[ll_i].thtype = 0 THEN //退回, 重新发出
- //增加申请单退回数
- IF uo_wfjg.uof_add_thqty(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid,lde_addqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSEIF billtype = 4 THEN
- //增加申请单返工数
- IF uo_wfjg.uof_add_fgqty(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid, 0 - lde_addqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- IF wfjgmx[ll_i].thtype = 0 THEN //退回, 重新发出
- IF uo_wfjg.addmxcmpl(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid, 0 - lde_addqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_wfjg.trycmplwfjg(arg_scid,wfjgmx[ll_i].relwfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //1.通过外协申请单,找到对应的主计划, 更新主计划的已领数
- Dec lde_addqty_out_allow, lde_addqty_out_detrqty_allow, lde_addqty_out_ed, lde_sonscale
- Long ll_cnt_tree
- Decimal lde_addqty_allow, ld_qty, lde_addqty_ed
-
- IF wfjgmx[ll_i].iforder > 0 THEN
- lde_addqty_out_ed = 0
- ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid)
-
-
- // IF lde_addqty > 0 THEN
- // lde_addqty_ed = 0
- // FOR ll_k = 1 To ll_cnt_order
- // ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- // IF ll_orderid = 0 THEN CONTINUE
- //
- // SELECT ordertype,mtrlid,ifwforder, acmpqty
- // INTO :li_ordertype_order,:ll_mtrlid_order,:li_ifwfjgorder, :lde_addqty_allow
- // FROM u_order_ml
- // WHERE u_order_ml.scid = :scid
- // AND u_order_ml.orderid = :ll_orderid
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arg_msg = '查询相关订单明细:'+String(wfjgmx[ll_i].printid)+',相关生产计划类型失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- // //更新外协主生产计划已进仓数
- // If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = wfjgmx[ll_i].mtrlid THEN
- //
- // IF lde_addqty_allow > 0 THEN
- // ld_qty = Min(lde_addqty - lde_addqty_ed, lde_addqty_allow)
- // lde_addqty_ed += ld_qty
- //
- // IF ld_qty > 0 THEN
- //
- // IF uo_order.addmxcmpl(scid,ll_orderid, 0 - ld_qty,arg_msg,False) = 0 THEN
- // arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uo_order.tryfinishorder(scid,ll_orderid,arg_msg,False) = 0 THEN
- // arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
- // END IF
- // END IF
- // NEXT
- // END IF
-
- //lde_addqty = 0 - lde_addqty
- IF lde_addqty > 0 THEN
- FOR ll_j = 1 To it_mxbt_out
- IF wfjgmx_out[ll_j].relprintid = wfjgmx[ll_i].printid THEN
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
-
- IF ll_orderid = 0 THEN CONTINUE
-
- ll_cnt_tree = ds_mrpmx.Retrieve(arg_scid,ll_orderid)
- ll_row_f = ds_mrpmx.Find("u_orderrqmtrl_tree_mtrlid = "+String(wfjgmx[ll_i].mtrlid),1,ds_mrpmx.RowCount())
-
- IF ll_row_f > 0 THEN
- ll_lp = ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_row_f]
-
- FOR ll_m = ll_row_f + 1 To ds_mrpmx.RowCount()
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] <= ll_lp THEN EXIT
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] = ll_lp + 1 &
- And ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] > 0 &
- And ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m] = wfjgmx_out[ll_j].mtrlid THEN
-
- ls_mtrlcode_out = ds_mrpmx.Object.u_mtrldef_mtrlcode[ll_m]
-
- ll_wrkgrpid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_wrkgrpid[ll_m]
- ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m]
- ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_m]
- ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_m]
- ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_m]
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_sonscale[ll_m]
- IF lde_sonscale = 0 THEN
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] / ds_mrpmx.Object.u_orderrqmtrl_tree_truerqqty[ll_row_f]
- END IF
-
- //找有多少未完成数, 分配完成
- SELECT sum(dstrqty)
- INTO :lde_addqty_out_detrqty_allow
- FROM u_orderrqmtrl
- WHERE scid = :arg_scid
- AND orderid = :ll_orderid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- And dstrqty > 0;
- IF sqlca.SQLCode <> 0 THEN
- lde_addqty_out_allow = 0
- lde_addqty_out_detrqty_allow = 0
- END IF
-
- IF lde_addqty_out_detrqty_allow > 0 THEN
- ld_qty_out = Min(Round(lde_addqty * lde_sonscale,dec_round) - lde_addqty_out_ed, lde_addqty_out_detrqty_allow)
- lde_addqty_out_ed += ld_qty_out
-
-
- IF ld_qty_out <> 0 THEN
- //
- SELECT top 1 cost INTO :ld_cost_out
- FROM ow_wfjgware
- WHERE sptid = :sptid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- AND scid = :scid
- Order By cost Desc Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_cost_out = 0
- END IF
-
- ld_costamt_out = ld_qty_out * ld_cost_out
-
- IF ll_wrkgrpid_out > 0 THEN
- SELECT wrkgrpname
- INTO :ls_wrkgrpname
- FROM u_sc_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT TOP 1 workgroupid
- INTO :ll_workgroupid
- FROM u_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组 '+ls_wrkgrpname+' 相关的工作中心失败,可能是工组没有设置对应的工作中心,请检查'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ll_workgroupid = 0
- END IF
-
- IF uo_order.f_add_dstrqty(scid,ll_orderid,ll_workgroupid,ll_mtrlid_out,ls_mtrlcode_out,ls_status_out,ls_woodcode_out,ls_pcode_out,0 - ld_qty_out,0 - ld_costamt_out,arg_msg,False,-1,ld_overqty) = 0 THEN
- arg_msg = '相关订单明细:'+String(wfjgmx[ll_i].printid)+',更新生产计划已领数失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- END IF
- IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
- NEXT
- IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
- END IF
- NEXT
- END IF
- NEXT
- END IF //IF lde_addqty > 0 THEN
-
- END IF //IF wfjgmx[ll_i].iforder > 0 THEN
- END IF //IF wfjgmx[ll_i].thtype = 0 THEN //退回, 重新发出
-
- END IF //IF wfjgmx[ll_i].relwfjgid > 0 THEN
-
- //处理退回类型的对应订单退回数
- IF wfjgmx[ll_i].relwfjgid2 > 0 And wfjgmx[ll_i].relprintid2 > 0 THEN // wfjgmx[ll_i].qty < 0
- IF wfjgmx[ll_i].thtype = 0 THEN //退回, 重新发出
- IF uof_add_thqty(arg_scid, wfjgmx[ll_i].relwfjgid2, wfjgmx[ll_i].relprintid2,wfjgmx[ll_i].mtrlcode, wfjgmx[ll_i].qty,arg_msg, False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSE //退回,终止收货
- IF stopaddqty(arg_scid, wfjgmx[ll_i].relwfjgid2, wfjgmx[ll_i].relprintid2,wfjgmx[ll_i].mtrlcode, wfjgmx[ll_i].qty,0,'取消终止收货',arg_msg, False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- //撤审并删除自动生成的仓库外协发出单
- IF uof_destroy_outware_wfjg( arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- Destroy ds_rqwfjg
- Destroy ds_mrpmx
- p_reset()
- Return (rslt)
- end function
- public function integer checkmxmpl (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
- Int rslt = 1,cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_wfjgid,ARG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外加工计划只有在进行状态下才可以执行进仓"
- GOTO ext
- END IF
- Decimal ls_buyQty,ls_assignQty
- String ls_mtrlcode
- SELECT u_order_wfjgMx.Qty,
- u_order_wfjgMx.consignedqty,
- u_mtrldef.mtrlcode
- INTO :ls_buyQty,
- :ls_assignQty,
- :ls_mtrlcode
- FROM u_order_wfjgMx ,u_mtrldef
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx.scid = :arg_scid ) AND
- ( u_order_wfjgMx.MtrlID = :arg_mtrlid ) AND
- ( u_mtrldef.MtrlID = u_order_wfjgMx.MtrlID ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ls_buyQty < ls_assignQty + arg_addqty THEN
- rslt = 0
- ARG_MSG = "物料["+ls_mtrlcode+"]的外加工计划未完成数量只有"+String(ls_buyQty - ls_assignQty,'#,##0.0#')+",不能入库"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- ext:
- p_reset()
- Return (rslt)
- end function
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0, i
- DateTime null_dt
- SetNull(null_dt)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外加工计划只有在进行状态才可以执行完成,请核对"
- GOTO ext
- END IF
- ELSE
- IF arg_finishtype = 1 THEN
- IF Status <> 6 THEN
- rslt = 0
- ARG_MSG = "外加工计划只有在手动完成状态下才可以执行取消手动完成,请核对"
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_finishtype = 5 OR arg_finishtype = 6 THEN
- UPDATE u_order_wfjg
- SET status = :arg_finishtype,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_order_wfjg.wfjgid = :arg_wfjgid )
- And ( u_order_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致完成外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- ELSE
- UPDATE u_order_wfjg
- SET status = :arg_finishtype,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_order_wfjg.wfjgid = :arg_wfjgid )
- And ( u_order_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致取消手动完成外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- //更新明细完成状态
- FOR i = 1 To it_mxbt
- IF finishmx(arg_scid, arg_wfjgid, wfjgmx[i].printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer firstpermit (long arg_scid, long arg_wfjgid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Long cnt = 0
- Long ll_i,ll_0_mtrlwareid
- Int li_thflag
- Long ll_lp,ll_k, ll_j, ll_m
- String ls_mtrlcode_out
- Decimal ld_costamt_out ,ld_qty_out,ld_cost_out
- Long ll_wrkgrpid_out,ll_mtrlid_out
- String ls_status_out,ls_woodcode_out,ls_pcode_out
- Decimal ld_overqty
- Long ll_workgroupid
- Long ll_cnt_order,ll_orderid,ll_wrkGrpid,ll_mtrlid,ll_row_f,ll_mtrlid_order
- Int li_ordertype_order,li_ifwfjgorder
- String ls_wrkgrpname
- String ls_unit
- Decimal ld_rate
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_autocreate_outware = -1000 THEN
- rslt = 0
- arg_msg = '选项:[087]外协订单审核自动生成仓库外协发出单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_wfjg = -1000 THEN
- rslt = 0
- arg_msg = '选项:[343]外协订单审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_request_wfjg uo_wfjg
- uo_wfjg = Create uo_request_wfjg
- uo_wfjg.commit_transaction = sqlca
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- datastore ds_mrpmx
- ds_mrpmx = Create datastore
- ds_mrpmx.DataObject = 'ds_order_ml_mrpmx'
- ds_mrpmx.SetTransObject(sqlca)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- arg_msg = "外协订单已经审核,操作取消"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_order_wfjg
- SET Permit_Emp = :arg_emp,
- Permit_date = getdate(),
- Status = 1
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- And Status = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "外协订单最终审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- String ls_unit_rq
- Decimal lde_rate_rq, lde_addqty
- FOR ll_i = 1 To it_mxbt
-
- //更新主计划 外协需求已订货数
- IF uo_option_update_rqmtrlqty_wfjg = 1 THEN
- IF wfjgmx[ll_i].orderid > 0 THEN
- IF uo_order.f_assign_rqmtrlqty(scid,wfjgmx[ll_i].orderid,wfjgmx[ll_i].wrkGrpid,&
- wfjgmx[ll_i].mtrlid,wfjgmx[ll_i].mtrlcode,wfjgmx[ll_i].Status,&
- wfjgmx[ll_i].woodcode,wfjgmx[ll_i].pcode,wfjgmx[ll_i].qty,3,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- //更新外协申请单已订货数
- IF wfjgmx[ll_i].relwfjgid > 0 THEN
- Dec lde_thqty, lde_fgqty
-
- //处理单位转换,确认完成数量
- SELECT unit, rate INTO :ls_unit_rq, :lde_rate_rq
- FROM u_request_wfjgMx
- WHERE ( printid = :wfjgmx[ll_i].relprintid )
- AND ( wfjgid = :wfjgmx[ll_i].relwfjgid )
- And ( scid = :scid ) Using commit_transaction;
-
- IF ls_unit_rq = wfjgmx[ll_i].unit THEN //单位相同, 直接用订单数量
- lde_addqty = wfjgmx[ll_i].uqty
- ELSE
- //单位不同, 先转库存单位, 在转申购单位
- lde_addqty = wfjgmx[ll_i].qty
- lde_addqty = lde_addqty / lde_rate_rq
- END IF
-
- IF billtype = 2 THEN
- //增加申请单退回数
- IF wfjgmx[ll_i].thtype = 0 THEN //退回, 重新发出
- IF uo_wfjg.uof_add_thqty(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid, 0 - lde_addqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSEIF billtype = 4 THEN
- //增加申请单返工数
- IF uo_wfjg.uof_add_fgqty(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid, lde_addqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF wfjgmx[ll_i].thtype = 0 THEN // 退回, 终止收货的 除外
- IF uo_wfjg.addmxcmpl(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid,&
- lde_addqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //尝试自动完成申请单
- IF uo_wfjg.trycmplwfjg(arg_scid,wfjgmx[ll_i].relwfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //1.通过外协申请单,找到对应的主计划, 更新主计划的已领数
- Dec lde_addqty_out_allow, lde_addqty_out_detrqty_allow, lde_addqty_out_ed, lde_sonscale
- Long ll_cnt_tree
- Decimal lde_addqty_allow, ld_qty, lde_addqty_ed
-
- IF wfjgmx[ll_i].iforder > 0 THEN
- lde_addqty_out_ed = 0
- ll_cnt_order = ds_rqwfjg.Retrieve(arg_scid,wfjgmx[ll_i].relwfjgid,wfjgmx[ll_i].relprintid)
-
- // IF lde_addqty > 0 THEN
- // lde_addqty_ed = 0
- // FOR ll_k = 1 To ll_cnt_order
- // ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- // IF ll_orderid = 0 THEN CONTINUE
- //
- // SELECT ordertype,mtrlid,ifwforder, orderqty - acmpqty - stopqty
- // INTO :li_ordertype_order,:ll_mtrlid_order,:li_ifwfjgorder, :lde_addqty_allow
- // FROM u_order_ml
- // WHERE u_order_ml.scid = :scid
- // AND u_order_ml.orderid = :ll_orderid
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arg_msg = '查询相关订单明细:'+String(wfjgmx[ll_i].printid)+',相关生产计划类型失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- // //更新外协主生产计划已进仓数
- // If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = wfjgmx[ll_i].mtrlid THEN
- //
- // IF lde_addqty_allow > 0 THEN
- // ld_qty = Min(lde_addqty - lde_addqty_ed, lde_addqty_allow)
- // lde_addqty_ed += ld_qty
- //
- // IF ld_qty > 0 THEN
- // IF uo_order.addmxcmpl(scid,ll_orderid,ld_qty,arg_msg,False) = 0 THEN
- // arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uo_order.tryfinishorder(scid,ll_orderid,arg_msg,False) = 0 THEN
- // arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
- // END IF
- // END IF
- // NEXT
- // END IF
-
-
- //更新对应主计划的已领数
- IF lde_addqty > 0 THEN
- FOR ll_j = 1 To it_mxbt_out
- IF wfjgmx_out[ll_j].relprintid = wfjgmx[ll_i].printid THEN
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
-
- IF ll_orderid = 0 THEN CONTINUE
-
- ll_cnt_tree = ds_mrpmx.Retrieve(arg_scid,ll_orderid)
- ll_row_f = ds_mrpmx.Find("u_orderrqmtrl_tree_mtrlid = "+String(wfjgmx[ll_i].mtrlid),1,ds_mrpmx.RowCount())
-
- IF ll_row_f > 0 THEN
- ll_lp = ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_row_f]
-
- FOR ll_m = ll_row_f + 1 To ds_mrpmx.RowCount()
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] <= ll_lp THEN EXIT
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_m] = ll_lp + 1 &
- And ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] > 0 &
- And ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m] = wfjgmx_out[ll_j].mtrlid THEN
-
- ls_mtrlcode_out = ds_mrpmx.Object.u_mtrldef_mtrlcode[ll_m]
-
- ll_wrkgrpid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_wrkgrpid[ll_m]
- ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_m]
- ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_m]
- ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_m]
- ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_m]
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_sonscale[ll_m]
- IF lde_sonscale = 0 THEN
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_m] / ds_mrpmx.Object.u_orderrqmtrl_tree_truerqqty[ll_row_f]
- END IF
-
- //找有多少未完成数, 分配完成
- SELECT sum(rqqty - dstrqty) , sum(dstrqty)
- INTO :lde_addqty_out_allow, :lde_addqty_out_detrqty_allow
- FROM u_orderrqmtrl
- WHERE scid = :arg_scid
- AND orderid = :ll_orderid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- And rqqty > dstrqty ;
- IF sqlca.SQLCode <> 0 THEN
- lde_addqty_out_allow = 0
- lde_addqty_out_detrqty_allow = 0
- END IF
-
- IF lde_addqty_out_allow > 0 THEN
- ld_qty_out = Min(Round(lde_addqty * lde_sonscale,dec_round) - lde_addqty_out_ed, lde_addqty_out_allow)
- lde_addqty_out_ed += ld_qty_out
-
- IF ld_qty_out <> 0 THEN
- //
- SELECT top 1 cost INTO :ld_cost_out
- FROM ow_wfjgware
- WHERE sptid = :sptid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- AND scid = :scid
- Order By cost Desc Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_cost_out = 0
- END IF
-
- ld_costamt_out = ld_qty_out * ld_cost_out
-
- IF ll_wrkgrpid_out > 0 THEN
- SELECT wrkgrpname
- INTO :ls_wrkgrpname
- FROM u_sc_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT TOP 1 workgroupid
- INTO :ll_workgroupid
- FROM u_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组 '+ls_wrkgrpname+' 相关的工作中心失败,可能是工组没有设置对应的工作中心,请检查'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ll_workgroupid = 0
- END IF
-
- IF uo_order.f_add_dstrqty(scid,ll_orderid,ll_workgroupid,ll_mtrlid_out,ls_mtrlcode_out,ls_status_out,ls_woodcode_out,ls_pcode_out,ld_qty_out,ld_costamt_out,arg_msg,False,-1,ld_overqty) = 0 THEN
- arg_msg = '相关订单明细:'+String(wfjgmx[ll_i].printid)+',更新生产计划已领数失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
-
- END IF
- IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT //如果系1:N时是有问题的
- NEXT
- IF Abs(Round(lde_addqty * lde_sonscale,dec_round)) = Abs(lde_addqty_out_ed) THEN EXIT
- END IF
- NEXT
- END IF
- NEXT
- END IF //IF lde_addqty > 0 THEN
- END IF //if wfjgmx[ll_i].thtype = 0 then
-
- END IF //IF wfjgmx[ll_i].iforder > 0 THEN
- END IF //IF wfjgmx[ll_i].relwfjgid > 0 THEN
-
- //处理退回类型的对应外协订单退回数
- IF wfjgmx[ll_i].relwfjgid2 > 0 And wfjgmx[ll_i].relprintid2 > 0 THEN // wfjgmx[ll_i].qty < 0
- IF wfjgmx[ll_i].thtype = 0 THEN //退回, 重新发出
- IF uof_add_thqty(arg_scid, wfjgmx[ll_i].relwfjgid2, wfjgmx[ll_i].relprintid2,wfjgmx[ll_i].mtrlcode, 0 - wfjgmx[ll_i].qty,arg_msg, False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSE //退回,终止收货
- IF stopaddqty(arg_scid, wfjgmx[ll_i].relwfjgid2, wfjgmx[ll_i].relprintid2,wfjgmx[ll_i].mtrlcode, 0 - wfjgmx[ll_i].qty,0,'终止收货',arg_msg, False) = 0 THEN
- arg_msg = '更新行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- //====================================================================
- // 按外协订单发出明细内容自动建立
- IF uof_create_outware_wfjg(arg_scid, arg_emp, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 2 THEN //退回单,自动完成
- UPDATE u_order_wfjg
- SET Status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE wfjgid = :arg_wfjgid
- AND scid = :arg_scid
- And Status = 1 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "外协订单完成操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- Status = 5
- END IF
- ////////////// //
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- //Destroy uo_ware
- Destroy ds_rqwfjg
- p_reset()
- Return (rslt)
- end function
- public function integer tempstoptask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);INT rslt=1,cnt=0
- IF arg_wfjgid<=0 THEN
- rslt=0
- ARG_MSG='错误外加工计划唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_wfjgid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>1 and Status<>2 THEN
- rslt=0
- arG_MSG="外加工计划只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
- goto ext
- END IF
- if Status=1 then
- UPDATE u_order_wfjg
- SET Status = 2 ,
- stopemp=:publ_operator
- WHERE wfjgid = :arg_wfjgid
- and scid = :arg_scid using commit_transaction ;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致暂停外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- else
- UPDATE u_order_wfjg
- SET Status = 1,stopemp=''
- WHERE wfjgid = :arg_wfjgid
- and scid = :arg_scid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致取消暂停外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if rslt=0 then
- rollback using commit_transaction;
- elseif arg_ifcommit and rslt = 1 then
- COMMIT using commit_transaction;
- end if
- p_reset()
- return (rslt)
- end function
- public function integer trycmplbuytask (long arg_scid, long arg_wfjgid, ref string arg_msg, boolean arg_ifcommit);//trycmplbuytask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 AND status <> 5 THEN
- rslt = 1
- IF status <> 1 THEN
- arg_msg = "外加工计划只有在进行状态下才可以执行设完成状态"
- ELSEIF status <> 5 THEN
- arg_msg = "外加工计划只有在完成状态下才可以执行撤消完成状态"
- END IF
- GOTO ext
- END IF
- Decimal ls_zerook
- Boolean if_finish
- if_finish = TRUE
- DECLARE zero_cur CURSOR FOR
- SELECT u_order_wfjgMx.qty * (1 - u_mtrldef.downrate) - u_order_wfjgMx.consignedqty - u_order_wfjgMx.wasteqty - u_order_wfjgMx.stopqty - u_order_wfjgMx.thqty
- FROM u_order_wfjgMx,u_mtrldef
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid )
- AND ( u_order_wfjgMx.scid = :arg_scid )
- AND ( u_order_wfjgMx.stopflag = 0 )
- and ( u_order_wfjgMx.mtrlid = u_mtrldef.mtrlid )
- USING commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur INTO :ls_zerook;
- DO WHILE commit_transaction.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = FALSE
- END IF
- FETCH zero_cur INTO :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF status = 1 AND if_finish THEN
- UPDATE u_order_wfjg
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_order_wfjg.wfjgid = :arg_wfjgid )
- And ( u_order_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致外加工计划完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- IF status = 5 AND NOT if_finish THEN
- UPDATE u_order_wfjg
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_order_wfjg.wfjgid = :arg_wfjgid )
- And ( u_order_wfjg.scid = :arg_scid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致外加工计划撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer updatebegin (long arg_scid, long arg_wfjgid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
- //从置对象,设定业务类型与关联ID,准备更新进仓单
- //0 fail 1 success
- Long rslt = 1,CNT = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = '已经处于审核或完成等状态,不可以修改,如果外加工计划未完成并要修改请先撤销审核'
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = True
- p_clearmx() //清除明细
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer checkmxmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
- Int rslt = 1,cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_wfjgid,ARG_MSG)
- IF rslt = 0 THEN GOTO ext
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外加工计划只有在进行状态下才可以执行进仓"
- GOTO ext
- END IF
- Decimal ls_buyQty,ls_assignQty
- String ls_mtrlcode
- SELECT u_order_wfjgMx_out.Qty,
- u_order_wfjgMx_out.consignedqty,
- u_mtrldef.mtrlcode
- INTO :ls_buyQty,
- :ls_assignQty,
- :ls_mtrlcode
- FROM u_order_wfjgMx_out ,u_mtrldef
- WHERE ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx_out.scid = :arg_scid ) AND
- ( u_order_wfjgMx_out.MtrlID = :arg_mtrlid ) AND
- ( u_mtrldef.MtrlID = u_order_wfjgMx_out.MtrlID ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ls_buyQty < ls_assignQty + arg_addqty THEN
- rslt = 0
- ARG_MSG = "物料["+ls_mtrlcode+"]的外加工计划未完成数量只有"+String(ls_buyQty - ls_assignQty,'#,##0.0#')+",不能入库"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- ext:
- p_reset()
- Return (rslt)
- end function
- public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_mtrlid, long arg_orderid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- String ls_mtrlcode
- Long ll_printid
- SELECT u_order_wfjgMx_out.printid
- INTO :ll_printid
- FROM u_order_wfjgMx_out
- WHERE ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx_out.scid = :arg_scid ) AND
- ( u_order_wfjgMx_out.mtrlid = :arg_mtrlid ) AND
- ( u_order_wfjgMx_out.status = :arg_status ) AND
- ( u_order_wfjgMx_out.woodcode = :arg_woodcode ) AND
- ( u_order_wfjgMx_out.pcode = :arg_pcode ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF addmxcmpl_out(arg_scid, arg_wfjgid, ll_printid, arg_addqty, arg_msg, arg_ifcommit) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- //IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF arg_wfjgid <= 0 THEN
- // rslt = 0
- // arg_msg = '错误外加工计划唯一码'
- // GOTO ext
- //END IF
- //IF arg_addqty = 0 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- //
- //IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //Decimal ls_buyqty,ls_consignedqty
- //SELECT mtrlcode INTO :ls_mtrlcode FROM u_mtrldef
- // WHERE mtrlid = :arg_mtrlid
- // USING commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询物料资料失败'
- // GOTO ext
- //END IF
- //
- //
- //
- //SELECT u_order_wfjgMx_out.qty,
- // u_order_wfjgMx_out.consignedqty + u_order_wfjgMx_out.stopqty
- // INTO :ls_buyqty,
- // :ls_consignedqty
- // FROM u_order_wfjgMx_out
- // WHERE ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- // ( u_order_wfjgMx_out.scid = :arg_scid ) AND
- // ( u_order_wfjgMx_out.mtrlid = :arg_mtrlid ) AND
- // ( u_order_wfjgMx_out.status = :arg_status ) AND
- // ( u_order_wfjgMx_out.woodcode = :arg_woodcode ) AND
- // ( u_order_wfjgMx_out.pcode = :arg_pcode ) USING commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- // GOTO ext
- //END IF
- //
- //IF ls_buyqty < ls_consignedqty + arg_addqty THEN
- // rslt = 0
- // arg_msg = "物料["+ls_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能发出"+String(arg_addqty,'#,##0.0#')
- // GOTO ext
- //END IF
- //
- //UPDATE u_order_wfjgMx_out
- // SET consignedqty = consignedqty + :arg_addqty
- // WHERE ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- // ( u_order_wfjgMx_out.scid = :arg_scid ) AND
- // ( u_order_wfjgMx_out.mtrlid = :arg_mtrlid ) AND
- // ( u_order_wfjgMx_out.status = :arg_status ) AND
- // ( u_order_wfjgMx_out.woodcode = :arg_woodcode ) AND
- // ( u_order_wfjgMx_out.pcode = :arg_pcode ) USING commit_transaction;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "因网络或错误产品唯一码导致外加工计划完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- // GOTO ext
- //END IF
- //
- //
- //it_newbegin = FALSE
- //it_updatebegin = FALSE
- //ext:
- //IF rslt = 0 THEN
- // ROLLBACK USING commit_transaction;
- //ELSEIF arg_ifcommit and rslt = 1 THEN
- // COMMIT USING commit_transaction;
- //END IF
- //
- //
- //p_reset()
- //Return (rslt)
- end function
- public function integer wasteqty (long arg_scid, decimal arg_wasteqty, long arg_wfjg_orderid, long arg_printid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Decimal ls_buyqty,ls_consignedqty
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ifovertask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[010]超采购,外协订单收货,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF arg_wfjg_orderid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_order_wfjgmx
- WHERE u_order_wfjgmx.scid = :arg_scid AND
- u_order_wfjgmx.wfjgid = :arg_wfjg_orderid AND
- u_order_wfjgmx.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询外加工明细操作失败!在物料"+String(arg_mtrlcode)
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- ARG_MSG = "外加工明细不存在,在物料!"+String(arg_mtrlcode)
- GOTO ext
- END IF
- long ll_mtrlid
- SELECT u_order_wfjgMx.mtrlid
- INTO :ll_mtrlid
- FROM u_mtrldef,u_order_wfjgMx
- WHERE u_mtrldef.mtrlid = u_order_wfjgMx.mtrlid
- AND u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgid = :arg_wfjg_orderid
- AND u_order_wfjgMx.printid = :arg_printid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- Decimal ld_uprate,ld_upqty
- IF uo_option_ifovertask = 1 THEN //不允许超收
- SELECT u_order_wfjgMx.qty,
- u_order_wfjgMx.consignedqty + u_order_wfjgMx.wasteqty
- INTO :ls_buyqty,
- :ls_consignedqty
- FROM u_order_wfjgMx
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjg_orderid ) AND
- ( u_order_wfjgMx.scid = :arg_scid ) AND
- ( u_order_wfjgmx.printid = :arg_printid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误物料编码["+arg_mtrlcode+"]导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ls_buyqty < ls_consignedqty + arg_wasteqty THEN
- rslt = 0
- ARG_MSG = "物料["+arg_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能入库"+String(arg_wasteqty,'#,##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(arg_mtrlcode)+'超收货比例失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_order_wfjgMx.qty,
- u_order_wfjgMx.consignedqty + u_order_wfjgMx.wasteqty
- INTO :ls_buyqty,
- :ls_consignedqty
- FROM u_order_wfjgMx
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjg_orderid ) AND
- ( u_order_wfjgMx.scid = :arg_scid ) AND
- ( u_order_wfjgMx.printid = :arg_printid )
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误物料编码:"+arg_mtrlcode+",导致查询外加工计划已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ls_buyqty * (1 + ld_uprate) + ld_upqty < ls_consignedqty + arg_wasteqty THEN
- rslt = 0
- arg_msg = "物料:"+arg_mtrlcode+"未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+"允许超收上限:"+string(ls_buyqty * (1 + ld_uprate) + ld_upqty - ls_consignedqty,'#,##0.00##')+",不能入库"+String(arg_wasteqty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- UPDATE u_order_wfjgmx
- SET u_order_wfjgmx.wasteqty = u_order_wfjgmx.wasteqty + :arg_wasteqty
- WHERE u_order_wfjgmx.scid = :arg_scid AND
- u_order_wfjgmx.wfjgid = :arg_wfjg_orderid AND
- u_order_wfjgmx.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致更新外加工计划损耗操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //更新单据完成状态
- IF trycmplbuytask(arg_scid,arg_wfjg_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新明细完成状态
- IF finishmx(arg_scid, arg_wfjg_orderid, arg_printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- Return (rslt)
- end function
- public function integer addmxcmpl (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- Long ll_row_f
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ifovertask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[010]超采购,外协订单收货,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_wfjg = -1000 THEN
- rslt = 0
- arg_msg = '选项:[343]外协订单审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "外协计划只有在进行状态下才可以执行进仓"
- ELSEIF status <> 5 THEN
- arg_msg = "外协计划只有在完成状态下才可以撤消进仓"
- END IF
- GOTO ext
- END IF
- Decimal ls_buyqty,ls_consignedqty
- String ls_mtrlcode,ls_taskcode
- Long ll_orderid,ll_wrkGrpid,ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- Long ll_iforder
- Long ll_cnt_order,ll_mtrlid_order
- Int li_ordertype_order_ml
- Decimal ld_uprate,ld_upqty
- String ls_pfcode
- SELECT u_mtrldef.mtrlcode,
- u_order_wfjgMx.orderid,
- u_order_wfjgMx.wrkGrpid,
- u_order_wfjgMx.mtrlid,
- u_order_wfjgMx.status,
- u_order_wfjgMx.woodcode,
- u_order_wfjgMx.pcode,
- u_order_wfjgmx.iforder,
- u_order_wfjgmx.pfcode,
- u_order_wfjg.taskcode,
- u_order_wfjgMx.qty,
- u_order_wfjgMx.consignedqty + u_order_wfjgMx.wasteqty + u_order_wfjgMx.stopqty
- INTO :ls_mtrlcode,
- :ll_orderid,
- :ll_wrkGrpid,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ll_iforder,
- :ls_pfcode,
- :ls_taskcode,
- :ls_buyqty,
- :ls_consignedqty
- FROM u_mtrldef,u_order_wfjgMx,u_order_wfjg
- WHERE u_mtrldef.mtrlid = u_order_wfjgMx.mtrlid
- AND u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgid = :arg_wfjgid
- AND u_order_wfjgMx.scid = u_order_wfjg.scid
- AND u_order_wfjgMx.wfjgid = u_order_wfjg.wfjgid
- AND u_order_wfjgMx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uo_option_ifovertask = 1 THEN //不允许超收
- IF ls_buyqty < ls_consignedqty + arg_addqty THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+",的未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##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 ls_buyqty * (1 + ld_uprate) + ld_upqty < ls_consignedqty + arg_addqty THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+"允许超收上限:"+String(ls_buyqty * (1 + ld_uprate) + ld_upqty - ls_consignedqty,'#,##0.00##')+",不能入库"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
-
- END IF
- UPDATE u_order_wfjgMx
- SET consignedqty = consignedqty + :arg_addqty
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx.printid = :arg_printid ) AND
- ( u_order_wfjgMx.scid = :arg_scid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致外协计划完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //更新单据完成状态
- IF trycmplbuytask(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新明细完成状态
- IF finishmx(arg_scid, arg_wfjgid, arg_printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新相关发出明细已领数
- IF uof_add_dstrqty(arg_scid, arg_wfjgid, arg_printid, ll_orderid, ll_mtrlid, ls_pfcode, ls_buyqty, arg_addqty, 0,arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_wfjg = 1 THEN
- IF ll_orderid > 0 And ll_iforder = 1 THEN
-
- SELECT count(*),ordertype,mtrlid
- INTO :ll_cnt_order,:li_ordertype_order_ml,:ll_mtrlid_order
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :ll_orderid
- GROUP BY ordertype,mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询相关订单:'+ls_taskcode+' 明细:'+String(arg_printid)+',相关生产计划:'+String(ll_orderid)+'计划类型失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_cnt_order > 0 THEN
- IF uo_order.f_assign_inqty(arg_scid,ll_orderid,ll_wrkGrpid,3,&
- ll_mtrlid,ls_mtrlcode,ls_status,&
- ls_woodcode,ls_pcode,arg_addqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- arg_msg = uo_order.arg_msg_str
- END IF
- END IF
- END IF
- //更新外协主计划进仓数
- IF uof_add_order_acmpqty(arg_scid,arg_wfjgid, arg_printid,arg_addqty, arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- p_reset()
- Return (rslt)
- end function
- public function integer stopqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, decimal arg_rewfjgqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- long ll_row_f
- DateTime server_datetime
- DateTime null_dt
- String ls_stopemp
- Decimal ld_notconsignedqty,ld_rewfjgqty_ori
- decimal ld_r_uqty,ld_r_consignedqty,ls_buyqty, lde_add_stopqty,lde_stopqty
- Long ll_relwfjgid,ll_relprintid
- long ll_orderid, ll_mtrlid
- String ls_pfcode
- decimal lde_sonscale
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_request_wfjg uo_rqwfjg
- uo_rqwfjg = create uo_request_wfjg
- uo_rqwfjg.commit_transaction = commit_transaction
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF IsNull(arg_stopqty) THEN arg_stopqty = 0
- IF IsNull(arg_rewfjgqty) THEN arg_rewfjgqty = 0
- IF arg_stopqty < 0 THEN
- arG_MSG = '订单终止数不能少于0,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF arg_rewfjgqty > arg_stopqty THEN
- arG_MSG = '重新外协数不能大于终止数,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF arg_stopqty = 0 THEN
- SetNull(server_datetime)
- ls_stopemp = ''
- arg_stopreason = ''
- ELSE
- ls_stopemp = publ_operator
- END IF
- SetNull(null_dt)
- IF p_getinfo(arg_scid,arg_wfjgid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- arG_MSG = '订单只能在进行状态或自动完成状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_order_wfjgMx.Qty - u_order_wfjgMx.consignedqty - u_order_wfjgmx.wasteqty - u_order_wfjgmx.thqty,
- u_order_wfjgMx.relwfjgid,
- u_order_wfjgMx.relprintid,
- u_order_wfjgMx.orderid,
- u_order_wfjgMx.mtrlid,
- u_order_wfjgMx.pfcode,
- u_order_wfjgMx.Qty,
- u_order_wfjgMx.stopqty
- INTO :ld_notconsignedqty,
- :ll_relwfjgid,
- :ll_relprintid,
- :ll_orderid,
- :ll_mtrlid,
- :ls_pfcode,
- :ls_buyqty,
- :lde_stopqty
- FROM u_order_wfjgMx
- WHERE u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgid = :arg_wfjgid
- And u_order_wfjgMx.printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- lde_add_stopqty = arg_stopqty - lde_stopqty
- IF arg_stopqty > ld_notconsignedqty THEN
- arG_MSG = '明细物料'+arg_mtrlcode+'未收货数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能终止:'+String(arg_stopqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- IF ll_relwfjgid > 0 THEN
- SELECT qty,consignedqty
- INTO :ld_r_uqty,:ld_r_consignedqty
- FROM u_request_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :ll_relwfjgid
- And printid = :ll_relprintid Using commit_transaction ;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '查询物料'+arg_mtrlcode+'相关申购单信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_rewfjgqty > ld_r_consignedqty THEN
- rslt = 0
- arG_MSG = '物料'+arg_mtrlcode+'相关外协申请单的已订货数为:'+String(ld_r_consignedqty,'#,##0.##########')+',不能重新外协:'+String(arg_rewfjgqty,'#,##0.##########')
- GOTO ext
- END IF
- SELECT rewfjgqty
- INTO :ld_rewfjgqty_ori
- FROM u_order_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using commit_transaction ;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '查询明细物料'+arg_mtrlcode+'原重新外协数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_request_wfjgMx
- SET consignedqty = consignedqty + :ld_rewfjgqty_ori - :arg_rewfjgqty
- WHERE scid = :arg_scid
- AND wfjgid = :ll_relwfjgid
- And printid = :ll_relprintid Using commit_transaction ;
-
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '更新明细'+arg_mtrlcode+'相关外协申请单的已订货数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqwfjg.trycmplwfjg(arg_scid,ll_relwfjgid,arG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_order_wfjgMx
- SET stopqty = :arg_stopqty,
- rewfjgqty = :arg_rewfjgqty,
- stopemp = :ls_stopemp,
- stopdate = :server_datetime,
- stopreason = :arg_stopreason
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using commit_transaction ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '更新明细'+arg_mtrlcode+'中止数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //更新单据完成状态
- IF trycmplbuytask(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新明细完成状态
- IF finishmx(arg_scid, arg_wfjgid, arg_printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ////lhd2013-8-7
- //更新相关发出明细已领数
- IF uof_add_dstrqty(arg_scid, arg_wfjgid, arg_printid, ll_orderid, ll_mtrlid, ls_pfcode, ls_buyqty, lde_add_stopqty,1, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ////lhd2013-8-7_end
- ////更新外协主计划终止数
- //IF uof_add_order_stopqty(arg_scid,arg_wfjgid, arg_printid,arg_addqty, arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- ext:
- destroy uo_rqwfjg
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer uof_splitqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_splitqty, datetime arg_newdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Decimal ld_notconsignedqty,ld_uqty
- Long ll_new_pid
- IF IsNull(arg_splitqty) THEN arg_splitqty = 0
- IF arg_splitqty <= 0 THEN
- arG_MSG = '订单拆分数不能少于或等于0,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arG_MSG = '订单只能在进行状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_order_wfjgMx.Qty - u_order_wfjgMx.consignedqty - u_order_wfjgMx.stopqty - u_order_wfjgMx.wasteqty,
- u_order_wfjgMx.Qty
- INTO :ld_notconsignedqty,
- :ld_uqty
- FROM u_order_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_splitqty > ld_notconsignedqty THEN
- arG_MSG = '明细物料'+arg_mtrlcode+'未收货数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能拆分:'+String(arg_splitqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- IF arg_splitqty = ld_uqty THEN
- rslt = 0
- arG_MSG = '拆分数不能与采购数量相同'
- GOTO ext
- END IF
- SELECT max(printid)
- INTO :ll_new_pid
- FROM u_order_wfjgMx
- WHERE scid = :arg_scid
- And wfjgid = :arg_wfjgid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询明细行ID失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ll_new_pid = ll_new_pid + 1
- INSERT INTO u_order_wfjgMx
- ( scid,
- qty,
- price,
- rebate,
- mtrlid,
- wfjgID,
- dscrp,
- printid,
- requiredate,
- orderid,
- storageid,
- jgdscrp,
- status,
- iforder,
- woodcode,
- pcode,
- wrkGrpid,
- relwfjgid,
- relprintid,
- pfcode,
- relcode,
- unit,
- uqty,
- rate)
- SELECT scid,
- :arg_splitqty,
- price,
- rebate,
- mtrlid,
- wfjgID,
- dscrp,
- :ll_new_pid,
- :arg_newdate,
- orderid,
- storageid,
- jgdscrp,
- status,
- iforder,
- woodcode,
- pcode,
- wrkGrpid,
- relwfjgid,
- relprintid,
- pfcode,
- relcode,
- unit,
- case rate when 0 then :arg_splitqty else :arg_splitqty / rate END ,
- rate
- FROM u_order_wfjgMx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- wfjgid = 0 //还原taskid
- rslt = 0
- arG_MSG = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- UPDATE u_order_wfjgMx
- SET uqty = case rate when 0 then uqty - :arg_splitqty else uqty - :arg_splitqty / rate end ,
- qty = qty - :arg_splitqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '更新原明细行数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer stopqty_out (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime server_datetime
- DateTime null_dt
- String ls_stopemp
- Decimal ld_notconsignedqty,ld_rewfjgqty_ori
- Decimal ld_r_uqty,ld_r_consignedqty
- Long ll_relwfjgid,ll_relprintid
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF IsNull(arg_stopqty) THEN arg_stopqty = 0
- IF arg_stopqty < 0 THEN
- arg_msg = '订单终止数不能少于0,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF arg_stopqty = 0 THEN
- SetNull(server_datetime)
- ls_stopemp = ''
- ELSE
- ls_stopemp = publ_operator
- END IF
- SetNull(null_dt)
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- arg_msg = '订单只能在进行状态或自动完成状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_order_wfjgMx_out.Qty - u_order_wfjgMx_out.consignedqty
- INTO :ld_notconsignedqty
- FROM u_order_wfjgMx_out
- WHERE u_order_wfjgMx_out.scid = :arg_scid
- AND u_order_wfjgMx_out.wfjgid = :arg_wfjgid
- And u_order_wfjgMx_out.printid = :arg_printid Using commit_transaction ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_stopqty > ld_notconsignedqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'未发货数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能终止:'+String(arg_stopqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_order_wfjgMx_out
- SET stopqty = :arg_stopqty,
- stopemp = :ls_stopemp,
- stopdate = :server_datetime,
- stopreason = :arg_stopreason
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using commit_transaction ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //更新发出明细终止数
- IF stopqty_out_mx(arg_scid, arg_wfjgid, arg_printid, arg_mtrlcode, arg_stopqty, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx_out (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, long arg_storageid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_uqty, decimal arg_rate, long arg_relprintid, long arg_wrkgrpid);//return 0 fail 1 success
- // 函数增加一个明细项
- Long rslt = 1,cnt = 0,ls_i
- IF uo_option_2unit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[067]外协双单位核算,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_iforder) THEN arg_iforder = 0
- IF IsNull(arg_orderid) THEN arg_orderid = 0
- IF IsNull(arg_ordercode) THEN arg_ordercode = ''
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_price) THEN arg_price = 0
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_relprintid) THEN arg_relprintid = 0
- IF IsNull(arg_wrkgrpid) THEN arg_wrkgrpid = 0
- IF arg_mtrlid = 0 Or arg_qty = 0 THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- rslt = 1
- GOTO ext
- END IF
- IF uo_option_2unit = 1 THEN
- IF arg_uqty = 0 THEN
- arg_msg = '发出明细,行:'+String(arg_printid)+ ',请输入计价数量'
- rslt = 0
- GOTO ext
- END IF
-
- IF Trim(arg_unit) = '' THEN
- arg_msg = '发出明细,行:'+String(arg_printid)+ ',请选择计价单位'
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- IF arg_price < 0 THEN
- rslt = 0
- arg_msg = "发出明细,物料:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- //检查物料id
- SELECT count(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "发出明细,查询操作失败,物料编号"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "发出明细,错误的产品编号: "+String(arg_mtrlcode)
- GOTO ext
- END IF
- If (sys_option_nostorageid_wfjg = 1 Or sys_option_autocreate_outware = 1) And &
- dscrp <> '返工单审核自动生成的外协订单' And &
- dscrp <> '盘盈单审核自动生成的外协订单' THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_storage
- Where u_storage.storageid = :arg_storageid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库编号>>发出明细"
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的仓库编号>>发出明细"
- GOTO ext
- END IF
- END IF
- IF arg_iforder = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE u_order_ml.orderid = :arg_orderid
- And u_order_ml.scid = :scid;
- IF sqlca.SQLCode <> 0 Or cnt = 0 THEN
- rslt = 0
- arg_msg = '生产计划:'+arg_ordercode+'不存在'
- GOTO ext
- END IF
- END IF
- FOR ls_i = 1 To it_mxbt_out //合并重复项
- IF wfjgmx_out[ls_i].mtrlid = arg_mtrlid And &
- wfjgmx_out[ls_i].orderid = arg_orderid And &
- wfjgmx_out[ls_i].status = arg_status And &
- wfjgmx_out[ls_i].woodcode = arg_woodcode And &
- wfjgmx_out[ls_i].pcode = arg_pcode And &
- wfjgmx_out[ls_i].unit = arg_unit And &
- wfjgmx_out[ls_i].relprintid = arg_relprintid And &
- wfjgmx_out[ls_i].wrkgrpid = arg_wrkgrpid THEN
-
- wfjgmx_out[ls_i].qty = wfjgmx_out[ls_i].qty + arg_qty
- wfjgmx_out[ls_i].uqty = wfjgmx_out[ls_i].uqty + arg_uqty
- GOTO _hz
- END IF
- NEXT
- //写入内容
- it_mxbt_out++
- wfjgmx_out[it_mxbt_out].iforder = arg_iforder
- wfjgmx_out[it_mxbt_out].orderid = arg_orderid
- wfjgmx_out[it_mxbt_out].ordercode = arg_ordercode
- wfjgmx_out[it_mxbt_out].mtrlid = arg_mtrlid
- wfjgmx_out[it_mxbt_out].qty = arg_qty
- wfjgmx_out[it_mxbt_out].dscrp = arg_dscrp
- wfjgmx_out[it_mxbt_out].mtrlcode = arg_mtrlcode
- wfjgmx_out[it_mxbt_out].printid = arg_printid
- wfjgmx_out[it_mxbt_out].price = arg_price
- wfjgmx_out[it_mxbt_out].storageid = arg_storageid
- wfjgmx_out[it_mxbt_out].status = arg_status
- wfjgmx_out[it_mxbt_out].woodcode = arg_woodcode
- wfjgmx_out[it_mxbt_out].pcode = arg_pcode
- wfjgmx_out[it_mxbt_out].relprintid = arg_relprintid
- wfjgmx_out[it_mxbt_out].wrkgrpid = arg_wrkgrpid
- IF uo_option_2unit = 0 THEN
- arg_uqty = arg_qty
- END IF
- wfjgmx_out[it_mxbt_out].unit = arg_unit
- wfjgmx_out[it_mxbt_out].uqty = arg_uqty
- IF arg_uqty <> 0 THEN
- wfjgmx_out[it_mxbt_out].rate = arg_qty / arg_uqty
- ELSE
- wfjgmx_out[it_mxbt_out].rate = 0
- END IF
- _hz:
- FOR ls_i = 1 To it_mxbt_out_hz //合并重复项
- IF wfjghz_out[ls_i].mtrlid = arg_mtrlid And &
- wfjghz_out[ls_i].status = arg_status And &
- wfjghz_out[ls_i].woodcode = arg_woodcode And &
- wfjghz_out[ls_i].pcode = arg_pcode And &
- wfjghz_out[ls_i].unit = arg_unit THEN
- wfjghz_out[ls_i].qty = wfjghz_out[ls_i].qty + arg_qty
- wfjghz_out[ls_i].uqty = wfjghz_out[ls_i].uqty + arg_uqty
-
-
- IF uof_chk_ware_outhz(ls_i, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rslt = 1
- GOTO ext
- END IF
- NEXT
- it_mxbt_out_hz++
- wfjghz_out[it_mxbt_out_hz].mtrlid = arg_mtrlid
- wfjghz_out[it_mxbt_out_hz].qty = arg_qty
- wfjghz_out[it_mxbt_out_hz].dscrp = arg_dscrp
- wfjghz_out[it_mxbt_out_hz].mtrlcode = arg_mtrlcode
- wfjghz_out[it_mxbt_out_hz].printid = it_mxbt_out_hz
- wfjghz_out[it_mxbt_out_hz].price = arg_price
- wfjghz_out[it_mxbt_out_hz].storageid = arg_storageid
- wfjghz_out[it_mxbt_out_hz].status = arg_status
- wfjghz_out[it_mxbt_out_hz].woodcode = arg_woodcode
- wfjghz_out[it_mxbt_out_hz].pcode = arg_pcode
- IF uo_option_2unit = 0 THEN
- arg_uqty = arg_qty
- END IF
- wfjghz_out[it_mxbt_out_hz].unit = arg_unit
- wfjghz_out[it_mxbt_out_hz].uqty = arg_uqty
- IF arg_uqty <> 0 THEN
- wfjghz_out[it_mxbt_out_hz].rate = arg_qty / arg_uqty
- ELSE
- wfjghz_out[it_mxbt_out_hz].rate = 0
- END IF
- IF uof_chk_ware_outhz(it_mxbt_out_hz, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //发出明细 对应 汇总明细的printid
- ext:
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- end function
- public function integer addmx_sptcheckqty (long arg_scid, long arg_wfjgid, long arg_printid, 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_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- rslt = 0
- 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_wfjgMx.qty,
- u_order_wfjgMx.sptcheckqty,
- u_order_wfjgMx.stopqty,
- u_order_wfjgMx.mtrlid
- INTO :ls_mtrlcode,
- :ld_qty,
- :ld_sptcheckqty,
- :ld_stopqty,
- :ll_mtrlid
- FROM u_mtrldef,u_order_wfjgMx
- WHERE u_mtrldef.mtrlid = u_order_wfjgMx.mtrlid
- AND u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgID = :arg_wfjgid
- AND u_order_wfjgMx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.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_wfjgMx
- SET sptcheckqty = sptcheckqty + :arg_addqty
- WHERE ( u_order_wfjgMx.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx.printid = :arg_printid ) AND
- ( u_order_wfjgMx.scid = :arg_scid)Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致采购订单完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer addmxcmpl_out (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, 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
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协订单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_wfjgid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- Decimal ls_buyqty,ls_consignedqty
- String ls_mtrlcode
- //SELECT mtrlcode INTO :ls_mtrlcode FROM u_mtrldef
- // WHERE mtrlid = :arg_mtrlid
- // USING commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询物料资料失败'
- // GOTO ext
- //END IF
- SELECT u_order_wfjgMx_out.qty,
- u_order_wfjgMx_out.consignedqty + u_order_wfjgMx_out.stopqty,
- u_mtrldef.mtrlcode
- INTO :ls_buyqty,
- :ls_consignedqty,
- :ls_mtrlcode
- FROM u_order_wfjgMx_out INNER join u_mtrldef
- on u_order_wfjgMx_out.mtrlid = u_mtrldef.mtrlid
- WHERE ( u_order_wfjgMx_out.scid = :arg_scid ) AND
- ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx_out.printid = :arg_printid ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "物料编码["+ls_mtrlcode+"]查询外协订单已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ls_buyqty > 0 THEN //正常发出订单
- IF ls_buyqty < ls_consignedqty + arg_addqty THEN
- rslt = 0
- arg_msg = "物料["+ls_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能发出"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- ELSE //退回订单
- IF Abs(ls_buyqty) < Abs(ls_consignedqty + arg_addqty) THEN
- rslt = 0
- arg_msg = "物料["+ls_mtrlcode+"]的未完成数量只有"+String(ls_buyqty - ls_consignedqty,'#,##0.0###')+",不能发出"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- UPDATE u_order_wfjgMx_out
- SET consignedqty = consignedqty + :arg_addqty
- WHERE ( u_order_wfjgMx_out.scid = :arg_scid ) AND
- ( u_order_wfjgMx_out.wfjgid = :arg_wfjgid ) AND
- ( u_order_wfjgMx_out.printid = :arg_printid ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新外协订单完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //更新发出明细完成数
- IF addmxcmpl_out_mx(arg_scid, arg_wfjgid, arg_printid, ls_mtrlcode, arg_addqty, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer finishmx (long arg_scid, long arg_wfjgid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);//先更新单据的状态, 在更新明细的状态
- Int rslt = 1
- Long cnt = 0
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协订单唯一码'
- GOTO ext
- END IF
- IF arg_printid <= 0 THEN
- rslt = 0
- arg_msg = '错误外协订单明细ID唯一码'
- GOTO ext
- END IF
- Int li_status, li_stopflag
- Int li_finishflag = 0
- String ls_finishemp
- DateTime ldt_finishdate
- Decimal lde_qty,lde_consignedqty, lde_wasteqty, lde_thqty
- Long ll_mtrlid
- Decimal ld_upqty,lde_stopqty, lde_downrate
- SELECT status
- INTO :li_status
- FROM u_order_wfjg
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询外协订单状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF li_status = 5 Or li_status = 6 Or li_status = 3 THEN
- li_finishflag = 1
- ls_finishemp = publ_operator
- ldt_finishdate = DateTime(Today(), Now())
- ELSE
-
- SELECT u_order_wfjgmx.mtrlid,
- u_order_wfjgmx.qty,
- u_order_wfjgmx.consignedqty,
- u_order_wfjgmx.stopqty,
- u_order_wfjgmx.stopflag,
- u_order_wfjgMx.wasteqty,
- u_order_wfjgMx.thqty,
- u_mtrldef.downrate
- INTO :ll_mtrlid,
- :lde_qty,
- :lde_consignedqty,
- :lde_stopqty,
- :li_stopflag,
- :lde_wasteqty,
- :lde_thqty,
- :lde_downrate
- FROM u_mtrldef,u_order_wfjgmx
- WHERE u_mtrldef.mtrlid = u_order_wfjgmx.mtrlid
- AND u_order_wfjgmx.scid = :arg_scid
- AND u_order_wfjgmx.wfjgid = :arg_wfjgid
- AND u_order_wfjgmx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_stopflag = 1 THEN
- li_finishflag = 1
- ls_finishemp = publ_operator
- ldt_finishdate = DateTime(Today(), Now())
- ELSE
- IF lde_qty * (1 - lde_downrate) - lde_wasteqty - lde_stopqty - lde_consignedqty - lde_thqty <= 0 THEN
- li_finishflag = 1
- ls_finishemp = publ_operator
- ldt_finishdate = DateTime(Today(), Now())
- ELSE
- li_finishflag = 0
- ls_finishemp = ''
- SetNull(ldt_finishdate )
- END IF
- END IF
- END IF
- UPDATE u_order_wfjgmx
- SET finishflag = :li_finishflag,
- finishemp = :ls_finishemp,
- finishdate = :ldt_finishdate
- WHERE u_order_wfjgmx.scid = :arg_scid
- AND u_order_wfjgmx.wfjgid = :arg_wfjgid
- AND u_order_wfjgmx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新外协订单明细完成状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '更新外协订单明细信息不存在,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- //p_reset()
- Return (rslt)
- end function
- public function integer stopqty_out_mx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, ref string arg_msg, boolean arg_ifcommit);//====================================================================
- // 事件: uo_order_wfjg.stopqty_out_mx()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- // value long arg_scid
- // value long arg_wfjgid
- // value long arg_printid
- // value string arg_mtrlcode
- // value decimal arg_stopqty
- // reference string arg_msg
- // value boolean arg_ifcommit
- //--------------------------------------------------------------------
- // 返回: (none)
- //--------------------------------------------------------------------
- // 作者: LHD 日期: 2013年01月03日
- //--------------------------------------------------------------------
- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- Int rslt = 1
- Long ll_cnt = 1, i
- s_order_wfjgmx_out s_out_mx[]
- Long ll_printid
- Decimal lde_qty, lde_consignedqty, lde_stopqty
- Int li_stopflag
- Decimal lde_addqty, lde_restqty
- //lde_addqty = arg_qty
- //用游标读取明细
- DECLARE cur_out_mx CURSOR FOR
- SELECT u_order_wfjgmx_out_mx.printid, u_order_wfjgmx_out_mx.qty, u_order_wfjgmx_out_mx.consignedqty,
- u_order_wfjgmx_out_mx.stopqty, u_order_wfjgmx_out_mx.stopflag
- FROM u_order_wfjgmx_out_mx INNER JOIN
- u_order_wfjgMx_out ON
- u_order_wfjgmx_out_mx.scid = u_order_wfjgMx_out.scid AND
- u_order_wfjgmx_out_mx.wfjgid = u_order_wfjgMx_out.wfjgID AND
- u_order_wfjgmx_out_mx.mtrlid = u_order_wfjgMx_out.MtrlID AND
- u_order_wfjgmx_out_mx.status = u_order_wfjgMx_out.status AND
- u_order_wfjgmx_out_mx.woodcode = u_order_wfjgMx_out.woodcode AND
- u_order_wfjgmx_out_mx.pcode = u_order_wfjgMx_out.pcode AND
- u_order_wfjgmx_out_mx.unit = u_order_wfjgMx_out.unit
- WHERE u_order_wfjgMx_out.scid = :arg_scid AND
- u_order_wfjgMx_out.wfjgid = :arg_wfjgid AND
- u_order_wfjgMx_out.printid = :arg_printid Using commit_transaction;
-
- OPEN cur_out_mx;
- FETCH cur_out_mx Into :s_out_mx[ll_cnt].printid, :s_out_mx[ll_cnt].qty, :s_out_mx[ll_cnt].consignedqty, :s_out_mx[ll_cnt].stopqty, :s_out_mx[ll_cnt].stopflag;
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- FETCH cur_out_mx Into :s_out_mx[ll_cnt].printid, :s_out_mx[ll_cnt].qty, :s_out_mx[ll_cnt].consignedqty, :s_out_mx[ll_cnt].stopqty, :s_out_mx[ll_cnt].stopflag;
- LOOP
- CLOSE cur_out_mx;
- ll_cnt -= 1
- //arg_stopqty 必定 >0
- lde_restqty = arg_stopqty
- FOR i = 1 To ll_cnt
- ll_printid = s_out_mx[i].printid
- IF s_out_mx[i].qty - s_out_mx[i].consignedqty <= 0 THEN
- UPDATE u_order_wfjgmx_out_mx
- SET stopqty = 0
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :ll_printid Using commit_transaction ;
- ELSE
-
- lde_addqty = Min(lde_restqty, s_out_mx[i].qty - s_out_mx[i].consignedqty)
- lde_restqty -= lde_addqty
-
- UPDATE u_order_wfjgmx_out_mx
- SET stopqty = :lde_addqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :ll_printid Using commit_transaction ;
- END IF
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '更新明细'+arg_mtrlcode+'中止数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- //更新发出明细终止数
- //IF arg_stopqty > 0 THEN
- // lde_restqty = arg_stopqty
- // FOR i = 1 To ll_cnt
- // ll_printid = s_out_mx[i].printid
- // IF s_out_mx[i].qty - s_out_mx[i].consignedqty - s_out_mx[i].stopqty <= 0 THEN CONTINUE
- //
- // lde_addqty = Min(lde_restqty, s_out_mx[i].qty - s_out_mx[i].consignedqty - s_out_mx[i].stopqty)
- // lde_restqty -= lde_addqty
- //
- // UPDATE u_order_wfjgmx_out_mx
- // SET stopqty = stopqty + :lde_addqty
- // WHERE scid = :arg_scid
- // AND wfjgid = :arg_wfjgid
- // And printid = :ll_printid Using commit_transaction ;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arG_MSG = '更新明细'+arg_mtrlcode+'中止数量失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF lde_restqty <= 0 THEN EXIT
- // NEXT
- //ELSE
- // lde_restqty = Abs(arg_stopqty)
- // FOR i = 1 To ll_cnt
- // ll_printid = s_out_mx[i].printid
- // IF s_out_mx[i].stopqty <= 0 THEN CONTINUE
- //
- // lde_addqty = Min(lde_restqty, s_out_mx[i].stopqty)
- // lde_restqty -= lde_addqty
- //
- // UPDATE u_order_wfjgmx_out_mx
- // SET stopqty = stopqty - :lde_addqty
- // WHERE scid = :arg_scid
- // AND wfjgid = :arg_wfjgid
- // And printid = :ll_printid Using commit_transaction ;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arG_MSG = '更新明细'+arg_mtrlcode+'中止数量失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF lde_restqty <= 0 THEN EXIT
- // NEXT
- //END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer addmxcmpl_out_mx (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);//====================================================================
- // 事件: uo_order_wfjg.addmxcmpl_out_mx()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- // value long arg_scid
- // value long arg_wfjgid
- // value long arg_printid
- // value string arg_mtrlcode
- // value decimal arg_addqty
- // reference string arg_msg
- // value boolean arg_ifcommit
- //--------------------------------------------------------------------
- // 返回: (none)
- //--------------------------------------------------------------------
- // 作者: LHD 日期: 2013年01月03日
- //--------------------------------------------------------------------
- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- Int rslt = 1
- Long ll_cnt = 1, i
- s_order_wfjgmx_out s_out_mx[]
- Long ll_printid
- Decimal lde_qty, lde_consignedqty, lde_stopqty
- Int li_stopflag
- Decimal lde_addqty, lde_restqty
- //lde_addqty = arg_qty
- //用游标读取明细
- DECLARE cur_out_mx CURSOR FOR
- SELECT u_order_wfjgmx_out_mx.printid, u_order_wfjgmx_out_mx.qty, u_order_wfjgmx_out_mx.consignedqty,
- u_order_wfjgmx_out_mx.stopqty, u_order_wfjgmx_out_mx.stopflag
- FROM u_order_wfjgmx_out_mx INNER JOIN
- u_order_wfjgMx_out ON
- u_order_wfjgmx_out_mx.scid = u_order_wfjgMx_out.scid AND
- u_order_wfjgmx_out_mx.wfjgid = u_order_wfjgMx_out.wfjgID AND
- u_order_wfjgmx_out_mx.mtrlid = u_order_wfjgMx_out.MtrlID AND
- u_order_wfjgmx_out_mx.status = u_order_wfjgMx_out.status AND
- u_order_wfjgmx_out_mx.woodcode = u_order_wfjgMx_out.woodcode AND
- u_order_wfjgmx_out_mx.pcode = u_order_wfjgMx_out.pcode AND
- u_order_wfjgmx_out_mx.unit = u_order_wfjgMx_out.unit
- WHERE u_order_wfjgMx_out.scid = :arg_scid AND
- u_order_wfjgMx_out.wfjgid = :arg_wfjgid AND
- u_order_wfjgMx_out.printid = :arg_printid Using commit_transaction;
-
- OPEN cur_out_mx;
- FETCH cur_out_mx Into :s_out_mx[ll_cnt].printid, :s_out_mx[ll_cnt].qty, :s_out_mx[ll_cnt].consignedqty, :s_out_mx[ll_cnt].stopqty, :s_out_mx[ll_cnt].stopflag;
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- FETCH cur_out_mx Into :s_out_mx[ll_cnt].printid, :s_out_mx[ll_cnt].qty, :s_out_mx[ll_cnt].consignedqty, :s_out_mx[ll_cnt].stopqty, :s_out_mx[ll_cnt].stopflag;
- LOOP
- CLOSE cur_out_mx;
- ll_cnt -= 1
- //更新发出明细完成数
- IF arg_addqty > 0 THEN
- //增加完成
- lde_restqty = arg_addqty
- FOR i = 1 To ll_cnt
- ll_printid = s_out_mx[i].printid
- IF s_out_mx[i].qty > 0 THEN //审核, 正常增完成数
- IF s_out_mx[i].qty - s_out_mx[i].consignedqty - s_out_mx[i].stopqty <= 0 THEN CONTINUE
-
- lde_addqty = Min(lde_restqty, s_out_mx[i].qty - s_out_mx[i].consignedqty - s_out_mx[i].stopqty)
- lde_restqty -= lde_addqty
- ELSE //撤审,退回减完成数
- IF Abs(s_out_mx[i].consignedqty) = 0 THEN CONTINUE
- lde_addqty = Min(lde_restqty, Abs(s_out_mx[i].consignedqty))
- lde_restqty -= lde_addqty
- lde_addqty = 0 - lde_addqty
- END IF
-
- UPDATE u_order_wfjgmx_out_mx
- SET consignedqty = consignedqty + :lde_addqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :ll_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '更新明细'+arg_mtrlcode+'完成数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF lde_restqty <= 0 THEN EXIT
- NEXT
- ELSE
- lde_restqty = Abs(arg_addqty)
- FOR i = 1 To ll_cnt
- ll_printid = s_out_mx[i].printid
- IF s_out_mx[i].qty > 0 THEN //审核, 正常增完成数
- IF s_out_mx[i].consignedqty <= 0 THEN CONTINUE
-
- lde_addqty = Min(lde_restqty, s_out_mx[i].consignedqty)
- lde_restqty -= lde_addqty
- ELSE //撤审,退回减完成数
- IF Abs(s_out_mx[i].qty) - Abs(s_out_mx[i].consignedqty) - Abs(s_out_mx[i].stopqty) <= 0 THEN CONTINUE
- lde_addqty = Min(lde_restqty, Abs(s_out_mx[i].qty) - Abs(s_out_mx[i].consignedqty) - Abs(s_out_mx[i].stopqty))
- lde_restqty -= lde_addqty
- lde_addqty = 0 - lde_addqty
- END IF
- UPDATE u_order_wfjgmx_out_mx
- SET consignedqty = consignedqty - :lde_addqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :ll_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '更新明细'+arg_mtrlcode+'完成数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF lde_restqty <= 0 THEN EXIT
- NEXT
-
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer stopbuytask (long arg_scid, long arg_wfjgid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0, i
- IF arg_wfjgid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误外加工计划唯一码'
- GOTO ext
- END IF
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_wfjgid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "外加工计划只有在进行状态才可以执行终止,请核对"
- GOTO ext
- END IF
- arg_stopreason = Trim(arg_stopreason)
- IF arg_stopreason = '' THEN
- rslt = 0
- ARG_MSG = "请输入终止原因"
- GOTO ext
- END IF
- UPDATE u_order_wfjg
- SET Status = 5,
- accomplishdate = getdate(),
- stopemp = :publ_operator,
- stopreason = :arg_stopreason
- WHERE wfjgid = :arg_wfjgid
- And scid = :arg_scid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致终止外加工计划操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- //更新明细完成状态
- FOR i = 1 To it_mxbt
- IF finishmx(arg_scid, arg_wfjgid, wfjgmx[i].printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_qty, decimal arg_price, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_jgdscrp, string arg_status, string arg_woodcode, string arg_pcode, long arg_wrkgrpid, long arg_relwfjgid, long arg_relprintid, string arg_pfcode, string arg_unit, decimal arg_uqty, decimal arg_rate, decimal arg_taxrate, string arg_plancode, long arg_relwfjgid2, long arg_relprintid2);
- s_order_wfjgmx s_mx
- s_mx.iforder = arg_iforder
- s_mx.orderid = arg_orderid
- s_mx.ordercode = arg_ordercode
- s_mx.mtrlid = arg_mtrlid
- s_mx.qty = arg_qty
- s_mx.price = arg_price
- s_mx.dscrp = arg_dscrp
- s_mx.mtrlcode = arg_mtrlcode
- s_mx.printid = arg_printid
- s_mx.requiredate = arg_requiredate
- s_mx.storageid = arg_storageid
- s_mx.jgdscrp = arg_jgdscrp
- s_mx.status = arg_status
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.wrkgrpid = arg_wrkgrpid
- s_mx.relwfjgid = arg_relwfjgid
- s_mx.relprintid = arg_relprintid
- s_mx.pfcode = arg_pfcode
- s_mx.unit = arg_unit
- s_mx.uqty = arg_uqty
- s_mx.rate = arg_rate
- s_mx.taxrate = arg_taxrate
- s_mx.plancode = arg_plancode
- s_mx.relwfjgid2 = arg_relwfjgid2
- s_mx.relprintid2 = arg_relprintid2
- s_mx.rebate = 1
- s_mx.thtype = 0
- return acceptmx(s_mx, arg_msg)
- /*
- Int rslt = 1
- Long cnt = 0,ls_i
- Int li_mtrlkind,li_iffp
- String ls_relcode
- int li_iflimitprice
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- IF uo_option_2unit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[067]外协双单位核算,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_iforder) THEN arg_iforder = 0
- IF IsNull(arg_orderid) THEN arg_orderid = 0
- IF IsNull(arg_ordercode) THEN arg_ordercode = ''
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_price) THEN arg_price = 0
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF IsNull(arg_jgdscrp) THEN arg_jgdscrp = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_relwfjgid) THEN arg_relwfjgid = 0
- IF IsNull(arg_relprintid) THEN arg_relprintid = 0
- IF IsNull(arg_pfcode) THEN arg_pfcode = ''
- if isnull(arg_taxrate) then arg_taxrate = 0
- if isnull(arg_plancode) then arg_plancode = ''
- IF IsNull(arg_relwfjgid2) THEN arg_relwfjgid2 = 0
- IF IsNull(arg_relprintid2) THEN arg_relprintid2 = 0
- IF arg_mtrlid = 0 OR arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF uo_option_2unit = 1 THEN
- IF arg_uqty = 0 THEN
- arg_msg = '收货明细,行:'+String(arg_printid)+ ',请输入计价数量'
- rslt = 0
- GOTO ext
- END IF
-
- IF Trim(arg_unit) = '' THEN
- arg_msg = '收货明细,行:'+String(arg_printid)+ ',请选择计价单位'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_price < 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(arg_printid)+",物料:" + String(arg_mtrlcode)+",单价错误"
- GOTO ext
- END IF
- if arg_taxrate < 0 then
- rslt = 0
- arg_msg = '收货明细,行:'+String(arg_printid)+",物料:" + String(arg_mtrlcode)+",税率错误"
- GOTO ext
- END IF
- SELECT mtrlkind,iffp, iflimitprice
- INTO :li_mtrlkind,:li_iffp, :li_iflimitprice
- FROM u_mtrldef
- WHERE u_mtrldef.mtrlid = :arg_mtrlid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(arg_printid)+",查询物料:"+arg_mtrlcode+',属性失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- if sys_option_nostorageid_wfjg = 1 then
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_storage
- WHERE u_storage.storageid = :arg_storageid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(arg_printid)+",查询操作失败,仓库编号"
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(arg_printid)+",错误的仓库编号"
- GOTO ext
- END IF
- end if
- IF arg_relwfjgid > 0 THEN
- IF arg_relprintid = 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(arg_printid)+",错误的外协申请单明细ID"
- GOTO ext
- END IF
-
- SELECT taskcode INTO :ls_relcode
- FROM u_request_wfjg
- WHERE scid = :scid
- AND wfjgid = :arg_relwfjgid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(arg_printid)+",查询外协申请单单失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ls_relcode = ''
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrl_pf
- WHERE mtrlid = :arg_mtrlid
- AND pfcode = :arg_pfcode
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '收货明细,行:'+String(arg_printid)+',查询物料清单失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '收货明细,行:'+String(arg_printid)+',查询物料清单不存在,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 1 THEN
- arg_msg = '收货明细,行:'+String(arg_printid)+',查询物料清单重复,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF Date(Requiredate) > Date(arg_requiredate) THEN
- arg_msg = '收货明细,行:'+String(arg_printid)+',回厂日期不能在下单日期前'
- rslt = 0
- GOTO ext
- END IF
- decimal lde_mrate, lde_rebate
- lde_mrate = 1
- lde_rebate = 1
- Long ll_moneyid_native
- SELECT moneyid INTO :ll_moneyid_native
- From cw_currency Where native = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '收货明细,行:'+String(arg_printid)+',查询本位币币种id失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_iflimitprice = 1 THEN
- IF f_power_ind(3709,sys_msg_pow) Or Not sys_power_issuper THEN
- IF uo_sptprice.uof_check_price(0,sptid,arg_mtrlid,arg_mtrlcode,arg_unit,arg_status,arg_woodcode,arg_pcode,arg_jgdscrp,ll_moneyid_native,arg_price * lde_mrate * lde_rebate,Requiredate,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //写入内容
- it_mxbt++
- wfjgmx[it_mxbt].iforder = arg_iforder
- wfjgmx[it_mxbt].orderid = arg_orderid
- wfjgmx[it_mxbt].ordercode = arg_ordercode
- wfjgmx[it_mxbt].mtrlid = arg_mtrlid
- wfjgmx[it_mxbt].qty = arg_qty
- wfjgmx[it_mxbt].dscrp = arg_dscrp
- wfjgmx[it_mxbt].mtrlcode = arg_mtrlcode
- wfjgmx[it_mxbt].printid = arg_printid
- wfjgmx[it_mxbt].price = arg_price
- wfjgmx[it_mxbt].Requiredate = arg_requiredate
- wfjgmx[it_mxbt].storageid = arg_storageid
- wfjgmx[it_mxbt].jgdscrp = arg_jgdscrp
- wfjgmx[it_mxbt].status = arg_status
- wfjgmx[it_mxbt].woodcode = arg_woodcode
- wfjgmx[it_mxbt].pcode = arg_pcode
- wfjgmx[it_mxbt].wrkgrpid = arg_wrkgrpid
- wfjgmx[it_mxbt].relwfjgid = arg_relwfjgid
- wfjgmx[it_mxbt].relprintid = arg_relprintid
- wfjgmx[it_mxbt].pfcode = arg_pfcode
- wfjgmx[it_mxbt].relcode = ls_relcode
- wfjgmx[it_mxbt].taxrate = arg_taxrate
- wfjgmx[it_mxbt].iffp = li_iffp
- wfjgmx[it_mxbt].plancode = arg_plancode
- wfjgmx[it_mxbt].relwfjgid2 = arg_relwfjgid2
- wfjgmx[it_mxbt].relprintid2 = arg_relprintid2
- //IF uo_option_2unit = 0 THEN
- // arg_uqty = arg_qty
- //END IF
- wfjgmx[it_mxbt].unit = arg_unit
- wfjgmx[it_mxbt].uqty = arg_uqty
- IF arg_uqty <> 0 THEN
- wfjgmx[it_mxbt].rate = arg_qty / arg_uqty
- ELSE
- wfjgmx[it_mxbt].rate = 0
- END IF
- ext:
- destroy uo_sptprice
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- */
- end function
- public function integer uof_add_thqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_thqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_notconsignedqty,lde_thqty
- Int li_status
- Long ll_orderid,ll_mtrlid,ll_row_f
- Long ll_lp,ll_k
- String ls_mtrlcode_out
- Decimal ld_costamt_out ,ld_qty_out,ld_cost_out
- Long ll_wrkgrpid_out,ll_mtrlid_out
- String ls_status_out,ls_woodcode_out,ls_pcode_out
- Decimal ld_overqty,ld_arrry_qty
- Long ll_workgroupid
- String ls_wrkgrpname
- String ls_pfcode
- Long cnt
- Decimal ls_buyqty
- decimal lde_sonscale
- uo_order_wfjg uo_wfjg
- uo_wfjg = Create uo_order_wfjg
- uo_wfjg.commit_transaction = sqlca
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- //datastore ds_mrpmx
- //ds_mrpmx = Create datastore
- //ds_mrpmx.DataObject = 'ds_order_ml_mrpmx'
- //ds_mrpmx.SetTransObject(sqlca)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(arg_thqty) THEN arg_thqty = 0
- IF arg_thqty = 0 THEN
- GOTO ext
- END IF
- SELECT u_order_wfjg.status
- INTO :li_status
- FROM u_order_wfjg
- WHERE u_order_wfjg.scid = :arg_scid
- AND u_order_wfjg.wfjgid = :arg_wfjgid
- Using commit_transaction ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF li_status <> 1 And li_status <> 5 THEN
- arg_msg = '订单只能在进行状态或自动完成状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_order_wfjgMx.Qty - u_order_wfjgMx.consignedqty - u_order_wfjgmx.wasteqty - u_order_wfjgmx.stopqty - u_order_wfjgmx.thqty,
- u_order_wfjgmx.thqty,
- u_order_wfjgmx.orderid,
- u_order_wfjgMx.mtrlid,
- u_order_wfjgMx.pfcode,
- u_order_wfjgMx.Qty
- INTO :ld_notconsignedqty,
- :lde_thqty,
- :ll_orderid,
- :ll_mtrlid,
- :ls_pfcode,
- :ls_buyqty
- FROM u_order_wfjgMx
- WHERE u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgid = :arg_wfjgid
- And u_order_wfjgMx.printid = :arg_printid Using commit_transaction ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_thqty > 0 THEN
- IF arg_thqty > ld_notconsignedqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'未完成数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能退回:'+String(arg_thqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- ELSE //<0
- IF Abs(arg_thqty) > lde_thqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已退回数只有:'+String(lde_thqty,'#,##0.##########') +'不能撤销退回:'+String(arg_thqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- END IF
- //更新相关发出明细已领数
- IF uof_add_dstrqty(arg_scid, arg_wfjgid, arg_printid, ll_orderid, ll_mtrlid, ls_pfcode, ls_buyqty, arg_thqty, 0,arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_order_wfjgMx
- SET thqty = thqty + :arg_thqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //更新单据完成状态
- IF uo_wfjg.trycmplbuytask(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新明细完成状态
- IF uo_wfjg.finishmx(arg_scid, arg_wfjgid, arg_printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- Destroy uo_wfjg
- Destroy uo_order
- //Destroy ds_mrpmx
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer uof_add_nonconsignedqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- UPDATE u_order_wfjgMx
- SET nonconsignedqty = Qty - consignedqty - wasteqty - stopqty - thqty
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //更新单据完成状态
- IF trycmplbuytask(arg_scid,arg_wfjgid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新明细完成状态
- IF finishmx(arg_scid, arg_wfjgid, arg_printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx (s_order_wfjgmx s_mx, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i
- Int li_mtrlkind,li_iffp
- String ls_relcode
- int li_iflimitprice
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- IF uo_option_2unit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[067]外协双单位核算,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(s_mx.iforder) THEN s_mx.iforder = 0
- IF IsNull(s_mx.orderid) THEN s_mx.orderid = 0
- IF IsNull(s_mx.ordercode) THEN s_mx.ordercode = ''
- IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
- IF IsNull(s_mx.qty) THEN s_mx.qty = 0
- IF IsNull(s_mx.price) THEN s_mx.price = 0
- IF IsNull(s_mx.rebate) THEN s_mx.rebate = 1
- IF s_mx.rebate = 0 THEN s_mx.rebate = 1
- IF IsNull(s_mx.dscrp) THEN s_mx.dscrp = ''
- IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = ''
- IF IsNull(s_mx.printid) THEN s_mx.printid = 0
- IF IsNull(s_mx.storageid) THEN s_mx.storageid = 0
- IF IsNull(s_mx.jgdscrp) THEN s_mx.jgdscrp = ''
- IF IsNull(s_mx.status) THEN s_mx.status = ''
- IF IsNull(s_mx.woodcode) THEN s_mx.woodcode = ''
- IF IsNull(s_mx.pcode) THEN s_mx.pcode = ''
- IF IsNull(s_mx.relwfjgid) THEN s_mx.relwfjgid = 0
- IF IsNull(s_mx.relprintid) THEN s_mx.relprintid = 0
- IF IsNull(s_mx.pfcode) THEN s_mx.pfcode = ''
- if isnull(s_mx.taxrate) then s_mx.taxrate = 0
- if isnull(s_mx.plancode) then s_mx.plancode = ''
- IF IsNull(s_mx.relwfjgid2) THEN s_mx.relwfjgid2 = 0
- IF IsNull(s_mx.relprintid2) THEN s_mx.relprintid2 = 0
- IF IsNull(s_mx.thtype) THEN s_mx.thtype = 0
- IF s_mx.mtrlid = 0 OR s_mx.qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF uo_option_2unit = 1 THEN
- IF s_mx.uqty = 0 THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+ ',请输入计价数量'
- rslt = 0
- GOTO ext
- END IF
-
- IF Trim(s_mx.unit) = '' THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+ ',请选择计价单位'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF s_mx.price < 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",物料:" + String(s_mx.mtrlcode)+",单价错误"
- GOTO ext
- END IF
- if s_mx.taxrate < 0 then
- rslt = 0
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",物料:" + String(s_mx.mtrlcode)+",税率错误"
- GOTO ext
- END IF
- IF s_mx.rebate <= 0 or s_mx.rebate > 1 THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",物料:" + String(s_mx.mtrlcode)+",折扣错误,只能取范围(0, 1]"
- rslt = 0
- GOTO ext
- END IF
- SELECT mtrlkind,iffp, iflimitprice
- INTO :li_mtrlkind,:li_iffp, :li_iflimitprice
- FROM u_mtrldef
- WHERE u_mtrldef.mtrlid = :s_mx.mtrlid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",查询物料:"+s_mx.mtrlcode+',属性失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- if sys_option_nostorageid_wfjg = 1 then
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_storage
- WHERE u_storage.storageid = :s_mx.storageid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",查询操作失败,仓库编号"
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",错误的仓库编号"
- GOTO ext
- END IF
- end if
- IF s_mx.relwfjgid > 0 THEN
- IF s_mx.relprintid = 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",错误的外协申请单明细ID"
- GOTO ext
- END IF
-
- SELECT taskcode INTO :ls_relcode
- FROM u_request_wfjg
- WHERE scid = :scid
- AND wfjgid = :s_mx.relwfjgid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '收货明细,行:'+String(s_mx.printid)+",查询外协申请单单失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ls_relcode = ''
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrl_pf
- WHERE mtrlid = :s_mx.mtrlid
- AND pfcode = :s_mx.pfcode
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+',查询物料清单失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+',查询物料清单不存在,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 1 THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+',查询物料清单重复,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF Date(Requiredate) > Date(s_mx.requiredate) THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+',回厂日期不能在下单日期前'
- rslt = 0
- GOTO ext
- END IF
- decimal lde_mrate, lde_rebate
- lde_mrate = 1
- lde_rebate = 1
- Long ll_moneyid_native
- SELECT moneyid INTO :ll_moneyid_native
- From cw_currency Where native = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '收货明细,行:'+String(s_mx.printid)+',查询本位币币种id失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_iflimitprice = 1 THEN
- IF f_power_ind(3709,sys_msg_pow) Or Not sys_power_issuper THEN
- IF uo_sptprice.uof_check_price(0,sptid,s_mx.mtrlid,s_mx.mtrlcode,s_mx.unit,s_mx.status,s_mx.woodcode,s_mx.pcode,s_mx.jgdscrp,ll_moneyid_native,s_mx.price * lde_mrate * lde_rebate,Requiredate,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //写入内容
- it_mxbt++
- wfjgmx[it_mxbt].printid = s_mx.printid
- wfjgmx[it_mxbt].iforder = s_mx.iforder
- wfjgmx[it_mxbt].orderid = s_mx.orderid
- wfjgmx[it_mxbt].ordercode = s_mx.ordercode
- wfjgmx[it_mxbt].mtrlid = s_mx.mtrlid
- wfjgmx[it_mxbt].mtrlcode = s_mx.mtrlcode
- wfjgmx[it_mxbt].qty = s_mx.qty
- wfjgmx[it_mxbt].unit = s_mx.unit
- wfjgmx[it_mxbt].uqty = s_mx.uqty
- IF s_mx.uqty <> 0 THEN
- wfjgmx[it_mxbt].rate = s_mx.qty / s_mx.uqty
- ELSE
- wfjgmx[it_mxbt].rate = 0
- END IF
- wfjgmx[it_mxbt].price = s_mx.price
- wfjgmx[it_mxbt].rebate = s_mx.rebate
- wfjgmx[it_mxbt].storageid = s_mx.storageid
- wfjgmx[it_mxbt].jgdscrp = s_mx.jgdscrp
- wfjgmx[it_mxbt].status = s_mx.status
- wfjgmx[it_mxbt].woodcode = s_mx.woodcode
- wfjgmx[it_mxbt].pcode = s_mx.pcode
- wfjgmx[it_mxbt].plancode = s_mx.plancode
- wfjgmx[it_mxbt].dscrp = s_mx.dscrp
- wfjgmx[it_mxbt].Requiredate = s_mx.requiredate
- wfjgmx[it_mxbt].wrkgrpid = s_mx.wrkgrpid
- wfjgmx[it_mxbt].relwfjgid = s_mx.relwfjgid
- wfjgmx[it_mxbt].relprintid = s_mx.relprintid
- wfjgmx[it_mxbt].pfcode = s_mx.pfcode
- wfjgmx[it_mxbt].relcode = ls_relcode
- wfjgmx[it_mxbt].taxrate = s_mx.taxrate
- wfjgmx[it_mxbt].iffp = li_iffp
- wfjgmx[it_mxbt].relwfjgid2 = s_mx.relwfjgid2
- wfjgmx[it_mxbt].relprintid2 = s_mx.relprintid2
- wfjgmx[it_mxbt].thtype = s_mx.thtype
- ext:
- destroy uo_sptprice
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- end function
- public function integer stopaddqty (long arg_scid, long arg_wfjgid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, decimal arg_rewfjgqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);//arg_stopqty //本次要终止的数量 ; > 0增加终止; <0 减少终止;
- Int rslt = 1
- Long ll_mtrlid
- Decimal lde_qty, lde_stopqty, lde_rewfjgqty
- Decimal ld_notconsignedqty
- IF IsNull(arg_stopqty) THEN arg_stopqty = 0
- IF IsNull(arg_rewfjgqty) THEN arg_rewfjgqty = 0
- SELECT u_order_wfjgMx.Qty - u_order_wfjgMx.consignedqty - u_order_wfjgmx.wasteqty - u_order_wfjgmx.thqty,
- u_order_wfjgMx.mtrlid,
- u_order_wfjgMx.Qty,
- u_order_wfjgMx.stopqty
- INTO :ld_notconsignedqty,
- :ll_mtrlid,
- :lde_qty,
- :lde_stopqty
- FROM u_order_wfjgMx
- WHERE u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgid = :arg_wfjgid
- And u_order_wfjgMx.printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_mtrlcode = "" THEN
- SELECT mtrlcode
- INTO :arg_mtrlcode
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询明细物料资料失败'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_stopqty > 0 THEN
- IF arg_stopqty > ld_notconsignedqty THEN
- arG_MSG = '明细物料'+arg_mtrlcode+'未完成数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能终止:'+String(arg_stopqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF Abs(arg_stopqty) > lde_stopqty THEN
- arG_MSG = '明细物料'+arg_mtrlcode+'已终止数只有:'+String(lde_stopqty,'#,##0.##########') +'不能取消终止:'+String(Abs(arg_stopqty),'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- END IF
- lde_stopqty = lde_stopqty + arg_stopqty //最新的终止数
- IF stopqty(arg_scid, arg_wfjgid, arg_printid, arg_mtrlcode,lde_stopqty, arg_rewfjgqty ,arg_stopreason,arG_MSG,arg_ifcommit ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_chk_ware_outhz (long arg_row, ref string arg_msg);Int rslt = 1
- ////////////////////////////////////// //
- //====================================================================
- // 按外协订单发出明细内容自动建立
- //====================================================================
- Int li_thflag
- Long i
- Decimal ld_sumqty
- IF uo_option_autocreate_outware = 1 And Trim(dscrp) <> '返工单审核自动生成的外协订单' And Trim(dscrp) <> '盘盈单审核自动生成的外协订单' THEN
- IF wfjghz_out[arg_row].qty > 0 THEN //检查库存
- SELECT sum(noallocqty) INTO :ld_sumqty
- FROM u_mtrlware
- WHERE mtrlid = :wfjghz_out[arg_row].mtrlid
- AND storageid = :wfjghz_out[arg_row].storageid
- AND status = :wfjghz_out[arg_row].status
- AND woodcode = :wfjghz_out[arg_row].woodcode
- And pcode = :wfjghz_out[arg_row].pcode Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询 '+wfjghz_out[arg_row].mtrlcode+' 库存数量失败'+'~r~n'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF IsNull(ld_sumqty) THEN ld_sumqty = 0
-
- IF ld_sumqty < wfjghz_out[arg_row].qty THEN
- rslt = 0
- arg_msg = wfjghz_out[arg_row].mtrlcode+' 库存数量:'+String(ld_sumqty,'#,##0.##########')+'少于本次出仓数量:'+String(wfjghz_out[arg_row].qty,'#,##0.##########')+',不能自动生成发出单'
- GOTO ext
- END IF
- ELSEIF billtype = 2 And wfjghz_out[arg_row].qty < 0 THEN //退回的,检查供应商库存
- SELECT sum(noallocqty) INTO :ld_sumqty
- FROM ow_wfjgware
- WHERE mtrlid = :wfjghz_out[arg_row].mtrlid
- AND sptid = :sptid
- AND status = :wfjghz_out[arg_row].status
- AND woodcode = :wfjghz_out[arg_row].woodcode
- And pcode = :wfjghz_out[arg_row].pcode Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询 '+wfjghz_out[arg_row].mtrlcode+' 外协商库存数量失败'+'~r~n'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF IsNull(ld_sumqty) THEN ld_sumqty = 0
-
- IF ld_sumqty < Abs(wfjghz_out[arg_row].qty) THEN
- rslt = 0
- arg_msg = wfjghz_out[arg_row].mtrlcode+' 外协商库存数量:'+String(ld_sumqty,'#,##0.##########')+'少于本次出仓数量:'+String(wfjghz_out[arg_row].qty,'#,##0.##########')+',不能自动生成退回单'
- GOTO ext
- END IF
- END IF
- END IF
- /////////////////////////////////////// //
- ext:
- RETURN rslt
- end function
- public function integer uof_create_outware_wfjg (long arg_scid, string arg_emp, ref string arg_msg);Int rslt = 1
- Long cnt
- Int li_thflag
- Long ll_0_mtrlwareid
- Dec ld_rate
- String ls_unit
- //====================================================================
- // 按外协订单发出明细内容自动建立
- //====================================================================
- uo_outware_wfjg uo_ware
- uo_ware = Create uo_outware_wfjg
- uo_ware.commit_transaction = sqlca
- Long i,j
- Long ll_mx
- Decimal ld_sumqty,ld_acceptqty,ld_lastqty
- Long ll_mtrlwareid[]
- Decimal ld_noallocqty[]
- Long ll_printid = 0
- IF uo_option_autocreate_outware = 1 And Trim(dscrp) <> '返工单审核自动生成的外协订单' And Trim(dscrp) <> '盘盈单审核自动生成的外协订单' THEN
-
- IF it_mxbt_out_hz > 0 THEN
- DateTime server_dt
- SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
-
- IF uo_ware.newbegin(scid,4,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_ware.outdate = requiredate
- uo_ware.outrep = arg_emp
- uo_ware.dscrp = '外协订单 '+taskcode+' 自动生成'
- uo_ware.relid = wfjgid //相关ID
- uo_ware.sptid = sptid
- uo_ware.part = taskcode
- uo_ware.if_getid_ture = False
-
- //自动区分类型,发出/退回
- IF wfjghz_out[1].qty >= 0 THEN
- uo_ware.thflag = 0
- li_thflag = 0
- ELSE
- uo_ware.thflag = 1
- li_thflag = 1
- END IF
-
- //检查是否够库存
- FOR i = 1 To it_mxbt_out_hz
- IF li_thflag = 0 THEN //发出单,检查库存数
- SELECT sum(noallocqty) INTO :ld_sumqty
- FROM u_mtrlware
- WHERE mtrlid = :wfjghz_out[i].mtrlid
- AND storageid = :wfjghz_out[i].storageid
- AND status = :wfjghz_out[i].status
- AND woodcode = :wfjghz_out[i].woodcode
- And pcode = :wfjghz_out[i].pcode Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询 '+wfjghz_out[i].mtrlcode+' 库存数量失败'+'~r~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF IsNull(ld_sumqty) THEN ld_sumqty = 0
-
- IF ld_sumqty < wfjghz_out[i].qty THEN
- rslt = 0
- arg_msg = wfjghz_out[i].mtrlcode+' 库存数量:'+String(ld_sumqty,'#,##0.##########')+'少于本次出仓数量:'+String(wfjghz_out[i].qty,'#,##0.##########')+',不能自动生成发出单'
- GOTO ext
- END IF
- ELSE //退回单,检查库存id
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrlware
- WHERE mtrlid = :wfjghz_out[i].mtrlid
- AND storageid = :wfjghz_out[i].storageid
- AND status = :wfjghz_out[i].status
- AND woodcode = :wfjghz_out[i].woodcode
- And pcode = :wfjghz_out[i].pcode Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询 '+wfjghz_out[i].mtrlcode+' 退回仓库是否有库存记录失败'+'~r~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- ll_0_mtrlwareid = f_sys_scidentity(arg_scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- IF ll_0_mtrlwareid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_mtrlware(scid,
- mtrlwareid,
- mtrlid,
- storageid,
- status,
- woodcode,
- pcode)
- VALUES(:arg_scid,
- :ll_0_mtrlwareid,
- :wfjghz_out[i].mtrlid,
- :wfjghz_out[i].storageid,
- :wfjghz_out[i].status,
- :wfjghz_out[i].woodcode,
- :wfjghz_out[i].pcode) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '物料:'+wfjghz_out[i].mtrlcode+' 退回仓增加0库存记录失败'+'~r~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
-
- //插入明细
- FOR i = 1 To it_mxbt_out_hz
- ll_mx = 1
- DECLARE cur_mx CURSOR FOR
- SELECT noallocqty,mtrlwareid
- FROM u_mtrlware
- WHERE mtrlid = :wfjghz_out[i].mtrlid
- AND storageid = :wfjghz_out[i].storageid
- AND status = :wfjghz_out[i].status
- AND woodcode = :wfjghz_out[i].woodcode
- AND pcode = :wfjghz_out[i].pcode
- ORDER BY noallocqty DESC
- Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx Into :ld_noallocqty[ll_mx],:ll_mtrlwareid[ll_mx];
- DO WHILE commit_transaction.SQLCode = 0
- ll_mx++
- FETCH cur_mx Into :ld_noallocqty[ll_mx],:ll_mtrlwareid[ll_mx];
- LOOP
- CLOSE cur_mx;
-
- ld_lastqty = wfjghz_out[i].qty
- FOR j = 1 To ll_mx - 1
- IF ld_lastqty <= ld_noallocqty[j] THEN
- ld_acceptqty = ld_lastqty
- ld_lastqty = 0
- ELSE
- ld_acceptqty = ld_noallocqty[j]
- ld_lastqty = ld_lastqty - ld_noallocqty[j]
- END IF
-
-
- ll_printid++
-
- IF wfjghz_out[i].rate <= 0 THEN
- ld_rate = 1
- ls_unit = wfjghz_out[i].unit_def
- ELSE
- ld_rate = wfjghz_out[i].rate
- ls_unit = wfjghz_out[i].unit
- END IF
-
- IF uo_ware.acceptmx(ll_mtrlwareid[j],&
- ld_acceptqty / ld_rate,&
- ls_unit,&
- ld_acceptqty,0,&
- wfjghz_out[i].dscrp,&
- ll_printid,&
- arg_msg,&
- 1,&
- wfjgid,&
- wfjghz_out[i].printid,&
- 0,0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ld_lastqty = 0 THEN EXIT
- NEXT
-
- IF ld_lastqty > 0 THEN
- arg_msg = wfjghz_out[i].mtrlcode+' 库存欠数量:'+String(ld_lastqty,'#,##0.##########')+',不能自动生成发出单'
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
- //保存发出单
- IF uo_ware.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.getinfo(scid,uo_ware.outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //审核发出单
- IF uo_ware.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //
- END IF
-
- // IF billtype = 2 THEN //退回单,自动更新原外协订单的已退回数
- //
- // END IF
- END IF
- ext:
- Destroy uo_ware
- RETURN rslt
- end function
- public function integer uof_destroy_outware_wfjg (ref string arg_msg);Int rslt = 1
- Long cnt
- //撤审并删除自动生成的仓库外协发出单
- uo_outware_wfjg uo_ware
- uo_ware = Create uo_outware_wfjg
- uo_ware.commit_transaction = sqlca
- IF uo_option_autocreate_outware = 1 And Trim(dscrp) <> '返工单审核自动生成的外协订单' THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM ow_wfjg_out
- WHERE relid = :wfjgid
- AND billtype = 4
- And scid = :scid Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否有自动建立的外协发出单失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt = 1 THEN
- Long ll_outwareid
- SELECT outwareid INTO :ll_outwareid
- FROM ow_wfjg_out
- WHERE relid = :wfjgid
- AND billtype = 4
- And scid = :scid Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询自动建立的外协发出单信息失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF uo_ware.getinfo(scid,ll_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.del(scid,ll_outwareid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //
- ext:
- Destroy uo_ware
- RETURN rslt
- end function
- public function integer uof_add_order_acmpqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);// arg_addqty > 0 审核 增加
- // arg_addqty < 0 撤审 减少
- Int rslt = 1
- Long ll_i, ll_k
- Long ll_cnt_order
- Long ll_orderid, ll_mtrlid_order
- Int li_ordertype_order, li_ifwfjgorder
- Decimal lde_addqty
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划已进仓数
- Decimal lde_addqty_allow, ld_qty
- Decimal lde_orderqty, lde_acmpqty, lde_stopqty, lde_unacmpqty
- //ll_i = arg_row
- lde_addqty = Abs(arg_addqty)
- String ls_mtrlcode,ls_taskcode
- Long ll_mtrlid
- Long ll_iforder
- Int li_ordertype_order_ml
- Long ll_relwfjgid, ll_relprintid
- SELECT u_mtrldef.mtrlcode,
- u_order_wfjgMx.orderid,
- u_order_wfjgMx.mtrlid,
- u_order_wfjgmx.iforder,
- u_order_wfjg.taskcode,
- u_order_wfjgMx.relwfjgid,
- u_order_wfjgMx.relprintid
- INTO :ls_mtrlcode,
- :ll_orderid,
- :ll_mtrlid,
- :ll_iforder,
- :ls_taskcode,
- :ll_relwfjgid,
- :ll_relprintid
- FROM u_mtrldef,u_order_wfjgMx,u_order_wfjg
- WHERE u_mtrldef.mtrlid = u_order_wfjgMx.mtrlid
- AND u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgid = :arg_wfjgid
- AND u_order_wfjgMx.scid = u_order_wfjg.scid
- AND u_order_wfjgMx.wfjgid = u_order_wfjg.wfjgid
- AND u_order_wfjgMx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_iforder > 0 THEN
-
- ll_cnt_order = ds_rqwfjg.Retrieve(scid,ll_relwfjgid,ll_relprintid)
-
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- IF ll_orderid = 0 THEN CONTINUE
-
- li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
- li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
- ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_acmpqty = ds_rqwfjg.Object.acmpqty[ll_k]
- lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
- lde_unacmpqty = ds_rqwfjg.Object.unacmpqty[ll_k]
-
- //更新外协主生产计划已进仓数
- If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = ll_mtrlid THEN
-
- IF arg_addqty > 0 THEN
- lde_addqty_allow = lde_unacmpqty
- ELSE
- lde_addqty_allow = lde_acmpqty
- END IF
-
- IF lde_addqty_allow > 0 THEN
- ld_qty = Min(lde_addqty, lde_addqty_allow) //本条处理数
- lde_addqty -= ld_qty //未处理数
-
- IF ld_qty > 0 THEN
- IF arg_addqty > 0 THEN //增加
- //ld_qty = ld_qty
- ELSE //减少
- ld_qty = 0 - ld_qty
- END IF
-
- IF uo_order.addmxcmpl(scid,ll_orderid,ld_qty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_order.tryfinishorder(scid,ll_orderid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF lde_addqty <= 0 THEN EXIT // 完成
- END IF
- END IF
- NEXT
- END IF
- ext:
- Destroy uo_order
- Destroy ds_rqwfjg
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_add_order_stopqty (long arg_scid, long arg_wfjgid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);// arg_addqty > 0 审核 增加
- // arg_addqty < 0 撤审 减少
- Int rslt = 1
- Long ll_i, ll_k
- Long ll_cnt_order
- Long ll_orderid, ll_mtrlid_order
- Int li_ordertype_order, li_ifwfjgorder
- Decimal lde_addqty
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_rqwfjg
- ds_rqwfjg = Create datastore
- ds_rqwfjg.DataObject = 'ds_order_wfjg_request_wfjg_mxmx'
- ds_rqwfjg.SetTransObject(sqlca)
- //1.通过外协申请单,找到对应的主计划, //更新外协主生产计划终止数
- Decimal lde_addqty_allow, ld_qty
- Decimal lde_orderqty, lde_acmpqty, lde_stopqty, lde_unacmpqty
- //ll_i = arg_row
- lde_addqty = Abs(arg_addqty)
- String ls_mtrlcode,ls_taskcode
- Long ll_mtrlid
- Long ll_iforder
- Int li_ordertype_order_ml
- Long ll_relwfjgid, ll_relprintid
- SELECT u_mtrldef.mtrlcode,
- u_order_wfjgMx.orderid,
- u_order_wfjgMx.wrkGrpid,
- u_order_wfjgMx.mtrlid,
- u_order_wfjgmx.iforder,
- u_order_wfjg.taskcode,
- u_order_wfjgMx.relwfjgid,
- u_order_wfjgMx.relprintid
- INTO :ls_mtrlcode,
- :ll_orderid,
- :ll_mtrlid,
- :ll_iforder,
- :ls_taskcode,
- :ll_relwfjgid,
- :ll_relprintid
- FROM u_mtrldef,u_order_wfjgMx,u_order_wfjg
- WHERE u_mtrldef.mtrlid = u_order_wfjgMx.mtrlid
- AND u_order_wfjgMx.scid = :arg_scid
- AND u_order_wfjgMx.wfjgid = :arg_wfjgid
- AND u_order_wfjgMx.scid = u_order_wfjg.scid
- AND u_order_wfjgMx.wfjgid = u_order_wfjg.wfjgid
- AND u_order_wfjgMx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_iforder > 0 THEN
-
- ll_cnt_order = ds_rqwfjg.Retrieve(scid,ll_relwfjgid,ll_relprintid)
-
- FOR ll_k = 1 To ll_cnt_order
- ll_orderid = ds_rqwfjg.Object.u_request_wfjgmxmx_orderid[ll_k]
- IF ll_orderid = 0 THEN CONTINUE
-
- li_ordertype_order = ds_rqwfjg.Object.ordertype[ll_k]
- li_ifwfjgorder = ds_rqwfjg.Object.ifwforder[ll_k]
- ll_mtrlid_order = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_orderqty = ds_rqwfjg.Object.mtrlid_order[ll_k]
- lde_acmpqty = ds_rqwfjg.Object.acmpqty[ll_k]
- lde_stopqty = ds_rqwfjg.Object.stopqty[ll_k]
- lde_unacmpqty = ds_rqwfjg.Object.unacmpqty[ll_k]
-
- //更新外协主生产计划已进仓数
- If (li_ordertype_order = 3 Or li_ifwfjgorder = 1) And ll_mtrlid_order = ll_mtrlid THEN
-
- IF arg_addqty > 0 THEN
- lde_addqty_allow = lde_unacmpqty
- ELSE
- lde_addqty_allow = lde_stopqty
- END IF
-
- IF lde_addqty_allow > 0 THEN
- ld_qty = Min(lde_addqty, lde_addqty_allow) //本条处理数
- lde_addqty -= ld_qty //未处理数
-
- IF ld_qty > 0 THEN
- IF arg_addqty > 0 THEN //增加
- //ld_qty = ld_qty
- ELSE //减少
- ld_qty = 0 - ld_qty
- END IF
-
- // IF uo_order.addmxcmpl(scid,ll_orderid,ld_qty,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
-
- // IF uo_order.tryfinishorder(scid,ll_orderid,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- END IF
-
- IF lde_addqty <= 0 THEN EXIT // 完成
- END IF
- END IF
- NEXT
- END IF
- ext:
- Destroy uo_order
- Destroy ds_rqwfjg
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- protected function integer uof_add_dstrqty (long arg_scid, long arg_wfjgid, long arg_printid, long arg_orderid, long arg_mtrlid, string arg_pfcode, decimal arg_buyqty, decimal arg_addqty, integer arg_type, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Long ll_k, ll_row_f,cnt
- Long ll_lp
- Long ll_sonmtrlid_array[],ll_array,k
- Decimal ld_qty_array[]
- String ls_mtrlcode_out, ls_status_out, ls_woodcode_out, ls_pcode_out
- Long ll_wrkgrpid_out, ll_mtrlid_out
- Decimal ld_qty_out, ld_arrry_qty
- Decimal lde_sonscale
- String ls_ordercode, ls_mtrlcode
- Decimal ld_cost_out,ld_costamt_out,ld_overqty
- String ls_wrkgrpname
- Long ll_workgroupid
- datastore ds_mrpmx
- ds_mrpmx = Create datastore
- ds_mrpmx.DataObject = 'ds_order_ml_mrpmx'
- ds_mrpmx.SetTransObject(sqlca)
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- //arg_type 0-收货更新,1-终止更新
- //更新相关发出明细已领数
- IF arg_orderid > 0 THEN
- SELECT ordercode INTO :ls_ordercode
- FROM u_order_ml
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- ls_ordercode = ""
- END IF
-
- SELECT mtrlcode Into :ls_mtrlcode From u_mtrldef Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- ls_mtrlcode = ""
- END IF
-
-
- ds_mrpmx.Retrieve(arg_scid,arg_orderid)
-
- ll_row_f = ds_mrpmx.Find("u_orderrqmtrl_tree_mtrlid = "+String(arg_mtrlid),1,ds_mrpmx.RowCount())
-
- IF ll_row_f = 0 THEN
- rslt = 0
- arg_msg = '订单明细:'+String(arg_printid)+' 相应主生产计划['+ls_ordercode+']运算明细找不到资料['+ls_mtrlcode+'],请检查计划运算结果'
- GOTO ext
- END IF
-
- IF ll_row_f > 0 THEN
- ll_lp = ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_row_f]
-
- FOR ll_k = ll_row_f + 1 To ds_mrpmx.RowCount()
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_k] <= ll_lp THEN EXIT
-
- IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_k] = ll_lp + 1 And ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_k] > 0 THEN
-
- ls_mtrlcode_out = ds_mrpmx.Object.u_mtrldef_mtrlcode[ll_k]
-
- ll_wrkgrpid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_wrkgrpid[ll_k]
- ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_k]
- ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_k]
- ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_k]
- ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_k]
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_sonscale[ll_k]
- IF lde_sonscale = 0 THEN
- lde_sonscale = ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_k] / ds_mrpmx.Object.u_orderrqmtrl_tree_truerqqty[ll_row_f]
- END IF
- ld_qty_out = Round(arg_addqty * lde_sonscale,dec_round)
-
- //ld_qty_out = arg_addqty / ds_mrpmx.Object.u_orderrqmtrl_tree_truerqqty[ll_row_f] * ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_k]
-
- UPDATE u_order_wfjgMx_out
- SET DstrQty = DstrQty + :ld_qty_out
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '订单明细:'+String(arg_printid)+' 更新相关发出明细已领数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //yyx2015-5-22 终止收货明细更新主生产计划发出明细的已领数
- IF arg_type = 1 THEN
- SELECT top 1 cost INTO :ld_cost_out
- FROM ow_wfjgware
- WHERE sptid = :sptid
- AND mtrlid = :ll_mtrlid_out
- AND status = :ls_status_out
- AND woodcode = :ls_woodcode_out
- AND pcode = :ls_pcode_out
- AND scid = :scid
- Order By cost Desc Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_cost_out = 0
- END IF
-
- ld_costamt_out = ld_qty_out * ld_cost_out
-
- IF ll_wrkgrpid_out > 0 THEN
- SELECT wrkgrpname
- INTO :ls_wrkgrpname
- FROM u_sc_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT TOP 1 workgroupid
- INTO :ll_workgroupid
- FROM u_workgroup
- Where wrkGrpid = :ll_wrkgrpid_out Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询领用工组 '+ls_wrkgrpname+' 相关的工作中心失败,可能是工组没有设置对应的工作中心,请检查'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ll_workgroupid = 0
- END IF
- IF uo_order.f_add_dstrqty(arg_scid,arg_orderid,ll_workgroupid,ll_mtrlid_out,ls_mtrlcode_out,ls_status_out,ls_woodcode_out,ls_pcode_out,0 - ld_qty_out,0 - ld_costamt_out,arg_msg,False,-1,ld_overqty) = 0 THEN
- arg_msg = '相关订单明细:'+String(arg_printid)+',更新生产计划已领数失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- //yyx2015-5-22 end
- END IF
- NEXT
- END IF
- ELSE
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_order_wfjgmx_out_mx
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- And relprintid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '订单明细:'+String(arg_printid)+' 更新相关发出明细失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- ll_array = 0
- DECLARE cur_inmx CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- :arg_addqty * u_prdpf.Sonscale / (1 - u_PrdPF.sonloss) + u_PrdPF.SonDECLoss
- 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 ) ;
- OPEN cur_inmx;
- FETCH cur_inmx Into :ll_mtrlid_out,:ld_arrry_qty;
-
- DO WHILE sqlca.SQLCode = 0
- ll_array++
- ll_sonmtrlid_array[ll_array] = ll_mtrlid_out
- ld_qty_array[ll_array] = ld_arrry_qty
- FETCH cur_inmx Into :ll_mtrlid_out,:ld_arrry_qty;
- LOOP
- CLOSE cur_inmx;
-
- IF ll_array = 0 THEN
- IF sys_option_wfjg_outmx = 0 Or sys_option_wfjg_out_cmp = 0 THEN //可以没有发出明细
-
- ELSE
- arg_msg = '订单明细:'+String(arg_printid)+' 没有设置下级物料清单,请检查物料清单'
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- FOR k = 1 To ll_array
- UPDATE u_order_wfjgMx_out
- SET DstrQty = DstrQty + :ld_qty_array[k]
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND mtrlid = :ll_sonmtrlid_array[k]
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '订单明细:'+String(arg_printid)+' 更新相关发出明细已领数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- ELSE
- ll_array = 0
- DECLARE cur_inmx2 CURSOR FOR
- SELECT u_order_wfjgmx_out_mx.mtrlid,
- :arg_addqty * u_order_wfjgmx_out_mx.qty / :arg_buyqty
- FROM u_order_wfjgmx_out_mx
- WHERE ( u_order_wfjgmx_out_mx.scid = :arg_scid )
- AND ( u_order_wfjgmx_out_mx.wfjgid = :arg_wfjgid )
- And ( u_order_wfjgmx_out_mx.relprintid = :arg_printid ) ;
- OPEN cur_inmx2;
- FETCH cur_inmx2 Into :ll_mtrlid_out,:ld_arrry_qty;
-
- DO WHILE sqlca.SQLCode = 0
- ll_array++
- ll_sonmtrlid_array[ll_array] = ll_mtrlid_out
- ld_qty_array[ll_array] = ld_arrry_qty
- FETCH cur_inmx2 Into :ll_mtrlid_out,:ld_arrry_qty;
- LOOP
-
- CLOSE cur_inmx2;
-
- IF ll_array = 0 THEN
- arg_msg = '订单明细:'+String(arg_printid)+' 没有设置相应发出明细,请检查订单的发出明细'
- rslt = 0
- GOTO ext
- END IF
-
- FOR k = 1 To ll_array
- UPDATE u_order_wfjgMx_out
- SET DstrQty = DstrQty + :ld_qty_array[k]
- WHERE scid = :arg_scid
- AND wfjgid = :arg_wfjgid
- AND mtrlid = :ll_sonmtrlid_array[k]
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '订单明细:'+String(arg_printid)+' 更新相关发出明细已领数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- ext:
- Destroy ds_mrpmx
- Destroy uo_order
- RETURN rslt
- end function
- on uo_order_wfjg.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_wfjg.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('086',str_optionvalue,arg_msg)
- uo_option_wfjg_outmx = Long(str_optionvalue)
- f_get_sys_option_value('087',str_optionvalue,arg_msg)
- uo_option_autocreate_outware = Long(str_optionvalue)
- f_get_sys_option_value('010',str_optionvalue,arg_msg)
- uo_option_ifovertask = Long(str_optionvalue)
- f_get_sys_option_value('067',str_optionvalue,arg_msg)
- uo_option_2unit = Long(str_optionvalue)
- f_get_sys_option_value('343',str_optionvalue,arg_msg)
- uo_option_update_rqmtrlqty_wfjg = Long(str_optionvalue)
- end event
|