12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378 |
- $PBExportHeader$uo_inware.sru
- forward
- global type uo_inware from nonvisualobject
- end type
- end forward
- global type uo_inware from nonvisualobject
- end type
- global uo_inware uo_inware
- type variables
- Public ProtectedWrite Long scid = 0 //分部id
- Public ProtectedWrite Long inwareid //进仓单表自动增量id
- Public ProtectedWrite String inwarecode //单据的唯一编号
- Public ProtectedWrite Int billtype = 0 //业务类型
- //业务类型
- //1-采购进仓[记帐模式]
- //2-采购进仓[不记帐模式]
- //3-成品进仓
- //8-其他进仓
- //9-盘盈进仓
- //12-调拨入仓
- Public ProtectedWrite DateTime opdate //建立时间,自动
- Public ProtectedWrite String opemp //建立操作员
- Public ProtectedWrite DateTime moddate //修改时间,自动
- Public ProtectedWrite String modemp //修改操作员
- Public ProtectedWrite Int flag = 0 //仓库审核标志
- Public ProtectedWrite Int balcflag = 0 //仓库结存标志
- Public ProtectedWrite long balcdateint = 0
- Public ProtectedWrite DateTime auditingdate //审核时间
- Public ProtectedWrite String auditingrep //审核操作员
- Public ProtectedWrite Decimal sum_amt = 0 //单据总金额
- Public ProtectedWrite Decimal sum_amt_en = 0 //单据总金额
- Public ProtectedWrite Decimal sum_taxamt = 0 //单据税额
- Public ProtectedWrite Decimal sum_taxamt_en = 0 //单据税额(其它单价)
- Public ProtectedWrite Decimal jgsum_amt = 0 //单据加工总金额
- Public ProtectedWrite Int secflag = 0 //财务审核标志
- Public ProtectedWrite DateTime secauditingdate //二审核时间
- Public ProtectedWrite String secauditingrep //二审核操作员
- Public ProtectedWrite Long ctmint
- Public ProtectedWrite Int priceflag = 0
- Public ProtectedWrite String pricerep = ''
- Public ProtectedWrite DateTime pricedate
- Public ProtectedWrite Int fkflag = 0
- Public ProtectedWrite String fkemp = ''
- Public ProtectedWrite DateTime fkdate
- Long relid = 0 //关联id
- Long storageid = 0 //进仓仓库
- DateTime indate //进仓发生时间
- DateTime plandate //预计付款时间
- String inrep = '' //经手人
- String part = '' //相关号码
- String dscrp = '' //备注
- Long sptid = 0 //供应商id
- String sptname = '' //供应商名称(不记帐模式使用)
- Int dxflag = 0 //代销标记
- Int thflag = 0 //退货标记
- Decimal otheramt = 0 //单据费用
- Long relint_1 = 0
- Long relint_2 = 0
- Long relint_3 = 0
- String relstr_1 = ''
- String relstr_2 = ''
- String relstr_3 = ''
- Long moneyid = 0
- Decimal mrate = 1
- Long deptid = 0
- Boolean lb_ifdelauto = False
- Boolean if_getid_ture = True
- Transaction commit_transaction //数据commit事务
- s_inwaremx inwaremx[] //明细结构数组
- s_inwaremx_mx inwaremx_mx[] //明细结构数组
- s_inwaremx_barcode s_mx_barcode[] //明码明细结构数组
- s_inware_itemmx inware_itemmx[]
- Long it_mxbt = 0 //明细结构数组末指针
- Long it_mxbt_mx = 0
- Long it_mxbt_barcode = 0 //条码明细结构数组末指针
- long it_mxbt_item = 0
- Boolean it_newbegin = False //新建标志
- Boolean it_updatebegin = False //修改标志
- Boolean if_py_check_barcode = False //仓库不使用条码盘点时,审核单据是否检查明细数量与条码数量
- Boolean if_py_update_barcode = False //仓库不使用条码盘点时,审核单据更新条码状态
- Int uo_option_inout_type
- Int uo_option_barcode_inwareother_paudit,uo_option_barcode_inwarebuy_paudit,uo_option_barcode_inwarecp_paudit
- Int uo_option_mtrlware_dscrp
- Int uo_option_unit_dec
- Int uo_option_buy_zero,uo_option_wfjg_zero
- String uo_option_change_status,uo_option_change_woodcode,uo_option_change_pcode
- Int uo_option_ifovertask,uo_option_ifovertask_cp
- Int uo_option_cost_dec,uo_option_mtrlware_autocmp
- Int uo_option_use_clfp
- dec uo_option_cp_inware_scll_rate
- Int uo_option_barcodelocation_use_inwaremx_location
- int uo_option_cost_notax
- int uo_option_djqty_check
- int uo_option_canpack_ifzanyong
- end variables
- forward prototypes
- public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg)
- public function integer save (boolean arg_ifcommit, ref string arg_msg)
- public function integer getinfo (long arg_scid, long arg_inwareid, ref string arg_msg)
- public function integer updatebegin (long arg_scid, long arg_inwareid, integer arg_billtype, ref string arg_msg)
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer del (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_scid, long arg_inwareid, string arg_newdescppart, ref string arg_msg)
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer p_clearmx ()
- public function integer p_getinfo (long arg_scid, long arg_inwareid, ref string arg_msg)
- public function integer p_reset ()
- public function integer p_rst_mtrlwaredscrp (long arg_scid, long arg_relid, string arg_mxdscrp, ref string arg_msg, ref string arg_ref_dscrp)
- public function integer p_update_mtrlware_ws (long arg_mtrlid, string arg_mtrlcode, long arg_storageid, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_uqty, decimal arg_price, decimal arg_planprice, long arg_sptid, long arg_dxflag, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, string arg_location, string arg_dscrp, ref string arg_msg)
- public function integer uof_ref_assign_plan (long arg_scid, long arg_mtrlwareid, decimal arg_qty, ref s_inwaremx_assign_plan arg_s_ap, ref string arg_msg)
- public function integer uof_ref_assign_plan_cancel (string arg_inwarecode, long arg_inprintid, ref s_inwaremx_assign_plan arg_s_ap, ref string arg_msg)
- public function integer uof_ref_assign_cancel (string arg_inwarecode, long arg_inprintid, ref s_inwaremx_assign arg_s_a, ref string arg_msg)
- public function integer uof_ref_mtrlwareid (long arg_scid, long arg_storageid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, string arg_location, long arg_sptid, string arg_mtrlcuscode, ref long arg_mtrlwareid, ref string arg_msg)
- public function integer uof_check_barcodeqty (ref string arg_msg)
- public function integer uof_inbarcode_add (integer arg_billtype, long arg_scid, long arg_inwareid, long arg_printid, string arg_barcode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_priceaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer priceaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_check_qty_to_bqty (ref string arg_msg)
- public function integer uof_set_qty_equal_bqty (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_secaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_c_secaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_uqty, decimal arg_enprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, decimal arg_jgprice, long arg_relid, integer arg_ifrel, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, string arg_unit, decimal arg_rate, decimal arg_qty, long arg_relprintid, decimal arg_checkqty, string arg_result, string arg_waredscrp, long arg_relbillid, long arg_relbillprintid, string arg_mtrlcuscode, string arg_location, decimal arg_deliqty, decimal arg_tax)
- public function integer uof_update_planprice (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_fprice, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_ref_assign_plan_plankind (long arg_scid, long arg_mtrlwareid, long arg_plankind, long arg_plankind_relbillid, long arg_plankind_reprintlid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, ref s_inwaremx_assign_plan arg_s_ap, ref string arg_msg)
- public function integer uof_del_barcode (long arg_scid, long arg_inwareid, string arg_barcode, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx_item (long arg_printid, long arg_itemid, decimal arg_amt, string arg_mxdscrp, ref string arg_msg)
- public function integer uof_check_warepdb_audit (long arg_storageid, ref string arg_msg)
- public function integer p_update_mtrlwareid_inwaremx (long arg_mtrlwareid, long arg_inwareid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_disuse (long arg_scid, long arg_inwareid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (s_inwaremx s_mx, ref string arg_msg)
- public function integer uof_check_scll_rate (long arg_scid, long arg_inwareid, long arg_printid, long arg_relid, long arg_mtrlid, decimal arg_qty, integer arg_ck_if_save_audit, ref string arg_msg)
- public function integer uof_p_barcode (integer arg_audittype, ref string arg_msg, s_inwaremx_barcode_fp arg_mxbarcode_fp)
- public function integer p_update_mtrlware (long arg_mtrlid, string arg_mtrlcode, long arg_storageid, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_uqty, decimal arg_price, decimal arg_planprice, long arg_sptid, integer arg_dxflag, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, string arg_location, string arg_dscrp, integer arg_ifvqty, ref string arg_msg)
- public function integer mod_price (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_enprice, decimal arg_jgprice, decimal arg_tax, decimal arg_rebate, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx_mx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_fprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, long arg_mxprintid, string arg_waredscrp, string arg_mtrlcuscode, string arg_location, long arg_ptinwareid, long arg_ptprintid, integer arg_ifnotinout)
- end prototypes
- public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg);Int rslt = 1
- IF arg_scid < 0 THEN
- arg_msg = '请选择分部'
- rslt = 0
- GOTO ext
- END IF
- IF Not (arg_billtype = 1 OR &
- arg_billtype = 2 OR &
- arg_billtype = 3 OR &
- arg_billtype = 4 OR &
- arg_billtype = 5 OR &
- arg_billtype = 6 OR &
- arg_billtype = 8 OR &
- arg_billtype = 9 OR &
- arg_billtype = 12 OR &
- arg_billtype = 15 OR &
- arg_billtype = 16 OR &
- arg_billtype = 17 or &
- arg_billtype = 18 or &
- arg_billtype = 19 or &
- arg_billtype = 20 or &
- arg_billtype = 21 or &
- arg_billtype = 22 or &
- arg_billtype = 23 or &
- arg_billtype = 24 or &
- arg_billtype = 25 or &
- arg_billtype = 26 or &
- arg_billtype = 27 or &
- arg_billtype = 28) THEN
- rslt = 0
- arg_msg = '此单据类型必须为:'
- arg_msg = arg_msg+'1-采购收货进仓单[记帐模式],'
- arg_msg = arg_msg+'2-采购收货进仓单[不记帐模式],'
- arg_msg = arg_msg+'3-生产进仓单,'
- arg_msg = arg_msg+'4-外协收货进仓单,'
- arg_msg = arg_msg+'5-来料加工收料进仓单,'
- arg_msg = arg_msg+'6-车间生产进仓单,'
- arg_msg = arg_msg+'8-其它进仓单,'
- arg_msg = arg_msg+'9-盘盈进仓单,'
- arg_msg = arg_msg+'12-调拨进仓单,'
- arg_msg = arg_msg+'15-拆装进仓单,'
- arg_msg = arg_msg+'16-生产领料车间自动进仓(不按计划),'
- arg_msg = arg_msg+'17-客户调货进仓单'
- arg_msg = arg_msg+'18-欠货进仓单'
- arg_msg = arg_msg+'19-自动组装进仓单'
- arg_msg = arg_msg+'20-生产领料车间自动进仓单(按计划)'
- arg_msg = arg_msg+'21-车间库存转换自动进仓单'
- arg_msg = arg_msg+'22-库存配置调整单自动进仓单'
- arg_msg = arg_msg+'23-销售发货单发货明细自动进仓单'
- arg_msg = arg_msg+'24-水口料进仓单'
- arg_msg = arg_msg+'25-采购收货单包件明细自动进仓单'
- arg_msg = arg_msg+'26-采购收货包件进仓单'
- arg_msg = arg_msg+'27-采购收货包件结算单'
- arg_msg = arg_msg+'28-员工物品归还单'
- GOTO ext
- END IF
- p_reset()
- billtype = arg_billtype
- scid = arg_scid
- it_newbegin = TRUE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1
- Long cnt = 0,i,cnt_ck,j
- String ls_msg
- DateTime server_dt
- Long ls_newid
- String ls_sccode
- Int li_ifmrp
- Long ll_mtrlid_arr[]
- Decimal ld_qty_arr[]
- String ls_mtrlcode_arr[]
- Long ll_mxcnt = 0
- Decimal ld_djqty,ld_noallocqty
- IF uo_option_djqty_check = -1000 THEN
- rslt = 0
- arg_msg = '选项:[378]进出仓检查冻结数不能大于库存数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF IsNull(relid) THEN relid = 0
- IF IsNull(storageid) THEN storageid = 0
- IF IsNull(inrep) THEN inrep = ''
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(part) THEN part = ''
- IF IsNull(sptid) THEN sptid = 0
- IF IsNull(sptname) THEN sptname = ''
- IF IsNull(dxflag) THEN dxflag = 0
- IF IsNull(thflag) THEN thflag = 0
- IF IsNull(relint_1) THEN relint_1 = 0
- IF IsNull(relint_2) THEN relint_2 = 0
- IF IsNull(relint_3) THEN relint_3 = 0
- IF IsNull(relstr_1) THEN relstr_1 = ''
- IF IsNull(relstr_2) THEN relstr_2 = ''
- IF IsNull(relstr_3) THEN relstr_3 = ''
- IF IsNull(moneyid) THEN moneyid = 0
- IF IsNull(mrate) THEN mrate = 0
- IF IsNull(deptid) THEN deptid = 0
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
- rslt = 0
- arg_msg = "没有正确进仓内容"
- GOTO ext
- END IF
- cnt = 0
- //检查仓库
- SELECT count(*)
- INTO :cnt
- FROM u_storage
- Where u_storage.storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的仓库编号: "+String(storageid)
- GOTO ext
- END IF
- String ls_storagename
- Int li_mustloca
- SELECT storagename,mustloca,ifmrp
- INTO :ls_storagename,:li_mustloca,:li_ifmrp
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF Not (billtype = 16 Or billtype = 20) THEN
- IF sys_user_storagestr_new <> '0' THEN
- IF Pos(sys_user_storagestr_new,','+String(storageid)+',') <= 0 THEN
- rslt = 0
- arg_msg = '没有仓库: '+ls_storagename+' 的建立权限,不允许建立该仓库的单据'
- GOTO ext
- END IF
- END IF
- END IF
- //
- String ls_msg_loca
- Long ll_cnt_loca
- ll_cnt_loca = 0
- IF li_mustloca = 1 And thflag = 0 And billtype <> 23 THEN
- FOR i = 1 To it_mxbt
- IF Trim(inwaremx[i].Location) = '' THEN
- ll_cnt_loca++
- IF ll_cnt_loca <= 10 THEN
- IF Trim(ls_msg_loca) = '' THEN
- ls_msg_loca = ls_msg_loca + String(i)
- ELSE
- ls_msg_loca = ls_msg_loca + ','+String(i)
- END IF
- END IF
- END IF
- NEXT
-
- IF ll_cnt_loca > 0 THEN
- rslt = 0
- IF ll_cnt_loca <= 10 THEN
- arg_msg = '仓库属性已设为仓位必填'+'~r~n'+'明细中第'+ls_msg_loca+'行没有填仓位,请检查'
- ELSE
- arg_msg = '仓库属性已设为仓位必填'+'~r~n'+'其中第'+ls_msg_loca+'等'+String(ll_cnt_loca)+'行明细没有填仓位,请详细检查'
- END IF
-
- GOTO ext
- END IF
- END IF
- IF Year(Date(indate)) < 2000 Or IsNull(indate) THEN
- rslt = 0
- arg_msg = "缺少进仓发生时间或不合理"
- GOTO ext
- END IF
- Boolean lb_chk_balc = True
- IF sys_option_warebalc_checksale = 0 And billtype = 23 THEN //临时的,详见系统选项152
- lb_chk_balc = False
- END IF
- IF f_check_inoutdate(storageid,indate,lb_chk_balc,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 1 Or billtype = 4 Or billtype = 26 Or billtype = 27 THEN
- SELECT name INTO :sptname
- FROM u_spt
- Where sptid = :sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,供应商资料"
- GOTO ext
- END IF
-
- IF billtype = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :moneyid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询币种失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_msg = '币种资料不存在'
- rslt = 0
- GOTO ext
- END IF
-
- IF mrate = 0 THEN
- arg_msg = '币种汇率错误'
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
- IF billtype = 1 Or billtype = 27 THEN
- // IF relint_1 = 0 THEN
- // arg_msg = '请选择结算方式'
- // rslt = 0
- // GOTO ext
- // END IF
-
- plandate = f_findspt_paydate(sptid,indate)
- END IF
- ELSEIF billtype = 5 THEN //来料加工收料单
- SELECT name INTO :sptname
- FROM u_cust
- Where cusid = :sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,客户资料"
- GOTO ext
- END IF
- ELSEIF billtype = 6 THEN //车间生产进仓单
- IF relid = 0 THEN
- arg_msg = '请选择车间'
- rslt = 0
- GOTO ext
- END IF
-
- Long ll_storageid_ws
-
- SELECT storageid INTO :ll_storageid_ws
- FROM u_sc_wkp
- Where wrkGrpid = :relid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作车间对应仓库资料失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ll_storageid_ws <> storageid THEN
- rslt = 0
- arg_msg = "车间对应仓库资料与单据仓库资料不相符,请检查"
- GOTO ext
- END IF
- ELSEIF billtype = 8 THEN
- IF Trim(sptname) = '' Or IsNull(sptname) THEN
- rslt = 0
- arg_msg = "请输入进仓原因!"
- GOTO ext
- END IF
- END IF
- IF billtype = 3 THEN
- IF uo_option_cp_inware_scll_rate = 2 THEN
- FOR i = 1 To it_mxbt
- IF inwaremx[i].relid > 0 THEN
- IF uof_check_scll_rate(scid,inwareid,inwaremx[i].printid,inwaremx[i].relid,inwaremx[i].mtrlid,inwaremx[i].qty,0,arg_msg) = 0 THEN
- cnt_ck++
- ls_msg += '行:'+String(i)+',指令单号:'+inwaremx[i].relcode + ','+arg_msg+'~r~n'
- END IF
- END IF
- NEXT
-
- IF cnt_ck > 0 THEN
- arg_msg = ls_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //如果是修改,则增加到废弃单
- IF billtype = 1 And inwareid > 0 And sys_option_disuse_inware_buy = 1 THEN
- IF uof_disuse(scid,inwareid,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //检查冻结数
- IF uo_option_djqty_check = 1 And li_ifmrp = 1 THEN
- FOR i = 1 To it_mxbt
- FOR j = 1 To ll_mxcnt
- IF inwaremx[i].mtrlid = ll_mtrlid_arr[j] THEN
- ld_qty_arr[j] = ld_qty_arr[j] + inwaremx[i].qty
- GOTO _next_mx
- END IF
- NEXT
-
- ll_mxcnt++
- ll_mtrlid_arr[ll_mxcnt] = inwaremx[i].mtrlid
- ld_qty_arr[ll_mxcnt] = inwaremx[i].qty
- ls_mtrlcode_arr[ll_mxcnt] = inwaremx[i].mtrlcode
- _next_mx:
- NEXT
-
- FOR i = 1 To ll_mxcnt
- SELECT SUM(u_OrderRqMtrl_scll.wareqty - u_OrderRqMtrl_scll.DstrQty + isnull(uv_outware_scll_back.qty,0) )
- INTO :ld_djqty
- FROM u_OrderRqMtrl_scll INNER JOIN
- u_Order_ml ON u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID LEFT OUTER JOIN
- uv_outware_scll_back ON u_OrderRqMtrl_scll.scid = uv_outware_scll_back.scid AND
- u_OrderRqMtrl_scll.OrderID = uv_outware_scll_back.relid AND
- u_OrderRqMtrl_scll.MtrlID = uv_outware_scll_back.mtrlid AND
- u_OrderRqMtrl_scll.status = uv_outware_scll_back.status AND
- u_OrderRqMtrl_scll.woodcode = uv_outware_scll_back.woodcode AND
- u_OrderRqMtrl_scll.pcode = uv_outware_scll_back.pcode
- WHERE (u_OrderRqMtrl_scll.wareqty <> 0) AND (u_Order_ml.Status NOT IN (3,5,6))
- AND u_OrderRqMtrl_scll.wareqty - u_OrderRqMtrl_scll.DstrQty + isnull(uv_outware_scll_back.qty,0) > 0
- AND u_OrderRqMtrl_scll.MtrlID = :ll_mtrlid_arr[i]
- And u_OrderRqMtrl_scll.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_djqty = 0
- END IF
-
- IF IsNull(ld_djqty) THEN ld_djqty = 0
-
- SELECT SUM(u_mtrlware.noallocqty)
- INTO :ld_noallocqty
- FROM u_mtrlware INNER JOIN
- u_storage ON u_mtrlware.storageid = u_storage.storageid
- WHERE (u_storage.inuse = 1)
- AND u_storage.ifmrp = 1
- AND u_mtrlware.mtrlid = :ll_mtrlid_arr[i]
- And u_mtrlware.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_noallocqty = 0
- END IF
-
- IF IsNull(ld_noallocqty) THEN ld_noallocqty = 0
-
- IF ld_djqty > ld_noallocqty + ld_qty_arr[i] THEN
- rslt = 0
- arg_msg = '物料['+ls_mtrlcode_arr[i]+']冻结数不能大于库存数,冻结数:'+String(ld_djqty,'#,##0.##########')+',库存数:'+String(ld_noallocqty,'#,##0.##########')+',本次进仓数:'+String(ld_qty_arr[i],'#,##0.##########')
- GOTO ext
- END IF
- NEXT
- END IF
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF inwareid = 0 THEN //新建
- ls_newid = f_sys_scidentity(scid,"u_inware","inwareid",arg_msg,True,id_sqlca)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取分部代号
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取得新单据编号
- CHOOSE CASE billtype
- CASE 1,2
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'CG',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'CT',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 3
- IF relint_2 = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'CP',Date(server_dt),if_getid_ture,commit_transaction)
- ELSEIF relint_2 = 1 THEN
- inwarecode = getid(scid,ls_sccode + 'CF',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 4
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'WN',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'WH',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 5
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'JI',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'JT',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 6
- inwarecode = getid(scid,ls_sccode + 'WP',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 8
- inwarecode = getid(scid,ls_sccode + 'JC',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 9
- inwarecode = getid(scid,ls_sccode + 'PY',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 12
- inwarecode = getid(scid,ls_sccode + 'IC',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 15
- inwarecode = getid(scid,ls_sccode + 'DC',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 16
- inwarecode = getid(scid,ls_sccode + 'LI',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 17
- inwarecode = getid(scid,ls_sccode + 'MI',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 18
- inwarecode = getid(scid,ls_sccode + 'OI',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 19
- inwarecode = getid(scid,ls_sccode + 'IA',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 20
- inwarecode = getid(scid,ls_sccode + 'CI',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 21
- inwarecode = getid(scid,ls_sccode + 'IW',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 22
- inwarecode = getid(scid,ls_sccode + 'TI',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 23
- inwarecode = getid(scid,ls_sccode + 'BI',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 24
- inwarecode = getid(scid,ls_sccode + 'KJ',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 25
- inwarecode = getid(scid,ls_sccode + 'HI',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 26
- inwarecode = getid(scid,ls_sccode + 'BP',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 27
- inwarecode = getid(scid,ls_sccode + 'CJ',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 28
- inwarecode = getid(scid,ls_sccode + 'GH',Date(server_dt),if_getid_ture,commit_transaction)
- END CHOOSE
-
- IF inwarecode = "err" Or inwarecode = '' THEN
- inwarecode = ''
- rslt = 0
- arg_msg = "无法获取进仓单编号"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_inware (
- scid,
- inwareid,
- inwarecode,
- billtype,
- relid,
- storageid,
- indate,
- plandate,
- inrep,
- part,
- dscrp,
- sptid,
- sptname,
- thflag,
- dxflag,
- otheramt,
- opdate,
- opemp,
- relint_1,
- relint_2,
- relint_3,
- relstr_1,
- relstr_2,
- relstr_3,
- moneyid,
- mrate,
- deptid)
- VALUES (
- :scid,
- :ls_newid,
- :inwarecode,
- :billtype,
- :relid,
- :storageid,
- :indate,
- :plandate,
- :inrep,
- :part,
- :dscrp,
- :sptid,
- :sptname,
- :thflag,
- :dxflag,
- :otheramt,
- :server_dt,
- :publ_operator,
- :relint_1,
- :relint_2,
- :relint_3,
- :relstr_1,
- :relstr_2,
- :relstr_3,
- :moneyid,
- :mrate,
- :deptid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //读取新inwareid
- inwareid = ls_newid
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_inwaremx
- (scid,
- inwareid,
- printid,
- mtrlid,
- plancode,
- status,
- qty,
- fprice,
- rebate,
- price,
- planprice,
- mxdscrp,
- jgprice,
- relid,
- ifrel,
- woodcode,
- relcode,
- pcode,
- sptid_cusid,
- cost,
- sptmtrlname,
- unit,
- rate,
- uprice,
- uqty,
- bootqty,
- noauditqty,
- relprintid,
- checkqty,
- result,
- waredscrp,
- relbillid,
- relbillprintid,
- relbillcode,
- mtrlcuscode,
- location,
- enprice,
- capacity,
- enprice_tax,
- enprice_notax,
- deliqty,
- tax,
- deliprice_notax,
- newprice,
- Thptype,
- jgdscrp,
- ifvqty,
- ifnotinout)
- VALUES (
- :scid,
- :ls_newid,
- :inwaremx[i].printid,
- :inwaremx[i].mtrlid,
- :inwaremx[i].plancode,
- :inwaremx[i].status,
- :inwaremx[i].qty,
- :inwaremx[i].fprice,
- :inwaremx[i].rebate,
- :inwaremx[i].price,
- :inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,
- :inwaremx[i].jgprice,
- :inwaremx[i].relid,
- :inwaremx[i].ifrel,
- :inwaremx[i].woodcode,
- :inwaremx[i].relcode,
- :inwaremx[i].pcode,
- :inwaremx[i].sptid,
- :inwaremx[i].cost,
- :inwaremx[i].sptmtrlname,
- :inwaremx[i].unit,
- :inwaremx[i].rate,
- :inwaremx[i].uprice,
- :inwaremx[i].uqty,
- :inwaremx[i].bootqty,
- :inwaremx[i].noauditqty,
- :inwaremx[i].relprintid,
- :inwaremx[i].checkqty,
- :inwaremx[i].result,
- :inwaremx[i].waredscrp,
- :inwaremx[i].relbillid,
- :inwaremx[i].relbillprintid,
- :inwaremx[i].relbillcode,
- :inwaremx[i].mtrlcuscode,
- :inwaremx[i].Location,
- :inwaremx[i].enprice,
- :inwaremx[i].capacity,
- :inwaremx[i].enprice_tax,
- :inwaremx[i].enprice_notax,
- :inwaremx[i].deliqty,
- :inwaremx[i].tax,
- :inwaremx[i].deliprice_notax,
- :inwaremx[i].newprice,
- :inwaremx[i].Thptype,
- :inwaremx[i].jgdscrp,
- :inwaremx[i].ifvqty,
- :inwaremx[i].ifnotinout) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- inwareid = 0 //还原inwareid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- FOR i = 1 To it_mxbt_mx
- INSERT INTO u_inwaremx_mx
- (scid,
- inwareid,
- printid,
- mtrlid,
- plancode,
- status,
- qty,
- fprice,
- rebate,
- price,
- mxdscrp,
- woodcode,
- pcode,
- sptid_cusid,
- mxprintid,
- waredscrp,
- mtrlcuscode,
- location,
- ptinwareid,
- ptprintid,
- ptinwarecode,
- ifnotinout)
- VALUES (
- :scid,
- :ls_newid,
- :inwaremx_mx[i].printid,
- :inwaremx_mx[i].mtrlid,
- :inwaremx_mx[i].plancode,
- :inwaremx_mx[i].status,
- :inwaremx_mx[i].qty,
- :inwaremx_mx[i].fprice,
- :inwaremx_mx[i].rebate,
- :inwaremx_mx[i].price,
- :inwaremx_mx[i].mxdscrp,
- :inwaremx_mx[i].woodcode,
- :inwaremx_mx[i].pcode,
- :inwaremx_mx[i].sptid,
- :inwaremx_mx[i].mxprintid,
- :inwaremx_mx[i].waredscrp,
- :inwaremx_mx[i].mtrlcuscode,
- :inwaremx_mx[i].Location,
- :inwaremx_mx[i].ptinwareid,
- :inwaremx_mx[i].ptprintid,
- :inwaremx_mx[i].ptinwarecode,
- :inwaremx_mx[i].ifnotinout) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- inwareid = 0 //还原inwareid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入包件明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- FOR i = 1 To it_mxbt_item
- INSERT INTO u_inware_itemmx
- (scid,
- inwareid,
- printid,
- itemid,
- amt,
- mxdscrp)
- VALUES (:scid,
- :ls_newid,
- :inware_itemmx[i].printid,
- :inware_itemmx[i].itemid,
- :inware_itemmx[i].amt,
- :inware_itemmx[i].mxdscrp) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- inwareid = 0 //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_inware
- SET billtype = :billtype,
- relid = :relid,
- storageid = :storageid,
- indate = :indate,
- plandate = :plandate,
- inrep = :inrep,
- part = :part,
- dscrp = :dscrp,
- sptid = :sptid,
- sptname = :sptname,
- thflag = :thflag,
- dxflag = :dxflag,
- otheramt = :otheramt,
- moddate = :server_dt,
- modemp = :publ_operator,
- relint_1 = :relint_1,
- relint_2 = :relint_2,
- relint_3 = :relint_3,
- relstr_1 = :relstr_1,
- relstr_2 = :relstr_2,
- relstr_3 = :relstr_3,
- moneyid = :moneyid,
- mrate = :mrate,
- deptid = :deptid
- WHERE u_inware.inwareid = :inwareid
- AND u_inware.scid = :scid
- And flag = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_inwaremx
- WHERE u_inwaremx.inwareid = :inwareid
- And u_inwaremx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_inwaremx
- (scid,
- inwareid,
- printid,
- mtrlid,
- plancode,
- status,
- qty,
- fprice,
- rebate,
- price,
- planprice,
- mxdscrp,
- jgprice,
- relid,
- ifrel,
- woodcode,
- relcode,
- pcode,
- sptid_cusid,
- cost,
- sptmtrlname,
- unit,
- rate,
- uprice,
- uqty,
- bootqty,
- noauditqty,
- relprintid,
- checkqty,
- result,
- waredscrp,
- relbillid,
- relbillprintid,
- relbillcode,
- mtrlcuscode,
- location,
- enprice,
- capacity,
- enprice_tax,
- enprice_notax,
- deliqty,
- tax,
- deliprice_notax,
- newprice,
- Thptype,
- jgdscrp,
- ifvqty,
- ifnotinout)
- VALUES (
- :scid,
- :inwareid,
- :inwaremx[i].printid,
- :inwaremx[i].mtrlid,
- :inwaremx[i].plancode,
- :inwaremx[i].status,
- :inwaremx[i].qty,
- :inwaremx[i].fprice,
- :inwaremx[i].rebate,
- :inwaremx[i].price,
- :inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,
- :inwaremx[i].jgprice,
- :inwaremx[i].relid,
- :inwaremx[i].ifrel,
- :inwaremx[i].woodcode,
- :inwaremx[i].relcode,
- :inwaremx[i].pcode,
- :inwaremx[i].sptid,
- :inwaremx[i].cost,
- :inwaremx[i].sptmtrlname,
- :inwaremx[i].unit,
- :inwaremx[i].rate,
- :inwaremx[i].uprice,
- :inwaremx[i].uqty,
- :inwaremx[i].bootqty,
- :inwaremx[i].noauditqty,
- :inwaremx[i].relprintid,
- :inwaremx[i].checkqty,
- :inwaremx[i].result,
- :inwaremx[i].waredscrp,
- :inwaremx[i].relbillid,
- :inwaremx[i].relbillprintid,
- :inwaremx[i].relbillcode,
- :inwaremx[i].mtrlcuscode,
- :inwaremx[i].Location,
- :inwaremx[i].enprice,
- :inwaremx[i].capacity,
- :inwaremx[i].enprice_tax,
- :inwaremx[i].enprice_notax,
- :inwaremx[i].deliqty,
- :inwaremx[i].tax,
- :inwaremx[i].deliprice_notax,
- :inwaremx[i].newprice,
- :inwaremx[i].Thptype,
- :inwaremx[i].jgdscrp,
- :inwaremx[i].ifvqty,
- :inwaremx[i].ifnotinout) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- //删除原有明细
- DELETE FROM u_inwaremx_mx
- WHERE u_inwaremx_mx.inwareid = :inwareid
- And u_inwaremx_mx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有包件明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
-
- FOR i = 1 To it_mxbt_mx
- INSERT INTO u_inwaremx_mx
- (scid,
- inwareid,
- printid,
- mtrlid,
- plancode,
- status,
- qty,
- fprice,
- rebate,
- price,
- mxdscrp,
- woodcode,
- pcode,
- sptid_cusid,
- mxprintid,
- waredscrp,
- mtrlcuscode,
- location,
- ptinwareid,
- ptprintid,
- ptinwarecode,
- ifnotinout)
- VALUES (
- :scid,
- :inwareid,
- :inwaremx_mx[i].printid,
- :inwaremx_mx[i].mtrlid,
- :inwaremx_mx[i].plancode,
- :inwaremx_mx[i].status,
- :inwaremx_mx[i].qty,
- :inwaremx_mx[i].fprice,
- :inwaremx_mx[i].rebate,
- :inwaremx_mx[i].price,
- :inwaremx_mx[i].mxdscrp,
- :inwaremx_mx[i].woodcode,
- :inwaremx_mx[i].pcode,
- :inwaremx_mx[i].sptid,
- :inwaremx_mx[i].mxprintid,
- :inwaremx_mx[i].waredscrp,
- :inwaremx_mx[i].mtrlcuscode,
- :inwaremx_mx[i].Location,
- :inwaremx_mx[i].ptinwareid,
- :inwaremx_mx[i].ptprintid,
- :inwaremx_mx[i].ptinwarecode,
- :inwaremx_mx[i].ifnotinout) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入包件明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- DELETE FROM u_inware_itemmx
- WHERE u_inware_itemmx.inwareid = :inwareid
- And u_inware_itemmx.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除原有费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 To it_mxbt_item
- INSERT INTO u_inware_itemmx
- (scid,
- inwareid,
- printid,
- itemid,
- amt,
- mxdscrp)
- VALUES (:scid,
- :inwareid,
- :inware_itemmx[i].printid,
- :inware_itemmx[i].itemid,
- :inware_itemmx[i].amt,
- :inware_itemmx[i].mxdscrp) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer getinfo (long arg_scid, long arg_inwareid, ref string arg_msg);//getinfo(arg_scid,arg_inwareid,arg_msg)
- //0 失败 1成功
- Int rslt = 1
- Int li_outtype
- Long i = 1,j = 1,k = 1,l = 1
- Long no_mxcheck,no_mxcheck_barcode
- jgsum_amt = 0
- sum_amt = 0
- sum_amt_en = 0
- sum_taxamt = 0
- sum_taxamt_en = 0
- IF arg_inwareid <= 0 THEN
- rslt = 0
- arg_msg = "非法进仓单唯一码"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- SELECT outtype
- INTO :li_outtype
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库出仓类型,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_inwaermx CURSOR FOR
- SELECT u_inwaremx.printid,
- u_inwaremx.mtrlid,
- u_inwaremx.plancode,
- u_inwaremx.status,
- u_inwaremx.qty,
- u_inwaremx.fprice,
- u_inwaremx.rebate,
- u_inwaremx.price,
- u_inwaremx.planprice,
- u_inwaremx.mxdscrp,
- u_mtrldef.mtrlcode,
- u_inwaremx.jgprice,
- u_inwaremx.relid,
- u_inwaremx.ifrel,
- u_inwaremx.woodcode,
- u_inwaremx.pcode,
- u_inwaremx.plancode,
- case when :dxflag = 1 then sptid else u_inwaremx.sptid_cusid END,
- u_inwaremx.cost,
- u_inwaremx.sptmtrlname,
- u_inwaremx.unit,
- u_inwaremx.uqty,
- u_inwaremx.uprice,
- u_inwaremx.rate,
- u_inwaremx.bootqty,
- u_inwaremx.noauditqty,
- u_inwaremx.relprintid,
- u_inwaremx.checkqty,
- u_inwaremx.result,
- u_inwaremx.waredscrp,
- u_inwaremx.relbillid,
- u_inwaremx.relbillprintid,
- u_inwaremx.relbillcode,
- u_inwaremx.mtrlcuscode,
- u_inwaremx.location,
- u_mtrldef.ifpackpro,
- u_mtrldef.ifpack,
- u_mtrldef.outtype,
- u_inwaremx.enprice,
- u_inwaremx.capacity,
- u_mtrldef.ordertype,
- u_inwaremx.enprice_tax,
- u_inwaremx.enprice_notax,
- u_inwaremx.deliqty,
- u_inwaremx.tax,
- u_inwaremx.deliprice_notax,
- u_mtrldef.iffp,
- :dxflag,
- u_inwaremx.Thptype,
- u_inwaremx.jgdscrp,
- u_inwaremx.relcode,
- u_inwaremx.ifvqty,
- u_inwaremx.ifnotinout,
- u_inwaremx.mtrlwareid
- FROM u_inwaremx,u_mtrldef,u_inware
- WHERE u_inware.inwareid = :arg_inwareid AND
- u_inwaremx.mtrlid = u_mtrldef.mtrlid AND
- u_inware.scid = :arg_scid AND
- u_inware.inwareid = u_inwaremx.inwareid AND
- u_inware.scid = u_inwaremx.scid
- Order By u_inwaremx.printid Using commit_transaction;
-
- OPEN cur_inwaermx;
- FETCH cur_inwaermx INTO :inwaremx[i].printid,:inwaremx[i].mtrlid,:inwaremx[i].plancode,
- :inwaremx[i].status,:inwaremx[i].qty,:inwaremx[i].fprice,
- :inwaremx[i].rebate,:inwaremx[i].price,:inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,:inwaremx[i].mtrlcode,:inwaremx[i].jgprice,
- :inwaremx[i].relid,:inwaremx[i].ifrel,:inwaremx[i].woodcode,
- :inwaremx[i].pcode,:inwaremx[i].plancode,:inwaremx[i].sptid,
- :inwaremx[i].cost,:inwaremx[i].sptmtrlname,:inwaremx[i].unit,
- :inwaremx[i].uqty,:inwaremx[i].uprice,:inwaremx[i].rate,
- :inwaremx[i].bootqty,:inwaremx[i].noauditqty,:inwaremx[i].relprintid,
- :inwaremx[i].checkqty,:inwaremx[i].result,:inwaremx[i].mtrlwaredscrp,
- :inwaremx[i].relbillid,:inwaremx[i].relbillprintid,:inwaremx[i].relbillcode,
- :inwaremx[i].mtrlcuscode,:inwaremx[i].Location,:inwaremx[i].ifpackpro,:inwaremx[i].ifpack,
- :inwaremx[i].outtype,:inwaremx[i].enprice,:inwaremx[i].capacity,:inwaremx[i].u_mtrldef_ordertype,
- :inwaremx[i].enprice_tax,:inwaremx[i].enprice_notax,:inwaremx[i].deliqty,:inwaremx[i].tax,
- :inwaremx[i].deliprice_notax,:inwaremx[i].iffp,:inwaremx[i].dxflag,:inwaremx[i].Thptype,
- :inwaremx[i].jgdscrp,:inwaremx[i].relcode,:inwaremx[i].ifvqty,:inwaremx[i].ifnotinout,:inwaremx[i].mtrlwareid;
-
- DO WHILE commit_transaction.SQLCode = 0
-
- jgsum_amt = jgsum_amt + Round(inwaremx[i].qty * inwaremx[i].jgprice,2) //计算单据总金额
- sum_amt = sum_amt + Round((inwaremx[i].deliqty * inwaremx[i].uprice * inwaremx[i].rebate) / (1 + inwaremx[i].tax),2) //计算单据总金额
- sum_amt_en = sum_amt_en + Round((inwaremx[i].deliqty * inwaremx[i].enprice * inwaremx[i].rebate) / (1 + inwaremx[i].tax),2) //计算单据总金额
-
- sum_taxamt = sum_taxamt + Round((inwaremx[i].deliqty * inwaremx[i].uprice * inwaremx[i].rebate) / (1 + inwaremx[i].tax) * inwaremx[i].tax,2)
- sum_taxamt_en = sum_taxamt_en + Round((inwaremx[i].deliqty * inwaremx[i].enprice * inwaremx[i].rebate) / (1 + inwaremx[i].tax) * inwaremx[i].tax,2)
-
- i++
- FETCH cur_inwaermx INTO :inwaremx[i].printid,:inwaremx[i].mtrlid,:inwaremx[i].plancode,
- :inwaremx[i].status,:inwaremx[i].qty,:inwaremx[i].fprice,
- :inwaremx[i].rebate,:inwaremx[i].price,:inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,:inwaremx[i].mtrlcode,:inwaremx[i].jgprice,
- :inwaremx[i].relid,:inwaremx[i].ifrel,:inwaremx[i].woodcode,
- :inwaremx[i].pcode,:inwaremx[i].plancode,:inwaremx[i].sptid,
- :inwaremx[i].cost,:inwaremx[i].sptmtrlname,:inwaremx[i].unit,
- :inwaremx[i].uqty,:inwaremx[i].uprice,:inwaremx[i].rate,
- :inwaremx[i].bootqty,:inwaremx[i].noauditqty,:inwaremx[i].relprintid,
- :inwaremx[i].checkqty,:inwaremx[i].result,:inwaremx[i].mtrlwaredscrp,
- :inwaremx[i].relbillid,:inwaremx[i].relbillprintid,:inwaremx[i].relbillcode,
- :inwaremx[i].mtrlcuscode,:inwaremx[i].Location,:inwaremx[i].ifpackpro,:inwaremx[i].ifpack,
- :inwaremx[i].outtype,:inwaremx[i].enprice,:inwaremx[i].capacity,:inwaremx[i].u_mtrldef_ordertype,
- :inwaremx[i].enprice_tax,:inwaremx[i].enprice_notax,:inwaremx[i].deliqty,:inwaremx[i].tax,
- :inwaremx[i].deliprice_notax,:inwaremx[i].iffp,:inwaremx[i].dxflag,:inwaremx[i].Thptype,
- :inwaremx[i].jgdscrp,:inwaremx[i].relcode,:inwaremx[i].ifvqty,:inwaremx[i].ifnotinout,:inwaremx[i].mtrlwareid;
- LOOP
- CLOSE cur_inwaermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_inwaremx
- WHERE u_inwaremx.inwareid = :arg_inwareid
- And scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单明细"
- GOTO ext
- END IF
- //包件
- //用游标读取明细
- IF li_outtype > 0 Or billtype = 27 THEN
- DECLARE cur_inwaermx_mx CURSOR FOR
- SELECT u_inwaremx_mx.printid,
- u_inwaremx_mx.mtrlid,
- u_inwaremx_mx.plancode,
- u_inwaremx_mx.status,
- u_inwaremx_mx.qty,
- u_inwaremx_mx.fprice,
- u_inwaremx_mx.rebate,
- u_inwaremx_mx.price,
- u_inwaremx_mx.mxdscrp,
- u_inwaremx_mx.woodcode,
- u_inwaremx_mx.pcode,
- u_inwaremx_mx.plancode,
- u_inwaremx_mx.sptid_cusid,
- u_inwaremx_mx.waredscrp,
- u_inwaremx_mx.mxprintid,
- u_inwaremx_mx.mtrlcuscode,
- u_inwaremx_mx.location,
- u_mtrldef.ifpackpro,
- u_mtrldef.ifpack,
- u_mtrldef.outtype,
- u_mtrldef.unit,
- u_mtrldef.mtrlcode,
- u_inwaremx_mx.ptinwareid,
- u_inwaremx_mx.ptinwarecode,
- u_inwaremx_mx.ptprintid,
- u_mtrldef.iffp,
- u_inwaremx_mx.ifnotinout
- FROM u_inwaremx_mx,u_mtrldef,u_inware
- WHERE u_inware.inwareid = :arg_inwareid AND
- u_inwaremx_mx.mtrlid = u_mtrldef.mtrlid AND
- u_inware.scid = :arg_scid AND
- u_inware.inwareid = u_inwaremx_mx.inwareid AND
- u_inware.scid = u_inwaremx_mx.scid
- Order By u_inwaremx_mx.mxprintid Using commit_transaction;
-
- OPEN cur_inwaermx_mx;
- FETCH cur_inwaermx_mx INTO :inwaremx_mx[k].printid,:inwaremx_mx[k].mtrlid,:inwaremx_mx[k].plancode,
- :inwaremx_mx[k].status,:inwaremx_mx[k].qty,:inwaremx_mx[k].fprice,
- :inwaremx_mx[k].rebate,:inwaremx_mx[k].price,
- :inwaremx_mx[k].mxdscrp,:inwaremx_mx[k].woodcode,
- :inwaremx_mx[k].pcode,:inwaremx_mx[k].plancode,:inwaremx_mx[k].sptid,
- :inwaremx_mx[k].waredscrp,:inwaremx_mx[k].mxprintid,
- :inwaremx_mx[k].mtrlcuscode,:inwaremx_mx[k].Location,:inwaremx_mx[k].ifpackpro,:inwaremx_mx[k].ifpack,
- :inwaremx_mx[k].outtype,:inwaremx_mx[k].unit,:inwaremx_mx[k].mtrlcode,
- :inwaremx_mx[k].ptinwareid,:inwaremx_mx[k].ptinwarecode,:inwaremx_mx[k].ptprintid,:inwaremx_mx[k].iffp,
- :inwaremx_mx[k].ifnotinout;
-
- DO WHILE commit_transaction.SQLCode = 0
- k++
- FETCH cur_inwaermx_mx INTO :inwaremx_mx[k].printid,:inwaremx_mx[k].mtrlid,:inwaremx_mx[k].plancode,
- :inwaremx_mx[k].status,:inwaremx_mx[k].qty,:inwaremx_mx[k].fprice,
- :inwaremx_mx[k].rebate,:inwaremx_mx[k].price,
- :inwaremx_mx[k].mxdscrp,:inwaremx_mx[k].woodcode,
- :inwaremx_mx[k].pcode,:inwaremx_mx[k].plancode,:inwaremx_mx[k].sptid,
- :inwaremx_mx[k].waredscrp,:inwaremx_mx[k].mxprintid,
- :inwaremx_mx[k].mtrlcuscode,:inwaremx_mx[k].Location,:inwaremx_mx[k].ifpackpro,:inwaremx_mx[k].ifpack,
- :inwaremx_mx[k].outtype,:inwaremx_mx[k].unit,:inwaremx_mx[k].mtrlcode,
- :inwaremx_mx[k].ptinwareid,:inwaremx_mx[k].ptinwarecode,:inwaremx_mx[k].ptprintid,:inwaremx_mx[k].iffp,
- :inwaremx_mx[k].ifnotinout;
- LOOP
- CLOSE cur_inwaermx_mx;
-
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_inwaremx_mx
- WHERE u_inwaremx_mx.inwareid = :arg_inwareid
- And u_inwaremx_mx.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单包件明细数量"
- GOTO ext
- END IF
-
- IF k <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单包件明细"
- GOTO ext
- END IF
- it_mxbt_mx = k - 1
- END IF
- //
- //用游标读取条码明细
- IF li_outtype = 2 Or li_outtype = 3 THEN
- DECLARE cur_inwaremx_barcode CURSOR FOR
- SELECT u_inwaremx_mx_barcode.barcode,
- u_inwaremx_mx_barcode.qty,
- u_mtrlware_mx.packqty,
- u_inwaremx_mx_barcode.qty * u_mtrlware_mx.packqty,
- u_mtrldef.ifbarcodefp,
- u_mtrlware_mx.ifrel,
- u_mtrlware_mx.scid,
- u_mtrlware_mx.orderid
- FROM u_inwaremx_mx_barcode,u_mtrlware_mx,u_mtrldef
- WHERE u_inwaremx_mx_barcode.inwareid = :arg_inwareid AND
- u_inwaremx_mx_barcode.scid = :arg_scid AND
- u_inwaremx_mx_barcode.barcode = u_mtrlware_mx.barcode AND
- u_mtrldef.mtrlid = u_mtrlware_mx.mtrlid
- Order By u_inwaremx_mx_barcode.printid,u_inwaremx_mx_barcode.barcode Using commit_transaction;
-
- OPEN cur_inwaremx_barcode;
- FETCH cur_inwaremx_barcode INTO :s_mx_barcode[j].barcode,
- :s_mx_barcode[j].qty,:s_mx_barcode[j].packqty,:s_mx_barcode[j].inqty,
- :s_mx_barcode[j].u_mtrldef_ifbarcodefp,:s_mx_barcode[j].ifrel,
- :s_mx_barcode[j].scid,:s_mx_barcode[j].orderid;
-
- DO WHILE commit_transaction.SQLCode = 0
- j++
- FETCH cur_inwaremx_barcode INTO :s_mx_barcode[j].barcode,
- :s_mx_barcode[j].qty,:s_mx_barcode[j].packqty,:s_mx_barcode[j].inqty,
- :s_mx_barcode[j].u_mtrldef_ifbarcodefp,:s_mx_barcode[j].ifrel,
- :s_mx_barcode[j].scid,:s_mx_barcode[j].orderid;
- LOOP
- CLOSE cur_inwaremx_barcode;
-
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck_barcode
- FROM u_inwaremx_mx_barcode
- WHERE u_inwaremx_mx_barcode.inwareid = :arg_inwareid
- And u_inwaremx_mx_barcode.scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单明细数量,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF j <> (no_mxcheck_barcode+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单条码明细数量不相符"
- GOTO ext
- END IF
-
- it_mxbt_barcode = j - 1
- END IF
- inwareid = arg_inwareid
- scid = arg_scid
- it_mxbt = i - 1
- FOR i = 1 To it_mxbt
- String ls_mtrlware_dscrp
-
- IF billtype = 3 THEN
- IF p_rst_mtrlwaredscrp(arg_scid,inwaremx[i].relid,inwaremx[i].waredscrp,arg_msg,ls_mtrlware_dscrp) = 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- inwaremx[i].mtrlwaredscrp = ls_mtrlware_dscrp
- END IF
- END IF
- NEXT
- //读取来料加工订单费用明细
- DECLARE cur_inware_itemmx CURSOR FOR
- SELECT scid, inwareid, printid, itemid, amt, mxdscrp
- FROM u_inware_itemmx
- WHERE inwareid = :arg_inwareid
- AND scid = :arg_scid
- Using commit_transaction;
-
- OPEN cur_inware_itemmx;
- FETCH cur_inware_itemmx INTO :inware_itemmx[l].scid,:inware_itemmx[l].inwareid,
- :inware_itemmx[l].printid,:inware_itemmx[l].itemid,
- :inware_itemmx[l].amt,:inware_itemmx[l].mxdscrp;
- DO WHILE commit_transaction.SQLCode = 0
- l++
- FETCH cur_inware_itemmx INTO :inware_itemmx[l].scid,:inware_itemmx[l].inwareid,
- :inware_itemmx[l].printid,:inware_itemmx[l].itemid,
- :inware_itemmx[l].amt,:inware_itemmx[l].mxdscrp;
- LOOP
- CLOSE cur_inware_itemmx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_inware_itemmx
- Where inwareid = :arg_inwareid And scid = :arg_scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,费用明细数量"
- GOTO ext
- END IF
- IF l <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,费用明细"
- GOTO ext
- END IF
- it_mxbt_item = l - 1
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer updatebegin (long arg_scid, long arg_inwareid, integer arg_billtype, ref string arg_msg);Long rslt = 1
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwareother_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[206]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwarebuy_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[208]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwarecp_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[207]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF arg_scid < 0 THEN
- arg_msg = '请选择分部'
- rslt = 0
- GOTO ext
- END IF
- IF arg_inwareid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF Not (arg_billtype = 1 OR &
- arg_billtype = 2 OR &
- arg_billtype = 3 OR &
- arg_billtype = 4 OR &
- arg_billtype = 5 OR &
- arg_billtype = 6 OR &
- arg_billtype = 8 OR &
- arg_billtype = 9 OR &
- arg_billtype = 12 OR &
- arg_billtype = 15 OR &
- arg_billtype = 16 OR &
- arg_billtype = 17 OR &
- arg_billtype = 18 OR &
- arg_billtype = 19 or &
- arg_billtype = 20 or &
- arg_billtype = 21 or &
- arg_billtype = 22 or &
- arg_billtype = 23 or &
- arg_billtype = 24 or &
- arg_billtype = 25 or &
- arg_billtype = 26 or &
- arg_billtype = 27 or &
- arg_billtype = 28) THEN
- rslt = 0
- arg_msg = '此单据类型必须为:'
- arg_msg = arg_msg+'1-采购收货进仓单[记帐模式],'
- arg_msg = arg_msg+'2-采购收货进仓单[不记帐模式],'
- arg_msg = arg_msg+'3-生产进仓单,'
- arg_msg = arg_msg+'4-外协收货进仓单,'
- arg_msg = arg_msg+'5-来料加工收料进仓单,'
- arg_msg = arg_msg+'6-车间生产进仓单,'
- arg_msg = arg_msg+'8-其它进仓单,'
- arg_msg = arg_msg+'9-盘盈进仓单,'
- arg_msg = arg_msg+'12-调拨进仓单'
- arg_msg = arg_msg+'15-拆装进仓单'
- arg_msg = arg_msg+'16-生产领料车间自动进仓单(不按计划),'
- arg_msg = arg_msg+'17-客户调货进仓单'
- arg_msg = arg_msg+'18-欠货进仓单'
- arg_msg = arg_msg+'19-自动组装进仓单'
- arg_msg = arg_msg+'20-生产领料车间自动进仓单(按计划)'
- arg_msg = arg_msg+'21-车间库存转换自动进仓单'
- arg_msg = arg_msg+'22-库存配置调整单自动进仓单'
- arg_msg = arg_msg+'23-销售发货单包件产品自动进仓单'
- arg_msg = arg_msg+'24-水口料进仓单'
- arg_msg = arg_msg+'25-采购收货单包件明细自动进仓单'
- arg_msg = arg_msg+'26-采购收货包件进仓单'
- arg_msg = arg_msg+'27-采购收货包件结算单'
- arg_msg = arg_msg+'28-员工物品归还单'
- GOTO ext
- END IF
- IF arg_billtype = 12 THEN
- rslt = 0
- arg_msg = '单据类型:12-调拨进仓>>不能修改'
- GOTO ext
- END IF
- IF arg_billtype = 17 THEN
- rslt = 0
- arg_msg = '单据类型:17-客户调货进仓>>不能修改'
- GOTO ext
- END IF
- IF arg_billtype = 18 THEN
- rslt = 0
- arg_msg = '单据类型:18-欠货进仓单>>不能修改'
- GOTO ext
- END IF
- IF arg_billtype = 19 THEN
- rslt = 0
- arg_msg = '单据类型:19-自动组装进仓单>>不能修改'
- GOTO ext
- END IF
- IF arg_billtype = 22 THEN
- rslt = 0
- arg_msg = '单据类型:22-库存配置调整单自动进仓>>不能修改'
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF uo_option_inout_type = 2 AND &
- ( uo_option_barcode_inwareother_paudit = 1 AND billtype = 1 OR &
- uo_option_barcode_inwarebuy_paudit = 1 AND billtype = 3 OR &
- uo_option_barcode_inwarecp_paudit = 1 AND billtype = 8 ) THEN
- IF priceflag = 1 THEN
- arg_msg = '单据已确认,不能修改'
- rslt = 0
- GOTO ext
- END IF
- END IF
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :storageid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_new <> '0' THEN
- IF Pos(sys_user_storagestr_new,','+String(storageid)+',') <= 0 THEN
- rslt = 0
- arg_msg = '没有仓库: '+ls_storagename+' 的建立权限,不允许修改该仓库的单据'
- GOTO ext
- END IF
- END IF
- //
- IF priceflag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改'
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改'
- GOTO ext
- END IF
- inwareid = arg_inwareid
- billtype = arg_billtype
- scid = arg_scid
- it_newbegin = FALSE
- it_updatebegin = TRUE
- p_clearmx() //清除明细
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Long cnt = 0,i,j,mx_barcode_cnt
- Long ll_sptid,ll_mtrlwareid_ref
- String ls_mtrlcuscode
- String ls_storagename
- Int li_outtype,li_storagetype,li_if_pd_usebarcode
- s_cmplpackpro_ref_mtrlwareid_array s_mtrlwareid_array_rst
- s_inwaremx_barcode_fp arg_s_mxbarcode_fp
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.commit_transaction = commit_transaction
- uo_cmpl_packpro uo_cmpl_p
- uo_cmpl_p = Create uo_cmpl_packpro
- uo_cmpl_p.commit_transaction = commit_transaction
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwareother_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[206]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwarebuy_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[208]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwarecp_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[207]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- s_inwaremx_assign_plan arg_s_ap,arg_s_ap_null
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- uo_ma.ib_ifinware_audit_do = True
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有进仓审核对象"
- GOTO ext
- END IF
- IF storageid = 0 THEN
- rslt = 0
- arg_msg = '没有正确的仓库'
- GOTO ext
- END IF
- IF billtype <> 9 THEN
- IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- SELECT storagename,outtype,storagetype,if_pd_usebarcode
- INTO :ls_storagename,:li_outtype,:li_storagetype,:li_if_pd_usebarcode
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF Not (billtype = 16 Or billtype = 20) THEN
- IF sys_user_storagestr_audit <> '0' THEN
- IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
- rslt = 0
- arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许审核该仓库的单据'
- GOTO ext
- END IF
- END IF
- end if
- //
- IF uo_option_inout_type = 2 And (li_outtype = 2 Or li_outtype = 3) And &
- ( uo_option_barcode_inwareother_paudit = 1 And billtype = 8 and (sptname <> '更新成本价(正单)' and sptname <> '调整成本价(负单)') Or &
- uo_option_barcode_inwarebuy_paudit = 1 And billtype = 1 Or &
- uo_option_barcode_inwarecp_paudit = 1 And billtype = 3 ) And thflag = 0 THEN
- IF priceflag = 0 THEN
- arg_msg = '单据未确认,不能审核'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核"
- GOTO ext
- END IF
- //检查条码数量是否匹配
- If ( li_outtype = 2 Or li_outtype = 3 ) And &
- ( billtype <> 9 Or billtype = 9 And &
- ( li_if_pd_usebarcode = 1 Or li_if_pd_usebarcode = 0 And if_py_check_barcode )) THEN
- IF uof_check_barcodeqty(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_inware
- SET auditingrep = :publ_operator,
- auditingdate = getdate(),
- flag = 1
- WHERE u_inware.inwareid = :inwareid
- AND flag = 0
- And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- IF f_power_ind(2203,sys_msg_pow) And Not sys_power_issuper THEN
- IF inwaremx[i].uprice = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(i)+',物料编码:'+inwaremx[i].mtrlcode+',没有单价,请检查'
- GOTO ext
- END IF
- END IF
-
- //yyx20120206
- IF li_storagetype = 1 And inwaremx[i].ifpack <> 2 And inwaremx[i].ifpackpro <> 2 And inwaremx[i].ifpackpro <> 4 THEN
- IF billtype = 17 Or billtype = 23 THEN //客户调货条码转换单
- ll_sptid = inwaremx[i].sptid
- ls_mtrlcuscode = inwaremx[i].mtrlcuscode
- ELSE
- ll_sptid = 0
- ls_mtrlcuscode = ''
- END IF
- ELSE
- IF billtype = 4 THEN
- ll_sptid = 0
- ELSE
- ll_sptid = inwaremx[i].sptid
- END IF
- ls_mtrlcuscode = inwaremx[i].mtrlcuscode
- END IF
- //yyx20120206_end
-
- IF sys_option_inout_procedure = 0 THEN
- IF billtype <> 20 And billtype <> 21 THEN
- IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
- storageid,inwaremx[i].plancode,inwaremx[i].status,&
- inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
- ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
- inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF p_update_mtrlware_ws(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
- storageid,inwaremx[i].plancode,inwaremx[i].status,&
- inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
- ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
- inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_pro.p_inware_update_mtrlware(scid,inwareid,inwaremx[i].printid,inwaremx[i].mtrlid,&
- inwaremx[i].mtrlcode,storageid,inwaremx[i].plancode,inwaremx[i].status,inwaremx[i].qty,&
- inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,ll_sptid,inwaremx[i].dxflag,&
- inwaremx[i].woodcode,inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //取库存信息yyx2012-09-25
- ll_mtrlwareid_ref = 0
- IF uof_ref_mtrlwareid(scid,storageid,inwaremx[i].mtrlid,&
- inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].plancode,&
- inwaremx[i].Location,ll_sptid,ls_mtrlcuscode,ll_mtrlwareid_ref,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF p_update_mtrlwareid_inwaremx(ll_mtrlwareid_ref,inwareid,inwaremx[i].printid,arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //yyx20100814
- //库存分配
- IF li_storagetype = 1 And billtype <> 23 THEN
- IF inwaremx[i].iffp = 1 THEN
- //取分配计划
- arg_s_ap = arg_s_ap_null
- IF billtype = 4 THEN //外协收货
- IF inwaremx[i].relid > 0 And inwaremx[i].relprintid > 0 THEN
- IF uof_ref_assign_plan_plankind(scid,ll_mtrlwareid_ref,3,inwaremx[i].relid,inwaremx[i].relprintid,&
- inwaremx[i].mtrlid,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].qty,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '外协收货明细行:'+String(inwaremx[i].printid)+',取分配计划失败'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uof_ref_assign_plan(scid,ll_mtrlwareid_ref,inwaremx[i].qty,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- FOR j = 1 To UpperBound(arg_s_ap.planid)
- IF uo_ma.uof_assign_add(arg_s_ap.scid[j],arg_s_ap.mtrlwareid[j],&
- arg_s_ap.assigntype[j],arg_s_ap.relbillid[j],arg_s_ap.relprintid[j],&
- arg_s_ap.notassignqty[j],inwaremx[i].cost,ls_mtrlcuscode,inwaremx[i].mtrlwaredscrp,&
- inwarecode,inwaremx[i].printid,arg_s_ap.fpgrade[i],publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_ap.planid[j] > 0 THEN
- IF uo_ma.uof_plan_addassignqty(arg_s_ap.planid[j],arg_s_ap.notassignqty[j],&
- inwarecode,inwaremx[i].printid,arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
- END IF
- //yyx20100814_end
-
- If ( li_outtype = 2 Or li_outtype = 3 ) And inwaremx[i].outtype = 2 THEN mx_barcode_cnt++
-
- //yyx2012-9-29返回计算可装数库存id数组
- IF billtype <> 23 &
- And Not (billtype = 25 And Pos(part,'CT') > 0) &
- And Not (billtype = 8 And Pos(sptname,'调整成本价') > 0 ) &
- And ( inwaremx[i].ifpack = 1 Or inwaremx[i].ifpack = 2 Or inwaremx[i].ifpackpro = 3 Or inwaremx[i].ifpackpro = 4 ) And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_ref_mtrlwarid_array(inwaremx[i].mtrlid,inwaremx[i].plancode,ls_mtrlcuscode,storageid,s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- NEXT
- //更新条码
- If ( li_outtype = 2 Or li_outtype = 3 ) And &
- mx_barcode_cnt > 0 And &
- ( billtype <> 9 Or billtype = 9 And &
- ( li_if_pd_usebarcode = 1 Or li_if_pd_usebarcode = 0 And if_py_update_barcode )) THEN
- IF uof_p_barcode(1,arg_msg,arg_s_mxbarcode_fp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //yyx2012-9-29返回计算可装数库存id数组计算可装数
- IF billtype <> 23 &
- And Not (billtype = 25 And Pos(part,'CT') > 0) &
- And Not (billtype = 8 And Pos(sptname,'调整成本价') > 0 ) &
- And UpperBound(s_mtrlwareid_array_rst.mtrlwareid) > 0 And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_cmpl_diqty(s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_ma
- Destroy uo_pro
- Destroy uo_cmpl_p
- RETURN rslt
- end function
- public function integer del (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit);//del(arg_scid,arg_inwareid,arg_msg)
- //如果单据还没有审核删除单据极其明细
- //0 fail, 1 success
- Int rslt = 1
- If arg_inwareid = 0 Then
- rslt = 0
- arg_msg = "没有删除对象,操作取消"
- Goto ext
- End If
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- If rslt = 0 Then Goto ext
- If flag = 1 Then
- rslt = 0
- arg_msg = "单据已经审核,不可以删除"
- Goto ext
- End If
- If Not lb_ifdelauto And billtype = 3 And relint_1 = 1 Then
- rslt = 0
- arg_msg = "自动建立的生产进仓单,不可以删除"
- Goto ext
- End If
- If billtype = 1 and sys_option_disuse_inware_buy = 1 Then
- If uof_disuse(arg_scid,arg_inwareid,1,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- End If
- Delete From u_inwaremx
- Where u_inwaremx.inwareid = :arg_inwareid
- And scid = :arg_scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除进仓单明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Delete From u_inware
- Where u_inware.inwareid = :arg_inwareid
- And scid = :arg_scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除进仓单操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Delete From u_inwaremx_mx_barcode
- Where u_inwaremx_mx_barcode.inwareid = :arg_inwareid
- And u_inwaremx_mx_barcode.scid = :arg_scid
- And u_inwaremx_mx_barcode.billtype = :billtype Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除进仓单条码明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Delete From u_inware_itemmx
- Where u_inware_itemmx.inwareid = :arg_inwareid
- And u_inware_itemmx.scid = :arg_scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除进仓单费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- If billtype = 1 Then
- Update u_inware_barcode_tmp
- Set u_inware_barcode_tmp.inwareid = 0
- Where u_inware_barcode_tmp.scid = :arg_scid
- And u_inware_barcode_tmp.inwareid = :arg_inwareid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "清除进仓单已匹配条码操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- it_newbegin = False
- it_updatebegin = False
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using commit_transaction;
- End If
- p_reset()
- Return rslt
- end function
- public function integer add_dscrp (long arg_scid, long arg_inwareid, string arg_newdescppart, ref string arg_msg);//add_dscrp(string arg_newdescppart)
- //0 fail 1 success
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF it_updatebegin OR it_newbegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可用"
- GOTO ext
- END IF
- IF arg_newdescppart = '' THEN
- rslt = 0
- arg_msg = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "非审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_inware
- SET dscrp = dscrp+' '+:arg_newdescppart
- WHERE u_inware.inwareid = :inwareid
- AND scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ROLLBACK USING commit_transaction;
- rslt = 0
- arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- COMMIT USING commit_transaction;
- dscrp = dscrp+' '+arg_newdescppart
- ext: Return (rslt)
- end function
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Long cnt = 0,i,j,mx_barcode_cnt
- Long ll_sptid
- String ls_mtrlcuscode
- String ls_storagename
- Int li_outtype,li_storagetype,li_if_pd_usebarcode
- s_cmplpackpro_ref_mtrlwareid_array s_mtrlwareid_array_rst
- s_inwaremx_barcode_fp arg_s_mxbarcode_fp
- IF uo_option_canpack_ifzanyong = -1000 THEN
- rslt = 0
- arg_msg = '选项:[417]通用包件产品可装数选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.commit_transaction = commit_transaction
- uo_cmpl_packpro uo_cmpl_p
- uo_cmpl_p = Create uo_cmpl_packpro
- uo_cmpl_p.commit_transaction = commit_transaction
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- s_inwaremx_assign_plan arg_s_ap,arg_s_ap_null
- s_inwaremx_assign arg_s_a,arg_s_a_null
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- uo_ma.ib_ifinware_audit_do = True
- DateTime null_dt
- SetNull(null_dt)
- IF storageid = 0 THEN
- rslt = 0
- arg_msg = '没有正确的仓库'
- GOTO ext
- END IF
- IF billtype <> 9 THEN
- IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- SELECT storagename,outtype,storagetype,if_pd_usebarcode
- INTO :ls_storagename,:li_outtype,:li_storagetype,:li_if_pd_usebarcode
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF Not (billtype = 16 Or billtype = 20) THEN
- IF sys_user_storagestr_audit <> '0' THEN
- IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
- rslt = 0
- arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许撤审该仓库的单据'
- GOTO ext
- END IF
- END IF
- end if
- //
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有出仓撤审对象"
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还未审核"
- GOTO ext
- END IF
- IF balcflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经结存,不能撤审"
- GOTO ext
- END IF
- IF billtype = 26 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_inwaremx_mx,u_inware
- WHERE u_inware.scid = u_inwaremx_mx.scid
- AND u_inware.inwareid = u_inwaremx_mx.inwareid
- AND u_inware.billtype = 27
- And u_inwaremx_mx.ptinwareid = :inwareid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询单据是否已开配套结算单失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- arg_msg = '单据已开配套结算单,不能撤审'
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_inware
- SET auditingrep = '',
- auditingdate = :null_dt,
- flag = 0
- WHERE u_inware.inwareid = :inwareid
- And flag = 1 And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- //yyx20100814
- IF li_storagetype = 1 And inwaremx[i].ifpack <> 2 And inwaremx[i].ifpackpro <> 2 And inwaremx[i].ifpackpro <> 4 THEN
- ll_sptid = 0
- ls_mtrlcuscode = ''
- ELSE
- IF billtype = 4 THEN
- ll_sptid = 0
- ELSE
- ll_sptid = inwaremx[i].sptid
- END IF
- ls_mtrlcuscode = inwaremx[i].mtrlcuscode
- END IF
- //yyx20100814_end
-
- //yyx20100814
- //库存分配
- IF li_storagetype = 1 And billtype <> 23 THEN
- IF inwaremx[i].iffp = 1 THEN
- //取消分配
- arg_s_a = arg_s_a_null
- IF uof_ref_assign_cancel(inwarecode,inwaremx[i].printid,arg_s_a,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- FOR j = 1 To UpperBound(arg_s_a.assignid)
- IF uo_ma.uof_assign_del(arg_s_a.assignid[j],arg_s_a.assignqty[j],&
- arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- //取消分配计划
- arg_s_ap = arg_s_ap_null
- IF uof_ref_assign_plan_cancel(inwarecode,inwaremx[i].printid,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- FOR j = 1 To UpperBound(arg_s_ap.planid)
- IF uo_ma.uof_plan_addassignqty(arg_s_ap.planid[j],0 - arg_s_ap.notassignqty[j],&
- inwarecode,inwaremx[i].printid,arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- //yyx20100814_end
-
- //进仓单撤审,如果使用通用包件占用模式,并且单据明细是包件,要扣减相关占用数
- if uo_option_canpack_ifzanyong = 1 and inwaremx[i].ifpack = 1 then
- if uo_cmpl_p.uof_add_fpqty(scid,inwaremx[i].mtrlwareid,inwaremx[i].mtrlid,0,0,0 - inwaremx[i].qty,arg_msg,false) = 0 then
- rslt = 0
- arg_msg = '行:'+string(i)+','+arg_msg
- goto ext
- end if
- end if
-
-
- IF sys_option_inout_procedure = 0 THEN
- IF billtype <> 20 And billtype <> 21 THEN
- IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
- storageid,inwaremx[i].plancode,inwaremx[i].status,&
- 0 - inwaremx[i].qty,0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
- ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
- inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF p_update_mtrlware_ws(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
- storageid,inwaremx[i].plancode,inwaremx[i].status,&
- 0 - inwaremx[i].qty,0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
- ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
- inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_pro.p_inware_update_mtrlware(scid,inwareid,inwaremx[i].printid,inwaremx[i].mtrlid,&
- inwaremx[i].mtrlcode,storageid,inwaremx[i].plancode,inwaremx[i].status,0 - inwaremx[i].qty,&
- 0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,ll_sptid,inwaremx[i].dxflag,&
- inwaremx[i].woodcode,inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- If ( li_outtype = 2 Or li_outtype = 3 ) And inwaremx[i].outtype = 2 THEN mx_barcode_cnt++
-
- //yyx2012-9-29返回计算可装数库存id数组
- IF billtype <> 23 &
- And Not (billtype = 25 And Pos(part,'CT') > 0) &
- And Not (billtype = 8 And Pos(sptname,'调整成本价') > 0 ) &
- And ( inwaremx[i].ifpack = 1 Or inwaremx[i].ifpack = 2 Or inwaremx[i].ifpackpro = 3 Or inwaremx[i].ifpackpro = 4 ) And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_ref_mtrlwarid_array(inwaremx[i].mtrlid,inwaremx[i].plancode,ls_mtrlcuscode,storageid,s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- NEXT
- //更新条码
- If ( li_outtype = 2 Or li_outtype = 3 ) And &
- mx_barcode_cnt > 0 And &
- ( billtype <> 9 Or billtype = 9 And &
- ( li_if_pd_usebarcode = 1 Or li_if_pd_usebarcode = 0 And if_py_update_barcode )) THEN
- IF uof_p_barcode(0,arg_msg,arg_s_mxbarcode_fp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //yyx2012-9-29返回计算可装数库存id数组计算可装数
- IF billtype <> 23 &
- And Not (billtype = 25 And Pos(part,'CT') > 0) &
- And Not (billtype = 8 And Pos(sptname,'调整成本价') > 0 ) &
- And UpperBound(s_mtrlwareid_array_rst.mtrlwareid) > 0 And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_cmpl_diqty(s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- flag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_ma
- Destroy uo_pro
- Destroy uo_cmpl_p
- RETURN rslt
- end function
- public function integer p_clearmx ();//int p_clearmx()
- //清除明细
- it_mxbt = 0
- it_mxbt_mx = 0
- it_mxbt_barcode = 0
- it_mxbt_item = 0
- RETURN 1
- end function
- public function integer p_getinfo (long arg_scid, long arg_inwareid, ref string arg_msg);//p_getinfo(arg_scid,arg_inwareid,arg_msg)
- //0 失败 1成功
- Int rslt = 1
- IF arg_inwareid <= 0 THEN
- rslt = 0
- arG_MSG = "非法进仓单唯一码"
- GOTO ext
- END IF
- SELECT u_inware.inwarecode,
- u_inware.billtype,
- u_inware.relid,
- u_inware.storageid,
- u_inware.indate,
- u_inware.plandate,
- u_inware.inrep,
- u_inware.part,
- u_inware.sptid,
- u_inware.sptname,
- u_inware.dscrp,
- u_inware.thflag,
- u_inware.secflag,
- u_inware.dxflag,
- u_inware.flag,
- u_inware.balcflag,
- u_inware.balcdateint,
- u_inware.otheramt,
- u_inware.relint_1,
- u_inware.relint_2,
- u_inware.relint_3,
- u_inware.relstr_1,
- u_inware.relstr_2,
- u_inware.relstr_3,
- u_inware.ctmint,
- u_inware.priceflag,
- u_inware.pricerep,
- u_inware.pricedate,
- u_inware.moneyid,
- u_inware.mrate,
- u_inware.deptid,
- u_inware.fkflag,
- u_inware.fkemp,
- u_inware.fkdate
- INTO :inwarecode,
- :billtype,
- :relid,
- :storageid,
- :indate,
- :plandate,
- :inrep,
- :part,
- :sptid,
- :sptname,
- :dscrp,
- :thflag,
- :secflag,
- :dxflag,
- :flag,
- :balcflag,
- :balcdateint,
- :otheramt,
- :relint_1,
- :relint_2,
- :relint_3,
- :relstr_1,
- :relstr_2,
- :relstr_3,
- :ctmint,
- :priceflag,
- :pricerep,
- :pricedate,
- :moneyid,
- :mrate,
- :deptid,
- :fkflag,
- :fkemp,
- :fkdate
- FROM u_inware
- WHERE u_inware.inwareid = :arg_inwareid
- AND scid = :arg_scid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败(错误进仓单唯一码),进仓单,"+String(commit_transaction.SQLCode)+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- inwareid = arg_inwareid
- scid = arg_scid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer p_reset ();//int p_reset()
- //清除对象及其明细
- scid = 0
- inwareid = 0
- inwarecode = ''
- billtype = 0
- opemp = ''
- modemp = ''
- auditingrep = ''
- secauditingrep = ''
- secflag = 0
- flag = 0
- relid = 0
- storageid = 0
- inrep = ''
- part = ''
- dscrp = ''
- sptid = 0
- sptname = ''
- Dxflag = 0
- thflag = 0
- otheramt = 0
- relint_1 = 0
- relint_2 = 0
- relint_3 = 0
- relstr_1 = ''
- relstr_2 = ''
- relstr_3 = ''
- moneyid = 0
- mrate = 1
- deptid = 0
- balcflag = 0
- balcdateint = 0
- sum_amt = 0
- sum_amt_en = 0
- jgsum_amt = 0
- sum_taxamt = 0
- sum_taxamt_en = 0
- it_newbegin = FALSE
- it_updatebegin = FALSE
- //清除明细
- p_clearmx()
- RETURN 1
- end function
- public function integer p_rst_mtrlwaredscrp (long arg_scid, long arg_relid, string arg_mxdscrp, ref string arg_msg, ref string arg_ref_dscrp);Int rslt = 1
- String ls_ordercode,ls_billcode,ls_relcode
- IF uo_option_mtrlware_dscrp = -1000 THEN
- rslt = 0
- arg_msg = '选项:[063]库存表摘要1,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- CHOOSE CASE uo_option_mtrlware_dscrp
- CASE 1
- arg_ref_dscrp = ''
- CASE 2,3,4
- IF arg_relid > 0 THEN
- SELECT ordercode,billcode,relcode
- INTO :ls_ordercode,:ls_billcode,:ls_relcode
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_relid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询生产计划相关号码等失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_option_mtrlware_dscrp = 2 THEN
- arg_ref_dscrp = ls_ordercode
- ELSEIF uo_option_mtrlware_dscrp = 3 THEN
- arg_ref_dscrp = ls_billcode
- ELSEIF uo_option_mtrlware_dscrp = 4 THEN
- arg_ref_dscrp = ls_relcode
- END IF
- ELSE
- arg_ref_dscrp = ''
- END IF
- CASE 5
- arg_ref_dscrp = arg_mxdscrp
- END CHOOSE
- ext:
- RETURN rslt
- end function
- public function integer p_update_mtrlware_ws (long arg_mtrlid, string arg_mtrlcode, long arg_storageid, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_uqty, decimal arg_price, decimal arg_planprice, long arg_sptid, long arg_dxflag, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, string arg_location, string arg_dscrp, ref string arg_msg);Int rslt = 1
- Long ls_newid
- String or_err_part
- Decimal ld_cost
- Int li_storMtrlprp,li_ifcost
- Decimal ld_pypkqty
- Decimal ld_buyinqty,ld_buyinamt
- Decimal ld_cpinqty,ld_cpinamt
- Decimal ld_jginqty,ld_jginamt
- Decimal ld_diinqty,ld_diinamt
- Decimal ld_mvinqty,ld_mvinamt
- Decimal ld_otinqty,ld_otinamt
- Decimal ld_pyinqty,ld_pyinamt
- Int li_ifunit
- String ls_str
- Int li_statusflag
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Long ll_i
- Int li_ifpack
- Int if_recmp_balc
- If sys_if_recmp_balc < 0 Then
- Select if_recmp_balc
- Into :if_recmp_balc
- From sys_msg Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询是否执行结存表重算失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If if_recmp_balc = 0 Then
- rslt = 0
- arg_msg = '由于系统升级,结存表结构与原来不同,请先通知管理员执行危险功能中的[按新结构重算现结存表]功能,才能审核和撤审进出仓单据'
- Goto ext
- End If
- Else
- If sys_if_recmp_balc = 0 Then
- rslt = 0
- arg_msg = '由于系统升级,结存表结构与原来不同,请先通知管理员执行危险功能中的[按新结构重算现结存表]功能,才能审核和撤审进出仓单据'
- Goto ext
- End If
- End If
- If uo_option_change_status = '-1000' Then
- rslt = 0
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_change_woodcode = '-1000' Then
- rslt = 0
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_change_pcode = '-1000' Then
- rslt = 0
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_cost_dec = -1000 Then
- rslt = 0
- arg_msg = '选项:[022]库存成本价转换小数点,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- Select Mtrlprp,ifcost Into :li_storMtrlprp,:li_ifcost
- From u_storage
- Where storageid = :arg_storageid Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询仓库类型失败'
- rslt = 0
- Goto ext
- End If
- Select ifunit,ifpack,capacity,statusflag
- Into :li_ifunit,:li_ifpack,:ld_capacity,:li_statusflag
- From u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询物料信息失败'
- rslt = 0
- Goto ext
- End If
- If li_statusflag = 2 Then
- ld_capacity = 0
- f_checkpz(arg_status,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- Select capacity
- Into :ld_capacity_zj
- From u_mtrl_configure
- Where mtrlid = :arg_mtrlid
- And Name = :ls_status_zj;
- If commit_transaction.SQLCode <> 0 Then
- ld_capacity_zj = 0
- End If
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
-
- Next
- End If
- If li_ifunit = 0 Then arg_uqty = 0
- Int li_ifupdate_date
- If billtype = 1 Or &
- billtype = 2 Or &
- billtype = 3 Or &
- billtype = 4 Or &
- billtype = 5 Or &
- billtype = 6 Or &
- billtype = 8 Then
- li_ifupdate_date = 1
- Else
- li_ifupdate_date = 0
- End If
- //-------------------------------------------更新库存
- If li_ifcost = 1 Then //核算金额
- Update u_mtrlware
- Set noallocqty = noallocqty + :arg_qty ,
- wsallocqty = wsallocqty + :arg_qty,
- unoallocqty = unoallocqty + :arg_uqty,
- wareamt = case noallocqty + :arg_qty when 0 then 0 else wareamt + round(:arg_qty * :arg_price,2) End,
- waredate = case :li_ifupdate_date when 1 then getdate() else waredate End,
- newprice = :arg_price,
- dscrp = :arg_dscrp,
- capacity = capacity + :ld_capacity * :arg_qty,
- cost = case noallocqty + :arg_qty when 0 then cost else round((wareamt + :arg_qty * :arg_price) / ( noallocqty + :arg_qty ),:uo_option_cost_dec) End
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode = 0 Then
- If commit_transaction.SQLNRows = 0 Then
- ///////////////////////// //
- ls_newid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ls_newid <= 0 Then
- rslt = 0
- Goto ext
- End If
- ///////////////////////// //
- ld_cost = Round(arg_price,uo_option_cost_dec)
- Insert Into u_mtrlware
- ( scid,
- mtrlwareid,
- mtrlid,
- storageid,
- plancode,
- status,
- noallocqty,
- unoallocqty,
- wareamt,
- planprice,
- sptid,
- dxflag,
- woodcode,
- pcode,
- cost,
- storMtrlprp,
- dscrp,
- mtrlcuscode,
- location,
- capacity,
- wsallocqty)
- Values (
- :scid,
- :ls_newid,
- :arg_mtrlid,
- :arg_storageid,
- :arg_plancode,
- :arg_status,
- :arg_qty,
- :arg_uqty,
- round(:arg_price * :arg_qty,2),
- :arg_planprice,
- :arg_sptid,
- :arg_dxflag,
- :arg_woodcode,
- :arg_pcode,
- :ld_cost,
- :li_storMtrlprp,
- :arg_dscrp,
- :arg_mtrlcuscode,
- :arg_location,
- :ld_capacity * :arg_qty,
- :arg_qty) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致物料["+arg_mtrlcode+"]库存建立操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- End If
- Else
- rslt = 0
- If arg_status <> '' Then
- ls_str = ' '+uo_option_change_status+':'+arg_status
- End If
- If arg_pcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_pcode+':'+arg_pcode
- End If
- If arg_woodcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_woodcode+':'+arg_woodcode
- End If
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- If commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 Then
- arg_msg = "物料["+arg_mtrlcode+"]同仓库内同批号没有足够的库存支持冲减"
- ElseIf Pos(commit_transaction.SQLErrText,'CK_u_mtrlware') > 0 Then
- arg_msg = "物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号没有足够的库存支持冲减"
- ElseIf Pos(commit_transaction.SQLErrText,'CREATE RULE') > 0 And Pos(commit_transaction.SQLErrText,'cost') > 0 Then
- arg_msg = "物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号的库存金额不够冲减"
- Else
- arg_msg = "因网络或其它原因导致物料["+arg_mtrlcode+"]库存更新操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
-
- Else // 不核算金额
- Update u_mtrlware
- Set wsallocqty = wsallocqty + :arg_qty ,
- noallocqty = noallocqty + :arg_qty ,
- unoallocqty = unoallocqty + :arg_uqty,
- wareamt = 0,
- waredate = case :li_ifupdate_date when 1 then getdate() else waredate End,
- newprice = 0,
- dscrp = :arg_dscrp,
- cost = 0,
- capacity = capacity + :ld_capacity * :arg_qty
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode = 0 Then
- If commit_transaction.SQLNRows = 0 Then
- ///////////////////////// //
- ls_newid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ls_newid <= 0 Then
- rslt = 0
- Goto ext
- End If
- ///////////////////////// //
- Insert Into u_mtrlware
- ( scid,
- mtrlwareid,
- mtrlid,
- storageid,
- plancode,
- status,
- noallocqty,
- unoallocqty,
- wareamt,
- planprice,
- sptid,
- dxflag,
- woodcode,
- pcode,
- cost,
- storMtrlprp,
- dscrp,
- mtrlcuscode,
- location,
- capacity,
- wsallocqty)
- Values (
- :scid,
- :ls_newid,
- :arg_mtrlid,
- :arg_storageid,
- :arg_plancode,
- :arg_status,
- :arg_qty,
- :arg_uqty,
- 0,
- 0,
- :arg_sptid,
- :arg_dxflag,
- :arg_woodcode,
- :arg_pcode,
- 0,
- :li_storMtrlprp,
- :arg_dscrp,
- :arg_mtrlcuscode,
- :arg_location,
- :ld_capacity * :arg_qty,
- :arg_qty) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- If Pos(commit_transaction.SQLErrText,'CK_u_mtrlware') > 0 Then
- If arg_status <> '' Then
- ls_str = ' '+uo_option_change_status+':'+arg_status
- End If
- If arg_pcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_pcode+':'+arg_pcode
- End If
- If arg_woodcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_woodcode+':'+arg_woodcode
- End If
- arg_msg = "物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号没有足够的库存支持冲减"
- Else
- arg_msg = "因网络或其它原因导致物料["+arg_mtrlcode+"]库存建立操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
-
- End If
- Else
- rslt = 0
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- If commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 Then
- arg_msg = "物料["+arg_mtrlcode+"]同仓库内同批号没有足够的库存支持冲减"
- ElseIf Pos(commit_transaction.SQLErrText,'CK_u_mtrlware') > 0 Then
- If arg_status <> '' Then
- ls_str = ' '+uo_option_change_status+':'+arg_status
- End If
- If arg_pcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_pcode+':'+arg_pcode
- End If
- If arg_woodcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_woodcode+':'+arg_woodcode
- End If
- arg_msg = "物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号没有足够的库存支持冲减"
- Else
- arg_msg = "因网络或其它原因导致物料["+arg_mtrlcode+"]库存更新操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
-
-
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- End If
- Return rslt
- end function
- public function integer uof_ref_assign_plan (long arg_scid, long arg_mtrlwareid, decimal arg_qty, ref s_inwaremx_assign_plan arg_s_ap, ref string arg_msg);Int rslt = 1
- Long i,j
- datastore ds_ap
- ds_ap = CREATE datastore
- ds_ap.DataObject = 'ds_inwaremx_assign_plan'
- ds_ap.SetTransObject(commit_transaction)
- ds_ap.Retrieve(arg_scid,arg_mtrlwareid)
- FOR i = 1 TO ds_ap.RowCount()
- j++
- arg_s_ap.planid[j] = ds_ap.Object.planid[i]
- arg_s_ap.assigntype[j] = ds_ap.Object.assigntype[i]
- arg_s_ap.scid[j] = ds_ap.Object.scid[i]
- arg_s_ap.mtrlwareid[j] = ds_ap.Object.mtrlwareid[i]
- arg_s_ap.relbillid[j] = ds_ap.Object.relbillid[i]
- arg_s_ap.relprintid[j] = ds_ap.Object.relprintid[i]
- arg_s_ap.fpgrade[j] = ds_ap.Object.fpgrade[i]
-
- IF ds_ap.Object.planassignqty[i] - ds_ap.Object.assignqty[i] >= arg_qty THEN
- arg_s_ap.notassignqty[j] = arg_qty
- GOTO ext
- ELSE
- arg_s_ap.notassignqty[j] = ds_ap.Object.planassignqty[i] - ds_ap.Object.assignqty[i]
- arg_qty = arg_qty - (ds_ap.Object.planassignqty[i] - ds_ap.Object.assignqty[i])
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uof_ref_assign_plan_cancel (string arg_inwarecode, long arg_inprintid, ref s_inwaremx_assign_plan arg_s_ap, ref string arg_msg);Int rslt = 1
- Long i,j
- datastore ds_ap
- ds_ap = CREATE datastore
- ds_ap.DataObject = 'ds_inwaremx_assign_plan_cancel'
- ds_ap.SetTransObject(commit_transaction)
- ds_ap.Retrieve(arg_inwarecode,arg_inprintid)
- FOR i = 1 TO ds_ap.RowCount()
- j++
- arg_s_ap.planid[j] = ds_ap.Object.planid[i]
- arg_s_ap.notassignqty[j] = ds_ap.Object.qty[i]
- NEXT
- DESTROY ds_ap
- RETURN rslt
- end function
- public function integer uof_ref_assign_cancel (string arg_inwarecode, long arg_inprintid, ref s_inwaremx_assign arg_s_a, ref string arg_msg);Int rslt = 1
- Long i,j
- datastore ds_a
- ds_a = CREATE datastore
- ds_a.DataObject = 'ds_inwaremx_assign_cancel'
- ds_a.SetTransObject(commit_transaction)
- ds_a.Retrieve(arg_inwarecode,arg_inprintid)
- FOR i = 1 TO ds_a.RowCount()
- j++
- arg_s_a.assignid[j] = ds_a.Object.assignid[i]
- arg_s_a.assignqty[j] = ds_a.Object.assignqty[i]
- NEXT
- destroy ds_a
- RETURN rslt
- end function
- public function integer uof_ref_mtrlwareid (long arg_scid, long arg_storageid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, string arg_location, long arg_sptid, string arg_mtrlcuscode, ref long arg_mtrlwareid, ref string arg_msg);Int rslt = 1
- Long ll_mtrlwareid_rst
- SELECT u_mtrlware.mtrlwareid
- INTO :ll_mtrlwareid_rst
- FROM u_mtrlware
- WHERE u_mtrlware.scid = :arg_scid
- AND u_mtrlware.storageid = :arg_storageid
- AND u_mtrlware.mtrlid = :arg_mtrlid
- AND u_mtrlware.status = :arg_status
- AND u_mtrlware.woodcode = :arg_woodcode
- AND u_mtrlware.pcode = :arg_pcode
- AND u_mtrlware.plancode = :arg_plancode
- AND u_mtrlware.location = :arg_location
- AND u_mtrlware.sptid = :arg_sptid
- AND u_mtrlware.mtrlcuscode = :arg_mtrlcuscode
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询库存id失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ll_mtrlwareid_rst) THEN ll_mtrlwareid_rst = 0
- IF ll_mtrlwareid_rst = 0 THEN
- arg_msg = '进仓明细库存id为0'
- rslt = 0
- GOTO ext
- END IF
- arg_mtrlwareid = ll_mtrlwareid_rst
- ext:
- RETURN rslt
- end function
- public function integer uof_check_barcodeqty (ref string arg_msg);Long i
- Int rslt = 1
- Decimal ld_inqty_outtype_2,ld_inqty_barcode
- IF billtype <> 1 And billtype <> 3 And billtype <> 8 And billtype <> 9 THEN
- rslt = 1
- GOTO ext
- END IF
- IF billtype = 8 And (sptname = '更新成本价(正单)' Or sptname = '调整成本价(负单)') THEN
- rslt = 1
- GOTO ext
- END IF
- IF billtype = 1 THEN
- FOR i = 1 To it_mxbt_mx
- IF thflag = 0 THEN
- IF inwaremx_mx[i].outtype = 2 THEN ld_inqty_outtype_2 += inwaremx_mx[i].qty
- ELSE
- IF inwaremx_mx[i].outtype = 2 THEN ld_inqty_outtype_2 += Abs(inwaremx_mx[i].qty)
- END IF
- NEXT
- ELSE
- FOR i = 1 To it_mxbt
- IF inwaremx[i].outtype = 2 THEN ld_inqty_outtype_2 += inwaremx[i].qty
- NEXT
- END IF
- FOR i = 1 To it_mxbt_barcode
- ld_inqty_barcode += s_mx_barcode[i].qty * s_mx_barcode[i].packqty
- NEXT
- IF ld_inqty_outtype_2 <> ld_inqty_barcode THEN
- rslt = 0
- IF billtype = 1 THEN
- arg_msg = '收货单包件明细按条码进仓数量与条码明细数量不相符,请检查包件明细的物料资料是否设置了使用条码进出仓'
- ELSE
- arg_msg = '进仓单明细按条码进仓数量与条码明细数量不相符,,请检查进仓明细的物料资料是否设置了使用条码进出仓'
- END IF
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_inbarcode_add (integer arg_billtype, long arg_scid, long arg_inwareid, long arg_printid, string arg_barcode, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- INSERT INTO U_inwaremx_mx_barcode
- (billtype,scid,inwareid,printid,barcode,qty)
- VALUES
- (:arg_billtype,
- :arg_scid,:arg_inwareid,:arg_printid,:arg_barcode,:arg_qty);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '进仓明细保存条码失败,行:'+String(arg_printid)+',条码:'+arg_barcode+','+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer c_priceaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,i
- DateTime null_dt
- SetNull(null_dt)
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwareother_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[206]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwarebuy_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[208]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwarecp_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[207]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF p_getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "单据还未确认,不能反确认"
- GOTO ext
- END IF
- IF uo_option_inout_type = 2 And &
- ( billtype = 1 And uo_option_barcode_inwarebuy_paudit = 1 Or &
- billtype = 3 And uo_option_barcode_inwarecp_paudit = 1 Or &
- billtype = 8 And uo_option_barcode_inwareother_paudit = 1 ) THEN
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已仓库审核"
- GOTO ext
- END IF
- END IF
- IF uo_option_barcode_inwarecp_paudit = 2 THEN
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已仓库审核"
- GOTO ext
- END IF
- END IF
- UPDATE u_inware
- SET priceflag = 0,
- pricedate = :null_dt,
- pricerep = ''
- WHERE inwareid = :arg_billid
- AND scid = :arg_scid
- And priceflag = 1;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在反确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- priceflag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer priceaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,i
- IF p_getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF priceflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经确认,不能再确认"
- GOTO ext
- END IF
- UPDATE u_inware
- SET priceflag = 1,
- pricedate = getdate(),
- pricerep = :publ_operator
- WHERE inwareid = :arg_billid
- AND scid = :arg_scid
- AND priceflag = 0 ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- priceflag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_check_qty_to_bqty (ref string arg_msg);Int rslt = 1
- //Long ll_j,ll_k
- //Long ll_f,ll_arr
- //Long ll_mtrlware_arr[]
- //Decimal ld_outqty_arr[]
- //Long ll_mtrlware_arr_bill[]
- //Decimal ld_outqty_arr_bill[]
- //Boolean lb_equal = FALSE
- //
- ////计算条码出仓数
- //FOR ll_j = 1 TO it_mxbt_barcode
- // ll_f = 0
- // ll_arr = UpperBound(ll_mtrlware_arr)
- // FOR ll_k = 1 TO ll_arr
- // IF ll_mtrlware_arr[ll_k] = s_mx_barcode[ll_j].mtrlwareid THEN
- // ll_f = ll_k
- // EXIT
- // END IF
- // NEXT
- //
- // IF ll_f > 0 THEN
- // ld_outqty_arr[ll_f] += s_mx_barcode[ll_j].outqty
- // ELSE
- // ll_arr++
- // ll_mtrlware_arr[ll_arr] = s_mx_barcode[ll_j].mtrlwareid
- // ld_outqty_arr[ll_arr] = s_mx_barcode[ll_j].outqty
- // END IF
- //NEXT
- //
- ////计算出仓明细出仓数
- //IF billtype = 1 THEN
- // FOR ll_j = 1 TO it_mxbt_mx
- // ll_f = 0
- // ll_arr = UpperBound(ll_mtrlware_arr_bill)
- // FOR ll_k = 1 TO ll_arr
- // IF ll_mtrlware_arr_bill[ll_k] = outwaremx_mx[ll_j].mtrlwareid THEN
- // ll_f = ll_k
- // EXIT
- // END IF
- // NEXT
- //
- // IF ll_f > 0 THEN
- // ld_outqty_arr_bill[ll_f] += outwaremx_mx[ll_j].qty
- // ELSE
- // ll_arr++
- // ll_mtrlware_arr_bill[ll_arr] = outwaremx_mx[ll_j].mtrlwareid
- // ld_outqty_arr_bill[ll_arr] = outwaremx_mx[ll_j].qty
- // END IF
- // NEXT
- //ELSE
- // FOR ll_j = 1 TO it_mxbt
- // ll_f = 0
- // ll_arr = UpperBound(ll_mtrlware_arr_bill)
- // FOR ll_k = 1 TO ll_arr
- // IF ll_mtrlware_arr_bill[ll_k] = outwaremx[ll_j].mtrlwareid THEN
- // ll_f = ll_k
- // EXIT
- // END IF
- // NEXT
- //
- // IF ll_f > 0 THEN
- // ld_outqty_arr_bill[ll_f] += outwaremx[ll_j].qty
- // ELSE
- // ll_arr++
- // ll_mtrlware_arr_bill[ll_arr] = outwaremx[ll_j].mtrlwareid
- // ld_outqty_arr_bill[ll_arr] = outwaremx[ll_j].qty
- // END IF
- // NEXT
- //END IF
- //
- ////检查1
- //FOR ll_j = 1 TO UpperBound(ll_mtrlware_arr_bill)
- // lb_equal = FALSE
- // IF ld_outqty_arr_bill[ll_j] = 0 THEN CONTINUE
- //
- // FOR ll_k = 1 TO UpperBound(ll_mtrlware_arr)
- // IF ll_mtrlware_arr_bill[ll_j] = ll_mtrlware_arr[ll_k] THEN
- // IF ld_outqty_arr_bill[ll_j] = ld_outqty_arr[ll_k] THEN
- // lb_equal = TRUE
- // END IF
- // END IF
- // NEXT
- //
- // IF NOT lb_equal THEN
- // arg_msg = '出仓明细按条码出仓物料的出仓数与条码扫描明细不相等,请检查'
- // rslt = 0
- // GOTO ext
- // END IF
- //NEXT
- //
- ////检查2
- //FOR ll_j = 1 TO UpperBound(ll_mtrlware_arr)
- // lb_equal = FALSE
- // IF ld_outqty_arr[ll_j] = 0 THEN CONTINUE
- //
- // FOR ll_k = 1 TO UpperBound(ll_mtrlware_arr_bill)
- // IF ll_mtrlware_arr[ll_j] = ll_mtrlware_arr_bill[ll_k] THEN
- // IF ld_outqty_arr[ll_j] = ld_outqty_arr_bill[ll_k] THEN
- // lb_equal = TRUE
- // END IF
- // END IF
- // NEXT
- //
- // IF NOT lb_equal THEN
- // arg_msg = '条码扫描明细与出仓明细按条码出仓物料的出仓数不相等,请检查'
- // rslt = 0
- // GOTO ext
- // END IF
- //NEXT
- //
- //
- //ext:
- RETURN rslt
- end function
- public function integer uof_set_qty_equal_bqty (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_ref_outtype
- Long ll_i,ll_j,ll_k
- Long ll_f,ll_arr
- Decimal ld_updateqty
- Long ll_mtrlid,ll_cusid,ll_orderid
- String ls_status,ls_woodcode,ls_pcode,ls_plancode,ls_mtrlcuscode,ls_location
- s_mtrlware_noalloc_array arg_s_inmx,arg_s_inmx_barcode
- IF arg_inwareid <= 0 THEN
- arg_msg = '错误的单据id'
- rslt = 0
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF f_rst_storage_outtype(storageid,li_ref_outtype) = 0 THEN
- arg_msg = '查询仓库出仓策略失败,请检查仓库资料'
- rslt = 0
- GOTO ext
- END IF
- IF li_ref_outtype <> 2 and li_ref_outtype <> 3 THEN
- arg_msg = '仓库出仓策略不是使用条码出仓,操作取消,请检查仓库资料'
- rslt = 0
- GOTO ext
- END IF
- IF priceflag = 0 THEN
- arg_msg = '单据未确认,操作取消'
- rslt = 0
- GOTO ext
- END IF
- IF flag = 1 THEN
- arg_msg = '单据已仓审,操作取消'
- rslt = 0
- GOTO ext
- END IF
- //计算条码出仓数
- FOR ll_j = 1 TO it_mxbt_barcode
- ll_f = 0
-
- SELECT u_getbar.mtrlid,
- u_getbar.cusid,
- u_getbar.status,
- u_getbar.woodcode,
- u_getbar.pcode,
- u_getbar.plancode,
- u_getbar.mtrlcuscode,
- u_getbar.location,
- u_getbar.orderid
- INTO :ll_mtrlid,
- :ll_cusid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_plancode,
- :ls_mtrlcuscode,
- :ls_location,
- :ll_orderid
- FROM u_getbar,u_mtrlware_mx
- WHERE u_getbar.getbarid = u_mtrlware_mx.getbarid
- AND u_mtrlware_mx.barcode = :s_mx_barcode[ll_j].barcode
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '条码:'+s_mx_barcode[ll_j].barcode+',查询条码信息失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ll_arr = UpperBound(arg_s_inmx_barcode.mtrlid)
-
- FOR ll_k = 1 TO ll_arr
- IF arg_s_inmx_barcode.mtrlid[ll_k] = ll_mtrlid AND &
- arg_s_inmx_barcode.sptid[ll_k] = ll_cusid AND &
- arg_s_inmx_barcode.status[ll_k] = ls_status AND &
- arg_s_inmx_barcode.woodcode[ll_k] = ls_woodcode AND &
- arg_s_inmx_barcode.pcode[ll_k] = ls_pcode AND &
- arg_s_inmx_barcode.plancode[ll_k] = ls_plancode AND &
- arg_s_inmx_barcode.mtrlcuscode[ll_k] = ls_mtrlcuscode AND &
- arg_s_inmx_barcode.Location[ll_k] = ls_location AND &
- arg_s_inmx_barcode.orderid[ll_k] = ll_orderid THEN
- ll_f = ll_k
- EXIT
- END IF
- NEXT
-
- IF ll_f > 0 THEN
- arg_s_inmx_barcode.noallocqty[ll_f] += s_mx_barcode[ll_j].inqty
- ELSE
- ll_arr++
- arg_s_inmx_barcode.mtrlid[ll_arr] = ll_mtrlid
- arg_s_inmx_barcode.sptid[ll_arr] = ll_cusid
- arg_s_inmx_barcode.status[ll_arr] = ls_status
- arg_s_inmx_barcode.woodcode[ll_arr] = ls_woodcode
- arg_s_inmx_barcode.pcode[ll_arr] = ls_pcode
- arg_s_inmx_barcode.plancode[ll_arr] = ls_plancode
- arg_s_inmx_barcode.mtrlcuscode[ll_arr] = ls_mtrlcuscode
- arg_s_inmx_barcode.Location[ll_arr] = ls_location
- arg_s_inmx_barcode.orderid[ll_arr] = ll_orderid
- arg_s_inmx_barcode.noallocqty[ll_arr] = s_mx_barcode[ll_j].inqty
- END IF
- NEXT
- UPDATE u_inwaremx
- SET u_inwaremx.uqty = 0,
- u_inwaremx.qty = 0
- FROM u_inwaremx,u_mtrldef
- WHERE u_inwaremx.scid = :arg_scid
- AND u_inwaremx.inwareid = :arg_inwareid
- AND u_inwaremx.mtrlid = u_mtrldef.mtrlid
- AND u_mtrldef.outtype = 2 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '清除进仓明细进仓数失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 TO it_mxbt
- ld_updateqty = 0
- IF inwaremx[ll_i].outtype <> 2 THEN CONTINUE
-
- FOR ll_k = 1 TO UpperBound(arg_s_inmx_barcode.mtrlid)
- IF arg_s_inmx_barcode.noallocqty[ll_k] = 0 THEN CONTINUE
-
- IF inwaremx[ll_i].mtrlid = arg_s_inmx_barcode.mtrlid[ll_k] AND &
- inwaremx[ll_i].sptid = arg_s_inmx_barcode.sptid[ll_k] AND &
- inwaremx[ll_i].status = arg_s_inmx_barcode.status[ll_k] AND &
- inwaremx[ll_i].woodcode = arg_s_inmx_barcode.woodcode[ll_k] AND &
- inwaremx[ll_i].pcode = arg_s_inmx_barcode.pcode[ll_k] AND &
- inwaremx[ll_i].plancode = arg_s_inmx_barcode.plancode[ll_k] AND &
- inwaremx[ll_i].mtrlcuscode = arg_s_inmx_barcode.mtrlcuscode[ll_k] AND &
- inwaremx[ll_i].Location = arg_s_inmx_barcode.Location[ll_k] AND &
- inwaremx[ll_i].relid = arg_s_inmx_barcode.orderid[ll_k] THEN
-
- IF inwaremx[ll_i].qty >= arg_s_inmx_barcode.noallocqty[ll_k] THEN
- ld_updateqty = arg_s_inmx_barcode.noallocqty[ll_k]
- arg_s_inmx_barcode.noallocqty[ll_k] = 0
- ELSE
- ld_updateqty = inwaremx[ll_i].qty
- arg_s_inmx_barcode.noallocqty[ll_k] = arg_s_inmx_barcode.noallocqty[ll_k] - inwaremx[ll_i].qty
- END IF
- EXIT
- END IF
- NEXT
-
- IF ld_updateqty > 0 THEN
- UPDATE u_inwaremx
- SET u_inwaremx.uqty = :ld_updateqty,
- u_inwaremx.qty = :ld_updateqty
- WHERE u_inwaremx.scid = :arg_scid
- AND u_inwaremx.inwareid = :arg_inwareid
- AND u_inwaremx.printid = :inwaremx[ll_i].printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(ll_i)+',更新明细条码进仓数到明细进仓数失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_secaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,i
- IF p_getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经财审,不能再财审"
- GOTO ext
- END IF
- UPDATE u_inware
- SET secflag = 1,
- secauditingdate = getdate(),
- secauditingrep = :publ_operator
- WHERE inwareid = :arg_billid
- AND scid = :arg_scid
- And secflag = 0 ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在财审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- secflag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_c_secaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,i
- DateTime null_dt
- SetNull(null_dt)
- Int li_StoreBalcType,li_AmtAuditFlag
- IF p_getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF secflag = 0 THEN
- rslt = 0
- arg_msg = "单据不在财审状态,不能执行财撤"
- GOTO ext
- END IF
- //检查仓库是否分开结存
- IF balcdateint <> 0 THEN
- SELECT StoreBalcType
- INTO :li_StoreBalcType
- FROM u_storage
- Where storageid = :storageid;
- IF sqlca.SQLCode <> 0 THEN
- li_StoreBalcType = 0
- END IF
-
- //如果分开结存,检查结存表是否已金额结存
- IF li_StoreBalcType = 1 THEN
- SELECT top 1 AmtAuditFlag
- INTO :li_AmtAuditFlag
- FROM u_warebalc
- WHERE storageid = :storageid
- And balcdateint = :balcdateint;
- IF sqlca.SQLCode <> 0 THEN
- li_AmtAuditFlag = 0
- END IF
-
- IF li_AmtAuditFlag = 1 THEN
- rslt = 0
- arg_msg = '仓库结存日期段已执行过金额结存,不能财撤单据'
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_inware
- SET secflag = 0,
- secauditingdate = :null_dt,
- secauditingrep = ''
- WHERE inwareid = :arg_billid
- AND scid = :arg_scid
- And secflag = 1 ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在财审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- secflag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_uqty, decimal arg_enprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, decimal arg_jgprice, long arg_relid, integer arg_ifrel, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, string arg_unit, decimal arg_rate, decimal arg_qty, long arg_relprintid, decimal arg_checkqty, string arg_result, string arg_waredscrp, long arg_relbillid, long arg_relbillprintid, string arg_mtrlcuscode, string arg_location, decimal arg_deliqty, decimal arg_tax);
- //long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status,
- //decimal arg_uqty, decimal arg_enprice, decimal arg_rebate, string arg_mxdscrp,
- //decimal arg_jgprice, long arg_relid, integer arg_ifrel, string arg_woodcode, string arg_pcode,
- //long arg_cusid_sptid, string arg_unit, decimal arg_rate, decimal arg_qty, long arg_relprintid,
- //decimal arg_checkqty, string arg_result, string arg_waredscrp, long arg_relbillid, long arg_relbillprintid,
- //string arg_mtrlcuscode, string arg_location, decimal arg_deliqty, decimal arg_tax)
- s_inwaremx s_mx
- s_mx.printid = arg_printid
- s_mx.mtrlid = arg_mtrlid
- s_mx.mtrlcode = arg_mtrlcode
- s_mx.plancode = arg_plancode
- s_mx.status = arg_status
- s_mx.uqty = arg_uqty
- s_mx.enprice = arg_enprice
- s_mx.rebate = arg_rebate
- s_mx.mxdscrp = arg_mxdscrp
- s_mx.jgprice = arg_jgprice
- s_mx.relid = arg_relid
- s_mx.ifrel = arg_ifrel
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.sptid = arg_cusid_sptid
- s_mx.unit = arg_unit
- s_mx.rate = arg_rate
- s_mx.qty = arg_qty
- s_mx.relprintid = arg_relprintid
- s_mx.checkqty = arg_checkqty
- s_mx.result = arg_result
- s_mx.waredscrp = arg_waredscrp
- s_mx.relbillid = arg_relbillid
- s_mx.relbillprintid = arg_relbillprintid
- s_mx.mtrlcuscode = arg_mtrlcuscode
- s_mx.location = arg_location
- s_mx.deliqty = arg_deliqty
- s_mx.tax = arg_tax
- return acceptmx(s_mx, arg_msg)
- /*
- Long rslt = 1,cnt = 0,ls_i
- Decimal ld_planprice,ld_cost
- Decimal ld_noauditqty,ld_bootqty
- Decimal ld_consignedqty,ld_uqty
- String ls_relcode,ls_unit
- Decimal lde_mx_qty
- Decimal ld_uprate,ld_upqty
- Int li_ifpack,li_ifpackpro
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Long ll_i
- Decimal lde_newprice
- IF uo_option_buy_zero = -1000 THEN
- rslt = 0
- arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_wfjg_zero = -1000 THEN
- rslt = 0
- arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_status = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_unit_dec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[023]辅助单位转换库存单位小数位,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_ifovertask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[010]超采购,外协订单收货,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_ifovertask_cp = -1000 THEN
- rslt = 0
- arg_msg = '选项:[112]超生产指令单数量进仓,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_uqty) THEN arg_uqty = 0
- IF IsNull(arg_enprice) THEN arg_enprice = 0
- IF IsNull(arg_rebate) THEN arg_rebate = 1
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_jgprice) THEN arg_jgprice = 0
- IF IsNull(arg_relid) THEN arg_relid = 0
- IF IsNull(arg_ifrel) THEN arg_ifrel = 0
- IF IsNull(arg_mxdscrp) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_cusid_sptid) THEN arg_cusid_sptid = 0
- IF IsNull(arg_relprintid) THEN arg_relprintid = 0
- IF IsNull(arg_checkqty) THEN arg_checkqty = 0
- IF IsNull(arg_result) THEN arg_result = ''
- IF IsNull(arg_waredscrp) THEN arg_waredscrp = ''
- IF IsNull(arg_relbillid) THEN arg_relbillid = 0
- IF IsNull(arg_relbillprintid) THEN arg_relbillprintid = 0
- IF IsNull(arg_mtrlcuscode) THEN arg_mtrlcuscode = ''
- IF IsNull(arg_location) THEN arg_location = ''
- IF IsNull(arg_deliqty) THEN arg_deliqty = 0
- IF IsNull(arg_tax) THEN arg_tax = 0
- //IF arg_rebate = 0 THEN arg_rebate = 1
- IF IsNull(arg_unit) THEN arg_unit = ''
- IF IsNull(arg_rate) THEN arg_rate = 1
- IF arg_rate = 0 THEN arg_rate = 1
- IF arg_mtrlid = 0 THEN //OR arg_uqty = 0 OR arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- arg_status = Trim(arg_status)
- arg_woodcode = Trim(arg_woodcode)
- arg_pcode = Trim(arg_pcode)
- arg_plancode = Trim(arg_plancode)
- arg_mtrlcuscode = Trim(arg_mtrlcuscode)
- arg_location = Trim(arg_location)
- IF billtype <> 1 THEN
- mrate = 1
- END IF
- //检查物料id
- Int li_statusflag,li_woodcodeflag,li_pcodeflag
- Int li_status_check,li_woodcode_check,li_pcode_check
- Int li_outtype_mtrl,li_ifunit
- SELECT unit,
- statusflag,
- woodcodeflag,
- pcodeflag,
- status_check,
- woodcode_check,
- pcode_check,
- capacity * capaparm,
- outtype,
- ifpack,
- ifpackpro,
- ifunit
- INTO :ls_unit,
- :li_statusflag,
- :li_woodcodeflag,
- :li_pcodeflag,
- :li_status_check,
- :li_woodcode_check,
- :li_pcode_check,
- :ld_capacity,
- :li_outtype_mtrl,
- :li_ifpack,
- :li_ifpackpro,
- :li_ifunit
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",查询操作失败,物料或产品编号:"+arg_mtrlcode
- GOTO ext
- END IF
- IF billtype <> 23 and billtype <> 25 And billtype <> 1 And ( li_ifpackpro = 1 Or li_ifpackpro = 2 ) THEN
- arg_msg = "第"+String(arg_printid)+"行,个性包件产品或通用包件产品不能直接开进仓单,操作取消"
- rslt = 0
- GOTO ext
- END IF
- IF billtype <> 9 THEN
- IF li_ifunit = 1 THEN
- IF arg_uqty = arg_qty And arg_unit <> ls_unit THEN
- rslt = 0
- arg_msg = "第"+String(arg_printid)+"行,物料使用库存双数量核算,但录入的计量单位数量与库存单位数量相同,操作取消"
- GOTO ext
- END IF
- END IF
- END IF
- IF li_ifpack = 2 And arg_mtrlcuscode = '' THEN
- arg_msg = '行:'+String(arg_printid)+",物料:"+arg_mtrlcode+",为个性包件,但没有产品批号,请检查"
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpackpro = 2 And arg_mtrlcuscode = '' THEN
- arg_msg = '行:'+String(arg_printid)+",物料:"+arg_mtrlcode+",为个性包件产品,但没有产品批号,请检查"
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpackpro = 4 And arg_mtrlcuscode = '' THEN
- arg_msg = '行:'+String(arg_printid)+",物料:"+arg_mtrlcode+",为组合配置整排散进包件产品,但没有产品批号,请检查"
- rslt = 0
- GOTO ext
- END IF
- f_get_planprice_mtrl(arg_mtrlid,arg_status,arg_woodcode,arg_pcode,ld_planprice)
- IF Not ((uo_option_buy_zero = 1 And billtype = 1) Or &
- (uo_option_wfjg_zero = 1 And billtype = 4 ) Or &
- (billtype = 9 And relid > 0 And li_outtype_mtrl = 2)) THEN
-
- IF billtype = 9 THEN
- IF arg_uqty = 0 And arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- ELSE
- IF arg_uqty = 0 Or arg_qty = 0 Or arg_deliqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- END IF
-
- IF arg_uqty = 0 THEN
- arg_rate = 0
- ELSE
- arg_rate = arg_qty / arg_uqty
- END IF
-
- IF billtype <> 9 THEN
- IF arg_checkqty = 0 THEN arg_checkqty = arg_uqty
- END IF
- END IF
- IF arg_rebate < 0 THEN
- arg_msg = '行:'+String(arg_printid)+',折扣错误,请检查'
- rslt = 0
- GOTO ext
- END IF
- //IF arg_checkqty < arg_uqty THEN
- // arg_msg = '第'+String(arg_printid)+'行,送货数不能少于实进仓数'
- // rslt = 0
- // GOTO ext
- //END IF
- IF li_statusflag = 2 THEN
- IF arg_status = '' THEN
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_status + '字段使用组合配置,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_statusflag = 4 And li_status_check = 1 THEN
- IF arg_status = '' THEN
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_statusflag = 1 Or li_statusflag = 0 THEN
- IF f_check_status(1,arg_status) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
- GOTO ext
- END IF
- END IF
- IF li_woodcodeflag = 4 And li_woodcode_check = 1 THEN
- IF arg_woodcode = '' THEN
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_woodcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_woodcodeflag = 1 Or li_woodcodeflag = 0 THEN
- IF f_check_status(2,arg_woodcode) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
- GOTO ext
- END IF
- END IF
- IF li_pcodeflag = 4 And li_pcode_check = 1 THEN
- IF arg_pcode = '' THEN
- arg_msg = '行:'+String(arg_printid)+',物料'+uo_option_change_pcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_pcodeflag = 1 Or li_pcodeflag = 0 THEN
- IF f_check_status(3,arg_pcode) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
- GOTO ext
- END IF
- END IF
- IF li_statusflag = 2 THEN
- ld_capacity = 0
- f_checkpz(arg_status,s_pz[])
- FOR ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- SELECT capacity * capaparm
- INTO :ld_capacity_zj
- FROM u_mtrl_configure
- WHERE mtrlid = :arg_mtrlid
- And Name = :ls_status_zj Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "第"+String(arg_printid)+"行,查询子件 "+ls_status_zj+" 折算套数参数操作失败"
- GOTO ext
- END IF
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
-
- NEXT
- END IF
- Int li_iflimitprice
- SELECT iflimitprice
- INTO :li_iflimitprice
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询物料:'+arg_mtrlcode+'限价属性失败 '+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF billtype <> 9 THEN
- IF Trim(ls_unit) <> Trim(arg_unit) And arg_rate = 1 THEN
- arg_msg = '进仓单,行:'+String(arg_printid)+',物料库存单位:'+Trim(ls_unit)+'与采购单位:'+Trim(arg_unit)+'不同,但转换率为1,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- IF Trim(ls_unit) = Trim(arg_unit) And arg_rate <> 1 THEN
- arg_msg = '进仓单,行:'+String(arg_printid)+',物料库存单位:'+Trim(ls_unit)+'与采购单位:'+Trim(arg_unit)+'相同,但转换率不为1,请检查'
- rslt = 0
- GOTO ext
- END IF
- END IF
- //查询采购限价并检查进仓价
- IF billtype = 1 THEN
- IF uo_sptprice.uof_check_limitprice(thflag,arg_mtrlid,arg_status,arg_woodcode,arg_pcode,arg_unit,arg_enprice * arg_rebate,arg_msg) = 0 THEN
- arg_msg = '行:'+String(arg_printid)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF li_iflimitprice = 1 THEN
- IF uo_sptprice.uof_check_price(thflag,sptid,arg_mtrlid,arg_mtrlcode,arg_unit,arg_status,arg_woodcode,arg_pcode,'',moneyid,arg_enprice * arg_rebate,indate,arg_msg) = 0 THEN
- arg_msg = '行:'+String(arg_printid)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //增加新字段 newprice 最新报价
- IF billtype = 1 THEN
- DateTime ldt_effdate
- Decimal ls_1stnewcost,ls_1stzqrate,ls_1strate
- String ls_msg
- String ls_1stunit
- ls_1stunit = arg_unit
- ldt_effdate = DateTime(Today(),Time(0))
-
- IF uo_sptprice.uof_getmtrlsptprice(moneyid,sptid,arg_mtrlid,ls_1stunit,arg_status,arg_woodcode,arg_pcode,'',ls_1stnewcost,ls_1stzqrate,ls_1strate,ldt_effdate,ls_msg) <> 1 THEN
- lde_newprice = 0
- ELSE
- lde_newprice = ls_1stnewcost
- END IF
- ELSE
- lde_newprice = 0
- END IF
- CHOOSE CASE billtype
- CASE 1,26
- IF arg_ifrel > 0 THEN
- IF arg_relid = 0 THEN
- arg_msg = '行:'+String(arg_printid)+',请先择相应的订单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT taskcode,sum(uqty - consignedqty - stopqty),sum(uqty),sum(consignedqty)
- INTO :ls_relcode,:ld_bootqty,:ld_uqty,:ld_consignedqty
- FROM u_buytaskmx,u_buytask
- WHERE u_buytaskmx.taskid = :arg_relid
- AND u_buytaskmx.scid = :scid
- AND u_buytaskmx.printid = :arg_relprintid
- AND u_buytaskmx.taskid = u_buytask.taskid
- AND u_buytaskmx.scid = u_buytask.scid
- GROUP BY taskcode
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询采购订单是否有订购物料:'+arg_mtrlcode+'失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 1 THEN
- lde_mx_qty = 0
- FOR ls_i = 1 To it_mxbt
- IF arg_mtrlid = inwaremx[ls_i].mtrlid And &
- arg_relid = inwaremx[ls_i].relid And &
- arg_relprintid = inwaremx[ls_i].relprintid THEN
- lde_mx_qty = lde_mx_qty + inwaremx[ls_i].uqty
- END IF
- NEXT
- lde_mx_qty = lde_mx_qty + arg_uqty
-
- //查已开单数
- ld_noauditqty = 0
- SELECT sum(uqty) INTO :ld_noauditqty
- FROM u_inwaremx,u_inware
- WHERE u_inwaremx.relid = :arg_relid
- AND u_inwaremx.sptid_cusid = :arg_cusid_sptid
- AND u_inwaremx.mtrlid = :arg_mtrlid
- AND u_inwaremx.status = :arg_status
- AND u_inwaremx.woodcode = :arg_woodcode
- AND u_inwaremx.pcode = :arg_pcode
- AND u_inwaremx.unit = :arg_unit
- AND u_inwaremx.relprintid = :arg_relprintid
- AND u_inware.inwareid <> :inwareid
- AND u_inware.flag = 0
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inware.scid = u_inwaremx.scid
- AND u_inwaremx.scid = :scid
- And u_inware.billtype = 1 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询物料:'+arg_mtrlcode+'相关订单单据已开单数失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_noauditqty) THEN ld_noauditqty = 0
-
- IF uo_option_ifovertask = 1 THEN
- IF lde_mx_qty + ld_noauditqty > ld_bootqty THEN
- arg_msg = '行:'+String(arg_printid)+',物料:'+arg_mtrlcode+'未完成数:'+String(ld_bootqty,'#,##0.0###')+'已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+',不能收货:'+String(lde_mx_qty,'#,##0.0###')
- rslt = 0
- GOTO ext
- END IF
- ELSEIF uo_option_ifovertask = 3 THEN
- SELECT uprate , upqty
- INTO :ld_uprate,:ld_upqty
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询物料:'+Trim(arg_mtrlcode)+'超收货比例失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_uqty * (1 + ld_uprate) + ld_upqty < ld_consignedqty + lde_mx_qty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",物料:"+arg_mtrlcode+"未完成数量只有"+String(ld_uqty - ld_consignedqty,'#,##0.0###')+"已开单未审核数:"+String(ld_noauditqty,'#,##0.0###')+",允许超收上限:"+String(ld_uqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty - ld_noauditqty,'#,##0.00##')+",不能入库"+String(lde_mx_qty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- CASE 3
- IF arg_ifrel > 0 THEN
- IF arg_relid = 0 THEN
- arg_msg = '行:'+String(arg_printid)+',请先择相应的计划'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT ordercode INTO :ls_relcode
- FROM u_order_ml
- WHERE u_order_ml.orderid = :arg_relid
- AND u_order_ml.mtrlid = :arg_mtrlid
- AND u_order_ml.scid = :scid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询生产计划是否有生产产品:'+arg_mtrlcode+'失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //查已开单数
- ld_noauditqty = 0
- SELECT sum(qty) INTO :ld_noauditqty
- FROM u_inwaremx,u_inware
- WHERE u_inwaremx.relid = :arg_relid
- AND u_inware.inwareid <> :inwareid
- AND u_inware.flag = 0
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inware.scid = u_inwaremx.scid
- AND u_inwaremx.scid = :scid
- And u_inware.billtype = 3 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询物料:'+arg_mtrlcode+'相关订单单据已开单数失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_noauditqty) THEN ld_noauditqty = 0
-
- lde_mx_qty = 0
- FOR ls_i = 1 To it_mxbt
- IF arg_mtrlid = inwaremx[ls_i].mtrlid And &
- arg_relid = inwaremx[ls_i].relid And &
- arg_relprintid = inwaremx[ls_i].relprintid THEN
- lde_mx_qty = lde_mx_qty + inwaremx[ls_i].qty
- END IF
- NEXT
- lde_mx_qty = lde_mx_qty + arg_uqty
-
- SELECT orderqty,acmpqty
- INTO :ld_uqty,:ld_consignedqty
- FROM u_order_ml
- WHERE u_order_ml.orderid = :arg_relid
- AND u_order_ml.scid = :scid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询生产计划是否有物料:'+arg_mtrlcode+'失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_option_ifovertask_cp = 1 THEN //不允许超收
- IF ld_uqty < lde_mx_qty + ld_consignedqty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+',该计划明细产品['+arg_mtrlcode+']未完成数量'+String(ld_uqty - ld_consignedqty,'#,##0.00##' )+',已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+'小于本次完成数量'
- GOTO ext
- END IF
- ELSEIF uo_option_ifovertask_cp = 3 THEN //允许超收但按比例限制
- SELECT uprate , upqty
- INTO :ld_uprate,:ld_upqty
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询物料:'+Trim(arg_mtrlcode)+'超收货比例失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_uqty * (1 + ld_uprate) + ld_upqty < ld_consignedqty + lde_mx_qty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",物料:"+arg_mtrlcode+"未完成数量只有"+String(ld_uqty - ld_consignedqty,'#,##0.0###')+'已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+",允许超收上限:"+String(ld_uqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty - ld_noauditqty,'#,##0.00##')+",不能入库"+String(lde_mx_qty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- END IF
-
- Int li_if_cus_mtrlware
- SELECT balctype INTO :li_if_cus_mtrlware
- FROM u_storage
- Where storageid = :storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询仓库是否使用客户库存失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF billtype = 3 And li_if_cus_mtrlware = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_cust
- Where cusid = :arg_cusid_sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询客户资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- CASE 4
- IF arg_ifrel > 0 THEN
- IF arg_relid = 0 THEN
- arg_msg = '行:'+String(arg_printid)+',请先择相应的加工计划'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_order_wfjg.taskcode ,sum(u_order_wfjgmx.qty - u_order_wfjgmx.consignedqty)INTO :ls_relcode,:ld_bootqty
- FROM u_order_wfjgmx,u_order_wfjg
- WHERE u_order_wfjgmx.wfjgid = :arg_relid
- AND u_order_wfjgmx.scid = :scid
- AND u_order_wfjgmx.printid = :arg_relprintid
- AND u_order_wfjgmx.wfjgid = u_order_wfjg.wfjgid
- AND u_order_wfjgmx.scid = u_order_wfjg.scid
- GROUP BY u_order_wfjg.taskcode
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询外协计划是否有加工产品:'+arg_mtrlcode+'失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- CASE 5
- IF arg_ifrel > 0 THEN
- IF arg_relid = 0 THEN
- arg_msg = '行:'+String(arg_printid)+',请先择相应的来料加工订单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_saletask_ll.taskcode ,sum(qty - consignedqty),sum(qty),sum(consignedqty)
- INTO :ls_relcode,:ld_bootqty,:ld_uqty,:ld_consignedqty
- FROM u_saletaskmx_in,u_saletask_ll
- WHERE u_saletaskmx_in.taskid = :arg_relid
- AND u_saletask_ll.scid = :scid
- AND u_saletaskmx_in.printid = :arg_relprintid
- AND u_saletaskmx_in.taskid = u_saletask_ll.taskid
- GROUP BY u_saletask_ll.taskcode
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询来料订单是否有收料物料:'+arg_mtrlcode+'失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- lde_mx_qty = 0
- FOR ls_i = 1 To it_mxbt
- IF arg_mtrlid = inwaremx[ls_i].mtrlid And &
- arg_relid = inwaremx[ls_i].relid And &
- arg_relprintid = inwaremx[ls_i].relprintid THEN
- lde_mx_qty = lde_mx_qty + inwaremx[ls_i].qty
- END IF
- NEXT
- lde_mx_qty = lde_mx_qty + arg_uqty
-
- //查已开单数
- ld_noauditqty = 0
- SELECT sum(qty) INTO :ld_noauditqty
- FROM u_inwaremx,u_inware
- WHERE u_inwaremx.relid = :arg_relid
- AND u_inwaremx.sptid_cusid = :arg_cusid_sptid
- AND u_inwaremx.mtrlid = :arg_mtrlid
- AND u_inwaremx.status = :arg_status
- AND u_inwaremx.woodcode = :arg_woodcode
- AND u_inwaremx.pcode = :arg_pcode
- AND u_inwaremx.unit = :arg_unit
- AND u_inwaremx.relprintid = :arg_relprintid
- AND u_inware.inwareid <> :inwareid
- AND u_inware.flag = 0
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inware.scid = u_inwaremx.scid
- AND u_inwaremx.scid = :scid
- And u_inware.billtype = 5 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+arg_mtrlcode+'相关订单单据已开单数失败'
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_noauditqty) THEN ld_noauditqty = 0
-
- IF ld_uqty < lde_mx_qty + ld_consignedqty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+',该计划明细产品['+arg_mtrlcode+']未完成数量'+String(ld_uqty - ld_consignedqty,'#,##0.00##' )+',已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+'小于本次完成数量'
- GOTO ext
- END IF
-
- END IF
-
- END CHOOSE
- IF arg_enprice * arg_rebate < 0 THEN //检查进仓价
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+",物料或产品:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- //查询质检单号
- String ls_relbillcode
- ls_relbillcode = ''
- IF arg_relbillid > 0 THEN
- SELECT billcode
- INTO :ls_relbillcode
- FROM u_sptcheck
- Where billid = :arg_relbillid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(arg_printid)+',查询质检单号失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- //写入内容
- it_mxbt++
- inwaremx[it_mxbt].noauditqty = ld_noauditqty
- inwaremx[it_mxbt].printid = arg_printid
- inwaremx[it_mxbt].mtrlid = arg_mtrlid
- inwaremx[it_mxbt].mtrlcode = arg_mtrlcode
- inwaremx[it_mxbt].unit = arg_unit
- inwaremx[it_mxbt].rate = arg_rate
- inwaremx[it_mxbt].plancode = arg_plancode
- inwaremx[it_mxbt].bootqty = ld_bootqty
- inwaremx[it_mxbt].status = arg_status
- inwaremx[it_mxbt].enprice = arg_enprice
- inwaremx[it_mxbt].uprice = arg_enprice * mrate
- inwaremx[it_mxbt].rebate = arg_rebate
- inwaremx[it_mxbt].uqty = arg_uqty
- inwaremx[it_mxbt].qty = arg_qty //Round(arg_uqty * arg_rate,uo_option_unit_dec)
- inwaremx[it_mxbt].deliqty = arg_deliqty
- inwaremx[it_mxbt].tax = arg_tax
- inwaremx[it_mxbt].deliprice_notax = arg_enprice / (1 + arg_tax)
- IF arg_uqty <> 0 THEN
- inwaremx[it_mxbt].enprice_tax = arg_deliqty * arg_enprice / arg_uqty
- inwaremx[it_mxbt].enprice_notax = (arg_deliqty * arg_enprice / arg_uqty) / (1 + arg_tax)
- ELSE
- inwaremx[it_mxbt].enprice_tax = arg_enprice
- inwaremx[it_mxbt].enprice_notax = arg_enprice / (1 + arg_tax)
- END IF
- inwaremx[it_mxbt].enprice_tax = Abs(inwaremx[it_mxbt].enprice_tax)
- inwaremx[it_mxbt].enprice_notax = Abs(inwaremx[it_mxbt].enprice_notax)
- IF Round(arg_uqty * arg_rate,uo_option_unit_dec) <> 0 THEN
- inwaremx[it_mxbt].fprice = Round((inwaremx[it_mxbt].enprice_tax * mrate * arg_uqty)/(Round(arg_uqty * arg_rate,uo_option_unit_dec)),10)
- ELSE
- inwaremx[it_mxbt].fprice = 0
- END IF
- inwaremx[it_mxbt].fprice = Abs(inwaremx[it_mxbt].fprice)
- inwaremx[it_mxbt].price = inwaremx[it_mxbt].fprice * arg_rebate
- inwaremx[it_mxbt].planprice = ld_planprice
- inwaremx[it_mxbt].mxdscrp = arg_mxdscrp
- inwaremx[it_mxbt].dxflag = dxflag
- inwaremx[it_mxbt].jgprice = arg_jgprice
- inwaremx[it_mxbt].relid = arg_relid
- inwaremx[it_mxbt].ifrel = arg_ifrel
- inwaremx[it_mxbt].woodcode = arg_woodcode
- inwaremx[it_mxbt].pcode = arg_pcode
- inwaremx[it_mxbt].relcode = ls_relcode
- inwaremx[it_mxbt].relprintid = arg_relprintid
- inwaremx[it_mxbt].checkqty = arg_checkqty
- inwaremx[it_mxbt].result = arg_result
- inwaremx[it_mxbt].waredscrp = arg_waredscrp
- inwaremx[it_mxbt].relbillid = arg_relbillid
- inwaremx[it_mxbt].relbillprintid = arg_relbillprintid
- inwaremx[it_mxbt].relbillcode = ls_relbillcode
- inwaremx[it_mxbt].mtrlcuscode = arg_mtrlcuscode
- inwaremx[it_mxbt].Location = arg_location
- inwaremx[it_mxbt].capacity = ld_capacity * arg_qty
- IF dxflag = 0 THEN
- inwaremx[it_mxbt].sptid = arg_cusid_sptid
- ELSE
- inwaremx[it_mxbt].sptid = sptid
- END IF
- IF billtype = 1 THEN
- String ls_sptmtrlname
- uo_spt_price uo_price
- uo_price = Create uo_spt_price
- IF uo_price.uof_getmtrlname(sptid,arg_mtrlid,ls_sptmtrlname,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- Destroy uo_price
- inwaremx[it_mxbt].sptmtrlname = ls_sptmtrlname
- END IF
- IF thflag = 1 THEN
- Long ll_sptid,ll_billtype,ll_balctype
- Int li_thtype
- //查询相关订单属于材料订单还是成品订单
- // IF billtype = 1 AND arg_relid > 0 THEN
- // SELECT billtype INTO :ll_billtype
- // FROM u_buytask
- // WHERE taskid = :arg_relid
- // AND scid = :scid;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询订单类型失败'+'~n'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- // ELSE
- // ll_billtype = 0
- // END IF
- //
- // IF billtype = 5 THEN
- // ll_sptid = arg_cusid_sptid
- // ELSEIF billtype = 1 AND ll_billtype = 1 THEN
- // SELECT balctype INTO :ll_balctype
- // FROM u_storage
- // Where storageid = :storageid;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询仓库是否使用客户库存失败'+'~n'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF ll_balctype = 1 THEN
- ll_sptid = arg_cusid_sptid
- // ELSE
- // ll_sptid = 0
- // END IF
- // ELSE
- // ll_sptid = 0
- // END IF
-
- SELECT thtype INTO :li_thtype
- FROM u_storage
- Where storageid = :storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询仓库退货取价模式失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_thtype = 0 THEN
- SELECT cost
- INTO :ld_cost
- FROM u_mtrlware
- WHERE scid = :scid
- AND mtrlid = :arg_mtrlid
- AND storageid = :storageid
- AND status = :arg_status
- AND plancode = :arg_plancode
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND dxflag = :dxflag
- AND sptid = :ll_sptid
- AND mtrlcuscode = :arg_mtrlcuscode
- And Location = :arg_location Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 Or IsNull(ld_cost) THEN ld_cost = 0
-
- inwaremx[it_mxbt].cost = ld_cost
- ELSE
- inwaremx[it_mxbt].cost = inwaremx[it_mxbt].fprice * arg_rebate
- END IF
- ELSE
- inwaremx[it_mxbt].cost = inwaremx[it_mxbt].fprice * arg_rebate
- END IF
- inwaremx[it_mxbt].newprice = lde_newprice
- ext:
- Destroy uo_sptprice
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- */
- end function
- public function integer uof_update_planprice (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_fprice, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- String ls_status,ls_woodcode,ls_pcode
- Int li_pricepztype
- String ls_mtrlcode
- IF arg_fprice <= 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT pricepztype,mtrlcode
- INTO :li_pricepztype,:ls_mtrlcode
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料计划成本价配置模式失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- CHOOSE CASE li_pricepztype
- CASE 0
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = ''
- CASE 1
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = ''
- CASE 2
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 3
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = arg_pcode
- CASE 4
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 5
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- CASE 6
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = arg_pcode
- CASE 7
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- END CHOOSE
- UPDATE u_mtrldef_planprice
- SET planprice = :arg_fprice
- WHERE mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- And pcode = :arg_pcode Using commit_transaction;
- IF commit_transaction.SQLCode = 0 THEN
- IF commit_transaction.SQLNRows = 0 THEN
- INSERT INTO u_mtrldef_planprice
- (mtrlid,
- status,
- woodcode,
- pcode,
- planprice)
- VALUES
- (:arg_mtrlid,
- :arg_status,
- :arg_woodcode,
- :arg_pcode,
- :arg_fprice) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入物料'+ls_mtrlcode+'计划成本价资料失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
-
- INSERT INTO u_mtrl_planprice_his
- (mtrlid,
- cmpldate,
- planprice,
- buildtype,
- status,
- woodcode,
- pcode)
- VALUES
- (:arg_mtrlid,
- getdate(),
- :arg_fprice,
- 2,
- :arg_status,
- :arg_woodcode,
- :arg_pcode) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '建立'+ls_mtrlcode+'产品计划成本价历史记录失败 '+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新物料'+ls_mtrlcode+'计划成本价资料失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_ref_assign_plan_plankind (long arg_scid, long arg_mtrlwareid, long arg_plankind, long arg_plankind_relbillid, long arg_plankind_reprintlid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_qty, ref s_inwaremx_assign_plan arg_s_ap, ref string arg_msg);Int rslt = 1
- Long i,j
- datastore ds_ap
- ds_ap = CREATE datastore
- ds_ap.DataObject = 'ds_inwaremx_assign_plan_plankind'
- ds_ap.SetTransObject(commit_transaction)
- ds_ap.Retrieve(arg_scid,arg_plankind,arg_plankind_relbillid,arg_plankind_reprintlid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode)
- FOR i = 1 TO ds_ap.RowCount()
- j++
- arg_s_ap.planid[j] = ds_ap.Object.planid[i]
- arg_s_ap.assigntype[j] = ds_ap.Object.assigntype[i]
- arg_s_ap.scid[j] = ds_ap.Object.scid[i]
- arg_s_ap.mtrlwareid[j] = arg_mtrlwareid
- arg_s_ap.relbillid[j] = ds_ap.Object.relbillid[i]
- arg_s_ap.relprintid[j] = ds_ap.Object.relprintid[i]
- arg_s_ap.fpgrade[j] = ds_ap.Object.fpgrade[i]
-
- IF ds_ap.Object.planassignqty[i] - ds_ap.Object.assignqty[i] >= arg_qty THEN
- arg_s_ap.notassignqty[j] = arg_qty
- GOTO ext
- ELSE
- arg_s_ap.notassignqty[j] = ds_ap.Object.planassignqty[i] - ds_ap.Object.assignqty[i]
- arg_qty = arg_qty - (ds_ap.Object.planassignqty[i] - ds_ap.Object.assignqty[i])
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uof_del_barcode (long arg_scid, long arg_inwareid, string arg_barcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_packqty_barcode,ld_qty_barcode,ld_qty,ld_inwaremxqty
- Long ll_cusid,ll_mtrlid,i,ll_printid,ll_orderid
- String ls_status,ls_woodcode,ls_pcode
- String ls_plancode,ls_mtrlcuscode,ls_location
- IF getinfo(arg_scid,arg_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经仓审,不能操作"
- GOTO ext
- END IF
- IF billtype = 3 And uo_option_barcode_inwarecp_paudit = 1 THEN
- arg_msg = '系统选项设置了生产进仓单使用先确认后审核条码流程,操作取消,如需操作请用pda调取相关单据把条码删除'
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 8 And uo_option_barcode_inwareother_paudit = 1 THEN
- arg_msg = '系统选项设置了其它进仓单使用先确认后审核条码流程,操作取消,如需操作请用pda调取相关单据把条码删除'
- rslt = 0
- GOTO ext
- END IF
- SELECT U_inwaremx_mx_barcode.qty,
- u_mtrlware_mx.packqty,
- u_mtrlware_mx.mtrlid,
- u_mtrlware_mx.status,
- u_mtrlware_mx.woodcode,
- u_mtrlware_mx.pcode,
- u_mtrlware_mx.plancode,
- u_mtrlware_mx.mtrlcuscode,
- u_mtrlware_mx.location,
- u_mtrlware_mx.sptid,
- u_mtrlware_mx.orderid
- INTO :ld_qty_barcode,
- :ld_packqty_barcode,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_plancode,
- :ls_mtrlcuscode,
- :ls_location,
- :ll_cusid,
- :ll_orderid
- FROM U_inwaremx_mx_barcode,u_mtrlware_mx
- WHERE U_inwaremx_mx_barcode.barcode = u_mtrlware_mx.barcode
- AND U_inwaremx_mx_barcode.scid = :arg_scid
- AND U_inwaremx_mx_barcode.inwareid = :arg_inwareid
- AND U_inwaremx_mx_barcode.barcode = :arg_barcode
- AND U_inwaremx_mx_barcode.billtype = :billtype
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询条码信息失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ld_qty = ld_qty_barcode * ld_packqty_barcode
- FOR i = 1 To it_mxbt
- IF inwaremx[i].mtrlid = ll_mtrlid And &
- inwaremx[i].status = ls_status And &
- inwaremx[i].woodcode = ls_woodcode And &
- inwaremx[i].pcode = ls_pcode And &
- inwaremx[i].plancode = ls_plancode And &
- inwaremx[i].mtrlcuscode = ls_mtrlcuscode And &
- ( inwaremx[i].Location = ls_location and uo_option_barcodelocation_use_inwaremx_location = 0 or &
- uo_option_barcodelocation_use_inwaremx_location = 1 ) And &
- inwaremx[i].sptid = ll_cusid And &
- inwaremx[i].relid = ll_orderid THEN
- ll_printid = inwaremx[i].printid
- ld_inwaremxqty = inwaremx[i].qty
- END IF
- NEXT
- IF ll_printid = 0 THEN
- arg_msg = '条码找不到对应进仓明细行,请检查条码资料'
- rslt = 0
- GOTO ext
- END IF
- IF ld_qty > ld_inwaremxqty THEN
- arg_msg = '删除条码要扣减数量大于对应进仓明细数量,请检查'
- rslt = 0
- GOTO ext
- ELSEIF ld_qty = ld_inwaremxqty THEN
- DELETE FROM u_inwaremx
- Where scid = :arg_scid And inwareid = :arg_inwareid And printid = :ll_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '删除进仓明细失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSEIF ld_qty < ld_inwaremxqty THEN
- UPDATE u_inwaremx SET uqty = uqty - :ld_qty,qty = qty - :ld_qty
- Where scid = :arg_scid And inwareid = :arg_inwareid And printid = :ll_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新进仓明细数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- DELETE FROM U_inwaremx_mx_barcode
- WHERE U_inwaremx_mx_barcode.scid = :arg_scid
- AND U_inwaremx_mx_barcode.inwareid = :arg_inwareid
- AND U_inwaremx_mx_barcode.barcode = :arg_barcode
- AND U_inwaremx_mx_barcode.billtype = :billtype
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '删除条码失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx_item (long arg_printid, long arg_itemid, decimal arg_amt, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
- Long cnt
- cnt = 0
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_itemid) THEN arg_itemid = 0
- IF IsNull(arg_amt) THEN arg_amt = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF arg_itemid = 0 Or arg_amt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_itemdef
- Where itemid = :arg_itemid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询收支项目是否存在失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '第'+String(arg_printid)+'行,收支项目不存在,请检查'
- GOTO ext
- END IF
- it_mxbt_item++
- inware_itemmx[it_mxbt_item].printid = arg_printid
- inware_itemmx[it_mxbt_item].itemid = arg_itemid
- inware_itemmx[it_mxbt_item].amt = arg_amt
- inware_itemmx[it_mxbt_item].mxdscrp = arg_mxdscrp
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN rslt
- end function
- public function integer uof_check_warepdb_audit (long arg_storageid, ref string arg_msg);Int rslt = 1
- Long cnt
- SELECT count(*)
- INTO :cnt
- FROM u_warepdb
- WHERE storageid = :arg_storageid
- And flag = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询仓库是否有盘点表未审核失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '仓库有盘点表未审核,不能仓审或仓撤单据,请检查'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer p_update_mtrlwareid_inwaremx (long arg_mtrlwareid, long arg_inwareid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- UPDATE u_inwaremx
- SET u_inwaremx.mtrlwareid = :arg_mtrlwareid
- WHERE u_inwaremx.scid = :scid
- AND u_inwaremx.inwareid = :arg_inwareid
- AND u_inwaremx.printid = :arg_printid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新进仓明细库存id失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_disuse (long arg_scid, long arg_inwareid, integer arg_disusetype, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_disuseid
- //arg_disusetype 0 - 修改, 1-删除
- Select max(disuseid) Into :ll_disuseid
- From u_inware_disuse
- Where scid = :arg_scid
- And inwareid = :arg_inwareid Using commit_transaction;
- If commit_transaction.SQLCode = -1 Then
- rslt = 0
- arg_msg = '获取采购收货单废弃单序号失败,'+ commit_transaction.SQLErrText
- Goto ext
- ElseIf commit_transaction.SQLCode = 100 Then
- ll_disuseid = 0
- End If
- if isnull(ll_disuseid) then ll_disuseid = 0
- ll_disuseid++
- Insert Into u_inware_disuse
- (scid, inwareid, inwarecode, billtype, relid, storageid, opdate, opemp, Modemp,
- moddate, flag, auditingdate, auditingrep, indate, inrep, part, dscrp, sptid, sptname,
- balcflag, balcdate, balcdateint, Dxflag, thflag, printnum, ctmint, otheramt, relint_1,
- relint_2, relint_3, relstr_1, relstr_2, relstr_3, secflag, secauditingdate, secauditingrep,
- plandate, priceflag, pricedate, pricerep, checkdate, moneyid, mrate, deptid,
- moneyname, banktypename, storagename, disuseemp, disusedate, disusetype,
- disuseid)
- Select u_inware.scid, u_inware.inwareid, u_inware.inwarecode, u_inware.billtype,
- u_inware.relid, u_inware.storageid, u_inware.opdate, u_inware.opemp,
- u_inware.Modemp, u_inware.moddate, u_inware.flag, u_inware.auditingdate,
- u_inware.auditingrep, u_inware.indate, u_inware.inrep, u_inware.part, u_inware.dscrp,
- u_inware.sptid, u_inware.sptname, u_inware.balcflag, u_inware.balcdate,
- u_inware.balcdateint, u_inware.Dxflag, u_inware.thflag, u_inware.printnum,
- u_inware.ctmint, u_inware.otheramt, u_inware.relint_1, u_inware.relint_2,
- u_inware.relint_3, u_inware.relstr_1, u_inware.relstr_2, u_inware.relstr_3,
- u_inware.secflag, u_inware.secauditingdate, u_inware.secauditingrep,
- u_inware.plandate, u_inware.priceflag, u_inware.pricedate, u_inware.pricerep,
- u_inware.checkdate, u_inware.moneyid, u_inware.mrate, u_inware.deptid,
- cw_currency.name, cw_banktype.banktypename, u_storage.storagename,
- :publ_operator,getdate(),:arg_disusetype,:ll_disuseid
- From u_inware LEFT Outer JOIN
- u_storage ON u_inware.storageid = u_storage.storageid LEFT Outer JOIN
- cw_banktype ON u_inware.relint_1 = cw_banktype.banktypeid LEFT Outer JOIN
- cw_currency ON u_inware.moneyid = cw_currency.moneyid
- Where u_inware.scid = :arg_scid
- And u_inware.inwareid = :arg_inwareid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入采购收货单废弃单失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- Insert Into u_inwaremx_disuse
- (scid, inwareid, printid, ifrel, relid, mtrlid, plancode, status, qty, fprice, rebate, price,
- planprice, jgprice, mxdscrp, woodcode, relcode, pcode, sptid_cusid, ctmint, cost,
- sptmtrlname, uqty, uprice, unit, rate, bootqty, noauditqty, relprintid, checkqty, result,
- waredscrp, relbillid, relbillprintid, relbillcode, mtrlcuscode, location, badqty, thqty,
- ptqty, enprice, capacity, enprice_tax, enprice_notax, tax, deliqty, deliprice_notax,
- mtrlwareid, mtrlwareprintid, newprice, mtrlcode, mtrlname,disuseid)
- Select u_inwaremx.scid, u_inwaremx.inwareid, u_inwaremx.printid, u_inwaremx.ifrel,
- u_inwaremx.relid, u_inwaremx.mtrlid, u_inwaremx.plancode, u_inwaremx.status,
- u_inwaremx.qty, u_inwaremx.fprice, u_inwaremx.rebate, u_inwaremx.price,
- u_inwaremx.planprice, u_inwaremx.jgprice, u_inwaremx.mxdscrp,
- u_inwaremx.woodcode, u_inwaremx.relcode, u_inwaremx.pcode,
- u_inwaremx.sptid_cusid, u_inwaremx.ctmint, u_inwaremx.cost,
- u_inwaremx.sptmtrlname, u_inwaremx.uqty, u_inwaremx.uprice, u_inwaremx.unit,
- u_inwaremx.rate, u_inwaremx.bootqty, u_inwaremx.noauditqty,
- u_inwaremx.relprintid, u_inwaremx.checkqty, u_inwaremx.result,
- u_inwaremx.waredscrp, u_inwaremx.relbillid, u_inwaremx.relbillprintid,
- u_inwaremx.relbillcode, u_inwaremx.mtrlcuscode, u_inwaremx.location,
- u_inwaremx.badqty, u_inwaremx.thqty, u_inwaremx.ptqty, u_inwaremx.enprice,
- u_inwaremx.capacity, u_inwaremx.enprice_tax, u_inwaremx.enprice_notax,
- u_inwaremx.tax, u_inwaremx.deliqty, u_inwaremx.deliprice_notax,
- u_inwaremx.mtrlwareid, u_inwaremx.mtrlwareprintid, u_inwaremx.newprice,
- u_mtrldef.mtrlcode, u_mtrldef.mtrlname,:ll_disuseid
- From u_inwaremx LEFT Outer JOIN
- u_mtrldef ON u_inwaremx.mtrlid = u_mtrldef.mtrlid
- Where u_inwaremx.scid = :arg_scid
- And u_inwaremx.inwareid = :arg_inwareid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入采购收货单废弃单明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- Insert Into u_inwaremx_mx_disuse
- (scid, inwareid, mxprintid, mtrlid, plancode, status, qty, fprice, rebate, price, mxdscrp,
- printid, woodcode, pcode, sptid_cusid, ctmint, cost, waredscrp, mtrlcuscode, location,
- ptinwareid, ptprintid, ptinwarecode, mtrlcode, mtrlname, disuseid)
- Select u_inwaremx_mx.scid, u_inwaremx_mx.inwareid, u_inwaremx_mx.mxprintid,
- u_inwaremx_mx.mtrlid, u_inwaremx_mx.plancode, u_inwaremx_mx.status,
- u_inwaremx_mx.qty, u_inwaremx_mx.fprice, u_inwaremx_mx.rebate,
- u_inwaremx_mx.price, u_inwaremx_mx.mxdscrp, u_inwaremx_mx.printid,
- u_inwaremx_mx.woodcode, u_inwaremx_mx.pcode, u_inwaremx_mx.sptid_cusid,
- u_inwaremx_mx.ctmint, u_inwaremx_mx.cost, u_inwaremx_mx.waredscrp,
- u_inwaremx_mx.mtrlcuscode, u_inwaremx_mx.location, u_inwaremx_mx.ptinwareid,
- u_inwaremx_mx.ptprintid, u_inwaremx_mx.ptinwarecode, u_mtrldef.mtrlcode,
- u_mtrldef.mtrlname, :ll_disuseid
- From u_inwaremx_mx LEFT Outer JOIN
- u_mtrldef ON u_inwaremx_mx.mtrlid = u_mtrldef.mtrlid
- Where u_inwaremx_mx.scid = :arg_scid
- And u_inwaremx_mx.inwareid = :arg_inwareid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入采购收货单废弃单包件明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- Insert Into U_inwaremx_mx_barcode_disuse
- (billtype, scid, inwareid, barcode, printid, qty, ctmint, opemp, opdate, disuseid)
- Select billtype, scid, inwareid, barcode, printid, qty, ctmint, opemp, opdate, :ll_disuseid
- From U_inwaremx_mx_barcode
- Where U_inwaremx_mx_barcode.scid = :arg_scid
- And U_inwaremx_mx_barcode.inwareid = :arg_inwareid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入采购收货单废弃单条码明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- Insert Into u_inware_itemmx_disuse
- (scid, inwareid, printid, itemid, amt, mxdscrp, itemcode, itemname, itemtype, disuseid)
- Select u_inware_itemmx.scid, u_inware_itemmx.inwareid, u_inware_itemmx.printid,
- u_inware_itemmx.itemid, u_inware_itemmx.amt, u_inware_itemmx.mxdscrp,
- u_itemdef.itemcode, u_itemdef.itemname, u_itemdef.itemtype, :ll_disuseid
- From u_inware_itemmx LEFT Outer JOIN
- u_itemdef ON u_inware_itemmx.itemid = u_itemdef.itemid
- Where u_inware_itemmx.scid = :arg_scid
- And u_inware_itemmx.inwareid = :arg_inwareid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入采购收货单废弃单费用明细失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using commit_transaction;
- End If
- Return rslt
- end function
- public function integer acceptmx (s_inwaremx s_mx, ref string arg_msg);Long rslt = 1,cnt = 0,ls_i
- Decimal ld_planprice,ld_cost
- Decimal ld_noauditqty,ld_bootqty
- Decimal ld_consignedqty,ld_uqty
- String ls_relcode,ls_unit
- Decimal lde_mx_qty
- Decimal ld_uprate,ld_upqty
- Int li_ifpack,li_ifpackpro
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Long ll_i
- Decimal lde_newprice
- Int li_outtype_storage
- Int li_check_taskqty
- Decimal ld_fprice_notax
- IF uo_option_buy_zero = -1000 THEN
- rslt = 0
- arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_wfjg_zero = -1000 THEN
- rslt = 0
- arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_status = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_unit_dec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[023]辅助单位转换库存单位小数位,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_ifovertask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[010]超采购,外协订单收货,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_ifovertask_cp = -1000 THEN
- rslt = 0
- arg_msg = '选项:[112]超生产指令单数量进仓,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_cost_notax = -1000 THEN
- rslt = 0
- arg_msg = '选项:[362]采购外协使用不含税价进仓,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(s_mx.printid) THEN s_mx.printid = 0
- IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
- IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = ''
- IF IsNull(s_mx.plancode) THEN s_mx.plancode = ''
- IF IsNull(s_mx.status) THEN s_mx.status = ''
- IF IsNull(s_mx.woodcode) THEN s_mx.woodcode = ''
- IF IsNull(s_mx.pcode) THEN s_mx.pcode = ''
- IF IsNull(s_mx.uqty) THEN s_mx.uqty = 0
- IF IsNull(s_mx.enprice) THEN s_mx.enprice = 0
- IF IsNull(s_mx.rebate) THEN s_mx.rebate = 1
- IF IsNull(s_mx.mxdscrp) THEN s_mx.mxdscrp = ''
- IF IsNull(s_mx.jgprice) THEN s_mx.jgprice = 0
- IF IsNull(s_mx.relid) THEN s_mx.relid = 0
- IF IsNull(s_mx.ifrel) THEN s_mx.ifrel = 0
- IF IsNull(s_mx.mxdscrp) THEN s_mx.woodcode = ''
- IF IsNull(s_mx.pcode) THEN s_mx.pcode = ''
- IF IsNull(s_mx.sptid) THEN s_mx.sptid = 0
- IF IsNull(s_mx.relprintid) THEN s_mx.relprintid = 0
- IF IsNull(s_mx.checkqty) THEN s_mx.checkqty = 0
- IF IsNull(s_mx.result) THEN s_mx.result = ''
- IF IsNull(s_mx.waredscrp) THEN s_mx.waredscrp = ''
- IF IsNull(s_mx.relbillid) THEN s_mx.relbillid = 0
- IF IsNull(s_mx.relbillprintid) THEN s_mx.relbillprintid = 0
- IF IsNull(s_mx.mtrlcuscode) THEN s_mx.mtrlcuscode = ''
- IF IsNull(s_mx.Location) THEN s_mx.Location = ''
- IF IsNull(s_mx.deliqty) THEN s_mx.deliqty = 0
- IF IsNull(s_mx.tax) THEN s_mx.tax = 0
- IF IsNull(s_mx.Thptype) THEN s_mx.Thptype = 0 //退货处理选项: 0-不操作,1-更新原采购订单,2-重新生成采购订单
- IF IsNull(s_mx.jgdscrp) THEN s_mx.jgdscrp = ''
- IF IsNull(s_mx.ifvqty) THEN s_mx.ifvqty = 0
- //IF s_mx.rebate = 0 THEN s_mx.rebate = 1
- IF IsNull(s_mx.unit) THEN s_mx.unit = ''
- IF IsNull(s_mx.rate) THEN s_mx.rate = 1
- IF s_mx.rate = 0 THEN s_mx.rate = 1
- IF IsNull(s_mx.ifnotinout) THEN s_mx.ifnotinout = 0
- IF s_mx.mtrlid = 0 THEN //OR s_mx.uqty = 0 OR s_mx.qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- s_mx.status = Trim(s_mx.status)
- s_mx.woodcode = Trim(s_mx.woodcode)
- s_mx.pcode = Trim(s_mx.pcode)
- s_mx.plancode = Trim(s_mx.plancode)
- s_mx.mtrlcuscode = Trim(s_mx.mtrlcuscode)
- s_mx.Location = Trim(s_mx.Location)
- IF billtype <> 1 THEN
- mrate = 1
- END IF
- //检查物料id
- Int li_statusflag,li_woodcodeflag,li_pcodeflag
- Int li_status_check,li_woodcode_check,li_pcode_check
- Int li_outtype_mtrl,li_ifunit
- SELECT unit,
- statusflag,
- woodcodeflag,
- pcodeflag,
- status_check,
- woodcode_check,
- pcode_check,
- capacity * capaparm,
- outtype,
- ifpack,
- ifpackpro,
- ifunit
- INTO :ls_unit,
- :li_statusflag,
- :li_woodcodeflag,
- :li_pcodeflag,
- :li_status_check,
- :li_woodcode_check,
- :li_pcode_check,
- :ld_capacity,
- :li_outtype_mtrl,
- :li_ifpack,
- :li_ifpackpro,
- :li_ifunit
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :s_mx.mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+",物料:"+s_mx.mtrlcode+"查询操作失败,物料或产品编号:"+s_mx.mtrlcode
- GOTO ext
- END IF
- SELECT outtype INTO :li_outtype_storage FROM u_storage
- Where storageid = :storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询仓库出仓策略失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF li_outtype_storage > 0 THEN
- IF billtype <> 23 And billtype <> 25 And billtype <> 1 And ( li_ifpackpro = 1 Or li_ifpackpro = 2 ) THEN
- arg_msg = "第"+String(s_mx.printid)+"行,物料:"+s_mx.mtrlcode+"个性包件产品或通用包件产品不能直接开进仓单,操作取消"
- rslt = 0
- GOTO ext
- END IF
- END IF
- //IF billtype <> 9 THEN
- // IF li_ifunit = 1 THEN
- // IF s_mx.uqty = s_mx.qty And s_mx.unit <> ls_unit THEN
- // rslt = 0
- // arg_msg = "第"+String(s_mx.printid)+"行,物料使用库存双数量核算,但录入的计量单位数量与库存单位数量相同,操作取消"
- // GOTO ext
- // END IF
- // END IF
- //END IF
- IF li_ifpack = 2 And s_mx.mtrlcuscode = '' THEN
- arg_msg = '行:'+String(s_mx.printid)+",物料:"+s_mx.mtrlcode+",为个性包件,但没有产品批号,请检查"
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpackpro = 2 And s_mx.mtrlcuscode = '' THEN
- arg_msg = '行:'+String(s_mx.printid)+",物料:"+s_mx.mtrlcode+",为个性包件产品,但没有产品批号,请检查"
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpackpro = 4 And s_mx.mtrlcuscode = '' THEN
- arg_msg = '行:'+String(s_mx.printid)+",物料:"+s_mx.mtrlcode+",为组合配置整排散进包件产品,但没有产品批号,请检查"
- rslt = 0
- GOTO ext
- END IF
- f_get_planprice_mtrl(s_mx.mtrlid,s_mx.status,s_mx.woodcode,s_mx.pcode,ld_planprice)
- IF Not ((uo_option_buy_zero = 1 And billtype = 1) Or &
- (uo_option_wfjg_zero = 1 And billtype = 4 ) Or &
- (billtype = 9 And relid > 0 And li_outtype_mtrl = 2)) THEN
-
- IF billtype = 9 THEN
- IF s_mx.uqty = 0 And s_mx.qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- ELSE
- IF s_mx.uqty = 0 Or s_mx.qty = 0 Or s_mx.deliqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- END IF
-
- IF s_mx.uqty = 0 THEN
- s_mx.rate = 0
- ELSE
- s_mx.rate = s_mx.qty / s_mx.uqty
- END IF
-
- IF billtype <> 9 THEN
- IF s_mx.checkqty = 0 THEN s_mx.checkqty = s_mx.uqty
- END IF
- END IF
- IF s_mx.rebate <= 0 or s_mx.rebate > 1 THEN
- arg_msg = '行:'+String(s_mx.printid)+',折扣错误,只能取范围(0, 1]'
- rslt = 0
- GOTO ext
- END IF
- //IF s_mx.checkqty < s_mx.uqty THEN
- // arg_msg = '第'+String(s_mx.printid)+'行,送货数不能少于实进仓数'
- // rslt = 0
- // GOTO ext
- //END IF
- IF li_statusflag = 2 THEN
- IF s_mx.status = '' THEN
- arg_msg = '行:'+String(s_mx.printid)+',物料:'+s_mx.mtrlcode+','+uo_option_change_status + '字段使用组合配置,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_statusflag = 4 And li_status_check = 1 THEN
- IF s_mx.status = '' THEN
- arg_msg = '行:'+String(s_mx.printid)+',物料:'+s_mx.mtrlcode+','+uo_option_change_woodcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_statusflag = 1 Or li_statusflag = 0 THEN
- IF f_check_status(1,s_mx.status) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+",查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+s_mx.mtrlcode+",内容:"+s_mx.status
- GOTO ext
- END IF
- END IF
- IF li_woodcodeflag = 4 And li_woodcode_check = 1 THEN
- IF s_mx.woodcode = '' THEN
- arg_msg = '行:'+String(s_mx.printid)+',物料:'+s_mx.mtrlcode+','+uo_option_change_woodcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_woodcodeflag = 1 Or li_woodcodeflag = 0 THEN
- IF f_check_status(2,s_mx.woodcode) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+",查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+s_mx.mtrlcode+",内容:"+s_mx.woodcode
- GOTO ext
- END IF
- END IF
- IF li_pcodeflag = 4 And li_pcode_check = 1 THEN
- IF s_mx.pcode = '' THEN
- arg_msg = '行:'+String(s_mx.printid)+',物料:'+s_mx.mtrlcode+','+uo_option_change_pcode + '字段使用部件选配,请输入'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF li_pcodeflag = 1 Or li_pcodeflag = 0 THEN
- IF f_check_status(3,s_mx.pcode) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+",查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+s_mx.mtrlcode+",内容:"+s_mx.pcode
- GOTO ext
- END IF
- END IF
- IF li_statusflag = 2 THEN
- ld_capacity = 0
- f_checkpz(s_mx.status,s_pz[])
- FOR ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- SELECT capacity * capaparm
- INTO :ld_capacity_zj
- FROM u_mtrl_configure
- WHERE mtrlid = :s_mx.mtrlid
- And Name = :ls_status_zj Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "第"+String(s_mx.printid)+"行,物料:"+s_mx.mtrlcode+"查询子件 "+ls_status_zj+" 折算套数参数操作失败"
- GOTO ext
- END IF
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
-
- NEXT
- END IF
- Int li_iflimitprice
- SELECT iflimitprice
- INTO :li_iflimitprice
- FROM u_mtrldef
- Where mtrlid = :s_mx.mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询物料:'+s_mx.mtrlcode+'限价属性失败 '+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF billtype <> 9 THEN
- // IF Trim(ls_unit) <> Trim(s_mx.unit) And s_mx.rate = 1 THEN
- // arg_msg = '进仓单,行:'+String(s_mx.printid)+',物料库存单位:'+Trim(ls_unit)+'与采购单位:'+Trim(s_mx.unit)+'不同,但转换率为1,请检查'
- // rslt = 0
- // GOTO ext
- // END IF
-
- IF Trim(ls_unit) = Trim(s_mx.unit) And s_mx.rate <> 1 THEN
- arg_msg = '进仓单,行:'+String(s_mx.printid)+',物料:'+s_mx.mtrlcode+'物料库存单位:'+Trim(ls_unit)+'与采购单位:'+Trim(s_mx.unit)+'相同,但转换率不为1,请检查'
- rslt = 0
- GOTO ext
- END IF
- END IF
- //查询采购限价并检查进仓价
- IF billtype = 1 THEN
- IF uo_sptprice.uof_check_limitprice(thflag,s_mx.mtrlid,s_mx.status,s_mx.woodcode,s_mx.pcode,s_mx.unit,s_mx.enprice * s_mx.rebate,arg_msg) = 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF li_iflimitprice = 1 THEN
- IF uo_sptprice.uof_check_price(thflag,sptid,s_mx.mtrlid,s_mx.mtrlcode,s_mx.unit,s_mx.status,s_mx.woodcode,s_mx.pcode,'',moneyid,s_mx.enprice * s_mx.rebate,indate,arg_msg) = 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF thflag = 1 THEN
- //退货处理选项
- IF s_mx.Thptype = 0 THEN
-
- ELSEIF s_mx.Thptype = 1 THEN
- IF s_mx.ifrel = 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',没有选订单的明细退货处理选项不能选择[更新原采购订单]'
- rslt = 0
- GOTO ext
- END IF
- ELSEIF s_mx.Thptype = 2 THEN
-
- END IF
- END IF
- END IF
- //增加新字段 newprice 最新报价
- IF billtype = 1 THEN
- DateTime ldt_effdate
- Decimal ls_1stnewcost,ls_1stzqrate,ls_1strate
- String ls_msg
- String ls_1stunit
- ls_1stunit = s_mx.unit
- ldt_effdate = DateTime(Today(),Time(0))
-
- IF uo_sptprice.uof_getmtrlsptprice(moneyid,sptid,s_mx.mtrlid,ls_1stunit,s_mx.status,s_mx.woodcode,s_mx.pcode,'',ls_1stnewcost,ls_1stzqrate,ls_1strate,ldt_effdate,ls_msg) <> 1 THEN
- lde_newprice = 0
- ELSE
- lde_newprice = ls_1stnewcost
- END IF
- ELSE
- lde_newprice = 0
- END IF
- CHOOSE CASE billtype
- CASE 1,26
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',请先择相应的订单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT taskcode,sum(uqty - consignedqty - stopqty),sum(uqty),sum(consignedqty)
- INTO :ls_relcode,:ld_bootqty,:ld_uqty,:ld_consignedqty
- FROM u_buytaskmx,u_buytask
- WHERE u_buytaskmx.taskid = :s_mx.relid
- AND u_buytaskmx.scid = :scid
- AND u_buytaskmx.printid = :s_mx.relprintid
- AND u_buytaskmx.taskid = u_buytask.taskid
- AND u_buytaskmx.scid = u_buytask.scid
- GROUP BY taskcode
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询采购订单是否有订购物料:'+s_mx.mtrlcode+'失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF billtype = 1 THEN
- lde_mx_qty = 0
- FOR ls_i = 1 To it_mxbt
- IF s_mx.mtrlid = inwaremx[ls_i].mtrlid And &
- s_mx.relid = inwaremx[ls_i].relid And &
- s_mx.relprintid = inwaremx[ls_i].relprintid THEN
- lde_mx_qty = lde_mx_qty + inwaremx[ls_i].uqty
- END IF
- NEXT
- lde_mx_qty = lde_mx_qty + s_mx.uqty
-
- //查已开单数
- ld_noauditqty = 0
- SELECT sum(uqty) INTO :ld_noauditqty
- FROM u_inwaremx,u_inware
- WHERE u_inwaremx.relid = :s_mx.relid
- AND u_inwaremx.sptid_cusid = :s_mx.sptid
- AND u_inwaremx.mtrlid = :s_mx.mtrlid
- AND u_inwaremx.status = :s_mx.status
- AND u_inwaremx.woodcode = :s_mx.woodcode
- AND u_inwaremx.pcode = :s_mx.pcode
- AND u_inwaremx.unit = :s_mx.unit
- AND u_inwaremx.relprintid = :s_mx.relprintid
- AND u_inware.inwareid <> :inwareid
- AND u_inware.flag = 0
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inware.scid = u_inwaremx.scid
- AND u_inwaremx.scid = :scid
- And u_inware.billtype = 1 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询物料:'+s_mx.mtrlcode+'相关订单单据已开单数失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_noauditqty) THEN ld_noauditqty = 0
-
- IF uo_option_ifovertask = 1 THEN
- IF lde_mx_qty + ld_noauditqty > ld_bootqty THEN
- arg_msg = '行:'+String(s_mx.printid)+',物料:'+s_mx.mtrlcode+'未完成数:'+String(ld_bootqty,'#,##0.0###')+'已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+',不能收货:'+String(lde_mx_qty,'#,##0.0###')
- rslt = 0
- GOTO ext
- END IF
- ELSEIF uo_option_ifovertask = 3 THEN
- SELECT uprate , upqty
- INTO :ld_uprate,:ld_upqty
- FROM u_mtrldef
- Where mtrlid = :s_mx.mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询物料:'+Trim(s_mx.mtrlcode)+'超收货比例失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_uqty * (1 + ld_uprate) + ld_upqty < ld_consignedqty + lde_mx_qty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+",物料:"+s_mx.mtrlcode+"未完成数量只有"+String(ld_uqty - ld_consignedqty,'#,##0.0###')+"已开单未审核数:"+String(ld_noauditqty,'#,##0.0###')+",允许超收上限:"+String(ld_uqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty - ld_noauditqty,'#,##0.00##')+",不能入库"+String(lde_mx_qty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- CASE 3
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',请先择相应的计划'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_Order_ml.ordercode,
- isnull(u_sc_wkp.check_taskqty,0)
- INTO :ls_relcode,
- :li_check_taskqty
- FROM u_Order_ml LEFT OUTER JOIN
- u_sc_wkp ON u_Order_ml.wrkGrpid = u_sc_wkp.wrkGrpid
- WHERE u_order_ml.orderid = :s_mx.relid
- AND u_order_ml.mtrlid = :s_mx.mtrlid
- AND u_order_ml.scid = :scid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询生产计划是否有生产产品:'+s_mx.mtrlcode+'失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //检查指令单工序是否已开完派工单
- IF li_check_taskqty = 1 THEN
- SELECT count(*)
- INTO :cnt
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND orderid = :s_mx.relid
- AND proqty > taskqty
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询指令单工序是否已完成派工失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',指令单工序没有完成派工,不允许进仓'
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //查已开单数
- ld_noauditqty = 0
- SELECT sum(qty) INTO :ld_noauditqty
- FROM u_inwaremx,u_inware
- WHERE u_inwaremx.relid = :s_mx.relid
- AND u_inware.inwareid <> :inwareid
- AND u_inware.flag = 0
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inware.scid = u_inwaremx.scid
- AND u_inwaremx.scid = :scid
- And u_inware.billtype = 3 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询物料:'+s_mx.mtrlcode+'相关订单单据已开单数失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_noauditqty) THEN ld_noauditqty = 0
-
- lde_mx_qty = 0
- FOR ls_i = 1 To it_mxbt
- IF s_mx.mtrlid = inwaremx[ls_i].mtrlid And &
- s_mx.relid = inwaremx[ls_i].relid And &
- s_mx.relprintid = inwaremx[ls_i].relprintid THEN
- lde_mx_qty = lde_mx_qty + inwaremx[ls_i].qty
- END IF
- NEXT
- lde_mx_qty = lde_mx_qty + s_mx.qty
-
- SELECT orderqty - stopqty,acmpqty
- INTO :ld_uqty,:ld_consignedqty
- FROM u_order_ml
- WHERE u_order_ml.orderid = :s_mx.relid
- AND u_order_ml.scid = :scid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询生产计划是否有物料:'+s_mx.mtrlcode+'失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_option_ifovertask_cp = 1 Or uo_option_ifovertask_cp = 4 THEN //不允许超收
- IF ld_uqty < lde_mx_qty + ld_consignedqty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+',该计划明细产品['+s_mx.mtrlcode+']未完成数量'+String(ld_uqty - ld_consignedqty,'#,##0.00##' )+',已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+'小于本次完成数量'
- GOTO ext
- END IF
- ELSEIF uo_option_ifovertask_cp = 3 THEN //允许超收但按比例限制
- SELECT uprate , upqty
- INTO :ld_uprate,:ld_upqty
- FROM u_mtrldef
- Where mtrlid = :s_mx.mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询物料:'+Trim(s_mx.mtrlcode)+'超收货比例失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_uqty * (1 + ld_uprate) + ld_upqty < ld_consignedqty + lde_mx_qty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+",物料:"+s_mx.mtrlcode+"未完成数量只有"+String(ld_uqty - ld_consignedqty,'#,##0.0###')+'已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+",允许超收上限:"+String(ld_uqty * (1 + ld_uprate) + ld_upqty - ld_consignedqty - ld_noauditqty,'#,##0.00##')+",不能入库"+String(lde_mx_qty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- END IF
-
- Int li_if_cus_mtrlware
- SELECT balctype INTO :li_if_cus_mtrlware
- FROM u_storage
- Where storageid = :storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询仓库是否使用客户库存失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF billtype = 3 And li_if_cus_mtrlware = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_cust
- Where cusid = :s_mx.sptid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询客户资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- CASE 4
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',请先择相应的加工计划'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_order_wfjg.taskcode ,sum(u_order_wfjgmx.qty - u_order_wfjgmx.consignedqty)INTO :ls_relcode,:ld_bootqty
- FROM u_order_wfjgmx,u_order_wfjg
- WHERE u_order_wfjgmx.wfjgid = :s_mx.relid
- AND u_order_wfjgmx.scid = :scid
- AND u_order_wfjgmx.printid = :s_mx.relprintid
- AND u_order_wfjgmx.wfjgid = u_order_wfjg.wfjgid
- AND u_order_wfjgmx.scid = u_order_wfjg.scid
- GROUP BY u_order_wfjg.taskcode
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询外协计划是否有加工产品:'+s_mx.mtrlcode+'失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- CASE 5
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',请先择相应的来料加工订单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_saletask_ll.taskcode ,sum(qty - consignedqty),sum(qty),sum(consignedqty)
- INTO :ls_relcode,:ld_bootqty,:ld_uqty,:ld_consignedqty
- FROM u_saletaskmx_in,u_saletask_ll
- WHERE u_saletaskmx_in.taskid = :s_mx.relid
- AND u_saletask_ll.scid = :scid
- AND u_saletaskmx_in.printid = :s_mx.relprintid
- AND u_saletaskmx_in.taskid = u_saletask_ll.taskid
- GROUP BY u_saletask_ll.taskcode
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询来料订单是否有收料物料:'+s_mx.mtrlcode+'失败'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- lde_mx_qty = 0
- FOR ls_i = 1 To it_mxbt
- IF s_mx.mtrlid = inwaremx[ls_i].mtrlid And &
- s_mx.relid = inwaremx[ls_i].relid And &
- s_mx.relprintid = inwaremx[ls_i].relprintid THEN
- lde_mx_qty = lde_mx_qty + inwaremx[ls_i].qty
- END IF
- NEXT
- lde_mx_qty = lde_mx_qty + s_mx.uqty
-
- //查已开单数
- ld_noauditqty = 0
- SELECT sum(qty) INTO :ld_noauditqty
- FROM u_inwaremx,u_inware
- WHERE u_inwaremx.relid = :s_mx.relid
- AND u_inwaremx.sptid_cusid = :s_mx.sptid
- AND u_inwaremx.mtrlid = :s_mx.mtrlid
- AND u_inwaremx.status = :s_mx.status
- AND u_inwaremx.woodcode = :s_mx.woodcode
- AND u_inwaremx.pcode = :s_mx.pcode
- AND u_inwaremx.unit = :s_mx.unit
- AND u_inwaremx.relprintid = :s_mx.relprintid
- AND u_inware.inwareid <> :inwareid
- AND u_inware.flag = 0
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inware.scid = u_inwaremx.scid
- AND u_inwaremx.scid = :scid
- And u_inware.billtype = 5 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询物料:'+s_mx.mtrlcode+'相关订单单据已开单数失败'
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_noauditqty) THEN ld_noauditqty = 0
-
- IF ld_uqty < lde_mx_qty + ld_consignedqty + ld_noauditqty THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+',该计划明细产品['+s_mx.mtrlcode+']未完成数量'+String(ld_uqty - ld_consignedqty,'#,##0.00##' )+',已开单未审核数:'+String(ld_noauditqty,'#,##0.0###')+'小于本次完成数量'
- GOTO ext
- END IF
-
- END IF
-
- END CHOOSE
- IF s_mx.enprice * s_mx.rebate < 0 THEN //检查进仓价
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+",物料或产品:" + String(s_mx.mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- //查询质检单号
- String ls_relbillcode
- ls_relbillcode = ''
- IF s_mx.relbillid > 0 THEN
- SELECT billcode
- INTO :ls_relbillcode
- FROM u_sptcheck
- Where billid = :s_mx.relbillid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(s_mx.printid)+',查询质检单号失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- //写入内容
- it_mxbt++
- inwaremx[it_mxbt].noauditqty = ld_noauditqty
- inwaremx[it_mxbt].printid = s_mx.printid
- inwaremx[it_mxbt].mtrlid = s_mx.mtrlid
- inwaremx[it_mxbt].mtrlcode = s_mx.mtrlcode
- inwaremx[it_mxbt].unit = s_mx.unit
- inwaremx[it_mxbt].rate = s_mx.rate
- inwaremx[it_mxbt].plancode = s_mx.plancode
- inwaremx[it_mxbt].bootqty = ld_bootqty
- inwaremx[it_mxbt].status = s_mx.status
- inwaremx[it_mxbt].enprice = s_mx.enprice
- inwaremx[it_mxbt].uprice = s_mx.enprice * mrate
- inwaremx[it_mxbt].rebate = s_mx.rebate
- inwaremx[it_mxbt].uqty = s_mx.uqty
- inwaremx[it_mxbt].qty = s_mx.qty //Round(s_mx.uqty * s_mx.rate,uo_option_unit_dec)
- inwaremx[it_mxbt].deliqty = s_mx.deliqty
- inwaremx[it_mxbt].tax = s_mx.tax
- inwaremx[it_mxbt].deliprice_notax = s_mx.enprice / (1 + s_mx.tax)
- IF s_mx.uqty <> 0 THEN
- inwaremx[it_mxbt].enprice_tax = s_mx.deliqty * s_mx.enprice / s_mx.uqty
- inwaremx[it_mxbt].enprice_notax = (s_mx.deliqty * s_mx.enprice / s_mx.uqty) / (1 + s_mx.tax)
- ELSE
- inwaremx[it_mxbt].enprice_tax = s_mx.enprice
- inwaremx[it_mxbt].enprice_notax = s_mx.enprice / (1 + s_mx.tax)
- END IF
- inwaremx[it_mxbt].enprice_tax = Abs(inwaremx[it_mxbt].enprice_tax)
- inwaremx[it_mxbt].enprice_notax = Abs(inwaremx[it_mxbt].enprice_notax)
- IF Round(s_mx.uqty * s_mx.rate,uo_option_unit_dec) <> 0 THEN
- inwaremx[it_mxbt].fprice = Round((inwaremx[it_mxbt].enprice_tax * mrate * s_mx.uqty)/(Round(s_mx.uqty * s_mx.rate,uo_option_unit_dec)),10)
- ld_fprice_notax = Round((inwaremx[it_mxbt].enprice_notax * mrate * s_mx.uqty)/(Round(s_mx.uqty * s_mx.rate,uo_option_unit_dec)),10)
- ELSE
- inwaremx[it_mxbt].fprice = 0
- ld_fprice_notax = 0
- END IF
- inwaremx[it_mxbt].fprice = Abs(inwaremx[it_mxbt].fprice)
- ld_fprice_notax = Abs(ld_fprice_notax)
- inwaremx[it_mxbt].price = inwaremx[it_mxbt].fprice * s_mx.rebate
- inwaremx[it_mxbt].planprice = ld_planprice
- inwaremx[it_mxbt].mxdscrp = s_mx.mxdscrp
- inwaremx[it_mxbt].dxflag = dxflag
- inwaremx[it_mxbt].jgprice = s_mx.jgprice
- inwaremx[it_mxbt].relid = s_mx.relid
- inwaremx[it_mxbt].ifrel = s_mx.ifrel
- inwaremx[it_mxbt].woodcode = s_mx.woodcode
- inwaremx[it_mxbt].pcode = s_mx.pcode
- inwaremx[it_mxbt].relcode = ls_relcode
- inwaremx[it_mxbt].relprintid = s_mx.relprintid
- inwaremx[it_mxbt].checkqty = s_mx.checkqty
- inwaremx[it_mxbt].result = s_mx.result
- inwaremx[it_mxbt].waredscrp = s_mx.waredscrp
- inwaremx[it_mxbt].relbillid = s_mx.relbillid
- inwaremx[it_mxbt].relbillprintid = s_mx.relbillprintid
- inwaremx[it_mxbt].relbillcode = ls_relbillcode
- inwaremx[it_mxbt].mtrlcuscode = s_mx.mtrlcuscode
- inwaremx[it_mxbt].Location = s_mx.Location
- inwaremx[it_mxbt].capacity = ld_capacity * s_mx.qty
- inwaremx[it_mxbt].ifvqty = s_mx.ifvqty
- inwaremx[it_mxbt].ifnotinout = s_mx.ifnotinout
- IF dxflag = 0 THEN
- inwaremx[it_mxbt].sptid = s_mx.sptid
- ELSE
- inwaremx[it_mxbt].sptid = sptid
- END IF
- IF billtype = 1 THEN
- String ls_sptmtrlname
- uo_spt_price uo_price
- uo_price = Create uo_spt_price
- IF uo_price.uof_getmtrlname(sptid,s_mx.mtrlid,ls_sptmtrlname,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- Destroy uo_price
- inwaremx[it_mxbt].sptmtrlname = ls_sptmtrlname
- END IF
- IF thflag = 1 THEN
- Long ll_sptid,ll_billtype,ll_balctype
- Int li_thtype
- //查询相关订单属于材料订单还是成品订单
- // IF billtype = 1 AND s_mx.relid > 0 THEN
- // SELECT billtype INTO :ll_billtype
- // FROM u_buytask
- // WHERE taskid = :s_mx.relid
- // AND scid = :scid;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询订单类型失败'+'~n'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- // ELSE
- // ll_billtype = 0
- // END IF
- //
- // IF billtype = 5 THEN
- // ll_sptid = s_mx.sptid
- // ELSEIF billtype = 1 AND ll_billtype = 1 THEN
- // SELECT balctype INTO :ll_balctype
- // FROM u_storage
- // Where storageid = :storageid;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询仓库是否使用客户库存失败'+'~n'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF ll_balctype = 1 THEN
- ll_sptid = s_mx.sptid
- // ELSE
- // ll_sptid = 0
- // END IF
- // ELSE
- // ll_sptid = 0
- // END IF
-
- SELECT thtype INTO :li_thtype
- FROM u_storage
- Where storageid = :storageid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(s_mx.printid)+',查询仓库退货取价模式失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_thtype = 0 THEN
- SELECT cost
- INTO :ld_cost
- FROM u_mtrlware
- WHERE scid = :scid
- AND mtrlid = :s_mx.mtrlid
- AND storageid = :storageid
- AND status = :s_mx.status
- AND plancode = :s_mx.plancode
- AND woodcode = :s_mx.woodcode
- AND pcode = :s_mx.pcode
- AND dxflag = :dxflag
- AND sptid = :ll_sptid
- AND mtrlcuscode = :s_mx.mtrlcuscode
- And Location = :s_mx.Location Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 Or IsNull(ld_cost) THEN ld_cost = 0
-
- inwaremx[it_mxbt].cost = ld_cost
- ELSE
-
- IF uo_option_cost_notax = 0 THEN
- inwaremx[it_mxbt].cost = inwaremx[it_mxbt].fprice * s_mx.rebate
- ELSE
- inwaremx[it_mxbt].cost = ld_fprice_notax * s_mx.rebate
- END IF
-
- END IF
- ELSE
- IF uo_option_cost_notax = 0 THEN
- inwaremx[it_mxbt].cost = inwaremx[it_mxbt].fprice * s_mx.rebate
- ELSE
- inwaremx[it_mxbt].cost = ld_fprice_notax * s_mx.rebate
- END IF
- END IF
- inwaremx[it_mxbt].newprice = lde_newprice
- inwaremx[it_mxbt].Thptype = s_mx.Thptype
- inwaremx[it_mxbt].jgdscrp = s_mx.jgdscrp
- ext:
- Destroy uo_sptprice
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- end function
- public function integer uof_check_scll_rate (long arg_scid, long arg_inwareid, long arg_printid, long arg_relid, long arg_mtrlid, decimal arg_qty, integer arg_ck_if_save_audit, ref string arg_msg);Int rslt = 1
- Long cnt
- Long ll_relid,ll_mtrlid
- Decimal ld_qty,ld_minrate,ld_orderqty,ld_acmpqty,ld_uprate,ld_upqty
- Decimal ld_truerqqty,ld_dstrqty,ld_scllplanqty,ld_backqty,ld_backbuqty
- String ls_msg
- Int li_ck_result
- If uo_option_ifovertask_cp = -1000 Then
- rslt = 0
- arg_msg = '选项:[112]超生产指令单数量进仓,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If arg_ck_if_save_audit = 0 Then
- ll_relid = arg_relid
- ll_mtrlid = arg_mtrlid
- ld_qty = arg_qty
- Else
- If arg_inwareid > 0 Then
- Select relid,qty,mtrlid
- Into :ll_relid,:ld_qty,:ll_mtrlid
- From u_inwaremx
- Where scid = :arg_scid
- And inwareid = :arg_inwareid
- And printid = :arg_printid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询进仓单明细失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- End If
- //yyx2014-9-26 采购补件指令单进仓不检查领料
- Int li_ifbj_wkp,li_mtrlorigin
- SELECT mtrlorigin
- INTO :li_mtrlorigin
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询明细物料物料来源失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT u_sc_wkp.ifbj
- INTO :li_ifbj_wkp
- FROM u_order_ml,u_sc_wkp
- WHERE u_order_ml.wrkgrpid = u_sc_wkp.wrkgrpid
- AND u_order_ml.scid = :arg_scid
- And u_order_ml.orderid = :ll_relid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询明细指令单生产车间是否补件车间失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_ifbj_wkp = 1 And li_mtrlorigin = 2 THEN
- rslt = 1
- GOTO ext
- END IF
- //end_yyx2014-9-26 采购补件指令单进仓不检查领料
- Select count(*) Into :cnt
- From u_OrderRqMtrl_scll Inner JOIN
- u_mtrldef ON u_OrderRqMtrl_scll.MtrlID = u_mtrldef.mtrlid
- Where (u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 3)
- And (u_OrderRqMtrl_scll.trueRqqty > 0)
- And (u_OrderRqMtrl_scll.OrderID = :ll_relid)
- And (u_OrderRqMtrl_scll.scid = :arg_scid) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询相关指令单领料明细失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
-
- Select Min(Case when u_OrderRqMtrl_scll.trueRqqty = 0 Then 1 Else Round((u_OrderRqMtrl_scll.DstrQty + IsNull(uv_outware_scll_backbu_noaudit.backqty,0) + IsNull(uv_outware_scll_bu.qty,0)) / u_OrderRqMtrl_scll.trueRqqty,10) End),
- IsNull(sum(u_OrderRqMtrl_scll.trueRqqty),0),
- IsNull(sum(u_OrderRqMtrl_scll.DstrQty),0)
- Into :ld_minrate,:ld_truerqqty,:ld_dstrqty
- From u_OrderRqMtrl_scll Inner JOIN
- u_mtrldef On u_OrderRqMtrl_scll.mtrlid = u_mtrldef.mtrlid Left Outer JOIN
- uv_outware_scll_backbu_noaudit On
- u_OrderRqMtrl_scll.scid = uv_outware_scll_backbu_noaudit.scid And
- u_OrderRqMtrl_scll.OrderID = uv_outware_scll_backbu_noaudit.relid And
- u_OrderRqMtrl_scll.mtrlid = uv_outware_scll_backbu_noaudit.mtrlid And
- u_OrderRqMtrl_scll.status = uv_outware_scll_backbu_noaudit.status And
- u_OrderRqMtrl_scll.woodcode = uv_outware_scll_backbu_noaudit.woodcode And
- u_OrderRqMtrl_scll.pcode = uv_outware_scll_backbu_noaudit.pcode Left Outer JOIN
- uv_outware_scll_bu On u_OrderRqMtrl_scll.mtrlid = uv_outware_scll_bu.mtrlid And
- u_OrderRqMtrl_scll.status = uv_outware_scll_bu.status And
- u_OrderRqMtrl_scll.woodcode = uv_outware_scll_bu.woodcode And
- u_OrderRqMtrl_scll.pcode = uv_outware_scll_bu.pcode And
- u_OrderRqMtrl_scll.scid = uv_outware_scll_bu.scid And
- u_OrderRqMtrl_scll.OrderID = uv_outware_scll_bu.relid
- Where (u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 3)
- And (u_OrderRqMtrl_scll.trueRqqty + IsNull(uv_outware_scll_bu.qty,0) > 0)
- And (u_OrderRqMtrl_scll.OrderID = :ll_relid)
- And (u_OrderRqMtrl_scll.scid = :arg_scid) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- ld_minrate = 1
- End If
- If IsNull(ld_minrate) Then ld_minrate = 1
- Select orderqty - stopqty,acmpqty
- Into :ld_orderqty,:ld_acmpqty
- From u_order_ml
- Where scid = :arg_scid
- And OrderID = :ll_relid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询相关指令单数量失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- If uo_option_ifovertask_cp = 1 Then
- If ld_acmpqty + ld_qty > Ceiling(ld_orderqty * ld_minrate) Then
- rslt = 0
- arg_msg = '相关指令单最大领料配套数量为:'+String(Ceiling(ld_orderqty * ld_minrate),'#,##0.##########')+',已进仓数:'+String(ld_acmpqty,'#,##0.##########')+',不能进仓:'+String(ld_qty,'#,##0.##########')
- Goto ext
- End If
- ElseIf uo_option_ifovertask_cp = 4 Then
-
- Select IsNull(sum(Case u_mtrldef.scllplan_mode when 0 Then u_OrderRqMtrl_scll.flqty + IsNull(uv_outware_scllplan_noaudit.qty,0) Else IsNull(uv_outware_scllplan_all.p_rqqty,0) End),0)
- Into :ld_scllplanqty
- From u_OrderRqMtrl_scll Inner JOIN
- u_mtrldef On u_OrderRqMtrl_scll.mtrlid = u_mtrldef.mtrlid Left Outer JOIN
- uv_outware_scllplan_noaudit On
- u_OrderRqMtrl_scll.scid = uv_outware_scllplan_noaudit.scid And
- u_OrderRqMtrl_scll.OrderID = uv_outware_scllplan_noaudit.OrderID And
- u_OrderRqMtrl_scll.mtrlid = uv_outware_scllplan_noaudit.mtrlid And
- u_OrderRqMtrl_scll.wrkGrpid = uv_outware_scllplan_noaudit.wrkGrpid And
- u_OrderRqMtrl_scll.status = uv_outware_scllplan_noaudit.status And
- u_OrderRqMtrl_scll.woodcode = uv_outware_scllplan_noaudit.woodcode And
- u_OrderRqMtrl_scll.pcode = uv_outware_scllplan_noaudit.pcode Left Outer JOIN
- uv_outware_scllplan_all On
- u_OrderRqMtrl_scll.scid = uv_outware_scllplan_all.scid And
- u_OrderRqMtrl_scll.OrderID = uv_outware_scllplan_all.OrderID And
- u_OrderRqMtrl_scll.mtrlid = uv_outware_scllplan_all.mtrlid And
- u_OrderRqMtrl_scll.status = uv_outware_scllplan_all.status And
- u_OrderRqMtrl_scll.woodcode = uv_outware_scllplan_all.woodcode And
- u_OrderRqMtrl_scll.pcode = uv_outware_scllplan_all.pcode And
- u_OrderRqMtrl_scll.wrkGrpid = uv_outware_scllplan_all.wrkGrpid
- Where (u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 3)
- And (u_OrderRqMtrl_scll.OrderID = :ll_relid)
- And (u_OrderRqMtrl_scll.scid = :arg_scid) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- ld_scllplanqty = 0
- End If
- // SELECT IsNull(sum(CASE u_mtrldef.scllplan_mode when 0 THEN IsNull(uv_outware_scllplan_all.conqty,0) ELSE IsNull(uv_outware_scllplan_all.p_rqqty,0) END),0)
- //Into :ld_scllplanqty
- //From uv_outware_scllplan_all Inner JOIN
- //u_mtrldef On uv_outware_scllplan_all.mtrlid = u_mtrldef.mtrlid
- //Where (u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 3)
- //And (uv_outware_scllplan_all.OrderID = :ll_relid)
- //And (uv_outware_scllplan_all.scid = :arg_scid) Using commit_transaction;
- //IF commit_transaction.SQLCode <> 0 THEN
- // ld_scllplanqty = 0
- //END IF
- Select IsNull(sum(uv_outware_scll_back.qty),0)
- Into :ld_backqty
- From uv_outware_scll_back Inner JOIN
- u_mtrldef On uv_outware_scll_back.mtrlid = u_mtrldef.mtrlid
- Where (u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 3)
- And (uv_outware_scll_back.qty <> 0)
- And (uv_outware_scll_back.relid = :ll_relid)
- And (uv_outware_scll_back.scid = :arg_scid) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询指令单退料数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
- Select IsNull(sum(uv_outware_scll_backbu.qty),0)
- Into :ld_backbuqty
- From uv_outware_scll_backbu Inner JOIN
- u_mtrldef On uv_outware_scll_backbu.mtrlid = u_mtrldef.mtrlid
- Where (u_mtrldef.mtrlkind = 0 Or u_mtrldef.mtrlkind = 3)
- And (uv_outware_scll_backbu.qty <> 0)
- And (uv_outware_scll_backbu.relid = :ll_relid)
- And (uv_outware_scll_backbu.scid = :arg_scid) Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询指令单补料数量失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
- //yyx2013-3-18
- If ld_scllplanqty > 0 And ld_minrate <> 1 Then
- ld_minrate = Round((ld_scllplanqty + ld_backqty + ld_backbuqty)/ld_truerqqty,10)
- End If
- //
- If ld_acmpqty + ld_qty > Ceiling(ld_orderqty * ld_minrate) Then
- If ld_truerqqty - ld_dstrqty > 0 And ld_truerqqty > ld_scllplanqty Then
- ls_msg = ',有材料未开完发料通知单'
- li_ck_result = 0
- ElseIf ld_truerqqty - ld_dstrqty > 0 And ld_truerqqty = ld_scllplanqty Then
- If Abs(ld_backqty) > ld_backbuqty Then
- ls_msg = ',有材料未补完料'
- li_ck_result = 0
- End If
- ElseIf ld_truerqqty - ld_dstrqty > 0 And ld_dstrqty < ld_scllplanqty Then
- If ld_backqty = 0 Then
- ls_msg = ',有材料有发料单未审核'
- Else
- ls_msg = ',有材料有补料单未审核'
- End If
- li_ck_result = 1
- End If
-
- If arg_ck_if_save_audit = 0 Then
- If li_ck_result = 0 Then
- rslt = 0
- arg_msg = '相关指令单最大领料配套数量为:'+String(Ceiling(ld_orderqty * ld_minrate),'#,##0.##########')+',已进仓数:'+String(ld_acmpqty,'#,##0.##########')+',不能保存进仓:'+String(ld_qty,'#,##0.##########') + ',原因:'+ls_msg
- Goto ext
- End If
- Else
- rslt = 0
- arg_msg = '相关指令单最大领料配套数量为:'+String(Ceiling(ld_orderqty * ld_minrate),'#,##0.##########')+',已进仓数:'+String(ld_acmpqty,'#,##0.##########')+',不能审核进仓:'+String(ld_qty,'#,##0.##########') + ',原因:'+ls_msg
- Goto ext
- End If
- End If
- ElseIf uo_option_ifovertask_cp = 3 Then
- Select uprate , upqty
- Into :ld_uprate,:ld_upqty
- From u_mtrldef
- Where mtrlid = :ll_mtrlid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询物料超收货比例失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If ld_acmpqty + ld_qty > Ceiling(ld_orderqty * ld_minrate) * (1 + ld_uprate) + ld_upqty Then
- rslt = 0
- arg_msg = '相关指令单最大领料配套数量为:'+String(Ceiling(ld_orderqty * ld_minrate),'#,##0.##########')+',允许超收上限:'+String(Ceiling(ld_orderqty * ld_minrate) * (1 + ld_uprate) + ld_upqty,'#,##0.##########')+',已进仓数:'+String(ld_acmpqty,'#,##0.##########')+',不能进仓:'+String(ld_qty,'#,##0.##########')
- Goto ext
- End If
- End If
- End If
- ext:
- Return rslt
- end function
- public function integer uof_p_barcode (integer arg_audittype, ref string arg_msg, s_inwaremx_barcode_fp arg_mxbarcode_fp);Int rslt = 1
- Int li_storagetype_storage
- Long i,j,ll_find
- Long ll_scid,ll_mtrlwareid
- String ls_location_top1
- String ls_relbillcode
- Long ll_relbillid,ll_relprintid,ll_Porderid
- Int li_ordertype_order
- Decimal ld_qty
- uo_getbar uo_gb
- uo_gb = Create uo_getbar
- IF billtype <> 1 And billtype <> 3 And billtype <> 8 And billtype <> 9 And billtype <> 12 THEN
- rslt = 1
- GOTO ext
- END IF
- IF billtype = 8 And (sptname = '更新成本价(正单)' Or sptname = '调整成本价(负单)') THEN
- rslt = 1
- GOTO ext
- END IF
- IF it_mxbt_barcode = 0 THEN
- arg_msg = '没有条码明细,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF f_rst_storage_storagetype(storageid,li_storagetype_storage) = 0 THEN
- arg_msg = '查询仓库库存策略失败,请检查'
- rslt = 0
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt_barcode
- IF thflag = 0 THEN
- IF arg_audittype = 1 THEN
-
- IF uo_option_barcodelocation_use_inwaremx_location = 0 THEN
- ls_location_top1 = ''
- ELSE
- SELECT top 1 u_inwaremx.location
- INTO :ls_location_top1
- FROM u_inwaremx
- WHERE u_inwaremx.scid = :scid
- AND u_inwaremx.inwareid = :inwareid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询进仓单明细仓位信息失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- SELECT u_mtrlware.scid,u_mtrlware.mtrlwareid
- INTO :ll_scid,:ll_mtrlwareid
- FROM u_mtrlware,u_mtrlware_mx,u_mtrldef
- WHERE u_mtrlware.storageid = :storageid
- AND u_mtrlware_mx.barcode = :s_mx_barcode[i].barcode
- AND u_mtrlware.mtrlid = u_mtrlware_mx.mtrlid
- AND u_mtrlware.mtrlid = u_mtrldef.mtrlid
- AND ( u_mtrlware.sptid = u_mtrlware_mx.sptid AND :li_storagetype_storage = 0 OR
- u_mtrlware.sptid = 0 AND :li_storagetype_storage = 1 )
- AND u_mtrlware.status = u_mtrlware_mx.status
- AND u_mtrlware.woodcode = u_mtrlware_mx.woodcode
- AND u_mtrlware.pcode = u_mtrlware_mx.pcode
- AND u_mtrlware.plancode = u_mtrlware_mx.plancode
- AND ( u_mtrlware.mtrlcuscode = u_mtrlware_mx.mtrlcuscode AND :li_storagetype_storage = 0 OR
- :li_storagetype_storage = 1 AND u_mtrlware.mtrlcuscode = u_mtrlware_mx.mtrlcuscode AND (u_mtrldef.ifpackpro = 4 OR u_mtrldef.ifpack = 2) OR
- :li_storagetype_storage = 1 AND u_mtrlware.mtrlcuscode = '' AND u_mtrldef.ifpackpro <> 4 AND u_mtrldef.ifpack <> 2 )
- AND (u_mtrlware.Location = u_mtrlware_mx.Location AND :uo_option_barcodelocation_use_inwaremx_location = 0 OR
- u_mtrlware.Location = :ls_location_top1 And :uo_option_barcodelocation_use_inwaremx_location = 1 ) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '条码:'+s_mx_barcode[i].barcode+',查询库存资料失败,请检查对应条码单与库存资料,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF s_mx_barcode[i].u_mtrldef_ifbarcodefp = 0 THEN
- ls_relbillcode = ''
- ll_relbillid = 0
- ll_relprintid = 0
- ELSE
- IF billtype = 3 THEN
- IF s_mx_barcode[i].ifrel <> 1 THEN
- ls_relbillcode = ''
- ll_relbillid = 0
- ll_relprintid = 0
- ELSE
- SELECT u_order_ml.ordertype,
- u_order_ml.porderid,
- u_order_ml.saletaskcode,
- u_order_ml.taskid,
- u_order_ml.taskmxid
- INTO :li_ordertype_order,
- :ll_porderid,
- :ls_relbillcode,
- :ll_relbillid,
- :ll_relprintid
- FROM u_order_ml
- WHERE u_order_ml.scid = :s_mx_barcode[i].scid
- AND u_order_ml.orderid = :s_mx_barcode[i].orderid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '条码:'+s_mx_barcode[i].barcode+',查询对应车间指令单信息失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ordertype_order = 4 THEN
- SELECT u_order_ml.saletaskcode,
- u_order_ml.taskid,
- u_order_ml.taskmxid
- INTO :ls_relbillcode,
- :ll_relbillid,
- :ll_relprintid
- FROM u_order_ml
- WHERE u_order_ml.scid = :s_mx_barcode[i].scid
- AND u_order_ml.orderid = :ll_porderid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '条码:'+s_mx_barcode[i].barcode+',查询对应车间指令单相关主生产计划信息失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //yyx2013-5-24
- ld_qty = s_mx_barcode[i].packqty * s_mx_barcode[i].qty
-
- IF ll_relbillid > 0 THEN
- ll_find = 0
- FOR j = 1 To UpperBound(arg_mxbarcode_fp.mtrlwareid)
- IF arg_mxbarcode_fp.mtrlwareid[j] = ll_mtrlwareid And &
- arg_mxbarcode_fp.relbillid[j] = ll_relbillid And &
- arg_mxbarcode_fp.relprintid[j] = ll_relprintid THEN
- ll_find = j
- EXIT
- END IF
- NEXT
-
- IF ll_find = 0 THEN
- ls_relbillcode = ''
- ll_relbillid = 0
- ll_relprintid = 0
- ELSE
- IF arg_mxbarcode_fp.assignqty[ll_find] <= arg_mxbarcode_fp.fpqty[ll_find] THEN
- ls_relbillcode = ''
- ll_relbillid = 0
- ll_relprintid = 0
- ELSE
- arg_mxbarcode_fp.fpqty[ll_find] += ld_qty
- END IF
- END IF
- END IF
- //yyx2013-5-24_end
- END IF
- ELSE
- ls_relbillcode = ''
- ll_relbillid = 0
- ll_relprintid = 0
- END IF
- END IF
- ELSE
- ll_scid = 0
- ll_mtrlwareid = 0
- ls_relbillcode = ''
- ll_relbillid = 0
- ll_relprintid = 0
- END IF
- ELSE
- ll_scid = 0
- ll_mtrlwareid = 0
- END IF
-
- IF uo_gb.uof_barcode_in(s_mx_barcode[i].barcode,&
- ll_scid,ll_mtrlwareid,ls_relbillcode,ll_relbillid,ll_relprintid,&
- arg_audittype,thflag,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- END IF
- Destroy uo_getbar
- RETURN rslt
- end function
- public function integer p_update_mtrlware (long arg_mtrlid, string arg_mtrlcode, long arg_storageid, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_uqty, decimal arg_price, decimal arg_planprice, long arg_sptid, integer arg_dxflag, string arg_woodcode, string arg_pcode, string arg_mtrlcuscode, string arg_location, string arg_dscrp, integer arg_ifvqty, ref string arg_msg);Int rslt = 1
- Long ls_newid
- String or_err_part
- Decimal ld_cost
- Int li_storMtrlprp,li_ifcost
- Int if_recmp_balc
- Decimal ld_noallocqty,ld_allocqty
- Decimal ld_wareamt_check,ld_noallocqty_check
- If sys_if_recmp_balc < 0 Then
- Select if_recmp_balc
- Into :if_recmp_balc
- From sys_msg Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询是否执行结存表重算失败,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- If if_recmp_balc = 0 Then
- rslt = 0
- arg_msg = '由于系统升级,结存表结构与原来不同,请先通知管理员执行危险功能中的[按新结构重算现结存表]功能,才能审核和撤审进出仓单据'
- Goto ext
- End If
- Else
- If sys_if_recmp_balc = 0 Then
- rslt = 0
- arg_msg = '由于系统升级,结存表结构与原来不同,请先通知管理员执行危险功能中的[按新结构重算现结存表]功能,才能审核和撤审进出仓单据'
- Goto ext
- End If
- End If
- If uo_option_change_status = '-1000' Then
- rslt = 0
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_change_woodcode = '-1000' Then
- rslt = 0
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_change_pcode = '-1000' Then
- rslt = 0
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_cost_dec = -1000 Then
- rslt = 0
- arg_msg = '选项:[022]库存成本价转换小数点,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_mtrlware_autocmp = -1000 Then
- rslt = 0
- arg_msg = '选项:[158]自动计算库存包件可装数,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_djqty_check = -1000 Then
- rslt = 0
- arg_msg = '选项:[378]进出仓检查冻结数不能大于库存数,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- uo_cmpl_packpro uo_cmpl_p
- uo_cmpl_p = Create uo_cmpl_packpro
- uo_cmpl_p.commit_transaction = commit_transaction
- Decimal ld_pypkqty,ld_pypkamt
- Decimal ld_buyinqty,ld_buyinamt
- Decimal ld_buyinqty_pack,ld_buyinamt_pack
- Decimal ld_saleinqty_packpro,ld_saleinamt_packpro
- Decimal ld_cpinqty,ld_cpinamt
- Decimal ld_jginqty,ld_jginamt
- Decimal ld_diinqty,ld_diinamt
- Decimal ld_mvinqty,ld_mvinamt
- Decimal ld_otinqty,ld_otinamt
- Decimal ld_pyinqty,ld_pyinamt
- Int li_ifunit,li_ifpack,li_ifpackpro
- String ls_str
- Int li_statusflag
- Decimal ld_capacity,ld_capacity_zj
- s_mtrlcfg_expr s_pz[]
- String ls_status_zj
- Long ll_i
- Long ll_mtrlwareid,ll_mtrlwareid_find
- Int li_incheck,li_storagetype,li_ifmrp
- String ls_storagename
- Decimal i_auditingqty
- Select Mtrlprp,ifcost,incheck,storagetype,storagename,ifmrp
- Into :li_storMtrlprp,:li_ifcost,:li_incheck,:li_storagetype,:ls_storagename,:li_ifmrp
- From u_storage
- Where storageid = :arg_storageid Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询仓库类型失败'
- rslt = 0
- Goto ext
- End If
- Select ifunit,ifpack,capacity,statusflag,ifpackpro
- Into :li_ifunit,:li_ifpack,:ld_capacity,:li_statusflag,:li_ifpackpro
- From u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '查询物料信息失败'
- rslt = 0
- Goto ext
- End If
- If li_statusflag = 2 Then
- ld_capacity = 0
- f_checkpz(arg_status,s_pz[])
- For ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
-
- Select capacity
- Into :ld_capacity_zj
- From u_mtrl_configure
- Where mtrlid = :arg_mtrlid
- And Name = :ls_status_zj;
- If commit_transaction.SQLCode <> 0 Then
- ld_capacity_zj = 0
- End If
-
- ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_i].qty)
-
- Next
- End If
- Int li_ifupdate_date
- If billtype = 1 And thflag = 0 Or &
- billtype = 2 Or &
- billtype = 3 Or &
- billtype = 4 And thflag = 0 Or &
- billtype = 5 Or &
- billtype = 6 Or &
- billtype = 12 Or &
- billtype = 8 And sptname <> '调整成本价(负单)' And sptname <> '更新成本价(正单)' Or &
- billtype = 25 Or &
- billtype = 26 Or &
- billtype = 28 Then
- li_ifupdate_date = 1
- Else
- li_ifupdate_date = 0
- End If
- If li_ifunit = 0 Then arg_uqty = 0
- //检查库存
- If (li_storagetype = 1 Or arg_qty < 0 And li_incheck = 1) And Not (billtype = 8 And Pos(sptname,'调整成本价') > 0 ) Then
- Select noallocqty - noauditingqty,noallocqty,allocqty
- Into :i_auditingqty,:ld_noallocqty,:ld_allocqty
- From u_mtrlware
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- If commit_transaction.SQLCode = 100 Then
- i_auditingqty = 0
- Else
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致查询物料["+arg_mtrlcode+"]库存未开单数操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
-
- If IsNull(i_auditingqty) Then i_auditingqty = 0
- If IsNull(ld_noallocqty) Then ld_noallocqty = 0
- If IsNull(ld_allocqty) Then ld_allocqty = 0
-
- If arg_qty < 0 And li_incheck = 1 And Not (billtype = 8 And Pos(sptname,'调整成本价') > 0 ) Then
- If arg_qty + i_auditingqty < 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",物料["+arg_mtrlcode+"]未开单库存数只有"+String(i_auditingqty,'#####,0.00#######')+',不能扣减数量:'+String(0 - arg_qty,'#####,0.00#######')
- Goto ext
- End If
- End If
-
- If li_storagetype = 1 And billtype <> 23 Then
- If ld_noallocqty + arg_qty < ld_allocqty Then
- arg_msg = '仓库:'+ls_storagename+",物料["+arg_mtrlcode+']库存数小于已分配数,请检查库存'
- rslt = 0
- Goto ext
- End If
- End If
- End If
- //-------------------------------------------更新库存
- If li_ifcost = 1 Then //核算金额
- Select Case noallocqty + :arg_qty when 0 Then 0 Else wareamt + Round(:arg_qty * :arg_price,2) End,
- noallocqty + :arg_qty
- Into :ld_wareamt_check,
- :ld_noallocqty_check
- From u_mtrlware
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode = -1 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]库存信息(检查数量金额合理性)操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- ElseIf commit_transaction.SQLCode = 0 Then
- If ld_wareamt_check <> 0 And ld_noallocqty_check = 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",物料["+arg_mtrlcode+"]库存数量为0但金额不为0,操作取消"
- Goto ext
- End If
- End If
- Update u_mtrlware
- Set noallocqty = noallocqty + :arg_qty ,
- unoallocqty = unoallocqty + :arg_uqty,
- wareamt = case noallocqty + :arg_qty when 0 then 0 else wareamt + round(:arg_qty * :arg_price,2) End,
- waredate = case :li_ifupdate_date when 1 then getdate() else waredate End,
- newprice = :arg_price,
- dscrp = :arg_dscrp,
- capacity = capacity + :ld_capacity * :arg_qty ,
- cost = case noallocqty + :arg_qty when 0 then cost else round((wareamt + round(:arg_qty * :arg_price, 2)) / ( noallocqty + :arg_qty ),:uo_option_cost_dec) End
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode = 0 Then
- If commit_transaction.SQLNRows = 0 Then
- ///////////////////////// //
- ls_newid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ls_newid <= 0 Then
- rslt = 0
- Goto ext
- End If
- ///////////////////////// //
- ld_cost = Round(arg_price,uo_option_cost_dec)
- Insert Into u_mtrlware
- ( scid,
- mtrlwareid,
- mtrlid,
- storageid,
- plancode,
- status,
- noallocqty,
- unoallocqty,
- allocqty,
- wareamt,
- planprice,
- sptid,
- dxflag,
- woodcode,
- pcode,
- cost,
- storMtrlprp,
- dscrp,
- mtrlcuscode,
- location,
- capacity)
- Values (
- :scid,
- :ls_newid,
- :arg_mtrlid,
- :arg_storageid,
- :arg_plancode,
- :arg_status,
- :arg_qty,
- :arg_uqty,
- 0,
- round(:arg_price * :arg_qty,2),
- :arg_planprice,
- :arg_sptid,
- :arg_dxflag,
- :arg_woodcode,
- :arg_pcode,
- :ld_cost,
- :li_storMtrlprp,
- :arg_dscrp,
- :arg_mtrlcuscode,
- :arg_location,
- :ld_capacity * :arg_qty) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]库存建立操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
- End If
- Else
- rslt = 0
- If arg_status <> '' Then
- ls_str = ' '+uo_option_change_status+':'+arg_status
- End If
- If arg_pcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_pcode+':'+arg_pcode
- End If
- If arg_woodcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_woodcode+':'+arg_woodcode
- End If
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- If commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 Then
- arg_msg = '仓库:'+ls_storagename+",物料["+arg_mtrlcode+"]同仓库内同批号没有足够的库存支持冲减"
- ElseIf Pos(commit_transaction.SQLErrText,'CK_u_mtrlware') > 0 Then
- arg_msg = '仓库:'+ls_storagename+",物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号没有足够的库存支持冲减"
- ElseIf Pos(commit_transaction.SQLErrText,'CREATE RULE') > 0 And Pos(commit_transaction.SQLErrText,'cost') > 0 Then
- arg_msg = '仓库:'+ls_storagename+",物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号的库存金额不够冲减"
- Else
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]库存更新操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
- //-----------------------------------更新结存
- Select mtrlwareid Into :ll_mtrlwareid
- From u_mtrlware
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]查询库存操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- Choose Case billtype
- Case 1,2,5,26
- ld_buyinqty = arg_qty
- ld_buyinamt = Round(arg_qty * arg_price,2)
- Case 3
- ld_cpinqty = arg_qty
- ld_cpinamt = Round(arg_qty * arg_price,2)
- Case 4
- ld_jginqty = arg_qty
- ld_jginamt = Round(arg_qty * arg_price,2)
- Case 8
- ld_otinqty = arg_qty
- ld_otinamt = Round(arg_qty * arg_price,2)
- Case 9
- ld_pyinqty = arg_qty
- ld_pyinamt = Round(arg_qty * arg_price,2)
- ld_pypkqty = arg_qty
- ld_pypkamt = Round(arg_qty * arg_price,2)
- Case 12
- ld_mvinqty = arg_qty
- ld_mvinamt = Round(arg_qty * arg_price,2)
- Case 15
- ld_diinqty = arg_qty
- ld_diinamt = Round(arg_qty * arg_price,2)
- Case 23
- ld_saleinqty_packpro = arg_qty
- ld_saleinamt_packpro = Round(arg_qty * arg_price,2)
- Case 25
- ld_buyinqty_pack = arg_qty
- ld_buyinamt_pack = Round(arg_qty * arg_price,2)
- Case Else
- ld_otinqty = arg_qty
- ld_otinamt = Round(arg_qty * arg_price,2)
- End Choose
- Update u_warebalc
- Set incqty = incqty + :arg_qty ,
- incamt = incamt + round(:arg_qty * :arg_price,2),
-
- vincqty = case :arg_ifvqty when 0 then vincqty else vincqty + :arg_qty End,
- vincamt = case :arg_ifvqty when 0 then vincamt else vincamt + round(:arg_qty * :arg_price,2) End,
- uvincqty = case :arg_ifvqty when 0 then uvincqty else uvincqty + :arg_uqty End ,
-
- balcqty = balcqty + :arg_qty,
- balcamt = case balcqty + :arg_qty when 0 then 0 else balcamt + round(:arg_qty * :arg_price,2) End,
-
- pypk = pypk + :ld_pypkqty,
- pypkamt = pypkamt + :ld_pypkamt,
-
- uincqty = uincqty + :arg_uqty,
- ubalcqty = ubalcqty + :arg_uqty,
-
- buyinqty = buyinqty + :ld_buyinqty,
- buyinamt = buyinamt + :ld_buyinamt,
-
- buyinqty_pack = buyinqty_pack + :ld_buyinqty_pack,
- buyinamt_pack = buyinamt_pack + :ld_buyinamt_pack,
-
- saleinqty_packpro = saleinqty_packpro + :ld_saleinqty_packpro,
- saleinamt_packpro = saleinamt_packpro + :ld_saleinamt_packpro,
-
- cpinqty = cpinqty + :ld_cpinqty,
- cpinamt = cpinamt + :ld_cpinamt,
-
- jginqty = jginqty + :ld_jginqty,
- jginamt = jginamt + :ld_jginamt,
-
- otinqty = otinqty + :ld_otinqty,
- otinamt = otinamt + :ld_otinamt,
-
- mvinqty = mvinqty + :ld_mvinqty,
- mvinamt = mvinamt + :ld_mvinamt,
-
- diinqty = diinqty + :ld_diinqty,
- diinamt = diinamt + :ld_diinamt,
-
- pyinqty = pyinqty + :ld_pyinqty,
- pyinamt = pyinamt + :ld_pyinamt
- Where ( balcdateint = 0) And
- ( scid = :scid) And
- ( mtrlwareid = :ll_mtrlwareid) Using commit_transaction ;
- If commit_transaction.SQLCode = 0 Then
- If commit_transaction.SQLNRows = 0 Then
- Insert Into u_warebalc
- ( balcdateint,
- mtrlid,
- storageid,
- bgqty,
- bgamt,
- incqty,
- incamt,
- desqty,
- desamt,
- balcqty,
- balcamt,
- pypk,
- pypkamt,
- status,
- scid,
- buyinqty,
- buyinamt,
- buyinqty_pack,
- buyinamt_pack,
- saleinqty_packpro,
- saleinamt_packpro,
- cpinqty,
- cpinamt,
- jginqty,
- jginamt,
- diinqty,
- diinamt,
- mvinqty,
- mvinamt,
- otinqty,
- otinamt,
- pyinqty,
- pyinamt,
- woodcode,
- pcode,
- ubgqty,
- uincqty,
- udesqty,
- ubalcqty,
- plancode,
- sptid,
- dxflag,
- mtrlcuscode,
- location,
- mtrlwareid
- )
- Values (
- 0,
- :arg_mtrlid,
- :arg_storageid,
- 0,
- 0,
- :arg_qty,
- round(:arg_qty * :arg_price,2),
- 0,
- 0,
- :arg_qty,
- round(:arg_qty * :arg_price,2),
- :ld_pypkqty,
- :ld_pypkamt,
- :arg_status,
- :scid,
- :ld_buyinqty,
- :ld_buyinamt,
- :ld_buyinqty_pack,
- :ld_buyinamt_pack,
- :ld_saleinqty_packpro,
- :ld_saleinamt_packpro,
- :ld_cpinqty,
- :ld_cpinamt,
- :ld_jginqty,
- :ld_jginamt,
- :ld_diinqty,
- :ld_diinamt,
- :ld_mvinqty,
- :ld_mvinamt,
- :ld_otinqty,
- :ld_otinamt,
- :ld_pyinqty,
- :ld_pyinamt,
- :arg_woodcode,
- :arg_pcode,
- 0,
- :arg_uqty,
- 0,
- :arg_uqty,
- :arg_plancode,
- :arg_sptid,
- :arg_dxflag,
- :arg_mtrlcuscode,
- :arg_location,
- :ll_mtrlwareid
- ) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]结存建立操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- Else
- rslt = 0
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- If commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 Then
- arg_msg = '仓库:'+ls_storagename+",物料["+arg_mtrlcode+"]同仓库内同批号没有足够的结存支持冲减"
- Else
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]结存更新操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
- Else // 不核算金额
- Update u_mtrlware
- Set noallocqty = noallocqty + :arg_qty ,
- unoallocqty = unoallocqty + :arg_uqty,
- wareamt = 0,
- waredate = case :li_ifupdate_date when 1 then getdate() else waredate End,
- newprice = 0,
- dscrp = :arg_dscrp,
- cost = 0,
- capacity = capacity + :ld_capacity * :arg_qty
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode = 0 Then
- If commit_transaction.SQLNRows = 0 Then
- ///////////////////////// //
- ls_newid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ls_newid <= 0 Then
- rslt = 0
- Goto ext
- End If
- ///////////////////////// //
- Insert Into u_mtrlware
- ( scid,
- mtrlwareid,
- mtrlid,
- storageid,
- plancode,
- status,
- noallocqty,
- unoallocqty,
- allocqty,
- wareamt,
- planprice,
- sptid,
- dxflag,
- woodcode,
- pcode,
- cost,
- storMtrlprp,
- dscrp,
- mtrlcuscode,
- location,
- capacity)
- Values (
- :scid,
- :ls_newid,
- :arg_mtrlid,
- :arg_storageid,
- :arg_plancode,
- :arg_status,
- :arg_qty,
- :arg_uqty,
- 0,
- 0,
- 0,
- :arg_sptid,
- :arg_dxflag,
- :arg_woodcode,
- :arg_pcode,
- 0,
- :li_storMtrlprp,
- :arg_dscrp,
- :arg_mtrlcuscode,
- :arg_location,
- :ld_capacity * :arg_qty) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- If Pos(commit_transaction.SQLErrText,'CK_u_mtrlware') > 0 Then
- If arg_status <> '' Then
- ls_str = ' '+uo_option_change_status+':'+arg_status
- End If
- If arg_pcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_pcode+':'+arg_pcode
- End If
- If arg_woodcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_woodcode+':'+arg_woodcode
- End If
- arg_msg = '仓库:'+ls_storagename+",物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号没有足够的库存支持冲减"
- Else
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]库存建立操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
-
- End If
- Else
- rslt = 0
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- If commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 Then
- arg_msg = '仓库:'+ls_storagename+",物料["+arg_mtrlcode+"]同仓库内同批号没有足够的库存支持冲减"
- ElseIf Pos(commit_transaction.SQLErrText,'CK_u_mtrlware') > 0 Then
- If arg_status <> '' Then
- ls_str = ' '+uo_option_change_status+':'+arg_status
- End If
- If arg_pcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_pcode+':'+arg_pcode
- End If
- If arg_woodcode <> '' Then
- ls_str = ls_str + ' '+uo_option_change_woodcode+':'+arg_woodcode
- End If
- arg_msg = '仓库:'+ls_storagename+",物料:"+arg_mtrlcode+ls_str+" 同仓库内同批号没有足够的库存支持冲减"
- Else
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]库存更新操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
-
- //-----------------------------------更新结存
- Select mtrlwareid Into :ll_mtrlwareid
- From u_mtrlware
- Where ( mtrlid = :arg_mtrlid ) And
- ( plancode = :arg_plancode ) And
- ( storageid = :arg_storageid ) And
- ( scid = :scid ) And
- ( status = :arg_status ) And
- ( sptid = :arg_sptid) And
- ( dxflag = :arg_dxflag) And
- ( woodcode = :arg_woodcode) And
- ( pcode = :arg_pcode) And
- ( mtrlcuscode = :arg_mtrlcuscode) And
- ( Location = :arg_location) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]查询库存操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
-
-
- Choose Case billtype
- Case 1,2
- ld_buyinqty = arg_qty
- Case 3
- ld_cpinqty = arg_qty
- Case 4
- ld_jginqty = arg_qty
- Case 8
- ld_otinqty = arg_qty
- Case 9
- ld_pyinqty = arg_qty
- ld_pypkqty = arg_qty
- Case 12
- ld_mvinqty = arg_qty
- Case 15
- ld_diinqty = arg_qty
- Case 23
- ld_saleinqty_packpro = arg_qty
- Case 25
- ld_buyinqty_pack = arg_qty
- Case Else
- ld_otinqty = arg_qty
- End Choose
-
-
- Update u_warebalc
- Set incqty = incqty + :arg_qty ,
- uincqty = uincqty + :arg_uqty,
- incamt = 0,
- balcqty = balcqty + :arg_qty,
- ubalcqty = ubalcqty + :arg_uqty,
- balcamt = 0,
-
- pypk = pypk + :ld_pypkqty,
- pypkamt = 0,
-
- buyinqty = buyinqty + :ld_buyinqty,
- buyinamt = 0,
-
- buyinqty_pack = buyinqty_pack + :ld_buyinqty_pack,
- buyinamt_pack = 0,
-
- saleinqty_packpro = saleinqty_packpro + :ld_saleinqty_packpro,
- saleinamt_packpro = 0,
-
- cpinqty = cpinqty + :ld_cpinqty,
- cpinamt = 0,
-
- jginqty = jginqty + :ld_jginqty,
- jginamt = 0,
-
- otinqty = otinqty + :ld_otinqty,
- otinamt = 0,
-
- mvinqty = mvinqty + :ld_mvinqty,
- mvinamt = 0,
-
- diinqty = diinqty + :ld_diinqty,
- diinamt = 0,
-
- pyinqty = pyinqty + :ld_pyinqty,
- pyinamt = 0
- Where ( balcdateint = 0) And
- ( scid = :scid) And
- ( mtrlwareid = :ll_mtrlwareid) Using commit_transaction ;
- If commit_transaction.SQLCode = 0 Then
- If commit_transaction.SQLNRows = 0 Then
- Insert Into u_warebalc
- ( balcdateint,
- mtrlid,
- storageid,
- bgqty,
- bgamt,
- incqty,
- incamt,
- desqty,
- desamt,
- balcqty,
- balcamt,
- pypk,
- pypkamt,
- status,
- scid,
- buyinqty,
- buyinamt,
- buyinqty_pack,
- buyinamt_pack,
- saleinqty_packpro,
- saleinamt_packpro,
- cpinqty,
- cpinamt,
- jginqty,
- jginamt,
- diinqty,
- diinamt,
- mvinqty,
- mvinamt,
- otinqty,
- otinamt,
- pyinqty,
- pyinamt,
- woodcode,
- pcode,
- ubgqty,
- uincqty,
- udesqty,
- ubalcqty,
- plancode,
- sptid,
- dxflag,
- mtrlcuscode,
- location,
- mtrlwareid)
- Values (
- 0,
- :arg_mtrlid,
- :arg_storageid,
- 0,
- 0,
- :arg_qty,
- 0,
- 0,
- 0,
- :arg_qty,
- 0,
- :ld_pypkqty,
- 0,
- :arg_status,
- :scid,
-
- :ld_buyinqty,
- 0,
- :ld_buyinqty_pack,
- 0,
- :ld_saleinqty_packpro,
- 0,
- :ld_cpinqty,
- 0,
- :ld_jginqty,
- 0,
- :ld_diinqty,
- 0,
- :ld_mvinqty,
- 0,
- :ld_otinqty,
- 0,
- :ld_pyinqty,
- 0,
- :arg_woodcode,
- :arg_pcode,
- 0,
- :arg_uqty,
- 0,
- :arg_uqty,
- :arg_plancode,
- :arg_sptid,
- :arg_dxflag,
- :arg_mtrlcuscode,
- :arg_location,
- :ll_mtrlwareid) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]结存建立操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- Else
- rslt = 0
- or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement'
- If commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 Then
- arg_msg = '仓库:'+ls_storagename+",物料["+arg_mtrlcode+"]同仓库内同批号没有足够的结存支持冲减"
- Else
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]结存更新操作失败"+"~n"+commit_transaction.SQLErrText
- End If
- Goto ext
- End If
- End If
- If arg_qty > 0 Then
- If li_ifpack = 2 Then
- Update u_mtrlware
- Set u_mtrlware.dscrp = :arg_location,
- u_mtrlware.waredate = case :li_ifupdate_date when 1 then getdate() else u_mtrlware.waredate End
- From u_mtrlware,u_mtrldef
- Where u_mtrlware.mtrlid = u_mtrldef.mtrlid
- And u_mtrldef.ifpackpro = 2
- And u_mtrlware.mtrlcuscode = :arg_mtrlcuscode Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]更新个性包件产品库存摘要操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- ElseIf li_ifpackpro = 4 Then
- Update u_mtrlware
- Set u_mtrlware.dscrp = :arg_location,
- u_mtrlware.waredate = case :li_ifupdate_date when 1 then getdate() else u_mtrlware.waredate End
- From u_mtrlware,u_mtrldef
- Where u_mtrlware.mtrlid = u_mtrldef.mtrlid
- And u_mtrldef.ifpackpro = 4
- And u_mtrlware.mtrlid = :arg_mtrlid
- And u_mtrlware.mtrlcuscode = :arg_mtrlcuscode
- And (PATINDEX('%+%',u_mtrlware.status) > 0 Or PATINDEX('%*%',u_mtrlware.status) > 0) Using commit_transaction ;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '仓库:'+ls_storagename+",因网络或其它原因导致物料["+arg_mtrlcode+"]更新组合配置包件产品库存摘要操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- End If
- End If
- //自动计算包件产品可装数yyx20100414
- //yyx2012-9-28取消
- //If ( li_ifpack = 1 Or li_ifpack = 2 Or li_ifpackpro = 3 Or li_ifpackpro = 4 ) And uo_option_mtrlware_autocmp = 1 THEN
- // IF uo_cmpl_p.uof_cmpl(arg_mtrlid,arg_plancode,arg_mtrlcuscode,arg_storageid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- If uo_option_djqty_check = 1 and li_ifmrp = 1 Then
- Decimal ld_djqty
-
- Select SUM(u_OrderRqMtrl_scll.wareqty - u_OrderRqMtrl_scll.DstrQty + isnull(uv_outware_scll_back.qty,0) )
- Into :ld_djqty
- From u_OrderRqMtrl_scll Inner JOIN
- u_Order_ml ON u_OrderRqMtrl_scll.OrderID = u_Order_ml.OrderID LEFT OUTER JOIN
- uv_outware_scll_back ON u_OrderRqMtrl_scll.scid = uv_outware_scll_back.scid AND
- u_OrderRqMtrl_scll.OrderID = uv_outware_scll_back.relid AND
- u_OrderRqMtrl_scll.MtrlID = uv_outware_scll_back.mtrlid AND
- u_OrderRqMtrl_scll.status = uv_outware_scll_back.status AND
- u_OrderRqMtrl_scll.woodcode = uv_outware_scll_back.woodcode AND
- u_OrderRqMtrl_scll.pcode = uv_outware_scll_back.pcode
- Where (u_OrderRqMtrl_scll.wareqty <> 0) And (u_Order_ml.Status Not In (3,5,6))
- And u_OrderRqMtrl_scll.wareqty - u_OrderRqMtrl_scll.DstrQty + isnull(uv_outware_scll_back.qty,0)> 0
- And u_OrderRqMtrl_scll.MtrlID = :arg_mtrlid
- And u_OrderRqMtrl_scll.scid = :scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- ld_djqty = 0
- End If
-
- If IsNull(ld_djqty) Then ld_djqty = 0
-
- Select SUM(u_mtrlware.noallocqty)
- Into :ld_noallocqty
- From u_mtrlware Inner JOIN
- u_storage ON u_mtrlware.storageid = u_storage.storageid
- Where (u_storage.inuse = 1)
- And u_storage.ifmrp = 1
- And u_mtrlware.mtrlid = :arg_mtrlid
- And u_mtrlware.scid = :scid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- ld_noallocqty = 0
- End If
-
- If IsNull(ld_noallocqty) Then ld_noallocqty = 0
-
- If ld_djqty > ld_noallocqty Then
- rslt = 0
- arg_msg = '物料['+arg_mtrlcode+']冻结数不能大于库存数,冻结数:'+String(ld_djqty,'#,##0.##########')+',库存数:'+String(ld_noallocqty,'#,##0.##########')
- Goto ext
- End If
-
- End If
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- End If
- Destroy uo_cmpl_p
- Return rslt
- end function
- public function integer mod_price (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_enprice, decimal arg_jgprice, decimal arg_tax, decimal arg_rebate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_StoreBalcType
- Int li_storagetype
- Long ll_cnt
- Long ll_option_buy_sptprice_sec
- String ls_optionvalue
- String ls_unit
- Decimal ld_fprice_notax
- f_get_sys_option_value('168',ls_optionvalue,arg_msg)
- ll_option_buy_sptprice_sec = Long(ls_optionvalue)
- IF uo_option_unit_dec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[023]辅助单位转换库存单位小数位,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF ll_option_buy_sptprice_sec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[168]采购收货单财审更新供应商最新价,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- IF p_getinfo(arg_scid,arg_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = '进仓单待审核状态下不能执行修改单价功能'
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = '进仓单已财审,不能执行修改单价功能'
- GOTO ext
- END IF
- SELECT storagetype, StoreBalcType
- INTO :li_storagetype, :li_StoreBalcType
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库属性"
- GOTO ext
- END IF
- IF li_StoreBalcType = 0 THEN
- IF balcdateint > 0 THEN
- rslt = 0
- arg_msg = "单据已结存,不能修改"
- GOTO ext
- END IF
- ELSE
- SELECT count(*)
- INTO :ll_cnt
- FROM u_warebalc
- WHERE storageid = :storageid
- AND balcdateint = :balcdateint
- AND AmtAuditFlag = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库属性"
- GOTO ext
- END IF
-
- IF ll_cnt > 0 THEN
- rslt = 0
- arg_msg = "仓库已金额结存,不能修改"
- GOTO ext
- END IF
- END IF
- Decimal ld_enprice,ld_uprice,ld_uqty,ld_rate,ld_qty,ld_rebate,ld_cost,ld_deliqty,ld_tax, lde_cost
- Long ll_mtrlid, ll_mtrlwareid
- String ls_status,ls_woodcode,ls_pcode,ls_plancode,ls_mtrlcuscode,ls_location
- Long ll_sptid,ll_ifpack,ll_ifpackpro
- String ls_mxdscrp
- Long ll_sptid_m
- String ls_mtrlcuscode_m
- SELECT u_inwaremx.enprice,
- u_inwaremx.uprice,
- u_inwaremx.uqty,
- u_inwaremx.rate,
- u_inwaremx.qty,
- u_inwaremx.rebate,
- u_inwaremx.mtrlid,
- u_inwaremx.status,
- u_inwaremx.woodcode,
- u_inwaremx.pcode,
- u_inwaremx.cost,
- u_inwaremx.plancode,
- u_inwaremx.sptid_cusid,
- u_inwaremx.mtrlcuscode,
- u_inwaremx.location,
- u_mtrldef.ifpack,
- u_mtrldef.ifpackpro,
- u_inwaremx.deliqty,
- u_inwaremx.tax,
- u_inwaremx.mtrlwareid,
- u_inwaremx.cost,
- u_inwaremx.unit,
- u_inwaremx.mxdscrp
- INTO :ld_enprice,
- :ld_uprice,
- :ld_uqty,
- :ld_rate,
- :ld_qty,
- :ld_rebate,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ld_cost,
- :ls_plancode,
- :ll_sptid,
- :ls_mtrlcuscode,
- :ls_location,
- :ll_ifpack,
- :ll_ifpackpro,
- :ld_deliqty,
- :ld_tax,
- :ll_mtrlwareid,
- :lde_cost,
- :ls_unit,
- :ls_mxdscrp
- FROM u_inwaremx INNER JOIN
- u_mtrldef ON u_inwaremx.mtrlid = u_mtrldef.mtrlid
- WHERE u_inwaremx.scid = :arg_scid
- AND u_inwaremx.inwareid = :arg_inwareid
- AND u_inwaremx.printid = :arg_printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询进仓单明细内容失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_mtrlwareid = 0 THEN
- //马上处理一次,如果不行,再报错误
- IF li_storagetype = 1 And ll_ifpack <> 2 And ll_ifpackpro <> 2 And ll_ifpackpro <> 4 THEN
- IF billtype = 17 THEN //客户调货条码转换单
- ll_sptid_m = ll_sptid
- ls_mtrlcuscode_m = ls_mtrlcuscode
- ELSE
- ll_sptid_m = 0
- ls_mtrlcuscode_m = ''
- END IF
- ELSE
- IF billtype = 4 THEN
- ll_sptid_m = 0
- ELSE
- ll_sptid_m = ll_sptid
- END IF
- ls_mtrlcuscode_m = ls_mtrlcuscode
- END IF
-
- //取库存信息yyx2012-09-25
- Long ll_mtrlwareid_ref
- ll_mtrlwareid_ref = 0
- IF uof_ref_mtrlwareid(scid,storageid,ll_mtrlid,&
- ls_status,ls_woodcode,ls_pcode,ls_plancode,&
- ls_location,ll_sptid_m,ls_mtrlcuscode_m,ll_mtrlwareid_ref,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF p_update_mtrlwareid_inwaremx(ll_mtrlwareid_ref,arg_inwareid,arg_printid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_mtrlwareid = ll_mtrlwareid_ref
-
- IF ll_mtrlwareid = 0 THEN
- rslt = 0
- arg_msg = '明细库存ID为0,不能操作'
- GOTO ext
- END IF
- END IF
- IF arg_tax = -1 THEN arg_tax = ld_tax
- IF arg_rebate = -1 THEN arg_rebate = ld_rebate
- IF arg_enprice = ld_enprice And arg_tax = ld_tax And arg_rebate = ld_rebate THEN
- rslt = 1
- // rslt = 0
- // arg_msg = '单价、折扣、税率没有任何修改,不能保存'
- GOTO ext
- END IF
- Decimal ld_uprice_new,ld_fprice_new,ld_price_new,ld_cost_new
- Decimal ld_enprice_tax,ld_enprice_notax,ld_deliprice_notax
- ld_uprice_new = Round(arg_enprice * mrate,10)
- ld_fprice_new = Round((ld_uprice_new * ld_uqty)/(Round(ld_uqty * ld_rate,uo_option_unit_dec)),10)
- ld_price_new = ld_fprice_new * arg_rebate
- ld_deliprice_notax = arg_enprice / (1 + arg_tax)
- IF ld_uqty <> 0 THEN
- ld_enprice_tax = ld_deliqty * arg_enprice / ld_uqty
- ld_enprice_notax = (ld_deliqty * arg_enprice / ld_uqty) / (1 + arg_tax)
- ELSE
- ld_enprice_tax = arg_enprice
- ld_enprice_notax = arg_enprice / (1 + arg_tax)
- END IF
- ld_enprice_tax = Abs(ld_enprice_tax)
- ld_enprice_notax = Abs(ld_enprice_notax)
- IF billtype = 1 THEN //采购
- IF thflag = 0 THEN
- ld_cost_new = ld_fprice_new * arg_rebate
- ELSE //采购退货单
- ld_cost_new = lde_cost
- END IF
- ELSEIF billtype = 4 THEN //外协
- IF ld_qty > 0 THEN
- ld_cost_new = ld_fprice_new * arg_rebate
- ELSE
- ld_cost_new = lde_cost
- END IF
- ELSE
- ld_cost_new = ld_fprice_new * arg_rebate
- END IF
- UPDATE u_inwaremx
- SET enprice = :arg_enprice,
- uprice = :ld_uprice_new,
- fprice = :ld_fprice_new,
- price = :ld_price_new,
- cost = :ld_cost_new,
- jgprice = :arg_jgprice,
- deliprice_notax = :ld_deliprice_notax,
- enprice_tax = :ld_enprice_tax,
- enprice_notax = :ld_enprice_notax,
- tax = :arg_tax,
- rebate = :arg_rebate
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据明细失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //重算结存,
- IF f_warebalc_cmpl_one(storageid, balcdateint, ll_mtrlwareid, arg_msg, False, commit_transaction) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //如果是采购收货单/退货单, 更新供应商最新收货价
- IF ll_option_buy_sptprice_sec = 0 And billtype = 1 THEN
- ld_fprice_notax = ld_fprice_new / ( 1 + arg_tax)
-
- IF uo_sptprice.uof_update_sptprice(thflag,sptid,ll_mtrlid,ls_unit,ls_status,ls_woodcode,ls_pcode,'',inwareid,arg_enprice,ld_rebate,ld_rate,ld_fprice_new,ld_fprice_notax,indate,inwarecode,0,ls_mxdscrp,arg_printid,0,moneyid,indate,DateTime(9999-01-01),False,arg_msg) = 0 THEN
- arg_msg = '更新最新收货价失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- // //更新结存,库存,出仓相应金额
- //IF li_storagetype = 1 And ll_ifpack <> 2 And ll_ifpackpro <> 2 And ll_ifpackpro <> 4 THEN
- // IF billtype = 17 THEN //客户调货条码转换单
- // ll_sptid_m = ll_sptid
- // ls_mtrlcuscode_m = ls_mtrlcuscode
- // ELSE
- // ll_sptid_m = 0
- // ls_mtrlcuscode_m = ''
- // END IF
- //ELSE
- // IF billtype = 4 THEN
- // ll_sptid_m = 0
- // ELSE
- // ll_sptid_m = ll_sptid
- // END IF
- // ls_mtrlcuscode_m = ls_mtrlcuscode
- //END IF
- //
- //Decimal ld_bgamt,ld_incamt,ld_bgqty,ld_incqty
- //Decimal ld_newcost
- //
- //IF thflag = 0 THEN
- // SELECT bgamt,
- // incamt,
- // bgqty,
- // incqty
- // INTO :ld_bgamt,
- // :ld_incamt,
- // :ld_bgqty,
- // :ld_incqty
- // FROM u_warebalc
- // WHERE mtrlid = :ll_mtrlid
- // AND balcdateint = 0
- // AND storageid = :storageid
- // AND status = :ls_status
- // AND woodcode = :ls_woodcode
- // AND pcode = :ls_pcode
- // AND plancode = :ls_plancode
- // AND mtrlcuscode = :ls_mtrlcuscode_m
- // AND sptid = :ll_sptid_m
- // AND location = :ls_location
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询相关结存信息失败'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF ld_bgqty + ld_incqty <> 0 THEN
- // ld_newcost = Round((ld_bgamt + ld_incamt - ld_cost * ld_qty + ld_cost_new * ld_qty) / (ld_bgqty + ld_incqty),10)
- // ELSE
- // ld_newcost = 0
- // END IF
- //
- // IF ld_newcost < 0 THEN ld_newcost = 0
- //
- // UPDATE u_warebalc
- // SET incamt = incamt + round((:ld_cost_new - :ld_cost) * :ld_qty,2),
- // desamt = round(desqty * :ld_newcost,2),
- // balcamt = round(balcqty * :ld_newcost,2)
- // WHERE mtrlid = :ll_mtrlid
- // AND balcdateint = 0
- // AND Storageid = :storageid
- // AND status = :ls_status
- // AND woodcode = :ls_woodcode
- // AND pcode = :ls_pcode
- // AND plancode = :ls_plancode
- // AND mtrlcuscode = :ls_mtrlcuscode_m
- // AND sptid = :ll_sptid_m
- // AND location = :ls_location
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新结存表失败'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // UPDATE u_mtrlware
- // SET cost = :ld_newcost,
- // wareamt = round(noallocqty * :ld_newcost,2)
- // WHERE mtrlid = :ll_mtrlid
- // AND Storageid = :storageid
- // AND status = :ls_status
- // AND woodcode = :ls_woodcode
- // AND pcode = :ls_pcode
- // AND plancode = :ls_plancode
- // AND mtrlcuscode = :ls_mtrlcuscode_m
- // AND sptid = :ll_sptid_m
- // AND location = :ls_location
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新库存表失败'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // UPDATE u_outwaremx
- // SET u_outwaremx.costamt = round(u_outwaremx.qty * :ld_newcost,2)
- // FROM u_outwaremx INNER JOIN
- // u_outware ON u_outwaremx.scid = u_outware.scid AND
- // u_outwaremx.outwareid = u_outware.outwareid
- // WHERE u_outwaremx.mtrlid = :ll_mtrlid
- // AND u_outware.storageid = :storageid
- // AND u_outwaremx.status = :ls_status
- // AND u_outwaremx.woodcode = :ls_woodcode
- // AND u_outwaremx.pcode = :ls_pcode
- // AND u_outwaremx.plancode = :ls_plancode
- // AND u_outwaremx.mtrlcuscode = :ls_mtrlcuscode_m
- // AND u_outwaremx.sptid = :ll_sptid_m
- // AND u_outwaremx.location = :ls_location
- // AND u_outware.balcflag = 0
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新未结存的出仓单金额失败'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- //END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx_mx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_fprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, long arg_mxprintid, string arg_waredscrp, string arg_mtrlcuscode, string arg_location, long arg_ptinwareid, long arg_ptprintid, integer arg_ifnotinout);Int rslt = 1
- Long cnt = 0,ls_i
- Decimal ld_cost
- String ls_ptinwarecode
- IF uo_option_change_status = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_woodcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_change_pcode = '-1000' THEN
- rslt = 0
- arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_printid) THEN arg_printid = 0
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
- IF IsNull(arg_plancode) THEN arg_plancode = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_qty) THEN arg_qty = 0
- IF IsNull(arg_fprice) THEN arg_fprice = 0
- IF IsNull(arg_rebate) THEN arg_rebate = 1
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_mxdscrp) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF IsNull(arg_cusid_sptid) THEN arg_cusid_sptid = 0
- IF IsNull(arg_mxprintid) THEN arg_mxprintid = 0
- IF IsNull(arg_waredscrp) THEN arg_waredscrp = ''
- IF IsNull(arg_mtrlcuscode) THEN arg_mtrlcuscode = ''
- IF IsNull(arg_location) THEN arg_location = ''
- IF IsNull(arg_ptinwareid) THEN arg_ptinwareid = 0
- IF IsNull(arg_ptprintid) THEN arg_ptprintid = 0
- IF arg_rebate = 0 THEN arg_rebate = 1
- IF arg_mtrlid = 0 OR arg_qty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF f_check_status(1,arg_status) = 0 THEN
- rslt = 0
- arg_msg = "包件明细行:"+String(arg_mxprintid)+",查询操作失败,可能"+uo_option_change_status+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
- GOTO ext
- END IF
- IF f_check_status(2,arg_woodcode) = 0 THEN
- rslt = 0
- arg_msg = "包件明细行:"+String(arg_mxprintid)+",查询操作失败,可能"+uo_option_change_woodcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
- GOTO ext
- END IF
- IF f_check_status(3,arg_pcode) = 0 THEN
- rslt = 0
- arg_msg = "包件明细行:"+String(arg_mxprintid)+",查询操作失败,可能"+uo_option_change_pcode+"未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
- GOTO ext
- END IF
- IF arg_rebate <= 0 THEN
- arg_msg = '折扣错误,请检查'
- rslt = 0
- GOTO ext
- END IF
- //检查物料id
- Int li_statusflag
- SELECT statusflag
- INTO :li_statusflag
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,物料或产品编号:"+arg_mtrlcode
- GOTO ext
- END IF
- IF li_statusflag = 2 AND Trim(arg_status) = '' THEN
- rslt = 0
- arg_msg = '第'+String(arg_printid)+'行,产品:'+arg_mtrlcode+' 属于组合配置类型,但没有输入配置,请检查'
- GOTO ext
- END IF
- IF arg_fprice * arg_rebate < 0 THEN //检查进仓价
- rslt = 0
- arg_msg = "物料或产品:" + String(arg_mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- IF billtype = 27 THEN
- SELECT inwarecode INTO :ls_ptinwarecode
- FROM u_inware
- WHERE scid = :scid
- AND inwareid = :arg_ptinwareid
- AND billtype = 26
- AND flag = 1 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '配套明细行:'+String(arg_mxprintid)+',查询相关采购收货包件进仓单号失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- //写入内容
- it_mxbt_mx++
- inwaremx_mx[it_mxbt_mx].printid = arg_printid
- inwaremx_mx[it_mxbt_mx].mtrlid = arg_mtrlid
- inwaremx_mx[it_mxbt_mx].mtrlcode = arg_mtrlcode
- inwaremx_mx[it_mxbt_mx].plancode = arg_plancode
- inwaremx_mx[it_mxbt_mx].status = arg_status
- inwaremx_mx[it_mxbt_mx].fprice = arg_fprice
- inwaremx_mx[it_mxbt_mx].rebate = arg_rebate
- inwaremx_mx[it_mxbt_mx].qty = arg_qty
- inwaremx_mx[it_mxbt_mx].price = arg_fprice * arg_rebate
- inwaremx_mx[it_mxbt_mx].mxdscrp = arg_mxdscrp
- inwaremx_mx[it_mxbt_mx].mxprintid = arg_mxprintid
- inwaremx_mx[it_mxbt_mx].woodcode = arg_woodcode
- inwaremx_mx[it_mxbt_mx].pcode = arg_pcode
- inwaremx_mx[it_mxbt_mx].waredscrp = arg_waredscrp
- inwaremx_mx[it_mxbt_mx].mtrlcuscode = arg_mtrlcuscode
- inwaremx_mx[it_mxbt_mx].Location = arg_location
- inwaremx_mx[it_mxbt_mx].sptid = arg_cusid_sptid
- inwaremx_mx[it_mxbt_mx].ptinwareid = arg_ptinwareid
- inwaremx_mx[it_mxbt_mx].ptprintid = arg_ptprintid
- inwaremx_mx[it_mxbt_mx].ptinwarecode = ls_ptinwarecode
- inwaremx_mx[it_mxbt_mx].ifnotinout = arg_ifnotinout
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN(rslt)
- end function
- on uo_inware.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_inware.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('142',str_optionvalue,arg_msg)
- uo_option_inout_type = Long(str_optionvalue)
- f_get_sys_option_value('206',str_optionvalue,arg_msg)
- uo_option_barcode_inwareother_paudit = Long(str_optionvalue)
- f_get_sys_option_value('208',str_optionvalue,arg_msg)
- uo_option_barcode_inwarebuy_paudit = Long(str_optionvalue)
- f_get_sys_option_value('207',str_optionvalue,arg_msg)
- uo_option_barcode_inwarecp_paudit = Long(str_optionvalue)
- f_get_sys_option_value('063',str_optionvalue,arg_msg)
- uo_option_mtrlware_dscrp = Long(str_optionvalue)
- f_get_sys_option_value('023',str_optionvalue,arg_msg)
- uo_option_unit_dec = Long(str_optionvalue)
- f_get_sys_option_value('183',str_optionvalue,arg_msg)
- uo_option_buy_zero = Long(str_optionvalue)
- f_get_sys_option_value('184',str_optionvalue,arg_msg)
- uo_option_wfjg_zero = Long(str_optionvalue)
- f_get_sys_option_value('029',str_optionvalue,arg_msg)
- uo_option_change_status = str_optionvalue
- f_get_sys_option_value('027',str_optionvalue,arg_msg)
- uo_option_change_woodcode = str_optionvalue
- f_get_sys_option_value('028',str_optionvalue,arg_msg)
- uo_option_change_pcode = str_optionvalue
- f_get_sys_option_value('010',str_optionvalue,arg_msg)
- uo_option_ifovertask = Long(str_optionvalue)
- f_get_sys_option_value('112',str_optionvalue,arg_msg)
- uo_option_ifovertask_cp = Long(str_optionvalue)
- f_get_sys_option_value('022',str_optionvalue,arg_msg)
- uo_option_cost_dec = Long(str_optionvalue)
- f_get_sys_option_value('158',str_optionvalue,arg_msg)
- uo_option_mtrlware_autocmp = Long(str_optionvalue)
- f_get_sys_option_value('285',str_optionvalue,arg_msg)
- uo_option_use_clfp = Long(str_optionvalue)
- f_get_sys_option_value('287',str_optionvalue,arg_msg)
- uo_option_barcodelocation_use_inwaremx_location = Long(str_optionvalue)
- f_get_sys_option_value('249',str_optionvalue,arg_msg)
- uo_option_cp_inware_scll_rate = long(str_optionvalue)
- f_get_sys_option_value('362',str_optionvalue,arg_msg)
- uo_option_cost_notax = long(str_optionvalue)
- f_get_sys_option_value('378',str_optionvalue,arg_msg)
- uo_option_djqty_check = long(str_optionvalue)
- f_get_sys_option_value('417',str_optionvalue,arg_msg)
- uo_option_canpack_ifzanyong = Long(str_optionvalue)
- end event
|