123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396 |
- $PBExportHeader$uo_inware_buy.sru
- forward
- global type uo_inware_buy from uo_inware
- end type
- end forward
- global type uo_inware_buy from uo_inware
- end type
- global uo_inware_buy uo_inware_buy
- type variables
- Int uo_option_buy_sptprice_sec,uo_option_check_buyin,uo_option_m_mstpay
- Int uo_option_buyth_use_price_update_wareamt
- end variables
- forward prototypes
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer secauditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg)
- public function integer p_update_th_cost (long arg_printid, string arg_mtrlcode, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, long arg_dxflag, long arg_sptid, string arg_mtrlcuscode, string arg_location, ref decimal arg_ref_cost, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_ptqty (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_ptqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_destroy_buytask (ref string arg_msg)
- public function integer uof_create_buytask (ref string arg_msg)
- public function integer uof_chk_audit (integer arg_type, long arg_scid, long arg_inwareid, long arg_printid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_create_move (long arg_scid, long arg_inwareid, long arg_printid, ref string arg_msg)
- public function integer uof_destroy_move (long arg_scid, long arg_inwareid, long arg_printid, ref string arg_msg)
- public function integer uof_update_chkqty (long arg_scid, long arg_inwareid, long arg_printid, s_inwaremx s_mx, ref string arg_msg, boolean arg_ifcommit)
- public function integer uf_cmp_mxmx (ref string arg_msg)
- end prototypes
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- Long cnt = 0,i,j,mx_barcode_cnt,k
- String ls_about,ls_dscrp
- Long ll_billtype
- Long ll_balctype
- Long ll_sptid,ll_mtrlwareid_ref
- Decimal ld_saletask_notfpqty,ld_fpqty
- String ls_mtrlcuscode
- String ls_storagename
- Decimal ld_fprice_notax
- Int li_outtype,li_storagetype,li_ifvqty
- s_inwaremx_barcode_fp arg_s_mxbarcode_fp
- Long rst_outwareid //
- Long rst_inwareid //
- s_inwaremx s_mx
- s_outwaremx s_mx_out
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.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_inwarebuy_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[208]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buy_sptprice_sec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[168]采购收货单财审更新供应商最新价,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_check_buyin = -1000 THEN
- rslt = 0
- arg_msg = '选项:[130]采购先质检后进仓,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_buyth_use_price_update_wareamt = -1000 THEN
- rslt = 0
- arg_msg = '选项:[331]采购退货单用退货单价扣减库存金额,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_inware uo_in,uo_in_th
- uo_outware uo_out
- uo_in = Create uo_inware
- uo_in.commit_transaction = sqlca
- uo_in.if_getid_ture = False
- uo_in_th = Create uo_inware
- uo_in_th.commit_transaction = sqlca
- uo_in_th.if_getid_ture = False
- uo_out = Create uo_outware
- uo_out.commit_transaction = sqlca
- uo_out.if_getid_ture = False
- Long arg_s_arr,ll_relbillid,ll_relprintid,ll_orderid_buytask
- 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
- uo_buytask uo_task
- uo_task = Create uo_buytask
- uo_task.commit_transaction = commit_transaction
- uo_sptcheck uo_sptch
- uo_sptch = Create uo_sptcheck
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- 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
- INTO :ls_storagename,:li_outtype,:li_storagetype
- 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_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
- //
- IF uo_option_inout_type = 2 And &
- uo_option_barcode_inwarebuy_paudit = 1 And &
- (li_outtype = 2 Or li_outtype = 3 ) THEN
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "单据未确认"
- GOTO ext
- END IF
- END IF
- IF li_outtype = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_inwaremx_mx_barcode
- WHERE u_inwaremx_mx_barcode.inwareid = :inwareid
- AND u_inwaremx_mx_barcode.scid = :scid
- AND u_inwaremx_mx_barcode.billtype = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单条码明细数量,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 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 billtype = 1 And li_outtype > 0 THEN
- IF thflag = 0 THEN
- IF uo_out.newbegin(scid,23,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_out.relid = inwareid
- uo_out.outdate = indate
- uo_out.outrep = inrep
- uo_out.part = inwarecode
- uo_out.dscrp = dscrp
- uo_out.cusname = '收货单明细自动出仓'
- uo_out.storageid = storageid
- ELSE
- IF uo_in.newbegin(scid,25,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = inwareid
- uo_in.indate = indate
- uo_in.inrep = inrep
- uo_in.part = inwarecode
- uo_in.dscrp = dscrp
- uo_in.sptname = '退货单退货明细自动进仓'
- uo_in.storageid = storageid
- END IF
-
- //检查条码数量是否匹配
- IF li_outtype = 2 Or li_outtype = 3 THEN
- IF uof_check_barcodeqty(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_inware
- SET auditingrep = :publ_operator,
- auditingdate = getdate(),
- flag = 1
- WHERE u_inware.inwareid = :inwareid
- AND flag = 0
- AND secflag = 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
- IF billtype = 1 And thflag = 1 And li_outtype > 0 THEN
- FOR i = 1 To it_mxbt
-
- s_mx.printid = inwaremx[i].printid
- s_mx.mtrlid = inwaremx[i].mtrlid
- s_mx.mtrlcode = inwaremx[i].mtrlcode
- s_mx.plancode = inwaremx[i].plancode
- s_mx.status = inwaremx[i].status
- s_mx.uqty = (0 - inwaremx[i].qty)
- s_mx.enprice = inwaremx[i].fprice
- s_mx.rebate = 1
- s_mx.mxdscrp = inwaremx[i].mxdscrp
- s_mx.jgprice = 0
- s_mx.relid = 0
- s_mx.ifrel = 0
- s_mx.woodcode = inwaremx[i].woodcode
- s_mx.pcode = inwaremx[i].pcode
- s_mx.sptid = inwaremx[i].sptid
- s_mx.unit = inwaremx[i].unit
- s_mx.rate = 1
- s_mx.qty = (0 - inwaremx[i].qty)
- s_mx.relprintid = 0
- s_mx.checkqty = 0
- s_mx.result = ''
- s_mx.waredscrp = ''
- s_mx.relbillid = 0
- s_mx.relbillprintid = 0
- s_mx.mtrlcuscode = inwaremx[i].mtrlcuscode
- s_mx.Location = inwaremx[i].Location
- s_mx.deliqty = Abs(inwaremx[i].qty)
- s_mx.tax = 0
-
- IF inwaremx[i].ifpackpro = 0 THEN
- s_mx.ifvqty = 1
- s_mx.ifnotinout = 1
- ELSE
- s_mx.ifvqty = 0
- s_mx.ifnotinout = 0
- END IF
-
- IF uo_in.acceptmx(s_mx, arg_msg) = 0 THEN
- arg_msg = '退货单退货明细自动进仓单,行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- // IF uo_in.acceptmx(inwaremx[i].printid,&
- // inwaremx[i].mtrlid,&
- // inwaremx[i].mtrlcode,&
- // inwaremx[i].plancode,&
- // inwaremx[i].status,&
- // (0 - inwaremx[i].qty),&
- // inwaremx[i].fprice,&
- // 1,&
- // inwaremx[i].mxdscrp,&
- // arg_msg,&
- // 0,0,0,inwaremx[i].woodcode,&
- // inwaremx[i].pcode,inwaremx[i].sptid,&
- // inwaremx[i].unit,1,&
- // (0 - inwaremx[i].qty),0,0,'','',0,0,&
- // inwaremx[i].mtrlcuscode,inwaremx[i].Location,&
- // Abs(inwaremx[i].qty),&
- // 0) = 0 THEN
- // arg_msg = '退货单退货明细自动进仓单,行:'+String(i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- NEXT
-
- IF uo_in.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.getinfo(scid,uo_in.inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- 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].cost = 0 THEN
- rslt = 0
- arg_msg = '采购收货单或采购退货单,行:'+String(i)+',物料编码:'+inwaremx[i].mtrlcode+',没有单价,请检查'
- GOTO ext
- END IF
- END IF
-
- //查询相关订单属于材料订单还是成品订单
- If ( billtype = 1 Or billtype = 27 ) And inwaremx[i].relid > 0 THEN
- SELECT u_buytask.billtype INTO :ll_billtype
- FROM u_buytask
- WHERE u_buytask.taskid = :inwaremx[i].relid
- And u_buytask.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '采购收货单或采购退货单,查询订单类型失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ll_billtype = 0
- END IF
-
- inwaremx[i].mxbilltype = ll_billtype //用作判断收货单明细对应的订单明细是属于那种类型的订单; uof_create_buytask 有用
-
- //yyx20120206
- IF billtype = 1 THEN
- 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
- ll_sptid = inwaremx[i].sptid
- ls_mtrlcuscode = inwaremx[i].mtrlcuscode
- END IF
- //yyx20120206_end
-
- Decimal ld_cost
-
- //更新退货成本价
- IF thflag = 1 THEN
- IF uo_option_buyth_use_price_update_wareamt = 1 THEN
- UPDATE u_inwaremx
- SET cost = :inwaremx[i].price
- WHERE scid = :scid
- AND inwareid = :inwareid
- And printid = :inwaremx[i].printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '收货明细行:'+String(i)+','+ '更新退货成本价失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ld_cost = inwaremx[i].price
- ELSE
- IF p_update_th_cost(inwaremx[i].printid,&
- inwaremx[i].mtrlcode,&
- inwaremx[i].mtrlid,&
- inwaremx[i].status,&
- inwaremx[i].woodcode,&
- inwaremx[i].pcode,&
- inwaremx[i].plancode,&
- inwaremx[i].dxflag,&
- ll_sptid,&
- ls_mtrlcuscode,&
- inwaremx[i].Location,&
- ld_cost,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '收货明细行:'+String(i)+','+arg_msg
- GOTO ext
- END IF
- END IF
- ELSE
- ld_cost = inwaremx[i].cost
- END IF
-
- IF sys_option_inout_procedure = 0 THEN
- IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
- storageid,inwaremx[i].plancode,inwaremx[i].status,&
- inwaremx[i].qty,inwaremx[i].uqty,ld_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 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
-
- END IF
-
- If ( billtype = 1 Or billtype = 27 ) And inwaremx[i].relid > 0 THEN
- IF thflag = 0 Or (thflag = 1 And inwaremx[i].Thptype = 1) THEN //正常收货, 或者 退货,更新订单
- IF uo_task.addmxcmpl(scid,inwaremx[i].relid,inwaremx[i].relprintid,&
- inwaremx[i].uqty,arg_msg,False) <> 1 THEN
- arg_msg = '更新收货明细行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF rslt = 1 And Trim(arg_msg) <> '' THEN
- f_setsysoplog('采购收货单','采购收货单审核,id:'+String(inwareid)+',单号:'+inwarecode+','+arg_msg,arg_msg,False)
- END IF
- // 在 addmxcmpl 中处理
- // IF uo_task.trycmplbuytask(scid,inwaremx[i].relid,arg_msg,False) = 0 THEN
- // arg_msg = '更新收货明细行:'+String(i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
-
- ELSEIF inwaremx[i].Thptype = 0 THEN //不需处理
- // Nothing to Done
- ELSEIF inwaremx[i].Thptype = 2 THEN //新建订单
- //单独函数处理 uof_create_buytask
- END IF
- END IF
-
- IF uo_option_buy_sptprice_sec = 0 THEN
- ld_fprice_notax = inwaremx[i].fprice / ( 1 + inwaremx[i].tax)
-
- IF uo_sptprice.uof_update_sptprice(thflag,sptid,inwaremx[i].mtrlid,inwaremx[i].unit,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,'',inwareid,inwaremx[i].enprice,inwaremx[i].rebate,inwaremx[i].rate,inwaremx[i].fprice,ld_fprice_notax,indate,inwarecode,0,inwaremx[i].mxdscrp,inwaremx[i].printid,0,moneyid,indate,DateTime(9999-01-01),False,arg_msg) = 0 THEN
- arg_msg = '更新收货明细行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //更新质检已进仓数
- IF uo_option_check_buyin = 1 And billtype = 1 And inwaremx[i].relbillid > 0 THEN
- IF uo_sptch.uof_add_inqty(inwaremx[i].relbillid,inwaremx[i].relbillprintid,inwaremx[i].uqty,arg_msg,False) = 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 = '取库存id,收货明细行:'+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 = '更新明细库存id,收货明细行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //yyx20100814
- //库存分配,仓库非包件或非条码出仓,用收货明细分配
- IF billtype = 1 And li_storagetype = 1 And thflag = 0 And li_outtype = 0 THEN
- //取分配计划
- arg_s_arr = 0
- arg_s_ap = arg_s_ap_null
-
- IF inwaremx[i].iffp = 0 THEN //旧模式
- IF billtype = 1 And ll_billtype = 1 THEN //成品采购订单模式
- SELECT u_buyTaskMx.orderid,
- u_buyTaskMx.taskmxprintid
- INTO :ll_relbillid,
- :ll_relprintid
- FROM u_buyTaskMx
- WHERE u_buyTaskMx.scid = :scid
- AND u_buyTaskMx.taskid = :inwaremx[i].relid
- AND u_buyTaskMx.printid = :inwaremx[i].relprintid
- And u_buyTaskMx.orderid > 0 Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '收货明细行:'+String(i)+'查询成品采购订单相关销售订单资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_relbillid = 0
- ll_relprintid = 0
- END IF
-
- IF ll_relbillid > 0 THEN //成品申购单找到销售订单
- arg_s_arr++
- arg_s_ap.planid[arg_s_arr] = 0
- arg_s_ap.assigntype[arg_s_arr] = 1
- arg_s_ap.scid[arg_s_arr] = scid
- arg_s_ap.mtrlwareid[arg_s_arr] = ll_mtrlwareid_ref
- arg_s_ap.relbillid[arg_s_arr] = ll_relbillid
- arg_s_ap.relprintid[arg_s_arr] = ll_relprintid
- arg_s_ap.fpgrade[arg_s_arr] = 2
- arg_s_ap.notassignqty[arg_s_arr] = inwaremx[i].qty
- 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
- ELSEIF billtype = 1 And ll_billtype = 0 THEN //材料采购订单模式
- SELECT u_buyTaskMx.orderid
- INTO :ll_orderid_buytask
- FROM u_buyTaskMx
- WHERE u_buyTaskMx.scid = :scid
- AND u_buyTaskMx.taskid = :inwaremx[i].relid
- AND u_buyTaskMx.printid = :inwaremx[i].relprintid
- And u_buyTaskMx.orderid > 0 Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '收货明细行:'+String(i)+'查询材料采购订单相关主生产计划资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_orderid_buytask = 0
- END IF
-
- IF ll_orderid_buytask = 0 THEN
- ll_relbillid = 0
- ll_relprintid = 0
- ELSE
- SELECT u_order_ml.taskid,
- u_order_ml.taskmxid
- INTO :ll_relbillid,
- :ll_relprintid
- FROM u_order_ml
- WHERE u_order_ml.scid = :scid
- And u_order_ml.orderid = :ll_orderid_buytask Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '收货明细行:'+String(i)+'查询材料采购订单相关主生产计划销售订单资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_relbillid = 0
- ll_relprintid = 0
- END IF
- END IF
-
-
- IF ll_relbillid > 0 THEN //找到销售订单
- arg_s_arr++
- arg_s_ap.planid[arg_s_arr] = 0
- arg_s_ap.assigntype[arg_s_arr] = 1
- arg_s_ap.scid[arg_s_arr] = scid
- arg_s_ap.mtrlwareid[arg_s_arr] = ll_mtrlwareid_ref
- arg_s_ap.relbillid[arg_s_arr] = ll_relbillid
- arg_s_ap.relprintid[arg_s_arr] = ll_relprintid
- arg_s_ap.fpgrade[arg_s_arr] = 2
- arg_s_ap.notassignqty[arg_s_arr] = inwaremx[i].qty
- 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
- 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
- ELSE //新库存分配模式
- IF inwaremx[i].relid > 0 And inwaremx[i].relprintid > 0 THEN
- IF uof_ref_assign_plan_plankind(scid,ll_mtrlwareid_ref,2,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(i)+',取分配计划失败'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- FOR j = 1 To UpperBound(arg_s_ap.planid)
-
- //检查是否超数量yyx20120424
- ld_fpqty = 0
- IF arg_s_ap.assigntype[j] = 1 THEN
- ld_saletask_notfpqty = 0
- IF f_ref_saletask_notfpqty(scid,arg_s_ap.relbillid[j],arg_s_ap.relprintid[j],inwaremx[i].mtrlid,inwaremx[i].status,ld_saletask_notfpqty,arg_msg) = 0 THEN
- arg_msg = '收货明细行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_ap.notassignqty[j] > ld_saletask_notfpqty THEN
- ld_fpqty = ld_saletask_notfpqty
- ELSE
- ld_fpqty = arg_s_ap.notassignqty[j]
- END IF
- ELSE
- ld_fpqty = arg_s_ap.notassignqty[j]
- END IF
- ////////////////////////////// //
-
- IF ld_fpqty > 0 THEN
- 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],&
- ld_fpqty,inwaremx[i].cost,ls_mtrlcuscode,inwaremx[i].mtrlwaredscrp,&
- inwarecode,inwaremx[i].printid,arg_s_ap.fpgrade[j],publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '收货明细行:'+String(i)+',库存分配失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- 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
- //yyx20100814_end
-
- If ( li_outtype = 2 Or li_outtype = 3 ) And inwaremx[i].outtype = 2 THEN mx_barcode_cnt++
-
-
-
- //自动出仓
- IF billtype = 1 And li_outtype > 0 THEN
- IF thflag = 0 THEN
- //取库存信息
- 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 = '收货单收货明细自动出仓单,取库存id,行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- s_mx_out.mtrlwareid = ll_mtrlwareid_ref
- s_mx_out.qty = inwaremx[i].qty
- s_mx_out.fprice = inwaremx[i].fprice
- s_mx_out.rebate = 1
- s_mx_out.mxdscrp = inwaremx[i].mxdscrp
- s_mx_out.printid = inwaremx[i].printid
- s_mx_out.ifrel = 0
- s_mx_out.relid = 0
- s_mx_out.olmtrlid = 0
- s_mx_out.packqty = 0
- s_mx_out.outtype = ''
- s_mx_out.planqty = 0
- s_mx_out.relprintid = 0
- s_mx_out.unit = inwaremx[i].unit
- s_mx_out.uqty = inwaremx[i].qty
- s_mx_out.rate = 1
- s_mx_out.pricetype = ''
- s_mx_out.formula = ''
- s_mx_out.saleoutid = 0
- s_mx_out.saleoutprintid = 0
- s_mx_out.mxdscrp2 = ''
- s_mx_out.net_weight = 0
- s_mx_out.gross_weight = 0
- s_mx_out.cubage = 0
- s_mx_out.taxrate = 0
- s_mx_out.priceformula = ''
- s_mx_out.qtyformula = ''
-
- IF inwaremx[i].ifpackpro = 0 THEN
- s_mx_out.ifvqty = 1
- s_mx_out.ifnotinout = 1
- ELSE
- s_mx_out.ifvqty = 0
- s_mx_out.ifnotinout = 0
- END IF
-
- IF uo_out.acceptmx(s_mx_out,arg_msg) = 0 THEN
- arg_msg = '收货单收货明细自动出仓单,行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- // IF uo_out.acceptmx(ll_mtrlwareid_ref,&
- // inwaremx[i].qty,inwaremx[i].fprice,1,&
- // inwaremx[i].mxdscrp,inwaremx[i].printid,arg_msg,0,0,0,0,'',0,0,&
- // inwaremx[i].unit,inwaremx[i].qty,1,'','',0,0,'',0,0,0,0,'','') = 0 THEN
- // arg_msg = '收货单收货明细自动出仓单,行:'+String(i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- END IF
- END IF
- NEXT
- IF thflag = 1 THEN
- //退货处理 为新建订单的, 生成一张订单
- IF uof_create_buytask(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF billtype = 1 And li_outtype > 0 THEN
- IF thflag = 0 THEN
- IF uo_out.Save(False,arg_msg) = 0 THEN
- arg_msg = '收货单明细自动出仓单,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //2.原事务审核出仓单
- IF uo_out.getinfo(scid,uo_out.outwareid,arg_msg) = 0 THEN
- arg_msg = '收货单明细自动出仓单,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.auditing(False,arg_msg) = 0 THEN
- arg_msg = '收货单明细自动出仓单,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //进仓
- IF uo_in.newbegin(scid,25,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = inwareid
- uo_in.indate = indate
- uo_in.inrep = inrep
- uo_in.part = inwarecode
- uo_in.dscrp = dscrp
- uo_in.sptname = '收货单包件自动进仓'
- uo_in.storageid = storageid
-
- li_ifvqty = 0
- FOR i = 1 To it_mxbt_mx
- FOR k = 1 To it_mxbt
- IF inwaremx[k].printid = inwaremx_mx[i].printid THEN
-
- IF inwaremx[k].mtrlid = inwaremx_mx[i].mtrlid And &
- inwaremx[k].status = inwaremx_mx[i].status And &
- inwaremx[k].woodcode = inwaremx_mx[i].woodcode And &
- inwaremx[k].pcode = inwaremx_mx[i].pcode THEN
-
- li_ifvqty = 1
- ELSE
- li_ifvqty = 0
- END IF
-
- EXIT
- END IF
- NEXT
-
- s_mx.printid = inwaremx_mx[i].mxprintid
- s_mx.mtrlid = inwaremx_mx[i].mtrlid
- s_mx.mtrlcode = inwaremx_mx[i].mtrlcode
- s_mx.plancode = inwaremx_mx[i].plancode
- s_mx.status = inwaremx_mx[i].status
- s_mx.uqty = inwaremx_mx[i].qty
- s_mx.enprice = inwaremx_mx[i].fprice
- s_mx.rebate = 1
- s_mx.mxdscrp = inwaremx_mx[i].mxdscrp
- s_mx.jgprice = 0
- s_mx.relid = 0
- s_mx.ifrel = 0
- s_mx.woodcode = inwaremx_mx[i].woodcode
- s_mx.pcode = inwaremx_mx[i].pcode
- s_mx.sptid = inwaremx_mx[i].sptid
- s_mx.unit = inwaremx_mx[i].unit
- s_mx.rate = 1
- s_mx.qty = inwaremx_mx[i].qty
- s_mx.relprintid = 0
- s_mx.checkqty = 0
- s_mx.result = ''
- s_mx.waredscrp = ''
- s_mx.relbillid = 0
- s_mx.relbillprintid = 0
- s_mx.mtrlcuscode = inwaremx_mx[i].mtrlcuscode
- s_mx.Location = inwaremx_mx[i].Location
- s_mx.deliqty = inwaremx_mx[i].qty
- s_mx.tax = 0
- s_mx.ifvqty = li_ifvqty
- s_mx.ifnotinout = inwaremx_mx[i].ifnotinout
-
- IF uo_in.acceptmx(s_mx, arg_msg) = 0 THEN
- arg_msg = '收货单包件自动进仓单,行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- // IF uo_in.acceptmx(inwaremx_mx[i].mxprintid,&
- // inwaremx_mx[i].mtrlid,&
- // inwaremx_mx[i].mtrlcode,&
- // inwaremx_mx[i].plancode,&
- // inwaremx_mx[i].status,&
- // inwaremx_mx[i].qty,&
- // inwaremx_mx[i].fprice,&
- // 1,&
- // inwaremx_mx[i].mxdscrp,&
- // arg_msg,&
- // 0,0,0,inwaremx_mx[i].woodcode,&
- // inwaremx_mx[i].pcode,inwaremx_mx[i].sptid,&
- // inwaremx_mx[i].unit,1,&
- // inwaremx_mx[i].qty,0,0,'','',0,0,&
- // inwaremx_mx[i].mtrlcuscode,inwaremx_mx[i].Location,&
- // inwaremx_mx[i].qty,&
- // 0) = 0 THEN
- // arg_msg = '收货单包件自动进仓单,行:'+String(i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- NEXT
-
- IF uo_in.Save(False,arg_msg) = 0 THEN
- arg_msg = '收货单包件自动进仓单,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.getinfo(scid,uo_in.inwareid,arg_msg) = 0 THEN
- arg_msg = '收货单包件自动进仓单,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.auditing(False,arg_msg) = 0 THEN
- arg_msg = '收货单包件自动进仓单,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- ELSE
- //进仓
- IF uo_in_th.newbegin(scid,25,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in_th.relid = inwareid
- uo_in_th.indate = indate
- uo_in_th.inrep = inrep
- uo_in_th.part = inwarecode
- uo_in_th.dscrp = dscrp
- uo_in_th.sptname = '退货单包件自动负数进仓'
- uo_in_th.storageid = storageid
-
- FOR i = 1 To it_mxbt_mx
-
- FOR k = 1 To it_mxbt
- IF inwaremx[k].printid = inwaremx_mx[i].printid THEN
-
- IF inwaremx[k].mtrlid = inwaremx_mx[i].mtrlid And &
- inwaremx[k].status = inwaremx_mx[i].status And &
- inwaremx[k].woodcode = inwaremx_mx[i].woodcode And &
- inwaremx[k].pcode = inwaremx_mx[i].pcode THEN
-
- li_ifvqty = 1
- ELSE
- li_ifvqty = 0
- END IF
-
- EXIT
- END IF
- NEXT
-
-
- s_mx.printid = inwaremx_mx[i].mxprintid
- s_mx.mtrlid = inwaremx_mx[i].mtrlid
- s_mx.mtrlcode = inwaremx_mx[i].mtrlcode
- s_mx.plancode = inwaremx_mx[i].plancode
- s_mx.status = inwaremx_mx[i].status
- s_mx.uqty = inwaremx_mx[i].qty
- s_mx.enprice = inwaremx_mx[i].fprice
- s_mx.rebate = 1
- s_mx.mxdscrp = inwaremx_mx[i].mxdscrp
- s_mx.jgprice = 0
- s_mx.relid = 0
- s_mx.ifrel = 0
- s_mx.woodcode = inwaremx_mx[i].woodcode
- s_mx.pcode = inwaremx_mx[i].pcode
- s_mx.sptid = inwaremx_mx[i].sptid
- s_mx.unit = inwaremx_mx[i].unit
- s_mx.rate = 1
- s_mx.qty = inwaremx_mx[i].qty
- s_mx.relprintid = 0
- s_mx.checkqty = 0
- s_mx.result = ''
- s_mx.waredscrp = ''
- s_mx.relbillid = 0
- s_mx.relbillprintid = 0
- s_mx.mtrlcuscode = inwaremx_mx[i].mtrlcuscode
- s_mx.Location = inwaremx_mx[i].Location
- s_mx.deliqty = inwaremx_mx[i].qty
- s_mx.ifnotinout = inwaremx_mx[i].ifnotinout
- s_mx.tax = 0
- s_mx.ifvqty = li_ifvqty
-
- IF uo_in_th.acceptmx(s_mx, arg_msg) = 0 THEN
- arg_msg = '退货单包件自动负数进仓单,行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- // IF uo_in_th.acceptmx(inwaremx_mx[i].mxprintid,&
- // inwaremx_mx[i].mtrlid,&
- // inwaremx_mx[i].mtrlcode,&
- // inwaremx_mx[i].plancode,&
- // inwaremx_mx[i].status,&
- // inwaremx_mx[i].qty,&
- // inwaremx_mx[i].fprice,&
- // 1,&
- // inwaremx_mx[i].mxdscrp,&
- // arg_msg,&
- // 0,0,0,inwaremx_mx[i].woodcode,&
- // inwaremx_mx[i].pcode,inwaremx_mx[i].sptid,&
- // inwaremx_mx[i].unit,1,&
- // inwaremx_mx[i].qty,0,0,'','',0,0,&
- // inwaremx_mx[i].mtrlcuscode,inwaremx_mx[i].Location,&
- // inwaremx_mx[i].qty,&
- // 0) = 0 THEN
- // arg_msg = '退货单包件自动负数进仓单,行:'+String(i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
-
-
- NEXT
-
- IF uo_in_th.Save(False,arg_msg) = 0 THEN
- arg_msg = '退货单包件自动负数进仓单,'+ arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in_th.getinfo(scid,uo_in_th.inwareid,arg_msg) = 0 THEN
- arg_msg = '退货单包件自动负数进仓单,'+ arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in_th.auditing(False,arg_msg) = 0 THEN
- arg_msg = '退货单包件自动负数进仓单,'+ arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF billtype = 27 THEN
- FOR i = 1 To it_mxbt_mx
- IF uof_update_ptqty(scid,&
- inwaremx_mx[i].ptinwareid,&
- inwaremx_mx[i].ptprintid,&
- inwaremx_mx[i].qty,arg_msg,False) = 0 THEN
- arg_msg = '单据配套明细,行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- //更新条码
- IF billtype = 1 And ( li_outtype = 2 Or li_outtype = 3 ) And mx_barcode_cnt > 0 THEN
- IF uof_p_barcode(1,arg_msg,arg_s_mxbarcode_fp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //yyx20120215
- //库存分配,仓库包件或条码出仓,用包件明细分配
- Long ll_inwaremx_relid,ll_inwaremx_relprintid
- Long ll_orderid
- Decimal ld_mx_cost
- String ls_mx_mtrlwaredscrp
- IF billtype = 1 And li_storagetype = 1 And thflag = 0 And li_outtype > 0 THEN
- FOR i = 1 To it_mxbt_mx
- ll_inwaremx_relid = 0
-
- SELECT relid,relprintid,cost,waredscrp
- INTO :ll_inwaremx_relid,:ll_inwaremx_relprintid,:ld_mx_cost,:ls_mx_mtrlwaredscrp
- FROM u_inwaremx
- WHERE scid = :scid
- AND inwareid = :inwareid
- And printid = :inwaremx_mx[i].printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',查询对应采购订单明细失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_inwaremx_relid > 0 THEN
- SELECT u_buytask.billtype INTO :ll_billtype
- FROM u_buytask
- WHERE u_buytask.taskid = :ll_inwaremx_relid
- And u_buytask.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',查询对应采购订单的订单类型失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- ll_billtype = 0
- END IF
-
- //取库存信息
- ll_mtrlwareid_ref = 0
-
- IF inwaremx_mx[i].ifpack <> 2 And inwaremx_mx[i].ifpackpro <> 2 And inwaremx_mx[i].ifpackpro <> 4 THEN
- ll_sptid = 0
- ls_mtrlcuscode = ''
- ELSE
- ll_sptid = inwaremx_mx[i].sptid
- ls_mtrlcuscode = inwaremx_mx[i].mtrlcuscode
- END IF
-
- IF uof_ref_mtrlwareid(scid,storageid,inwaremx_mx[i].mtrlid,&
- inwaremx_mx[i].status,inwaremx_mx[i].woodcode,inwaremx_mx[i].pcode,inwaremx_mx[i].plancode,&
- inwaremx_mx[i].Location,ll_sptid,ls_mtrlcuscode,ll_mtrlwareid_ref,arg_msg) = 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',查询库存id失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //yyx2012-9-29返回计算可装数库存id数组
- // If ( inwaremx_mx[i].ifpack = 1 Or inwaremx_mx[i].ifpack = 2 Or inwaremx_mx[i].ifpackpro = 3 Or inwaremx_mx[i].ifpackpro = 4 ) And uo_option_mtrlware_autocmp = 1 THEN
- // IF uo_cmpl_p.uof_ref_mtrlwarid_array(inwaremx_mx[i].mtrlid,inwaremx_mx[i].plancode,ls_mtrlcuscode,storageid,s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // END IF
- //
-
- //取分配计划
- arg_s_arr = 0
- arg_s_ap = arg_s_ap_null
-
- IF inwaremx_mx[i].iffp = 0 THEN //旧模式
- IF billtype = 1 And ll_billtype = 1 THEN
- SELECT u_buyTaskMx.orderid,
- u_buyTaskMx.taskmxprintid
- INTO :ll_relbillid,
- :ll_relprintid
- FROM u_buyTaskMx
- WHERE u_buyTaskMx.scid = :scid
- AND u_buyTaskMx.taskid = :ll_inwaremx_relid
- AND u_buyTaskMx.printid = :ll_inwaremx_relprintid
- And u_buyTaskMx.orderid > 0 Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',查询成品订单相关销售订单资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_relbillid = 0
- ll_relprintid = 0
- END IF
-
- IF ll_relbillid > 0 THEN //成品申购单找到销售订单
- arg_s_arr++
- arg_s_ap.planid[arg_s_arr] = 0
- arg_s_ap.assigntype[arg_s_arr] = 1
- arg_s_ap.scid[arg_s_arr] = scid
- arg_s_ap.mtrlwareid[arg_s_arr] = ll_mtrlwareid_ref
- arg_s_ap.relbillid[arg_s_arr] = ll_relbillid
- arg_s_ap.relprintid[arg_s_arr] = ll_relprintid
- arg_s_ap.fpgrade[arg_s_arr] = 2
- arg_s_ap.notassignqty[arg_s_arr] = inwaremx_mx[i].qty
- ELSE
- IF uof_ref_assign_plan(scid,ll_mtrlwareid_ref,inwaremx_mx[i].qty,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',取分配计划失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSEIF billtype = 1 And ll_inwaremx_relid > 0 And ll_billtype = 0 And inwaremx_mx[i].ifpack > 0 THEN //yyx2013-8-31 //材料采购订单采购包件
- SELECT u_buyTaskMx.orderid
- INTO :ll_orderid
- FROM u_buyTaskMx
- WHERE u_buyTaskMx.scid = :scid
- AND u_buyTaskMx.taskid = :ll_inwaremx_relid
- AND u_buyTaskMx.printid = :ll_inwaremx_relprintid
- And u_buyTaskMx.orderid > 0 Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',查询材料订单相关主生产计划资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_orderid = 0
- END IF
-
- IF ll_orderid > 0 THEN
- SELECT u_order_ml.taskid,
- u_order_ml.taskmxid
- INTO :ll_relbillid,
- :ll_relprintid
- FROM u_order_ml
- WHERE u_order_ml.scid = :scid
- And u_order_ml.orderid = :ll_orderid Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',查询材料采购订单对应主生产计划相关销售订单资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ll_relbillid = 0
- ll_relprintid = 0
- END IF
- ELSE
- ll_relbillid = 0
- ll_relprintid = 0
- END IF
-
- IF ll_relbillid > 0 THEN //找到销售订单
- arg_s_arr++
- arg_s_ap.planid[arg_s_arr] = 0
- arg_s_ap.assigntype[arg_s_arr] = 1
- arg_s_ap.scid[arg_s_arr] = scid
- arg_s_ap.mtrlwareid[arg_s_arr] = ll_mtrlwareid_ref
- arg_s_ap.relbillid[arg_s_arr] = ll_relbillid
- arg_s_ap.relprintid[arg_s_arr] = ll_relprintid
- arg_s_ap.fpgrade[arg_s_arr] = 2
- arg_s_ap.notassignqty[arg_s_arr] = inwaremx_mx[i].qty
- ELSE
- IF uof_ref_assign_plan(scid,ll_mtrlwareid_ref,inwaremx_mx[i].qty,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',取分配计划失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uof_ref_assign_plan(scid,ll_mtrlwareid_ref,inwaremx_mx[i].qty,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',取分配计划失败'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE //新库存分配模式
- IF ll_inwaremx_relid > 0 And ll_inwaremx_relprintid > 0 THEN
- IF uof_ref_assign_plan_plankind(scid,ll_mtrlwareid_ref,2,ll_inwaremx_relid,ll_inwaremx_relprintid,&
- inwaremx_mx[i].mtrlid,inwaremx_mx[i].status,inwaremx_mx[i].woodcode,inwaremx_mx[i].pcode,inwaremx_mx[i].qty,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',取分配计划失败'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- FOR j = 1 To UpperBound(arg_s_ap.planid)
- //检查是否超数量yyx20120424
- ld_fpqty = 0
- IF arg_s_ap.assigntype[j] = 1 THEN
- ld_saletask_notfpqty = 0
- IF f_ref_saletask_notfpqty(scid,arg_s_ap.relbillid[j],arg_s_ap.relprintid[j],inwaremx_mx[i].mtrlid,inwaremx_mx[i].status,ld_saletask_notfpqty,arg_msg) = 0 THEN
- arg_msg = '包件明细行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_ap.notassignqty[j] > ld_saletask_notfpqty THEN
- ld_fpqty = ld_saletask_notfpqty
- ELSE
- ld_fpqty = arg_s_ap.notassignqty[j]
- END IF
- ELSE
- ld_fpqty = arg_s_ap.notassignqty[j]
- END IF
- ////////////////////////////// //
- IF ld_fpqty > 0 THEN
- 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],&
- ld_fpqty,ld_mx_cost,ls_mx_mtrlwaredscrp,ls_mtrlcuscode,&
- inwarecode,inwaremx_mx[i].printid,arg_s_ap.fpgrade[j],publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',库存分配失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- 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_mx[i].printid,arg_msg,False) = 0 THEN
- arg_msg = '包件明细行:'+String(inwaremx_mx[i].mxprintid)+',对应收货明细行:'+String(inwaremx_mx[i].printid)+',更新分配计划已分配数失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- NEXT
- END IF
- //yyx20120215_end
- 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_task
- Destroy uo_sptch
- Destroy uo_sptprice
- Destroy uo_ma
- Destroy uo_in
- Destroy uo_in_th
- Destroy uo_out
- Destroy uo_pro
- 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_billtype
- Long ll_balctype
- Long ll_sptid
- String ls_mtrlcuscode
- String ls_storagename
- Int li_outtype,li_storagetype
- Long ll_inwareid_rel,ll_outwareid_rel
- String ls_inwarecode_rel,ls_outwarecode_rel
- Decimal ld_cost
- s_inwaremx_assign_plan arg_s_ap,arg_s_ap_null
- s_inwaremx_assign arg_s_a,arg_s_a_null
- s_inwaremx_barcode_fp arg_s_mxbarcode_fp
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.commit_transaction = commit_transaction
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- uo_ma.ib_ifinware_audit_do = True
- uo_cmpl_packpro uo_cmpl_p
- uo_cmpl_p = Create uo_cmpl_packpro
- uo_cmpl_p.commit_transaction = commit_transaction
- DateTime null_dt
- SetNull(null_dt)
- String ls_mtrlname
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_buy_sptprice_sec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[168]采购收货单财审更新供应商最新价,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_check_buyin = -1000 THEN
- rslt = 0
- arg_msg = '选项:[130]采购先质检后进仓,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_buytask uo_task
- uo_task = Create uo_buytask
- uo_task.commit_transaction = commit_transaction
- uo_sptcheck uo_sptch
- uo_sptch = Create uo_sptcheck
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- uo_inware uo_in
- uo_outware uo_out
- uo_in = Create uo_inware
- uo_in.commit_transaction = sqlca
- uo_in.if_getid_ture = False
- uo_out = Create uo_outware
- uo_out.commit_transaction = sqlca
- uo_out.if_getid_ture = False
- 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
- INTO :ls_storagename,:li_outtype,:li_storagetype
- 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_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
- //
- 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 balcflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经结存,不能撤审"
- 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
- IF li_outtype = 1 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_inwaremx_mx_barcode
- WHERE u_inwaremx_mx_barcode.inwareid = :inwareid
- AND u_inwaremx_mx_barcode.scid = :scid
- AND u_inwaremx_mx_barcode.billtype = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,进仓单条码明细数量,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- arg_msg = '仓库设了包件出仓,但单据有条码明细,操作取消,请检查仓库的出仓模式是否设置正确'
- rslt = 0
- GOTO ext
- END IF
- END IF
- //撤审相关自动进出仓
- IF billtype = 1 And li_outtype > 0 And thflag = 0 THEN
-
- //yyx_2013-5-17 //取消包件明细分配
- IF li_storagetype = 1 THEN
- FOR i = 1 To it_mxbt_mx
-
- //取消分配
- arg_s_a = arg_s_a_null
- IF uof_ref_assign_cancel(inwarecode,inwaremx_mx[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_mx[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
- NEXT
- END IF
- //yyx_2013-5-17_end //取消包件明细分配
-
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE scid = :scid
- AND relid = :inwareid
- And billtype = 25 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关收货包件明细进仓单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- SELECT inwareid,inwarecode
- INTO :ll_inwareid_rel,:ls_inwarecode_rel
- FROM u_inware
- WHERE scid = :scid
- AND relid = :inwareid
- And billtype = 25 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关包件进仓单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF uo_in.getinfo(scid,ll_inwareid_rel,arg_msg) = 0 THEN
- arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.c_auditing(False,arg_msg) = 0 THEN
- arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.del(scid,ll_inwareid_rel,arg_msg,False) = 0 THEN
- arg_msg = '相关进仓单:'+ls_inwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- //出仓
- SELECT count(*)
- INTO :cnt
- FROM u_outware
- WHERE scid = :scid
- AND relid = :inwareid
- And billtype = 23 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关收货明细自动出仓单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- SELECT outwareid,outwarecode
- INTO :ll_outwareid_rel,:ls_outwarecode_rel
- FROM u_outware
- WHERE scid = :scid
- AND relid = :inwareid
- And billtype = 23 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关收货明细自动出仓单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF uo_out.getinfo(scid,ll_outwareid_rel,arg_msg) = 0 THEN
- arg_msg = '相关进仓单:'+ls_outwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.c_auditing(False,arg_msg) = 0 THEN
- arg_msg = '相关进仓单:'+ls_outwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.del(scid,ll_outwareid_rel,0,arg_msg,False) = 0 THEN
- arg_msg = '相关进仓单:'+ls_outwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_inware
- SET auditingrep = '',
- auditingdate = :null_dt,
- flag = 0
- WHERE u_inware.inwareid = :inwareid
- AND flag = 1
- AND secflag = 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
- //yyx20100814
- IF billtype = 1 THEN
-
- //yyx20100814
- //库存分配
- IF billtype = 1 And li_storagetype = 1 And li_outtype = 0 And thflag = 0 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
- //yyx20100814_end
-
-
- 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
- ll_sptid = inwaremx[i].sptid
- ls_mtrlcuscode = inwaremx[i].mtrlcuscode
- END IF
-
- //yyx20100814_end
-
- IF sys_option_inout_procedure = 0 THEN
- ld_cost = inwaremx[i].cost
- IF thflag = 1 And uo_option_buyth_use_price_update_wareamt = 1 THEN
- ld_cost = inwaremx[i].price
- END IF
-
- 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,ld_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 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
- END IF
-
- IF thflag = 0 Or (thflag = 1 And inwaremx[i].Thptype = 1) THEN
- //更新合同完成数量
- If (billtype = 1 Or billtype = 27 ) And inwaremx[i].relid > 0 THEN
- IF uo_task.addmxcmpl(scid,inwaremx[i].relid,inwaremx[i].relprintid,&
- 0 - inwaremx[i].uqty,arg_msg,False) <> 1 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- // IF uo_task.trycmplbuytask(scid,inwaremx[i].relid,arg_msg,False) = 0 THEN
- // arg_msg = '更新行:'+String(i)+','+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- END IF
- ELSEIF inwaremx[i].Thptype = 0 THEN //不需处理
- // Nothing to Done
- ELSEIF inwaremx[i].Thptype = 2 THEN //新建订单
- //单独函数处理 uof_destroy_buytask
- END IF
-
- //更新质检已进仓数
- IF uo_option_check_buyin = 1 And billtype = 1 And inwaremx[i].relbillid > 0 THEN
- IF uo_sptch.uof_add_inqty(inwaremx[i].relbillid,inwaremx[i].relbillprintid,0 - inwaremx[i].uqty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_option_buy_sptprice_sec = 0 THEN
- IF thflag = 0 THEN
- IF uo_sptprice.uof_del_sptprice_auto(sptid,inwareid,inwaremx[i].printid,inwaremx[i].mtrlid,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,'',inwaremx[i].unit,moneyid,False,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- If ( li_outtype = 2 Or li_outtype = 3 ) And inwaremx[i].outtype = 2 THEN mx_barcode_cnt++
- NEXT
- IF thflag = 1 THEN
- //退货处理 为新建订单的, 删除订单
- IF uof_destroy_buytask(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- Long ll_inwareid_rel_arr[],ll_arr,ll_k
- String ls_inwarecode_rel_arr[]
- IF billtype = 1 And li_outtype > 0 And thflag = 1 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE scid = :scid
- AND relid = :inwareid
- And billtype = 25 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询相关收货包件明细进仓单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- DECLARE cur_in CURSOR FOR
- SELECT inwareid,inwarecode
- FROM u_inware
- WHERE scid = :scid
- AND relid = :inwareid
- And billtype = 25 Using commit_transaction;
- OPEN cur_in;
- FETCH cur_in Into :ll_inwareid_rel,:ls_inwarecode_rel;
- DO WHILE commit_transaction.SQLCode = 0
- ll_arr++
- ll_inwareid_rel_arr[ll_arr] = ll_inwareid_rel
- ls_inwarecode_rel_arr[ll_arr] = ls_inwarecode_rel
- FETCH cur_in Into :ll_inwareid_rel,:ls_inwarecode_rel;
- LOOP
- CLOSE cur_in;
- IF ll_arr = 0 THEN
- arg_msg = '读取相关退货进仓单失败,操作取消'
- rslt = 0
- GOTO ext
- END IF
-
- FOR ll_k = 1 To ll_arr
- IF uo_in.getinfo(scid,ll_inwareid_rel_arr[ll_k],arg_msg) = 0 THEN
- arg_msg = '相关进仓单:'+ls_inwarecode_rel_arr[ll_k]+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.c_auditing(False,arg_msg) = 0 THEN
- arg_msg = '相关进仓单:'+ls_inwarecode_rel_arr[ll_k]+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.del(scid,ll_inwareid_rel_arr[ll_k],arg_msg,False) = 0 THEN
- arg_msg = '相关进仓单:'+ls_inwarecode_rel_arr[ll_k]+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- IF billtype = 27 THEN
- FOR i = 1 To it_mxbt_mx
- IF uof_update_ptqty(scid,&
- inwaremx_mx[i].ptinwareid,&
- inwaremx_mx[i].ptprintid,&
- 0 - inwaremx_mx[i].qty,arg_msg,False) = 0 THEN
- arg_msg = '单据配套明细,行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- IF billtype = 1 And ( li_outtype = 2 Or li_outtype = 3 ) And mx_barcode_cnt > 0 THEN
- IF uof_p_barcode(0,arg_msg,arg_s_mxbarcode_fp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_inware_barcode_tmp
- SET u_inware_barcode_tmp.inwareid = 0
- WHERE u_inware_barcode_tmp.scid = :scid
- And u_inware_barcode_tmp.inwareid = :inwareid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "清除采购收货单相关临时条码匹配标记失败"+"~n"+commit_transaction.SQLErrText
- 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_sptch
- Destroy uo_buytask
- Destroy uo_sptprice
- Destroy uo_ma
- Destroy uo_in
- Destroy uo_out
- Destroy uo_pro
- RETURN rslt
- end function
- public function integer secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i,j
- String ls_about,ls_dscrp
- Long ll_moneyid_native,ll_moneyid
- IF uo_option_buy_sptprice_sec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[168]采购收货单财审更新供应商最新价,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_m_mstpay = -1000 THEN
- rslt = 0
- arg_msg = '选项:[241]系统使用多币种应付帐,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_mustpay uo_pay
- uo_pay = Create uo_mustpay
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- Decimal ld_payamt = 0,ld_mstpayamt = 0,ld_taxamt = 0
- Long ll_dft_itemid,ll_dft_itemid_tax
- Decimal ld_itemamt = 0
- String ls_itemname
- decimal ld_fprice_notax
- s_bmstpaymx s_paymx_item
- IF inwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- 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
- Int li_btype
- Long ll_accountsid
- SELECT btype,accountsid INTO :li_btype,:ll_accountsid
- FROM cw_banktype
- Where banktypeid = :relint_1 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :publ_operator Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消"
- GOTO ext
- END IF
- UPDATE u_inware
- SET secauditingrep = :publ_operator,
- secauditingdate = getdate(),
- secflag = 1
- WHERE u_inware.inwareid = :inwareid
- And flag = 1 And secflag = 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
- IF uo_option_buy_sptprice_sec = 1 THEN
- IF thflag = 0 THEN
- FOR i = 1 To it_mxbt
- ld_fprice_notax = inwaremx[i].fprice / ( 1 + inwaremx[i].tax)
- IF uo_sptprice.uof_update_sptprice(thflag,sptid,inwaremx[i].mtrlid,inwaremx[i].unit,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].jgdscrp,inwareid,inwaremx[i].enprice,inwaremx[i].rebate,inwaremx[i].rate,inwaremx[i].fprice,ld_fprice_notax,indate,inwarecode,0,inwaremx[i].mxdscrp,inwaremx[i].printid,0,moneyid,indate,datetime(9999-01-01),False,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- FOR j = 1 To it_mxbt_item
- ld_itemamt = ld_itemamt + inware_itemmx[j].amt
- NEXT
- If (sum_amt <> 0 Or ld_itemamt <> 0) And dxflag = 0 THEN
-
- IF thflag = 1 THEN
- ls_about = inwarecode + "退货款,相关号:"+part
-
- SELECT itemid INTO :ll_dft_itemid
- FROM u_itemdef
- Where dfttype = 5 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询默认采购外协退货项目资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- ls_about = inwarecode + "应付款,相关号:"+part
-
- SELECT itemid INTO :ll_dft_itemid
- FROM u_itemdef
- Where dfttype = 2 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询默认采购外协付款项目资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- ls_dscrp = ls_about
-
- SELECT moneyid INTO :ll_moneyid_native
- FROM cw_currency
- Where native = 1 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询本位币资料失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_option_m_mstpay = 0 THEN
- ld_mstpayamt = sum_amt - otheramt
- ll_moneyid = ll_moneyid_native
- ld_taxamt = sum_taxamt
- ELSE
- ld_mstpayamt = sum_amt_en - otheramt
- ll_moneyid = moneyid
- ld_taxamt = sum_taxamt_en
- END IF
-
- IF li_btype = 1 THEN
- ld_payamt = ld_mstpayamt + ld_itemamt
- ELSE
- ld_payamt = 0
- END IF
-
- s_bmstpay s_pay
- s_pay.scid = scid
- s_pay.sptid = sptid
- s_pay.paydate = indate
- s_pay.inrep = inrep
- s_pay.oriamt = ld_mstpayamt
- s_pay.mstpayamt = ld_mstpayamt
- s_pay.payamt = ld_payamt
- s_pay.payamt_cn = ld_payamt
- s_pay.dscrp = ls_about
- s_pay.billcode = inwarecode
- s_pay.relcode = part
- s_pay.banktypeid = relint_1
- s_pay.viewdate = plandate
- s_pay.opemp = publ_operator
- s_pay.buildtype = 1
- s_pay.inwareid = inwareid
- s_pay.accountsid = ll_accountsid
- s_pay.itemid = ll_dft_itemid
- s_pay.moneyid = ll_moneyid
- s_pay.moneyid_cn = ll_moneyid
-
- IF uo_pay.add_payrec (s_pay,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_taxamt <> 0 THEN
- ls_about = inwarecode + "税金,相关号:"+part
-
- SELECT itemid INTO :ll_dft_itemid_tax
- FROM u_itemdef
- Where dfttype = 13 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询默认采购外协税金项目资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- s_bmstpaymx s_paymx_tax
- s_paymx_tax.scid = scid
- s_paymx_tax.payid = uo_pay.ref_payid
- s_paymx_tax.sptid = sptid
- s_paymx_tax.paydate = indate
- s_paymx_tax.inrep = inrep
- s_paymx_tax.mstpayamt = ld_taxamt
- s_paymx_tax.payamt = 0
- s_paymx_tax.dscrp = ls_about
- s_paymx_tax.billcode = inwarecode
- s_paymx_tax.relcode = part
- s_paymx_tax.banktypeid = relint_1
- s_paymx_tax.opemp = publ_operator
- s_paymx_tax.buildtype = 3
- s_paymx_tax.inwareid = inwareid
- s_paymx_tax.itemid = ll_dft_itemid_tax
- s_paymx_tax.moneyid = ll_moneyid
-
- IF uo_pay.add_payrecmx (s_paymx_tax,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- FOR i = 1 To it_mxbt_item
- IF inware_itemmx[i].amt <> 0 THEN
- SELECT itemname
- INTO :ls_itemname
- FROM u_itemdef
- Where itemid = :inware_itemmx[i].itemid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询第'+String(i)+'行费用项目信息失败,'+ commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- ls_about = inwarecode + '费用项目:'+ls_itemname +",相关号:"+part
-
- s_paymx_item.scid = scid
- s_paymx_item.payid = uo_pay.ref_payid
- s_paymx_item.sptid = sptid
- s_paymx_item.paydate = indate
- s_paymx_item.inrep = inrep
- s_paymx_item.mstpayamt = inware_itemmx[i].amt
- s_paymx_item.payamt = 0
- s_paymx_item.dscrp = ls_about
- s_paymx_item.billcode = inwarecode
- s_paymx_item.relcode = part
- s_paymx_item.banktypeid = relint_1
- s_paymx_item.opemp = publ_operator
- s_paymx_item.buildtype = 3
- s_paymx_item.inwareid = inwareid
- s_paymx_item.itemid = ll_dft_itemid_tax
- s_paymx_item.moneyid = ll_moneyid
-
- IF uo_pay.add_payrecmx (s_paymx_item,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
-
-
- UPDATE u_inware
- SET relint_2 = :uo_pay.ref_payid
- WHERE u_inware.inwareid = :inwareid
- AND scid = :scid
- And flag = 1 Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新采购单相关应付帐ID失败'
- rslt = 0
- GOTO ext
- END IF
-
- 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
- Destroy uo_pay
- Destroy uo_sptprice
- RETURN rslt
- end function
- public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg);
- Long rslt = 1,cnt = 0,i
- DateTime null_dt
- int li_StoreBalcType,li_AmtAuditFlag
- IF uo_option_buy_sptprice_sec = -1000 THEN
- rslt = 0
- arg_msg = '选项:[168]采购收货单财审更新供应商最新价,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_mustpay uo_pay
- uo_pay = Create uo_mustpay
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- String ls_mtrlname
- SetNull(null_dt)
- 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 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
- IF secflag = 0 THEN
- rslt = 0
- arg_msg = "该单据财务未审,不能进行财务撤审"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :publ_operator Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消"
- GOTO ext
- END IF
- UPDATE u_inware
- SET secauditingrep = '',
- secauditingdate = :null_dt,
- secflag = 0,relint_2 = 0
- WHERE u_inware.inwareid = :inwareid
- And secflag = 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
- IF billtype = 1 And sum_amt <> 0 And dxflag = 0 THEN
- IF uo_pay.del_payrec(scid,1,relint_2,sptid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF uo_option_buy_sptprice_sec = 1 THEN
- IF thflag = 0 THEN
- FOR i = 1 To it_mxbt
- IF uo_sptprice.uof_del_sptprice_auto(sptid,inwareid,inwaremx[i].printid,inwaremx[i].mtrlid,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].jgdscrp,inwaremx[i].unit,moneyid,False,arg_msg) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- 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
- Destroy uo_pay
- Destroy uo_sptprice
- RETURN rslt
- end function
- public function integer p_update_th_cost (long arg_printid, string arg_mtrlcode, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, long arg_dxflag, long arg_sptid, string arg_mtrlcuscode, string arg_location, ref decimal arg_ref_cost, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_cost
- Long ll_storagescid
- SELECT scid INTO :ll_storagescid
- 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
- SELECT cost INTO :ld_cost
- FROM u_mtrlware
- WHERE storageid = :storageid
- AND mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND plancode = :arg_plancode
- AND dxflag = :arg_dxflag
- AND sptid = :arg_sptid
- AND mtrlcuscode = :arg_mtrlcuscode
- AND Location = :arg_location
- And scid = :ll_storagescid Using commit_transaction;
- IF commit_transaction.SQLCode = 100 THEN
- arg_msg = '查询'+arg_mtrlcode+'库存记录失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询'+arg_mtrlcode+'库存成本价失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_inwaremx
- SET cost = :ld_cost
- WHERE scid = :scid
- AND inwareid = :inwareid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '更新'+arg_mtrlcode+'退货成本价失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- arg_ref_cost = ld_cost
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_update_ptqty (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_ptqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_qty,ld_ptqty
- SELECT qty,ptqty INTO :ld_qty,:ld_ptqty
- 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
- IF arg_ptqty > 0 THEN
- IF ld_qty > ld_ptqty + arg_ptqty THEN
- arg_msg = '超配套数'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF ld_ptqty < Abs(arg_ptqty) THEN
- arg_msg = '超返扣配套数'
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_inwaremx
- SET ptqty = ptqty + :arg_ptqty
- 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
- 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_destroy_buytask (ref string arg_msg);Int rslt = 1
- Long i, cnt
- Long ll_taskid, ll_taskid_arr[]
- String ls_taskcode, ls_taskcode_arr[]
- uo_buytask uo_task
- uo_task = Create uo_buytask
- uo_task.commit_transaction = commit_transaction
- cnt = 0
- DECLARE cur_task CURSOR FOR
- SELECT TaskID, taskcode
- FROM u_buyTask
- WHERE relcode = :inwarecode
- AND sptid = :sptid
- AND ltrim(rtrim(dscrp)) = "由退货单号"+:inwarecode+"生成" ;
- OPEN cur_task ;
- FETCH cur_task Into :ll_taskid, :ls_taskcode;
- DO WHILE sqlca.SQLCode = 0
- cnt++
- ll_taskid_arr[cnt] = ll_taskid
- ls_taskcode_arr[cnt] = ls_taskcode
- FETCH cur_task Into :ll_taskid, :ls_taskcode;
- LOOP
- CLOSE cur_task;
- IF cnt = 0 THEN
- GOTO ext
- END IF
- FOR i = 1 To cnt
- IF uo_task.Cancel(scid,ll_taskid_arr[i],arg_msg,False) = 0 THEN
- arg_msg = "采购退货单撤审自动删除相关采购订单失败,采购订单:"+ls_taskcode_arr[i]+","+arg_msg
- rslt = 0
- GOTO ext
- ELSE
- //日志
- f_setsysoplog('采购订单','采购退货单撤审自动删除相关采购订单,id:'+String(ll_taskid_arr[i])+',单号:'+ls_taskcode_arr[i],arg_msg,False)
- END IF
- NEXT
- ext:
- Destroy uo_task
- RETURN rslt
- end function
- public function integer uof_create_buytask (ref string arg_msg);Int rslt = 1
- Long i, j, mxcnt
- Long ll_blltype
- uo_buytask uo_task
- uo_task = Create uo_buytask
- uo_task.commit_transaction = commit_transaction
- FOR j = 0 To 1
- ll_blltype = j //0:材料采购; 1:成品采购
- mxcnt = 0
-
- IF uo_task.newbegin(scid,arg_msg) = 0 THEN //
- rslt = 0
- GOTO ext
- END IF
-
- uo_task.Requiredate = DateTime(Today()) //要求完成日期
- uo_task.Assign_emp = inrep //订单负责人
- uo_task.Kind = 0
- uo_task.reason = ""
- uo_task.sptid = sptid
- uo_task.dscrp = "由退货单号"+inwarecode+"生成" //uof_destroy_buytask
- uo_task.relcode = inwarecode
- uo_task.banktypeid = relint_1
- uo_task.train = ""
- uo_task.billtype = ll_blltype
- uo_task.moneyid = moneyid
- uo_task.mrate = mrate
-
-
- FOR i = 1 To it_mxbt
-
- IF inwaremx[i].Thptype = 2 And inwaremx[i].mxbilltype = ll_blltype THEN
-
- mxcnt++
- IF uo_task.acceptmx(0,&
- 0,&
- '',&
- inwaremx[i].mtrlid,&
- 0 - inwaremx[i].uqty,&
- inwaremx[i].enprice,&
- inwaremx[i].rebate,&
- 0,&
- inwaremx[i].mxdscrp,&
- inwaremx[i].mtrlcode,&
- arg_msg,&
- mxcnt,&
- DateTime(Today()),&
- storageid,&
- inwaremx[i].status,&
- inwaremx[i].unit,&
- inwaremx[i].rate,&
- inwaremx[i].woodcode,&
- inwaremx[i].pcode,&
- 0,&
- 0,&
- 0,&
- 0,&
- inwaremx[i].tax,&
- inwaremx[i].plancode,'') = 0 THEN
- arg_msg = "采购退货单自动建立相关采购订单失败,行:"+String(i)+","+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- NEXT
-
- IF mxcnt > 0 THEN
- IF uo_task.savesubmit(publ_operator,arg_msg,False) = 0 THEN
- arg_msg = "采购退货单自动建立相关采购订单失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- Destroy uo_task
- RETURN rslt
- end function
- public function integer uof_chk_audit (integer arg_type, long arg_scid, long arg_inwareid, long arg_printid, boolean arg_ifcommit, ref string arg_msg);//arg_type : 0 审核; 1 撤审
- Long rslt = 1,i
- Int li_chkflag
- String ls_msg
- SELECT chkflag
- INTO :li_chkflag
- FROM u_inwaremx
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询进仓单明细质检信息失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF arg_type = 0 THEN
- ls_msg = "质检审核"
-
- IF li_chkflag = 1 THEN
- rslt = 0
- arg_msg = "单据明细已经质检审核"
- GOTO ext
- END IF
-
- Dec lde_qty, lde_chkinqty, lde_chkinqty2
- SELECT qty, chkinqty, chkinqty2
- INTO :lde_qty, :lde_chkinqty, :lde_chkinqty2
- FROM u_inwaremx
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询采购收货单明细信息失败,"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- IF lde_qty <> lde_chkinqty + lde_chkinqty2 THEN //没有进仓, 成功返回
- arg_msg = "合格收货数 + 不合格退货数 不等于 收货数,不能质检审核"
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_inwaremx
- SET chkflag = 1,
- chkdate = getdate(),
- chkemp = :publ_operator
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- And chkflag = 0 ;
-
- ELSE
-
- ls_msg = "质检撤审"
-
- IF li_chkflag = 0 THEN
- rslt = 0
- arg_msg = "单据明细未质检审核"
- GOTO ext
- END IF
-
- UPDATE u_inwaremx
- SET chkflag = 0,
- chkdate = NULL,
- chkemp = ''
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- And chkflag = 1 ;
-
- END IF
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "单据明细"+ls_msg+"操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据明细"+ls_msg+"正在处理,请稍后查询。"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF arg_type = 0 THEN
- IF uof_create_move(arg_scid, arg_inwareid, arg_printid, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uof_destroy_move(arg_scid, arg_inwareid, arg_printid, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using sqlca;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using sqlca;
- END IF
- RETURN rslt
- end function
- public function integer uof_create_move (long arg_scid, long arg_inwareid, long arg_printid, ref string arg_msg);//1.合格调仓; 2.不合格调仓
- Int rslt = 1
- Long i, mxcnt
- Long ll_mxstorageid, ll_mxstorageid2
- Long ll_mtrlwareid, ll_mtrlid
- Dec lde_qty, lde_price, lde_uqty, lde_rate, lde_qty2
- String ls_unit, ls_newlocation
- String ls_inwarecode
- Long ll_storageid
- Long ll_outwareid
- uo_outware_move uo_ware
- uo_ware = Create uo_outware_move
- uo_ware.if_getid_ture = false
- SELECT mtrlwareid, storageid, chkinqty, storageid2, chkinqty2, price, location, mtrlid
- INTO :ll_mtrlwareid, :ll_mxstorageid, :lde_qty, :ll_mxstorageid2, :lde_qty2, :lde_price, :ls_newlocation, :ll_mtrlid
- FROM u_inwaremx
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询采购收货单明细信息失败,"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF lde_qty = 0 And lde_qty2 = 0 THEN //没有进仓, 成功返回
- GOTO ext
- END IF
- SELECT inwarecode , storageid
- INTO :ls_inwarecode, :ll_storageid
- FROM u_inware
- WHERE scid = :arg_scid
- And inwareid = :arg_inwareid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询采购收货单信息失败,"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT unit
- INTO :ls_unit
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询物料资料信息失败,"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //检查数据合法性
- IF lde_qty <> 0 THEN
- IF ll_mxstorageid = 0 THEN
- arg_msg = "请选择质检合格调入仓库"
- rslt = 0
- GOTO ext
- END IF
-
-
- IF uo_ware.newbegin(arg_msg) = 0 THEN //
- rslt = 0
- GOTO ext
- END IF
-
-
- i = 1
-
- uo_ware.outdate = DateTime(Today()) // 发生时间
- uo_ware.indate = DateTime(Today()) // 发生时间
- uo_ware.outrep = publ_operator // 经手人
- uo_ware.dscrp = "采购收货明细质检合格调仓" //备注
- uo_ware.sstorageid = ll_storageid
- uo_ware.dstorageid = ll_mxstorageid
- uo_ware.relcode = ls_inwarecode+"." + String(arg_printid)
- uo_ware.ifauto = 1
-
- mxcnt = 1
- IF uo_ware.acceptmx(ll_mtrlwareid,&
- lde_qty,&
- lde_price,&
- arg_msg,&
- i,&
- "",&
- ls_unit,&
- lde_qty,&
- 1,&
- ls_newlocation,0,0,0,'') = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF mxcnt > 0 THEN
- IF uo_ware.Save(arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
-
- ll_outwareid = uo_ware.outwareid
- IF uo_ware.getinfo(ll_outwareid,arg_msg) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单查询信息失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.p_auditing(publ_operator,arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,确认失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.ss_auditing(publ_operator,arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调出审失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.ds_auditing(publ_operator,arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调入审失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- END IF
- IF lde_qty2 <> 0 THEN
- IF ll_mxstorageid2 = 0 THEN
- arg_msg = "请选择质检不合格调入仓库"
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.newbegin(arg_msg) = 0 THEN //
- rslt = 0
- GOTO ext
- END IF
-
- i = 1
-
- uo_ware.outdate = DateTime(Today()) // 发生时间
- uo_ware.indate = DateTime(Today()) // 发生时间
- uo_ware.outrep = publ_operator // 经手人
- uo_ware.dscrp = "采购收货明细质检不合格调仓" //备注
- uo_ware.sstorageid = ll_storageid
- uo_ware.dstorageid = ll_mxstorageid2
- uo_ware.relcode = ls_inwarecode+"." + String(arg_printid)
- uo_ware.ifauto = 1
-
- mxcnt = 1
- IF uo_ware.acceptmx(ll_mtrlwareid,&
- lde_qty2,&
- lde_price,&
- arg_msg,&
- i,&
- "",&
- ls_unit,&
- lde_qty2,&
- 1,&
- ls_newlocation,0,0,0,'') = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF mxcnt > 0 THEN
- IF uo_ware.Save(arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
-
- ll_outwareid = uo_ware.outwareid
- IF uo_ware.getinfo(ll_outwareid,arg_msg) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单查询信息失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.p_auditing(publ_operator,arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,确认失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.ss_auditing(publ_operator,arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调出审失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.ds_auditing(publ_operator,arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调入审失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
- END IF
- ext:
- Destroy uo_ware
- RETURN rslt
- end function
- public function integer uof_destroy_move (long arg_scid, long arg_inwareid, long arg_printid, ref string arg_msg);Int rslt = 1
- Long i, cnt
- Long ll_mxstorageid
- Long ll_mtrlwareid
- String ls_inwarecode, ls_outwarecode, ls_outwarecode_arr[]
- Long ll_storageid, ll_mxstorageid2
- Long ll_outwareid, ll_outwareid_arr[]
- String ls_relcode
- uo_outware_move uo_ware
- uo_ware = Create uo_outware_move
- uo_ware.if_getid_ture = False
- SELECT inwarecode , storageid
- INTO :ls_inwarecode, :ll_storageid
- FROM u_inware
- WHERE scid = :arg_scid
- And inwareid = :arg_inwareid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询采购收货单信息失败,"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT mtrlwareid, storageid, storageid2
- INTO :ll_mtrlwareid, :ll_mxstorageid, :ll_mxstorageid2
- FROM u_inwaremx
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询采购收货单明细信息失败,"+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ls_relcode = ls_inwarecode +"." + String(arg_printid)
- cnt = 0
- DECLARE cur_move CURSOR FOR
- SELECT OutWareID, outwarecode
- FROM u_outware_move
- WHERE relcode = :ls_relcode
- And sstorageid = :ll_storageid;
- OPEN cur_move ;
- FETCH cur_move Into :ll_outwareid, :ls_outwarecode;
- DO WHILE sqlca.SQLCode = 0
- cnt++
- ll_outwareid_arr[cnt] = ll_outwareid
- ls_outwarecode_arr[cnt] = ls_outwarecode
- FETCH cur_move Into :ll_outwareid, :ls_outwarecode;
- LOOP
- CLOSE cur_move;
- IF cnt = 0 THEN
- GOTO ext
- END IF
- FOR i = 1 To cnt
- ll_outwareid = ll_outwareid_arr[i]
- ls_outwarecode = ls_outwarecode_arr[i]
-
- IF ll_outwareid > 0 THEN
- IF uo_ware.getinfo(ll_outwareid,arg_msg) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单查询信息失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware.c_ds_auditing(arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调入撤审失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware.c_ss_auditing(arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调出撤审失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware.c_p_auditing(arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,反确认失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
- IF uo_ware.Cancel(ll_outwareid,arg_msg,False) = 0 THEN
- arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,删除失败,"+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //日志
- f_setsysoplog('仓库调拨单','采购收货单明细质检撤审自动删除相关仓库调拨单,id:'+String(ll_outwareid)+',单号:'+ls_outwarecode,arg_msg,False)
-
-
- END IF
- NEXT
- //SELECT count(*)
- // INTO :cnt
- // FROM u_outware_move
- // WHERE relcode = :ls_relcode
- // AND sstorageid = :ll_storageid
- // And dstorageid = :ll_mxstorageid Using sqlca;
- //IF sqlca.SQLCode <> 0 THEN
- // arg_msg = "查询采购收货单相关仓库调拨单失败,"+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF cnt > 1 THEN
- // arg_msg = "采购收货单存在多张相关仓库调拨单,请手动删除"
- // rslt = 0
- // GOTO ext
- //ELSEIF cnt = 1 THEN
- //
- // SELECT OutWareID, outwarecode
- // INTO :ll_OutWareID, :ls_outwarecode
- // FROM u_outware_move
- // WHERE relcode = :ls_relcode
- // AND sstorageid = :ll_storageid
- // And dstorageid = :ll_mxstorageid Using sqlca;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = "查询采购收货单相关仓库调拨单失败,"+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uo_ware.getinfo(ll_outwareid,arg_msg) = 0 THEN
- // arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单查询信息失败,"+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // IF uo_ware.c_ds_auditing(arg_msg,False) = 0 THEN
- // arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调入撤审失败,"+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // IF uo_ware.c_ss_auditing(arg_msg,False) = 0 THEN
- // arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,调出撤审失败,"+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // IF uo_ware.c_p_auditing(arg_msg,False) = 0 THEN
- // arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,反确认失败,"+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- // IF uo_ware.Cancel(ll_outwareid,arg_msg,False) = 0 THEN
- // arg_msg = "采购收货单明细质检审核自动建立相关仓库调拨单,删除失败,"+arg_msg
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // //日志
- // f_setsysoplog('仓库调拨单','采购收货单明细质检撤审自动删除相关仓库调拨单,id:'+String(ll_outwareid)+',单号:'+ls_outwarecode,arg_msg,False)
- //
- //END IF
- ext:
- Destroy uo_ware
- RETURN rslt
- end function
- public function integer uof_update_chkqty (long arg_scid, long arg_inwareid, long arg_printid, s_inwaremx s_mx, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_qty,lde_chkqty, lde_badqty, lde_goodqty
- Int li_chkflag
- SELECT qty,chkqty,badqty, goodqty , chkflag
- INTO :ld_qty,:lde_chkqty, :lde_badqty, :lde_goodqty, :li_chkflag
- FROM u_inwaremx
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询采购收货单信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_chkflag = 1 THEN
- arg_msg = '采购收货单已经明细质检审核,不能更新质检数量相关数据'
- rslt = 0
- GOTO ext
- END IF
- IF s_mx.chkqty > 0 THEN
- IF ld_qty < lde_chkqty + s_mx.chkqty THEN
- arg_msg = '采购收货单抽检数量大于进仓数量'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF lde_chkqty < Abs(s_mx.chkqty) THEN
- arg_msg = '采购收货单已抽检数量少于本次减少数量'
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_inwaremx
- SET chkqty = chkqty + :s_mx.chkqty,
- badqty = badqty + :s_mx.badqty,
- goodqty = goodqty + :s_mx.goodqty,
- chkinqty = chkinqty + :s_mx.chkinqty,
- chkinqty2 = chkinqty2 + :s_mx.chkinqty2
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新质检数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using sqlca;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using sqlca;
- END IF
- RETURN rslt
- end function
- public function integer uf_cmp_mxmx (ref string arg_msg);// DONE: 计算明细
- //IF Not dw_edit_mode THEN
- // arg_msg = '非编辑状态下不能生成包件明细'
- // RETURN 0
- //END IF
- //
- Long ll_i,ll_j,ll_k, i
- Long ll_row
- Long ll_mtrlid,ll_sptid,ll_storageid
- String ls_mtrlcode,ls_unit
- String ls_plancode,ls_status,ls_woodcode,ls_pcode,ls_mtrlcuscode,ls_location,ls_waredscrp
- String ls_cuscode,ls_cusname,ls_mxdscrp
- Long ll_printid
- Decimal ld_qty,ld_fprice,ld_rebate,ld_planprice_p,ld_uprice,ld_rate
- Int li_outtype,li_ifpackpro
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
- Int li_ifover[],li_dipztype[]
- String ls_pf_mtrlcode[],ls_pf_mtrlname[],ls_pf_mtrlmode[],ls_pf_unit[]
- Decimal ld_Sonscale[],ld_planprice_c[]
- Long ll_SonMtrlid[]
- Long it_mxt = 1
- String ls_status_find,ls_woodcode_find,ls_pcode_find
- Decimal ld_rqty,ld_enprice
- Int li_outtype_storage
- Long ll_ucrow
- Decimal ld_mrate
- ld_mrate = mrate
- ll_storageid = storageid
- IF f_rst_storage_outtype(ll_storageid,li_outtype_storage) = 0 THEN
- arg_msg = '查询仓库出仓策略失败,请检查'
- RETURN 0
- END IF
- //dw_mxmx.Reset()
- IF li_outtype_storage = 0 THEN RETURN 1
- FOR ll_i = 1 To UpperBound(inwaremx)
-
- IF inwaremx[ll_i].mtrlid = 0 THEN CONTINUE
-
- ll_mtrlid = inwaremx[ll_i].mtrlid
- ll_sptid = 0 //dw_child.Object.u_inwaremx_sptid_cusid[ll_i]
- ls_plancode = inwaremx[ll_i].plancode
- ls_status = inwaremx[ll_i].status
- ls_woodcode = inwaremx[ll_i].woodcode
- ls_pcode = inwaremx[ll_i].pcode
- ls_mtrlcuscode = inwaremx[ll_i].mtrlcuscode
- ls_location = inwaremx[ll_i].Location
- ld_qty = inwaremx[ll_i].qty
- ld_enprice = inwaremx[ll_i].enprice
- ld_uprice = ld_enprice * ld_mrate
- ld_rebate = inwaremx[ll_i].rebate
- ld_rate = 1 //dw_child.Object.u_inwaremx_rate[ll_i]
- IF ld_rate = 0 THEN ld_rate = 1
- ld_fprice = Round(ld_uprice/ld_rate,5)
-
- ls_mxdscrp = inwaremx[ll_i].mxdscrp
- ls_waredscrp = '' //dw_child.Object.u_inwaremx_waredscrp[ll_i]
-
- ls_mtrlcode = inwaremx[ll_i].mtrlcode
- // ls_mtrlname = dw_child.Object.mtrlname_my[ll_i]
- // ls_mtrlmode = dw_child.Object.mtrlmode_my[ll_i]
- ls_unit = inwaremx[ll_i].unit
- ls_cuscode = '' //dw_child.Object.u_cust_cuscode[ll_i]
- ls_cusname = '' //dw_child.Object.u_cust_name[ll_i]
-
- ll_printid = ll_i
-
- SELECT outtype,ifpackpro INTO :li_outtype,:li_ifpackpro
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料出仓类型失败'
- RETURN 0
- END IF
-
- IF li_outtype_storage <> 0 THEN
- // IF li_outtype = 0 OR li_ifpackpro = 0 THEN
- IF Not ((li_outtype = 1 Or li_outtype = 2) And li_ifpackpro = 1) THEN
- i = it_mxbt_mx + 1
- IF acceptmx_mx(ll_printid,&
- ll_mtrlid,&
- ls_mtrlcode,&
- ls_plancode,&
- ls_status,&
- ld_qty,&
- ld_fprice,&
- ld_rebate,&
- ls_mxdscrp,&
- arg_msg,&
- ls_woodcode,&
- ls_pcode,&
- ll_sptid,i,'',&
- ls_mtrlcuscode,&
- ls_location,0,0,&
- 1) = 0 THEN
- RETURN 0
- END IF
-
- ELSE
- ld_planprice_p = 0
- it_mxt = 1
-
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.ifover,
- u_prdpf.dipztype,
- u_prdpf.Sonscale,
- u_mtrldef.mtrlcode,
- u_mtrldef.mtrlname,
- u_mtrldef.mtrlmode,
- u_mtrldef.unit,
- u_mtrldef.planprice
- FROM u_PrdPF,u_mtrl_pf,u_mtrldef
- WHERE ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- AND ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- AND ( u_PrdPF.sonmtrlid = u_mtrldef.mtrlid )
- AND ( u_PrdPF.mtrlid = :ll_mtrlid )
- AND ( u_mtrl_pf.ifdi = 1 AND :li_ifpackpro = 0
- OR u_mtrl_pf.ifdft = 1 AND :li_ifpackpro = 1 )
- And ( u_mtrldef.ifpack > 0 );
-
- OPEN cur_pf;
-
- FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],
- :li_dipztype[it_mxt],:ld_Sonscale[it_mxt],
- :ls_pf_mtrlcode[it_mxt],:ls_pf_mtrlname[it_mxt],
- :ls_pf_mtrlmode[it_mxt],:ls_pf_unit[it_mxt],:ld_planprice_c[it_mxt];
- DO WHILE sqlca.SQLCode = 0
- ld_planprice_p += ld_planprice_c[it_mxt]
- it_mxt++
- FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ls_pf_status[it_mxt],
- :ls_pf_woodcode[it_mxt],:ls_pf_pcode[it_mxt],:li_ifover[it_mxt],
- :li_dipztype[it_mxt],:ld_Sonscale[it_mxt],
- :ls_pf_mtrlcode[it_mxt],:ls_pf_mtrlname[it_mxt],
- :ls_pf_mtrlmode[it_mxt],:ls_pf_unit[it_mxt],:ld_planprice_c[it_mxt];
- LOOP
- it_mxt = it_mxt - 1
- CLOSE cur_pf;
-
- FOR ll_j = 1 To it_mxt
- IF li_ifover[ll_j] = 1 THEN
- CHOOSE CASE li_dipztype[ll_j]
- CASE 0
- ls_status_find = ls_status
- ls_woodcode_find = ''
- ls_pcode_find = ''
- CASE 1
- ls_status_find = ''
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ''
- CASE 2
- ls_status_find = ''
- ls_woodcode_find = ''
- ls_pcode_find = ls_pcode
- CASE 3
- ls_status_find = ls_status
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ''
- CASE 4
- ls_status_find = ''
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ls_pcode
- CASE 5
- ls_status_find = ls_status
- ls_woodcode_find = ''
- ls_pcode_find = ls_pcode
- CASE 6
- ls_status_find = ls_status
- ls_woodcode_find = ls_woodcode
- ls_pcode_find = ls_pcode
- END CHOOSE
- ELSE
- ls_status_find = ls_pf_status[ll_j]
- ls_woodcode_find = ls_pf_woodcode[ll_j]
- ls_pcode_find = ls_pf_pcode[ll_j]
- END IF
-
- ls_status_find = Trim(ls_status_find)
- ls_woodcode_find = Trim(ls_woodcode_find)
- ls_pcode_find = Trim(ls_pcode_find)
-
-
- ld_rqty = ld_Sonscale[ll_j] * ld_qty
-
- IF it_mxt = 1 THEN
- ld_fprice = ld_fprice
- ELSE
- IF ld_planprice_p = 0 THEN
- ld_fprice = Round(ld_fprice/it_mxt,2)
- ELSE
- ld_fprice = Round(ld_fprice * ld_planprice_c[ll_j]/ld_planprice_p,2)
- END IF
- END IF
- i = it_mxbt_mx + 1
- IF acceptmx_mx(ll_printid,&
- ll_SonMtrlid[ll_j],&
- ls_pf_mtrlcode[ll_j],&
- ls_plancode,&
- ls_status_find,&
- ld_rqty,&
- ld_fprice,&
- ld_rebate,&
- ls_mxdscrp,&
- arg_msg,&
- ls_woodcode_find,&
- ls_pcode_find,&
- ll_sptid,i,'',&
- ls_mtrlcuscode,&
- ls_location,0,0,&
- 0) = 0 THEN
- RETURN 0
- END IF
-
- NEXT
- END IF
- END IF
- NEXT
- RETURN 1
- end function
- on uo_inware_buy.create
- call super::create
- end on
- on uo_inware_buy.destroy
- call super::destroy
- end on
- event constructor;call super::constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('168',str_optionvalue,arg_msg)
- uo_option_buy_sptprice_sec = Long(str_optionvalue)
- f_get_sys_option_value('130',str_optionvalue,arg_msg)
- uo_option_check_buyin = Long(str_optionvalue)
- f_get_sys_option_value('241',str_optionvalue,arg_msg)
- uo_option_m_mstpay = Long(str_optionvalue)
- f_get_sys_option_value('331',str_optionvalue,arg_msg)
- uo_option_buyth_use_price_update_wareamt = Long(str_optionvalue)
- end event
|