1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665 |
- $PBExportHeader$uo_buytask.sru
- forward
- global type uo_buytask from nonvisualobject
- end type
- end forward
- global type uo_buytask from nonvisualobject
- end type
- global uo_buytask uo_buytask
- type variables
- PUBLIC PROTECTEDWRITE Long scid = 0
- PUBLIC PROTECTEDWRITE Long TaskID = 0
- PUBLIC PROTECTEDWRITE String TaskCode = ''
- PUBLIC PROTECTEDWRITE DateTime opdate
- PUBLIC PROTECTEDWRITE String operator = ''
- PUBLIC PROTECTEDWRITE Int status = 0
- PUBLIC PROTECTEDWRITE DateTime Accomplishdate
- PUBLIC PROTECTEDWRITE String Permit_emp = ''
- PUBLIC PROTECTEDWRITE Long ctmint
- Long orderid = 0
- Int Kind = 0
- Long sptID = 0
- String Assign_emp
- DateTime Requiredate
- String dscrp
- String relcode
- String train
- Long banktypeid
- String reason
- Int billtype
- String firpermitemp
- DateTime firpermitdate
- Decimal billamt
- decimal mrate
- long moneyid
- string sptsccode
- Long audit_buildtype
- int uo_option_requestbuy_hz
- int uo_option_if_oa_buytask,uo_option_if_oa_buytask_cp,uo_option_if_oa_buytask_dept
- int uo_option_buytask_cl_secaudit,uo_option_buytask_cp_secaudit,uo_option_buytask_dept_secaudit
- int uo_option_ifovertask
- string uo_option_change_status,uo_option_change_woodcode,uo_option_change_pcode
- int uo_option_buyprice_buytask_notlimit
- int uo_option_unit_dec
- int uo_option_disuse_buytask
- int uo_option_update_rqmtrlqty_buy
- Transaction commit_transaction
- PRIVATE:
- s_buytaskmx buytaskmx[] //明细结构数组
- Long it_MXBT = 0 //明细结构数组末指针
- Boolean IT_NEWBEGIN = TRUE //新建标志
- Boolean IT_UPDATEBEGIN = FALSE//修改标志
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer getinfo (integer arg_scid, long arg_taskid, ref string arg_msg)
- public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer tempstoptask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer firstpermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer lastpermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer checkmxmpl (long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg)
- public function integer trycmplbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer newbegin (long arg_scid, ref string arg_msg)
- public function integer stopmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_commit)
- public function integer secpermit (long arg_scid, long arg_taskid, ref string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancelsecpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopqty (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, decimal arg_rebuyqty, string arg_stopreason, ref string arg_msg, boolean arg_commit)
- public function integer ue_splitqty (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_splitqty, datetime arg_newdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmx_sptcheckqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishmx (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_disuse (long arg_scid, long arg_taskid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_buyermemo (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_buyermemo, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_update_feedback (long arg_scid, long arg_taskid, s_buytaskmx_feedback_ljfieb arg_s_mx[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_requiredate (long arg_scid, long arg_taskid, long arg_printid, datetime arg_requiredate, string arg_reason, ref string arg_msg, boolean arg_ifcommit)
- public function integer cstopbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_uqty, decimal arg_enprice, decimal arg_rebate, decimal arg_planprice, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_status, string arg_unit, decimal arg_rate, string arg_woodcode, string arg_pcode, long arg_requestbuyid, long arg_rqmxprintid, long arg_wrkgrpid, long arg_taskmxprintid, decimal arg_tax, string arg_plancode, string arg_jgdscrp)
- public function integer stopbuytask (long arg_scid, long arg_taskid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer mod_price (long arg_scid, long arg_taskid, long arg_printid, decimal arg_enprice, decimal arg_rebate, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_requiredate_chk (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg)
- public function integer uof_update_billamt (long arg_scid, long arg_taskid, boolean arg_ifcommit, ref string arg_msg)
- public function integer addmxcmpl (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (s_buytaskmx s_mx, ref string arg_msg)
- end prototypes
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- taskid = 0
- taskcode = ''
- operator = ''
- relcode = ''
- status = 0
- train = ''
- banktypeid = 0
- billamt = 0
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt=0
- billamt = 0
- RETURN 1
- end function
- public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long cnt = 0,i,ll_i
- DateTime server_datetime
- String ls_sccode
- Long ll_taskid
- Long ll_fp_array,ll_fp
- IF uo_option_disuse_buytask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[293]启用采购订单废弃单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- s_mtrlware_assign_plan s_fp_plan
- uo_mtrlware_assign uo_fp_plan
- uo_fp_plan = Create uo_mtrlware_assign
- uo_fp_plan.commit_transaction = commit_transaction
- datastore ds_fp_plan_del
- ds_fp_plan_del = Create datastore
- ds_fp_plan_del.DataObject = 'ds_fp_plan_plankind_del'
- ds_fp_plan_del.SetTransObject(commit_transaction)
- datastore ds_pfpack
- ds_pfpack = Create datastore
- ds_pfpack.DataObject = 'ds_pf_pack'
- ds_pfpack.SetTransObject(commit_transaction)
- s_mtrlcfg_expr s_pz[],s_pz_null[]
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(assign_emp) THEN assign_emp = ''
- IF IsNull(train) THEN train = ''
- IF IsNull(reason) THEN reason = ''
- IF IsNull(banktypeid) THEN banktypeid = 0
- IF IsNull(Kind) THEN Kind = 0
- IF IsNull(billamt) THEN billamt = 0
- IF IsNull(arg_operator) THEN arg_operator = ''
- IF IsNull(mrate) THEN mrate = 0
- IF IsNull(moneyid) THEN moneyid = 0
- if isnull(sptsccode) then sptsccode = ''
- IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
- operator = arg_operator
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- IF Trim(assign_emp) = '' THEN
- rslt = 0
- arg_msg = "请输入订单负责人"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_spt
- Where sptid = :sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,供应商资料"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "供应商未定义或错误"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :moneyid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询币种失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '币种资料不存在'
- rslt = 0
- GOTO ext
- END IF
- IF mrate = 0 THEN
- arg_msg = '币种汇率错误'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_banktype
- Where banktypeid = :banktypeid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询结算方式失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '结算方式不存在'
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF f_check_inoutdate(0,requiredate,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arg_msg = "没有正确采购订单明细内容"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :operator Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- opdate = server_datetime //填写单据建立时间(最近修改时间)
- IF taskid > 0 And uo_option_disuse_buytask = 1 THEN
- IF uof_disuse(scid,taskid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //检查供应商月订货金额限制
- Long ll_bgmth, ll_billmth
- Decimal lde_maxamt, lde_billamt
- SELECT bgmth, maxamt
- INTO :ll_bgmth, :lde_maxamt
- FROM u_spt_maxamt
- WHERE sptid = :sptid
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- ll_bgmth = 0
- lde_maxamt = 0
- END IF
- IF lde_maxamt > 0 THEN
- ll_billmth = Long(String(requiredate, 'yyyymm'))
- IF ll_billmth >= ll_bgmth THEN
- SELECT sum(Round(enprice * uqty * rebate,2))
- INTO :lde_billamt
- FROM u_buytaskmx INNER join u_buytask
- on u_buytaskmx.scid = u_buytask.scid
- AND u_buytaskmx.taskid = u_buytask.taskid
- WHERE (CONVERT(char(7), u_buytask.requiredate, 120) = CONVERT(char(7), :requiredate, 120))
- AND u_buytask.sptid = :sptid
- AND convert(char(7), u_buytask.taskid) + ' ' + convert(char(7), u_buytask.scid) <> convert(char(7), :taskid) + ' ' + convert(char(7), :scid)
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询订单月已订货金额失败!"
- GOTO ext
- END IF
- IF IsNull(lde_billamt) THEN lde_billamt = 0
- IF lde_maxamt < lde_billamt + billamt THEN
- rslt = 0
- arg_msg = "供应商月订货金额限制:"+String(lde_maxamt,'#,##0.00')+",当月已订货金额:"+String(lde_billamt,'#,##0.00')+",不能再订货:"+String(billamt, '#,##0.00')+"!"
- GOTO ext
- END IF
- END IF
- END IF
- //billamt = billamt + Round(arg_enprice * arg_uqty * arg_rebate,2)
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF taskid = 0 THEN //新建
- ll_taskid = f_sys_scidentity(scid,"u_buytask","taskid",arg_msg,True,id_sqlca) //数据commit事务)
- IF ll_taskid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF billtype = 0 THEN
- taskcode = getid(scid,ls_sccode + 'BG',Date(server_datetime),False,commit_transaction)
- ELSEIF billtype = 1 THEN
- taskcode = getid(scid,ls_sccode + 'BH',Date(server_datetime),False,commit_transaction)
- ELSEIF billtype = 2 THEN
- taskcode = getid(scid,ls_sccode + 'BA',Date(server_datetime),False,commit_transaction)
- END IF
-
- IF taskcode = "err" THEN
- taskcode = ''
- rslt = 0
- arg_msg = "无法获取采购订单编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_buytask
- ( scid,
- taskid,
- taskcode,
- kind,
- sptid,
- requiredate,
- status,
- opemp,
- assign_emp,
- dscrp,
- opdate,
- orderid,
- relcode,
- train,
- banktypeid,
- reason,
- billtype,
- billamt,
- moneyid,
- mrate,
- sptsccode)
- VALUES ( :scid,
- :ll_taskid,
- :taskcode,
- :Kind,
- :sptid,
- :requiredate,
- :status,
- :operator,
- :assign_emp,
- :dscrp,
- :opdate,
- :orderid,
- :relcode,
- :train,
- :banktypeid,
- :reason,
- :billtype,
- :billamt,
- :moneyid,
- :mrate,
- :sptsccode) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_buytaskmx
- ( scid,
- qty,
- price,
- mtrlid,
- taskid,
- dscrp,
- dscrp2,
- printid,
- fprice,
- rebate,
- requiredate,
- orderid,
- storageid,
- status,
- iforder,
- sptmtrlname,
- unit,
- rate,
- uqty,
- uprice,
- woodcode,
- pcode,
- rqmxprintid,
- requestbuyid,
- relrqbuycode,
- wrkgrpid,
- taskmxprintid,
- enprice,
- tax,
- plancode,
- buybargainid,
- buybargainprintid,
- buybargaincode,
- jgdscrp,
- lastcode,
- lastdate,
- lastprice)
- VALUES (:scid,
- :buytaskmx[i].qty,
- :buytaskmx[i].acprice,
- :buytaskmx[i].mtrlid,
- :ll_taskid,
- :buytaskmx[i].dscrp ,
- :buytaskmx[i].dscrp2 ,
- :buytaskmx[i].printid,
- :buytaskmx[i].fprice ,
- :buytaskmx[i].rebate,
- :buytaskmx[i].requiredate,
- :buytaskmx[i].orderid,
- :buytaskmx[i].storageid,
- :buytaskmx[i].status,
- :buytaskmx[i].iforder,
- :buytaskmx[i].sptmtrlname,
- :buytaskmx[i].unit,
- :buytaskmx[i].rate,
- :buytaskmx[i].uqty,
- :buytaskmx[i].uprice,
- :buytaskmx[i].woodcode,
- :buytaskmx[i].pcode,
- :buytaskmx[i].rqmxprintid,
- :buytaskmx[i].requestbuyid,
- :buytaskmx[i].relrqbuycode,
- :buytaskmx[i].wrkgrpid,
- :buytaskmx[i].taskmxprintid,
- :buytaskmx[i].enprice,
- :buytaskmx[i].tax,
- :buytaskmx[i].plancode,
- :buytaskmx[i].buybargainid,
- :buytaskmx[i].buybargainprintid,
- :buytaskmx[i].buybargaincode,
- :buytaskmx[i].jgdscrp,
- :buytaskmx[i].lastcode,
- :buytaskmx[i].lastdate,
- :buytaskmx[i].lastprice) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(buytaskmx[i].printid)+",插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF buytaskmx[i].iffp = 1 And buytaskmx[i].orderid > 0 THEN
- IF billtype = 0 THEN //材料分配
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 0
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = 0
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = ll_taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty
- s_fp_plan.mtrlid[ll_fp_array] = buytaskmx[i].mtrlid
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- ELSEIF billtype = 1 THEN //成品分配
- IF buytaskmx[i].outtype = 0 Or buytaskmx[i].ifpackpro = 0 THEN
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = buytaskmx[i].taskmxprintid
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = ll_taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty
- s_fp_plan.mtrlid[ll_fp_array] = buytaskmx[i].mtrlid
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- ELSE
- CHOOSE CASE buytaskmx[i].ifpackpro
- CASE 1,2
- ds_pfpack.Retrieve(buytaskmx[i].mtrlid)
- IF ds_pfpack.RowCount() = 0 THEN
- arg_msg = '明细行:'+String(buytaskmx[i].printid)+",物料清单找不到包件明细,请检查"
- rslt = 0
- GOTO ext
- END IF
-
- FOR ll_i = 1 To ds_pfpack.RowCount()
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = buytaskmx[i].taskmxprintid
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = ll_taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty * ds_pfpack.Object.u_prdpf_sonscale[ll_i]
- s_fp_plan.mtrlid[ll_fp_array] = ds_pfpack.Object.u_prdpf_sonmtrlid[ll_i]
- IF ds_pfpack.Object.u_prdpf_ifover[ll_i] THEN
- s_fp_plan.status[ll_fp_array] = ds_pfpack.Object.u_prdpf_status[ll_i]
- s_fp_plan.woodcode[ll_fp_array] = ds_pfpack.Object.u_prdpf_woodcode[ll_i]
- s_fp_plan.pcode[ll_fp_array] = ds_pfpack.Object.u_prdpf_pcode[ll_i]
- ELSE
- CHOOSE CASE ds_pfpack.Object.u_prdpf_ifover[ll_i]
- CASE 0
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = ''
- s_fp_plan.pcode[ll_fp_array] = ''
- CASE 1
- s_fp_plan.status[ll_fp_array] = ''
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = ''
- CASE 2
- s_fp_plan.status[ll_fp_array] = ''
- s_fp_plan.woodcode[ll_fp_array] = ''
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- CASE 3
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = ''
- CASE 4
- s_fp_plan.status[ll_fp_array] = ''
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- CASE 5
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = ''
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- CASE 6
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- END CHOOSE
- END IF
- NEXT
- CASE 3,4
- s_pz = s_pz_null
- f_checkpz(buytaskmx[i].status,s_pz[])
-
- IF UpperBound(s_pz) = 0 THEN
- arg_msg = '明细行:'+String(buytaskmx[i].printid)+',拆分子件错误,请检查组合配置'
- rslt = 0
- GOTO ext
- END IF
-
- FOR ll_i = 1 To UpperBound(s_pz)
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = buytaskmx[i].taskmxprintid
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = ll_taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty * Dec(s_pz[ll_i].qty)
- s_fp_plan.mtrlid[ll_fp_array] = buytaskmx[i].mtrlid
- s_fp_plan.status[ll_fp_array] = s_pz[ll_i].cfgname
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- NEXT
- END CHOOSE
- END IF
- END IF
- END IF
- NEXT
-
- taskid = ll_taskid
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_buytask
- SET kind = :Kind,
- sptid = :sptid,
- requiredate = :requiredate,
- assign_emp = :assign_emp,
- dscrp = :dscrp,
- moddate = getdate(),
- modemp = :publ_operator,
- orderid = :orderid,
- relcode = :relcode,
- train = :train,
- banktypeid = :banktypeid,
- reason = :reason,
- billamt = :billamt,
- moneyid = :moneyid,
- mrate = :mrate,
- sptsccode = :sptsccode
- WHERE u_buytask.taskid = :taskid
- AND u_buytask.scid = :scid
- And u_buytask.status = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_buytaskmx
- WHERE u_buytaskmx.taskid = :taskid
- And u_buytaskmx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除原明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有分配计划明细
- ds_fp_plan_del.Retrieve(scid,taskid,2)
- IF ds_fp_plan_del.RowCount() > 0 THEN
- IF ds_fp_plan_del.Object.sumassignqty[1] > 0 THEN
- rslt = 0
- arg_msg = "原分配计划明细已有分配数,操作取消"
- GOTO ext
- END IF
- END IF
-
- FOR ll_fp = 1 To ds_fp_plan_del.RowCount()
- IF uo_fp_plan.uof_plan_del(ds_fp_plan_del.Object.id[ll_fp],&
- ds_fp_plan_del.Object.qty[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '删除分配计划失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- /////////////////////////////////// //
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_buytaskmx
- (scid,
- taskid,
- mtrlid,
- qty,
- price,
- dscrp,
- dscrp2,
- printid,
- fprice,
- rebate,
- requiredate,
- orderid,
- storageid,
- status,
- iforder,
- sptmtrlname,
- unit,
- rate,
- uqty,
- uprice,
- woodcode,
- pcode,
- rqmxprintid,
- requestbuyid,
- relrqbuycode,
- wrkgrpid,
- taskmxprintid,
- enprice,
- tax,
- plancode,
- buybargainid,
- buybargainprintid,
- buybargaincode,
- jgdscrp,
- lastcode,
- lastdate,
- lastprice)
- VALUES (:scid,
- :taskid,
- :buytaskmx[i].mtrlid,
- :buytaskmx[i].qty,
- :buytaskmx[i].acprice,
- :buytaskmx[i].dscrp,
- :buytaskmx[i].dscrp2 ,
- :buytaskmx[i].printid,
- :buytaskmx[i].fprice ,
- :buytaskmx[i].rebate,
- :buytaskmx[i].requiredate,
- :buytaskmx[i].orderid,
- :buytaskmx[i].storageid,
- :buytaskmx[i].status,
- :buytaskmx[i].iforder,
- :buytaskmx[i].sptmtrlname,
- :buytaskmx[i].unit,
- :buytaskmx[i].rate,
- :buytaskmx[i].uqty,
- :buytaskmx[i].uprice,
- :buytaskmx[i].woodcode,
- :buytaskmx[i].pcode,
- :buytaskmx[i].rqmxprintid,
- :buytaskmx[i].requestbuyid,
- :buytaskmx[i].relrqbuycode,
- :buytaskmx[i].wrkgrpid,
- :buytaskmx[i].taskmxprintid,
- :buytaskmx[i].enprice,
- :buytaskmx[i].tax,
- :buytaskmx[i].plancode,
- :buytaskmx[i].buybargainid,
- :buytaskmx[i].buybargainprintid,
- :buytaskmx[i].buybargaincode,
- :buytaskmx[i].jgdscrp,
- :buytaskmx[i].lastcode,
- :buytaskmx[i].lastdate,
- :buytaskmx[i].lastprice) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '明细行:'+String(buytaskmx[i].printid)+",插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF buytaskmx[i].iffp = 1 And buytaskmx[i].orderid > 0 THEN
- IF billtype = 0 THEN //材料分配
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 0
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = 0
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty
- s_fp_plan.mtrlid[ll_fp_array] = buytaskmx[i].mtrlid
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- ELSEIF billtype = 1 THEN //成品分配
- IF buytaskmx[i].outtype = 0 Or buytaskmx[i].ifpackpro = 0 THEN
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = buytaskmx[i].taskmxprintid
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty
- s_fp_plan.mtrlid[ll_fp_array] = buytaskmx[i].mtrlid
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- ELSE
- CHOOSE CASE buytaskmx[i].ifpackpro
- CASE 1,2
- ds_pfpack.Retrieve(buytaskmx[i].mtrlid)
- IF ds_pfpack.RowCount() = 0 THEN
- arg_msg = '明细行:'+String(buytaskmx[i].printid)+",物料清单找不到包件明细,请检查"
- rslt = 0
- GOTO ext
- END IF
-
- FOR ll_i = 1 To ds_pfpack.RowCount()
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = buytaskmx[i].taskmxprintid
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty * ds_pfpack.Object.u_prdpf_sonscale[ll_i]
- s_fp_plan.mtrlid[ll_fp_array] = ds_pfpack.Object.u_prdpf_sonmtrlid[ll_i]
- IF ds_pfpack.Object.u_prdpf_ifover[ll_i] THEN
- s_fp_plan.status[ll_fp_array] = ds_pfpack.Object.u_prdpf_status[ll_i]
- s_fp_plan.woodcode[ll_fp_array] = ds_pfpack.Object.u_prdpf_woodcode[ll_i]
- s_fp_plan.pcode[ll_fp_array] = ds_pfpack.Object.u_prdpf_pcode[ll_i]
- ELSE
- CHOOSE CASE ds_pfpack.Object.u_prdpf_ifover[ll_i]
- CASE 0
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = ''
- s_fp_plan.pcode[ll_fp_array] = ''
- CASE 1
- s_fp_plan.status[ll_fp_array] = ''
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = ''
- CASE 2
- s_fp_plan.status[ll_fp_array] = ''
- s_fp_plan.woodcode[ll_fp_array] = ''
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- CASE 3
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = ''
- CASE 4
- s_fp_plan.status[ll_fp_array] = ''
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- CASE 5
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = ''
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- CASE 6
- s_fp_plan.status[ll_fp_array] = buytaskmx[i].status
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- END CHOOSE
- END IF
- NEXT
- CASE 3,4
- s_pz = s_pz_null
- f_checkpz(buytaskmx[i].status,s_pz[])
-
- IF UpperBound(s_pz) = 0 THEN
- arg_msg = '明细行:'+String(buytaskmx[i].printid)+',拆分子件错误,请检查组合配置'
- rslt = 0
- GOTO ext
- END IF
-
- FOR ll_i = 1 To UpperBound(s_pz)
- ll_fp_array++
- s_fp_plan.planid[ll_fp_array] = 0
- s_fp_plan.assigntype[ll_fp_array] = 1
- s_fp_plan.relbillid[ll_fp_array] = buytaskmx[i].orderid
- s_fp_plan.relprintid[ll_fp_array] = buytaskmx[i].taskmxprintid
- s_fp_plan.plantype[ll_fp_array] = 1
- s_fp_plan.plankind[ll_fp_array] = 2
- s_fp_plan.plankind_relbillid[ll_fp_array] = taskid
- s_fp_plan.plankind_relprintid[ll_fp_array] = buytaskmx[i].printid
- s_fp_plan.scid[ll_fp_array] = scid
- s_fp_plan.mtrlwareid[ll_fp_array] = 0
- s_fp_plan.planassignqty[ll_fp_array] = buytaskmx[i].qty * Dec(s_pz[ll_i].qty)
- s_fp_plan.mtrlid[ll_fp_array] = buytaskmx[i].mtrlid
- s_fp_plan.status[ll_fp_array] = s_pz[ll_i].cfgname
- s_fp_plan.woodcode[ll_fp_array] = buytaskmx[i].woodcode
- s_fp_plan.pcode[ll_fp_array] = buytaskmx[i].pcode
- NEXT
- END CHOOSE
- END IF
- END IF
- END IF
- NEXT
- END IF
- FOR ll_fp = 1 To ll_fp_array
- IF uo_fp_plan.uof_plan_add(s_fp_plan.scid[ll_fp],&
- s_fp_plan.mtrlwareid[ll_fp],s_fp_plan.assigntype[ll_fp],&
- s_fp_plan.relbillid[ll_fp],s_fp_plan.relprintid[ll_fp],&
- s_fp_plan.planassignqty[ll_fp],&
- '',publ_operator,s_fp_plan.plantype[ll_fp],&
- s_fp_plan.plankind[ll_fp],s_fp_plan.plankind_relbillid[ll_fp],&
- s_fp_plan.plankind_relprintid[ll_fp],2,s_fp_plan.mtrlid[ll_fp],&
- s_fp_plan.status[ll_fp],s_fp_plan.woodcode[ll_fp],s_fp_plan.pcode[ll_fp],arg_msg,False) = 0 THEN
- arg_msg = '明细行:'+String(s_fp_plan.plankind_relprintid[ll_fp])+',保存库存分配计划明细表失败,'+arg_msg
- rslt = 0
- IF it_newbegin THEN taskid = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- p_clearmx()
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- billamt = 0
- Destroy uo_fp_plan
- Destroy ds_fp_plan_del
- Destroy ds_pfpack
- Return(rslt)
- end function
- public function integer p_getinfo (long arg_scid, long arg_taskid, ref string arg_msg);Int rslt = 1
- SELECT taskid,
- TaskCode,
- kind,
- sptID,
- requiredate,
- accomplishdate,
- Status,
- Opemp,
- Assign_Emp,
- Permit_Emp,
- Dscrp,
- opdate,
- orderid ,
- relcode,
- banktypeid,
- train,
- ctmint,
- billtype,
- firpermitemp,
- firpermitdate,
- moneyid,
- mrate,
- sptsccode
- INTO :taskid,
- :TaskCode,
- :Kind,
- :sptID,
- :requiredate,
- :accomplishdate,
- :Status,
- :Operator,
- :Assign_Emp,
- :Permit_Emp,
- :Dscrp,
- :opdate,
- :orderid,
- :relcode,
- :banktypeid,
- :train,
- :ctmint,
- :billtype,
- :firpermitemp,
- :firpermitdate,
- :moneyid,
- :mrate,
- :sptsccode
- FROM u_buyTask
- WHERE u_buyTask.TaskID = :arg_taskid AND
- u_buyTask.scid = :arg_scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询订单内容失败(错误订单唯一码)'
- GOTO ext
- END IF
- scid = arg_scid
- ext:
- RETURN rslt
- end function
- public function integer updatebegin (long arg_scid, long arg_taskid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg)
- //从置对象,设定业务类型与关联ID,准备更新进仓单
- //0 fail 1 success
- Long rslt = 1,CNT = 0
- billamt = 0
- IF arg_scid < 0 THEN
- arg_msg = '请选择分部'
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- arg_msg = '已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = True
- p_clearmx() //清除明细
- scid = arg_scid
- //billamt = 0
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer getinfo (integer arg_scid, long arg_taskid, ref string arg_msg);
- Int rslt = 1
- Long i = 1
- Long no_mxcheck = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT u_buytaskmx.mtrlid,
- u_buytaskmx.qty,
- u_buytaskmx.price,
- u_buytaskmx.dscrp,
- u_mtrldef.mtrlcode,
- u_buytaskmx.printid,
- u_buytaskmx.fprice,
- u_buytaskmx.rebate,
- u_buytaskmx.orderid,
- u_buytaskmx.storageid,
- u_buytaskmx.status,
- u_buytaskmx.sptmtrlname,
- u_buytaskmx.unit,
- u_buytaskmx.rate,
- u_buytaskmx.uqty,
- u_buytaskmx.uprice,
- u_buytaskmx.woodcode,
- u_buytaskmx.pcode,
- u_buytaskmx.rqmxprintid,
- u_buytaskmx.requestbuyid,
- u_buytaskmx.relrqbuycode,
- u_buytaskmx.wrkGrpid,
- u_buytaskmx.taskmxprintid,
- u_buytaskmx.stopqty,
- u_buytaskmx.rebuyqty,
- u_buytaskmx.enprice,
- u_buytaskmx.tax,
- u_mtrldef.iffp,
- u_mtrldef.outtype,
- u_mtrldef.storagetype,
- u_buytaskmx.plancode,
- u_buytaskmx.buybargainid,
- u_buytaskmx.buybargainprintid,
- u_buytaskmx.buybargaincode,
- u_buytaskmx.jgdscrp
- FROM u_buytaskmx,u_mtrldef
- WHERE u_buytaskmx.taskid = :arg_taskid AND
- u_buytaskmx.mtrlid = u_mtrldef.mtrlid AND
- u_buytaskmx.scid = :arg_scid USING commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :buytaskmx[i].mtrlid,:buytaskmx[i].qty,:buytaskmx[i].price,
- :buytaskmx[i].dscrp,:buytaskmx[i].mtrlcode,
- :buytaskmx[i].printid,:buytaskmx[i].fprice,:buytaskmx[i].rebate,
- :buytaskmx[i].orderid,:buytaskmx[i].storageid,:buytaskmx[i].status,
- :buytaskmx[i].sptmtrlname,:buytaskmx[i].unit,:buytaskmx[i].rate,
- :buytaskmx[i].uqty,:buytaskmx[i].uprice,:buytaskmx[i].woodcode,
- :buytaskmx[i].pcode,:buytaskmx[i].rqmxprintid,:buytaskmx[i].requestbuyid,
- :buytaskmx[i].relrqbuycode,:buytaskmx[i].wrkGrpid,:buytaskmx[i].taskmxprintid,
- :buytaskmx[i].stopqty,:buytaskmx[i].rebuyqty,:buytaskmx[i].enprice,
- :buytaskmx[i].tax,:buytaskmx[i].iffp,:buytaskmx[i].outtype,:buytaskmx[i].storagetype,:buytaskmx[i].plancode,
- :buytaskmx[i].buybargainid,
- :buytaskmx[i].buybargainprintid,
- :buytaskmx[i].buybargaincode,
- :buytaskmx[i].jgdscrp;
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_inwaermx INTO :buytaskmx[i].mtrlid,:buytaskmx[i].qty,:buytaskmx[i].price,
- :buytaskmx[i].dscrp,:buytaskmx[i].mtrlcode,
- :buytaskmx[i].printid,:buytaskmx[i].fprice,:buytaskmx[i].rebate,
- :buytaskmx[i].orderid,:buytaskmx[i].storageid,:buytaskmx[i].status,
- :buytaskmx[i].sptmtrlname,:buytaskmx[i].unit,:buytaskmx[i].rate,
- :buytaskmx[i].uqty,:buytaskmx[i].uprice,:buytaskmx[i].woodcode,
- :buytaskmx[i].pcode,:buytaskmx[i].rqmxprintid,:buytaskmx[i].requestbuyid,
- :buytaskmx[i].relrqbuycode,:buytaskmx[i].wrkGrpid,:buytaskmx[i].taskmxprintid,
- :buytaskmx[i].stopqty,:buytaskmx[i].rebuyqty,:buytaskmx[i].enprice,
- :buytaskmx[i].tax,:buytaskmx[i].iffp,:buytaskmx[i].outtype,:buytaskmx[i].storagetype,:buytaskmx[i].plancode,
- :buytaskmx[i].buybargainid,
- :buytaskmx[i].buybargainprintid,
- :buytaskmx[i].buybargaincode,
- :buytaskmx[i].jgdscrp;
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_buytaskmx
- WHERE u_buytaskmx.taskid = :arg_taskid AND
- u_buytaskmx.scid = :arg_scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,采购订单明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,采购订单明细"
- GOTO ext
- END IF
- it_mxbt = i - 1
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer cancelpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- DateTime nulldate
- Long ll_i
- Decimal lde_qty_tol, lde_addqty_order
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_requestbuy_hz = -1000 THEN
- rslt = 0
- arg_msg = '选项:[111]申购单汇总采购,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_buy = -1000 THEN
- rslt = 0
- arg_msg = '选项:[342]采购订单审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- //yyx 100306
- Long ll_ti,ll_rcnt
- //datastore ds_tmp_update
- //ds_tmp_update = Create datastore
- //ds_tmp_update.DataObject = 'ds_buytask_update_order'
- //ds_tmp_update.SetTransObject(sqlca)
- ////yyx 100306
- datastore ds
- ds = Create datastore
- ds.DataObject = 'ds_orderrqmtrl_request_buytask'
- ds.SetTransObject(sqlca)
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- uo_requestbuy uo_rqbuy
- uo_rqbuy = Create uo_requestbuy
- SetNull(nulldate)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- arg_msg = "订单只有在已审核状态才可以执行撤消审核,请核对"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_inwaremx,u_inware
- WHERE ( u_inware.scid = u_inwaremx.scid ) AND
- ( u_inware.inwareid = u_inwaremx.inwareid ) AND
- ( u_inware.billtype = 1) AND
- ( u_inwaremx.relid = :arg_taskid ) AND
- ( u_inwaremx.scid = :arg_scid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询采购订单收货数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "采购订单已经有相关进仓单据,不可以撤消审核"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_buytaskmx
- WHERE ( u_buytaskmx.taskid = :arg_taskid ) AND
- ( u_buytaskmx.scid = :arg_scid ) AND
- ( u_buytaskmx.stopqty > 0 ) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询采购订单是否有终止数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "采购订单明细已有终止数量,不可以撤消审核"
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_sptcheck_mx INNER JOIN
- u_sptcheck ON u_sptcheck_mx.billid = u_sptcheck.billid
- WHERE u_sptcheck_mx.reltaskid = :arg_taskid
- AND u_sptcheck.scid = :arg_scid
- AND u_sptcheck.billtype = 0
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询采购订单是否已开质检单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "采购订单已经有相关质检单,不可以撤消审核"
- GOTO ext
- END IF
- //
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_getbar
- WHERE ( u_getbar.ifrel = 2) AND
- ( u_getbar.orderid = :arg_taskid ) AND
- ( u_getbar.scid = :arg_scid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询采购订单是否已开条码生成单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "采购订单已经有相关条码生成单,不可以撤消审核"
- GOTO ext
- END IF
- UPDATE u_buyTask
- SET Status = 4,
- permit_emp = '',
- permit_date = :nulldate
- WHERE TaskID = :arg_taskid
- And Status = 1 And scid = :arg_scid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致采购订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- String ls_unit_rq
- Decimal lde_rate_rq, lde_addqty
- FOR ll_i = 1 To it_mxbt
-
- IF buytaskmx[ll_i].requestbuyid > 0 THEN
-
- //处理单位转换,确认完成数量
- SELECT unit, rate INTO :ls_unit_rq, :lde_rate_rq
- FROM u_requestbuymx
- WHERE ( printid = :buytaskmx[ll_i].rqmxprintid )
- AND ( requestbuyid = :buytaskmx[ll_i].requestbuyid )
- And ( scid = :scid );
-
- IF ls_unit_rq = buytaskmx[ll_i].unit THEN //单位相同, 直接去订单数量
- lde_addqty = buytaskmx[ll_i].uqty - buytaskmx[ll_i].rebuyqty
- ELSE
- //单位不同, 先转库存单位, 在转申购单位
- lde_addqty = buytaskmx[ll_i].qty - buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- lde_addqty = lde_addqty / lde_rate_rq
- END IF
-
- IF uo_rqbuy.addmxcmpl(scid,buytaskmx[ll_i].requestbuyid,&
- buytaskmx[ll_i].rqmxprintid,0 - lde_addqty, arg_msg, False) = 0 THEN
- arg_msg = '第'+String(ll_i)+'行,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- // IF uo_rqbuy.addmxcmpl(scid,buytaskmx[ll_i].requestbuyid,&
- // buytaskmx[ll_i].rqmxprintid,0 - (buytaskmx[ll_i].uqty - buytaskmx[ll_i].rebuyqty),ARG_MSG,False) = 0 THEN
- // ARG_MSG = '第'+String(ll_i)+'行,'+ARG_MSG
- // rslt = 0
- // GOTO ext
- // END IF
- IF uo_rqbuy.tryfinish(scid,buytaskmx[ll_i].requestbuyid,arg_msg,False) = 0 THEN
- arg_msg = '第'+String(ll_i)+'行,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF billtype = 0 THEN
- IF uo_option_update_rqmtrlqty_buy = 1 THEN
- ll_rcnt = ds.Retrieve(scid,buytaskmx[ll_i].requestbuyid,buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].Status,buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode, buytaskmx[ll_i].orderid)
-
- lde_qty_tol = buytaskmx[ll_i].qty //- buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- FOR ll_ti = 1 To ll_rcnt
-
- IF ds.Object.u_orderrqmtrl_consignedqty[ll_ti] <= 0 THEN CONTINUE
- IF lde_qty_tol > ds.Object.u_orderrqmtrl_consignedqty[ll_ti] THEN
- lde_addqty_order = ds.Object.u_orderrqmtrl_consignedqty[ll_ti]
- lde_qty_tol -= lde_addqty_order
- ELSE
- lde_addqty_order = lde_qty_tol
- lde_qty_tol = 0
- END IF
-
- lde_addqty_order = 0 - lde_addqty_order
-
- IF uo_order.f_assign_rqmtrlqty(ds.Object.u_orderrqmtrl_scid[ll_ti],ds.Object.u_orderrqmtrl_orderid[ll_ti],&
- ds.Object.u_orderrqmtrl_wrkGrpid[ll_ti],buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].mtrlcode,buytaskmx[ll_i].Status,&
- buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode,lde_addqty_order,2,arg_msg,False) = 0 THEN
- arg_msg = '订单明细行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF lde_qty_tol = 0 THEN EXIT
- NEXT
- END IF
- // IF uo_option_update_rqmtrlqty_buy = 1 THEN
- //
- // IF buytaskmx[ll_i].orderid > 0 THEN
- // IF uo_order.f_assign_rqmtrlqty(scid,buytaskmx[ll_i].orderid,buytaskmx[ll_i].wrkGrpid,&
- // buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].mtrlcode,&
- // buytaskmx[ll_i].Status,buytaskmx[ll_i].woodcode,&
- // buytaskmx[ll_i].pcode,0 - (buytaskmx[ll_i].qty - buytaskmx[ll_i].rate * buytaskmx[ll_i].rebuyqty),2,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // ELSE
- // //YYX 100305
- // IF buytaskmx[ll_i].requestbuyid > 0 And uo_option_requestbuy_hz = 1 THEN
- // ll_rcnt = ds_tmp_update.Retrieve(scid,buytaskmx[ll_i].requestbuyid,buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].Status,buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode)
- //
- // FOR ll_ti = 1 To ll_rcnt
- // IF uo_order.f_assign_rqmtrlqty(ds_tmp_update.Object.scid[ll_ti],ds_tmp_update.Object.orderid[ll_ti],&
- // ds_tmp_update.Object.wrkGrpid[ll_ti],buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].mtrlcode,buytaskmx[ll_i].Status,&
- // buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode,0 - (ds_tmp_update.Object.uqty[ll_ti] * buytaskmx[ll_i].rate),2,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // NEXT
- // END IF
- // //buytaskmx[ll_i].qty - buytaskmx[ll_i].rate * buytaskmx[ll_i].rebuyqty
- // END IF
- // END IF
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- Destroy uo_rqbuy
- //Destroy ds_tmp_update
- Destroy ds
- p_reset()
- Return (rslt)
- end function
- public function integer add_dscrp (long arg_scid, long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
- //0 fail 1 SUCCESS
- INT rslt=1
- arg_newdescppart=TRIM(arg_newdescppart)
- IF it_updatebegin OR it_newbegin THEN
- rslt=0
- arG_MSG="编辑状态下不可用"
- goto ext
- END IF
- IF arg_newdescppart='' THEN
- rslt=0
- arG_MSG="要添加内容为空,操作取消"
- goto ext
- END IF
- if p_getinfo(arg_scid,arg_taskid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF status=0 THEN
- rslt=0
- arG_MSG="待采购审核状态下不可用"
- goto ext
- END IF
- UPDATE u_buyTask
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_buyTask.taskid = :arg_taskid using commit_transaction;
- if commit_transaction.SQLCode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致添加采购订单备注操作失败"+"~n"+commit_transaction.SQLErrText
- rollback using commit_transaction;
- goto ext
- end if
- DSCRP = DSCRP+' '+arg_newdescppart
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if arg_ifcommit and rslt=1 then
- COMMIT using commit_transaction;
- end if
- p_reset()
- return (rslt)
- end function
- public function integer tempstoptask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);INT rslt=1,cnt=0
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid<=0 THEN
- rslt=0
- ARG_MSG='错误采购订单唯一码'
- goto ext
- end if
- if p_getinfo(arg_scid,arg_taskid,arg_msg)=0 then
- rslt=0
- goto ext
- end if
- IF Status<>1 and Status<>2 THEN
- rslt=0
- arG_MSG="订单只有在进行状态或暂停状态才可以执行暂停/取消暂停操作"
- goto ext
- END IF
- if Status=1 then
- UPDATE u_buyTask
- SET Status = 2 ,stopemp=:publ_operator
- WHERE TaskID = :arg_taskid and scid=:arg_scid using commit_transaction ;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致暂停采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- else
- UPDATE u_buyTask
- SET Status = 1,stopemp=''
- WHERE TaskID = :arg_taskid and scid=:arg_scid using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或其它原因导致取消暂停采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- end if
- it_newbegin=FALSE
- it_updatebegin=FALSE
- EXT:
- if rslt=0 then
- rollback using commit_transaction;
- elseif arg_ifcommit then
- COMMIT using commit_transaction;
- end if
- p_reset()
- return (rslt)
- end function
- public function integer cancel (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
- //0 FAIL, 1 SUCCESS
- Int rslt = 1
- Long ll_fp
- IF uo_option_disuse_buytask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[293]启用采购订单废弃单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_mtrlware_assign uo_fp_plan
- uo_fp_plan = Create uo_mtrlware_assign
- uo_fp_plan.commit_transaction = commit_transaction
- datastore ds_fp_plan_del
- ds_fp_plan_del = Create datastore
- ds_fp_plan_del.DataObject = 'ds_fp_plan_plankind_del'
- ds_fp_plan_del.SetTransObject(commit_transaction)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 0 THEN
- rslt = 0
- ARG_MSG = "订单已经审核,不可以删除"
- GOTO ext
- END IF
- if uo_option_disuse_buytask = 1 then
- If uof_disuse(arg_scid,arg_taskid,1,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- end if
- //删除原有分配计划明细
- ds_fp_plan_del.Retrieve(arg_scid,arg_taskid,2)
- IF ds_fp_plan_del.RowCount() > 0 THEN
- IF ds_fp_plan_del.Object.sumassignqty[1] > 0 THEN
- rslt = 0
- ARG_MSG = "原分配计划明细已有分配数,操作取消"
- GOTO ext
- END IF
- END IF
- FOR ll_fp = 1 To ds_fp_plan_del.RowCount()
- IF uo_fp_plan.uof_plan_del(ds_fp_plan_del.Object.id[ll_fp],&
- ds_fp_plan_del.Object.qty[ll_fp],ARG_MSG,False) = 0 THEN
- ARG_MSG = '删除分配计划失败,'+ARG_MSG
- rslt = 0
- GOTO ext
- END IF
- NEXT
- /////////////////////////////////// //
- DELETE FROM u_buytask
- Where u_buytask.taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_buytaskmx
- Where u_buytaskmx.taskid = :arg_taskid And scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除采购订单明细操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- ext:
- it_newbegin = False
- it_updatebegin = False
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_fp_plan
- Destroy ds_fp_plan_del
- p_reset()
- Return (rslt)
- end function
- public function integer firstpermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- Long ll_i
- Long ll_mtrlwareid,ll_cusid
- Int li_balctype,li_storagetype
- Decimal lde_qty_tol, lde_addqty_order
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_buytask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[228]材料采购订单使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buytask_cl_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[092]材料采购订单二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_if_oa_buytask_cp = -1000 THEN
- rslt = 0
- arg_msg = '选项:[229]成品采购订单使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_if_oa_buytask_dept = -1000 THEN
- rslt = 0
- arg_msg = '选项:[423]非生产采购订单使用OA审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buytask_cp_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[093]成品采购订单二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buytask_dept_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[422]非生产采购订单使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_requestbuy_hz = -1000 THEN
- rslt = 0
- arg_msg = '选项:[111]申购单汇总采购,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_buy = -1000 THEN
- rslt = 0
- arg_msg = '选项:[342]采购订单保存审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- //yyx 100306
- Long ll_ti,ll_rcnt
- //datastore ds_tmp_update
- //ds_tmp_update = Create datastore
- //ds_tmp_update.DataObject = 'ds_buytask_update_order'
- //ds_tmp_update.SetTransObject(sqlca)
- ////yyx 100306
- datastore ds
- ds = Create datastore
- ds.DataObject = 'ds_orderrqmtrl_request_buytask'
- ds.SetTransObject(sqlca)
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- uo_requestbuy uo_rqbuy
- uo_rqbuy = Create uo_requestbuy
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 0 THEN
- IF uo_option_if_oa_buytask = 1 And uo_option_buytask_cl_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,94,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSEif billtype = 1 then
- IF uo_option_if_oa_buytask_cp = 1 And uo_option_buytask_cp_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,1277,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- elseif billtype = 2 then
- IF uo_option_if_oa_buytask_dept = 1 And uo_option_buytask_dept_secaudit = 1 And audit_buildtype = 0 THEN
- IF f_check_if_oaflow(arg_scid,arg_taskid,4299,arg_msg ) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF status <> 4 THEN
- rslt = 0
- arg_msg = "订单不是在初审状态,不可以终审"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_user
- Where username = :arg_emp Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_buytask
- SET permit_emp = :arg_emp,
- permit_date = getdate(),
- status = 1
- WHERE taskid = :arg_taskid
- AND scid = :arg_scid
- And status = 4 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致订单最终审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- String ls_unit_rq
- Decimal lde_rate_rq, lde_addqty
- FOR ll_i = 1 To it_mxbt
- IF buytaskmx[ll_i].requestbuyid > 0 THEN
- ///////////////// //更新申购完成数
- //处理单位转换,确认完成数量
- SELECT unit, rate INTO :ls_unit_rq, :lde_rate_rq
- FROM u_requestbuymx
- WHERE ( printid = :buytaskmx[ll_i].rqmxprintid )
- AND ( requestbuyid = :buytaskmx[ll_i].requestbuyid )
- And ( scid = :scid );
-
- IF ls_unit_rq = buytaskmx[ll_i].unit THEN //单位相同, 直接去订单数量
- lde_addqty = buytaskmx[ll_i].uqty - buytaskmx[ll_i].rebuyqty
- ELSE
- //单位不同, 先转库存单位, 在转申购单位
- lde_addqty = buytaskmx[ll_i].qty - buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- lde_addqty = lde_addqty / lde_rate_rq
- END IF
- //改成订单选申购单,可以再改单位, 不同单位数量要转换
- IF uo_rqbuy.addmxcmpl(scid,buytaskmx[ll_i].requestbuyid,&
- buytaskmx[ll_i].rqmxprintid,lde_addqty,arg_msg,False) = 0 THEN
- arg_msg = '订单明细行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.tryfinish(scid,buytaskmx[ll_i].requestbuyid,arg_msg,False) = 0 THEN
- arg_msg = '订单明细行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- /////////////////////// //更新主计划 已订货数 / 销售订单加库存
-
-
-
- IF billtype = 0 THEN
- IF uo_option_update_rqmtrlqty_buy = 1 THEN
- ll_rcnt = ds.Retrieve(scid,buytaskmx[ll_i].requestbuyid,buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].status,buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode, buytaskmx[ll_i].orderid)
-
- lde_qty_tol = buytaskmx[ll_i].qty //- buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- FOR ll_ti = 1 To ll_rcnt
-
- IF ds.Object.u_orderrqmtrl_truerqqty[ll_ti] <= ds.Object.u_orderrqmtrl_consignedqty[ll_ti] THEN CONTINUE
- IF lde_qty_tol > ds.Object.u_orderrqmtrl_truerqqty[ll_ti] - ds.Object.u_orderrqmtrl_consignedqty[ll_ti] THEN
- lde_addqty_order = ds.Object.u_orderrqmtrl_truerqqty[ll_ti] - ds.Object.u_orderrqmtrl_consignedqty[ll_ti]
- lde_qty_tol -= lde_addqty_order
- ELSE
- lde_addqty_order = lde_qty_tol
- lde_qty_tol = 0
- END IF
-
- IF uo_order.f_assign_rqmtrlqty(ds.Object.u_orderrqmtrl_scid[ll_ti],ds.Object.u_orderrqmtrl_orderid[ll_ti],&
- ds.Object.u_orderrqmtrl_wrkGrpid[ll_ti],buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].mtrlcode,buytaskmx[ll_i].status,&
- buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode,lde_addqty_order,2,arg_msg,False) = 0 THEN
- arg_msg = '订单明细行:'+String(ll_i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF lde_qty_tol = 0 THEN EXIT
- NEXT
- END IF
- // IF uo_option_update_rqmtrlqty_buy = 1 THEN
- // IF buytaskmx[ll_i].orderid > 0 THEN
- // IF uo_order.f_assign_rqmtrlqty(scid,buytaskmx[ll_i].orderid,buytaskmx[ll_i].wrkGrpid,&
- // buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].mtrlcode,buytaskmx[ll_i].status,&
- // buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode,buytaskmx[ll_i].qty - buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate,2,arg_msg,False) = 0 THEN
- // arg_msg = '订单明细行:'+String(ll_i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // ELSE
- // //YYX 100305
- // IF buytaskmx[ll_i].requestbuyid > 0 And uo_option_requestbuy_hz = 1 THEN
- // ll_rcnt = ds_tmp_update.Retrieve(scid,buytaskmx[ll_i].requestbuyid,buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].status,buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode)
- //
- // lde_qty_tol = buytaskmx[ll_i].qty - buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- // FOR ll_ti = 1 To ll_rcnt
- //
- // IF lde_qty_tol > ds_tmp_update.Object.qty[ll_ti] THEN
- // lde_addqty_order = ds_tmp_update.Object.qty[ll_ti]
- // lde_qty_tol -= lde_addqty_order
- // ELSE
- // lde_addqty_order = lde_qty_tol
- // lde_qty_tol = 0
- // END IF
- //
- // IF uo_order.f_assign_rqmtrlqty(ds_tmp_update.Object.scid[ll_ti],ds_tmp_update.Object.orderid[ll_ti],&
- // ds_tmp_update.Object.wrkGrpid[ll_ti],buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].mtrlcode,buytaskmx[ll_i].status,&
- // buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode,lde_addqty_order,2,arg_msg,False) = 0 THEN
- // arg_msg = '订单明细行:'+String(ll_i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // NEXT
- // END IF
- // //buytaskmx[ll_i].qty - buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- // END IF
- // END IF
-
- ELSE //成品审核加0库存 //IF billtype = 0 THEN
- IF sys_option_buytask_add0ware = 1 THEN
- IF buytaskmx[ll_i].storageid > 0 THEN
- SELECT balctype,storagetype INTO :li_balctype,:li_storagetype FROM u_storage
- Where storageid = :buytaskmx[ll_i].storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '订单明细行:'+String(ll_i)+",查询仓库是否使用客户库存失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_storagetype = 1 THEN
- ll_cusid = 0
- ELSE
- IF li_balctype = 0 THEN
- ll_cusid = 0
- ELSE
- IF buytaskmx[ll_i].storagetype = 1 THEN
- ll_cusid = 0
- ELSE
- IF buytaskmx[ll_i].orderid = 0 THEN
- ll_cusid = 0
- ELSE
- SELECT u_saletask.cusid INTO :ll_cusid FROM u_saletask
- WHERE u_saletask.scid = :scid AND u_saletask.taskid = :buytaskmx[ll_i].orderid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '订单明细行:'+String(ll_i)+",查询对应销售订单客户id失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- END IF
-
- Int li_ref_ifadd
- IF f_insert_0_mtrlware_2(ll_mtrlwareid,buytaskmx[ll_i].mtrlid,buytaskmx[ll_i].mtrlcode,buytaskmx[ll_i].storageid,&
- ll_cusid,buytaskmx[ll_i].status,buytaskmx[ll_i].woodcode,buytaskmx[ll_i].pcode,'','',&
- '',0,li_ref_ifadd,arg_msg,False) = 0 THEN
- arg_msg = '订单产品细行:'+String(ll_i)+',查询产品0库存信息记录失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- // SELECT top 1 mtrlwareid INTO :ll_mtrlwareid
- // FROM u_mtrlware
- // WHERE scid = :scid
- // AND mtrlid = :buytaskmx[ll_i].mtrlid
- // AND storageid = :buytaskmx[ll_i].storageid
- // AND status = :buytaskmx[ll_i].status
- // AND woodcode = :buytaskmx[ll_i].woodcode
- // AND pcode = :buytaskmx[ll_i].pcode
- // AND plancode = ''
- // AND sptid = :ll_cusid
- // And mtrlcuscode = '' Using commit_transaction;
- //
- // IF commit_transaction.SQLCode = -1 THEN
- // arg_msg = '订单明细行:'+String(ll_i)+',查询产品库存失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // ELSEIF sqlca.SQLCode = 100 THEN
- // ll_mtrlwareid = 0
- //
- // ll_mtrlwareid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- // IF ll_mtrlwareid <= 0 THEN
- // arg_msg = '订单明细行:'+String(ll_i)+',取0库存id失败,'+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // INSERT INTO u_mtrlware(scid,
- // mtrlwareid,
- // mtrlid,
- // storageid,
- // noallocqty,
- // status,
- // plancode,
- // woodcode,
- // pcode,
- // sptid,
- // mtrlcuscode)
- // VALUES(:scid,
- // :ll_mtrlwareid,
- // :buytaskmx[ll_i].mtrlid,
- // :buytaskmx[ll_i].storageid,
- // 0,
- // :buytaskmx[ll_i].status,
- // '',
- // :buytaskmx[ll_i].woodcode,
- // :buytaskmx[ll_i].pcode,
- // :ll_cusid,'') Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arg_msg = '订单明细行:'+String(ll_i)+',产品加0库存失败或物料已经有库存,请检查,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
- END IF
- END IF //IF sys_option_buytask_add0ware = 1 THEN
- END IF
- END IF //IF buytaskmx[ll_i].requestbuyid > 0 THEN
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- Destroy uo_rqbuy
- //Destroy ds_tmp_update
- Destroy ds
- p_reset()
- Return (rslt)
- end function
- public function integer lastpermit (long arg_scid, long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 4 THEN
- rslt = 0
- ARG_MSG = "订单只有在已采购审核状态才可以执行最终审核,请核对"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- ARG_MSG = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_buyTask
- SET Permit_emp = :arg_emp,
- Status = 1
- Where TaskID = :arg_taskid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致采购订单最终审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit THEN
- COMMIT;
- END IF
- p_reset()
- RETURN (rslt)
- end function
- public function integer checkmxmpl (long arg_scid, long arg_taskid, long arg_mtrlid, decimal arg_addqty, ref string arg_msg);//checkmxcmpl(long arg_taskid,long arg_mtrlid,decimal arg_addqty,ref string arg_msg,boolean arg_ifcommit)
- INT rslt=1,cnt=0
- IF arg_taskid<=0 THEN
- rslt=0
- ARG_MSG='错误采购订单唯一码'
- goto ext
- end if
- if arg_addqty=0 then
- rslt=1
- goto ext
- end if
- rslt=p_getinfo(arg_scid,arg_taskid,arg_msg)
- if rslt=0 then goto ext
- IF Status<>1 THEN
- rslt=0
- arG_MSG="采购订单只有在进行状态下才可以执行进仓"
- goto ext
- END IF
- decimal ls_buyQty,ls_assignQty
- string ls_mtrlcode
- SELECT u_buyTaskMx.Qty,
- u_buyTaskMx.assignQty,
- u_mtrldef.mtrlcode
- INTO :ls_buyQty,
- :ls_assignQty,
- :ls_mtrlcode
- FROM u_buyTaskMx ,u_mtrldef
- WHERE ( u_buyTaskMx.TaskID =:arg_taskid ) AND
- ( u_buyTaskMx.MtrlID =:arg_mtrlid ) and
- ( u_mtrldef.mtrlid=u_buyTaskMx.MtrlID ) and
- ( u_buytaskmx.scid=:arg_scid) using commit_transaction;
- if commit_transaction.sqlcode<>0 then
- rslt=0
- arG_MSG="因网络或错误物料编码["+ls_mtrlcode+"]导致查询采购订单已完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- goto ext
- end if
- if ls_buyQty < ls_assignQty + arg_addqty then
- rslt=0
- arG_MSG="物料["+ls_mtrlcode+"]的订单未完成数量只有"+string(ls_buyQty - ls_assignQty,'#,##0.0#')+",不能入库"+string(arg_addqty,'#,##0.0#')
- goto ext
- end if
- EXT:
- p_reset()
- return (rslt)
- end function
- public function integer trycmplbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);//trycmplbuytask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "采购订单只有在进行状态下才可以执行设完成状态"
- ELSEIF status <> 5 THEN
- arg_msg = "采购订单只有在完成状态下才可以执行撤消完成状态"
- END IF
- GOTO ext
- END IF
- Decimal ls_zerook
- Boolean if_finish
- Decimal ld_autostopqty[],ld_stopqty[],ld_stopqty_ori[]
- String ls_mtrlcode[]
- Long ll_printid[]
- String ls_stopreason[],ls_stopreason_tmp
- Long ll_i = 1,j,ll_mx
- if_finish = True
- DECLARE zero_cur CURSOR FOR
- SELECT u_buytaskmx.uqty * (1 - u_mtrldef.downrate) - u_buytaskmx.consignedqty - u_buytaskmx.stopqty
- FROM u_buytaskmx,u_mtrldef
- WHERE ( u_buytaskmx.taskid = :arg_taskid )
- AND ( u_buytaskmx.scid = :arg_scid )
- AND ( u_buytaskmx.stopflag = 0 )
- AND ( u_buytaskmx.mtrlid = u_mtrldef.mtrlid )
- Using commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur Into :ls_zerook;
- DO WHILE commit_transaction.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = False
- END IF
- FETCH zero_cur Into :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF status = 1 And if_finish THEN
- UPDATE u_buytask
- SET status = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_buytask.taskid = :arg_taskid )
- And u_buytask.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致采购订单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DECLARE mx_cur CURSOR FOR
- SELECT u_buytaskmx.uqty - u_buytaskmx.consignedqty - u_buytaskmx.stopqty,
- u_buytaskmx.uqty - u_buytaskmx.consignedqty,
- u_buytaskmx.printid,
- u_mtrldef.mtrlcode,
- u_buytaskmx.stopreason,
- u_buytaskmx.stopqty
- FROM u_buytaskmx,u_mtrldef
- WHERE ( u_buytaskmx.taskid = :arg_taskid )
- AND ( u_buytaskmx.scid = :arg_scid )
- AND ( u_buytaskmx.stopflag = 0 )
- AND ( u_buytaskmx.mtrlid = u_mtrldef.mtrlid )
- Using commit_transaction ;
-
- OPEN mx_cur;
- FETCH mx_cur Into :ld_autostopqty[ll_i],:ld_stopqty[ll_i],:ll_printid[ll_i],:ls_mtrlcode[ll_i],:ls_stopreason[ll_i],:ld_stopqty_ori[ll_i];
- DO WHILE commit_transaction.SQLCode = 0
- ll_i++
- FETCH mx_cur Into :ld_autostopqty[ll_i],:ld_stopqty[ll_i],:ll_printid[ll_i],:ls_mtrlcode[ll_i],:ls_stopreason[ll_i],:ld_stopqty_ori[ll_i];
- LOOP
-
- CLOSE mx_cur;
-
- ll_mx = ll_i - 1
-
- FOR j = 1 To ll_mx
- IF ld_autostopqty[j] > 0 THEN
- IF Trim(ls_stopreason[j]) = '' THEN
- IF ld_stopqty_ori[j] > 0 THEN
- ls_stopreason_tmp = leftA('原手动终止数量:'+String(ld_stopqty_ori[j],'#,##0.##########')+';现收货达下浮数量自动完成,自动终止数量:'+String(ld_autostopqty[j],'#,##0.##########'),100)
- ELSE
- ls_stopreason_tmp = '收货达下浮数量自动完成,自动终止数量:'+String(ld_autostopqty[j],'#,##0.##########')
- END IF
- ELSE
- ls_stopreason_tmp = leftA('原手动终止数量:'+String(ld_stopqty_ori[j],'#,##0.##########')+'原因:'+Trim(ls_stopreason[j])+';现收货达下浮数量自动完成,自动终止数量:'+String(ld_autostopqty[j],'#,##0.##########'),100)
- END IF
-
- UPDATE u_buytaskmx
- SET stopqty = :ld_stopqty[j],
- stopreason = :ls_stopreason_tmp,
- autostopqty = :ld_autostopqty[j]
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :ll_printid[j] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '物料:'+ls_mtrlcode[j]+',更新自动完成终止数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
-
- END IF
- IF status = 5 And Not if_finish THEN
- UPDATE u_buytask
- SET status = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_buytask.taskid = :arg_taskid )
- And u_buytask.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致采购订单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DECLARE mx2_cur CURSOR FOR
- SELECT u_buytaskmx.autostopqty,
- u_buytaskmx.stopqty,
- u_buytaskmx.printid,
- u_mtrldef.mtrlcode
- FROM u_buytaskmx,u_mtrldef
- WHERE ( u_buytaskmx.taskid = :arg_taskid )
- AND ( u_buytaskmx.scid = :arg_scid )
- AND ( u_buytaskmx.stopflag = 0 )
- AND ( u_buytaskmx.mtrlid = u_mtrldef.mtrlid )
- Using commit_transaction ;
-
- OPEN mx2_cur;
- FETCH mx2_cur Into :ld_autostopqty[ll_i],:ld_stopqty[ll_i],:ll_printid[ll_i],:ls_mtrlcode[ll_i];
- DO WHILE commit_transaction.SQLCode = 0
- ll_i++
- FETCH mx2_cur Into :ld_autostopqty[ll_i],:ld_stopqty[ll_i],:ll_printid[ll_i],:ls_mtrlcode[ll_i];
- LOOP
-
- CLOSE mx2_cur;
-
- ll_mx = ll_i - 1
-
- FOR j = 1 To ll_mx
- IF ld_autostopqty[j] > 0 THEN
-
- UPDATE u_buytaskmx
- SET stopqty = :ld_stopqty[j] - :ld_autostopqty[j],
- stopreason = '',
- autostopqty = 0
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :ll_printid[j] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '物料:'+ls_mtrlcode[j]+',更新自动完成终止数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
-
-
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer finishtask (integer arg_finishtype, long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0, i
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_finishtype = 5 Or arg_finishtype = 6 THEN
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "采购订单只有在进行状态才可以执行完成,请核对"
- GOTO ext
- END IF
- ELSE
- IF arg_finishtype = 1 THEN
- IF Status <> 6 THEN
- rslt = 0
- ARG_MSG = "采购订单只有在手动完成状态下才可以执行取消手动完成,请核对"
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_finishtype = 5 Or arg_finishtype = 6 THEN
- UPDATE u_buyTask
- SET status = :arg_finishtype,accomplishdate = getdate(),finishemp = :publ_operator
- WHERE ( u_buyTask.TaskID = :arg_taskid ) AND
- ( u_buyTask.scid = :arg_scid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致完成采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- ELSE
- UPDATE u_buyTask
- SET status = :arg_finishtype,accomplishdate = :null_dt,finishemp = ''
- WHERE ( u_buyTask.TaskID = :arg_taskid ) AND
- ( u_buyTask.scid = :arg_scid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致取消手动完成采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- END IF
- //更新明细完成状态
- FOR i = 1 To it_mxbt
- IF finishmx(arg_scid, arg_taskid, buytaskmx[i].printid, ARG_MSG, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
- //0 fail 1 success
- long rslt=1,CNT=0
- if arg_scid < 0 then
- arg_msg = '请选择分部'
- rslt = 0
- goto ext
- end if
- p_reset()
- it_newbegin=TRUE
- it_updatebegin=FALSE
- scid=arg_scid
- ext:
- if rslt = 0 then p_reset()
- return rslt
- end function
- public function integer stopmx (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_commit);Int rslt = 1
- //Int li_flag
- //DateTime null_dt
- //Decimal ld_notconsignedqty
- //
- //IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //SetNull(null_dt)
- //
- //IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF arg_flag = 1 THEN
- // IF status <> 1 THEN
- // arg_msg = '订单只能在进行状态才能操作'
- // rslt = 0
- // GOTO ext
- // END IF
- //ELSE
- // IF status <> 1 AND status <> 5 THEN
- // arg_msg = '订单只能在进行状态或自动完成状态才能操作'
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- //
- //SELECT stopflag INTO :li_flag
- // FROM u_buytaskmx
- // WHERE scid = :arg_scid
- // AND taskid = :arg_taskid
- // AND printid = :arg_printid USING commit_transaction ;
- //IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询明细物料'+arg_mtrlcode+'中止标记失败'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF arg_flag = 0 THEN
- // IF li_flag = 0 THEN
- // arg_msg = '明细物料'+arg_mtrlcode+'还未中止,不能取消中止'
- // rslt = 0
- // GOTO ext
- // END IF
- //ELSE
- // IF li_flag = 1 THEN
- // arg_msg = '明细物料'+arg_mtrlcode+'已中止,不能重复中止'
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- //
- //
- //IF arg_flag = 1 THEN
- // SELECT u_buyTaskMx.uQty - u_buyTaskMx.consignedqty
- // INTO :ld_notconsignedqty
- // FROM u_buytaskmx
- // WHERE scid = :arg_scid
- // AND taskid = :arg_taskid
- // AND printid = :arg_printid USING commit_transaction ;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF ld_notconsignedqty <= 0 THEN
- // arg_msg = '明细物料'+arg_mtrlcode+'已完成收货,不能中止'
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- //
- //IF arg_flag = 0 THEN
- // UPDATE u_buytaskmx
- // SET stopflag = 0,
- // stopemp = '',
- // stopdate = :null_dt,
- // stopreason = ''
- // WHERE scid = :arg_scid
- // AND taskid = :arg_taskid
- // AND printid = :arg_printid USING commit_transaction ;
- //ELSE
- // UPDATE u_buytaskmx
- // SET stopflag = 1,
- // stopemp = :publ_operator,
- // stopdate = getdate(),
- // stopreason = :arg_stopreason
- // WHERE scid = :arg_scid
- // AND taskid = :arg_taskid
- // AND printid = :arg_printid USING commit_transaction ;
- //END IF
- //
- //IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF trycmplbuytask(arg_scid,arg_taskid,arg_msg,FALSE) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- ////更新明细完成状态
- //IF finishmx(arg_scid, arg_taskid, arg_printid, arg_msg, False) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //ext:
- //IF rslt = 0 THEN
- // ROLLBACK;
- //ELSEIF rslt = 1 AND arg_commit THEN
- // COMMIT;
- //END IF
- RETURN rslt
- end function
- public function integer secpermit (long arg_scid, long arg_taskid, ref string arg_emp, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Long cnt = 0
- Long ll_i
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_if_oa_buytask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[228]材料采购订单使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buytask_cl_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[092]材料采购订单二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_if_oa_buytask_cp = -1000 THEN
- rslt = 0
- arg_msg = '选项:[229]成品采购订单使用审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_if_oa_buytask_dept = -1000 THEN
- rslt = 0
- arg_msg = '选项:[423]非生产采购订单使用OA审批流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buytask_cp_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[093]成品采购订单二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buytask_dept_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[422]非生产采购订单二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 0 THEN
- rslt = 0
- arg_msg = "订单不是在待审核状态,不可以再审"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_emp USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- UPDATE u_buytask
- SET firpermitemp = :arg_emp,
- firpermitdate = getdate(),
- status = 4
- WHERE taskid = :arg_taskid
- AND scid = :arg_scid
- AND status = 0 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致订单最终审核操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF billtype = 0 THEN
- IF uo_option_if_oa_buytask = 1 AND uo_option_buytask_cl_secaudit = 1 THEN
- IF f_oa(commit_transaction,FALSE,arg_msg,94,scid,taskid,taskcode,relcode,dscrp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSEif billtype = 1 then
- IF uo_option_if_oa_buytask_cp = 1 AND uo_option_buytask_cp_secaudit = 1 THEN
- IF f_oa(commit_transaction,FALSE,arg_msg,1277,scid,taskid,taskcode,relcode,dscrp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- elseif billtype = 2 then
- IF uo_option_if_oa_buytask_dept = 1 AND uo_option_buytask_dept_secaudit = 1 THEN
- IF f_oa(commit_transaction,FALSE,arg_msg,4299,scid,taskid,taskcode,relcode,dscrp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer cancelsecpermit (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- DateTime nulldate
- Long ll_i
- If f_aps_mrp_cklock(arg_scid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If uo_option_if_oa_buytask = -1000 Then
- rslt = 0
- arg_msg = '选项:[228]材料采购订单使用审批流程,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_buytask_cl_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[092]材料采购订单二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_if_oa_buytask_cp = -1000 Then
- rslt = 0
- arg_msg = '选项:[229]成品采购订单使用审批流程,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_if_oa_buytask_dept = -1000 Then
- rslt = 0
- arg_msg = '选项:[423]非生产采购订单使用审批流程,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_buytask_cp_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[093]成品采购订单二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_buytask_dept_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[422]非生产采购订单二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- SetNull(nulldate)
- If arg_taskid <= 0 Then
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- Goto ext
- End If
- If getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If ctmint > 0 Then
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- Goto ext
- End If
- If billtype = 0 Then
- If uo_option_if_oa_buytask = 1 And uo_option_buytask_cl_secaudit = 1 And audit_buildtype = 0 Then
- If f_check_if_oaflow_caudit(arg_scid,arg_taskid,94,arg_msg ) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- ElseIf billtype = 1 Then
- If uo_option_if_oa_buytask_cp = 1 And uo_option_buytask_cp_secaudit = 1 And audit_buildtype = 0 Then
- If f_check_if_oaflow_caudit(arg_scid,arg_taskid,1277,arg_msg ) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- ElseIf billtype = 2 Then
- If uo_option_if_oa_buytask_dept = 1 And uo_option_buytask_dept_secaudit = 1 And audit_buildtype = 0 Then
- If f_check_if_oaflow_caudit(arg_scid,arg_taskid,4299,arg_msg ) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- End If
- If Status <> 4 Then
- rslt = 0
- arg_msg = "订单不是在初审状态,不可以撤审"
- Goto ext
- End If
- Update u_buyTask
- Set Status = 0,
- firpermitemp = '',
- firpermitdate = :nulldate
- Where TaskID = :arg_taskid
- And scid = :arg_scid
- And Status = 4 Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致采购订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- //将相关已完成的OA公文的状态设为作废
- If billtype = 0 Then
- If (uo_option_buytask_cl_secaudit = 1 And uo_option_if_oa_buytask = 1) Then
- Update oa_doc
- Set docflag = 12
- Where powerid = 94
- And scid = :arg_scid
- And billid = :arg_taskid
- //and docflag = 11
- Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新相关公文状态失败'+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- Elseif billtype = 1 then
- If (uo_option_buytask_cp_secaudit = 1 And uo_option_if_oa_buytask_cp = 1) Then
- Update oa_doc
- Set docflag = 12
- Where powerid = 1277
- And scid = :arg_scid
- And billid = :arg_taskid
- //and docflag = 11
- Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新相关公文状态失败'+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- elseif billtype = 2 then
- If (uo_option_buytask_dept_secaudit = 1 And uo_option_if_oa_buytask_dept = 1) Then
- Update oa_doc
- Set docflag = 12
- Where powerid = 4299
- And scid = :arg_scid
- And billid = :arg_taskid
- //and docflag = 11
- Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新相关公文状态失败'+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- End If
- it_newbegin = False
- it_updatebegin = False
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- ElseIf arg_ifcommit Then
- Commit Using commit_transaction;
- End If
- p_reset()
- Return (rslt)
- end function
- public function integer stopqty (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_stopqty, decimal arg_rebuyqty, string arg_stopreason, ref string arg_msg, boolean arg_commit);
- Int rslt = 1
- Long cnt
- Int li_flag
- DateTime null_dt
- Decimal ld_notconsignedqty
- Long ll_requestbuyid,ll_rqmxprintid
- Decimal ld_r_uqty,ld_r_consignedqty,ld_rebuyqty_ori
- DateTime server_datetime
- String ls_stopemp
- Decimal ld_uv_uqty,ld_uv_rebuyqty
- String ls_unit, ls_r_unit
- Decimal ld_rate, ld_r_rate, lde_adduqty, lde_r_rebuyqty_ori, lde_addqty
- String ls_status, ls_woodcode, ls_pcode,ls_mtrlcode
- Long ll_orderid, ll_mtrlid , ll_wrkgrpid
- Decimal lde_qty_tol, lde_addqty_order
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_requestbuy uo_rqbuy
- uo_rqbuy = Create uo_requestbuy
- //yyx 100306
- Long ll_ti,ll_rcnt
- //datastore ds_tmp_update
- //ds_tmp_update = Create datastore
- //ds_tmp_update.DataObject = 'ds_buytask_update_order'
- //ds_tmp_update.SetTransObject(sqlca)
- //yyx 100306
- datastore ds
- ds = Create datastore
- ds.DataObject = 'ds_orderrqmtrl_request_buytask'
- ds.SetTransObject(sqlca)
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF IsNull(arg_stopqty) THEN arg_stopqty = 0
- IF IsNull(arg_rebuyqty) THEN arg_rebuyqty = 0
- IF arg_stopqty < 0 THEN
- arg_msg = '订单终止数不能少于0,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF arg_rebuyqty > arg_stopqty THEN
- arg_msg = '重新采购数不能少于终止数,请检查'
- rslt = 0
- GOTO ext
- END IF
- //采购收货选质检模式, 检查订单是否有未审质检单 , 有这不能保持;
- IF sys_option_check_buyin = 1 THEN
- IF arg_stopqty <> 0 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_sptcheck_mx INNER JOIN
- u_sptcheck ON u_sptcheck_mx.billid = u_sptcheck.billid
- WHERE u_sptcheck.scid = :arg_scid
- AND u_sptcheck_mx.reltaskid = :arg_taskid
- AND u_sptcheck_mx.reltaskprintid = :arg_printid
- AND ( u_sptcheck.flag = 0 OR u_sptcheck.flag = 4)
- And u_sptcheck.billtype = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询是否有未终审质检单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "当前采购订单明细有未终审质检单,不能执行终止"
- GOTO ext
- END IF
- END IF
- END IF
- IF arg_stopqty = 0 THEN
- SetNull(server_datetime)
- ls_stopemp = ''
- ELSE
- ls_stopemp = publ_operator
- END IF
- SetNull(null_dt)
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- arg_msg = '订单只能在进行状态或自动完成状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_buyTaskMx.uQty - u_buyTaskMx.consignedqty,
- requestbuyid,
- rqmxprintid,
- rebuyqty,
- unit,
- rate,
- orderid,
- wrkGrpid,
- mtrlid,
- status,
- woodcode,
- pcode
- INTO :ld_notconsignedqty,
- :ll_requestbuyid,
- :ll_rqmxprintid,
- :ld_rebuyqty_ori,
- :ls_unit,
- :ld_rate,
- :ll_orderid,
- :ll_wrkGrpid,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_stopqty > ld_notconsignedqty THEN
- arg_msg = '明细物料'+arg_mtrlcode+'未收货数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能终止:'+String(arg_stopqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- IF ll_requestbuyid > 0 THEN
- //arg_stopqty,arg_rebuyqty - 采购单位, 更新申购要转成申购单位
- SELECT uqty,consignedqty,unit,rate
- INTO :ld_r_uqty,:ld_r_consignedqty,:ls_r_unit, :ld_r_rate
- FROM u_requestbuymx
- WHERE scid = :arg_scid
- AND requestbuyid = :ll_requestbuyid
- And printid = :ll_rqmxprintid Using commit_transaction ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料'+arg_mtrlcode+'相关申购单信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- lde_addqty = (arg_rebuyqty - ld_rebuyqty_ori) * ld_rate //库存单位
-
- IF ls_r_unit = ls_unit THEN //单位相同, 直接取订单数量
- lde_adduqty = arg_rebuyqty
- lde_r_rebuyqty_ori = ld_rebuyqty_ori
-
- ELSE
- //单位不同, 先转库存单位, 在转申购单位
- lde_adduqty = arg_rebuyqty * ld_rate
- lde_adduqty = lde_adduqty / ld_r_rate
- lde_r_rebuyqty_ori = ld_rebuyqty_ori * ld_rate
- lde_r_rebuyqty_ori = lde_r_rebuyqty_ori / ld_r_rate
-
- END IF
- lde_adduqty = lde_adduqty - lde_r_rebuyqty_ori //申购单位
-
-
- IF lde_adduqty > ld_r_consignedqty THEN
- rslt = 0
- arg_msg = '物料'+arg_mtrlcode+'相关申购单的已订货数为:'+String(ld_r_consignedqty,'#,##0.##########')+',不能重新采购:'+String(arg_rebuyqty,'#,##0.##########')
- GOTO ext
- END IF
-
- UPDATE u_requestbuymx
- SET consignedqty = consignedqty - :lde_adduqty
- WHERE scid = :arg_scid
- AND requestbuyid = :ll_requestbuyid
- And printid = :ll_rqmxprintid Using commit_transaction ;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'相关申购单的已订货数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_rqbuy.tryfinish(arg_scid,ll_requestbuyid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- IF billtype = 0 THEN
-
- //更新主计划订货数
- IF uo_option_update_rqmtrlqty_buy = 1 THEN
- ll_rcnt = ds.Retrieve(arg_scid,ll_requestbuyid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode, ll_orderid)
-
- lde_qty_tol = Abs(lde_addqty)
- FOR ll_ti = 1 To ll_rcnt
-
- IF lde_addqty > 0 THEN //增加终止
- IF ds.Object.u_orderrqmtrl_consignedqty[ll_ti] <= 0 THEN CONTINUE
- IF lde_qty_tol > ds.Object.u_orderrqmtrl_consignedqty[ll_ti] THEN
- lde_addqty_order = ds.Object.u_orderrqmtrl_consignedqty[ll_ti]
- lde_qty_tol -= lde_addqty_order
- ELSE
- lde_addqty_order = lde_qty_tol
- lde_qty_tol = 0
- END IF
-
- lde_addqty_order = 0 - lde_addqty_order
- ELSE //取消终止
- IF ds.Object.u_orderrqmtrl_truerqqty[ll_ti] <= ds.Object.u_orderrqmtrl_consignedqty[ll_ti] THEN CONTINUE
- IF lde_qty_tol > ds.Object.u_orderrqmtrl_truerqqty[ll_ti] - ds.Object.u_orderrqmtrl_consignedqty[ll_ti] THEN
- lde_addqty_order = ds.Object.u_orderrqmtrl_truerqqty[ll_ti] - ds.Object.u_orderrqmtrl_consignedqty[ll_ti]
- lde_qty_tol -= lde_addqty_order
- ELSE
- lde_addqty_order = lde_qty_tol
- lde_qty_tol = 0
- END IF
-
- lde_addqty_order = lde_addqty_order
- END IF
-
- IF uo_order.f_assign_rqmtrlqty(ds.Object.u_orderrqmtrl_scid[ll_ti],ds.Object.u_orderrqmtrl_orderid[ll_ti],&
- ds.Object.u_orderrqmtrl_wrkGrpid[ll_ti],ll_mtrlid,ls_mtrlcode,&
- ls_status,ls_woodcode,ls_pcode,lde_addqty_order,2,arg_msg,False) = 0 THEN
- arg_msg = '订单明细,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF lde_qty_tol = 0 THEN EXIT
- NEXT
- END IF
- // IF ll_orderid > 0 THEN
- // IF uo_order.f_assign_rqmtrlqty(arg_scid,ll_orderid,ll_wrkgrpid,&
- // ll_mtrlid,ls_mtrlcode,ls_status,&
- // ls_woodcode,ls_pcode, 0 - lde_addqty,2,arg_msg,False) = 0 THEN
- // arg_msg = '订单明细,'+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // ELSE
- // //YYX 100305
- // IF ll_requestbuyid > 0 And uo_option_requestbuy_hz = 1 THEN
- // ll_rcnt = ds_tmp_update.Retrieve(arg_scid,ll_requestbuyid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode)
- // lde_qty_tol = Abs(lde_addqty)
- // FOR ll_ti = 1 To ll_rcnt
- //
- // IF lde_qty_tol > ds_tmp_update.Object.qty[ll_ti] THEN
- // lde_addqty_order = ds_tmp_update.Object.qty[ll_ti]
- // lde_qty_tol -= lde_addqty_order
- // ELSE
- // lde_addqty_order = lde_qty_tol
- // lde_qty_tol = 0
- // END IF
- //
- // IF lde_addqty > 0 THEN //增加终止
- // lde_addqty_order = 0 - lde_addqty_order
- // ELSE //取消终止
- // lde_addqty_order = lde_addqty_order
- // END IF
- // IF uo_order.f_assign_rqmtrlqty(ds_tmp_update.Object.scid[ll_ti],ds_tmp_update.Object.orderid[ll_ti],&
- // ds_tmp_update.Object.wrkGrpid[ll_ti],ll_mtrlid,ls_mtrlcode,&
- // ls_status,ls_woodcode,ls_pcode,lde_addqty_order,2,arg_msg,False) = 0 THEN
- // arg_msg = '订单明细,'+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // NEXT
- // END IF
- // //buytaskmx[ll_i].qty - buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- // END IF
- END IF
- END IF
- UPDATE u_buytaskmx
- SET stopqty = :arg_stopqty,
- rebuyqty = :arg_rebuyqty,
- stopemp = :ls_stopemp,
- stopdate = :server_datetime,
- stopreason = :arg_stopreason
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新明细'+arg_mtrlcode+'中止标记失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF trycmplbuytask(arg_scid,arg_taskid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新明细完成状态
- IF finishmx(arg_scid, arg_taskid, arg_printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_commit THEN
- COMMIT Using commit_transaction ;
- END IF
- Destroy uo_rqbuy
- Destroy uo_order
- //Destroy ds_tmp_update
- Destroy ds
- RETURN rslt
- end function
- public function integer ue_splitqty (long arg_scid, long arg_taskid, long arg_printid, string arg_mtrlcode, decimal arg_splitqty, datetime arg_newdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Decimal ld_notconsignedqty,ld_uqty
- Long ll_new_pid
- IF IsNull(arg_splitqty) THEN arg_splitqty = 0
- IF arg_splitqty <= 0 THEN
- arG_MSG = '订单拆分数不能少于或等于0,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 THEN
- arG_MSG = '订单只能在进行状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT u_buyTaskMx.uQty - u_buyTaskMx.consignedqty - u_buyTaskMx.stopqty,
- u_buyTaskMx.uQty
- INTO :ld_notconsignedqty,
- :ld_uqty
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询明细物料'+arg_mtrlcode+'未完成数失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_splitqty > ld_notconsignedqty THEN
- arG_MSG = '明细物料'+arg_mtrlcode+'未收货数只有:'+String(ld_notconsignedqty,'#,##0.##########') +'不能拆分:'+String(arg_splitqty,'#,##0.##########')
- rslt = 0
- GOTO ext
- END IF
- IF arg_splitqty = ld_uqty THEN
- rslt = 0
- arG_MSG = '拆分数不能与采购数量相同'
- GOTO ext
- END IF
- SELECT max(printid)
- INTO :ll_new_pid
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '查询明细行ID失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ll_new_pid = ll_new_pid + 1
- INSERT INTO u_buytaskmx
- ( scid,
- qty,
- price,
- mtrlid,
- taskid,
- dscrp,
- printid,
- fprice,
- rebate,
- requiredate,
- orderid,
- storageid,
- status,
- iforder,
- sptmtrlname,
- unit,
- rate,
- uqty,
- uprice,
- woodcode,
- pcode,
- rqmxprintid,
- requestbuyid,
- relrqbuycode,
- wrkGrpid,
- taskmxprintid,
- enprice)
- SELECT scid,
- :arg_splitqty * rate,
- price,
- mtrlid,
- taskid,
- dscrp,
- :ll_new_pid,
- fprice,
- rebate,
- :arg_newdate,
- orderid,
- storageid,
- status,
- iforder,
- sptmtrlname,
- unit,
- rate,
- :arg_splitqty,
- uprice,
- woodcode,
- pcode,
- rqmxprintid,
- requestbuyid,
- relrqbuycode,
- wrkGrpid,
- taskmxprintid,
- enprice
- FROM u_buyTaskMx
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '插入新明细行失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_buyTaskMx
- SET uqty = uqty - :arg_splitqty,
- qty = qty - :arg_splitqty * rate
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- arG_MSG = '更新原明细行数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction ;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction ;
- END IF
- RETURN rslt
- end function
- public function integer addmx_sptcheckqty (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- IF uo_option_ifovertask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[010]超采购,外协订单收货,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "采购订单只有在进行状态下才可以执行质检"
- ELSEIF status <> 5 THEN
- arg_msg = "采购订单只有在完成状态下才可以撤销质检"
- END IF
- GOTO ext
- END IF
- Decimal ld_qty,ld_sptcheckqty
- Long ll_mtrlid
- String ls_mtrlcode
- Decimal ld_uprate,ld_upqty,ld_stopqty
- SELECT u_mtrldef.mtrlcode,
- u_buytaskmx.qty,
- u_buytaskmx.sptcheckqty,
- u_buytaskmx.stopqty,
- u_buytaskmx.mtrlid
- INTO :ls_mtrlcode,
- :ld_qty,
- :ld_sptcheckqty,
- :ld_stopqty,
- :ll_mtrlid
- FROM u_mtrldef,u_buytaskmx
- WHERE u_mtrldef.mtrlid = u_buytaskmx.mtrlid
- AND u_buytaskmx.scid = :arg_scid
- AND u_buytaskmx.taskid = :arg_taskid
- AND u_buytaskmx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uo_option_ifovertask = 1 THEN //不允许超收
- IF ld_qty < ld_sptcheckqty + arg_addqty + ld_stopqty THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"未质检数量只有"+String(ld_qty - ld_sptcheckqty - ld_stopqty,'#,##0.0#########')+",不能质检"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
- ELSEIF uo_option_ifovertask = 3 THEN //允许超收但按比例限制
- SELECT uprate , upqty
- INTO :ld_uprate,:ld_upqty
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+Trim(ls_mtrlcode)+'超收货比例失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_qty * (1 + ld_uprate) + ld_upqty < ld_sptcheckqty + arg_addqty + ld_stopqty THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"未完成数量只有"+String(ld_qty - ld_sptcheckqty - ld_stopqty, '#,##0.0#########')+"允许超收上限:"+String(ld_qty * (1 + ld_uprate) + ld_upqty - ld_sptcheckqty - ld_stopqty,'#,##0.0#########')+",不能入库"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
-
- END IF
- IF arg_addqty < 0 And arg_addqty + ld_sptcheckqty < 0 THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"已质检数量只有"+String(ld_sptcheckqty, '#,##0.0###')+",不能撤审质检数量"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
- UPDATE u_buytaskmx
- SET sptcheckqty = sptcheckqty + :arg_addqty
- WHERE ( u_buytaskmx.taskid = :arg_taskid ) AND
- ( u_buytaskmx.printid = :arg_printid ) AND
- ( u_buytaskmx.scid = :arg_scid) AND
- ( u_buytaskmx.stopflag = 0 ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致采购订单完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer finishmx (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF arg_printid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单明细ID唯一码'
- GOTO ext
- END IF
- Int li_status, li_stopflag
- Int li_finishflag = 0
- String ls_finishemp
- DateTime ldt_finishdate
- Decimal ls_buyqty,ls_consignedqty
- Long ll_mtrlid
- Decimal ld_upqty,ld_stopqty
-
- SELECT status
- INTO :li_status
- FROM u_buytask
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询采购订单状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF li_status = 5 Or li_status = 6 Or li_status = 3 THEN
- li_finishflag = 1
- ls_finishemp = publ_operator
- ldt_finishdate = DateTime(Today(), Now())
- ELSE
-
- SELECT u_buytaskmx.mtrlid,
- u_buytaskmx.uqty,
- u_buytaskmx.consignedqty,
- u_buytaskmx.stopqty,
- u_buytaskmx.stopflag
- INTO :ll_mtrlid,
- :ls_buyqty,
- :ls_consignedqty,
- :ld_stopqty,
- :li_stopflag
- FROM u_mtrldef,u_buytaskmx
- WHERE u_mtrldef.mtrlid = u_buytaskmx.mtrlid
- AND u_buytaskmx.scid = :arg_scid
- AND u_buytaskmx.taskid = :arg_taskid
- AND u_buytaskmx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_stopflag = 1 THEN
- li_finishflag = 1
- ls_finishemp = publ_operator
- ldt_finishdate = DateTime(Today(), Now())
- ELSE
- IF ls_buyqty - ld_stopqty <= ls_consignedqty THEN
- li_finishflag = 1
- ls_finishemp = publ_operator
- ldt_finishdate = DateTime(Today(), Now())
- ELSE
- li_finishflag = 0
- ls_finishemp = ''
- SetNull(ldt_finishdate )
- END IF
- END IF
- END IF
- UPDATE u_buytaskmx
- SET finishflag = :li_finishflag,
- finishemp = :ls_finishemp,
- finishdate = :ldt_finishdate
- WHERE u_buytaskmx.scid = :arg_scid
- AND u_buytaskmx.taskid = :arg_taskid
- AND u_buytaskmx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新采购订单明细完成状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '更新采购订单明细信息不存在,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- //p_reset()
- Return (rslt)
- end function
- public function integer uof_disuse (long arg_scid, long arg_taskid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_disuseid
- //arg_disusetype 0 - 修改, 1-删除
- Select max(disuseid) Into :ll_disuseid
- From u_buyTask_disuse
- Where scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode = -1 Then
- rslt = 0
- arg_msg = '获取采购订单废弃单序号失败,'+ commit_transaction.SQLErrText
- Goto ext
- ElseIf commit_transaction.SQLCode = 100 Then
- ll_disuseid = 0
- End If
- if isnull(ll_disuseid) then ll_disuseid = 0
- ll_disuseid++
- Insert Into u_buyTask_disuse
- (scid, TaskID, TaskCode, orderid, kind, sptID, requiredate, accomplishdate, finishemp,
- Status, Opemp, Modemp, moddate, Assign_Emp, Permit_Emp, Permit_date, Dscrp,
- opdate, stopemp, ctmint, printnum, relcode, banktypeid, train, reason, billtype,
- firpermitemp, firpermitdate, billamt, moneyid, mrate, ConfirmTime, ConfirmUser,
- senduser, sendtime, sendcnt, sptcode, sptname, moneyname, banktypename,
- disuseid, disuseemp, disusedate, disusetype)
- Select u_buyTask.scid, u_buyTask.TaskID, u_buyTask.TaskCode, u_buyTask.orderid,
- u_buyTask.kind, u_buyTask.sptID, u_buyTask.requiredate,
- u_buyTask.accomplishdate, u_buyTask.finishemp, u_buyTask.Status,
- u_buyTask.Opemp, u_buyTask.Modemp, u_buyTask.moddate,
- u_buyTask.Assign_Emp, u_buyTask.Permit_Emp, u_buyTask.Permit_date,
- u_buyTask.Dscrp, u_buyTask.opdate, u_buyTask.stopemp, u_buyTask.ctmint,
- u_buyTask.printnum, u_buyTask.relcode, u_buyTask.banktypeid, u_buyTask.train,
- u_buyTask.reason, u_buyTask.billtype, u_buyTask.firpermitemp,
- u_buyTask.firpermitdate, u_buyTask.billamt, u_buyTask.moneyid, u_buyTask.mrate,
- u_buyTask.ConfirmTime, u_buyTask.ConfirmUser, u_buyTask.senduser,
- u_buyTask.sendtime, u_buyTask.sendcnt, u_spt.sptcode, u_spt.name,
- cw_currency.name, cw_banktype.banktypename,
- :ll_disuseid,:publ_operator,getdate(),:arg_disusetype
- From u_buyTask LEFT Outer JOIN
- cw_banktype ON
- u_buyTask.banktypeid = cw_banktype.banktypeid LEFT Outer JOIN
- cw_currency ON u_buyTask.moneyid = cw_currency.moneyid LEFT Outer JOIN
- u_spt ON u_buyTask.sptID = u_spt.sptid
- Where u_buyTask.scid = :arg_scid
- And u_buyTask.taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入采购订单废弃单失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- Insert Into u_buyTaskmx_disuse
- (scid, TaskID, printid, MtrlID, iforder, Qty, fprice, rebate, Price, AssignQty, status,
- dscrp, consignedqty, Requiredate, storageid, orderid, ctmint, sptmtrlname, uqty,
- uprice, unit, rate, stopflag, stopemp, stopdate, stopreason, woodcode, pcode,
- rqmxprintid, requestbuyid, relrqbuycode, wrkGrpid, taskmxprintid, sptbackdate,
- delayreason, stopqty, rebuyqty, buybargainid, buybargainprintid, buybargaincode,
- accomplishdate, admtrlid, relprintid, fpqty, ffpqty, autostopqty, enprice, tax,
- sptcheckqty, plancode, finishflag, finishemp, finishdate, mtrlcode, mtrlname, disuseid)
- Select u_buyTaskMx.scid, u_buyTaskMx.TaskID, u_buyTaskMx.printid,
- u_buyTaskMx.MtrlID, u_buyTaskMx.iforder, u_buyTaskMx.Qty, u_buyTaskMx.fprice,
- u_buyTaskMx.rebate, u_buyTaskMx.Price, u_buyTaskMx.AssignQty,
- u_buyTaskMx.status, u_buyTaskMx.dscrp, u_buyTaskMx.consignedqty,
- u_buyTaskMx.Requiredate, u_buyTaskMx.storageid, u_buyTaskMx.orderid,
- u_buyTaskMx.ctmint, u_buyTaskMx.sptmtrlname, u_buyTaskMx.uqty,
- u_buyTaskMx.uprice, u_buyTaskMx.unit, u_buyTaskMx.rate, u_buyTaskMx.stopflag,
- u_buyTaskMx.stopemp, u_buyTaskMx.stopdate, u_buyTaskMx.stopreason,
- u_buyTaskMx.woodcode, u_buyTaskMx.pcode, u_buyTaskMx.rqmxprintid,
- u_buyTaskMx.requestbuyid, u_buyTaskMx.relrqbuycode, u_buyTaskMx.wrkGrpid,
- u_buyTaskMx.taskmxprintid, u_buyTaskMx.sptbackdate, u_buyTaskMx.delayreason,
- u_buyTaskMx.stopqty, u_buyTaskMx.rebuyqty, u_buyTaskMx.buybargainid,
- u_buyTaskMx.buybargainprintid, u_buyTaskMx.buybargaincode,
- u_buyTaskMx.accomplishdate, u_buyTaskMx.admtrlid, u_buyTaskMx.relprintid,
- u_buyTaskMx.fpqty, u_buyTaskMx.ffpqty, u_buyTaskMx.autostopqty,
- u_buyTaskMx.enprice, u_buyTaskMx.tax, u_buyTaskMx.sptcheckqty,
- u_buyTaskMx.plancode, u_buyTaskMx.finishflag, u_buyTaskMx.finishemp,
- u_buyTaskMx.finishdate, u_mtrldef.mtrlcode, u_mtrldef.mtrlname,:ll_disuseid
- From u_buyTaskMx LEFT Outer JOIN
- u_mtrldef ON u_buyTaskMx.MtrlID = u_mtrldef.mtrlid
- Where u_buyTaskMx.scid = :arg_scid
- And u_buyTaskMx.taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入采购订单废弃单明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using commit_transaction;
- End If
- Return rslt
- end function
- public function integer uof_update_buyermemo (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_buyermemo, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- UPDATE u_buytaskmx
- SET buyermemo = :arg_buyermemo
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- AND printid = :arg_printid
- And mtrlid = :arg_mtrlid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新订单明细备忘录失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '要更新的数据不存在,可能已删除,请重新检查'
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_update_feedback (long arg_scid, long arg_taskid, s_buytaskmx_feedback_ljfieb arg_s_mx[], ref string arg_msg, boolean arg_ifcommit);Int rslt
- Long ll_i
- Int li_ifupdate = 0
- rslt = 1
- If UpperBound(arg_s_mx) <= 0 Then
- rslt = 0
- arg_msg = '没有反馈内容'
- Goto ext
- End If
- For ll_i = 1 To UpperBound(arg_s_mx)
- If arg_s_mx[ll_i].spt_uqty > 0 Then
- li_ifupdate = 1
- Exit
- End If
- Next
- If li_ifupdate = 0 Then
- rslt = 0
- arg_msg = '订单明细回复数量均为零,不能更新到原订单中'
- Goto ext
- End If
- If uo_option_disuse_buytask = -1000 Then
- rslt = 0
- arg_msg = '选项:[293]启用采购订单废弃单,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_unit_dec = -1000 Then
- rslt = 0
- arg_msg = '选项:[023]辅助单位转换库存单位小数位,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If status = 1 Then
- If cancelpermit(arg_scid,arg_taskid,arg_msg,False) = 0 Then
- arg_msg = '撤审采购订单失败:'+arg_msg
- rslt = 0
- Goto ext
- Else
- If cancelsecpermit(arg_scid,arg_taskid,arg_msg,True) = 0 Then
- arg_msg = '撤审采购订单失败:'+arg_msg
- rslt = 0
- Goto ext
- End If
- End If
- ElseIf status = 4 Then
- If cancelsecpermit(arg_scid,arg_taskid,arg_msg,True) = 0 Then
- arg_msg = '撤审采购订单失败:'+arg_msg
- rslt = 0
- Goto ext
- End If
- End If
- If uo_option_disuse_buytask = 1 Then
- If uof_disuse(scid,taskid,0,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- For ll_i = 1 To UpperBound(arg_s_mx)
- If arg_s_mx[ll_i].spt_uqty = 0 Then
- Delete From u_buytaskmx
- Where mtrlid = :arg_s_mx[ll_i].mtrlid
- And orderid = :arg_s_mx[ll_i].orderid
- And status = :arg_s_mx[ll_i].status
- And woodcode = :arg_s_mx[ll_i].woodcode
- And pcode = :arg_s_mx[ll_i].pcode
- And wrkgrpid = :arg_s_mx[ll_i].wrkgrpid
- And unit = :arg_s_mx[ll_i].unit
- And taskmxprintid = :arg_s_mx[ll_i].taskmxprintid
- And requestbuyid = :arg_s_mx[ll_i].requestbuyid
- And rqmxprintid = :arg_s_mx[ll_i].rqmxprintid
- And scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除采购订单明细操作失败"+"~n"+SQLCA.SQLErrText
- Goto ext
- End If
- Else
- Update u_buytaskmx
- Set uqty = :arg_s_mx[ll_i].spt_uqty,
- enprice = :arg_s_mx[ll_i].spt_enprice,
- requiredate = :arg_s_mx[ll_i].spt_requiredate,
- status = :arg_s_mx[ll_i].spt_status,
- woodcode = :arg_s_mx[ll_i].spt_woodcode,
- pcode = :arg_s_mx[ll_i].spt_pcode,
- dscrp = :arg_s_mx[ll_i].spt_dscrp,
- qty = round(:arg_s_mx[ll_i].spt_uqty / rate,:uo_option_unit_dec),
- uprice = :arg_s_mx[ll_i].spt_enprice * :mrate,
- fprice = Round((:arg_s_mx[ll_i].spt_enprice * :arg_s_mx[ll_i].spt_uqty * :mrate)/(Round(:arg_s_mx[ll_i].spt_uqty * rate,:uo_option_unit_dec)),10),
- price = fprice * rebate
- Where mtrlid = :arg_s_mx[ll_i].mtrlid
- And orderid = :arg_s_mx[ll_i].orderid
- And status = :arg_s_mx[ll_i].status
- And woodcode = :arg_s_mx[ll_i].woodcode
- And pcode = :arg_s_mx[ll_i].pcode
- And wrkgrpid = :arg_s_mx[ll_i].wrkgrpid
- And unit = :arg_s_mx[ll_i].unit
- And taskmxprintid = :arg_s_mx[ll_i].taskmxprintid
- And requestbuyid = :arg_s_mx[ll_i].requestbuyid
- And rqmxprintid = :arg_s_mx[ll_i].rqmxprintid
- And scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新采购订单明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
-
- Next
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Return rslt
- end function
- public function integer uof_update_requiredate (long arg_scid, long arg_taskid, long arg_printid, datetime arg_requiredate, string arg_reason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_ifmod
- Int cnt
- SELECT CASE when u_buytaskmx.requiredate2 Is Null THEN 0 ELSE 1 END
- Into :li_ifmod
- From u_buytaskmx
- Where taskid = :arg_taskid
- And printid = :arg_printid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询采购订单明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ////按计划的,已超期的,不能修改
- //Long ll_daynum
- //string ls_ordercodestr
- //SELECT CASE when u_buytaskmx.finishflag = 1 THEN DATEDIFF(dd, u_buytaskmx.finishdate, u_buytaskmx.requiredate) when u_buyTask.Status In ( 0 ,1,2,4) THEN DATEDIFF(dd, GETDATE(), u_buytaskmx.requiredate) ELSE DATEDIFF(dd, u_buyTask.accomplishdate, u_buytaskmx.requiredate) END as daynum, isnull(u_requestbuymx.ordercodestr,'') as ordercodestr
- // Into :ll_daynum, :ls_ordercodestr
- //From u_buyTask Inner join
- //u_buytaskmx On u_buyTask.scid = u_buytaskmx.scid
- //And u_buyTask.taskid = u_buytaskmx.taskid LEFT OUTER JOIN
- // u_requestbuymx ON u_buyTaskMx.scid = u_requestbuymx.scid AND
- // u_buyTaskMx.requestbuyid = u_requestbuymx.requestbuyid AND
- // u_buyTaskMx.rqmxprintid = u_requestbuymx.printid
- //Where u_buytaskmx.taskid = :arg_taskid
- //And u_buytaskmx.printid = :arg_printid
- //And u_buytaskmx.scid = :arg_scid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询采购订单信息失败,'+sqlca.SQLErrText
- // GOTO ext
- //END IF
- //
- //IF ll_daynum < 0 and ls_ordercodestr <> '' THEN
- // rslt = 0
- // arg_msg = '按主生产计划的采购订单,明细已经超期,不能修改'
- // GOTO ext
- //END IF
- IF li_ifmod = 0 THEN
- UPDATE u_buytaskmx
- SET requiredate2 = requiredate,
- requiredate = :arg_requiredate,
- modreason = :arg_reason,
- modemp = :publ_operator,
- moddate = getdate()
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid
- And scid = :arg_scid;
- ELSE
- UPDATE u_buytaskmx
- SET requiredate = :arg_requiredate,
- modreason = :arg_reason,
- modemp = :publ_operator,
- moddate = getdate()
- WHERE taskid = :arg_taskid
- AND printid = :arg_printid
- And scid = :arg_scid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新订单明细更改后交货日期失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer cstopbuytask (long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0, i
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 3 THEN
- rslt = 0
- ARG_MSG = "订单只有在终止状态才可以执行反终止,请核对"
- GOTO ext
- END IF
- UPDATE u_buyTask
- SET Status = 1,accomplishdate = null,stopemp = ''
- Where TaskID = :arg_taskid AND scid = :arg_scid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致反终止采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- //更新明细完成状态
- FOR i = 1 To it_mxbt
- IF finishmx(arg_scid, arg_taskid, buytaskmx[i].printid, ARG_MSG, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
-
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer acceptmx (integer arg_iforder, long arg_orderid, string arg_ordercode, long arg_mtrlid, decimal arg_uqty, decimal arg_enprice, decimal arg_rebate, decimal arg_planprice, string arg_dscrp, string arg_mtrlcode, ref string arg_msg, long arg_printid, datetime arg_requiredate, long arg_storageid, string arg_status, string arg_unit, decimal arg_rate, string arg_woodcode, string arg_pcode, long arg_requestbuyid, long arg_rqmxprintid, long arg_wrkgrpid, long arg_taskmxprintid, decimal arg_tax, string arg_plancode, string arg_jgdscrp);s_buytaskmx s_mx
- s_mx.iforder = arg_iforder
- s_mx.orderid = arg_orderid
- s_mx.ordercode = arg_ordercode
- s_mx.mtrlid = arg_mtrlid
- s_mx.uqty = arg_uqty
- s_mx.enprice = arg_enprice
- s_mx.rebate = arg_rebate
- s_mx.planprice = arg_planprice
- s_mx.dscrp = arg_dscrp
- s_mx.mtrlcode = arg_mtrlcode
- s_mx.printid = arg_printid
- s_mx.Requiredate = arg_requiredate
- s_mx.storageid = arg_storageid
- s_mx.status = arg_status
- s_mx.unit = arg_unit
- s_mx.rate = arg_rate
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.requestbuyid = arg_requestbuyid
- s_mx.rqmxprintid = arg_rqmxprintid
- s_mx.wrkgrpid = arg_wrkgrpid
- s_mx.taskmxprintid = arg_taskmxprintid
- s_mx.tax = arg_tax
- s_mx.plancode = arg_plancode
- s_mx.jgdscrp = arg_jgdscrp
- //s_mx.dscrp2 = arg_dscrp2
-
- return acceptmx(s_mx, arg_msg)
- //
- //
- //Int rslt = 1
- //Long cnt = 0,ls_i
- //Int li_mtrlkind,li_iffp
- //Int li_iflimitprice
- //Int li_statusflag,li_outtype,li_ifpackpro
- //String ls_relrqbuycode
- //Decimal ld_uprate,ld_upqty
- //String ls_sptmtrlname
- //Int li_buydec, li_buy_ceiling, li_buyunit
- //Int li_flag, li_issuliao
- //
- //uo_spt_price uo_sptprice
- //uo_sptprice = Create uo_spt_price
- //
- //uo_spt_price uo_price
- //uo_price = Create uo_spt_price
- //
- //IF uo_option_change_status = '-1000' THEN
- // rslt = 0
- // arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- // GOTO ext
- //END IF
- //
- //IF uo_option_change_woodcode = '-1000' THEN
- // rslt = 0
- // arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- // GOTO ext
- //END IF
- //
- //IF uo_option_change_pcode = '-1000' THEN
- // rslt = 0
- // arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- // GOTO ext
- //END IF
- //
- //IF uo_option_buyprice_buytask_notlimit = -1000 THEN
- // rslt = 0
- // arg_msg = '选项:[079]采购订单不限制价格,读取初始默认值失败,操作取消!'
- // GOTO ext
- //END IF
- //
- //IF uo_option_update_rqmtrlqty_buy = -1000 THEN
- // rslt = 0
- // arg_msg = '选项:[342]采购订单保存审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- // GOTO ext
- //END IF
- //
- ////IF uo_option_unit_dec = -1000 THEN
- //// rslt = 0
- //// arg_msg = '选项:[023]辅助单位转换库存单位小数位,读取初始默认值失败,操作取消!'
- //// GOTO ext
- ////END IF
- //
- //IF it_newbegin = False And it_updatebegin = False THEN
- // rslt = 0
- // arg_msg = "非编辑状态不可以使用,操作取消"
- // GOTO ext
- //END IF
- //
- ////清除空值
- //IF IsNull(arg_iforder) THEN arg_iforder = 1
- //IF IsNull(arg_orderid) THEN arg_orderid = 0
- //IF IsNull(arg_ordercode) THEN arg_ordercode = ''
- //IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- //IF IsNull(arg_uqty) THEN arg_uqty = 0
- //IF IsNull(arg_enprice) THEN arg_enprice = 0
- //IF IsNull(arg_rebate) THEN arg_rebate = 1
- //IF IsNull(arg_planprice) THEN arg_planprice = 0
- //IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- //IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- //IF IsNull(arg_printid) THEN arg_printid = 0
- //IF IsNull(arg_storageid) THEN arg_storageid = 0
- //IF IsNull(arg_status) THEN arg_status = ''
- //IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- //IF IsNull(arg_pcode) THEN arg_pcode = ''
- //IF IsNull(arg_unit) THEN arg_unit = ''
- //IF IsNull(arg_rate) THEN arg_rate = 1
- //IF arg_rate = 0 THEN arg_rate = 1
- //IF IsNull(arg_requestbuyid) THEN arg_requestbuyid = 0
- //IF IsNull(arg_rqmxprintid) THEN arg_rqmxprintid = 0
- //IF IsNull(arg_wrkgrpid) THEN arg_wrkgrpid = 0
- //IF IsNull(arg_taskmxprintid) THEN arg_taskmxprintid = 0
- //IF IsNull(arg_tax) THEN arg_tax = 0
- //IF IsNull(arg_jgdscrp) THEN arg_jgdscrp = ''
- //
- ////if arg_rebate = 0 then arg_rebate = 1
- //
- //IF arg_mtrlid = 0 Or arg_uqty = 0 THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- // rslt = 1
- // GOTO ext
- //END IF
- //
- //
- //IF f_check_status(1,arg_status) = 0 THEN
- // rslt = 0
- // arg_msg = "查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
- // GOTO ext
- //END IF
- //
- //IF f_check_status(2,arg_woodcode) = 0 THEN
- // rslt = 0
- // arg_msg = "查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
- // GOTO ext
- //END IF
- //
- //IF f_check_status(3,arg_pcode) = 0 THEN
- // rslt = 0
- // arg_msg = "查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
- // GOTO ext
- //END IF
- //
- //IF sys_option_nostorageid_buy = 1 THEN
- // cnt = 0
- // SELECT count(*)
- // INTO :cnt
- // FROM u_storage
- // WHERE u_storage.storageid = :arg_storageid
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "查询操作失败,仓库编号"
- // GOTO ext
- // END IF
- //
- // IF cnt = 0 THEN
- // rslt = 0
- // arg_msg = "错误的仓库编号"
- // GOTO ext
- // END IF
- //END IF
- //
- //SELECT mtrlkind,
- // upbuyrate,
- // upbuyqty,
- // iffp,
- // iflimitprice,
- // statusflag,
- // outtype,
- // ifpackpro,
- // buyunit,
- // buydec,
- // buy_ceiling,
- // flag,
- // issuliao
- // INTO :li_mtrlkind,
- // :ld_uprate,
- // :ld_upqty,
- // :li_iffp,
- // :li_iflimitprice,
- // :li_statusflag,
- // :li_outtype,
- // :li_ifpackpro,
- // :li_buyunit,
- // :li_buydec,
- // :li_buy_ceiling,
- // :li_flag,
- // :li_issuliao
- // FROM u_mtrldef
- // WHERE u_mtrldef.mtrlid = :arg_mtrlid
- // Using commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "查询物料:"+arg_mtrlcode+',属性失败,'+commit_transaction.SQLErrText
- // GOTO ext
- //END IF
- //
- ////处理单位转换保留位数
- //IF li_buyunit = 0 THEN //不使用默认采购单位, 保留N位小数也使用
- // li_buydec = 10
- //END IF
- //
- //IF sys_option_audit_mtrl <> 0 THEN
- // IF li_flag <> 2 THEN
- // rslt = 0
- // arg_msg = "系统选项[297]限制,物料:"+arg_mtrlcode+',资料未审核,不能建单'
- // GOTO ext
- // END IF
- //END IF
- //
- ////ys特殊用法
- //IF li_issuliao = 5 Or li_issuliao = 8 THEN
- // IF arg_jgdscrp = "" THEN
- // rslt = 0
- // arg_msg = "行:"+String(arg_printid)+",物料:"+arg_mtrlcode+',请选择材质/密度'
- // GOTO ext
- // END IF
- //END IF
- //
- //IF arg_rebate <= 0 or arg_rebate > 1 THEN
- // arg_msg = '行:'+String(arg_printid)+',折扣错误,只能取范围(0, 1]'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF Date(requiredate) > Date(arg_requiredate) THEN
- // arg_msg = '交货日期不能在订货日期前'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //Dec ld_uqty,ld_consignedqty, lde_addqty, lde_rate_rq
- //String ls_unit_rq
- //
- //IF arg_iforder = 1 THEN
- // IF arg_requestbuyid = 0 THEN
- // arg_msg = '物料:'+arg_mtrlcode+',请选择申购单'
- // rslt = 0
- // GOTO ext
- // END IF
- //
- //
- //
- // SELECT u_requestbuy.requestbuycode, u_requestbuymx.uqty,u_requestbuymx.consignedqty,u_requestbuymx.unit,u_requestbuymx.rate
- // INTO :ls_relrqbuycode, :ld_uqty,:ld_consignedqty, :ls_unit_rq, :lde_rate_rq
- // FROM u_requestbuy,u_requestbuymx
- // WHERE u_requestbuy.scid = u_requestbuymx.scid
- // AND u_requestbuy.requestbuyid = u_requestbuymx.requestbuyid
- // AND u_requestbuymx.scid = :scid
- // AND u_requestbuymx.requestbuyid = :arg_requestbuyid
- // AND u_requestbuymx.printid = :arg_rqmxprintid
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arg_msg = "查询物料:"+arg_mtrlcode+'查询申购单号失败,'+commit_transaction.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF ls_unit_rq = arg_unit THEN //单位相同, 直接去订单数量
- // lde_addqty = arg_uqty
- // ELSE
- // //单位不同, 先转库存单位, 在转申购单位
- // lde_addqty = Round(arg_uqty * arg_rate,li_buydec)
- // lde_addqty = lde_addqty / lde_rate_rq
- // END IF
- //
- // IF Not f_power_ind(1405,sys_msg_pow) Or sys_power_issuper THEN
- // IF ld_uqty * (1 + ld_uprate) + ld_upqty < lde_addqty + ld_consignedqty THEN
- // rslt = 0
- // arg_msg = '物料:'+arg_mtrlcode+',申购单位:'+ls_unit_rq+',申购未完成数量:'+String(ld_uqty - ld_consignedqty,'#,##0.00##' )+',允许订货上限为:'+String(ld_uqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty,'#,##0.00##')+',少于本次完成数量:'+String(lde_addqty,'#,##0.00##')
- // GOTO ext
- // END IF
- // ELSE
- // IF ld_uqty < lde_addqty + ld_consignedqty THEN
- // rslt = 0
- // arg_msg = '物料:'+arg_mtrlcode+',申购单位:'+ls_unit_rq+',申购未完成数量:'+String(ld_uqty - ld_consignedqty,'#,##0.00##' )+',少于本次完成数量:'+String(lde_addqty,'#,##0.00##')
- //
- // IF ld_uprate > 0 Or ld_uprate > 0 THEN
- // arg_msg += '~r~n你没有超申购的权限'
- // END IF
- // GOTO ext
- // END IF
- // END IF
- //
- // IF uo_option_update_rqmtrlqty_buy = 1 THEN
- // IF arg_orderid > 0 And billtype = 0 THEN
- // IF li_mtrlkind = 1 THEN
- // arg_msg = '物料:'+arg_mtrlcode+',mrp属性设为不按计划,所以不能选择计划'
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // Decimal ld_truerqqty
- //
- // ld_consignedqty = 0
- //
- // SELECT sum(truerqqty),sum(consignedqty)
- // INTO :ld_truerqqty,:ld_consignedqty
- // FROM u_orderrqmtrl
- // WHERE u_orderrqmtrl.orderid = :arg_orderid
- // AND u_orderrqmtrl.scid = :scid
- // AND u_orderrqmtrl.mtrlid = :arg_mtrlid
- // AND u_orderrqmtrl.status = :arg_status
- // AND u_orderrqmtrl.woodcode = :arg_woodcode
- // AND u_orderrqmtrl.pcode = :arg_pcode
- // AND u_orderrqmtrl.wrkgrpid = :arg_wrkgrpid
- // and u_orderrqmtrl.plantype = 2
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询生产计划:'+arg_ordercode+',物料:'+arg_mtrlcode+'需求未安排数失败,'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // //默认库存单位
- // lde_addqty = Round(arg_uqty * arg_rate,li_buydec)
- //
- // IF Not f_power_ind(1405,sys_msg_pow) Or sys_power_issuper THEN
- // IF ld_truerqqty * (1 + ld_uprate) + ld_upqty < (lde_addqty + ld_consignedqty) THEN
- // rslt = 0
- // arg_msg = '生产计划:'+arg_ordercode+',物料:'+arg_mtrlcode+'需求未安排数只有:'+String(ld_truerqqty - ld_consignedqty,'#,##0.0####' )+',允许订货上限为:'+String(ld_truerqqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty,'#,##0.00##')+',少于本次完成数量:'+String(lde_addqty,'#,##0.00##')
- // GOTO ext
- // END IF
- // ELSE
- // IF lde_addqty > ld_truerqqty - ld_consignedqty THEN
- // arg_msg = '生产计划:'+arg_ordercode+',物料:'+arg_mtrlcode+'需求未安排数只有:'+String(ld_truerqqty - ld_consignedqty,'#,##0.0####') + ',不能安排:'+String(lde_addqty,'#,##0.0####')
- //
- // IF ld_uprate > 0 Or ld_uprate > 0 THEN
- // arg_msg += '~r~n你没有超申购的权限'
- // END IF
- //
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
- // END IF
- // END IF
- //END IF
- //
- //IF li_statusflag = 2 And Trim(arg_status) = '' THEN
- // rslt = 0
- // arg_msg = '第'+String(arg_printid)+'行,物料:'+arg_mtrlcode+' 属于组合配置类型,但没有输入配置,请检查'
- // GOTO ext
- //END IF
- //
- //IF uo_sptprice.uof_check_limitprice(0,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,arg_unit,arg_enprice * mrate * arg_rebate,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF uo_option_buyprice_buytask_notlimit = 0 And li_iflimitprice = 1 THEN
- // IF uo_sptprice.uof_check_price(0,sptid,arg_mtrlid,arg_mtrlcode,arg_unit,arg_status,arg_woodcode,arg_pcode,'',moneyid,arg_enprice * mrate * arg_rebate,requiredate,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- //
- ////查询合同号
- //Long ll_buybargainid, ll_buybargainprintid
- //String ls_buybargaincode
- //IF uo_sptprice.uof_getmtrlsptbuybargain(moneyid, sptid, arg_mtrlid,arg_unit,arg_status,arg_woodcode,arg_pcode,arg_jgdscrp,&
- // ll_buybargainid, ll_buybargainprintid, ls_buybargaincode,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- ////查询最后一次收货价
- //String ls_lastcode
- //DateTime ldt_lastdate
- //Decimal lde_lastprice
- //
- //SELECT top 1 u_inware.inwarecode,u_inware.indate,
- // u_inwaremx.uprice INTO
- // :ls_lastcode,:ldt_lastdate,:lde_lastprice
- // FROM u_inware INNER JOIN
- // u_inwareMx ON u_inware.inwareid = u_inwareMx.inwareid
- // WHERE u_inware.flag = 1 AND
- // u_inware.thflag = 0 AND
- // u_inwareMx.mtrlid = :arg_mtrlid AND
- // u_inwareMx.unit = :arg_unit AND
- // u_inwareMx.status = :arg_status AND
- // u_inwareMx.woodcode = :arg_woodcode AND
- // u_inwareMx.pcode = :arg_pcode AND
- // u_inware.sptid = :sptid
- // Order By u_inware.auditingdate Desc;
- //
- //IF sqlca.SQLCode <> 0 THEN
- // lde_lastprice = 0
- // ls_lastcode = ''
- // SetNull(ldt_lastdate)
- //END IF
- //
- //IF IsNull(lde_lastprice) THEN lde_lastprice = 0
- //IF IsNull(ls_lastcode) THEN ls_lastcode = ''
- ////IF IsNull(ldt_lastdate) THEN SetNull(ldt_lastdate)
- //
- ////
- //IF Round(arg_uqty * arg_rate,li_buydec) = 0 THEN
- // rslt = 0
- // arg_msg = '第'+String(arg_printid)+'行,转换成库存数量后数量为0,请检查~r~n'
- // arg_msg += "采购数量:"+String(arg_uqty, '#,##0.#########')+",转换率:"+String(arg_rate, '#,##0.#########')+",保留小数位数:"+String(li_buydec, '##0')
- // GOTO ext
- //END IF
- //
- //FOR ls_i = 1 To it_mxbt //合并重复项
- // IF buytaskmx[ls_i].mtrlid = arg_mtrlid And &
- // buytaskmx[ls_i].orderid = arg_orderid And &
- // Date(buytaskmx[ls_i].requiredate) = Date(arg_requiredate) And &
- // buytaskmx[ls_i].status = arg_status And &
- // buytaskmx[ls_i].woodcode = arg_woodcode And &
- // buytaskmx[ls_i].pcode = arg_pcode And &
- // buytaskmx[ls_i].wrkgrpid = arg_wrkgrpid And &
- // buytaskmx[ls_i].unit = arg_unit And &
- // buytaskmx[ls_i].taskmxprintid = arg_taskmxprintid And &
- // buytaskmx[ls_i].requestbuyid = arg_requestbuyid And &
- // buytaskmx[ls_i].rqmxprintid = arg_rqmxprintid And &
- // buytaskmx[ls_i].plancode = arg_plancode THEN
- //
- // buytaskmx[ls_i].uqty = buytaskmx[ls_i].uqty+arg_uqty
- // buytaskmx[ls_i].qty = buytaskmx[ls_i].qty+Round(arg_uqty * arg_rate,li_buydec)
- // rslt = 1
- // GOTO ext
- // END IF
- //NEXT
- //
- //
- ////写入内容
- //it_mxbt++
- //buytaskmx[it_mxbt].iforder = arg_iforder
- //buytaskmx[it_mxbt].orderid = arg_orderid
- //buytaskmx[it_mxbt].ordercode = arg_ordercode
- //buytaskmx[it_mxbt].mtrlid = arg_mtrlid
- //buytaskmx[it_mxbt].uqty = arg_uqty
- //buytaskmx[it_mxbt].qty = Round(arg_uqty * arg_rate,li_buydec)
- //buytaskmx[it_mxbt].plprice = arg_planprice
- //buytaskmx[it_mxbt].dscrp = arg_dscrp
- //buytaskmx[it_mxbt].mtrlcode = arg_mtrlcode
- //buytaskmx[it_mxbt].printid = arg_printid
- //buytaskmx[it_mxbt].unit = arg_unit
- //buytaskmx[it_mxbt].rate = arg_rate
- //buytaskmx[it_mxbt].rebate = arg_rebate
- //buytaskmx[it_mxbt].enprice = arg_enprice //单价-外币-采购单位
- //buytaskmx[it_mxbt].uprice = arg_enprice * mrate //单价-本位币-采购单位
- //buytaskmx[it_mxbt].fprice = Round((arg_enprice * arg_uqty * mrate)/(Round(arg_uqty * arg_rate,li_buydec)),10) //单价-本位币-库存单位
- //buytaskmx[it_mxbt].acprice = buytaskmx[it_mxbt].fprice * arg_rebate //折后单价-本位币-库存单位
- //buytaskmx[it_mxbt].requiredate = arg_requiredate
- //buytaskmx[it_mxbt].status = arg_status
- //buytaskmx[it_mxbt].woodcode = arg_woodcode
- //buytaskmx[it_mxbt].pcode = arg_pcode
- //buytaskmx[it_mxbt].storageid = arg_storageid
- //buytaskmx[it_mxbt].tax = arg_tax
- //billamt = billamt + Round(arg_enprice * arg_uqty * arg_rebate,2)
- //
- //buytaskmx[it_mxbt].requestbuyid = arg_requestbuyid
- //buytaskmx[it_mxbt].rqmxprintid = arg_rqmxprintid
- //buytaskmx[it_mxbt].relrqbuycode = ls_relrqbuycode
- //buytaskmx[it_mxbt].wrkgrpid = arg_wrkgrpid
- //buytaskmx[it_mxbt].taskmxprintid = arg_taskmxprintid
- //
- //IF uo_price.uof_getmtrlname(sptid,arg_mtrlid,ls_sptmtrlname,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //buytaskmx[it_mxbt].sptmtrlname = ls_sptmtrlname
- //buytaskmx[it_mxbt].iffp = li_iffp
- //buytaskmx[it_mxbt].outtype = li_outtype
- //buytaskmx[it_mxbt].ifpackpro = li_ifpackpro
- //
- //buytaskmx[it_mxbt].plancode = arg_plancode
- //
- //buytaskmx[it_mxbt].buybargainid = ll_buybargainid
- //buytaskmx[it_mxbt].buybargainprintid = ll_buybargainprintid
- //buytaskmx[it_mxbt].buybargaincode = ls_buybargaincode
- //
- //buytaskmx[it_mxbt].jgdscrp = arg_jgdscrp
- //
- //buytaskmx[it_mxbt].lastcode = ls_lastcode
- //buytaskmx[it_mxbt].lastdate = ldt_lastdate
- //buytaskmx[it_mxbt].lastprice = lde_lastprice
- //
- //ext:
- //IF rslt = 0 THEN p_clearmx()
- //
- //Destroy uo_sptprice
- //Destroy uo_price
- //
- //Return(rslt)
- //
- //
- //
- //
- //
- //
- end function
- public function integer stopbuytask (long arg_scid, long arg_taskid, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0, i
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_taskid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Status <> 1 THEN
- rslt = 0
- ARG_MSG = "订单只有在进行状态才可以执行终止,请核对"
- GOTO ext
- END IF
- arg_stopreason = Trim(arg_stopreason)
- IF arg_stopreason = '' THEN
- rslt = 0
- ARG_MSG = "请输入终止原因"
- GOTO ext
- END IF
- UPDATE u_buyTask
- SET Status = 3,
- accomplishdate = getdate(),
- stopemp = :publ_operator,
- stopreason = :arg_stopreason
- Where TaskID = :arg_taskid And scid = :arg_scid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致终止采购订单操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK Using commit_transaction;
- GOTO ext
- END IF
- //更新明细完成状态
- FOR i = 1 To it_mxbt
- IF finishmx(arg_scid, arg_taskid, buytaskmx[i].printid, ARG_MSG, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
-
- END IF
- p_reset()
- Return (rslt)
- end function
- public function integer mod_price (long arg_scid, long arg_taskid, long arg_printid, decimal arg_enprice, decimal arg_rebate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status = 0 THEN
- rslt = 0
- arg_msg = '采购订单待审核状态下不能执行修改单价功能'
- GOTO ext
- END IF
- Decimal ld_enprice,ld_uprice,ld_uqty,ld_rate,ld_qty,ld_rebate, ld_fprice, ld_price
- Long ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode,ls_plancode
- int li_buydec, li_buy_ceiling
- SELECT u_buytaskmx.enprice,
- u_buytaskmx.uprice,
- u_buytaskmx.fprice,
- u_buytaskmx.price,
- u_buytaskmx.uqty,
- u_buytaskmx.rate,
- u_buytaskmx.qty,
- u_buytaskmx.rebate,
- u_buytaskmx.mtrlid,
- u_buytaskmx.status,
- u_buytaskmx.woodcode,
- u_buytaskmx.pcode,
- u_mtrldef.buydec,
- u_mtrldef.buy_ceiling
- INTO :ld_enprice,
- :ld_uprice,
- :ld_fprice,
- :ld_price,
- :ld_uqty,
- :ld_rate,
- :ld_qty,
- :ld_rebate,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :li_buydec,
- :li_buy_ceiling
- FROM u_buytaskmx inner join u_mtrldef
- on u_buytaskmx.mtrlid = u_mtrldef.mtrlid
- WHERE u_buytaskmx.scid = :arg_scid
- AND u_buytaskmx.taskid = :arg_taskid
- AND u_buytaskmx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询采购订单明细内容失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- if arg_rebate = -1 then arg_rebate = ld_rebate
- IF arg_enprice = ld_enprice and arg_rebate = ld_rebate THEN
- rslt = 0
- arg_msg = '单价和折扣没有任何修改,不能保存'
- GOTO ext
- END IF
- Decimal ld_enprice_new, ld_uprice_new,ld_fprice_new,ld_price_new, lde_billamt
- ld_enprice_new = arg_enprice
- ld_uprice_new = Round(arg_enprice * mrate,10)
- ld_fprice_new = Round((ld_uprice_new * ld_uqty)/(Round(ld_uqty * ld_rate,li_buydec)),10)
- ld_price_new = ld_fprice_new * arg_rebate
- UPDATE u_buytaskmx
- SET enprice = :arg_enprice,
- uprice = :ld_uprice_new,
- fprice = :ld_fprice_new,
- price = :ld_price_new,
- rebate = :arg_rebate
- WHERE scid = :arg_scid
- AND taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据明细失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- INSERT INTO u_buytaskmx_modprice
- (scid, taskid, printid, enprice_old, uprice_old, fprice_old, price_old, enprice_new,
- uprice_new, fprice_new, price_new, mxdscrp, opdate, opemp,rebate_old, rebate_new)
- VALUES (:arg_scid, :arg_taskid,:arg_printid,
- :ld_enprice, :ld_uprice, :ld_fprice, :ld_price,
- :ld_enprice_new,:ld_uprice_new, :ld_fprice_new, :ld_price_new,
- '', getdate(), :publ_operator,:ld_rebate,:arg_rebate)Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入修改历史失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- SELECT sum(round(enprice * uqty * rebate, 2))
- INTO :lde_billamt
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据金额失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- UPDATE u_buytask
- SET billamt = :lde_billamt
- WHERE scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据金额失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_update_requiredate_chk (long arg_scid, long arg_taskid, long arg_printid, ref string arg_msg);Int rslt = 1
- Int li_ifmod
- Int cnt
- //按计划的,已超期的,不能修改
- Long ll_daynum
- string ls_ordercodestr
- SELECT CASE when u_buytaskmx.finishflag = 1 THEN DATEDIFF(dd, u_buytaskmx.finishdate, u_buytaskmx.requiredate) when u_buyTask.Status In ( 0 ,1,2,4) THEN DATEDIFF(dd, GETDATE(), u_buytaskmx.requiredate) ELSE DATEDIFF(dd, u_buyTask.accomplishdate, u_buytaskmx.requiredate) END as daynum, isnull(u_requestbuymx.ordercodestr,'') as ordercodestr
- Into :ll_daynum, :ls_ordercodestr
- From u_buyTask Inner join
- u_buytaskmx On u_buyTask.scid = u_buytaskmx.scid
- And u_buyTask.taskid = u_buytaskmx.taskid LEFT OUTER JOIN
- u_requestbuymx ON u_buyTaskMx.scid = u_requestbuymx.scid AND
- u_buyTaskMx.requestbuyid = u_requestbuymx.requestbuyid AND
- u_buyTaskMx.rqmxprintid = u_requestbuymx.printid
- Where u_buytaskmx.taskid = :arg_taskid
- And u_buytaskmx.printid = :arg_printid
- And u_buytaskmx.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询采购订单信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_daynum < 0 and ls_ordercodestr <> '' THEN
- rslt = 0
- arg_msg = '按主生产计划的采购订单,明细已经超期,不能修改'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_update_billamt (long arg_scid, long arg_taskid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- decimal lde_billamt
- Int cnt
- SELECT sum(round(enprice * uqty * rebate, 2))
- INTO :lde_billamt
- FROM u_buytaskmx
- WHERE scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据金额失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- UPDATE u_buytask
- SET billamt = :lde_billamt
- WHERE scid = :arg_scid
- And taskid = :arg_taskid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据金额失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- if rslt = 0 then
- rollback using commit_transaction;
- else
- commit using commit_transaction;
- end if
- RETURN rslt
- end function
- public function integer addmxcmpl (long arg_scid, long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- Decimal lde_qty_tol, lde_addqty_order
- IF f_aps_mrp_cklock(arg_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_ifovertask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[010]超采购,外协订单收货,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_requestbuy_hz = -1000 THEN
- rslt = 0
- arg_msg = '选项:[111]申购单汇总采购,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_buy = -1000 THEN
- rslt = 0
- arg_msg = '选项:[342]采购订单保存审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- //yyx 100306
- Long ll_ti,ll_rcnt
- datastore ds_tmp_update
- ds_tmp_update = Create datastore
- ds_tmp_update.DataObject = 'ds_buytask_update_order'
- ds_tmp_update.SetTransObject(sqlca)
- //yyx 100306
- datastore ds
- ds = Create datastore
- ds.DataObject = 'ds_orderrqmtrl_request_buytask'
- ds.SetTransObject(sqlca)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误采购订单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF status <> 1 And status <> 5 THEN
- rslt = 0
- IF status <> 1 THEN
- arg_msg = "采购订单只有在进行状态下才可以执行进仓"
- ELSEIF status <> 5 THEN
- arg_msg = "采购订单只有在完成状态下才可以撤消进仓"
- END IF
- GOTO ext
- END IF
- Decimal ls_buyqty,ls_consignedqty,ld_sum_consignedqty
- String ls_mtrlcode
- Long ll_orderid,ll_wrkGrpid,ll_mtrlid,ll_requestbuyid
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_uprate,ld_upqty,ld_stopqty, lde_rate
- SELECT u_mtrldef.mtrlcode,
- u_buytaskmx.orderid,
- u_buytaskmx.wrkGrpid,
- u_buytaskmx.mtrlid,
- u_buytaskmx.status,
- u_buytaskmx.woodcode,
- u_buytaskmx.pcode,
- u_buytaskmx.requestbuyid,
- u_buytaskmx.uqty,
- u_buytaskmx.consignedqty,
- u_buytaskmx.stopqty,
- u_buytaskmx.rate
- INTO :ls_mtrlcode,
- :ll_orderid,
- :ll_wrkGrpid,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ll_requestbuyid,
- :ls_buyqty,
- :ls_consignedqty,
- :ld_stopqty,
- :lde_rate
- FROM u_mtrldef,u_buytaskmx
- WHERE u_mtrldef.mtrlid = u_buytaskmx.mtrlid
- AND u_buytaskmx.scid = :arg_scid
- AND u_buytaskmx.taskid = :arg_taskid
- AND u_buytaskmx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细物料编码失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uo_option_ifovertask = 1 THEN //不允许超收
- IF ls_buyqty < ls_consignedqty + arg_addqty + ld_stopqty THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"未完成数量只有"+String(ls_buyqty - ls_consignedqty - ld_stopqty,'#,##0.0#########')+",不能入库"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
- ELSEIF uo_option_ifovertask = 3 THEN //允许超收但按比例限制
- SELECT uprate , upqty
- INTO :ld_uprate,:ld_upqty
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+Trim(ls_mtrlcode)+'超收货比例失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ls_buyqty * (1 + ld_uprate) + ld_upqty < ls_consignedqty + arg_addqty + ld_stopqty THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"未完成数量只有"+String(ls_buyqty - ls_consignedqty - ld_stopqty, '#,##0.0#########')+"允许超收上限:"+String(ls_buyqty * (1 + ld_uprate) + ld_upqty - ls_consignedqty - ld_stopqty,'#,##0.0#########')+",不能入库"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
-
- END IF
- IF arg_addqty < 0 And arg_addqty + ls_consignedqty < 0 THEN
- rslt = 0
- arg_msg = "物料:"+ls_mtrlcode+"已完成数量只有"+String(ls_consignedqty, '#,##0.0###')+",不能退货"+String(arg_addqty,'#,##0.0#########')
- GOTO ext
- END IF
- UPDATE u_buytaskmx
- SET consignedqty = consignedqty + :arg_addqty
- WHERE ( u_buytaskmx.taskid = :arg_taskid ) AND
- ( u_buytaskmx.printid = :arg_printid ) AND
- ( u_buytaskmx.scid = :arg_scid) AND
- ( u_buytaskmx.stopflag = 0 ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致采购订单完成数量操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //更新订单完成状态
- IF trycmplbuytask(arg_scid, arg_taskid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新明细完成状态
- IF finishmx(arg_scid, arg_taskid, arg_printid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- IF billtype = 0 THEN
- IF uo_option_update_rqmtrlqty_buy = 1 THEN
- ll_rcnt = ds.Retrieve(scid,ll_requestbuyid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode, ll_orderid)
-
- lde_qty_tol = Abs(arg_addqty * lde_rate) //- buytaskmx[ll_i].rebuyqty * buytaskmx[ll_i].rate
- FOR ll_ti = 1 To ll_rcnt
-
- IF arg_addqty > 0 THEN //增加收货
- IF ds.Object.u_orderrqmtrl_truerqqty[ll_ti] <= ds.Object.u_orderrqmtrl_inqty[ll_ti] THEN CONTINUE
- IF lde_qty_tol > ds.Object.u_orderrqmtrl_truerqqty[ll_ti] - ds.Object.u_orderrqmtrl_inqty[ll_ti] THEN
- lde_addqty_order = ds.Object.u_orderrqmtrl_truerqqty[ll_ti] - ds.Object.u_orderrqmtrl_inqty[ll_ti]
- lde_qty_tol -= lde_addqty_order
- ELSE
- lde_addqty_order = lde_qty_tol
- lde_qty_tol = 0
- END IF
-
- lde_addqty_order = lde_addqty_order
-
- ELSE //减少收货
- IF ds.Object.u_orderrqmtrl_inqty[ll_ti] <= 0 THEN CONTINUE
- IF lde_qty_tol > ds.Object.u_orderrqmtrl_inqty[ll_ti] THEN
- lde_addqty_order = ds.Object.u_orderrqmtrl_inqty[ll_ti]
- lde_qty_tol -= lde_addqty_order
- ELSE
- lde_addqty_order = lde_qty_tol
- lde_qty_tol = 0
- END IF
-
- lde_addqty_order = 0 - lde_addqty_order
- END IF
-
- IF uo_order.f_assign_inqty(ds.Object.u_orderrqmtrl_scid[ll_ti],ds.Object.u_orderrqmtrl_orderid[ll_ti],&
- ds.Object.u_orderrqmtrl_wrkGrpid[ll_ti],2,&
- ll_mtrlid,ls_mtrlcode,ls_status,&
- ls_woodcode,ls_pcode,lde_addqty_order,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- IF lde_qty_tol = 0 THEN EXIT
- NEXT
- END IF
- END IF
- //IF uo_option_update_rqmtrlqty_buy = 1 THEN
- // IF billtype = 0 THEN
- // IF ll_orderid > 0 THEN
- // Long ll_cnt_order
- // SELECT count(*) INTO :ll_cnt_order
- // FROM u_order_ml
- // WHERE scid = :scid
- // AND orderid = :ll_orderid
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // arg_msg = '查询相关订单明细:'+String(arg_printid)+',相关生产计划失败'
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF ll_cnt_order > 0 THEN
- // IF uo_order.f_assign_inqty(scid,ll_orderid,ll_wrkGrpid,2,&
- // ll_mtrlid,ls_mtrlcode,ls_status,&
- // ls_woodcode,ls_pcode,arg_addqty,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // arg_msg = uo_order.arg_msg_str
- //
- // END IF
- // ELSE
- // //yyx 100305
- //
- // IF ll_requestbuyid > 0 And uo_option_requestbuy_hz = 1 THEN
- // ll_rcnt = ds_tmp_update.Retrieve(scid,ll_requestbuyid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode)
- //
- // FOR ll_ti = 1 To ll_rcnt
- // IF uo_order.f_assign_inqty(ds_tmp_update.Object.scid[ll_ti],ds_tmp_update.Object.orderid[ll_ti],&
- // ds_tmp_update.Object.wrkGrpid[ll_ti],2,&
- // ll_mtrlid,ls_mtrlcode,ls_status,&
- // ls_woodcode,ls_pcode,arg_addqty,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // NEXT
- //
- // arg_msg = uo_order.arg_msg_str
- // END IF
- // //
- // END IF
- // END IF
- //END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- Destroy ds_tmp_update
- Destroy ds
- p_reset()
- Return (rslt)
- end function
- public function integer acceptmx (s_buytaskmx s_mx, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ls_i
- Int li_mtrlkind,li_iffp
- Int li_iflimitprice
- Int li_statusflag,li_outtype,li_ifpackpro
- String ls_relrqbuycode
- Decimal ld_uprate,ld_upqty
- String ls_sptmtrlname
- Int li_buydec, li_buy_ceiling, li_buyunit
- Int li_flag, li_issuliao
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- uo_spt_price uo_price
- uo_price = Create uo_spt_price
- IF uo_option_change_status = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buyprice_buytask_notlimit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[079]采购订单不限制价格,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_update_rqmtrlqty_buy = -1000 THEN
- rslt = 0
- arg_msg = '选项:[342]采购订单保存审核检查并更新生产计划采购需求已订货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- //IF uo_option_unit_dec = -1000 THEN
- // rslt = 0
- // arg_msg = '选项:[023]辅助单位转换库存单位小数位,读取初始默认值失败,操作取消!'
- // GOTO ext
- //END IF
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(s_mx.iforder) THEN s_mx.iforder = 1
- IF IsNull(s_mx.orderid) THEN s_mx.orderid = 0
- IF IsNull(s_mx.ordercode) THEN s_mx.ordercode = ''
- IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
- IF IsNull(s_mx.uqty) THEN s_mx.uqty = 0
- IF IsNull(s_mx.enprice) THEN s_mx.enprice = 0
- IF IsNull(s_mx.rebate) THEN s_mx.rebate = 1
- IF IsNull(s_mx.planprice) THEN s_mx.planprice = 0
- IF IsNull(s_mx.dscrp) THEN s_mx.dscrp = ''
- IF IsNull(s_mx.dscrp2) THEN s_mx.dscrp2 = ''
- IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = ''
- IF IsNull(s_mx.printid) THEN s_mx.printid = 0
- IF IsNull(s_mx.storageid) THEN s_mx.storageid = 0
- IF IsNull(s_mx.status) THEN s_mx.status = ''
- IF IsNull(s_mx.woodcode) THEN s_mx.woodcode = ''
- IF IsNull(s_mx.pcode) THEN s_mx.pcode = ''
- IF IsNull(s_mx.unit) THEN s_mx.unit = ''
- IF IsNull(s_mx.rate) THEN s_mx.rate = 1
- IF s_mx.rate = 0 THEN s_mx.rate = 1
- IF IsNull(s_mx.requestbuyid) THEN s_mx.requestbuyid = 0
- IF IsNull(s_mx.rqmxprintid) THEN s_mx.rqmxprintid = 0
- IF IsNull(s_mx.wrkgrpid) THEN s_mx.wrkgrpid = 0
- IF IsNull(s_mx.taskmxprintid) THEN s_mx.taskmxprintid = 0
- IF IsNull(s_mx.tax) THEN s_mx.tax = 0
- IF IsNull(s_mx.jgdscrp) THEN s_mx.jgdscrp = ''
- //if s_mx.rebate = 0 then s_mx.rebate = 1
- IF s_mx.mtrlid = 0 Or s_mx.uqty = 0 THEN // 如果进仓数量为 0,或物料编号为空,则不作任何处理
- rslt = 1
- GOTO ext
- END IF
- IF f_check_status(1,s_mx.status) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+s_mx.mtrlcode+",内容:"+s_mx.status
- GOTO ext
- END IF
- IF f_check_status(2,s_mx.woodcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+s_mx.mtrlcode+",内容:"+s_mx.woodcode
- GOTO ext
- END IF
- IF f_check_status(3,s_mx.pcode) = 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+s_mx.mtrlcode+",内容:"+s_mx.pcode
- GOTO ext
- END IF
- IF sys_option_nostorageid_buy = 1 THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_storage
- WHERE u_storage.storageid = :s_mx.storageid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库编号"
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的仓库编号"
- GOTO ext
- END IF
- END IF
- SELECT mtrlkind,
- upbuyrate,
- upbuyqty,
- iffp,
- iflimitprice,
- statusflag,
- outtype,
- ifpackpro,
- buyunit,
- buydec,
- buy_ceiling,
- flag,
- issuliao
- INTO :li_mtrlkind,
- :ld_uprate,
- :ld_upqty,
- :li_iffp,
- :li_iflimitprice,
- :li_statusflag,
- :li_outtype,
- :li_ifpackpro,
- :li_buyunit,
- :li_buydec,
- :li_buy_ceiling,
- :li_flag,
- :li_issuliao
- FROM u_mtrldef
- WHERE u_mtrldef.mtrlid = :s_mx.mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询物料:"+s_mx.mtrlcode+',属性失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //处理单位转换保留位数
- IF li_buyunit = 0 THEN //不使用默认采购单位, 保留N位小数也使用
- li_buydec = 10
- END IF
- IF sys_option_audit_mtrl <> 0 THEN
- IF li_flag <> 2 THEN
- rslt = 0
- arg_msg = "系统选项[297]限制,物料:"+s_mx.mtrlcode+',资料未审核,不能建单'
- GOTO ext
- END IF
- END IF
- //ys特殊用法
- IF li_issuliao = 5 Or li_issuliao = 8 THEN
- IF s_mx.jgdscrp = "" THEN
- rslt = 0
- arg_msg = "行:"+String(s_mx.printid)+",物料:"+s_mx.mtrlcode+',请选择材质/密度'
- GOTO ext
- END IF
- END IF
- IF s_mx.rebate <= 0 or s_mx.rebate > 1 THEN
- arg_msg = '行:'+String(s_mx.printid)+',折扣错误,只能取范围(0, 1]'
- rslt = 0
- GOTO ext
- END IF
- IF Date(requiredate) > Date(s_mx.requiredate) THEN
- arg_msg = '交货日期不能在订货日期前'
- rslt = 0
- GOTO ext
- END IF
- Dec ld_uqty,ld_consignedqty, lde_addqty, lde_rate_rq
- String ls_unit_rq
- IF s_mx.iforder = 1 THEN
- IF s_mx.requestbuyid = 0 THEN
- arg_msg = '物料:'+s_mx.mtrlcode+',请选择申购单'
- rslt = 0
- GOTO ext
- END IF
-
-
-
- SELECT u_requestbuy.requestbuycode, u_requestbuymx.uqty,u_requestbuymx.consignedqty,u_requestbuymx.unit,u_requestbuymx.rate
- INTO :ls_relrqbuycode, :ld_uqty,:ld_consignedqty, :ls_unit_rq, :lde_rate_rq
- FROM u_requestbuy,u_requestbuymx
- WHERE u_requestbuy.scid = u_requestbuymx.scid
- AND u_requestbuy.requestbuyid = u_requestbuymx.requestbuyid
- AND u_requestbuymx.scid = :scid
- AND u_requestbuymx.requestbuyid = :s_mx.requestbuyid
- AND u_requestbuymx.printid = :s_mx.rqmxprintid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "查询物料:"+s_mx.mtrlcode+'查询申购单号失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ls_unit_rq = s_mx.unit THEN //单位相同, 直接去订单数量
- lde_addqty = s_mx.uqty
- ELSE
- //单位不同, 先转库存单位, 在转申购单位
- lde_addqty = Round(s_mx.uqty * s_mx.rate,li_buydec)
- lde_addqty = Truncate(lde_addqty / lde_rate_rq,li_buydec)
- END IF
-
- IF Not f_power_ind(1405,sys_msg_pow) Or sys_power_issuper THEN
- IF ld_uqty * (1 + ld_uprate) + ld_upqty < lde_addqty + ld_consignedqty THEN
- rslt = 0
- arg_msg = '物料:'+s_mx.mtrlcode+',申购单位:'+ls_unit_rq+',申购未完成数量:'+String(ld_uqty - ld_consignedqty,'#,##0.00######' )+',允许订货上限为:'+String(ld_uqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty,'#,##0.00######')+',少于本次完成数量:'+String(lde_addqty,'#,##0.00######')
- GOTO ext
- END IF
- ELSE
- IF ld_uqty < lde_addqty + ld_consignedqty THEN
- rslt = 0
- arg_msg = '物料:'+s_mx.mtrlcode+',申购单位:'+ls_unit_rq+',申购未完成数量:'+String(ld_uqty - ld_consignedqty,'#,##0.00######' )+',少于本次完成数量:'+String(lde_addqty,'#,##0.00######')
-
- IF ld_uprate > 0 Or ld_uprate > 0 THEN
- arg_msg += '~r~n你没有超申购的权限'
- END IF
- GOTO ext
- END IF
- END IF
-
- IF uo_option_update_rqmtrlqty_buy = 1 THEN
- IF s_mx.orderid > 0 And billtype = 0 THEN
- IF li_mtrlkind = 1 THEN
- arg_msg = '物料:'+s_mx.mtrlcode+',mrp属性设为不按计划,所以不能选择计划'
- rslt = 0
- GOTO ext
- END IF
-
- Decimal ld_truerqqty
-
- ld_consignedqty = 0
-
- SELECT sum(truerqqty),sum(consignedqty)
- INTO :ld_truerqqty,:ld_consignedqty
- FROM u_orderrqmtrl
- WHERE u_orderrqmtrl.orderid = :s_mx.orderid
- AND u_orderrqmtrl.scid = :scid
- AND u_orderrqmtrl.mtrlid = :s_mx.mtrlid
- AND u_orderrqmtrl.status = :s_mx.status
- AND u_orderrqmtrl.woodcode = :s_mx.woodcode
- AND u_orderrqmtrl.pcode = :s_mx.pcode
- AND u_orderrqmtrl.wrkgrpid = :s_mx.wrkgrpid
- and u_orderrqmtrl.plantype = 2
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划:'+s_mx.ordercode+',物料:'+s_mx.mtrlcode+'需求未安排数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //默认库存单位
- lde_addqty = Round(s_mx.uqty * s_mx.rate,li_buydec)
-
- IF Not f_power_ind(1405,sys_msg_pow) Or sys_power_issuper THEN
- IF ld_truerqqty * (1 + ld_uprate) + ld_upqty < (lde_addqty + ld_consignedqty) THEN
- rslt = 0
- arg_msg = '生产计划:'+s_mx.ordercode+',物料:'+s_mx.mtrlcode+'需求未安排数只有:'+String(ld_truerqqty - ld_consignedqty,'#,##0.0####' )+',允许订货上限为:'+String(ld_truerqqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty,'#,##0.00##')+',少于本次完成数量:'+String(lde_addqty,'#,##0.00##')
- GOTO ext
- END IF
- ELSE
- IF lde_addqty > ld_truerqqty - ld_consignedqty THEN
- arg_msg = '生产计划:'+s_mx.ordercode+',物料:'+s_mx.mtrlcode+'需求未安排数只有:'+String(ld_truerqqty - ld_consignedqty,'#,##0.0####') + ',不能安排:'+String(lde_addqty,'#,##0.0####')
-
- IF ld_uprate > 0 Or ld_uprate > 0 THEN
- arg_msg += '~r~n你没有超申购的权限'
- END IF
-
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- END IF
- IF li_statusflag = 2 And Trim(s_mx.status) = '' THEN
- rslt = 0
- arg_msg = '第'+String(s_mx.printid)+'行,物料:'+s_mx.mtrlcode+' 属于组合配置类型,但没有输入配置,请检查'
- GOTO ext
- END IF
- IF uo_sptprice.uof_check_limitprice(0,s_mx.mtrlid,s_mx.status,s_mx.woodcode,s_mx.pcode,s_mx.unit,s_mx.enprice * mrate * s_mx.rebate,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_buyprice_buytask_notlimit = 0 And li_iflimitprice = 1 THEN
- IF uo_sptprice.uof_check_price(0,sptid,s_mx.mtrlid,s_mx.mtrlcode,s_mx.unit,s_mx.status,s_mx.woodcode,s_mx.pcode,'',moneyid,s_mx.enprice * mrate * s_mx.rebate,requiredate,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //查询合同号
- Long ll_buybargainid, ll_buybargainprintid
- String ls_buybargaincode
- IF uo_sptprice.uof_getmtrlsptbuybargain(moneyid, sptid, s_mx.mtrlid,s_mx.unit,s_mx.status,s_mx.woodcode,s_mx.pcode,s_mx.jgdscrp,&
- ll_buybargainid, ll_buybargainprintid, ls_buybargaincode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //查询最后一次收货价
- String ls_lastcode
- DateTime ldt_lastdate
- Decimal lde_lastprice
- SELECT top 1 u_inware.inwarecode,u_inware.indate,
- u_inwaremx.uprice INTO
- :ls_lastcode,:ldt_lastdate,:lde_lastprice
- FROM u_inware INNER JOIN
- u_inwareMx ON u_inware.inwareid = u_inwareMx.inwareid
- WHERE u_inware.flag = 1 AND
- u_inware.thflag = 0 AND
- u_inwareMx.mtrlid = :s_mx.mtrlid AND
- u_inwareMx.unit = :s_mx.unit AND
- u_inwareMx.status = :s_mx.status AND
- u_inwareMx.woodcode = :s_mx.woodcode AND
- u_inwareMx.pcode = :s_mx.pcode AND
- u_inware.sptid = :sptid
- Order By u_inware.auditingdate Desc;
-
- IF sqlca.SQLCode <> 0 THEN
- lde_lastprice = 0
- ls_lastcode = ''
- SetNull(ldt_lastdate)
- END IF
- IF IsNull(lde_lastprice) THEN lde_lastprice = 0
- IF IsNull(ls_lastcode) THEN ls_lastcode = ''
- //IF IsNull(ldt_lastdate) THEN SetNull(ldt_lastdate)
- //
- IF Round(s_mx.uqty * s_mx.rate,li_buydec) = 0 THEN
- rslt = 0
- arg_msg = '第'+String(s_mx.printid)+'行,转换成库存数量后数量为0,请检查~r~n'
- arg_msg += "采购数量:"+String(s_mx.uqty, '#,##0.#########')+",转换率:"+String(s_mx.rate, '#,##0.#########')+",保留小数位数:"+String(li_buydec, '##0')
- GOTO ext
- END IF
- FOR ls_i = 1 To it_mxbt //合并重复项
- IF buytaskmx[ls_i].mtrlid = s_mx.mtrlid And &
- buytaskmx[ls_i].orderid = s_mx.orderid And &
- Date(buytaskmx[ls_i].requiredate) = Date(s_mx.requiredate) And &
- buytaskmx[ls_i].status = s_mx.status And &
- buytaskmx[ls_i].woodcode = s_mx.woodcode And &
- buytaskmx[ls_i].pcode = s_mx.pcode And &
- buytaskmx[ls_i].wrkgrpid = s_mx.wrkgrpid And &
- buytaskmx[ls_i].unit = s_mx.unit And &
- buytaskmx[ls_i].taskmxprintid = s_mx.taskmxprintid And &
- buytaskmx[ls_i].requestbuyid = s_mx.requestbuyid And &
- buytaskmx[ls_i].rqmxprintid = s_mx.rqmxprintid And &
- buytaskmx[ls_i].plancode = s_mx.plancode THEN
-
- buytaskmx[ls_i].uqty = buytaskmx[ls_i].uqty+s_mx.uqty
- buytaskmx[ls_i].qty = buytaskmx[ls_i].qty+Round(s_mx.uqty * s_mx.rate,li_buydec)
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt++
- buytaskmx[it_mxbt].iforder = s_mx.iforder
- buytaskmx[it_mxbt].orderid = s_mx.orderid
- buytaskmx[it_mxbt].ordercode = s_mx.ordercode
- buytaskmx[it_mxbt].mtrlid = s_mx.mtrlid
- buytaskmx[it_mxbt].uqty = s_mx.uqty
- buytaskmx[it_mxbt].qty = Round(s_mx.uqty * s_mx.rate,li_buydec)
- buytaskmx[it_mxbt].plprice = s_mx.planprice
- buytaskmx[it_mxbt].dscrp = s_mx.dscrp
- buytaskmx[it_mxbt].dscrp2 = s_mx.dscrp2
- buytaskmx[it_mxbt].mtrlcode = s_mx.mtrlcode
- buytaskmx[it_mxbt].printid = s_mx.printid
- buytaskmx[it_mxbt].unit = s_mx.unit
- buytaskmx[it_mxbt].rate = s_mx.rate
- buytaskmx[it_mxbt].rebate = s_mx.rebate
- buytaskmx[it_mxbt].enprice = s_mx.enprice //单价-外币-采购单位
- buytaskmx[it_mxbt].uprice = s_mx.enprice * mrate //单价-本位币-采购单位
- buytaskmx[it_mxbt].fprice = Round((s_mx.enprice * s_mx.uqty * mrate)/(Round(s_mx.uqty * s_mx.rate,li_buydec)),10) //单价-本位币-库存单位
- buytaskmx[it_mxbt].acprice = buytaskmx[it_mxbt].fprice * s_mx.rebate //折后单价-本位币-库存单位
- buytaskmx[it_mxbt].requiredate = s_mx.requiredate
- buytaskmx[it_mxbt].status = s_mx.status
- buytaskmx[it_mxbt].woodcode = s_mx.woodcode
- buytaskmx[it_mxbt].pcode = s_mx.pcode
- buytaskmx[it_mxbt].storageid = s_mx.storageid
- buytaskmx[it_mxbt].tax = s_mx.tax
- billamt = billamt + Round(s_mx.enprice * s_mx.uqty * s_mx.rebate,2)
- buytaskmx[it_mxbt].requestbuyid = s_mx.requestbuyid
- buytaskmx[it_mxbt].rqmxprintid = s_mx.rqmxprintid
- buytaskmx[it_mxbt].relrqbuycode = ls_relrqbuycode
- buytaskmx[it_mxbt].wrkgrpid = s_mx.wrkgrpid
- buytaskmx[it_mxbt].taskmxprintid = s_mx.taskmxprintid
- IF uo_price.uof_getmtrlname(sptid,s_mx.mtrlid,ls_sptmtrlname,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- buytaskmx[it_mxbt].sptmtrlname = ls_sptmtrlname
- buytaskmx[it_mxbt].iffp = li_iffp
- buytaskmx[it_mxbt].outtype = li_outtype
- buytaskmx[it_mxbt].ifpackpro = li_ifpackpro
- buytaskmx[it_mxbt].plancode = s_mx.plancode
- buytaskmx[it_mxbt].buybargainid = ll_buybargainid
- buytaskmx[it_mxbt].buybargainprintid = ll_buybargainprintid
- buytaskmx[it_mxbt].buybargaincode = ls_buybargaincode
- buytaskmx[it_mxbt].jgdscrp = s_mx.jgdscrp
- buytaskmx[it_mxbt].lastcode = ls_lastcode
- buytaskmx[it_mxbt].lastdate = ldt_lastdate
- buytaskmx[it_mxbt].lastprice = lde_lastprice
- ext:
- IF rslt = 0 THEN p_clearmx()
- Destroy uo_sptprice
- Destroy uo_price
- Return(rslt)
- end function
- on uo_buytask.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_buytask.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('111',str_optionvalue,arg_msg)
- uo_option_requestbuy_hz = Long(str_optionvalue)
- f_get_sys_option_value('228',str_optionvalue,arg_msg)
- uo_option_if_oa_buytask = Long(str_optionvalue)
- f_get_sys_option_value('229',str_optionvalue,arg_msg)
- uo_option_if_oa_buytask_cp = Long(str_optionvalue)
- f_get_sys_option_value('423',str_optionvalue,arg_msg)
- uo_option_if_oa_buytask_dept = Long(str_optionvalue)
- f_get_sys_option_value('092',str_optionvalue,arg_msg)
- uo_option_buytask_cl_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('093',str_optionvalue,arg_msg)
- uo_option_buytask_cp_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('422',str_optionvalue,arg_msg)
- uo_option_buytask_dept_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('010',str_optionvalue,arg_msg)
- uo_option_ifovertask = Long(str_optionvalue)
- f_get_sys_option_value('029',str_optionvalue,arg_msg)
- uo_option_change_status = str_optionvalue
- f_get_sys_option_value('027',str_optionvalue,arg_msg)
- uo_option_change_woodcode = str_optionvalue
- f_get_sys_option_value('028',str_optionvalue,arg_msg)
- uo_option_change_pcode = str_optionvalue
- f_get_sys_option_value('079',str_optionvalue,arg_msg)
- uo_option_buyprice_buytask_notlimit = Long(str_optionvalue)
- f_get_sys_option_value('023',str_optionvalue,arg_msg)
- uo_option_unit_dec = Long(str_optionvalue)
- f_get_sys_option_value('293',str_optionvalue,arg_msg)
- uo_option_disuse_buytask = Long(str_optionvalue)
- f_get_sys_option_value('342',str_optionvalue,arg_msg)
- uo_option_update_rqmtrlqty_buy = Long(str_optionvalue)
- end event
|