uo_apportion.sru 135 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635
  1. $PBExportHeader$uo_apportion.sru
  2. forward
  3. global type uo_apportion from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_apportion from nonvisualobject
  7. end type
  8. global uo_apportion uo_apportion
  9. type variables
  10. Int uo_option_inware_sc_location
  11. Int uo_option_scll_plan_wsaudit
  12. end variables
  13. forward prototypes
  14. public function integer uof_add_apportion_time (long arg_atid, long arg_wrkgrpid, long arg_pmonth, datetime arg_firstdate, datetime arg_enddate, string arg_opemp, ref string arg_msg)
  15. public function integer uof_del_apportion_time (long arg_atid, ref string arg_msg)
  16. public function integer uof_cmpl_apportion_cp (long arg_atid, ref string arg_msg)
  17. public function integer uof_cmpl_apportion_pd (long arg_atid, ref string arg_msg)
  18. public function integer uof_cmpl_apportion_mtrl (long arg_atid, ref string arg_msg)
  19. public function integer uof_checkdate (long arg_wrkgrpid, datetime arg_firstdate, datetime arg_enddate, ref string arg_msg)
  20. public function integer uof_audit_apportion_time (long arg_atid, integer arg_flag, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  21. public function integer uof_balc_apportion_time (long arg_atid, integer arg_flag, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  22. public function integer uof_get_pdb_cost (long arg_atid, long arg_storageid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_ref_cost, ref string arg_msg)
  23. public function integer uof_cmpl_apportion_item_ft (long arg_atid, ref string arg_msg)
  24. public function integer uof_del_apportion_item_ft (long arg_atid, ref string arg_msg)
  25. public function integer uof_lastaudit (long arg_atid, ref string arg_msg)
  26. public function integer uof_c_lastaudit (long arg_atid, ref string arg_msg)
  27. public function integer uof_cmpl_apportion_item_ft_mtrl (long arg_atid, ref string arg_msg)
  28. public function integer uof_cmpl_apportion_cp_ft (long arg_atid, ref string arg_msg)
  29. public function integer uof_del_apportion_cp_ft (long arg_atid, ref string arg_msg)
  30. public function integer uof_cmp_apportion_abnormityamt (long arg_atid, ref string arg_msg)
  31. public function integer uof_cmp_apportion_abnormityamt_ft (long arg_atid, ref string arg_msg)
  32. public function integer uof_del_apportion_abnormity_ft (long arg_atid, ref string arg_msg)
  33. public function integer uof_cmpl_apportion_item_ft_gz (long arg_atid, ref string arg_msg)
  34. public function integer uof_cmpl_apportion_cost (long arg_atid, ref string arg_msg)
  35. public function integer uof_cmpl_apportion_cp_ft_zqty (long arg_atid, ref string arg_msg)
  36. public function integer uof_cmpl_apportion_item_ft_zqty (long arg_atid, ref string arg_msg)
  37. public function integer uof_cmpl_apportion_glgz (long arg_atid, ref string arg_msg)
  38. public function integer uof_cmpl_apportion_glgz_ft (long arg_atid, ref string arg_msg)
  39. public function integer uof_cmpl_apportion_glgz_ft_zqty (long arg_atid, ref string arg_msg)
  40. public function integer uof_del_apportion_glgz_ft (long arg_atid, ref string arg_msg)
  41. public function integer uof_cmpl_apportion_item_ft_amt (long arg_atid, ref string arg_msg)
  42. public function integer uof_cmpl_apportion_item_ft_zamt (long arg_atid, ref string arg_msg)
  43. public function integer uof_cmp_apportion_abnormityamt_ft_zqty (long arg_atid, ref string arg_msg)
  44. public function integer uof_cmp_apportion_abnormityamt_ft_amt (long arg_atid, ref string arg_msg)
  45. public function integer uof_cmp_apportion_abnormityamt_ft_zamt (long arg_atid, ref string arg_msg)
  46. public function integer uof_cmpl_apportion_glgz_ft_amt (long arg_atid, ref string arg_msg)
  47. public function integer uof_cmpl_apportion_glgz_ft_zamt (long arg_atid, ref string arg_msg)
  48. public function integer uof_cmpl_apportion_item (long arg_atid, integer arg_ifoutware, ref string arg_msg)
  49. private function integer uof_update_apportion_mtrl (long arg_atid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlname, decimal arg_orderqty, decimal arg_orderamt, decimal arg_cost, decimal arg_orqty, decimal arg_oramt, decimal arg_inqty, decimal arg_inamt, decimal arg_balcqty, decimal arg_balcamt, decimal arg_outqty_pk, decimal arg_outamt_pk, decimal arg_outqty_scllplan, decimal arg_outamt_scllplan, decimal arg_outqty_fl, decimal arg_outamt_fl, decimal arg_outqty_tl, decimal arg_outamt_tl, decimal arg_outqty_bl, decimal arg_outamt_bl, ref string arg_msg, boolean arg_ifcommit)
  50. public function integer uof_cmpl_apportion_jjgz (long arg_atid, decimal arg_jjgzamt, ref string arg_msg)
  51. end prototypes
  52. public function integer uof_add_apportion_time (long arg_atid, long arg_wrkgrpid, long arg_pmonth, datetime arg_firstdate, datetime arg_enddate, string arg_opemp, ref string arg_msg);Int rslt = 1
  53. Long ll_newid
  54. Long cnt
  55. cnt = 0
  56. SELECT count(*) INTO :cnt
  57. FROM u_sc_wkp
  58. Where wrkGrpid = :arg_wrkGrpid;
  59. IF sqlca.SQLCode <> 0 THEN
  60. arg_msg = '查询车间资料失败,'+sqlca.SQLErrText
  61. rslt = 0
  62. GOTO ext
  63. END IF
  64. IF cnt = 0 THEN
  65. arg_msg = '车间资料不存在,请检查'
  66. rslt = 0
  67. GOTO ext
  68. END IF
  69. IF cnt > 1 THEN
  70. arg_msg = '车间资料重复,请检查'
  71. rslt = 0
  72. GOTO ext
  73. END IF
  74. IF arg_pmonth = 0 THEN
  75. arg_msg = '请输入正确的核算月份'
  76. rslt = 0
  77. GOTO ext
  78. END IF
  79. IF arg_enddate < arg_firstdate THEN
  80. arg_msg = '盘点结束日期小于开始日期'
  81. rslt = 0
  82. GOTO ext
  83. END IF
  84. IF arg_atid = 0 THEN
  85. // SELECT count(*) INTO :cnt
  86. // FROM u_apportion_time
  87. // Where enddate > :arg_firstdate
  88. // and wrkGrpid = :arg_wrkGrpid;
  89. // IF sqlca.SQLCode <> 0 THEN
  90. // arg_msg = '查询开始日期之后是否有盘点操作失败'
  91. // rslt = 0
  92. // GOTO ext
  93. // END IF
  94. //
  95. // IF cnt > 0 THEN
  96. // arg_msg = '开始日期之后已有盘点'
  97. // rslt = 0
  98. // GOTO ext
  99. // END IF
  100. ll_newid = f_sys_scidentity(0,"u_apportion_time","atid",arg_msg,TRUE,id_sqlca)
  101. IF ll_newid <= 0 THEN
  102. rslt = 0
  103. GOTO ext
  104. END IF
  105. INSERT INTO u_apportion_time
  106. (atid,wrkGrpid,firstdate,enddate,pmonth,opdate,opemp)
  107. VALUES
  108. (:ll_newid,:arg_wrkGrpid,:arg_firstdate,:arg_enddate,:arg_pmonth,getdate(),:arg_opemp);
  109. IF sqlca.SQLCode <> 0 THEN
  110. arg_msg = "建立盘点日期操作失败!"+sqlca.SQLErrText
  111. rslt = 0
  112. GOTO ext
  113. END IF
  114. ELSE
  115. // SELECT count(*) INTO :cnt FROM u_apportion_time
  116. // WHERE enddate > :arg_firstdate
  117. // AND atid <> :arg_atid
  118. // and wrkGrpid = :arg_wrkGrpid;
  119. // IF sqlca.SQLCode <> 0 THEN
  120. // arg_msg = '查询开始日期之后是否有盘点操作失败'
  121. // rslt = 0
  122. // GOTO ext
  123. // END IF
  124. //
  125. // IF cnt > 0 THEN
  126. // arg_msg = '开始日期之后已有盘点'
  127. // rslt = 0
  128. // GOTO ext
  129. // END IF
  130. UPDATE u_apportion_time
  131. SET firstdate = :arg_firstdate,
  132. enddate = :arg_enddate,
  133. pmonth = :arg_pmonth
  134. Where atid = :arg_atid;
  135. IF sqlca.SQLCode <> 0 THEN
  136. arg_msg = "更新盘点日期操作失败!"+sqlca.SQLErrText
  137. rslt = 0
  138. GOTO ext
  139. END IF
  140. END IF
  141. ext:
  142. IF rslt = 0 THEN
  143. ROLLBACK;
  144. ELSE
  145. COMMIT;
  146. END IF
  147. RETURN rslt
  148. end function
  149. public function integer uof_del_apportion_time (long arg_atid, ref string arg_msg);Int rslt = 1
  150. Int li_disflag,li_itemauditflag,li_lastauditflag,li_glgzflag,li_balcflag,li_auditflag
  151. SELECT disflag,
  152. itemauditflag,
  153. lastauditflag,
  154. glgzflag,
  155. balcflag,
  156. auditflag
  157. INTO :li_disflag,
  158. :li_itemauditflag,
  159. :li_lastauditflag,
  160. :li_glgzflag,
  161. :li_balcflag,
  162. :li_auditflag
  163. FROM u_apportion_time
  164. Where atid = :arg_atid;
  165. IF sqlca.SQLCode <> 0 THEN
  166. arg_msg = '查询该盘点是否已分摊失败'
  167. rslt = 0
  168. GOTO ext
  169. END IF
  170. IF li_balcflag = 1 THEN
  171. arg_msg = '已经确认,不能删除'
  172. rslt = 0
  173. GOTO ext
  174. END IF
  175. if li_auditflag = 1 then
  176. arg_msg = '已经盘点审核,不能删除'
  177. rslt = 0
  178. GOTO ext
  179. END IF
  180. IF li_disflag = 1 THEN
  181. arg_msg = '该盘点已分摊,不能删除'
  182. rslt = 0
  183. GOTO ext
  184. END IF
  185. IF li_itemauditflag = 1 THEN
  186. arg_msg = '该盘点已费用分摊,不能删除'
  187. rslt = 0
  188. GOTO ext
  189. END IF
  190. IF li_glgzflag = 1 THEN
  191. arg_msg = '该盘点已管理工资分摊,不能删除'
  192. rslt = 0
  193. GOTO ext
  194. END IF
  195. IF li_lastauditflag = 1 THEN
  196. arg_msg = '该盘点已终审,不能删除'
  197. rslt = 0
  198. GOTO ext
  199. END IF
  200. DELETE FROM u_apportion_cp Where atid = :arg_atid;
  201. IF sqlca.SQLCode <> 0 THEN
  202. arg_msg = "删除盘点日期相关成品统计数操作失败!"+ sqlca.SQLErrText
  203. rslt = 0
  204. GOTO ext
  205. END IF
  206. DELETE FROM u_apportion_mtrl Where atid = :arg_atid;
  207. IF sqlca.SQLCode <> 0 THEN
  208. arg_msg = "删除盘点日期相关材料统计数操作失败!"+ sqlca.SQLErrText
  209. rslt = 0
  210. GOTO ext
  211. END IF
  212. DELETE FROM u_apportion_time Where atid = :arg_atid;
  213. IF sqlca.SQLCode <> 0 THEN
  214. arg_msg = "删除盘点日期操作失败!"+ sqlca.SQLErrText
  215. rslt = 0
  216. GOTO ext
  217. END IF
  218. DELETE FROM u_apportion_item_ft Where atid = :arg_atid;
  219. IF sqlca.SQLCode <> 0 THEN
  220. arg_msg = "删除指令费用分摊表操作失败!"+ sqlca.SQLErrText
  221. rslt = 0
  222. GOTO ext
  223. END IF
  224. DELETE FROM u_apportion_cp_ft Where atid = :arg_atid;
  225. IF sqlca.SQLCode <> 0 THEN
  226. arg_msg = "删除材料分摊表操作失败!"+ sqlca.SQLErrText
  227. rslt = 0
  228. GOTO ext
  229. END IF
  230. ext:
  231. IF rslt = 0 THEN
  232. ROLLBACK;
  233. ELSE
  234. COMMIT;
  235. END IF
  236. RETURN rslt
  237. end function
  238. public function integer uof_cmpl_apportion_cp (long arg_atid, ref string arg_msg);Int rslt = 1
  239. Long cnt,ll_wrkGrpid
  240. DateTime firstdate,enddate
  241. Int li_balcflag,li_auditflag
  242. Long li_pmonth
  243. Long ll_i
  244. Long ll_scid,ll_orderid,ll_mtrlid
  245. String ls_status,ls_woodcode,ls_pcode,ls_pfcode
  246. Decimal ld_planprice
  247. Decimal ld_mcrate,ld_pmrate
  248. datastore ds_cmp
  249. ds_cmp = Create datastore
  250. ds_cmp.DataObject = 'ds_apportion_cp_cmp_price'
  251. ds_cmp.SetTransObject(sqlca)
  252. Select firstdate,enddate,wrkGrpid,balcflag,auditflag,pmonth
  253. Into :firstdate,:enddate,:ll_wrkGrpid,:li_balcflag,:li_auditflag,:li_pmonth
  254. From u_apportion_time
  255. Where atid = :arg_atid;
  256. If sqlca.SQLCode <> 0 Then
  257. arg_msg = '查询盘点资料失败 - 开始日期,结束日期'
  258. rslt = 0
  259. Goto ext
  260. End If
  261. If li_balcflag = 0 Then
  262. arg_msg = '盘点未确认,不能操作'
  263. rslt = 0
  264. Goto ext
  265. End If
  266. //If li_auditflag = 1 Then
  267. // arg_msg = '盘点已审核,不能操作'
  268. // rslt = 0
  269. // Goto ext
  270. //End If
  271. Select mcrate,pmrate
  272. Into :ld_mcrate,:ld_pmrate
  273. From u_sc_wkp
  274. Where wrkGrpid = :ll_wrkGrpid;
  275. If sqlca.SQLCode <> 0 Then
  276. arg_msg = '查询车间成本属性失败,'+sqlca.sqlerrtext
  277. rslt = 0
  278. Goto ext
  279. End If
  280. Delete u_apportion_cp Where atid = :arg_atid;
  281. If sqlca.SQLCode <> 0 Then
  282. arg_msg = '删除成品统计失败,'+sqlca.SQLErrText
  283. rslt = 0
  284. Goto ext
  285. End If
  286. Select count(*) Into :cnt
  287. From u_inwaremx,u_inware
  288. Where u_inware.inwareid = u_inwaremx.inwareid
  289. And u_inware.scid = u_inwaremx.scid
  290. And u_inware.flag = 0
  291. And u_inware.indate >= :firstdate
  292. And u_inware.indate <= :enddate
  293. And u_inware.relid = :ll_wrkGrpid
  294. And u_inware.billtype = 3;
  295. If sqlca.SQLCode <> 0 Then
  296. rslt = 0
  297. arg_msg = '查询当前盘点时间范围是否存在没有审核的生产进仓单操作失败! ~n'+sqlca.SQLErrText
  298. Goto ext
  299. End If
  300. If cnt > 0 Then
  301. arg_msg = '当前盘点时间范围存在没有审核的生产进仓单!'
  302. rslt = 0
  303. Goto ext
  304. End If
  305. Insert Into u_apportion_cp
  306. (atid,mtrlid,status,woodcode,pcode,pfcode,qty,price,orderid,scid,mcrate,pmrate)
  307. Select :arg_atid,
  308. u_inwaremx.mtrlid,
  309. u_inwaremx.status,
  310. u_inwaremx.woodcode,
  311. u_inwaremx.pcode,
  312. u_order_ml.pfcode,
  313. sum(u_inwaremx.qty),
  314. AVG(u_inwaremx.price),
  315. u_order_ml.orderid,
  316. u_order_ml.scid,
  317. :ld_mcrate,
  318. :ld_pmrate
  319. From u_inwaremx,
  320. u_inware,
  321. u_order_ml
  322. Where u_inware.scid = u_inwaremx.scid
  323. And u_inware.inwareid = u_inwaremx.inwareid
  324. And u_inwaremx.scid = u_order_ml.scid
  325. And u_inwaremx.relid = u_order_ml.orderid
  326. And u_inware.flag = 1
  327. And u_inware.billtype = 3
  328. And u_inware.indate >= :firstdate
  329. And u_inware.indate <= :enddate
  330. And u_order_ml.wrkgrpid = :ll_wrkGrpid
  331. Group By
  332. u_inwaremx.mtrlid,
  333. u_inwaremx.status,
  334. u_inwaremx.woodcode,
  335. u_inwaremx.pcode,
  336. u_order_ml.orderid,
  337. u_order_ml.scid,
  338. u_order_ml.pfcode;
  339. If sqlca.SQLCode <> 0 Then
  340. rslt = 0
  341. arg_msg = '从生产进仓单读取车间产量失败! ~n'+sqlca.SQLErrText
  342. Goto ext
  343. End If
  344. //INSERT INTO u_apportion_cp
  345. // (atid,mtrlid,status,woodcode,pcode,pfcode,qty,price,orderid,scid)
  346. // SELECT distinct :arg_atid,u_order_ml.mtrlid,u_order_ml.status,u_order_ml.woodcode,u_order_ml.pcode,u_order_ml.pfcode,0,0,u_order_ml.orderid,u_order_ml.scid
  347. // FROM u_outwaremx INNER JOIN
  348. // u_outware ON u_outwaremx.scid = u_outware.scid AND
  349. // u_outwaremx.outwareid = u_outware.outwareid INNER JOIN
  350. // u_Order_ml ON u_outwaremx.relid = u_Order_ml.OrderID AND
  351. // u_outwaremx.scid = u_Order_ml.scid
  352. // WHERE (u_outware.billtype = 3)
  353. // AND (u_outware.flag = 1)
  354. // AND (u_order_ml.wrkgrpid = :ll_wrkGrpid)
  355. // AND (u_outware.outdate >= :firstdate)
  356. // AND (u_outware.outdate <= :firstdate)
  357. // AND (NOT EXISTS
  358. // (SELECT *
  359. // FROM u_apportion_cp
  360. // WHERE u_apportion_cp.scid = u_outware.scid AND
  361. // u_apportion_cp.orderid = u_outwaremx.relid AND
  362. // u_apportion_cp.mtrlid = u_outwaremx.mtrlid AND
  363. // u_apportion_cp.status = u_outwaremx.status AND
  364. // u_apportion_cp.woodcode = u_outwaremx.woodcode AND
  365. // u_apportion_cp.pcode = u_outwaremx.pcode AND
  366. // u_apportion_cp.atid = :arg_atid));
  367. //IF sqlca.SQLCode <> 0 THEN
  368. // rslt = 0
  369. // arg_msg = '从生产领料单读取车间产量失败! ~n'+sqlca.SQLErrText
  370. // GOTO ext
  371. //END IF
  372. Insert Into u_apportion_cp
  373. (atid,mtrlid,status,woodcode,pcode,pfcode,qty,price,orderid,scid,mcrate,pmrate)
  374. Select DISTINCT :arg_atid,u_Order_ml.mtrlid, u_Order_ml.status_mode, u_Order_ml.woodcode,
  375. u_Order_ml.pcode, u_Order_ml.pfcode, 0,0,u_Order_ml.OrderID, u_Order_ml.scid,:ld_mcrate,:ld_pmrate
  376. From
  377. (Select u_sc_taskwork.orderid, u_sc_taskwork.scid
  378. From u_sc_taskwork Inner JOIN
  379. u_sc_taskworkmx ON u_sc_taskwork.billid = u_sc_taskworkmx.Billid And
  380. u_sc_taskwork.scid = u_sc_taskworkmx.scid Inner JOIN
  381. u_Order_ml ON u_sc_taskwork.scid = u_Order_ml.scid And
  382. u_sc_taskwork.orderid = u_Order_ml.OrderID
  383. Where (u_sc_taskwork.orderid > 0)
  384. And (u_sc_taskwork.Wagemth = :li_pmonth)
  385. And ( u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  386. Union All
  387. Select u_scwg_taskwork_2_mx.orderid, u_scwg_taskwork_2.scid
  388. From u_scwg_taskwork_2_mx Inner JOIN
  389. u_scwg_taskwork_2 ON
  390. u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid Inner JOIN
  391. u_Order_ml ON u_scwg_taskwork_2.scid = u_Order_ml.scid And
  392. u_scwg_taskwork_2_mx.orderid = u_Order_ml.OrderID
  393. Where (u_scwg_taskwork_2_mx.orderid > 0)
  394. And (u_scwg_taskwork_2.Wagemth = :li_pmonth)
  395. And ( u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  396. Union All
  397. Select u_scwg_taskwork_day_mx.orderid, u_scwg_taskwork_day.scid
  398. From u_scwg_taskwork_day_mx Inner JOIN
  399. u_scwg_taskwork_day ON
  400. u_scwg_taskwork_day_mx.billid = u_scwg_taskwork_day.billid Inner JOIN
  401. u_Order_ml ON u_scwg_taskwork_day.scid = u_Order_ml.scid And
  402. u_scwg_taskwork_day_mx.orderid = u_Order_ml.OrderID
  403. Where (u_scwg_taskwork_day_mx.orderid > 0)
  404. And (u_scwg_taskwork_day.Wagemth = :li_pmonth)
  405. And ( u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  406. ) v_scwg Inner JOIN
  407. u_Order_ml ON v_scwg.scid = u_Order_ml.scid And
  408. v_scwg.orderid = u_Order_ml.OrderID
  409. Where (Not Exists
  410. (Select *
  411. From u_apportion_cp
  412. Where u_apportion_cp.scid = u_Order_ml.scid And
  413. u_apportion_cp.orderid = u_Order_ml.orderid And
  414. u_apportion_cp.mtrlid = u_Order_ml.mtrlid And
  415. u_apportion_cp.status = u_Order_ml.status_mode And
  416. u_apportion_cp.woodcode = u_Order_ml.woodcode And
  417. u_apportion_cp.pcode = u_Order_ml.pcode And
  418. u_apportion_cp.atid = :arg_atid));
  419. If sqlca.SQLCode <> 0 Then
  420. rslt = 0
  421. arg_msg = '从计件单读取车间产量失败! ~n'+sqlca.SQLErrText
  422. Goto ext
  423. End If
  424. //更新折算套数
  425. Update u_apportion_cp
  426. Set zqty = case isnull(v_total_taskwork.Amt,0) when 0 then 0 else round(isnull(v_sum_taskwork.amt,0) / isnull(v_total_taskwork.Amt,0),2) End
  427. From u_apportion_cp LEFT Outer JOIN
  428. (Select u_sc_taskwork.orderid, u_sc_taskwork.scid,
  429. SUM(ROUND(dbo.u_sc_taskworkmx.Amount * dbo.u_sc_taskworkmx.Workprice,
  430. 2)) AS Amt
  431. From u_sc_taskwork Inner JOIN
  432. u_sc_taskworkmx ON u_sc_taskwork.billid = u_sc_taskworkmx.Billid And
  433. u_sc_taskwork.scid = u_sc_taskworkmx.scid Inner JOIN
  434. u_Order_ml ON u_sc_taskwork.scid = u_Order_ml.scid And
  435. u_sc_taskwork.orderid = u_Order_ml.OrderID
  436. Where (u_sc_taskwork.orderid > 0) And (u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  437. Group By u_sc_taskwork.orderid, u_sc_taskwork.scid
  438. Union All
  439. Select u_scwg_taskwork_2_mx.orderid, u_scwg_taskwork_2.scid,
  440. SUM(round(qty * price, 2)) AS amt
  441. From u_scwg_taskwork_2_mx Inner JOIN
  442. u_scwg_taskwork_2 ON
  443. u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid Inner JOIN
  444. u_Order_ml ON u_scwg_taskwork_2.scid = u_Order_ml.scid And
  445. u_scwg_taskwork_2_mx.orderid = u_Order_ml.OrderID
  446. Where (u_scwg_taskwork_2_mx.orderid > 0) And (u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  447. Group By u_scwg_taskwork_2_mx.orderid, u_scwg_taskwork_2.scid
  448. Union All
  449. Select u_scwg_taskwork_day_mx.orderid, u_scwg_taskwork_day.scid,
  450. SUM(round(qty * price, 2)) AS amt
  451. From u_scwg_taskwork_day_mx Inner JOIN
  452. u_scwg_taskwork_day ON
  453. u_scwg_taskwork_day_mx.billid = u_scwg_taskwork_day.billid Inner JOIN
  454. u_Order_ml ON u_scwg_taskwork_day.scid = u_Order_ml.scid And
  455. u_scwg_taskwork_day_mx.orderid = u_Order_ml.OrderID
  456. Where (u_scwg_taskwork_day_mx.orderid > 0) And (u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  457. Group By u_scwg_taskwork_day_mx.orderid, u_scwg_taskwork_day.scid)
  458. v_total_taskwork ON u_apportion_cp.scid = v_total_taskwork.scid And
  459. u_apportion_cp.orderid = v_total_taskwork.orderid LEFT Outer JOIN
  460. (Select u_sc_taskwork.orderid, u_sc_taskwork.scid,
  461. SUM(ROUND(dbo.u_sc_taskworkmx.Amount * dbo.u_sc_taskworkmx.Workprice,
  462. 2)) AS Amt
  463. From u_sc_taskwork Inner JOIN
  464. u_sc_taskworkmx ON u_sc_taskwork.billid = u_sc_taskworkmx.Billid And
  465. u_sc_taskwork.scid = u_sc_taskworkmx.scid Inner JOIN
  466. u_Order_ml ON u_sc_taskwork.scid = u_Order_ml.scid And
  467. u_sc_taskwork.orderid = u_Order_ml.OrderID
  468. Where (u_sc_taskwork.orderid > 0) And (u_sc_taskwork.Wagemth = :li_pmonth) And
  469. (u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  470. Group By u_sc_taskwork.orderid, u_sc_taskwork.scid
  471. Union All
  472. Select u_scwg_taskwork_2_mx.orderid, u_scwg_taskwork_2.scid,
  473. SUM(round(qty * price, 2)) AS amt
  474. From u_scwg_taskwork_2_mx Inner JOIN
  475. u_scwg_taskwork_2 ON
  476. u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid Inner JOIN
  477. u_Order_ml ON u_scwg_taskwork_2.scid = u_Order_ml.scid And
  478. u_scwg_taskwork_2_mx.orderid = u_Order_ml.OrderID
  479. Where (u_scwg_taskwork_2_mx.orderid > 0) And
  480. (u_scwg_taskwork_2.Wagemth = :li_pmonth) And (u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  481. Group By u_scwg_taskwork_2_mx.orderid, u_scwg_taskwork_2.scid
  482. Union All
  483. Select u_scwg_taskwork_day_mx.orderid, u_scwg_taskwork_day.scid,
  484. SUM(round(qty * price, 2)) AS amt
  485. From u_scwg_taskwork_day_mx Inner JOIN
  486. u_scwg_taskwork_day ON
  487. u_scwg_taskwork_day_mx.billid = u_scwg_taskwork_day.billid Inner JOIN
  488. u_Order_ml ON u_scwg_taskwork_day.scid = u_Order_ml.scid And
  489. u_scwg_taskwork_day_mx.orderid = u_Order_ml.OrderID
  490. Where (u_scwg_taskwork_day_mx.orderid > 0) And
  491. (u_scwg_taskwork_day.Wagemth = :li_pmonth) And (u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  492. Group By u_scwg_taskwork_day_mx.orderid, u_scwg_taskwork_day.scid)
  493. v_sum_taskwork ON u_apportion_cp.orderid = v_sum_taskwork.orderid And
  494. u_apportion_cp.scid = v_sum_taskwork.scid
  495. Where u_apportion_cp.atid = :arg_atid ;
  496. If sqlca.SQLCode = -1 Then
  497. rslt = 0
  498. arg_msg = '更新折算数量失败! ~n'+sqlca.SQLErrText
  499. Goto ext
  500. End If
  501. //按物料计划价更新由计件单生成的数据
  502. ds_cmp.Retrieve(arg_atid)
  503. For ll_i = 1 To ds_cmp.RowCount()
  504. ll_scid = ds_cmp.Object.scid[ll_i]
  505. ll_orderid = ds_cmp.Object.orderid[ll_i]
  506. ll_mtrlid = ds_cmp.Object.mtrlid[ll_i]
  507. ls_status = ds_cmp.Object.status[ll_i]
  508. ls_woodcode = ds_cmp.Object.woodcode[ll_i]
  509. ls_pcode = ds_cmp.Object.pcode[ll_i]
  510. ls_pfcode = ds_cmp.Object.pfcode[ll_i]
  511. ld_planprice = 0
  512. f_get_planprice_mtrl(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_planprice)
  513. Update u_apportion_cp
  514. Set price = :ld_planprice
  515. Where atid = :arg_atid
  516. And scid = :ll_scid
  517. And orderid = :ll_orderid
  518. And mtrlid = :ll_mtrlid
  519. And status = :ls_status
  520. And woodcode = :ls_woodcode
  521. And pcode = :ls_pcode
  522. And pfcode = :ls_pfcode;
  523. If sqlca.SQLCode <> 0 Then
  524. rslt = 0
  525. arg_msg = '更新单价失败,'+sqlca.SQLErrText
  526. Goto ext
  527. End If
  528. Next
  529. //INSERT INTO u_apportion_cp
  530. // (atid,mtrlid,status,woodcode,pcode,pfcode,qty,price,orderid,scid)
  531. // SELECT DISTINCT :arg_atid,u_Order_ml.mtrlid, u_Order_ml.status_mode, u_Order_ml.woodcode,
  532. // u_Order_ml.pcode, u_Order_ml.pfcode, 0,0,u_Order_ml.OrderID, u_Order_ml.scid
  533. // FROM u_Order_ml INNER JOIN
  534. // u_data_collect INNER JOIN
  535. // u_sc_task ON u_data_collect.taskid = u_sc_task.taskid AND
  536. // u_data_collect.scid = u_sc_task.scid ON u_Order_ml.scid = u_sc_task.scid AND
  537. // u_Order_ml.OrderID = u_sc_task.orderid
  538. // WHERE (NOT EXISTS
  539. // (SELECT *
  540. // FROM u_apportion_cp
  541. // WHERE u_apportion_cp.scid = u_Order_ml.scid AND
  542. // u_apportion_cp.orderid = u_Order_ml.orderid AND
  543. // u_apportion_cp.mtrlid = u_Order_ml.mtrlid AND
  544. // u_apportion_cp.status = u_Order_ml.status_mode AND
  545. // u_apportion_cp.woodcode = u_Order_ml.woodcode AND
  546. // u_apportion_cp.pcode = u_Order_ml.pcode AND
  547. // u_apportion_cp.atid = :arg_atid))
  548. // AND ( u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  549. // and (u_data_collect.opdate >= :firstdate)
  550. // and (u_data_collect.opdate <= :enddate);
  551. //IF sqlca.SQLCode <> 0 THEN
  552. // rslt = 0
  553. // arg_msg = '从注塑质检单读取车间产量失败! ~n'+sqlca.SQLErrText
  554. // GOTO ext
  555. //END IF
  556. UPDATE u_apportion_time
  557. SET cpamt = a.amt
  558. FROM u_apportion_time,
  559. (SELECT u_apportion_cp.atid,sum(round(u_apportion_cp.qty * u_apportion_cp.price,2)) as amt
  560. FROM u_apportion_cp WHERE u_apportion_cp.atid = :arg_atid
  561. GROUP BY u_apportion_cp.atid ) a
  562. WHERE u_apportion_time.atid = a.atid
  563. And u_apportion_time.atid = :arg_atid;
  564. IF sqlca.SQLCode <> 0 THEN
  565. rslt = 0
  566. arg_msg = '更新核算表产值金额失败'+sqlca.SQLErrText
  567. GOTO ext
  568. END IF
  569. ext:
  570. If rslt = 0 Then
  571. Rollback;
  572. Else
  573. Commit;
  574. End If
  575. Destroy ds_cmp;
  576. Return rslt
  577. end function
  578. public function integer uof_cmpl_apportion_pd (long arg_atid, ref string arg_msg);Int rslt = 1
  579. Long cnt,i,ll_rowcnt
  580. Long ll_mtrlid,ll_storageid,ll_scid,ll_pmonth
  581. DateTime ldt_enddate
  582. Long ll_mtrlwareid
  583. String ls_pdbdate
  584. String ls_mtrlcode
  585. String ls_status,ls_woodcode,ls_pcode
  586. Decimal ld_qty,ld_newprice
  587. Int li_balcflag,li_auditflag
  588. string ls_location
  589. IF uo_option_inware_sc_location = -1000 THEN
  590. rslt = 0
  591. arg_msg = '选项:[151]车间领料进仓仓位按工组名称,读取初始默认值失败,操作取消!'
  592. GOTO ext
  593. END IF
  594. datastore ds_pd
  595. ds_pd = CREATE datastore
  596. SELECT balcflag,auditflag
  597. INTO :li_balcflag,:li_auditflag
  598. FROM u_apportion_time
  599. Where atid = :arg_atid;
  600. IF sqlca.SQLCode <> 0 THEN
  601. arg_msg = '查询确认标记失败'
  602. rslt = 0
  603. GOTO ext
  604. END IF
  605. IF li_balcflag = 0 THEN
  606. arg_msg = '盘点未确认,不能统计'
  607. rslt = 0
  608. GOTO ext
  609. END IF
  610. IF li_auditflag = 1 THEN
  611. arg_msg = '盘点已审核,不能统计'
  612. rslt = 0
  613. GOTO ext
  614. END IF
  615. SELECT u_sc_wkp.storageid,
  616. u_apportion_time.pmonth,
  617. u_apportion_time.enddate,
  618. u_sc_wkp.scid
  619. INTO :ll_storageid,
  620. :ll_pmonth,
  621. :ldt_enddate,
  622. :ll_scid
  623. FROM u_sc_wkp,u_apportion_time
  624. WHERE u_sc_wkp.wrkGrpid = u_apportion_time.wrkGrpid
  625. AND u_apportion_time.atid = :arg_atid;
  626. IF sqlca.SQLCode <> 0 THEN
  627. arg_msg = '查询车间盘点资料失败,'+sqlca.SQLErrText
  628. rslt = 0
  629. GOTO ext
  630. END IF
  631. IF ll_storageid = 0 THEN
  632. arg_msg = '车间未设置车间仓库,请检查'
  633. rslt = 0
  634. GOTO ext
  635. END IF
  636. ls_pdbdate = String(ldt_enddate,'yyyymmdd')
  637. SELECT count(*) INTO :cnt
  638. FROM u_ws_pd
  639. WHERE u_ws_pd.flag = 0
  640. AND u_ws_pd.atid = :arg_atid;
  641. IF sqlca.SQLCode <> 0 THEN
  642. rslt = 0
  643. arg_msg = '查询当前盘点时间范围是否存在没有审核的车间盘点单失败!'
  644. GOTO ext
  645. END IF
  646. IF cnt > 0 THEN
  647. arg_msg = '当前盘点时间范围存在没有审核的车间盘点单!'
  648. rslt = 0
  649. GOTO ext
  650. END IF
  651. UPDATE u_warepdb
  652. SET factqty = 0
  653. Where atid = :arg_atid;
  654. IF sqlca.SQLCode <> 0 THEN
  655. arg_msg = '清除盘点表盘点数失败,'+sqlca.SQLErrText
  656. rslt = 0
  657. GOTO ext
  658. END IF
  659. ds_pd.DataObject = 'ds_ws_pd'
  660. ds_pd.SetTransObject(sqlca)
  661. ll_rowcnt = ds_pd.Retrieve(arg_atid)
  662. //Open(w_sys_wait_jdt) //初始化进度条
  663. //
  664. //w_sys_wait_jdt.Show()
  665. //w_sys_wait_jdt.wf_accepttol(ll_rowcnt)
  666. //
  667. FOR i = 1 TO ll_rowcnt
  668. ll_mtrlid = ds_pd.Object.u_ws_pd_mx_cmpl_mtrlid[i]
  669. ls_mtrlcode = ds_pd.Object.u_mtrldef_mtrlcode[i]
  670. ls_status = ds_pd.Object.u_ws_pd_mx_cmpl_status[i]
  671. ls_woodcode = ds_pd.Object.u_ws_pd_mx_cmpl_woodcode[i]
  672. ls_pcode = ds_pd.Object.u_ws_pd_mx_cmpl_pcode[i]
  673. ld_qty = ds_pd.Object.u_ws_pd_mx_qty[i]
  674. IF uo_option_inware_sc_location = 1 THEN
  675. ls_location = ds_pd.Object.location[i]
  676. ELSE
  677. ls_location = ''
  678. END IF
  679. SELECT price INTO :ld_newprice
  680. FROM v_maxprice_sptprice
  681. Where mtrlid = :ll_mtrlid;
  682. IF sqlca.SQLCode = -1 THEN
  683. arg_msg = '物料:'+ls_mtrlcode+',查询最新价失败,'+sqlca.SQLErrText
  684. rslt = 0
  685. GOTO ext
  686. ELSEIF sqlca.SQLCode = 100 THEN
  687. ld_newprice = 0
  688. END IF
  689. // w_sys_wait_jdt.st_msg.Text = ls_mtrlcode+" 正在更新盘点数..." //进度信息
  690. UPDATE u_warepdb
  691. SET factqty = :ld_qty,
  692. factuqty = :ld_qty
  693. WHERE storageid = :ll_storageid
  694. AND pdbdate = :ls_pdbdate
  695. AND mtrlid = :ll_mtrlid
  696. AND status = :ls_status
  697. AND plancode = ''
  698. AND sptid = 0
  699. AND scid = :ll_scid
  700. AND Dxflag = 0
  701. AND woodcode = :ls_woodcode
  702. AND pcode = :ls_pcode
  703. and location = :ls_location;
  704. IF sqlca.SQLCode = 0 THEN
  705. IF sqlca.SQLNRows = 0 THEN
  706. INSERT INTO u_warepdb
  707. (storageid,
  708. pdbdate,
  709. mtrlid,
  710. status,
  711. qty,
  712. factqty,
  713. plancode,
  714. Sptid,
  715. scid,
  716. mtrlwareid,
  717. Dxflag,
  718. woodcode,
  719. pcode,
  720. wareamt,
  721. cost,
  722. atid,
  723. location,
  724. uqty,
  725. factuqty)
  726. VALUES
  727. (:ll_storageid,
  728. :ls_pdbdate,
  729. :ll_mtrlid,
  730. :ls_status,
  731. 0,
  732. :ld_qty,
  733. '',
  734. 0,
  735. :ll_scid,
  736. 0,
  737. 0,
  738. :ls_woodcode,
  739. :ls_pcode,
  740. 0,
  741. :ld_newprice,
  742. :arg_atid,
  743. :ls_location,
  744. 0,
  745. :ld_qty);
  746. IF sqlca.SQLCode <> 0 THEN
  747. arg_msg = '新增盘点记录失败,'+sqlca.SQLErrText
  748. rslt = 0
  749. GOTO ext
  750. END IF
  751. END IF
  752. ELSE
  753. arg_msg = '更新盘点实盘数失败,'+sqlca.SQLErrText
  754. rslt = 0
  755. GOTO ext
  756. END IF
  757. // w_sys_wait_jdt.wf_inc(i) //进度
  758. NEXT
  759. ext:
  760. IF rslt = 0 THEN
  761. ROLLBACK;
  762. ELSE
  763. COMMIT;
  764. END IF
  765. DESTROY ds_pd
  766. //Close(w_sys_wait_jdt)
  767. RETURN rslt
  768. end function
  769. public function integer uof_cmpl_apportion_mtrl (long arg_atid, ref string arg_msg);//统计材料
  770. //1.统计计划用料
  771. //2.统计领料
  772. //3.统计车间期初
  773. //4.统计车间盘点
  774. //5.重新计算
  775. Int rslt = 1
  776. Long row_cnt,pf_cnt
  777. DateTime ldt_firstdate,ldt_enddate
  778. datastore ds_cp,ds_mtrl_out,ds_mtrl_balc,ds_mtrl_ori
  779. datastore ds_mtrl_outscllplan_over,ds_mtrl_pdpk
  780. datastore ds_mtrl_fl,ds_mtrl_tl,ds_mtrl_bl
  781. Long ll_i
  782. Long ll_mtrlid,ll_scid,ll_orderid,ll_wrkGrpid,ll_storageid_wrk
  783. Long ll_pmonth,ll_storageid
  784. Decimal ld_qty,ld_amt,ld_cost
  785. String ls_mtrlname,ls_pfcode,ls_mtrlcode
  786. String ls_status,ls_woodcode,ls_pcode
  787. Int li_if_bom
  788. Int li_balcflag,li_lastauditflag
  789. s_cp_scll s_cs[],arg_s_cs[],tmp_s_cs[]
  790. Long arg_itmxt,k
  791. SELECT firstdate,enddate,wrkGrpid,pmonth,balcflag,lastauditflag
  792. INTO :ldt_firstdate,:ldt_enddate,:ll_wrkGrpid,:ll_pmonth,:li_balcflag,:li_lastauditflag
  793. FROM u_apportion_time
  794. Where atid = :arg_atid;
  795. IF sqlca.SQLCode <> 0 THEN
  796. arg_msg = '查询盘点资料失败(开始日期,结束日期)'
  797. rslt = 0
  798. GOTO ext
  799. END IF
  800. IF li_balcflag = 0 THEN
  801. arg_msg = '盘点未确认,不能操作'
  802. rslt = 0
  803. GOTO ext
  804. END IF
  805. IF li_lastauditflag = 1 THEN
  806. arg_msg = '盘点已最终审核,不能操作'
  807. rslt = 0
  808. GOTO ext
  809. END IF
  810. IF uof_checkdate(ll_wrkGrpid,ldt_firstdate,ldt_enddate,arg_msg) = 0 THEN
  811. rslt = 0
  812. GOTO ext
  813. END IF
  814. SELECT u_sc_wkp.storageid INTO :ll_storageid_wrk
  815. From u_sc_wkp Where wrkGrpid = :ll_wrkGrpid;
  816. IF sqlca.SQLCode <> 0 THEN
  817. arg_msg = '查询核算车间对应车间仓失败,'+sqlca.SQLErrText
  818. rslt = 0
  819. GOTO ext
  820. END IF
  821. IF ll_storageid_wrk = 0 THEN
  822. arg_msg = '核算车间对应车间仓未设置,操作取消'
  823. rslt = 0
  824. GOTO ext
  825. END IF
  826. DELETE u_apportion_mtrl Where atid = :arg_atid;
  827. IF sqlca.SQLCode <> 0 THEN
  828. arg_msg = '删除上次材料统计失败'
  829. rslt = 0
  830. GOTO ext
  831. END IF
  832. uo_cp_auto_scll uo_mrp_scll
  833. uo_mrp_scll = Create uo_cp_auto_scll
  834. //Open(w_sys_wait_2jdt) //初始化进度条
  835. //w_sys_wait_2jdt.Show()
  836. IF uo_option_scll_plan_wsaudit = 0 THEN
  837. // w_sys_wait_2jdt.wf_accepttol(5) //初始化进度条1
  838. //1.统计计划用料
  839. ds_cp = Create datastore
  840. ds_cp.DataObject = 'ds_apportion_cp'
  841. ds_cp.SetTransObject(sqlca)
  842. row_cnt = ds_cp.Retrieve(arg_atid)
  843. // w_sys_wait_2jdt.wf_accepttol2(row_cnt) //初始化进度条2
  844. // w_sys_wait_2jdt.wf_inc2(0)
  845. // w_sys_wait_2jdt.st_msg.Text = "正在统计计划领料..."
  846. FOR ll_i = 1 To row_cnt
  847. ll_mtrlid = ds_cp.Object.u_apportion_cp_mtrlid[ll_i]
  848. ls_mtrlname = ds_cp.Object.u_mtrldef_mtrlname[ll_i]
  849. ld_qty = ds_cp.Object.u_apportion_cp_qty[ll_i]
  850. ls_pfcode = ds_cp.Object.u_apportion_cp_pfcode[ll_i]
  851. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_i]
  852. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_i]
  853. // w_sys_wait_2jdt.st_msg.Text = "正在统计计划领料:"+ls_mtrlname+"..."
  854. // w_sys_wait_2jdt.wf_inc2(ll_i)
  855. SELECT count(*) INTO :pf_cnt
  856. FROM u_PrdPF
  857. WHERE mtrlid = :ll_mtrlid
  858. And pfcode = :ls_pfcode;
  859. IF sqlca.SQLCode <> 0 Or IsNull(pf_cnt) THEN
  860. pf_cnt = 0
  861. END IF
  862. IF pf_cnt = 0 THEN
  863. li_if_bom = 0
  864. ELSE
  865. li_if_bom = 1
  866. END IF
  867. UPDATE u_apportion_cp
  868. SET ifbom = :li_if_bom
  869. WHERE atid = :arg_atid
  870. AND scid = :ll_scid
  871. And orderid = :ll_orderid;
  872. IF sqlca.SQLCode <> 0 THEN
  873. arg_msg = '更新车间产品是否已建立清单失败,'+sqlca.SQLErrText
  874. rslt = 0
  875. GOTO ext
  876. END IF
  877. IF li_if_bom = 0 THEN CONTINUE
  878. arg_s_cs = tmp_s_cs
  879. IF uo_mrp_scll.uof_cp_scll(ll_scid,ll_orderid,0,&
  880. ld_qty,arg_s_cs,arg_itmxt,arg_msg) = 0 THEN
  881. rslt = 0
  882. GOTO ext
  883. END IF
  884. FOR k = 1 To arg_itmxt
  885. ld_cost = 0
  886. ld_amt = 0
  887. ll_mtrlid = arg_s_cs[k].mtrlid
  888. ls_status = arg_s_cs[k].status
  889. ls_woodcode = arg_s_cs[k].woodcode
  890. ls_pcode = arg_s_cs[k].pcode
  891. ld_qty = arg_s_cs[k].qty
  892. ls_mtrlcode = arg_s_cs[k].mtrlcode
  893. IF uof_get_pdb_cost(arg_atid,ll_storageid,ll_mtrlid,&
  894. ls_mtrlcode,ls_status,ls_woodcode,&
  895. ls_pcode,ld_cost,arg_msg) = 0 THEN
  896. rslt = 0
  897. GOTO ext
  898. END IF
  899. ld_amt = Round(ld_qty * ld_cost,2)
  900. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  901. ls_woodcode,ls_pcode,ls_mtrlname,ld_qty,ld_amt,ld_cost,0,0,0,0,&
  902. 0,0,0,0,0,0,0,0,0,0,0,0,arg_msg,False) = 0 THEN
  903. rslt = 0
  904. GOTO ext
  905. END IF
  906. NEXT
  907. NEXT
  908. // w_sys_wait_2jdt.wf_inc(1)
  909. //2.统计领料
  910. ds_mtrl_out = Create datastore
  911. ds_mtrl_out.DataObject = 'ds_apportion_mtrl_outware'
  912. ds_mtrl_out.SetTransObject(sqlca)
  913. row_cnt = ds_mtrl_out.Retrieve(ll_wrkGrpid,ldt_firstdate,ldt_enddate)
  914. // w_sys_wait_2jdt.wf_accepttol2(row_cnt) //初始化进度条2
  915. // w_sys_wait_2jdt.wf_inc2(0)
  916. // w_sys_wait_2jdt.st_msg.Text = "正在统计生产领料领入车间..."
  917. FOR ll_i = 1 To row_cnt
  918. ll_mtrlid = ds_mtrl_out.Object.u_outwaremx_mtrlid[ll_i]
  919. ls_mtrlname = ds_mtrl_out.Object.u_mtrldef_mtrlname[ll_i]
  920. ld_qty = ds_mtrl_out.Object.u_inwaremx_qty[ll_i]
  921. ld_amt = ds_mtrl_out.Object.amt[ll_i]
  922. ls_status = ds_mtrl_out.Object.u_outwaremx_status[ll_i]
  923. ls_woodcode = ds_mtrl_out.Object.u_outwaremx_woodcode[ll_i]
  924. ls_pcode = ds_mtrl_out.Object.u_outwaremx_pcode[ll_i]
  925. // w_sys_wait_2jdt.st_msg.Text = "正在统计生产领料:"+ls_mtrlname+"..."
  926. // w_sys_wait_2jdt.wf_inc2(ll_i)
  927. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  928. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,0,0,ld_qty,ld_amt,&
  929. 0,0,0,0,0,0,0,0,0,0,0,0,arg_msg,False) = 0 THEN
  930. rslt = 0
  931. GOTO ext
  932. END IF
  933. NEXT
  934. // w_sys_wait_2jdt.wf_inc(2)
  935. //3.统计车间期初
  936. Long last_atid
  937. SELECT top 1 atid INTO :last_atid
  938. FROM u_apportion_time
  939. WHERE enddate < :ldt_firstdate
  940. And wrkGrpid = :ll_wrkGrpid;
  941. IF sqlca.SQLCode = - 1 THEN
  942. arg_msg = '查询上次车间盘点资料失败,'+sqlca.SQLErrText
  943. rslt = 0
  944. GOTO ext
  945. ELSEIF sqlca.SQLCode = 100 Or IsNull(last_atid) THEN
  946. last_atid = 0
  947. END IF
  948. IF last_atid > 0 THEN
  949. ds_mtrl_ori = Create datastore
  950. ds_mtrl_ori.DataObject = 'ds_apportion_mtrl_balc'
  951. ds_mtrl_ori.SetTransObject(sqlca)
  952. row_cnt = ds_mtrl_ori.Retrieve(last_atid)
  953. // w_sys_wait_2jdt.wf_accepttol2(row_cnt)
  954. // w_sys_wait_2jdt.wf_inc2(0)
  955. // w_sys_wait_2jdt.st_msg.Text = "正在统计车间物料期初..."
  956. FOR ll_i = 1 To row_cnt
  957. ll_mtrlid = ds_mtrl_ori.Object.u_warepdb_mtrlid[ll_i]
  958. ls_mtrlname = ds_mtrl_ori.Object.u_mtrldef_mtrlname[ll_i]
  959. ld_qty = ds_mtrl_ori.Object.u_warepdb_factqty[ll_i]
  960. ld_amt = ds_mtrl_ori.Object.balcamt[ll_i]
  961. ls_status = ds_mtrl_ori.Object.u_warepdb_status[ll_i]
  962. ls_woodcode = ds_mtrl_ori.Object.u_warepdb_woodcode[ll_i]
  963. ls_pcode = ds_mtrl_ori.Object.u_warepdb_pcode[ll_i]
  964. // w_sys_wait_2jdt.st_msg.Text = "正在统计车间期初:"+ls_mtrlname+"..."
  965. // w_sys_wait_2jdt.wf_inc2(ll_i)
  966. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  967. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,ld_qty,ld_amt,&
  968. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,arg_msg,False) = 0 THEN
  969. rslt = 0
  970. GOTO ext
  971. END IF
  972. NEXT
  973. END IF
  974. // w_sys_wait_2jdt.wf_inc(3)
  975. //4.统计车间盘点
  976. ds_mtrl_balc = Create datastore
  977. ds_mtrl_balc.DataObject = 'ds_apportion_mtrl_balc'
  978. ds_mtrl_balc.SetTransObject(sqlca)
  979. row_cnt = ds_mtrl_balc.Retrieve(arg_atid)
  980. // w_sys_wait_2jdt.wf_accepttol2(row_cnt)
  981. // w_sys_wait_2jdt.wf_inc2(0)
  982. // w_sys_wait_2jdt.st_msg.Text = "正在统计车间盘点数据..."
  983. FOR ll_i = 1 To row_cnt
  984. ll_mtrlid = ds_mtrl_balc.Object.u_warepdb_mtrlid[ll_i]
  985. ls_mtrlname = ds_mtrl_balc.Object.u_mtrldef_mtrlname[ll_i]
  986. ld_qty = ds_mtrl_balc.Object.u_warepdb_factqty[ll_i]
  987. ld_amt = ds_mtrl_balc.Object.balcamt[ll_i]
  988. ls_status = ds_mtrl_balc.Object.u_warepdb_status[ll_i]
  989. ls_woodcode = ds_mtrl_balc.Object.u_warepdb_woodcode[ll_i]
  990. ls_pcode = ds_mtrl_balc.Object.u_warepdb_pcode[ll_i]
  991. // w_sys_wait_2jdt.st_msg.Text = "正在统计车间盘点:"+ls_mtrlname+"..."
  992. // w_sys_wait_2jdt.wf_inc2(ll_i)
  993. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  994. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,0,0,0,0,&
  995. ld_qty,ld_amt,0,0,0,0,0,0,0,0,0,0,arg_msg,False) = 0 THEN
  996. rslt = 0
  997. GOTO ext
  998. END IF
  999. NEXT
  1000. // w_sys_wait_2jdt.wf_inc(4)
  1001. //5.计算实际用料
  1002. // w_sys_wait_2jdt.wf_accepttol2(0)
  1003. // w_sys_wait_2jdt.wf_inc2(0)
  1004. // w_sys_wait_2jdt.st_msg.Text = "正在计算实际用料..."
  1005. UPDATE u_apportion_mtrl
  1006. SET outqty = orqty + inqty - balcqty,
  1007. outamt = oramt + inamt - balcamt
  1008. Where atid = :arg_atid;
  1009. IF sqlca.SQLCode <> 0 THEN
  1010. arg_msg = '计算实际用料失败,'+sqlca.SQLErrText
  1011. rslt = 0
  1012. GOTO ext
  1013. END IF
  1014. // w_sys_wait_2jdt.wf_inc(5)
  1015. ELSE
  1016. // w_sys_wait_2jdt.wf_accepttol(7) //初始化进度条1
  1017. //1.统计发料
  1018. ds_mtrl_fl = Create datastore
  1019. ds_mtrl_fl.DataObject = 'ds_apportion_mtrl_fl'
  1020. ds_mtrl_fl.SetTransObject(sqlca)
  1021. row_cnt = ds_mtrl_fl.Retrieve(ll_wrkGrpid,ldt_firstdate,ldt_enddate)
  1022. // w_sys_wait_2jdt.wf_accepttol2(row_cnt) //初始化进度条2
  1023. // w_sys_wait_2jdt.wf_inc2(0)
  1024. // w_sys_wait_2jdt.st_msg.Text = "正在统计发料数据..."
  1025. FOR ll_i = 1 To row_cnt
  1026. ll_mtrlid = ds_mtrl_fl.Object.u_outwaremx_mtrlid[ll_i]
  1027. ls_mtrlname = ds_mtrl_fl.Object.u_mtrldef_mtrlname[ll_i]
  1028. ld_qty = ds_mtrl_fl.Object.u_inwaremx_qty[ll_i]
  1029. ld_amt = ds_mtrl_fl.Object.amt[ll_i]
  1030. ls_status = ds_mtrl_fl.Object.u_outwaremx_status[ll_i]
  1031. ls_woodcode = ds_mtrl_fl.Object.u_outwaremx_woodcode[ll_i]
  1032. ls_pcode = ds_mtrl_fl.Object.u_outwaremx_pcode[ll_i]
  1033. // w_sys_wait_2jdt.st_msg.Text = "正在统计发料数据:"+ls_mtrlname+"..."
  1034. // w_sys_wait_2jdt.wf_inc2(ll_i)
  1035. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  1036. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,0,0,0,0,&
  1037. 0,0,0,0,0,0,ld_qty,ld_amt,0,0,0,0,arg_msg,False) = 0 THEN
  1038. rslt = 0
  1039. GOTO ext
  1040. END IF
  1041. NEXT
  1042. // w_sys_wait_2jdt.wf_inc(1)
  1043. //2.统计退料
  1044. ds_mtrl_tl = Create datastore
  1045. ds_mtrl_tl.DataObject = 'ds_apportion_mtrl_tl'
  1046. ds_mtrl_tl.SetTransObject(sqlca)
  1047. row_cnt = ds_mtrl_tl.Retrieve(ll_wrkGrpid,ldt_firstdate,ldt_enddate)
  1048. // w_sys_wait_2jdt.wf_accepttol2(row_cnt) //初始化进度条2
  1049. // w_sys_wait_2jdt.wf_inc2(0)
  1050. // w_sys_wait_2jdt.st_msg.Text = "正在统计退料数据..."
  1051. FOR ll_i = 1 To row_cnt
  1052. ll_mtrlid = ds_mtrl_tl.Object.u_outwaremx_mtrlid[ll_i]
  1053. ls_mtrlname = ds_mtrl_tl.Object.u_mtrldef_mtrlname[ll_i]
  1054. ld_qty = ds_mtrl_tl.Object.u_inwaremx_qty[ll_i]
  1055. ld_amt = ds_mtrl_tl.Object.amt[ll_i]
  1056. ls_status = ds_mtrl_tl.Object.u_outwaremx_status[ll_i]
  1057. ls_woodcode = ds_mtrl_tl.Object.u_outwaremx_woodcode[ll_i]
  1058. ls_pcode = ds_mtrl_tl.Object.u_outwaremx_pcode[ll_i]
  1059. // w_sys_wait_2jdt.st_msg.Text = "正在统计退料数据:"+ls_mtrlname+"..."
  1060. // w_sys_wait_2jdt.wf_inc2(ll_i)
  1061. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  1062. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,0,0,0,0,&
  1063. 0,0,0,0,0,0,0,0,ld_qty,ld_amt,0,0,arg_msg,False) = 0 THEN
  1064. rslt = 0
  1065. GOTO ext
  1066. END IF
  1067. NEXT
  1068. // w_sys_wait_2jdt.wf_inc(2)
  1069. //2.统计补料
  1070. ds_mtrl_bl = Create datastore
  1071. ds_mtrl_bl.DataObject = 'ds_apportion_mtrl_bl'
  1072. ds_mtrl_bl.SetTransObject(sqlca)
  1073. row_cnt = ds_mtrl_bl.Retrieve(ll_wrkGrpid,ldt_firstdate,ldt_enddate)
  1074. // w_sys_wait_2jdt.wf_accepttol2(row_cnt) //初始化进度条2
  1075. // w_sys_wait_2jdt.wf_inc2(0)
  1076. // w_sys_wait_2jdt.st_msg.Text = "正在统计补料数据..."
  1077. FOR ll_i = 1 To row_cnt
  1078. ll_mtrlid = ds_mtrl_bl.Object.u_outwaremx_mtrlid[ll_i]
  1079. ls_mtrlname = ds_mtrl_bl.Object.u_mtrldef_mtrlname[ll_i]
  1080. ld_qty = ds_mtrl_bl.Object.u_inwaremx_qty[ll_i]
  1081. ld_amt = ds_mtrl_bl.Object.amt[ll_i]
  1082. ls_status = ds_mtrl_bl.Object.u_outwaremx_status[ll_i]
  1083. ls_woodcode = ds_mtrl_bl.Object.u_outwaremx_woodcode[ll_i]
  1084. ls_pcode = ds_mtrl_bl.Object.u_outwaremx_pcode[ll_i]
  1085. // w_sys_wait_2jdt.st_msg.Text = "正在统计补料数据:"+ls_mtrlname+"..."
  1086. // w_sys_wait_2jdt.wf_inc2(ll_i)
  1087. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  1088. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,0,0,0,0,&
  1089. 0,0,0,0,0,0,0,0,0,0,ld_qty,ld_amt,arg_msg,False) = 0 THEN
  1090. rslt = 0
  1091. GOTO ext
  1092. END IF
  1093. NEXT
  1094. // w_sys_wait_2jdt.wf_inc(3)
  1095. //4.统计盘点盘亏
  1096. ds_mtrl_pdpk = Create datastore
  1097. ds_mtrl_pdpk.DataObject = 'ds_apportion_mtrl_pdpk'
  1098. ds_mtrl_pdpk.SetTransObject(sqlca)
  1099. row_cnt = ds_mtrl_pdpk.Retrieve(ll_storageid_wrk,ldt_firstdate,ldt_enddate)
  1100. // w_sys_wait_2jdt.wf_accepttol2(row_cnt) //初始化进度条2
  1101. // w_sys_wait_2jdt.wf_inc2(0)
  1102. // w_sys_wait_2jdt.st_msg.Text = "正在统计盘亏损耗数据..."
  1103. FOR ll_i = 1 To row_cnt
  1104. ll_mtrlid = ds_mtrl_pdpk.Object.u_outwaremx_mtrlid[ll_i]
  1105. ls_mtrlname = ds_mtrl_pdpk.Object.u_mtrldef_mtrlname[ll_i]
  1106. ld_qty = ds_mtrl_pdpk.Object.u_inwaremx_qty[ll_i]
  1107. ld_amt = ds_mtrl_pdpk.Object.amt[ll_i]
  1108. ls_status = ds_mtrl_pdpk.Object.u_outwaremx_status[ll_i]
  1109. ls_woodcode = ds_mtrl_pdpk.Object.u_outwaremx_woodcode[ll_i]
  1110. ls_pcode = ds_mtrl_pdpk.Object.u_outwaremx_pcode[ll_i]
  1111. // w_sys_wait_2jdt.st_msg.Text = "正在统计盘亏损耗数据:"+ls_mtrlname+"..."
  1112. // w_sys_wait_2jdt.wf_inc2(ll_i)
  1113. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  1114. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,0,0,0,0,&
  1115. 0,0,ld_qty,ld_amt,0,0,0,0,0,0,0,0,arg_msg,False) = 0 THEN
  1116. rslt = 0
  1117. GOTO ext
  1118. END IF
  1119. NEXT
  1120. // w_sys_wait_2jdt.wf_inc(4)
  1121. //5.计算发料单损耗
  1122. ds_mtrl_outscllplan_over = Create datastore
  1123. ds_mtrl_outscllplan_over.DataObject = 'ds_apportion_mtrl_outscllplan_over'
  1124. ds_mtrl_outscllplan_over.SetTransObject(sqlca)
  1125. row_cnt = ds_mtrl_outscllplan_over.Retrieve(ll_storageid_wrk,ldt_firstdate,ldt_enddate)
  1126. // w_sys_wait_2jdt.wf_accepttol2(row_cnt) //初始化进度条2
  1127. // w_sys_wait_2jdt.wf_inc2(0)
  1128. // w_sys_wait_2jdt.st_msg.Text = "正在统计发料通知单损耗数据..."
  1129. FOR ll_i = 1 To row_cnt
  1130. ll_mtrlid = ds_mtrl_outscllplan_over.Object.u_outwaremx_mtrlid[ll_i]
  1131. ls_mtrlname = ds_mtrl_outscllplan_over.Object.u_mtrldef_mtrlname[ll_i]
  1132. ld_qty = ds_mtrl_outscllplan_over.Object.u_inwaremx_qty[ll_i]
  1133. ld_amt = ds_mtrl_outscllplan_over.Object.amt[ll_i]
  1134. ls_status = ds_mtrl_outscllplan_over.Object.u_outwaremx_status[ll_i]
  1135. ls_woodcode = ds_mtrl_outscllplan_over.Object.u_outwaremx_woodcode[ll_i]
  1136. ls_pcode = ds_mtrl_outscllplan_over.Object.u_outwaremx_pcode[ll_i]
  1137. // w_sys_wait_2jdt.st_msg.Text = "正在统计发料通知单损耗数据:"+ls_mtrlname+"..."
  1138. // w_sys_wait_2jdt.wf_inc2(ll_i)
  1139. IF uof_update_apportion_mtrl(arg_atid,ll_mtrlid,ls_status,&
  1140. ls_woodcode,ls_pcode,ls_mtrlname,0,0,0,0,0,0,0,&
  1141. 0,0,0,0,ld_qty,ld_amt,0,0,0,0,0,0,arg_msg,False) = 0 THEN
  1142. rslt = 0
  1143. GOTO ext
  1144. END IF
  1145. NEXT
  1146. // w_sys_wait_2jdt.wf_inc(5)
  1147. //6.更新总损耗
  1148. // w_sys_wait_2jdt.wf_accepttol2(0)
  1149. // w_sys_wait_2jdt.wf_inc2(0)
  1150. // w_sys_wait_2jdt.st_msg.Text = "正在计算实际用料..."
  1151. UPDATE u_apportion_mtrl
  1152. SET outqty = outqty_fl + outqty_tl + outqty_bl + outqty_pk + outqty_scllplan,
  1153. outamt = outamt_fl + outamt_tl + outamt_bl + outamt_pk + outamt_scllplan
  1154. Where atid = :arg_atid;
  1155. IF sqlca.SQLCode <> 0 THEN
  1156. arg_msg = '计算总耗用失败,'+sqlca.SQLErrText
  1157. rslt = 0
  1158. GOTO ext
  1159. END IF
  1160. UPDATE u_apportion_mtrl
  1161. SET cost = case when outqty = 0 then 0 else round(outamt/outqty,2) END
  1162. Where atid = :arg_atid;
  1163. IF sqlca.SQLCode <> 0 THEN
  1164. arg_msg = '计算成本价失败,'+sqlca.SQLErrText
  1165. rslt = 0
  1166. GOTO ext
  1167. END IF
  1168. // w_sys_wait_2jdt.wf_inc(6)
  1169. //7.更新总损耗
  1170. // w_sys_wait_2jdt.wf_accepttol2(0)
  1171. // w_sys_wait_2jdt.wf_inc2(0)
  1172. // w_sys_wait_2jdt.st_msg.Text = "正在更新核算表材料耗用..."
  1173. UPDATE u_apportion_time
  1174. SET mtrlamt = a.amt
  1175. FROM u_apportion_time,
  1176. (SELECT u_apportion_mtrl.atid,sum(outamt) as amt
  1177. FROM u_apportion_mtrl WHERE u_apportion_mtrl.atid = :arg_atid
  1178. GROUP BY u_apportion_mtrl.atid ) a
  1179. WHERE u_apportion_time.atid = a.atid
  1180. And u_apportion_time.atid = :arg_atid;
  1181. IF sqlca.SQLCode <> 0 THEN
  1182. rslt = 0
  1183. arg_msg = '更新核算表材料耗用失败'+sqlca.SQLErrText
  1184. GOTO ext
  1185. END IF
  1186. // w_sys_wait_2jdt.wf_inc(7)
  1187. END IF
  1188. ext:
  1189. IF rslt = 0 THEN
  1190. ROLLBACK;
  1191. ELSE
  1192. COMMIT;
  1193. END IF
  1194. //Close(w_sys_wait_2jdt)
  1195. Destroy ds_cp
  1196. Destroy ds_mtrl_out
  1197. Destroy ds_mtrl_balc
  1198. Destroy ds_mtrl_pdpk
  1199. Destroy ds_mtrl_outscllplan_over
  1200. Destroy ds_mtrl_fl
  1201. Destroy ds_mtrl_tl
  1202. Destroy ds_mtrl_bl
  1203. Destroy ds_mtrl_ori
  1204. Destroy uo_mrp_scll
  1205. RETURN rslt
  1206. end function
  1207. public function integer uof_checkdate (long arg_wrkgrpid, datetime arg_firstdate, datetime arg_enddate, ref string arg_msg);Int rslt = 1
  1208. Long cnt
  1209. cnt = 0
  1210. SELECT count(*) INTO :cnt
  1211. FROM u_outware,u_workgroup,u_sc_workgroup
  1212. WHERE ( u_outware.billtype = 3 )
  1213. AND ( u_outware.secflag = 0 )
  1214. AND ( u_outware.relid = u_workgroup.workgroupid )
  1215. AND ( u_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid )
  1216. AND ( u_sc_workgroup.storageid = :arg_wrkGrpid )
  1217. AND ( u_outware.outdate >= :arg_firstdate )
  1218. And ( u_outware.outdate <= :arg_enddate );
  1219. IF sqlca.SQLCode <> 0 THEN
  1220. arg_msg = '查询核算时间范围内领入车间的领料单是否有未审核失败,操作取消,'+sqlca.SQLErrText
  1221. rslt = 0
  1222. GOTO ext
  1223. END IF
  1224. IF cnt > 0 THEN
  1225. arg_msg = '核算时间范围内领入车间的领料单有未审核,操作取消,请检查'
  1226. rslt = 0
  1227. GOTO ext
  1228. END IF
  1229. //cnt = 0
  1230. //SELECT count(*) INTO :cnt
  1231. // FROM u_outware,u_workgroup,u_sc_workgroup
  1232. // WHERE ( u_outware.billtype = 3 )
  1233. // AND ( u_outware.secflag = 1 )
  1234. // AND ( u_outware.relid = u_workgroup.workgroupid )
  1235. // AND ( u_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid )
  1236. // AND ( u_sc_workgroup.storageid = :arg_wrkGrpid )
  1237. // AND ( u_outware.outdate >= :arg_enddate );
  1238. //IF sqlca.SQLCode <> 0 THEN
  1239. // arg_msg = '查询日期:'+string(arg_enddate,'yyyy-mm-dd hh:mm:ss')+'后,领入车间的领料单是否有未审核失败,操作取消,'+sqlca.SQLErrText
  1240. // rslt = 0
  1241. // GOTO ext
  1242. //END IF
  1243. //
  1244. //IF cnt > 0 THEN
  1245. // arg_msg = '日期:'+string(arg_enddate,'yyyy-mm-dd hh:mm:ss')+'后,领入车间的领料单有已审核,操作取消,请检查'
  1246. // rslt = 0
  1247. // GOTO ext
  1248. //END IF
  1249. ext:
  1250. RETURN rslt
  1251. end function
  1252. public function integer uof_audit_apportion_time (long arg_atid, integer arg_flag, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1253. Int li_auditflag,li_disflag,li_balcflag
  1254. Long ll_storageid,ll_pmonth
  1255. String ls_pdbdate
  1256. Int li_ifbalc
  1257. DateTime null_dt
  1258. Long cnt ,ll_scid
  1259. String ls_storagename
  1260. Long ll_pycnt,ll_pkcnt,i
  1261. SetNull(null_dt)
  1262. String ls_status,ls_plancode,ls_mtrlcode,ls_unit,ls_uunit
  1263. Long ls_mtrlwareid,ls_sptid
  1264. String ls_woodcode,ls_pcode
  1265. Decimal ls_planprice,ld_rate,ld_uprice
  1266. Decimal ld_cost,ld_cost_mtrlware
  1267. Long ls_mtrlid
  1268. Int ls_dxflag
  1269. DateTime ld_balcdate,ld_enddate
  1270. String ls_balcdate
  1271. Long ll_balcdateint
  1272. Int rst
  1273. Long ll_inwareid,ll_outwareid
  1274. datastore ds_pdb
  1275. ds_pdb = CREATE datastore
  1276. ds_pdb.DataObject = 'ds_apportion_pd_ware_rp'
  1277. ds_pdb.SetTransObject(sqlca)
  1278. ds_pdb.Retrieve(arg_atid)
  1279. uo_ware_pdb_balc uo_pdb
  1280. uo_pdb = CREATE uo_ware_pdb_balc
  1281. uo_outware uo_ware_pk
  1282. uo_ware_pk = CREATE uo_outware
  1283. uo_ware_pk.commit_transaction = sqlca
  1284. uo_inware uo_ware_py
  1285. uo_ware_py = CREATE uo_inware
  1286. uo_ware_py.commit_transaction = sqlca
  1287. SELECT auditflag,disflag,balcflag
  1288. INTO :li_auditflag,:li_disflag,:li_balcflag
  1289. FROM u_apportion_time
  1290. Where atid = :arg_atid;
  1291. IF sqlca.SQLCode <> 0 THEN
  1292. arg_msg = '查询审核标记失败'
  1293. rslt = 0
  1294. GOTO ext
  1295. END IF
  1296. SELECT u_sc_wkp.storageid,
  1297. u_apportion_time.enddate
  1298. INTO :ll_storageid,
  1299. :ld_enddate
  1300. FROM u_sc_wkp,u_apportion_time
  1301. WHERE u_sc_wkp.wrkGrpid = u_apportion_time.wrkGrpid
  1302. AND u_apportion_time.atid = :arg_atid;
  1303. IF sqlca.SQLCode <> 0 THEN
  1304. arg_msg = '查询车间盘点资料失败,'+sqlca.SQLErrText
  1305. rslt = 0
  1306. GOTO ext
  1307. END IF
  1308. IF ll_storageid = 0 THEN
  1309. arg_msg = '车间未设置车间仓库,请检查'
  1310. rslt = 0
  1311. GOTO ext
  1312. END IF
  1313. ls_pdbdate = String(ld_enddate,'yyyymmdd')
  1314. IF arg_flag = 0 THEN
  1315. IF li_auditflag = 0 THEN
  1316. arg_msg = '未审核,不能撤审'
  1317. rslt = 0
  1318. GOTO ext
  1319. END IF
  1320. IF li_disflag = 1 THEN
  1321. arg_msg = '已分摊,不能撤审'
  1322. rslt = 0
  1323. GOTO ext
  1324. END IF
  1325. cnt = 0
  1326. SELECT count(*)
  1327. INTO :cnt
  1328. FROM u_inware
  1329. WHERE billtype = 9
  1330. AND storageid = :ll_storageid
  1331. AND relstr_1 = :ls_pdbdate
  1332. AND relint_1 = 1;
  1333. IF sqlca.SQLCode <> 0 THEN
  1334. rslt = 0
  1335. arg_msg = '查询盘点表相关盘盈单失败'+sqlca.SQLErrText
  1336. GOTO ext
  1337. END IF
  1338. IF cnt > 0 THEN
  1339. SELECT scid,inwareid
  1340. INTO :ll_scid,:ll_inwareid
  1341. FROM u_inware
  1342. WHERE billtype = 9
  1343. AND storageid = :ll_storageid
  1344. AND relstr_1 = :ls_pdbdate
  1345. AND relint_1 = 1;
  1346. IF sqlca.SQLCode <> 0 THEN
  1347. rslt = 0
  1348. arg_msg = '查询盘点表相关盘盈单失败'+sqlca.SQLErrText
  1349. GOTO ext
  1350. END IF
  1351. IF uo_ware_py.getinfo(ll_scid,ll_inwareid,arg_msg) = 0 THEN
  1352. rslt = 0
  1353. GOTO ext
  1354. END IF
  1355. IF uo_ware_py.c_auditing(FALSE,arg_msg) = 0 THEN
  1356. rslt = 0
  1357. GOTO ext
  1358. END IF
  1359. IF uo_ware_py.del(ll_scid,ll_inwareid,arg_msg,FALSE) = 0 THEN
  1360. rslt = 0
  1361. GOTO ext
  1362. END IF
  1363. END IF
  1364. cnt = 0
  1365. SELECT count(*)
  1366. INTO :cnt
  1367. FROM u_outware
  1368. WHERE billtype = 9
  1369. AND storageid = :ll_storageid
  1370. AND relstr_1 = :ls_pdbdate
  1371. AND relint_1 = 1;
  1372. IF sqlca.SQLCode <> 0 THEN
  1373. rslt = 0
  1374. arg_msg = '查询盘点表相关盘盈单失败'+sqlca.SQLErrText
  1375. GOTO ext
  1376. END IF
  1377. IF cnt > 0 THEN
  1378. SELECT scid,outwareid
  1379. INTO :ll_scid,:ll_outwareid
  1380. FROM u_outware
  1381. WHERE billtype = 9
  1382. AND storageid = :ll_storageid
  1383. AND relstr_1 = :ls_pdbdate
  1384. AND ifauto = 1;
  1385. IF sqlca.SQLCode <> 0 THEN
  1386. rslt = 0
  1387. arg_msg = '查询盘点表相关盘亏单失败'+sqlca.SQLErrText
  1388. GOTO ext
  1389. END IF
  1390. IF uo_ware_pk.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 THEN
  1391. rslt = 0
  1392. GOTO ext
  1393. END IF
  1394. IF uo_ware_pk.c_auditing(FALSE,arg_msg) = 0 THEN
  1395. rslt = 0
  1396. GOTO ext
  1397. END IF
  1398. IF uo_ware_pk.del(ll_scid,ll_outwareid,0,arg_msg,FALSE) = 0 THEN
  1399. rslt = 0
  1400. GOTO ext
  1401. END IF
  1402. END IF
  1403. IF uo_pdb.uof_pdb_caudit(ll_storageid,Long(ls_pdbdate),arg_msg,FALSE) = 0 THEN
  1404. arg_msg = '撤审盘点表失败,'+arg_msg
  1405. rslt = 0
  1406. GOTO ext
  1407. END IF
  1408. UPDATE u_apportion_time
  1409. SET auditflag = :arg_flag,
  1410. auditrep = '',
  1411. auditdate = :null_dt
  1412. WHERE atid = :arg_atid
  1413. AND auditflag = 1
  1414. AND disflag = 0;
  1415. ELSE
  1416. IF li_balcflag = 0 THEN
  1417. arg_msg = '未确认,不能再审核'
  1418. rslt = 0
  1419. GOTO ext
  1420. END IF
  1421. IF li_auditflag = 1 THEN
  1422. arg_msg = '已经审核,不能再审核'
  1423. rslt = 0
  1424. GOTO ext
  1425. END IF
  1426. SELECT ifbalc,storagename INTO :li_ifbalc,:ls_storagename
  1427. FROM u_storage
  1428. Where storageid = :ll_storageid;
  1429. IF sqlca.SQLCode <> 0 THEN
  1430. arg_msg = '查询仓库是否审核盘点表自动结存标记失败,'+sqlca.SQLErrText
  1431. rslt = 0
  1432. GOTO ext
  1433. END IF
  1434. SELECT count(*)
  1435. INTO :cnt
  1436. FROM u_warepdb
  1437. WHERE u_warepdb.storageid = :ll_storageid
  1438. AND u_warepdb.pdbdate = :ls_pdbdate
  1439. AND flag = 0 USING sqlca;
  1440. IF sqlca.SQLCode < 0 THEN
  1441. arg_msg = '查询操作失败,在盘点日:'+String(ls_pdbdate)+',仓库:'+ls_storagename+'的数据资料!'
  1442. rslt = 0
  1443. GOTO ext
  1444. ELSE
  1445. IF cnt <= 0 THEN
  1446. arg_msg = '盘点日:'+String(ls_pdbdate)+',仓库:'+ls_storagename+'的盘点数据已经审核!'
  1447. rslt = 0
  1448. GOTO ext
  1449. END IF
  1450. END IF
  1451. SELECT scid INTO :ll_scid
  1452. FROM u_storage
  1453. Where storageid = :ll_storageid;
  1454. IF sqlca.SQLCode <> 0 THEN
  1455. arg_msg = '查询仓库所属分部失败'
  1456. rslt = 0
  1457. GOTO ext
  1458. END IF
  1459. FOR i = 1 TO ds_pdb.RowCount()
  1460. IF ds_pdb.Object.pypkqty[i] > 0 THEN
  1461. ll_pycnt++
  1462. ELSEIF ds_pdb.Object.pypkqty[i] < 0 THEN
  1463. ll_pkcnt++
  1464. END IF
  1465. NEXT
  1466. IF ll_pycnt > 0 THEN
  1467. IF uo_ware_py.newbegin(ll_scid,9,arg_msg) = 0 THEN
  1468. arg_msg = 'error!/盘盈单'+arg_msg
  1469. rslt = 0
  1470. GOTO ext
  1471. END IF
  1472. uo_ware_py.indate = DateTime(Date(Left(ls_pdbdate,4)+'-'+Mid(ls_pdbdate,5,2)+'-'+Right(ls_pdbdate,2)),Time(0))
  1473. uo_ware_py.inrep = publ_operator
  1474. uo_ware_py.part = ''
  1475. uo_ware_py.dscrp = '电脑生成的'+ls_pdbdate+'的盘盈单'
  1476. uo_ware_py.storageid = ll_storageid
  1477. uo_ware_py.commit_transaction = sqlca
  1478. uo_ware_py.relstr_1 = ls_pdbdate
  1479. uo_ware_py.relint_1 = 1 //自动建立
  1480. uo_ware_py.if_getid_ture = FALSE
  1481. END IF
  1482. IF ll_pkcnt > 0 THEN
  1483. IF uo_ware_pk.newbegin(ll_scid,9,arg_msg) = 0 THEN
  1484. arg_msg = 'error!/盘亏单'+arg_msg
  1485. rslt = 0
  1486. GOTO ext
  1487. END IF
  1488. uo_ware_pk.outdate = DateTime(Date(Left(ls_pdbdate,4)+'-'+Mid(ls_pdbdate,5,2)+'-'+Right(ls_pdbdate,2)),Time(0))
  1489. uo_ware_pk.outrep = publ_operator
  1490. uo_ware_pk.part = ''
  1491. uo_ware_pk.dscrp = '电脑生成的'+ls_pdbdate+'的盘亏单'
  1492. uo_ware_pk.storageid = ll_storageid
  1493. uo_ware_pk.ifauto = 1 //自动
  1494. uo_ware_pk.relstr_1 = ls_pdbdate
  1495. uo_ware_pk.commit_transaction = sqlca
  1496. uo_ware_pk.if_getid_ture = FALSE
  1497. END IF
  1498. // Open(w_sys_wait_jdt) //初始化进度条
  1499. // w_sys_wait_jdt.Show()
  1500. // w_sys_wait_jdt.wf_accepttol(ds_pdb.RowCount()) //初始化进度条1
  1501. FOR i = 1 TO ds_pdb.RowCount()
  1502. ls_mtrlcode = ds_pdb.Object.u_mtrldef_mtrlcode[i]
  1503. ls_unit = ds_pdb.Object.u_mtrldef_unit[i]
  1504. // w_sys_wait_jdt.st_msg.Text = "处理:"+ls_mtrlcode //进度信息
  1505. IF ds_pdb.Object.mtrlid[i] <= 0 THEN CONTINUE
  1506. IF ds_pdb.Object.pypkqty[i] = 0 THEN CONTINUE
  1507. ls_mtrlwareid = ds_pdb.Object.u_warepdb_mtrlwareid[i]
  1508. ls_mtrlid = ds_pdb.Object.mtrlid[i]
  1509. ls_sptid = ds_pdb.Object.u_warepdb_sptid[i]
  1510. ls_plancode = ds_pdb.Object.u_warepdb_plancode[i]
  1511. ls_dxflag = ds_pdb.Object.u_warepdb_dxflag[i]
  1512. ls_status = ds_pdb.Object.u_warepdb_status[i]
  1513. ls_woodcode = ds_pdb.Object.u_warepdb_woodcode[i]
  1514. ls_pcode = ds_pdb.Object.u_warepdb_pcode[i]
  1515. SELECT cost INTO :ld_cost_mtrlware
  1516. FROM u_mtrlware
  1517. WHERE mtrlwareid = :ls_mtrlwareid
  1518. AND scid = :ll_scid;
  1519. IF sqlca.SQLCode <> 0 THEN
  1520. arg_msg = '物料:'+ls_mtrlcode+',查询库存成本价失败'+sqlca.SQLErrText
  1521. rslt = 0
  1522. GOTO ext
  1523. END IF
  1524. SELECT planprice INTO :ls_planprice
  1525. FROM u_mtrldef
  1526. Where mtrlid = :ls_mtrlid;
  1527. IF sqlca.SQLCode <> 0 THEN
  1528. arg_msg = '物料:'+ls_mtrlcode+',查询计划价失败'+sqlca.SQLErrText
  1529. rslt = 0
  1530. GOTO ext
  1531. END IF
  1532. Int ll_mtrlprp
  1533. ll_mtrlprp = f_get_storage_mtrlprp(ll_storageid)
  1534. IF ll_mtrlprp = 0 OR ll_mtrlprp = 1 OR ll_mtrlprp = 2 THEN
  1535. IF ld_cost_mtrlware = 0 THEN
  1536. ld_cost = ls_planprice
  1537. ELSE
  1538. ld_cost = ld_cost_mtrlware
  1539. END IF
  1540. ELSE
  1541. ld_cost = 0
  1542. END IF
  1543. IF ds_pdb.Object.u_mtrldef_ifunit[i] = 0 THEN
  1544. ls_uunit = ds_pdb.Object.u_mtrldef_unit[i]
  1545. ld_rate = 1
  1546. ld_uprice = ld_cost
  1547. ELSE
  1548. ld_rate = ds_pdb.Object.u_warepdb_rate[i]
  1549. IF ld_rate = 1 THEN
  1550. ls_uunit = ds_pdb.Object.u_mtrldef_unit[i]
  1551. ld_uprice = ld_cost
  1552. ELSE
  1553. ls_uunit = ds_pdb.Object.u_mtrldef_unit_buy[i]
  1554. ld_uprice = ld_cost * ld_rate
  1555. END IF
  1556. END IF
  1557. IF ds_pdb.Object.pypkqty[i] > 0 THEN
  1558. IF ll_pycnt > 0 THEN
  1559. IF uo_ware_py.acceptmx(i,&
  1560. ds_pdb.Object.mtrlid[i],&
  1561. ds_pdb.Object.u_mtrldef_mtrlcode[i],&
  1562. ls_plancode,&
  1563. ls_status,&
  1564. ds_pdb.Object.pypkuqty[i],&
  1565. ld_uprice,&
  1566. 1,&
  1567. '',&
  1568. arg_msg,0,0,0,ls_woodcode,ls_pcode,ls_sptid,ls_uunit,ld_rate,ds_pdb.Object.pypkqty[i],0,0,'','',0,0,'','',&
  1569. ds_pdb.Object.pypkuqty[i],&
  1570. 0) = 0 THEN
  1571. arg_msg = 'error!/盘盈单'+arg_msg
  1572. rslt = 0
  1573. GOTO ext
  1574. END IF
  1575. END IF
  1576. ELSEIF ds_pdb.Object.pypkqty[i] < 0 THEN
  1577. IF ll_pkcnt > 0 THEN
  1578. IF uo_ware_pk.acceptmx(ls_mtrlwareid,&
  1579. Abs(ds_pdb.Object.pypkqty[i]),&
  1580. ld_cost,&
  1581. 1,&
  1582. '',&
  1583. i,&
  1584. arg_msg,0,0,0,0,'',0,0,ls_uunit,&
  1585. Abs(ds_pdb.Object.pypkuqty[i]),ld_rate,'','',0,0,'',0,0,0,0,'','') = 0 THEN
  1586. arg_msg = 'error!/盘亏单'+arg_msg
  1587. rslt = 0
  1588. GOTO ext
  1589. END IF
  1590. END IF
  1591. END IF
  1592. // w_sys_wait_jdt.wf_inc(i) //进度
  1593. NEXT
  1594. // Close(w_sys_wait_jdt)
  1595. IF ll_pycnt > 0 THEN
  1596. IF uo_ware_py.Save(FALSE,arg_msg) = 0 THEN
  1597. arg_msg = 'error!/盘盈单'+arg_msg
  1598. rslt = 0
  1599. GOTO ext
  1600. END IF
  1601. IF uo_ware_py.getinfo(ll_scid,uo_ware_py.inwareid,arg_msg) = 0 THEN
  1602. arg_msg = 'error!/盘盈单'+arg_msg
  1603. rslt = 0
  1604. GOTO ext
  1605. END IF
  1606. IF uo_ware_py.auditing(FALSE,arg_msg) = 0 THEN
  1607. arg_msg = 'error!/盘盈单'+arg_msg
  1608. rslt = 0
  1609. GOTO ext
  1610. END IF
  1611. END IF
  1612. IF ll_pkcnt > 0 THEN
  1613. IF uo_ware_pk.Save(FALSE,arg_msg) = 0 THEN
  1614. arg_msg = 'error!/盘亏单'+arg_msg
  1615. rslt = 0
  1616. GOTO ext
  1617. END IF
  1618. IF uo_ware_pk.getinfo(ll_scid,uo_ware_pk.outwareid,arg_msg) = 0 THEN
  1619. arg_msg = 'error!/盘亏单'+arg_msg
  1620. rslt = 0
  1621. GOTO ext
  1622. END IF
  1623. IF uo_ware_pk.auditing(FALSE,arg_msg) = 0 THEN
  1624. arg_msg = 'error!/盘亏单'+arg_msg
  1625. rslt = 0
  1626. GOTO ext
  1627. END IF
  1628. END IF
  1629. IF uo_pdb.uof_pdb_audit(ll_storageid,Long(ls_pdbdate),arg_opemp,arg_msg,FALSE) = 0 THEN
  1630. arg_msg = '审核盘点表失败,'+arg_msg
  1631. rslt = 0
  1632. GOTO ext
  1633. END IF
  1634. ls_balcdate = Left(String(ls_pdbdate),4) + '-' + Left(Right(String(ls_pdbdate),4),2) +'-'+ Right(String(ls_pdbdate),2)
  1635. ld_balcdate = DateTime(Date(ls_balcdate),Time(0))
  1636. ll_balcdateint = Year(Date(ld_balcdate)) * 10000 + Month(Date(ld_balcdate)) * 100 + Day(Date(ld_balcdate))
  1637. IF li_ifbalc = 1 THEN
  1638. // w_sys_wait.Show()
  1639. // w_sys_wait.wf_set_msg('系统正在处理数据...')
  1640. rst = uo_pdb.uof_warebalc(ll_storageid,ld_balcdate,arg_msg,FALSE,0)
  1641. // w_sys_wait.Hide()
  1642. IF rst = 0 THEN
  1643. arg_msg = '结存失败:'+arg_msg
  1644. rslt = 0
  1645. GOTO ext
  1646. ELSEIF rst = 2 THEN
  1647. rslt = 2
  1648. GOTO ext
  1649. ELSE
  1650. f_setwarebalc_log(ll_balcdateint,ll_storageid,0,arg_msg,FALSE)
  1651. END IF
  1652. END IF
  1653. UPDATE u_apportion_time
  1654. SET auditflag = 1,
  1655. auditrep = :arg_opemp,
  1656. auditdate = getdate()
  1657. WHERE atid = :arg_atid
  1658. AND auditflag = 0
  1659. AND balcflag = 1 ;
  1660. END IF
  1661. IF sqlca.SQLCode <> 0 THEN
  1662. arg_msg = '更新审核标记失败,'+sqlca.SQLErrText
  1663. rslt = 0
  1664. GOTO ext
  1665. ELSEIF sqlca.SQLNRows = 0 THEN
  1666. rslt = 0
  1667. arg_msg = "正在执行操作,请稍后查询。"+"~n"+sqlca.SQLErrText
  1668. GOTO ext
  1669. END IF
  1670. ext:
  1671. //Close(w_sys_wait_jdt)
  1672. IF rslt = 0 OR rslt = 2 THEN
  1673. ROLLBACK;
  1674. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1675. COMMIT;
  1676. END IF
  1677. DESTROY uo_pdb
  1678. DESTROY uo_ware_py
  1679. DESTROY uo_ware_pk
  1680. RETURN rslt
  1681. end function
  1682. public function integer uof_balc_apportion_time (long arg_atid, integer arg_flag, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1683. Int li_auditflag,li_balcflag
  1684. Int li_disflag,li_itemauditflag,li_abnormityflag,li_glgzflag,li_lastauditflag
  1685. Long ll_storageid,ll_pmonth
  1686. DateTime ldt_enddate
  1687. DateTime null_dt
  1688. Long rst
  1689. SetNull(null_dt)
  1690. uo_ware_pdb_balc uo_pdb
  1691. uo_pdb = Create uo_ware_pdb_balc
  1692. SELECT auditflag,balcflag,disflag,itemauditflag,abnormityflag,glgzflag,lastauditflag
  1693. INTO :li_auditflag,:li_balcflag,:li_disflag,:li_itemauditflag,:li_abnormityflag,:li_glgzflag,:li_lastauditflag
  1694. FROM u_apportion_time
  1695. Where atid = :arg_atid;
  1696. IF sqlca.SQLCode <> 0 THEN
  1697. arg_msg = '查询盘点标记失败'
  1698. rslt = 0
  1699. GOTO ext
  1700. END IF
  1701. SELECT u_sc_wkp.storageid,
  1702. u_apportion_time.pmonth,
  1703. u_apportion_time.enddate
  1704. INTO :ll_storageid,
  1705. :ll_pmonth,
  1706. :ldt_enddate
  1707. FROM u_sc_wkp,u_apportion_time
  1708. WHERE u_sc_wkp.wrkGrpid = u_apportion_time.wrkGrpid
  1709. And u_apportion_time.atid = :arg_atid;
  1710. IF sqlca.SQLCode <> 0 THEN
  1711. arg_msg = '查询车间盘点资料失败,'+sqlca.SQLErrText
  1712. rslt = 0
  1713. GOTO ext
  1714. END IF
  1715. IF ll_storageid = 0 THEN
  1716. arg_msg = '车间未设置车间仓库,请检查'
  1717. rslt = 0
  1718. GOTO ext
  1719. END IF
  1720. IF arg_flag = 0 THEN
  1721. IF li_balcflag = 0 THEN
  1722. arg_msg = '未确认,不能反确认'
  1723. rslt = 0
  1724. GOTO ext
  1725. END IF
  1726. IF li_disflag = 1 THEN
  1727. arg_msg = '已用料分摊,不能反确认,请先取消用料分摊'
  1728. rslt = 0
  1729. GOTO ext
  1730. END IF
  1731. IF li_itemauditflag = 1 THEN
  1732. arg_msg = '已费用分摊,不能反确认,请先取消费用分摊'
  1733. rslt = 0
  1734. GOTO ext
  1735. END IF
  1736. IF li_abnormityflag = 1 THEN
  1737. arg_msg = '已执行其它计件分摊,不能反确认,请先取消其它计件分摊'
  1738. rslt = 0
  1739. GOTO ext
  1740. END IF
  1741. IF li_glgzflag = 1 THEN
  1742. arg_msg = '已执行管理工资分摊,不能反确认,请先取消管理工资分摊'
  1743. rslt = 0
  1744. GOTO ext
  1745. END IF
  1746. IF li_auditflag = 1 THEN
  1747. arg_msg = '已审核,不能反确认'
  1748. rslt = 0
  1749. GOTO ext
  1750. END IF
  1751. IF li_lastauditflag = 1 THEN
  1752. arg_msg = '已终审,不能反确认'
  1753. rslt = 0
  1754. GOTO ext
  1755. END IF
  1756. // IF uo_pdb.uof_pdb_del(ll_storageid,Long(String(ldt_enddate,'yyyymmdd')),arg_msg,False) = 0 THEN
  1757. // arg_msg = '删除车间盘点表失败,'+arg_msg
  1758. // rslt = 0
  1759. // GOTO ext
  1760. // END IF
  1761. DELETE From u_apportion_cp Where atid = :arg_atid;
  1762. IF sqlca.SQLCode <> 0 THEN
  1763. arg_msg = "删除盘点日期相关成品统计数操作失败!"+ sqlca.SQLErrText
  1764. rslt = 0
  1765. GOTO ext
  1766. END IF
  1767. DELETE From u_apportion_mtrl Where atid = :arg_atid;
  1768. IF sqlca.SQLCode <> 0 THEN
  1769. arg_msg = "删除盘点日期相关材料统计数操作失败!"+ sqlca.SQLErrText
  1770. rslt = 0
  1771. GOTO ext
  1772. END IF
  1773. DELETE From u_apportion_item Where atid = :arg_atid;
  1774. IF sqlca.SQLCode <> 0 THEN
  1775. arg_msg = "删除盘点日期相关费用统计数操作失败!"+ sqlca.SQLErrText
  1776. rslt = 0
  1777. GOTO ext
  1778. END IF
  1779. DELETE From u_apportion_gz Where atid = :arg_atid;
  1780. IF sqlca.SQLCode <> 0 THEN
  1781. arg_msg = "删除盘点日期相关管理工资统计数操作失败!"+ sqlca.SQLErrText
  1782. rslt = 0
  1783. GOTO ext
  1784. END IF
  1785. UPDATE u_apportion_time
  1786. SET balcflag = :arg_flag,
  1787. balcemp = '',
  1788. balcdate = :null_dt
  1789. WHERE atid = :arg_atid
  1790. AND auditflag = 0
  1791. And balcflag = 1;
  1792. ELSE
  1793. IF li_balcflag = 1 THEN
  1794. arg_msg = '已经确认,不能再确认'
  1795. rslt = 0
  1796. GOTO ext
  1797. END IF
  1798. // rslt = uo_pdb.uof_pdb_add(arg_atid,ll_storageid,ldt_enddate,0,arg_msg,False)
  1799. //
  1800. // IF rslt = 0 THEN
  1801. // arg_msg = "车间建立盘点表失败,"+arg_msg
  1802. // GOTO ext
  1803. // ELSEIF rslt = 2 THEN
  1804. // GOTO ext
  1805. // END IF
  1806. UPDATE u_apportion_time
  1807. SET balcflag = :arg_flag,
  1808. balcemp = :arg_opemp,
  1809. balcdate = getdate()
  1810. WHERE atid = :arg_atid
  1811. And balcflag = 0;
  1812. END IF
  1813. IF sqlca.SQLCode <> 0 THEN
  1814. arg_msg = '更新确认标记失败,'+sqlca.SQLErrText
  1815. rslt = 0
  1816. GOTO ext
  1817. ELSEIF sqlca.SQLNRows = 0 THEN
  1818. rslt = 0
  1819. arg_msg = "正在执行操作,请稍后查询。"+"~n"+sqlca.SQLErrText
  1820. GOTO ext
  1821. END IF
  1822. ext:
  1823. IF rslt = 0 Or rslt = 2 THEN
  1824. ROLLBACK;
  1825. ELSEIF rslt = 1 And arg_ifcommit THEN
  1826. COMMIT;
  1827. END IF
  1828. Destroy uo_pdb
  1829. RETURN rslt
  1830. end function
  1831. public function integer uof_get_pdb_cost (long arg_atid, long arg_storageid, long arg_mtrlid, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_ref_cost, ref string arg_msg);
  1832. Int rslt = 1
  1833. SELECT cost INTO :arg_ref_cost
  1834. FROM u_warepdb
  1835. WHERE atid = :arg_atid
  1836. AND storageid = :arg_storageid
  1837. AND mtrlid = :arg_mtrlid
  1838. AND status = :arg_status
  1839. AND woodcode = :arg_woodcode
  1840. AND pcode = :arg_pcode;
  1841. IF sqlca.SQLCode = -1 THEN
  1842. arg_msg = '查询物料:'+arg_mtrlcode+',盘点表成本价失败,'+sqlca.SQLErrText
  1843. rslt = 0
  1844. GOTO ext
  1845. elseif sqlca.SQLCode = 100 THEN
  1846. arg_ref_cost = 0
  1847. END IF
  1848. ext:
  1849. RETURN rslt
  1850. end function
  1851. public function integer uof_cmpl_apportion_item_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  1852. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_itemauditflag
  1853. Decimal ld_sumqty,ld_itemamt,ld_cpqty
  1854. SELECT itemauditflag
  1855. INTO :ll_itemauditflag
  1856. FROM u_apportion_time
  1857. Where atid = :arg_atid;
  1858. IF sqlca.SQLCode <> 0 THEN
  1859. rslt = 0
  1860. arg_msg = '查询车间盘点表费用分摊标记失败,'+sqlca.SQLErrText
  1861. GOTO ext
  1862. END IF
  1863. IF ll_itemauditflag = 1 THEN
  1864. rslt = 0
  1865. arg_msg = '该车间盘点表已经执行过费用分摊操作,不能重复执行'
  1866. GOTO ext
  1867. END IF
  1868. datastore ds_item,ds_cp
  1869. ds_item = CREATE datastore
  1870. ds_item.DataObject = 'ds_apportion_item'
  1871. ds_item.SetTransObject(sqlca)
  1872. ds_cp = CREATE datastore
  1873. ds_cp.DataObject = 'ds_apportion_cp'
  1874. ds_cp.SetTransObject(sqlca)
  1875. SELECT sum(qty)
  1876. INTO :ld_sumqty
  1877. FROM u_apportion_cp
  1878. WHERE orderid > 0 AND
  1879. atid = :arg_atid;
  1880. IF sqlca.SQLCode <> 0 THEN
  1881. rslt = 0
  1882. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  1883. GOTO ext
  1884. END IF
  1885. row_cnt = ds_item.Retrieve(arg_atid)
  1886. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  1887. IF row_cnt = 0 THEN
  1888. rslt = 0
  1889. arg_msg = '没有统计费用数据,不能执行费用分摊操作'
  1890. GOTO ext
  1891. END IF
  1892. Long ll_scid,ll_orderid,ll_itemid
  1893. Decimal ld_cpamt
  1894. //Open(w_sys_wait_2jdt) //初始化进度条
  1895. //w_sys_wait_2jdt.Show()
  1896. //w_sys_wait_2jdt.wf_accepttol(row_cnt) //初始化进度条1
  1897. FOR ll_i = 1 TO row_cnt
  1898. ld_itemamt = ds_item.Object.u_apportion_item_amt[ll_i]
  1899. ll_itemid = ds_item.Object.u_apportion_item_itemid[ll_i]
  1900. //w_sys_wait_2jdt.wf_accepttol2(row_cnt_cp) //初始化进度条2
  1901. //w_sys_wait_2jdt.st_msg.Text = "正在统计..."
  1902. FOR ll_j = 1 TO row_cnt_cp
  1903. //w_sys_wait_2jdt.wf_inc2(ll_j)
  1904. ld_cpqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  1905. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  1906. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  1907. IF ll_orderid = 0 THEN CONTINUE
  1908. ld_cpamt = ld_cpqty / ld_sumqty * ld_itemamt
  1909. INSERT INTO u_apportion_item_ft
  1910. (scid,
  1911. orderid,
  1912. atid,
  1913. itemid,
  1914. amt,
  1915. opdate,
  1916. opemp)
  1917. VALUES (:ll_scid,
  1918. :ll_orderid,
  1919. :arg_atid,
  1920. :ll_itemid,
  1921. :ld_cpamt,
  1922. getdate(),
  1923. :publ_operator);
  1924. IF sqlca.SQLCode <> 0 THEN
  1925. rslt = 0
  1926. arg_msg = '插入指令费用分摊表失败'+sqlca.SQLErrText
  1927. GOTO ext
  1928. END IF
  1929. NEXT
  1930. //w_sys_wait_2jdt.wf_inc(ll_i)
  1931. NEXT
  1932. UPDATE u_apportion_time
  1933. SET itemauditflag = 1,
  1934. itemauditdate = getdate(),
  1935. itemauditemp = :publ_operator
  1936. Where atid = :arg_atid;
  1937. IF sqlca.SQLCode <> 0 THEN
  1938. rslt = 0
  1939. arg_msg = '更新费用分摊标记失败'+sqlca.SQLErrText
  1940. GOTO ext
  1941. END IF
  1942. ext:
  1943. //Close(w_sys_wait_2jdt)
  1944. IF rslt = 0 THEN
  1945. ROLLBACK;
  1946. ELSE
  1947. COMMIT;
  1948. END IF
  1949. DESTROY ds_item
  1950. DESTROY ds_cp
  1951. RETURN rslt
  1952. end function
  1953. public function integer uof_del_apportion_item_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  1954. Int li_itemauditflag
  1955. DateTime ld_nulldate
  1956. SetNull(ld_nulldate)
  1957. SELECT itemauditflag INTO :li_itemauditflag
  1958. FROM u_apportion_time
  1959. Where atid = :arg_atid;
  1960. IF sqlca.SQLCode <> 0 THEN
  1961. arg_msg = '查询该盘点是否已费用分摊失败'
  1962. rslt = 0
  1963. GOTO ext
  1964. END IF
  1965. IF li_itemauditflag = 0 THEN
  1966. arg_msg = '该盘点还没有费用分摊,不能取消费用分滩'
  1967. rslt = 0
  1968. GOTO ext
  1969. END IF
  1970. DELETE FROM u_apportion_item_ft Where atid = :arg_atid;
  1971. IF sqlca.SQLCode <> 0 THEN
  1972. arg_msg = "删除指令费用分摊表操作失败!"+ sqlca.SQLErrText
  1973. rslt = 0
  1974. GOTO ext
  1975. END IF
  1976. UPDATE u_apportion_time
  1977. SET itemauditflag = 0 ,
  1978. itemauditdate = :ld_nulldate,
  1979. itemauditemp = ''
  1980. Where atid = :arg_atid;
  1981. IF sqlca.SQLCode <> 0 THEN
  1982. rslt = 0
  1983. arg_msg = '更新费用分滩标记失败'+sqlca.SQLErrText
  1984. GOTO ext
  1985. END IF
  1986. ext:
  1987. IF rslt = 0 THEN
  1988. ROLLBACK;
  1989. ELSE
  1990. COMMIT;
  1991. END IF
  1992. RETURN rslt
  1993. end function
  1994. public function integer uof_lastaudit (long arg_atid, ref string arg_msg);Int rslt = 1
  1995. Int li_disflag,li_itemauditflag
  1996. SELECT disflag,
  1997. itemauditflag
  1998. INTO :li_disflag,
  1999. :li_itemauditflag
  2000. FROM u_apportion_time
  2001. Where atid = :arg_atid;
  2002. IF sqlca.SQLCode <> 0 THEN
  2003. rslt = 0
  2004. arg_msg = '查询材料分滩及费用分滩标记失败'+sqlca.SQLErrText
  2005. GOTO ext
  2006. END IF
  2007. IF li_disflag = 0 THEN
  2008. rslt = 0
  2009. arg_msg = '还没有执行材料分滩,不能最终审核,请核对'
  2010. GOTO ext
  2011. END IF
  2012. IF li_itemauditflag = 0 THEN
  2013. rslt = 0
  2014. arg_msg = '还没有执行费用分滩,不能最终审核,请核对'
  2015. GOTO ext
  2016. END IF
  2017. UPDATE u_apportion_time
  2018. SET lastauditflag = 1,
  2019. lastauditdate = getdate(),
  2020. lastauditemp = :publ_operator
  2021. Where atid = :arg_atid;
  2022. IF sqlca.SQLCode <> 0 THEN
  2023. rslt = 0
  2024. arg_msg = '更新最终审核标记失败'+sqlca.SQLErrText
  2025. GOTO ext
  2026. END IF
  2027. ext:
  2028. IF rslt = 0 THEN
  2029. ROLLBACK;
  2030. ELSE
  2031. COMMIT;
  2032. END IF
  2033. RETURN rslt
  2034. end function
  2035. public function integer uof_c_lastaudit (long arg_atid, ref string arg_msg);Int rslt = 1
  2036. Int li_lastauditflag
  2037. DateTime ld_nulldate
  2038. SetNull(ld_nulldate)
  2039. SELECT lastauditflag
  2040. INTO :li_lastauditflag
  2041. FROM u_apportion_time
  2042. Where atid = :arg_atid;
  2043. IF sqlca.SQLCode <> 0 THEN
  2044. rslt = 0
  2045. arg_msg = '查询最终审核标记失败'+sqlca.SQLErrText
  2046. GOTO ext
  2047. END IF
  2048. IF li_lastauditflag = 0 THEN
  2049. rslt = 0
  2050. arg_msg = '还没有执行最终审核,不能撤审,请核对'
  2051. GOTO ext
  2052. END IF
  2053. UPDATE u_apportion_time
  2054. SET lastauditflag = 0,
  2055. lastauditdate = :ld_nulldate,
  2056. lastauditemp = ''
  2057. Where atid = :arg_atid;
  2058. IF sqlca.SQLCode <> 0 THEN
  2059. rslt = 0
  2060. arg_msg = '更新最终审核标记失败'+sqlca.SQLErrText
  2061. GOTO ext
  2062. END IF
  2063. ext:
  2064. IF rslt = 0 THEN
  2065. ROLLBACK;
  2066. ELSE
  2067. COMMIT;
  2068. END IF
  2069. RETURN rslt
  2070. end function
  2071. public function integer uof_cmpl_apportion_item_ft_mtrl (long arg_atid, ref string arg_msg);Int rslt = 1
  2072. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_itemauditflag
  2073. Decimal ld_sumqty,ld_itemamt,ld_cpqty
  2074. SELECT itemauditflag
  2075. INTO :ll_itemauditflag
  2076. FROM u_apportion_time
  2077. Where atid = :arg_atid;
  2078. IF sqlca.SQLCode <> 0 THEN
  2079. rslt = 0
  2080. arg_msg = '查询车间盘点表费用分滩标记失败,'+sqlca.SQLErrText
  2081. GOTO ext
  2082. END IF
  2083. IF ll_itemauditflag = 1 THEN
  2084. rslt = 0
  2085. arg_msg = '该车间盘点表已经执行过费用分滩操作,不能重复执行'
  2086. GOTO ext
  2087. END IF
  2088. datastore ds_item,ds_cp
  2089. ds_item = CREATE datastore
  2090. ds_item.DataObject = 'ds_apportion_item'
  2091. ds_item.SetTransObject(sqlca)
  2092. ds_cp = CREATE datastore
  2093. ds_cp.DataObject = 'ds_apportion_cp'
  2094. ds_cp.SetTransObject(sqlca)
  2095. SELECT sum(qty)
  2096. INTO :ld_sumqty
  2097. FROM u_apportion_cp
  2098. WHERE orderid > 0 AND
  2099. atid = :arg_atid;
  2100. IF sqlca.SQLCode <> 0 THEN
  2101. rslt = 0
  2102. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  2103. GOTO ext
  2104. END IF
  2105. row_cnt = ds_item.Retrieve(arg_atid)
  2106. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  2107. IF row_cnt = 0 THEN
  2108. rslt = 0
  2109. arg_msg = '没有统计费用数据,不能执行费用分滩操作'
  2110. GOTO ext
  2111. END IF
  2112. Long ll_scid,ll_orderid,ll_itemid,ll_mtrlid
  2113. Decimal ld_cpamt,ld_cpcost
  2114. //OPEN(w_sys_wait_2jdt) //初始化进度条
  2115. //w_sys_wait_2jdt.Show()
  2116. //w_sys_wait_2jdt.wf_accepttol(row_cnt) //初始化进度条1
  2117. FOR ll_i = 1 TO row_cnt
  2118. ld_itemamt = ds_item.Object.u_apportion_item_amt[ll_i]
  2119. ll_itemid = ds_item.Object.u_apportion_item_itemid[ll_i]
  2120. //w_sys_wait_2jdt.wf_accepttol2(row_cnt_cp) //初始化进度条2
  2121. //w_sys_wait_2jdt.st_msg.Text = "正在统计..."
  2122. ld_sumqty = 0
  2123. FOR ll_j = 1 TO row_cnt_cp
  2124. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  2125. ll_mtrlid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  2126. ld_cpqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  2127. IF ll_orderid = 0 THEN CONTINUE
  2128. SELECT u_mtrl_cost.cost
  2129. INTO :ld_cpcost
  2130. FROM u_mtrl_cost
  2131. WHERE u_mtrl_cost.itemid = :ll_itemid
  2132. AND u_mtrl_cost.mtrlid = :ll_mtrlid;
  2133. IF sqlca.SQLCode <> 0 THEN
  2134. ld_cpcost = 0
  2135. END IF
  2136. ld_sumqty = ld_sumqty + ld_cpcost * ld_cpqty
  2137. NEXT
  2138. IF ld_sumqty = 0 THEN
  2139. arg_msg = '被分摊指令的产品未设置标准成本费用{财务-成本-物料成本费用设置},请检查'
  2140. rslt = 0
  2141. GOTO ext
  2142. END IF
  2143. FOR ll_j = 1 TO row_cnt_cp
  2144. //w_sys_wait_2jdt.wf_inc2(ll_j)
  2145. ld_cpqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  2146. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  2147. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  2148. ll_mtrlid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  2149. IF ll_orderid = 0 THEN CONTINUE
  2150. SELECT u_mtrl_cost.cost
  2151. INTO :ld_cpcost
  2152. FROM u_mtrl_cost
  2153. WHERE u_mtrl_cost.itemid = :ll_itemid
  2154. AND u_mtrl_cost.mtrlid = :ll_mtrlid;
  2155. IF sqlca.SQLCode <> 0 THEN
  2156. ld_cpcost = 0
  2157. END IF
  2158. ld_cpamt = (ld_cpqty * ld_cpcost) / ld_sumqty * ld_itemamt
  2159. INSERT INTO u_apportion_item_ft
  2160. (scid,
  2161. orderid,
  2162. atid,
  2163. itemid,
  2164. amt,
  2165. opdate,
  2166. opemp)
  2167. VALUES (:ll_scid,
  2168. :ll_orderid,
  2169. :arg_atid,
  2170. :ll_itemid,
  2171. :ld_cpamt,
  2172. getdate(),
  2173. :publ_operator);
  2174. IF sqlca.SQLCode <> 0 THEN
  2175. rslt = 0
  2176. arg_msg = '插入指令费用分滩表失败'+sqlca.SQLErrText
  2177. GOTO ext
  2178. END IF
  2179. NEXT
  2180. //w_sys_wait_2jdt.wf_inc(ll_i)
  2181. NEXT
  2182. UPDATE u_apportion_time
  2183. SET itemauditflag = 1,
  2184. itemauditdate = getdate(),
  2185. itemauditemp = :publ_operator
  2186. Where atid = :arg_atid;
  2187. IF sqlca.SQLCode <> 0 THEN
  2188. rslt = 0
  2189. arg_msg = '更新费用分滩标记失败'+sqlca.SQLErrText
  2190. GOTO ext
  2191. END IF
  2192. ext:
  2193. //CLOSE(w_sys_wait_2jdt)
  2194. IF rslt = 0 THEN
  2195. ROLLBACK;
  2196. ELSE
  2197. COMMIT;
  2198. END IF
  2199. DESTROY ds_item
  2200. DESTROY ds_cp
  2201. RETURN rslt
  2202. end function
  2203. public function integer uof_cmpl_apportion_cp_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  2204. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_disflag,li_auditflag
  2205. Decimal ld_sumqty,ld_itemamt,ld_cpqty
  2206. Long ll_cnt
  2207. SELECT disflag,auditflag
  2208. INTO :ll_disflag,:li_auditflag
  2209. FROM u_apportion_time
  2210. Where atid = :arg_atid;
  2211. IF sqlca.SQLCode <> 0 THEN
  2212. rslt = 0
  2213. arg_msg = '查询车间盘点表材料分滩标记失败,'+sqlca.SQLErrText
  2214. GOTO ext
  2215. END IF
  2216. IF ll_disflag = 1 THEN
  2217. rslt = 0
  2218. arg_msg = '该车间盘点表已经执行过材料分滩操作,不能重复执行'
  2219. GOTO ext
  2220. END IF
  2221. IF li_auditflag = 0 THEN
  2222. rslt = 0
  2223. arg_msg = '该车间盘点表还没有审核,不能执行材料分滩操作'
  2224. GOTO ext
  2225. END IF
  2226. datastore ds_pdb,ds_cp
  2227. ds_pdb = CREATE datastore
  2228. ds_pdb.DataObject = 'ds_apportion_pd_ware_rp'
  2229. ds_pdb.SetTransObject(sqlca)
  2230. ds_cp = CREATE datastore
  2231. ds_cp.DataObject = 'ds_apportion_cp'
  2232. ds_cp.SetTransObject(sqlca)
  2233. row_cnt = ds_pdb.Retrieve(arg_atid)
  2234. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  2235. IF row_cnt = 0 THEN
  2236. rslt = 0
  2237. arg_msg = '没有盘点数据,不能执行费用分滩操作'
  2238. GOTO ext
  2239. END IF
  2240. Long ll_scid,ll_orderid,ll_mtrlid
  2241. String ls_status,ls_woodcode,ls_pcode
  2242. Decimal ld_cpamt,ld_truerqqty
  2243. Decimal ld_pypkqty,ld_ftqty,ld_ftamt,ld_cost
  2244. //Open(w_sys_wait_2jdt) //初始化进度条
  2245. //w_sys_wait_2jdt.Show()
  2246. //w_sys_wait_2jdt.wf_accepttol(row_cnt) //初始化进度条1
  2247. FOR ll_i = 1 TO row_cnt
  2248. ll_mtrlid = ds_pdb.Object.mtrlid[ll_i]
  2249. ls_status = ds_pdb.Object.u_warepdb_status[ll_i]
  2250. ls_woodcode = ds_pdb.Object.u_warepdb_woodcode[ll_i]
  2251. ls_pcode = ds_pdb.Object.u_warepdb_pcode[ll_i]
  2252. ld_pypkqty = ds_pdb.Object.pypkqty[ll_i]
  2253. ld_cost = ds_pdb.Object.u_warepdb_cost[ll_i]
  2254. IF ld_pypkqty = 0 THEN GOTO _next
  2255. //w_sys_wait_2jdt.wf_accepttol2(row_cnt_cp) //初始化进度条2
  2256. //w_sys_wait_2jdt.st_msg.Text = "正在统计..."
  2257. ld_sumqty = 0
  2258. FOR ll_j = 1 TO row_cnt_cp
  2259. ld_cpqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  2260. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  2261. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  2262. IF ll_orderid = 0 THEN CONTINUE
  2263. ll_cnt = 0
  2264. SELECT count(*)
  2265. INTO :ll_cnt
  2266. FROM u_OrderRqMtrl_scll INNER JOIN
  2267. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  2268. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  2269. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  2270. AND u_OrderRqMtrl_scll.scid = :ll_scid
  2271. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  2272. AND u_OrderRqMtrl_scll.status = :ls_status
  2273. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  2274. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  2275. IF sqlca.SQLCode <> 0 THEN
  2276. ll_cnt = 0
  2277. END IF
  2278. IF ll_cnt = 0 THEN CONTINUE
  2279. SELECT sum(u_OrderRqMtrl_scll.trueRqqty/u_Order_ml.orderqty)
  2280. INTO :ld_truerqqty
  2281. FROM u_OrderRqMtrl_scll INNER JOIN
  2282. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  2283. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  2284. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  2285. AND u_OrderRqMtrl_scll.scid = :ll_scid
  2286. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  2287. AND u_OrderRqMtrl_scll.status = :ls_status
  2288. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  2289. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  2290. IF sqlca.SQLCode <> 0 THEN
  2291. ld_truerqqty = 0
  2292. END IF
  2293. ld_sumqty = ld_sumqty + ld_cpqty * ld_truerqqty
  2294. NEXT
  2295. if ld_sumqty = 0 then continue
  2296. FOR ll_j = 1 TO row_cnt_cp
  2297. //w_sys_wait_2jdt.wf_inc2(ll_j)
  2298. ld_cpqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  2299. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  2300. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  2301. IF ll_orderid = 0 THEN CONTINUE
  2302. ll_cnt = 0
  2303. SELECT count(*)
  2304. INTO :ll_cnt
  2305. FROM u_OrderRqMtrl_scll INNER JOIN
  2306. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  2307. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  2308. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  2309. AND u_OrderRqMtrl_scll.scid = :ll_scid
  2310. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  2311. AND u_OrderRqMtrl_scll.status = :ls_status
  2312. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  2313. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  2314. IF sqlca.SQLCode <> 0 THEN
  2315. ll_cnt = 0
  2316. END IF
  2317. IF ll_cnt = 0 THEN CONTINUE
  2318. SELECT sum(u_OrderRqMtrl_scll.trueRqqty /u_Order_ml.orderqty)
  2319. INTO :ld_truerqqty
  2320. FROM u_OrderRqMtrl_scll INNER JOIN
  2321. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  2322. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  2323. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  2324. AND u_OrderRqMtrl_scll.scid = :ll_scid
  2325. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  2326. AND u_OrderRqMtrl_scll.status = :ls_status
  2327. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  2328. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  2329. IF sqlca.SQLCode <> 0 THEN
  2330. ld_truerqqty = 0
  2331. END IF
  2332. ld_ftqty = ld_cpqty * ld_truerqqty / ld_sumqty * ld_pypkqty
  2333. ld_ftamt = ld_ftqty * ld_cost
  2334. INSERT INTO u_apportion_cp_ft
  2335. (scid,
  2336. orderid,
  2337. atid,
  2338. mtrlid,
  2339. status,
  2340. woodcode,
  2341. pcode,
  2342. qty,
  2343. costamt,
  2344. opdate,
  2345. opemp)
  2346. VALUES (:ll_scid,
  2347. :ll_orderid,
  2348. :arg_atid,
  2349. :ll_mtrlid,
  2350. :ls_status,
  2351. :ls_woodcode,
  2352. :ls_pcode,
  2353. :ld_ftqty,
  2354. :ld_ftamt,
  2355. getdate(),
  2356. :publ_operator);
  2357. IF sqlca.SQLCode <> 0 THEN
  2358. rslt = 0
  2359. arg_msg = '插入指令材料分滩表失败'+sqlca.SQLErrText
  2360. GOTO ext
  2361. END IF
  2362. NEXT
  2363. _next:
  2364. //w_sys_wait_2jdt.wf_inc(ll_i)
  2365. NEXT
  2366. UPDATE u_apportion_time
  2367. SET disflag = 1,
  2368. disdate = getdate(),
  2369. disrep = :publ_operator
  2370. Where atid = :arg_atid;
  2371. IF sqlca.SQLCode <> 0 THEN
  2372. rslt = 0
  2373. arg_msg = '更新材料分滩标记失败'+sqlca.SQLErrText
  2374. GOTO ext
  2375. END IF
  2376. ext:
  2377. //Close(w_sys_wait_2jdt)
  2378. IF rslt = 0 THEN
  2379. ROLLBACK;
  2380. ELSE
  2381. COMMIT;
  2382. END IF
  2383. DESTROY ds_pdb
  2384. DESTROY ds_cp
  2385. RETURN rslt
  2386. end function
  2387. public function integer uof_del_apportion_cp_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  2388. Int li_disflag
  2389. DateTime ld_nulldate
  2390. SetNull(ld_nulldate)
  2391. SELECT disflag INTO :li_disflag
  2392. FROM u_apportion_time
  2393. Where atid = :arg_atid;
  2394. IF sqlca.SQLCode <> 0 THEN
  2395. arg_msg = '查询该盘点是否已材料分摊失败'
  2396. rslt = 0
  2397. GOTO ext
  2398. END IF
  2399. IF li_disflag = 0 THEN
  2400. arg_msg = '该盘点还没有材料分摊,不能取消材料分滩'
  2401. rslt = 0
  2402. GOTO ext
  2403. END IF
  2404. DELETE FROM u_apportion_cp_ft Where atid = :arg_atid;
  2405. IF sqlca.SQLCode <> 0 THEN
  2406. arg_msg = "删除指令材料分摊表操作失败!"+ sqlca.SQLErrText
  2407. rslt = 0
  2408. GOTO ext
  2409. END IF
  2410. UPDATE u_apportion_time
  2411. SET disflag = 0 ,
  2412. disdate = :ld_nulldate,
  2413. disrep = ''
  2414. Where atid = :arg_atid;
  2415. IF sqlca.SQLCode <> 0 THEN
  2416. rslt = 0
  2417. arg_msg = '更新材料分滩标记失败'+sqlca.SQLErrText
  2418. GOTO ext
  2419. END IF
  2420. ext:
  2421. IF rslt = 0 THEN
  2422. ROLLBACK;
  2423. ELSE
  2424. COMMIT;
  2425. END IF
  2426. RETURN rslt
  2427. end function
  2428. public function integer uof_cmp_apportion_abnormityamt (long arg_atid, ref string arg_msg);Int rslt = 1
  2429. Long cnt,ll_wrkGrpid
  2430. DateTime firstdate,enddate
  2431. Int li_balcflag,li_lastauditflag
  2432. SELECT firstdate,enddate,wrkGrpid,balcflag,lastauditflag
  2433. INTO :firstdate,:enddate,:ll_wrkGrpid,:li_balcflag,:li_lastauditflag
  2434. FROM u_apportion_time
  2435. Where atid = :arg_atid;
  2436. IF sqlca.SQLCode <> 0 THEN
  2437. arg_msg = '查询盘点资料失败 - 开始日期,结束日期'
  2438. rslt = 0
  2439. GOTO ext
  2440. END IF
  2441. IF li_balcflag = 0 THEN
  2442. arg_msg = '盘点未确认,不能操作'
  2443. rslt = 0
  2444. GOTO ext
  2445. END IF
  2446. IF li_lastauditflag = 1 THEN
  2447. arg_msg = '盘点已最终审核,不能操作'
  2448. rslt = 0
  2449. GOTO ext
  2450. END IF
  2451. SELECT count(*) INTO :cnt
  2452. FROM u_sc_abnormity
  2453. WHERE u_sc_abnormity.Auditingflag = 0
  2454. AND u_sc_abnormity.billdate >= :firstdate
  2455. AND u_sc_abnormity.billdate <= :enddate
  2456. AND u_sc_abnormity.wrkGrpid = :ll_wrkGrpid
  2457. and u_sc_abnormity.ifzj = 0;
  2458. IF sqlca.SQLCode <> 0 THEN
  2459. rslt = 0
  2460. arg_msg = '查询当前盘点时间范围是否存在没有审核的个人其它计件单操作失败! ~n'+sqlca.SQLErrText
  2461. GOTO ext
  2462. END IF
  2463. IF cnt > 0 THEN
  2464. arg_msg = '当前盘点时间范围存在没有审核的个人其它计件单!'
  2465. rslt = 0
  2466. GOTO ext
  2467. END IF
  2468. SELECT count(*) INTO :cnt
  2469. FROM u_scwg_taskwork_2 INNER JOIN
  2470. u_workgroup ON
  2471. u_scwg_taskwork_2.wrkGrpid = u_workgroup.workgroupid INNER JOIN
  2472. u_sc_workgroup ON u_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid
  2473. WHERE u_scwg_taskwork_2.billtype = 2
  2474. AND u_scwg_taskwork_2.billdate >= :firstdate
  2475. AND u_scwg_taskwork_2.billdate <= :enddate
  2476. AND u_sc_workgroup.storageid = :ll_wrkGrpid
  2477. AND u_scwg_taskwork_2.flag = 0;
  2478. IF sqlca.SQLCode <> 0 THEN
  2479. rslt = 0
  2480. arg_msg = '查询当前盘点时间范围是否存在没有审核的工作中心月分配异常计件单操作失败! ~n'+sqlca.SQLErrText
  2481. GOTO ext
  2482. END IF
  2483. IF cnt > 0 THEN
  2484. arg_msg = '当前盘点时间范围存在没有审核的工作中心月分配异常计件单!'
  2485. rslt = 0
  2486. GOTO ext
  2487. END IF
  2488. SELECT count(*) INTO :cnt
  2489. FROM u_scwg_taskwork_day INNER JOIN
  2490. u_workgroup ON
  2491. u_scwg_taskwork_day.wrkGrpid = u_workgroup.workgroupid INNER JOIN
  2492. u_sc_workgroup ON u_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid
  2493. WHERE u_scwg_taskwork_day.billtype = 1
  2494. AND u_scwg_taskwork_day.billdate >= :firstdate
  2495. AND u_scwg_taskwork_day.billdate <= :enddate
  2496. AND u_sc_workgroup.storageid = :ll_wrkGrpid
  2497. AND u_scwg_taskwork_day.flag = 0;
  2498. IF sqlca.SQLCode <> 0 THEN
  2499. rslt = 0
  2500. arg_msg = '查询当前盘点时间范围是否存在没有审核的工作中心日分配异常计件单操作失败! ~n'+sqlca.SQLErrText
  2501. GOTO ext
  2502. END IF
  2503. IF cnt > 0 THEN
  2504. arg_msg = '当前盘点时间范围存在没有审核的工作中心日分配异常计件单!'
  2505. rslt = 0
  2506. GOTO ext
  2507. END IF
  2508. Decimal ld_sumamt,ld_sumamt_1,ld_sumamt_2
  2509. SELECT SUM(u_sc_abnormitymx.amount * u_sc_abnormitymx.Wage)
  2510. INTO :ld_sumamt
  2511. FROM u_sc_abnormity INNER JOIN
  2512. u_sc_abnormitymx ON u_sc_abnormity.billid = u_sc_abnormitymx.billid
  2513. WHERE u_sc_abnormity.Auditingflag = 1
  2514. AND u_sc_abnormity.billdate >= :firstdate
  2515. AND u_sc_abnormity.billdate <= :enddate
  2516. AND u_sc_abnormity.wrkGrpid = :ll_wrkGrpid;
  2517. IF sqlca.SQLCode <> 0 THEN
  2518. IF sqlca.SQLCode = 100 THEN
  2519. ld_sumamt = 0
  2520. ELSE
  2521. rslt = 0
  2522. arg_msg = '查询当前盘点时间范围内的个人异常计件单金额失败'+sqlca.SQLErrText
  2523. GOTO ext
  2524. END IF
  2525. END IF
  2526. SELECT sum(u_scwg_taskwork_2_mx.qty * u_scwg_taskwork_2_mx.price)
  2527. INTO :ld_sumamt_1
  2528. FROM u_scwg_taskwork_2 INNER JOIN
  2529. u_workgroup ON
  2530. u_scwg_taskwork_2.wrkGrpid = u_workgroup.workgroupid INNER JOIN
  2531. u_sc_workgroup ON u_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid INNER JOIN
  2532. u_scwg_taskwork_2_mx ON
  2533. u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid
  2534. WHERE u_scwg_taskwork_2.billtype = 2
  2535. AND u_scwg_taskwork_2.billdate >= :firstdate
  2536. AND u_scwg_taskwork_2.billdate <= :enddate
  2537. AND u_sc_workgroup.storageid = :ll_wrkGrpid
  2538. AND u_scwg_taskwork_2.flag = 1;
  2539. IF sqlca.SQLCode <> 0 THEN
  2540. IF sqlca.SQLCode = 100 THEN
  2541. ld_sumamt_1 = 0
  2542. ELSE
  2543. rslt = 0
  2544. arg_msg = '查询当前盘点时间范围内的工作中心月分配异常计件单金额失败'+sqlca.SQLErrText
  2545. GOTO ext
  2546. END IF
  2547. END IF
  2548. SELECT sum(u_scwg_taskwork_day_mx.qty * u_scwg_taskwork_day_mx.price)
  2549. INTO :ld_sumamt_2
  2550. FROM u_scwg_taskwork_day INNER JOIN
  2551. u_workgroup ON
  2552. u_scwg_taskwork_day.wrkGrpid = u_workgroup.workgroupid INNER JOIN
  2553. u_sc_workgroup ON u_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid INNER JOIN
  2554. u_scwg_taskwork_day_mx ON
  2555. u_scwg_taskwork_day.billid = u_scwg_taskwork_day_mx.billid
  2556. WHERE u_scwg_taskwork_day.billtype = 1
  2557. AND u_scwg_taskwork_day.billdate >= :firstdate
  2558. AND u_scwg_taskwork_day.billdate <= :enddate
  2559. AND u_sc_workgroup.storageid = :ll_wrkGrpid
  2560. AND u_scwg_taskwork_day.flag = 1;
  2561. IF sqlca.SQLCode <> 0 THEN
  2562. IF sqlca.SQLCode = 100 THEN
  2563. ld_sumamt_2 = 0
  2564. ELSE
  2565. rslt = 0
  2566. arg_msg = '查询当前盘点时间范围内的工作中心日分配异常计件单金额失败'+sqlca.SQLErrText
  2567. GOTO ext
  2568. END IF
  2569. END IF
  2570. IF IsNull(ld_sumamt) THEN ld_sumamt = 0
  2571. IF IsNull(ld_sumamt_1) THEN ld_sumamt_1 = 0
  2572. IF IsNull(ld_sumamt_2) THEN ld_sumamt_2 = 0
  2573. UPDATE u_apportion_time
  2574. SET abnormityamt = :ld_sumamt + :ld_sumamt_1 +:ld_sumamt_2
  2575. Where atid = :arg_atid;
  2576. IF sqlca.SQLCode <> 0 THEN
  2577. rslt = 0
  2578. arg_msg = '更新盘点表异常计件金额失败'+sqlca.SQLErrText
  2579. GOTO ext
  2580. END IF
  2581. ext:
  2582. IF rslt = 0 THEN
  2583. ROLLBACK;
  2584. ELSE
  2585. COMMIT;
  2586. END IF
  2587. RETURN rslt
  2588. end function
  2589. public function integer uof_cmp_apportion_abnormityamt_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  2590. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_abnormityflag
  2591. Decimal ld_sumqty,ld_cpqty
  2592. Decimal ld_abnormityamt
  2593. SELECT abnormityflag
  2594. INTO :ll_abnormityflag
  2595. FROM u_apportion_time
  2596. Where atid = :arg_atid;
  2597. IF sqlca.SQLCode <> 0 THEN
  2598. rslt = 0
  2599. arg_msg = '查询车间盘点表异常计件分滩标记失败,'+sqlca.SQLErrText
  2600. GOTO ext
  2601. END IF
  2602. IF ll_abnormityflag = 1 THEN
  2603. rslt = 0
  2604. arg_msg = '该车间盘点表已经执行过异常计件分滩操作,不能重复执行'
  2605. GOTO ext
  2606. END IF
  2607. SELECT abnormityamt
  2608. INTO :ld_abnormityamt
  2609. FROM u_apportion_time
  2610. Where atid = :arg_atid;
  2611. IF sqlca.SQLCode <> 0 THEN
  2612. rslt = 0
  2613. arg_msg = '查询车间盘点表异常计件金额失败,'+sqlca.SQLErrText
  2614. GOTO ext
  2615. END IF
  2616. datastore ds_cp
  2617. ds_cp = CREATE datastore
  2618. ds_cp.DataObject = 'ds_apportion_cp'
  2619. ds_cp.SetTransObject(sqlca)
  2620. SELECT sum(qty)
  2621. INTO :ld_sumqty
  2622. FROM u_apportion_cp
  2623. WHERE orderid > 0 AND
  2624. atid = :arg_atid;
  2625. IF sqlca.SQLCode <> 0 THEN
  2626. rslt = 0
  2627. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  2628. GOTO ext
  2629. END IF
  2630. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  2631. Long ll_scid,ll_orderid
  2632. Decimal ld_ftamt
  2633. FOR ll_j = 1 TO row_cnt_cp
  2634. ld_cpqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  2635. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  2636. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  2637. IF ll_orderid = 0 THEN CONTINUE
  2638. ld_ftamt = ld_cpqty / ld_sumqty * ld_abnormityamt
  2639. INSERT INTO u_apportion_abnormity_ft
  2640. (scid,
  2641. orderid,
  2642. atid,
  2643. amt,
  2644. opdate,
  2645. opemp)
  2646. VALUES (:ll_scid,
  2647. :ll_orderid,
  2648. :arg_atid,
  2649. :ld_ftamt,
  2650. getdate(),
  2651. :publ_operator);
  2652. IF sqlca.SQLCode <> 0 THEN
  2653. rslt = 0
  2654. arg_msg = '插入指令异常计件分滩表失败'+sqlca.SQLErrText
  2655. GOTO ext
  2656. END IF
  2657. NEXT
  2658. UPDATE u_apportion_time
  2659. SET abnormityflag = 1,
  2660. abnormitydate = getdate(),
  2661. abnormityemp = :publ_operator
  2662. Where atid = :arg_atid;
  2663. IF sqlca.SQLCode <> 0 THEN
  2664. rslt = 0
  2665. arg_msg = '更新异常计件分滩标记失败'+sqlca.SQLErrText
  2666. GOTO ext
  2667. END IF
  2668. ext:
  2669. IF rslt = 0 THEN
  2670. ROLLBACK;
  2671. ELSE
  2672. COMMIT;
  2673. END IF
  2674. DESTROY ds_cp
  2675. RETURN rslt
  2676. end function
  2677. public function integer uof_del_apportion_abnormity_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  2678. Int li_abnormityflag
  2679. DateTime ld_nulldate
  2680. SetNull(ld_nulldate)
  2681. SELECT abnormityflag INTO :li_abnormityflag
  2682. FROM u_apportion_time
  2683. Where atid = :arg_atid;
  2684. IF sqlca.SQLCode <> 0 THEN
  2685. arg_msg = '查询该盘点是否已异常计件分摊失败'
  2686. rslt = 0
  2687. GOTO ext
  2688. END IF
  2689. IF li_abnormityflag = 0 THEN
  2690. arg_msg = '该盘点还没有异常计件分摊,不能取消异常计件分滩'
  2691. rslt = 0
  2692. GOTO ext
  2693. END IF
  2694. DELETE FROM u_apportion_abnormity_ft Where atid = :arg_atid;
  2695. IF sqlca.SQLCode <> 0 THEN
  2696. arg_msg = "删除指令异常计件分摊表操作失败!"+ sqlca.SQLErrText
  2697. rslt = 0
  2698. GOTO ext
  2699. END IF
  2700. UPDATE u_apportion_time
  2701. SET abnormityflag = 0 ,
  2702. abnormitydate = :ld_nulldate,
  2703. abnormityemp = ''
  2704. Where atid = :arg_atid;
  2705. IF sqlca.SQLCode <> 0 THEN
  2706. rslt = 0
  2707. arg_msg = '更新异常计件分滩标记失败'+sqlca.SQLErrText
  2708. GOTO ext
  2709. END IF
  2710. ext:
  2711. IF rslt = 0 THEN
  2712. ROLLBACK;
  2713. ELSE
  2714. COMMIT;
  2715. END IF
  2716. RETURN rslt
  2717. end function
  2718. public function integer uof_cmpl_apportion_item_ft_gz (long arg_atid, ref string arg_msg);Int rslt = 1
  2719. Long row_cnt,row_cnt_gz,ll_i,ll_j,ll_itemauditflag
  2720. Decimal ld_sumamt,ld_itemamt,ld_gzamt_mx
  2721. Long ll_pmonth,ll_wrkgrpid
  2722. SELECT itemauditflag,pmonth,wrkgrpid
  2723. INTO :ll_itemauditflag,:ll_pmonth,:ll_wrkgrpid
  2724. FROM u_apportion_time
  2725. Where atid = :arg_atid;
  2726. IF sqlca.SQLCode <> 0 THEN
  2727. rslt = 0
  2728. arg_msg = '查询车间盘点表费用分滩标记失败,'+sqlca.SQLErrText
  2729. GOTO ext
  2730. END IF
  2731. IF ll_itemauditflag = 1 THEN
  2732. rslt = 0
  2733. arg_msg = '该车间盘点表已经执行过费用分滩操作,不能重复执行'
  2734. GOTO ext
  2735. END IF
  2736. datastore ds_item,ds_gz
  2737. ds_item = Create datastore
  2738. ds_item.DataObject = 'ds_apportion_item'
  2739. ds_item.SetTransObject(sqlca)
  2740. ds_gz = Create datastore
  2741. ds_gz.DataObject = 'ds_apportion_gz'
  2742. ds_gz.SetTransObject(sqlca)
  2743. row_cnt = ds_item.Retrieve(arg_atid)
  2744. row_cnt_gz = ds_gz.Retrieve(ll_wrkgrpid,ll_pmonth)
  2745. IF row_cnt = 0 THEN
  2746. rslt = 0
  2747. arg_msg = '没有统计费用数据,不能执行费用分滩操作'
  2748. GOTO ext
  2749. END IF
  2750. ld_sumamt = 0
  2751. FOR ll_i = 1 To row_cnt_gz
  2752. ld_sumamt = ld_sumamt + ds_gz.Object.amt[ll_i]
  2753. NEXT
  2754. Long ll_scid,ll_orderid,ll_itemid
  2755. Decimal ld_cpamt
  2756. FOR ll_i = 1 To row_cnt
  2757. ld_itemamt = ds_item.Object.u_apportion_item_amt[ll_i]
  2758. ll_itemid = ds_item.Object.u_apportion_item_itemid[ll_i]
  2759. FOR ll_j = 1 To row_cnt_gz
  2760. ld_gzamt_mx = ds_gz.Object.amt[ll_j]
  2761. ll_scid = ds_gz.Object.scid[ll_j]
  2762. ll_orderid = ds_gz.Object.orderid[ll_j]
  2763. IF ll_orderid = 0 THEN CONTINUE
  2764. ld_cpamt = ld_gzamt_mx / ld_sumamt * ld_itemamt
  2765. INSERT INTO u_apportion_item_ft
  2766. (scid,
  2767. orderid,
  2768. atid,
  2769. itemid,
  2770. amt,
  2771. opdate,
  2772. opemp)
  2773. VALUES (:ll_scid,
  2774. :ll_orderid,
  2775. :arg_atid,
  2776. :ll_itemid,
  2777. :ld_cpamt,
  2778. getdate(),
  2779. :publ_operator);
  2780. IF sqlca.SQLCode <> 0 THEN
  2781. rslt = 0
  2782. arg_msg = '插入指令费用分滩表失败'+sqlca.SQLErrText
  2783. GOTO ext
  2784. END IF
  2785. NEXT
  2786. NEXT
  2787. UPDATE u_apportion_time
  2788. SET itemauditflag = 1,
  2789. itemauditdate = getdate(),
  2790. itemauditemp = :publ_operator
  2791. Where atid = :arg_atid;
  2792. IF sqlca.SQLCode <> 0 THEN
  2793. rslt = 0
  2794. arg_msg = '更新费用分滩标记失败'+sqlca.SQLErrText
  2795. GOTO ext
  2796. END IF
  2797. ext:
  2798. IF rslt = 0 THEN
  2799. ROLLBACK;
  2800. ELSE
  2801. COMMIT;
  2802. END IF
  2803. Destroy ds_item
  2804. Destroy ds_gz
  2805. RETURN rslt
  2806. end function
  2807. public function integer uof_cmpl_apportion_cost (long arg_atid, ref string arg_msg);Int rslt = 1
  2808. Long cnt,ll_wrkGrpid
  2809. DateTime firstdate,enddate
  2810. Int li_balcflag,li_auditflag,li_pmonth
  2811. Int li_disflag,li_itemauditflag,li_abnormityflag,li_costflag,li_lastauditflag
  2812. Long row_cnt_cp,ll_i
  2813. Long ll_scid,ll_orderid
  2814. Decimal ld_mtrlcost,ld_rlcost,ld_rqcost,ld_fycost
  2815. String ls_ordercode
  2816. SELECT firstdate,enddate,wrkGrpid,balcflag,auditflag,pmonth,disflag,itemauditflag,abnormityflag,costflag,lastauditflag
  2817. INTO :firstdate,:enddate,:ll_wrkGrpid,:li_balcflag,:li_auditflag,:li_pmonth,:li_disflag,:li_itemauditflag,:li_abnormityflag,:li_costflag,:li_lastauditflag
  2818. FROM u_apportion_time
  2819. Where atid = :arg_atid;
  2820. IF sqlca.SQLCode <> 0 THEN
  2821. arg_msg = '查询盘点资料失败 - 开始日期,结束日期'
  2822. rslt = 0
  2823. GOTO ext
  2824. END IF
  2825. datastore ds_cp
  2826. ds_cp = Create datastore
  2827. ds_cp.DataObject = 'ds_apportion_cp'
  2828. ds_cp.SetTransObject(sqlca)
  2829. IF li_balcflag = 0 THEN
  2830. rslt = 0
  2831. arg_msg = '车间核算资料还未确认,不能核算成本'
  2832. GOTO ext
  2833. END IF
  2834. IF li_auditflag = 0 THEN
  2835. rslt = 0
  2836. arg_msg = '车间核算资料还未盘点审核,不能核算成本'
  2837. GOTO ext
  2838. END IF
  2839. IF li_disflag = 0 THEN
  2840. rslt = 0
  2841. arg_msg = '车间核算资料还未分摊用料,不能核算成本'
  2842. GOTO ext
  2843. END IF
  2844. IF li_itemauditflag = 0 THEN
  2845. rslt = 0
  2846. arg_msg = '车间核算资料还未执行费用分摊,不能核算成本'
  2847. GOTO ext
  2848. END IF
  2849. IF li_abnormityflag = 0 THEN
  2850. rslt = 0
  2851. arg_msg = '车间核算资料还未执行其它计件分摊,不能核算成本'
  2852. GOTO ext
  2853. END IF
  2854. IF li_costflag = 1 THEN
  2855. rslt = 0
  2856. arg_msg = '已执行过成本统计,不能重复执行'
  2857. GOTO ext
  2858. END IF
  2859. IF li_lastauditflag = 1 THEN
  2860. rslt = 0
  2861. arg_msg = '车间核算资料还未执行终审,不能再核算成本'
  2862. GOTO ext
  2863. END IF
  2864. //检查日期段内未审单据
  2865. //1.领料单
  2866. SELECT count(*)
  2867. INTO :cnt
  2868. FROM u_sc_workgroup INNER JOIN
  2869. u_workgroup ON u_sc_workgroup.wrkGrpid = u_workgroup.wrkGrpid INNER JOIN
  2870. u_outware ON u_workgroup.workgroupid = u_outware.relid
  2871. WHERE u_outware.flag = 0
  2872. AND u_outware.outdate >= :firstdate
  2873. AND u_outware.outdate <= :enddate
  2874. AND u_outware.billtype = 3
  2875. And u_sc_workgroup.storageid = :ll_wrkGrpid;
  2876. IF sqlca.SQLCode <> 0 THEN
  2877. rslt = 0
  2878. arg_msg = '查询统计日期段内是否有未审核的领料单失败,'+sqlca.SQLErrText
  2879. GOTO ext
  2880. END IF
  2881. IF cnt > 0 THEN
  2882. rslt = 0
  2883. arg_msg = '统计日期段内有未审核的领料单,统计成本前请先审核'
  2884. GOTO ext
  2885. END IF
  2886. //2.计件单
  2887. SELECT count(*)
  2888. INTO :cnt
  2889. FROM
  2890. (SELECT u_sc_taskwork.orderid, u_sc_taskwork.scid
  2891. FROM u_sc_taskwork INNER JOIN
  2892. u_sc_taskworkmx ON u_sc_taskwork.billid = u_sc_taskworkmx.Billid AND
  2893. u_sc_taskwork.scid = u_sc_taskworkmx.scid INNER JOIN
  2894. u_Order_ml ON u_sc_taskwork.scid = u_Order_ml.scid AND
  2895. u_sc_taskwork.orderid = u_Order_ml.OrderID
  2896. WHERE (u_sc_taskwork.orderid > 0)
  2897. AND (u_sc_taskwork.Wagemth = :li_pmonth)
  2898. AND ( u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  2899. AND (u_sc_taskwork_affirmflag = 0)
  2900. UNION ALL
  2901. SELECT u_scwg_taskwork_2_mx.orderid, u_scwg_taskwork_2.scid
  2902. FROM u_scwg_taskwork_2_mx INNER JOIN
  2903. u_scwg_taskwork_2 ON
  2904. u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid INNER JOIN
  2905. u_Order_ml ON u_scwg_taskwork_2.scid = u_Order_ml.scid AND
  2906. u_scwg_taskwork_2_mx.orderid = u_Order_ml.OrderID
  2907. WHERE (u_scwg_taskwork_2_mx.orderid > 0)
  2908. AND (u_scwg_taskwork_2.Wagemth = :li_pmonth)
  2909. AND ( u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  2910. AND (u_scwg_taskwork_2.affirmflag = 0)
  2911. UNION ALL
  2912. SELECT u_scwg_taskwork_day_mx.orderid, u_scwg_taskwork_day.scid
  2913. FROM u_scwg_taskwork_day_mx INNER JOIN
  2914. u_scwg_taskwork_day ON
  2915. u_scwg_taskwork_day_mx.billid = u_scwg_taskwork_day.billid INNER JOIN
  2916. u_Order_ml ON u_scwg_taskwork_day.scid = u_Order_ml.scid AND
  2917. u_scwg_taskwork_day_mx.orderid = u_Order_ml.OrderID
  2918. WHERE (u_scwg_taskwork_day_mx.orderid > 0)
  2919. AND (u_scwg_taskwork_day.Wagemth = :li_pmonth)
  2920. AND ( u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  2921. AND (u_scwg_taskwork_day.affirmflag = 0)
  2922. ) v_scwg;
  2923. IF sqlca.SQLCode <> 0 THEN
  2924. rslt = 0
  2925. arg_msg = '查询统计月份是否有未确认的计件单失败,'+sqlca.SQLErrText
  2926. GOTO ext
  2927. END IF
  2928. IF cnt > 0 THEN
  2929. rslt = 0
  2930. arg_msg = '统计月份内有未确认的计件单,统计成本前请先确认'
  2931. GOTO ext
  2932. END IF
  2933. //3.注塑质检单
  2934. SELECT count(*)
  2935. INTO :cnt
  2936. FROM u_data_collect INNER JOIN
  2937. u_Order_ml ON u_data_collect.scid = u_Order_ml.scid AND
  2938. u_data_collect.orderid = u_Order_ml.OrderID
  2939. WHERE (u_data_collect.opdate >= :firstdate)
  2940. AND (u_data_collect.opdate <= :enddate)
  2941. AND (u_Order_ml.wrkGrpid = :ll_wrkgrpid)
  2942. And (u_data_collect.flag <> 2 ) ;
  2943. IF sqlca.SQLCode <> 0 THEN
  2944. rslt = 0
  2945. arg_msg = '查询时间段内是否有注塑质检单未审核完成失败,'+sqlca.SQLErrText
  2946. GOTO ext
  2947. END IF
  2948. IF cnt > 0 THEN
  2949. rslt = 0
  2950. arg_msg = '时间段内有未完成审核的注塑质检单,统计成本前请先完成审核'
  2951. GOTO ext
  2952. END IF
  2953. //
  2954. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  2955. FOR ll_i = 1 To row_cnt_cp
  2956. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_i]
  2957. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_i]
  2958. ls_ordercode = ds_cp.Object.u_order_ml_ordercode[ll_i]
  2959. //1.本期材料成本
  2960. SELECT sum(u_outwaremx.costamt)
  2961. INTO :ld_mtrlcost
  2962. FROM u_outwaremx INNER JOIN
  2963. u_outware ON u_outwaremx.scid = u_outware.scid AND
  2964. u_outwaremx.outwareid = u_outware.outwareid
  2965. WHERE (u_outware.billtype = 3)
  2966. AND (u_outware.flag = 1)
  2967. AND (u_outwaremx.relid = :ll_orderid)
  2968. And (u_outwaremx.scid = :ll_scid)
  2969. AND (u_outware.outdate >= :firstdate
  2970. AND (u_outware.outdate <= :enddate;
  2971. IF sqlca.SQLCode = -1 THEN
  2972. rslt = 0
  2973. arg_msg = '查询指令单:'+ls_ordercode+'材料成本失败,'+sqlca.SQLErrText
  2974. GOTO ext
  2975. END IF
  2976. //2.本期人力成本
  2977. NEXT
  2978. ext:
  2979. RETURN rslt
  2980. end function
  2981. public function integer uof_cmpl_apportion_cp_ft_zqty (long arg_atid, ref string arg_msg);Int rslt = 1
  2982. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_disflag,li_auditflag
  2983. Decimal ld_sumqty,ld_itemamt,ld_zqty
  2984. Long ll_cnt
  2985. SELECT disflag,auditflag
  2986. INTO :ll_disflag,:li_auditflag
  2987. FROM u_apportion_time
  2988. Where atid = :arg_atid;
  2989. IF sqlca.SQLCode <> 0 THEN
  2990. rslt = 0
  2991. arg_msg = '查询车间盘点表材料分摊标记失败,'+sqlca.SQLErrText
  2992. GOTO ext
  2993. END IF
  2994. IF ll_disflag = 1 THEN
  2995. rslt = 0
  2996. arg_msg = '该车间盘点表已经执行过材料分摊操作,不能重复执行'
  2997. GOTO ext
  2998. END IF
  2999. IF li_auditflag = 0 THEN
  3000. rslt = 0
  3001. arg_msg = '该车间盘点表还没有审核,不能执行材料分摊操作'
  3002. GOTO ext
  3003. END IF
  3004. datastore ds_pdb,ds_cp
  3005. ds_pdb = CREATE datastore
  3006. ds_pdb.DataObject = 'ds_apportion_pd_ware_rp'
  3007. ds_pdb.SetTransObject(sqlca)
  3008. ds_cp = CREATE datastore
  3009. ds_cp.DataObject = 'ds_apportion_cp'
  3010. ds_cp.SetTransObject(sqlca)
  3011. row_cnt = ds_pdb.Retrieve(arg_atid)
  3012. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3013. IF row_cnt = 0 THEN
  3014. rslt = 0
  3015. arg_msg = '没有盘点数据,不能执行费用分摊操作'
  3016. GOTO ext
  3017. END IF
  3018. Long ll_scid,ll_orderid,ll_mtrlid
  3019. String ls_status,ls_woodcode,ls_pcode
  3020. Decimal ld_cpamt,ld_truerqqty
  3021. Decimal ld_pypkqty,ld_ftqty,ld_ftamt,ld_cost
  3022. //Open(w_sys_wait_2jdt) //初始化进度条
  3023. //w_sys_wait_2jdt.Show()
  3024. //w_sys_wait_2jdt.wf_accepttol(row_cnt) //初始化进度条1
  3025. FOR ll_i = 1 TO row_cnt
  3026. ll_mtrlid = ds_pdb.Object.mtrlid[ll_i]
  3027. ls_status = ds_pdb.Object.u_warepdb_status[ll_i]
  3028. ls_woodcode = ds_pdb.Object.u_warepdb_woodcode[ll_i]
  3029. ls_pcode = ds_pdb.Object.u_warepdb_pcode[ll_i]
  3030. ld_pypkqty = ds_pdb.Object.pypkqty[ll_i]
  3031. ld_cost = ds_pdb.Object.u_warepdb_cost[ll_i]
  3032. IF ld_pypkqty = 0 THEN GOTO _next
  3033. //w_sys_wait_2jdt.wf_accepttol2(row_cnt_cp) //初始化进度条2
  3034. //w_sys_wait_2jdt.st_msg.Text = "正在统计..."
  3035. ld_sumqty = 0
  3036. FOR ll_j = 1 TO row_cnt_cp
  3037. ld_zqty = ds_cp.Object.zqty[ll_j]
  3038. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3039. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3040. IF ll_orderid = 0 THEN CONTINUE
  3041. ll_cnt = 0
  3042. SELECT count(*)
  3043. INTO :ll_cnt
  3044. FROM u_OrderRqMtrl_scll INNER JOIN
  3045. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  3046. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  3047. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  3048. AND u_OrderRqMtrl_scll.scid = :ll_scid
  3049. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  3050. AND u_OrderRqMtrl_scll.status = :ls_status
  3051. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  3052. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  3053. IF sqlca.SQLCode <> 0 THEN
  3054. ll_cnt = 0
  3055. END IF
  3056. IF ll_cnt = 0 THEN CONTINUE
  3057. SELECT sum(u_OrderRqMtrl_scll.trueRqqty/u_Order_ml.orderqty)
  3058. INTO :ld_truerqqty
  3059. FROM u_OrderRqMtrl_scll INNER JOIN
  3060. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  3061. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  3062. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  3063. AND u_OrderRqMtrl_scll.scid = :ll_scid
  3064. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  3065. AND u_OrderRqMtrl_scll.status = :ls_status
  3066. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  3067. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  3068. IF sqlca.SQLCode <> 0 THEN
  3069. ld_truerqqty = 0
  3070. END IF
  3071. ld_sumqty = ld_sumqty + ld_zqty * ld_truerqqty
  3072. NEXT
  3073. if ld_sumqty = 0 then continue
  3074. FOR ll_j = 1 TO row_cnt_cp
  3075. //w_sys_wait_2jdt.wf_inc2(ll_j)
  3076. ld_zqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  3077. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3078. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3079. IF ll_orderid = 0 THEN CONTINUE
  3080. ll_cnt = 0
  3081. SELECT count(*)
  3082. INTO :ll_cnt
  3083. FROM u_OrderRqMtrl_scll INNER JOIN
  3084. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  3085. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  3086. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  3087. AND u_OrderRqMtrl_scll.scid = :ll_scid
  3088. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  3089. AND u_OrderRqMtrl_scll.status = :ls_status
  3090. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  3091. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  3092. IF sqlca.SQLCode <> 0 THEN
  3093. ll_cnt = 0
  3094. END IF
  3095. IF ll_cnt = 0 THEN CONTINUE
  3096. SELECT sum(u_OrderRqMtrl_scll.trueRqqty /u_Order_ml.orderqty)
  3097. INTO :ld_truerqqty
  3098. FROM u_OrderRqMtrl_scll INNER JOIN
  3099. u_Order_ml ON u_OrderRqMtrl_scll.scid = u_Order_ml.scid AND
  3100. u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID
  3101. WHERE u_OrderRqMtrl_scll.orderid = :ll_orderid
  3102. AND u_OrderRqMtrl_scll.scid = :ll_scid
  3103. AND u_OrderRqMtrl_scll.mtrlid = :ll_mtrlid
  3104. AND u_OrderRqMtrl_scll.status = :ls_status
  3105. AND u_OrderRqMtrl_scll.woodcode = :ls_woodcode
  3106. AND u_OrderRqMtrl_scll.pcode = :ls_pcode;
  3107. IF sqlca.SQLCode <> 0 THEN
  3108. ld_truerqqty = 0
  3109. END IF
  3110. ld_ftqty = ld_zqty * ld_truerqqty / ld_sumqty * ld_pypkqty
  3111. ld_ftamt = ld_ftqty * ld_cost
  3112. INSERT INTO u_apportion_cp_ft
  3113. (scid,
  3114. orderid,
  3115. atid,
  3116. mtrlid,
  3117. status,
  3118. woodcode,
  3119. pcode,
  3120. qty,
  3121. costamt,
  3122. opdate,
  3123. opemp)
  3124. VALUES (:ll_scid,
  3125. :ll_orderid,
  3126. :arg_atid,
  3127. :ll_mtrlid,
  3128. :ls_status,
  3129. :ls_woodcode,
  3130. :ls_pcode,
  3131. :ld_ftqty,
  3132. :ld_ftamt,
  3133. getdate(),
  3134. :publ_operator);
  3135. IF sqlca.SQLCode <> 0 THEN
  3136. rslt = 0
  3137. arg_msg = '插入指令材料分摊表失败'+sqlca.SQLErrText
  3138. GOTO ext
  3139. END IF
  3140. NEXT
  3141. _next:
  3142. //w_sys_wait_2jdt.wf_inc(ll_i)
  3143. NEXT
  3144. UPDATE u_apportion_time
  3145. SET disflag = 1,
  3146. disdate = getdate(),
  3147. disrep = :publ_operator
  3148. Where atid = :arg_atid;
  3149. IF sqlca.SQLCode <> 0 THEN
  3150. rslt = 0
  3151. arg_msg = '更新材料分摊标记失败'+sqlca.SQLErrText
  3152. GOTO ext
  3153. END IF
  3154. ext:
  3155. //Close(w_sys_wait_2jdt)
  3156. IF rslt = 0 THEN
  3157. ROLLBACK;
  3158. ELSE
  3159. COMMIT;
  3160. END IF
  3161. DESTROY ds_pdb
  3162. DESTROY ds_cp
  3163. RETURN rslt
  3164. end function
  3165. public function integer uof_cmpl_apportion_item_ft_zqty (long arg_atid, ref string arg_msg);Int rslt = 1
  3166. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_itemauditflag
  3167. Decimal ld_sumzqty,ld_itemamt,ld_zqty
  3168. SELECT itemauditflag
  3169. INTO :ll_itemauditflag
  3170. FROM u_apportion_time
  3171. Where atid = :arg_atid;
  3172. IF sqlca.SQLCode <> 0 THEN
  3173. rslt = 0
  3174. arg_msg = '查询车间盘点表费用分滩标记失败,'+sqlca.SQLErrText
  3175. GOTO ext
  3176. END IF
  3177. IF ll_itemauditflag = 1 THEN
  3178. rslt = 0
  3179. arg_msg = '该车间盘点表已经执行过费用分滩操作,不能重复执行'
  3180. GOTO ext
  3181. END IF
  3182. datastore ds_item,ds_cp
  3183. ds_item = CREATE datastore
  3184. ds_item.DataObject = 'ds_apportion_item'
  3185. ds_item.SetTransObject(sqlca)
  3186. ds_cp = CREATE datastore
  3187. ds_cp.DataObject = 'ds_apportion_cp'
  3188. ds_cp.SetTransObject(sqlca)
  3189. SELECT sum(zqty)
  3190. INTO :ld_sumzqty
  3191. FROM u_apportion_cp
  3192. WHERE orderid > 0 AND
  3193. atid = :arg_atid;
  3194. IF sqlca.SQLCode <> 0 THEN
  3195. rslt = 0
  3196. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3197. GOTO ext
  3198. END IF
  3199. row_cnt = ds_item.Retrieve(arg_atid)
  3200. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3201. IF row_cnt = 0 THEN
  3202. rslt = 0
  3203. arg_msg = '没有统计费用数据,不能执行费用分滩操作'
  3204. GOTO ext
  3205. END IF
  3206. Long ll_scid,ll_orderid,ll_itemid
  3207. Decimal ld_cpamt
  3208. //Open(w_sys_wait_2jdt) //初始化进度条
  3209. //w_sys_wait_2jdt.Show()
  3210. //w_sys_wait_2jdt.wf_accepttol(row_cnt) //初始化进度条1
  3211. FOR ll_i = 1 TO row_cnt
  3212. ld_itemamt = ds_item.Object.u_apportion_item_amt[ll_i]
  3213. ll_itemid = ds_item.Object.u_apportion_item_itemid[ll_i]
  3214. //w_sys_wait_2jdt.wf_accepttol2(row_cnt_cp) //初始化进度条2
  3215. //w_sys_wait_2jdt.st_msg.Text = "正在统计..."
  3216. FOR ll_j = 1 TO row_cnt_cp
  3217. //w_sys_wait_2jdt.wf_inc2(ll_j)
  3218. ld_zqty = ds_cp.Object.zqty[ll_j]
  3219. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3220. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3221. IF ll_orderid = 0 THEN CONTINUE
  3222. ld_cpamt = ld_zqty / ld_sumzqty * ld_itemamt
  3223. INSERT INTO u_apportion_item_ft
  3224. (scid,
  3225. orderid,
  3226. atid,
  3227. itemid,
  3228. amt,
  3229. opdate,
  3230. opemp)
  3231. VALUES (:ll_scid,
  3232. :ll_orderid,
  3233. :arg_atid,
  3234. :ll_itemid,
  3235. :ld_cpamt,
  3236. getdate(),
  3237. :publ_operator);
  3238. IF sqlca.SQLCode <> 0 THEN
  3239. rslt = 0
  3240. arg_msg = '插入指令费用分滩表失败'+sqlca.SQLErrText
  3241. GOTO ext
  3242. END IF
  3243. NEXT
  3244. //w_sys_wait_2jdt.wf_inc(ll_i)
  3245. NEXT
  3246. UPDATE u_apportion_time
  3247. SET itemauditflag = 1,
  3248. itemauditdate = getdate(),
  3249. itemauditemp = :publ_operator
  3250. Where atid = :arg_atid;
  3251. IF sqlca.SQLCode <> 0 THEN
  3252. rslt = 0
  3253. arg_msg = '更新费用分滩标记失败'+sqlca.SQLErrText
  3254. GOTO ext
  3255. END IF
  3256. ext:
  3257. //Close(w_sys_wait_2jdt)
  3258. IF rslt = 0 THEN
  3259. ROLLBACK;
  3260. ELSE
  3261. COMMIT;
  3262. END IF
  3263. DESTROY ds_item
  3264. DESTROY ds_cp
  3265. RETURN rslt
  3266. end function
  3267. public function integer uof_cmpl_apportion_glgz (long arg_atid, ref string arg_msg);Int rslt = 1
  3268. Long cnt,ll_wrkGrpid
  3269. DateTime firstdate,enddate
  3270. Int li_balcflag,li_lastauditflag,li_glgzflag
  3271. Long li_pmonth
  3272. Long ll_deptid
  3273. String ls_handtype
  3274. SELECT pmonth,wrkGrpid,balcflag,lastauditflag,glgzflag
  3275. INTO :li_pmonth,:ll_wrkGrpid,:li_balcflag,:li_lastauditflag,:li_glgzflag
  3276. FROM u_apportion_time
  3277. Where atid = :arg_atid;
  3278. IF sqlca.SQLCode <> 0 THEN
  3279. arg_msg = '查询盘点资料失败 - 开始日期,结束日期'
  3280. rslt = 0
  3281. GOTO ext
  3282. END IF
  3283. IF li_glgzflag = 1 THEN
  3284. rslt = 0
  3285. arg_msg = '已执行管理工资分摊,不能操作'
  3286. GOTO ext
  3287. END IF
  3288. IF li_balcflag = 0 THEN
  3289. arg_msg = '盘点未确认,不能操作'
  3290. rslt = 0
  3291. GOTO ext
  3292. END IF
  3293. IF li_lastauditflag = 1 THEN
  3294. arg_msg = '盘点已最终审核,不能操作'
  3295. rslt = 0
  3296. GOTO ext
  3297. END IF
  3298. SELECT deptid INTO :ll_deptid
  3299. FROM u_sc_wkp
  3300. Where wrkGrpid = :ll_wrkGrpid;
  3301. IF sqlca.SQLCode <> 0 THEN
  3302. rslt = 0
  3303. arg_msg = '查询车间对应的部门失败,'+sqlca.SQLErrText
  3304. GOTO ext
  3305. END IF
  3306. SELECT handtype
  3307. INTO :ls_handtype
  3308. FROM cw_department
  3309. Where departmentid = :ll_deptid;
  3310. IF sqlca.SQLCode <> 0 THEN
  3311. rslt = 0
  3312. arg_msg = '查询部门信息失败,'+sqlca.SQLErrText
  3313. GOTO ext
  3314. END IF
  3315. ls_handtype = ls_handtype + '%'
  3316. DELETE u_apportion_gz Where atid = :arg_atid;
  3317. IF sqlca.SQLCode <> 0 THEN
  3318. arg_msg = '删除管理工资统计失败,'+sqlca.SQLErrText
  3319. rslt = 0
  3320. GOTO ext
  3321. END IF
  3322. INSERT INTO u_apportion_gz
  3323. (atid, wageid, amt)
  3324. SELECT :arg_atid,u_gz_wagemx.wageid, SUM(u_gz_wagemx.Wageamt * u_gz_wageitem.wagetype) AS sumamt
  3325. FROM u_gz_wagemx INNER JOIN
  3326. u_gz_wageitem ON u_gz_wagemx.wageid = u_gz_wageitem.wageid INNER JOIN
  3327. u_gz_wage ON u_gz_wagemx.wagemth = u_gz_wage.wagemth and
  3328. u_gz_wagemx.empid = u_gz_wage.empid INNER JOIN
  3329. u_rs_empinfo ON u_gz_wage.empid = u_rs_empinfo.empid
  3330. WHERE (u_gz_wageitem.if_cost = 1)
  3331. AND (u_gz_wagemx.wagemth = :li_pmonth)
  3332. AND (u_rs_empinfo.handtype LIKE :ls_handtype)
  3333. Group By u_gz_wagemx.wageid;
  3334. IF sqlca.SQLCode <> 0 THEN
  3335. arg_msg = '插入管理工资统计失败,'+sqlca.SQLErrText
  3336. rslt = 0
  3337. GOTO ext
  3338. END IF
  3339. UPDATE u_apportion_time
  3340. SET u_apportion_time.glgzamt = a.amt
  3341. FROM u_apportion_time,
  3342. (SELECT u_apportion_gz.atid,sum(u_apportion_gz.amt) as amt
  3343. FROM u_apportion_gz WHERE u_apportion_gz.atid = :arg_atid
  3344. GROUP BY u_apportion_gz.atid ) a
  3345. WHERE u_apportion_time.atid = a.atid
  3346. And u_apportion_time.atid = :arg_atid;
  3347. IF sqlca.SQLCode <> 0 THEN
  3348. rslt = 0
  3349. arg_msg = '更新盘点表车间管理人员工资金额失败'+sqlca.SQLErrText
  3350. GOTO ext
  3351. END IF
  3352. ext:
  3353. IF rslt = 0 THEN
  3354. ROLLBACK;
  3355. ELSE
  3356. COMMIT;
  3357. END IF
  3358. RETURN rslt
  3359. end function
  3360. public function integer uof_cmpl_apportion_glgz_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  3361. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_glgzflag
  3362. Decimal ld_sumqty,ld_wageamt,ld_cpqty
  3363. SELECT glgzflag
  3364. INTO :ll_glgzflag
  3365. FROM u_apportion_time
  3366. Where atid = :arg_atid;
  3367. IF sqlca.SQLCode <> 0 THEN
  3368. rslt = 0
  3369. arg_msg = '查询车间盘点表管理工资摊标记失败,'+sqlca.SQLErrText
  3370. GOTO ext
  3371. END IF
  3372. IF ll_glgzflag = 1 THEN
  3373. rslt = 0
  3374. arg_msg = '该车间盘点表已经执行过理工资分摊操作,不能重复执行'
  3375. GOTO ext
  3376. END IF
  3377. datastore ds_glgz,ds_cp
  3378. ds_glgz = CREATE datastore
  3379. ds_glgz.DataObject = 'ds_apportion_glgz'
  3380. ds_glgz.SetTransObject(sqlca)
  3381. ds_cp = CREATE datastore
  3382. ds_cp.DataObject = 'ds_apportion_cp'
  3383. ds_cp.SetTransObject(sqlca)
  3384. SELECT sum(qty)
  3385. INTO :ld_sumqty
  3386. FROM u_apportion_cp
  3387. WHERE orderid > 0 AND
  3388. atid = :arg_atid;
  3389. IF sqlca.SQLCode <> 0 THEN
  3390. rslt = 0
  3391. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3392. GOTO ext
  3393. END IF
  3394. row_cnt = ds_glgz.Retrieve(arg_atid)
  3395. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3396. IF row_cnt = 0 THEN
  3397. rslt = 0
  3398. arg_msg = '没有统计费用数据,不能执行费用分摊操作'
  3399. GOTO ext
  3400. END IF
  3401. Long ll_scid,ll_orderid,ll_wageid
  3402. Decimal ld_cpamt
  3403. FOR ll_i = 1 TO row_cnt
  3404. ld_wageamt = ds_glgz.Object.amt[ll_i]
  3405. ll_wageid = ds_glgz.Object.wageid[ll_i]
  3406. FOR ll_j = 1 TO row_cnt_cp
  3407. ld_cpqty = ds_cp.Object.u_apportion_cp_qty[ll_j]
  3408. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3409. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3410. IF ll_orderid = 0 THEN CONTINUE
  3411. ld_cpamt = ld_cpqty / ld_sumqty * ld_wageamt
  3412. INSERT INTO u_apportion_gz_ft
  3413. (scid,
  3414. orderid,
  3415. atid,
  3416. wageid,
  3417. amt,
  3418. opdate,
  3419. opemp)
  3420. VALUES (:ll_scid,
  3421. :ll_orderid,
  3422. :arg_atid,
  3423. :ll_wageid,
  3424. :ld_cpamt,
  3425. getdate(),
  3426. :publ_operator);
  3427. IF sqlca.SQLCode <> 0 THEN
  3428. rslt = 0
  3429. arg_msg = '插入指令费用分摊表失败'+sqlca.SQLErrText
  3430. GOTO ext
  3431. END IF
  3432. NEXT
  3433. NEXT
  3434. UPDATE u_apportion_time
  3435. SET glgzflag = 1,
  3436. glgzdate = getdate(),
  3437. glgzemp = :publ_operator
  3438. Where atid = :arg_atid;
  3439. IF sqlca.SQLCode <> 0 THEN
  3440. rslt = 0
  3441. arg_msg = '更新管理工资分摊标记失败'+sqlca.SQLErrText
  3442. GOTO ext
  3443. END IF
  3444. ext:
  3445. IF rslt = 0 THEN
  3446. ROLLBACK;
  3447. ELSE
  3448. COMMIT;
  3449. END IF
  3450. DESTROY ds_glgz
  3451. DESTROY ds_cp
  3452. RETURN rslt
  3453. end function
  3454. public function integer uof_cmpl_apportion_glgz_ft_zqty (long arg_atid, ref string arg_msg);Int rslt = 1
  3455. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_glgzflag
  3456. Decimal ld_sumqty,ld_wageamt,ld_zqty
  3457. SELECT glgzflag
  3458. INTO :ll_glgzflag
  3459. FROM u_apportion_time
  3460. Where atid = :arg_atid;
  3461. IF sqlca.SQLCode <> 0 THEN
  3462. rslt = 0
  3463. arg_msg = '查询车间盘点表管理工资摊标记失败,'+sqlca.SQLErrText
  3464. GOTO ext
  3465. END IF
  3466. IF ll_glgzflag = 1 THEN
  3467. rslt = 0
  3468. arg_msg = '该车间盘点表已经执行过理工资分摊操作,不能重复执行'
  3469. GOTO ext
  3470. END IF
  3471. datastore ds_glgz,ds_cp
  3472. ds_glgz = CREATE datastore
  3473. ds_glgz.DataObject = 'ds_apportion_glgz'
  3474. ds_glgz.SetTransObject(sqlca)
  3475. ds_cp = CREATE datastore
  3476. ds_cp.DataObject = 'ds_apportion_cp'
  3477. ds_cp.SetTransObject(sqlca)
  3478. SELECT sum(zqty)
  3479. INTO :ld_sumqty
  3480. FROM u_apportion_cp
  3481. WHERE orderid > 0 AND
  3482. atid = :arg_atid;
  3483. IF sqlca.SQLCode <> 0 THEN
  3484. rslt = 0
  3485. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3486. GOTO ext
  3487. END IF
  3488. row_cnt = ds_glgz.Retrieve(arg_atid)
  3489. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3490. IF row_cnt = 0 THEN
  3491. rslt = 0
  3492. arg_msg = '没有统计费用数据,不能执行费用分摊操作'
  3493. GOTO ext
  3494. END IF
  3495. Long ll_scid,ll_orderid,ll_wageid
  3496. Decimal ld_cpamt
  3497. FOR ll_i = 1 TO row_cnt
  3498. ld_wageamt = ds_glgz.Object.amt[ll_i]
  3499. ll_wageid = ds_glgz.Object.wageid[ll_i]
  3500. FOR ll_j = 1 TO row_cnt_cp
  3501. ld_zqty = ds_cp.Object.zqty[ll_j]
  3502. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3503. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3504. IF ll_orderid = 0 THEN CONTINUE
  3505. ld_cpamt = ld_zqty / ld_sumqty * ld_wageamt
  3506. INSERT INTO u_apportion_gz_ft
  3507. (scid,
  3508. orderid,
  3509. atid,
  3510. wageid,
  3511. amt,
  3512. opdate,
  3513. opemp)
  3514. VALUES (:ll_scid,
  3515. :ll_orderid,
  3516. :arg_atid,
  3517. :ll_wageid,
  3518. :ld_cpamt,
  3519. getdate(),
  3520. :publ_operator);
  3521. IF sqlca.SQLCode <> 0 THEN
  3522. rslt = 0
  3523. arg_msg = '插入指令费用分摊表失败'+sqlca.SQLErrText
  3524. GOTO ext
  3525. END IF
  3526. NEXT
  3527. NEXT
  3528. UPDATE u_apportion_time
  3529. SET glgzflag = 1,
  3530. glgzdate = getdate(),
  3531. glgzemp = :publ_operator
  3532. Where atid = :arg_atid;
  3533. IF sqlca.SQLCode <> 0 THEN
  3534. rslt = 0
  3535. arg_msg = '更新管理工资分摊标记失败'+sqlca.SQLErrText
  3536. GOTO ext
  3537. END IF
  3538. ext:
  3539. IF rslt = 0 THEN
  3540. ROLLBACK;
  3541. ELSE
  3542. COMMIT;
  3543. END IF
  3544. DESTROY ds_glgz
  3545. DESTROY ds_cp
  3546. RETURN rslt
  3547. end function
  3548. public function integer uof_del_apportion_glgz_ft (long arg_atid, ref string arg_msg);Int rslt = 1
  3549. Int li_glgzflag
  3550. DateTime ld_nulldate
  3551. SetNull(ld_nulldate)
  3552. SELECT glgzflag INTO :li_glgzflag
  3553. FROM u_apportion_time
  3554. Where atid = :arg_atid;
  3555. IF sqlca.SQLCode <> 0 THEN
  3556. arg_msg = '查询该盘点是否已执行管理工资分摊失败'
  3557. rslt = 0
  3558. GOTO ext
  3559. END IF
  3560. IF li_glgzflag = 0 THEN
  3561. arg_msg = '该盘点还没有执行管理工资分摊,不能取消分滩'
  3562. rslt = 0
  3563. GOTO ext
  3564. END IF
  3565. DELETE FROM u_apportion_gz_ft Where atid = :arg_atid;
  3566. IF sqlca.SQLCode <> 0 THEN
  3567. arg_msg = "删除指令管理工资分摊表操作失败!"+ sqlca.SQLErrText
  3568. rslt = 0
  3569. GOTO ext
  3570. END IF
  3571. UPDATE u_apportion_time
  3572. SET glgzflag = 0 ,
  3573. glgzdate = :ld_nulldate,
  3574. glgzemp = ''
  3575. Where atid = :arg_atid;
  3576. IF sqlca.SQLCode <> 0 THEN
  3577. rslt = 0
  3578. arg_msg = '更新管理工资分滩标记失败'+sqlca.SQLErrText
  3579. GOTO ext
  3580. END IF
  3581. ext:
  3582. IF rslt = 0 THEN
  3583. ROLLBACK;
  3584. ELSE
  3585. COMMIT;
  3586. END IF
  3587. RETURN rslt
  3588. end function
  3589. public function integer uof_cmpl_apportion_item_ft_amt (long arg_atid, ref string arg_msg);Int rslt = 1
  3590. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_itemauditflag
  3591. Decimal ld_sumamt,ld_itemamt,ld_amt
  3592. SELECT itemauditflag
  3593. INTO :ll_itemauditflag
  3594. FROM u_apportion_time
  3595. Where atid = :arg_atid;
  3596. IF sqlca.SQLCode <> 0 THEN
  3597. rslt = 0
  3598. arg_msg = '查询车间盘点表费用分摊标记失败,'+sqlca.SQLErrText
  3599. GOTO ext
  3600. END IF
  3601. IF ll_itemauditflag = 1 THEN
  3602. rslt = 0
  3603. arg_msg = '该车间盘点表已经执行过费用分摊操作,不能重复执行'
  3604. GOTO ext
  3605. END IF
  3606. datastore ds_item,ds_cp
  3607. ds_item = CREATE datastore
  3608. ds_item.DataObject = 'ds_apportion_item'
  3609. ds_item.SetTransObject(sqlca)
  3610. ds_cp = CREATE datastore
  3611. ds_cp.DataObject = 'ds_apportion_cp'
  3612. ds_cp.SetTransObject(sqlca)
  3613. SELECT sum(qty * price)
  3614. INTO :ld_sumamt
  3615. FROM u_apportion_cp
  3616. WHERE orderid > 0 AND
  3617. atid = :arg_atid;
  3618. IF sqlca.SQLCode <> 0 THEN
  3619. rslt = 0
  3620. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3621. GOTO ext
  3622. END IF
  3623. row_cnt = ds_item.Retrieve(arg_atid)
  3624. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3625. IF row_cnt = 0 THEN
  3626. rslt = 0
  3627. arg_msg = '没有统计费用数据,不能执行费用分摊操作'
  3628. GOTO ext
  3629. END IF
  3630. Long ll_scid,ll_orderid,ll_itemid
  3631. Decimal ld_cpamt
  3632. FOR ll_i = 1 TO row_cnt
  3633. ld_itemamt = ds_item.Object.u_apportion_item_amt[ll_i]
  3634. ll_itemid = ds_item.Object.u_apportion_item_itemid[ll_i]
  3635. FOR ll_j = 1 TO row_cnt_cp
  3636. ld_amt = ds_cp.Object.amt[ll_j]
  3637. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3638. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3639. IF ll_orderid = 0 THEN CONTINUE
  3640. ld_cpamt = ld_amt / ld_sumamt * ld_itemamt
  3641. INSERT INTO u_apportion_item_ft
  3642. (scid,
  3643. orderid,
  3644. atid,
  3645. itemid,
  3646. amt,
  3647. opdate,
  3648. opemp)
  3649. VALUES (:ll_scid,
  3650. :ll_orderid,
  3651. :arg_atid,
  3652. :ll_itemid,
  3653. :ld_cpamt,
  3654. getdate(),
  3655. :publ_operator);
  3656. IF sqlca.SQLCode <> 0 THEN
  3657. rslt = 0
  3658. arg_msg = '插入指令费用分摊表失败'+sqlca.SQLErrText
  3659. GOTO ext
  3660. END IF
  3661. NEXT
  3662. NEXT
  3663. UPDATE u_apportion_time
  3664. SET itemauditflag = 1,
  3665. itemauditdate = getdate(),
  3666. itemauditemp = :publ_operator
  3667. Where atid = :arg_atid;
  3668. IF sqlca.SQLCode <> 0 THEN
  3669. rslt = 0
  3670. arg_msg = '更新费用分摊标记失败'+sqlca.SQLErrText
  3671. GOTO ext
  3672. END IF
  3673. ext:
  3674. IF rslt = 0 THEN
  3675. ROLLBACK;
  3676. ELSE
  3677. COMMIT;
  3678. END IF
  3679. DESTROY ds_item
  3680. DESTROY ds_cp
  3681. RETURN rslt
  3682. end function
  3683. public function integer uof_cmpl_apportion_item_ft_zamt (long arg_atid, ref string arg_msg);Int rslt = 1
  3684. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_itemauditflag
  3685. Decimal ld_sumamt,ld_itemamt,ld_zamt
  3686. SELECT itemauditflag
  3687. INTO :ll_itemauditflag
  3688. FROM u_apportion_time
  3689. Where atid = :arg_atid;
  3690. IF sqlca.SQLCode <> 0 THEN
  3691. rslt = 0
  3692. arg_msg = '查询车间盘点表费用分摊标记失败,'+sqlca.SQLErrText
  3693. GOTO ext
  3694. END IF
  3695. IF ll_itemauditflag = 1 THEN
  3696. rslt = 0
  3697. arg_msg = '该车间盘点表已经执行过费用分摊操作,不能重复执行'
  3698. GOTO ext
  3699. END IF
  3700. datastore ds_item,ds_cp
  3701. ds_item = CREATE datastore
  3702. ds_item.DataObject = 'ds_apportion_item'
  3703. ds_item.SetTransObject(sqlca)
  3704. ds_cp = CREATE datastore
  3705. ds_cp.DataObject = 'ds_apportion_cp'
  3706. ds_cp.SetTransObject(sqlca)
  3707. SELECT sum(zqty * price)
  3708. INTO :ld_sumamt
  3709. FROM u_apportion_cp
  3710. WHERE orderid > 0 AND
  3711. atid = :arg_atid;
  3712. IF sqlca.SQLCode <> 0 THEN
  3713. rslt = 0
  3714. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3715. GOTO ext
  3716. END IF
  3717. row_cnt = ds_item.Retrieve(arg_atid)
  3718. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3719. IF row_cnt = 0 THEN
  3720. rslt = 0
  3721. arg_msg = '没有统计费用数据,不能执行费用分摊操作'
  3722. GOTO ext
  3723. END IF
  3724. Long ll_scid,ll_orderid,ll_itemid
  3725. Decimal ld_cpamt
  3726. FOR ll_i = 1 TO row_cnt
  3727. ld_itemamt = ds_item.Object.u_apportion_item_amt[ll_i]
  3728. ll_itemid = ds_item.Object.u_apportion_item_itemid[ll_i]
  3729. FOR ll_j = 1 TO row_cnt_cp
  3730. ld_zamt = ds_cp.Object.zamt[ll_j]
  3731. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3732. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3733. IF ll_orderid = 0 THEN CONTINUE
  3734. ld_cpamt = ld_zamt / ld_sumamt * ld_itemamt
  3735. INSERT INTO u_apportion_item_ft
  3736. (scid,
  3737. orderid,
  3738. atid,
  3739. itemid,
  3740. amt,
  3741. opdate,
  3742. opemp)
  3743. VALUES (:ll_scid,
  3744. :ll_orderid,
  3745. :arg_atid,
  3746. :ll_itemid,
  3747. :ld_cpamt,
  3748. getdate(),
  3749. :publ_operator);
  3750. IF sqlca.SQLCode <> 0 THEN
  3751. rslt = 0
  3752. arg_msg = '插入指令费用分摊表失败'+sqlca.SQLErrText
  3753. GOTO ext
  3754. END IF
  3755. NEXT
  3756. NEXT
  3757. UPDATE u_apportion_time
  3758. SET itemauditflag = 1,
  3759. itemauditdate = getdate(),
  3760. itemauditemp = :publ_operator
  3761. Where atid = :arg_atid;
  3762. IF sqlca.SQLCode <> 0 THEN
  3763. rslt = 0
  3764. arg_msg = '更新费用分摊标记失败'+sqlca.SQLErrText
  3765. GOTO ext
  3766. END IF
  3767. ext:
  3768. IF rslt = 0 THEN
  3769. ROLLBACK;
  3770. ELSE
  3771. COMMIT;
  3772. END IF
  3773. DESTROY ds_item
  3774. DESTROY ds_cp
  3775. RETURN rslt
  3776. end function
  3777. public function integer uof_cmp_apportion_abnormityamt_ft_zqty (long arg_atid, ref string arg_msg);Int rslt = 1
  3778. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_abnormityflag
  3779. Decimal ld_sumqty,ld_cpqty
  3780. Decimal ld_abnormityamt
  3781. SELECT abnormityflag
  3782. INTO :ll_abnormityflag
  3783. FROM u_apportion_time
  3784. Where atid = :arg_atid;
  3785. IF sqlca.SQLCode <> 0 THEN
  3786. rslt = 0
  3787. arg_msg = '查询车间盘点表异常计件分滩标记失败,'+sqlca.SQLErrText
  3788. GOTO ext
  3789. END IF
  3790. IF ll_abnormityflag = 1 THEN
  3791. rslt = 0
  3792. arg_msg = '该车间盘点表已经执行过异常计件分滩操作,不能重复执行'
  3793. GOTO ext
  3794. END IF
  3795. SELECT abnormityamt
  3796. INTO :ld_abnormityamt
  3797. FROM u_apportion_time
  3798. Where atid = :arg_atid;
  3799. IF sqlca.SQLCode <> 0 THEN
  3800. rslt = 0
  3801. arg_msg = '查询车间盘点表异常计件金额失败,'+sqlca.SQLErrText
  3802. GOTO ext
  3803. END IF
  3804. datastore ds_cp
  3805. ds_cp = CREATE datastore
  3806. ds_cp.DataObject = 'ds_apportion_cp'
  3807. ds_cp.SetTransObject(sqlca)
  3808. SELECT sum(zqty)
  3809. INTO :ld_sumqty
  3810. FROM u_apportion_cp
  3811. WHERE orderid > 0 AND
  3812. atid = :arg_atid;
  3813. IF sqlca.SQLCode <> 0 THEN
  3814. rslt = 0
  3815. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3816. GOTO ext
  3817. END IF
  3818. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3819. Long ll_scid,ll_orderid
  3820. Decimal ld_ftamt
  3821. FOR ll_j = 1 TO row_cnt_cp
  3822. ld_cpqty = ds_cp.Object.zqty[ll_j]
  3823. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3824. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3825. IF ll_orderid = 0 THEN CONTINUE
  3826. ld_ftamt = ld_cpqty / ld_sumqty * ld_abnormityamt
  3827. INSERT INTO u_apportion_abnormity_ft
  3828. (scid,
  3829. orderid,
  3830. atid,
  3831. amt,
  3832. opdate,
  3833. opemp)
  3834. VALUES (:ll_scid,
  3835. :ll_orderid,
  3836. :arg_atid,
  3837. :ld_ftamt,
  3838. getdate(),
  3839. :publ_operator);
  3840. IF sqlca.SQLCode <> 0 THEN
  3841. rslt = 0
  3842. arg_msg = '插入指令异常计件分滩表失败'+sqlca.SQLErrText
  3843. GOTO ext
  3844. END IF
  3845. NEXT
  3846. UPDATE u_apportion_time
  3847. SET abnormityflag = 1,
  3848. abnormitydate = getdate(),
  3849. abnormityemp = :publ_operator
  3850. Where atid = :arg_atid;
  3851. IF sqlca.SQLCode <> 0 THEN
  3852. rslt = 0
  3853. arg_msg = '更新异常计件分滩标记失败'+sqlca.SQLErrText
  3854. GOTO ext
  3855. END IF
  3856. ext:
  3857. IF rslt = 0 THEN
  3858. ROLLBACK;
  3859. ELSE
  3860. COMMIT;
  3861. END IF
  3862. DESTROY ds_cp
  3863. RETURN rslt
  3864. end function
  3865. public function integer uof_cmp_apportion_abnormityamt_ft_amt (long arg_atid, ref string arg_msg);Int rslt = 1
  3866. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_abnormityflag
  3867. Decimal ld_sumamt,ld_amt
  3868. Decimal ld_abnormityamt
  3869. SELECT abnormityflag
  3870. INTO :ll_abnormityflag
  3871. FROM u_apportion_time
  3872. Where atid = :arg_atid;
  3873. IF sqlca.SQLCode <> 0 THEN
  3874. rslt = 0
  3875. arg_msg = '查询车间盘点表异常计件分滩标记失败,'+sqlca.SQLErrText
  3876. GOTO ext
  3877. END IF
  3878. IF ll_abnormityflag = 1 THEN
  3879. rslt = 0
  3880. arg_msg = '该车间盘点表已经执行过异常计件分滩操作,不能重复执行'
  3881. GOTO ext
  3882. END IF
  3883. SELECT abnormityamt
  3884. INTO :ld_abnormityamt
  3885. FROM u_apportion_time
  3886. Where atid = :arg_atid;
  3887. IF sqlca.SQLCode <> 0 THEN
  3888. rslt = 0
  3889. arg_msg = '查询车间盘点表异常计件金额失败,'+sqlca.SQLErrText
  3890. GOTO ext
  3891. END IF
  3892. datastore ds_cp
  3893. ds_cp = CREATE datastore
  3894. ds_cp.DataObject = 'ds_apportion_cp'
  3895. ds_cp.SetTransObject(sqlca)
  3896. SELECT sum(qty * price)
  3897. INTO :ld_sumamt
  3898. FROM u_apportion_cp
  3899. WHERE orderid > 0 AND
  3900. atid = :arg_atid;
  3901. IF sqlca.SQLCode <> 0 THEN
  3902. rslt = 0
  3903. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3904. GOTO ext
  3905. END IF
  3906. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3907. Long ll_scid,ll_orderid
  3908. Decimal ld_ftamt
  3909. FOR ll_j = 1 TO row_cnt_cp
  3910. ld_amt = ds_cp.Object.amt[ll_j]
  3911. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  3912. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  3913. IF ll_orderid = 0 THEN CONTINUE
  3914. ld_ftamt = ld_amt / ld_sumamt * ld_abnormityamt
  3915. INSERT INTO u_apportion_abnormity_ft
  3916. (scid,
  3917. orderid,
  3918. atid,
  3919. amt,
  3920. opdate,
  3921. opemp)
  3922. VALUES (:ll_scid,
  3923. :ll_orderid,
  3924. :arg_atid,
  3925. :ld_ftamt,
  3926. getdate(),
  3927. :publ_operator);
  3928. IF sqlca.SQLCode <> 0 THEN
  3929. rslt = 0
  3930. arg_msg = '插入指令异常计件分滩表失败'+sqlca.SQLErrText
  3931. GOTO ext
  3932. END IF
  3933. NEXT
  3934. UPDATE u_apportion_time
  3935. SET abnormityflag = 1,
  3936. abnormitydate = getdate(),
  3937. abnormityemp = :publ_operator
  3938. Where atid = :arg_atid;
  3939. IF sqlca.SQLCode <> 0 THEN
  3940. rslt = 0
  3941. arg_msg = '更新异常计件分滩标记失败'+sqlca.SQLErrText
  3942. GOTO ext
  3943. END IF
  3944. ext:
  3945. IF rslt = 0 THEN
  3946. ROLLBACK;
  3947. ELSE
  3948. COMMIT;
  3949. END IF
  3950. DESTROY ds_cp
  3951. RETURN rslt
  3952. end function
  3953. public function integer uof_cmp_apportion_abnormityamt_ft_zamt (long arg_atid, ref string arg_msg);Int rslt = 1
  3954. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_abnormityflag
  3955. Decimal ld_sumamt,ld_amt
  3956. Decimal ld_abnormityamt
  3957. SELECT abnormityflag
  3958. INTO :ll_abnormityflag
  3959. FROM u_apportion_time
  3960. Where atid = :arg_atid;
  3961. IF sqlca.SQLCode <> 0 THEN
  3962. rslt = 0
  3963. arg_msg = '查询车间盘点表异常计件分滩标记失败,'+sqlca.SQLErrText
  3964. GOTO ext
  3965. END IF
  3966. IF ll_abnormityflag = 1 THEN
  3967. rslt = 0
  3968. arg_msg = '该车间盘点表已经执行过异常计件分滩操作,不能重复执行'
  3969. GOTO ext
  3970. END IF
  3971. SELECT abnormityamt
  3972. INTO :ld_abnormityamt
  3973. FROM u_apportion_time
  3974. Where atid = :arg_atid;
  3975. IF sqlca.SQLCode <> 0 THEN
  3976. rslt = 0
  3977. arg_msg = '查询车间盘点表异常计件金额失败,'+sqlca.SQLErrText
  3978. GOTO ext
  3979. END IF
  3980. datastore ds_cp
  3981. ds_cp = CREATE datastore
  3982. ds_cp.DataObject = 'ds_apportion_cp'
  3983. ds_cp.SetTransObject(sqlca)
  3984. SELECT sum(zqty * price)
  3985. INTO :ld_sumamt
  3986. FROM u_apportion_cp
  3987. WHERE orderid > 0 AND
  3988. atid = :arg_atid;
  3989. IF sqlca.SQLCode <> 0 THEN
  3990. rslt = 0
  3991. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  3992. GOTO ext
  3993. END IF
  3994. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  3995. Long ll_scid,ll_orderid
  3996. Decimal ld_ftamt
  3997. FOR ll_j = 1 TO row_cnt_cp
  3998. ld_amt = ds_cp.Object.zamt[ll_j]
  3999. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  4000. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  4001. IF ll_orderid = 0 THEN CONTINUE
  4002. ld_ftamt = ld_amt / ld_sumamt * ld_abnormityamt
  4003. INSERT INTO u_apportion_abnormity_ft
  4004. (scid,
  4005. orderid,
  4006. atid,
  4007. amt,
  4008. opdate,
  4009. opemp)
  4010. VALUES (:ll_scid,
  4011. :ll_orderid,
  4012. :arg_atid,
  4013. :ld_ftamt,
  4014. getdate(),
  4015. :publ_operator);
  4016. IF sqlca.SQLCode <> 0 THEN
  4017. rslt = 0
  4018. arg_msg = '插入指令异常计件分滩表失败'+sqlca.SQLErrText
  4019. GOTO ext
  4020. END IF
  4021. NEXT
  4022. UPDATE u_apportion_time
  4023. SET abnormityflag = 1,
  4024. abnormitydate = getdate(),
  4025. abnormityemp = :publ_operator
  4026. Where atid = :arg_atid;
  4027. IF sqlca.SQLCode <> 0 THEN
  4028. rslt = 0
  4029. arg_msg = '更新异常计件分滩标记失败'+sqlca.SQLErrText
  4030. GOTO ext
  4031. END IF
  4032. ext:
  4033. IF rslt = 0 THEN
  4034. ROLLBACK;
  4035. ELSE
  4036. COMMIT;
  4037. END IF
  4038. DESTROY ds_cp
  4039. RETURN rslt
  4040. end function
  4041. public function integer uof_cmpl_apportion_glgz_ft_amt (long arg_atid, ref string arg_msg);Int rslt = 1
  4042. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_glgzflag
  4043. Decimal ld_sumamt,ld_wageamt,ld_amt
  4044. SELECT glgzflag
  4045. INTO :ll_glgzflag
  4046. FROM u_apportion_time
  4047. Where atid = :arg_atid;
  4048. IF sqlca.SQLCode <> 0 THEN
  4049. rslt = 0
  4050. arg_msg = '查询车间盘点表管理工资摊标记失败,'+sqlca.SQLErrText
  4051. GOTO ext
  4052. END IF
  4053. IF ll_glgzflag = 1 THEN
  4054. rslt = 0
  4055. arg_msg = '该车间盘点表已经执行过理工资分摊操作,不能重复执行'
  4056. GOTO ext
  4057. END IF
  4058. datastore ds_glgz,ds_cp
  4059. ds_glgz = CREATE datastore
  4060. ds_glgz.DataObject = 'ds_apportion_glgz'
  4061. ds_glgz.SetTransObject(sqlca)
  4062. ds_cp = CREATE datastore
  4063. ds_cp.DataObject = 'ds_apportion_cp'
  4064. ds_cp.SetTransObject(sqlca)
  4065. SELECT sum(qty * price)
  4066. INTO :ld_sumamt
  4067. FROM u_apportion_cp
  4068. WHERE orderid > 0 AND
  4069. atid = :arg_atid;
  4070. IF sqlca.SQLCode <> 0 THEN
  4071. rslt = 0
  4072. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  4073. GOTO ext
  4074. END IF
  4075. row_cnt = ds_glgz.Retrieve(arg_atid)
  4076. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  4077. IF row_cnt = 0 THEN
  4078. rslt = 0
  4079. arg_msg = '没有统计费用数据,不能执行费用分摊操作'
  4080. GOTO ext
  4081. END IF
  4082. Long ll_scid,ll_orderid,ll_wageid
  4083. Decimal ld_cpamt
  4084. FOR ll_i = 1 TO row_cnt
  4085. ld_wageamt = ds_glgz.Object.amt[ll_i]
  4086. ll_wageid = ds_glgz.Object.wageid[ll_i]
  4087. FOR ll_j = 1 TO row_cnt_cp
  4088. ld_amt = ds_cp.Object.amt[ll_j]
  4089. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  4090. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  4091. IF ll_orderid = 0 THEN CONTINUE
  4092. ld_cpamt = ld_amt / ld_sumamt * ld_wageamt
  4093. INSERT INTO u_apportion_gz_ft
  4094. (scid,
  4095. orderid,
  4096. atid,
  4097. wageid,
  4098. amt,
  4099. opdate,
  4100. opemp)
  4101. VALUES (:ll_scid,
  4102. :ll_orderid,
  4103. :arg_atid,
  4104. :ll_wageid,
  4105. :ld_cpamt,
  4106. getdate(),
  4107. :publ_operator);
  4108. IF sqlca.SQLCode <> 0 THEN
  4109. rslt = 0
  4110. arg_msg = '插入指令费用分摊表失败'+sqlca.SQLErrText
  4111. GOTO ext
  4112. END IF
  4113. NEXT
  4114. NEXT
  4115. UPDATE u_apportion_time
  4116. SET glgzflag = 1,
  4117. glgzdate = getdate(),
  4118. glgzemp = :publ_operator
  4119. Where atid = :arg_atid;
  4120. IF sqlca.SQLCode <> 0 THEN
  4121. rslt = 0
  4122. arg_msg = '更新管理工资分摊标记失败'+sqlca.SQLErrText
  4123. GOTO ext
  4124. END IF
  4125. ext:
  4126. IF rslt = 0 THEN
  4127. ROLLBACK;
  4128. ELSE
  4129. COMMIT;
  4130. END IF
  4131. DESTROY ds_glgz
  4132. DESTROY ds_cp
  4133. RETURN rslt
  4134. end function
  4135. public function integer uof_cmpl_apportion_glgz_ft_zamt (long arg_atid, ref string arg_msg);Int rslt = 1
  4136. Long row_cnt,row_cnt_cp,ll_i,ll_j,ll_glgzflag
  4137. Decimal ld_sumamt,ld_wageamt,ld_amt
  4138. SELECT glgzflag
  4139. INTO :ll_glgzflag
  4140. FROM u_apportion_time
  4141. Where atid = :arg_atid;
  4142. IF sqlca.SQLCode <> 0 THEN
  4143. rslt = 0
  4144. arg_msg = '查询车间盘点表管理工资摊标记失败,'+sqlca.SQLErrText
  4145. GOTO ext
  4146. END IF
  4147. IF ll_glgzflag = 1 THEN
  4148. rslt = 0
  4149. arg_msg = '该车间盘点表已经执行过理工资分摊操作,不能重复执行'
  4150. GOTO ext
  4151. END IF
  4152. datastore ds_glgz,ds_cp
  4153. ds_glgz = CREATE datastore
  4154. ds_glgz.DataObject = 'ds_apportion_glgz'
  4155. ds_glgz.SetTransObject(sqlca)
  4156. ds_cp = CREATE datastore
  4157. ds_cp.DataObject = 'ds_apportion_cp'
  4158. ds_cp.SetTransObject(sqlca)
  4159. SELECT sum(zqty * price)
  4160. INTO :ld_sumamt
  4161. FROM u_apportion_cp
  4162. WHERE orderid > 0 AND
  4163. atid = :arg_atid;
  4164. IF sqlca.SQLCode <> 0 THEN
  4165. rslt = 0
  4166. arg_msg = '查询当前盘点表产量失败'+sqlca.SQLErrText
  4167. GOTO ext
  4168. END IF
  4169. row_cnt = ds_glgz.Retrieve(arg_atid)
  4170. row_cnt_cp = ds_cp.Retrieve(arg_atid)
  4171. IF row_cnt = 0 THEN
  4172. rslt = 0
  4173. arg_msg = '没有统计费用数据,不能执行费用分摊操作'
  4174. GOTO ext
  4175. END IF
  4176. Long ll_scid,ll_orderid,ll_wageid
  4177. Decimal ld_cpamt
  4178. FOR ll_i = 1 TO row_cnt
  4179. ld_wageamt = ds_glgz.Object.amt[ll_i]
  4180. ll_wageid = ds_glgz.Object.wageid[ll_i]
  4181. FOR ll_j = 1 TO row_cnt_cp
  4182. ld_amt = ds_cp.Object.zamt[ll_j]
  4183. ll_scid = ds_cp.Object.u_apportion_cp_scid[ll_j]
  4184. ll_orderid = ds_cp.Object.u_apportion_cp_orderid[ll_j]
  4185. IF ll_orderid = 0 THEN CONTINUE
  4186. ld_cpamt = ld_amt / ld_sumamt * ld_wageamt
  4187. INSERT INTO u_apportion_gz_ft
  4188. (scid,
  4189. orderid,
  4190. atid,
  4191. wageid,
  4192. amt,
  4193. opdate,
  4194. opemp)
  4195. VALUES (:ll_scid,
  4196. :ll_orderid,
  4197. :arg_atid,
  4198. :ll_wageid,
  4199. :ld_cpamt,
  4200. getdate(),
  4201. :publ_operator);
  4202. IF sqlca.SQLCode <> 0 THEN
  4203. rslt = 0
  4204. arg_msg = '插入指令费用分摊表失败'+sqlca.SQLErrText
  4205. GOTO ext
  4206. END IF
  4207. NEXT
  4208. NEXT
  4209. UPDATE u_apportion_time
  4210. SET glgzflag = 1,
  4211. glgzdate = getdate(),
  4212. glgzemp = :publ_operator
  4213. Where atid = :arg_atid;
  4214. IF sqlca.SQLCode <> 0 THEN
  4215. rslt = 0
  4216. arg_msg = '更新管理工资分摊标记失败'+sqlca.SQLErrText
  4217. GOTO ext
  4218. END IF
  4219. ext:
  4220. IF rslt = 0 THEN
  4221. ROLLBACK;
  4222. ELSE
  4223. COMMIT;
  4224. END IF
  4225. DESTROY ds_glgz
  4226. DESTROY ds_cp
  4227. RETURN rslt
  4228. end function
  4229. public function integer uof_cmpl_apportion_item (long arg_atid, integer arg_ifoutware, ref string arg_msg);Int rslt = 1
  4230. Long cnt,ll_wrkGrpid,ll_scid
  4231. DateTime firstdate,enddate
  4232. Int li_balcflag,li_lastauditflag,li_itemauditflag
  4233. Long ll_wkpid_arr[]
  4234. Long ll_cnt_wkp,ll_i
  4235. Long ll_itemid,ll_pmonth
  4236. Decimal ld_amt
  4237. s_produce_cost arg_s_cost
  4238. uo_produce_cost uo_cost
  4239. uo_cost = Create uo_produce_cost
  4240. SELECT u_apportion_time.firstdate,
  4241. u_apportion_time.enddate,
  4242. u_apportion_time.wrkGrpid,
  4243. u_apportion_time.balcflag,
  4244. u_apportion_time.lastauditflag,
  4245. u_apportion_time.itemauditflag,
  4246. u_sc_wkp.scid,
  4247. u_apportion_time.pmonth
  4248. INTO :firstdate,
  4249. :enddate,
  4250. :ll_wrkGrpid,
  4251. :li_balcflag,
  4252. :li_lastauditflag,
  4253. :li_itemauditflag,
  4254. :ll_scid,
  4255. :ll_pmonth
  4256. FROM u_apportion_time INNER JOIN
  4257. u_sc_wkp ON u_apportion_time.wrkGrpid = u_sc_wkp.wrkGrpid
  4258. Where atid = :arg_atid;
  4259. IF sqlca.SQLCode <> 0 THEN
  4260. arg_msg = '查询盘点资料失败 - 开始日期,结束日期'
  4261. rslt = 0
  4262. GOTO ext
  4263. END IF
  4264. IF li_itemauditflag = 1 THEN
  4265. rslt = 0
  4266. arg_msg = '已执行费用分滩,不能操作'
  4267. GOTO ext
  4268. END IF
  4269. IF li_balcflag = 0 THEN
  4270. arg_msg = '盘点未确认,不能操作'
  4271. rslt = 0
  4272. GOTO ext
  4273. END IF
  4274. IF li_lastauditflag = 1 THEN
  4275. arg_msg = '盘点已最终审核,不能操作'
  4276. rslt = 0
  4277. GOTO ext
  4278. END IF
  4279. DELETE u_apportion_item Where atid = :arg_atid;
  4280. IF sqlca.SQLCode <> 0 THEN
  4281. arg_msg = '删除费用统计失败,'+sqlca.SQLErrText
  4282. rslt = 0
  4283. GOTO ext
  4284. END IF
  4285. DELETE u_produce_cost_mx
  4286. FROM u_produce_cost_mx INNER JOIN
  4287. u_produce_cost ON u_produce_cost_mx.billid = u_produce_cost.billid
  4288. Where u_produce_cost.atid = :arg_atid;
  4289. IF sqlca.SQLCode <> 0 THEN
  4290. arg_msg = '删除自动生成的车间费用单明细失败,'+sqlca.SQLErrText
  4291. rslt = 0
  4292. GOTO ext
  4293. END IF
  4294. DELETE FROM u_produce_cost
  4295. Where atid = :arg_atid;
  4296. IF sqlca.SQLCode <> 0 THEN
  4297. arg_msg = '删除自动生成的车间费用单失败,'+sqlca.SQLErrText
  4298. rslt = 0
  4299. GOTO ext
  4300. END IF
  4301. //统计其它出仓单
  4302. IF arg_ifoutware = 1 THEN
  4303. cnt = 0
  4304. SELECT count(*)
  4305. INTO :cnt
  4306. FROM u_outware
  4307. WHERE billtype = 8
  4308. AND outdate >= :firstdate
  4309. AND outdate <= :enddate
  4310. And flag = 0;
  4311. IF sqlca.SQLCode <> 0 THEN
  4312. arg_msg = '查询当前盘点时间范围是否存在没有审核的其它出仓单操作失败'+'~r~n'+sqlca.SQLErrText
  4313. rslt = 0
  4314. GOTO ext
  4315. END IF
  4316. IF cnt > 0 THEN
  4317. arg_msg = '当前盘点时间范围存在没有审核的其它出仓单,请先审核!'
  4318. rslt = 0
  4319. GOTO ext
  4320. END IF
  4321. SELECT itemid
  4322. INTO :ll_itemid
  4323. FROM u_itemdef
  4324. Where dfttype = 16;
  4325. IF sqlca.SQLCode <> 0 THEN
  4326. rslt = 0
  4327. arg_msg = '查询默认生产分摊费用项目失败,'+sqlca.SQLErrText
  4328. GOTO ext
  4329. END IF
  4330. SELECT count(*)
  4331. INTO :cnt
  4332. FROM u_outware INNER JOIN
  4333. u_sc_wkp ON u_outware.deptid = u_sc_wkp.deptid
  4334. WHERE (u_outware.billtype = 8)
  4335. AND (u_outware.flag = 0)
  4336. AND (u_outware.outdate >= :firstdate)
  4337. AND (u_outware.outdate <= :enddate)
  4338. And (u_sc_wkp.wrkGrpid = :ll_wrkGrpid) ;
  4339. IF sqlca.SQLCode <> 0 THEN
  4340. rslt = 0
  4341. arg_msg = '查询当前盘点时间范围是否存在没有审核的其它出仓单操作失败'+'~r~n'+sqlca.SQLErrText
  4342. GOTO ext
  4343. END IF
  4344. IF cnt > 0 THEN
  4345. arg_msg = '当前盘点时间范围存在没有审核的其它出仓单,请先审核!'
  4346. rslt = 0
  4347. GOTO ext
  4348. END IF
  4349. SELECT sum(u_outwaremx.qty * u_outwaremx.fprice)
  4350. INTO :ld_amt
  4351. FROM u_outware INNER JOIN
  4352. u_sc_wkp ON u_outware.deptid = u_sc_wkp.deptid INNER JOIN
  4353. u_outwaremx ON u_outware.scid = u_outwaremx.scid AND
  4354. u_outware.outwareid = u_outwaremx.outwareid
  4355. WHERE (u_outware.billtype = 8)
  4356. AND (u_outware.flag = 1)
  4357. AND (u_outware.outdate >= :firstdate)
  4358. AND (u_outware.outdate <= :enddate)
  4359. And (u_sc_wkp.wrkGrpid = :ll_wrkGrpid) ;
  4360. IF sqlca.SQLCode <> 0 THEN
  4361. rslt = 0
  4362. arg_msg = '查询当前盘点时间范围其它出仓单金额操作失败'+'~r~n'+sqlca.SQLErrText
  4363. GOTO ext
  4364. END IF
  4365. IF IsNull(ld_amt) THEN ld_amt = 0
  4366. IF ld_amt > 0 THEN
  4367. arg_s_cost.scid = ll_scid
  4368. arg_s_cost.billid = 0
  4369. arg_s_cost.billdate = firstdate
  4370. arg_s_cost.billmth = ll_pmonth
  4371. arg_s_cost.rep = publ_operator
  4372. arg_s_cost.dscrp = '车间核算统计费用自动生成(其它出仓单费用)'
  4373. arg_s_cost.wrkGrpid = ll_wrkGrpid
  4374. arg_s_cost.billtype = 0
  4375. arg_s_cost.atid = arg_atid
  4376. arg_s_cost.arg_s_costmx[1].printid = 1
  4377. arg_s_cost.arg_s_costmx[1].itemid = ll_itemid
  4378. arg_s_cost.arg_s_costmx[1].amt = ld_amt
  4379. arg_s_cost.arg_s_costmx[1].dscrp = ''
  4380. IF uo_cost.Save(arg_s_cost,publ_operator,arg_msg,False) = 0 THEN
  4381. rslt = 0
  4382. arg_msg = '自动建立车间费用单失败,'+arg_msg
  4383. GOTO ext
  4384. END IF
  4385. IF uo_cost.audit(uo_cost.uo_billid,publ_operator,arg_msg,False) = 0 THEN
  4386. rslt = 0
  4387. arg_msg = '审核自动建立的车间费用单失败,'+arg_msg
  4388. GOTO ext
  4389. END IF
  4390. END IF
  4391. END IF
  4392. SELECT count(*) INTO :cnt
  4393. FROM u_produce_cost_mx,u_produce_cost
  4394. WHERE u_produce_cost.billid = u_produce_cost_mx.billid
  4395. AND u_produce_cost.flag = 0
  4396. AND u_produce_cost.billdate >= :firstdate
  4397. AND u_produce_cost.billdate <= :enddate
  4398. And u_produce_cost.wrkGrpid = :ll_wrkGrpid;
  4399. IF sqlca.SQLCode <> 0 THEN
  4400. rslt = 0
  4401. arg_msg = '查询当前盘点时间范围是否存在没有审核的车间费用单操作失败! ~n'+sqlca.SQLErrText
  4402. GOTO ext
  4403. END IF
  4404. IF cnt > 0 THEN
  4405. arg_msg = '当前盘点时间范围存在没有审核的车间费用单!'
  4406. rslt = 0
  4407. GOTO ext
  4408. END IF
  4409. SELECT count(*) INTO :cnt
  4410. FROM U_income_expenses INNER JOIN
  4411. U_income_expenses_mx ON
  4412. U_income_expenses.billid = U_income_expenses_mx.billid INNER JOIN
  4413. u_sc_wkp ON U_income_expenses_mx.deptid = u_sc_wkp.deptid INNER JOIN
  4414. u_itemdef ON U_income_expenses_mx.itemid = u_itemdef.itemid
  4415. WHERE (u_itemdef.itemflag = - 1)
  4416. AND (U_income_expenses_mx.deptid > 0)
  4417. AND (u_sc_wkp.wrkgrpid = :ll_wrkGrpid)
  4418. AND U_income_expenses.outdate >= :firstdate
  4419. AND U_income_expenses.outdate <= :enddate
  4420. AND U_income_expenses.flag = 0
  4421. AND U_income_expenses.billtype = 0
  4422. And U_income_expenses_mx.relbillid = 0 ;
  4423. IF sqlca.SQLCode <> 0 THEN
  4424. rslt = 0
  4425. arg_msg = '查询当前盘点时间范围是否存在没有审核的其它收入支出单操作失败! ~n'+sqlca.SQLErrText
  4426. GOTO ext
  4427. END IF
  4428. IF cnt > 0 THEN
  4429. arg_msg = '当前盘点时间范围存在没有审核的其它收入支出单!'
  4430. rslt = 0
  4431. GOTO ext
  4432. END IF
  4433. INSERT INTO u_apportion_item
  4434. (atid,itemid,amt)
  4435. SELECT :arg_atid,itemid, SUM(amt) AS amt
  4436. FROM (
  4437. SELECT u_produce_cost_mx.itemid,
  4438. sum(u_produce_cost_mx.amt) as amt
  4439. FROM u_produce_cost_mx,
  4440. u_produce_cost
  4441. WHERE u_produce_cost.billid = u_produce_cost_mx.billid
  4442. AND u_produce_cost.flag = 1
  4443. AND u_produce_cost.billdate >= :firstdate
  4444. AND u_produce_cost.billdate <= :enddate
  4445. AND u_produce_cost.wrkGrpid = :ll_wrkGrpid
  4446. GROUP BY u_produce_cost_mx.itemid
  4447. UNION ALL
  4448. SELECT U_income_expenses_mx.itemid,
  4449. sum(U_income_expenses_mx.amt) as amt
  4450. FROM U_income_expenses INNER JOIN
  4451. U_income_expenses_mx ON
  4452. U_income_expenses.billid = U_income_expenses_mx.billid INNER JOIN
  4453. u_sc_wkp ON U_income_expenses_mx.deptid = u_sc_wkp.deptid INNER JOIN
  4454. u_itemdef ON U_income_expenses_mx.itemid = u_itemdef.itemid
  4455. WHERE (u_itemdef.itemflag = - 1)
  4456. AND (U_income_expenses_mx.deptid > 0)
  4457. AND (u_sc_wkp.wrkgrpid = :ll_wrkGrpid)
  4458. AND U_income_expenses.outdate >= :firstdate
  4459. AND U_income_expenses.outdate <= :enddate
  4460. AND U_income_expenses.flag = 1
  4461. AND U_income_expenses.billtype = 0
  4462. AND U_income_expenses_mx.relbillid = 0
  4463. GROUP BY U_income_expenses_mx.itemid ) v_itemamt
  4464. Group By itemid;
  4465. IF sqlca.SQLCode <> 0 THEN
  4466. rslt = 0
  4467. arg_msg = '读取车间相关其它收入支出单及车间费用单失败! ~n'+sqlca.SQLErrText
  4468. GOTO ext
  4469. END IF
  4470. UPDATE u_apportion_time
  4471. SET itemamt = a.amt
  4472. FROM u_apportion_time,
  4473. (SELECT u_apportion_item.atid,sum(u_apportion_item.amt) as amt
  4474. FROM u_apportion_item WHERE u_apportion_item.atid = :arg_atid
  4475. GROUP BY u_apportion_item.atid ) a
  4476. WHERE u_apportion_time.atid = a.atid
  4477. And u_apportion_time.atid = :arg_atid;
  4478. IF sqlca.SQLCode <> 0 THEN
  4479. rslt = 0
  4480. arg_msg = '更新盘点表异常计件金额失败'+sqlca.SQLErrText
  4481. GOTO ext
  4482. END IF
  4483. ext:
  4484. IF rslt = 0 THEN
  4485. ROLLBACK;
  4486. ELSE
  4487. COMMIT;
  4488. END IF
  4489. Destroy uo_cost
  4490. RETURN rslt
  4491. end function
  4492. private function integer uof_update_apportion_mtrl (long arg_atid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_mtrlname, decimal arg_orderqty, decimal arg_orderamt, decimal arg_cost, decimal arg_orqty, decimal arg_oramt, decimal arg_inqty, decimal arg_inamt, decimal arg_balcqty, decimal arg_balcamt, decimal arg_outqty_pk, decimal arg_outamt_pk, decimal arg_outqty_scllplan, decimal arg_outamt_scllplan, decimal arg_outqty_fl, decimal arg_outamt_fl, decimal arg_outqty_tl, decimal arg_outamt_tl, decimal arg_outqty_bl, decimal arg_outamt_bl, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  4493. UPDATE u_apportion_mtrl
  4494. SET orderqty = orderqty + :arg_orderqty,
  4495. orderamt = orderamt + :arg_orderamt,
  4496. cost = :arg_cost,
  4497. inqty = inqty + :arg_inqty,
  4498. inamt = inamt + :arg_inamt,
  4499. orqty = orqty + :arg_orqty,
  4500. oramt = oramt + :arg_oramt,
  4501. balcamt = balcamt + :arg_balcamt,
  4502. balcqty = balcqty + :arg_balcqty,
  4503. outqty_pk = outqty_pk + :arg_outqty_pk,
  4504. outamt_pk = outamt_pk + :arg_outamt_pk,
  4505. outqty_fl = outqty_fl + :arg_outqty_fl,
  4506. outamt_fl = outamt_fl + :arg_outamt_fl,
  4507. outqty_tl = outqty_tl + :arg_outqty_tl,
  4508. outamt_tl = outamt_tl + :arg_outamt_tl,
  4509. outqty_bl = outqty_bl + :arg_outqty_bl,
  4510. outamt_bl = outamt_bl + :arg_outamt_bl,
  4511. outqty_scllplan = outqty_scllplan + :arg_outqty_scllplan,
  4512. outamt_scllplan = outamt_scllplan + :arg_outamt_scllplan
  4513. WHERE atid = :arg_atid
  4514. AND mtrlid = :arg_mtrlid
  4515. AND status = :arg_status
  4516. AND woodcode = :arg_woodcode
  4517. And pcode = :arg_pcode;
  4518. IF sqlca.SQLCode = 0 THEN
  4519. IF sqlca.SQLNRows = 0 THEN
  4520. INSERT INTO u_apportion_mtrl
  4521. (atid,mtrlid,status,woodcode,pcode,
  4522. orderqty,orqty,oramt,inqty,inamt,
  4523. balcqty,balcamt,cost,
  4524. outqty_pk,outamt_pk,outqty_scllplan,outamt_scllplan,
  4525. outqty_fl,outamt_fl,outqty_tl,outamt_tl,
  4526. outqty_bl,outamt_bl)
  4527. VALUES(:arg_atid,:arg_mtrlid,:arg_status,:arg_woodcode,:arg_pcode,
  4528. :arg_orderqty,:arg_orqty,:arg_oramt,:arg_inqty,:arg_inamt,
  4529. :arg_balcqty,:arg_balcamt,:arg_cost,
  4530. :arg_outqty_pk,:arg_outamt_pk,:arg_outqty_scllplan,:arg_outamt_scllplan,
  4531. :arg_outqty_fl,:arg_outamt_fl,:arg_outqty_tl,:arg_outamt_tl,
  4532. :arg_outqty_bl,:arg_outamt_bl);
  4533. IF sqlca.SQLCode <> 0 THEN
  4534. arg_msg = '统计材料:'+arg_mtrlname+' 用料失败'
  4535. rslt = 0
  4536. GOTO ext
  4537. END IF
  4538. END IF
  4539. ELSE
  4540. arg_msg = '更新材料:'+arg_mtrlname+' 用料失败'
  4541. rslt = 0
  4542. GOTO ext
  4543. END IF
  4544. ext:
  4545. IF rslt = 0 THEN
  4546. ROLLBACK;
  4547. ELSEIF rslt = 1 And arg_ifcommit THEN
  4548. COMMIT;
  4549. END IF
  4550. RETURN rslt
  4551. end function
  4552. public function integer uof_cmpl_apportion_jjgz (long arg_atid, decimal arg_jjgzamt, ref string arg_msg);Int rslt = 1
  4553. Int li_balcflag,li_lastauditflag
  4554. Long li_pmonth
  4555. SELECT balcflag,lastauditflag
  4556. INTO :li_balcflag,:li_lastauditflag
  4557. FROM u_apportion_time
  4558. Where atid = :arg_atid;
  4559. IF sqlca.SQLCode <> 0 THEN
  4560. arg_msg = '查询盘点资料失败 - 开始日期,结束日期'
  4561. rslt = 0
  4562. GOTO ext
  4563. END IF
  4564. IF li_balcflag = 0 THEN
  4565. arg_msg = '盘点未确认,不能操作'
  4566. rslt = 0
  4567. GOTO ext
  4568. END IF
  4569. IF li_lastauditflag = 1 THEN
  4570. arg_msg = '盘点已最终审核,不能操作'
  4571. rslt = 0
  4572. GOTO ext
  4573. END IF
  4574. UPDATE u_apportion_time
  4575. SET u_apportion_time.jjgzamt = :arg_jjgzamt
  4576. WHERE u_apportion_time.atid = :arg_atid;
  4577. IF sqlca.SQLCode <> 0 THEN
  4578. rslt = 0
  4579. arg_msg = '更新车间计件工资金额失败'+sqlca.SQLErrText
  4580. GOTO ext
  4581. END IF
  4582. ext:
  4583. IF rslt = 0 THEN
  4584. ROLLBACK;
  4585. ELSE
  4586. COMMIT;
  4587. END IF
  4588. RETURN rslt
  4589. end function
  4590. on uo_apportion.create
  4591. call super::create
  4592. TriggerEvent( this, "constructor" )
  4593. end on
  4594. on uo_apportion.destroy
  4595. TriggerEvent( this, "destructor" )
  4596. call super::destroy
  4597. end on
  4598. event constructor;String str_optionvalue,arg_msg
  4599. f_get_sys_option_value('151',str_optionvalue,arg_msg)
  4600. uo_option_inware_sc_location = Long(str_optionvalue)
  4601. f_get_sys_option_value('377',str_optionvalue,arg_msg)
  4602. uo_option_scll_plan_wsaudit = Long(str_optionvalue)
  4603. end event