1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583 |
- $PBExportHeader$uo_saletask.sru
- forward
- global type uo_saletask from nonvisualobject
- end type
- type s_saletaskmx from structure within uo_saletask
- end type
- type s_saletaskmx_mx from structure within uo_saletask
- end type
- type s_saletaskmx_in from structure within uo_saletask
- end type
- type s_saletask_itemmx from structure within uo_saletask
- end type
- end forward
- type s_saletaskmx from structure
- long mtrlid
- decimal { 10 } saleqty
- decimal { 10 } plprice
- decimal { 10 } acprice
- decimal { 10 } enacprice
- string dscrp
- string mtrlcode
- decimal { 10 } fprice
- decimal { 10 } u_mtrldef_expday
- decimal { 5 } rebate
- string status
- long printid
- string woodcode
- string pcode
- string mtrlcuscode
- string mtrlchangecode
- decimal { 10 } enprice
- string outtype
- decimal { 10 } dftsaleprice
- integer auditflag
- string auditemp
- datetime auditdate
- datetime requiredate
- string pfcode
- string dscrp2
- decimal { 10 } scidprice
- decimal { 10 } inwareqty
- long quoteid
- string quotecode
- long quoteprintid
- string pocode
- string typestr
- string pricetype
- decimal { 5 } capacity
- decimal { 5 } nprice
- decimal { 5 } planprice
- decimal { 10 } stopqty
- long poid
- decimal { 10 } fpqty
- string dscrp_text
- decimal { 5 } taxrate
- decimal { 10 } addqty
- string priceformula
- long sampleid
- decimal { 10 } net_weight
- decimal { 10 } gross_weight
- decimal { 10 } cubage
- long fjcnt
- string fjstr
- decimal { 10 } porebate
- end type
- type s_saletaskmx_mx from structure
- long mtrlwareid
- decimal { 10 } qty
- end type
- type s_saletaskmx_in from structure
- long mtrlid
- string status
- string woodcode
- string pcode
- string plancode
- string mxdscrp
- decimal { 5 } fprice
- long printid
- decimal { 10 } qty
- long storageid
- end type
- type s_saletask_itemmx from structure
- long scid
- long taskid
- long printid
- long itemid
- decimal{2} amt
- string mxdscrp
- end type
- global type uo_saletask from nonvisualobject
- end type
- global uo_saletask uo_saletask
- type variables
- Public ProtectedWrite Long scid
- Public ProtectedWrite Long taskid
- 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 String last_emp
- Public ProtectedWrite Long ctmint
- Long banktypeid
- Long moneyid
- Decimal damt
- Decimal otheramt
- Decimal mrate
- Int Kind
- Long cusid
- String assign_emp
- DateTime requiredate
- DateTime taskdate
- String freight
- String dscrp
- String dscrp2
- string dscrp3
- String relcode
- String paytype
- String freight_tele
- String cus_address
- String cus_tele
- String cus_fax
- String upname
- Decimal msttakeamt,takeamt
- Long typeid
- String rel_rep
- Int Level
- long exchangeid
- string station_address
- DateTime sendTime
- String sendUser,fiebrelcode
- int selecttype
- Long audit_buildtype
- int priceflag
- datetime pricedate
- string pricerep
- Transaction commit_transaction //数据commit事务
- Private:
- s_saletaskmx saletaskmx[] //明细结构
- s_saletaskmxmx saletaskmxmx[] //明细结构
- s_saletaskmx_in saletaskmx_in[] //明细结构
- s_saletask_itemmx saletask_itemmx[]
- Long it_mxbt_in = 0 //来料加工订单收料明细
- Long it_mxbt = 0 //明细结构数组末指针
- Long it_mxbtmx = 0 //明细结构数组末指针
- Long it_mxbt_item = 0 //费用明细指针
- Boolean it_newbegin = False //新建标志
- Boolean it_updatebegin = False //修改标志
- s_saletaskmx_mx taskmx[]
- Long it_mxbt_mx = 0
- Decimal mx_sumqty = 0
- String uo_option_change_status
- String uo_option_change_woodcode
- String uo_option_change_pcode
- Int uo_option_price_rmb
- Int uo_option_m_msttake
- Int uo_option_saletask_secaudit
- Int uo_option_saletask_fore_secaudit
- Int uo_option_if_oa_saletask
- Int uo_option_if_oa_saletask_fore
- Int uo_option_taskplancode_auto
- Int uo_option_taskaudit_dprice
- Int uo_option_autocreate_buy_cp
- Int uo_option_saletask_addware
- Int uo_option_if_msg
- Int uo_option_saletask_set_planprice
- Int uo_option_checkprice_native
- Int uo_option_inout_type
- Int uo_option_if_pricetype
- Int uo_option_if_saleout
- Int uo_option_disuse_saletask
- Int uo_option_sale_ifuse_negativeprice
- Int uo_option_saletask_ifuse_typebillcode
- Int uo_option_dd_allto_pqty
- int uo_option_saletask_rebate_check
- int uo_option_saletask_packprobom_check
- int uo_option_saletask_fore_addware
- int uo_option_saletask_stopqty_type
- int uo_option_saletask_affirm_produce
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer add_dscrp (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- private function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer checkmxcmpl (long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer getinfo (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer salepermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer tempstoptask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- public function integer trycmplsaletask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer newbegin (long arg_scid, ref string arg_msg)
- public function integer acceptmx_mx (long arg_scid, long arg_mtrlwareid, decimal arg_qty, ref string arg_msg)
- public function integer stopmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_commit)
- public function integer bjmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, ref string arg_msg, boolean arg_commit)
- public function integer bjprice (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_enprice, decimal arg_rebate, ref string arg_msg, boolean arg_commit)
- public function integer propermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancelpropermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updateassignqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- private function integer uof_p_check_dprice (ref string arg_msg)
- public function integer ddpermit (long arg_scid, long arg_taskid, long arg_printid, integer arg_flag, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_cprqplan (long arg_scid, long arg_taskid, long arg_printid, long arg_flag, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer canceloapermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl_in (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx_in (long arg_mtrlid, long arg_printid, string arg_mtrlcode, long arg_storageid, decimal arg_qty, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, decimal arg_fprice, string arg_mxdscrp, ref string arg_msg)
- public function integer updateinwareqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer trycmptask_fore (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_getpriceorder (long arg_cusid, long arg_mtrlid, ref string arg_pocode, ref string arg_typestr, ref string arg_msg)
- public function integer uof_add_plan (s_saletask_plan arg_s_plan, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_del_plan (long arg_planid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_finish_plan (long arg_planid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp2 (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxsaleout (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopsaletask_cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopqty (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_wrkgrp_mxdscrp (long arg_scid, long arg_taskid, s_saletaskmx_wrkgrp_mxdscrp arg_s_mx, long arg_cnt, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_relcode (long arg_scid, long arg_taskid, string arg_add_relcode, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx_item (long arg_printid, long arg_itemid, decimal arg_amt, string arg_mxdscrp, ref string arg_msg)
- public function integer add_dscrpmx (long arg_scid, long arg_taskid, long arg_printid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishtask (long arg_scid, long arg_taskid, integer arg_status, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishtask_cancel (long arg_scid, long arg_taskid, integer arg_status, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_disuse (long arg_scid, long arg_taskid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_updatesaleoutcodestr (long arg_scid, long arg_taskid, long arg_printid, boolean arg_ifcommit, ref string arg_msg)
- public function integer add_dscrp3 (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopsaletask (long arg_scid, long arg_taskid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebqty (long arg_scid, long arg_taskid, long arg_printid, long arg_pid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_cmp_pack (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, decimal arg_qty, ref string arg_msg)
- public function integer uof_mod_requiredate (long arg_scid[], long arg_taskid[], long arg_printid[], datetime arg_olddate[], datetime arg_newdate[], ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmxmx (s_saletaskmxmx arg_s_mx, ref string arg_msg)
- private function integer uof_p_check_date (ref string arg_msg)
- public function integer acceptmx (long arg_mtrlid, decimal arg_qty, decimal arg_enprice, decimal arg_rebate, string arg_dscrp, string arg_dscrp2, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, long arg_printid, string arg_outtype, datetime arg_requiredate, decimal arg_scidprice, long arg_quoteid, string arg_quotecode, long arg_quoteprintid, string arg_pricetype, decimal arg_nprice, long arg_poid, string arg_dscrp_text, decimal arg_taxrate, decimal arg_addqty, string arg_priceformula, long arg_sampleid, decimal arg_net_weight, decimal arg_gross_weight, decimal arg_cubage, long arg_fjcnt, string arg_fjstr, ref string arg_msg)
- private function integer uof_p_check_packprobom (ref string arg_msg)
- public function integer uof_add_reminddscrp (long arg_scid, long arg_taskid, string arg_reminddscrp, ref string arg_msg, boolean arg_ifcommit)
- public function integer priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_mx (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer p_reset ();//int p_reset()
- //清除对象及其明细
- taskid=0
- taskcode=''
- operator=''
- status=0
- damt = 0
- otheramt = 0
- banktypeid = 0
- moneyid = 0
- relcode = ''
- freight_tele= ''
- msttakeamt = 0
- takeamt = 0
- dscrp = ''
- dscrp2 = ''
- dscrp3 = ''
- relcode = ''
- it_newbegin=false
- it_updatebegin=false
- //清除明细
- p_clearmx()
- return 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt = 0
- it_mxbtmx = 0
- it_mxbt_in = 0
- it_mxbt_item = 0
- RETURN 1
- end function
- public function integer add_dscrp (long arg_scid, long arg_taskid, 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 it_updatebegin OR it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待销售审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_saletask
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- Where u_saletask.taskid = :arg_taskid 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
- DSCRP = DSCRP+' '+arg_newdescppart
- 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
- private function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg);Int rslt = 1
- SELECT scid,
- taskid,
- TaskCode,
- kind,
- CusID,
- requiredate,
- accomplishdate,
- Status,
- Opemp,
- Assign_Emp,
- Permit_Emp,
- Dscrp,
- Dscrp2,
- opdate,
- damt,
- otheramt,
- freight,
- taskdate,
- banktypeid ,
- moneyid,
- relcode,
- paytype,
- freight_tele,
- cus_address,
- cus_tele,
- cus_fax,
- mrate,
- upname,
- ctmint,
- msttakeamt,
- takeamt,
- typeid,
- rel_rep,
- level,
- dscrp3,
- exchangeid,
- station_address,
- priceflag,
- pricedate,
- pricerep,
- selecttype
- INTO :scid,
- :taskid,
- :TaskCode,
- :Kind,
- :CusID,
- :requiredate,
- :accomplishdate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Permit_Emp,
- :Dscrp,
- :Dscrp2,
- :opdate ,
- :damt,
- :otheramt,
- :freight,
- :taskdate,
- :banktypeid,
- :moneyid,
- :relcode,
- :paytype,
- :freight_tele,
- :cus_address,
- :cus_tele,
- :cus_fax,
- :mrate,
- :upname,
- :ctmint,
- :msttakeamt,
- :takeamt,
- :typeid,
- :rel_rep,
- :level,
- :dscrp3,
- :exchangeid,
- :station_address,
- :priceflag,
- :pricedate,
- :pricerep,
- :selecttype
- FROM u_SaleTask
- Where u_SaleTask.taskid = :arg_taskid AND scid = :arg_scid
- USING commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询订单内容失败(错误订单id:'+string(arg_taskid)+'),'+string(commit_transaction.SQLCode)+','+commit_transaction.sqlerrtext
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
- //0 FAIL, 1 SUCCESS
- Int rslt = 1
- Long cnt
- If uo_option_disuse_saletask = -1000 Then
- rslt = 0
- arg_msg = '选项:[291]启用销售订单废弃单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If arg_scid < 0 Then
- arg_msg = '请选择分部'
- rslt = 0
- Goto ext
- End If
- If arg_taskid <= 0 Then
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_taskid,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_taskdamt_mx
- Where u_taskdamt_mx.relid = :arg_taskid
- And u_taskdamt_mx.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
- If cnt > 0 Then
- rslt = 0
- arg_msg = "订单已开订单收款单,操作取消,如需删除订单请先删除订单收款单"
- Rollback Using commit_transaction;
- Goto ext
- End If
- Select count(*)
- Into :cnt
- From u_bmsttake_fpmx
- Where relid = :arg_taskid
- And scid = :arg_scid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询相关应收帐金额是否已分配订单失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- If cnt > 0 Then
- rslt = 0
- arg_msg = "本订单已进行应收帐金额已分配,不能删除"
- Goto ext
- End If
- //IF sys_option_if_OA = 1 AND audit_buildtype = 0 THEN
- // IF f_check_if_oaflow( arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- If Kind = 1 And uo_option_disuse_saletask = 1 Then
- If uof_disuse(arg_scid,arg_taskid,1,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Delete From u_saletask
- Where u_saletask.taskid = :arg_taskid 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
- Delete From u_saletaskmx
- Where u_saletaskmx.taskid = :arg_taskid 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
- Delete From u_saletaskmxmx
- Where taskid = :arg_taskid 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
- Delete From u_saletaskmx_mtrlchange
- Where u_saletaskmx_mtrlchange.taskid = :arg_taskid
- 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
- //删除原有明细
- Delete From u_SaleTaskMx_dscrp
- Where taskid = :arg_taskid 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
- Delete From u_saletask_itemmx
- Where taskid = :arg_taskid
- 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
- Delete From u_saletask_plan
- Where u_saletask_plan.taskid = :arg_taskid
- And u_saletask_plan.scid = :arg_scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除销售订单工作计划操作失败"+"~n"+commit_transaction.SQLErrText
- Rollback Using commit_transaction;
- Goto ext
- End If
- it_newbegin = False
- it_updatebegin = False
- If arg_ifcommit And rslt = 1 Then
- Commit Using commit_transaction;
- End If
- ext:
- p_reset()
- Return (rslt)
- end function
- public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- DateTime nulldate
- Decimal ls_consignedQty,ls_fpQty
- SetNull(nulldate)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_price_order uo_po
- uo_po = Create uo_price_order
- uo_cust_sample uo_cs
- uo_cs = Create uo_cust_sample
- IF uo_option_saletask_secaudit = -1000 THEN
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_fore_secaudit = -1000 THEN
- arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask_fore = -1000 THEN
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- IF uo_option_saletask_secaudit = 0 Or (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
- IF Status <> 1 THEN
- rslt = 0
- If (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
- arg_msg = "订单正在执行审批流程,只有在在进行状态才可以执行撤消审核"
- ELSE
- arg_msg = "订单只有在已审核状态才可以执行撤消审核,请核对"
- END IF
- GOTO ext
- END IF
- ELSE
- IF Status <> 4 THEN
- rslt = 0
- arg_msg = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_saletask_fore_secaudit = 0 Or (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
- IF Status <> 1 THEN
- rslt = 0
- If (uo_option_saletask_fore_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
- arg_msg = "订单正在执行审批流程,只有在在进行状态才可以执行撤消审核"
- ELSE
- arg_msg = "订单只有在已审核状态才可以执行撤消审核,请核对"
- END IF
- GOTO ext
- END IF
- ELSE
- IF Status <> 4 THEN
- rslt = 0
- arg_msg = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- END IF
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND (ordertype = 0 OR ordertype = 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
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_saleoutmx
- WHERE scid = :arg_scid
- And relid = :arg_taskid 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
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware,u_outwaremx
- WHERE ( u_outware.billtype = 1 ) AND
- ( u_outware.scid = u_outwaremx.scid ) AND
- ( u_outware.outwareid = u_outwaremx.outwareid ) AND
- ( u_outwaremx.relid = :arg_taskid ) AND
- ( u_outware.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 cnt > 0 THEN
- rslt = 0
- arg_msg = "销售订单已经有相关出仓单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT sum(u_SaleTaskMx.consignedQty)
- INTO :ls_consignedQty
- FROM u_SaleTaskMx
- WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.scid = :arg_scid ) AND
- ( u_SaleTaskMx.stopflag = 0 ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_consignedQty > 0 THEN
- rslt = 0
- arg_msg = "销售订单已有完成数量,不能撤审"
- GOTO ext
- END IF
- SELECT sum(u_SaleTaskMx.fpqty)
- INTO :ls_fpQty
- FROM u_SaleTaskMx
- WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.scid = :arg_scid ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询销售订单已分配数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_fpQty > 0 THEN
- rslt = 0
- arg_msg = "销售订单已有分配数量,不能撤审"
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_taskdamt_mx
- WHERE scid = :arg_scid
- And relid = :arg_taskid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询订单是否已开订单收款单失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "订单已开订单收款单,不能撤审"
- GOTO ext
- END IF
- END IF
- //来料加工订单,检查是否已开收料单
- IF Kind = 2 THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware,u_inwaremx
- WHERE ( u_inware.billtype = 5 ) AND
- ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inwaremx.relid = :arg_taskid ) AND
- ( u_inware.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 cnt > 0 THEN
- rslt = 0
- arg_msg = "来料加工订单已经有相关收料进仓单据,不可以撤消审核"
- GOTO ext
- END IF
-
- SELECT sum(u_SaleTaskMx_in.consignedQty)
- INTO :ls_consignedQty
- FROM u_SaleTaskMx_in
- WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx_in.scid = :arg_scid ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询来料加工订单已收料数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
-
- IF ls_consignedQty > 0 THEN
- rslt = 0
- arg_msg = "来料加工订单已有收料数量,不能撤审"
- GOTO ext
- END IF
- END IF
- //默认订单调度
- Long i
- FOR i = 1 To it_mxbt
- IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- Int li_isuse
- FOR i = 1 To it_mxbt
- SELECT isuse
- INTO :li_isuse
- FROM u_mtrldef
- Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询:'+saletaskmx[i].mtrlcode+'资料属性失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_isuse = 2 THEN
- UPDATE u_mtrldef
- SET stopsaleqty = stopsaleqty - :saletaskmx[i].saleqty
- Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新:'+saletaskmx[i].mtrlcode+'资料待停产后已订数失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- END IF
- NEXT
- IF Kind <> 0 THEN
- IF uo_option_saletask_secaudit = 0 Or (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
- UPDATE u_SaleTask
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate,
- p_Auditingrep = '',
- p_Auditingdate = :nulldate
- WHERE TaskID = :arg_taskid
- 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
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_SaleTask
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate
- WHERE TaskID = :arg_taskid
- AND scid = :arg_scid
- AND status = 4
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_saletask_fore_secaudit = 0 Or (uo_option_saletask_fore_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
- UPDATE u_SaleTask
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate,
- p_Auditingrep = '',
- p_Auditingdate = :nulldate
- WHERE TaskID = :arg_taskid
- 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
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_SaleTask
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate
- WHERE TaskID = :arg_taskid
- AND scid = :arg_scid
- AND status = 4
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- DELETE FROM u_saletaskmx_moddate_log
- Where scid = :arg_scid And taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致清除明细交期变更历史操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_saletask_stoplog
- Where scid = :arg_scid And taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致清除明细终止数量记录失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //将相关已完成的OA公文的状态设为作废
- IF Kind <> 0 THEN
- If (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
- UPDATE oa_doc
- SET docflag = 12
- WHERE powerid = 6
- AND scid = :arg_scid
- AND billid = :arg_taskid
- //And docflag = 11
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关公文状态失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- If (uo_option_saletask_fore_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
- UPDATE oa_doc
- SET docflag = 12
- WHERE powerid = 1324
- AND scid = :arg_scid
- AND billid = :arg_taskid
- //And docflag = 11
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关公文状态失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- IF Kind <> 0 THEN //更新价格指令使用次数
- FOR i = 1 To it_mxbt
- IF saletaskmx[i].poid > 0 THEN
- IF uo_po.uof_add_salenum(saletaskmx[i].poid, saletaskmx[i].saleqty, 1, False, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
- //更新意向单完成数, 完成意向单
- FOR i = 1 To it_mxbt
- IF saletaskmx[i].sampleid > 0 THEN
- IF uo_cs.trycmpl(saletaskmx[i].sampleid, 0 - saletaskmx[i].saleqty, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- 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()
- Destroy uo_po
- Destroy uo_cs
- Return (rslt)
- end function
- public function integer checkmxcmpl (long arg_scid, long arg_taskid, 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_taskid <= 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_taskid,ARG_MSG)
- If rslt = 0 Then Goto ext
- If Status <> 1 Then
- rslt = 0
- ARG_MSG = "销售订单只有在进行状态下才可以执行进仓"
- Goto ext
- End If
- Decimal ls_saleQty,ls_assignQty
- String ls_mtrlcode
- Select u_saleTaskMx.saleQty,
- u_saleTaskMx.assignqty,
- u_mtrldef.mtrlcode
- Into :ls_saleQty,
- :ls_assignQty,
- :ls_mtrlcode
- From u_saleTaskMx ,u_mtrldef
- Where ( u_saleTaskMx.TaskID = :arg_taskid ) And
- ( u_saleTaskMx.MtrlID = :arg_mtrlid ) And
- ( u_mtrldef.mtrlid = u_saleTaskMx.MtrlID ) And
- ( u_saleTaskMx.scid = :arg_scid) 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_saleQty < ls_assignQty + arg_addqty Then
- rslt = 0
- ARG_MSG = "物料["+ls_mtrlcode+"]的订单未完成数量只有"+String(ls_saleQty - ls_assignQty,'#,##0.0#')+",不能入库"+String(arg_addqty,'#,##0.0#')
- Goto ext
- End If
- ext:
- p_reset()
- Return (rslt)
- end function
- public function integer getinfo (long arg_scid, long arg_taskid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg)
- //0 失败 1成功
- Int rslt = 1,i = 1,j = 1 ,no_mxcheck = 0,k = 1
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT u_saletaskmx.mtrlid,
- u_saletaskmx.saleqty,
- u_saletaskmx.price,
- u_saletaskmx.mxdscrp,
- u_saletaskmx.mxdscrp2,
- u_mtrldef.mtrlcode,
- u_saletaskmx.fprice,
- u_saletaskmx.rebate,
- u_saletaskmx.status,
- u_saletaskmx.printid,
- u_saletaskmx.woodcode,
- u_saletaskmx.pcode,
- u_saletaskmx.mtrlcuscode,
- u_saletaskmx.enprice,
- u_saletaskmx.outtypestr,
- u_saletaskmx.dftsaleprice,
- u_saletaskmx.requiredate,
- u_saletaskmx.pfcode,
- u_saletaskmx.scidprice,
- u_saletaskmx.pricetype,
- u_saletaskmx.capacity,
- u_saletaskmx.nprice,
- u_mtrldef.planprice,
- u_saletaskmx.poid,
- u_saletaskmx.fpqty,
- u_saletaskmx.taxrate,
- u_saletaskmx.addqty,
- u_saletaskmx.sampleid,
- u_saletaskmx.net_weight,
- u_saletaskmx.gross_weight,
- u_saletaskmx.cubage,
- u_mtrldef.expday,
- u_saletaskmx.fjcnt,
- u_saletaskmx.fjstr
- FROM u_saletaskmx,u_mtrldef
- WHERE u_saletaskmx.taskid = :arg_taskid AND
- u_saletaskmx.mtrlid = u_mtrldef.mtrlid AND
- u_saletaskmx.scid = :arg_scid Using commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :saletaskmx[i].mtrlid,:saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,:saletaskmx[i].dscrp,:saletaskmx[i].dscrp2,
- :saletaskmx[i].mtrlcode,:saletaskmx[i].fprice,
- :saletaskmx[i].rebate,:saletaskmx[i].status,
- :saletaskmx[i].printid,:saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,:saletaskmx[i].mtrlcuscode,
- :saletaskmx[i].enprice,:saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,:saletaskmx[i].scidprice,
- :saletaskmx[i].pricetype,
- :saletaskmx[i].capacity,
- :saletaskmx[i].nprice,
- :saletaskmx[i].planprice,
- :saletaskmx[i].poid,:saletaskmx[i].fpqty,
- :saletaskmx[i].taxrate,:saletaskmx[i].addqty,
- :saletaskmx[i].sampleid,:saletaskmx[i].net_weight,
- :saletaskmx[i].gross_weight,
- :saletaskmx[i].cubage,:saletaskmx[i].u_mtrldef_expday,
- :saletaskmx[i].fjcnt,:saletaskmx[i].fjstr;
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_inwaermx INTO :saletaskmx[i].mtrlid,:saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,:saletaskmx[i].dscrp,:saletaskmx[i].dscrp2,
- :saletaskmx[i].mtrlcode,:saletaskmx[i].fprice,
- :saletaskmx[i].rebate,:saletaskmx[i].status,
- :saletaskmx[i].printid,:saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,:saletaskmx[i].mtrlcuscode,
- :saletaskmx[i].enprice,:saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,:saletaskmx[i].scidprice,
- :saletaskmx[i].pricetype,
- :saletaskmx[i].capacity,
- :saletaskmx[i].nprice,
- :saletaskmx[i].planprice,
- :saletaskmx[i].poid,:saletaskmx[i].fpqty,
- :saletaskmx[i].taxrate,:saletaskmx[i].addqty,
- :saletaskmx[i].sampleid,:saletaskmx[i].net_weight,
- :saletaskmx[i].gross_weight,
- :saletaskmx[i].cubage,:saletaskmx[i].u_mtrldef_expday,
- :saletaskmx[i].fjcnt,:saletaskmx[i].fjstr;
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_saletaskmx
- Where u_saletaskmx.taskid = :arg_taskid And 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_saletaskmx_in CURSOR FOR
- SELECT u_saletaskmx_in.mtrlid,
- u_saletaskmx_in.qty,
- u_saletaskmx_in.fprice,
- u_saletaskmx_in.mxdscrp,
- u_saletaskmx_in.status,
- u_saletaskmx_in.printid,
- u_saletaskmx_in.woodcode,
- u_saletaskmx_in.pcode,
- u_saletaskmx_in.plancode,
- u_saletaskmx_in.storageid
- FROM u_saletaskmx_in
- WHERE u_saletaskmx_in.taskid = :arg_taskid
- AND u_saletaskmx_in.scid = :arg_scid
- Using commit_transaction;
-
- OPEN cur_saletaskmx_in;
- FETCH cur_saletaskmx_in INTO :saletaskmx_in[j].mtrlid,:saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,:saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].status,:saletaskmx_in[j].printid,:saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,:saletaskmx_in[j].plancode,:saletaskmx_in[j].storageid;
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_saletaskmx_in INTO :saletaskmx_in[j].mtrlid,:saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,:saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].status,:saletaskmx_in[j].printid,:saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,:saletaskmx_in[j].plancode,:saletaskmx_in[j].storageid;
- LOOP
- CLOSE cur_saletaskmx_in;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_saletaskmx_in
- Where u_saletaskmx_in.taskid = :arg_taskid And 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_in = j - 1
- //////////////////////// //
- //读取来料加工订单费用明细
- DECLARE cur_saletaskmx_item CURSOR FOR
- SELECT scid, taskid, printid, itemid, amt, mxdscrp
- FROM u_saletask_itemmx
- WHERE u_saletask_itemmx.taskid = :arg_taskid
- AND u_saletask_itemmx.scid = :arg_scid
- Using commit_transaction;
-
- OPEN cur_saletaskmx_item;
- FETCH cur_saletaskmx_item INTO :saletask_itemmx[k].scid,:saletask_itemmx[k].taskid,
- :saletask_itemmx[k].printid,:saletask_itemmx[k].itemid,
- :saletask_itemmx[k].amt,:saletask_itemmx[k].mxdscrp;
- DO WHILE commit_transaction.SQLCode = 0
- k++
- FETCH cur_saletaskmx_item INTO :saletask_itemmx[k].scid,:saletask_itemmx[k].taskid,
- :saletask_itemmx[k].printid,:saletask_itemmx[k].itemid,
- :saletask_itemmx[k].amt,:saletask_itemmx[k].mxdscrp;
- LOOP
- CLOSE cur_saletaskmx_item;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_saletask_itemmx
- Where taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,销售订单费用明细数量"
- GOTO ext
- END IF
- IF k <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,销售订单费用明细"
- GOTO ext
- END IF
- it_mxbt_item = k - 1
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer salepermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Long i
- Decimal ld_stoppqty,ld_stopsaleqty
- Int li_isuse
- If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- uo_price_order uo_po
- uo_po = Create uo_price_order
- uo_cust_sample uo_cs
- uo_cs = Create uo_cust_sample
- If uo_option_saletask_secaudit = -1000 Then
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_saletask_fore_secaudit = -1000 Then
- arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_if_oa_saletask = -1000 Then
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_if_oa_saletask_fore = -1000 Then
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_saletask_addware = -1000 Then
- arg_msg = '选项:[039]销售订单审核自动加0库存,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_saletask_fore_addware = -1000 Then
- arg_msg = '选项:[402]销售预测单审核自动加0库存,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_if_msg = -1000 Then
- arg_msg = '选项:[044]销售订单使用消息确认,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_saletask_set_planprice = -1000 Then
- arg_msg = '选项:[201]销售订单/预测单审核前必须设定计划价,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_inout_type = -1000 Then
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If arg_taskid <= 0 Then
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- Goto ext
- End If
- If getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If status <> 0 Then
- rslt = 0
- arg_msg = "订单已经审核或已作其它处理,操作取消"
- Goto ext
- End If
- //IF sys_option_if_oa = 1 AND audit_buildtype = 0 THEN
- // IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- If Kind > 0 Then
- If uof_p_check_dprice(arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- //yyx2014-1-4
- If uof_p_check_date(arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- //
-
- //lhd20140703
- If uof_p_check_packprobom(arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- //
-
-
- For i = 1 To it_mxbt
- Select stoppqty,stopsaleqty,isuse
- Into :ld_stoppqty,:ld_stopsaleqty,:li_isuse
- From u_mtrldef
- Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询:'+saletaskmx[i].mtrlcode+'资料属性失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If li_isuse = 2 Then
- If saletaskmx[i].saleqty > ld_stoppqty - ld_stopsaleqty Then
- arg_msg = '产品:'+saletaskmx[i].mtrlcode+' 已待停产,待停产后可订数量为:'+String(ld_stoppqty,'#,##0.##########')+',待停产后已订数量为:'+String(ld_stopsaleqty,'#,##0.##########')+',不能再订:'+String(saletaskmx[i].saleqty,'#,##0.##########')
- rslt = 0
- Goto ext
- End If
-
- Update u_mtrldef
- Set stopsaleqty = stopsaleqty + :saletaskmx[i].saleqty
- Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '更新:'+saletaskmx[i].mtrlcode+'资料待停产后已订数失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
-
- End If
- Next
-
- End If
- Boolean lb_noplan = False
- If uo_option_saletask_set_planprice = 1 Then
- For i = 1 To it_mxbt
- //销售订单/预测单审核前必须设定计划价
- If saletaskmx[i].planprice <= 0 Then
- arg_msg = arg_msg + '产品:'+saletaskmx[i].mtrlcode+'计划价未设定~r~n'
- lb_noplan = True
- End If
- Next
-
- If lb_noplan Then
- rslt = 0
- Goto ext
- End If
- 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
- If Kind <> 0 Then
- If uo_option_saletask_secaudit = 0 Then
- Update u_saletask
- Set permit_emp = :arg_emp ,
- permit_date = getdate(),
- p_Auditingdate = getdate(),
- p_Auditingrep = :arg_emp,
- status = 1
- Where taskid = :arg_taskid
- 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
- ElseIf commit_transaction.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Else
- Update u_saletask
- Set permit_emp = :arg_emp ,
- permit_date = getdate(),
- status = 4
- Where taskid = :arg_taskid
- 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
- ElseIf commit_transaction.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- Else
- If uo_option_saletask_fore_secaudit = 0 Then
- Update u_saletask
- Set permit_emp = :arg_emp ,
- permit_date = getdate(),
- p_Auditingdate = getdate(),
- p_Auditingrep = :arg_emp,
- status = 1
- Where taskid = :arg_taskid
- 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
- ElseIf commit_transaction.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Else
- Update u_saletask
- Set permit_emp = :arg_emp ,
- permit_date = getdate(),
- status = 4
- Where taskid = :arg_taskid
- 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
- ElseIf commit_transaction.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
-
- End If
- //成品仓加0库存
- //-----------------------------------------------
- If (uo_option_saletask_addware > 0 And Kind > 0) or (uo_option_saletask_fore_addware > 0 and kind = 0) Then
- Long ll_storageid_arr[],ll_storageid
- Long ll_scid_arr[],ll_scid
- String ll_storagename_arr[],ls_storagename
- Long ll_j,count,ll_i
- Int li_balctype_arr[],li_balctype
- Int li_outtype_storage_arr[],li_outtype_storage
- Int li_storagetype_storage_arr[],li_storagetype_storage
- Long ll_cusid
-
- String ls_status,ls_mtrlcode,ls_pcode,ls_woodcode,ls_plancode
- Long ll_mtrlwareid,ll_mtrlid
- Int li_storagetype
- Int li_outtype,li_ifpackpro,li_ifmrppackpf
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
- Int li_ifover[],li_dipztype[]
- Long ll_SonMtrlid[]
- Long it_mxt = 1
- Long ll_k
- String ls_status_find,ls_woodcode_find,ls_pcode_find
-
- //在订单所属分部的全部成品仓加0库存
- If (uo_option_saletask_addware = 1 And Kind > 0) or (uo_option_saletask_fore_addware = 1 and kind = 0) Then
- Declare pf_cur Cursor For
- Select u_storage.storageid,
- u_storage.storagename,
- u_storage.scid,
- u_storage.balctype,
- u_storage.outtype,
- u_storage.storagetype
- From u_storage
- Where ( u_storage.mtrlprp = 0 )
- And ( u_storage.inuse = 1 )
- And (u_storage.scid = :arg_scid);
- Open pf_cur;
-
- Fetch pf_cur Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
- Do While sqlca.SQLCode = 0
- count++
- ll_storageid_arr[count] = ll_storageid
- ll_storagename_arr[count] = ls_storagename
- ll_scid_arr[count] = ll_scid
- li_balctype_arr[count] = li_balctype
- li_outtype_storage_arr[count] = li_outtype_storage
- li_storagetype_storage_arr[count] = li_storagetype_storage
- Fetch pf_cur Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
- Loop
- Close pf_cur;
- End If
-
- For ll_i = 1 To it_mxbt
-
- ll_mtrlid = saletaskmx[ll_i].mtrlid
- ls_mtrlcode = saletaskmx[ll_i].mtrlcode
- ls_status = saletaskmx[ll_i].status
- ls_pcode = saletaskmx[ll_i].pcode
- ls_woodcode = saletaskmx[ll_i].woodcode
- ls_plancode = saletaskmx[ll_i].mtrlcuscode
-
- Select storagetype,outtype,ifpackpro,ifmrppackpf
- Into :li_storagetype,:li_outtype,:li_ifpackpro,:li_ifmrppackpf
- From u_mtrldef
- Where mtrlid = :ll_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询:'+ls_mtrlcode+'库存属性失败'
- rslt = 0
- Goto ext
- End If
-
-
- //在订单所属分部产品默认成品仓加0库存
- If (uo_option_saletask_addware = 2 And Kind > 0) or (uo_option_saletask_fore_addware = 2 and kind = 0) Then
- count = 0
- Declare cur_mtrl_storage Cursor For
- Select u_storage.storageid,
- u_storage.storagename,
- u_storage.scid,
- u_storage.balctype,
- u_storage.outtype,
- u_storage.storagetype
- From u_storage,u_mtrl_storage
- Where ( u_storage.storageid = u_mtrl_storage.storageid )
- And ( u_mtrl_storage.mtrlid = :ll_mtrlid )
- And ( u_storage.mtrlprp = 0 )
- And ( u_storage.inuse = 1 )
- And ( u_storage.scid = :arg_scid );
- Open cur_mtrl_storage;
-
- Fetch cur_mtrl_storage Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
- Do While sqlca.SQLCode = 0
- count++
- ll_storageid_arr[count] = ll_storageid
- ll_storagename_arr[count] = ls_storagename
- ll_scid_arr[count] = ll_scid
- li_balctype_arr[count] = li_balctype
- li_outtype_storage_arr[count] = li_outtype_storage
- li_storagetype_storage_arr[count] = li_storagetype_storage
- Fetch cur_mtrl_storage Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
- Loop
- Close cur_mtrl_storage;
- End If
-
- For ll_j = 1 To count
- If li_storagetype_storage_arr[ll_j] = 1 Then
- ll_cusid = 0
- Else
- If li_balctype_arr[ll_j] = 1 Then
- ll_cusid = cusid
- Else
- ll_cusid = 0
- End If
- End If
-
- If li_storagetype = 1 Then ll_cusid = 0
-
- Select top 1 mtrlwareid Into :ll_mtrlwareid
- From u_mtrlware
- Where mtrlid = :ll_mtrlid
- And status = :ls_status
- And storageid = :ll_storageid_arr[ll_j]
- And woodcode = :ls_woodcode
- And plancode = :ls_plancode
- And pcode = :ls_pcode
- And sptid = :ll_cusid;
-
- If sqlca.SQLCode = -1 Then
- arg_msg = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败'
- rslt = 0
- Goto ext
- ElseIf sqlca.SQLCode = 100 Then
- ll_mtrlwareid = 0
-
- ll_mtrlwareid = f_sys_scidentity(ll_scid_arr[ll_j],"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ll_mtrlwareid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- Insert Into u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid)
- Values(:ll_scid_arr[ll_j],:ll_mtrlwareid,:ll_mtrlid,:ll_storageid_arr[ll_j],0,:ls_status,:ls_plancode,:ls_woodcode,:ls_pcode,:ll_cusid);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '产品:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查'
- rslt = 0
- Goto ext
- End If
- End If
-
- If sys_option_saletask_addware_addbj = 1 Then
- If uo_option_inout_type <> 0 And li_outtype <> 0 And li_ifpackpro = 1 Then
- it_mxt = 1
-
- Declare cur_pf Cursor For
- Select u_PrdPF.SonMtrlid,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.ifover,
- u_prdpf.dipztype
- From u_PrdPF,u_mtrl_pf
- Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.mtrlid = :ll_mtrlid )
- And ( u_mtrl_pf.ifdi = 1 And :li_ifpackpro = 0
- Or u_mtrl_pf.ifdft = 1 And :li_ifpackpro = 1 And :li_ifmrppackpf = 0
- Or u_mtrl_pf.ifdi = 2 And :li_ifpackpro = 1 And :li_ifmrppackpf = 1 );
- Open cur_pf;
- Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt];
- Do While sqlca.SQLCode = 0
- it_mxt++
- Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt];
- Loop
- it_mxt = it_mxt - 1
- Close cur_pf;
-
- For ll_k = 1 To it_mxt
- If li_ifover[ll_k] = 1 Then
- Choose Case li_dipztype[ll_k]
- Case 0
- ls_status_find = ls_status
- ls_woodcode_find = ''
- ls_pcode_find = ''
- Case 1
- ls_status_find = ''
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ''
- Case 2
- ls_status_find = ''
- ls_woodcode_find = ''
- ls_pcode_find = ls_pcode
- Case 3
- ls_status_find = ls_status
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ''
- Case 4
- ls_status_find = ''
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ls_pcode
- Case 5
- ls_status_find = ls_status
- ls_woodcode_find = ''
- ls_pcode_find = ls_pcode
- Case 6
- ls_status_find = ls_status
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ls_pcode
- End Choose
- Else
- ls_status_find = ls_pf_status[ll_k]
- ls_woodcode_find = ls_pf_woodcode[ll_k]
- ls_pcode_find = ls_pf_pcode[ll_k]
- End If
-
- ls_status_find = Trim(ls_status_find)
- ls_woodcode_find = Trim(ls_woodcode_find)
- ls_pcode_find = Trim(ls_pcode_find)
-
-
- Select top 1 mtrlwareid Into :ll_mtrlwareid
- From u_mtrlware
- Where mtrlid = :ll_SonMtrlid[ll_k]
- And status = :ls_status_find
- And storageid = :ll_storageid_arr[ll_j]
- And woodcode = :ls_woodcode_find
- And plancode = :ls_plancode
- And pcode = :ls_pcode_find
- And sptid = :ll_cusid;
-
- If sqlca.SQLCode = -1 Then
- arg_msg = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败'
- rslt = 0
- Goto ext
- ElseIf sqlca.SQLCode = 100 Then
- ll_mtrlwareid = 0
-
- ll_mtrlwareid = f_sys_scidentity(ll_scid_arr[ll_j],"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ll_mtrlwareid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- Insert Into u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid)
- Values(:ll_scid_arr[ll_j],:ll_mtrlwareid,:ll_SonMtrlid[ll_k],:ll_storageid_arr[ll_j],0,:ls_status_find,:ls_plancode,:ls_woodcode_find,:ls_pcode_find,:ll_cusid);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '产品:'+ls_mtrlcode+'下级包件,仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查'
- rslt = 0
- Goto ext
- End If
- End If
- Next
- End If
- End If
- Next
- Next
- End If
- If uo_option_if_msg = 1 Then
- If f_billmsg(arg_scid,taskcode,taskcode+'销售订单确认',taskcode+'销售订单确认',commit_transaction,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- //默认订单调度
- If Kind <> 0 Then
- If uo_option_saletask_secaudit = 0 Then
- For i = 1 To it_mxbt
- If p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- Next
- End If
- Else
- If uo_option_saletask_fore_secaudit = 0 Then
- For i = 1 To it_mxbt
- If p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- Next
- End If
- End If
- If Kind <> 0 Then
- If uo_option_if_oa_saletask = 1 And uo_option_saletask_secaudit = 1 Then
- If f_oa(commit_transaction,False,arg_msg,6,scid,taskid,taskcode,relcode,dscrp) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Else
- If uo_option_if_oa_saletask_fore = 1 And uo_option_saletask_fore_secaudit = 1 Then
- If f_oa(commit_transaction,False,arg_msg,1324,scid,taskid,taskcode,relcode,dscrp) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- If Kind <> 0 Then //更新价格指令使用次数
- For i = 1 To it_mxbt
- If saletaskmx[i].poid > 0 Then
- If uo_po.uof_add_salenum(saletaskmx[i].poid, saletaskmx[i].saleqty, 0, False, arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- End If
- //更新意向单完成数, 完成意向单
- For i = 1 To it_mxbt
- If saletaskmx[i].sampleid > 0 Then
- If uo_cs.trycmpl(saletaskmx[i].sampleid, saletaskmx[i].saleqty, arg_msg, False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Next
- 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()
- Destroy uo_po
- Destroy uo_cs
- Return rslt
- end function
- public function integer tempstoptask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,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_SaleTask
- SET Status = 2,stopemp = :publ_operator
- Where TaskID = :arg_taskid 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_SaleTask
- SET Status = 1,stopemp = ''
- Where TaskID = :arg_taskid AND scid = :arg_scid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致取消暂停销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
- //从置对象,设定业务类型与关联ID,准备更新进仓单
- //0 fail 1 success
- Long rslt = 1,CNT = 0
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask_fore = -1000 THEN
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_scid < 0 THEN
- arg_msg = '请选择分部'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- arg_msg = '已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
- GOTO ext
- END IF
- if priceflag <> 0 then
- rslt = 0
- arg_msg = '单据已确认,不能修改'
- goto ext
- end if
- IF Kind <> 0 THEN
- IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_if_oa_saletask_fore = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,1324,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- it_newbegin = False
- it_updatebegin = True
- p_clearmx() //清除明细
- msttakeamt = 0
- scid = arg_scid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i,j,k
- Long ls_newtaskid
- DateTime server_datetime
- Long ll_taskid
- String ls_sccode
- String ls_mtrlcuscode
- String ls_typebillcode
- Long ll_typeid
- String ls_taskcode
- Int li_pricelistflag
- Int li_selecttype_cust,li_selecttype_def,li_ifbj
- If uo_option_disuse_saletask = -1000 Then
- rslt = 0
- arg_msg = '选项:[291]启用销售订单废弃单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_taskplancode_auto = -1000 Then
- arg_msg = '选项:[048]销售订单生产批号类型,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_saletask_rebate_check = -1000 Then
- arg_msg = '选项:[364]客户折扣没有审核,不能保存销售订单,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If IsNull(dscrp) Then dscrp = ''
- If IsNull(dscrp2) Then dscrp2 = ''
- If IsNull(assign_emp) Then assign_emp = ''
- If IsNull(arg_operator) Then arg_operator = ''
- If IsNull(paytype) Then paytype = ''
- If IsNull(relcode) Then relcode = ''
- If IsNull(banktypeid) Then banktypeid = 0
- If IsNull(moneyid) Then moneyid = 0
- If IsNull(damt) Then damt = 0
- If IsNull(otheramt) Then otheramt = 0
- If IsNull(mrate) Then mrate = 0
- If IsNull(Kind) Then Kind = 0
- If IsNull(freight) Then freight = ''
- If IsNull(freight_tele) Then freight_tele = ''
- If IsNull(cus_address) Then cus_address = ''
- If IsNull(cus_tele) Then cus_tele = ''
- If IsNull(cus_fax) Then cus_fax = ''
- If IsNull(upname) Then upname = ''
- If IsNull(msttakeamt) Then msttakeamt = 0
- If IsNull(typeid) Then typeid = 0
- If IsNull(cusid) Then cusid = 0
- If IsNull(rel_rep) Then rel_rep = ''
- If IsNull(Level) Then Level = 2
- If IsNull(dscrp3) Then dscrp3 = ''
- If IsNull(station_address) Then station_address = ''
- If IsNull(sendUser) Then sendUser = ''
- If IsNull(fiebrelcode) Then fiebrelcode = ''
- If IsNull(exchangeid) Then exchangeid = 0
- 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
- If Kind <> 4 Then
- arg_msg = "请输入订单业务员"
- Else
- arg_msg = "请输入经手员"
- End If
- Goto ext
- End If
- If Kind > 0 And Kind <> 3 And Kind <> 4 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_cust
- Where cusid = :cusid 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 uo_option_saletask_rebate_check = 1 Then
- Select pricelistflag
- Into :li_pricelistflag
- From u_cust
- Where cusid = :cusid Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询操作失败,客户默认价格表/折扣"
- Goto ext
- End If
-
- If li_pricelistflag = 0 Then
- rslt = 0
- arg_msg = "客户折扣未审核,不能保存"
- Goto ext
- End If
- End If
-
-
- cnt = 0
- Select count(*) Into :cnt
- From cw_banktype
- Where banktypeid = :banktypeid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询结算方式失败'
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '结算方式不存在'
- rslt = 0
- Goto ext
- End If
-
- cnt = 0
- Select count(*) Into :cnt
- From cw_currency
- Where moneyid = :moneyid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询币种失败'
- rslt = 0
- Goto ext
- End If
-
- If cnt = 0 Then
- arg_msg = '币种资料不存在'
- rslt = 0
- Goto ext
- End If
-
- If mrate = 0 Then
- arg_msg = '币种汇率错误'
- rslt = 0
- Goto ext
- End If
-
- If f_moneyid_rate_check(moneyid,mrate,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- //综合订单分类及客户设定,得出最终生效的选择限制 selecttype
- If f_get_selecttype(typeid,cusid,selecttype,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- ElseIf Kind = 0 And cusid > 0 Then
- cnt = 0
- Select count(*) Into :cnt
- From u_cust
- Where cusid = :cusid 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
- End If
- If Kind > 0 And Kind <> 4 Then
- If uo_option_saletask_ifuse_typebillcode = 1 Then
- If typeid = 0 Then
- arg_msg = '请先选择订单分类'
- rslt = 0
- Goto ext
- End If
-
- Select billcode Into :ls_typebillcode
- From u_saletype
- Where typeid = :typeid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If ls_typebillcode = '' Then
- arg_msg = '订单分类未设置对应单据抬头,请检查'
- rslt = 0
- Goto ext
- End If
- End If
- 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
- //检查订货日期是否合法(不能距离当前时间10年以上)
- if abs(year(date(server_datetime)) - year(date(taskdate))) > 10 then
- rslt = 0
- arg_msg = '请检查订货日期是否正确(不能距离当前时间10年以上)!'
- goto ext
- end if
- If f_check_inoutdate(0,taskdate,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 Date(taskdate) > Date(requiredate) Then
- arg_msg = '交货日期不能在订货日期前'
- rslt = 0
- Goto ext
- 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 Kind = 1 And taskid > 0 And uo_option_disuse_saletask = 1 Then
- If uof_disuse(scid,taskid,0,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- If taskid = 0 Then //新建
- ll_taskid = f_sys_scidentity(scid,"u_saletask","taskid",arg_msg,True,id_sqlca)
- If ll_taskid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- //取分部代号
- If f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- If Kind = 0 Then
- taskcode = getid(scid,ls_sccode + 'SF',Date(server_datetime),False,commit_transaction)
- If taskcode = "err" Then
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取销售预测单编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- ElseIf Kind = 1 Then
- If uo_option_saletask_ifuse_typebillcode = 0 Then
- taskcode = getid(scid,ls_sccode + 'SG',Date(server_datetime),False,commit_transaction)
- If taskcode = "err" Then
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取销售订单编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Else
- taskcode = getid_saletask(scid,ls_sccode + ls_typebillcode,Date(server_datetime),False,commit_transaction)
- If taskcode = "err" Then
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取销售订单分类编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
- ElseIf Kind = 2 Then
- taskcode = getid(scid,ls_sccode + 'SJ',Date(server_datetime),False,commit_transaction)
- If taskcode = "err" Then
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取来料加工订单编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- ElseIf Kind = 3 Then
- taskcode = getid(scid,ls_sccode + 'SR',Date(server_datetime),False,commit_transaction)
- If taskcode = "err" Then
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取销售返工订单编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- ElseIf Kind = 4 Then
- taskcode = getid(scid,ls_sccode + 'FX',Date(server_datetime),False,commit_transaction)
- If taskcode = "err" Then
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取分部需求单编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- Insert Into u_saletask
- ( scid,
- taskcode,
- kind,
- cusid,
- requiredate,
- status,
- opemp,
- assign_emp,
- dscrp,
- dscrp2,
- opdate,
- taskid,
- damt,
- otheramt,
- freight,
- taskdate,
- banktypeid,
- moneyid,
- relcode,
- paytype,
- freight_tele,
- cus_address,
- cus_tele,
- cus_fax,
- mrate,
- upname,
- msttakeamt,
- typeid,
- rel_rep,
- level,
- sendTime,
- sendUser,
- fiebrelcode,
- mxrowcount,
- dscrp3,
- exchangeid,
- station_address,
- selecttype)
- Values ( :scid,
- :taskcode,
- :Kind,
- :cusid,
- :requiredate,
- :status,
- :operator,
- :assign_emp,
- :dscrp,
- :dscrp2,
- :opdate,
- :ll_taskid,
- :damt,
- :otheramt,
- :freight,
- :taskdate,
- :banktypeid,
- :moneyid,
- :relcode,
- :paytype,
- :freight_tele,
- :cus_address,
- :cus_tele,
- :cus_fax,
- :mrate,
- :upname,
- :msttakeamt,
- :typeid,
- :rel_rep,
- :Level,
- :sendTime,
- :sendUser,
- :fiebrelcode,
- :it_mxbt,
- :dscrp3,
- :exchangeid,
- :station_address,
- :selecttype) Using commit_transaction ;
-
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致插入销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- //读取新taskid
- taskid = ll_taskid
-
- For i = 1 To it_mxbt
- ls_mtrlcuscode = ''
- If Kind = 4 Then
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- Else
- Choose Case uo_option_taskplancode_auto
- Case 1
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- Case 2
- ls_mtrlcuscode = taskcode
- Case 3
- ls_mtrlcuscode = relcode
- Case 4
- ls_mtrlcuscode = taskcode + '.' + String(i,'000')
- Case 5
- ls_mtrlcuscode = ''
- Case Else
- arg_msg = '错误的生产批号,管理员请在系统选项设置先设定好订单批号模式'
- rslt = 0
- Goto ext
- End Choose
- End If
-
- Insert Into u_saletaskmx
- ( scid,
- saleqty,
- price,
- plprice,
- mtrlid,
- taskid,
- mxdscrp,
- mxdscrp2,
- fprice,
- rebate,
- status,
- printid,
- woodcode,
- pcode,
- mtrlcuscode,
- enprice,
- outtypestr,
- dftsaleprice,
- requiredate,
- pfcode,
- scidprice,
- quoteid,
- quotecode,
- quoteprintid,
- pricetype,
- capacity,
- nprice,
- poid,
- taxrate,
- addqty,
- priceformula,
- sampleid,
- enacprice,
- net_weight,
- gross_weight,
- cubage,
- fjcnt,
- fjstr,
- porebate)
- Values (:scid,
- :saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,
- :saletaskmx[i].plprice,
- :saletaskmx[i].mtrlid,
- :ll_taskid,
- :saletaskmx[i].dscrp,
- :saletaskmx[i].dscrp2,
- :saletaskmx[i].fprice,
- :saletaskmx[i].rebate,
- :saletaskmx[i].status,
- :saletaskmx[i].printid,
- :saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,
- :ls_mtrlcuscode,
- :saletaskmx[i].enprice,
- :saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,
- :saletaskmx[i].scidprice,
- :saletaskmx[i].quoteid,
- :saletaskmx[i].quotecode,
- :saletaskmx[i].quoteprintid,
- :saletaskmx[i].pricetype,
- :saletaskmx[i].capacity,
- :saletaskmx[i].nprice,
- :saletaskmx[i].poid,
- :saletaskmx[i].taxrate,
- :saletaskmx[i].addqty,
- :saletaskmx[i].priceformula,
- :saletaskmx[i].sampleid,
- :saletaskmx[i].enacprice,
- :saletaskmx[i].net_weight,
- :saletaskmx[i].gross_weight,
- :saletaskmx[i].cubage,
- :saletaskmx[i].fjcnt,
- :saletaskmx[i].fjstr,
- :saletaskmx[i].porebate) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- If Len(Trim(saletaskmx[i].dscrp_text)) > 0 Then
- Insert Into u_SaleTaskMx_dscrp
- (scid,
- taskid,
- printid,
- dscrp)
- Values
- (:scid,
- :ll_taskid,
- :saletaskmx[i].printid,
- :saletaskmx[i].dscrp_text) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细备注操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
-
- Next
-
-
- For i = 1 To it_mxbtmx
-
-
- ls_mtrlcuscode = ''
- If Kind = 4 Then
- ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
- Else
- Choose Case uo_option_taskplancode_auto
- Case 1
- ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
- Case 2
- ls_mtrlcuscode = taskcode
- Case 3
- ls_mtrlcuscode = relcode
- Case 4
- ls_mtrlcuscode = taskcode + '.' + String(i,'000')
- Case 5
- ls_mtrlcuscode = ''
- Case Else
- arg_msg = '错误的生产批号,管理员请在系统选项设置先设定好订单批号模式'
- rslt = 0
- Goto ext
- End Choose
- End If
- Insert Into u_saletaskmxmx
- ( scid,
- saleqty,
- price,
- plprice,
- mtrlid,
- taskid,
- mxdscrp,
- mxdscrp2,
- fprice,
- rebate,
- status,
- printid,
- woodcode,
- pcode,
- mtrlcuscode,
- enprice,
- outtypestr,
- dftsaleprice,
- requiredate,
- pfcode,
- scidprice,
- quoteid,
- quotecode,
- quoteprintid,
- pricetype,
- capacity,
- nprice,
- poid,
- taxrate,
- addqty,
- priceformula,
- enacprice,
- net_weight,
- gross_weight,
- cubage)
- Values (:scid,
- :saletaskmxmx[i].saleqty,
- :saletaskmxmx[i].price,
- :saletaskmxmx[i].plprice,
- :saletaskmxmx[i].mtrlid,
- :ll_taskid,
- :saletaskmxmx[i].mxdscrp,
- :saletaskmxmx[i].mxdscrp2,
- :saletaskmxmx[i].fprice,
- :saletaskmxmx[i].rebate,
- :saletaskmxmx[i].status,
- :saletaskmxmx[i].printid,
- :saletaskmxmx[i].woodcode,
- :saletaskmxmx[i].pcode,
- :ls_mtrlcuscode,
- :saletaskmxmx[i].enprice,
- :saletaskmxmx[i].outtypestr,
- :saletaskmxmx[i].dftsaleprice,
- :saletaskmxmx[i].requiredate,
- :saletaskmxmx[i].pfcode,
- :saletaskmxmx[i].scidprice,
- :saletaskmxmx[i].quoteid,
- :saletaskmxmx[i].quotecode,
- :saletaskmxmx[i].quoteprintid,
- :saletaskmxmx[i].pricetype,
- :saletaskmxmx[i].capacity,
- :saletaskmxmx[i].nprice,
- :saletaskmxmx[i].poid,
- :saletaskmxmx[i].taxrate,
- :saletaskmxmx[i].addqty,
- :saletaskmxmx[i].priceformula,
- :saletaskmxmx[i].enacprice,
- :saletaskmxmx[i].net_weight,
- :saletaskmxmx[i].gross_weight,
- :saletaskmxmx[i].cubage) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
-
- Next
-
-
- If Kind = 2 Then
- For j = 1 To it_mxbt_in
- Insert Into u_saletaskmx_in
- (scid,
- taskid,
- printid,
- mtrlid,
- plancode,
- status,
- woodcode,
- pcode,
- qty,
- fprice,
- mxdscrp,
- storageid)
- Values
- (:scid,
- :ll_taskid,
- :saletaskmx_in[j].printid,
- :saletaskmx_in[j].mtrlid,
- :saletaskmx_in[j].plancode,
- :saletaskmx_in[j].status,
- :saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,
- :saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,
- :saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].storageid) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入收料明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Next
- End If
-
- For k = 1 To it_mxbt_item
- Insert Into u_saletask_itemmx
- (scid,
- taskid,
- printid,
- itemid,
- amt,
- mxdscrp)
- Values (:scid,
- :ll_taskid,
- :saletask_itemmx[k].printid,
- :saletask_itemmx[k].itemid,
- :saletask_itemmx[k].amt,
- :saletask_itemmx[k].mxdscrp) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Next
-
- cnt = 0
-
- Select count(*) Into :cnt
- From u_cust_wrkgrp_mxdscrp
- Where cusid = :cusid
- And mtrlid = 0;
- If sqlca.SQLCode <> 0 Then cnt = 0
-
- If cnt > 0 Then
- Insert Into u_saletaskmx_wrkgrp_mxdscrp
- (scid,
- taskid,
- printid,
- wrkgrpid,
- mxdscrp)
- Select u_SaleTaskMx.scid,
- u_SaleTaskMx.TaskID,
- u_SaleTaskMx.printid,
- u_cust_wrkgrp_mxdscrp.wrkgrpid,
- u_cust_wrkgrp_mxdscrp.mxdscrp
- From u_SaleTask Inner JOIN
- u_SaleTaskMx ON u_SaleTask.scid = u_SaleTaskMx.scid And
- u_SaleTask.TaskID = u_SaleTaskMx.TaskID Inner JOIN
- u_cust_wrkgrp_mxdscrp ON
- u_SaleTask.CusID = u_cust_wrkgrp_mxdscrp.cusid
- Where u_SaleTask.scid = :scid
- And u_saletask.taskid = :ll_taskid
- And (u_cust_wrkgrp_mxdscrp.mtrlid = 0) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入默认车间备注(通用)操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- Update u_saletaskmx_wrkgrp_mxdscrp
- Set u_saletaskmx_wrkgrp_mxdscrp.mxdscrp = u_cust_wrkgrp_mxdscrp.mxdscrp
- From u_saletaskmx_wrkgrp_mxdscrp Inner JOIN
- u_SaleTask ON u_saletaskmx_wrkgrp_mxdscrp.scid = u_SaleTask.scid And
- u_saletaskmx_wrkgrp_mxdscrp.taskid = u_SaleTask.TaskID Inner JOIN
- u_cust_wrkgrp_mxdscrp ON u_SaleTask.CusID = u_cust_wrkgrp_mxdscrp.cusid And
- u_saletaskmx_wrkgrp_mxdscrp.wrkgrpid = u_cust_wrkgrp_mxdscrp.wrkgrpid Inner JOIN
- u_SaleTaskMx ON u_saletaskmx_wrkgrp_mxdscrp.scid = u_SaleTaskMx.scid And
- u_saletaskmx_wrkgrp_mxdscrp.taskid = u_SaleTaskMx.TaskID And
- u_saletaskmx_wrkgrp_mxdscrp.printid = u_SaleTaskMx.printid And
- u_cust_wrkgrp_mxdscrp.mtrlid = u_SaleTaskMx.MtrlID
- Where u_SaleTask.scid = :scid
- And u_saletask.taskid = :ll_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致更新默认车间备注操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- Else
- Insert Into u_saletaskmx_wrkgrp_mxdscrp
- (scid,
- taskid,
- printid,
- wrkgrpid,
- mxdscrp)
- Select u_SaleTaskMx.scid,
- u_SaleTaskMx.TaskID,
- u_SaleTaskMx.printid,
- u_cust_wrkgrp_mxdscrp.wrkgrpid,
- u_cust_wrkgrp_mxdscrp.mxdscrp
- From u_SaleTask Inner JOIN
- u_SaleTaskMx ON u_SaleTask.scid = u_SaleTaskMx.scid And
- u_SaleTask.TaskID = u_SaleTaskMx.TaskID Inner JOIN
- u_cust_wrkgrp_mxdscrp ON u_SaleTask.CusID = u_cust_wrkgrp_mxdscrp.cusid And
- u_SaleTaskMx.MtrlID = u_cust_wrkgrp_mxdscrp.mtrlid
- Where u_SaleTask.scid = :scid
- And u_saletask.taskid = :ll_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入默认车间备注操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
-
-
- Else //////////////////////////////////////////////// //更新
- Select typeid,taskcode Into :ll_typeid,:ls_taskcode
- From u_saletask
- Where taskid = :taskid
- And scid = :scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If uo_option_saletask_ifuse_typebillcode = 1 Then
-
-
- If ll_typeid <> typeid Then
-
- Select billcode Into :ls_typebillcode
- From u_saletype
- Where typeid = :typeid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If ls_typebillcode = '' Then
- arg_msg = '订单分类未设置对应单据抬头,请检查'
- rslt = 0
- Goto ext
- End If
-
- //取分部代号
- If f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- taskcode = getid_saletask(scid,ls_sccode + ls_typebillcode,Date(server_datetime),False,commit_transaction)
- If taskcode = "err" Then
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取销售订单分类编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- ls_taskcode = taskcode
- End If
- End If
-
- Update u_saletask
- Set kind = :Kind,
- cusid = :cusid,
- requiredate = :requiredate,
- assign_emp = :assign_emp,
- dscrp = :dscrp,
- dscrp2 = :dscrp2,
- moddate = :opdate,
- modemp = :operator,
- damt = :damt,
- otheramt = :otheramt,
- freight = :freight,
- taskdate = :taskdate,
- banktypeid = :banktypeid,
- moneyid = :moneyid,
- relcode = :relcode,
- paytype = :paytype,
- freight_tele = :freight_tele,
- cus_address = :cus_address,
- cus_tele = :cus_tele,
- cus_fax = :cus_fax,
- mrate = :mrate,
- upname = :upname,
- msttakeamt = :msttakeamt,
- typeid = :typeid,
- rel_rep = :rel_rep,
- level = :Level,
- sendTime = :sendTime,
- sendUser = :sendUser,
- fiebrelcode = :fiebrelcode,
- mxrowcount = :it_mxbt,
- dscrp3 = :dscrp3,
- taskcode = :ls_taskcode,
- exchangeid = :exchangeid,
- station_address = :station_address,
- selecttype = :selecttype
- Where u_saletask.taskid = :taskid
- And scid = :scid
- And status = 0 Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致更新销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- //删除原有明细
- Delete From u_saletaskmx
- Where u_saletaskmx.taskid = :taskid And 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_saletaskmxmx
- Where u_saletaskmxmx.taskid = :taskid And 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_SaleTaskMx_dscrp
- Where taskid = :taskid And scid = :scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除旧有明细备注操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- For i = 1 To it_mxbt
- ls_mtrlcuscode = ''
- If Kind = 4 Then
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- Else
- Choose Case uo_option_taskplancode_auto
- Case 1
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- Case 2
- ls_mtrlcuscode = taskcode
- Case 3
- ls_mtrlcuscode = relcode
- Case 4
- ls_mtrlcuscode = taskcode + '.' + String(i,'000')
- Case 5
- ls_mtrlcuscode = ''
- Case Else
- arg_msg = '错误的生产批号,管理员请先设定好订单批号模式'
- rslt = 0
- Goto ext
- End Choose
- End If
- Insert Into u_saletaskmx
- ( scid,
- taskid,
- mtrlid,
- saleqty,
- price,
- plprice,
- mxdscrp,
- mxdscrp2,
- fprice,
- rebate,
- status,
- printid,
- woodcode,
- pcode,
- mtrlcuscode,
- enprice,
- outtypestr,
- dftsaleprice,
- requiredate,
- pfcode,
- scidprice,
- quoteid,
- quotecode,
- quoteprintid,
- pricetype,
- capacity,
- nprice,
- poid,
- taxrate,
- addqty,
- priceformula,
- sampleid,
- enacprice,
- net_weight,
- gross_weight,
- cubage,
- fjcnt,
- fjstr,
- porebate)
- Values (:scid,
- :taskid,
- :saletaskmx[i].mtrlid,
- :saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,
- :saletaskmx[i].plprice,
- :saletaskmx[i].dscrp,
- :saletaskmx[i].dscrp2,
- :saletaskmx[i].fprice,
- :saletaskmx[i].rebate,
- :saletaskmx[i].status,
- :saletaskmx[i].printid,
- :saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,
- :ls_mtrlcuscode,
- :saletaskmx[i].enprice,
- :saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,
- :saletaskmx[i].scidprice,
- :saletaskmx[i].quoteid,
- :saletaskmx[i].quotecode,
- :saletaskmx[i].quoteprintid,
- :saletaskmx[i].pricetype,
- :saletaskmx[i].capacity,
- :saletaskmx[i].nprice,
- :saletaskmx[i].poid,
- :saletaskmx[i].taxrate,
- :saletaskmx[i].addqty,
- :saletaskmx[i].priceformula,
- :saletaskmx[i].sampleid,
- :saletaskmx[i].enacprice,
- :saletaskmx[i].net_weight,
- :saletaskmx[i].gross_weight,
- :saletaskmx[i].cubage,
- :saletaskmx[i].fjcnt,
- :saletaskmx[i].fjstr,
- :saletaskmx[i].porebate) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- If Len(Trim(saletaskmx[i].dscrp_text)) > 0 Then
- Insert Into u_SaleTaskMx_dscrp
- (scid,
- taskid,
- printid,
- dscrp)
- Values
- (:scid,
- :taskid,
- :saletaskmx[i].printid,
- :saletaskmx[i].dscrp_text) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细备注操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
-
- Next
-
- For i = 1 To it_mxbtmx
- ls_mtrlcuscode = ''
- If Kind = 4 Then
- ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
- Else
- Choose Case uo_option_taskplancode_auto
- Case 1
- ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
- Case 2
- ls_mtrlcuscode = taskcode
- Case 3
- ls_mtrlcuscode = relcode
- Case 4
- ls_mtrlcuscode = taskcode + '.' + String(i,'000')
- Case 5
- ls_mtrlcuscode = ''
- Case Else
- arg_msg = '错误的生产批号,管理员请在系统选项设置先设定好订单批号模式'
- rslt = 0
- Goto ext
- End Choose
- End If
-
- Insert Into u_saletaskmxmx
- ( scid,
- saleqty,
- price,
- plprice,
- mtrlid,
- taskid,
- mxdscrp,
- mxdscrp2,
- fprice,
- rebate,
- status,
- printid,
- woodcode,
- pcode,
- mtrlcuscode,
- enprice,
- outtypestr,
- dftsaleprice,
- requiredate,
- pfcode,
- scidprice,
- quoteid,
- quotecode,
- quoteprintid,
- pricetype,
- capacity,
- nprice,
- poid,
- taxrate,
- addqty,
- priceformula,
- enacprice,
- net_weight,
- gross_weight,
- cubage)
- Values (:scid,
- :saletaskmxmx[i].saleqty,
- :saletaskmxmx[i].price,
- :saletaskmxmx[i].plprice,
- :saletaskmxmx[i].mtrlid,
- :taskid,
- :saletaskmxmx[i].mxdscrp,
- :saletaskmxmx[i].mxdscrp2,
- :saletaskmxmx[i].fprice,
- :saletaskmxmx[i].rebate,
- :saletaskmxmx[i].status,
- :saletaskmxmx[i].printid,
- :saletaskmxmx[i].woodcode,
- :saletaskmxmx[i].pcode,
- :ls_mtrlcuscode,
- :saletaskmxmx[i].enprice,
- :saletaskmxmx[i].outtypestr,
- :saletaskmxmx[i].dftsaleprice,
- :saletaskmxmx[i].requiredate,
- :saletaskmxmx[i].pfcode,
- :saletaskmxmx[i].scidprice,
- :saletaskmxmx[i].quoteid,
- :saletaskmxmx[i].quotecode,
- :saletaskmxmx[i].quoteprintid,
- :saletaskmxmx[i].pricetype,
- :saletaskmxmx[i].capacity,
- :saletaskmxmx[i].nprice,
- :saletaskmxmx[i].poid,
- :saletaskmxmx[i].taxrate,
- :saletaskmxmx[i].addqty,
- :saletaskmxmx[i].priceformula,
- :saletaskmxmx[i].enacprice,
- :saletaskmxmx[i].net_weight,
- :saletaskmxmx[i].gross_weight,
- :saletaskmxmx[i].cubage) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
-
- Next
-
-
-
- If Kind = 2 Then
-
- Delete From u_saletaskmx_in
- Where u_saletaskmx_in.taskid = :taskid And scid = :scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除旧有收料明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- For j = 1 To it_mxbt_in
- Insert Into u_saletaskmx_in
- (scid,
- taskid,
- printid,
- mtrlid,
- plancode,
- status,
- woodcode,
- pcode,
- qty,
- fprice,
- mxdscrp,
- storageid)
- Values
- (:scid,
- :taskid,
- :saletaskmx_in[j].printid,
- :saletaskmx_in[j].mtrlid,
- :saletaskmx_in[j].plancode,
- :saletaskmx_in[j].status,
- :saletaskmx_in[j].woodcode,
- :saletaskmx_in[j].pcode,
- :saletaskmx_in[j].qty,
- :saletaskmx_in[j].fprice,
- :saletaskmx_in[j].mxdscrp,
- :saletaskmx_in[j].storageid) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入收料明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Next
- End If
-
- Delete From u_saletask_itemmx
- Where u_saletask_itemmx.taskid = :taskid And scid = :scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除旧有费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- For k = 1 To it_mxbt_item
- Insert Into u_saletask_itemmx
- (scid,
- taskid,
- printid,
- itemid,
- amt,
- mxdscrp)
- Values (:scid,
- :taskid,
- :saletask_itemmx[k].printid,
- :saletask_itemmx[k].itemid,
- :saletask_itemmx[k].amt,
- :saletask_itemmx[k].mxdscrp) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Next
-
- End If
- Update u_saletaskmxmx
- Set u_saletaskmxmx.relpid = u_SaleTaskMx.printid
- From u_SaleTaskMx Inner JOIN
- u_saletaskmxmx ON u_SaleTaskMx.scid = u_saletaskmxmx.scid And
- u_SaleTaskMx.TaskID = u_saletaskmxmx.TaskID And
- u_SaleTaskMx.MtrlID = u_saletaskmxmx.MtrlID And
- u_SaleTaskMx.status = u_saletaskmxmx.status And
- u_SaleTaskMx.pcode = u_saletaskmxmx.pcode And
- u_SaleTaskMx.woodcode = u_saletaskmxmx.woodcode And
- u_SaleTaskMx.mtrlcuscode = u_saletaskmxmx.mtrlcuscode And
- u_SaleTaskMx.enprice = u_saletaskmxmx.enprice
- Where u_SaleTaskMx.scid = :scid
- And u_saletaskmx.taskid = :taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- taskid = 0
- rslt = 0
- arg_msg = '更新明细相关printid失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- it_newbegin = False
- it_updatebegin = False
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- p_clearmx()
- msttakeamt = 0
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit Using commit_transaction;
- End If
- Return rslt
- end function
- public function integer trycmplsaletask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//trycmplsaletask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1
- Long cnt = 0,ll_status
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- rslt = 0
- arg_msg = '销售订单已被截数,操作取消'
- 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_zerook
- Boolean if_finish
- if_finish = True
- DECLARE zero_cur CURSOR FOR
- SELECT u_saletaskmx.saleqty - u_saletaskmx.consignedqty - u_saletaskmx.stopqty
- FROM u_saletaskmx
- WHERE ( u_saletaskmx.taskid = :arg_taskid )
- AND ( u_saletaskmx.scid = :arg_scid )
- 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_saletask
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_saletask.taskid = :arg_taskid )
- And u_saletask.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
- IF status = 5 And Not if_finish THEN
- UPDATE u_saletask
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_saletask.taskid = :arg_taskid )
- And u_saletask.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
- 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 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 acceptmx_mx (long arg_scid, long arg_mtrlwareid, decimal arg_qty, ref string arg_msg);//return 0 fail 1 success
- // 函数增加一个明细项
- Long rslt = 1,cnt = 0,ls_i
- Decimal ld_noallocqty,ld_allocqty
- ////清除空值
- //IF IsNull(arg_scid) THEN arg_scid = 0
- //IF IsNull(arg_mtrlwareid) THEN arg_mtrlid = 0
- //IF IsNull(arg_qty) THEN arg_qty = 0
- //
- //IF arg_mtrlwareid = 0 OR arg_qty = 0 THEN
- // rslt = 1
- // GOTO ext
- //END IF
- //
- //
- //
- //
- //SELECT noallocqty,allocqty INTO :ld_noallocqty,:ld_allocqty
- // FROM u_mtrlware
- // Where scid = :arg_scid
- // and mtrlwareid = :arg_mtrlwareid;
- //IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询库存资料失败'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF arg_qty > ld_noallocqty - ld_allocqty 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
- //
- //String ls_status,ls_pcode,ls_woodcode
- //
- //IF sys_option_price_if_status = 0 THEN
- // ls_status = ''
- // ls_pcode = ''
- // ls_woodcode = ''
- //ELSE
- // ls_status = arg_status
- // ls_pcode = arg_pcode
- // ls_woodcode = arg_woodcode
- //END IF
- //
- //
- //SELECT top 1 price INTO :ld_dftsaleprice
- // FROM u_sale_price_list,u_sale_price_mx
- // WHERE u_sale_price_list.pricelistid = u_sale_price_mx.pricelistid
- // AND u_sale_price_list.dftflag = 1
- // AND u_sale_price_mx.mtrlid = :arg_mtrlid
- // AND u_sale_price_mx.status = :ls_status
- // AND u_sale_price_mx.pcode = :ls_woodcode
- // AND u_sale_price_mx.pcode = :ls_pcode
- // AND u_sale_price_list.moneyid = :moneyid;
- //
- //IF sqlca.SQLCode <> 0 THEN ld_dftsaleprice = 0
- //
- //FOR ls_i = 1 TO it_mxbt //合并重复项
- // IF saletaskmx[it_mxbt].mtrlid = arg_mtrlid AND &
- // saletaskmx[it_mxbt].status = arg_status AND &
- // saletaskmx[it_mxbt].pcode = arg_pcode AND &
- // saletaskmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode AND &
- // saletaskmx[it_mxbt].woodcode = arg_woodcode THEN
- //
- // saletaskmx[it_mxbt].saleqty = saletaskmx[it_mxbt].saleqty+arg_qty
- // rslt = 1
- // GOTO ext
- // END IF
- //NEXT
- //
- ////写入内容
- //it_mxbt++
- //saletaskmx[it_mxbt].dftsaleprice = ld_dftsaleprice
- //saletaskmx[it_mxbt].mtrlid = arg_mtrlid
- //saletaskmx[it_mxbt].saleqty = arg_qty
- //saletaskmx[it_mxbt].plprice = arg_planprice
- //saletaskmx[it_mxbt].dscrp = arg_dscrp
- //saletaskmx[it_mxbt].mtrlcode = arg_mtrlcode
- //saletaskmx[it_mxbt].status = arg_status
- //saletaskmx[it_mxbt].printid = arg_printid
- //saletaskmx[it_mxbt].woodcode = arg_woodcode
- //saletaskmx[it_mxbt].pcode = arg_pcode
- //saletaskmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode
- //
- //saletaskmx[it_mxbt].enprice = arg_fprice
- //saletaskmx[it_mxbt].rebate = arg_rebate
- //saletaskmx[it_mxbt].fprice = arg_fprice * ld_rate
- //saletaskmx[it_mxbt].acprice = arg_fprice * ld_rate * arg_rebate
- //
- //saletaskmx[it_mxbt].outtype = arg_outtype
- //ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN(rslt)
- end function
- public function integer stopmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_commit);Int rslt = 1
- Int li_flag,li_bjflag
- String ls_outtype
- DateTime null_dt
- Decimal ld_notconsignedqty
- Long ll_assignid,j
- Decimal ld_assignqty
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- datastore ds_fp_del
- ds_fp_del = Create datastore
- ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
- ds_fp_del.SetTransObject(commit_transaction)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- SetNull(null_dt)
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arg_msg = '订单只能在进行状态下才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT stopflag,outtypestr,bjflag INTO :li_flag,:ls_outtype,:li_bjflag
- FROM u_saletaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF li_flag = 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_flag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 1 THEN
- SELECT u_saletaskmx.saleQty - u_saletaskmx.consignedqty
- INTO :ld_notconsignedqty
- FROM u_saletaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty <= 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已完成收货,不能中止'
- rslt = 0
- GOTO ext
- END IF
-
- IF ls_outtype = '补件' And li_bjflag = 1 THEN
- arg_msg = '该明细内容为补件明细,并已审核,不能中止'
- rslt = 0
- GOTO ext
- END IF
-
- //取消分配
- ds_fp_del.Retrieve(arg_scid,arg_taskid,arg_printid)
- FOR j = 1 To ds_fp_del.RowCount()
- ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
- ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
-
- IF uo_ma.uof_assign_del(ll_assignid,ld_assignqty,arg_msg,False) = 0 THEN
- arg_msg = '删除库存分配失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_saletaskmx
- SET stopflag = 0,
- stopemp = '',
- stopdate = :null_dt,
- stopreason = ''
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid;
- ELSE
- UPDATE u_saletaskmx
- SET stopflag = 1,
- stopemp = :publ_operator,
- stopdate = getdate(),
- stopreason = :arg_stopreason
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF trycmplsaletask(arg_scid,arg_taskid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_commit THEN
- COMMIT;
- END IF
- Destroy uo_ma
- Destroy ds_fp_del
- RETURN rslt
- end function
- public function integer bjmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, ref string arg_msg, boolean arg_commit);Int rslt = 1
- Int li_bjflag
- DateTime null_dt
- string ls_outtype
- Decimal ld_notconsignedqty
- SetNull(null_dt)
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arg_msg = '订单只能在进行状态下才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT outtypestr,bjflag INTO :ls_outtype,:li_bjflag
- FROM u_saletaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'补件审核标记失败'
- rslt = 0
- GOTO ext
- END IF
- IF ls_outtype <> '补件' THEN
- arg_msg = '明细物料'+arg_mtrlcode+'不是补件明细,不能修改单价'
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF li_bjflag = 0 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'还未补件审核,不能取消补件审核'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF li_bjflag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已补件审核,不能重复审核'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_saletaskmx
- SET bjflag = 0,
- bjemp = '',
- bjdate = :null_dt
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
- ELSE
- UPDATE u_saletaskmx
- SET bjflag = 1,
- bjemp = :publ_operator,
- bjdate = getdate()
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'补件标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_commit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer bjprice (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_enprice, decimal arg_rebate, ref string arg_msg, boolean arg_commit);Int rslt = 1
- Int li_bjflag
- string ls_outtype
- decimal ld_fprice,ld_price
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arg_msg = '订单只能在进行状态下才能操作'
- rslt = 0
- GOTO ext
- END IF
- if arg_enprice < 0 or arg_rebate < 0 then
- arg_msg = '错误单价或折扣'
- rslt = 0
- end if
- SELECT outtypestr,bjflag INTO :ls_outtype,:li_bjflag
- FROM u_saletaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'补件审核标记失败'
- rslt = 0
- GOTO ext
- END IF
- IF ls_outtype <> '补件' THEN
- arg_msg = '明细物料'+arg_mtrlcode+'不是补件明细,不能修改单价'
- rslt = 0
- GOTO ext
- END IF
- IF li_bjflag = 1 THEN
- arg_msg = '明细物料'+arg_mtrlcode+'已补件审核,不能修改单价'
- rslt = 0
- GOTO ext
- END IF
- ld_fprice = arg_enprice * mrate
- ld_price = arg_enprice * mrate * arg_rebate
- UPDATE u_saletaskmx
- SET enprice = :arg_enprice,
- rebate = :arg_rebate,
- fprice = :ld_fprice,
- price = :ld_price
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'单价失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_commit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer propermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//salepermit
- Int rslt = 1,cnt = 0
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_secaudit = -1000 THEN
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_fore_secaudit = -1000 THEN
- arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask_fore = -1000 THEN
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 4 THEN
- rslt = 0
- arg_msg = "订单不是在待生产审状态,操作取消"
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- IF uo_option_if_oa_saletask = 1 And uo_option_saletask_secaudit = 1 and audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_if_oa_saletask_fore = 1 AND uo_option_saletask_fore_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,1324,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- Long i
- FOR i = 1 TO it_mxbt
- IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- 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_saletask
- SET p_Auditingdate = getdate(),
- p_Auditingrep = :arg_emp,
- status = 1
- WHERE taskid = :arg_taskid
- AND scid = :arg_scid
- AND status = 4
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致订单生产审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 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 cancelpropermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1,cnt = 0
- DateTime nulldate
- Decimal ls_consignedQty
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- SetNull(nulldate)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- ARG_MSG = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "订单只有在进行状态才可以执行撤消生产审核,请核对"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND (ordertype = 0 OR ordertype = 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
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_saleoutmx
- WHERE scid = :arg_scid
- And relid = :arg_taskid 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
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware,u_outwaremx
- WHERE ( u_outware.billtype = 1 ) AND
- ( u_outware.scid = u_outwaremx.scid ) AND
- ( u_outware.outwareid = u_outwaremx.outwareid ) AND
- ( u_outwaremx.relid = :arg_taskid ) AND
- ( u_outware.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 cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关出仓单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT sum(u_SaleTaskMx.consignedQty)
- INTO :ls_consignedQty
- FROM u_SaleTaskMx
- WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.scid = :arg_scid ) AND
- ( u_SaleTaskMx.stopflag = 0 ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已有完成数量,不能撤审"
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_taskdamt_mx
- WHERE scid = :arg_scid
- And relid = :arg_taskid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询订单是否已开订单收款单失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- ARG_MSG = "订单已开订单收款单,不能撤审"
- GOTO ext
- END IF
- END IF
- //来料加工订单,检查是否已开收料单
- IF Kind = 2 THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inware,u_inwaremx
- WHERE ( u_inware.billtype = 5 ) AND
- ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inwaremx.relid = :arg_taskid ) AND
- ( u_inware.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 cnt > 0 THEN
- rslt = 0
- ARG_MSG = "来料加工订单已经有相关收料进仓单据,不可以撤消审核"
- GOTO ext
- END IF
-
- SELECT sum(u_SaleTaskMx_in.consignedQty)
- INTO :ls_consignedQty
- FROM u_SaleTaskMx_in
- WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx_in.scid = :arg_scid ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询来料加工订单已收料数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
-
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "来料加工订单已有收料数量,不能撤审"
- GOTO ext
- END IF
- END IF
- //默认订单调度
- Long i
- FOR i = 1 To it_mxbt
- IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- UPDATE u_SaleTask
- SET Status = 4,
- p_Auditingrep = '',
- p_Auditingdate = :nulldate
- WHERE TaskID = :arg_taskid
- 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
- ELSEIF commit_transaction.SQLNRows = 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 updateassignqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Dec ld_SaleQty,ld_AssignQty
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- arg_msg = '订单未审核,不能更新!'
- rslt = 0
- GOTO ext
- END IF
- SELECT pQty + wqty,
- AssignQty
- INTO :ld_SaleQty,
- :ld_AssignQty
- FROM u_SaleTaskMx
- WHERE scid = :arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单已排产数量失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ld_SaleQty - ld_AssignQty < arg_qty THEN
- arg_msg = '排产数量大于待生产数!'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_SaleTaskMx
- SET AssignQty = AssignQty + :arg_qty
- WHERE scid = :arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新排产数失败>>'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_SaleTaskMx
- SET u_SaleTaskMx.perfinishdate = uv_order_perfinishdate.perfinishdate
- FROM u_SaleTaskMx,uv_order_perfinishdate
- WHERE u_SaleTaskMx.scid = uv_order_perfinishdate.scid
- AND u_SaleTaskMx.taskid = uv_order_perfinishdate.taskid
- AND u_SaleTaskMx.printid = uv_order_perfinishdate.taskmxid AND
- u_SaleTaskMx.scid = :arg_scid AND
- u_SaleTaskMx.taskid = :arg_taskid AND
- u_SaleTaskMx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '更新订单明细预计完成日期失败>>'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- ELSEIF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- private function integer uof_p_check_dprice (ref string arg_msg);Int rslt = 1
- Long ll_i
- String ls_mtrlcode
- Decimal ld_dftsaleprice
- IF uo_option_taskaudit_dprice = -1000 THEN
- arg_msg = '选项:[051]销售订单审核前必须有定价,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_taskaudit_dprice = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- FOR ll_i = 1 TO it_mxbt
- ls_mtrlcode = saletaskmx[ll_i].mtrlcode
- ld_dftsaleprice = saletaskmx[ll_i].dftsaleprice
-
- IF saletaskmx[ll_i].outtype <> '' THEN CONTINUE
-
- IF ld_dftsaleprice = 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+'未有定价,请检查'
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer ddpermit (long arg_scid, long arg_taskid, long arg_printid, integer arg_flag, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- Int li_ddflag,li_stopflag
- Long ll_mtrlid
- DateTime ldt_null
- SetNull(ldt_null)
- Decimal ld_bqty
- String ls_pfcode
- Int li_ifautodd,li_ifrebuypack,li_ifpackpro
- Long ll_scid
- Int li_isuse
- Long ll_cusid,ll_pid
- String ls_mtrlcode,ls_status,ls_woodcode,ls_pcode,ls_unit,ls_mtrlcuscode
- DateTime ldt_rqdate
- String ls_mxdscrp
- Decimal ld_bqty_pack
- Long ll_cnt
- ll_cnt = 0
- IF uo_option_autocreate_buy_cp = -1000 THEN
- arg_msg = '选项:[113]销售订单调度审核自动建立成品申购单,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- uo_requestbuy uo_rqbuy
- uo_rqbuy = Create uo_requestbuy
- SELECT mtrlid,
- ddflag,
- stopflag,
- bqty,
- pfcode,
- status,
- woodcode,
- pcode,
- mtrlcuscode,
- requiredate,
- mxdscrp
- INTO :ll_mtrlid,
- :li_ddflag,
- :li_stopflag,
- :ld_bqty,
- :ls_pfcode,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_mtrlcuscode,
- :ldt_rqdate,
- :ls_mxdscrp
- FROM u_saletaskmx
- WHERE u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.taskid = :arg_taskid
- And u_saletaskmx.printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',查询订单产品明细失败 '+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF li_stopflag = 1 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',该订单明细已经终止,不能再调度审核'
- GOTO ext
- END IF
- SELECT ifautodd,
- scid,
- ifrebuypack ,
- ifpackpro,
- mtrlcode,
- isuse
- INTO :li_ifautodd,
- :ll_scid,
- :li_ifrebuypack,
- :li_ifpackpro,
- :ls_mtrlcode,
- :li_isuse
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid ;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料:'+ls_mtrlcode+'查询订单明细物料是否自动调度失败,'+SQLCA.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ld_bqty > 0 And li_ifrebuypack = 1 And li_ifpackpro <> 0 And arg_flag = 0 THEN
- IF uof_cmp_pack(arg_scid,arg_taskid,arg_printid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ls_mtrlcuscode,ld_bqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF li_ifautodd = 0 THEN
- IF arg_flag = 0 THEN
- IF li_isuse = 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',不是有效物料,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ddflag = 1 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',该订单明细已经调度审核'
- GOTO ext
- END IF
- ELSE
- IF li_ddflag = 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',该订单明细未调度审核'
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_flag = 0 THEN
- IF uo_option_autocreate_buy_cp = 1 THEN
- ld_bqty = 0
- SELECT bqty INTO :ld_bqty
- FROM u_saletaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',查询订单明细安排采购数量失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
-
- IF ld_bqty > 0 THEN
-
-
- s_requestbuy arg_s_rqbuy
-
- arg_s_rqbuy.scid = ll_scid
- arg_s_rqbuy.requestbuyid = 0
- arg_s_rqbuy.requestbuydate = DateTime(Today(),Time(0))
- arg_s_rqbuy.assign_emp = publ_operator
- arg_s_rqbuy.relcode = ''
- arg_s_rqbuy.dscrp = ''
- arg_s_rqbuy.ifauto = 1
- arg_s_rqbuy.billtype = 1
-
- IF Not (li_ifrebuypack = 1 And li_ifpackpro = 1 ) THEN
- SELECT u_saletaskmx.mtrlid,
- u_saletaskmx.status,
- u_saletaskmx.woodcode,
- u_saletaskmx.pcode,
- u_mtrldef.mtrlcode,
- u_mtrldef.unit,
- u_saletask.cusid,
- u_saletaskmx.requiredate,
- u_saletaskmx.mtrlcuscode,
- u_saletaskmx.mxdscrp
- INTO :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_mtrlcode,
- :ls_unit,
- :ll_cusid,
- :ldt_rqdate,
- :ls_mtrlcuscode,
- :ls_mxdscrp
- FROM u_saletaskmx,
- u_mtrldef,
- u_saletask
- WHERE u_saletaskmx.mtrlid = u_mtrldef.mtrlid
- AND u_saletask.taskid = u_saletaskmx.taskid
- AND u_saletask.scid = u_saletaskmx.scid
- AND u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.taskid = :arg_taskid
- And u_saletaskmx.printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',查询订单明细内容失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
-
- arg_s_rqbuy.arg_s_rqbuymx[1].mtrlcode = ls_mtrlcode
- arg_s_rqbuy.arg_s_rqbuymx[1].uqty = ld_bqty
- arg_s_rqbuy.arg_s_rqbuymx[1].unit = ls_unit
- arg_s_rqbuy.arg_s_rqbuymx[1].status = ls_status
- arg_s_rqbuy.arg_s_rqbuymx[1].woodcode = ls_woodcode
- arg_s_rqbuy.arg_s_rqbuymx[1].pcode = ls_pcode
- arg_s_rqbuy.arg_s_rqbuymx[1].mxdscrp = ls_mxdscrp
- arg_s_rqbuy.arg_s_rqbuymx[1].mtrlid = ll_mtrlid
- arg_s_rqbuy.arg_s_rqbuymx[1].orderid = arg_taskid
- arg_s_rqbuy.arg_s_rqbuymx[1].wrkgrpid = 0
- arg_s_rqbuy.arg_s_rqbuymx[1].ifrel = 1
- arg_s_rqbuy.arg_s_rqbuymx[1].printid = 1
- arg_s_rqbuy.arg_s_rqbuymx[1].rate = 1
- arg_s_rqbuy.arg_s_rqbuymx[1].dftsptid = ll_cusid
- arg_s_rqbuy.arg_s_rqbuymx[1].relprintid = arg_printid
- arg_s_rqbuy.arg_s_rqbuymx[1].rqdate = ldt_rqdate
- arg_s_rqbuy.arg_s_rqbuymx[1].plancode = ls_mtrlcuscode
-
- ELSE
- DECLARE cur_pack CURSOR FOR
- SELECT u_saletaskmx_pack.pid,
- u_saletaskmx_pack.mtrlid,
- u_saletaskmx_pack.bqty,
- u_saletaskmx_pack.status,
- u_saletaskmx_pack.woodcode,
- u_saletaskmx_pack.pcode,
- u_saletaskmx_pack.mtrlcuscode,
- u_mtrldef.mtrlcode,
- u_mtrldef.unit,
- u_SaleTask.CusID
- FROM u_saletaskmx_pack INNER JOIN
- u_mtrldef ON u_saletaskmx_pack.mtrlid = u_mtrldef.mtrlid INNER JOIN
- u_SaleTask ON u_saletaskmx_pack.scid = u_SaleTask.scid AND
- u_saletaskmx_pack.taskid = u_SaleTask.TaskID
- WHERE u_saletaskmx_pack.scid = :arg_scid AND
- u_saletaskmx_pack.taskid = :arg_taskid AND
- u_saletaskmx_pack.printid = :arg_printid
- ORDER BY u_saletaskmx_pack.pid
- Using commit_transaction;
-
- OPEN cur_pack;
-
- FETCH cur_pack Into :ll_pid,:ll_mtrlid,:ld_bqty_pack,:ls_status,:ls_woodcode,:ls_pcode,:ls_mtrlcuscode,:ls_mtrlcode,:ls_unit,:ll_cusid;
-
- DO WHILE SQLCA.SQLCode = 0
- ll_cnt++
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].mtrlcode = ls_mtrlcode
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].uqty = ld_bqty
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].unit = ls_unit
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].status = ls_status
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].woodcode = ls_woodcode
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].pcode = ls_pcode
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].mxdscrp = ls_mxdscrp
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].mtrlid = ll_mtrlid
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].orderid = arg_taskid
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].wrkgrpid = 0
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].ifrel = 1
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].printid = ll_cnt
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].rate = 1
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].dftsptid = ll_cusid
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].relprintid = arg_printid
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].rqdate = ldt_rqdate
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].plancode = ls_mtrlcuscode
- arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].relpid = ll_pid
-
- FETCH cur_pack Into :ll_pid,:ll_mtrlid,:ld_bqty_pack,:ls_status,:ls_woodcode,:ls_pcode,:ls_mtrlcuscode,:ls_mtrlcode,:ls_unit,:ll_cusid;
-
- LOOP
-
- CLOSE cur_pack;
-
- END IF
-
- IF uo_rqbuy.Save(arg_s_rqbuy,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.audit(ll_scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.audit_2(ll_scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- UPDATE u_saletaskmx
- SET ddflag = 1,
- dddate = getdate(),
- ddemp = :publ_operator
- WHERE ddflag = 0
- AND scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',更新订单明细调度审核标记失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
- ELSE
-
- IF uo_option_autocreate_buy_cp = 1 THEN
- Long ll_requestbuyid[]
- Long ll_i,i
- i = 1
- DECLARE cur_rqbuy CURSOR FOR
- SELECT distinct u_requestbuy.requestbuyid
- FROM u_requestbuymx,u_requestbuy
- WHERE u_requestbuymx.requestbuyid = u_requestbuy.requestbuyid
- AND u_requestbuy.scid = :ll_scid
- AND u_requestbuymx.orderid = :arg_taskid
- AND u_requestbuymx.relprintid = :arg_printid
- And u_requestbuy.billtype = 1 Using commit_transaction;
-
- OPEN cur_rqbuy;
- FETCH cur_rqbuy Into :ll_requestbuyid[i];
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_rqbuy Into :ll_requestbuyid[i];
- LOOP
-
- CLOSE cur_rqbuy;
-
- FOR ll_i = 1 To i - 1
- IF uo_rqbuy.caudit_2(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.caudit(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.del(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ELSE
- //检查申购单
- SELECT count(*) INTO :cnt
- FROM u_requestbuymx,u_requestbuy
- WHERE u_requestbuymx.requestbuyid = u_requestbuy.requestbuyid
- AND u_requestbuy.scid = :ll_scid
- AND u_requestbuymx.orderid = :arg_taskid
- AND u_requestbuymx.relprintid = :arg_printid
- And u_requestbuy.billtype = 1 Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',查询订单相关成品申购单失败'
- GOTO ext
- END IF
-
- IF cnt <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',订单已经存在相关成品申购单.不可以撤销审核'
- GOTO ext
- END IF
- END IF
-
- //检查生产计划
- String ls_ordercode,ls_ordercode_str
-
- cnt = 0
- DECLARE cur_order CURSOR FOR
- SELECT distinct u_Order_ml.ordercode
- FROM u_order_ml_mx INNER JOIN
- u_Order_ml ON u_order_ml_mx.scid = u_Order_ml.scid AND
- u_order_ml_mx.orderid = u_Order_ml.OrderID
- WHERE u_order_ml_mx.taskid = :arg_taskid
- AND u_order_ml_mx.taskmxid = :arg_printid
- AND u_order_ml_mx.scid = :arg_scid
- And (u_Order_ml.ordertype = 0 Or u_Order_ml.ordertype = 1) Using commit_transaction;
-
- OPEN cur_order;
- FETCH cur_order Into :ls_ordercode;
- DO WHILE commit_transaction.SQLCode = 0
- cnt++
- IF ls_ordercode_str = '' THEN
- ls_ordercode_str = ls_ordercode
- ELSE
- ls_ordercode_str = ls_ordercode_str + ',' + ls_ordercode
- END IF
- FETCH cur_order Into :ls_ordercode;
- LOOP
- CLOSE cur_order;
-
- IF cnt <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',订单已经存在相关生产计划:'+ls_ordercode_str+',不可以撤销审核'
- GOTO ext
- END IF
-
- DELETE FROM u_saletaskmx_pack
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',删除包件待申购列表失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
-
-
- UPDATE u_saletaskmx
- SET ddflag = 0,
- dddate = :ldt_null,
- ddemp = ''
- WHERE ddflag = 1
- AND scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',更新订单明细调度审核标记失败 ' + SQLCA.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_rqbuy
- RETURN rslt
- end function
- public function integer p_cprqplan (long arg_scid, long arg_taskid, long arg_printid, long arg_flag, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_stopflag,li_ddflag,li_ifbj
- Long ll_mtrlid,cnt,ll_typeid
- DateTime ldt_null
- SetNull(ldt_null)
- IF uo_option_dd_allto_pqty = -1000 THEN
- arg_msg = '选项:[335]销售订单及销售预测单自动调度全部调度到自制排产,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF arg_flag = 1 THEN
- SELECT typeid INTO :ll_typeid
- FROM u_saletask
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = '明细行:'+String(arg_printid)+',查询订单分类信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_typeid > 0 THEN
- SELECT ifbj INTO :li_ifbj
- FROM u_saletype
- Where typeid = :ll_typeid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = '明细行:'+String(arg_printid)+',查询订单分类是否补件信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- SELECT mtrlid,ddflag,stopflag
- INTO :ll_mtrlid,:li_ddflag,:li_stopflag
- FROM u_saletaskmx
- WHERE u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.taskid = :arg_taskid
- And u_saletaskmx.printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = '明细行:'+String(arg_printid)+',查询订单信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_stopflag = 1 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',查询订单明细已经终止,请检查'
- GOTO ext
- END IF
- Int li_ifautodd
- SELECT ifautodd INTO :li_ifautodd
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid ;
- IF commit_transaction.SQLCode <> 0 THEN
- ARG_MSG = '明细行:'+String(arg_printid)+',查询订单明细物料是否自动调度失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 1 THEN
- Int li_mtrlorigin
- String ls_mtrlcode
- Int li_iflljg
-
- SELECT mtrlorigin,mtrlcode,iflljg
- INTO :li_mtrlorigin,:ls_mtrlcode,:li_iflljg
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',查询订单产品['+ls_mtrlcode+']来源失败'
- GOTO ext
- END IF
-
- IF li_ifbj = 1 or uo_option_dd_allto_pqty = 1 THEN
- UPDATE u_saletaskmx
- SET pqty = :arg_qty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']排产数量失败'
- GOTO ext
- END IF
- ELSE
- IF li_mtrlorigin = 0 THEN
- IF li_iflljg = 0 THEN
- UPDATE u_saletaskmx
- SET pqty = :arg_qty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']排产数量失败'
- GOTO ext
- END IF
- ELSE
- UPDATE u_saletaskmx
- SET lqty = :arg_qty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']客户来料数量失败'
- GOTO ext
- END IF
- END IF
- ELSEIF li_mtrlorigin = 2 THEN
- UPDATE u_saletaskmx
- SET bqty = :arg_qty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']采购数量失败'
- GOTO ext
- END IF
- ELSEIF li_mtrlorigin = 3 THEN
- UPDATE u_saletaskmx
- SET wqty = :arg_qty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']外协数量失败'
- GOTO ext
- END IF
- ELSEIF li_mtrlorigin = 6 THEN
- UPDATE u_saletaskmx
- SET lqty = :arg_qty
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']客户来料数量失败'
- GOTO ext
- END IF
- END IF
- END IF
- ELSE
- IF li_ifautodd = 0 THEN
- IF li_ddflag = 1 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',该订单明细已经调度审核'
- GOTO ext
- END IF
- END IF
-
- UPDATE u_saletaskmx
- SET pqty = 0,bqty = 0,wqty = 0,lqty = 0
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']调度数量失败'
- GOTO ext
- END IF
- END IF
- IF li_ifautodd = 1 THEN
- IF arg_flag = 1 THEN
- IF ddpermit(arg_scid,arg_taskid,arg_printid,0,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF ddpermit(arg_scid,arg_taskid,arg_printid,1,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer addmxcmpl (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- datetime null_dt
- setnull(null_dt)
- IF uo_option_if_saleout = -1000 THEN
- rslt = 0
- arg_msg = '选项:[200]使用发货通知单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF arg_taskid <= 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_taskid,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_SaleQty,ls_consignedQty,ld_saleoutqty
- String ls_mtrlcode
- Int li_stopflag
- Decimal ld_upsalerate,ld_upsaleqty
- SELECT u_SaleTaskMx.SaleQty,
- u_SaleTaskMx.consignedQty,
- u_mtrldef.mtrlcode,
- u_SaleTaskMx.stopflag,
- u_mtrldef.upsalerate,
- u_mtrldef.upsaleqty
- INTO :ls_SaleQty,
- :ls_consignedQty,
- :ls_mtrlcode,
- :li_stopflag,
- :ld_upsalerate,
- :ld_upsaleqty
- FROM u_SaleTaskMx ,u_mtrldef
- WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.printid = :arg_printid ) AND
- ( u_saletaskmx.scid = :arg_scid) AND
- ( u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF li_stopflag = 1 THEN
- rslt = 0
- arg_msg = "产品编码["+ls_mtrlcode+"]对应的销售订单明细已终止,不能执行更新订单完成数操作"
- GOTO ext
- END IF
- IF arg_addqty < 0 THEN
- IF ls_consignedQty + arg_addqty < 0 THEN
- rslt = 0
- arg_msg = "产品:"+ls_mtrlcode+",的订单已完成数量只有"+String(ls_consignedQty,'#,##0.0#')+",不能退货"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- IF ls_SaleQty * (1+ ld_upsalerate) + ld_upsaleqty < ls_consignedQty + arg_addqty THEN
- rslt = 0
- arg_msg = "产品["+ls_mtrlcode+"]的未完成数量只有"+String(ls_SaleQty - ls_consignedQty,'#,##0.0#')+",可发货上限为:"+String(ls_SaleQty * (1+ ld_upsalerate) + ld_upsaleqty - ls_consignedQty,'#,##0.0#')+",不能发货"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- IF uo_option_if_saleout = 1 And arg_addqty < 0 THEN
- ld_saleoutqty = arg_addqty
- ELSE
- ld_saleoutqty = 0
- END IF
- UPDATE u_SaleTaskMx
- SET consignedQty = consignedQty +:arg_addqty,
- saleoutqty = saleoutqty + :ld_saleoutqty,
- accomplishdate = case when :ls_consignedQty + :arg_addqty >= :ls_SaleQty then getdate() else :null_dt end
- WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.printid = :arg_printid ) AND
- ( u_saletaskmx.scid = :arg_scid) AND
- ( u_SaleTaskMx.stopflag = 0 ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致销售订单完成数量操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer canceloapermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//相关OA公文被否决时调用
- Int rslt = 1,cnt = 0
- DateTime nulldate
- Decimal ls_consignedQty
- SetNull(nulldate)
- IF uo_option_saletask_secaudit = -1000 THEN
- arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_fore_secaudit = -1000 THEN
- arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask_fore = -1000 THEN
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- ARG_MSG = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- IF Not (uo_option_saletask_secaudit = 1 AND uo_option_if_oa_saletask = 1) THEN
- rslt = 0
- ARG_MSG = '系统设置没有使用OA审批流程,请联系管理员'
- GOTO ext
- END IF
- ELSE
- IF Not (uo_option_saletask_fore_secaudit = 1 AND uo_option_if_oa_saletask_fore = 1) THEN
- rslt = 0
- ARG_MSG = '系统设置没有使用OA审批流程,请联系管理员'
- GOTO ext
- END IF
- END IF
- IF Status <> 4 THEN
- rslt = 0
- ARG_MSG = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- and (ordertype = 0 or ordertype = 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
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_outware,u_outwaremx
- WHERE ( u_outware.billtype = 1 ) AND
- ( u_outware.scid = u_outwaremx.scid ) AND
- ( u_outware.outwareid = u_outwaremx.outwareid ) AND
- ( u_outwaremx.relid = :arg_taskid ) AND
- ( u_outware.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 cnt > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已经有相关出仓单据,不可以撤消审核"
- GOTO ext
- END IF
- SELECT sum(u_SaleTaskMx.consignedQty)
- INTO :ls_consignedQty
- FROM u_SaleTaskMx
- WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.stopflag = 0 ) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_consignedQty > 0 THEN
- rslt = 0
- ARG_MSG = "销售订单已有完成数量,不能撤审"
- GOTO ext
- END IF
- UPDATE u_SaleTask
- SET Status = 0,
- permit_emp = '',
- permit_date = :nulldate
- WHERE TaskID = :arg_taskid
- AND scid = :arg_scid
- AND status = 4
- USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //默认订单调度
- Long i
- FOR i = 1 TO it_mxbt
- IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,ARG_MSG,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer addmxcmpl_in (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF arg_taskid <= 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_taskid,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_SaleQty,ls_consignedQty
- String ls_mtrlcode
- SELECT u_SaleTaskMx_in.Qty,
- u_SaleTaskMx_in.consignedQty,
- u_mtrldef.mtrlcode
- INTO :ls_SaleQty,
- :ls_consignedQty,
- :ls_mtrlcode
- FROM u_SaleTaskMx_in ,u_mtrldef
- WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx_in.printid = :arg_printid ) and
- ( u_SaleTaskMx_in.mtrlid = u_mtrldef.mtrlid) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_SaleQty < ls_consignedQty+arg_addqty THEN
- rslt = 0
- ARG_MSG = "产品["+ls_mtrlcode+"]的未完成收料数量只有"+String(ls_SaleQty - ls_consignedQty,'#,##0.0#')+",不能出仓"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_SaleTaskMx_in
- SET consignedQty = consignedQty +:arg_addqty
- WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx_in.printid = :arg_printid ) and
- ( u_SaleTaskMx_in.scid = :arg_scid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品唯一码导致销售订单收料完成数量操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit and rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer acceptmx_in (long arg_mtrlid, long arg_printid, string arg_mtrlcode, long arg_storageid, decimal arg_qty, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, decimal arg_fprice, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF uo_option_change_status = '-1000' THEN
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_fprice) THEN arg_fprice = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_storageid) THEN arg_storageid = 0
- IF arg_mtrlid = 0 OR arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF arg_storageid = 0 THEN
- rslt = 0
- arg_msg = '请选择仓库,第'+String(arg_printid)+'行'
- GOTO ext
- END IF
- IF f_check_status(1,arg_status) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能'+uo_option_change_status+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
- GOTO ext
- END IF
- IF f_check_status(2,arg_woodcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能'+uo_option_change_woodcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
- GOTO ext
- END IF
- IF f_check_status(3,arg_pcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能'+uo_option_change_pcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
- GOTO ext
- END IF
- IF arg_fprice < 0 THEN
- rslt = 0
- arg_msg = "物料编码:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- FOR ls_i = 1 TO it_mxbt_in //合并重复项
- IF saletaskmx_in[ls_i].mtrlid = arg_mtrlid AND &
- saletaskmx_in[ls_i].status = arg_status AND &
- saletaskmx_in[ls_i].pcode = arg_pcode AND &
- saletaskmx_in[ls_i].plancode = arg_plancode AND &
- saletaskmx_in[ls_i].woodcode = arg_woodcode and &
- saletaskmx_in[ls_i].storageid = arg_storageid THEN
-
- saletaskmx_in[ls_i].qty = saletaskmx_in[ls_i].qty+arg_qty
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt_in++
- saletaskmx_in[it_mxbt_in].mtrlid = arg_mtrlid
- saletaskmx_in[it_mxbt_in].qty = arg_qty
- saletaskmx_in[it_mxbt_in].fprice = arg_fprice
- saletaskmx_in[it_mxbt_in].mxdscrp = arg_mxdscrp
- saletaskmx_in[it_mxbt_in].status = arg_status
- saletaskmx_in[it_mxbt_in].printid = arg_printid
- saletaskmx_in[it_mxbt_in].woodcode = arg_woodcode
- saletaskmx_in[it_mxbt_in].pcode = arg_pcode
- saletaskmx_in[it_mxbt_in].plancode = arg_plancode
- saletaskmx_in[it_mxbt_in].storageid = arg_storageid
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN rslt
- end function
- public function integer updateinwareqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Dec ld_SaleQty,ld_inwareQty
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- arg_msg = '订单未审核,不能更新!'
- rslt = 0
- GOTO ext
- END IF
- SELECT SaleQty,
- inwareQty
- INTO :ld_SaleQty,
- :ld_inwareQty
- FROM u_SaleTaskMx
- WHERE scid = :arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单明细已进仓数量失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ld_SaleQty - ld_inwareQty < arg_qty THEN
- arg_msg = '进仓数量大于未进仓数!'
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_SaleTaskMx
- SET inwareQty = inwareQty + :arg_qty
- WHERE scid = :arg_scid AND
- taskid = :arg_taskid 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 = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- ELSEIF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer trycmptask_fore (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//trycmplsaletask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1,cnt = 0,ll_status
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售预测单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- rslt = 0
- arg_msg = '不是销售预测单不能按进仓数来完成单据'
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 And status <> 3 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "销售预测单只有在进行状态下才可以执行设完成状态"
- ELSEIF status <> 5 THEN
- arg_msg = "销售预测单只有在完成状态下才可以执行撤消完成状态"
- ELSE
- arg_msg = "销售预测单不是在进行,已完成或已终止状态,不能操作"
- END IF
- GOTO ext
- END IF
- Decimal ls_zerook,ls_stopok
- Boolean if_finish,if_stop
- if_finish = True
- if_stop = True
- DECLARE zero_cur CURSOR FOR
- SELECT u_saletaskmx.saleqty - u_saletaskmx.inwareqty - u_saletaskmx.stopqty,
- u_saletaskmx.saleqty - u_saletaskmx.stopqty
- FROM u_saletaskmx
- WHERE ( u_saletaskmx.taskid = :arg_taskid )
- AND ( u_saletaskmx.scid = :arg_scid )
- Using commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur Into :ls_zerook,:ls_stopok;
- DO WHILE commit_transaction.SQLCode = 0
-
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = False
- END IF
-
- IF if_stop THEN
- IF ls_zerook > 0 THEN if_stop = False
- END IF
-
- FETCH zero_cur Into :ls_zerook,:ls_stopok;
- LOOP
- CLOSE zero_cur;
- IF if_stop THEN
- UPDATE u_saletask
- SET status = 3,
- accomplishdate = getdate(),
- stopemp = :publ_operator
- WHERE ( u_saletask.taskid = :arg_taskid )
- And u_saletask.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
-
- IF if_finish THEN
- UPDATE u_saletask
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_saletask.taskid = :arg_taskid )
- And u_saletask.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
-
- ELSEIF Not if_finish THEN
- UPDATE u_saletask
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_saletask.taskid = :arg_taskid )
- And u_saletask.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
-
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer uof_getpriceorder (long arg_cusid, long arg_mtrlid, ref string arg_pocode, ref string arg_typestr, ref string arg_msg);Int rslt = 1
- DateTime server_time
- Long ll_mtrltypeid_arr[],ll_cusareaid_arr[]
- String ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode
- Long ll_mtrltypeid,ll_cusareaid
- Long ll_parentid
- Long ll_cnt = 0,ll_cnt2 = 0
- Long ll_row
- String ls_pocode,ls_typestr
- SELECT mtrlsectype,zxmtrlmode,usermtrlmode
- INTO :ls_mtrlsectype,:ls_zxmtrlmode,:ls_usermtrlmode
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其他原因查询产品资料失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT Top 1 getdate() INTO :server_time FROM u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其他原因取服务器时间失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- server_time = DateTime(Date(String(server_time,'yyyy-mm-dd')),Time(0))
- //
- SELECT mtrltypeid INTO :ll_mtrltypeid
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询产品类型失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ll_cnt++
- ll_mtrltypeid_arr[ll_cnt] = ll_mtrltypeid
- SELECT parentid INTO :ll_parentid
- FROM u_mtrltype
- WHERE mtrltypeid = :ll_mtrltypeid
- AND parentid > 0 ;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- ll_mtrltypeid_arr[ll_cnt] = ll_parentid
- ll_mtrltypeid = ll_parentid
-
- SELECT parentid INTO :ll_parentid
- FROM u_mtrltype
- WHERE mtrltypeid = :ll_mtrltypeid
- AND parentid > 0 ;
- LOOP
- //
- //
- SELECT cusareaid INTO :ll_cusareaid
- FROM u_cust
- Where cusid = :arg_cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户区域失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ll_cnt2++
- ll_cusareaid_arr[ll_cnt2] = ll_cusareaid
- SELECT parentid INTO :ll_parentid
- FROM u_Cusarea
- WHERE CusareaID = :ll_cusareaid
- AND parentid > 0 ;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt2++
- ll_cusareaid_arr[ll_cnt2] = ll_parentid
- ll_cusareaid = ll_parentid
-
- SELECT parentid INTO :ll_parentid
- FROM u_Cusarea
- WHERE CusareaID = :ll_cusareaid
- AND parentid > 0 ;
- LOOP
- datastore ds_price
- ds_price = CREATE datastore
- ds_price.DataObject = 'ds_price_order_index'
- ds_price.SetTransObject(sqlca)
- ds_price.Retrieve(arg_mtrlid,ll_mtrltypeid_arr[],arg_cusid,ll_cusareaid_arr[],server_time,ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode,0)
- ll_row = ds_price.RowCount()
- IF ll_row = 0 THEN
- ls_pocode = ''
- ls_typestr = ''
- ELSE
- ls_pocode = ds_price.Object.pocode[ll_row]
- ls_typestr = ds_price.Object.typestr[ll_row]
- END IF
- ext:
- IF rslt = 0 THEN
- arg_pocode = ''
- arg_typestr = ''
- ELSE
- arg_pocode = ls_pocode
- arg_typestr = ls_typestr
- END IF
- RETURN rslt
- end function
- public function integer uof_add_plan (s_saletask_plan arg_s_plan, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt,ll_planid
- IF IsNull(arg_s_plan.planid) THEN arg_s_plan.planid = 0
- IF IsNull(arg_s_plan.scid) THEN arg_s_plan.scid = 0
- IF IsNull(arg_s_plan.taskid) THEN arg_s_plan.taskid = 0
- IF IsNull(arg_s_plan.planemp) THEN arg_s_plan.planemp = ''
- IF IsNull(arg_s_plan.plandscrp) THEN arg_s_plan.plandscrp = ''
- IF arg_s_plan.taskid = 0 THEN
- arg_msg = '不合理的销售订单唯一码'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_plan.planemp = '' THEN
- arg_msg = '请填写经手人'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_plan.plandscrp = '' THEN
- arg_msg = '请填写工作计划内容'
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_saletask
- WHERE scid = :arg_s_plan.scid
- AND taskid = :arg_s_plan.taskid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单信息失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '销售订单不存在,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_plan.planid = 0 THEN
- ll_planid = f_sys_scidentity(0,"u_saletask_plan","planid",arg_msg,TRUE,id_sqlca)
- IF ll_planid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_saletask_plan
- (planid,
- scid,
- taskid,
- planemp,
- plandate,
- plandscrp,
- opdate,
- opemp)
- VALUES (:ll_planid,
- :arg_s_plan.scid,
- :arg_s_plan.taskid,
- :arg_s_plan.planemp,
- :arg_s_plan.plandate,
- :arg_s_plan.plandscrp,
- getdate(),
- :arg_opemp) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '建立销售订单工作计划失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- UPDATE u_saletask_plan
- SET planemp = :arg_s_plan.planemp,
- plandate = :arg_s_plan.plandate,
- plandscrp = :arg_s_plan.plandscrp,
- moddate = getdate(),
- modemp = :arg_opemp
- Where planid = :arg_s_plan.planid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新销售订单工作计划失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- 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 uof_del_plan (long arg_planid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- String ls_opemp
- Int li_flag
- SELECT opemp,flag INTO :ls_opemp,:li_flag
- FROM u_saletask_plan
- Where planid = :arg_planid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询客户工作计划失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF NOT sys_power_issuper AND arg_opemp <> ls_opemp THEN
- arg_msg = '不是资料建立人或系统管理员,不能删除'
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- arg_msg = '工作计划已完成,不能删除'
- rslt = 0
- GOTO ext
- END IF
- DELETE FROM u_saletask_plan Where planid = :arg_planid 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 uof_finish_plan (long arg_planid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF IsNull(arg_planid) THEN arg_planid = 0
- IF arg_planid <= 0 THEN
- rslt = 0
- arg_msg = '错误的工作计划唯一码'
- GOTO ext
- END IF
- SELECT flag INTO :li_flag
- FROM u_saletask_plan
- Where planid = :arg_planid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工作计划信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- rslt = 0
- arg_msg = '工作计划已完成,不能重复完成,请检查'
- GOTO ext
- END IF
- UPDATE u_saletask_plan
- SET flag = 1
- Where planid = :arg_planid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新工作计划完成状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp2 (long arg_scid, long arg_taskid, 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 it_updatebegin OR it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待销售审核状态下不可用"
- GOTO ext
- END IF
- IF status = 1 THEN
- rslt = 0
- arG_MSG = "只有在生产审核前才可以使用"
- GOTO ext
- END IF
- UPDATE u_saletask
- SET dscrp2 = dscrp2+' '+:arg_newdescppart
- Where u_saletask.taskid = :arg_taskid 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
- dscrp2 = dscrp2+' '+arg_newdescppart
- 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 addmxsaleout (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF arg_taskid <= 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_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- rslt = 0
- ARG_MSG = "销售订单只有在进行状态下才可以执行发货通知或取消发货通知"
- GOTO ext
- END IF
- Decimal ls_SaleQty,ld_saleoutqty
- String ls_mtrlcode
- decimal ld_upsalerate,ld_upsaleqty
- SELECT u_SaleTaskMx.SaleQty,
- u_SaleTaskMx.saleoutqty,
- u_mtrldef.mtrlcode,
- u_mtrldef.upsalerate,
- u_mtrldef.upsaleqty
- INTO :ls_SaleQty,
- :ld_saleoutqty,
- :ls_mtrlcode,
- :ld_upsalerate,
- :ld_upsaleqty
- FROM u_SaleTaskMx ,u_mtrldef
- WHERE ( u_SaleTaskMx.scid = :arg_scid ) AND
- ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.printid = :arg_printid ) AND
- ( u_SaleTaskMx.stopflag = 0 ) AND
- ( u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid) USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_SaleQty * (1 + ld_upsalerate) + ld_upsaleqty < ld_saleoutqty + arg_addqty THEN
- rslt = 0
- ARG_MSG = "产品["+ls_mtrlcode+"]的未通知发货数量只有"+String(ls_SaleQty - ld_saleoutqty,'#,##0.0#')+",上限:"+string(ls_SaleQty * (1 + ld_upsalerate) + ld_upsaleqty - ld_saleoutqty,'#,##0.0#')+",不能下单"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_SaleTaskMx
- SET saleoutqty = saleoutqty +:arg_addqty
- WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
- ( u_SaleTaskMx.printid = :arg_printid ) AND
- ( u_saletaskmx.scid = :arg_scid) AND
- ( u_SaleTaskMx.stopflag = 0 ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品唯一码导致销售订单通知发货数量操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer stopsaletask_cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- datetime ld_nulldt
- setnull(ld_nulldt)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 3 THEN
- rslt = 0
- ARG_MSG = "订单只有在终止状态才可以执行取消终止,请核对"
- GOTO ext
- END IF
- //IF sys_option_if_OA = 1 AND audit_buildtype = 0 THEN
- // IF f_check_if_oaflow(arg_scid,arg_taskid,6,ARG_MSG ) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- UPDATE u_SaleTask
- SET Status = 1,
- accomplishdate = :ld_nulldt,
- stopemp = '',
- stopreason = ''
- WHERE TaskID = :arg_taskid
- AND scid = :arg_scid
- AND Status = 3 USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致终止销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "正在终止销售订单,请稍后查询"
- 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 stopqty (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- DateTime null_dt
- DateTime server_datetime
- String ls_stopemp
- Decimal ld_saleqty,ld_saleoutqty,ld_consignedQty,ld_noauditqty
- Decimal ld_enprice,ld_rebate,ld_stopamt
- Decimal ld_stopqty_ori,ld_stopamt_ori
- Long ll_mtrlid
- Long ll_assignid,j
- Decimal ld_assignqty,ld_qty_cancel,ld_qty
- String ls_status,ls_woodcode,ls_pcode
- Int li_outtype,li_ifpackpro
- s_mtrlcfg_expr s_pz[]
- Long it_mxt,cnt
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
- Int li_ifover[],li_dipztype[]
- Decimal ld_Sonscale[],ld_Sonscale_fm[]
- Long ll_SonMtrlid[]
- Long ll_l,ll_j
- Decimal ld_stopqty_this = 0
- Long ll_pid
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- datastore ds_fp_del
- ds_fp_del = Create datastore
- ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
- ds_fp_del.SetTransObject(commit_transaction)
- datastore ds_fp_del_pack
- ds_fp_del_pack = Create datastore
- ds_fp_del_pack.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_pack'
- ds_fp_del_pack.SetTransObject(commit_transaction)
- If uo_option_m_msttake = -1000 Then
- arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_saletask_stopqty_type = -1000 Then
- arg_msg = '选项:[404]销售订单终止数量录入方式,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- 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
- Select u_SaleTaskMx.SaleQty,
- u_SaleTaskMx.saleoutqty,
- u_SaleTaskMx.consignedQty,
- isnull(uv_outware_sale_noaudit_qty.qty,0),
- u_SaleTaskMx.enprice,
- u_SaleTaskMx.rebate,
- u_SaleTaskMx.stopqty,
- u_mtrldef.outtype,
- u_mtrldef.ifpackpro,
- u_SaleTaskMx.mtrlid,
- u_SaleTaskMx.status,
- u_SaleTaskMx.woodcode,
- u_SaleTaskMx.pcode
- Into :ld_saleqty,
- :ld_saleoutqty,
- :ld_consignedQty,
- :ld_noauditqty,
- :ld_enprice,
- :ld_rebate,
- :ld_stopqty_ori,
- :li_outtype,
- :li_ifpackpro,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode
- From u_SaleTaskMx Inner JOIN
- u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid LEFT Outer JOIN
- uv_outware_sale_noaudit_qty ON
- u_SaleTaskMx.scid = uv_outware_sale_noaudit_qty.scid And
- u_SaleTaskMx.TaskID = uv_outware_sale_noaudit_qty.relid And
- u_SaleTaskMx.printid = uv_outware_sale_noaudit_qty.relprintid
- Where u_SaleTaskMx.scid = :arg_scid
- And u_SaleTaskMx.TaskID = :arg_taskid
- And u_SaleTaskMx.printid = :arg_printid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询物料'+arg_mtrlcode+'可终止数失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- If IsNull(arg_stopqty) Then arg_stopqty = 0
- //如果 arg_stopqty 代表的是本次终止数量, 需要把原终止数加上,得出订单明细总终止数
- //计算本次终止数,保存到终止数量记录表中
- If uo_option_saletask_stopqty_type = 1 Then
- ld_stopqty_this = arg_stopqty
-
- arg_stopqty = arg_stopqty + ld_stopqty_ori
-
- Else
- //如果arg_stopqty 代表总终止数, 本次终止数 = 总终止数 - 原终止数
- ld_stopqty_this = arg_stopqty - ld_stopqty_ori
-
- End If
- 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_taskid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If status <> 1 And status <> 5 And status <> 3 Then
- arg_msg = '订单只能在进行状态或自动完成状态才能操作'
- rslt = 0
- Goto ext
- End If
- If arg_stopqty > ld_saleqty - ld_consignedQty - ld_noauditqty Then
- arg_msg = '明细物料'+arg_mtrlcode+'未开发货单数只有:'+String(ld_saleqty - ld_consignedQty - ld_noauditqty,'#,##0.##########')+',不能终止:'+String(arg_stopqty,'#,##0.##########')
- rslt = 0
- Goto ext
- End If
- If arg_stopqty > ld_saleqty - ld_saleoutqty Then
- arg_msg = '明细物料'+arg_mtrlcode+'未开发货通知单数只有:'+String(ld_saleqty - ld_saleoutqty,'#,##0.##########')+',不能终止:'+String(arg_stopqty,'#,##0.##########')
- rslt = 0
- Goto ext
- End If
- If arg_stopqty > 0 Then
- If Not ((li_outtype = 1 Or li_outtype = 2) And li_ifpackpro > 0) Then
- ds_fp_del.Retrieve(arg_scid,arg_taskid,arg_printid)
- ld_qty = arg_stopqty
- For j = 1 To ds_fp_del.RowCount()
- ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
- ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
-
- If ld_qty = 0 Then Exit
- If ld_qty <= ld_assignqty Then
- ld_qty_cancel = ld_qty
- ld_qty = 0
- Else
- ld_qty_cancel = ld_assignqty
- ld_qty = ld_qty - ld_assignqty
- End If
-
- If uo_ma.uof_assign_del(ll_assignid,ld_qty_cancel,arg_msg,False) = 0 Then
- arg_msg = '删除库存分配失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
- Next
- Else
- If li_ifpackpro = 1 Or li_ifpackpro = 2 Then
- it_mxt = 1
-
- cnt = 0
- //查是否有换清单
- If li_ifpackpro = 2 Then
- Select count(*) Into :cnt From u_saletaskmx_pf
- Where scid = :arg_scid
- And taskid = :arg_taskid
- And printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询订单明细否有换包件失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
-
- If cnt > 0 Then
- Declare cur_pf_saletaskmx Cursor For
- Select u_saletaskmx_pf.SonMtrlid,
- u_saletaskmx_pf.status,
- u_saletaskmx_pf.woodcode,
- u_saletaskmx_pf.pcode,
- u_saletaskmx_pf.Sonscale,
- u_saletaskmx_pf.Sonscale_fm
- From u_saletaskmx_pf
- Where ( u_saletaskmx_pf.scid = :arg_scid )
- And ( u_saletaskmx_pf.taskid = :arg_taskid )
- And ( u_saletaskmx_pf.printid = :arg_printid );
- Open cur_pf_saletaskmx;
-
- Fetch cur_pf_saletaskmx Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
- Do While sqlca.SQLCode = 0
- it_mxt++
- Fetch cur_pf_saletaskmx Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
- Loop
- it_mxt = it_mxt - 1
- Close cur_pf_saletaskmx;
- Else
- Declare cur_pf Cursor For
- Select u_PrdPF.SonMtrlid,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_prdpf.Sonscale,
- 1
- From u_PrdPF,u_mtrl_pf,u_mtrldef
- Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- And ( u_PrdPF.mtrlid = :ll_mtrlid )
- And ( u_mtrl_pf.ifdi = 1 And :li_ifpackpro = 0
- Or u_mtrl_pf.ifdft = 1 And (:li_ifpackpro = 1 Or :li_ifpackpro = 2) And u_mtrldef.ifpack > 0)
- Order By u_PrdPF.printid;
-
- Open cur_pf;
-
- Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
- Do While sqlca.SQLCode = 0
- it_mxt++
- Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
- Loop
- it_mxt = it_mxt - 1
- Close cur_pf;
- End If
- Else
- f_checkpz(ls_status,s_pz[])
- it_mxt = UpperBound(s_pz)
-
- For ll_l = 1 To it_mxt
- ll_SonMtrlid[ll_l] = ll_mtrlid
- ls_pf_status[ll_l] = s_pz[ll_l].cfgname
- ls_pf_woodcode[ll_l] = ls_woodcode
- ls_pf_pcode[ll_l] = ls_pcode
- ld_Sonscale[ll_l] = Dec(s_pz[ll_l].qty)
- ld_Sonscale_fm[ll_l] = 1
- Next
- End If
-
- For ll_j = 1 To it_mxt
- ds_fp_del_pack.Retrieve(arg_scid,arg_taskid,arg_printid,ll_SonMtrlid[ll_j],ls_pf_status[ll_j],ls_pf_woodcode[ll_j],ls_pf_pcode[ll_j])
-
- ld_qty = arg_stopqty * ld_Sonscale[ll_j]/ld_Sonscale_fm[ll_j]
- For j = 1 To ds_fp_del_pack.RowCount()
- ll_assignid = ds_fp_del_pack.Object.u_mtrlware_assign_assignid[j]
- ld_assignqty = ds_fp_del_pack.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del_pack.Object.u_mtrlware_assign_outqty[j]
-
- If ld_qty = 0 Then Exit
- If ld_qty <= ld_assignqty Then
- ld_qty_cancel = ld_qty
- ld_qty = 0
- Else
- ld_qty_cancel = ld_assignqty
- ld_qty = ld_qty - ld_assignqty
- End If
-
- If uo_ma.uof_assign_del(ll_assignid,ld_qty_cancel,arg_msg,False) = 0 Then
- arg_msg = '删除库存分配失败,'+arg_msg
- rslt = 0
- Goto ext
- End If
- Next
-
- Next
-
- End If
-
- End If
- Update u_saletaskmx
- Set stopqty = :arg_stopqty,
- stopemp = :ls_stopemp,
- stopdate = :server_datetime,
- stopreason = :arg_stopreason
- Where scid = :arg_scid
- And taskid = :arg_taskid
- 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_option_m_msttake = 1 Then //使用多币种
- ld_stopamt = Round(ld_enprice * arg_stopqty * ld_rebate,2)
- ld_stopamt_ori = Round(ld_enprice * ld_stopqty_ori * ld_rebate,2)
- Else // 系统不使用多币种,转换为人民币
- ld_stopamt = Round(ld_enprice * mrate * arg_stopqty * ld_rebate,2)
- ld_stopamt_ori = Round(ld_enprice * mrate * ld_stopqty_ori * ld_rebate,2)
- End If
- Update u_saletask
- Set msttakeamt = msttakeamt + :ld_stopamt_ori - :ld_stopamt
- Where scid = :arg_scid
- And TaskID = :arg_taskid Using commit_transaction ;
-
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '更新订单单据金额失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
- If Kind <> 0 Then
- If trycmplsaletask(arg_scid,arg_taskid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- Else
- If trycmptask_fore(arg_scid,arg_taskid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- //记录终止操作记录(终止数,终止时间)
- If ld_stopqty_this <> 0 Then
- Select max(pid)
- Into :ll_pid
- From u_saletask_stoplog
- Where scid = :arg_scid
- And taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then ll_pid = 0
-
- if isnull(ll_pid) then ll_pid = 0
-
- ll_pid++
-
- Insert Into u_saletask_stoplog
- (scid,
- taskid,
- printid,
- pid,
- stopqty,
- stopemp,
- stopdate,
- stopreason)
- Values (:arg_scid,
- :arg_taskid,
- :arg_printid,
- :ll_pid,
- :ld_stopqty_this,
- :publ_operator,
- getdate(),
- :arg_stopreason) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '增加订单明细终止记录失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- End If
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction ;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using commit_transaction ;
- End If
- Destroy uo_ma
- Destroy ds_fp_del
- Destroy ds_fp_del_pack
- Return rslt
- end function
- public function integer add_wrkgrp_mxdscrp (long arg_scid, long arg_taskid, s_saletaskmx_wrkgrp_mxdscrp arg_s_mx, long arg_cnt, ref string arg_msg, boolean arg_ifcommit);//add_wrkgrp_mxdscrp(string arg_newdescppart)
- //0 fail 1 SUCCESS
- Int rslt = 1
- Long i
- IF it_updatebegin Or it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //IF status = 0 THEN
- // rslt = 0
- // arG_MSG = "待销售审核状态下不可用"
- // GOTO ext
- //END IF
- DELETE FROM u_saletaskmx_wrkgrp_mxdscrp
- WHERE scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致删除销售订单车间备注操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 To arg_cnt
- INSERT INTO u_saletaskmx_wrkgrp_mxdscrp
- (scid,
- taskid,
- printid,
- wrkgrpid,
- mxdscrp)
- VALUES
- (:arg_s_mx.scid[i],
- :arg_s_mx.taskid[i],
- :arg_s_mx.printid[i],
- :arg_s_mx.wrkgrpid[i],
- :arg_s_mx.mxdscrp[i]
- ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致新建销售订单车间备注操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- 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 add_relcode (long arg_scid, long arg_taskid, string arg_add_relcode, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
- //0 fail 1 SUCCESS
- Int rslt = 1
- arg_add_relcode = Trim(arg_add_relcode)
- IF it_updatebegin Or it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_add_relcode = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待销售审核状态下不可用"
- GOTO ext
- END IF
- //rtrim(relcode)+' '+
- UPDATE u_saletask
- SET relcode = :arg_add_relcode
- WHERE u_saletask.taskid = :arg_taskid
- 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
- relcode = relcode+' '+arg_add_relcode
- 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 acceptmx_item (long arg_printid, long arg_itemid, decimal arg_amt, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
- Long cnt,ll_i
- cnt = 0
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_itemid) THEN arg_itemid = 0
- IF IsNull(arg_amt) THEN arg_amt = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF arg_itemid = 0 Or arg_amt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_itemdef
- Where itemid = :arg_itemid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询收支项目是否存在失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '第'+String(arg_printid)+'行,收支项目不存在,请检查'
- GOTO ext
- END IF
- //合并重复项
- FOR ll_i = 1 To it_mxbt_item
- IF arg_itemid = saletask_itemmx[ll_i].itemid THEN
- saletask_itemmx[ll_i].amt = saletask_itemmx[ll_i].amt + arg_amt
- rslt = 1
- GOTO ext
- END IF
- NEXT
- it_mxbt_item++
- saletask_itemmx[it_mxbt_item].printid = arg_printid
- saletask_itemmx[it_mxbt_item].itemid = arg_itemid
- saletask_itemmx[it_mxbt_item].amt = arg_amt
- saletask_itemmx[it_mxbt_item].mxdscrp = arg_mxdscrp
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN rslt
- end function
- public function integer add_dscrpmx (long arg_scid, long arg_taskid, long arg_printid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);
- 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_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 4 and status <> 1 THEN
- rslt = 0
- arG_MSG = "非待生产审核状态或在进行状态下不可用"
- GOTO ext
- END IF
- UPDATE u_saletaskmx
- SET mxDSCRP = mxDSCRP+' '+:arg_newdescppart
- WHERE u_saletaskmx.taskid = :arg_taskid
- AND u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.printid = :arg_printid
- And assignqty = 0 Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加销售订单明细备注操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arG_MSG = "添加销售订单明细备注,更新操作:0 行,可能明细已有排产数,请检查"
- GOTO ext
- END IF
- ext:
- 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 finishtask (long arg_scid, long arg_taskid, integer arg_status, ref string arg_msg, boolean arg_ifcommit);//arg_status 5 - 自动完成; 6 - 手动完成
- Int rslt = 1
- Long cnt = 0
- Long ll_assignid,j,i
- Decimal ld_assignqty
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- datastore ds_fp_del
- ds_fp_del = Create datastore
- ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
- ds_fp_del.SetTransObject(commit_transaction)
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask_fore = -1000 THEN
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- arg_msg = "销售订单只有在进行状态才可以执行完成,请核对"
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_SaleTask
- SET status = :arg_status,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_SaleTask.TaskID = :arg_taskid ) AND
- ( u_SaleTask.scid = :arg_scid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致完成销售订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- ds_fp_del.Retrieve(arg_scid,arg_taskid,saletaskmx[i].printid)
- FOR j = 1 To ds_fp_del.RowCount()
- ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
- ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
-
- IF uo_ma.uof_assign_del(ll_assignid,ld_assignqty,arg_msg,False) = 0 THEN
- arg_msg = '删除库存分配失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_ma
- Destroy ds_fp_del
- p_reset()
- Return (rslt)
- end function
- public function integer finishtask_cancel (long arg_scid, long arg_taskid, integer arg_status, ref string arg_msg, boolean arg_ifcommit);//arg_status 5 - 自动完成; 6 - 手动完成
- Int rslt = 1
- Long cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask_fore = -1000 THEN
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- if arg_status = 5 then
- IF Status <> 5 THEN
- rslt = 0
- arg_msg = "销售订单只有在完成状态才可以执行取消完成,请核对"
- GOTO ext
- END IF
- elseif arg_status = 6 then
- IF Status <> 6 THEN
- rslt = 0
- arg_msg = "销售订单只有在手动完成状态才可以执行取消手动完成,请核对"
- GOTO ext
- END IF
- end if
- IF ctmint > 0 THEN
- rslt = 0
- arg_msg = '销售订单已被截数,操作取消'
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_saletaskmx
- WHERE u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.taskid = :arg_taskid
- AND u_saletaskmx.saleqty > u_saletaskmx.consignedQty
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询订单是否自动完成失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '订单不是手动完成,操作取消'
- rslt = 0
- GOTO ext
- END IF
- //IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
- // IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- UPDATE u_SaleTask
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_SaleTask.TaskID = :arg_taskid ) AND
- ( u_SaleTask.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:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer uof_disuse (long arg_scid, long arg_taskid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_disuseid
- //arg_disusetype 0 - 修改, 1-删除
- Select max(disuseid) Into :ll_disuseid
- From u_SaleTask_disuse
- Where scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode = -1 Then
- rslt = 0
- arg_msg = '获取销售订单废弃单序号失败,'+ commit_transaction.SQLErrText
- Goto ext
- ElseIf commit_transaction.SQLCode = 100 Then
- ll_disuseid = 0
- End If
- if isnull(ll_disuseid) then ll_disuseid = 0
- ll_disuseid++
- Insert Into u_SaleTask_disuse
- (scid, TaskID, disuseid, disusetype, TaskCode, kind, CusID, taskdate, requiredate,
- accomplishdate, finishemp, Status, opemp, modemp, moddate, Assign_Emp,
- Permit_Emp, Permit_date, Dscrp, opdate, stopemp, ctmint, freight, printnum,
- banktypeid, damt, moneyid, relcode, paytype, dscrp2, freight_tele, cus_address,
- cus_tele, cus_fax, otheramt, mrate, upname, p_Auditingdate, p_Auditingrep,
- msttakeamt, takeamt, takedamt, typeid, rel_rep, level, sendTime, sendUser,
- fiebrelcode, mxrowcount, cuscode, cusname, moneyname, banktypename, typename,
- disuseemp,disusedate)
- Select u_SaleTask.scid, u_SaleTask.TaskID, :ll_disuseid, :arg_disusetype,u_SaleTask.TaskCode, u_SaleTask.kind,
- u_SaleTask.CusID, u_SaleTask.taskdate, u_SaleTask.requiredate,
- u_SaleTask.accomplishdate, u_SaleTask.finishemp, u_SaleTask.Status,
- u_SaleTask.opemp, u_SaleTask.modemp, u_SaleTask.moddate,
- u_SaleTask.Assign_Emp, u_SaleTask.Permit_Emp, u_SaleTask.Permit_date,
- u_SaleTask.Dscrp, u_SaleTask.opdate, u_SaleTask.stopemp, u_SaleTask.ctmint,
- u_SaleTask.freight, u_SaleTask.printnum, u_SaleTask.banktypeid, u_SaleTask.damt,
- u_SaleTask.moneyid, u_SaleTask.relcode, u_SaleTask.paytype, u_SaleTask.dscrp2,
- u_SaleTask.freight_tele, u_SaleTask.cus_address, u_SaleTask.cus_tele,
- u_SaleTask.cus_fax, u_SaleTask.otheramt, u_SaleTask.mrate, u_SaleTask.upname,
- u_SaleTask.p_Auditingdate, u_SaleTask.p_Auditingrep, u_SaleTask.msttakeamt,
- u_SaleTask.takeamt, u_SaleTask.takedamt, u_SaleTask.typeid, u_SaleTask.rel_rep,
- u_SaleTask.level, u_SaleTask.sendTime, u_SaleTask.sendUser,
- u_SaleTask.fiebrelcode, u_SaleTask.mxrowcount, u_cust.cuscode, u_cust.name,
- cw_currency.name , cw_banktype.banktypename,
- u_saletype.typename,
- :publ_operator,getdate()
- From u_SaleTask LEFT Outer JOIN
- cw_banktype ON
- u_SaleTask.banktypeid = cw_banktype.banktypeid LEFT Outer JOIN
- u_saletype ON u_SaleTask.typeid = u_saletype.typeid LEFT Outer JOIN
- u_cust ON u_SaleTask.CusID = u_cust.cusid LEFT Outer JOIN
- cw_currency ON u_SaleTask.moneyid = cw_currency.moneyid
- Where u_SaleTask.scid = :arg_scid
- And u_SaleTask.taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入销售订单废弃单失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- Insert Into u_SaleTaskMx_disuse
- (scid, TaskID, disuseid, printid, MtrlID, SaleQty, PlPrice, fprice, rebate, Price,
- consignedQty, AssignQty, mxdscrp, status, pcode, woodcode, mtrlcuscode,
- mtrlchangecode, enprice, ctmint, outtype, dftsaleprice, bqty, pqty, stopflag, stopemp,
- stopdate, stopreason, bjflag, bjdate, bjemp, wqty, auditemp, auditflag, auditdate, lqty,
- finishbqty, dddate, ddemp, ddflag, mqty, requiredate, pfcode, mxdscrp2, scidprice,
- inwareqty, outtypestr, changedscrp, quoteid, quotecode, quoteprintid, pricetype,
- capacity, nprice, saleoutqty, stopqty, fpqty, poid, taxrate, perfinishdate, addqty,
- mtrlcode, mtrlname)
- Select u_SaleTaskMx.scid, u_SaleTaskMx.TaskID, :ll_disuseid,u_SaleTaskMx.printid,
- u_SaleTaskMx.MtrlID, u_SaleTaskMx.SaleQty, u_SaleTaskMx.PlPrice,
- u_SaleTaskMx.fprice, u_SaleTaskMx.rebate, u_SaleTaskMx.Price,
- u_SaleTaskMx.consignedQty, u_SaleTaskMx.AssignQty, u_SaleTaskMx.mxdscrp,
- u_SaleTaskMx.status, u_SaleTaskMx.pcode, u_SaleTaskMx.woodcode,
- u_SaleTaskMx.mtrlcuscode, u_SaleTaskMx.mtrlchangecode, u_SaleTaskMx.enprice,
- u_SaleTaskMx.ctmint, u_SaleTaskMx.outtype, u_SaleTaskMx.dftsaleprice,
- u_SaleTaskMx.bqty, u_SaleTaskMx.pqty, u_SaleTaskMx.stopflag,
- u_SaleTaskMx.stopemp, u_SaleTaskMx.stopdate, u_SaleTaskMx.stopreason,
- u_SaleTaskMx.bjflag, u_SaleTaskMx.bjdate, u_SaleTaskMx.bjemp,
- u_SaleTaskMx.wqty, u_SaleTaskMx.auditemp, u_SaleTaskMx.auditflag,
- u_SaleTaskMx.auditdate, u_SaleTaskMx.lqty, u_SaleTaskMx.finishbqty,
- u_SaleTaskMx.dddate, u_SaleTaskMx.ddemp, u_SaleTaskMx.ddflag,
- u_SaleTaskMx.mqty, u_SaleTaskMx.requiredate, u_SaleTaskMx.pfcode,
- u_SaleTaskMx.mxdscrp2, u_SaleTaskMx.scidprice, u_SaleTaskMx.inwareqty,
- u_SaleTaskMx.outtypestr, u_SaleTaskMx.changedscrp, u_SaleTaskMx.quoteid,
- u_SaleTaskMx.quotecode, u_SaleTaskMx.quoteprintid, u_SaleTaskMx.pricetype,
- u_SaleTaskMx.capacity, u_SaleTaskMx.nprice, u_SaleTaskMx.saleoutqty,
- u_SaleTaskMx.stopqty, u_SaleTaskMx.fpqty, u_SaleTaskMx.poid,
- u_SaleTaskMx.taxrate, u_SaleTaskMx.perfinishdate, u_SaleTaskMx.addqty,
- u_mtrldef.mtrlcode, u_mtrldef.mtrlname
- From u_SaleTaskMx LEFT Outer JOIN
- u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid
- Where u_SaleTaskMx.scid = :arg_scid
- And u_SaleTaskMx.taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入销售订单废弃单明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- Insert Into u_saletask_itemmx_disuse
- (scid, taskid, disuseid, printid, itemid, amt, mxdscrp, itemcode, itemname, itemtype)
- Select u_saletask_itemmx.scid, u_saletask_itemmx.taskid, :ll_disuseid,u_saletask_itemmx.printid,
- u_saletask_itemmx.itemid, u_saletask_itemmx.amt, u_saletask_itemmx.mxdscrp,
- u_itemdef.itemcode, u_itemdef.itemname, u_itemdef.itemtype
- From u_saletask_itemmx LEFT Outer JOIN
- u_itemdef ON u_saletask_itemmx.itemid = u_itemdef.itemid
- Where u_saletask_itemmx.scid = :arg_scid
- And u_saletask_itemmx.taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入销售订单废弃单费用明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using commit_transaction;
- End If
- Return rslt
- end function
- public function integer uof_updatesaleoutcodestr (long arg_scid, long arg_taskid, long arg_printid, boolean arg_ifcommit, ref string arg_msg);//uof_UpdateSaleOutCodeStr
- Int rslt = 1
- String ls_SaleOutCodeStr
- //查找单号
- Long i, ll_rowcnt
- datastore ds
- ds = Create datastore
- ds.DataObject = "ds_saletask_saleoutcodestr"
- ds.SetTransObject(sqlca)
- ll_rowcnt = ds.Retrieve(arg_scid, arg_taskid, arg_printid)
- FOR i = 1 To ll_rowcnt
- ls_SaleOutCodeStr = ds.Object.u_saleout_taskcode[i] + ","
- NEXT
- IF ls_SaleOutCodeStr <> "" THEN
- ls_SaleOutCodeStr = Left(ls_SaleOutCodeStr, Len(ls_SaleOutCodeStr) - 1)
- END IF
- UPDATE u_saletaskmx
- SET SaleOutCodeStr = :ls_SaleOutCodeStr
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新销售订单已开未发货单发货通知单号失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- Destroy ds
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp3 (long arg_scid, long arg_taskid, 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 it_updatebegin OR it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待销售审核状态下不可用"
- GOTO ext
- END IF
- IF status = 1 THEN
- rslt = 0
- arG_MSG = "只有在生产审核前才可以使用"
- GOTO ext
- END IF
- UPDATE u_saletask
- SET dscrp3 = dscrp3+' '+:arg_newdescppart
- Where u_saletask.taskid = :arg_taskid 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
- dscrp3 = dscrp3+' '+arg_newdescppart
- 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 stopsaletask (long arg_scid, long arg_taskid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_assignid,j,i
- Decimal ld_assignqty
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- datastore ds_fp_del
- ds_fp_del = Create datastore
- ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
- ds_fp_del.SetTransObject(commit_transaction)
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask = -1000 THEN
- arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_saletask_fore = -1000 THEN
- arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- arg_msg = "订单只有在进行状态才可以执行终止,请核对"
- GOTO ext
- END IF
- IF Kind <> 0 THEN
- IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_option_if_oa_saletask_fore = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,1324,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_SaleTask
- SET Status = 3,
- accomplishdate = getdate() ,
- stopemp = :publ_operator,
- stopreason = :arg_stopreason
- Where TaskID = :arg_taskid 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
- FOR i = 1 To it_mxbt
- ds_fp_del.Retrieve(arg_scid,arg_taskid,saletaskmx[i].printid)
- FOR j = 1 To ds_fp_del.RowCount()
- ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
- ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
-
- IF uo_ma.uof_assign_del(ll_assignid,ld_assignqty,arg_msg,False) = 0 THEN
- arg_msg = '删除库存分配失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- NEXT
- 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_ma
- Destroy ds_fp_del
- p_reset()
- Return (rslt)
- end function
- public function integer updatebqty (long arg_scid, long arg_taskid, long arg_printid, long arg_pid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Dec ld_SaleQty,ld_finishbQty,ld_bqty
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- arg_msg = '订单未审核,不能更新!'
- rslt = 0
- GOTO ext
- END IF
- IF arg_pid = 0 THEN
- SELECT bqty,
- finishbqty
- INTO :ld_bqty,
- :ld_finishbQty
- FROM u_SaleTaskMx
- WHERE scid = :arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单已申购数量失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_bqty - ld_finishbQty < arg_qty THEN
- arg_msg = '申购数量大于待申购数!'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_SaleTaskMx
- SET finishbqty = finishbqty + :arg_qty
- WHERE scid = :scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新订单申购数失败>>'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SELECT bqty,
- finishbqty
- INTO :ld_bqty,
- :ld_finishbQty
- FROM u_saletaskmx_pack
- WHERE scid = :arg_scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid AND
- pid = :arg_pid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询销售订单已申购数量失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_bqty - ld_finishbQty < arg_qty THEN
- arg_msg = '申购数量大于待申购数!'
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_saletaskmx_pack
- SET finishbqty = finishbqty + :arg_qty
- WHERE scid = :scid AND
- taskid = :arg_taskid AND
- printid = :arg_printid AND
- pid = :arg_pid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新订单申购数失败>>'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- ELSEIF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_cmp_pack (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, decimal arg_qty, ref string arg_msg);Int rslt = 1
- Long cnt
- Long ll_SonMtrlid[]
- String ls_status,ls_woodcode,ls_pcode,ls_mtrlcuscode
- Decimal ld_Sonscale[],ld_Sonscale_fm[]
- Int li_ifover[],li_dipztype[],li_ifpack[]
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
- int li_if_inherit[]
- int li_if_inherit_tmp
- Long it_mxt = 1
- Decimal ld_qty
- Long ll_i
- Long ll_statusflag,ll_woodcodeflag,ll_pcodeflag
- Int li_ifpackpro
- String ls_mtrlcode
- String ls_pf_mtrlcode[]
- s_mtrlcfg_expr s_mtrlcfg[]
- Long ll_cfg,ll_cnt_s_mtrlcfg
- Long ll_scid,ll_taskid,ll_printid
- Int li_ordertype_order
- Decimal ld_bqty
- SELECT ifpackpro,statusflag,woodcodeflag,pcodeflag,mtrlcode,if_inherit
- INTO :li_ifpackpro,:ll_statusflag,:ll_woodcodeflag,:ll_pcodeflag,:ls_mtrlcode,:li_if_inherit_tmp
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料是否包件产品失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
- //查询个性包件产品订单明细是否有换包件
- IF li_ifpackpro = 2 And arg_mtrlcuscode <> '' THEN
- SELECT ordertype INTO :li_ordertype_order
- From u_order_ml Where ordercode = :arg_mtrlcuscode Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- ELSE
- IF li_ordertype_order = 4 THEN
- SELECT u_order_ml_p.scid,u_order_ml_p.taskid,u_order_ml_p.taskmxid
- INTO :ll_scid,:ll_taskid,:ll_printid
- FROM u_order_ml,u_order_ml u_order_ml_p
- WHERE u_order_ml.ordercode = :arg_mtrlcuscode
- AND u_order_ml.scid = u_order_ml_p.scid
- AND u_order_ml.porderid = u_order_ml_p.orderid
- Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- ll_taskid = 0
- END IF
- ELSE
- SELECT scid,taskid,taskmxid
- INTO :ll_scid,:ll_taskid,:ll_printid
- FROM u_order_ml
- Where ordercode = :arg_mtrlcuscode Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- ll_taskid = 0
- END IF
- END IF
-
- IF ll_taskid = 0 THEN
- cnt = 0
- ELSE
- //查是否有换清单
- SELECT count(*) INTO :cnt FROM u_saletaskmx_pf
- WHERE scid = :ll_scid
- AND taskid = :ll_taskid
- And printid = :ll_printid Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- cnt = 0
- END IF
- END IF
- END IF
- END IF
-
- IF cnt > 0 THEN
- DECLARE cur_pf_saletaskmx CURSOR FOR
- SELECT u_saletaskmx_pf.SonMtrlid,
- u_saletaskmx_pf.Sonscale,
- u_saletaskmx_pf.Sonscale_fm,
- u_saletaskmx_pf.status,
- u_saletaskmx_pf.woodcode,
- u_saletaskmx_pf.pcode,
- 0,
- 0,
- u_mtrldef.ifpack,
- u_mtrldef.mtrlcode,
- u_mtrldef.if_inherit
- FROM u_saletaskmx_pf,u_mtrldef
- WHERE ( u_saletaskmx_pf.scid = :ll_scid )
- AND ( u_saletaskmx_pf.taskid = :ll_taskid )
- AND ( u_saletaskmx_pf.printid = :ll_printid )
- AND ( u_saletaskmx_pf.SonMtrlid = u_mtrldef.mtrlid )
- Using commit_transaction;
-
- OPEN cur_pf_saletaskmx;
- FETCH cur_pf_saletaskmx INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
- :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- FETCH cur_pf_saletaskmx INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
- :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
- LOOP
- it_mxt = it_mxt - 1
- CLOSE cur_pf_saletaskmx;
- ELSE
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.Sonscale,
- 1,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.ifover,
- u_prdpf.dipztype,
- u_mtrldef.ifpack,
- u_mtrldef.mtrlcode,
- u_mtrldef.if_inherit
- FROM u_PrdPF,u_mtrl_pf,u_mtrldef
- WHERE (u_PrdPF.mtrlid = :arg_mtrlid)
- AND ( u_mtrl_pf.ifdi = 1 AND :li_ifpackpro = 0
- OR u_mtrl_pf.ifdft = 1 AND (:li_ifpackpro = 1 OR :li_ifpackpro = 2) AND u_mtrldef.ifpack > 0)
- AND ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- AND ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- AND ( u_PrdPF.SonMtrlid = u_mtrldef.mtrlid )
- ORDER BY u_PrdPF.printid
- Using commit_transaction;
-
- OPEN cur_pf;
- FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
- :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
- :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
- LOOP
- it_mxt = it_mxt - 1
- CLOSE cur_pf;
- END IF
-
- IF it_mxt = 0 THEN
- IF li_ifpackpro = 0 THEN
- arg_msg = '该产品没有建立组装清单,不能计算'
- ELSE
- arg_msg = '该产品没有建立默认清单,不能计算'
- END IF
- rslt = 0
- GOTO ext
- END IF
- ELSE
- it_mxt = 0
- IF arg_status = '' THEN
- rslt = 1
- GOTO ext
- ELSE
- f_checkpz(arg_status,s_mtrlcfg)
- ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg)
- IF ll_cnt_s_mtrlcfg = 0 THEN
- rslt = 1
- GOTO ext
- ELSE
- FOR ll_cfg = 1 To ll_cnt_s_mtrlcfg
- it_mxt++
- ll_SonMtrlid[it_mxt] = arg_mtrlid
- ls_pf_status[it_mxt] = s_mtrlcfg[ll_cfg].cfgname
- ls_pf_woodcode[it_mxt] = arg_woodcode
- ls_pf_pcode[it_mxt] = arg_pcode
- ls_pf_mtrlcode[it_mxt] = ls_mtrlcode
- ld_Sonscale[it_mxt] = Dec(s_mtrlcfg[ll_cfg].qty)
- ld_Sonscale_fm[it_mxt] = 1
- li_ifover[it_mxt] = 0
- li_ifpack[it_mxt] = 0
- li_if_inherit[it_mxt] = li_if_inherit_tmp
- NEXT
- END IF
- END IF
- END IF
- FOR ll_i = 1 To it_mxt
-
- IF li_ifover[ll_i] = 1 THEN
- CHOOSE CASE li_dipztype[ll_i]
- CASE 0
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = ''
- CASE 1
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 2
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = arg_pcode
- CASE 3
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 4
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- CASE 5
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = arg_pcode
- CASE 6
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- END CHOOSE
- ELSE
- ls_status = ls_pf_status[ll_i]
- ls_woodcode = ls_pf_woodcode[ll_i]
- ls_pcode = ls_pf_pcode[ll_i]
- END IF
-
- // IF li_ifpackpro = 2 Or li_ifpackpro = 4 THEN
- if li_if_inherit[ll_i] = 1 then
- ls_mtrlcuscode = arg_mtrlcuscode
- ELSE
- ls_mtrlcuscode = ''
- END IF
-
- ld_bqty = arg_qty * ld_Sonscale[ll_i]/ld_Sonscale_fm[ll_i]
-
- INSERT INTO u_saletaskmx_pack
- (scid,
- taskid,
- printid,
- pid,
- mtrlid,
- bqty,
- status,
- woodcode,
- pcode,
- mtrlcuscode)
- VALUES (:arg_scid,
- :arg_taskid,
- :arg_printid,
- :ll_i,
- :ll_SonMtrlid[ll_i],
- :ld_bqty,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_mtrlcuscode) Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入包件待申购列表失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- END IF
- RETURN rslt
- end function
- public function integer uof_mod_requiredate (long arg_scid[], long arg_taskid[], long arg_printid[], datetime arg_olddate[], datetime arg_newdate[], ref string arg_msg, boolean arg_ifcommit);Int rslt
- rslt = 1
- Long cnt
- Long ll_pid,ll_i,ll_j
- DateTime server_dt
- Long ll_scid_arr[],ll_taskid_arr[]
- Long ll_itmx
- DateTime ld_requestdate_max
- 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
- FOR ll_i = 1 To UpperBound(arg_taskid)
- IF Date(arg_olddate[ll_i]) = Date(arg_newdate[ll_i]) THEN CONTINUE
-
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_saletaskmx_moddate_log
- WHERE scid = :arg_scid[ll_i]
- AND taskid = :arg_taskid[ll_i]
- And printid = :arg_printid[ll_i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询日期修改历史失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- ll_pid = 0
-
- IF cnt = 0 THEN
- ll_pid = 0
- ELSE
- SELECT max(pid) INTO :ll_pid
- FROM u_saletaskmx_moddate_log
- WHERE scid = :arg_scid[ll_i]
- AND taskid = :arg_taskid[ll_i]
- And printid = :arg_printid[ll_i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询预计完成日期修改日志失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
-
- ll_pid++
-
- INSERT INTO u_saletaskmx_moddate_log
- (scid,
- taskid,
- printid,
- pid,
- olddate,
- newdate,
- opdate,
- opemp)
- VALUES (:arg_scid[ll_i],
- :arg_taskid[ll_i],
- :arg_printid[ll_i],
- :ll_pid,
- :arg_olddate[ll_i],
- :arg_newdate[ll_i],
- :server_dt,
- :publ_operator) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细交货日期修改日志操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_SaleTaskMx
- SET requiredate = :arg_newdate[ll_i]
- WHERE taskid = :arg_taskid[ll_i]
- AND scid = :arg_scid[ll_i]
- And printid = :arg_printid[ll_i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新明细交货日期失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- FOR ll_i = 1 To UpperBound(arg_taskid)
- FOR ll_j = 1 To ll_itmx
- IF arg_taskid[ll_i] = ll_taskid_arr[ll_j] And arg_scid[ll_i] = ll_scid_arr[ll_j] THEN
- GOTO _next_task
- END IF
- NEXT
-
- ll_itmx++
- ll_scid_arr[ll_itmx] = arg_scid[ll_i]
- ll_taskid_arr[ll_itmx] = arg_taskid[ll_i]
-
- _next_task:
- NEXT
- FOR ll_i = 1 To ll_itmx
- SELECT max(requiredate)
- INTO :ld_requestdate_max
- FROM u_SaleTaskMx
- WHERE taskid = :ll_taskid_arr[ll_i]
- And scid = :ll_scid_arr[ll_i] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细最迟交货日期失败,scid = '+String(ll_scid_arr[ll_i]) + ',taskid = '+String(ll_taskid_arr[ll_i])+'~r~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_SaleTask
- SET requiredate = :ld_requestdate_max
- WHERE taskid = :ll_taskid_arr[ll_i]
- And scid = :ll_scid_arr[ll_i] Using commit_transaction;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新主表交货日期失败,scid = '+String(ll_scid_arr[ll_i]) + ',taskid = '+String(ll_taskid_arr[ll_i])+'~r~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- 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 acceptmxmx (s_saletaskmxmx arg_s_mx, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i,ll_i
- Decimal ld_dftsaleprice
- Decimal ld_planprice
- uo_cusprice uo_price
- uo_price = Create uo_cusprice
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF uo_option_change_status = '-1000' THEN
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_m_msttake = -1000 THEN
- arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_checkprice_native = -1000 THEN
- arg_msg = '选项:[056]销售价格按本位币限价,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_pricetype = -1000 THEN
- arg_msg = '选项:[154]启用价格分类,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_price_rmb = -1000 THEN
- arg_msg = '选项:[238]销售单价按人民币单价折算,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_s_mx.mtrlid) THEN arg_s_mx.mtrlid = 0
- IF IsNull(arg_s_mx.saleqty) THEN arg_s_mx.saleqty = 0
- IF IsNull(arg_s_mx.enprice) THEN arg_s_mx.enprice = 0
- IF IsNull(arg_s_mx.rebate) THEN arg_s_mx.rebate = 0
- IF IsNull(arg_s_mx.mxdscrp) THEN arg_s_mx.mxdscrp = ''
- IF IsNull(arg_s_mx.mtrlcode) THEN arg_s_mx.mtrlcode = ''
- IF IsNull(arg_s_mx.status) THEN arg_s_mx.status = ''
- IF IsNull(arg_s_mx.woodcode) THEN arg_s_mx.woodcode = ''
- IF IsNull(arg_s_mx.pcode) THEN arg_s_mx.pcode = ''
- IF IsNull(arg_s_mx.printid) THEN arg_s_mx.printid = 0
- IF IsNull(arg_s_mx.outtype) THEN arg_s_mx.outtype = 0
- IF IsNull(arg_s_mx.mtrlcuscode) THEN arg_s_mx.mtrlcuscode = ''
- IF IsNull(arg_s_mx.mxdscrp2) THEN arg_s_mx.mxdscrp2 = ''
- IF IsNull(arg_s_mx.nprice) THEN arg_s_mx.nprice = 0
- IF IsNull(arg_s_mx.poid) THEN arg_s_mx.poid = 0
- IF IsNull(arg_s_mx.taxrate) THEN arg_s_mx.taxrate = 0
- IF IsNull(arg_s_mx.addqty) THEN arg_s_mx.addqty = 0
- IF IsNull(arg_s_mx.priceformula) THEN arg_s_mx.priceformula = ''
- IF IsNull(arg_s_mx.net_weight) THEN arg_s_mx.net_weight = 0
- IF IsNull(arg_s_mx.gross_weight) THEN arg_s_mx.gross_weight = 0
- IF IsNull(arg_s_mx.cubage) THEN arg_s_mx.cubage = 0
- arg_s_mx.status = Trim(arg_s_mx.status)
- arg_s_mx.woodcode = Trim(arg_s_mx.woodcode)
- arg_s_mx.pcode = Trim(arg_s_mx.pcode)
- arg_s_mx.mtrlcuscode = Trim(arg_s_mx.mtrlcuscode)
- IF arg_s_mx.mtrlid = 0 Or arg_s_mx.saleqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF Kind > 0 THEN
- IF uo_option_sale_ifuse_negativeprice = 0 THEN
- IF arg_s_mx.enprice * arg_s_mx.rebate < 0 THEN
- rslt = 0
- arg_msg = "产品:" + String(arg_s_mx.mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- END IF
-
- IF arg_s_mx.rebate < 0 THEN
- arg_msg = '折扣错误,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_mx.taxrate < 0 THEN
- arg_msg = '不合理的税率'
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- String ls_pfcode
- ls_pfcode = '[' + arg_s_mx.status + ']' &
- + '[' + arg_s_mx.woodcode + ']' &
- + '[' + arg_s_mx.pcode + ']'
- IF Len(ls_pfcode) > 255 THEN
- ls_pfcode = Mid(ls_pfcode, 1, 251) + '...]'
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrl_pf
- Where pfcode = :ls_pfcode;
- IF sqlca.SQLCode <> 0 THEN cnt = 0
- IF cnt = 0 THEN
- ls_pfcode = f_get_dft_pf(arg_s_mx.mtrlid)
- END IF
- //检查物料id
- Int li_statusflag,li_woodcodeflag,li_pcodeflag
- Int li_isuse
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Int li_status_check,li_woodcode_check,li_pcode_check
- SELECT planprice,
- statusflag,
- capacity,
- woodcodeflag,
- pcodeflag,
- status_check,
- woodcode_check,
- pcode_check,
- capacity * capaparm,
- isuse
- INTO :ld_planprice,
- :li_statusflag,
- :ld_capacity,
- :li_woodcodeflag,
- :li_pcodeflag,
- :li_status_check,
- :li_woodcode_check,
- :li_pcode_check,
- :ld_capacity,
- :li_isuse
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_s_mx.mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,产品计划价"
- GOTO ext
- END IF
- IF Kind = 0 And li_isuse = 2 THEN
- arg_msg = '行:'+String(arg_s_mx.printid)+',物料是待停产物料,不能建立销售预测单'
- rslt = 0
- GOTO ext
- END IF
- IF li_statusflag = 2 THEN
- IF arg_s_mx.status = '' THEN
- arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_status + '字段使用组合配置,请输入'
- rslt = 0
- GOTO ext
- END IF
-
- ld_capacity = 0
- f_checkpz(arg_s_mx.status,s_pz[])
- FOR ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- SELECT capacity * capaparm
- INTO :ld_capacity_zj
- FROM u_mtrl_configure
- WHERE mtrlid = :arg_s_mx.mtrlid
- And Name = :ls_status_zj;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询子件 "+ls_status_zj+" 折算套数参数操作失败"
- GOTO ext
- END IF
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
- NEXT
- ELSEIF li_statusflag = 4 And li_status_check = 1 THEN
- IF arg_s_mx.status = '' THEN
- arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_statusflag = 1 Or li_statusflag = 0 THEN
- IF f_check_status(1,arg_s_mx.status) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_s_mx.mtrlcode+",内容:"+arg_s_mx.status
- GOTO ext
- END IF
- END IF
- IF li_woodcodeflag = 4 And li_woodcode_check = 1 THEN
- IF arg_s_mx.woodcode = '' THEN
- arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_woodcodeflag = 1 Or li_woodcodeflag = 0 THEN
- IF f_check_status(2,arg_s_mx.woodcode) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_s_mx.mtrlcode+",内容:"+arg_s_mx.woodcode
- GOTO ext
- END IF
- END IF
- IF li_pcodeflag = 4 And li_pcode_check = 1 THEN
- IF arg_s_mx.pcode = '' THEN
- arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_pcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_pcodeflag = 1 Or li_pcodeflag = 0 THEN
- IF f_check_status(3,arg_s_mx.pcode) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_s_mx.mtrlcode+",内容:"+arg_s_mx.pcode
- GOTO ext
- END IF
- END IF
- IF Kind > 0 THEN
- ld_dftsaleprice = 0
- f_get_defsaleprice(cusid,arg_s_mx.mtrlid,arg_s_mx.status,arg_s_mx.pcode,arg_s_mx.woodcode,moneyid,ld_dftsaleprice)
- END IF
- IF Kind = 1 THEN
-
- Int li_ifcheckprice,ll_pricelimittype
- // IF uo_option_if_pricetype = 1 And arg_s_mx.pricetype <> '' THEN
- SELECT pricelimittype
- INTO :ll_pricelimittype
- FROM u_saletype
- Where typeid = :typeid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF arg_s_mx.pricetype <> '' THEN
- SELECT ifcheckprice
- INTO :li_ifcheckprice
- FROM u_pricetype
- Where pricetype = :arg_s_mx.pricetype Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询价格分类是否属于赠送类型失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- li_ifcheckprice = 1
- END IF
-
- IF li_ifcheckprice = 2 THEN arg_s_mx.rebate = 0
-
- IF li_ifcheckprice = 1 And ll_pricelimittype = 1 THEN
- IF uo_option_checkprice_native = 1 THEN
- IF uo_price.uof_check_price_saletask (typeid,cusid,arg_s_mx.mtrlid,&
- arg_s_mx.mtrlcode,arg_s_mx.status,arg_s_mx.woodcode,arg_s_mx.pcode,&
- moneyid,scid,arg_s_mx.quoteid,arg_s_mx.quoteprintid,arg_s_mx.enprice * mrate * arg_s_mx.rebate,arg_s_mx.saleqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uo_price.uof_check_price_saletask (typeid,cusid,arg_s_mx.mtrlid,&
- arg_s_mx.mtrlcode,arg_s_mx.status,arg_s_mx.woodcode,arg_s_mx.pcode,&
- moneyid,scid,arg_s_mx.quoteid,arg_s_mx.quoteprintid,arg_s_mx.enprice * arg_s_mx.rebate,arg_s_mx.saleqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- // END IF
- END IF
- //写入内容
- it_mxbtmx++
- saletaskmxmx[it_mxbtmx].dftsaleprice = ld_dftsaleprice
- saletaskmxmx[it_mxbtmx].mtrlid = arg_s_mx.mtrlid
- saletaskmxmx[it_mxbtmx].saleqty = arg_s_mx.saleqty
- saletaskmxmx[it_mxbtmx].plprice = ld_planprice
- saletaskmxmx[it_mxbtmx].mxdscrp = arg_s_mx.mxdscrp
- saletaskmxmx[it_mxbtmx].mxdscrp2 = arg_s_mx.mxdscrp2
- saletaskmxmx[it_mxbtmx].mtrlcode = arg_s_mx.mtrlcode
- saletaskmxmx[it_mxbtmx].status = arg_s_mx.status
- saletaskmxmx[it_mxbtmx].printid = arg_s_mx.printid
- saletaskmxmx[it_mxbtmx].woodcode = arg_s_mx.woodcode
- saletaskmxmx[it_mxbtmx].pcode = arg_s_mx.pcode
- saletaskmxmx[it_mxbtmx].quotecode = arg_s_mx.quotecode
- saletaskmxmx[it_mxbtmx].quoteid = arg_s_mx.quoteid
- saletaskmxmx[it_mxbtmx].quoteprintid = arg_s_mx.quoteprintid
- saletaskmxmx[it_mxbtmx].mtrlcuscode = arg_s_mx.mtrlcuscode
- saletaskmxmx[it_mxbtmx].enprice = arg_s_mx.enprice
- saletaskmxmx[it_mxbtmx].rebate = arg_s_mx.rebate
- IF uo_option_price_rmb = 0 THEN
- saletaskmxmx[it_mxbtmx].fprice = arg_s_mx.enprice * mrate
-
- IF mrate = 0 THEN
- saletaskmxmx[it_mxbtmx].enacprice = saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate
- ELSE
- saletaskmxmx[it_mxbtmx].enacprice = saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate / mrate
- END IF
-
- saletaskmxmx[it_mxbtmx].price = saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate
-
- ELSE
- saletaskmxmx[it_mxbtmx].fprice = Round(arg_s_mx.enprice * mrate,2)
-
- IF mrate = 0 THEN
- saletaskmxmx[it_mxbtmx].enacprice = Round(saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate,2)
- ELSE
- saletaskmxmx[it_mxbtmx].enacprice = Round(saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate / mrate,2)
- END IF
-
- saletaskmxmx[it_mxbtmx].price = Round(saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate,2)
-
- END IF
- saletaskmxmx[it_mxbtmx].scidprice = arg_s_mx.scidprice
- saletaskmxmx[it_mxbtmx].outtypestr = arg_s_mx.outtypestr
- saletaskmxmx[it_mxbtmx].requiredate = arg_s_mx.requiredate
- saletaskmxmx[it_mxbtmx].pfcode = ls_pfcode
- saletaskmxmx[it_mxbtmx].pricetype = arg_s_mx.pricetype
- saletaskmxmx[it_mxbtmx].capacity = ld_capacity * arg_s_mx.saleqty
- saletaskmxmx[it_mxbtmx].nprice = arg_s_mx.nprice
- saletaskmxmx[it_mxbtmx].poid = arg_s_mx.poid //使用到的价格指令ID
- saletaskmxmx[it_mxbtmx].taxrate = arg_s_mx.taxrate
- saletaskmxmx[it_mxbtmx].addqty = arg_s_mx.addqty
- saletaskmxmx[it_mxbtmx].priceformula = arg_s_mx.priceformula
- IF uo_option_m_msttake = 1 THEN //使用多币种
- msttakeamt = msttakeamt + Round(arg_s_mx.enprice * arg_s_mx.saleqty * arg_s_mx.rebate,2)
- ELSE // 系统不使用多币种,转换为人民币
- msttakeamt = msttakeamt + Round(arg_s_mx.enprice * mrate * arg_s_mx.saleqty * arg_s_mx.rebate,2)
- END IF
- saletaskmxmx[it_mxbtmx].net_weight = arg_s_mx.net_weight
- saletaskmxmx[it_mxbtmx].gross_weight = arg_s_mx.gross_weight
- saletaskmxmx[it_mxbtmx].cubage = arg_s_mx.cubage
- //汇总到saletaskmx
- FOR ll_i = 1 To it_mxbt
- IF saletaskmx[ll_i].mtrlid = arg_s_mx.mtrlid And &
- saletaskmx[ll_i].status = arg_s_mx.status And &
- saletaskmx[ll_i].woodcode = arg_s_mx.woodcode And &
- saletaskmx[ll_i].pcode = arg_s_mx.pcode And &
- saletaskmx[ll_i].mtrlcuscode = arg_s_mx.mtrlcuscode And &
- saletaskmx[ll_i].enprice = arg_s_mx.enprice THEN
-
- saletaskmx[ll_i].saleqty = saletaskmx[ll_i].saleqty + arg_s_mx.saleqty
- saletaskmx[ll_i].capacity = saletaskmx[ll_i].capacity + ld_capacity * arg_s_mx.saleqty
- saletaskmx[ll_i].addqty = saletaskmx[ll_i].addqty + arg_s_mx.addqty
-
- IF arg_s_mx.requiredate < saletaskmx[ll_i].requiredate THEN
- saletaskmx[ll_i].requiredate = arg_s_mx.requiredate
- END IF
-
- saletaskmx[ll_i].dscrp = ''
- saletaskmx[ll_i].dscrp2 = ''
-
-
- GOTO ext
- END IF
- NEXT
- it_mxbt++
- saletaskmx[it_mxbt].dftsaleprice = ld_dftsaleprice
- saletaskmx[it_mxbt].mtrlid = arg_s_mx.mtrlid
- saletaskmx[it_mxbt].saleqty = arg_s_mx.saleqty
- saletaskmx[it_mxbt].plprice = ld_planprice
- saletaskmx[it_mxbt].dscrp = arg_s_mx.mxdscrp
- saletaskmx[it_mxbt].dscrp2 = arg_s_mx.mxdscrp2
- saletaskmx[it_mxbt].mtrlcode = arg_s_mx.mtrlcode
- saletaskmx[it_mxbt].status = arg_s_mx.status
- saletaskmx[it_mxbt].printid = it_mxbt
- saletaskmx[it_mxbt].woodcode = arg_s_mx.woodcode
- saletaskmx[it_mxbt].pcode = arg_s_mx.pcode
- saletaskmx[it_mxbt].mtrlcuscode = arg_s_mx.mtrlcuscode
- saletaskmx[it_mxbt].enprice = arg_s_mx.enprice
- saletaskmx[it_mxbt].rebate = arg_s_mx.rebate
- IF uo_option_price_rmb = 0 THEN
- saletaskmx[it_mxbt].fprice = arg_s_mx.enprice * mrate
-
- IF mrate = 0 THEN
- saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_s_mx.rebate
- ELSE
- saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_s_mx.rebate / mrate
- END IF
-
- saletaskmx[it_mxbt].acprice = saletaskmx[it_mxbt].fprice * arg_s_mx.rebate
-
- ELSE
- saletaskmx[it_mxbt].fprice = Round(arg_s_mx.enprice * mrate,2)
-
- IF mrate = 0 THEN
- saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_s_mx.rebate,2)
- ELSE
- saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_s_mx.rebate / mrate,2)
- END IF
-
- saletaskmx[it_mxbt].acprice = Round(saletaskmx[it_mxbt].fprice * arg_s_mx.rebate,2)
-
- END IF
- saletaskmx[it_mxbt].scidprice = arg_s_mx.scidprice
- saletaskmx[it_mxbt].outtype = arg_s_mx.outtypestr
- saletaskmx[it_mxbt].requiredate = arg_s_mx.requiredate
- saletaskmx[it_mxbt].pfcode = ls_pfcode
- saletaskmx[it_mxbt].quoteid = arg_s_mx.quoteid
- saletaskmx[it_mxbt].quotecode = arg_s_mx.quotecode
- saletaskmx[it_mxbt].quoteprintid = arg_s_mx.quoteprintid
- saletaskmx[it_mxbt].pricetype = arg_s_mx.pricetype
- saletaskmx[it_mxbt].capacity = ld_capacity * arg_s_mx.saleqty
- saletaskmx[it_mxbt].nprice = arg_s_mx.nprice
- saletaskmx[it_mxbt].poid = arg_s_mx.poid //使用到的价格指令ID
- saletaskmx[it_mxbt].dscrp_text = ''
- saletaskmx[it_mxbt].taxrate = arg_s_mx.taxrate
- saletaskmx[it_mxbt].addqty = arg_s_mx.addqty
- saletaskmx[it_mxbt].priceformula = arg_s_mx.priceformula
- saletaskmx[it_mxbt].sampleid = 0
- saletaskmx[it_mxbt].net_weight = arg_s_mx.net_weight
- saletaskmx[it_mxbt].gross_weight = arg_s_mx.gross_weight
- saletaskmx[it_mxbt].cubage = arg_s_mx.cubage
- saletaskmx[it_mxbt].fjcnt = arg_s_mx.fjcnt
- saletaskmx[it_mxbt].fjstr = arg_s_mx.fjstr
- ext:
- IF rslt = 0 THEN p_clearmx()
- Destroy uo_price
- RETURN rslt
- end function
- private function integer uof_p_check_date (ref string arg_msg);Int rslt = 1
- Long ll_i
- String ls_mtrlcode
- String ls_msg_pow
- DateTime serverdt
- IF Not f_power_ind(3990,ls_msg_pow) or sys_power_issuper THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :serverdt From u_user Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期,"+sqlca.SQLErrText
- GOTO ext
- END IF
- FOR ll_i = 1 To it_mxbt
- ls_mtrlcode = saletaskmx[ll_i].mtrlcode
- IF RelativeDate ( Date(serverdt), saletaskmx[ll_i].u_mtrldef_expday ) > Date(saletaskmx[ll_i].requiredate ) THEN
- arg_msg = '物料:'+ls_mtrlcode+',审核日期('+string(serverdt,'yyyy-mm-dd')+')+生产周期('+string(saletaskmx[ll_i].u_mtrldef_expday,'##0')+'天) > 订单明细交期('+string(saletaskmx[ll_i].requiredate,'yyyy-mm-dd')+'),请检查'
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer acceptmx (long arg_mtrlid, decimal arg_qty, decimal arg_enprice, decimal arg_rebate, string arg_dscrp, string arg_dscrp2, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, long arg_printid, string arg_outtype, datetime arg_requiredate, decimal arg_scidprice, long arg_quoteid, string arg_quotecode, long arg_quoteprintid, string arg_pricetype, decimal arg_nprice, long arg_poid, string arg_dscrp_text, decimal arg_taxrate, decimal arg_addqty, string arg_priceformula, long arg_sampleid, decimal arg_net_weight, decimal arg_gross_weight, decimal arg_cubage, long arg_fjcnt, string arg_fjstr, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i,ll_i
- Decimal ld_dftsaleprice
- Decimal ld_planprice
- Decimal ld_stoppqty,ld_stopsaleqty
- decimal lde_list_price, lde_porebate
- uo_cusprice uo_price
- uo_price = Create uo_cusprice
- If it_newbegin = False And it_updatebegin = False Then
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- Goto ext
- End If
- If uo_option_change_status = '-1000' Then
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_change_woodcode = '-1000' Then
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_change_pcode = '-1000' Then
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_m_msttake = -1000 Then
- arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_checkprice_native = -1000 Then
- arg_msg = '选项:[056]销售价格按本位币限价,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_if_pricetype = -1000 Then
- arg_msg = '选项:[154]启用价格分类,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If uo_option_price_rmb = -1000 Then
- arg_msg = '选项:[238]销售单价按人民币单价折算,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- //清除空值
- If IsNull(arg_mtrlid) Then arg_mtrlid = 0
- If IsNull(arg_qty) Then arg_qty = 0
- If IsNull(arg_enprice) Then arg_enprice = 0
- If IsNull(arg_rebate) Then arg_rebate = 0
- If IsNull(arg_dscrp) Then arg_dscrp = ''
- If IsNull(arg_mtrlcode) Then arg_mtrlcode = ''
- If IsNull(arg_status) Then arg_status = ''
- If IsNull(arg_woodcode) Then arg_woodcode = ''
- If IsNull(arg_pcode) Then arg_pcode = ''
- If IsNull(arg_printid) Then arg_printid = 0
- If IsNull(arg_outtype) Then arg_outtype = ''
- If IsNull(arg_mtrlcuscode) Then arg_mtrlcuscode = ''
- If IsNull(arg_dscrp2) Then arg_dscrp2 = ''
- If IsNull(arg_quoteid) Then arg_quoteid = 0
- If IsNull(arg_quotecode) Then arg_quotecode = ''
- If IsNull(arg_quoteprintid) Then arg_quoteprintid = 0
- If IsNull(arg_nprice) Then arg_nprice = 0
- If IsNull(arg_poid) Then arg_poid = 0
- If IsNull(arg_dscrp_text) Then arg_dscrp_text = ''
- If IsNull(arg_taxrate) Then arg_taxrate = 0
- If IsNull(arg_addqty) Then arg_addqty = 0
- If IsNull(arg_priceformula) Then arg_priceformula = ''
- If IsNull(arg_sampleid) Then arg_sampleid = 0
- If IsNull(arg_net_weight) Then arg_net_weight = 0
- If IsNull(arg_gross_weight) Then arg_gross_weight = 0
- If IsNull(arg_cubage) Then arg_cubage = 0
- arg_status = Trim(arg_status)
- arg_woodcode = Trim(arg_woodcode)
- arg_pcode = Trim(arg_pcode)
- arg_mtrlcuscode = Trim(arg_mtrlcuscode)
- If arg_mtrlid = 0 Or arg_qty = 0 Then
- rslt = 1
- Goto ext
- End If
- If Kind > 0 Then
- If uo_option_sale_ifuse_negativeprice = 0 Then
- If arg_enprice * arg_rebate < 0 Then
- rslt = 0
- arg_msg = "产品:" + String(arg_mtrlcode)+" 单价错误"
- Goto ext
- End If
- End If
-
- If arg_rebate < 0 Then
- arg_msg = '折扣错误,请检查'
- rslt = 0
- Goto ext
- End If
-
- If arg_taxrate < 0 Then
- arg_msg = '不合理的税率'
- rslt = 0
- Goto ext
- End If
-
- End If
- //检查物料id
- Int li_statusflag,li_woodcodeflag,li_pcodeflag
- Int li_isuse,li_ifpackpro
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Int li_status_check,li_woodcode_check,li_pcode_check
- Select planprice,
- statusflag,
- capacity,
- woodcodeflag,
- pcodeflag,
- status_check,
- woodcode_check,
- pcode_check,
- capacity * capaparm,
- isuse,
- ifpackpro
- Into :ld_planprice,
- :li_statusflag,
- :ld_capacity,
- :li_woodcodeflag,
- :li_pcodeflag,
- :li_status_check,
- :li_woodcode_check,
- :li_pcode_check,
- :ld_capacity,
- :li_isuse,
- :li_ifpackpro
- From u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询操作失败,产品计划价"
- Goto ext
- End If
- If Kind = 0 And li_isuse = 2 Then
- arg_msg = '行:'+String(arg_printid)+',物料是待停产物料,不能建立销售预测单'
- rslt = 0
- Goto ext
- End If
- String ls_pfcode
- If li_ifpackpro = 5 And taskid > 0 Then
- ls_pfcode = Trim(taskcode)+'.'+String(arg_printid)
- Else
- ls_pfcode = '[' + arg_status + ']' &
- + '[' + arg_woodcode + ']' &
- + '[' + arg_pcode + ']'
-
- If Len(ls_pfcode) > 255 Then
- ls_pfcode = Mid(ls_pfcode, 1, 251) + '...]'
- End If
-
- cnt = 0
- Select count(*) Into :cnt
- From u_mtrl_pf
- Where pfcode = :ls_pfcode
- mtrlid = :arg_mtrlid;
- If sqlca.SQLCode <> 0 Then cnt = 0
- If cnt = 0 Then
- ls_pfcode = f_get_dft_pf(arg_mtrlid)
- End If
- End If
- If li_statusflag = 2 Then
- If arg_status = '' Then
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_status + '字段使用组合配置,请输入'
- rslt = 0
- Goto ext
- End If
-
- ld_capacity = 0
- f_checkpz(arg_status,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- Select capacity * capaparm
- Into :ld_capacity_zj
- From u_mtrl_configure
- Where mtrlid = :arg_mtrlid
- And Name = :ls_status_zj Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",物料查询子件 "+ls_status_zj+" 折算套数参数操作失败"
- Goto ext
- End If
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
- Next
- ElseIf li_statusflag = 4 And li_status_check = 1 Then
- If arg_status = '' Then
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_status + '字段使用部件选配,请输入'
- rslt = 0
- Goto ext
- End If
- ElseIf li_statusflag = 1 Or li_statusflag = 0 Then
- If f_check_status(1,arg_status) = 0 Then
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",物料查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
- Goto ext
- End If
- End If
- If li_woodcodeflag = 4 And li_woodcode_check = 1 Then
- If arg_woodcode = '' Then
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
- rslt = 0
- Goto ext
- End If
- ElseIf li_woodcodeflag = 1 Or li_woodcodeflag = 0 Then
- If f_check_status(2,arg_woodcode) = 0 Then
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",物料查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
- Goto ext
- End If
- End If
- If li_pcodeflag = 4 And li_pcode_check = 1 Then
- If arg_pcode = '' Then
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_pcode + '字段使用部件选配,请输入'
- rslt = 0
- Goto ext
- End If
- ElseIf li_pcodeflag = 1 Or li_pcodeflag = 0 Then
- If f_check_status(3,arg_pcode) = 0 Then
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",物料查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
- Goto ext
- End If
- End If
- If Kind > 0 And Kind <> 4 Then
- ld_dftsaleprice = 0
- f_get_defsaleprice(cusid,arg_mtrlid,arg_status,arg_pcode,arg_woodcode,moneyid,ld_dftsaleprice)
- End If
- If Kind = 1 Then
-
- Int li_ifcheckprice,ll_pricelimittype
- // IF uo_option_if_pricetype = 1 And arg_pricetype <> '' THEN
- Select pricelimittype
- Into :ll_pricelimittype
- From u_saletype
- Where typeid = :typeid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
-
- If arg_pricetype <> '' Then
- Select ifcheckprice
- Into :li_ifcheckprice
- From u_pricetype
- Where pricetype = :arg_pricetype Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询价格分类是否属于赠送类型失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
- Else
- li_ifcheckprice = 1
- End If
-
- If li_ifcheckprice = 2 Then arg_rebate = 0
-
- If li_ifcheckprice = 1 And ll_pricelimittype = 1 Then
- If uo_option_checkprice_native = 1 Then
- If uo_price.uof_check_price_saletask (typeid,cusid,arg_mtrlid,&
- arg_mtrlcode,arg_status,arg_woodcode,arg_pcode,&
- moneyid,scid,arg_quoteid,arg_quoteprintid,arg_enprice * mrate * arg_rebate,arg_qty,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- Else
- If uo_price.uof_check_price_saletask (typeid,cusid,arg_mtrlid,&
- arg_mtrlcode,arg_status,arg_woodcode,arg_pcode,&
- moneyid,scid,arg_quoteid,arg_quoteprintid,arg_enprice * arg_rebate,arg_qty,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- // END IF
-
- // Select stoppqty,stopsaleqty,isuse
- // Into :ld_stoppqty,:ld_stopsaleqty,:li_isuse
- // From u_mtrldef
- // Where mtrlid = :arg_mtrlid Using commit_transaction;
- // If commit_transaction.SQLCode <> 0 Then
- // arg_msg = '查询:'+arg_mtrlcode+'资料属性失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // Goto ext
- // End If
- //
- // If li_isuse = 2 Then
- // If arg_qty > ld_stoppqty - ld_stopsaleqty Then
- // arg_msg = '产品:'+arg_mtrlcode+' 已待停产,待停产后可订数量为:'+String(ld_stoppqty,'#,##0.##########')+',待停产后已订数量为:'+String(ld_stopsaleqty,'#,##0.##########')+',不能再订:'+String(arg_qty,'#,##0.##########')
- // rslt = 0
- // Goto ext
- // End If
- // End If
-
- End If
- //使用价格策略的
- if arg_poid > 0 then
- //记录目标折扣
- SELECT top 1 u_sale_price_mx.price
- INTO :lde_list_price
- FROM u_sale_price_list INNER JOIN
- u_sale_price_mx ON
- u_sale_price_list.pricelistid = u_sale_price_mx.pricelistid
- WHERE (u_sale_price_list.dftflag = 1)
- AND (u_sale_price_mx.flag = 1)
- And (u_sale_price_mx.mtrlid = :arg_mtrlid)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- lde_list_price = 0
- END IF
- if lde_list_price > 0 then
- lde_porebate = round(arg_enprice / lde_list_price, 5)
- else
- lde_porebate = 0
- end if
- end if
- //FOR ls_i = 1 TO it_mxbt //合并重复项
- // IF saletaskmx[ls_i].mtrlid = arg_mtrlid AND &
- // saletaskmx[ls_i].status = arg_status AND &
- // saletaskmx[ls_i].pcode = arg_pcode AND &
- // saletaskmx[ls_i].mtrlcuscode = arg_mtrlcuscode AND &
- // saletaskmx[ls_i].woodcode = arg_woodcode AND &
- // saletaskmx[ls_i].outtype = arg_outtype THEN
- //
- // saletaskmx[ls_i].saleqty = saletaskmx[ls_i].saleqty+arg_qty
- // rslt = 1
- // GOTO ext
- // END IF
- //NEXT
- //写入内容
- it_mxbt++
- saletaskmx[it_mxbt].dftsaleprice = ld_dftsaleprice
- saletaskmx[it_mxbt].mtrlid = arg_mtrlid
- saletaskmx[it_mxbt].saleqty = arg_qty
- saletaskmx[it_mxbt].plprice = ld_planprice
- saletaskmx[it_mxbt].dscrp = arg_dscrp
- saletaskmx[it_mxbt].dscrp2 = arg_dscrp2
- saletaskmx[it_mxbt].mtrlcode = arg_mtrlcode
- saletaskmx[it_mxbt].status = arg_status
- saletaskmx[it_mxbt].printid = arg_printid
- saletaskmx[it_mxbt].woodcode = arg_woodcode
- saletaskmx[it_mxbt].pcode = arg_pcode
- saletaskmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode
- saletaskmx[it_mxbt].enprice = arg_enprice
- saletaskmx[it_mxbt].rebate = arg_rebate
- If uo_option_price_rmb = 0 Then
- saletaskmx[it_mxbt].fprice = arg_enprice * mrate
-
- If mrate = 0 Then
- saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_rebate
- Else
- saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_rebate / mrate
- End If
-
- saletaskmx[it_mxbt].acprice = saletaskmx[it_mxbt].fprice * arg_rebate
-
- Else
- saletaskmx[it_mxbt].fprice = Round(arg_enprice * mrate,2)
-
- If mrate = 0 Then
- saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_rebate,2)
- Else
- saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_rebate / mrate,2)
- End If
-
- saletaskmx[it_mxbt].acprice = Round(saletaskmx[it_mxbt].fprice * arg_rebate,2)
-
- End If
- saletaskmx[it_mxbt].scidprice = arg_scidprice
- saletaskmx[it_mxbt].outtype = arg_outtype
- saletaskmx[it_mxbt].requiredate = arg_requiredate
- saletaskmx[it_mxbt].pfcode = ls_pfcode
- saletaskmx[it_mxbt].quoteid = arg_quoteid
- saletaskmx[it_mxbt].quotecode = arg_quotecode
- saletaskmx[it_mxbt].quoteprintid = arg_quoteprintid
- saletaskmx[it_mxbt].pricetype = arg_pricetype
- saletaskmx[it_mxbt].capacity = ld_capacity * arg_qty
- saletaskmx[it_mxbt].nprice = arg_nprice
- saletaskmx[it_mxbt].poid = arg_poid //使用到的价格指令ID
- saletaskmx[it_mxbt].dscrp_text = arg_dscrp_text
- saletaskmx[it_mxbt].taxrate = arg_taxrate
- saletaskmx[it_mxbt].addqty = arg_addqty
- saletaskmx[it_mxbt].priceformula = arg_priceformula
- saletaskmx[it_mxbt].sampleid = arg_sampleid
- If uo_option_m_msttake = 1 Then //使用多币种
- msttakeamt = msttakeamt + Round(arg_enprice * arg_qty * arg_rebate,2)
- Else // 系统不使用多币种,转换为人民币
- msttakeamt = msttakeamt + Round(arg_enprice * mrate * arg_qty * arg_rebate,2)
- End If
- saletaskmx[it_mxbt].net_weight = arg_net_weight
- saletaskmx[it_mxbt].gross_weight = arg_gross_weight
- saletaskmx[it_mxbt].cubage = arg_cubage
- saletaskmx[it_mxbt].fjcnt = arg_fjcnt
- saletaskmx[it_mxbt].fjstr = arg_fjstr
- saletaskmx[it_mxbt].porebate = lde_porebate
- ext:
- If rslt = 0 Then p_clearmx()
- Destroy uo_price
- Return rslt
- end function
- private function integer uof_p_check_packprobom (ref string arg_msg);Int rslt = 1
- Long ll_i
- String ls_mtrlcode,ls_msg
- Long ll_mtrlid
- Long cnt
- Int li_ifpackpro
- IF uo_option_saletask_packprobom_check = -1000 THEN
- arg_msg = '选项:[399]销售订单审核检查包件产品选项,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_saletask_packprobom_check = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- FOR ll_i = 1 To it_mxbt
- ll_mtrlid = saletaskmx[ll_i].mtrlid
- ls_mtrlcode = saletaskmx[ll_i].mtrlcode
-
- SELECT ifpackpro
- INTO :li_ifpackpro
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '物料:'+ls_mtrlcode+'查询信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_Mtrl_pf
- WHERE u_Mtrl_pf.mtrlid = :ll_mtrlid
- AND u_Mtrl_pf.flag = 0
- And u_Mtrl_pf.ifdft = 1;
- IF sqlca.SQLCode <> 0 THEN
- ls_msg += '查询产品:'+ls_mtrlcode + ',默认清单是否审核失败,'+sqlca.SQLErrText+' ~r~n '
- CONTINUE
- END IF
-
- IF cnt > 0 THEN
- ls_msg += '产品:'+ls_mtrlcode + ',默认清单未审核,请检查'+' ~r~n '
- CONTINUE
- END IF
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_PrdPF,u_Mtrl_pf,u_mtrldef
- WHERE u_Mtrl_pf.mtrlid = :ll_mtrlid
- AND u_PrdPF.pfcode = u_Mtrl_pf.pfcode
- AND u_PrdPF.mtrlid = u_Mtrl_pf.mtrlid
- AND u_PrdPF.sonmtrlid = u_mtrldef.mtrlid
- AND u_Mtrl_pf.ifdft = 1
- And u_mtrldef.ifpack > 0;
- IF sqlca.SQLCode <> 0 THEN
- ls_msg += '查询产品:'+ls_mtrlcode + ',默认清单是否含有包件失败,'+sqlca.SQLErrText+' ~r~n '
- CONTINUE
- END IF
-
- IF cnt = 0 THEN
- ls_msg += '产品:'+ls_mtrlcode + ',默认清单未含有包件,请检查'+' ~r~n '
- CONTINUE
- END IF
- END IF
- NEXT
- IF ls_msg <> '' THEN
- arg_msg = ls_msg
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_add_reminddscrp (long arg_scid, long arg_taskid, string arg_reminddscrp, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
- //0 fail 1 SUCCESS
- Int rslt = 1
- arg_reminddscrp = Trim(arg_reminddscrp)
- IF it_updatebegin Or it_newbegin THEN
- rslt = 0
- arG_MSG = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_reminddscrp = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arG_MSG = "待销售审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_saletask
- SET reminddscrp = reminddscrp + :arg_reminddscrp
- WHERE u_saletask.taskid = :arg_taskid
- 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
- 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 priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_notsecaudit_amt,ld_notsecaudit_enamt,ld_notsecaudit_billamt
- Decimal arg_cusbalcamt,arg_cusmaxamt,arg_outrep_balcamt,arg_outrep_maxamt
- Int lst
- Decimal ld_maxamt_user
- If uo_option_saletask_affirm_produce = -1000 Then
- arg_msg = '选项:[413]销售订单财务确认后排产,读取初始默认值失败,操作取消!'
- rslt = 0
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If priceflag = 1 Then
- rslt = 0
- arg_msg = '单据已确认,不能再确认'
- Goto ext
- End If
- If uo_option_saletask_affirm_produce > 0 And Status <> 1 Then
- rslt = 0
- arg_msg = '选项:[413]销售订单财务确认后排产 开启后,单据只能在进行后才能财务确认'
- Goto ext
- End If
- If uo_option_saletask_affirm_produce = 2 Then
- //检查信用额
- Select sum(round(u_outwaremx.qty * u_outwaremx.price,2)),
- sum(round(u_outwaremx.qty * u_outwaremx.enprice * u_outwaremx.rebate,2))
- Into :ld_notsecaudit_amt,:ld_notsecaudit_enamt
- From u_outware,u_outwaremx
- Where u_outware.scid = u_outwaremx.scid
- And u_outware.outwareid = u_outwaremx.outwareid
- And u_outware.billtype = 1
- And u_outware.secflag = 0
- And u_outware.cusid = :cusid
- And (:sys_option_scid_msttake_mstpay = 1 And u_outware.scid = :scid Or :sys_option_scid_msttake_mstpay = 0 )
- And (:sys_option_m_msttake = 1 And u_outware.relint_2 = :moneyid Or :sys_option_m_msttake = 0);
- If sqlca.SQLCode <> 0 Then
- ld_notsecaudit_amt = 0
- ld_notsecaudit_enamt = 0
- End If
-
- If IsNull(ld_notsecaudit_amt) Then ld_notsecaudit_amt = 0
- If IsNull(ld_notsecaudit_enamt) Then ld_notsecaudit_enamt = 0
-
- If sys_option_m_msttake = 1 Then
- ld_notsecaudit_billamt = ld_notsecaudit_enamt
- Else
- ld_notsecaudit_billamt = ld_notsecaudit_amt
- End If
-
- Select maxamt
- Into :ld_maxamt_user
- From u_user
- Where empid = :sys_empid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询当前操作员信用额失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- lst = f_getcusrepamt_info(cusid,scid,moneyid,arg_cusbalcamt,arg_cusmaxamt,arg_outrep_balcamt,arg_outrep_maxamt)
-
- If lst <= 0 Then
- rslt = 0
- arg_msg = '查询信用额及欠款失败'
- Goto ext
- Else
- If arg_cusbalcamt + ld_notsecaudit_billamt + msttakeamt > arg_cusmaxamt + ld_maxamt_user Then
- rslt = 0
- arg_msg = '客户信用额 + 操作员信用额 - 客户欠款 - 未财务审金额 - 本单金额:'+String(arg_cusmaxamt,'#0.0#')+' + '+String(ld_maxamt_user,'#0.0#') + ' - '+String(arg_cusbalcamt,'#0.0#')+ ' - '+String(ld_notsecaudit_billamt,'#0.0#') + ' - '+String(msttakeamt,'#0.0#') + ' = ' + String(arg_cusmaxamt + ld_maxamt_user - arg_cusbalcamt - ld_notsecaudit_billamt - msttakeamt,'#0.0#') + ',客户欠款超信用额,不能财务确认'
- Goto ext
- End If
- End If
-
- End If
- Update u_saletask
- Set pricerep = :publ_operator,
- pricedate = getdate(),
- priceflag = 1
- Where taskid = :arg_taskid
- And priceflag = 0
- And scid = :arg_scid Using commit_transaction;
-
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- ElseIf commit_transaction.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- priceflag = 1
- 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 c_priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- datetime null_dt
- setnull(null_dt)
- If p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If priceflag = 0 Then
- rslt = 0
- arg_msg = '单据未确认,不能反确认'
- Goto ext
- End If
- Update u_saletask
- Set pricerep = '',
- pricedate = :null_dt,
- priceflag = 0
- Where taskid = :arg_taskid
- And priceflag = 1
- And scid = :arg_scid Using commit_transaction;
-
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- ElseIf commit_transaction.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- priceflag = 0
- 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 uof_add_mx (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long i
- String ls_mtrlcuscode
- Long ll_printid
- IF uo_option_taskplancode_auto = -1000 THEN
- arg_msg = '选项:[048]销售订单生产批号类型,读取初始默认值失败,操作取消!'
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF priceflag = 1 THEN
- rslt = 0
- arg_msg = '单据已确认,不能补充明细'
- GOTO ext
- END IF
- IF status <> 0 THEN
- rslt = 0
- arg_msg = '单据已审核,不能补充明细'
- GOTO ext
- END IF
- SELECT max(printid)
- INTO :ll_printid
- FROM u_saletaskmx
- WHERE scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询单据明细信息失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ll_printid) THEN ll_printid = 0
- FOR i = 1 To it_mxbt
- ls_mtrlcuscode = ''
- IF Kind = 4 THEN
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- ELSE
- CHOOSE CASE uo_option_taskplancode_auto
- CASE 1
- ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
- CASE 2
- ls_mtrlcuscode = taskcode
- CASE 3
- ls_mtrlcuscode = relcode
- CASE 4
- ls_mtrlcuscode = taskcode + '.' + String(i,'000')
- CASE 5
- ls_mtrlcuscode = ''
- CASE ELSE
- arg_msg = '错误的生产批号,管理员请先设定好订单批号模式'
- rslt = 0
- GOTO ext
- END CHOOSE
- END IF
-
- ll_printid++
-
- INSERT INTO u_saletaskmx
- ( scid,
- taskid,
- mtrlid,
- saleqty,
- price,
- plprice,
- mxdscrp,
- mxdscrp2,
- fprice,
- rebate,
- status,
- printid,
- woodcode,
- pcode,
- mtrlcuscode,
- enprice,
- outtypestr,
- dftsaleprice,
- requiredate,
- pfcode,
- scidprice,
- quoteid,
- quotecode,
- quoteprintid,
- pricetype,
- capacity,
- nprice,
- poid,
- taxrate,
- addqty,
- priceformula,
- sampleid,
- enacprice,
- net_weight,
- gross_weight,
- cubage,
- fjcnt,
- fjstr,
- porebate)
- VALUES (:arg_scid,
- :arg_taskid,
- :saletaskmx[i].mtrlid,
- :saletaskmx[i].saleqty,
- :saletaskmx[i].acprice,
- :saletaskmx[i].plprice,
- :saletaskmx[i].dscrp,
- :saletaskmx[i].dscrp2,
- :saletaskmx[i].fprice,
- :saletaskmx[i].rebate,
- :saletaskmx[i].status,
- :ll_printid,
- :saletaskmx[i].woodcode,
- :saletaskmx[i].pcode,
- :ls_mtrlcuscode,
- :saletaskmx[i].enprice,
- :saletaskmx[i].outtype,
- :saletaskmx[i].dftsaleprice,
- :saletaskmx[i].requiredate,
- :saletaskmx[i].pfcode,
- :saletaskmx[i].scidprice,
- :saletaskmx[i].quoteid,
- :saletaskmx[i].quotecode,
- :saletaskmx[i].quoteprintid,
- :saletaskmx[i].pricetype,
- :saletaskmx[i].capacity,
- :saletaskmx[i].nprice,
- :saletaskmx[i].poid,
- :saletaskmx[i].taxrate,
- :saletaskmx[i].addqty,
- :saletaskmx[i].priceformula,
- :saletaskmx[i].sampleid,
- :saletaskmx[i].enacprice,
- :saletaskmx[i].net_weight,
- :saletaskmx[i].gross_weight,
- :saletaskmx[i].cubage,
- :saletaskmx[i].fjcnt,
- :saletaskmx[i].fjstr,
- :saletaskmx[i].porebate) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- msttakeamt = 0
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- on uo_saletask.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_saletask.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String arg_msg
- String str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('029',str_optionvalue,arg_msg)
- uo_option_change_status = str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('027',str_optionvalue,arg_msg)
- uo_option_change_woodcode = str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('028',str_optionvalue,arg_msg)
- uo_option_change_pcode = str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('045',str_optionvalue,arg_msg)
- uo_option_m_msttake = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('035',str_optionvalue,arg_msg)
- uo_option_saletask_secaudit = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('088',str_optionvalue,arg_msg)
- uo_option_saletask_fore_secaudit = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('043',str_optionvalue,arg_msg)
- uo_option_if_oa_saletask = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('227',str_optionvalue,arg_msg)
- uo_option_if_oa_saletask_fore = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('048',str_optionvalue,arg_msg)
- uo_option_taskplancode_auto = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('113',str_optionvalue,arg_msg)
- uo_option_autocreate_buy_cp = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('051',str_optionvalue,arg_msg)
- uo_option_taskaudit_dprice = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('039',str_optionvalue,arg_msg)
- uo_option_saletask_addware = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('044',str_optionvalue,arg_msg)
- uo_option_if_msg = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('201',str_optionvalue,arg_msg)
- uo_option_saletask_set_planprice = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('056',str_optionvalue,arg_msg)
- uo_option_checkprice_native = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('142',str_optionvalue,arg_msg)
- uo_option_inout_type = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('154',str_optionvalue,arg_msg)
- uo_option_if_pricetype = Long(str_optionvalue)
- f_get_sys_option_value('200',str_optionvalue,arg_msg)
- uo_option_if_saleout = Long(str_optionvalue)
- f_get_sys_option_value('200',str_optionvalue,arg_msg)
- uo_option_if_saleout = Long(str_optionvalue)
- f_get_sys_option_value('291',str_optionvalue,arg_msg)
- uo_option_disuse_saletask = Long(str_optionvalue)
- f_get_sys_option_value('300',str_optionvalue,arg_msg)
- uo_option_sale_ifuse_negativeprice = Long(str_optionvalue)
- f_get_sys_option_value('301',str_optionvalue,arg_msg)
- uo_option_saletask_ifuse_typebillcode = Long(str_optionvalue)
- f_get_sys_option_value('238',str_optionvalue,arg_msg)
- uo_option_price_rmb = Long(str_optionvalue)
- f_get_sys_option_value('335',str_optionvalue,arg_msg)
- uo_option_dd_allto_pqty = Long(str_optionvalue)
- f_get_sys_option_value('364',str_optionvalue,arg_msg)
- uo_option_saletask_rebate_check = Long(str_optionvalue)
- f_get_sys_option_value('399',str_optionvalue,arg_msg)
- uo_option_saletask_packprobom_check = Long(str_optionvalue)
- f_get_sys_option_value('402',str_optionvalue,arg_msg)
- uo_option_saletask_fore_addware = Long(str_optionvalue)
- f_get_sys_option_value('404',str_optionvalue,arg_msg)
- uo_option_saletask_stopqty_type = Long(str_optionvalue)
- f_get_sys_option_value('413',str_optionvalue,arg_msg)
- uo_option_saletask_affirm_produce = Long(str_optionvalue)
- end event
|