123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319 |
- $PBExportHeader$uo_outware_sale_th.sru
- forward
- global type uo_outware_sale_th from uo_outware_sale
- end type
- end forward
- global type uo_outware_sale_th from uo_outware_sale
- end type
- global uo_outware_sale_th uo_outware_sale_th
- 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 auditing_th (boolean arg_ifcommit, ref string arg_msg)
- public function integer c_auditing_th (boolean arg_ifcommit, ref string arg_msg)
- end prototypes
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg);
- Long rslt = 1,cnt = 0,i
- Long chc
- Long rst_outwareid //
- Long rst_inwareid //
- Long ll_i,ll_j,ll_k
- Int li_ifpack,li_ifunit,li_ifpackpro
- Int li_ifpackcnt,li_ifpackprocnt
- Decimal ld_rate,ld_uqty,ld_rate_buy
- Decimal ld_fprice,ld_uprice
- String ls_uunit,ls_unit_buy,ls_unit
- Long ll_storageid_arr[]
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.commit_transaction = commit_transaction
- IF uo_option_confirmaudit_sale = -1000 THEN
- rslt = 0
- arg_msg = '选项:[025]销售单先确认后审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_outware_saleout = -1000 THEN
- rslt = 0
- arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- 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
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_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 outwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核"
- GOTO ext
- END IF
- IF uo_option_confirmaudit_sale = 1 THEN
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "销售单要确认后才能审核"
- GOTO ext
- END IF
- END IF
- UPDATE u_outware
- SET Auditingrep = :publ_operator,
- Auditingdate = getdate(),
- flag = 1
- WHERE u_outware.outwareid = :outwareid
- AND flag = 0
- And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- 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
- FOR i = 1 To it_mxbt
- Decimal ld_ref_costamt
-
- IF p_update_cost(outwaremx[i].mtrlwareid,outwaremx[i].mtrlcode,&
- outwaremx[i].qty,outwaremx[i].printid,ld_ref_costamt,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_inout_procedure = 0 THEN
-
- IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
- outwaremx[i].status, outwaremx[i].qty,outwaremx[i].uqty, ld_ref_costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
- outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].mtrlcuscode,&
- outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
- outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
- outwaremx[i].qty,outwaremx[i].uqty,ld_ref_costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
-
- cnt = 1
- FOR ll_i = 1 To it_mxbt_mx
- IF ll_i = 1 THEN
- ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
- GOTO _next
- END IF
-
- FOR ll_j = 1 To cnt
- IF ll_storageid_arr[ll_j] = outwaremx_mx[ll_i].storageid THEN
- GOTO _next
- END IF
- NEXT
-
- cnt++
- ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
- _next:
- NEXT
-
- FOR ll_i = 1 To cnt
- IF uo_out.newbegin(scid,21,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_out.relid = outwareid
- uo_out.outdate = outdate
- uo_out.outrep = outrep
- uo_out.part = outwarecode
- uo_out.dscrp = dscrp
- uo_out.cusname = '包件明细自动出仓'
- uo_out.storageid = ll_storageid_arr[ll_i]
-
- chc = 0
-
- FOR i = 1 To it_mxbt_mx
- IF outwaremx_mx[i].storageid <> ll_storageid_arr[ll_i] THEN CONTINUE
- SELECT ifpack,ifunit,unit,rate_buy,unit_buy,planprice
- INTO :li_ifpack,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
- FROM u_mtrldef
- Where mtrlid = :outwaremx_mx[i].mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- chc++
-
- IF li_ifunit = 0 THEN
- ls_uunit = ls_unit
- ld_rate = 1
- ld_uqty = outwaremx_mx[i].qty
- ELSE
- IF ld_rate_buy = 0 THEN
- arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
- rslt = 0
- GOTO ext
- END IF
- ls_uunit = ls_unit_buy
- ld_rate = ld_rate_buy
- ld_uqty = outwaremx_mx[i].qty /ld_rate_buy
- END IF
-
- IF uo_out.acceptmx(outwaremx_mx[i].mtrlwareid,&
- outwaremx_mx[i].qty,ld_fprice,1,&
- outwaremx_mx[i].mxdscrp,chc,arg_msg,0,0,outwaremx_mx[i].printid,0,'',0,outwaremx_mx[i].mxprintid,&
- ls_uunit,ld_uqty,ld_rate,'','',0,0,'',0,0,0,0,'','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF uo_out.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_outwareid = uo_out.outwareid
-
- //2.原事务审核出仓单
- IF uo_out.getinfo(scid,rst_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = outwareid
- uo_in.indate = outdate
- uo_in.inrep = outrep
- uo_in.part = outwarecode
- uo_in.dscrp = dscrp
- uo_in.sptname = '包件自动进仓'
- uo_in.storageid = storageid
-
- chc = 0
-
- FOR i = 1 To it_mxbt
- SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
- INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
- FROM u_mtrldef
- Where mtrlid = :outwaremx[i].mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- // IF li_ifpackpro = 1 THEN
- chc++
-
- IF li_ifunit = 0 THEN
- ls_uunit = ls_unit
- ld_rate = 1
- ld_uqty = outwaremx[i].qty
- ld_uprice = ld_fprice
- ELSE
- IF ld_rate_buy = 0 THEN
- arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
- rslt = 0
- GOTO ext
- END IF
- ls_uunit = ls_unit_buy
- ld_rate = ld_rate_buy
- ld_uqty = outwaremx[i].qty /ld_rate_buy
- ld_uprice = ld_fprice * ld_rate
- END IF
-
- IF uo_in.acceptmx(chc,&
- outwaremx[i].mtrlid,&
- outwaremx[i].mtrlcode,&
- outwaremx[i].plancode,&
- outwaremx[i].status,&
- ld_uqty,&
- ld_uprice,&
- 1,&
- outwaremx[i].mxdscrp,&
- arg_msg,&
- 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
- outwaremx[i].qty,0,0,'','',0,0,&
- outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
- ld_uqty,&
- 0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- // END IF
- NEXT
-
- IF uo_in.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_inwareid = uo_in.inwareid
-
- //4.原事务审核进仓单
- IF uo_in.getinfo(scid,rst_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
- END IF
- Long ll_printid_arr[],ll_mtrlwareid_arr[],ll_mtrlid_arr[]
- String ls_status_arr[],ls_woodcode_arr[],ls_pcode_arr[]
- Decimal ld_qty_arr[]
- Long ll_cnt = 1
- Long ll_printid
- Decimal ld_maxqty
- Long ll_mtrlid
- Int li_outtype
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
- Int li_ifover[],li_dipztype[]
- Decimal ld_Sonscale[]
- Long ll_SonMtrlid[]
- Long it_mxt = 1
- String ls_status_find,ls_woodcode_find,ls_pcode_find
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_pfqty
- IF uo_option_outware_saleout = 1 THEN
- DECLARE cur_mx CURSOR FOR
- SELECT u_outwaremx.printid, u_outwaremx.mtrlwareid, u_outwaremx.mtrlid,
- u_outwaremx.status, u_outwaremx.woodcode, u_outwaremx.pcode,
- u_outwaremx.qty
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND
- u_outwaremx.outwareid = u_outware.outwareid
- WHERE u_outware.relid = :outwareid AND
- u_outware.scid = :scid AND
- u_outware.billtype = 21 Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
- :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
- :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
- LOOP
- CLOSE cur_mx;
- ll_cnt = ll_cnt - 1
-
- FOR ll_i = 1 To it_mxbt
- ld_maxqty = 0
- it_mxt = 1
- ll_printid = outwaremx[ll_i].printid
- ll_mtrlid = outwaremx[ll_i].mtrlid
- ls_status = outwaremx[ll_i].status
- ls_woodcode = outwaremx[ll_i].woodcode
- ls_pcode = outwaremx[ll_i].pcode
-
- SELECT outtype,ifpackpro INTO :li_outtype,:li_ifpackpro
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询产品出仓类型失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF li_outtype = 0 THEN
- FOR ll_j = 1 To ll_cnt
- IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
-
- IF ll_printid_arr[ll_j] = ll_printid THEN
- ld_maxqty = ld_qty_arr[ll_j]
- EXIT
- END IF
- NEXT
-
- UPDATE u_outwaremx
- SET qty = :ld_maxqty
- WHERE outwareid = :outwareid
- AND scid = :scid
- And printid = :ll_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新实发数失败'
- GOTO ext
- END IF
-
- ELSE
- 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
- FROM u_PrdPF,u_mtrl_pf
- WHERE ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- AND ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- 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 );
-
- 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];
- DO WHILE sqlca.SQLCode = 0
- 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];
- LOOP
-
- it_mxt = it_mxt - 1
- CLOSE cur_pf;
-
- FOR ll_k = 1 To it_mxt
- IF li_ifover[ll_k] = 1 THEN
- CHOOSE CASE li_dipztype[ll_k]
- 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_k]
- ls_woodcode_find = ls_pf_woodcode[ll_k]
- ls_pcode_find = ls_pf_pcode[ll_k]
- END IF
-
- ls_status_find = Trim(ls_status_find)
- ls_woodcode_find = Trim(ls_woodcode_find)
- ls_pcode_find = Trim(ls_pcode_find)
-
- ld_pfqty = 0
- FOR ll_j = 1 To ll_cnt
- IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
-
- IF ll_printid_arr[ll_j] = ll_printid And &
- ll_mtrlid_arr[ll_j] = ll_SonMtrlid[ll_k] And &
- ls_status_arr[ll_j] = ls_status_find And &
- ls_woodcode_arr[ll_j] = ls_woodcode_find And &
- ls_pcode_arr[ll_j] = ls_pcode_find THEN
- ld_pfqty = ld_pfqty + ld_qty_arr[ll_j] / ld_Sonscale[ll_k]
-
- END IF
- NEXT
- IF thflag = 0 THEN
- IF ld_pfqty > ld_maxqty THEN ld_maxqty = ld_pfqty
- ELSE
- IF ld_pfqty < ld_maxqty THEN ld_maxqty = ld_pfqty
- END IF
- NEXT
-
- UPDATE u_outwaremx
- SET qty = :ld_maxqty
- WHERE outwareid = :outwareid
- AND scid = :scid
- And printid = :ll_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新实发数失败'
- GOTO ext
- END IF
- END IF
- outwaremx[ll_i].qty = ld_maxqty
- NEXT
-
- IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = outwareid
- uo_in.indate = outdate
- uo_in.inrep = outrep
- uo_in.part = outwarecode
- uo_in.dscrp = dscrp
- uo_in.sptname = '包件自动进仓'
- uo_in.storageid = storageid
-
- chc = 0
-
- FOR i = 1 To it_mxbt
- SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
- INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
- FROM u_mtrldef
- Where mtrlid = :outwaremx[i].mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- chc++
-
- IF li_ifunit = 0 THEN
- ls_uunit = ls_unit
- ld_rate = 1
- ld_uqty = outwaremx[i].qty
- ld_uprice = ld_fprice
- ELSE
- IF ld_rate_buy = 0 THEN
- arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
- rslt = 0
- GOTO ext
- END IF
- ls_uunit = ls_unit_buy
- ld_rate = ld_rate_buy
- ld_uqty = outwaremx[i].qty /ld_rate_buy
- ld_uprice = ld_fprice * ld_rate
- END IF
-
- IF ld_uqty <> 0 Or outwaremx[i].qty <> 0 THEN
- IF uo_in.acceptmx(chc,&
- outwaremx[i].mtrlid,&
- outwaremx[i].mtrlcode,&
- outwaremx[i].plancode,&
- outwaremx[i].status,&
- ld_uqty,&
- ld_uprice,&
- 1,&
- outwaremx[i].mxdscrp,&
- arg_msg,&
- 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
- outwaremx[i].qty,0,0,'','',0,0,&
- outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
- ld_uqty,&
- 0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
-
- IF uo_in.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_inwareid = uo_in.inwareid
-
- //4.原事务审核进仓单
- IF uo_in.getinfo(scid,rst_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
- IF uof_p_barcode(1,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_task
- Destroy uo_in
- Destroy uo_out
- Destroy uo_pro
- RETURN rslt
- end function
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- Long ls_newid
- DateTime null_dt
- Long ll_inwareid_rel,ll_outwareid_rel
- String ls_inwarecode_rel,ls_outwarecode_rel
- String ls_outwarecode_arr[]
- Long ll_outwareid[]
- Long ll_itmx = 1,ll_i
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.commit_transaction = commit_transaction
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_outware_saleout = -1000 THEN
- rslt = 0
- arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- SetNull(null_dt)
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- 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
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_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 outwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还未审核"
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经过财务审核"
- GOTO ext
- END IF
- IF balcflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经日结,不能撤审"
- GOTO ext
- END IF
- String ls_owecode
- Int li_oweflag
- Long ll_owebillid
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_owegood
- WHERE scid = :scid
- And relid = :outwareid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致查询是否存在相关欠货单操作失败'+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 1 THEN
- rslt = 0
- arg_msg = '不合理的欠货单数量(存在多张相关欠货单),请检查'
- GOTO ext
- ELSEIF cnt = 1 THEN
- SELECT billid,billcode ,flag
- INTO :ll_owebillid,:ls_owecode,:li_oweflag
- FROM u_owegood
- WHERE scid = :scid
- And relid = :outwareid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致查询\相关欠货单信息操作失败'+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_oweflag <> 0 THEN
- rslt = 0
- arg_msg = '相关欠货单:'+ls_owecode+' 已在进行或完成,不能撤审销售发货单,请检查'
- GOTO ext
- END IF
-
- DELETE FROM u_owegoodmx
- Where billid = :ll_owebillid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除相关欠货单明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_owegood
- WHERE billid = :ll_owebillid
- And flag = 0;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除相关欠货单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- UPDATE u_outware
- SET Auditingrep = '',
- Auditingdate = :null_dt,
- flag = 0
- WHERE u_outware.outwareid = :outwareid
- AND flag = 1
- And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
-
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- 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 inwareid,inwarecode
- INTO :ll_inwareid_rel,:ls_inwarecode_rel
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- 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_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
-
- DECLARE cur_mx CURSOR FOR
- SELECT outwareid,outwarecode
- FROM u_outware
- WHERE billtype = 21
- AND relid = :outwareid
- And scid = :scid Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
- DO WHILE commit_transaction.SQLCode = 0
- ll_itmx++
- FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
- LOOP
- ll_itmx = ll_itmx - 1
- CLOSE cur_mx;
-
- FOR ll_i = 1 To ll_itmx
- IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '查询相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
-
- IF uo_out.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
-
- IF uo_out.del(scid,ll_outwareid[ll_i],0,arg_msg,False) = 0 THEN
- arg_msg = '相关出仓单:'+ls_outwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
-
- END IF
- IF uo_option_outware_saleout = 1 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- 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 inwareid,inwarecode
- INTO :ll_inwareid_rel,:ls_inwarecode_rel
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- And billtype = 23;
- 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
-
- DECLARE cur_mx_rel CURSOR FOR
- SELECT outwareid
- FROM u_outware
- WHERE billtype = 21
- AND relid = :outwareid
- And scid = :scid Using commit_transaction;
-
- OPEN cur_mx_rel;
- FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
- DO WHILE commit_transaction.SQLCode = 0
- ll_itmx++
- FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
- LOOP
- ll_itmx = ll_itmx - 1
- CLOSE cur_mx_rel;
-
- FOR ll_i = 1 To ll_itmx
- IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '查询相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
-
- IF uo_out.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
- NEXT
- END IF
- FOR i = 1 To it_mxbt
- IF sys_option_inout_procedure = 0 THEN
-
- IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
- outwaremx[i].status, 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,0 - outwaremx[i].costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode, outwaremx[i].mtrlcuscode,&
- outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
- outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
- 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,outwaremx[i].costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
-
- IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid, 0 - outwaremx[i].qty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- IF uof_p_barcode(0,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- 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_task
- Destroy uo_in
- Destroy uo_out
- Destroy uo_pro
- RETURN rslt
- end function
- public function integer auditing_th (boolean arg_ifcommit, ref string arg_msg);
- Long rslt = 1,cnt = 0,i
- Long chc
- Long rst_outwareid //
- Long rst_inwareid //
- Long ll_i,ll_j,ll_k
- Int li_ifpack,li_ifunit,li_ifpackpro
- Int li_ifpackcnt,li_ifpackprocnt
- Decimal ld_rate,ld_uqty,ld_rate_buy
- Decimal ld_fprice,ld_uprice
- String ls_uunit,ls_unit_buy,ls_unit
- Long ll_storageid_arr[]
- Long ll_outwareid_out
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.commit_transaction = commit_transaction
- IF uo_option_confirmaudit_sale = -1000 THEN
- rslt = 0
- arg_msg = '选项:[025]销售单先确认后审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_outware_saleout = -1000 THEN
- rslt = 0
- arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- uo_owegood uo_owe
- uo_owe = Create uo_owegood
- 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
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_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 outwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核"
- GOTO ext
- END IF
- IF uo_option_confirmaudit_sale = 1 THEN
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "销售单要确认后才能审核"
- GOTO ext
- END IF
- END IF
- UPDATE u_outware
- SET Auditingrep = :publ_operator,
- Auditingdate = getdate(),
- flag = 1
- WHERE u_outware.outwareid = :outwareid
- AND flag = 0
- And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- 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 relid = 1 THEN
- IF uo_out.newbegin(scid,22,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_out.relid = outwareid
- uo_out.outdate = outdate
- uo_out.outrep = publ_operator
- uo_out.part = outwarecode
- uo_out.dscrp = ''
- uo_out.cusname = '欠货终止出仓单'
- uo_out.storageid = storageid
-
-
- FOR i = 1 To it_mxbt
- IF uo_out.acceptmx(outwaremx[i].mtrlwareid,&
- 0 - outwaremx[i].qty,&
- outwaremx[i].cost,&
- 1,'',i,arg_msg,0,0,0,0,'',0,0,outwaremx[i].unit,0 - outwaremx[i].uqty,outwaremx[i].rate,'','',0,0,'',0,0,0,0,'','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF uo_out.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_outwareid_out = uo_out.outwareid
-
- //2.原事务审核出仓单
- IF uo_out.getinfo(scid,ll_outwareid_out,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- FOR i = 1 To it_mxbt
- Decimal ld_ref_costamt
-
- IF relid = 0 THEN
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSEIF relid = 1 THEN
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_owe.addstopqty(outwaremx[i].relid,outwaremx[i].relprintid,0 - outwaremx[i].qty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_owe.tryfinish(outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- IF p_update_cost(outwaremx[i].mtrlwareid,outwaremx[i].mtrlcode,&
- outwaremx[i].qty,outwaremx[i].printid,ld_ref_costamt,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_inout_procedure = 0 THEN
-
- IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
- outwaremx[i].status, outwaremx[i].qty,outwaremx[i].uqty, ld_ref_costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
- outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].mtrlcuscode,&
- outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ELSE
- IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
- outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
- outwaremx[i].qty,outwaremx[i].uqty,ld_ref_costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
-
- cnt = 1
- FOR ll_i = 1 To it_mxbt_mx
- IF ll_i = 1 THEN
- ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
- GOTO _next
- END IF
-
- FOR ll_j = 1 To cnt
- IF ll_storageid_arr[ll_j] = outwaremx_mx[ll_i].storageid THEN
- GOTO _next
- END IF
- NEXT
-
- cnt++
- ll_storageid_arr[cnt] = outwaremx_mx[ll_i].storageid
- _next:
- NEXT
-
- FOR ll_i = 1 To cnt
- IF uo_out.newbegin(scid,21,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_out.relid = outwareid
- uo_out.outdate = outdate
- uo_out.outrep = outrep
- uo_out.part = outwarecode
- uo_out.dscrp = dscrp
- uo_out.cusname = '包件明细自动出仓'
- uo_out.storageid = ll_storageid_arr[ll_i]
-
- chc = 0
-
- FOR i = 1 To it_mxbt_mx
- IF outwaremx_mx[i].storageid <> ll_storageid_arr[ll_i] THEN CONTINUE
- SELECT ifpack,ifunit,unit,rate_buy,unit_buy,planprice
- INTO :li_ifpack,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
- FROM u_mtrldef
- Where mtrlid = :outwaremx_mx[i].mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- chc++
-
- IF li_ifunit = 0 THEN
- ls_uunit = ls_unit
- ld_rate = 1
- ld_uqty = outwaremx_mx[i].qty
- ELSE
- IF ld_rate_buy = 0 THEN
- arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
- rslt = 0
- GOTO ext
- END IF
- ls_uunit = ls_unit_buy
- ld_rate = ld_rate_buy
- ld_uqty = outwaremx_mx[i].qty /ld_rate_buy
- END IF
-
- IF uo_out.acceptmx(outwaremx_mx[i].mtrlwareid,&
- outwaremx_mx[i].qty,ld_fprice,1,&
- outwaremx_mx[i].mxdscrp,chc,arg_msg,0,0,outwaremx_mx[i].printid,0,'',0,outwaremx_mx[i].mxprintid,&
- ls_uunit,ld_uqty,ld_rate,'','',0,0,'',0,0,0,0,'','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF uo_out.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_outwareid = uo_out.outwareid
-
- //2.原事务审核出仓单
- IF uo_out.getinfo(scid,rst_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = outwareid
- uo_in.indate = outdate
- uo_in.inrep = outrep
- uo_in.part = outwarecode
- uo_in.dscrp = dscrp
- uo_in.sptname = '包件自动进仓'
- uo_in.storageid = storageid
-
- chc = 0
-
- FOR i = 1 To it_mxbt
- SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
- INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
- FROM u_mtrldef
- Where mtrlid = :outwaremx[i].mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_ifpackpro = 1 THEN
- chc++
-
- IF li_ifunit = 0 THEN
- ls_uunit = ls_unit
- ld_rate = 1
- ld_uqty = outwaremx[i].qty
- ld_uprice = ld_fprice
- ELSE
- IF ld_rate_buy = 0 THEN
- arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
- rslt = 0
- GOTO ext
- END IF
- ls_uunit = ls_unit_buy
- ld_rate = ld_rate_buy
- ld_uqty = outwaremx[i].qty /ld_rate_buy
- ld_uprice = ld_fprice * ld_rate
- END IF
-
- IF uo_in.acceptmx(chc,&
- outwaremx[i].mtrlid,&
- outwaremx[i].mtrlcode,&
- outwaremx[i].plancode,&
- outwaremx[i].status,&
- ld_uqty,&
- ld_uprice,&
- 1,&
- outwaremx[i].mxdscrp,&
- arg_msg,&
- 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
- outwaremx[i].qty,0,0,'','',0,0,&
- outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
- ld_uqty,&
- 0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
-
- IF uo_in.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_inwareid = uo_in.inwareid
-
- //4.原事务审核进仓单
- IF uo_in.getinfo(scid,rst_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
- END IF
- Long ll_printid_arr[],ll_mtrlwareid_arr[],ll_mtrlid_arr[]
- String ls_status_arr[],ls_woodcode_arr[],ls_pcode_arr[]
- Decimal ld_qty_arr[]
- Long ll_cnt = 1
- Long ll_printid
- Decimal ld_maxqty
- Long ll_mtrlid
- Int li_outtype
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
- Int li_ifover[],li_dipztype[]
- Decimal ld_Sonscale[]
- Long ll_SonMtrlid[]
- Long it_mxt = 1
- String ls_status_find,ls_woodcode_find,ls_pcode_find
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_pfqty
- IF uo_option_outware_saleout = 1 THEN
- DECLARE cur_mx CURSOR FOR
- SELECT u_outwaremx.printid, u_outwaremx.mtrlwareid, u_outwaremx.mtrlid,
- u_outwaremx.status, u_outwaremx.woodcode, u_outwaremx.pcode,
- u_outwaremx.qty
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND
- u_outwaremx.outwareid = u_outware.outwareid
- WHERE u_outware.relid = :outwareid AND
- u_outware.scid = :scid AND
- u_outware.billtype = 21 Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
- :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- FETCH cur_mx INTO :ll_printid_arr[ll_cnt],:ll_mtrlwareid_arr[ll_cnt],:ll_mtrlid_arr[ll_cnt],
- :ls_status_arr[ll_cnt],:ls_woodcode_arr[ll_cnt],:ls_pcode_arr[ll_cnt],:ld_qty_arr[ll_cnt];
- LOOP
- CLOSE cur_mx;
- ll_cnt = ll_cnt - 1
-
- FOR ll_i = 1 To it_mxbt
- ld_maxqty = 0
- it_mxt = 1
- ll_printid = outwaremx[ll_i].printid
- ll_mtrlid = outwaremx[ll_i].mtrlid
- ls_status = outwaremx[ll_i].status
- ls_woodcode = outwaremx[ll_i].woodcode
- ls_pcode = outwaremx[ll_i].pcode
-
- SELECT outtype,ifpackpro INTO :li_outtype,:li_ifpackpro
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询产品出仓类型失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF li_outtype = 0 THEN
- FOR ll_j = 1 To ll_cnt
- IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
-
- IF ll_printid_arr[ll_j] = ll_printid THEN
- ld_maxqty = ld_qty_arr[ll_j]
- EXIT
- END IF
- NEXT
-
- UPDATE u_outwaremx
- SET qty = :ld_maxqty
- WHERE outwareid = :outwareid
- AND scid = :scid
- And printid = :ll_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新实发数失败'
- GOTO ext
- END IF
-
- ELSE
- 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
- FROM u_PrdPF,u_mtrl_pf
- WHERE ( u_PrdPF.mtrlid = u_mtrl_pf.mtrlid )
- AND ( u_PrdPF.pfcode = u_mtrl_pf.pfcode )
- 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 );
-
- 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];
- DO WHILE sqlca.SQLCode = 0
- 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];
- LOOP
-
- it_mxt = it_mxt - 1
- CLOSE cur_pf;
-
- FOR ll_k = 1 To it_mxt
- IF li_ifover[ll_k] = 1 THEN
- CHOOSE CASE li_dipztype[ll_k]
- 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_k]
- ls_woodcode_find = ls_pf_woodcode[ll_k]
- ls_pcode_find = ls_pf_pcode[ll_k]
- END IF
-
- ls_status_find = Trim(ls_status_find)
- ls_woodcode_find = Trim(ls_woodcode_find)
- ls_pcode_find = Trim(ls_pcode_find)
-
- ld_pfqty = 0
- FOR ll_j = 1 To ll_cnt
- IF ll_mtrlwareid_arr[ll_j] = 0 THEN CONTINUE
-
- IF ll_printid_arr[ll_j] = ll_printid And &
- ll_mtrlid_arr[ll_j] = ll_SonMtrlid[ll_k] And &
- ls_status_arr[ll_j] = ls_status_find And &
- ls_woodcode_arr[ll_j] = ls_woodcode_find And &
- ls_pcode_arr[ll_j] = ls_pcode_find THEN
- ld_pfqty = ld_pfqty + ld_qty_arr[ll_j] / ld_Sonscale[ll_k]
-
- END IF
- NEXT
- IF thflag = 0 THEN
- IF ld_pfqty > ld_maxqty THEN ld_maxqty = ld_pfqty
- ELSE
- IF ld_pfqty < ld_maxqty THEN ld_maxqty = ld_pfqty
- END IF
- NEXT
-
- UPDATE u_outwaremx
- SET qty = :ld_maxqty
- WHERE outwareid = :outwareid
- AND scid = :scid
- And printid = :ll_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新实发数失败'
- GOTO ext
- END IF
- END IF
- outwaremx[ll_i].qty = ld_maxqty
- NEXT
-
- IF uo_in.newbegin(scid,23,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = outwareid
- uo_in.indate = outdate
- uo_in.inrep = outrep
- uo_in.part = outwarecode
- uo_in.dscrp = dscrp
- uo_in.sptname = '包件自动进仓'
- uo_in.storageid = storageid
-
- chc = 0
-
- FOR i = 1 To it_mxbt
- SELECT ifpackpro,ifunit,unit,rate_buy,unit_buy,planprice
- INTO :li_ifpackpro,:li_ifunit,:ls_unit,:ld_rate_buy,:ls_unit_buy,:ld_fprice
- FROM u_mtrldef
- Where mtrlid = :outwaremx[i].mtrlid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致查询应发明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- chc++
-
- IF li_ifunit = 0 THEN
- ls_uunit = ls_unit
- ld_rate = 1
- ld_uqty = outwaremx[i].qty
- ld_uprice = ld_fprice
- ELSE
- IF ld_rate_buy = 0 THEN
- arg_msg = '明细行:'+String(i)+',资料设为双数量核算,但没有设置默认转换率,请检查'
- rslt = 0
- GOTO ext
- END IF
- ls_uunit = ls_unit_buy
- ld_rate = ld_rate_buy
- ld_uqty = outwaremx[i].qty /ld_rate_buy
- ld_uprice = ld_fprice * ld_rate
- END IF
-
- IF ld_uqty <> 0 Or outwaremx[i].qty <> 0 THEN
- IF uo_in.acceptmx(chc,&
- outwaremx[i].mtrlid,&
- outwaremx[i].mtrlcode,&
- outwaremx[i].plancode,&
- outwaremx[i].status,&
- ld_uqty,&
- ld_uprice,&
- 1,&
- outwaremx[i].mxdscrp,&
- arg_msg,&
- 0,0,0,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].sptid,ls_uunit,ld_rate,&
- outwaremx[i].qty,0,0,'','',0,0,&
- outwaremx[i].mtrlcuscode,outwaremx[i].Location,&
- ld_uqty,&
- 0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
-
- IF uo_in.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_inwareid = uo_in.inwareid
-
- //4.原事务审核进仓单
- IF uo_in.getinfo(scid,rst_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
- IF uof_p_barcode(1,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_pro
- Destroy uo_task
- Destroy uo_in
- Destroy uo_out
- Destroy uo_owe
- RETURN rslt
- end function
- public function integer c_auditing_th (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
- Long ls_newid
- DateTime null_dt
- Long ll_inwareid_rel,ll_outwareid_rel
- String ls_inwarecode_rel,ls_outwarecode_rel
- String ls_outwarecode_arr[]
- Long ll_outwareid[]
- Long ll_itmx = 1,ll_i
- Long ll_outwareid_out
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_sqlpro uo_pro
- uo_pro = Create uo_sqlpro
- uo_pro.commit_transaction = commit_transaction
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_outware_saleout = -1000 THEN
- rslt = 0
- arg_msg = '选项:[147]使用销售出仓单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- SetNull(null_dt)
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = commit_transaction
- uo_inware uo_in
- uo_outware uo_out
- uo_owegood uo_owe
- uo_owe = Create uo_owegood
- 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
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :storageid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_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 outwareid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF ctmint > 0 THEN
- arg_msg = '单据已截数,不能操作'
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据还未审核"
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经过财务审核"
- GOTO ext
- END IF
- IF balcflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经日结,不能撤审"
- GOTO ext
- END IF
- String ls_owecode
- Int li_oweflag
- Long ll_owebillid
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_owegood
- WHERE scid = :scid
- And relid = :outwareid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致查询是否存在相关欠货单操作失败'+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 1 THEN
- rslt = 0
- arg_msg = '不合理的欠货单数量(存在多张相关欠货单),请检查'
- GOTO ext
- ELSEIF cnt = 1 THEN
- SELECT billid,billcode ,flag
- INTO :ll_owebillid,:ls_owecode,:li_oweflag
- FROM u_owegood
- WHERE scid = :scid
- And relid = :outwareid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致查询\相关欠货单信息操作失败'+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_oweflag <> 0 THEN
- rslt = 0
- arg_msg = '相关欠货单:'+ls_owecode+' 已在进行或完成,不能撤审销售发货单,请检查'
- GOTO ext
- END IF
-
- DELETE FROM u_owegoodmx
- Where billid = :ll_owebillid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除相关欠货单明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_owegood
- WHERE billid = :ll_owebillid
- And flag = 0;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除相关欠货单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- UPDATE u_outware
- SET Auditingrep = '',
- Auditingdate = :null_dt,
- flag = 0
- WHERE u_outware.outwareid = :outwareid
- AND flag = 1
- And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uo_option_inout_type <> 0 And uo_option_outware_saleout = 0 THEN
-
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- 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 inwareid,inwarecode
- INTO :ll_inwareid_rel,:ls_inwarecode_rel
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- 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_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
-
- DECLARE cur_mx CURSOR FOR
- SELECT outwareid,outwarecode
- FROM u_outware
- WHERE billtype = 21
- AND relid = :outwareid
- And scid = :scid Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
- DO WHILE commit_transaction.SQLCode = 0
- ll_itmx++
- FETCH cur_mx Into :ll_outwareid[ll_itmx],:ls_outwarecode_arr[ll_itmx];
- LOOP
- ll_itmx = ll_itmx - 1
- CLOSE cur_mx;
-
- FOR ll_i = 1 To ll_itmx
- IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '查询相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
-
- IF uo_out.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
-
- IF uo_out.del(scid,ll_outwareid[ll_i],0,arg_msg,False) = 0 THEN
- arg_msg = '相关出仓单:'+ls_outwarecode_rel+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
-
- END IF
- IF uo_option_outware_saleout = 1 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- 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 inwareid,inwarecode
- INTO :ll_inwareid_rel,:ls_inwarecode_rel
- FROM u_inware
- WHERE scid = :scid
- AND relid = :outwareid
- And billtype = 23;
- 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
-
- DECLARE cur_mx_rel CURSOR FOR
- SELECT outwareid
- FROM u_outware
- WHERE billtype = 21
- AND relid = :outwareid
- And scid = :scid Using commit_transaction;
-
- OPEN cur_mx_rel;
- FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
- DO WHILE commit_transaction.SQLCode = 0
- ll_itmx++
- FETCH cur_mx_rel Into :ll_outwareid[ll_itmx];
- LOOP
- ll_itmx = ll_itmx - 1
- CLOSE cur_mx_rel;
-
- FOR ll_i = 1 To ll_itmx
- IF uo_out.getinfo(scid,ll_outwareid[ll_i],arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '查询相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
-
- IF uo_out.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关出仓单失败,' + arg_msg
- GOTO ext
- END IF
- NEXT
- END IF
- FOR i = 1 To it_mxbt
- IF sys_option_inout_procedure = 0 THEN
-
- IF p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, &
- outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,&
- outwaremx[i].status, 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,0 - outwaremx[i].costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode, outwaremx[i].mtrlcuscode,&
- outwaremx[i].Location,outwaremx[i].ifvqty,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uo_pro.p_outware_update_mtrlware(scid,outwareid,outwaremx[i].printid,outwaremx[i].mtrlwareid,&
- outwaremx[i].mtrlid,outwaremx[i].mtrlcode,storageid,outwaremx[i].plancode,outwaremx[i].status,&
- 0 - outwaremx[i].qty,0 - outwaremx[i].uqty,outwaremx[i].costamt,&
- outwaremx[i].planprice, outwaremx[i].sptid,outwaremx[i].dxflag,&
- outwaremx[i].woodcode, outwaremx[i].pcode,outwaremx[i].mtrlcuscode,outwaremx[i].Location,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF relid = 0 THEN
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_task.addmxcmpl(scid,outwaremx[i].relid,outwaremx[i].relprintid,0 - outwaremx[i].qty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_task.trycmplsaletask(scid,outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSEIF relid = 1 THEN
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_owe.addstopqty(outwaremx[i].relid,outwaremx[i].relprintid,outwaremx[i].qty,arg_msg,False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- If (billtype = 1 Or billtype = 5) And outwaremx[i].relid > 0 THEN
- IF uo_owe.tryfinish(outwaremx[i].relid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- NEXT
- IF relid = 1 THEN
- SELECT count(*) INTO :cnt
- FROM u_outware
- WHERE scid = :scid
- AND relid = :outwareid
- And billtype = 22;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有相关出仓单失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 1 THEN
- SELECT outwareid INTO :ll_outwareid_out
- FROM u_outware
- WHERE scid = :scid
- AND relid = :outwareid
- And billtype = 22;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询是否有相关出仓单失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.getinfo(scid,ll_outwareid_out,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.del(scid,ll_outwareid_out,0,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- END IF
- IF uof_p_barcode(0,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- 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_task
- Destroy uo_in
- Destroy uo_out
- Destroy uo_owe
- Destroy uo_pro
- RETURN rslt
- end function
- on uo_outware_sale_th.create
- call super::create
- end on
- on uo_outware_sale_th.destroy
- call super::destroy
- end on
|