uo_saletask.sru 247 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583
  1. $PBExportHeader$uo_saletask.sru
  2. forward
  3. global type uo_saletask from nonvisualobject
  4. end type
  5. type s_saletaskmx from structure within uo_saletask
  6. end type
  7. type s_saletaskmx_mx from structure within uo_saletask
  8. end type
  9. type s_saletaskmx_in from structure within uo_saletask
  10. end type
  11. type s_saletask_itemmx from structure within uo_saletask
  12. end type
  13. end forward
  14. type s_saletaskmx from structure
  15. long mtrlid
  16. decimal { 10 } saleqty
  17. decimal { 10 } plprice
  18. decimal { 10 } acprice
  19. decimal { 10 } enacprice
  20. string dscrp
  21. string mtrlcode
  22. decimal { 10 } fprice
  23. decimal { 10 } u_mtrldef_expday
  24. decimal { 5 } rebate
  25. string status
  26. long printid
  27. string woodcode
  28. string pcode
  29. string mtrlcuscode
  30. string mtrlchangecode
  31. decimal { 10 } enprice
  32. string outtype
  33. decimal { 10 } dftsaleprice
  34. integer auditflag
  35. string auditemp
  36. datetime auditdate
  37. datetime requiredate
  38. string pfcode
  39. string dscrp2
  40. decimal { 10 } scidprice
  41. decimal { 10 } inwareqty
  42. long quoteid
  43. string quotecode
  44. long quoteprintid
  45. string pocode
  46. string typestr
  47. string pricetype
  48. decimal { 5 } capacity
  49. decimal { 5 } nprice
  50. decimal { 5 } planprice
  51. decimal { 10 } stopqty
  52. long poid
  53. decimal { 10 } fpqty
  54. string dscrp_text
  55. decimal { 5 } taxrate
  56. decimal { 10 } addqty
  57. string priceformula
  58. long sampleid
  59. decimal { 10 } net_weight
  60. decimal { 10 } gross_weight
  61. decimal { 10 } cubage
  62. long fjcnt
  63. string fjstr
  64. decimal { 10 } porebate
  65. end type
  66. type s_saletaskmx_mx from structure
  67. long mtrlwareid
  68. decimal { 10 } qty
  69. end type
  70. type s_saletaskmx_in from structure
  71. long mtrlid
  72. string status
  73. string woodcode
  74. string pcode
  75. string plancode
  76. string mxdscrp
  77. decimal { 5 } fprice
  78. long printid
  79. decimal { 10 } qty
  80. long storageid
  81. end type
  82. type s_saletask_itemmx from structure
  83. long scid
  84. long taskid
  85. long printid
  86. long itemid
  87. decimal{2} amt
  88. string mxdscrp
  89. end type
  90. global type uo_saletask from nonvisualobject
  91. end type
  92. global uo_saletask uo_saletask
  93. type variables
  94. Public ProtectedWrite Long scid
  95. Public ProtectedWrite Long taskid
  96. Public ProtectedWrite String taskcode
  97. Public ProtectedWrite DateTime opdate
  98. Public ProtectedWrite String operator
  99. Public ProtectedWrite Int status
  100. Public ProtectedWrite DateTime accomplishdate
  101. Public ProtectedWrite String permit_emp
  102. Public ProtectedWrite String last_emp
  103. Public ProtectedWrite Long ctmint
  104. Long banktypeid
  105. Long moneyid
  106. Decimal damt
  107. Decimal otheramt
  108. Decimal mrate
  109. Int Kind
  110. Long cusid
  111. String assign_emp
  112. DateTime requiredate
  113. DateTime taskdate
  114. String freight
  115. String dscrp
  116. String dscrp2
  117. string dscrp3
  118. String relcode
  119. String paytype
  120. String freight_tele
  121. String cus_address
  122. String cus_tele
  123. String cus_fax
  124. String upname
  125. Decimal msttakeamt,takeamt
  126. Long typeid
  127. String rel_rep
  128. Int Level
  129. long exchangeid
  130. string station_address
  131. DateTime sendTime
  132. String sendUser,fiebrelcode
  133. int selecttype
  134. Long audit_buildtype
  135. int priceflag
  136. datetime pricedate
  137. string pricerep
  138. Transaction commit_transaction //数据commit事务
  139. Private:
  140. s_saletaskmx saletaskmx[] //明细结构
  141. s_saletaskmxmx saletaskmxmx[] //明细结构
  142. s_saletaskmx_in saletaskmx_in[] //明细结构
  143. s_saletask_itemmx saletask_itemmx[]
  144. Long it_mxbt_in = 0 //来料加工订单收料明细
  145. Long it_mxbt = 0 //明细结构数组末指针
  146. Long it_mxbtmx = 0 //明细结构数组末指针
  147. Long it_mxbt_item = 0 //费用明细指针
  148. Boolean it_newbegin = False //新建标志
  149. Boolean it_updatebegin = False //修改标志
  150. s_saletaskmx_mx taskmx[]
  151. Long it_mxbt_mx = 0
  152. Decimal mx_sumqty = 0
  153. String uo_option_change_status
  154. String uo_option_change_woodcode
  155. String uo_option_change_pcode
  156. Int uo_option_price_rmb
  157. Int uo_option_m_msttake
  158. Int uo_option_saletask_secaudit
  159. Int uo_option_saletask_fore_secaudit
  160. Int uo_option_if_oa_saletask
  161. Int uo_option_if_oa_saletask_fore
  162. Int uo_option_taskplancode_auto
  163. Int uo_option_taskaudit_dprice
  164. Int uo_option_autocreate_buy_cp
  165. Int uo_option_saletask_addware
  166. Int uo_option_if_msg
  167. Int uo_option_saletask_set_planprice
  168. Int uo_option_checkprice_native
  169. Int uo_option_inout_type
  170. Int uo_option_if_pricetype
  171. Int uo_option_if_saleout
  172. Int uo_option_disuse_saletask
  173. Int uo_option_sale_ifuse_negativeprice
  174. Int uo_option_saletask_ifuse_typebillcode
  175. Int uo_option_dd_allto_pqty
  176. int uo_option_saletask_rebate_check
  177. int uo_option_saletask_packprobom_check
  178. int uo_option_saletask_fore_addware
  179. int uo_option_saletask_stopqty_type
  180. int uo_option_saletask_affirm_produce
  181. end variables
  182. forward prototypes
  183. public function integer p_reset ()
  184. public function integer p_clearmx ()
  185. public function integer add_dscrp (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  186. private function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg)
  187. public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  188. public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  189. public function integer checkmxcmpl (long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
  190. public function integer getinfo (long arg_scid, long arg_taskid, ref string arg_msg)
  191. public function integer salepermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  192. public function integer tempstoptask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  193. public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg)
  194. public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
  195. public function integer trycmplsaletask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  196. public function integer newbegin (long arg_scid, ref string arg_msg)
  197. public function integer acceptmx_mx (long arg_scid, long arg_mtrlwareid, decimal arg_qty, ref string arg_msg)
  198. 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)
  199. 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)
  200. 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)
  201. public function integer propermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  202. public function integer cancelpropermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  203. public function integer updateassignqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
  204. private function integer uof_p_check_dprice (ref string arg_msg)
  205. public function integer ddpermit (long arg_scid, long arg_taskid, long arg_printid, integer arg_flag, ref string arg_msg, boolean arg_ifcommit)
  206. 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)
  207. public function integer addmxcmpl (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
  208. public function integer canceloapermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  209. public function integer addmxcmpl_in (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
  210. 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)
  211. public function integer updateinwareqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
  212. public function integer trycmptask_fore (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  213. public function integer uof_getpriceorder (long arg_cusid, long arg_mtrlid, ref string arg_pocode, ref string arg_typestr, ref string arg_msg)
  214. public function integer uof_add_plan (s_saletask_plan arg_s_plan, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  215. public function integer uof_del_plan (long arg_planid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  216. public function integer uof_finish_plan (long arg_planid, ref string arg_msg, boolean arg_ifcommit)
  217. public function integer add_dscrp2 (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  218. public function integer addmxsaleout (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
  219. public function integer stopsaletask_cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  220. 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)
  221. 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)
  222. public function integer add_relcode (long arg_scid, long arg_taskid, string arg_add_relcode, ref string arg_msg, boolean arg_ifcommit)
  223. public function integer acceptmx_item (long arg_printid, long arg_itemid, decimal arg_amt, string arg_mxdscrp, ref string arg_msg)
  224. public function integer add_dscrpmx (long arg_scid, long arg_taskid, long arg_printid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  225. public function integer finishtask (long arg_scid, long arg_taskid, integer arg_status, ref string arg_msg, boolean arg_ifcommit)
  226. public function integer finishtask_cancel (long arg_scid, long arg_taskid, integer arg_status, ref string arg_msg, boolean arg_ifcommit)
  227. public function integer uof_disuse (long arg_scid, long arg_taskid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit)
  228. public function integer uof_updatesaleoutcodestr (long arg_scid, long arg_taskid, long arg_printid, boolean arg_ifcommit, ref string arg_msg)
  229. public function integer add_dscrp3 (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  230. public function integer stopsaletask (long arg_scid, long arg_taskid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
  231. 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)
  232. 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)
  233. 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)
  234. public function integer acceptmxmx (s_saletaskmxmx arg_s_mx, ref string arg_msg)
  235. private function integer uof_p_check_date (ref string arg_msg)
  236. 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)
  237. private function integer uof_p_check_packprobom (ref string arg_msg)
  238. public function integer uof_add_reminddscrp (long arg_scid, long arg_taskid, string arg_reminddscrp, ref string arg_msg, boolean arg_ifcommit)
  239. public function integer priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  240. public function integer c_priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  241. public function integer uof_add_mx (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  242. end prototypes
  243. public function integer p_reset ();//int p_reset()
  244. //清除对象及其明细
  245. taskid=0
  246. taskcode=''
  247. operator=''
  248. status=0
  249. damt = 0
  250. otheramt = 0
  251. banktypeid = 0
  252. moneyid = 0
  253. relcode = ''
  254. freight_tele= ''
  255. msttakeamt = 0
  256. takeamt = 0
  257. dscrp = ''
  258. dscrp2 = ''
  259. dscrp3 = ''
  260. relcode = ''
  261. it_newbegin=false
  262. it_updatebegin=false
  263. //清除明细
  264. p_clearmx()
  265. return 1
  266. end function
  267. public function integer p_clearmx ();//INT p_clearmx()
  268. //清除明细
  269. it_mxbt = 0
  270. it_mxbtmx = 0
  271. it_mxbt_in = 0
  272. it_mxbt_item = 0
  273. RETURN 1
  274. end function
  275. 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)
  276. //0 fail 1 SUCCESS
  277. Int rslt = 1
  278. arg_newdescppart = Trim(arg_newdescppart)
  279. IF it_updatebegin OR it_newbegin THEN
  280. rslt = 0
  281. arG_MSG = "编辑状态下不可用"
  282. GOTO ext
  283. END IF
  284. IF arg_newdescppart = '' THEN
  285. rslt = 0
  286. arG_MSG = "要添加内容为空,操作取消"
  287. GOTO ext
  288. END IF
  289. IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
  290. rslt = 0
  291. GOTO ext
  292. END IF
  293. IF status = 0 THEN
  294. rslt = 0
  295. arG_MSG = "待销售审核状态下不可用"
  296. GOTO ext
  297. END IF
  298. UPDATE u_saletask
  299. SET DSCRP = DSCRP+' '+:arg_newdescppart
  300. Where u_saletask.taskid = :arg_taskid AND scid = :arg_scid USING commit_transaction ;
  301. IF commit_transaction.SQLCode <> 0 THEN
  302. rslt = 0
  303. arG_MSG = "因网络或其它原因导致添加销售订单备注操作失败"+"~n"+ commit_transaction.SQLErrText
  304. GOTO ext
  305. END IF
  306. DSCRP = DSCRP+' '+arg_newdescppart
  307. it_newbegin = FALSE
  308. it_updatebegin = FALSE
  309. ext:
  310. IF rslt = 0 THEN
  311. ROLLBACK USING commit_transaction;
  312. ELSEIF arg_ifcommit THEN
  313. COMMIT USING commit_transaction;
  314. END IF
  315. p_reset()
  316. Return (rslt)
  317. end function
  318. private function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg);Int rslt = 1
  319. SELECT scid,
  320. taskid,
  321. TaskCode,
  322. kind,
  323. CusID,
  324. requiredate,
  325. accomplishdate,
  326. Status,
  327. Opemp,
  328. Assign_Emp,
  329. Permit_Emp,
  330. Dscrp,
  331. Dscrp2,
  332. opdate,
  333. damt,
  334. otheramt,
  335. freight,
  336. taskdate,
  337. banktypeid ,
  338. moneyid,
  339. relcode,
  340. paytype,
  341. freight_tele,
  342. cus_address,
  343. cus_tele,
  344. cus_fax,
  345. mrate,
  346. upname,
  347. ctmint,
  348. msttakeamt,
  349. takeamt,
  350. typeid,
  351. rel_rep,
  352. level,
  353. dscrp3,
  354. exchangeid,
  355. station_address,
  356. priceflag,
  357. pricedate,
  358. pricerep,
  359. selecttype
  360. INTO :scid,
  361. :taskid,
  362. :TaskCode,
  363. :Kind,
  364. :CusID,
  365. :requiredate,
  366. :accomplishdate,
  367. :Status,
  368. :Operator,
  369. :Assign_Emp,
  370. :Permit_Emp,
  371. :Dscrp,
  372. :Dscrp2,
  373. :opdate ,
  374. :damt,
  375. :otheramt,
  376. :freight,
  377. :taskdate,
  378. :banktypeid,
  379. :moneyid,
  380. :relcode,
  381. :paytype,
  382. :freight_tele,
  383. :cus_address,
  384. :cus_tele,
  385. :cus_fax,
  386. :mrate,
  387. :upname,
  388. :ctmint,
  389. :msttakeamt,
  390. :takeamt,
  391. :typeid,
  392. :rel_rep,
  393. :level,
  394. :dscrp3,
  395. :exchangeid,
  396. :station_address,
  397. :priceflag,
  398. :pricedate,
  399. :pricerep,
  400. :selecttype
  401. FROM u_SaleTask
  402. Where u_SaleTask.taskid = :arg_taskid AND scid = :arg_scid
  403. USING commit_transaction;
  404. IF commit_transaction.SQLCode <> 0 THEN
  405. rslt = 0
  406. ARG_MSG = '查询订单内容失败(错误订单id:'+string(arg_taskid)+'),'+string(commit_transaction.SQLCode)+','+commit_transaction.sqlerrtext
  407. GOTO ext
  408. END IF
  409. ext:
  410. RETURN rslt
  411. end function
  412. public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
  413. //0 FAIL, 1 SUCCESS
  414. Int rslt = 1
  415. Long cnt
  416. If uo_option_disuse_saletask = -1000 Then
  417. rslt = 0
  418. arg_msg = '选项:[291]启用销售订单废弃单,读取初始默认值失败,操作取消!'
  419. Goto ext
  420. End If
  421. If arg_scid < 0 Then
  422. arg_msg = '请选择分部'
  423. rslt = 0
  424. Goto ext
  425. End If
  426. If arg_taskid <= 0 Then
  427. rslt = 0
  428. arg_msg = '错误销售订单唯一码'
  429. Goto ext
  430. End If
  431. If p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
  432. rslt = 0
  433. Goto ext
  434. End If
  435. If Status <> 0 Then
  436. rslt = 0
  437. arg_msg = "订单已经审核,不可以删除"
  438. Goto ext
  439. End If
  440. cnt = 0
  441. Select count(*)
  442. Into :cnt
  443. From u_taskdamt_mx
  444. Where u_taskdamt_mx.relid = :arg_taskid
  445. And u_taskdamt_mx.scid = :arg_scid Using commit_transaction ;
  446. If commit_transaction.SQLCode <> 0 Then
  447. rslt = 0
  448. arg_msg = "查询订单是否已开订单收款单失败"+"~n"+commit_transaction.SQLErrText
  449. Rollback Using commit_transaction;
  450. Goto ext
  451. End If
  452. If cnt > 0 Then
  453. rslt = 0
  454. arg_msg = "订单已开订单收款单,操作取消,如需删除订单请先删除订单收款单"
  455. Rollback Using commit_transaction;
  456. Goto ext
  457. End If
  458. Select count(*)
  459. Into :cnt
  460. From u_bmsttake_fpmx
  461. Where relid = :arg_taskid
  462. And scid = :arg_scid;
  463. If sqlca.SQLCode <> 0 Then
  464. rslt = 0
  465. arg_msg = "查询相关应收帐金额是否已分配订单失败"+"~n"+sqlca.SQLErrText
  466. Goto ext
  467. End If
  468. If cnt > 0 Then
  469. rslt = 0
  470. arg_msg = "本订单已进行应收帐金额已分配,不能删除"
  471. Goto ext
  472. End If
  473. //IF sys_option_if_OA = 1 AND audit_buildtype = 0 THEN
  474. // IF f_check_if_oaflow( arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
  475. // rslt = 0
  476. // GOTO ext
  477. // END IF
  478. //END IF
  479. If Kind = 1 And uo_option_disuse_saletask = 1 Then
  480. If uof_disuse(arg_scid,arg_taskid,1,arg_msg,False) = 0 Then
  481. rslt = 0
  482. Goto ext
  483. End If
  484. End If
  485. Delete From u_saletask
  486. Where u_saletask.taskid = :arg_taskid And scid = :arg_scid Using commit_transaction ;
  487. If commit_transaction.SQLCode <> 0 Then
  488. rslt = 0
  489. arg_msg = "删除销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  490. Rollback Using commit_transaction;
  491. Goto ext
  492. End If
  493. Delete From u_saletaskmx
  494. Where u_saletaskmx.taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
  495. If commit_transaction.SQLCode <> 0 Then
  496. rslt = 0
  497. arg_msg = "删除销售订单明细操作失败"+"~n"+commit_transaction.SQLErrText
  498. Rollback Using commit_transaction;
  499. Goto ext
  500. End If
  501. Delete From u_saletaskmxmx
  502. Where taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
  503. If commit_transaction.SQLCode <> 0 Then
  504. rslt = 0
  505. arg_msg = "删除销售订单明细操作失败"+"~n"+commit_transaction.SQLErrText
  506. Rollback Using commit_transaction;
  507. Goto ext
  508. End If
  509. Delete From u_saletaskmx_mtrlchange
  510. Where u_saletaskmx_mtrlchange.taskid = :arg_taskid
  511. And scid = :arg_scid Using commit_transaction;
  512. If commit_transaction.SQLCode <> 0 Then
  513. rslt = 0
  514. arg_msg = "删除销售订单换料明细操作失败"+"~n"+commit_transaction.SQLErrText
  515. Rollback Using commit_transaction;
  516. Goto ext
  517. End If
  518. //删除原有明细
  519. Delete From u_SaleTaskMx_dscrp
  520. Where taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
  521. If commit_transaction.SQLCode <> 0 Then
  522. rslt = 0
  523. arg_msg = "删除旧有明细备注操作失败"+"~n"+commit_transaction.SQLErrText
  524. Rollback Using commit_transaction;
  525. Goto ext
  526. End If
  527. Delete From u_saletask_itemmx
  528. Where taskid = :arg_taskid
  529. And scid = :arg_scid Using commit_transaction;
  530. If commit_transaction.SQLCode <> 0 Then
  531. rslt = 0
  532. arg_msg = "删除销售订单费用明细操作失败"+"~n"+commit_transaction.SQLErrText
  533. Rollback Using commit_transaction;
  534. Goto ext
  535. End If
  536. Delete From u_saletask_plan
  537. Where u_saletask_plan.taskid = :arg_taskid
  538. And u_saletask_plan.scid = :arg_scid Using commit_transaction;
  539. If commit_transaction.SQLCode <> 0 Then
  540. rslt = 0
  541. arg_msg = "删除销售订单工作计划操作失败"+"~n"+commit_transaction.SQLErrText
  542. Rollback Using commit_transaction;
  543. Goto ext
  544. End If
  545. it_newbegin = False
  546. it_updatebegin = False
  547. If arg_ifcommit And rslt = 1 Then
  548. Commit Using commit_transaction;
  549. End If
  550. ext:
  551. p_reset()
  552. Return (rslt)
  553. end function
  554. public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  555. DateTime nulldate
  556. Decimal ls_consignedQty,ls_fpQty
  557. SetNull(nulldate)
  558. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  559. rslt = 0
  560. GOTO ext
  561. END IF
  562. uo_price_order uo_po
  563. uo_po = Create uo_price_order
  564. uo_cust_sample uo_cs
  565. uo_cs = Create uo_cust_sample
  566. IF uo_option_saletask_secaudit = -1000 THEN
  567. arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
  568. rslt = 0
  569. GOTO ext
  570. END IF
  571. IF uo_option_saletask_fore_secaudit = -1000 THEN
  572. arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
  573. rslt = 0
  574. GOTO ext
  575. END IF
  576. IF uo_option_if_oa_saletask = -1000 THEN
  577. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  578. rslt = 0
  579. GOTO ext
  580. END IF
  581. IF uo_option_if_oa_saletask_fore = -1000 THEN
  582. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  583. rslt = 0
  584. GOTO ext
  585. END IF
  586. IF arg_taskid <= 0 THEN
  587. rslt = 0
  588. arg_msg = '错误销售订单唯一码'
  589. GOTO ext
  590. END IF
  591. IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  592. rslt = 0
  593. GOTO ext
  594. END IF
  595. IF ctmint > 0 THEN
  596. arg_msg = '单据已截数,不能操作'
  597. rslt = 0
  598. GOTO ext
  599. END IF
  600. IF Kind <> 0 THEN
  601. IF uo_option_saletask_secaudit = 0 Or (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
  602. IF Status <> 1 THEN
  603. rslt = 0
  604. If (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
  605. arg_msg = "订单正在执行审批流程,只有在在进行状态才可以执行撤消审核"
  606. ELSE
  607. arg_msg = "订单只有在已审核状态才可以执行撤消审核,请核对"
  608. END IF
  609. GOTO ext
  610. END IF
  611. ELSE
  612. IF Status <> 4 THEN
  613. rslt = 0
  614. arg_msg = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
  615. GOTO ext
  616. END IF
  617. END IF
  618. ELSE
  619. IF uo_option_saletask_fore_secaudit = 0 Or (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
  620. IF Status <> 1 THEN
  621. rslt = 0
  622. If (uo_option_saletask_fore_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
  623. arg_msg = "订单正在执行审批流程,只有在在进行状态才可以执行撤消审核"
  624. ELSE
  625. arg_msg = "订单只有在已审核状态才可以执行撤消审核,请核对"
  626. END IF
  627. GOTO ext
  628. END IF
  629. ELSE
  630. IF Status <> 4 THEN
  631. rslt = 0
  632. arg_msg = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
  633. GOTO ext
  634. END IF
  635. END IF
  636. END IF
  637. SELECT count(*) INTO :cnt
  638. FROM u_order_ml
  639. WHERE scid = :arg_scid
  640. AND taskid = :arg_taskid
  641. AND (ordertype = 0 OR ordertype = 1)
  642. Using commit_transaction;
  643. IF commit_transaction.SQLCode <> 0 THEN
  644. rslt = 0
  645. arg_msg = "因网络或其它原因导致查询销售订单排产数量操作失败"+"~n"+commit_transaction.SQLErrText
  646. GOTO ext
  647. END IF
  648. IF cnt > 0 THEN
  649. rslt = 0
  650. arg_msg = "销售订单已经有相关生产计划,不可以撤消审核"
  651. GOTO ext
  652. END IF
  653. cnt = 0
  654. SELECT count(*)
  655. INTO :cnt
  656. FROM u_saleoutmx
  657. WHERE scid = :arg_scid
  658. And relid = :arg_taskid Using commit_transaction;
  659. IF commit_transaction.SQLCode <> 0 THEN
  660. rslt = 0
  661. arg_msg = "因网络或其它原因导致查询是否已开发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
  662. GOTO ext
  663. END IF
  664. IF cnt > 0 THEN
  665. rslt = 0
  666. arg_msg = "销售订单已经有相关发货通知单,不可以撤消审核"
  667. GOTO ext
  668. END IF
  669. cnt = 0
  670. SELECT count(*)
  671. INTO :cnt
  672. FROM u_outware,u_outwaremx
  673. WHERE ( u_outware.billtype = 1 ) AND
  674. ( u_outware.scid = u_outwaremx.scid ) AND
  675. ( u_outware.outwareid = u_outwaremx.outwareid ) AND
  676. ( u_outwaremx.relid = :arg_taskid ) AND
  677. ( u_outware.scid = :arg_scid) Using commit_transaction;
  678. IF commit_transaction.SQLCode <> 0 THEN
  679. rslt = 0
  680. arg_msg = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
  681. GOTO ext
  682. END IF
  683. IF cnt > 0 THEN
  684. rslt = 0
  685. arg_msg = "销售订单已经有相关出仓单据,不可以撤消审核"
  686. GOTO ext
  687. END IF
  688. SELECT sum(u_SaleTaskMx.consignedQty)
  689. INTO :ls_consignedQty
  690. FROM u_SaleTaskMx
  691. WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  692. ( u_SaleTaskMx.scid = :arg_scid ) AND
  693. ( u_SaleTaskMx.stopflag = 0 ) Using commit_transaction ;
  694. IF commit_transaction.SQLCode <> 0 THEN
  695. rslt = 0
  696. arg_msg = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
  697. GOTO ext
  698. END IF
  699. IF ls_consignedQty > 0 THEN
  700. rslt = 0
  701. arg_msg = "销售订单已有完成数量,不能撤审"
  702. GOTO ext
  703. END IF
  704. SELECT sum(u_SaleTaskMx.fpqty)
  705. INTO :ls_fpQty
  706. FROM u_SaleTaskMx
  707. WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  708. ( u_SaleTaskMx.scid = :arg_scid ) Using commit_transaction ;
  709. IF commit_transaction.SQLCode <> 0 THEN
  710. rslt = 0
  711. arg_msg = "查询销售订单已分配数量操作失败"+"~n"+SQLCA.SQLErrText
  712. GOTO ext
  713. END IF
  714. IF ls_fpQty > 0 THEN
  715. rslt = 0
  716. arg_msg = "销售订单已有分配数量,不能撤审"
  717. GOTO ext
  718. END IF
  719. IF Kind <> 0 THEN
  720. cnt = 0
  721. SELECT count(*)
  722. INTO :cnt
  723. FROM u_taskdamt_mx
  724. WHERE scid = :arg_scid
  725. And relid = :arg_taskid;
  726. IF SQLCA.SQLCode <> 0 THEN
  727. rslt = 0
  728. arg_msg = "查询订单是否已开订单收款单失败"+"~n"+SQLCA.SQLErrText
  729. GOTO ext
  730. END IF
  731. IF cnt > 0 THEN
  732. rslt = 0
  733. arg_msg = "订单已开订单收款单,不能撤审"
  734. GOTO ext
  735. END IF
  736. END IF
  737. //来料加工订单,检查是否已开收料单
  738. IF Kind = 2 THEN
  739. cnt = 0
  740. SELECT count(*)
  741. INTO :cnt
  742. FROM u_inware,u_inwaremx
  743. WHERE ( u_inware.billtype = 5 ) AND
  744. ( u_inware.scid = u_inwaremx.scid ) AND
  745. ( u_inware.inwareid = u_inwaremx.inwareid ) AND
  746. ( u_inwaremx.relid = :arg_taskid ) AND
  747. ( u_inware.scid = :arg_scid) Using commit_transaction;
  748. IF commit_transaction.SQLCode <> 0 THEN
  749. rslt = 0
  750. arg_msg = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
  751. GOTO ext
  752. END IF
  753. IF cnt > 0 THEN
  754. rslt = 0
  755. arg_msg = "来料加工订单已经有相关收料进仓单据,不可以撤消审核"
  756. GOTO ext
  757. END IF
  758. SELECT sum(u_SaleTaskMx_in.consignedQty)
  759. INTO :ls_consignedQty
  760. FROM u_SaleTaskMx_in
  761. WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
  762. ( u_SaleTaskMx_in.scid = :arg_scid ) Using commit_transaction ;
  763. IF commit_transaction.SQLCode <> 0 THEN
  764. rslt = 0
  765. arg_msg = "查询来料加工订单已收料数量操作失败"+"~n"+SQLCA.SQLErrText
  766. GOTO ext
  767. END IF
  768. IF ls_consignedQty > 0 THEN
  769. rslt = 0
  770. arg_msg = "来料加工订单已有收料数量,不能撤审"
  771. GOTO ext
  772. END IF
  773. END IF
  774. //默认订单调度
  775. Long i
  776. FOR i = 1 To it_mxbt
  777. IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,arg_msg,False) = 0 THEN
  778. rslt = 0
  779. GOTO ext
  780. END IF
  781. NEXT
  782. Int li_isuse
  783. FOR i = 1 To it_mxbt
  784. SELECT isuse
  785. INTO :li_isuse
  786. FROM u_mtrldef
  787. Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
  788. IF commit_transaction.SQLCode <> 0 THEN
  789. arg_msg = '查询:'+saletaskmx[i].mtrlcode+'资料属性失败,'+commit_transaction.SQLErrText
  790. rslt = 0
  791. GOTO ext
  792. END IF
  793. IF li_isuse = 2 THEN
  794. UPDATE u_mtrldef
  795. SET stopsaleqty = stopsaleqty - :saletaskmx[i].saleqty
  796. Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
  797. IF commit_transaction.SQLCode <> 0 THEN
  798. arg_msg = '更新:'+saletaskmx[i].mtrlcode+'资料待停产后已订数失败,'+commit_transaction.SQLErrText
  799. rslt = 0
  800. GOTO ext
  801. END IF
  802. END IF
  803. NEXT
  804. IF Kind <> 0 THEN
  805. IF uo_option_saletask_secaudit = 0 Or (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
  806. UPDATE u_SaleTask
  807. SET Status = 0,
  808. permit_emp = '',
  809. permit_date = :nulldate,
  810. p_Auditingrep = '',
  811. p_Auditingdate = :nulldate
  812. WHERE TaskID = :arg_taskid
  813. AND scid = :arg_scid
  814. AND status = 1
  815. Using commit_transaction ;
  816. IF commit_transaction.SQLCode <> 0 THEN
  817. rslt = 0
  818. arg_msg = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  819. GOTO ext
  820. ELSEIF commit_transaction.SQLNRows = 0 THEN
  821. rslt = 0
  822. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  823. GOTO ext
  824. END IF
  825. ELSE
  826. UPDATE u_SaleTask
  827. SET Status = 0,
  828. permit_emp = '',
  829. permit_date = :nulldate
  830. WHERE TaskID = :arg_taskid
  831. AND scid = :arg_scid
  832. AND status = 4
  833. Using commit_transaction ;
  834. IF commit_transaction.SQLCode <> 0 THEN
  835. rslt = 0
  836. arg_msg = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  837. GOTO ext
  838. ELSEIF commit_transaction.SQLNRows = 0 THEN
  839. rslt = 0
  840. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  841. GOTO ext
  842. END IF
  843. END IF
  844. ELSE
  845. IF uo_option_saletask_fore_secaudit = 0 Or (uo_option_saletask_fore_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
  846. UPDATE u_SaleTask
  847. SET Status = 0,
  848. permit_emp = '',
  849. permit_date = :nulldate,
  850. p_Auditingrep = '',
  851. p_Auditingdate = :nulldate
  852. WHERE TaskID = :arg_taskid
  853. AND scid = :arg_scid
  854. AND status = 1
  855. Using commit_transaction ;
  856. IF commit_transaction.SQLCode <> 0 THEN
  857. rslt = 0
  858. arg_msg = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  859. GOTO ext
  860. ELSEIF commit_transaction.SQLNRows = 0 THEN
  861. rslt = 0
  862. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  863. GOTO ext
  864. END IF
  865. ELSE
  866. UPDATE u_SaleTask
  867. SET Status = 0,
  868. permit_emp = '',
  869. permit_date = :nulldate
  870. WHERE TaskID = :arg_taskid
  871. AND scid = :arg_scid
  872. AND status = 4
  873. Using commit_transaction ;
  874. IF commit_transaction.SQLCode <> 0 THEN
  875. rslt = 0
  876. arg_msg = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  877. GOTO ext
  878. ELSEIF commit_transaction.SQLNRows = 0 THEN
  879. rslt = 0
  880. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  881. GOTO ext
  882. END IF
  883. END IF
  884. END IF
  885. DELETE FROM u_saletaskmx_moddate_log
  886. Where scid = :arg_scid And taskid = :arg_taskid Using commit_transaction;
  887. IF commit_transaction.SQLCode <> 0 THEN
  888. rslt = 0
  889. arg_msg = "因网络或其它原因导致清除明细交期变更历史操作失败"+"~n"+commit_transaction.SQLErrText
  890. GOTO ext
  891. END IF
  892. DELETE FROM u_saletask_stoplog
  893. Where scid = :arg_scid And taskid = :arg_taskid Using commit_transaction;
  894. IF commit_transaction.SQLCode <> 0 THEN
  895. rslt = 0
  896. arg_msg = "因网络或其它原因导致清除明细终止数量记录失败"+"~n"+commit_transaction.SQLErrText
  897. GOTO ext
  898. END IF
  899. //将相关已完成的OA公文的状态设为作废
  900. IF Kind <> 0 THEN
  901. If (uo_option_saletask_secaudit = 1 And uo_option_if_oa_saletask = 1) THEN
  902. UPDATE oa_doc
  903. SET docflag = 12
  904. WHERE powerid = 6
  905. AND scid = :arg_scid
  906. AND billid = :arg_taskid
  907. //And docflag = 11
  908. Using commit_transaction ;
  909. IF commit_transaction.SQLCode <> 0 THEN
  910. rslt = 0
  911. arg_msg = '更新相关公文状态失败'+commit_transaction.SQLErrText
  912. GOTO ext
  913. END IF
  914. END IF
  915. ELSE
  916. If (uo_option_saletask_fore_secaudit = 1 And uo_option_if_oa_saletask_fore = 1) THEN
  917. UPDATE oa_doc
  918. SET docflag = 12
  919. WHERE powerid = 1324
  920. AND scid = :arg_scid
  921. AND billid = :arg_taskid
  922. //And docflag = 11
  923. Using commit_transaction ;
  924. IF commit_transaction.SQLCode <> 0 THEN
  925. rslt = 0
  926. arg_msg = '更新相关公文状态失败'+commit_transaction.SQLErrText
  927. GOTO ext
  928. END IF
  929. END IF
  930. END IF
  931. IF Kind <> 0 THEN //更新价格指令使用次数
  932. FOR i = 1 To it_mxbt
  933. IF saletaskmx[i].poid > 0 THEN
  934. IF uo_po.uof_add_salenum(saletaskmx[i].poid, saletaskmx[i].saleqty, 1, False, arg_msg) = 0 THEN
  935. rslt = 0
  936. GOTO ext
  937. END IF
  938. END IF
  939. NEXT
  940. END IF
  941. //更新意向单完成数, 完成意向单
  942. FOR i = 1 To it_mxbt
  943. IF saletaskmx[i].sampleid > 0 THEN
  944. IF uo_cs.trycmpl(saletaskmx[i].sampleid, 0 - saletaskmx[i].saleqty, arg_msg, False) = 0 THEN
  945. rslt = 0
  946. GOTO ext
  947. END IF
  948. END IF
  949. NEXT
  950. it_newbegin = False
  951. it_updatebegin = False
  952. ext:
  953. IF rslt = 0 THEN
  954. ROLLBACK Using commit_transaction;
  955. ELSEIF arg_ifcommit And rslt = 1 THEN
  956. COMMIT Using commit_transaction;
  957. END IF
  958. p_reset()
  959. Destroy uo_po
  960. Destroy uo_cs
  961. Return (rslt)
  962. end function
  963. 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)
  964. Int rslt = 1,cnt = 0
  965. If arg_taskid <= 0 Then
  966. rslt = 0
  967. ARG_MSG = '错误销售订单唯一码'
  968. Goto ext
  969. End If
  970. If arg_addqty = 0 Then
  971. rslt = 1
  972. Goto ext
  973. End If
  974. rslt = p_getinfo(arg_scid,arg_taskid,ARG_MSG)
  975. If rslt = 0 Then Goto ext
  976. If Status <> 1 Then
  977. rslt = 0
  978. ARG_MSG = "销售订单只有在进行状态下才可以执行进仓"
  979. Goto ext
  980. End If
  981. Decimal ls_saleQty,ls_assignQty
  982. String ls_mtrlcode
  983. Select u_saleTaskMx.saleQty,
  984. u_saleTaskMx.assignqty,
  985. u_mtrldef.mtrlcode
  986. Into :ls_saleQty,
  987. :ls_assignQty,
  988. :ls_mtrlcode
  989. From u_saleTaskMx ,u_mtrldef
  990. Where ( u_saleTaskMx.TaskID = :arg_taskid ) And
  991. ( u_saleTaskMx.MtrlID = :arg_mtrlid ) And
  992. ( u_mtrldef.mtrlid = u_saleTaskMx.MtrlID ) And
  993. ( u_saleTaskMx.scid = :arg_scid) Using commit_transaction;
  994. If commit_transaction.SQLCode <> 0 Then
  995. rslt = 0
  996. ARG_MSG = "因网络或错误物料编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
  997. Goto ext
  998. End If
  999. If ls_saleQty < ls_assignQty + arg_addqty Then
  1000. rslt = 0
  1001. ARG_MSG = "物料["+ls_mtrlcode+"]的订单未完成数量只有"+String(ls_saleQty - ls_assignQty,'#,##0.0#')+",不能入库"+String(arg_addqty,'#,##0.0#')
  1002. Goto ext
  1003. End If
  1004. ext:
  1005. p_reset()
  1006. Return (rslt)
  1007. end function
  1008. public function integer getinfo (long arg_scid, long arg_taskid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg)
  1009. //0 失败 1成功
  1010. Int rslt = 1,i = 1,j = 1 ,no_mxcheck = 0,k = 1
  1011. IF arg_taskid <= 0 THEN
  1012. rslt = 0
  1013. arg_msg = '错误销售订单唯一码'
  1014. GOTO ext
  1015. END IF
  1016. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  1017. rslt = 0
  1018. GOTO ext
  1019. END IF
  1020. //用游标读取明细
  1021. DECLARE cur_inwaermx CURSOR FOR
  1022. SELECT u_saletaskmx.mtrlid,
  1023. u_saletaskmx.saleqty,
  1024. u_saletaskmx.price,
  1025. u_saletaskmx.mxdscrp,
  1026. u_saletaskmx.mxdscrp2,
  1027. u_mtrldef.mtrlcode,
  1028. u_saletaskmx.fprice,
  1029. u_saletaskmx.rebate,
  1030. u_saletaskmx.status,
  1031. u_saletaskmx.printid,
  1032. u_saletaskmx.woodcode,
  1033. u_saletaskmx.pcode,
  1034. u_saletaskmx.mtrlcuscode,
  1035. u_saletaskmx.enprice,
  1036. u_saletaskmx.outtypestr,
  1037. u_saletaskmx.dftsaleprice,
  1038. u_saletaskmx.requiredate,
  1039. u_saletaskmx.pfcode,
  1040. u_saletaskmx.scidprice,
  1041. u_saletaskmx.pricetype,
  1042. u_saletaskmx.capacity,
  1043. u_saletaskmx.nprice,
  1044. u_mtrldef.planprice,
  1045. u_saletaskmx.poid,
  1046. u_saletaskmx.fpqty,
  1047. u_saletaskmx.taxrate,
  1048. u_saletaskmx.addqty,
  1049. u_saletaskmx.sampleid,
  1050. u_saletaskmx.net_weight,
  1051. u_saletaskmx.gross_weight,
  1052. u_saletaskmx.cubage,
  1053. u_mtrldef.expday,
  1054. u_saletaskmx.fjcnt,
  1055. u_saletaskmx.fjstr
  1056. FROM u_saletaskmx,u_mtrldef
  1057. WHERE u_saletaskmx.taskid = :arg_taskid AND
  1058. u_saletaskmx.mtrlid = u_mtrldef.mtrlid AND
  1059. u_saletaskmx.scid = :arg_scid Using commit_transaction;
  1060. OPEN cur_inwaermx;
  1061. FETCH cur_inwaermx INTO :saletaskmx[i].mtrlid,:saletaskmx[i].saleqty,
  1062. :saletaskmx[i].acprice,:saletaskmx[i].dscrp,:saletaskmx[i].dscrp2,
  1063. :saletaskmx[i].mtrlcode,:saletaskmx[i].fprice,
  1064. :saletaskmx[i].rebate,:saletaskmx[i].status,
  1065. :saletaskmx[i].printid,:saletaskmx[i].woodcode,
  1066. :saletaskmx[i].pcode,:saletaskmx[i].mtrlcuscode,
  1067. :saletaskmx[i].enprice,:saletaskmx[i].outtype,
  1068. :saletaskmx[i].dftsaleprice,
  1069. :saletaskmx[i].requiredate,
  1070. :saletaskmx[i].pfcode,:saletaskmx[i].scidprice,
  1071. :saletaskmx[i].pricetype,
  1072. :saletaskmx[i].capacity,
  1073. :saletaskmx[i].nprice,
  1074. :saletaskmx[i].planprice,
  1075. :saletaskmx[i].poid,:saletaskmx[i].fpqty,
  1076. :saletaskmx[i].taxrate,:saletaskmx[i].addqty,
  1077. :saletaskmx[i].sampleid,:saletaskmx[i].net_weight,
  1078. :saletaskmx[i].gross_weight,
  1079. :saletaskmx[i].cubage,:saletaskmx[i].u_mtrldef_expday,
  1080. :saletaskmx[i].fjcnt,:saletaskmx[i].fjstr;
  1081. DO WHILE sqlca.SQLCode = 0
  1082. i++
  1083. FETCH cur_inwaermx INTO :saletaskmx[i].mtrlid,:saletaskmx[i].saleqty,
  1084. :saletaskmx[i].acprice,:saletaskmx[i].dscrp,:saletaskmx[i].dscrp2,
  1085. :saletaskmx[i].mtrlcode,:saletaskmx[i].fprice,
  1086. :saletaskmx[i].rebate,:saletaskmx[i].status,
  1087. :saletaskmx[i].printid,:saletaskmx[i].woodcode,
  1088. :saletaskmx[i].pcode,:saletaskmx[i].mtrlcuscode,
  1089. :saletaskmx[i].enprice,:saletaskmx[i].outtype,
  1090. :saletaskmx[i].dftsaleprice,
  1091. :saletaskmx[i].requiredate,
  1092. :saletaskmx[i].pfcode,:saletaskmx[i].scidprice,
  1093. :saletaskmx[i].pricetype,
  1094. :saletaskmx[i].capacity,
  1095. :saletaskmx[i].nprice,
  1096. :saletaskmx[i].planprice,
  1097. :saletaskmx[i].poid,:saletaskmx[i].fpqty,
  1098. :saletaskmx[i].taxrate,:saletaskmx[i].addqty,
  1099. :saletaskmx[i].sampleid,:saletaskmx[i].net_weight,
  1100. :saletaskmx[i].gross_weight,
  1101. :saletaskmx[i].cubage,:saletaskmx[i].u_mtrldef_expday,
  1102. :saletaskmx[i].fjcnt,:saletaskmx[i].fjstr;
  1103. LOOP
  1104. CLOSE cur_inwaermx;
  1105. //检验明细是否读入完整
  1106. SELECT count(*) INTO :no_mxcheck
  1107. FROM u_saletaskmx
  1108. Where u_saletaskmx.taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
  1109. IF commit_transaction.SQLCode <> 0 THEN
  1110. rslt = 0
  1111. arg_msg = "查询操作失败,销售订单明细数量"
  1112. GOTO ext
  1113. END IF
  1114. IF i <> (no_mxcheck+1) THEN
  1115. rslt = 0
  1116. arg_msg = "查询操作失败,销售订单明细"
  1117. GOTO ext
  1118. END IF
  1119. it_mxbt = i - 1
  1120. //读取来料加工订单收料明细
  1121. //用游标读取明细
  1122. DECLARE cur_saletaskmx_in CURSOR FOR
  1123. SELECT u_saletaskmx_in.mtrlid,
  1124. u_saletaskmx_in.qty,
  1125. u_saletaskmx_in.fprice,
  1126. u_saletaskmx_in.mxdscrp,
  1127. u_saletaskmx_in.status,
  1128. u_saletaskmx_in.printid,
  1129. u_saletaskmx_in.woodcode,
  1130. u_saletaskmx_in.pcode,
  1131. u_saletaskmx_in.plancode,
  1132. u_saletaskmx_in.storageid
  1133. FROM u_saletaskmx_in
  1134. WHERE u_saletaskmx_in.taskid = :arg_taskid
  1135. AND u_saletaskmx_in.scid = :arg_scid
  1136. Using commit_transaction;
  1137. OPEN cur_saletaskmx_in;
  1138. FETCH cur_saletaskmx_in INTO :saletaskmx_in[j].mtrlid,:saletaskmx_in[j].qty,
  1139. :saletaskmx_in[j].fprice,:saletaskmx_in[j].mxdscrp,
  1140. :saletaskmx_in[j].status,:saletaskmx_in[j].printid,:saletaskmx_in[j].woodcode,
  1141. :saletaskmx_in[j].pcode,:saletaskmx_in[j].plancode,:saletaskmx_in[j].storageid;
  1142. DO WHILE sqlca.SQLCode = 0
  1143. j++
  1144. FETCH cur_saletaskmx_in INTO :saletaskmx_in[j].mtrlid,:saletaskmx_in[j].qty,
  1145. :saletaskmx_in[j].fprice,:saletaskmx_in[j].mxdscrp,
  1146. :saletaskmx_in[j].status,:saletaskmx_in[j].printid,:saletaskmx_in[j].woodcode,
  1147. :saletaskmx_in[j].pcode,:saletaskmx_in[j].plancode,:saletaskmx_in[j].storageid;
  1148. LOOP
  1149. CLOSE cur_saletaskmx_in;
  1150. //检验明细是否读入完整
  1151. SELECT count(*) INTO :no_mxcheck
  1152. FROM u_saletaskmx_in
  1153. Where u_saletaskmx_in.taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
  1154. IF commit_transaction.SQLCode <> 0 THEN
  1155. rslt = 0
  1156. arg_msg = "查询操作失败,销售订单明细数量"
  1157. GOTO ext
  1158. END IF
  1159. IF j <> (no_mxcheck+1) THEN
  1160. rslt = 0
  1161. arg_msg = "查询操作失败,销售订单明细"
  1162. GOTO ext
  1163. END IF
  1164. it_mxbt_in = j - 1
  1165. //////////////////////// //
  1166. //读取来料加工订单费用明细
  1167. DECLARE cur_saletaskmx_item CURSOR FOR
  1168. SELECT scid, taskid, printid, itemid, amt, mxdscrp
  1169. FROM u_saletask_itemmx
  1170. WHERE u_saletask_itemmx.taskid = :arg_taskid
  1171. AND u_saletask_itemmx.scid = :arg_scid
  1172. Using commit_transaction;
  1173. OPEN cur_saletaskmx_item;
  1174. FETCH cur_saletaskmx_item INTO :saletask_itemmx[k].scid,:saletask_itemmx[k].taskid,
  1175. :saletask_itemmx[k].printid,:saletask_itemmx[k].itemid,
  1176. :saletask_itemmx[k].amt,:saletask_itemmx[k].mxdscrp;
  1177. DO WHILE commit_transaction.SQLCode = 0
  1178. k++
  1179. FETCH cur_saletaskmx_item INTO :saletask_itemmx[k].scid,:saletask_itemmx[k].taskid,
  1180. :saletask_itemmx[k].printid,:saletask_itemmx[k].itemid,
  1181. :saletask_itemmx[k].amt,:saletask_itemmx[k].mxdscrp;
  1182. LOOP
  1183. CLOSE cur_saletaskmx_item;
  1184. //检验明细是否读入完整
  1185. SELECT count(*) INTO :no_mxcheck
  1186. FROM u_saletask_itemmx
  1187. Where taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
  1188. IF commit_transaction.SQLCode <> 0 THEN
  1189. rslt = 0
  1190. arg_msg = "查询操作失败,销售订单费用明细数量"
  1191. GOTO ext
  1192. END IF
  1193. IF k <> (no_mxcheck+1) THEN
  1194. rslt = 0
  1195. arg_msg = "查询操作失败,销售订单费用明细"
  1196. GOTO ext
  1197. END IF
  1198. it_mxbt_item = k - 1
  1199. it_newbegin = False
  1200. it_updatebegin = False
  1201. ext:
  1202. IF rslt = 0 THEN p_reset()
  1203. RETURN rslt
  1204. end function
  1205. 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
  1206. Long i
  1207. Decimal ld_stoppqty,ld_stopsaleqty
  1208. Int li_isuse
  1209. If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
  1210. rslt = 0
  1211. Goto ext
  1212. End If
  1213. uo_price_order uo_po
  1214. uo_po = Create uo_price_order
  1215. uo_cust_sample uo_cs
  1216. uo_cs = Create uo_cust_sample
  1217. If uo_option_saletask_secaudit = -1000 Then
  1218. arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
  1219. rslt = 0
  1220. Goto ext
  1221. End If
  1222. If uo_option_saletask_fore_secaudit = -1000 Then
  1223. arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
  1224. rslt = 0
  1225. Goto ext
  1226. End If
  1227. If uo_option_if_oa_saletask = -1000 Then
  1228. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  1229. rslt = 0
  1230. Goto ext
  1231. End If
  1232. If uo_option_if_oa_saletask_fore = -1000 Then
  1233. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  1234. rslt = 0
  1235. Goto ext
  1236. End If
  1237. If uo_option_saletask_addware = -1000 Then
  1238. arg_msg = '选项:[039]销售订单审核自动加0库存,读取初始默认值失败,操作取消!'
  1239. rslt = 0
  1240. Goto ext
  1241. End If
  1242. If uo_option_saletask_fore_addware = -1000 Then
  1243. arg_msg = '选项:[402]销售预测单审核自动加0库存,读取初始默认值失败,操作取消!'
  1244. rslt = 0
  1245. Goto ext
  1246. End If
  1247. If uo_option_if_msg = -1000 Then
  1248. arg_msg = '选项:[044]销售订单使用消息确认,读取初始默认值失败,操作取消!'
  1249. rslt = 0
  1250. Goto ext
  1251. End If
  1252. If uo_option_saletask_set_planprice = -1000 Then
  1253. arg_msg = '选项:[201]销售订单/预测单审核前必须设定计划价,读取初始默认值失败,操作取消!'
  1254. rslt = 0
  1255. Goto ext
  1256. End If
  1257. If uo_option_inout_type = -1000 Then
  1258. arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
  1259. rslt = 0
  1260. Goto ext
  1261. End If
  1262. If arg_taskid <= 0 Then
  1263. rslt = 0
  1264. arg_msg = '错误销售订单唯一码'
  1265. Goto ext
  1266. End If
  1267. If getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
  1268. rslt = 0
  1269. Goto ext
  1270. End If
  1271. If status <> 0 Then
  1272. rslt = 0
  1273. arg_msg = "订单已经审核或已作其它处理,操作取消"
  1274. Goto ext
  1275. End If
  1276. //IF sys_option_if_oa = 1 AND audit_buildtype = 0 THEN
  1277. // IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
  1278. // rslt = 0
  1279. // GOTO ext
  1280. // END IF
  1281. //END IF
  1282. If Kind > 0 Then
  1283. If uof_p_check_dprice(arg_msg) = 0 Then
  1284. rslt = 0
  1285. Goto ext
  1286. End If
  1287. //yyx2014-1-4
  1288. If uof_p_check_date(arg_msg) = 0 Then
  1289. rslt = 0
  1290. Goto ext
  1291. End If
  1292. //
  1293. //lhd20140703
  1294. If uof_p_check_packprobom(arg_msg) = 0 Then
  1295. rslt = 0
  1296. Goto ext
  1297. End If
  1298. //
  1299. For i = 1 To it_mxbt
  1300. Select stoppqty,stopsaleqty,isuse
  1301. Into :ld_stoppqty,:ld_stopsaleqty,:li_isuse
  1302. From u_mtrldef
  1303. Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
  1304. If commit_transaction.SQLCode <> 0 Then
  1305. arg_msg = '查询:'+saletaskmx[i].mtrlcode+'资料属性失败,'+commit_transaction.SQLErrText
  1306. rslt = 0
  1307. Goto ext
  1308. End If
  1309. If li_isuse = 2 Then
  1310. If saletaskmx[i].saleqty > ld_stoppqty - ld_stopsaleqty Then
  1311. arg_msg = '产品:'+saletaskmx[i].mtrlcode+' 已待停产,待停产后可订数量为:'+String(ld_stoppqty,'#,##0.##########')+',待停产后已订数量为:'+String(ld_stopsaleqty,'#,##0.##########')+',不能再订:'+String(saletaskmx[i].saleqty,'#,##0.##########')
  1312. rslt = 0
  1313. Goto ext
  1314. End If
  1315. Update u_mtrldef
  1316. Set stopsaleqty = stopsaleqty + :saletaskmx[i].saleqty
  1317. Where mtrlid = :saletaskmx[i].mtrlid Using commit_transaction;
  1318. If commit_transaction.SQLCode <> 0 Then
  1319. arg_msg = '更新:'+saletaskmx[i].mtrlcode+'资料待停产后已订数失败,'+commit_transaction.SQLErrText
  1320. rslt = 0
  1321. Goto ext
  1322. End If
  1323. End If
  1324. Next
  1325. End If
  1326. Boolean lb_noplan = False
  1327. If uo_option_saletask_set_planprice = 1 Then
  1328. For i = 1 To it_mxbt
  1329. //销售订单/预测单审核前必须设定计划价
  1330. If saletaskmx[i].planprice <= 0 Then
  1331. arg_msg = arg_msg + '产品:'+saletaskmx[i].mtrlcode+'计划价未设定~r~n'
  1332. lb_noplan = True
  1333. End If
  1334. Next
  1335. If lb_noplan Then
  1336. rslt = 0
  1337. Goto ext
  1338. End If
  1339. End If
  1340. cnt = 0
  1341. Select count(*) Into :cnt
  1342. From u_user
  1343. Where username = :arg_emp Using commit_transaction;
  1344. If commit_transaction.SQLCode <> 0 Then
  1345. rslt = 0
  1346. arg_msg = "查询操作失败,操作员!"
  1347. Goto ext
  1348. End If
  1349. If cnt = 0 Then
  1350. rslt = 0
  1351. arg_msg = "操作员姓名未登记或已取消!"
  1352. Goto ext
  1353. End If
  1354. If Kind <> 0 Then
  1355. If uo_option_saletask_secaudit = 0 Then
  1356. Update u_saletask
  1357. Set permit_emp = :arg_emp ,
  1358. permit_date = getdate(),
  1359. p_Auditingdate = getdate(),
  1360. p_Auditingrep = :arg_emp,
  1361. status = 1
  1362. Where taskid = :arg_taskid
  1363. And scid = :arg_scid
  1364. And status = 0
  1365. Using commit_transaction;
  1366. If commit_transaction.SQLCode <> 0 Then
  1367. rslt = 0
  1368. arg_msg = "因网络或其它原因导致订单审核操作失败"+"~n"+commit_transaction.SQLErrText
  1369. Goto ext
  1370. ElseIf commit_transaction.SQLNRows = 0 Then
  1371. rslt = 0
  1372. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1373. Goto ext
  1374. End If
  1375. Else
  1376. Update u_saletask
  1377. Set permit_emp = :arg_emp ,
  1378. permit_date = getdate(),
  1379. status = 4
  1380. Where taskid = :arg_taskid
  1381. And scid = :arg_scid
  1382. And status = 0
  1383. Using commit_transaction;
  1384. If commit_transaction.SQLCode <> 0 Then
  1385. rslt = 0
  1386. arg_msg = "因网络或其它原因导致订单审核操作失败"+"~n"+commit_transaction.SQLErrText
  1387. Goto ext
  1388. ElseIf commit_transaction.SQLNRows = 0 Then
  1389. rslt = 0
  1390. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1391. Goto ext
  1392. End If
  1393. End If
  1394. Else
  1395. If uo_option_saletask_fore_secaudit = 0 Then
  1396. Update u_saletask
  1397. Set permit_emp = :arg_emp ,
  1398. permit_date = getdate(),
  1399. p_Auditingdate = getdate(),
  1400. p_Auditingrep = :arg_emp,
  1401. status = 1
  1402. Where taskid = :arg_taskid
  1403. And scid = :arg_scid
  1404. And status = 0
  1405. Using commit_transaction;
  1406. If commit_transaction.SQLCode <> 0 Then
  1407. rslt = 0
  1408. arg_msg = "因网络或其它原因导致订单审核操作失败"+"~n"+commit_transaction.SQLErrText
  1409. Goto ext
  1410. ElseIf commit_transaction.SQLNRows = 0 Then
  1411. rslt = 0
  1412. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1413. Goto ext
  1414. End If
  1415. Else
  1416. Update u_saletask
  1417. Set permit_emp = :arg_emp ,
  1418. permit_date = getdate(),
  1419. status = 4
  1420. Where taskid = :arg_taskid
  1421. And scid = :arg_scid
  1422. And status = 0
  1423. Using commit_transaction;
  1424. If commit_transaction.SQLCode <> 0 Then
  1425. rslt = 0
  1426. arg_msg = "因网络或其它原因导致订单审核操作失败"+"~n"+commit_transaction.SQLErrText
  1427. Goto ext
  1428. ElseIf commit_transaction.SQLNRows = 0 Then
  1429. rslt = 0
  1430. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1431. Goto ext
  1432. End If
  1433. End If
  1434. End If
  1435. //成品仓加0库存
  1436. //-----------------------------------------------
  1437. If (uo_option_saletask_addware > 0 And Kind > 0) or (uo_option_saletask_fore_addware > 0 and kind = 0) Then
  1438. Long ll_storageid_arr[],ll_storageid
  1439. Long ll_scid_arr[],ll_scid
  1440. String ll_storagename_arr[],ls_storagename
  1441. Long ll_j,count,ll_i
  1442. Int li_balctype_arr[],li_balctype
  1443. Int li_outtype_storage_arr[],li_outtype_storage
  1444. Int li_storagetype_storage_arr[],li_storagetype_storage
  1445. Long ll_cusid
  1446. String ls_status,ls_mtrlcode,ls_pcode,ls_woodcode,ls_plancode
  1447. Long ll_mtrlwareid,ll_mtrlid
  1448. Int li_storagetype
  1449. Int li_outtype,li_ifpackpro,li_ifmrppackpf
  1450. String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
  1451. Int li_ifover[],li_dipztype[]
  1452. Long ll_SonMtrlid[]
  1453. Long it_mxt = 1
  1454. Long ll_k
  1455. String ls_status_find,ls_woodcode_find,ls_pcode_find
  1456. //在订单所属分部的全部成品仓加0库存
  1457. If (uo_option_saletask_addware = 1 And Kind > 0) or (uo_option_saletask_fore_addware = 1 and kind = 0) Then
  1458. Declare pf_cur Cursor For
  1459. Select u_storage.storageid,
  1460. u_storage.storagename,
  1461. u_storage.scid,
  1462. u_storage.balctype,
  1463. u_storage.outtype,
  1464. u_storage.storagetype
  1465. From u_storage
  1466. Where ( u_storage.mtrlprp = 0 )
  1467. And ( u_storage.inuse = 1 )
  1468. And (u_storage.scid = :arg_scid);
  1469. Open pf_cur;
  1470. Fetch pf_cur Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
  1471. Do While sqlca.SQLCode = 0
  1472. count++
  1473. ll_storageid_arr[count] = ll_storageid
  1474. ll_storagename_arr[count] = ls_storagename
  1475. ll_scid_arr[count] = ll_scid
  1476. li_balctype_arr[count] = li_balctype
  1477. li_outtype_storage_arr[count] = li_outtype_storage
  1478. li_storagetype_storage_arr[count] = li_storagetype_storage
  1479. Fetch pf_cur Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
  1480. Loop
  1481. Close pf_cur;
  1482. End If
  1483. For ll_i = 1 To it_mxbt
  1484. ll_mtrlid = saletaskmx[ll_i].mtrlid
  1485. ls_mtrlcode = saletaskmx[ll_i].mtrlcode
  1486. ls_status = saletaskmx[ll_i].status
  1487. ls_pcode = saletaskmx[ll_i].pcode
  1488. ls_woodcode = saletaskmx[ll_i].woodcode
  1489. ls_plancode = saletaskmx[ll_i].mtrlcuscode
  1490. Select storagetype,outtype,ifpackpro,ifmrppackpf
  1491. Into :li_storagetype,:li_outtype,:li_ifpackpro,:li_ifmrppackpf
  1492. From u_mtrldef
  1493. Where mtrlid = :ll_mtrlid;
  1494. If sqlca.SQLCode <> 0 Then
  1495. arg_msg = '查询:'+ls_mtrlcode+'库存属性失败'
  1496. rslt = 0
  1497. Goto ext
  1498. End If
  1499. //在订单所属分部产品默认成品仓加0库存
  1500. If (uo_option_saletask_addware = 2 And Kind > 0) or (uo_option_saletask_fore_addware = 2 and kind = 0) Then
  1501. count = 0
  1502. Declare cur_mtrl_storage Cursor For
  1503. Select u_storage.storageid,
  1504. u_storage.storagename,
  1505. u_storage.scid,
  1506. u_storage.balctype,
  1507. u_storage.outtype,
  1508. u_storage.storagetype
  1509. From u_storage,u_mtrl_storage
  1510. Where ( u_storage.storageid = u_mtrl_storage.storageid )
  1511. And ( u_mtrl_storage.mtrlid = :ll_mtrlid )
  1512. And ( u_storage.mtrlprp = 0 )
  1513. And ( u_storage.inuse = 1 )
  1514. And ( u_storage.scid = :arg_scid );
  1515. Open cur_mtrl_storage;
  1516. Fetch cur_mtrl_storage Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
  1517. Do While sqlca.SQLCode = 0
  1518. count++
  1519. ll_storageid_arr[count] = ll_storageid
  1520. ll_storagename_arr[count] = ls_storagename
  1521. ll_scid_arr[count] = ll_scid
  1522. li_balctype_arr[count] = li_balctype
  1523. li_outtype_storage_arr[count] = li_outtype_storage
  1524. li_storagetype_storage_arr[count] = li_storagetype_storage
  1525. Fetch cur_mtrl_storage Into :ll_storageid,:ls_storagename,:ll_scid,:li_balctype,:li_outtype_storage,:li_storagetype_storage;
  1526. Loop
  1527. Close cur_mtrl_storage;
  1528. End If
  1529. For ll_j = 1 To count
  1530. If li_storagetype_storage_arr[ll_j] = 1 Then
  1531. ll_cusid = 0
  1532. Else
  1533. If li_balctype_arr[ll_j] = 1 Then
  1534. ll_cusid = cusid
  1535. Else
  1536. ll_cusid = 0
  1537. End If
  1538. End If
  1539. If li_storagetype = 1 Then ll_cusid = 0
  1540. Select top 1 mtrlwareid Into :ll_mtrlwareid
  1541. From u_mtrlware
  1542. Where mtrlid = :ll_mtrlid
  1543. And status = :ls_status
  1544. And storageid = :ll_storageid_arr[ll_j]
  1545. And woodcode = :ls_woodcode
  1546. And plancode = :ls_plancode
  1547. And pcode = :ls_pcode
  1548. And sptid = :ll_cusid;
  1549. If sqlca.SQLCode = -1 Then
  1550. arg_msg = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败'
  1551. rslt = 0
  1552. Goto ext
  1553. ElseIf sqlca.SQLCode = 100 Then
  1554. ll_mtrlwareid = 0
  1555. ll_mtrlwareid = f_sys_scidentity(ll_scid_arr[ll_j],"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
  1556. If ll_mtrlwareid <= 0 Then
  1557. rslt = 0
  1558. Goto ext
  1559. End If
  1560. Insert Into u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid)
  1561. 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);
  1562. If sqlca.SQLCode <> 0 Then
  1563. arg_msg = '产品:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查'
  1564. rslt = 0
  1565. Goto ext
  1566. End If
  1567. End If
  1568. If sys_option_saletask_addware_addbj = 1 Then
  1569. If uo_option_inout_type <> 0 And li_outtype <> 0 And li_ifpackpro = 1 Then
  1570. it_mxt = 1
  1571. Declare cur_pf Cursor For
  1572. Select u_PrdPF.SonMtrlid,
  1573. u_PrdPF.status,
  1574. u_PrdPF.woodcode,
  1575. u_PrdPF.pcode,
  1576. u_PrdPF.ifover,
  1577. u_prdpf.dipztype
  1578. From u_PrdPF,u_mtrl_pf
  1579. Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
  1580. And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
  1581. And ( u_PrdPF.mtrlid = :ll_mtrlid )
  1582. And ( u_mtrl_pf.ifdi = 1 And :li_ifpackpro = 0
  1583. Or u_mtrl_pf.ifdft = 1 And :li_ifpackpro = 1 And :li_ifmrppackpf = 0
  1584. Or u_mtrl_pf.ifdi = 2 And :li_ifpackpro = 1 And :li_ifmrppackpf = 1 );
  1585. Open cur_pf;
  1586. Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  1587. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt];
  1588. Do While sqlca.SQLCode = 0
  1589. it_mxt++
  1590. Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  1591. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt];
  1592. Loop
  1593. it_mxt = it_mxt - 1
  1594. Close cur_pf;
  1595. For ll_k = 1 To it_mxt
  1596. If li_ifover[ll_k] = 1 Then
  1597. Choose Case li_dipztype[ll_k]
  1598. Case 0
  1599. ls_status_find = ls_status
  1600. ls_woodcode_find = ''
  1601. ls_pcode_find = ''
  1602. Case 1
  1603. ls_status_find = ''
  1604. ls_woodcode_find = ls_woodcode
  1605. ls_pcode_find = ''
  1606. Case 2
  1607. ls_status_find = ''
  1608. ls_woodcode_find = ''
  1609. ls_pcode_find = ls_pcode
  1610. Case 3
  1611. ls_status_find = ls_status
  1612. ls_woodcode_find = ls_woodcode
  1613. ls_pcode_find = ''
  1614. Case 4
  1615. ls_status_find = ''
  1616. ls_woodcode_find = ls_woodcode
  1617. ls_pcode_find = ls_pcode
  1618. Case 5
  1619. ls_status_find = ls_status
  1620. ls_woodcode_find = ''
  1621. ls_pcode_find = ls_pcode
  1622. Case 6
  1623. ls_status_find = ls_status
  1624. ls_woodcode_find = ls_woodcode
  1625. ls_pcode_find = ls_pcode
  1626. End Choose
  1627. Else
  1628. ls_status_find = ls_pf_status[ll_k]
  1629. ls_woodcode_find = ls_pf_woodcode[ll_k]
  1630. ls_pcode_find = ls_pf_pcode[ll_k]
  1631. End If
  1632. ls_status_find = Trim(ls_status_find)
  1633. ls_woodcode_find = Trim(ls_woodcode_find)
  1634. ls_pcode_find = Trim(ls_pcode_find)
  1635. Select top 1 mtrlwareid Into :ll_mtrlwareid
  1636. From u_mtrlware
  1637. Where mtrlid = :ll_SonMtrlid[ll_k]
  1638. And status = :ls_status_find
  1639. And storageid = :ll_storageid_arr[ll_j]
  1640. And woodcode = :ls_woodcode_find
  1641. And plancode = :ls_plancode
  1642. And pcode = :ls_pcode_find
  1643. And sptid = :ll_cusid;
  1644. If sqlca.SQLCode = -1 Then
  1645. arg_msg = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败'
  1646. rslt = 0
  1647. Goto ext
  1648. ElseIf sqlca.SQLCode = 100 Then
  1649. ll_mtrlwareid = 0
  1650. ll_mtrlwareid = f_sys_scidentity(ll_scid_arr[ll_j],"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
  1651. If ll_mtrlwareid <= 0 Then
  1652. rslt = 0
  1653. Goto ext
  1654. End If
  1655. Insert Into u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid)
  1656. 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);
  1657. If sqlca.SQLCode <> 0 Then
  1658. arg_msg = '产品:'+ls_mtrlcode+'下级包件,仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查'
  1659. rslt = 0
  1660. Goto ext
  1661. End If
  1662. End If
  1663. Next
  1664. End If
  1665. End If
  1666. Next
  1667. Next
  1668. End If
  1669. If uo_option_if_msg = 1 Then
  1670. If f_billmsg(arg_scid,taskcode,taskcode+'销售订单确认',taskcode+'销售订单确认',commit_transaction,arg_msg,False) = 0 Then
  1671. rslt = 0
  1672. Goto ext
  1673. End If
  1674. End If
  1675. //默认订单调度
  1676. If Kind <> 0 Then
  1677. If uo_option_saletask_secaudit = 0 Then
  1678. For i = 1 To it_mxbt
  1679. If p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,False) = 0 Then
  1680. rslt = 0
  1681. Goto ext
  1682. End If
  1683. Next
  1684. End If
  1685. Else
  1686. If uo_option_saletask_fore_secaudit = 0 Then
  1687. For i = 1 To it_mxbt
  1688. If p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,False) = 0 Then
  1689. rslt = 0
  1690. Goto ext
  1691. End If
  1692. Next
  1693. End If
  1694. End If
  1695. If Kind <> 0 Then
  1696. If uo_option_if_oa_saletask = 1 And uo_option_saletask_secaudit = 1 Then
  1697. If f_oa(commit_transaction,False,arg_msg,6,scid,taskid,taskcode,relcode,dscrp) = 0 Then
  1698. rslt = 0
  1699. Goto ext
  1700. End If
  1701. End If
  1702. Else
  1703. If uo_option_if_oa_saletask_fore = 1 And uo_option_saletask_fore_secaudit = 1 Then
  1704. If f_oa(commit_transaction,False,arg_msg,1324,scid,taskid,taskcode,relcode,dscrp) = 0 Then
  1705. rslt = 0
  1706. Goto ext
  1707. End If
  1708. End If
  1709. End If
  1710. If Kind <> 0 Then //更新价格指令使用次数
  1711. For i = 1 To it_mxbt
  1712. If saletaskmx[i].poid > 0 Then
  1713. If uo_po.uof_add_salenum(saletaskmx[i].poid, saletaskmx[i].saleqty, 0, False, arg_msg) = 0 Then
  1714. rslt = 0
  1715. Goto ext
  1716. End If
  1717. End If
  1718. Next
  1719. End If
  1720. //更新意向单完成数, 完成意向单
  1721. For i = 1 To it_mxbt
  1722. If saletaskmx[i].sampleid > 0 Then
  1723. If uo_cs.trycmpl(saletaskmx[i].sampleid, saletaskmx[i].saleqty, arg_msg, False) = 0 Then
  1724. rslt = 0
  1725. Goto ext
  1726. End If
  1727. End If
  1728. Next
  1729. it_newbegin = False
  1730. it_updatebegin = False
  1731. ext:
  1732. If rslt = 0 Then
  1733. Rollback Using commit_transaction;
  1734. ElseIf arg_ifcommit And rslt = 1 Then
  1735. Commit Using commit_transaction;
  1736. End If
  1737. p_reset()
  1738. Destroy uo_po
  1739. Destroy uo_cs
  1740. Return rslt
  1741. end function
  1742. public function integer tempstoptask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  1743. IF arg_taskid <= 0 THEN
  1744. rslt = 0
  1745. ARG_MSG = '错误销售订单唯一码'
  1746. GOTO ext
  1747. END IF
  1748. IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
  1749. rslt = 0
  1750. GOTO ext
  1751. END IF
  1752. IF Status <> 1 AND Status <> 2 THEN
  1753. rslt = 0
  1754. ARG_MSG = "订单只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
  1755. GOTO ext
  1756. END IF
  1757. IF Status = 1 THEN
  1758. UPDATE u_SaleTask
  1759. SET Status = 2,stopemp = :publ_operator
  1760. Where TaskID = :arg_taskid AND scid = :arg_scid USING commit_transaction;
  1761. IF commit_transaction.SQLCode <> 0 THEN
  1762. rslt = 0
  1763. ARG_MSG = "因网络或其它原因导致暂停销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  1764. GOTO ext
  1765. END IF
  1766. ELSE
  1767. UPDATE u_SaleTask
  1768. SET Status = 1,stopemp = ''
  1769. Where TaskID = :arg_taskid AND scid = :arg_scid USING commit_transaction ;
  1770. IF commit_transaction.SQLCode <> 0 THEN
  1771. rslt = 0
  1772. ARG_MSG = "因网络或其它原因导致取消暂停销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  1773. GOTO ext
  1774. END IF
  1775. END IF
  1776. it_newbegin = FALSE
  1777. it_updatebegin = FALSE
  1778. ext:
  1779. IF rslt = 0 THEN
  1780. ROLLBACK USING commit_transaction;
  1781. ELSEIF arg_ifcommit AND rslt = 1 THEN
  1782. COMMIT USING commit_transaction;
  1783. END IF
  1784. p_reset()
  1785. Return (rslt)
  1786. end function
  1787. public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
  1788. //从置对象,设定业务类型与关联ID,准备更新进仓单
  1789. //0 fail 1 success
  1790. Long rslt = 1,CNT = 0
  1791. IF uo_option_if_oa_saletask = -1000 THEN
  1792. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  1793. rslt = 0
  1794. GOTO ext
  1795. END IF
  1796. IF uo_option_if_oa_saletask_fore = -1000 THEN
  1797. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  1798. rslt = 0
  1799. GOTO ext
  1800. END IF
  1801. IF arg_scid < 0 THEN
  1802. arg_msg = '请选择分部'
  1803. rslt = 0
  1804. GOTO ext
  1805. END IF
  1806. IF arg_taskid <= 0 THEN
  1807. rslt = 0
  1808. arg_msg = '错误销售订单唯一码'
  1809. GOTO ext
  1810. END IF
  1811. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  1812. rslt = 0
  1813. GOTO ext
  1814. END IF
  1815. IF Status <> 0 THEN
  1816. rslt = 0
  1817. arg_msg = '已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
  1818. GOTO ext
  1819. END IF
  1820. if priceflag <> 0 then
  1821. rslt = 0
  1822. arg_msg = '单据已确认,不能修改'
  1823. goto ext
  1824. end if
  1825. IF Kind <> 0 THEN
  1826. IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
  1827. IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
  1828. rslt = 0
  1829. GOTO ext
  1830. END IF
  1831. END IF
  1832. ELSE
  1833. IF uo_option_if_oa_saletask_fore = 1 And audit_buildtype = 0 THEN
  1834. IF f_check_if_oaflow(arg_scid,arg_taskid,1324,arg_msg ) = 0 THEN
  1835. rslt = 0
  1836. GOTO ext
  1837. END IF
  1838. END IF
  1839. END IF
  1840. it_newbegin = False
  1841. it_updatebegin = True
  1842. p_clearmx() //清除明细
  1843. msttakeamt = 0
  1844. scid = arg_scid
  1845. ext:
  1846. IF rslt = 0 THEN p_reset()
  1847. RETURN rslt
  1848. end function
  1849. public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i,j,k
  1850. Long ls_newtaskid
  1851. DateTime server_datetime
  1852. Long ll_taskid
  1853. String ls_sccode
  1854. String ls_mtrlcuscode
  1855. String ls_typebillcode
  1856. Long ll_typeid
  1857. String ls_taskcode
  1858. Int li_pricelistflag
  1859. Int li_selecttype_cust,li_selecttype_def,li_ifbj
  1860. If uo_option_disuse_saletask = -1000 Then
  1861. rslt = 0
  1862. arg_msg = '选项:[291]启用销售订单废弃单,读取初始默认值失败,操作取消!'
  1863. Goto ext
  1864. End If
  1865. If uo_option_taskplancode_auto = -1000 Then
  1866. arg_msg = '选项:[048]销售订单生产批号类型,读取初始默认值失败,操作取消!'
  1867. rslt = 0
  1868. Goto ext
  1869. End If
  1870. If uo_option_saletask_rebate_check = -1000 Then
  1871. arg_msg = '选项:[364]客户折扣没有审核,不能保存销售订单,读取初始默认值失败,操作取消!'
  1872. rslt = 0
  1873. Goto ext
  1874. End If
  1875. If IsNull(dscrp) Then dscrp = ''
  1876. If IsNull(dscrp2) Then dscrp2 = ''
  1877. If IsNull(assign_emp) Then assign_emp = ''
  1878. If IsNull(arg_operator) Then arg_operator = ''
  1879. If IsNull(paytype) Then paytype = ''
  1880. If IsNull(relcode) Then relcode = ''
  1881. If IsNull(banktypeid) Then banktypeid = 0
  1882. If IsNull(moneyid) Then moneyid = 0
  1883. If IsNull(damt) Then damt = 0
  1884. If IsNull(otheramt) Then otheramt = 0
  1885. If IsNull(mrate) Then mrate = 0
  1886. If IsNull(Kind) Then Kind = 0
  1887. If IsNull(freight) Then freight = ''
  1888. If IsNull(freight_tele) Then freight_tele = ''
  1889. If IsNull(cus_address) Then cus_address = ''
  1890. If IsNull(cus_tele) Then cus_tele = ''
  1891. If IsNull(cus_fax) Then cus_fax = ''
  1892. If IsNull(upname) Then upname = ''
  1893. If IsNull(msttakeamt) Then msttakeamt = 0
  1894. If IsNull(typeid) Then typeid = 0
  1895. If IsNull(cusid) Then cusid = 0
  1896. If IsNull(rel_rep) Then rel_rep = ''
  1897. If IsNull(Level) Then Level = 2
  1898. If IsNull(dscrp3) Then dscrp3 = ''
  1899. If IsNull(station_address) Then station_address = ''
  1900. If IsNull(sendUser) Then sendUser = ''
  1901. If IsNull(fiebrelcode) Then fiebrelcode = ''
  1902. If IsNull(exchangeid) Then exchangeid = 0
  1903. operator = arg_operator
  1904. If it_newbegin = False And it_updatebegin = False Then
  1905. rslt = 0
  1906. arg_msg = "非编辑状态不可以提交"
  1907. Goto ext
  1908. End If
  1909. If Trim(assign_emp) = '' Then
  1910. rslt = 0
  1911. If Kind <> 4 Then
  1912. arg_msg = "请输入订单业务员"
  1913. Else
  1914. arg_msg = "请输入经手员"
  1915. End If
  1916. Goto ext
  1917. End If
  1918. If Kind > 0 And Kind <> 3 And Kind <> 4 Then
  1919. cnt = 0
  1920. Select count(*) Into :cnt
  1921. From u_cust
  1922. Where cusid = :cusid Using commit_transaction ;
  1923. If commit_transaction.SQLCode <> 0 Then
  1924. rslt = 0
  1925. arg_msg = "查询操作失败,客户资料"
  1926. Goto ext
  1927. End If
  1928. If cnt = 0 Then
  1929. rslt = 0
  1930. arg_msg = "客户未定义或错误"
  1931. Goto ext
  1932. End If
  1933. If uo_option_saletask_rebate_check = 1 Then
  1934. Select pricelistflag
  1935. Into :li_pricelistflag
  1936. From u_cust
  1937. Where cusid = :cusid Using commit_transaction ;
  1938. If commit_transaction.SQLCode <> 0 Then
  1939. rslt = 0
  1940. arg_msg = "查询操作失败,客户默认价格表/折扣"
  1941. Goto ext
  1942. End If
  1943. If li_pricelistflag = 0 Then
  1944. rslt = 0
  1945. arg_msg = "客户折扣未审核,不能保存"
  1946. Goto ext
  1947. End If
  1948. End If
  1949. cnt = 0
  1950. Select count(*) Into :cnt
  1951. From cw_banktype
  1952. Where banktypeid = :banktypeid Using commit_transaction;
  1953. If commit_transaction.SQLCode <> 0 Then
  1954. arg_msg = '查询结算方式失败'
  1955. rslt = 0
  1956. Goto ext
  1957. End If
  1958. If cnt = 0 Then
  1959. arg_msg = '结算方式不存在'
  1960. rslt = 0
  1961. Goto ext
  1962. End If
  1963. cnt = 0
  1964. Select count(*) Into :cnt
  1965. From cw_currency
  1966. Where moneyid = :moneyid Using commit_transaction;
  1967. If commit_transaction.SQLCode <> 0 Then
  1968. arg_msg = '查询币种失败'
  1969. rslt = 0
  1970. Goto ext
  1971. End If
  1972. If cnt = 0 Then
  1973. arg_msg = '币种资料不存在'
  1974. rslt = 0
  1975. Goto ext
  1976. End If
  1977. If mrate = 0 Then
  1978. arg_msg = '币种汇率错误'
  1979. rslt = 0
  1980. Goto ext
  1981. End If
  1982. If f_moneyid_rate_check(moneyid,mrate,arg_msg) = 0 Then
  1983. rslt = 0
  1984. Goto ext
  1985. End If
  1986. //综合订单分类及客户设定,得出最终生效的选择限制 selecttype
  1987. If f_get_selecttype(typeid,cusid,selecttype,arg_msg) = 0 Then
  1988. rslt = 0
  1989. Goto ext
  1990. End If
  1991. ElseIf Kind = 0 And cusid > 0 Then
  1992. cnt = 0
  1993. Select count(*) Into :cnt
  1994. From u_cust
  1995. Where cusid = :cusid Using commit_transaction ;
  1996. If commit_transaction.SQLCode <> 0 Then
  1997. rslt = 0
  1998. arg_msg = "查询操作失败,客户资料"
  1999. Goto ext
  2000. End If
  2001. If cnt = 0 Then
  2002. rslt = 0
  2003. arg_msg = "客户未定义或错误"
  2004. Goto ext
  2005. End If
  2006. End If
  2007. If Kind > 0 And Kind <> 4 Then
  2008. If uo_option_saletask_ifuse_typebillcode = 1 Then
  2009. If typeid = 0 Then
  2010. arg_msg = '请先选择订单分类'
  2011. rslt = 0
  2012. Goto ext
  2013. End If
  2014. Select billcode Into :ls_typebillcode
  2015. From u_saletype
  2016. Where typeid = :typeid Using commit_transaction;
  2017. If commit_transaction.SQLCode <> 0 Then
  2018. arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
  2019. rslt = 0
  2020. Goto ext
  2021. End If
  2022. If ls_typebillcode = '' Then
  2023. arg_msg = '订单分类未设置对应单据抬头,请检查'
  2024. rslt = 0
  2025. Goto ext
  2026. End If
  2027. End If
  2028. End If
  2029. Select Top 1 getdate() Into :server_datetime From u_user Using commit_transaction ;
  2030. If commit_transaction.SQLCode <> 0 Then
  2031. rslt = 0
  2032. arg_msg = "查询操作失败,日期 "
  2033. Goto ext
  2034. End If
  2035. //检查订货日期是否合法(不能距离当前时间10年以上)
  2036. if abs(year(date(server_datetime)) - year(date(taskdate))) > 10 then
  2037. rslt = 0
  2038. arg_msg = '请检查订货日期是否正确(不能距离当前时间10年以上)!'
  2039. goto ext
  2040. end if
  2041. If f_check_inoutdate(0,taskdate,False,arg_msg) = 0 Then
  2042. rslt = 0
  2043. Goto ext
  2044. End If
  2045. If it_mxbt = 0 Then //如果输入物料资料错则已经清空
  2046. rslt = 0
  2047. arg_msg = "没有正确销售订单明细内容"
  2048. Goto ext
  2049. End If
  2050. If Date(taskdate) > Date(requiredate) Then
  2051. arg_msg = '交货日期不能在订货日期前'
  2052. rslt = 0
  2053. Goto ext
  2054. End If
  2055. cnt = 0
  2056. Select count(*) Into :cnt
  2057. From u_user
  2058. Where username = :operator Using commit_transaction ;
  2059. If commit_transaction.SQLCode <> 0 Then
  2060. rslt = 0
  2061. arg_msg = "查询操作失败,操作员!"
  2062. Goto ext
  2063. End If
  2064. If cnt = 0 Then
  2065. rslt = 0
  2066. arg_msg = "操作员姓名未登记或已取消!"
  2067. Goto ext
  2068. End If
  2069. opdate = server_datetime //填写单据建立时间(最近修改时间)
  2070. If Kind = 1 And taskid > 0 And uo_option_disuse_saletask = 1 Then
  2071. If uof_disuse(scid,taskid,0,arg_msg,False) = 0 Then
  2072. rslt = 0
  2073. Goto ext
  2074. End If
  2075. End If
  2076. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  2077. If taskid = 0 Then //新建
  2078. ll_taskid = f_sys_scidentity(scid,"u_saletask","taskid",arg_msg,True,id_sqlca)
  2079. If ll_taskid <= 0 Then
  2080. rslt = 0
  2081. Goto ext
  2082. End If
  2083. //取分部代号
  2084. If f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 Then
  2085. rslt = 0
  2086. Goto ext
  2087. End If
  2088. If Kind = 0 Then
  2089. taskcode = getid(scid,ls_sccode + 'SF',Date(server_datetime),False,commit_transaction)
  2090. If taskcode = "err" Then
  2091. taskcode = ''
  2092. rslt = 0
  2093. arg_msg = "无法获取销售预测单编号"+"~n"+sqlca.SQLErrText
  2094. Goto ext
  2095. End If
  2096. ElseIf Kind = 1 Then
  2097. If uo_option_saletask_ifuse_typebillcode = 0 Then
  2098. taskcode = getid(scid,ls_sccode + 'SG',Date(server_datetime),False,commit_transaction)
  2099. If taskcode = "err" Then
  2100. taskcode = ''
  2101. rslt = 0
  2102. arg_msg = "无法获取销售订单编号"+"~n"+sqlca.SQLErrText
  2103. Goto ext
  2104. End If
  2105. Else
  2106. taskcode = getid_saletask(scid,ls_sccode + ls_typebillcode,Date(server_datetime),False,commit_transaction)
  2107. If taskcode = "err" Then
  2108. taskcode = ''
  2109. rslt = 0
  2110. arg_msg = "无法获取销售订单分类编号"+"~n"+sqlca.SQLErrText
  2111. Goto ext
  2112. End If
  2113. End If
  2114. ElseIf Kind = 2 Then
  2115. taskcode = getid(scid,ls_sccode + 'SJ',Date(server_datetime),False,commit_transaction)
  2116. If taskcode = "err" Then
  2117. taskcode = ''
  2118. rslt = 0
  2119. arg_msg = "无法获取来料加工订单编号"+"~n"+sqlca.SQLErrText
  2120. Goto ext
  2121. End If
  2122. ElseIf Kind = 3 Then
  2123. taskcode = getid(scid,ls_sccode + 'SR',Date(server_datetime),False,commit_transaction)
  2124. If taskcode = "err" Then
  2125. taskcode = ''
  2126. rslt = 0
  2127. arg_msg = "无法获取销售返工订单编号"+"~n"+sqlca.SQLErrText
  2128. Goto ext
  2129. End If
  2130. ElseIf Kind = 4 Then
  2131. taskcode = getid(scid,ls_sccode + 'FX',Date(server_datetime),False,commit_transaction)
  2132. If taskcode = "err" Then
  2133. taskcode = ''
  2134. rslt = 0
  2135. arg_msg = "无法获取分部需求单编号"+"~n"+sqlca.SQLErrText
  2136. Goto ext
  2137. End If
  2138. End If
  2139. Insert Into u_saletask
  2140. ( scid,
  2141. taskcode,
  2142. kind,
  2143. cusid,
  2144. requiredate,
  2145. status,
  2146. opemp,
  2147. assign_emp,
  2148. dscrp,
  2149. dscrp2,
  2150. opdate,
  2151. taskid,
  2152. damt,
  2153. otheramt,
  2154. freight,
  2155. taskdate,
  2156. banktypeid,
  2157. moneyid,
  2158. relcode,
  2159. paytype,
  2160. freight_tele,
  2161. cus_address,
  2162. cus_tele,
  2163. cus_fax,
  2164. mrate,
  2165. upname,
  2166. msttakeamt,
  2167. typeid,
  2168. rel_rep,
  2169. level,
  2170. sendTime,
  2171. sendUser,
  2172. fiebrelcode,
  2173. mxrowcount,
  2174. dscrp3,
  2175. exchangeid,
  2176. station_address,
  2177. selecttype)
  2178. Values ( :scid,
  2179. :taskcode,
  2180. :Kind,
  2181. :cusid,
  2182. :requiredate,
  2183. :status,
  2184. :operator,
  2185. :assign_emp,
  2186. :dscrp,
  2187. :dscrp2,
  2188. :opdate,
  2189. :ll_taskid,
  2190. :damt,
  2191. :otheramt,
  2192. :freight,
  2193. :taskdate,
  2194. :banktypeid,
  2195. :moneyid,
  2196. :relcode,
  2197. :paytype,
  2198. :freight_tele,
  2199. :cus_address,
  2200. :cus_tele,
  2201. :cus_fax,
  2202. :mrate,
  2203. :upname,
  2204. :msttakeamt,
  2205. :typeid,
  2206. :rel_rep,
  2207. :Level,
  2208. :sendTime,
  2209. :sendUser,
  2210. :fiebrelcode,
  2211. :it_mxbt,
  2212. :dscrp3,
  2213. :exchangeid,
  2214. :station_address,
  2215. :selecttype) Using commit_transaction ;
  2216. If commit_transaction.SQLCode <> 0 Then
  2217. rslt = 0
  2218. arg_msg = "因网络或其它原因导致插入销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  2219. Goto ext
  2220. End If
  2221. //读取新taskid
  2222. taskid = ll_taskid
  2223. For i = 1 To it_mxbt
  2224. ls_mtrlcuscode = ''
  2225. If Kind = 4 Then
  2226. ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
  2227. Else
  2228. Choose Case uo_option_taskplancode_auto
  2229. Case 1
  2230. ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
  2231. Case 2
  2232. ls_mtrlcuscode = taskcode
  2233. Case 3
  2234. ls_mtrlcuscode = relcode
  2235. Case 4
  2236. ls_mtrlcuscode = taskcode + '.' + String(i,'000')
  2237. Case 5
  2238. ls_mtrlcuscode = ''
  2239. Case Else
  2240. arg_msg = '错误的生产批号,管理员请在系统选项设置先设定好订单批号模式'
  2241. rslt = 0
  2242. Goto ext
  2243. End Choose
  2244. End If
  2245. Insert Into u_saletaskmx
  2246. ( scid,
  2247. saleqty,
  2248. price,
  2249. plprice,
  2250. mtrlid,
  2251. taskid,
  2252. mxdscrp,
  2253. mxdscrp2,
  2254. fprice,
  2255. rebate,
  2256. status,
  2257. printid,
  2258. woodcode,
  2259. pcode,
  2260. mtrlcuscode,
  2261. enprice,
  2262. outtypestr,
  2263. dftsaleprice,
  2264. requiredate,
  2265. pfcode,
  2266. scidprice,
  2267. quoteid,
  2268. quotecode,
  2269. quoteprintid,
  2270. pricetype,
  2271. capacity,
  2272. nprice,
  2273. poid,
  2274. taxrate,
  2275. addqty,
  2276. priceformula,
  2277. sampleid,
  2278. enacprice,
  2279. net_weight,
  2280. gross_weight,
  2281. cubage,
  2282. fjcnt,
  2283. fjstr,
  2284. porebate)
  2285. Values (:scid,
  2286. :saletaskmx[i].saleqty,
  2287. :saletaskmx[i].acprice,
  2288. :saletaskmx[i].plprice,
  2289. :saletaskmx[i].mtrlid,
  2290. :ll_taskid,
  2291. :saletaskmx[i].dscrp,
  2292. :saletaskmx[i].dscrp2,
  2293. :saletaskmx[i].fprice,
  2294. :saletaskmx[i].rebate,
  2295. :saletaskmx[i].status,
  2296. :saletaskmx[i].printid,
  2297. :saletaskmx[i].woodcode,
  2298. :saletaskmx[i].pcode,
  2299. :ls_mtrlcuscode,
  2300. :saletaskmx[i].enprice,
  2301. :saletaskmx[i].outtype,
  2302. :saletaskmx[i].dftsaleprice,
  2303. :saletaskmx[i].requiredate,
  2304. :saletaskmx[i].pfcode,
  2305. :saletaskmx[i].scidprice,
  2306. :saletaskmx[i].quoteid,
  2307. :saletaskmx[i].quotecode,
  2308. :saletaskmx[i].quoteprintid,
  2309. :saletaskmx[i].pricetype,
  2310. :saletaskmx[i].capacity,
  2311. :saletaskmx[i].nprice,
  2312. :saletaskmx[i].poid,
  2313. :saletaskmx[i].taxrate,
  2314. :saletaskmx[i].addqty,
  2315. :saletaskmx[i].priceformula,
  2316. :saletaskmx[i].sampleid,
  2317. :saletaskmx[i].enacprice,
  2318. :saletaskmx[i].net_weight,
  2319. :saletaskmx[i].gross_weight,
  2320. :saletaskmx[i].cubage,
  2321. :saletaskmx[i].fjcnt,
  2322. :saletaskmx[i].fjstr,
  2323. :saletaskmx[i].porebate) Using commit_transaction;
  2324. If commit_transaction.SQLCode <> 0 Then
  2325. taskid = 0 //还原taskid
  2326. rslt = 0
  2327. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  2328. Goto ext
  2329. End If
  2330. If Len(Trim(saletaskmx[i].dscrp_text)) > 0 Then
  2331. Insert Into u_SaleTaskMx_dscrp
  2332. (scid,
  2333. taskid,
  2334. printid,
  2335. dscrp)
  2336. Values
  2337. (:scid,
  2338. :ll_taskid,
  2339. :saletaskmx[i].printid,
  2340. :saletaskmx[i].dscrp_text) Using commit_transaction;
  2341. If commit_transaction.SQLCode <> 0 Then
  2342. taskid = 0 //还原taskid
  2343. rslt = 0
  2344. arg_msg = "因网络或其它原因导致插入明细备注操作失败"+"~n"+commit_transaction.SQLErrText
  2345. Goto ext
  2346. End If
  2347. End If
  2348. Next
  2349. For i = 1 To it_mxbtmx
  2350. ls_mtrlcuscode = ''
  2351. If Kind = 4 Then
  2352. ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
  2353. Else
  2354. Choose Case uo_option_taskplancode_auto
  2355. Case 1
  2356. ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
  2357. Case 2
  2358. ls_mtrlcuscode = taskcode
  2359. Case 3
  2360. ls_mtrlcuscode = relcode
  2361. Case 4
  2362. ls_mtrlcuscode = taskcode + '.' + String(i,'000')
  2363. Case 5
  2364. ls_mtrlcuscode = ''
  2365. Case Else
  2366. arg_msg = '错误的生产批号,管理员请在系统选项设置先设定好订单批号模式'
  2367. rslt = 0
  2368. Goto ext
  2369. End Choose
  2370. End If
  2371. Insert Into u_saletaskmxmx
  2372. ( scid,
  2373. saleqty,
  2374. price,
  2375. plprice,
  2376. mtrlid,
  2377. taskid,
  2378. mxdscrp,
  2379. mxdscrp2,
  2380. fprice,
  2381. rebate,
  2382. status,
  2383. printid,
  2384. woodcode,
  2385. pcode,
  2386. mtrlcuscode,
  2387. enprice,
  2388. outtypestr,
  2389. dftsaleprice,
  2390. requiredate,
  2391. pfcode,
  2392. scidprice,
  2393. quoteid,
  2394. quotecode,
  2395. quoteprintid,
  2396. pricetype,
  2397. capacity,
  2398. nprice,
  2399. poid,
  2400. taxrate,
  2401. addqty,
  2402. priceformula,
  2403. enacprice,
  2404. net_weight,
  2405. gross_weight,
  2406. cubage)
  2407. Values (:scid,
  2408. :saletaskmxmx[i].saleqty,
  2409. :saletaskmxmx[i].price,
  2410. :saletaskmxmx[i].plprice,
  2411. :saletaskmxmx[i].mtrlid,
  2412. :ll_taskid,
  2413. :saletaskmxmx[i].mxdscrp,
  2414. :saletaskmxmx[i].mxdscrp2,
  2415. :saletaskmxmx[i].fprice,
  2416. :saletaskmxmx[i].rebate,
  2417. :saletaskmxmx[i].status,
  2418. :saletaskmxmx[i].printid,
  2419. :saletaskmxmx[i].woodcode,
  2420. :saletaskmxmx[i].pcode,
  2421. :ls_mtrlcuscode,
  2422. :saletaskmxmx[i].enprice,
  2423. :saletaskmxmx[i].outtypestr,
  2424. :saletaskmxmx[i].dftsaleprice,
  2425. :saletaskmxmx[i].requiredate,
  2426. :saletaskmxmx[i].pfcode,
  2427. :saletaskmxmx[i].scidprice,
  2428. :saletaskmxmx[i].quoteid,
  2429. :saletaskmxmx[i].quotecode,
  2430. :saletaskmxmx[i].quoteprintid,
  2431. :saletaskmxmx[i].pricetype,
  2432. :saletaskmxmx[i].capacity,
  2433. :saletaskmxmx[i].nprice,
  2434. :saletaskmxmx[i].poid,
  2435. :saletaskmxmx[i].taxrate,
  2436. :saletaskmxmx[i].addqty,
  2437. :saletaskmxmx[i].priceformula,
  2438. :saletaskmxmx[i].enacprice,
  2439. :saletaskmxmx[i].net_weight,
  2440. :saletaskmxmx[i].gross_weight,
  2441. :saletaskmxmx[i].cubage) Using commit_transaction;
  2442. If commit_transaction.SQLCode <> 0 Then
  2443. taskid = 0 //还原taskid
  2444. rslt = 0
  2445. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  2446. Goto ext
  2447. End If
  2448. Next
  2449. If Kind = 2 Then
  2450. For j = 1 To it_mxbt_in
  2451. Insert Into u_saletaskmx_in
  2452. (scid,
  2453. taskid,
  2454. printid,
  2455. mtrlid,
  2456. plancode,
  2457. status,
  2458. woodcode,
  2459. pcode,
  2460. qty,
  2461. fprice,
  2462. mxdscrp,
  2463. storageid)
  2464. Values
  2465. (:scid,
  2466. :ll_taskid,
  2467. :saletaskmx_in[j].printid,
  2468. :saletaskmx_in[j].mtrlid,
  2469. :saletaskmx_in[j].plancode,
  2470. :saletaskmx_in[j].status,
  2471. :saletaskmx_in[j].woodcode,
  2472. :saletaskmx_in[j].pcode,
  2473. :saletaskmx_in[j].qty,
  2474. :saletaskmx_in[j].fprice,
  2475. :saletaskmx_in[j].mxdscrp,
  2476. :saletaskmx_in[j].storageid) Using commit_transaction;
  2477. If commit_transaction.SQLCode <> 0 Then
  2478. taskid = 0 //还原taskid
  2479. rslt = 0
  2480. arg_msg = "因网络或其它原因导致插入收料明细操作失败"+"~n"+commit_transaction.SQLErrText
  2481. Goto ext
  2482. End If
  2483. Next
  2484. End If
  2485. For k = 1 To it_mxbt_item
  2486. Insert Into u_saletask_itemmx
  2487. (scid,
  2488. taskid,
  2489. printid,
  2490. itemid,
  2491. amt,
  2492. mxdscrp)
  2493. Values (:scid,
  2494. :ll_taskid,
  2495. :saletask_itemmx[k].printid,
  2496. :saletask_itemmx[k].itemid,
  2497. :saletask_itemmx[k].amt,
  2498. :saletask_itemmx[k].mxdscrp) Using commit_transaction;
  2499. If commit_transaction.SQLCode <> 0 Then
  2500. taskid = 0 //还原taskid
  2501. rslt = 0
  2502. arg_msg = "因网络或其它原因导致插入费用明细操作失败"+"~n"+commit_transaction.SQLErrText
  2503. Goto ext
  2504. End If
  2505. Next
  2506. cnt = 0
  2507. Select count(*) Into :cnt
  2508. From u_cust_wrkgrp_mxdscrp
  2509. Where cusid = :cusid
  2510. And mtrlid = 0;
  2511. If sqlca.SQLCode <> 0 Then cnt = 0
  2512. If cnt > 0 Then
  2513. Insert Into u_saletaskmx_wrkgrp_mxdscrp
  2514. (scid,
  2515. taskid,
  2516. printid,
  2517. wrkgrpid,
  2518. mxdscrp)
  2519. Select u_SaleTaskMx.scid,
  2520. u_SaleTaskMx.TaskID,
  2521. u_SaleTaskMx.printid,
  2522. u_cust_wrkgrp_mxdscrp.wrkgrpid,
  2523. u_cust_wrkgrp_mxdscrp.mxdscrp
  2524. From u_SaleTask Inner JOIN
  2525. u_SaleTaskMx ON u_SaleTask.scid = u_SaleTaskMx.scid And
  2526. u_SaleTask.TaskID = u_SaleTaskMx.TaskID Inner JOIN
  2527. u_cust_wrkgrp_mxdscrp ON
  2528. u_SaleTask.CusID = u_cust_wrkgrp_mxdscrp.cusid
  2529. Where u_SaleTask.scid = :scid
  2530. And u_saletask.taskid = :ll_taskid
  2531. And (u_cust_wrkgrp_mxdscrp.mtrlid = 0) Using commit_transaction;
  2532. If commit_transaction.SQLCode <> 0 Then
  2533. taskid = 0 //还原taskid
  2534. rslt = 0
  2535. arg_msg = "因网络或其它原因导致插入默认车间备注(通用)操作失败"+"~n"+commit_transaction.SQLErrText
  2536. Goto ext
  2537. End If
  2538. Update u_saletaskmx_wrkgrp_mxdscrp
  2539. Set u_saletaskmx_wrkgrp_mxdscrp.mxdscrp = u_cust_wrkgrp_mxdscrp.mxdscrp
  2540. From u_saletaskmx_wrkgrp_mxdscrp Inner JOIN
  2541. u_SaleTask ON u_saletaskmx_wrkgrp_mxdscrp.scid = u_SaleTask.scid And
  2542. u_saletaskmx_wrkgrp_mxdscrp.taskid = u_SaleTask.TaskID Inner JOIN
  2543. u_cust_wrkgrp_mxdscrp ON u_SaleTask.CusID = u_cust_wrkgrp_mxdscrp.cusid And
  2544. u_saletaskmx_wrkgrp_mxdscrp.wrkgrpid = u_cust_wrkgrp_mxdscrp.wrkgrpid Inner JOIN
  2545. u_SaleTaskMx ON u_saletaskmx_wrkgrp_mxdscrp.scid = u_SaleTaskMx.scid And
  2546. u_saletaskmx_wrkgrp_mxdscrp.taskid = u_SaleTaskMx.TaskID And
  2547. u_saletaskmx_wrkgrp_mxdscrp.printid = u_SaleTaskMx.printid And
  2548. u_cust_wrkgrp_mxdscrp.mtrlid = u_SaleTaskMx.MtrlID
  2549. Where u_SaleTask.scid = :scid
  2550. And u_saletask.taskid = :ll_taskid Using commit_transaction;
  2551. If commit_transaction.SQLCode <> 0 Then
  2552. taskid = 0 //还原taskid
  2553. rslt = 0
  2554. arg_msg = "因网络或其它原因导致更新默认车间备注操作失败"+"~n"+commit_transaction.SQLErrText
  2555. Goto ext
  2556. End If
  2557. Else
  2558. Insert Into u_saletaskmx_wrkgrp_mxdscrp
  2559. (scid,
  2560. taskid,
  2561. printid,
  2562. wrkgrpid,
  2563. mxdscrp)
  2564. Select u_SaleTaskMx.scid,
  2565. u_SaleTaskMx.TaskID,
  2566. u_SaleTaskMx.printid,
  2567. u_cust_wrkgrp_mxdscrp.wrkgrpid,
  2568. u_cust_wrkgrp_mxdscrp.mxdscrp
  2569. From u_SaleTask Inner JOIN
  2570. u_SaleTaskMx ON u_SaleTask.scid = u_SaleTaskMx.scid And
  2571. u_SaleTask.TaskID = u_SaleTaskMx.TaskID Inner JOIN
  2572. u_cust_wrkgrp_mxdscrp ON u_SaleTask.CusID = u_cust_wrkgrp_mxdscrp.cusid And
  2573. u_SaleTaskMx.MtrlID = u_cust_wrkgrp_mxdscrp.mtrlid
  2574. Where u_SaleTask.scid = :scid
  2575. And u_saletask.taskid = :ll_taskid Using commit_transaction;
  2576. If commit_transaction.SQLCode <> 0 Then
  2577. taskid = 0 //还原taskid
  2578. rslt = 0
  2579. arg_msg = "因网络或其它原因导致插入默认车间备注操作失败"+"~n"+commit_transaction.SQLErrText
  2580. Goto ext
  2581. End If
  2582. End If
  2583. Else //////////////////////////////////////////////// //更新
  2584. Select typeid,taskcode Into :ll_typeid,:ls_taskcode
  2585. From u_saletask
  2586. Where taskid = :taskid
  2587. And scid = :scid Using commit_transaction;
  2588. If commit_transaction.SQLCode <> 0 Then
  2589. arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
  2590. rslt = 0
  2591. Goto ext
  2592. End If
  2593. If uo_option_saletask_ifuse_typebillcode = 1 Then
  2594. If ll_typeid <> typeid Then
  2595. Select billcode Into :ls_typebillcode
  2596. From u_saletype
  2597. Where typeid = :typeid Using commit_transaction;
  2598. If commit_transaction.SQLCode <> 0 Then
  2599. arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
  2600. rslt = 0
  2601. Goto ext
  2602. End If
  2603. If ls_typebillcode = '' Then
  2604. arg_msg = '订单分类未设置对应单据抬头,请检查'
  2605. rslt = 0
  2606. Goto ext
  2607. End If
  2608. //取分部代号
  2609. If f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 Then
  2610. rslt = 0
  2611. Goto ext
  2612. End If
  2613. taskcode = getid_saletask(scid,ls_sccode + ls_typebillcode,Date(server_datetime),False,commit_transaction)
  2614. If taskcode = "err" Then
  2615. taskcode = ''
  2616. rslt = 0
  2617. arg_msg = "无法获取销售订单分类编号"+"~n"+sqlca.SQLErrText
  2618. Goto ext
  2619. End If
  2620. ls_taskcode = taskcode
  2621. End If
  2622. End If
  2623. Update u_saletask
  2624. Set kind = :Kind,
  2625. cusid = :cusid,
  2626. requiredate = :requiredate,
  2627. assign_emp = :assign_emp,
  2628. dscrp = :dscrp,
  2629. dscrp2 = :dscrp2,
  2630. moddate = :opdate,
  2631. modemp = :operator,
  2632. damt = :damt,
  2633. otheramt = :otheramt,
  2634. freight = :freight,
  2635. taskdate = :taskdate,
  2636. banktypeid = :banktypeid,
  2637. moneyid = :moneyid,
  2638. relcode = :relcode,
  2639. paytype = :paytype,
  2640. freight_tele = :freight_tele,
  2641. cus_address = :cus_address,
  2642. cus_tele = :cus_tele,
  2643. cus_fax = :cus_fax,
  2644. mrate = :mrate,
  2645. upname = :upname,
  2646. msttakeamt = :msttakeamt,
  2647. typeid = :typeid,
  2648. rel_rep = :rel_rep,
  2649. level = :Level,
  2650. sendTime = :sendTime,
  2651. sendUser = :sendUser,
  2652. fiebrelcode = :fiebrelcode,
  2653. mxrowcount = :it_mxbt,
  2654. dscrp3 = :dscrp3,
  2655. taskcode = :ls_taskcode,
  2656. exchangeid = :exchangeid,
  2657. station_address = :station_address,
  2658. selecttype = :selecttype
  2659. Where u_saletask.taskid = :taskid
  2660. And scid = :scid
  2661. And status = 0 Using commit_transaction;
  2662. If commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 Then
  2663. rslt = 0
  2664. arg_msg = "因网络或其它原因导致更新销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  2665. Goto ext
  2666. End If
  2667. //删除原有明细
  2668. Delete From u_saletaskmx
  2669. Where u_saletaskmx.taskid = :taskid And scid = :scid Using commit_transaction;
  2670. If commit_transaction.SQLCode <> 0 Then
  2671. rslt = 0
  2672. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  2673. Goto ext
  2674. End If
  2675. //删除原有明细
  2676. Delete From u_saletaskmxmx
  2677. Where u_saletaskmxmx.taskid = :taskid And scid = :scid Using commit_transaction;
  2678. If commit_transaction.SQLCode <> 0 Then
  2679. rslt = 0
  2680. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  2681. Goto ext
  2682. End If
  2683. //删除原有明细
  2684. Delete From u_SaleTaskMx_dscrp
  2685. Where taskid = :taskid And scid = :scid Using commit_transaction;
  2686. If commit_transaction.SQLCode <> 0 Then
  2687. rslt = 0
  2688. arg_msg = "删除旧有明细备注操作失败"+"~n"+commit_transaction.SQLErrText
  2689. Goto ext
  2690. End If
  2691. For i = 1 To it_mxbt
  2692. ls_mtrlcuscode = ''
  2693. If Kind = 4 Then
  2694. ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
  2695. Else
  2696. Choose Case uo_option_taskplancode_auto
  2697. Case 1
  2698. ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
  2699. Case 2
  2700. ls_mtrlcuscode = taskcode
  2701. Case 3
  2702. ls_mtrlcuscode = relcode
  2703. Case 4
  2704. ls_mtrlcuscode = taskcode + '.' + String(i,'000')
  2705. Case 5
  2706. ls_mtrlcuscode = ''
  2707. Case Else
  2708. arg_msg = '错误的生产批号,管理员请先设定好订单批号模式'
  2709. rslt = 0
  2710. Goto ext
  2711. End Choose
  2712. End If
  2713. Insert Into u_saletaskmx
  2714. ( scid,
  2715. taskid,
  2716. mtrlid,
  2717. saleqty,
  2718. price,
  2719. plprice,
  2720. mxdscrp,
  2721. mxdscrp2,
  2722. fprice,
  2723. rebate,
  2724. status,
  2725. printid,
  2726. woodcode,
  2727. pcode,
  2728. mtrlcuscode,
  2729. enprice,
  2730. outtypestr,
  2731. dftsaleprice,
  2732. requiredate,
  2733. pfcode,
  2734. scidprice,
  2735. quoteid,
  2736. quotecode,
  2737. quoteprintid,
  2738. pricetype,
  2739. capacity,
  2740. nprice,
  2741. poid,
  2742. taxrate,
  2743. addqty,
  2744. priceformula,
  2745. sampleid,
  2746. enacprice,
  2747. net_weight,
  2748. gross_weight,
  2749. cubage,
  2750. fjcnt,
  2751. fjstr,
  2752. porebate)
  2753. Values (:scid,
  2754. :taskid,
  2755. :saletaskmx[i].mtrlid,
  2756. :saletaskmx[i].saleqty,
  2757. :saletaskmx[i].acprice,
  2758. :saletaskmx[i].plprice,
  2759. :saletaskmx[i].dscrp,
  2760. :saletaskmx[i].dscrp2,
  2761. :saletaskmx[i].fprice,
  2762. :saletaskmx[i].rebate,
  2763. :saletaskmx[i].status,
  2764. :saletaskmx[i].printid,
  2765. :saletaskmx[i].woodcode,
  2766. :saletaskmx[i].pcode,
  2767. :ls_mtrlcuscode,
  2768. :saletaskmx[i].enprice,
  2769. :saletaskmx[i].outtype,
  2770. :saletaskmx[i].dftsaleprice,
  2771. :saletaskmx[i].requiredate,
  2772. :saletaskmx[i].pfcode,
  2773. :saletaskmx[i].scidprice,
  2774. :saletaskmx[i].quoteid,
  2775. :saletaskmx[i].quotecode,
  2776. :saletaskmx[i].quoteprintid,
  2777. :saletaskmx[i].pricetype,
  2778. :saletaskmx[i].capacity,
  2779. :saletaskmx[i].nprice,
  2780. :saletaskmx[i].poid,
  2781. :saletaskmx[i].taxrate,
  2782. :saletaskmx[i].addqty,
  2783. :saletaskmx[i].priceformula,
  2784. :saletaskmx[i].sampleid,
  2785. :saletaskmx[i].enacprice,
  2786. :saletaskmx[i].net_weight,
  2787. :saletaskmx[i].gross_weight,
  2788. :saletaskmx[i].cubage,
  2789. :saletaskmx[i].fjcnt,
  2790. :saletaskmx[i].fjstr,
  2791. :saletaskmx[i].porebate) Using commit_transaction;
  2792. If commit_transaction.SQLCode <> 0 Then
  2793. rslt = 0
  2794. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  2795. Goto ext
  2796. End If
  2797. If Len(Trim(saletaskmx[i].dscrp_text)) > 0 Then
  2798. Insert Into u_SaleTaskMx_dscrp
  2799. (scid,
  2800. taskid,
  2801. printid,
  2802. dscrp)
  2803. Values
  2804. (:scid,
  2805. :taskid,
  2806. :saletaskmx[i].printid,
  2807. :saletaskmx[i].dscrp_text) Using commit_transaction;
  2808. If commit_transaction.SQLCode <> 0 Then
  2809. taskid = 0 //还原taskid
  2810. rslt = 0
  2811. arg_msg = "因网络或其它原因导致插入明细备注操作失败"+"~n"+commit_transaction.SQLErrText
  2812. Goto ext
  2813. End If
  2814. End If
  2815. Next
  2816. For i = 1 To it_mxbtmx
  2817. ls_mtrlcuscode = ''
  2818. If Kind = 4 Then
  2819. ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
  2820. Else
  2821. Choose Case uo_option_taskplancode_auto
  2822. Case 1
  2823. ls_mtrlcuscode = saletaskmxmx[i].mtrlcuscode
  2824. Case 2
  2825. ls_mtrlcuscode = taskcode
  2826. Case 3
  2827. ls_mtrlcuscode = relcode
  2828. Case 4
  2829. ls_mtrlcuscode = taskcode + '.' + String(i,'000')
  2830. Case 5
  2831. ls_mtrlcuscode = ''
  2832. Case Else
  2833. arg_msg = '错误的生产批号,管理员请在系统选项设置先设定好订单批号模式'
  2834. rslt = 0
  2835. Goto ext
  2836. End Choose
  2837. End If
  2838. Insert Into u_saletaskmxmx
  2839. ( scid,
  2840. saleqty,
  2841. price,
  2842. plprice,
  2843. mtrlid,
  2844. taskid,
  2845. mxdscrp,
  2846. mxdscrp2,
  2847. fprice,
  2848. rebate,
  2849. status,
  2850. printid,
  2851. woodcode,
  2852. pcode,
  2853. mtrlcuscode,
  2854. enprice,
  2855. outtypestr,
  2856. dftsaleprice,
  2857. requiredate,
  2858. pfcode,
  2859. scidprice,
  2860. quoteid,
  2861. quotecode,
  2862. quoteprintid,
  2863. pricetype,
  2864. capacity,
  2865. nprice,
  2866. poid,
  2867. taxrate,
  2868. addqty,
  2869. priceformula,
  2870. enacprice,
  2871. net_weight,
  2872. gross_weight,
  2873. cubage)
  2874. Values (:scid,
  2875. :saletaskmxmx[i].saleqty,
  2876. :saletaskmxmx[i].price,
  2877. :saletaskmxmx[i].plprice,
  2878. :saletaskmxmx[i].mtrlid,
  2879. :taskid,
  2880. :saletaskmxmx[i].mxdscrp,
  2881. :saletaskmxmx[i].mxdscrp2,
  2882. :saletaskmxmx[i].fprice,
  2883. :saletaskmxmx[i].rebate,
  2884. :saletaskmxmx[i].status,
  2885. :saletaskmxmx[i].printid,
  2886. :saletaskmxmx[i].woodcode,
  2887. :saletaskmxmx[i].pcode,
  2888. :ls_mtrlcuscode,
  2889. :saletaskmxmx[i].enprice,
  2890. :saletaskmxmx[i].outtypestr,
  2891. :saletaskmxmx[i].dftsaleprice,
  2892. :saletaskmxmx[i].requiredate,
  2893. :saletaskmxmx[i].pfcode,
  2894. :saletaskmxmx[i].scidprice,
  2895. :saletaskmxmx[i].quoteid,
  2896. :saletaskmxmx[i].quotecode,
  2897. :saletaskmxmx[i].quoteprintid,
  2898. :saletaskmxmx[i].pricetype,
  2899. :saletaskmxmx[i].capacity,
  2900. :saletaskmxmx[i].nprice,
  2901. :saletaskmxmx[i].poid,
  2902. :saletaskmxmx[i].taxrate,
  2903. :saletaskmxmx[i].addqty,
  2904. :saletaskmxmx[i].priceformula,
  2905. :saletaskmxmx[i].enacprice,
  2906. :saletaskmxmx[i].net_weight,
  2907. :saletaskmxmx[i].gross_weight,
  2908. :saletaskmxmx[i].cubage) Using commit_transaction;
  2909. If commit_transaction.SQLCode <> 0 Then
  2910. taskid = 0 //还原taskid
  2911. rslt = 0
  2912. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  2913. Goto ext
  2914. End If
  2915. Next
  2916. If Kind = 2 Then
  2917. Delete From u_saletaskmx_in
  2918. Where u_saletaskmx_in.taskid = :taskid And scid = :scid Using commit_transaction;
  2919. If commit_transaction.SQLCode <> 0 Then
  2920. rslt = 0
  2921. arg_msg = "删除旧有收料明细操作失败"+"~n"+commit_transaction.SQLErrText
  2922. Goto ext
  2923. End If
  2924. For j = 1 To it_mxbt_in
  2925. Insert Into u_saletaskmx_in
  2926. (scid,
  2927. taskid,
  2928. printid,
  2929. mtrlid,
  2930. plancode,
  2931. status,
  2932. woodcode,
  2933. pcode,
  2934. qty,
  2935. fprice,
  2936. mxdscrp,
  2937. storageid)
  2938. Values
  2939. (:scid,
  2940. :taskid,
  2941. :saletaskmx_in[j].printid,
  2942. :saletaskmx_in[j].mtrlid,
  2943. :saletaskmx_in[j].plancode,
  2944. :saletaskmx_in[j].status,
  2945. :saletaskmx_in[j].woodcode,
  2946. :saletaskmx_in[j].pcode,
  2947. :saletaskmx_in[j].qty,
  2948. :saletaskmx_in[j].fprice,
  2949. :saletaskmx_in[j].mxdscrp,
  2950. :saletaskmx_in[j].storageid) Using commit_transaction;
  2951. If commit_transaction.SQLCode <> 0 Then
  2952. taskid = 0 //还原taskid
  2953. rslt = 0
  2954. arg_msg = "因网络或其它原因导致插入收料明细操作失败"+"~n"+commit_transaction.SQLErrText
  2955. Goto ext
  2956. End If
  2957. Next
  2958. End If
  2959. Delete From u_saletask_itemmx
  2960. Where u_saletask_itemmx.taskid = :taskid And scid = :scid Using commit_transaction;
  2961. If commit_transaction.SQLCode <> 0 Then
  2962. rslt = 0
  2963. arg_msg = "删除旧有费用明细操作失败"+"~n"+commit_transaction.SQLErrText
  2964. Goto ext
  2965. End If
  2966. For k = 1 To it_mxbt_item
  2967. Insert Into u_saletask_itemmx
  2968. (scid,
  2969. taskid,
  2970. printid,
  2971. itemid,
  2972. amt,
  2973. mxdscrp)
  2974. Values (:scid,
  2975. :taskid,
  2976. :saletask_itemmx[k].printid,
  2977. :saletask_itemmx[k].itemid,
  2978. :saletask_itemmx[k].amt,
  2979. :saletask_itemmx[k].mxdscrp) Using commit_transaction;
  2980. If commit_transaction.SQLCode <> 0 Then
  2981. taskid = 0 //还原taskid
  2982. rslt = 0
  2983. arg_msg = "因网络或其它原因导致插入费用明细操作失败"+"~n"+commit_transaction.SQLErrText
  2984. Goto ext
  2985. End If
  2986. Next
  2987. End If
  2988. Update u_saletaskmxmx
  2989. Set u_saletaskmxmx.relpid = u_SaleTaskMx.printid
  2990. From u_SaleTaskMx Inner JOIN
  2991. u_saletaskmxmx ON u_SaleTaskMx.scid = u_saletaskmxmx.scid And
  2992. u_SaleTaskMx.TaskID = u_saletaskmxmx.TaskID And
  2993. u_SaleTaskMx.MtrlID = u_saletaskmxmx.MtrlID And
  2994. u_SaleTaskMx.status = u_saletaskmxmx.status And
  2995. u_SaleTaskMx.pcode = u_saletaskmxmx.pcode And
  2996. u_SaleTaskMx.woodcode = u_saletaskmxmx.woodcode And
  2997. u_SaleTaskMx.mtrlcuscode = u_saletaskmxmx.mtrlcuscode And
  2998. u_SaleTaskMx.enprice = u_saletaskmxmx.enprice
  2999. Where u_SaleTaskMx.scid = :scid
  3000. And u_saletaskmx.taskid = :taskid Using commit_transaction;
  3001. If commit_transaction.SQLCode <> 0 Then
  3002. taskid = 0
  3003. rslt = 0
  3004. arg_msg = '更新明细相关printid失败,'+commit_transaction.SQLErrText
  3005. Goto ext
  3006. End If
  3007. it_newbegin = False
  3008. it_updatebegin = False
  3009. ext:
  3010. If rslt = 0 Then
  3011. Rollback Using commit_transaction;
  3012. p_clearmx()
  3013. msttakeamt = 0
  3014. ElseIf arg_ifcommit And rslt = 1 Then
  3015. Commit Using commit_transaction;
  3016. End If
  3017. Return rslt
  3018. end function
  3019. public function integer trycmplsaletask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//trycmplsaletask(arg_taskid,arg_msg,arg_ifcommit)
  3020. Int rslt = 1
  3021. Long cnt = 0,ll_status
  3022. DateTime null_dt
  3023. SetNull(null_dt)
  3024. IF arg_taskid <= 0 THEN
  3025. rslt = 0
  3026. arg_msg = '错误销售订单唯一码'
  3027. GOTO ext
  3028. END IF
  3029. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  3030. rslt = 0
  3031. GOTO ext
  3032. END IF
  3033. IF ctmint > 0 THEN
  3034. rslt = 0
  3035. arg_msg = '销售订单已被截数,操作取消'
  3036. GOTO ext
  3037. END IF
  3038. IF status <> 1 And status <> 5 THEN
  3039. rslt = 0
  3040. IF status <> 1 THEN
  3041. arg_msg = "销售订单只有在进行状态下才可以执行设完成状态"
  3042. ELSEIF status <> 5 THEN
  3043. arg_msg = "销售订单只有在完成状态下才可以执行撤消完成状态"
  3044. END IF
  3045. GOTO ext
  3046. END IF
  3047. Decimal ls_zerook
  3048. Boolean if_finish
  3049. if_finish = True
  3050. DECLARE zero_cur CURSOR FOR
  3051. SELECT u_saletaskmx.saleqty - u_saletaskmx.consignedqty - u_saletaskmx.stopqty
  3052. FROM u_saletaskmx
  3053. WHERE ( u_saletaskmx.taskid = :arg_taskid )
  3054. AND ( u_saletaskmx.scid = :arg_scid )
  3055. Using commit_transaction ;
  3056. OPEN zero_cur;
  3057. FETCH zero_cur Into :ls_zerook;
  3058. DO WHILE commit_transaction.SQLCode = 0
  3059. IF if_finish THEN
  3060. IF ls_zerook > 0 THEN if_finish = False
  3061. END IF
  3062. FETCH zero_cur Into :ls_zerook;
  3063. LOOP
  3064. CLOSE zero_cur;
  3065. IF status = 1 And if_finish THEN
  3066. UPDATE u_saletask
  3067. SET status = 5,
  3068. accomplishdate = getdate(),
  3069. finishemp = :publ_operator
  3070. WHERE ( u_saletask.taskid = :arg_taskid )
  3071. And u_saletask.scid = :arg_scid Using commit_transaction;
  3072. IF commit_transaction.SQLCode <> 0 THEN
  3073. rslt = 0
  3074. arg_msg = "因网络或其他原因导致销售订单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
  3075. ROLLBACK Using commit_transaction;
  3076. GOTO ext
  3077. END IF
  3078. END IF
  3079. IF status = 5 And Not if_finish THEN
  3080. UPDATE u_saletask
  3081. SET status = 1,
  3082. accomplishdate = :null_dt,
  3083. finishemp = ''
  3084. WHERE ( u_saletask.taskid = :arg_taskid )
  3085. And u_saletask.scid = :arg_scid Using commit_transaction;
  3086. IF commit_transaction.SQLCode <> 0 THEN
  3087. rslt = 0
  3088. arg_msg = "因网络或其他原因导致销售订单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
  3089. ROLLBACK Using commit_transaction;
  3090. GOTO ext
  3091. END IF
  3092. END IF
  3093. it_newbegin = False
  3094. it_updatebegin = False
  3095. ext:
  3096. IF rslt = 0 THEN
  3097. ROLLBACK Using commit_transaction;
  3098. ELSEIF arg_ifcommit And rslt = 1 THEN
  3099. COMMIT Using commit_transaction;
  3100. END IF
  3101. p_reset()
  3102. Return (rslt)
  3103. end function
  3104. public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
  3105. //0 fail 1 success
  3106. long rslt=1,CNT=0
  3107. if arg_scid < 0 then
  3108. arg_msg = '请选择分部'
  3109. rslt = 0
  3110. goto ext
  3111. end if
  3112. p_reset()
  3113. it_newbegin=TRUE
  3114. it_updatebegin=FALSE
  3115. scid=arg_scid
  3116. ext:
  3117. if rslt = 0 then p_reset()
  3118. return rslt
  3119. end function
  3120. public function integer acceptmx_mx (long arg_scid, long arg_mtrlwareid, decimal arg_qty, ref string arg_msg);//return 0 fail 1 success
  3121. // 函数增加一个明细项
  3122. Long rslt = 1,cnt = 0,ls_i
  3123. Decimal ld_noallocqty,ld_allocqty
  3124. ////清除空值
  3125. //IF IsNull(arg_scid) THEN arg_scid = 0
  3126. //IF IsNull(arg_mtrlwareid) THEN arg_mtrlid = 0
  3127. //IF IsNull(arg_qty) THEN arg_qty = 0
  3128. //
  3129. //IF arg_mtrlwareid = 0 OR arg_qty = 0 THEN
  3130. // rslt = 1
  3131. // GOTO ext
  3132. //END IF
  3133. //
  3134. //
  3135. //
  3136. //
  3137. //SELECT noallocqty,allocqty INTO :ld_noallocqty,:ld_allocqty
  3138. // FROM u_mtrlware
  3139. // Where scid = :arg_scid
  3140. // and mtrlwareid = :arg_mtrlwareid;
  3141. //IF sqlca.SQLCode <> 0 THEN
  3142. // arg_msg = '查询库存资料失败'
  3143. // rslt = 0
  3144. // GOTO ext
  3145. //END IF
  3146. //
  3147. //IF arg_qty > ld_noallocqty - ld_allocqty THEN
  3148. // rslt = 0
  3149. // arg_msg = "库存" + String(arg_mtrlcode)+" 单价错误"
  3150. // GOTO ext
  3151. //END IF
  3152. //
  3153. ////检查物料id
  3154. //SELECT count(*)
  3155. // INTO :cnt
  3156. // FROM u_mtrldef
  3157. // Where u_mtrldef.mtrlid = :arg_mtrlid ;
  3158. //IF sqlca.SQLCode <> 0 THEN
  3159. // rslt = 0
  3160. // arg_msg = "查询操作失败,产品编号"
  3161. // GOTO ext
  3162. //END IF
  3163. //
  3164. //IF cnt = 0 THEN
  3165. // rslt = 0
  3166. // arg_msg = "错误的产品编号: "+String(arg_mtrlcode)
  3167. // GOTO ext
  3168. //END IF
  3169. //
  3170. //String ls_status,ls_pcode,ls_woodcode
  3171. //
  3172. //IF sys_option_price_if_status = 0 THEN
  3173. // ls_status = ''
  3174. // ls_pcode = ''
  3175. // ls_woodcode = ''
  3176. //ELSE
  3177. // ls_status = arg_status
  3178. // ls_pcode = arg_pcode
  3179. // ls_woodcode = arg_woodcode
  3180. //END IF
  3181. //
  3182. //
  3183. //SELECT top 1 price INTO :ld_dftsaleprice
  3184. // FROM u_sale_price_list,u_sale_price_mx
  3185. // WHERE u_sale_price_list.pricelistid = u_sale_price_mx.pricelistid
  3186. // AND u_sale_price_list.dftflag = 1
  3187. // AND u_sale_price_mx.mtrlid = :arg_mtrlid
  3188. // AND u_sale_price_mx.status = :ls_status
  3189. // AND u_sale_price_mx.pcode = :ls_woodcode
  3190. // AND u_sale_price_mx.pcode = :ls_pcode
  3191. // AND u_sale_price_list.moneyid = :moneyid;
  3192. //
  3193. //IF sqlca.SQLCode <> 0 THEN ld_dftsaleprice = 0
  3194. //
  3195. //FOR ls_i = 1 TO it_mxbt //合并重复项
  3196. // IF saletaskmx[it_mxbt].mtrlid = arg_mtrlid AND &
  3197. // saletaskmx[it_mxbt].status = arg_status AND &
  3198. // saletaskmx[it_mxbt].pcode = arg_pcode AND &
  3199. // saletaskmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode AND &
  3200. // saletaskmx[it_mxbt].woodcode = arg_woodcode THEN
  3201. //
  3202. // saletaskmx[it_mxbt].saleqty = saletaskmx[it_mxbt].saleqty+arg_qty
  3203. // rslt = 1
  3204. // GOTO ext
  3205. // END IF
  3206. //NEXT
  3207. //
  3208. ////写入内容
  3209. //it_mxbt++
  3210. //saletaskmx[it_mxbt].dftsaleprice = ld_dftsaleprice
  3211. //saletaskmx[it_mxbt].mtrlid = arg_mtrlid
  3212. //saletaskmx[it_mxbt].saleqty = arg_qty
  3213. //saletaskmx[it_mxbt].plprice = arg_planprice
  3214. //saletaskmx[it_mxbt].dscrp = arg_dscrp
  3215. //saletaskmx[it_mxbt].mtrlcode = arg_mtrlcode
  3216. //saletaskmx[it_mxbt].status = arg_status
  3217. //saletaskmx[it_mxbt].printid = arg_printid
  3218. //saletaskmx[it_mxbt].woodcode = arg_woodcode
  3219. //saletaskmx[it_mxbt].pcode = arg_pcode
  3220. //saletaskmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode
  3221. //
  3222. //saletaskmx[it_mxbt].enprice = arg_fprice
  3223. //saletaskmx[it_mxbt].rebate = arg_rebate
  3224. //saletaskmx[it_mxbt].fprice = arg_fprice * ld_rate
  3225. //saletaskmx[it_mxbt].acprice = arg_fprice * ld_rate * arg_rebate
  3226. //
  3227. //saletaskmx[it_mxbt].outtype = arg_outtype
  3228. //ext:
  3229. IF rslt = 0 THEN p_clearmx()
  3230. RETURN(rslt)
  3231. end function
  3232. 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
  3233. Int li_flag,li_bjflag
  3234. String ls_outtype
  3235. DateTime null_dt
  3236. Decimal ld_notconsignedqty
  3237. Long ll_assignid,j
  3238. Decimal ld_assignqty
  3239. uo_mtrlware_assign uo_ma
  3240. uo_ma = Create uo_mtrlware_assign
  3241. uo_ma.commit_transaction = commit_transaction
  3242. datastore ds_fp_del
  3243. ds_fp_del = Create datastore
  3244. ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
  3245. ds_fp_del.SetTransObject(commit_transaction)
  3246. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  3247. rslt = 0
  3248. GOTO ext
  3249. END IF
  3250. SetNull(null_dt)
  3251. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  3252. rslt = 0
  3253. GOTO ext
  3254. END IF
  3255. IF status <> 1 THEN
  3256. arg_msg = '订单只能在进行状态下才能操作'
  3257. rslt = 0
  3258. GOTO ext
  3259. END IF
  3260. SELECT stopflag,outtypestr,bjflag INTO :li_flag,:ls_outtype,:li_bjflag
  3261. FROM u_saletaskmx
  3262. WHERE scid = :arg_scid
  3263. AND taskid = :arg_taskid
  3264. And printid = :arg_printid;
  3265. IF sqlca.SQLCode <> 0 THEN
  3266. arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
  3267. rslt = 0
  3268. GOTO ext
  3269. END IF
  3270. IF arg_flag = 0 THEN
  3271. IF li_flag = 0 THEN
  3272. arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
  3273. rslt = 0
  3274. GOTO ext
  3275. END IF
  3276. ELSE
  3277. IF li_flag = 1 THEN
  3278. arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
  3279. rslt = 0
  3280. GOTO ext
  3281. END IF
  3282. END IF
  3283. IF arg_flag = 1 THEN
  3284. SELECT u_saletaskmx.saleQty - u_saletaskmx.consignedqty
  3285. INTO :ld_notconsignedqty
  3286. FROM u_saletaskmx
  3287. WHERE scid = :arg_scid
  3288. AND taskid = :arg_taskid
  3289. And printid = :arg_printid;
  3290. IF sqlca.SQLCode <> 0 THEN
  3291. arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
  3292. rslt = 0
  3293. GOTO ext
  3294. END IF
  3295. IF ld_notconsignedqty <= 0 THEN
  3296. arg_msg = '明细物料'+arg_mtrlcode+'已完成收货,不能中止'
  3297. rslt = 0
  3298. GOTO ext
  3299. END IF
  3300. IF ls_outtype = '补件' And li_bjflag = 1 THEN
  3301. arg_msg = '该明细内容为补件明细,并已审核,不能中止'
  3302. rslt = 0
  3303. GOTO ext
  3304. END IF
  3305. //取消分配
  3306. ds_fp_del.Retrieve(arg_scid,arg_taskid,arg_printid)
  3307. FOR j = 1 To ds_fp_del.RowCount()
  3308. ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
  3309. ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
  3310. IF uo_ma.uof_assign_del(ll_assignid,ld_assignqty,arg_msg,False) = 0 THEN
  3311. arg_msg = '删除库存分配失败,'+arg_msg
  3312. rslt = 0
  3313. GOTO ext
  3314. END IF
  3315. NEXT
  3316. END IF
  3317. IF arg_flag = 0 THEN
  3318. UPDATE u_saletaskmx
  3319. SET stopflag = 0,
  3320. stopemp = '',
  3321. stopdate = :null_dt,
  3322. stopreason = ''
  3323. WHERE scid = :arg_scid
  3324. AND taskid = :arg_taskid
  3325. And printid = :arg_printid;
  3326. ELSE
  3327. UPDATE u_saletaskmx
  3328. SET stopflag = 1,
  3329. stopemp = :publ_operator,
  3330. stopdate = getdate(),
  3331. stopreason = :arg_stopreason
  3332. WHERE scid = :arg_scid
  3333. AND taskid = :arg_taskid
  3334. And printid = :arg_printid;
  3335. END IF
  3336. IF sqlca.SQLCode <> 0 THEN
  3337. arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
  3338. rslt = 0
  3339. GOTO ext
  3340. END IF
  3341. IF trycmplsaletask(arg_scid,arg_taskid,arg_msg,False) = 0 THEN
  3342. rslt = 0
  3343. GOTO ext
  3344. END IF
  3345. ext:
  3346. IF rslt = 0 THEN
  3347. ROLLBACK;
  3348. ELSEIF rslt = 1 And arg_commit THEN
  3349. COMMIT;
  3350. END IF
  3351. Destroy uo_ma
  3352. Destroy ds_fp_del
  3353. RETURN rslt
  3354. end function
  3355. 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
  3356. Int li_bjflag
  3357. DateTime null_dt
  3358. string ls_outtype
  3359. Decimal ld_notconsignedqty
  3360. SetNull(null_dt)
  3361. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  3362. rslt = 0
  3363. GOTO ext
  3364. END IF
  3365. IF status <> 1 THEN
  3366. arg_msg = '订单只能在进行状态下才能操作'
  3367. rslt = 0
  3368. GOTO ext
  3369. END IF
  3370. SELECT outtypestr,bjflag INTO :ls_outtype,:li_bjflag
  3371. FROM u_saletaskmx
  3372. WHERE scid = :arg_scid
  3373. AND taskid = :arg_taskid
  3374. AND printid = :arg_printid;
  3375. IF sqlca.SQLCode <> 0 THEN
  3376. arg_msg = '查询明细物料'+arg_mtrlcode+'补件审核标记失败'
  3377. rslt = 0
  3378. GOTO ext
  3379. END IF
  3380. IF ls_outtype <> '补件' THEN
  3381. arg_msg = '明细物料'+arg_mtrlcode+'不是补件明细,不能修改单价'
  3382. rslt = 0
  3383. GOTO ext
  3384. END IF
  3385. IF arg_flag = 0 THEN
  3386. IF li_bjflag = 0 THEN
  3387. arg_msg = '明细物料'+arg_mtrlcode+'还未补件审核,不能取消补件审核'
  3388. rslt = 0
  3389. GOTO ext
  3390. END IF
  3391. ELSE
  3392. IF li_bjflag = 1 THEN
  3393. arg_msg = '明细物料'+arg_mtrlcode+'已补件审核,不能重复审核'
  3394. rslt = 0
  3395. GOTO ext
  3396. END IF
  3397. END IF
  3398. IF arg_flag = 0 THEN
  3399. UPDATE u_saletaskmx
  3400. SET bjflag = 0,
  3401. bjemp = '',
  3402. bjdate = :null_dt
  3403. WHERE scid = :arg_scid
  3404. AND taskid = :arg_taskid
  3405. AND printid = :arg_printid;
  3406. ELSE
  3407. UPDATE u_saletaskmx
  3408. SET bjflag = 1,
  3409. bjemp = :publ_operator,
  3410. bjdate = getdate()
  3411. WHERE scid = :arg_scid
  3412. AND taskid = :arg_taskid
  3413. AND printid = :arg_printid;
  3414. END IF
  3415. IF sqlca.SQLCode <> 0 THEN
  3416. arg_msg = '更新明细'+arg_mtrlcode+'补件标记失败,'+sqlca.SQLErrText
  3417. rslt = 0
  3418. GOTO ext
  3419. END IF
  3420. ext:
  3421. IF rslt = 0 THEN
  3422. ROLLBACK;
  3423. ELSEIF rslt = 1 AND arg_commit THEN
  3424. COMMIT;
  3425. END IF
  3426. RETURN rslt
  3427. end function
  3428. 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
  3429. Int li_bjflag
  3430. string ls_outtype
  3431. decimal ld_fprice,ld_price
  3432. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  3433. rslt = 0
  3434. GOTO ext
  3435. END IF
  3436. IF status <> 1 THEN
  3437. arg_msg = '订单只能在进行状态下才能操作'
  3438. rslt = 0
  3439. GOTO ext
  3440. END IF
  3441. if arg_enprice < 0 or arg_rebate < 0 then
  3442. arg_msg = '错误单价或折扣'
  3443. rslt = 0
  3444. end if
  3445. SELECT outtypestr,bjflag INTO :ls_outtype,:li_bjflag
  3446. FROM u_saletaskmx
  3447. WHERE scid = :arg_scid
  3448. AND taskid = :arg_taskid
  3449. AND printid = :arg_printid;
  3450. IF sqlca.SQLCode <> 0 THEN
  3451. arg_msg = '查询明细物料'+arg_mtrlcode+'补件审核标记失败'
  3452. rslt = 0
  3453. GOTO ext
  3454. END IF
  3455. IF ls_outtype <> '补件' THEN
  3456. arg_msg = '明细物料'+arg_mtrlcode+'不是补件明细,不能修改单价'
  3457. rslt = 0
  3458. GOTO ext
  3459. END IF
  3460. IF li_bjflag = 1 THEN
  3461. arg_msg = '明细物料'+arg_mtrlcode+'已补件审核,不能修改单价'
  3462. rslt = 0
  3463. GOTO ext
  3464. END IF
  3465. ld_fprice = arg_enprice * mrate
  3466. ld_price = arg_enprice * mrate * arg_rebate
  3467. UPDATE u_saletaskmx
  3468. SET enprice = :arg_enprice,
  3469. rebate = :arg_rebate,
  3470. fprice = :ld_fprice,
  3471. price = :ld_price
  3472. WHERE scid = :arg_scid
  3473. AND taskid = :arg_taskid
  3474. AND printid = :arg_printid;
  3475. IF sqlca.SQLCode <> 0 THEN
  3476. arg_msg = '更新明细'+arg_mtrlcode+'单价失败,'+sqlca.SQLErrText
  3477. rslt = 0
  3478. GOTO ext
  3479. END IF
  3480. ext:
  3481. IF rslt = 0 THEN
  3482. ROLLBACK;
  3483. ELSEIF rslt = 1 AND arg_commit THEN
  3484. COMMIT;
  3485. END IF
  3486. RETURN rslt
  3487. end function
  3488. public function integer propermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//salepermit
  3489. Int rslt = 1,cnt = 0
  3490. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  3491. rslt = 0
  3492. GOTO ext
  3493. END IF
  3494. IF uo_option_saletask_secaudit = -1000 THEN
  3495. arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
  3496. rslt = 0
  3497. GOTO ext
  3498. END IF
  3499. IF uo_option_saletask_fore_secaudit = -1000 THEN
  3500. arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
  3501. rslt = 0
  3502. GOTO ext
  3503. END IF
  3504. IF uo_option_if_oa_saletask = -1000 THEN
  3505. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  3506. rslt = 0
  3507. GOTO ext
  3508. END IF
  3509. IF uo_option_if_oa_saletask_fore = -1000 THEN
  3510. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  3511. rslt = 0
  3512. GOTO ext
  3513. END IF
  3514. IF arg_taskid <= 0 THEN
  3515. rslt = 0
  3516. arg_msg = '错误销售订单唯一码'
  3517. GOTO ext
  3518. END IF
  3519. IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  3520. rslt = 0
  3521. GOTO ext
  3522. END IF
  3523. IF status <> 4 THEN
  3524. rslt = 0
  3525. arg_msg = "订单不是在待生产审状态,操作取消"
  3526. GOTO ext
  3527. END IF
  3528. IF Kind <> 0 THEN
  3529. IF uo_option_if_oa_saletask = 1 And uo_option_saletask_secaudit = 1 and audit_buildtype = 0 THEN
  3530. IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
  3531. rslt = 0
  3532. GOTO ext
  3533. END IF
  3534. END IF
  3535. ELSE
  3536. IF uo_option_if_oa_saletask_fore = 1 AND uo_option_saletask_fore_secaudit = 1 And audit_buildtype = 0 THEN
  3537. IF f_check_if_oaflow(arg_scid,arg_taskid,1324,arg_msg ) = 0 THEN
  3538. rslt = 0
  3539. GOTO ext
  3540. END IF
  3541. END IF
  3542. END IF
  3543. Long i
  3544. FOR i = 1 TO it_mxbt
  3545. IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,1,saletaskmx[i].saleqty,arg_msg,FALSE) = 0 THEN
  3546. rslt = 0
  3547. GOTO ext
  3548. END IF
  3549. NEXT
  3550. cnt = 0
  3551. SELECT count(*) INTO :cnt
  3552. FROM u_user
  3553. Where username = :arg_emp USING commit_transaction;
  3554. IF commit_transaction.SQLCode <> 0 THEN
  3555. rslt = 0
  3556. arg_msg = "查询操作失败,操作员!"
  3557. GOTO ext
  3558. END IF
  3559. IF cnt = 0 THEN
  3560. rslt = 0
  3561. arg_msg = "操作员姓名未登记或已取消!"
  3562. GOTO ext
  3563. END IF
  3564. UPDATE u_saletask
  3565. SET p_Auditingdate = getdate(),
  3566. p_Auditingrep = :arg_emp,
  3567. status = 1
  3568. WHERE taskid = :arg_taskid
  3569. AND scid = :arg_scid
  3570. AND status = 4
  3571. USING commit_transaction;
  3572. IF commit_transaction.SQLCode <> 0 THEN
  3573. rslt = 0
  3574. arg_msg = "因网络或其它原因导致订单生产审核操作失败"+"~n"+commit_transaction.SQLErrText
  3575. GOTO ext
  3576. ELSEIF commit_transaction.SQLNRows = 0 THEN
  3577. rslt = 0
  3578. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  3579. GOTO ext
  3580. END IF
  3581. it_newbegin = FALSE
  3582. it_updatebegin = FALSE
  3583. ext:
  3584. IF rslt = 0 THEN
  3585. ROLLBACK USING commit_transaction;
  3586. ELSEIF arg_ifcommit AND rslt = 1 THEN
  3587. COMMIT USING commit_transaction;
  3588. END IF
  3589. p_reset()
  3590. Return (rslt)
  3591. end function
  3592. public function integer cancelpropermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);
  3593. Int rslt = 1,cnt = 0
  3594. DateTime nulldate
  3595. Decimal ls_consignedQty
  3596. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  3597. rslt = 0
  3598. GOTO ext
  3599. END IF
  3600. SetNull(nulldate)
  3601. IF arg_taskid <= 0 THEN
  3602. rslt = 0
  3603. ARG_MSG = '错误销售订单唯一码'
  3604. GOTO ext
  3605. END IF
  3606. IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
  3607. rslt = 0
  3608. GOTO ext
  3609. END IF
  3610. IF ctmint > 0 THEN
  3611. ARG_MSG = '单据已截数,不能操作'
  3612. rslt = 0
  3613. GOTO ext
  3614. END IF
  3615. IF Status <> 1 THEN
  3616. rslt = 0
  3617. ARG_MSG = "订单只有在进行状态才可以执行撤消生产审核,请核对"
  3618. GOTO ext
  3619. END IF
  3620. SELECT count(*) INTO :cnt
  3621. FROM u_order_ml
  3622. WHERE scid = :arg_scid
  3623. AND taskid = :arg_taskid
  3624. AND (ordertype = 0 OR ordertype = 1)
  3625. Using commit_transaction;
  3626. IF commit_transaction.SQLCode <> 0 THEN
  3627. rslt = 0
  3628. ARG_MSG = "因网络或其它原因导致查询销售订单排产数量操作失败"+"~n"+commit_transaction.SQLErrText
  3629. GOTO ext
  3630. END IF
  3631. IF cnt > 0 THEN
  3632. rslt = 0
  3633. ARG_MSG = "销售订单已经有相关生产计划,不可以撤消审核"
  3634. GOTO ext
  3635. END IF
  3636. cnt = 0
  3637. SELECT count(*)
  3638. INTO :cnt
  3639. FROM u_saleoutmx
  3640. WHERE scid = :arg_scid
  3641. And relid = :arg_taskid Using commit_transaction;
  3642. IF commit_transaction.SQLCode <> 0 THEN
  3643. rslt = 0
  3644. ARG_MSG = "因网络或其它原因导致查询是否已开发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
  3645. GOTO ext
  3646. END IF
  3647. IF cnt > 0 THEN
  3648. rslt = 0
  3649. ARG_MSG = "销售订单已经有相关发货通知单,不可以撤消审核"
  3650. GOTO ext
  3651. END IF
  3652. cnt = 0
  3653. SELECT count(*)
  3654. INTO :cnt
  3655. FROM u_outware,u_outwaremx
  3656. WHERE ( u_outware.billtype = 1 ) AND
  3657. ( u_outware.scid = u_outwaremx.scid ) AND
  3658. ( u_outware.outwareid = u_outwaremx.outwareid ) AND
  3659. ( u_outwaremx.relid = :arg_taskid ) AND
  3660. ( u_outware.scid = :arg_scid) Using commit_transaction;
  3661. IF commit_transaction.SQLCode <> 0 THEN
  3662. rslt = 0
  3663. ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
  3664. GOTO ext
  3665. END IF
  3666. IF cnt > 0 THEN
  3667. rslt = 0
  3668. ARG_MSG = "销售订单已经有相关出仓单据,不可以撤消审核"
  3669. GOTO ext
  3670. END IF
  3671. SELECT sum(u_SaleTaskMx.consignedQty)
  3672. INTO :ls_consignedQty
  3673. FROM u_SaleTaskMx
  3674. WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  3675. ( u_SaleTaskMx.scid = :arg_scid ) AND
  3676. ( u_SaleTaskMx.stopflag = 0 ) Using commit_transaction ;
  3677. IF commit_transaction.SQLCode <> 0 THEN
  3678. rslt = 0
  3679. ARG_MSG = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
  3680. GOTO ext
  3681. END IF
  3682. IF ls_consignedQty > 0 THEN
  3683. rslt = 0
  3684. ARG_MSG = "销售订单已有完成数量,不能撤审"
  3685. GOTO ext
  3686. END IF
  3687. IF Kind <> 0 THEN
  3688. cnt = 0
  3689. SELECT count(*)
  3690. INTO :cnt
  3691. FROM u_taskdamt_mx
  3692. WHERE scid = :arg_scid
  3693. And relid = :arg_taskid;
  3694. IF SQLCA.SQLCode <> 0 THEN
  3695. rslt = 0
  3696. ARG_MSG = "查询订单是否已开订单收款单失败"+"~n"+SQLCA.SQLErrText
  3697. GOTO ext
  3698. END IF
  3699. IF cnt > 0 THEN
  3700. rslt = 0
  3701. ARG_MSG = "订单已开订单收款单,不能撤审"
  3702. GOTO ext
  3703. END IF
  3704. END IF
  3705. //来料加工订单,检查是否已开收料单
  3706. IF Kind = 2 THEN
  3707. cnt = 0
  3708. SELECT count(*)
  3709. INTO :cnt
  3710. FROM u_inware,u_inwaremx
  3711. WHERE ( u_inware.billtype = 5 ) AND
  3712. ( u_inware.scid = u_inwaremx.scid ) AND
  3713. ( u_inware.inwareid = u_inwaremx.inwareid ) AND
  3714. ( u_inwaremx.relid = :arg_taskid ) AND
  3715. ( u_inware.scid = :arg_scid) Using commit_transaction;
  3716. IF commit_transaction.SQLCode <> 0 THEN
  3717. rslt = 0
  3718. ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
  3719. GOTO ext
  3720. END IF
  3721. IF cnt > 0 THEN
  3722. rslt = 0
  3723. ARG_MSG = "来料加工订单已经有相关收料进仓单据,不可以撤消审核"
  3724. GOTO ext
  3725. END IF
  3726. SELECT sum(u_SaleTaskMx_in.consignedQty)
  3727. INTO :ls_consignedQty
  3728. FROM u_SaleTaskMx_in
  3729. WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
  3730. ( u_SaleTaskMx_in.scid = :arg_scid ) Using commit_transaction ;
  3731. IF commit_transaction.SQLCode <> 0 THEN
  3732. rslt = 0
  3733. ARG_MSG = "查询来料加工订单已收料数量操作失败"+"~n"+SQLCA.SQLErrText
  3734. GOTO ext
  3735. END IF
  3736. IF ls_consignedQty > 0 THEN
  3737. rslt = 0
  3738. ARG_MSG = "来料加工订单已有收料数量,不能撤审"
  3739. GOTO ext
  3740. END IF
  3741. END IF
  3742. //默认订单调度
  3743. Long i
  3744. FOR i = 1 To it_mxbt
  3745. IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,ARG_MSG,False) = 0 THEN
  3746. rslt = 0
  3747. GOTO ext
  3748. END IF
  3749. NEXT
  3750. UPDATE u_SaleTask
  3751. SET Status = 4,
  3752. p_Auditingrep = '',
  3753. p_Auditingdate = :nulldate
  3754. WHERE TaskID = :arg_taskid
  3755. AND scid = :arg_scid
  3756. AND status = 1
  3757. Using commit_transaction ;
  3758. IF commit_transaction.SQLCode <> 0 THEN
  3759. rslt = 0
  3760. ARG_MSG = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  3761. GOTO ext
  3762. ELSEIF commit_transaction.SQLNRows = 0 THEN
  3763. rslt = 0
  3764. ARG_MSG = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  3765. GOTO ext
  3766. END IF
  3767. it_newbegin = False
  3768. it_updatebegin = False
  3769. ext:
  3770. IF rslt = 0 THEN
  3771. ROLLBACK Using commit_transaction;
  3772. ELSEIF arg_ifcommit And rslt = 1 THEN
  3773. COMMIT Using commit_transaction;
  3774. END IF
  3775. p_reset()
  3776. Return (rslt)
  3777. end function
  3778. public function integer updateassignqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);
  3779. Int rslt = 1
  3780. Dec ld_SaleQty,ld_AssignQty
  3781. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  3782. rslt = 0
  3783. GOTO ext
  3784. END IF
  3785. IF status = 0 THEN
  3786. arg_msg = '订单未审核,不能更新!'
  3787. rslt = 0
  3788. GOTO ext
  3789. END IF
  3790. SELECT pQty + wqty,
  3791. AssignQty
  3792. INTO :ld_SaleQty,
  3793. :ld_AssignQty
  3794. FROM u_SaleTaskMx
  3795. WHERE scid = :arg_scid AND
  3796. taskid = :arg_taskid AND
  3797. printid = :arg_printid Using commit_transaction;
  3798. IF commit_transaction.SQLCode <> 0 THEN
  3799. arg_msg = '查询销售订单已排产数量失败!'+commit_transaction.SQLErrText
  3800. rslt = 0
  3801. GOTO ext
  3802. END IF
  3803. IF ld_SaleQty - ld_AssignQty < arg_qty THEN
  3804. arg_msg = '排产数量大于待生产数!'
  3805. rslt = 0
  3806. GOTO ext
  3807. END IF
  3808. UPDATE u_SaleTaskMx
  3809. SET AssignQty = AssignQty + :arg_qty
  3810. WHERE scid = :arg_scid AND
  3811. taskid = :arg_taskid AND
  3812. printid = :arg_printid Using commit_transaction;
  3813. IF commit_transaction.SQLCode <> 0 THEN
  3814. arg_msg = '更新排产数失败>>'+commit_transaction.SQLErrText
  3815. rslt = 0
  3816. GOTO ext
  3817. END IF
  3818. UPDATE u_SaleTaskMx
  3819. SET u_SaleTaskMx.perfinishdate = uv_order_perfinishdate.perfinishdate
  3820. FROM u_SaleTaskMx,uv_order_perfinishdate
  3821. WHERE u_SaleTaskMx.scid = uv_order_perfinishdate.scid
  3822. AND u_SaleTaskMx.taskid = uv_order_perfinishdate.taskid
  3823. AND u_SaleTaskMx.printid = uv_order_perfinishdate.taskmxid AND
  3824. u_SaleTaskMx.scid = :arg_scid AND
  3825. u_SaleTaskMx.taskid = :arg_taskid AND
  3826. u_SaleTaskMx.printid = :arg_printid
  3827. Using commit_transaction;
  3828. IF commit_transaction.SQLCode = -1 THEN
  3829. arg_msg = '更新订单明细预计完成日期失败>>'+commit_transaction.SQLErrText
  3830. rslt = 0
  3831. GOTO ext
  3832. END IF
  3833. ext:
  3834. IF rslt = 1 And arg_ifcommit THEN
  3835. COMMIT Using commit_transaction;
  3836. ELSEIF rslt = 0 THEN
  3837. ROLLBACK Using commit_transaction;
  3838. END IF
  3839. RETURN rslt
  3840. end function
  3841. private function integer uof_p_check_dprice (ref string arg_msg);Int rslt = 1
  3842. Long ll_i
  3843. String ls_mtrlcode
  3844. Decimal ld_dftsaleprice
  3845. IF uo_option_taskaudit_dprice = -1000 THEN
  3846. arg_msg = '选项:[051]销售订单审核前必须有定价,读取初始默认值失败,操作取消!'
  3847. rslt = 0
  3848. GOTO ext
  3849. END IF
  3850. IF uo_option_taskaudit_dprice = 0 THEN
  3851. rslt = 1
  3852. GOTO ext
  3853. END IF
  3854. FOR ll_i = 1 TO it_mxbt
  3855. ls_mtrlcode = saletaskmx[ll_i].mtrlcode
  3856. ld_dftsaleprice = saletaskmx[ll_i].dftsaleprice
  3857. IF saletaskmx[ll_i].outtype <> '' THEN CONTINUE
  3858. IF ld_dftsaleprice = 0 THEN
  3859. arg_msg = '物料:'+ls_mtrlcode+'未有定价,请检查'
  3860. rslt = 0
  3861. GOTO ext
  3862. END IF
  3863. NEXT
  3864. ext:
  3865. RETURN rslt
  3866. end function
  3867. 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
  3868. Int li_ddflag,li_stopflag
  3869. Long ll_mtrlid
  3870. DateTime ldt_null
  3871. SetNull(ldt_null)
  3872. Decimal ld_bqty
  3873. String ls_pfcode
  3874. Int li_ifautodd,li_ifrebuypack,li_ifpackpro
  3875. Long ll_scid
  3876. Int li_isuse
  3877. Long ll_cusid,ll_pid
  3878. String ls_mtrlcode,ls_status,ls_woodcode,ls_pcode,ls_unit,ls_mtrlcuscode
  3879. DateTime ldt_rqdate
  3880. String ls_mxdscrp
  3881. Decimal ld_bqty_pack
  3882. Long ll_cnt
  3883. ll_cnt = 0
  3884. IF uo_option_autocreate_buy_cp = -1000 THEN
  3885. arg_msg = '选项:[113]销售订单调度审核自动建立成品申购单,读取初始默认值失败,操作取消!'
  3886. rslt = 0
  3887. GOTO ext
  3888. END IF
  3889. uo_requestbuy uo_rqbuy
  3890. uo_rqbuy = Create uo_requestbuy
  3891. SELECT mtrlid,
  3892. ddflag,
  3893. stopflag,
  3894. bqty,
  3895. pfcode,
  3896. status,
  3897. woodcode,
  3898. pcode,
  3899. mtrlcuscode,
  3900. requiredate,
  3901. mxdscrp
  3902. INTO :ll_mtrlid,
  3903. :li_ddflag,
  3904. :li_stopflag,
  3905. :ld_bqty,
  3906. :ls_pfcode,
  3907. :ls_status,
  3908. :ls_woodcode,
  3909. :ls_pcode,
  3910. :ls_mtrlcuscode,
  3911. :ldt_rqdate,
  3912. :ls_mxdscrp
  3913. FROM u_saletaskmx
  3914. WHERE u_saletaskmx.scid = :arg_scid
  3915. AND u_saletaskmx.taskid = :arg_taskid
  3916. And u_saletaskmx.printid = :arg_printid Using commit_transaction;
  3917. IF commit_transaction.SQLCode <> 0 THEN
  3918. rslt = 0
  3919. arg_msg = '明细行:'+String(arg_printid)+',查询订单产品明细失败 '+SQLCA.SQLErrText
  3920. GOTO ext
  3921. END IF
  3922. IF li_stopflag = 1 THEN
  3923. rslt = 0
  3924. arg_msg = '明细行:'+String(arg_printid)+',该订单明细已经终止,不能再调度审核'
  3925. GOTO ext
  3926. END IF
  3927. SELECT ifautodd,
  3928. scid,
  3929. ifrebuypack ,
  3930. ifpackpro,
  3931. mtrlcode,
  3932. isuse
  3933. INTO :li_ifautodd,
  3934. :ll_scid,
  3935. :li_ifrebuypack,
  3936. :li_ifpackpro,
  3937. :ls_mtrlcode,
  3938. :li_isuse
  3939. FROM u_mtrldef
  3940. Where mtrlid = :ll_mtrlid ;
  3941. IF commit_transaction.SQLCode <> 0 THEN
  3942. arg_msg = '明细行:'+String(arg_printid)+',物料:'+ls_mtrlcode+'查询订单明细物料是否自动调度失败,'+SQLCA.SQLErrText
  3943. rslt = 0
  3944. GOTO ext
  3945. END IF
  3946. IF ld_bqty > 0 And li_ifrebuypack = 1 And li_ifpackpro <> 0 And arg_flag = 0 THEN
  3947. 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
  3948. rslt = 0
  3949. GOTO ext
  3950. END IF
  3951. END IF
  3952. IF li_ifautodd = 0 THEN
  3953. IF arg_flag = 0 THEN
  3954. IF li_isuse = 0 THEN
  3955. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',不是有效物料,请检查'
  3956. rslt = 0
  3957. GOTO ext
  3958. END IF
  3959. IF li_ddflag = 1 THEN
  3960. rslt = 0
  3961. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',该订单明细已经调度审核'
  3962. GOTO ext
  3963. END IF
  3964. ELSE
  3965. IF li_ddflag = 0 THEN
  3966. rslt = 0
  3967. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',该订单明细未调度审核'
  3968. GOTO ext
  3969. END IF
  3970. END IF
  3971. END IF
  3972. IF arg_flag = 0 THEN
  3973. IF uo_option_autocreate_buy_cp = 1 THEN
  3974. ld_bqty = 0
  3975. SELECT bqty INTO :ld_bqty
  3976. FROM u_saletaskmx
  3977. WHERE scid = :arg_scid
  3978. AND taskid = :arg_taskid
  3979. And printid = :arg_printid Using commit_transaction;
  3980. IF commit_transaction.SQLCode <> 0 THEN
  3981. rslt = 0
  3982. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',查询订单明细安排采购数量失败 ' + SQLCA.SQLErrText
  3983. GOTO ext
  3984. END IF
  3985. IF ld_bqty > 0 THEN
  3986. s_requestbuy arg_s_rqbuy
  3987. arg_s_rqbuy.scid = ll_scid
  3988. arg_s_rqbuy.requestbuyid = 0
  3989. arg_s_rqbuy.requestbuydate = DateTime(Today(),Time(0))
  3990. arg_s_rqbuy.assign_emp = publ_operator
  3991. arg_s_rqbuy.relcode = ''
  3992. arg_s_rqbuy.dscrp = ''
  3993. arg_s_rqbuy.ifauto = 1
  3994. arg_s_rqbuy.billtype = 1
  3995. IF Not (li_ifrebuypack = 1 And li_ifpackpro = 1 ) THEN
  3996. SELECT u_saletaskmx.mtrlid,
  3997. u_saletaskmx.status,
  3998. u_saletaskmx.woodcode,
  3999. u_saletaskmx.pcode,
  4000. u_mtrldef.mtrlcode,
  4001. u_mtrldef.unit,
  4002. u_saletask.cusid,
  4003. u_saletaskmx.requiredate,
  4004. u_saletaskmx.mtrlcuscode,
  4005. u_saletaskmx.mxdscrp
  4006. INTO :ll_mtrlid,
  4007. :ls_status,
  4008. :ls_woodcode,
  4009. :ls_pcode,
  4010. :ls_mtrlcode,
  4011. :ls_unit,
  4012. :ll_cusid,
  4013. :ldt_rqdate,
  4014. :ls_mtrlcuscode,
  4015. :ls_mxdscrp
  4016. FROM u_saletaskmx,
  4017. u_mtrldef,
  4018. u_saletask
  4019. WHERE u_saletaskmx.mtrlid = u_mtrldef.mtrlid
  4020. AND u_saletask.taskid = u_saletaskmx.taskid
  4021. AND u_saletask.scid = u_saletaskmx.scid
  4022. AND u_saletaskmx.scid = :arg_scid
  4023. AND u_saletaskmx.taskid = :arg_taskid
  4024. And u_saletaskmx.printid = :arg_printid Using commit_transaction;
  4025. IF commit_transaction.SQLCode <> 0 THEN
  4026. rslt = 0
  4027. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',查询订单明细内容失败 ' + SQLCA.SQLErrText
  4028. GOTO ext
  4029. END IF
  4030. arg_s_rqbuy.arg_s_rqbuymx[1].mtrlcode = ls_mtrlcode
  4031. arg_s_rqbuy.arg_s_rqbuymx[1].uqty = ld_bqty
  4032. arg_s_rqbuy.arg_s_rqbuymx[1].unit = ls_unit
  4033. arg_s_rqbuy.arg_s_rqbuymx[1].status = ls_status
  4034. arg_s_rqbuy.arg_s_rqbuymx[1].woodcode = ls_woodcode
  4035. arg_s_rqbuy.arg_s_rqbuymx[1].pcode = ls_pcode
  4036. arg_s_rqbuy.arg_s_rqbuymx[1].mxdscrp = ls_mxdscrp
  4037. arg_s_rqbuy.arg_s_rqbuymx[1].mtrlid = ll_mtrlid
  4038. arg_s_rqbuy.arg_s_rqbuymx[1].orderid = arg_taskid
  4039. arg_s_rqbuy.arg_s_rqbuymx[1].wrkgrpid = 0
  4040. arg_s_rqbuy.arg_s_rqbuymx[1].ifrel = 1
  4041. arg_s_rqbuy.arg_s_rqbuymx[1].printid = 1
  4042. arg_s_rqbuy.arg_s_rqbuymx[1].rate = 1
  4043. arg_s_rqbuy.arg_s_rqbuymx[1].dftsptid = ll_cusid
  4044. arg_s_rqbuy.arg_s_rqbuymx[1].relprintid = arg_printid
  4045. arg_s_rqbuy.arg_s_rqbuymx[1].rqdate = ldt_rqdate
  4046. arg_s_rqbuy.arg_s_rqbuymx[1].plancode = ls_mtrlcuscode
  4047. ELSE
  4048. DECLARE cur_pack CURSOR FOR
  4049. SELECT u_saletaskmx_pack.pid,
  4050. u_saletaskmx_pack.mtrlid,
  4051. u_saletaskmx_pack.bqty,
  4052. u_saletaskmx_pack.status,
  4053. u_saletaskmx_pack.woodcode,
  4054. u_saletaskmx_pack.pcode,
  4055. u_saletaskmx_pack.mtrlcuscode,
  4056. u_mtrldef.mtrlcode,
  4057. u_mtrldef.unit,
  4058. u_SaleTask.CusID
  4059. FROM u_saletaskmx_pack INNER JOIN
  4060. u_mtrldef ON u_saletaskmx_pack.mtrlid = u_mtrldef.mtrlid INNER JOIN
  4061. u_SaleTask ON u_saletaskmx_pack.scid = u_SaleTask.scid AND
  4062. u_saletaskmx_pack.taskid = u_SaleTask.TaskID
  4063. WHERE u_saletaskmx_pack.scid = :arg_scid AND
  4064. u_saletaskmx_pack.taskid = :arg_taskid AND
  4065. u_saletaskmx_pack.printid = :arg_printid
  4066. ORDER BY u_saletaskmx_pack.pid
  4067. Using commit_transaction;
  4068. OPEN cur_pack;
  4069. 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;
  4070. DO WHILE SQLCA.SQLCode = 0
  4071. ll_cnt++
  4072. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].mtrlcode = ls_mtrlcode
  4073. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].uqty = ld_bqty
  4074. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].unit = ls_unit
  4075. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].status = ls_status
  4076. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].woodcode = ls_woodcode
  4077. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].pcode = ls_pcode
  4078. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].mxdscrp = ls_mxdscrp
  4079. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].mtrlid = ll_mtrlid
  4080. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].orderid = arg_taskid
  4081. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].wrkgrpid = 0
  4082. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].ifrel = 1
  4083. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].printid = ll_cnt
  4084. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].rate = 1
  4085. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].dftsptid = ll_cusid
  4086. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].relprintid = arg_printid
  4087. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].rqdate = ldt_rqdate
  4088. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].plancode = ls_mtrlcuscode
  4089. arg_s_rqbuy.arg_s_rqbuymx[ll_cnt].relpid = ll_pid
  4090. 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;
  4091. LOOP
  4092. CLOSE cur_pack;
  4093. END IF
  4094. IF uo_rqbuy.Save(arg_s_rqbuy,publ_operator,arg_msg,False) = 0 THEN
  4095. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
  4096. rslt = 0
  4097. GOTO ext
  4098. END IF
  4099. IF uo_rqbuy.audit(ll_scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,False) = 0 THEN
  4100. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
  4101. rslt = 0
  4102. GOTO ext
  4103. END IF
  4104. IF uo_rqbuy.audit_2(ll_scid,uo_rqbuy.uo_requestbuyid,publ_operator,arg_msg,False) = 0 THEN
  4105. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
  4106. rslt = 0
  4107. GOTO ext
  4108. END IF
  4109. END IF
  4110. END IF
  4111. UPDATE u_saletaskmx
  4112. SET ddflag = 1,
  4113. dddate = getdate(),
  4114. ddemp = :publ_operator
  4115. WHERE ddflag = 0
  4116. AND scid = :arg_scid
  4117. AND taskid = :arg_taskid
  4118. And printid = :arg_printid Using commit_transaction;
  4119. IF commit_transaction.SQLCode <> 0 THEN
  4120. rslt = 0
  4121. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',更新订单明细调度审核标记失败 ' + SQLCA.SQLErrText
  4122. GOTO ext
  4123. END IF
  4124. ELSE
  4125. IF uo_option_autocreate_buy_cp = 1 THEN
  4126. Long ll_requestbuyid[]
  4127. Long ll_i,i
  4128. i = 1
  4129. DECLARE cur_rqbuy CURSOR FOR
  4130. SELECT distinct u_requestbuy.requestbuyid
  4131. FROM u_requestbuymx,u_requestbuy
  4132. WHERE u_requestbuymx.requestbuyid = u_requestbuy.requestbuyid
  4133. AND u_requestbuy.scid = :ll_scid
  4134. AND u_requestbuymx.orderid = :arg_taskid
  4135. AND u_requestbuymx.relprintid = :arg_printid
  4136. And u_requestbuy.billtype = 1 Using commit_transaction;
  4137. OPEN cur_rqbuy;
  4138. FETCH cur_rqbuy Into :ll_requestbuyid[i];
  4139. DO WHILE commit_transaction.SQLCode = 0
  4140. i++
  4141. FETCH cur_rqbuy Into :ll_requestbuyid[i];
  4142. LOOP
  4143. CLOSE cur_rqbuy;
  4144. FOR ll_i = 1 To i - 1
  4145. IF uo_rqbuy.caudit_2(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,False) = 0 THEN
  4146. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
  4147. rslt = 0
  4148. GOTO ext
  4149. END IF
  4150. IF uo_rqbuy.caudit(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,False) = 0 THEN
  4151. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
  4152. rslt = 0
  4153. GOTO ext
  4154. END IF
  4155. IF uo_rqbuy.del(ll_scid,ll_requestbuyid[ll_i],0,arg_msg,False) = 0 THEN
  4156. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+','+arg_msg
  4157. rslt = 0
  4158. GOTO ext
  4159. END IF
  4160. NEXT
  4161. ELSE
  4162. //检查申购单
  4163. SELECT count(*) INTO :cnt
  4164. FROM u_requestbuymx,u_requestbuy
  4165. WHERE u_requestbuymx.requestbuyid = u_requestbuy.requestbuyid
  4166. AND u_requestbuy.scid = :ll_scid
  4167. AND u_requestbuymx.orderid = :arg_taskid
  4168. AND u_requestbuymx.relprintid = :arg_printid
  4169. And u_requestbuy.billtype = 1 Using commit_transaction;
  4170. IF commit_transaction.SQLCode <> 0 THEN
  4171. rslt = 0
  4172. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',查询订单相关成品申购单失败'
  4173. GOTO ext
  4174. END IF
  4175. IF cnt <> 0 THEN
  4176. rslt = 0
  4177. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',订单已经存在相关成品申购单.不可以撤销审核'
  4178. GOTO ext
  4179. END IF
  4180. END IF
  4181. //检查生产计划
  4182. String ls_ordercode,ls_ordercode_str
  4183. cnt = 0
  4184. DECLARE cur_order CURSOR FOR
  4185. SELECT distinct u_Order_ml.ordercode
  4186. FROM u_order_ml_mx INNER JOIN
  4187. u_Order_ml ON u_order_ml_mx.scid = u_Order_ml.scid AND
  4188. u_order_ml_mx.orderid = u_Order_ml.OrderID
  4189. WHERE u_order_ml_mx.taskid = :arg_taskid
  4190. AND u_order_ml_mx.taskmxid = :arg_printid
  4191. AND u_order_ml_mx.scid = :arg_scid
  4192. And (u_Order_ml.ordertype = 0 Or u_Order_ml.ordertype = 1) Using commit_transaction;
  4193. OPEN cur_order;
  4194. FETCH cur_order Into :ls_ordercode;
  4195. DO WHILE commit_transaction.SQLCode = 0
  4196. cnt++
  4197. IF ls_ordercode_str = '' THEN
  4198. ls_ordercode_str = ls_ordercode
  4199. ELSE
  4200. ls_ordercode_str = ls_ordercode_str + ',' + ls_ordercode
  4201. END IF
  4202. FETCH cur_order Into :ls_ordercode;
  4203. LOOP
  4204. CLOSE cur_order;
  4205. IF cnt <> 0 THEN
  4206. rslt = 0
  4207. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',订单已经存在相关生产计划:'+ls_ordercode_str+',不可以撤销审核'
  4208. GOTO ext
  4209. END IF
  4210. DELETE FROM u_saletaskmx_pack
  4211. WHERE scid = :arg_scid
  4212. AND taskid = :arg_taskid
  4213. And printid = :arg_printid Using commit_transaction;
  4214. IF commit_transaction.SQLCode <> 0 THEN
  4215. rslt = 0
  4216. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',删除包件待申购列表失败 ' + SQLCA.SQLErrText
  4217. GOTO ext
  4218. END IF
  4219. UPDATE u_saletaskmx
  4220. SET ddflag = 0,
  4221. dddate = :ldt_null,
  4222. ddemp = ''
  4223. WHERE ddflag = 1
  4224. AND scid = :arg_scid
  4225. AND taskid = :arg_taskid
  4226. And printid = :arg_printid Using commit_transaction;
  4227. IF commit_transaction.SQLCode <> 0 THEN
  4228. rslt = 0
  4229. arg_msg = '明细行:'+String(arg_printid)+',物料'+ls_mtrlcode+',更新订单明细调度审核标记失败 ' + SQLCA.SQLErrText
  4230. GOTO ext
  4231. END IF
  4232. END IF
  4233. ext:
  4234. IF rslt = 0 THEN
  4235. ROLLBACK;
  4236. ELSEIF rslt = 1 And arg_ifcommit THEN
  4237. COMMIT;
  4238. END IF
  4239. Destroy uo_rqbuy
  4240. RETURN rslt
  4241. end function
  4242. 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
  4243. Int li_stopflag,li_ddflag,li_ifbj
  4244. Long ll_mtrlid,cnt,ll_typeid
  4245. DateTime ldt_null
  4246. SetNull(ldt_null)
  4247. IF uo_option_dd_allto_pqty = -1000 THEN
  4248. arg_msg = '选项:[335]销售订单及销售预测单自动调度全部调度到自制排产,读取初始默认值失败,操作取消!'
  4249. rslt = 0
  4250. GOTO ext
  4251. END IF
  4252. IF arg_taskid <= 0 THEN
  4253. rslt = 0
  4254. ARG_MSG = '错误销售订单唯一码'
  4255. GOTO ext
  4256. END IF
  4257. IF arg_flag = 1 THEN
  4258. SELECT typeid INTO :ll_typeid
  4259. FROM u_saletask
  4260. WHERE scid = :arg_scid
  4261. AND taskid = :arg_taskid
  4262. Using commit_transaction;
  4263. IF commit_transaction.SQLCode <> 0 THEN
  4264. ARG_MSG = '明细行:'+String(arg_printid)+',查询订单分类信息失败,'+sqlca.SQLErrText
  4265. rslt = 0
  4266. GOTO ext
  4267. END IF
  4268. IF ll_typeid > 0 THEN
  4269. SELECT ifbj INTO :li_ifbj
  4270. FROM u_saletype
  4271. Where typeid = :ll_typeid Using commit_transaction;
  4272. IF commit_transaction.SQLCode <> 0 THEN
  4273. ARG_MSG = '明细行:'+String(arg_printid)+',查询订单分类是否补件信息失败,'+sqlca.SQLErrText
  4274. rslt = 0
  4275. GOTO ext
  4276. END IF
  4277. END IF
  4278. END IF
  4279. SELECT mtrlid,ddflag,stopflag
  4280. INTO :ll_mtrlid,:li_ddflag,:li_stopflag
  4281. FROM u_saletaskmx
  4282. WHERE u_saletaskmx.scid = :arg_scid
  4283. AND u_saletaskmx.taskid = :arg_taskid
  4284. And u_saletaskmx.printid = :arg_printid Using commit_transaction;
  4285. IF commit_transaction.SQLCode <> 0 THEN
  4286. ARG_MSG = '明细行:'+String(arg_printid)+',查询订单信息失败,'+sqlca.SQLErrText
  4287. rslt = 0
  4288. GOTO ext
  4289. END IF
  4290. IF li_stopflag = 1 THEN
  4291. rslt = 0
  4292. ARG_MSG = '明细行:'+String(arg_printid)+',查询订单明细已经终止,请检查'
  4293. GOTO ext
  4294. END IF
  4295. Int li_ifautodd
  4296. SELECT ifautodd INTO :li_ifautodd
  4297. FROM u_mtrldef
  4298. Where mtrlid = :ll_mtrlid ;
  4299. IF commit_transaction.SQLCode <> 0 THEN
  4300. ARG_MSG = '明细行:'+String(arg_printid)+',查询订单明细物料是否自动调度失败,'+sqlca.SQLErrText
  4301. rslt = 0
  4302. GOTO ext
  4303. END IF
  4304. IF arg_flag = 1 THEN
  4305. Int li_mtrlorigin
  4306. String ls_mtrlcode
  4307. Int li_iflljg
  4308. SELECT mtrlorigin,mtrlcode,iflljg
  4309. INTO :li_mtrlorigin,:ls_mtrlcode,:li_iflljg
  4310. FROM u_mtrldef
  4311. Where mtrlid = :ll_mtrlid Using commit_transaction;
  4312. IF commit_transaction.SQLCode <> 0 THEN
  4313. rslt = 0
  4314. ARG_MSG = '明细行:'+String(arg_printid)+',查询订单产品['+ls_mtrlcode+']来源失败'
  4315. GOTO ext
  4316. END IF
  4317. IF li_ifbj = 1 or uo_option_dd_allto_pqty = 1 THEN
  4318. UPDATE u_saletaskmx
  4319. SET pqty = :arg_qty
  4320. WHERE scid = :arg_scid
  4321. AND taskid = :arg_taskid
  4322. And printid = :arg_printid Using commit_transaction;
  4323. IF commit_transaction.SQLCode <> 0 THEN
  4324. rslt = 0
  4325. ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']排产数量失败'
  4326. GOTO ext
  4327. END IF
  4328. ELSE
  4329. IF li_mtrlorigin = 0 THEN
  4330. IF li_iflljg = 0 THEN
  4331. UPDATE u_saletaskmx
  4332. SET pqty = :arg_qty
  4333. WHERE scid = :arg_scid
  4334. AND taskid = :arg_taskid
  4335. And printid = :arg_printid Using commit_transaction;
  4336. IF commit_transaction.SQLCode <> 0 THEN
  4337. rslt = 0
  4338. ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']排产数量失败'
  4339. GOTO ext
  4340. END IF
  4341. ELSE
  4342. UPDATE u_saletaskmx
  4343. SET lqty = :arg_qty
  4344. WHERE scid = :arg_scid
  4345. AND taskid = :arg_taskid
  4346. And printid = :arg_printid Using commit_transaction;
  4347. IF commit_transaction.SQLCode <> 0 THEN
  4348. rslt = 0
  4349. ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']客户来料数量失败'
  4350. GOTO ext
  4351. END IF
  4352. END IF
  4353. ELSEIF li_mtrlorigin = 2 THEN
  4354. UPDATE u_saletaskmx
  4355. SET bqty = :arg_qty
  4356. WHERE scid = :arg_scid
  4357. AND taskid = :arg_taskid
  4358. And printid = :arg_printid Using commit_transaction;
  4359. IF commit_transaction.SQLCode <> 0 THEN
  4360. rslt = 0
  4361. ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']采购数量失败'
  4362. GOTO ext
  4363. END IF
  4364. ELSEIF li_mtrlorigin = 3 THEN
  4365. UPDATE u_saletaskmx
  4366. SET wqty = :arg_qty
  4367. WHERE scid = :arg_scid
  4368. AND taskid = :arg_taskid
  4369. And printid = :arg_printid Using commit_transaction;
  4370. IF commit_transaction.SQLCode <> 0 THEN
  4371. rslt = 0
  4372. ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']外协数量失败'
  4373. GOTO ext
  4374. END IF
  4375. ELSEIF li_mtrlorigin = 6 THEN
  4376. UPDATE u_saletaskmx
  4377. SET lqty = :arg_qty
  4378. WHERE scid = :arg_scid
  4379. AND taskid = :arg_taskid
  4380. And printid = :arg_printid Using commit_transaction;
  4381. IF commit_transaction.SQLCode <> 0 THEN
  4382. rslt = 0
  4383. ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']客户来料数量失败'
  4384. GOTO ext
  4385. END IF
  4386. END IF
  4387. END IF
  4388. ELSE
  4389. IF li_ifautodd = 0 THEN
  4390. IF li_ddflag = 1 THEN
  4391. rslt = 0
  4392. ARG_MSG = '明细行:'+String(arg_printid)+',该订单明细已经调度审核'
  4393. GOTO ext
  4394. END IF
  4395. END IF
  4396. UPDATE u_saletaskmx
  4397. SET pqty = 0,bqty = 0,wqty = 0,lqty = 0
  4398. WHERE scid = :arg_scid
  4399. AND taskid = :arg_taskid
  4400. And printid = :arg_printid Using commit_transaction;
  4401. IF commit_transaction.SQLCode <> 0 THEN
  4402. rslt = 0
  4403. ARG_MSG = '明细行:'+String(arg_printid)+',更新订单产品['+ls_mtrlcode+']调度数量失败'
  4404. GOTO ext
  4405. END IF
  4406. END IF
  4407. IF li_ifautodd = 1 THEN
  4408. IF arg_flag = 1 THEN
  4409. IF ddpermit(arg_scid,arg_taskid,arg_printid,0,ARG_MSG,False) = 0 THEN
  4410. rslt = 0
  4411. GOTO ext
  4412. END IF
  4413. ELSE
  4414. IF ddpermit(arg_scid,arg_taskid,arg_printid,1,ARG_MSG,False) = 0 THEN
  4415. rslt = 0
  4416. GOTO ext
  4417. END IF
  4418. END IF
  4419. END IF
  4420. ext:
  4421. IF rslt = 0 THEN
  4422. ROLLBACK ;
  4423. ELSEIF rslt = 1 And arg_ifcommit THEN
  4424. COMMIT;
  4425. END IF
  4426. Return (rslt)
  4427. end function
  4428. 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
  4429. datetime null_dt
  4430. setnull(null_dt)
  4431. IF uo_option_if_saleout = -1000 THEN
  4432. rslt = 0
  4433. arg_msg = '选项:[200]使用发货通知单,读取初始默认值失败,操作取消!'
  4434. GOTO ext
  4435. END IF
  4436. IF arg_taskid <= 0 THEN
  4437. rslt = 0
  4438. arg_msg = '错误销售订单唯一码'
  4439. GOTO ext
  4440. END IF
  4441. IF arg_addqty = 0 THEN
  4442. rslt = 1
  4443. GOTO ext
  4444. END IF
  4445. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  4446. rslt = 0
  4447. GOTO ext
  4448. END IF
  4449. IF status <> 1 And status <> 5 THEN
  4450. rslt = 0
  4451. IF status <> 1 THEN
  4452. arg_msg = "销售订单只有在进行状态下才可以执行进仓"
  4453. ELSEIF status <> 5 THEN
  4454. arg_msg = "销售订单只有在完成状态下才可以撤消进仓"
  4455. END IF
  4456. GOTO ext
  4457. END IF
  4458. Decimal ls_SaleQty,ls_consignedQty,ld_saleoutqty
  4459. String ls_mtrlcode
  4460. Int li_stopflag
  4461. Decimal ld_upsalerate,ld_upsaleqty
  4462. SELECT u_SaleTaskMx.SaleQty,
  4463. u_SaleTaskMx.consignedQty,
  4464. u_mtrldef.mtrlcode,
  4465. u_SaleTaskMx.stopflag,
  4466. u_mtrldef.upsalerate,
  4467. u_mtrldef.upsaleqty
  4468. INTO :ls_SaleQty,
  4469. :ls_consignedQty,
  4470. :ls_mtrlcode,
  4471. :li_stopflag,
  4472. :ld_upsalerate,
  4473. :ld_upsaleqty
  4474. FROM u_SaleTaskMx ,u_mtrldef
  4475. WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  4476. ( u_SaleTaskMx.printid = :arg_printid ) AND
  4477. ( u_saletaskmx.scid = :arg_scid) AND
  4478. ( u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid) Using commit_transaction ;
  4479. IF commit_transaction.SQLCode <> 0 THEN
  4480. rslt = 0
  4481. arg_msg = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
  4482. GOTO ext
  4483. END IF
  4484. IF li_stopflag = 1 THEN
  4485. rslt = 0
  4486. arg_msg = "产品编码["+ls_mtrlcode+"]对应的销售订单明细已终止,不能执行更新订单完成数操作"
  4487. GOTO ext
  4488. END IF
  4489. IF arg_addqty < 0 THEN
  4490. IF ls_consignedQty + arg_addqty < 0 THEN
  4491. rslt = 0
  4492. arg_msg = "产品:"+ls_mtrlcode+",的订单已完成数量只有"+String(ls_consignedQty,'#,##0.0#')+",不能退货"+String(arg_addqty,'#,##0.0#')
  4493. GOTO ext
  4494. END IF
  4495. END IF
  4496. IF ls_SaleQty * (1+ ld_upsalerate) + ld_upsaleqty < ls_consignedQty + arg_addqty THEN
  4497. rslt = 0
  4498. 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#')
  4499. GOTO ext
  4500. END IF
  4501. IF uo_option_if_saleout = 1 And arg_addqty < 0 THEN
  4502. ld_saleoutqty = arg_addqty
  4503. ELSE
  4504. ld_saleoutqty = 0
  4505. END IF
  4506. UPDATE u_SaleTaskMx
  4507. SET consignedQty = consignedQty +:arg_addqty,
  4508. saleoutqty = saleoutqty + :ld_saleoutqty,
  4509. accomplishdate = case when :ls_consignedQty + :arg_addqty >= :ls_SaleQty then getdate() else :null_dt end
  4510. WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  4511. ( u_SaleTaskMx.printid = :arg_printid ) AND
  4512. ( u_saletaskmx.scid = :arg_scid) AND
  4513. ( u_SaleTaskMx.stopflag = 0 ) Using commit_transaction;
  4514. IF commit_transaction.SQLCode <> 0 THEN
  4515. rslt = 0
  4516. arg_msg = "因网络或错误产品唯一码导致销售订单完成数量操作失败"+"~n"+ commit_transaction.SQLErrText
  4517. GOTO ext
  4518. END IF
  4519. it_newbegin = False
  4520. it_updatebegin = False
  4521. ext:
  4522. IF rslt = 0 THEN
  4523. ROLLBACK Using commit_transaction;
  4524. ELSEIF arg_ifcommit And rslt = 1 THEN
  4525. COMMIT Using commit_transaction;
  4526. END IF
  4527. p_reset()
  4528. Return (rslt)
  4529. end function
  4530. public function integer canceloapermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//相关OA公文被否决时调用
  4531. Int rslt = 1,cnt = 0
  4532. DateTime nulldate
  4533. Decimal ls_consignedQty
  4534. SetNull(nulldate)
  4535. IF uo_option_saletask_secaudit = -1000 THEN
  4536. arg_msg = '选项:[035]销售订单使用二级审核,读取初始默认值失败,操作取消!'
  4537. rslt = 0
  4538. GOTO ext
  4539. END IF
  4540. IF uo_option_saletask_fore_secaudit = -1000 THEN
  4541. arg_msg = '选项:[088]销售预测单二级审核,读取初始默认值失败,操作取消!'
  4542. rslt = 0
  4543. GOTO ext
  4544. END IF
  4545. IF uo_option_if_oa_saletask = -1000 THEN
  4546. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  4547. rslt = 0
  4548. GOTO ext
  4549. END IF
  4550. IF uo_option_if_oa_saletask_fore = -1000 THEN
  4551. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  4552. rslt = 0
  4553. GOTO ext
  4554. END IF
  4555. IF arg_taskid <= 0 THEN
  4556. rslt = 0
  4557. ARG_MSG = '错误销售订单唯一码'
  4558. GOTO ext
  4559. END IF
  4560. IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
  4561. rslt = 0
  4562. GOTO ext
  4563. END IF
  4564. IF ctmint > 0 THEN
  4565. ARG_MSG = '单据已截数,不能操作'
  4566. rslt = 0
  4567. GOTO ext
  4568. END IF
  4569. IF Kind <> 0 THEN
  4570. IF Not (uo_option_saletask_secaudit = 1 AND uo_option_if_oa_saletask = 1) THEN
  4571. rslt = 0
  4572. ARG_MSG = '系统设置没有使用OA审批流程,请联系管理员'
  4573. GOTO ext
  4574. END IF
  4575. ELSE
  4576. IF Not (uo_option_saletask_fore_secaudit = 1 AND uo_option_if_oa_saletask_fore = 1) THEN
  4577. rslt = 0
  4578. ARG_MSG = '系统设置没有使用OA审批流程,请联系管理员'
  4579. GOTO ext
  4580. END IF
  4581. END IF
  4582. IF Status <> 4 THEN
  4583. rslt = 0
  4584. ARG_MSG = "订单只有在已待生产审核状态才可以执行撤消审核,请核对"
  4585. GOTO ext
  4586. END IF
  4587. SELECT count(*) INTO :cnt
  4588. FROM u_order_ml
  4589. WHERE scid = :arg_scid
  4590. AND taskid = :arg_taskid
  4591. and (ordertype = 0 or ordertype = 1)
  4592. USING commit_transaction;
  4593. IF commit_transaction.SQLCode <> 0 THEN
  4594. rslt = 0
  4595. ARG_MSG = "因网络或其它原因导致查询销售订单排产数量操作失败"+"~n"+commit_transaction.SQLErrText
  4596. GOTO ext
  4597. END IF
  4598. IF cnt > 0 THEN
  4599. rslt = 0
  4600. ARG_MSG = "销售订单已经有相关生产计划,不可以撤消审核"
  4601. GOTO ext
  4602. END IF
  4603. cnt = 0
  4604. SELECT count(*)
  4605. INTO :cnt
  4606. FROM u_outware,u_outwaremx
  4607. WHERE ( u_outware.billtype = 1 ) AND
  4608. ( u_outware.scid = u_outwaremx.scid ) AND
  4609. ( u_outware.outwareid = u_outwaremx.outwareid ) AND
  4610. ( u_outwaremx.relid = :arg_taskid ) AND
  4611. ( u_outware.scid = :arg_scid) USING commit_transaction;
  4612. IF commit_transaction.SQLCode <> 0 THEN
  4613. rslt = 0
  4614. ARG_MSG = "因网络或其它原因导致查询销售订单发货数量操作失败"+"~n"+commit_transaction.SQLErrText
  4615. GOTO ext
  4616. END IF
  4617. IF cnt > 0 THEN
  4618. rslt = 0
  4619. ARG_MSG = "销售订单已经有相关出仓单据,不可以撤消审核"
  4620. GOTO ext
  4621. END IF
  4622. SELECT sum(u_SaleTaskMx.consignedQty)
  4623. INTO :ls_consignedQty
  4624. FROM u_SaleTaskMx
  4625. WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  4626. ( u_SaleTaskMx.stopflag = 0 ) USING commit_transaction ;
  4627. IF commit_transaction.SQLCode <> 0 THEN
  4628. rslt = 0
  4629. ARG_MSG = "查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
  4630. GOTO ext
  4631. END IF
  4632. IF ls_consignedQty > 0 THEN
  4633. rslt = 0
  4634. ARG_MSG = "销售订单已有完成数量,不能撤审"
  4635. GOTO ext
  4636. END IF
  4637. UPDATE u_SaleTask
  4638. SET Status = 0,
  4639. permit_emp = '',
  4640. permit_date = :nulldate
  4641. WHERE TaskID = :arg_taskid
  4642. AND scid = :arg_scid
  4643. AND status = 4
  4644. USING commit_transaction ;
  4645. IF commit_transaction.SQLCode <> 0 THEN
  4646. rslt = 0
  4647. ARG_MSG = "因网络或其它原因导致销售订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  4648. GOTO ext
  4649. ELSEIF commit_transaction.SQLNRows = 0 THEN
  4650. rslt = 0
  4651. ARG_MSG = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  4652. GOTO ext
  4653. END IF
  4654. //默认订单调度
  4655. Long i
  4656. FOR i = 1 TO it_mxbt
  4657. IF p_cprqplan(arg_scid,arg_taskid,saletaskmx[i].printid,0,saletaskmx[i].saleqty,ARG_MSG,FALSE) = 0 THEN
  4658. rslt = 0
  4659. GOTO ext
  4660. END IF
  4661. NEXT
  4662. it_newbegin = FALSE
  4663. it_updatebegin = FALSE
  4664. ext:
  4665. IF rslt = 0 THEN
  4666. ROLLBACK USING commit_transaction;
  4667. ELSEIF arg_ifcommit AND rslt = 1 THEN
  4668. COMMIT USING commit_transaction;
  4669. END IF
  4670. p_reset()
  4671. Return (rslt)
  4672. end function
  4673. 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
  4674. IF arg_taskid <= 0 THEN
  4675. rslt = 0
  4676. ARG_MSG = '错误销售订单唯一码'
  4677. GOTO ext
  4678. END IF
  4679. IF arg_addqty = 0 THEN
  4680. rslt = 1
  4681. GOTO ext
  4682. END IF
  4683. IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
  4684. rslt = 0
  4685. GOTO ext
  4686. END IF
  4687. IF status <> 1 AND status <> 5 THEN
  4688. rslt = 0
  4689. IF status <> 1 THEN
  4690. ARG_MSG = "销售订单只有在进行状态下才可以执行收料进仓"
  4691. ELSEIF status <> 5 THEN
  4692. ARG_MSG = "销售订单只有在完成状态下才可以撤消收料进仓"
  4693. END IF
  4694. GOTO ext
  4695. END IF
  4696. Decimal ls_SaleQty,ls_consignedQty
  4697. String ls_mtrlcode
  4698. SELECT u_SaleTaskMx_in.Qty,
  4699. u_SaleTaskMx_in.consignedQty,
  4700. u_mtrldef.mtrlcode
  4701. INTO :ls_SaleQty,
  4702. :ls_consignedQty,
  4703. :ls_mtrlcode
  4704. FROM u_SaleTaskMx_in ,u_mtrldef
  4705. WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
  4706. ( u_SaleTaskMx_in.printid = :arg_printid ) and
  4707. ( u_SaleTaskMx_in.mtrlid = u_mtrldef.mtrlid) USING commit_transaction ;
  4708. IF commit_transaction.SQLCode <> 0 THEN
  4709. rslt = 0
  4710. ARG_MSG = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
  4711. GOTO ext
  4712. END IF
  4713. IF ls_SaleQty < ls_consignedQty+arg_addqty THEN
  4714. rslt = 0
  4715. ARG_MSG = "产品["+ls_mtrlcode+"]的未完成收料数量只有"+String(ls_SaleQty - ls_consignedQty,'#,##0.0#')+",不能出仓"+String(arg_addqty,'#,##0.0#')
  4716. GOTO ext
  4717. END IF
  4718. UPDATE u_SaleTaskMx_in
  4719. SET consignedQty = consignedQty +:arg_addqty
  4720. WHERE ( u_SaleTaskMx_in.TaskID = :arg_taskid ) AND
  4721. ( u_SaleTaskMx_in.printid = :arg_printid ) and
  4722. ( u_SaleTaskMx_in.scid = :arg_scid) USING commit_transaction;
  4723. IF commit_transaction.SQLCode <> 0 THEN
  4724. rslt = 0
  4725. ARG_MSG = "因网络或错误产品唯一码导致销售订单收料完成数量操作失败"+"~n"+ commit_transaction.SQLErrText
  4726. GOTO ext
  4727. END IF
  4728. it_newbegin = FALSE
  4729. it_updatebegin = FALSE
  4730. ext:
  4731. IF rslt = 0 THEN
  4732. ROLLBACK USING commit_transaction;
  4733. ELSEIF arg_ifcommit and rslt = 1 THEN
  4734. COMMIT USING commit_transaction;
  4735. END IF
  4736. p_reset()
  4737. Return (rslt)
  4738. end function
  4739. 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
  4740. Long cnt = 0,ls_i
  4741. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  4742. rslt = 0
  4743. arg_msg = "非编辑状态不可以使用,操作取消"
  4744. GOTO ext
  4745. END IF
  4746. IF uo_option_change_status = '-1000' THEN
  4747. arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
  4748. rslt = 0
  4749. GOTO ext
  4750. END IF
  4751. IF uo_option_change_woodcode = '-1000' THEN
  4752. arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
  4753. rslt = 0
  4754. GOTO ext
  4755. END IF
  4756. IF uo_option_change_pcode = '-1000' THEN
  4757. arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
  4758. rslt = 0
  4759. GOTO ext
  4760. END IF
  4761. //清除空值
  4762. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  4763. IF IsNull(arg_qty) THEN arg_qty = 0
  4764. IF IsNull(arg_fprice) THEN arg_fprice = 0
  4765. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  4766. IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
  4767. IF IsNull(arg_status) THEN arg_status = ''
  4768. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  4769. IF IsNull(arg_pcode) THEN arg_pcode = ''
  4770. IF IsNull(arg_printid) THEN arg_printid = 0
  4771. IF IsNull(arg_plancode) THEN arg_plancode = ''
  4772. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  4773. IF IsNull(arg_storageid) THEN arg_storageid = 0
  4774. IF arg_mtrlid = 0 OR arg_qty = 0 THEN
  4775. rslt = 1
  4776. GOTO ext
  4777. END IF
  4778. IF arg_storageid = 0 THEN
  4779. rslt = 0
  4780. arg_msg = '请选择仓库,第'+String(arg_printid)+'行'
  4781. GOTO ext
  4782. END IF
  4783. IF f_check_status(1,arg_status) = 0 THEN
  4784. rslt = 0
  4785. arg_msg = "查询操作失败,可能'+uo_option_change_status+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
  4786. GOTO ext
  4787. END IF
  4788. IF f_check_status(2,arg_woodcode) = 0 THEN
  4789. rslt = 0
  4790. arg_msg = "查询操作失败,可能'+uo_option_change_woodcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
  4791. GOTO ext
  4792. END IF
  4793. IF f_check_status(3,arg_pcode) = 0 THEN
  4794. rslt = 0
  4795. arg_msg = "查询操作失败,可能'+uo_option_change_pcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
  4796. GOTO ext
  4797. END IF
  4798. IF arg_fprice < 0 THEN
  4799. rslt = 0
  4800. arg_msg = "物料编码:" + String(arg_mtrlcode)+" 单价错误"
  4801. GOTO ext
  4802. END IF
  4803. FOR ls_i = 1 TO it_mxbt_in //合并重复项
  4804. IF saletaskmx_in[ls_i].mtrlid = arg_mtrlid AND &
  4805. saletaskmx_in[ls_i].status = arg_status AND &
  4806. saletaskmx_in[ls_i].pcode = arg_pcode AND &
  4807. saletaskmx_in[ls_i].plancode = arg_plancode AND &
  4808. saletaskmx_in[ls_i].woodcode = arg_woodcode and &
  4809. saletaskmx_in[ls_i].storageid = arg_storageid THEN
  4810. saletaskmx_in[ls_i].qty = saletaskmx_in[ls_i].qty+arg_qty
  4811. rslt = 1
  4812. GOTO ext
  4813. END IF
  4814. NEXT
  4815. //写入内容
  4816. it_mxbt_in++
  4817. saletaskmx_in[it_mxbt_in].mtrlid = arg_mtrlid
  4818. saletaskmx_in[it_mxbt_in].qty = arg_qty
  4819. saletaskmx_in[it_mxbt_in].fprice = arg_fprice
  4820. saletaskmx_in[it_mxbt_in].mxdscrp = arg_mxdscrp
  4821. saletaskmx_in[it_mxbt_in].status = arg_status
  4822. saletaskmx_in[it_mxbt_in].printid = arg_printid
  4823. saletaskmx_in[it_mxbt_in].woodcode = arg_woodcode
  4824. saletaskmx_in[it_mxbt_in].pcode = arg_pcode
  4825. saletaskmx_in[it_mxbt_in].plancode = arg_plancode
  4826. saletaskmx_in[it_mxbt_in].storageid = arg_storageid
  4827. ext:
  4828. IF rslt = 0 THEN p_clearmx()
  4829. RETURN rslt
  4830. end function
  4831. public function integer updateinwareqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);
  4832. Int rslt = 1
  4833. Dec ld_SaleQty,ld_inwareQty
  4834. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  4835. rslt = 0
  4836. GOTO ext
  4837. END IF
  4838. IF status = 0 THEN
  4839. arg_msg = '订单未审核,不能更新!'
  4840. rslt = 0
  4841. GOTO ext
  4842. END IF
  4843. SELECT SaleQty,
  4844. inwareQty
  4845. INTO :ld_SaleQty,
  4846. :ld_inwareQty
  4847. FROM u_SaleTaskMx
  4848. WHERE scid = :arg_scid AND
  4849. taskid = :arg_taskid AND
  4850. printid = :arg_printid USING commit_transaction;
  4851. IF commit_transaction.SQLCode <> 0 THEN
  4852. arg_msg = '查询销售订单明细已进仓数量失败!'+commit_transaction.SQLErrText
  4853. rslt = 0
  4854. GOTO ext
  4855. END IF
  4856. IF ld_SaleQty - ld_inwareQty < arg_qty THEN
  4857. arg_msg = '进仓数量大于未进仓数!'
  4858. rslt = 0
  4859. GOTO ext
  4860. END IF
  4861. UPDATE u_SaleTaskMx
  4862. SET inwareQty = inwareQty + :arg_qty
  4863. WHERE scid = :arg_scid AND
  4864. taskid = :arg_taskid AND
  4865. printid = :arg_printid USING commit_transaction;
  4866. IF commit_transaction.SQLCode <> 0 THEN
  4867. arg_msg = '更新进仓数失败>>'+commit_transaction.SQLErrText
  4868. rslt = 0
  4869. GOTO ext
  4870. END IF
  4871. ext:
  4872. IF rslt = 1 AND arg_ifcommit THEN
  4873. COMMIT USING commit_transaction;
  4874. ELSEIF rslt = 0 THEN
  4875. ROLLBACK USING commit_transaction;
  4876. END IF
  4877. RETURN rslt
  4878. end function
  4879. 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)
  4880. Int rslt = 1,cnt = 0,ll_status
  4881. DateTime null_dt
  4882. SetNull(null_dt)
  4883. IF arg_taskid <= 0 THEN
  4884. rslt = 0
  4885. arg_msg = '错误销售预测单唯一码'
  4886. GOTO ext
  4887. END IF
  4888. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  4889. rslt = 0
  4890. GOTO ext
  4891. END IF
  4892. IF Kind <> 0 THEN
  4893. rslt = 0
  4894. arg_msg = '不是销售预测单不能按进仓数来完成单据'
  4895. GOTO ext
  4896. END IF
  4897. IF status <> 1 And status <> 5 And status <> 3 THEN
  4898. rslt = 0
  4899. IF status <> 1 THEN
  4900. arg_msg = "销售预测单只有在进行状态下才可以执行设完成状态"
  4901. ELSEIF status <> 5 THEN
  4902. arg_msg = "销售预测单只有在完成状态下才可以执行撤消完成状态"
  4903. ELSE
  4904. arg_msg = "销售预测单不是在进行,已完成或已终止状态,不能操作"
  4905. END IF
  4906. GOTO ext
  4907. END IF
  4908. Decimal ls_zerook,ls_stopok
  4909. Boolean if_finish,if_stop
  4910. if_finish = True
  4911. if_stop = True
  4912. DECLARE zero_cur CURSOR FOR
  4913. SELECT u_saletaskmx.saleqty - u_saletaskmx.inwareqty - u_saletaskmx.stopqty,
  4914. u_saletaskmx.saleqty - u_saletaskmx.stopqty
  4915. FROM u_saletaskmx
  4916. WHERE ( u_saletaskmx.taskid = :arg_taskid )
  4917. AND ( u_saletaskmx.scid = :arg_scid )
  4918. Using commit_transaction ;
  4919. OPEN zero_cur;
  4920. FETCH zero_cur Into :ls_zerook,:ls_stopok;
  4921. DO WHILE commit_transaction.SQLCode = 0
  4922. IF if_finish THEN
  4923. IF ls_zerook > 0 THEN if_finish = False
  4924. END IF
  4925. IF if_stop THEN
  4926. IF ls_zerook > 0 THEN if_stop = False
  4927. END IF
  4928. FETCH zero_cur Into :ls_zerook,:ls_stopok;
  4929. LOOP
  4930. CLOSE zero_cur;
  4931. IF if_stop THEN
  4932. UPDATE u_saletask
  4933. SET status = 3,
  4934. accomplishdate = getdate(),
  4935. stopemp = :publ_operator
  4936. WHERE ( u_saletask.taskid = :arg_taskid )
  4937. And u_saletask.scid = :arg_scid Using commit_transaction;
  4938. IF commit_transaction.SQLCode <> 0 THEN
  4939. rslt = 0
  4940. arg_msg = "因网络或其他原因导致销售预测单终止状态设置操作失败"+"~n"+commit_transaction.SQLErrText
  4941. ROLLBACK Using commit_transaction;
  4942. GOTO ext
  4943. END IF
  4944. ELSE
  4945. IF if_finish THEN
  4946. UPDATE u_saletask
  4947. SET status = 5,
  4948. accomplishdate = getdate(),
  4949. finishemp = :publ_operator
  4950. WHERE ( u_saletask.taskid = :arg_taskid )
  4951. And u_saletask.scid = :arg_scid Using commit_transaction;
  4952. IF commit_transaction.SQLCode <> 0 THEN
  4953. rslt = 0
  4954. arg_msg = "因网络或其他原因导致销售预测单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
  4955. ROLLBACK Using commit_transaction;
  4956. GOTO ext
  4957. END IF
  4958. ELSEIF Not if_finish THEN
  4959. UPDATE u_saletask
  4960. SET status = 1,
  4961. accomplishdate = :null_dt,
  4962. finishemp = ''
  4963. WHERE ( u_saletask.taskid = :arg_taskid )
  4964. And u_saletask.scid = :arg_scid Using commit_transaction;
  4965. IF commit_transaction.SQLCode <> 0 THEN
  4966. rslt = 0
  4967. arg_msg = "因网络或其他原因导致销售预测单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
  4968. ROLLBACK Using commit_transaction;
  4969. GOTO ext
  4970. END IF
  4971. END IF
  4972. END IF
  4973. it_newbegin = False
  4974. it_updatebegin = False
  4975. ext:
  4976. IF rslt = 0 THEN
  4977. ROLLBACK Using commit_transaction;
  4978. ELSEIF arg_ifcommit And rslt = 1 THEN
  4979. COMMIT Using commit_transaction;
  4980. END IF
  4981. p_reset()
  4982. Return (rslt)
  4983. end function
  4984. 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
  4985. DateTime server_time
  4986. Long ll_mtrltypeid_arr[],ll_cusareaid_arr[]
  4987. String ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode
  4988. Long ll_mtrltypeid,ll_cusareaid
  4989. Long ll_parentid
  4990. Long ll_cnt = 0,ll_cnt2 = 0
  4991. Long ll_row
  4992. String ls_pocode,ls_typestr
  4993. SELECT mtrlsectype,zxmtrlmode,usermtrlmode
  4994. INTO :ls_mtrlsectype,:ls_zxmtrlmode,:ls_usermtrlmode
  4995. FROM u_mtrldef
  4996. Where mtrlid = :arg_mtrlid;
  4997. IF sqlca.SQLCode <> 0 THEN
  4998. rslt = 0
  4999. arg_msg = '因网络或其他原因查询产品资料失败'+sqlca.SQLErrText
  5000. GOTO ext
  5001. END IF
  5002. SELECT Top 1 getdate() INTO :server_time FROM u_user;
  5003. IF sqlca.SQLCode <> 0 THEN
  5004. rslt = 0
  5005. arg_msg = '因网络或其他原因取服务器时间失败'+sqlca.SQLErrText
  5006. GOTO ext
  5007. END IF
  5008. server_time = DateTime(Date(String(server_time,'yyyy-mm-dd')),Time(0))
  5009. //
  5010. SELECT mtrltypeid INTO :ll_mtrltypeid
  5011. FROM u_mtrldef
  5012. Where mtrlid = :arg_mtrlid;
  5013. IF sqlca.SQLCode <> 0 THEN
  5014. arg_msg = '查询产品类型失败'+sqlca.SQLErrText
  5015. rslt = 0
  5016. GOTO ext
  5017. END IF
  5018. ll_cnt++
  5019. ll_mtrltypeid_arr[ll_cnt] = ll_mtrltypeid
  5020. SELECT parentid INTO :ll_parentid
  5021. FROM u_mtrltype
  5022. WHERE mtrltypeid = :ll_mtrltypeid
  5023. AND parentid > 0 ;
  5024. DO WHILE sqlca.SQLCode = 0
  5025. ll_cnt++
  5026. ll_mtrltypeid_arr[ll_cnt] = ll_parentid
  5027. ll_mtrltypeid = ll_parentid
  5028. SELECT parentid INTO :ll_parentid
  5029. FROM u_mtrltype
  5030. WHERE mtrltypeid = :ll_mtrltypeid
  5031. AND parentid > 0 ;
  5032. LOOP
  5033. //
  5034. //
  5035. SELECT cusareaid INTO :ll_cusareaid
  5036. FROM u_cust
  5037. Where cusid = :arg_cusid;
  5038. IF sqlca.SQLCode <> 0 THEN
  5039. arg_msg = '查询客户区域失败'+sqlca.SQLErrText
  5040. rslt = 0
  5041. GOTO ext
  5042. END IF
  5043. ll_cnt2++
  5044. ll_cusareaid_arr[ll_cnt2] = ll_cusareaid
  5045. SELECT parentid INTO :ll_parentid
  5046. FROM u_Cusarea
  5047. WHERE CusareaID = :ll_cusareaid
  5048. AND parentid > 0 ;
  5049. DO WHILE sqlca.SQLCode = 0
  5050. ll_cnt2++
  5051. ll_cusareaid_arr[ll_cnt2] = ll_parentid
  5052. ll_cusareaid = ll_parentid
  5053. SELECT parentid INTO :ll_parentid
  5054. FROM u_Cusarea
  5055. WHERE CusareaID = :ll_cusareaid
  5056. AND parentid > 0 ;
  5057. LOOP
  5058. datastore ds_price
  5059. ds_price = CREATE datastore
  5060. ds_price.DataObject = 'ds_price_order_index'
  5061. ds_price.SetTransObject(sqlca)
  5062. ds_price.Retrieve(arg_mtrlid,ll_mtrltypeid_arr[],arg_cusid,ll_cusareaid_arr[],server_time,ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode,0)
  5063. ll_row = ds_price.RowCount()
  5064. IF ll_row = 0 THEN
  5065. ls_pocode = ''
  5066. ls_typestr = ''
  5067. ELSE
  5068. ls_pocode = ds_price.Object.pocode[ll_row]
  5069. ls_typestr = ds_price.Object.typestr[ll_row]
  5070. END IF
  5071. ext:
  5072. IF rslt = 0 THEN
  5073. arg_pocode = ''
  5074. arg_typestr = ''
  5075. ELSE
  5076. arg_pocode = ls_pocode
  5077. arg_typestr = ls_typestr
  5078. END IF
  5079. RETURN rslt
  5080. end function
  5081. 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
  5082. Long cnt,ll_planid
  5083. IF IsNull(arg_s_plan.planid) THEN arg_s_plan.planid = 0
  5084. IF IsNull(arg_s_plan.scid) THEN arg_s_plan.scid = 0
  5085. IF IsNull(arg_s_plan.taskid) THEN arg_s_plan.taskid = 0
  5086. IF IsNull(arg_s_plan.planemp) THEN arg_s_plan.planemp = ''
  5087. IF IsNull(arg_s_plan.plandscrp) THEN arg_s_plan.plandscrp = ''
  5088. IF arg_s_plan.taskid = 0 THEN
  5089. arg_msg = '不合理的销售订单唯一码'
  5090. rslt = 0
  5091. GOTO ext
  5092. END IF
  5093. IF arg_s_plan.planemp = '' THEN
  5094. arg_msg = '请填写经手人'
  5095. rslt = 0
  5096. GOTO ext
  5097. END IF
  5098. IF arg_s_plan.plandscrp = '' THEN
  5099. arg_msg = '请填写工作计划内容'
  5100. rslt = 0
  5101. GOTO ext
  5102. END IF
  5103. SELECT count(*) INTO :cnt
  5104. FROM u_saletask
  5105. WHERE scid = :arg_s_plan.scid
  5106. AND taskid = :arg_s_plan.taskid USING commit_transaction;
  5107. IF commit_transaction.SQLCode <> 0 THEN
  5108. arg_msg = '查询销售订单信息失败,'+commit_transaction.SQLErrText
  5109. rslt = 0
  5110. GOTO ext
  5111. END IF
  5112. IF cnt = 0 THEN
  5113. arg_msg = '销售订单不存在,请检查'
  5114. rslt = 0
  5115. GOTO ext
  5116. END IF
  5117. IF arg_s_plan.planid = 0 THEN
  5118. ll_planid = f_sys_scidentity(0,"u_saletask_plan","planid",arg_msg,TRUE,id_sqlca)
  5119. IF ll_planid <= 0 THEN
  5120. rslt = 0
  5121. GOTO ext
  5122. END IF
  5123. INSERT INTO u_saletask_plan
  5124. (planid,
  5125. scid,
  5126. taskid,
  5127. planemp,
  5128. plandate,
  5129. plandscrp,
  5130. opdate,
  5131. opemp)
  5132. VALUES (:ll_planid,
  5133. :arg_s_plan.scid,
  5134. :arg_s_plan.taskid,
  5135. :arg_s_plan.planemp,
  5136. :arg_s_plan.plandate,
  5137. :arg_s_plan.plandscrp,
  5138. getdate(),
  5139. :arg_opemp) USING commit_transaction;
  5140. IF commit_transaction.SQLCode <> 0 THEN
  5141. arg_msg = '建立销售订单工作计划失败,'+commit_transaction.SQLErrText
  5142. rslt = 0
  5143. GOTO ext
  5144. END IF
  5145. ELSE
  5146. UPDATE u_saletask_plan
  5147. SET planemp = :arg_s_plan.planemp,
  5148. plandate = :arg_s_plan.plandate,
  5149. plandscrp = :arg_s_plan.plandscrp,
  5150. moddate = getdate(),
  5151. modemp = :arg_opemp
  5152. Where planid = :arg_s_plan.planid USING commit_transaction;
  5153. IF commit_transaction.SQLCode <> 0 THEN
  5154. arg_msg = '更新销售订单工作计划失败,'+commit_transaction.SQLErrText
  5155. rslt = 0
  5156. GOTO ext
  5157. END IF
  5158. END IF
  5159. ext:
  5160. IF rslt = 0 THEN
  5161. ROLLBACK USING commit_transaction;
  5162. ELSEIF rslt = 1 AND arg_ifcommit THEN
  5163. COMMIT USING commit_transaction;
  5164. END IF
  5165. RETURN rslt
  5166. end function
  5167. public function integer uof_del_plan (long arg_planid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  5168. String ls_opemp
  5169. Int li_flag
  5170. SELECT opemp,flag INTO :ls_opemp,:li_flag
  5171. FROM u_saletask_plan
  5172. Where planid = :arg_planid USING commit_transaction;
  5173. IF commit_transaction.SQLCode <> 0 THEN
  5174. arg_msg = '查询客户工作计划失败,'+commit_transaction.SQLErrText
  5175. rslt = 0
  5176. GOTO ext
  5177. END IF
  5178. IF NOT sys_power_issuper AND arg_opemp <> ls_opemp THEN
  5179. arg_msg = '不是资料建立人或系统管理员,不能删除'
  5180. rslt = 0
  5181. GOTO ext
  5182. END IF
  5183. IF li_flag = 1 THEN
  5184. arg_msg = '工作计划已完成,不能删除'
  5185. rslt = 0
  5186. GOTO ext
  5187. END IF
  5188. DELETE FROM u_saletask_plan Where planid = :arg_planid USING commit_transaction;
  5189. IF commit_transaction.SQLCode <> 0 THEN
  5190. arg_msg = '删除销售订单工作计划失败,'+commit_transaction.SQLErrText
  5191. rslt = 0
  5192. GOTO ext
  5193. END IF
  5194. ext:
  5195. IF rslt = 0 THEN
  5196. ROLLBACK USING commit_transaction;
  5197. ELSEIF rslt = 1 AND arg_ifcommit THEN
  5198. COMMIT USING commit_transaction;
  5199. END IF
  5200. RETURN rslt
  5201. end function
  5202. public function integer uof_finish_plan (long arg_planid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  5203. Int li_flag
  5204. IF IsNull(arg_planid) THEN arg_planid = 0
  5205. IF arg_planid <= 0 THEN
  5206. rslt = 0
  5207. arg_msg = '错误的工作计划唯一码'
  5208. GOTO ext
  5209. END IF
  5210. SELECT flag INTO :li_flag
  5211. FROM u_saletask_plan
  5212. Where planid = :arg_planid USING commit_transaction;
  5213. IF commit_transaction.SQLCode <> 0 THEN
  5214. rslt = 0
  5215. arg_msg = '查询工作计划信息失败,'+commit_transaction.SQLErrText
  5216. GOTO ext
  5217. END IF
  5218. IF li_flag = 1 THEN
  5219. rslt = 0
  5220. arg_msg = '工作计划已完成,不能重复完成,请检查'
  5221. GOTO ext
  5222. END IF
  5223. UPDATE u_saletask_plan
  5224. SET flag = 1
  5225. Where planid = :arg_planid USING commit_transaction;
  5226. IF commit_transaction.SQLCode <> 0 THEN
  5227. rslt = 0
  5228. arg_msg = '更新工作计划完成状态失败,'+commit_transaction.SQLErrText
  5229. GOTO ext
  5230. END IF
  5231. ext:
  5232. IF rslt = 0 THEN
  5233. ROLLBACK USING commit_transaction;
  5234. ELSEIF rslt = 1 AND arg_ifcommit THEN
  5235. COMMIT USING commit_transaction;
  5236. END IF
  5237. RETURN rslt
  5238. end function
  5239. 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)
  5240. //0 fail 1 SUCCESS
  5241. Int rslt = 1
  5242. arg_newdescppart = Trim(arg_newdescppart)
  5243. IF it_updatebegin OR it_newbegin THEN
  5244. rslt = 0
  5245. arG_MSG = "编辑状态下不可用"
  5246. GOTO ext
  5247. END IF
  5248. IF arg_newdescppart = '' THEN
  5249. rslt = 0
  5250. arG_MSG = "要添加内容为空,操作取消"
  5251. GOTO ext
  5252. END IF
  5253. IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
  5254. rslt = 0
  5255. GOTO ext
  5256. END IF
  5257. IF status = 0 THEN
  5258. rslt = 0
  5259. arG_MSG = "待销售审核状态下不可用"
  5260. GOTO ext
  5261. END IF
  5262. IF status = 1 THEN
  5263. rslt = 0
  5264. arG_MSG = "只有在生产审核前才可以使用"
  5265. GOTO ext
  5266. END IF
  5267. UPDATE u_saletask
  5268. SET dscrp2 = dscrp2+' '+:arg_newdescppart
  5269. Where u_saletask.taskid = :arg_taskid AND scid = :arg_scid USING commit_transaction ;
  5270. IF commit_transaction.SQLCode <> 0 THEN
  5271. rslt = 0
  5272. arG_MSG = "因网络或其它原因导致添加销售订单备注操作失败"+"~n"+ commit_transaction.SQLErrText
  5273. GOTO ext
  5274. END IF
  5275. dscrp2 = dscrp2+' '+arg_newdescppart
  5276. it_newbegin = FALSE
  5277. it_updatebegin = FALSE
  5278. ext:
  5279. IF rslt = 0 THEN
  5280. ROLLBACK USING commit_transaction;
  5281. ELSEIF arg_ifcommit THEN
  5282. COMMIT USING commit_transaction;
  5283. END IF
  5284. p_reset()
  5285. Return (rslt)
  5286. end function
  5287. 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
  5288. IF arg_taskid <= 0 THEN
  5289. rslt = 0
  5290. ARG_MSG = '错误销售订单唯一码'
  5291. GOTO ext
  5292. END IF
  5293. IF arg_addqty = 0 THEN
  5294. rslt = 1
  5295. GOTO ext
  5296. END IF
  5297. IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
  5298. rslt = 0
  5299. GOTO ext
  5300. END IF
  5301. IF status <> 1 THEN
  5302. rslt = 0
  5303. ARG_MSG = "销售订单只有在进行状态下才可以执行发货通知或取消发货通知"
  5304. GOTO ext
  5305. END IF
  5306. Decimal ls_SaleQty,ld_saleoutqty
  5307. String ls_mtrlcode
  5308. decimal ld_upsalerate,ld_upsaleqty
  5309. SELECT u_SaleTaskMx.SaleQty,
  5310. u_SaleTaskMx.saleoutqty,
  5311. u_mtrldef.mtrlcode,
  5312. u_mtrldef.upsalerate,
  5313. u_mtrldef.upsaleqty
  5314. INTO :ls_SaleQty,
  5315. :ld_saleoutqty,
  5316. :ls_mtrlcode,
  5317. :ld_upsalerate,
  5318. :ld_upsaleqty
  5319. FROM u_SaleTaskMx ,u_mtrldef
  5320. WHERE ( u_SaleTaskMx.scid = :arg_scid ) AND
  5321. ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  5322. ( u_SaleTaskMx.printid = :arg_printid ) AND
  5323. ( u_SaleTaskMx.stopflag = 0 ) AND
  5324. ( u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid) USING commit_transaction ;
  5325. IF commit_transaction.SQLCode <> 0 THEN
  5326. rslt = 0
  5327. ARG_MSG = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
  5328. GOTO ext
  5329. END IF
  5330. IF ls_SaleQty * (1 + ld_upsalerate) + ld_upsaleqty < ld_saleoutqty + arg_addqty THEN
  5331. rslt = 0
  5332. 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#')
  5333. GOTO ext
  5334. END IF
  5335. UPDATE u_SaleTaskMx
  5336. SET saleoutqty = saleoutqty +:arg_addqty
  5337. WHERE ( u_SaleTaskMx.TaskID = :arg_taskid ) AND
  5338. ( u_SaleTaskMx.printid = :arg_printid ) AND
  5339. ( u_saletaskmx.scid = :arg_scid) AND
  5340. ( u_SaleTaskMx.stopflag = 0 ) USING commit_transaction;
  5341. IF commit_transaction.SQLCode <> 0 THEN
  5342. rslt = 0
  5343. ARG_MSG = "因网络或错误产品唯一码导致销售订单通知发货数量操作失败"+"~n"+ commit_transaction.SQLErrText
  5344. GOTO ext
  5345. END IF
  5346. it_newbegin = FALSE
  5347. it_updatebegin = FALSE
  5348. ext:
  5349. IF rslt = 0 THEN
  5350. ROLLBACK USING commit_transaction;
  5351. ELSEIF arg_ifcommit AND rslt = 1 THEN
  5352. COMMIT USING commit_transaction;
  5353. END IF
  5354. p_reset()
  5355. Return (rslt)
  5356. end function
  5357. public function integer stopsaletask_cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  5358. datetime ld_nulldt
  5359. setnull(ld_nulldt)
  5360. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  5361. rslt = 0
  5362. GOTO ext
  5363. END IF
  5364. IF arg_taskid <= 0 THEN
  5365. rslt = 0
  5366. ARG_MSG = '错误销售订单唯一码'
  5367. GOTO ext
  5368. END IF
  5369. IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
  5370. rslt = 0
  5371. GOTO ext
  5372. END IF
  5373. IF Status <> 3 THEN
  5374. rslt = 0
  5375. ARG_MSG = "订单只有在终止状态才可以执行取消终止,请核对"
  5376. GOTO ext
  5377. END IF
  5378. //IF sys_option_if_OA = 1 AND audit_buildtype = 0 THEN
  5379. // IF f_check_if_oaflow(arg_scid,arg_taskid,6,ARG_MSG ) = 0 THEN
  5380. // rslt = 0
  5381. // GOTO ext
  5382. // END IF
  5383. //END IF
  5384. UPDATE u_SaleTask
  5385. SET Status = 1,
  5386. accomplishdate = :ld_nulldt,
  5387. stopemp = '',
  5388. stopreason = ''
  5389. WHERE TaskID = :arg_taskid
  5390. AND scid = :arg_scid
  5391. AND Status = 3 USING commit_transaction ;
  5392. IF commit_transaction.SQLCode <> 0 THEN
  5393. rslt = 0
  5394. ARG_MSG = "因网络或其它原因导致终止销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  5395. GOTO ext
  5396. ELSEIF commit_transaction.SQLNRows = 0 THEN
  5397. rslt = 0
  5398. ARG_MSG = "正在终止销售订单,请稍后查询"
  5399. GOTO ext
  5400. END IF
  5401. it_newbegin = FALSE
  5402. it_updatebegin = FALSE
  5403. ext:
  5404. IF rslt = 0 THEN
  5405. ROLLBACK USING commit_transaction;
  5406. ELSEIF arg_ifcommit AND rslt = 1 THEN
  5407. COMMIT USING commit_transaction;
  5408. END IF
  5409. p_reset()
  5410. RETURN (rslt)
  5411. end function
  5412. 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
  5413. Int li_flag
  5414. DateTime null_dt
  5415. DateTime server_datetime
  5416. String ls_stopemp
  5417. Decimal ld_saleqty,ld_saleoutqty,ld_consignedQty,ld_noauditqty
  5418. Decimal ld_enprice,ld_rebate,ld_stopamt
  5419. Decimal ld_stopqty_ori,ld_stopamt_ori
  5420. Long ll_mtrlid
  5421. Long ll_assignid,j
  5422. Decimal ld_assignqty,ld_qty_cancel,ld_qty
  5423. String ls_status,ls_woodcode,ls_pcode
  5424. Int li_outtype,li_ifpackpro
  5425. s_mtrlcfg_expr s_pz[]
  5426. Long it_mxt,cnt
  5427. String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
  5428. Int li_ifover[],li_dipztype[]
  5429. Decimal ld_Sonscale[],ld_Sonscale_fm[]
  5430. Long ll_SonMtrlid[]
  5431. Long ll_l,ll_j
  5432. Decimal ld_stopqty_this = 0
  5433. Long ll_pid
  5434. uo_mtrlware_assign uo_ma
  5435. uo_ma = Create uo_mtrlware_assign
  5436. uo_ma.commit_transaction = commit_transaction
  5437. datastore ds_fp_del
  5438. ds_fp_del = Create datastore
  5439. ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
  5440. ds_fp_del.SetTransObject(commit_transaction)
  5441. datastore ds_fp_del_pack
  5442. ds_fp_del_pack = Create datastore
  5443. ds_fp_del_pack.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_pack'
  5444. ds_fp_del_pack.SetTransObject(commit_transaction)
  5445. If uo_option_m_msttake = -1000 Then
  5446. arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
  5447. rslt = 0
  5448. Goto ext
  5449. End If
  5450. If uo_option_saletask_stopqty_type = -1000 Then
  5451. arg_msg = '选项:[404]销售订单终止数量录入方式,读取初始默认值失败,操作取消!'
  5452. rslt = 0
  5453. Goto ext
  5454. End If
  5455. If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
  5456. rslt = 0
  5457. Goto ext
  5458. End If
  5459. Select Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
  5460. If commit_transaction.SQLCode <> 0 Then
  5461. rslt = 0
  5462. arg_msg = "查询操作失败,日期 "
  5463. Goto ext
  5464. End If
  5465. Select u_SaleTaskMx.SaleQty,
  5466. u_SaleTaskMx.saleoutqty,
  5467. u_SaleTaskMx.consignedQty,
  5468. isnull(uv_outware_sale_noaudit_qty.qty,0),
  5469. u_SaleTaskMx.enprice,
  5470. u_SaleTaskMx.rebate,
  5471. u_SaleTaskMx.stopqty,
  5472. u_mtrldef.outtype,
  5473. u_mtrldef.ifpackpro,
  5474. u_SaleTaskMx.mtrlid,
  5475. u_SaleTaskMx.status,
  5476. u_SaleTaskMx.woodcode,
  5477. u_SaleTaskMx.pcode
  5478. Into :ld_saleqty,
  5479. :ld_saleoutqty,
  5480. :ld_consignedQty,
  5481. :ld_noauditqty,
  5482. :ld_enprice,
  5483. :ld_rebate,
  5484. :ld_stopqty_ori,
  5485. :li_outtype,
  5486. :li_ifpackpro,
  5487. :ll_mtrlid,
  5488. :ls_status,
  5489. :ls_woodcode,
  5490. :ls_pcode
  5491. From u_SaleTaskMx Inner JOIN
  5492. u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid LEFT Outer JOIN
  5493. uv_outware_sale_noaudit_qty ON
  5494. u_SaleTaskMx.scid = uv_outware_sale_noaudit_qty.scid And
  5495. u_SaleTaskMx.TaskID = uv_outware_sale_noaudit_qty.relid And
  5496. u_SaleTaskMx.printid = uv_outware_sale_noaudit_qty.relprintid
  5497. Where u_SaleTaskMx.scid = :arg_scid
  5498. And u_SaleTaskMx.TaskID = :arg_taskid
  5499. And u_SaleTaskMx.printid = :arg_printid Using commit_transaction;
  5500. If commit_transaction.SQLCode <> 0 Then
  5501. rslt = 0
  5502. arg_msg = '查询物料'+arg_mtrlcode+'可终止数失败,'+commit_transaction.SQLErrText
  5503. Goto ext
  5504. End If
  5505. If IsNull(arg_stopqty) Then arg_stopqty = 0
  5506. //如果 arg_stopqty 代表的是本次终止数量, 需要把原终止数加上,得出订单明细总终止数
  5507. //计算本次终止数,保存到终止数量记录表中
  5508. If uo_option_saletask_stopqty_type = 1 Then
  5509. ld_stopqty_this = arg_stopqty
  5510. arg_stopqty = arg_stopqty + ld_stopqty_ori
  5511. Else
  5512. //如果arg_stopqty 代表总终止数, 本次终止数 = 总终止数 - 原终止数
  5513. ld_stopqty_this = arg_stopqty - ld_stopqty_ori
  5514. End If
  5515. If arg_stopqty < 0 Then
  5516. arg_msg = '订单总终止数不能少于0,请检查'
  5517. rslt = 0
  5518. Goto ext
  5519. End If
  5520. If arg_stopqty = 0 Then
  5521. SetNull(server_datetime)
  5522. ls_stopemp = ''
  5523. Else
  5524. ls_stopemp = publ_operator
  5525. End If
  5526. SetNull(null_dt)
  5527. If p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
  5528. rslt = 0
  5529. Goto ext
  5530. End If
  5531. If status <> 1 And status <> 5 And status <> 3 Then
  5532. arg_msg = '订单只能在进行状态或自动完成状态才能操作'
  5533. rslt = 0
  5534. Goto ext
  5535. End If
  5536. If arg_stopqty > ld_saleqty - ld_consignedQty - ld_noauditqty Then
  5537. arg_msg = '明细物料'+arg_mtrlcode+'未开发货单数只有:'+String(ld_saleqty - ld_consignedQty - ld_noauditqty,'#,##0.##########')+',不能终止:'+String(arg_stopqty,'#,##0.##########')
  5538. rslt = 0
  5539. Goto ext
  5540. End If
  5541. If arg_stopqty > ld_saleqty - ld_saleoutqty Then
  5542. arg_msg = '明细物料'+arg_mtrlcode+'未开发货通知单数只有:'+String(ld_saleqty - ld_saleoutqty,'#,##0.##########')+',不能终止:'+String(arg_stopqty,'#,##0.##########')
  5543. rslt = 0
  5544. Goto ext
  5545. End If
  5546. If arg_stopqty > 0 Then
  5547. If Not ((li_outtype = 1 Or li_outtype = 2) And li_ifpackpro > 0) Then
  5548. ds_fp_del.Retrieve(arg_scid,arg_taskid,arg_printid)
  5549. ld_qty = arg_stopqty
  5550. For j = 1 To ds_fp_del.RowCount()
  5551. ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
  5552. ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
  5553. If ld_qty = 0 Then Exit
  5554. If ld_qty <= ld_assignqty Then
  5555. ld_qty_cancel = ld_qty
  5556. ld_qty = 0
  5557. Else
  5558. ld_qty_cancel = ld_assignqty
  5559. ld_qty = ld_qty - ld_assignqty
  5560. End If
  5561. If uo_ma.uof_assign_del(ll_assignid,ld_qty_cancel,arg_msg,False) = 0 Then
  5562. arg_msg = '删除库存分配失败,'+arg_msg
  5563. rslt = 0
  5564. Goto ext
  5565. End If
  5566. Next
  5567. Else
  5568. If li_ifpackpro = 1 Or li_ifpackpro = 2 Then
  5569. it_mxt = 1
  5570. cnt = 0
  5571. //查是否有换清单
  5572. If li_ifpackpro = 2 Then
  5573. Select count(*) Into :cnt From u_saletaskmx_pf
  5574. Where scid = :arg_scid
  5575. And taskid = :arg_taskid
  5576. And printid = :arg_printid;
  5577. If sqlca.SQLCode <> 0 Then
  5578. arg_msg = '查询订单明细否有换包件失败,'+sqlca.SQLErrText
  5579. rslt = 0
  5580. Goto ext
  5581. End If
  5582. End If
  5583. If cnt > 0 Then
  5584. Declare cur_pf_saletaskmx Cursor For
  5585. Select u_saletaskmx_pf.SonMtrlid,
  5586. u_saletaskmx_pf.status,
  5587. u_saletaskmx_pf.woodcode,
  5588. u_saletaskmx_pf.pcode,
  5589. u_saletaskmx_pf.Sonscale,
  5590. u_saletaskmx_pf.Sonscale_fm
  5591. From u_saletaskmx_pf
  5592. Where ( u_saletaskmx_pf.scid = :arg_scid )
  5593. And ( u_saletaskmx_pf.taskid = :arg_taskid )
  5594. And ( u_saletaskmx_pf.printid = :arg_printid );
  5595. Open cur_pf_saletaskmx;
  5596. Fetch cur_pf_saletaskmx Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  5597. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
  5598. Do While sqlca.SQLCode = 0
  5599. it_mxt++
  5600. Fetch cur_pf_saletaskmx Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  5601. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
  5602. Loop
  5603. it_mxt = it_mxt - 1
  5604. Close cur_pf_saletaskmx;
  5605. Else
  5606. Declare cur_pf Cursor For
  5607. Select u_PrdPF.SonMtrlid,
  5608. u_PrdPF.status,
  5609. u_PrdPF.woodcode,
  5610. u_PrdPF.pcode,
  5611. u_prdpf.Sonscale,
  5612. 1
  5613. From u_PrdPF,u_mtrl_pf,u_mtrldef
  5614. Where ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
  5615. And ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
  5616. And ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
  5617. And ( u_PrdPF.mtrlid = :ll_mtrlid )
  5618. And ( u_mtrl_pf.ifdi = 1 And :li_ifpackpro = 0
  5619. Or u_mtrl_pf.ifdft = 1 And (:li_ifpackpro = 1 Or :li_ifpackpro = 2) And u_mtrldef.ifpack > 0)
  5620. Order By u_PrdPF.printid;
  5621. Open cur_pf;
  5622. Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  5623. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
  5624. Do While sqlca.SQLCode = 0
  5625. it_mxt++
  5626. Fetch cur_pf Into :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
  5627. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt];
  5628. Loop
  5629. it_mxt = it_mxt - 1
  5630. Close cur_pf;
  5631. End If
  5632. Else
  5633. f_checkpz(ls_status,s_pz[])
  5634. it_mxt = UpperBound(s_pz)
  5635. For ll_l = 1 To it_mxt
  5636. ll_SonMtrlid[ll_l] = ll_mtrlid
  5637. ls_pf_status[ll_l] = s_pz[ll_l].cfgname
  5638. ls_pf_woodcode[ll_l] = ls_woodcode
  5639. ls_pf_pcode[ll_l] = ls_pcode
  5640. ld_Sonscale[ll_l] = Dec(s_pz[ll_l].qty)
  5641. ld_Sonscale_fm[ll_l] = 1
  5642. Next
  5643. End If
  5644. For ll_j = 1 To it_mxt
  5645. 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])
  5646. ld_qty = arg_stopqty * ld_Sonscale[ll_j]/ld_Sonscale_fm[ll_j]
  5647. For j = 1 To ds_fp_del_pack.RowCount()
  5648. ll_assignid = ds_fp_del_pack.Object.u_mtrlware_assign_assignid[j]
  5649. ld_assignqty = ds_fp_del_pack.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del_pack.Object.u_mtrlware_assign_outqty[j]
  5650. If ld_qty = 0 Then Exit
  5651. If ld_qty <= ld_assignqty Then
  5652. ld_qty_cancel = ld_qty
  5653. ld_qty = 0
  5654. Else
  5655. ld_qty_cancel = ld_assignqty
  5656. ld_qty = ld_qty - ld_assignqty
  5657. End If
  5658. If uo_ma.uof_assign_del(ll_assignid,ld_qty_cancel,arg_msg,False) = 0 Then
  5659. arg_msg = '删除库存分配失败,'+arg_msg
  5660. rslt = 0
  5661. Goto ext
  5662. End If
  5663. Next
  5664. Next
  5665. End If
  5666. End If
  5667. Update u_saletaskmx
  5668. Set stopqty = :arg_stopqty,
  5669. stopemp = :ls_stopemp,
  5670. stopdate = :server_datetime,
  5671. stopreason = :arg_stopreason
  5672. Where scid = :arg_scid
  5673. And taskid = :arg_taskid
  5674. And printid = :arg_printid Using commit_transaction ;
  5675. If commit_transaction.SQLCode <> 0 Then
  5676. arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+commit_transaction.SQLErrText
  5677. rslt = 0
  5678. Goto ext
  5679. End If
  5680. If uo_option_m_msttake = 1 Then //使用多币种
  5681. ld_stopamt = Round(ld_enprice * arg_stopqty * ld_rebate,2)
  5682. ld_stopamt_ori = Round(ld_enprice * ld_stopqty_ori * ld_rebate,2)
  5683. Else // 系统不使用多币种,转换为人民币
  5684. ld_stopamt = Round(ld_enprice * mrate * arg_stopqty * ld_rebate,2)
  5685. ld_stopamt_ori = Round(ld_enprice * mrate * ld_stopqty_ori * ld_rebate,2)
  5686. End If
  5687. Update u_saletask
  5688. Set msttakeamt = msttakeamt + :ld_stopamt_ori - :ld_stopamt
  5689. Where scid = :arg_scid
  5690. And TaskID = :arg_taskid Using commit_transaction ;
  5691. If commit_transaction.SQLCode <> 0 Then
  5692. arg_msg = '更新订单单据金额失败,'+commit_transaction.SQLErrText
  5693. rslt = 0
  5694. Goto ext
  5695. End If
  5696. If Kind <> 0 Then
  5697. If trycmplsaletask(arg_scid,arg_taskid,arg_msg,False) = 0 Then
  5698. rslt = 0
  5699. Goto ext
  5700. End If
  5701. Else
  5702. If trycmptask_fore(arg_scid,arg_taskid,arg_msg,False) = 0 Then
  5703. rslt = 0
  5704. Goto ext
  5705. End If
  5706. End If
  5707. //记录终止操作记录(终止数,终止时间)
  5708. If ld_stopqty_this <> 0 Then
  5709. Select max(pid)
  5710. Into :ll_pid
  5711. From u_saletask_stoplog
  5712. Where scid = :arg_scid
  5713. And taskid = :arg_taskid
  5714. And printid = :arg_printid Using commit_transaction;
  5715. If commit_transaction.SQLCode <> 0 Then ll_pid = 0
  5716. if isnull(ll_pid) then ll_pid = 0
  5717. ll_pid++
  5718. Insert Into u_saletask_stoplog
  5719. (scid,
  5720. taskid,
  5721. printid,
  5722. pid,
  5723. stopqty,
  5724. stopemp,
  5725. stopdate,
  5726. stopreason)
  5727. Values (:arg_scid,
  5728. :arg_taskid,
  5729. :arg_printid,
  5730. :ll_pid,
  5731. :ld_stopqty_this,
  5732. :publ_operator,
  5733. getdate(),
  5734. :arg_stopreason) Using commit_transaction;
  5735. If commit_transaction.SQLCode <> 0 Then
  5736. arg_msg = '增加订单明细终止记录失败,'+commit_transaction.SQLErrText
  5737. rslt = 0
  5738. Goto ext
  5739. End If
  5740. End If
  5741. ext:
  5742. If rslt = 0 Then
  5743. Rollback Using commit_transaction ;
  5744. ElseIf rslt = 1 And arg_ifcommit Then
  5745. Commit Using commit_transaction ;
  5746. End If
  5747. Destroy uo_ma
  5748. Destroy ds_fp_del
  5749. Destroy ds_fp_del_pack
  5750. Return rslt
  5751. end function
  5752. 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)
  5753. //0 fail 1 SUCCESS
  5754. Int rslt = 1
  5755. Long i
  5756. IF it_updatebegin Or it_newbegin THEN
  5757. rslt = 0
  5758. arG_MSG = "编辑状态下不可用"
  5759. GOTO ext
  5760. END IF
  5761. IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
  5762. rslt = 0
  5763. GOTO ext
  5764. END IF
  5765. //IF status = 0 THEN
  5766. // rslt = 0
  5767. // arG_MSG = "待销售审核状态下不可用"
  5768. // GOTO ext
  5769. //END IF
  5770. DELETE FROM u_saletaskmx_wrkgrp_mxdscrp
  5771. WHERE scid = :arg_scid
  5772. And taskid = :arg_taskid Using commit_transaction ;
  5773. IF commit_transaction.SQLCode <> 0 THEN
  5774. rslt = 0
  5775. arG_MSG = "因网络或其它原因导致删除销售订单车间备注操作失败"+"~n"+ commit_transaction.SQLErrText
  5776. GOTO ext
  5777. END IF
  5778. FOR i = 1 To arg_cnt
  5779. INSERT INTO u_saletaskmx_wrkgrp_mxdscrp
  5780. (scid,
  5781. taskid,
  5782. printid,
  5783. wrkgrpid,
  5784. mxdscrp)
  5785. VALUES
  5786. (:arg_s_mx.scid[i],
  5787. :arg_s_mx.taskid[i],
  5788. :arg_s_mx.printid[i],
  5789. :arg_s_mx.wrkgrpid[i],
  5790. :arg_s_mx.mxdscrp[i]
  5791. ) Using commit_transaction ;
  5792. IF commit_transaction.SQLCode <> 0 THEN
  5793. rslt = 0
  5794. arG_MSG = "因网络或其它原因导致新建销售订单车间备注操作失败"+"~n"+ commit_transaction.SQLErrText
  5795. GOTO ext
  5796. END IF
  5797. NEXT
  5798. it_newbegin = False
  5799. it_updatebegin = False
  5800. ext:
  5801. IF rslt = 0 THEN
  5802. ROLLBACK Using commit_transaction;
  5803. ELSEIF arg_ifcommit THEN
  5804. COMMIT Using commit_transaction;
  5805. END IF
  5806. p_reset()
  5807. Return (rslt)
  5808. end function
  5809. 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)
  5810. //0 fail 1 SUCCESS
  5811. Int rslt = 1
  5812. arg_add_relcode = Trim(arg_add_relcode)
  5813. IF it_updatebegin Or it_newbegin THEN
  5814. rslt = 0
  5815. arG_MSG = "编辑状态下不可用"
  5816. GOTO ext
  5817. END IF
  5818. IF arg_add_relcode = '' THEN
  5819. rslt = 0
  5820. arG_MSG = "要添加内容为空,操作取消"
  5821. GOTO ext
  5822. END IF
  5823. IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
  5824. rslt = 0
  5825. GOTO ext
  5826. END IF
  5827. IF status = 0 THEN
  5828. rslt = 0
  5829. arG_MSG = "待销售审核状态下不可用"
  5830. GOTO ext
  5831. END IF
  5832. //rtrim(relcode)+' '+
  5833. UPDATE u_saletask
  5834. SET relcode = :arg_add_relcode
  5835. WHERE u_saletask.taskid = :arg_taskid
  5836. And scid = :arg_scid Using commit_transaction ;
  5837. IF commit_transaction.SQLCode <> 0 THEN
  5838. rslt = 0
  5839. arG_MSG = "因网络或其它原因导致修改销售订单相关号操作失败"+"~n"+ commit_transaction.SQLErrText
  5840. GOTO ext
  5841. END IF
  5842. relcode = relcode+' '+arg_add_relcode
  5843. it_newbegin = False
  5844. it_updatebegin = False
  5845. ext:
  5846. IF rslt = 0 THEN
  5847. ROLLBACK Using commit_transaction;
  5848. ELSEIF arg_ifcommit THEN
  5849. COMMIT Using commit_transaction;
  5850. END IF
  5851. p_reset()
  5852. Return (rslt)
  5853. end function
  5854. public function integer acceptmx_item (long arg_printid, long arg_itemid, decimal arg_amt, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
  5855. Long cnt,ll_i
  5856. cnt = 0
  5857. IF it_newbegin = False And it_updatebegin = False THEN
  5858. rslt = 0
  5859. arg_msg = "非编辑状态不可以使用,操作取消"
  5860. GOTO ext
  5861. END IF
  5862. IF IsNull(arg_printid) THEN arg_printid = 0
  5863. IF IsNull(arg_itemid) THEN arg_itemid = 0
  5864. IF IsNull(arg_amt) THEN arg_amt = 0
  5865. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  5866. IF arg_itemid = 0 Or arg_amt = 0 THEN
  5867. rslt = 1
  5868. GOTO ext
  5869. END IF
  5870. SELECT count(*)
  5871. INTO :cnt
  5872. FROM u_itemdef
  5873. Where itemid = :arg_itemid;
  5874. IF commit_transaction.SQLCode <> 0 THEN
  5875. rslt = 0
  5876. arg_msg = '查询收支项目是否存在失败,'+commit_transaction.SQLErrText
  5877. GOTO ext
  5878. END IF
  5879. IF cnt = 0 THEN
  5880. rslt = 0
  5881. arg_msg = '第'+String(arg_printid)+'行,收支项目不存在,请检查'
  5882. GOTO ext
  5883. END IF
  5884. //合并重复项
  5885. FOR ll_i = 1 To it_mxbt_item
  5886. IF arg_itemid = saletask_itemmx[ll_i].itemid THEN
  5887. saletask_itemmx[ll_i].amt = saletask_itemmx[ll_i].amt + arg_amt
  5888. rslt = 1
  5889. GOTO ext
  5890. END IF
  5891. NEXT
  5892. it_mxbt_item++
  5893. saletask_itemmx[it_mxbt_item].printid = arg_printid
  5894. saletask_itemmx[it_mxbt_item].itemid = arg_itemid
  5895. saletask_itemmx[it_mxbt_item].amt = arg_amt
  5896. saletask_itemmx[it_mxbt_item].mxdscrp = arg_mxdscrp
  5897. ext:
  5898. IF rslt = 0 THEN p_clearmx()
  5899. RETURN rslt
  5900. end function
  5901. public function integer add_dscrpmx (long arg_scid, long arg_taskid, long arg_printid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);
  5902. Int rslt = 1
  5903. arg_newdescppart = Trim(arg_newdescppart)
  5904. IF arg_newdescppart = '' THEN
  5905. rslt = 0
  5906. arG_MSG = "要添加内容为空,操作取消"
  5907. GOTO ext
  5908. END IF
  5909. IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
  5910. rslt = 0
  5911. GOTO ext
  5912. END IF
  5913. IF status <> 4 and status <> 1 THEN
  5914. rslt = 0
  5915. arG_MSG = "非待生产审核状态或在进行状态下不可用"
  5916. GOTO ext
  5917. END IF
  5918. UPDATE u_saletaskmx
  5919. SET mxDSCRP = mxDSCRP+' '+:arg_newdescppart
  5920. WHERE u_saletaskmx.taskid = :arg_taskid
  5921. AND u_saletaskmx.scid = :arg_scid
  5922. AND u_saletaskmx.printid = :arg_printid
  5923. And assignqty = 0 Using commit_transaction ;
  5924. IF commit_transaction.SQLCode <> 0 THEN
  5925. rslt = 0
  5926. arG_MSG = "因网络或其它原因导致添加销售订单明细备注操作失败"+"~n"+ commit_transaction.SQLErrText
  5927. GOTO ext
  5928. ELSEIF commit_transaction.SQLNRows = 0 THEN
  5929. rslt = 0
  5930. arG_MSG = "添加销售订单明细备注,更新操作:0 行,可能明细已有排产数,请检查"
  5931. GOTO ext
  5932. END IF
  5933. ext:
  5934. IF rslt = 0 THEN
  5935. ROLLBACK Using commit_transaction;
  5936. ELSEIF arg_ifcommit THEN
  5937. COMMIT Using commit_transaction;
  5938. END IF
  5939. Return (rslt)
  5940. end function
  5941. public function integer finishtask (long arg_scid, long arg_taskid, integer arg_status, ref string arg_msg, boolean arg_ifcommit);//arg_status 5 - 自动完成; 6 - 手动完成
  5942. Int rslt = 1
  5943. Long cnt = 0
  5944. Long ll_assignid,j,i
  5945. Decimal ld_assignqty
  5946. uo_mtrlware_assign uo_ma
  5947. uo_ma = Create uo_mtrlware_assign
  5948. uo_ma.commit_transaction = commit_transaction
  5949. datastore ds_fp_del
  5950. ds_fp_del = Create datastore
  5951. ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
  5952. ds_fp_del.SetTransObject(commit_transaction)
  5953. IF uo_option_if_oa_saletask = -1000 THEN
  5954. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  5955. rslt = 0
  5956. GOTO ext
  5957. END IF
  5958. IF uo_option_if_oa_saletask_fore = -1000 THEN
  5959. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  5960. rslt = 0
  5961. GOTO ext
  5962. END IF
  5963. IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  5964. rslt = 0
  5965. GOTO ext
  5966. END IF
  5967. IF Status <> 1 THEN
  5968. rslt = 0
  5969. arg_msg = "销售订单只有在进行状态才可以执行完成,请核对"
  5970. GOTO ext
  5971. END IF
  5972. IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
  5973. IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
  5974. rslt = 0
  5975. GOTO ext
  5976. END IF
  5977. END IF
  5978. UPDATE u_SaleTask
  5979. SET status = :arg_status,
  5980. accomplishdate = getdate(),
  5981. finishemp = :publ_operator
  5982. WHERE ( u_SaleTask.TaskID = :arg_taskid ) AND
  5983. ( u_SaleTask.scid = :arg_scid) Using commit_transaction;
  5984. IF commit_transaction.SQLCode <> 0 THEN
  5985. rslt = 0
  5986. arg_msg = "因网络或其它原因导致完成销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  5987. GOTO ext
  5988. END IF
  5989. FOR i = 1 To it_mxbt
  5990. ds_fp_del.Retrieve(arg_scid,arg_taskid,saletaskmx[i].printid)
  5991. FOR j = 1 To ds_fp_del.RowCount()
  5992. ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
  5993. ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
  5994. IF uo_ma.uof_assign_del(ll_assignid,ld_assignqty,arg_msg,False) = 0 THEN
  5995. arg_msg = '删除库存分配失败,'+arg_msg
  5996. rslt = 0
  5997. GOTO ext
  5998. END IF
  5999. NEXT
  6000. NEXT
  6001. ext:
  6002. IF rslt = 0 THEN
  6003. ROLLBACK Using commit_transaction;
  6004. ELSEIF arg_ifcommit And rslt = 1 THEN
  6005. COMMIT Using commit_transaction;
  6006. END IF
  6007. Destroy uo_ma
  6008. Destroy ds_fp_del
  6009. p_reset()
  6010. Return (rslt)
  6011. end function
  6012. 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 - 手动完成
  6013. Int rslt = 1
  6014. Long cnt = 0
  6015. DateTime null_dt
  6016. SetNull(null_dt)
  6017. IF uo_option_if_oa_saletask = -1000 THEN
  6018. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  6019. rslt = 0
  6020. GOTO ext
  6021. END IF
  6022. IF uo_option_if_oa_saletask_fore = -1000 THEN
  6023. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  6024. rslt = 0
  6025. GOTO ext
  6026. END IF
  6027. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  6028. rslt = 0
  6029. GOTO ext
  6030. END IF
  6031. if arg_status = 5 then
  6032. IF Status <> 5 THEN
  6033. rslt = 0
  6034. arg_msg = "销售订单只有在完成状态才可以执行取消完成,请核对"
  6035. GOTO ext
  6036. END IF
  6037. elseif arg_status = 6 then
  6038. IF Status <> 6 THEN
  6039. rslt = 0
  6040. arg_msg = "销售订单只有在手动完成状态才可以执行取消手动完成,请核对"
  6041. GOTO ext
  6042. END IF
  6043. end if
  6044. IF ctmint > 0 THEN
  6045. rslt = 0
  6046. arg_msg = '销售订单已被截数,操作取消'
  6047. GOTO ext
  6048. END IF
  6049. cnt = 0
  6050. SELECT count(*) INTO :cnt
  6051. FROM u_saletaskmx
  6052. WHERE u_saletaskmx.scid = :arg_scid
  6053. AND u_saletaskmx.taskid = :arg_taskid
  6054. AND u_saletaskmx.saleqty > u_saletaskmx.consignedQty
  6055. Using commit_transaction;
  6056. IF commit_transaction.SQLCode <> 0 THEN
  6057. arg_msg = '查询订单是否自动完成失败,'+commit_transaction.SQLErrText
  6058. rslt = 0
  6059. GOTO ext
  6060. END IF
  6061. IF cnt = 0 THEN
  6062. arg_msg = '订单不是手动完成,操作取消'
  6063. rslt = 0
  6064. GOTO ext
  6065. END IF
  6066. //IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
  6067. // IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
  6068. // rslt = 0
  6069. // GOTO ext
  6070. // END IF
  6071. //END IF
  6072. UPDATE u_SaleTask
  6073. SET status = 1,
  6074. accomplishdate = :null_dt,
  6075. finishemp = ''
  6076. WHERE ( u_SaleTask.TaskID = :arg_taskid ) AND
  6077. ( u_SaleTask.scid = :arg_scid) Using commit_transaction;
  6078. IF commit_transaction.SQLCode <> 0 THEN
  6079. rslt = 0
  6080. arg_msg = "因网络或其它原因导致取消完成销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  6081. GOTO ext
  6082. END IF
  6083. ext:
  6084. IF rslt = 0 THEN
  6085. ROLLBACK Using commit_transaction;
  6086. ELSEIF arg_ifcommit And rslt = 1 THEN
  6087. COMMIT Using commit_transaction;
  6088. END IF
  6089. p_reset()
  6090. Return (rslt)
  6091. end function
  6092. public function integer uof_disuse (long arg_scid, long arg_taskid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  6093. Long ll_disuseid
  6094. //arg_disusetype 0 - 修改, 1-删除
  6095. Select max(disuseid) Into :ll_disuseid
  6096. From u_SaleTask_disuse
  6097. Where scid = :arg_scid
  6098. And taskid = :arg_taskid Using commit_transaction;
  6099. If commit_transaction.SQLCode = -1 Then
  6100. rslt = 0
  6101. arg_msg = '获取销售订单废弃单序号失败,'+ commit_transaction.SQLErrText
  6102. Goto ext
  6103. ElseIf commit_transaction.SQLCode = 100 Then
  6104. ll_disuseid = 0
  6105. End If
  6106. if isnull(ll_disuseid) then ll_disuseid = 0
  6107. ll_disuseid++
  6108. Insert Into u_SaleTask_disuse
  6109. (scid, TaskID, disuseid, disusetype, TaskCode, kind, CusID, taskdate, requiredate,
  6110. accomplishdate, finishemp, Status, opemp, modemp, moddate, Assign_Emp,
  6111. Permit_Emp, Permit_date, Dscrp, opdate, stopemp, ctmint, freight, printnum,
  6112. banktypeid, damt, moneyid, relcode, paytype, dscrp2, freight_tele, cus_address,
  6113. cus_tele, cus_fax, otheramt, mrate, upname, p_Auditingdate, p_Auditingrep,
  6114. msttakeamt, takeamt, takedamt, typeid, rel_rep, level, sendTime, sendUser,
  6115. fiebrelcode, mxrowcount, cuscode, cusname, moneyname, banktypename, typename,
  6116. disuseemp,disusedate)
  6117. Select u_SaleTask.scid, u_SaleTask.TaskID, :ll_disuseid, :arg_disusetype,u_SaleTask.TaskCode, u_SaleTask.kind,
  6118. u_SaleTask.CusID, u_SaleTask.taskdate, u_SaleTask.requiredate,
  6119. u_SaleTask.accomplishdate, u_SaleTask.finishemp, u_SaleTask.Status,
  6120. u_SaleTask.opemp, u_SaleTask.modemp, u_SaleTask.moddate,
  6121. u_SaleTask.Assign_Emp, u_SaleTask.Permit_Emp, u_SaleTask.Permit_date,
  6122. u_SaleTask.Dscrp, u_SaleTask.opdate, u_SaleTask.stopemp, u_SaleTask.ctmint,
  6123. u_SaleTask.freight, u_SaleTask.printnum, u_SaleTask.banktypeid, u_SaleTask.damt,
  6124. u_SaleTask.moneyid, u_SaleTask.relcode, u_SaleTask.paytype, u_SaleTask.dscrp2,
  6125. u_SaleTask.freight_tele, u_SaleTask.cus_address, u_SaleTask.cus_tele,
  6126. u_SaleTask.cus_fax, u_SaleTask.otheramt, u_SaleTask.mrate, u_SaleTask.upname,
  6127. u_SaleTask.p_Auditingdate, u_SaleTask.p_Auditingrep, u_SaleTask.msttakeamt,
  6128. u_SaleTask.takeamt, u_SaleTask.takedamt, u_SaleTask.typeid, u_SaleTask.rel_rep,
  6129. u_SaleTask.level, u_SaleTask.sendTime, u_SaleTask.sendUser,
  6130. u_SaleTask.fiebrelcode, u_SaleTask.mxrowcount, u_cust.cuscode, u_cust.name,
  6131. cw_currency.name , cw_banktype.banktypename,
  6132. u_saletype.typename,
  6133. :publ_operator,getdate()
  6134. From u_SaleTask LEFT Outer JOIN
  6135. cw_banktype ON
  6136. u_SaleTask.banktypeid = cw_banktype.banktypeid LEFT Outer JOIN
  6137. u_saletype ON u_SaleTask.typeid = u_saletype.typeid LEFT Outer JOIN
  6138. u_cust ON u_SaleTask.CusID = u_cust.cusid LEFT Outer JOIN
  6139. cw_currency ON u_SaleTask.moneyid = cw_currency.moneyid
  6140. Where u_SaleTask.scid = :arg_scid
  6141. And u_SaleTask.taskid = :arg_taskid Using commit_transaction;
  6142. If commit_transaction.SQLCode <> 0 Then
  6143. rslt = 0
  6144. arg_msg = '插入销售订单废弃单失败,'+commit_transaction.SQLErrText
  6145. Goto ext
  6146. End If
  6147. Insert Into u_SaleTaskMx_disuse
  6148. (scid, TaskID, disuseid, printid, MtrlID, SaleQty, PlPrice, fprice, rebate, Price,
  6149. consignedQty, AssignQty, mxdscrp, status, pcode, woodcode, mtrlcuscode,
  6150. mtrlchangecode, enprice, ctmint, outtype, dftsaleprice, bqty, pqty, stopflag, stopemp,
  6151. stopdate, stopreason, bjflag, bjdate, bjemp, wqty, auditemp, auditflag, auditdate, lqty,
  6152. finishbqty, dddate, ddemp, ddflag, mqty, requiredate, pfcode, mxdscrp2, scidprice,
  6153. inwareqty, outtypestr, changedscrp, quoteid, quotecode, quoteprintid, pricetype,
  6154. capacity, nprice, saleoutqty, stopqty, fpqty, poid, taxrate, perfinishdate, addqty,
  6155. mtrlcode, mtrlname)
  6156. Select u_SaleTaskMx.scid, u_SaleTaskMx.TaskID, :ll_disuseid,u_SaleTaskMx.printid,
  6157. u_SaleTaskMx.MtrlID, u_SaleTaskMx.SaleQty, u_SaleTaskMx.PlPrice,
  6158. u_SaleTaskMx.fprice, u_SaleTaskMx.rebate, u_SaleTaskMx.Price,
  6159. u_SaleTaskMx.consignedQty, u_SaleTaskMx.AssignQty, u_SaleTaskMx.mxdscrp,
  6160. u_SaleTaskMx.status, u_SaleTaskMx.pcode, u_SaleTaskMx.woodcode,
  6161. u_SaleTaskMx.mtrlcuscode, u_SaleTaskMx.mtrlchangecode, u_SaleTaskMx.enprice,
  6162. u_SaleTaskMx.ctmint, u_SaleTaskMx.outtype, u_SaleTaskMx.dftsaleprice,
  6163. u_SaleTaskMx.bqty, u_SaleTaskMx.pqty, u_SaleTaskMx.stopflag,
  6164. u_SaleTaskMx.stopemp, u_SaleTaskMx.stopdate, u_SaleTaskMx.stopreason,
  6165. u_SaleTaskMx.bjflag, u_SaleTaskMx.bjdate, u_SaleTaskMx.bjemp,
  6166. u_SaleTaskMx.wqty, u_SaleTaskMx.auditemp, u_SaleTaskMx.auditflag,
  6167. u_SaleTaskMx.auditdate, u_SaleTaskMx.lqty, u_SaleTaskMx.finishbqty,
  6168. u_SaleTaskMx.dddate, u_SaleTaskMx.ddemp, u_SaleTaskMx.ddflag,
  6169. u_SaleTaskMx.mqty, u_SaleTaskMx.requiredate, u_SaleTaskMx.pfcode,
  6170. u_SaleTaskMx.mxdscrp2, u_SaleTaskMx.scidprice, u_SaleTaskMx.inwareqty,
  6171. u_SaleTaskMx.outtypestr, u_SaleTaskMx.changedscrp, u_SaleTaskMx.quoteid,
  6172. u_SaleTaskMx.quotecode, u_SaleTaskMx.quoteprintid, u_SaleTaskMx.pricetype,
  6173. u_SaleTaskMx.capacity, u_SaleTaskMx.nprice, u_SaleTaskMx.saleoutqty,
  6174. u_SaleTaskMx.stopqty, u_SaleTaskMx.fpqty, u_SaleTaskMx.poid,
  6175. u_SaleTaskMx.taxrate, u_SaleTaskMx.perfinishdate, u_SaleTaskMx.addqty,
  6176. u_mtrldef.mtrlcode, u_mtrldef.mtrlname
  6177. From u_SaleTaskMx LEFT Outer JOIN
  6178. u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid
  6179. Where u_SaleTaskMx.scid = :arg_scid
  6180. And u_SaleTaskMx.taskid = :arg_taskid Using commit_transaction;
  6181. If commit_transaction.SQLCode <> 0 Then
  6182. rslt = 0
  6183. arg_msg = '插入销售订单废弃单明细失败,'+commit_transaction.SQLErrText
  6184. Goto ext
  6185. End If
  6186. Insert Into u_saletask_itemmx_disuse
  6187. (scid, taskid, disuseid, printid, itemid, amt, mxdscrp, itemcode, itemname, itemtype)
  6188. Select u_saletask_itemmx.scid, u_saletask_itemmx.taskid, :ll_disuseid,u_saletask_itemmx.printid,
  6189. u_saletask_itemmx.itemid, u_saletask_itemmx.amt, u_saletask_itemmx.mxdscrp,
  6190. u_itemdef.itemcode, u_itemdef.itemname, u_itemdef.itemtype
  6191. From u_saletask_itemmx LEFT Outer JOIN
  6192. u_itemdef ON u_saletask_itemmx.itemid = u_itemdef.itemid
  6193. Where u_saletask_itemmx.scid = :arg_scid
  6194. And u_saletask_itemmx.taskid = :arg_taskid Using commit_transaction;
  6195. If commit_transaction.SQLCode <> 0 Then
  6196. rslt = 0
  6197. arg_msg = '插入销售订单废弃单费用明细失败,'+commit_transaction.SQLErrText
  6198. Goto ext
  6199. End If
  6200. ext:
  6201. If rslt = 0 Then
  6202. Rollback Using commit_transaction;
  6203. ElseIf rslt = 1 And arg_ifcommit Then
  6204. Commit Using commit_transaction;
  6205. End If
  6206. Return rslt
  6207. end function
  6208. public function integer uof_updatesaleoutcodestr (long arg_scid, long arg_taskid, long arg_printid, boolean arg_ifcommit, ref string arg_msg);//uof_UpdateSaleOutCodeStr
  6209. Int rslt = 1
  6210. String ls_SaleOutCodeStr
  6211. //查找单号
  6212. Long i, ll_rowcnt
  6213. datastore ds
  6214. ds = Create datastore
  6215. ds.DataObject = "ds_saletask_saleoutcodestr"
  6216. ds.SetTransObject(sqlca)
  6217. ll_rowcnt = ds.Retrieve(arg_scid, arg_taskid, arg_printid)
  6218. FOR i = 1 To ll_rowcnt
  6219. ls_SaleOutCodeStr = ds.Object.u_saleout_taskcode[i] + ","
  6220. NEXT
  6221. IF ls_SaleOutCodeStr <> "" THEN
  6222. ls_SaleOutCodeStr = Left(ls_SaleOutCodeStr, Len(ls_SaleOutCodeStr) - 1)
  6223. END IF
  6224. UPDATE u_saletaskmx
  6225. SET SaleOutCodeStr = :ls_SaleOutCodeStr
  6226. WHERE scid = :arg_scid
  6227. AND taskid = :arg_taskid
  6228. And printid = :arg_printid;
  6229. IF sqlca.SQLCode <> 0 THEN
  6230. rslt = 0
  6231. arg_msg = "更新销售订单已开未发货单发货通知单号失败,"+sqlca.SQLErrText
  6232. GOTO ext
  6233. END IF
  6234. ext:
  6235. Destroy ds
  6236. IF rslt = 0 THEN
  6237. ROLLBACK;
  6238. ELSEIF arg_ifcommit THEN
  6239. COMMIT;
  6240. END IF
  6241. RETURN rslt
  6242. end function
  6243. 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)
  6244. //0 fail 1 SUCCESS
  6245. Int rslt = 1
  6246. arg_newdescppart = Trim(arg_newdescppart)
  6247. IF it_updatebegin OR it_newbegin THEN
  6248. rslt = 0
  6249. arG_MSG = "编辑状态下不可用"
  6250. GOTO ext
  6251. END IF
  6252. IF arg_newdescppart = '' THEN
  6253. rslt = 0
  6254. arG_MSG = "要添加内容为空,操作取消"
  6255. GOTO ext
  6256. END IF
  6257. IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
  6258. rslt = 0
  6259. GOTO ext
  6260. END IF
  6261. IF status = 0 THEN
  6262. rslt = 0
  6263. arG_MSG = "待销售审核状态下不可用"
  6264. GOTO ext
  6265. END IF
  6266. IF status = 1 THEN
  6267. rslt = 0
  6268. arG_MSG = "只有在生产审核前才可以使用"
  6269. GOTO ext
  6270. END IF
  6271. UPDATE u_saletask
  6272. SET dscrp3 = dscrp3+' '+:arg_newdescppart
  6273. Where u_saletask.taskid = :arg_taskid AND scid = :arg_scid USING commit_transaction ;
  6274. IF commit_transaction.SQLCode <> 0 THEN
  6275. rslt = 0
  6276. arG_MSG = "因网络或其它原因导致添加销售订单备注操作失败"+"~n"+ commit_transaction.SQLErrText
  6277. GOTO ext
  6278. END IF
  6279. dscrp3 = dscrp3+' '+arg_newdescppart
  6280. it_newbegin = FALSE
  6281. it_updatebegin = FALSE
  6282. ext:
  6283. IF rslt = 0 THEN
  6284. ROLLBACK USING commit_transaction;
  6285. ELSEIF arg_ifcommit THEN
  6286. COMMIT USING commit_transaction;
  6287. END IF
  6288. p_reset()
  6289. Return (rslt)
  6290. end function
  6291. public function integer stopsaletask (long arg_scid, long arg_taskid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  6292. Long ll_assignid,j,i
  6293. Decimal ld_assignqty
  6294. uo_mtrlware_assign uo_ma
  6295. uo_ma = Create uo_mtrlware_assign
  6296. uo_ma.commit_transaction = commit_transaction
  6297. datastore ds_fp_del
  6298. ds_fp_del = Create datastore
  6299. ds_fp_del.DataObject = 'ds_rp_cust_saletask_fp_mx_fp_del_p'
  6300. ds_fp_del.SetTransObject(commit_transaction)
  6301. IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
  6302. rslt = 0
  6303. GOTO ext
  6304. END IF
  6305. IF uo_option_if_oa_saletask = -1000 THEN
  6306. arg_msg = '选项:[043]销售订单使用OA审批流程,读取初始默认值失败,操作取消!'
  6307. rslt = 0
  6308. GOTO ext
  6309. END IF
  6310. IF uo_option_if_oa_saletask_fore = -1000 THEN
  6311. arg_msg = '选项:[227]销售预测单使用OA审批流程,读取初始默认值失败,操作取消!'
  6312. rslt = 0
  6313. GOTO ext
  6314. END IF
  6315. IF arg_taskid <= 0 THEN
  6316. rslt = 0
  6317. arg_msg = '错误销售订单唯一码'
  6318. GOTO ext
  6319. END IF
  6320. IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  6321. rslt = 0
  6322. GOTO ext
  6323. END IF
  6324. IF Status <> 1 THEN
  6325. rslt = 0
  6326. arg_msg = "订单只有在进行状态才可以执行终止,请核对"
  6327. GOTO ext
  6328. END IF
  6329. IF Kind <> 0 THEN
  6330. IF uo_option_if_oa_saletask = 1 And audit_buildtype = 0 THEN
  6331. IF f_check_if_oaflow(arg_scid,arg_taskid,6,arg_msg ) = 0 THEN
  6332. rslt = 0
  6333. GOTO ext
  6334. END IF
  6335. END IF
  6336. ELSE
  6337. IF uo_option_if_oa_saletask_fore = 1 And audit_buildtype = 0 THEN
  6338. IF f_check_if_oaflow(arg_scid,arg_taskid,1324,arg_msg ) = 0 THEN
  6339. rslt = 0
  6340. GOTO ext
  6341. END IF
  6342. END IF
  6343. END IF
  6344. UPDATE u_SaleTask
  6345. SET Status = 3,
  6346. accomplishdate = getdate() ,
  6347. stopemp = :publ_operator,
  6348. stopreason = :arg_stopreason
  6349. Where TaskID = :arg_taskid And scid = :arg_scid Using commit_transaction ;
  6350. IF commit_transaction.SQLCode <> 0 THEN
  6351. rslt = 0
  6352. arg_msg = "因网络或其它原因导致终止销售订单操作失败"+"~n"+commit_transaction.SQLErrText
  6353. GOTO ext
  6354. END IF
  6355. FOR i = 1 To it_mxbt
  6356. ds_fp_del.Retrieve(arg_scid,arg_taskid,saletaskmx[i].printid)
  6357. FOR j = 1 To ds_fp_del.RowCount()
  6358. ll_assignid = ds_fp_del.Object.u_mtrlware_assign_assignid[j]
  6359. ld_assignqty = ds_fp_del.Object.u_mtrlware_assign_assignqty[j] - ds_fp_del.Object.u_mtrlware_assign_outqty[j]
  6360. IF uo_ma.uof_assign_del(ll_assignid,ld_assignqty,arg_msg,False) = 0 THEN
  6361. arg_msg = '删除库存分配失败,'+arg_msg
  6362. rslt = 0
  6363. GOTO ext
  6364. END IF
  6365. NEXT
  6366. NEXT
  6367. it_newbegin = False
  6368. it_updatebegin = False
  6369. ext:
  6370. IF rslt = 0 THEN
  6371. ROLLBACK Using commit_transaction;
  6372. ELSEIF arg_ifcommit And rslt = 1 THEN
  6373. COMMIT Using commit_transaction;
  6374. END IF
  6375. Destroy uo_ma
  6376. Destroy ds_fp_del
  6377. p_reset()
  6378. Return (rslt)
  6379. end function
  6380. 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
  6381. Dec ld_SaleQty,ld_finishbQty,ld_bqty
  6382. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  6383. rslt = 0
  6384. GOTO ext
  6385. END IF
  6386. IF status = 0 THEN
  6387. arg_msg = '订单未审核,不能更新!'
  6388. rslt = 0
  6389. GOTO ext
  6390. END IF
  6391. IF arg_pid = 0 THEN
  6392. SELECT bqty,
  6393. finishbqty
  6394. INTO :ld_bqty,
  6395. :ld_finishbQty
  6396. FROM u_SaleTaskMx
  6397. WHERE scid = :arg_scid AND
  6398. taskid = :arg_taskid AND
  6399. printid = :arg_printid Using commit_transaction;
  6400. IF commit_transaction.SQLCode <> 0 THEN
  6401. arg_msg = '查询销售订单已申购数量失败!'+commit_transaction.SQLErrText
  6402. rslt = 0
  6403. GOTO ext
  6404. END IF
  6405. IF ld_bqty - ld_finishbQty < arg_qty THEN
  6406. arg_msg = '申购数量大于待申购数!'
  6407. rslt = 0
  6408. GOTO ext
  6409. END IF
  6410. UPDATE u_SaleTaskMx
  6411. SET finishbqty = finishbqty + :arg_qty
  6412. WHERE scid = :scid AND
  6413. taskid = :arg_taskid AND
  6414. printid = :arg_printid Using commit_transaction;
  6415. IF commit_transaction.SQLCode <> 0 THEN
  6416. arg_msg = '更新订单申购数失败>>'+commit_transaction.SQLErrText
  6417. rslt = 0
  6418. GOTO ext
  6419. END IF
  6420. ELSE
  6421. SELECT bqty,
  6422. finishbqty
  6423. INTO :ld_bqty,
  6424. :ld_finishbQty
  6425. FROM u_saletaskmx_pack
  6426. WHERE scid = :arg_scid AND
  6427. taskid = :arg_taskid AND
  6428. printid = :arg_printid AND
  6429. pid = :arg_pid Using commit_transaction;
  6430. IF commit_transaction.SQLCode <> 0 THEN
  6431. arg_msg = '查询销售订单已申购数量失败!'+commit_transaction.SQLErrText
  6432. rslt = 0
  6433. GOTO ext
  6434. END IF
  6435. IF ld_bqty - ld_finishbQty < arg_qty THEN
  6436. arg_msg = '申购数量大于待申购数!'
  6437. rslt = 0
  6438. GOTO ext
  6439. END IF
  6440. UPDATE u_saletaskmx_pack
  6441. SET finishbqty = finishbqty + :arg_qty
  6442. WHERE scid = :scid AND
  6443. taskid = :arg_taskid AND
  6444. printid = :arg_printid AND
  6445. pid = :arg_pid Using commit_transaction;
  6446. IF commit_transaction.SQLCode <> 0 THEN
  6447. arg_msg = '更新订单申购数失败>>'+commit_transaction.SQLErrText
  6448. rslt = 0
  6449. GOTO ext
  6450. END IF
  6451. END IF
  6452. ext:
  6453. IF rslt = 1 And arg_ifcommit THEN
  6454. COMMIT Using commit_transaction;
  6455. ELSEIF rslt = 0 THEN
  6456. ROLLBACK Using commit_transaction;
  6457. END IF
  6458. RETURN rslt
  6459. end function
  6460. 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
  6461. Long cnt
  6462. Long ll_SonMtrlid[]
  6463. String ls_status,ls_woodcode,ls_pcode,ls_mtrlcuscode
  6464. Decimal ld_Sonscale[],ld_Sonscale_fm[]
  6465. Int li_ifover[],li_dipztype[],li_ifpack[]
  6466. String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
  6467. int li_if_inherit[]
  6468. int li_if_inherit_tmp
  6469. Long it_mxt = 1
  6470. Decimal ld_qty
  6471. Long ll_i
  6472. Long ll_statusflag,ll_woodcodeflag,ll_pcodeflag
  6473. Int li_ifpackpro
  6474. String ls_mtrlcode
  6475. String ls_pf_mtrlcode[]
  6476. s_mtrlcfg_expr s_mtrlcfg[]
  6477. Long ll_cfg,ll_cnt_s_mtrlcfg
  6478. Long ll_scid,ll_taskid,ll_printid
  6479. Int li_ordertype_order
  6480. Decimal ld_bqty
  6481. SELECT ifpackpro,statusflag,woodcodeflag,pcodeflag,mtrlcode,if_inherit
  6482. INTO :li_ifpackpro,:ll_statusflag,:ll_woodcodeflag,:ll_pcodeflag,:ls_mtrlcode,:li_if_inherit_tmp
  6483. FROM u_mtrldef
  6484. Where mtrlid = :arg_mtrlid;
  6485. IF sqlca.SQLCode <> 0 THEN
  6486. arg_msg = '查询物料是否包件产品失败,'+sqlca.SQLErrText
  6487. rslt = 0
  6488. GOTO ext
  6489. END IF
  6490. IF li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
  6491. //查询个性包件产品订单明细是否有换包件
  6492. IF li_ifpackpro = 2 And arg_mtrlcuscode <> '' THEN
  6493. SELECT ordertype INTO :li_ordertype_order
  6494. From u_order_ml Where ordercode = :arg_mtrlcuscode Using commit_transaction;
  6495. IF sqlca.SQLCode <> 0 THEN
  6496. cnt = 0
  6497. ELSE
  6498. IF li_ordertype_order = 4 THEN
  6499. SELECT u_order_ml_p.scid,u_order_ml_p.taskid,u_order_ml_p.taskmxid
  6500. INTO :ll_scid,:ll_taskid,:ll_printid
  6501. FROM u_order_ml,u_order_ml u_order_ml_p
  6502. WHERE u_order_ml.ordercode = :arg_mtrlcuscode
  6503. AND u_order_ml.scid = u_order_ml_p.scid
  6504. AND u_order_ml.porderid = u_order_ml_p.orderid
  6505. Using commit_transaction;
  6506. IF sqlca.SQLCode <> 0 THEN
  6507. ll_taskid = 0
  6508. END IF
  6509. ELSE
  6510. SELECT scid,taskid,taskmxid
  6511. INTO :ll_scid,:ll_taskid,:ll_printid
  6512. FROM u_order_ml
  6513. Where ordercode = :arg_mtrlcuscode Using commit_transaction;
  6514. IF sqlca.SQLCode <> 0 THEN
  6515. ll_taskid = 0
  6516. END IF
  6517. END IF
  6518. IF ll_taskid = 0 THEN
  6519. cnt = 0
  6520. ELSE
  6521. //查是否有换清单
  6522. SELECT count(*) INTO :cnt FROM u_saletaskmx_pf
  6523. WHERE scid = :ll_scid
  6524. AND taskid = :ll_taskid
  6525. And printid = :ll_printid Using commit_transaction;
  6526. IF sqlca.SQLCode <> 0 THEN
  6527. cnt = 0
  6528. END IF
  6529. END IF
  6530. END IF
  6531. END IF
  6532. IF cnt > 0 THEN
  6533. DECLARE cur_pf_saletaskmx CURSOR FOR
  6534. SELECT u_saletaskmx_pf.SonMtrlid,
  6535. u_saletaskmx_pf.Sonscale,
  6536. u_saletaskmx_pf.Sonscale_fm,
  6537. u_saletaskmx_pf.status,
  6538. u_saletaskmx_pf.woodcode,
  6539. u_saletaskmx_pf.pcode,
  6540. 0,
  6541. 0,
  6542. u_mtrldef.ifpack,
  6543. u_mtrldef.mtrlcode,
  6544. u_mtrldef.if_inherit
  6545. FROM u_saletaskmx_pf,u_mtrldef
  6546. WHERE ( u_saletaskmx_pf.scid = :ll_scid )
  6547. AND ( u_saletaskmx_pf.taskid = :ll_taskid )
  6548. AND ( u_saletaskmx_pf.printid = :ll_printid )
  6549. AND ( u_saletaskmx_pf.SonMtrlid = u_mtrldef.mtrlid )
  6550. Using commit_transaction;
  6551. OPEN cur_pf_saletaskmx;
  6552. FETCH cur_pf_saletaskmx INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
  6553. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
  6554. :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
  6555. DO WHILE sqlca.SQLCode = 0
  6556. it_mxt++
  6557. FETCH cur_pf_saletaskmx INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
  6558. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
  6559. :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
  6560. LOOP
  6561. it_mxt = it_mxt - 1
  6562. CLOSE cur_pf_saletaskmx;
  6563. ELSE
  6564. DECLARE cur_pf CURSOR FOR
  6565. SELECT u_PrdPF.SonMtrlid,
  6566. u_PrdPF.Sonscale,
  6567. 1,
  6568. u_PrdPF.status,
  6569. u_PrdPF.woodcode,
  6570. u_PrdPF.pcode,
  6571. u_PrdPF.ifover,
  6572. u_prdpf.dipztype,
  6573. u_mtrldef.ifpack,
  6574. u_mtrldef.mtrlcode,
  6575. u_mtrldef.if_inherit
  6576. FROM u_PrdPF,u_mtrl_pf,u_mtrldef
  6577. WHERE (u_PrdPF.mtrlid = :arg_mtrlid)
  6578. AND ( u_mtrl_pf.ifdi = 1 AND :li_ifpackpro = 0
  6579. OR u_mtrl_pf.ifdft = 1 AND (:li_ifpackpro = 1 OR :li_ifpackpro = 2) AND u_mtrldef.ifpack > 0)
  6580. AND ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
  6581. AND ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
  6582. AND ( u_PrdPF.SonMtrlid = u_mtrldef.mtrlid )
  6583. ORDER BY u_PrdPF.printid
  6584. Using commit_transaction;
  6585. OPEN cur_pf;
  6586. FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
  6587. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
  6588. :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
  6589. DO WHILE sqlca.SQLCode = 0
  6590. it_mxt++
  6591. FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ld_Sonscale_fm[it_mxt],:ls_pf_status[it_mxt],
  6592. :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],:li_dipztype[it_mxt],
  6593. :li_ifpack[it_mxt],:ls_pf_mtrlcode[it_mxt],:li_if_inherit[it_mxt];
  6594. LOOP
  6595. it_mxt = it_mxt - 1
  6596. CLOSE cur_pf;
  6597. END IF
  6598. IF it_mxt = 0 THEN
  6599. IF li_ifpackpro = 0 THEN
  6600. arg_msg = '该产品没有建立组装清单,不能计算'
  6601. ELSE
  6602. arg_msg = '该产品没有建立默认清单,不能计算'
  6603. END IF
  6604. rslt = 0
  6605. GOTO ext
  6606. END IF
  6607. ELSE
  6608. it_mxt = 0
  6609. IF arg_status = '' THEN
  6610. rslt = 1
  6611. GOTO ext
  6612. ELSE
  6613. f_checkpz(arg_status,s_mtrlcfg)
  6614. ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg)
  6615. IF ll_cnt_s_mtrlcfg = 0 THEN
  6616. rslt = 1
  6617. GOTO ext
  6618. ELSE
  6619. FOR ll_cfg = 1 To ll_cnt_s_mtrlcfg
  6620. it_mxt++
  6621. ll_SonMtrlid[it_mxt] = arg_mtrlid
  6622. ls_pf_status[it_mxt] = s_mtrlcfg[ll_cfg].cfgname
  6623. ls_pf_woodcode[it_mxt] = arg_woodcode
  6624. ls_pf_pcode[it_mxt] = arg_pcode
  6625. ls_pf_mtrlcode[it_mxt] = ls_mtrlcode
  6626. ld_Sonscale[it_mxt] = Dec(s_mtrlcfg[ll_cfg].qty)
  6627. ld_Sonscale_fm[it_mxt] = 1
  6628. li_ifover[it_mxt] = 0
  6629. li_ifpack[it_mxt] = 0
  6630. li_if_inherit[it_mxt] = li_if_inherit_tmp
  6631. NEXT
  6632. END IF
  6633. END IF
  6634. END IF
  6635. FOR ll_i = 1 To it_mxt
  6636. IF li_ifover[ll_i] = 1 THEN
  6637. CHOOSE CASE li_dipztype[ll_i]
  6638. CASE 0
  6639. ls_status = arg_status
  6640. ls_woodcode = ''
  6641. ls_pcode = ''
  6642. CASE 1
  6643. ls_status = ''
  6644. ls_woodcode = arg_woodcode
  6645. ls_pcode = ''
  6646. CASE 2
  6647. ls_status = ''
  6648. ls_woodcode = ''
  6649. ls_pcode = arg_pcode
  6650. CASE 3
  6651. ls_status = arg_status
  6652. ls_woodcode = arg_woodcode
  6653. ls_pcode = ''
  6654. CASE 4
  6655. ls_status = ''
  6656. ls_woodcode = arg_woodcode
  6657. ls_pcode = arg_pcode
  6658. CASE 5
  6659. ls_status = arg_status
  6660. ls_woodcode = ''
  6661. ls_pcode = arg_pcode
  6662. CASE 6
  6663. ls_status = arg_status
  6664. ls_woodcode = arg_woodcode
  6665. ls_pcode = arg_pcode
  6666. END CHOOSE
  6667. ELSE
  6668. ls_status = ls_pf_status[ll_i]
  6669. ls_woodcode = ls_pf_woodcode[ll_i]
  6670. ls_pcode = ls_pf_pcode[ll_i]
  6671. END IF
  6672. // IF li_ifpackpro = 2 Or li_ifpackpro = 4 THEN
  6673. if li_if_inherit[ll_i] = 1 then
  6674. ls_mtrlcuscode = arg_mtrlcuscode
  6675. ELSE
  6676. ls_mtrlcuscode = ''
  6677. END IF
  6678. ld_bqty = arg_qty * ld_Sonscale[ll_i]/ld_Sonscale_fm[ll_i]
  6679. INSERT INTO u_saletaskmx_pack
  6680. (scid,
  6681. taskid,
  6682. printid,
  6683. pid,
  6684. mtrlid,
  6685. bqty,
  6686. status,
  6687. woodcode,
  6688. pcode,
  6689. mtrlcuscode)
  6690. VALUES (:arg_scid,
  6691. :arg_taskid,
  6692. :arg_printid,
  6693. :ll_i,
  6694. :ll_SonMtrlid[ll_i],
  6695. :ld_bqty,
  6696. :ls_status,
  6697. :ls_woodcode,
  6698. :ls_pcode,
  6699. :ls_mtrlcuscode) Using commit_transaction;
  6700. IF sqlca.SQLCode <> 0 THEN
  6701. rslt = 0
  6702. arg_msg = '插入包件待申购列表失败,'+commit_transaction.SQLErrText
  6703. GOTO ext
  6704. END IF
  6705. NEXT
  6706. ext:
  6707. IF rslt = 0 THEN
  6708. ROLLBACK;
  6709. END IF
  6710. RETURN rslt
  6711. end function
  6712. 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
  6713. rslt = 1
  6714. Long cnt
  6715. Long ll_pid,ll_i,ll_j
  6716. DateTime server_dt
  6717. Long ll_scid_arr[],ll_taskid_arr[]
  6718. Long ll_itmx
  6719. DateTime ld_requestdate_max
  6720. SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction;
  6721. IF commit_transaction.SQLCode <> 0 THEN
  6722. rslt = 0
  6723. arg_msg = "查询操作失败,日期 "
  6724. GOTO ext
  6725. END IF
  6726. FOR ll_i = 1 To UpperBound(arg_taskid)
  6727. IF Date(arg_olddate[ll_i]) = Date(arg_newdate[ll_i]) THEN CONTINUE
  6728. cnt = 0
  6729. SELECT count(*) INTO :cnt
  6730. FROM u_saletaskmx_moddate_log
  6731. WHERE scid = :arg_scid[ll_i]
  6732. AND taskid = :arg_taskid[ll_i]
  6733. And printid = :arg_printid[ll_i] Using commit_transaction;
  6734. IF commit_transaction.SQLCode <> 0 THEN
  6735. rslt = 0
  6736. arg_msg = '查询日期修改历史失败'+'~n'+commit_transaction.SQLErrText
  6737. GOTO ext
  6738. END IF
  6739. ll_pid = 0
  6740. IF cnt = 0 THEN
  6741. ll_pid = 0
  6742. ELSE
  6743. SELECT max(pid) INTO :ll_pid
  6744. FROM u_saletaskmx_moddate_log
  6745. WHERE scid = :arg_scid[ll_i]
  6746. AND taskid = :arg_taskid[ll_i]
  6747. And printid = :arg_printid[ll_i] Using commit_transaction;
  6748. IF commit_transaction.SQLCode <> 0 THEN
  6749. rslt = 0
  6750. arg_msg = '查询预计完成日期修改日志失败'+'~n'+commit_transaction.SQLErrText
  6751. GOTO ext
  6752. END IF
  6753. END IF
  6754. ll_pid++
  6755. INSERT INTO u_saletaskmx_moddate_log
  6756. (scid,
  6757. taskid,
  6758. printid,
  6759. pid,
  6760. olddate,
  6761. newdate,
  6762. opdate,
  6763. opemp)
  6764. VALUES (:arg_scid[ll_i],
  6765. :arg_taskid[ll_i],
  6766. :arg_printid[ll_i],
  6767. :ll_pid,
  6768. :arg_olddate[ll_i],
  6769. :arg_newdate[ll_i],
  6770. :server_dt,
  6771. :publ_operator) Using commit_transaction;
  6772. IF commit_transaction.SQLCode <> 0 THEN
  6773. rslt = 0
  6774. arg_msg = "因网络或其它原因导致插入明细交货日期修改日志操作失败"+"~n"+commit_transaction.SQLErrText
  6775. GOTO ext
  6776. END IF
  6777. UPDATE u_SaleTaskMx
  6778. SET requiredate = :arg_newdate[ll_i]
  6779. WHERE taskid = :arg_taskid[ll_i]
  6780. AND scid = :arg_scid[ll_i]
  6781. And printid = :arg_printid[ll_i] Using commit_transaction;
  6782. IF commit_transaction.SQLCode <> 0 THEN
  6783. rslt = 0
  6784. arg_msg = '更新明细交货日期失败,'+commit_transaction.SQLErrText
  6785. GOTO ext
  6786. END IF
  6787. NEXT
  6788. FOR ll_i = 1 To UpperBound(arg_taskid)
  6789. FOR ll_j = 1 To ll_itmx
  6790. IF arg_taskid[ll_i] = ll_taskid_arr[ll_j] And arg_scid[ll_i] = ll_scid_arr[ll_j] THEN
  6791. GOTO _next_task
  6792. END IF
  6793. NEXT
  6794. ll_itmx++
  6795. ll_scid_arr[ll_itmx] = arg_scid[ll_i]
  6796. ll_taskid_arr[ll_itmx] = arg_taskid[ll_i]
  6797. _next_task:
  6798. NEXT
  6799. FOR ll_i = 1 To ll_itmx
  6800. SELECT max(requiredate)
  6801. INTO :ld_requestdate_max
  6802. FROM u_SaleTaskMx
  6803. WHERE taskid = :ll_taskid_arr[ll_i]
  6804. And scid = :ll_scid_arr[ll_i] Using commit_transaction;
  6805. IF commit_transaction.SQLCode <> 0 THEN
  6806. rslt = 0
  6807. arg_msg = '查询明细最迟交货日期失败,scid = '+String(ll_scid_arr[ll_i]) + ',taskid = '+String(ll_taskid_arr[ll_i])+'~r~n'+commit_transaction.SQLErrText
  6808. GOTO ext
  6809. END IF
  6810. UPDATE u_SaleTask
  6811. SET requiredate = :ld_requestdate_max
  6812. WHERE taskid = :ll_taskid_arr[ll_i]
  6813. And scid = :ll_scid_arr[ll_i] Using commit_transaction;
  6814. IF sqlca.SQLCode <> 0 THEN
  6815. rslt = 0
  6816. arg_msg = '更新主表交货日期失败,scid = '+String(ll_scid_arr[ll_i]) + ',taskid = '+String(ll_taskid_arr[ll_i])+'~r~n'+commit_transaction.SQLErrText
  6817. GOTO ext
  6818. END IF
  6819. NEXT
  6820. ext:
  6821. IF rslt = 0 THEN
  6822. ROLLBACK Using commit_transaction;
  6823. ELSEIF arg_ifcommit And rslt = 1 THEN
  6824. COMMIT Using commit_transaction;
  6825. END IF
  6826. Return(rslt)
  6827. end function
  6828. public function integer acceptmxmx (s_saletaskmxmx arg_s_mx, ref string arg_msg);Int rslt = 1
  6829. Long cnt = 0,ls_i,ll_i
  6830. Decimal ld_dftsaleprice
  6831. Decimal ld_planprice
  6832. uo_cusprice uo_price
  6833. uo_price = Create uo_cusprice
  6834. IF it_newbegin = False And it_updatebegin = False THEN
  6835. rslt = 0
  6836. arg_msg = "非编辑状态不可以使用,操作取消"
  6837. GOTO ext
  6838. END IF
  6839. IF uo_option_change_status = '-1000' THEN
  6840. arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
  6841. rslt = 0
  6842. GOTO ext
  6843. END IF
  6844. IF uo_option_change_woodcode = '-1000' THEN
  6845. arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
  6846. rslt = 0
  6847. GOTO ext
  6848. END IF
  6849. IF uo_option_change_pcode = '-1000' THEN
  6850. arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
  6851. rslt = 0
  6852. GOTO ext
  6853. END IF
  6854. IF uo_option_m_msttake = -1000 THEN
  6855. arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
  6856. rslt = 0
  6857. GOTO ext
  6858. END IF
  6859. IF uo_option_checkprice_native = -1000 THEN
  6860. arg_msg = '选项:[056]销售价格按本位币限价,读取初始默认值失败,操作取消!'
  6861. rslt = 0
  6862. GOTO ext
  6863. END IF
  6864. IF uo_option_if_pricetype = -1000 THEN
  6865. arg_msg = '选项:[154]启用价格分类,读取初始默认值失败,操作取消!'
  6866. rslt = 0
  6867. GOTO ext
  6868. END IF
  6869. IF uo_option_price_rmb = -1000 THEN
  6870. arg_msg = '选项:[238]销售单价按人民币单价折算,读取初始默认值失败,操作取消!'
  6871. rslt = 0
  6872. GOTO ext
  6873. END IF
  6874. //清除空值
  6875. IF IsNull(arg_s_mx.mtrlid) THEN arg_s_mx.mtrlid = 0
  6876. IF IsNull(arg_s_mx.saleqty) THEN arg_s_mx.saleqty = 0
  6877. IF IsNull(arg_s_mx.enprice) THEN arg_s_mx.enprice = 0
  6878. IF IsNull(arg_s_mx.rebate) THEN arg_s_mx.rebate = 0
  6879. IF IsNull(arg_s_mx.mxdscrp) THEN arg_s_mx.mxdscrp = ''
  6880. IF IsNull(arg_s_mx.mtrlcode) THEN arg_s_mx.mtrlcode = ''
  6881. IF IsNull(arg_s_mx.status) THEN arg_s_mx.status = ''
  6882. IF IsNull(arg_s_mx.woodcode) THEN arg_s_mx.woodcode = ''
  6883. IF IsNull(arg_s_mx.pcode) THEN arg_s_mx.pcode = ''
  6884. IF IsNull(arg_s_mx.printid) THEN arg_s_mx.printid = 0
  6885. IF IsNull(arg_s_mx.outtype) THEN arg_s_mx.outtype = 0
  6886. IF IsNull(arg_s_mx.mtrlcuscode) THEN arg_s_mx.mtrlcuscode = ''
  6887. IF IsNull(arg_s_mx.mxdscrp2) THEN arg_s_mx.mxdscrp2 = ''
  6888. IF IsNull(arg_s_mx.nprice) THEN arg_s_mx.nprice = 0
  6889. IF IsNull(arg_s_mx.poid) THEN arg_s_mx.poid = 0
  6890. IF IsNull(arg_s_mx.taxrate) THEN arg_s_mx.taxrate = 0
  6891. IF IsNull(arg_s_mx.addqty) THEN arg_s_mx.addqty = 0
  6892. IF IsNull(arg_s_mx.priceformula) THEN arg_s_mx.priceformula = ''
  6893. IF IsNull(arg_s_mx.net_weight) THEN arg_s_mx.net_weight = 0
  6894. IF IsNull(arg_s_mx.gross_weight) THEN arg_s_mx.gross_weight = 0
  6895. IF IsNull(arg_s_mx.cubage) THEN arg_s_mx.cubage = 0
  6896. arg_s_mx.status = Trim(arg_s_mx.status)
  6897. arg_s_mx.woodcode = Trim(arg_s_mx.woodcode)
  6898. arg_s_mx.pcode = Trim(arg_s_mx.pcode)
  6899. arg_s_mx.mtrlcuscode = Trim(arg_s_mx.mtrlcuscode)
  6900. IF arg_s_mx.mtrlid = 0 Or arg_s_mx.saleqty = 0 THEN
  6901. rslt = 1
  6902. GOTO ext
  6903. END IF
  6904. IF Kind > 0 THEN
  6905. IF uo_option_sale_ifuse_negativeprice = 0 THEN
  6906. IF arg_s_mx.enprice * arg_s_mx.rebate < 0 THEN
  6907. rslt = 0
  6908. arg_msg = "产品:" + String(arg_s_mx.mtrlcode)+" 单价错误"
  6909. GOTO ext
  6910. END IF
  6911. END IF
  6912. IF arg_s_mx.rebate < 0 THEN
  6913. arg_msg = '折扣错误,请检查'
  6914. rslt = 0
  6915. GOTO ext
  6916. END IF
  6917. IF arg_s_mx.taxrate < 0 THEN
  6918. arg_msg = '不合理的税率'
  6919. rslt = 0
  6920. GOTO ext
  6921. END IF
  6922. END IF
  6923. String ls_pfcode
  6924. ls_pfcode = '[' + arg_s_mx.status + ']' &
  6925. + '[' + arg_s_mx.woodcode + ']' &
  6926. + '[' + arg_s_mx.pcode + ']'
  6927. IF Len(ls_pfcode) > 255 THEN
  6928. ls_pfcode = Mid(ls_pfcode, 1, 251) + '...]'
  6929. END IF
  6930. cnt = 0
  6931. SELECT count(*) INTO :cnt
  6932. FROM u_mtrl_pf
  6933. Where pfcode = :ls_pfcode;
  6934. IF sqlca.SQLCode <> 0 THEN cnt = 0
  6935. IF cnt = 0 THEN
  6936. ls_pfcode = f_get_dft_pf(arg_s_mx.mtrlid)
  6937. END IF
  6938. //检查物料id
  6939. Int li_statusflag,li_woodcodeflag,li_pcodeflag
  6940. Int li_isuse
  6941. Decimal ld_capacity,ld_capacity_zj
  6942. s_mtrlcfg_expr s_pz[]
  6943. String ls_status_zj
  6944. Int li_status_check,li_woodcode_check,li_pcode_check
  6945. SELECT planprice,
  6946. statusflag,
  6947. capacity,
  6948. woodcodeflag,
  6949. pcodeflag,
  6950. status_check,
  6951. woodcode_check,
  6952. pcode_check,
  6953. capacity * capaparm,
  6954. isuse
  6955. INTO :ld_planprice,
  6956. :li_statusflag,
  6957. :ld_capacity,
  6958. :li_woodcodeflag,
  6959. :li_pcodeflag,
  6960. :li_status_check,
  6961. :li_woodcode_check,
  6962. :li_pcode_check,
  6963. :ld_capacity,
  6964. :li_isuse
  6965. FROM u_mtrldef
  6966. Where u_mtrldef.mtrlid = :arg_s_mx.mtrlid Using commit_transaction ;
  6967. IF commit_transaction.SQLCode <> 0 THEN
  6968. rslt = 0
  6969. arg_msg = "查询操作失败,产品计划价"
  6970. GOTO ext
  6971. END IF
  6972. IF Kind = 0 And li_isuse = 2 THEN
  6973. arg_msg = '行:'+String(arg_s_mx.printid)+',物料是待停产物料,不能建立销售预测单'
  6974. rslt = 0
  6975. GOTO ext
  6976. END IF
  6977. IF li_statusflag = 2 THEN
  6978. IF arg_s_mx.status = '' THEN
  6979. arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_status + '字段使用组合配置,请输入'
  6980. rslt = 0
  6981. GOTO ext
  6982. END IF
  6983. ld_capacity = 0
  6984. f_checkpz(arg_s_mx.status,s_pz[])
  6985. FOR ll_i = 1 To UpperBound(s_pz)
  6986. ls_status_zj = s_pz[ll_i].cfgname
  6987. SELECT capacity * capaparm
  6988. INTO :ld_capacity_zj
  6989. FROM u_mtrl_configure
  6990. WHERE mtrlid = :arg_s_mx.mtrlid
  6991. And Name = :ls_status_zj;
  6992. IF commit_transaction.SQLCode <> 0 THEN
  6993. rslt = 0
  6994. arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询子件 "+ls_status_zj+" 折算套数参数操作失败"
  6995. GOTO ext
  6996. END IF
  6997. ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
  6998. NEXT
  6999. ELSEIF li_statusflag = 4 And li_status_check = 1 THEN
  7000. IF arg_s_mx.status = '' THEN
  7001. arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
  7002. rslt = 0
  7003. GOTO ext
  7004. END IF
  7005. ELSEIF li_statusflag = 1 Or li_statusflag = 0 THEN
  7006. IF f_check_status(1,arg_s_mx.status) = 0 THEN
  7007. rslt = 0
  7008. arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_s_mx.mtrlcode+",内容:"+arg_s_mx.status
  7009. GOTO ext
  7010. END IF
  7011. END IF
  7012. IF li_woodcodeflag = 4 And li_woodcode_check = 1 THEN
  7013. IF arg_s_mx.woodcode = '' THEN
  7014. arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
  7015. rslt = 0
  7016. GOTO ext
  7017. END IF
  7018. ELSEIF li_woodcodeflag = 1 Or li_woodcodeflag = 0 THEN
  7019. IF f_check_status(2,arg_s_mx.woodcode) = 0 THEN
  7020. rslt = 0
  7021. arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_s_mx.mtrlcode+",内容:"+arg_s_mx.woodcode
  7022. GOTO ext
  7023. END IF
  7024. END IF
  7025. IF li_pcodeflag = 4 And li_pcode_check = 1 THEN
  7026. IF arg_s_mx.pcode = '' THEN
  7027. arg_msg = '行:'+String(arg_s_mx.printid)+',物料'+uo_option_change_pcode + '字段使用部件选配,请输入'
  7028. rslt = 0
  7029. GOTO ext
  7030. END IF
  7031. ELSEIF li_pcodeflag = 1 Or li_pcodeflag = 0 THEN
  7032. IF f_check_status(3,arg_s_mx.pcode) = 0 THEN
  7033. rslt = 0
  7034. arg_msg = '行:'+String(arg_s_mx.printid)+",物料查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_s_mx.mtrlcode+",内容:"+arg_s_mx.pcode
  7035. GOTO ext
  7036. END IF
  7037. END IF
  7038. IF Kind > 0 THEN
  7039. ld_dftsaleprice = 0
  7040. f_get_defsaleprice(cusid,arg_s_mx.mtrlid,arg_s_mx.status,arg_s_mx.pcode,arg_s_mx.woodcode,moneyid,ld_dftsaleprice)
  7041. END IF
  7042. IF Kind = 1 THEN
  7043. Int li_ifcheckprice,ll_pricelimittype
  7044. // IF uo_option_if_pricetype = 1 And arg_s_mx.pricetype <> '' THEN
  7045. SELECT pricelimittype
  7046. INTO :ll_pricelimittype
  7047. FROM u_saletype
  7048. Where typeid = :typeid Using commit_transaction;
  7049. IF commit_transaction.SQLCode <> 0 THEN
  7050. rslt = 0
  7051. arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
  7052. GOTO ext
  7053. END IF
  7054. IF arg_s_mx.pricetype <> '' THEN
  7055. SELECT ifcheckprice
  7056. INTO :li_ifcheckprice
  7057. FROM u_pricetype
  7058. Where pricetype = :arg_s_mx.pricetype Using commit_transaction;
  7059. IF commit_transaction.SQLCode <> 0 THEN
  7060. arg_msg = '查询价格分类是否属于赠送类型失败,'+commit_transaction.SQLErrText
  7061. rslt = 0
  7062. GOTO ext
  7063. END IF
  7064. ELSE
  7065. li_ifcheckprice = 1
  7066. END IF
  7067. IF li_ifcheckprice = 2 THEN arg_s_mx.rebate = 0
  7068. IF li_ifcheckprice = 1 And ll_pricelimittype = 1 THEN
  7069. IF uo_option_checkprice_native = 1 THEN
  7070. IF uo_price.uof_check_price_saletask (typeid,cusid,arg_s_mx.mtrlid,&
  7071. arg_s_mx.mtrlcode,arg_s_mx.status,arg_s_mx.woodcode,arg_s_mx.pcode,&
  7072. 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
  7073. rslt = 0
  7074. GOTO ext
  7075. END IF
  7076. ELSE
  7077. IF uo_price.uof_check_price_saletask (typeid,cusid,arg_s_mx.mtrlid,&
  7078. arg_s_mx.mtrlcode,arg_s_mx.status,arg_s_mx.woodcode,arg_s_mx.pcode,&
  7079. 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
  7080. rslt = 0
  7081. GOTO ext
  7082. END IF
  7083. END IF
  7084. END IF
  7085. // END IF
  7086. END IF
  7087. //写入内容
  7088. it_mxbtmx++
  7089. saletaskmxmx[it_mxbtmx].dftsaleprice = ld_dftsaleprice
  7090. saletaskmxmx[it_mxbtmx].mtrlid = arg_s_mx.mtrlid
  7091. saletaskmxmx[it_mxbtmx].saleqty = arg_s_mx.saleqty
  7092. saletaskmxmx[it_mxbtmx].plprice = ld_planprice
  7093. saletaskmxmx[it_mxbtmx].mxdscrp = arg_s_mx.mxdscrp
  7094. saletaskmxmx[it_mxbtmx].mxdscrp2 = arg_s_mx.mxdscrp2
  7095. saletaskmxmx[it_mxbtmx].mtrlcode = arg_s_mx.mtrlcode
  7096. saletaskmxmx[it_mxbtmx].status = arg_s_mx.status
  7097. saletaskmxmx[it_mxbtmx].printid = arg_s_mx.printid
  7098. saletaskmxmx[it_mxbtmx].woodcode = arg_s_mx.woodcode
  7099. saletaskmxmx[it_mxbtmx].pcode = arg_s_mx.pcode
  7100. saletaskmxmx[it_mxbtmx].quotecode = arg_s_mx.quotecode
  7101. saletaskmxmx[it_mxbtmx].quoteid = arg_s_mx.quoteid
  7102. saletaskmxmx[it_mxbtmx].quoteprintid = arg_s_mx.quoteprintid
  7103. saletaskmxmx[it_mxbtmx].mtrlcuscode = arg_s_mx.mtrlcuscode
  7104. saletaskmxmx[it_mxbtmx].enprice = arg_s_mx.enprice
  7105. saletaskmxmx[it_mxbtmx].rebate = arg_s_mx.rebate
  7106. IF uo_option_price_rmb = 0 THEN
  7107. saletaskmxmx[it_mxbtmx].fprice = arg_s_mx.enprice * mrate
  7108. IF mrate = 0 THEN
  7109. saletaskmxmx[it_mxbtmx].enacprice = saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate
  7110. ELSE
  7111. saletaskmxmx[it_mxbtmx].enacprice = saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate / mrate
  7112. END IF
  7113. saletaskmxmx[it_mxbtmx].price = saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate
  7114. ELSE
  7115. saletaskmxmx[it_mxbtmx].fprice = Round(arg_s_mx.enprice * mrate,2)
  7116. IF mrate = 0 THEN
  7117. saletaskmxmx[it_mxbtmx].enacprice = Round(saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate,2)
  7118. ELSE
  7119. saletaskmxmx[it_mxbtmx].enacprice = Round(saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate / mrate,2)
  7120. END IF
  7121. saletaskmxmx[it_mxbtmx].price = Round(saletaskmxmx[it_mxbtmx].fprice * arg_s_mx.rebate,2)
  7122. END IF
  7123. saletaskmxmx[it_mxbtmx].scidprice = arg_s_mx.scidprice
  7124. saletaskmxmx[it_mxbtmx].outtypestr = arg_s_mx.outtypestr
  7125. saletaskmxmx[it_mxbtmx].requiredate = arg_s_mx.requiredate
  7126. saletaskmxmx[it_mxbtmx].pfcode = ls_pfcode
  7127. saletaskmxmx[it_mxbtmx].pricetype = arg_s_mx.pricetype
  7128. saletaskmxmx[it_mxbtmx].capacity = ld_capacity * arg_s_mx.saleqty
  7129. saletaskmxmx[it_mxbtmx].nprice = arg_s_mx.nprice
  7130. saletaskmxmx[it_mxbtmx].poid = arg_s_mx.poid //使用到的价格指令ID
  7131. saletaskmxmx[it_mxbtmx].taxrate = arg_s_mx.taxrate
  7132. saletaskmxmx[it_mxbtmx].addqty = arg_s_mx.addqty
  7133. saletaskmxmx[it_mxbtmx].priceformula = arg_s_mx.priceformula
  7134. IF uo_option_m_msttake = 1 THEN //使用多币种
  7135. msttakeamt = msttakeamt + Round(arg_s_mx.enprice * arg_s_mx.saleqty * arg_s_mx.rebate,2)
  7136. ELSE // 系统不使用多币种,转换为人民币
  7137. msttakeamt = msttakeamt + Round(arg_s_mx.enprice * mrate * arg_s_mx.saleqty * arg_s_mx.rebate,2)
  7138. END IF
  7139. saletaskmxmx[it_mxbtmx].net_weight = arg_s_mx.net_weight
  7140. saletaskmxmx[it_mxbtmx].gross_weight = arg_s_mx.gross_weight
  7141. saletaskmxmx[it_mxbtmx].cubage = arg_s_mx.cubage
  7142. //汇总到saletaskmx
  7143. FOR ll_i = 1 To it_mxbt
  7144. IF saletaskmx[ll_i].mtrlid = arg_s_mx.mtrlid And &
  7145. saletaskmx[ll_i].status = arg_s_mx.status And &
  7146. saletaskmx[ll_i].woodcode = arg_s_mx.woodcode And &
  7147. saletaskmx[ll_i].pcode = arg_s_mx.pcode And &
  7148. saletaskmx[ll_i].mtrlcuscode = arg_s_mx.mtrlcuscode And &
  7149. saletaskmx[ll_i].enprice = arg_s_mx.enprice THEN
  7150. saletaskmx[ll_i].saleqty = saletaskmx[ll_i].saleqty + arg_s_mx.saleqty
  7151. saletaskmx[ll_i].capacity = saletaskmx[ll_i].capacity + ld_capacity * arg_s_mx.saleqty
  7152. saletaskmx[ll_i].addqty = saletaskmx[ll_i].addqty + arg_s_mx.addqty
  7153. IF arg_s_mx.requiredate < saletaskmx[ll_i].requiredate THEN
  7154. saletaskmx[ll_i].requiredate = arg_s_mx.requiredate
  7155. END IF
  7156. saletaskmx[ll_i].dscrp = ''
  7157. saletaskmx[ll_i].dscrp2 = ''
  7158. GOTO ext
  7159. END IF
  7160. NEXT
  7161. it_mxbt++
  7162. saletaskmx[it_mxbt].dftsaleprice = ld_dftsaleprice
  7163. saletaskmx[it_mxbt].mtrlid = arg_s_mx.mtrlid
  7164. saletaskmx[it_mxbt].saleqty = arg_s_mx.saleqty
  7165. saletaskmx[it_mxbt].plprice = ld_planprice
  7166. saletaskmx[it_mxbt].dscrp = arg_s_mx.mxdscrp
  7167. saletaskmx[it_mxbt].dscrp2 = arg_s_mx.mxdscrp2
  7168. saletaskmx[it_mxbt].mtrlcode = arg_s_mx.mtrlcode
  7169. saletaskmx[it_mxbt].status = arg_s_mx.status
  7170. saletaskmx[it_mxbt].printid = it_mxbt
  7171. saletaskmx[it_mxbt].woodcode = arg_s_mx.woodcode
  7172. saletaskmx[it_mxbt].pcode = arg_s_mx.pcode
  7173. saletaskmx[it_mxbt].mtrlcuscode = arg_s_mx.mtrlcuscode
  7174. saletaskmx[it_mxbt].enprice = arg_s_mx.enprice
  7175. saletaskmx[it_mxbt].rebate = arg_s_mx.rebate
  7176. IF uo_option_price_rmb = 0 THEN
  7177. saletaskmx[it_mxbt].fprice = arg_s_mx.enprice * mrate
  7178. IF mrate = 0 THEN
  7179. saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_s_mx.rebate
  7180. ELSE
  7181. saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_s_mx.rebate / mrate
  7182. END IF
  7183. saletaskmx[it_mxbt].acprice = saletaskmx[it_mxbt].fprice * arg_s_mx.rebate
  7184. ELSE
  7185. saletaskmx[it_mxbt].fprice = Round(arg_s_mx.enprice * mrate,2)
  7186. IF mrate = 0 THEN
  7187. saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_s_mx.rebate,2)
  7188. ELSE
  7189. saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_s_mx.rebate / mrate,2)
  7190. END IF
  7191. saletaskmx[it_mxbt].acprice = Round(saletaskmx[it_mxbt].fprice * arg_s_mx.rebate,2)
  7192. END IF
  7193. saletaskmx[it_mxbt].scidprice = arg_s_mx.scidprice
  7194. saletaskmx[it_mxbt].outtype = arg_s_mx.outtypestr
  7195. saletaskmx[it_mxbt].requiredate = arg_s_mx.requiredate
  7196. saletaskmx[it_mxbt].pfcode = ls_pfcode
  7197. saletaskmx[it_mxbt].quoteid = arg_s_mx.quoteid
  7198. saletaskmx[it_mxbt].quotecode = arg_s_mx.quotecode
  7199. saletaskmx[it_mxbt].quoteprintid = arg_s_mx.quoteprintid
  7200. saletaskmx[it_mxbt].pricetype = arg_s_mx.pricetype
  7201. saletaskmx[it_mxbt].capacity = ld_capacity * arg_s_mx.saleqty
  7202. saletaskmx[it_mxbt].nprice = arg_s_mx.nprice
  7203. saletaskmx[it_mxbt].poid = arg_s_mx.poid //使用到的价格指令ID
  7204. saletaskmx[it_mxbt].dscrp_text = ''
  7205. saletaskmx[it_mxbt].taxrate = arg_s_mx.taxrate
  7206. saletaskmx[it_mxbt].addqty = arg_s_mx.addqty
  7207. saletaskmx[it_mxbt].priceformula = arg_s_mx.priceformula
  7208. saletaskmx[it_mxbt].sampleid = 0
  7209. saletaskmx[it_mxbt].net_weight = arg_s_mx.net_weight
  7210. saletaskmx[it_mxbt].gross_weight = arg_s_mx.gross_weight
  7211. saletaskmx[it_mxbt].cubage = arg_s_mx.cubage
  7212. saletaskmx[it_mxbt].fjcnt = arg_s_mx.fjcnt
  7213. saletaskmx[it_mxbt].fjstr = arg_s_mx.fjstr
  7214. ext:
  7215. IF rslt = 0 THEN p_clearmx()
  7216. Destroy uo_price
  7217. RETURN rslt
  7218. end function
  7219. private function integer uof_p_check_date (ref string arg_msg);Int rslt = 1
  7220. Long ll_i
  7221. String ls_mtrlcode
  7222. String ls_msg_pow
  7223. DateTime serverdt
  7224. IF Not f_power_ind(3990,ls_msg_pow) or sys_power_issuper THEN
  7225. rslt = 1
  7226. GOTO ext
  7227. END IF
  7228. SELECT Top 1 getdate() Into :serverdt From u_user Using commit_transaction ;
  7229. IF commit_transaction.SQLCode <> 0 THEN
  7230. rslt = 0
  7231. arg_msg = "查询操作失败,日期,"+sqlca.SQLErrText
  7232. GOTO ext
  7233. END IF
  7234. FOR ll_i = 1 To it_mxbt
  7235. ls_mtrlcode = saletaskmx[ll_i].mtrlcode
  7236. IF RelativeDate ( Date(serverdt), saletaskmx[ll_i].u_mtrldef_expday ) > Date(saletaskmx[ll_i].requiredate ) THEN
  7237. 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')+'),请检查'
  7238. rslt = 0
  7239. GOTO ext
  7240. END IF
  7241. NEXT
  7242. ext:
  7243. RETURN rslt
  7244. end function
  7245. 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
  7246. Long cnt = 0,ls_i,ll_i
  7247. Decimal ld_dftsaleprice
  7248. Decimal ld_planprice
  7249. Decimal ld_stoppqty,ld_stopsaleqty
  7250. decimal lde_list_price, lde_porebate
  7251. uo_cusprice uo_price
  7252. uo_price = Create uo_cusprice
  7253. If it_newbegin = False And it_updatebegin = False Then
  7254. rslt = 0
  7255. arg_msg = "非编辑状态不可以使用,操作取消"
  7256. Goto ext
  7257. End If
  7258. If uo_option_change_status = '-1000' Then
  7259. arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
  7260. rslt = 0
  7261. Goto ext
  7262. End If
  7263. If uo_option_change_woodcode = '-1000' Then
  7264. arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
  7265. rslt = 0
  7266. Goto ext
  7267. End If
  7268. If uo_option_change_pcode = '-1000' Then
  7269. arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
  7270. rslt = 0
  7271. Goto ext
  7272. End If
  7273. If uo_option_m_msttake = -1000 Then
  7274. arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
  7275. rslt = 0
  7276. Goto ext
  7277. End If
  7278. If uo_option_checkprice_native = -1000 Then
  7279. arg_msg = '选项:[056]销售价格按本位币限价,读取初始默认值失败,操作取消!'
  7280. rslt = 0
  7281. Goto ext
  7282. End If
  7283. If uo_option_if_pricetype = -1000 Then
  7284. arg_msg = '选项:[154]启用价格分类,读取初始默认值失败,操作取消!'
  7285. rslt = 0
  7286. Goto ext
  7287. End If
  7288. If uo_option_price_rmb = -1000 Then
  7289. arg_msg = '选项:[238]销售单价按人民币单价折算,读取初始默认值失败,操作取消!'
  7290. rslt = 0
  7291. Goto ext
  7292. End If
  7293. //清除空值
  7294. If IsNull(arg_mtrlid) Then arg_mtrlid = 0
  7295. If IsNull(arg_qty) Then arg_qty = 0
  7296. If IsNull(arg_enprice) Then arg_enprice = 0
  7297. If IsNull(arg_rebate) Then arg_rebate = 0
  7298. If IsNull(arg_dscrp) Then arg_dscrp = ''
  7299. If IsNull(arg_mtrlcode) Then arg_mtrlcode = ''
  7300. If IsNull(arg_status) Then arg_status = ''
  7301. If IsNull(arg_woodcode) Then arg_woodcode = ''
  7302. If IsNull(arg_pcode) Then arg_pcode = ''
  7303. If IsNull(arg_printid) Then arg_printid = 0
  7304. If IsNull(arg_outtype) Then arg_outtype = ''
  7305. If IsNull(arg_mtrlcuscode) Then arg_mtrlcuscode = ''
  7306. If IsNull(arg_dscrp2) Then arg_dscrp2 = ''
  7307. If IsNull(arg_quoteid) Then arg_quoteid = 0
  7308. If IsNull(arg_quotecode) Then arg_quotecode = ''
  7309. If IsNull(arg_quoteprintid) Then arg_quoteprintid = 0
  7310. If IsNull(arg_nprice) Then arg_nprice = 0
  7311. If IsNull(arg_poid) Then arg_poid = 0
  7312. If IsNull(arg_dscrp_text) Then arg_dscrp_text = ''
  7313. If IsNull(arg_taxrate) Then arg_taxrate = 0
  7314. If IsNull(arg_addqty) Then arg_addqty = 0
  7315. If IsNull(arg_priceformula) Then arg_priceformula = ''
  7316. If IsNull(arg_sampleid) Then arg_sampleid = 0
  7317. If IsNull(arg_net_weight) Then arg_net_weight = 0
  7318. If IsNull(arg_gross_weight) Then arg_gross_weight = 0
  7319. If IsNull(arg_cubage) Then arg_cubage = 0
  7320. arg_status = Trim(arg_status)
  7321. arg_woodcode = Trim(arg_woodcode)
  7322. arg_pcode = Trim(arg_pcode)
  7323. arg_mtrlcuscode = Trim(arg_mtrlcuscode)
  7324. If arg_mtrlid = 0 Or arg_qty = 0 Then
  7325. rslt = 1
  7326. Goto ext
  7327. End If
  7328. If Kind > 0 Then
  7329. If uo_option_sale_ifuse_negativeprice = 0 Then
  7330. If arg_enprice * arg_rebate < 0 Then
  7331. rslt = 0
  7332. arg_msg = "产品:" + String(arg_mtrlcode)+" 单价错误"
  7333. Goto ext
  7334. End If
  7335. End If
  7336. If arg_rebate < 0 Then
  7337. arg_msg = '折扣错误,请检查'
  7338. rslt = 0
  7339. Goto ext
  7340. End If
  7341. If arg_taxrate < 0 Then
  7342. arg_msg = '不合理的税率'
  7343. rslt = 0
  7344. Goto ext
  7345. End If
  7346. End If
  7347. //检查物料id
  7348. Int li_statusflag,li_woodcodeflag,li_pcodeflag
  7349. Int li_isuse,li_ifpackpro
  7350. Decimal ld_capacity,ld_capacity_zj
  7351. s_mtrlcfg_expr s_pz[]
  7352. String ls_status_zj
  7353. Int li_status_check,li_woodcode_check,li_pcode_check
  7354. Select planprice,
  7355. statusflag,
  7356. capacity,
  7357. woodcodeflag,
  7358. pcodeflag,
  7359. status_check,
  7360. woodcode_check,
  7361. pcode_check,
  7362. capacity * capaparm,
  7363. isuse,
  7364. ifpackpro
  7365. Into :ld_planprice,
  7366. :li_statusflag,
  7367. :ld_capacity,
  7368. :li_woodcodeflag,
  7369. :li_pcodeflag,
  7370. :li_status_check,
  7371. :li_woodcode_check,
  7372. :li_pcode_check,
  7373. :ld_capacity,
  7374. :li_isuse,
  7375. :li_ifpackpro
  7376. From u_mtrldef
  7377. Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ;
  7378. If commit_transaction.SQLCode <> 0 Then
  7379. rslt = 0
  7380. arg_msg = "查询操作失败,产品计划价"
  7381. Goto ext
  7382. End If
  7383. If Kind = 0 And li_isuse = 2 Then
  7384. arg_msg = '行:'+String(arg_printid)+',物料是待停产物料,不能建立销售预测单'
  7385. rslt = 0
  7386. Goto ext
  7387. End If
  7388. String ls_pfcode
  7389. If li_ifpackpro = 5 And taskid > 0 Then
  7390. ls_pfcode = Trim(taskcode)+'.'+String(arg_printid)
  7391. Else
  7392. ls_pfcode = '[' + arg_status + ']' &
  7393. + '[' + arg_woodcode + ']' &
  7394. + '[' + arg_pcode + ']'
  7395. If Len(ls_pfcode) > 255 Then
  7396. ls_pfcode = Mid(ls_pfcode, 1, 251) + '...]'
  7397. End If
  7398. cnt = 0
  7399. Select count(*) Into :cnt
  7400. From u_mtrl_pf
  7401. Where pfcode = :ls_pfcode
  7402. mtrlid = :arg_mtrlid;
  7403. If sqlca.SQLCode <> 0 Then cnt = 0
  7404. If cnt = 0 Then
  7405. ls_pfcode = f_get_dft_pf(arg_mtrlid)
  7406. End If
  7407. End If
  7408. If li_statusflag = 2 Then
  7409. If arg_status = '' Then
  7410. arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_status + '字段使用组合配置,请输入'
  7411. rslt = 0
  7412. Goto ext
  7413. End If
  7414. ld_capacity = 0
  7415. f_checkpz(arg_status,s_pz[])
  7416. For ll_i = 1 To UpperBound(s_pz)
  7417. ls_status_zj = s_pz[ll_i].cfgname
  7418. Select capacity * capaparm
  7419. Into :ld_capacity_zj
  7420. From u_mtrl_configure
  7421. Where mtrlid = :arg_mtrlid
  7422. And Name = :ls_status_zj Using commit_transaction;
  7423. If commit_transaction.SQLCode <> 0 Then
  7424. rslt = 0
  7425. arg_msg = '行:'+String(arg_printid)+",物料查询子件 "+ls_status_zj+" 折算套数参数操作失败"
  7426. Goto ext
  7427. End If
  7428. ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
  7429. Next
  7430. ElseIf li_statusflag = 4 And li_status_check = 1 Then
  7431. If arg_status = '' Then
  7432. arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_status + '字段使用部件选配,请输入'
  7433. rslt = 0
  7434. Goto ext
  7435. End If
  7436. ElseIf li_statusflag = 1 Or li_statusflag = 0 Then
  7437. If f_check_status(1,arg_status) = 0 Then
  7438. rslt = 0
  7439. arg_msg = '行:'+String(arg_printid)+",物料查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
  7440. Goto ext
  7441. End If
  7442. End If
  7443. If li_woodcodeflag = 4 And li_woodcode_check = 1 Then
  7444. If arg_woodcode = '' Then
  7445. arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
  7446. rslt = 0
  7447. Goto ext
  7448. End If
  7449. ElseIf li_woodcodeflag = 1 Or li_woodcodeflag = 0 Then
  7450. If f_check_status(2,arg_woodcode) = 0 Then
  7451. rslt = 0
  7452. arg_msg = '行:'+String(arg_printid)+",物料查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
  7453. Goto ext
  7454. End If
  7455. End If
  7456. If li_pcodeflag = 4 And li_pcode_check = 1 Then
  7457. If arg_pcode = '' Then
  7458. arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_pcode + '字段使用部件选配,请输入'
  7459. rslt = 0
  7460. Goto ext
  7461. End If
  7462. ElseIf li_pcodeflag = 1 Or li_pcodeflag = 0 Then
  7463. If f_check_status(3,arg_pcode) = 0 Then
  7464. rslt = 0
  7465. arg_msg = '行:'+String(arg_printid)+",物料查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
  7466. Goto ext
  7467. End If
  7468. End If
  7469. If Kind > 0 And Kind <> 4 Then
  7470. ld_dftsaleprice = 0
  7471. f_get_defsaleprice(cusid,arg_mtrlid,arg_status,arg_pcode,arg_woodcode,moneyid,ld_dftsaleprice)
  7472. End If
  7473. If Kind = 1 Then
  7474. Int li_ifcheckprice,ll_pricelimittype
  7475. // IF uo_option_if_pricetype = 1 And arg_pricetype <> '' THEN
  7476. Select pricelimittype
  7477. Into :ll_pricelimittype
  7478. From u_saletype
  7479. Where typeid = :typeid Using commit_transaction;
  7480. If commit_transaction.SQLCode <> 0 Then
  7481. rslt = 0
  7482. arg_msg = '查询销售订单分类属性失败,'+commit_transaction.SQLErrText
  7483. Goto ext
  7484. End If
  7485. If arg_pricetype <> '' Then
  7486. Select ifcheckprice
  7487. Into :li_ifcheckprice
  7488. From u_pricetype
  7489. Where pricetype = :arg_pricetype Using commit_transaction;
  7490. If commit_transaction.SQLCode <> 0 Then
  7491. arg_msg = '查询价格分类是否属于赠送类型失败,'+commit_transaction.SQLErrText
  7492. rslt = 0
  7493. Goto ext
  7494. End If
  7495. Else
  7496. li_ifcheckprice = 1
  7497. End If
  7498. If li_ifcheckprice = 2 Then arg_rebate = 0
  7499. If li_ifcheckprice = 1 And ll_pricelimittype = 1 Then
  7500. If uo_option_checkprice_native = 1 Then
  7501. If uo_price.uof_check_price_saletask (typeid,cusid,arg_mtrlid,&
  7502. arg_mtrlcode,arg_status,arg_woodcode,arg_pcode,&
  7503. moneyid,scid,arg_quoteid,arg_quoteprintid,arg_enprice * mrate * arg_rebate,arg_qty,arg_msg) = 0 Then
  7504. rslt = 0
  7505. Goto ext
  7506. End If
  7507. Else
  7508. If uo_price.uof_check_price_saletask (typeid,cusid,arg_mtrlid,&
  7509. arg_mtrlcode,arg_status,arg_woodcode,arg_pcode,&
  7510. moneyid,scid,arg_quoteid,arg_quoteprintid,arg_enprice * arg_rebate,arg_qty,arg_msg) = 0 Then
  7511. rslt = 0
  7512. Goto ext
  7513. End If
  7514. End If
  7515. End If
  7516. // END IF
  7517. // Select stoppqty,stopsaleqty,isuse
  7518. // Into :ld_stoppqty,:ld_stopsaleqty,:li_isuse
  7519. // From u_mtrldef
  7520. // Where mtrlid = :arg_mtrlid Using commit_transaction;
  7521. // If commit_transaction.SQLCode <> 0 Then
  7522. // arg_msg = '查询:'+arg_mtrlcode+'资料属性失败,'+commit_transaction.SQLErrText
  7523. // rslt = 0
  7524. // Goto ext
  7525. // End If
  7526. //
  7527. // If li_isuse = 2 Then
  7528. // If arg_qty > ld_stoppqty - ld_stopsaleqty Then
  7529. // arg_msg = '产品:'+arg_mtrlcode+' 已待停产,待停产后可订数量为:'+String(ld_stoppqty,'#,##0.##########')+',待停产后已订数量为:'+String(ld_stopsaleqty,'#,##0.##########')+',不能再订:'+String(arg_qty,'#,##0.##########')
  7530. // rslt = 0
  7531. // Goto ext
  7532. // End If
  7533. // End If
  7534. End If
  7535. //使用价格策略的
  7536. if arg_poid > 0 then
  7537. //记录目标折扣
  7538. SELECT top 1 u_sale_price_mx.price
  7539. INTO :lde_list_price
  7540. FROM u_sale_price_list INNER JOIN
  7541. u_sale_price_mx ON
  7542. u_sale_price_list.pricelistid = u_sale_price_mx.pricelistid
  7543. WHERE (u_sale_price_list.dftflag = 1)
  7544. AND (u_sale_price_mx.flag = 1)
  7545. And (u_sale_price_mx.mtrlid = :arg_mtrlid)
  7546. Using commit_transaction;
  7547. IF commit_transaction.SQLCode <> 0 THEN
  7548. lde_list_price = 0
  7549. END IF
  7550. if lde_list_price > 0 then
  7551. lde_porebate = round(arg_enprice / lde_list_price, 5)
  7552. else
  7553. lde_porebate = 0
  7554. end if
  7555. end if
  7556. //FOR ls_i = 1 TO it_mxbt //合并重复项
  7557. // IF saletaskmx[ls_i].mtrlid = arg_mtrlid AND &
  7558. // saletaskmx[ls_i].status = arg_status AND &
  7559. // saletaskmx[ls_i].pcode = arg_pcode AND &
  7560. // saletaskmx[ls_i].mtrlcuscode = arg_mtrlcuscode AND &
  7561. // saletaskmx[ls_i].woodcode = arg_woodcode AND &
  7562. // saletaskmx[ls_i].outtype = arg_outtype THEN
  7563. //
  7564. // saletaskmx[ls_i].saleqty = saletaskmx[ls_i].saleqty+arg_qty
  7565. // rslt = 1
  7566. // GOTO ext
  7567. // END IF
  7568. //NEXT
  7569. //写入内容
  7570. it_mxbt++
  7571. saletaskmx[it_mxbt].dftsaleprice = ld_dftsaleprice
  7572. saletaskmx[it_mxbt].mtrlid = arg_mtrlid
  7573. saletaskmx[it_mxbt].saleqty = arg_qty
  7574. saletaskmx[it_mxbt].plprice = ld_planprice
  7575. saletaskmx[it_mxbt].dscrp = arg_dscrp
  7576. saletaskmx[it_mxbt].dscrp2 = arg_dscrp2
  7577. saletaskmx[it_mxbt].mtrlcode = arg_mtrlcode
  7578. saletaskmx[it_mxbt].status = arg_status
  7579. saletaskmx[it_mxbt].printid = arg_printid
  7580. saletaskmx[it_mxbt].woodcode = arg_woodcode
  7581. saletaskmx[it_mxbt].pcode = arg_pcode
  7582. saletaskmx[it_mxbt].mtrlcuscode = arg_mtrlcuscode
  7583. saletaskmx[it_mxbt].enprice = arg_enprice
  7584. saletaskmx[it_mxbt].rebate = arg_rebate
  7585. If uo_option_price_rmb = 0 Then
  7586. saletaskmx[it_mxbt].fprice = arg_enprice * mrate
  7587. If mrate = 0 Then
  7588. saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_rebate
  7589. Else
  7590. saletaskmx[it_mxbt].enacprice = saletaskmx[it_mxbt].fprice * arg_rebate / mrate
  7591. End If
  7592. saletaskmx[it_mxbt].acprice = saletaskmx[it_mxbt].fprice * arg_rebate
  7593. Else
  7594. saletaskmx[it_mxbt].fprice = Round(arg_enprice * mrate,2)
  7595. If mrate = 0 Then
  7596. saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_rebate,2)
  7597. Else
  7598. saletaskmx[it_mxbt].enacprice = Round(saletaskmx[it_mxbt].fprice * arg_rebate / mrate,2)
  7599. End If
  7600. saletaskmx[it_mxbt].acprice = Round(saletaskmx[it_mxbt].fprice * arg_rebate,2)
  7601. End If
  7602. saletaskmx[it_mxbt].scidprice = arg_scidprice
  7603. saletaskmx[it_mxbt].outtype = arg_outtype
  7604. saletaskmx[it_mxbt].requiredate = arg_requiredate
  7605. saletaskmx[it_mxbt].pfcode = ls_pfcode
  7606. saletaskmx[it_mxbt].quoteid = arg_quoteid
  7607. saletaskmx[it_mxbt].quotecode = arg_quotecode
  7608. saletaskmx[it_mxbt].quoteprintid = arg_quoteprintid
  7609. saletaskmx[it_mxbt].pricetype = arg_pricetype
  7610. saletaskmx[it_mxbt].capacity = ld_capacity * arg_qty
  7611. saletaskmx[it_mxbt].nprice = arg_nprice
  7612. saletaskmx[it_mxbt].poid = arg_poid //使用到的价格指令ID
  7613. saletaskmx[it_mxbt].dscrp_text = arg_dscrp_text
  7614. saletaskmx[it_mxbt].taxrate = arg_taxrate
  7615. saletaskmx[it_mxbt].addqty = arg_addqty
  7616. saletaskmx[it_mxbt].priceformula = arg_priceformula
  7617. saletaskmx[it_mxbt].sampleid = arg_sampleid
  7618. If uo_option_m_msttake = 1 Then //使用多币种
  7619. msttakeamt = msttakeamt + Round(arg_enprice * arg_qty * arg_rebate,2)
  7620. Else // 系统不使用多币种,转换为人民币
  7621. msttakeamt = msttakeamt + Round(arg_enprice * mrate * arg_qty * arg_rebate,2)
  7622. End If
  7623. saletaskmx[it_mxbt].net_weight = arg_net_weight
  7624. saletaskmx[it_mxbt].gross_weight = arg_gross_weight
  7625. saletaskmx[it_mxbt].cubage = arg_cubage
  7626. saletaskmx[it_mxbt].fjcnt = arg_fjcnt
  7627. saletaskmx[it_mxbt].fjstr = arg_fjstr
  7628. saletaskmx[it_mxbt].porebate = lde_porebate
  7629. ext:
  7630. If rslt = 0 Then p_clearmx()
  7631. Destroy uo_price
  7632. Return rslt
  7633. end function
  7634. private function integer uof_p_check_packprobom (ref string arg_msg);Int rslt = 1
  7635. Long ll_i
  7636. String ls_mtrlcode,ls_msg
  7637. Long ll_mtrlid
  7638. Long cnt
  7639. Int li_ifpackpro
  7640. IF uo_option_saletask_packprobom_check = -1000 THEN
  7641. arg_msg = '选项:[399]销售订单审核检查包件产品选项,读取初始默认值失败,操作取消!'
  7642. rslt = 0
  7643. GOTO ext
  7644. END IF
  7645. IF uo_option_saletask_packprobom_check = 0 THEN
  7646. rslt = 1
  7647. GOTO ext
  7648. END IF
  7649. FOR ll_i = 1 To it_mxbt
  7650. ll_mtrlid = saletaskmx[ll_i].mtrlid
  7651. ls_mtrlcode = saletaskmx[ll_i].mtrlcode
  7652. SELECT ifpackpro
  7653. INTO :li_ifpackpro
  7654. FROM u_mtrldef
  7655. Where mtrlid = :ll_mtrlid;
  7656. IF sqlca.SQLCode <> 0 THEN
  7657. arg_msg = '物料:'+ls_mtrlcode+'查询信息失败,'+sqlca.SQLErrText
  7658. rslt = 0
  7659. GOTO ext
  7660. END IF
  7661. IF li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
  7662. cnt = 0
  7663. SELECT count(*) INTO :cnt
  7664. FROM u_Mtrl_pf
  7665. WHERE u_Mtrl_pf.mtrlid = :ll_mtrlid
  7666. AND u_Mtrl_pf.flag = 0
  7667. And u_Mtrl_pf.ifdft = 1;
  7668. IF sqlca.SQLCode <> 0 THEN
  7669. ls_msg += '查询产品:'+ls_mtrlcode + ',默认清单是否审核失败,'+sqlca.SQLErrText+' ~r~n '
  7670. CONTINUE
  7671. END IF
  7672. IF cnt > 0 THEN
  7673. ls_msg += '产品:'+ls_mtrlcode + ',默认清单未审核,请检查'+' ~r~n '
  7674. CONTINUE
  7675. END IF
  7676. cnt = 0
  7677. SELECT count(*) INTO :cnt
  7678. FROM u_PrdPF,u_Mtrl_pf,u_mtrldef
  7679. WHERE u_Mtrl_pf.mtrlid = :ll_mtrlid
  7680. AND u_PrdPF.pfcode = u_Mtrl_pf.pfcode
  7681. AND u_PrdPF.mtrlid = u_Mtrl_pf.mtrlid
  7682. AND u_PrdPF.sonmtrlid = u_mtrldef.mtrlid
  7683. AND u_Mtrl_pf.ifdft = 1
  7684. And u_mtrldef.ifpack > 0;
  7685. IF sqlca.SQLCode <> 0 THEN
  7686. ls_msg += '查询产品:'+ls_mtrlcode + ',默认清单是否含有包件失败,'+sqlca.SQLErrText+' ~r~n '
  7687. CONTINUE
  7688. END IF
  7689. IF cnt = 0 THEN
  7690. ls_msg += '产品:'+ls_mtrlcode + ',默认清单未含有包件,请检查'+' ~r~n '
  7691. CONTINUE
  7692. END IF
  7693. END IF
  7694. NEXT
  7695. IF ls_msg <> '' THEN
  7696. arg_msg = ls_msg
  7697. rslt = 0
  7698. GOTO ext
  7699. END IF
  7700. ext:
  7701. RETURN rslt
  7702. end function
  7703. 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)
  7704. //0 fail 1 SUCCESS
  7705. Int rslt = 1
  7706. arg_reminddscrp = Trim(arg_reminddscrp)
  7707. IF it_updatebegin Or it_newbegin THEN
  7708. rslt = 0
  7709. arG_MSG = "编辑状态下不可用"
  7710. GOTO ext
  7711. END IF
  7712. IF arg_reminddscrp = '' THEN
  7713. rslt = 0
  7714. arG_MSG = "要添加内容为空,操作取消"
  7715. GOTO ext
  7716. END IF
  7717. IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
  7718. rslt = 0
  7719. GOTO ext
  7720. END IF
  7721. IF status = 0 THEN
  7722. rslt = 0
  7723. arG_MSG = "待销售审核状态下不可用"
  7724. GOTO ext
  7725. END IF
  7726. UPDATE u_saletask
  7727. SET reminddscrp = reminddscrp + :arg_reminddscrp
  7728. WHERE u_saletask.taskid = :arg_taskid
  7729. And scid = :arg_scid Using commit_transaction ;
  7730. IF commit_transaction.SQLCode <> 0 THEN
  7731. rslt = 0
  7732. arG_MSG = "因网络或其它原因导致修改销售订单相关号操作失败"+"~n"+ commit_transaction.SQLErrText
  7733. GOTO ext
  7734. END IF
  7735. it_newbegin = False
  7736. it_updatebegin = False
  7737. ext:
  7738. IF rslt = 0 THEN
  7739. ROLLBACK Using commit_transaction;
  7740. ELSEIF arg_ifcommit THEN
  7741. COMMIT Using commit_transaction;
  7742. END IF
  7743. p_reset()
  7744. Return (rslt)
  7745. end function
  7746. public function integer priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  7747. Decimal ld_notsecaudit_amt,ld_notsecaudit_enamt,ld_notsecaudit_billamt
  7748. Decimal arg_cusbalcamt,arg_cusmaxamt,arg_outrep_balcamt,arg_outrep_maxamt
  7749. Int lst
  7750. Decimal ld_maxamt_user
  7751. If uo_option_saletask_affirm_produce = -1000 Then
  7752. arg_msg = '选项:[413]销售订单财务确认后排产,读取初始默认值失败,操作取消!'
  7753. rslt = 0
  7754. Goto ext
  7755. End If
  7756. If p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
  7757. rslt = 0
  7758. Goto ext
  7759. End If
  7760. If priceflag = 1 Then
  7761. rslt = 0
  7762. arg_msg = '单据已确认,不能再确认'
  7763. Goto ext
  7764. End If
  7765. If uo_option_saletask_affirm_produce > 0 And Status <> 1 Then
  7766. rslt = 0
  7767. arg_msg = '选项:[413]销售订单财务确认后排产 开启后,单据只能在进行后才能财务确认'
  7768. Goto ext
  7769. End If
  7770. If uo_option_saletask_affirm_produce = 2 Then
  7771. //检查信用额
  7772. Select sum(round(u_outwaremx.qty * u_outwaremx.price,2)),
  7773. sum(round(u_outwaremx.qty * u_outwaremx.enprice * u_outwaremx.rebate,2))
  7774. Into :ld_notsecaudit_amt,:ld_notsecaudit_enamt
  7775. From u_outware,u_outwaremx
  7776. Where u_outware.scid = u_outwaremx.scid
  7777. And u_outware.outwareid = u_outwaremx.outwareid
  7778. And u_outware.billtype = 1
  7779. And u_outware.secflag = 0
  7780. And u_outware.cusid = :cusid
  7781. And (:sys_option_scid_msttake_mstpay = 1 And u_outware.scid = :scid Or :sys_option_scid_msttake_mstpay = 0 )
  7782. And (:sys_option_m_msttake = 1 And u_outware.relint_2 = :moneyid Or :sys_option_m_msttake = 0);
  7783. If sqlca.SQLCode <> 0 Then
  7784. ld_notsecaudit_amt = 0
  7785. ld_notsecaudit_enamt = 0
  7786. End If
  7787. If IsNull(ld_notsecaudit_amt) Then ld_notsecaudit_amt = 0
  7788. If IsNull(ld_notsecaudit_enamt) Then ld_notsecaudit_enamt = 0
  7789. If sys_option_m_msttake = 1 Then
  7790. ld_notsecaudit_billamt = ld_notsecaudit_enamt
  7791. Else
  7792. ld_notsecaudit_billamt = ld_notsecaudit_amt
  7793. End If
  7794. Select maxamt
  7795. Into :ld_maxamt_user
  7796. From u_user
  7797. Where empid = :sys_empid;
  7798. If sqlca.SQLCode <> 0 Then
  7799. rslt = 0
  7800. arg_msg = '查询当前操作员信用额失败,'+sqlca.SQLErrText
  7801. Goto ext
  7802. End If
  7803. lst = f_getcusrepamt_info(cusid,scid,moneyid,arg_cusbalcamt,arg_cusmaxamt,arg_outrep_balcamt,arg_outrep_maxamt)
  7804. If lst <= 0 Then
  7805. rslt = 0
  7806. arg_msg = '查询信用额及欠款失败'
  7807. Goto ext
  7808. Else
  7809. If arg_cusbalcamt + ld_notsecaudit_billamt + msttakeamt > arg_cusmaxamt + ld_maxamt_user Then
  7810. rslt = 0
  7811. 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#') + ',客户欠款超信用额,不能财务确认'
  7812. Goto ext
  7813. End If
  7814. End If
  7815. End If
  7816. Update u_saletask
  7817. Set pricerep = :publ_operator,
  7818. pricedate = getdate(),
  7819. priceflag = 1
  7820. Where taskid = :arg_taskid
  7821. And priceflag = 0
  7822. And scid = :arg_scid Using commit_transaction;
  7823. If commit_transaction.SQLCode <> 0 Then
  7824. rslt = 0
  7825. arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
  7826. Goto ext
  7827. ElseIf commit_transaction.SQLNRows = 0 Then
  7828. rslt = 0
  7829. arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  7830. Goto ext
  7831. End If
  7832. priceflag = 1
  7833. ext:
  7834. If rslt = 0 Then
  7835. Rollback Using commit_transaction;
  7836. ElseIf rslt = 1 And arg_ifcommit Then
  7837. Commit Using commit_transaction;
  7838. End If
  7839. Return rslt
  7840. end function
  7841. public function integer c_priceaudit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  7842. datetime null_dt
  7843. setnull(null_dt)
  7844. If p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
  7845. rslt = 0
  7846. Goto ext
  7847. End If
  7848. If priceflag = 0 Then
  7849. rslt = 0
  7850. arg_msg = '单据未确认,不能反确认'
  7851. Goto ext
  7852. End If
  7853. Update u_saletask
  7854. Set pricerep = '',
  7855. pricedate = :null_dt,
  7856. priceflag = 0
  7857. Where taskid = :arg_taskid
  7858. And priceflag = 1
  7859. And scid = :arg_scid Using commit_transaction;
  7860. If commit_transaction.SQLCode <> 0 Then
  7861. rslt = 0
  7862. arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
  7863. Goto ext
  7864. ElseIf commit_transaction.SQLNRows = 0 Then
  7865. rslt = 0
  7866. arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  7867. Goto ext
  7868. End If
  7869. priceflag = 0
  7870. ext:
  7871. If rslt = 0 Then
  7872. Rollback Using commit_transaction;
  7873. ElseIf rslt = 1 And arg_ifcommit Then
  7874. Commit Using commit_transaction;
  7875. End If
  7876. Return rslt
  7877. end function
  7878. public function integer uof_add_mx (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
  7879. Long i
  7880. String ls_mtrlcuscode
  7881. Long ll_printid
  7882. IF uo_option_taskplancode_auto = -1000 THEN
  7883. arg_msg = '选项:[048]销售订单生产批号类型,读取初始默认值失败,操作取消!'
  7884. rslt = 0
  7885. GOTO ext
  7886. END IF
  7887. IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
  7888. rslt = 0
  7889. GOTO ext
  7890. END IF
  7891. IF priceflag = 1 THEN
  7892. rslt = 0
  7893. arg_msg = '单据已确认,不能补充明细'
  7894. GOTO ext
  7895. END IF
  7896. IF status <> 0 THEN
  7897. rslt = 0
  7898. arg_msg = '单据已审核,不能补充明细'
  7899. GOTO ext
  7900. END IF
  7901. SELECT max(printid)
  7902. INTO :ll_printid
  7903. FROM u_saletaskmx
  7904. WHERE scid = :arg_scid
  7905. And taskid = :arg_taskid Using commit_transaction;
  7906. IF commit_transaction.SQLCode <> 0 THEN
  7907. rslt = 0
  7908. arg_msg = "查询单据明细信息失败"+"~n"+commit_transaction.SQLErrText
  7909. GOTO ext
  7910. END IF
  7911. IF IsNull(ll_printid) THEN ll_printid = 0
  7912. FOR i = 1 To it_mxbt
  7913. ls_mtrlcuscode = ''
  7914. IF Kind = 4 THEN
  7915. ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
  7916. ELSE
  7917. CHOOSE CASE uo_option_taskplancode_auto
  7918. CASE 1
  7919. ls_mtrlcuscode = saletaskmx[i].mtrlcuscode
  7920. CASE 2
  7921. ls_mtrlcuscode = taskcode
  7922. CASE 3
  7923. ls_mtrlcuscode = relcode
  7924. CASE 4
  7925. ls_mtrlcuscode = taskcode + '.' + String(i,'000')
  7926. CASE 5
  7927. ls_mtrlcuscode = ''
  7928. CASE ELSE
  7929. arg_msg = '错误的生产批号,管理员请先设定好订单批号模式'
  7930. rslt = 0
  7931. GOTO ext
  7932. END CHOOSE
  7933. END IF
  7934. ll_printid++
  7935. INSERT INTO u_saletaskmx
  7936. ( scid,
  7937. taskid,
  7938. mtrlid,
  7939. saleqty,
  7940. price,
  7941. plprice,
  7942. mxdscrp,
  7943. mxdscrp2,
  7944. fprice,
  7945. rebate,
  7946. status,
  7947. printid,
  7948. woodcode,
  7949. pcode,
  7950. mtrlcuscode,
  7951. enprice,
  7952. outtypestr,
  7953. dftsaleprice,
  7954. requiredate,
  7955. pfcode,
  7956. scidprice,
  7957. quoteid,
  7958. quotecode,
  7959. quoteprintid,
  7960. pricetype,
  7961. capacity,
  7962. nprice,
  7963. poid,
  7964. taxrate,
  7965. addqty,
  7966. priceformula,
  7967. sampleid,
  7968. enacprice,
  7969. net_weight,
  7970. gross_weight,
  7971. cubage,
  7972. fjcnt,
  7973. fjstr,
  7974. porebate)
  7975. VALUES (:arg_scid,
  7976. :arg_taskid,
  7977. :saletaskmx[i].mtrlid,
  7978. :saletaskmx[i].saleqty,
  7979. :saletaskmx[i].acprice,
  7980. :saletaskmx[i].plprice,
  7981. :saletaskmx[i].dscrp,
  7982. :saletaskmx[i].dscrp2,
  7983. :saletaskmx[i].fprice,
  7984. :saletaskmx[i].rebate,
  7985. :saletaskmx[i].status,
  7986. :ll_printid,
  7987. :saletaskmx[i].woodcode,
  7988. :saletaskmx[i].pcode,
  7989. :ls_mtrlcuscode,
  7990. :saletaskmx[i].enprice,
  7991. :saletaskmx[i].outtype,
  7992. :saletaskmx[i].dftsaleprice,
  7993. :saletaskmx[i].requiredate,
  7994. :saletaskmx[i].pfcode,
  7995. :saletaskmx[i].scidprice,
  7996. :saletaskmx[i].quoteid,
  7997. :saletaskmx[i].quotecode,
  7998. :saletaskmx[i].quoteprintid,
  7999. :saletaskmx[i].pricetype,
  8000. :saletaskmx[i].capacity,
  8001. :saletaskmx[i].nprice,
  8002. :saletaskmx[i].poid,
  8003. :saletaskmx[i].taxrate,
  8004. :saletaskmx[i].addqty,
  8005. :saletaskmx[i].priceformula,
  8006. :saletaskmx[i].sampleid,
  8007. :saletaskmx[i].enacprice,
  8008. :saletaskmx[i].net_weight,
  8009. :saletaskmx[i].gross_weight,
  8010. :saletaskmx[i].cubage,
  8011. :saletaskmx[i].fjcnt,
  8012. :saletaskmx[i].fjstr,
  8013. :saletaskmx[i].porebate) Using commit_transaction;
  8014. IF commit_transaction.SQLCode <> 0 THEN
  8015. rslt = 0
  8016. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  8017. GOTO ext
  8018. END IF
  8019. NEXT
  8020. it_newbegin = False
  8021. it_updatebegin = False
  8022. ext:
  8023. IF rslt = 0 THEN
  8024. ROLLBACK Using commit_transaction;
  8025. p_clearmx()
  8026. msttakeamt = 0
  8027. ELSEIF arg_ifcommit And rslt = 1 THEN
  8028. COMMIT Using commit_transaction;
  8029. END IF
  8030. RETURN rslt
  8031. end function
  8032. on uo_saletask.create
  8033. call super::create
  8034. TriggerEvent( this, "constructor" )
  8035. end on
  8036. on uo_saletask.destroy
  8037. TriggerEvent( this, "destructor" )
  8038. call super::destroy
  8039. end on
  8040. event constructor;String arg_msg
  8041. String str_optionvalue
  8042. str_optionvalue = ''
  8043. f_get_sys_option_value('029',str_optionvalue,arg_msg)
  8044. uo_option_change_status = str_optionvalue
  8045. str_optionvalue = ''
  8046. f_get_sys_option_value('027',str_optionvalue,arg_msg)
  8047. uo_option_change_woodcode = str_optionvalue
  8048. str_optionvalue = ''
  8049. f_get_sys_option_value('028',str_optionvalue,arg_msg)
  8050. uo_option_change_pcode = str_optionvalue
  8051. str_optionvalue = ''
  8052. f_get_sys_option_value('045',str_optionvalue,arg_msg)
  8053. uo_option_m_msttake = Long(str_optionvalue)
  8054. str_optionvalue = ''
  8055. f_get_sys_option_value('035',str_optionvalue,arg_msg)
  8056. uo_option_saletask_secaudit = Long(str_optionvalue)
  8057. str_optionvalue = ''
  8058. f_get_sys_option_value('088',str_optionvalue,arg_msg)
  8059. uo_option_saletask_fore_secaudit = Long(str_optionvalue)
  8060. str_optionvalue = ''
  8061. f_get_sys_option_value('043',str_optionvalue,arg_msg)
  8062. uo_option_if_oa_saletask = Long(str_optionvalue)
  8063. str_optionvalue = ''
  8064. f_get_sys_option_value('227',str_optionvalue,arg_msg)
  8065. uo_option_if_oa_saletask_fore = Long(str_optionvalue)
  8066. str_optionvalue = ''
  8067. f_get_sys_option_value('048',str_optionvalue,arg_msg)
  8068. uo_option_taskplancode_auto = Long(str_optionvalue)
  8069. str_optionvalue = ''
  8070. f_get_sys_option_value('113',str_optionvalue,arg_msg)
  8071. uo_option_autocreate_buy_cp = Long(str_optionvalue)
  8072. str_optionvalue = ''
  8073. f_get_sys_option_value('051',str_optionvalue,arg_msg)
  8074. uo_option_taskaudit_dprice = Long(str_optionvalue)
  8075. str_optionvalue = ''
  8076. f_get_sys_option_value('039',str_optionvalue,arg_msg)
  8077. uo_option_saletask_addware = Long(str_optionvalue)
  8078. str_optionvalue = ''
  8079. f_get_sys_option_value('044',str_optionvalue,arg_msg)
  8080. uo_option_if_msg = Long(str_optionvalue)
  8081. str_optionvalue = ''
  8082. f_get_sys_option_value('201',str_optionvalue,arg_msg)
  8083. uo_option_saletask_set_planprice = Long(str_optionvalue)
  8084. str_optionvalue = ''
  8085. f_get_sys_option_value('056',str_optionvalue,arg_msg)
  8086. uo_option_checkprice_native = Long(str_optionvalue)
  8087. str_optionvalue = ''
  8088. f_get_sys_option_value('142',str_optionvalue,arg_msg)
  8089. uo_option_inout_type = Long(str_optionvalue)
  8090. str_optionvalue = ''
  8091. f_get_sys_option_value('154',str_optionvalue,arg_msg)
  8092. uo_option_if_pricetype = Long(str_optionvalue)
  8093. f_get_sys_option_value('200',str_optionvalue,arg_msg)
  8094. uo_option_if_saleout = Long(str_optionvalue)
  8095. f_get_sys_option_value('200',str_optionvalue,arg_msg)
  8096. uo_option_if_saleout = Long(str_optionvalue)
  8097. f_get_sys_option_value('291',str_optionvalue,arg_msg)
  8098. uo_option_disuse_saletask = Long(str_optionvalue)
  8099. f_get_sys_option_value('300',str_optionvalue,arg_msg)
  8100. uo_option_sale_ifuse_negativeprice = Long(str_optionvalue)
  8101. f_get_sys_option_value('301',str_optionvalue,arg_msg)
  8102. uo_option_saletask_ifuse_typebillcode = Long(str_optionvalue)
  8103. f_get_sys_option_value('238',str_optionvalue,arg_msg)
  8104. uo_option_price_rmb = Long(str_optionvalue)
  8105. f_get_sys_option_value('335',str_optionvalue,arg_msg)
  8106. uo_option_dd_allto_pqty = Long(str_optionvalue)
  8107. f_get_sys_option_value('364',str_optionvalue,arg_msg)
  8108. uo_option_saletask_rebate_check = Long(str_optionvalue)
  8109. f_get_sys_option_value('399',str_optionvalue,arg_msg)
  8110. uo_option_saletask_packprobom_check = Long(str_optionvalue)
  8111. f_get_sys_option_value('402',str_optionvalue,arg_msg)
  8112. uo_option_saletask_fore_addware = Long(str_optionvalue)
  8113. f_get_sys_option_value('404',str_optionvalue,arg_msg)
  8114. uo_option_saletask_stopqty_type = Long(str_optionvalue)
  8115. f_get_sys_option_value('413',str_optionvalue,arg_msg)
  8116. uo_option_saletask_affirm_produce = Long(str_optionvalue)
  8117. end event