123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108 |
- $PBExportHeader$uo_inware_cp.sru
- forward
- global type uo_inware_cp from uo_inware
- end type
- end forward
- global type uo_inware_cp from uo_inware
- end type
- global uo_inware_cp uo_inware_cp
- type variables
- Int uo_option_order_ml_cpfp_noreltask
- Int uo_option_wkpmtrlware
- Int uo_option_cpinware_update_planprice
- Int uo_option_inware_cp_autoreturnfp_audit
- Int uo_mtrlware_trans_fp_return_secaudit
- 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 uof_auto_scll (ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auto_scll_caudit (ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_get_porder (ref long arg_orderid[], ref decimal arg_acmpqty[], ref string arg_msg)
- public function integer uof_auto_di_in (long arg_orderid[], decimal arg_acmpqty[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auto_di_out (long arg_orderid[], decimal arg_acmpqty[], ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auto_di_caudit (ref string arg_msg, boolean arg_ifcommit)
- public function integer priceaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_planmx_fqty (long arg_scid, long arg_orderid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_auto_return_fp (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_shareqty, long arg_mtrlwareid, ref string arg_msg, boolean arg_ifcommit)
- public function integer fkauditing (long arg_scid, long arg_inwareid, boolean arg_ifcommit, ref string arg_msg)
- public function integer c_fkauditing (long arg_scid, long arg_inwareid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_auto_scll_p (ref string arg_msg)
- public function integer uof_add_relcode (long arg_scid, long arg_inwareid, string arg_relcode, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_secaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_add_pack_fpqty (long arg_scid, long arg_orderid, long arg_mtrlwareid, long arg_mtrlid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Long i,j,k,l,mx_barcode_cnt,m,ll_find
- Long ll_sptid,ll_mtrlwareid_ref
- String ls_mtrlcuscode,ls_msg
- String ls_storagename
- Int li_outtype,li_storagetype
- Int li_ordertype
- Int li_ordertype_case,li_ordertype_p
- Long ll_orderid_retrieve,ll_orderid_p,ll_mtrlid_p
- Int li_mtrlid_p_ifpackpro
- String ls_status_p
- Long ll,ll_taskid,ll_printid,ll_if_saletaskmx_pf_change
- s_mtrlcfg_expr s_pz[]
- Decimal ld_sonscale_retrieve
- Long arg_s_arr,ll_relbillid,ll_relprintid
- Decimal ld_qty_tmp
- Decimal ld_minrate
- Long cnt,cnt_ck
- Decimal ld_orderqty,ld_acmpqty
- Decimal ld_uprate,ld_upqty
- s_cmplpackpro_ref_mtrlwareid_array s_mtrlwareid_array_rst
- s_inwaremx_barcode_fp arg_s_mxbarcode_fp
- Long ll_array
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- s_inwaremx_assign_plan arg_s_ap,arg_s_ap_null
- IF uo_option_inout_type = -1000 THEN
- rslt = 0
- arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_barcode_inwarecp_paudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[207]仓库使用条码流程,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_order_ml_cpfp_noreltask = -1000 THEN
- rslt = 0
- arg_msg = '选项:[224]生产进仓库存分配时不考虑计划相关订单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_cp_inware_scll_rate = -1000 THEN
- rslt = 0
- arg_msg = '选项:[249]指令单生产进仓单审核时限制最大进仓数不能大于领料配套数量,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_cpinware_update_planprice = -1000 THEN
- rslt = 0
- arg_msg = '选项:[256]生产进仓单审核更新计划成本价,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_mtrlware_trans_fp_return_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[346]库存分配还货单使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_inware_cp_autoreturnfp_audit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[354]生产进仓单自动生成库存分配还货单审核选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_canpack_ifzanyong = -1000 THEN
- rslt = 0
- arg_msg = '选项:[417]通用包件产品可装数选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- 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
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- datastore ds_order_replace
- ds_order_replace = Create datastore
- IF uo_option_order_ml_cpfp_noreltask = 0 THEN
- ds_order_replace.DataObject = 'ds_inwaremx_cp_order_mx_assign'
- ELSE
- ds_order_replace.DataObject = 'ds_inwaremx_cp_order_mx_assign2'
- END IF
- ds_order_replace.SetTransObject(commit_transaction)
- datastore ds_order_replace_pack
- ds_order_replace_pack = Create datastore
- datastore ds_order_fp
- ds_order_fp = Create datastore
- ds_order_fp.DataObject = 'ds_inwaremx_fp_assign'
- ds_order_fp.SetTransObject(commit_transaction)
- datastore ds_order_mx_find_taskmx
- ds_order_mx_find_taskmx = Create datastore
- ds_order_mx_find_taskmx.DataObject = 'ds_order_mx_find_salemx'
- ds_order_mx_find_taskmx.SetTransObject(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
- 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 uo_option_inout_type = 2 And &
- uo_option_barcode_inwarecp_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 uo_option_barcode_inwarecp_paudit = 2 THEN
- IF priceflag = 0 THEN
- rslt = 0
- arg_msg = "单据未确认"
- GOTO ext
- END IF
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核"
- GOTO ext
- END IF
- //检查条码数量是否匹配
- If ( li_outtype = 2 Or li_outtype = 3 ) THEN
- IF uof_check_barcodeqty(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF billtype = 3 THEN
- IF uo_option_cp_inware_scll_rate = 1 THEN
- FOR i = 1 To it_mxbt
- IF inwaremx[i].relid > 0 THEN
- IF uof_check_scll_rate(scid,inwareid,inwaremx[i].printid,inwaremx[i].relid,inwaremx[i].mtrlid,inwaremx[i].qty,1,arg_msg) = 0 THEN
- cnt_ck++
- ls_msg += '行:'+String(i)+',指令单号:'+inwaremx[i].relcode + ','+arg_msg+'~r~n'
- END IF
- END IF
- NEXT
-
- IF cnt_ck > 0 THEN
- arg_msg = ls_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_inware
- SET auditingrep = :publ_operator,
- auditingdate = getdate(),
- flag = 1
- WHERE u_inware.inwareid = :inwareid
- And flag = 0 And scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //IF uof_auto_scll(arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- Long ll_orderid_arr[]
- Decimal ld_acmpqty_arr[]
- IF uof_get_porder(ll_orderid_arr,ld_acmpqty_arr,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- IF f_power_ind(2203,sys_msg_pow) And Not sys_power_issuper THEN
- IF inwaremx[i].price = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(i)+',没有单价,请检查'
- GOTO ext
- END IF
- END IF
-
- //yyx20120206
- IF li_storagetype = 1 And inwaremx[i].ifpack <> 2 And inwaremx[i].ifpackpro <> 2 And inwaremx[i].ifpackpro <> 4 THEN
- ll_sptid = 0
- ls_mtrlcuscode = ''
- ELSE
- ll_sptid = inwaremx[i].sptid
- ls_mtrlcuscode = inwaremx[i].mtrlcuscode
- END IF
- //yyx20120206_end
-
- IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
- storageid,inwaremx[i].plancode,inwaremx[i].status,&
- inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].price,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
-
- IF uo_option_cpinware_update_planprice = 1 THEN
- IF f_update_planprice(inwaremx[i].mtrlid,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,2,inwaremx[i].fprice,arg_msg,False,commit_transaction) = 0 THEN
- rslt = 0
- arg_msg = '更新行:'+String(i)+','+arg_msg
- GOTO ext
- END IF
- END IF
-
- IF inwaremx[i].relid > 0 THEN
- IF uo_order.addmxcmpl(scid,inwaremx[i].relid,inwaremx[i].qty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //====================================================================
- // 检查计划是否可完成
- //====================================================================
- IF uo_order.tryfinishorder(scid,inwaremx[i].relid,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //更新排程批(进仓计划) dyy20120809
- IF uof_update_planmx_fqty(scid,inwaremx[i].relid,inwaremx[i].qty,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 = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF p_update_mtrlwareid_inwaremx(ll_mtrlwareid_ref,inwareid,inwaremx[i].printid,arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //增加包件分配包件产品占用记录 dyy 20150306
- if inwaremx[i].ifpack = 1 and inwaremx[i].relid > 0 and uo_option_canpack_ifzanyong = 1 then
- //通用包件 并且 是按指令单的才执行
- if uof_add_pack_fpqty(scid,inwaremx[i].relid,ll_mtrlwareid_ref,inwaremx[i].mtrlid,inwaremx[i].qty,arg_msg,false) = 0 then
- rslt = 0
- goto ext
- end if
- end if
-
-
- //yyx20100814
- //库存分配
- IF li_storagetype = 1 THEN
- //取分配计划
- arg_s_arr = 0
-
- arg_s_ap = arg_s_ap_null
-
- //查询相关计划是否属于销售订单计划
- IF inwaremx[i].iffp = 0 THEN //旧模式
- IF billtype = 3 And inwaremx[i].relid > 0 THEN
- SELECT ordertype,porderid INTO :li_ordertype,:ll_orderid_p
- FROM u_order_ml
- WHERE orderid = :inwaremx[i].relid
- And scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(i)+',查询计划类型失败,'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ll_orderid_p > 0 THEN
- SELECT u_order_ml.mtrlid,u_order_ml.status_mode,u_mtrldef.ifpackpro,u_order_ml.ordertype
- INTO :ll_mtrlid_p,:ls_status_p,:li_mtrlid_p_ifpackpro,:li_ordertype_p
- FROM u_order_ml,u_mtrldef
- WHERE u_order_ml.mtrlid = u_mtrldef.mtrlid
- AND u_order_ml.orderid = :ll_orderid_p
- And u_order_ml.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(i)+'查询分离指令单上级计划物料id,组合配置,包件产品类型失败'+'~n'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
-
- CHOOSE CASE li_ordertype
- CASE 0
- li_ordertype_case = 0
- ll_orderid_retrieve = 0
- CASE 1
- li_ordertype_case = 1
- ll_orderid_retrieve = inwaremx[i].relid
- CASE 2
- li_ordertype_case = 0
- ll_orderid_retrieve = 0
- CASE 3
- li_ordertype_case = 0
- ll_orderid_retrieve = 0
- CASE 4
- IF li_ordertype_p = 1 THEN
- IF inwaremx[i].ifpackpro = 3 Or inwaremx[i].ifpackpro = 4 THEN //散排散进包件产品或整排散进包件产品
- li_ordertype_case = 2
- ll_orderid_retrieve = ll_orderid_p
- ld_sonscale_retrieve = 0
- f_checkpz(ls_status_p,s_pz[])
- FOR ll = 1 To UpperBound(s_pz)
- IF Trim(s_pz[ll].cfgname) = Trim(inwaremx[i].status) THEN
- ld_sonscale_retrieve = Dec(s_pz[ll].qty)
- END IF
- NEXT
-
- IF ld_sonscale_retrieve = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(i)+'查询子件包件组成数失败,请检查相关主生产计划组合配置'
- GOTO ext
- END IF
- ELSEIF inwaremx[i].ifpack = 0 THEN //非包件产品
- IF inwaremx[i].u_mtrldef_ordertype = 1 THEN //分离排产
- IF ll_orderid_p = 0 THEN //非法
- li_ordertype_case = 0
- ll_orderid_retrieve = 0
- ELSE
- IF ll_mtrlid_p = inwaremx[i].mtrlid THEN
- li_ordertype_case = 1
- ll_orderid_retrieve = ll_orderid_p
- ELSE //
- li_ordertype = 0
- ll_orderid_retrieve = 0
- END IF
- END IF
- ELSE
- li_ordertype_case = 0
- ll_orderid_retrieve = 0
- END IF
- ELSEIF inwaremx[i].ifpack = 1 THEN //通用包件
- IF ll_mtrlid_p = inwaremx[i].mtrlid THEN
- li_ordertype_case = 1
- ll_orderid_retrieve = ll_orderid_p
- ELSE
- IF li_mtrlid_p_ifpackpro = 2 THEN
- li_ordertype_case = 5
- ll_orderid_retrieve = ll_orderid_p
- ELSE
- li_ordertype_case = 4
- ll_orderid_retrieve = inwaremx[i].relid
- END IF
- END IF
- ELSEIF inwaremx[i].ifpack = 2 THEN
- IF ll_mtrlid_p = inwaremx[i].mtrlid THEN
- li_ordertype_case = 1
- ll_orderid_retrieve = ll_orderid_p
- ELSE
- IF li_mtrlid_p_ifpackpro = 2 THEN
- li_ordertype_case = 5
- ll_orderid_retrieve = ll_orderid_p
- ELSE
- li_ordertype_case = 4
- ll_orderid_retrieve = inwaremx[i].relid
- END IF
- // li_ordertype_case = 3
- // ll_orderid_retrieve = ll_orderid_p
- END IF
- END IF
- ELSE
- li_ordertype_case = 0
- ll_orderid_retrieve = 0
- END IF
- END CHOOSE
- ELSE
- li_ordertype_case = 0
- ll_orderid_retrieve = 0
- END IF
-
- //li_ordertype_case
- //1-用上级主生产计划订单明细查询
- //2-组合配置包件产品子件包件进仓
- //3-个性包件产品的个性包件(取消这种yyx20120820)
- //4-通用包件产品通用包件进仓
- //5-个性包件产品包件(通用或个性)进仓
-
- CHOOSE CASE li_ordertype_case
- CASE 1 //非包件产品,指令单合并的按订单排产主生产计划
- IF uo_option_order_ml_cpfp_noreltask = 0 THEN
- ds_order_replace.Retrieve(scid,ll_orderid_retrieve)
- ELSE
- ds_order_replace.Retrieve(scid,inwaremx[i].mtrlid,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode)
- END IF
- ds_order_replace.AcceptText()
-
- //找到相关订单就分配,没有则入公共库存 //成品
- IF ds_order_replace.RowCount() > 0 THEN
- ld_qty_tmp = inwaremx[i].qty
- FOR k = 1 To ds_order_replace.RowCount()
- 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.fpgrade[arg_s_arr] = 2
-
- IF uo_option_order_ml_cpfp_noreltask = 0 THEN
- arg_s_ap.relbillid[arg_s_arr] = ds_order_replace.Object.u_order_ml_mx_taskid[k]
- arg_s_ap.relprintid[arg_s_arr] = ds_order_replace.Object.u_order_ml_mx_taskmxid[k]
- ELSE
- arg_s_ap.relbillid[arg_s_arr] = ds_order_replace.Object.u_saletask_taskid[k]
- arg_s_ap.relprintid[arg_s_arr] = ds_order_replace.Object.u_saletaskmx_printid[k]
- END IF
-
- IF ld_qty_tmp <= ds_order_replace.Object.notassignqty[k] THEN
- arg_s_ap.notassignqty[arg_s_arr] = ld_qty_tmp
- arg_s_ap.shareqty[arg_s_arr] = 0
- EXIT
- ELSE
- arg_s_ap.notassignqty[arg_s_arr] = ds_order_replace.Object.notassignqty[k]
- ld_qty_tmp = ld_qty_tmp - ds_order_replace.Object.notassignqty[k]
- //yyx20120906
- //arg_s_ap.shareqty[arg_s_arr] = ds_order_replace.Object.sumqty[k] - ds_order_replace.Object.notassignqty[k]
- IF k = ds_order_replace.RowCount() THEN
- arg_s_ap.shareqty[arg_s_arr] = ld_qty_tmp
- ELSE
- arg_s_ap.shareqty[arg_s_arr] = 0
- END IF
- //
- END IF
- NEXT
- END IF
- CASE 2,3,4
- IF li_ordertype_case = 2 THEN
- ds_order_replace_pack.DataObject = 'ds_inwaremx_cp_order_mx_assign_pack_3_and_4'
- ds_order_replace_pack.SetTransObject(commit_transaction)
- ds_order_replace_pack.Retrieve(scid,ll_orderid_retrieve,inwaremx[i].mtrlid,inwaremx[i].status,ld_sonscale_retrieve)
- ELSEIF li_ordertype_case = 3 THEN
- ds_order_replace_pack.DataObject = 'ds_inwaremx_cp_order_mx_assign_pack_2'
- ds_order_replace_pack.SetTransObject(commit_transaction)
- ds_order_replace_pack.Retrieve(scid,ll_orderid_retrieve,inwaremx[i].mtrlid)
- ELSEIF li_ordertype_case = 4 THEN
- ds_order_replace_pack.DataObject = 'ds_inwaremx_cp_order_mx_assign_pack'
- ds_order_replace_pack.SetTransObject(commit_transaction)
- ds_order_replace_pack.Retrieve(scid,ll_orderid_retrieve,inwaremx[i].mtrlid)
- END IF
- ds_order_replace_pack.AcceptText()
- IF ds_order_replace_pack.RowCount() > 0 THEN
- ld_qty_tmp = inwaremx[i].qty
-
- FOR k = 1 To ds_order_replace_pack.RowCount()
- 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] = ds_order_replace_pack.Object.u_order_ml_mx_taskid[k]
- arg_s_ap.relprintid[arg_s_arr] = ds_order_replace_pack.Object.u_order_ml_mx_taskmxid[k]
- arg_s_ap.fpgrade[arg_s_arr] = 2
-
- IF ld_qty_tmp <= ds_order_replace_pack.Object.notassignqty[k] THEN
- arg_s_ap.notassignqty[arg_s_arr] = ld_qty_tmp
- arg_s_ap.shareqty[arg_s_arr] = 0
- EXIT
- ELSE
- arg_s_ap.notassignqty[arg_s_arr] = ds_order_replace_pack.Object.notassignqty[k]
- ld_qty_tmp = ld_qty_tmp - ds_order_replace_pack.Object.notassignqty[k]
- //yyx20120906
- //arg_s_ap.shareqty[arg_s_arr] = ds_order_replace_pack.Object.sumqty[k] - ds_order_replace_pack.Object.notassignqty[k]
- IF k = ds_order_replace_pack.RowCount() THEN
- arg_s_ap.shareqty[arg_s_arr] = ld_qty_tmp
- ELSE
- arg_s_ap.shareqty[arg_s_arr] = 0
- END IF
- //
- END IF
- NEXT
- END IF
- CASE 5
- ds_order_mx_find_taskmx.Retrieve(scid,ll_orderid_retrieve)
- IF ds_order_mx_find_taskmx.RowCount() > 0 THEN
- ld_qty_tmp = inwaremx[i].qty
-
- FOR l = 1 To ds_order_mx_find_taskmx.RowCount()
-
- IF ld_qty_tmp <= 0 THEN EXIT
-
- ll_taskid = ds_order_mx_find_taskmx.Object.u_order_ml_mx_taskid[l]
- ll_printid = ds_order_mx_find_taskmx.Object.u_order_ml_mx_taskmxid[l]
-
- SELECT count(*)
- INTO :ll_if_saletaskmx_pf_change
- FROM u_saletaskmx_pf
- WHERE u_saletaskmx_pf.scid = :scid
- AND u_saletaskmx_pf.taskid = :ll_taskid
- And u_saletaskmx_pf.printid = :ll_printid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行:'+String(i)+'查询相关订单是否有换包件失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ll_if_saletaskmx_pf_change > 0 THEN
- ds_order_replace_pack.DataObject = 'ds_inwaremx_cp_order_mx_assign_pack_5_1'
- ds_order_replace_pack.SetTransObject(commit_transaction)
- ds_order_replace_pack.Retrieve(scid,ll_taskid,ll_printid,inwaremx[i].mtrlid)
- ELSE
- ds_order_replace_pack.DataObject = 'ds_inwaremx_cp_order_mx_assign_pack_5_2'
- ds_order_replace_pack.SetTransObject(commit_transaction)
- ds_order_replace_pack.Retrieve(scid,ll_taskid,ll_printid,inwaremx[i].mtrlid)
- END IF
-
- ds_order_replace_pack.AcceptText()
- IF ds_order_replace_pack.RowCount() > 0 THEN
-
- FOR k = 1 To ds_order_replace_pack.RowCount()
- 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] = ds_order_replace_pack.Object.u_saletaskmx_taskid[k]
- arg_s_ap.relprintid[arg_s_arr] = ds_order_replace_pack.Object.u_saletaskmx_printid[k]
- arg_s_ap.fpgrade[arg_s_arr] = 2
-
- IF ld_qty_tmp <= ds_order_replace_pack.Object.notassignqty[k] THEN
- arg_s_ap.notassignqty[arg_s_arr] = ld_qty_tmp
- ld_qty_tmp = 0
- arg_s_ap.shareqty[arg_s_arr] = 0
- EXIT
- ELSE
- arg_s_ap.notassignqty[arg_s_arr] = ds_order_replace_pack.Object.notassignqty[k]
- ld_qty_tmp = ld_qty_tmp - ds_order_replace_pack.Object.notassignqty[k]
- //yyx20120906
- //arg_s_ap.shareqty[arg_s_arr] = ds_order_replace_pack.Object.sumqty[k] - ds_order_replace_pack.Object.notassignqty[k]
- IF k = ds_order_replace_pack.RowCount() THEN
- arg_s_ap.shareqty[arg_s_arr] = ld_qty_tmp
- ELSE
- arg_s_ap.shareqty[arg_s_arr] = 0
- END IF
- //
- END IF
- NEXT
- END IF
- NEXT
- END IF
- CASE 0
- //指令查分配计划
- ds_order_fp.Retrieve(scid,inwaremx[i].relid,0,1)
- ds_order_fp.AcceptText()
-
- IF ds_order_fp.RowCount() > 0 THEN
- ld_qty_tmp = inwaremx[i].qty
- FOR k = 1 To ds_order_fp.RowCount()
- arg_s_arr++
- arg_s_ap.planid[arg_s_arr] = 0
- arg_s_ap.assigntype[arg_s_arr] = 0
- 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] = ds_order_fp.Object.relbillid[k]
- arg_s_ap.relprintid[arg_s_arr] = 0
- arg_s_ap.fpgrade[arg_s_arr] = 2
-
- IF ld_qty_tmp <= ds_order_fp.Object.notassignqty[k] THEN
- arg_s_ap.notassignqty[arg_s_arr] = ld_qty_tmp
- arg_s_ap.shareqty[arg_s_arr] = 0
- EXIT
- ELSE
- arg_s_ap.notassignqty[arg_s_arr] = ds_order_fp.Object.notassignqty[k]
- ld_qty_tmp = ld_qty_tmp - ds_order_fp.Object.notassignqty[k]
- arg_s_ap.shareqty[arg_s_arr] = 0
- END IF
- NEXT
- END IF
- CASE 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 CHOOSE
- ELSE //新库存分配模式
- IF inwaremx[i].relid > 0 THEN
- IF uof_ref_assign_plan_plankind(scid,ll_mtrlwareid_ref,1,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)
- IF arg_s_ap.notassignqty[j] > 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],&
- arg_s_ap.notassignqty[j],inwaremx[i].cost,inwaremx[i].mtrlwaredscrp,ls_mtrlcuscode,&
- 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
-
-
- 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
-
- //yyx2013-5-24
- ll_find = 0
- FOR m = 1 To ll_array
- IF arg_s_mxbarcode_fp.mtrlwareid[m] = arg_s_ap.mtrlwareid[j] And &
- arg_s_mxbarcode_fp.relbillid[m] = arg_s_ap.relbillid[j] And &
- arg_s_mxbarcode_fp.relprintid[m] = arg_s_ap.relprintid[j] THEN
- ll_find = m
- EXIT
- END IF
- NEXT
-
- IF ll_find = 0 THEN
- ll_array++
- arg_s_mxbarcode_fp.mtrlwareid[ll_array] = arg_s_ap.mtrlwareid[j]
- arg_s_mxbarcode_fp.relbillid[ll_array] = arg_s_ap.relbillid[j]
- arg_s_mxbarcode_fp.relprintid[ll_array] = arg_s_ap.relprintid[j]
- arg_s_mxbarcode_fp.assignqty[ll_array] = arg_s_ap.notassignqty[j]
- arg_s_mxbarcode_fp.fpqty[ll_array] = 0
- ELSE
- arg_s_mxbarcode_fp.assignqty[ll_find] += arg_s_ap.notassignqty[j]
- END IF
- //yyx2013-5-24_end
- END IF
-
- //有公共库存,还货
-
- IF arg_s_ap.shareqty[j] > 0 And arg_s_ap.relbillid[j] > 0 And arg_s_ap.relprintid[j] > 0 THEN
- IF uof_auto_return_fp(arg_s_ap.scid[j],arg_s_ap.relbillid[j],arg_s_ap.relprintid[j],inwaremx[i].mtrlid,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,arg_s_ap.shareqty[j],arg_s_ap.mtrlwareid[j],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++
-
- //yyx2012-9-29返回计算可装数库存id数组
- If ( inwaremx[i].ifpack = 1 Or inwaremx[i].ifpack = 2 Or inwaremx[i].ifpackpro = 3 Or inwaremx[i].ifpackpro = 4 ) And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_ref_mtrlwarid_array(inwaremx[i].mtrlid,inwaremx[i].plancode,ls_mtrlcuscode,storageid,s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- NEXT
- //生成自动组装出仓单
- IF uof_auto_di_out(ll_orderid_arr,ld_acmpqty_arr,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //生成自动组装进仓单
- IF uof_auto_di_in(ll_orderid_arr,ld_acmpqty_arr,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新条码
- If ( 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
- //yyx2012-9-29返回计算可装数库存id数组计算可装数
- IF UpperBound(s_mtrlwareid_array_rst.mtrlwareid) > 0 And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_cmpl_diqty(s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- Destroy ds_order_replace
- Destroy ds_order_replace_pack
- Destroy ds_order_fp
- Destroy ds_order_mx_find_taskmx
- Destroy uo_cmpl_p
- RETURN rslt
- end function
- public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Long cnt = 0,i,j,mx_barcode_cnt
- Long ll_sptid
- String ls_mtrlcuscode
- String ls_storagename
- Int li_outtype,li_storagetype
- DateTime null_dt
- IF uo_option_canpack_ifzanyong = -1000 THEN
- rslt = 0
- arg_msg = '选项:[417]通用包件产品可装数选项,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- s_inwaremx_assign_plan arg_s_ap,arg_s_ap_null
- s_inwaremx_assign arg_s_a,arg_s_a_null
- s_inwaremx_barcode_fp arg_s_mxbarcode_fp
- s_cmplpackpro_ref_mtrlwareid_array s_mtrlwareid_array_rst
- IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_mtrlware_assign uo_ma
- uo_ma = Create uo_mtrlware_assign
- uo_ma.commit_transaction = commit_transaction
- uo_ma.li_if_assign_del_check_outware = 1
- 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
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- SetNull(null_dt)
- IF storageid = 0 THEN
- rslt = 0
- arg_msg = '没有正确的仓库'
- GOTO ext
- END IF
- IF billtype <> 9 THEN
- IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- SELECT storagename,outtype,storagetype
- 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 flag = 0 THEN
- rslt = 0
- arg_msg = "单据还未审核"
- GOTO ext
- END IF
- IF balcflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经结存,不能撤审"
- GOTO ext
- END IF
- UPDATE u_inware
- SET auditingrep = '',
- auditingdate = :null_dt,
- flag = 0,
- fkemp = '',
- fkdate = :null_dt,
- fkflag = 0
- WHERE u_inware.inwareid = :inwareid
- And flag = 1 And scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uof_auto_scll_caudit(arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //撤审删除相关自动组装进出仓单
- IF uof_auto_di_caudit(arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- //yyx20100814
- IF li_storagetype = 1 And inwaremx[i].ifpack <> 2 And inwaremx[i].ifpackpro <> 2 And inwaremx[i].ifpackpro <> 4 THEN
- ll_sptid = 0
- ls_mtrlcuscode = ''
- ELSE
- ll_sptid = inwaremx[i].sptid
- ls_mtrlcuscode = inwaremx[i].mtrlcuscode
- END IF
- //yyx20100814_end
-
- //yyx20100814
- //库存分配
- IF li_storagetype = 1 THEN
- //取消分配
- arg_s_a = arg_s_a_null
- IF uof_ref_assign_cancel(inwarecode,inwaremx[i].printid,arg_s_a,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- FOR j = 1 To UpperBound(arg_s_a.assignid)
- IF uo_ma.uof_assign_del(arg_s_a.assignid[j],arg_s_a.assignqty[j],&
- arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- //取消分配计划
- arg_s_ap = arg_s_ap_null
- IF uof_ref_assign_plan_cancel(inwarecode,inwaremx[i].printid,arg_s_ap,arg_msg) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- FOR j = 1 To UpperBound(arg_s_ap.planid)
- IF uo_ma.uof_plan_addassignqty(arg_s_ap.planid[j],0 - arg_s_ap.notassignqty[j],&
- inwarecode,inwaremx[i].printid,arg_msg,False) = 0 THEN
- arg_msg = '行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- //yyx20100814_end
- //增加包件分配包件产品占用记录 dyy 20150306
- if inwaremx[i].ifpack = 1 and inwaremx[i].relid > 0 and uo_option_canpack_ifzanyong = 1 then
- //通用包件 并且 是按指令单的才执行
- if uof_add_pack_fpqty(scid,inwaremx[i].relid,inwaremx[i].mtrlwareid,inwaremx[i].mtrlid,0 - inwaremx[i].qty,arg_msg,false) = 0 then
- rslt = 0
- goto ext
- end if
- 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,inwaremx[i].price,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
-
- IF inwaremx[i].relid > 0 THEN
- IF uo_order.addmxcmpl(scid,inwaremx[i].relid,0 - inwaremx[i].qty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- //====================================================================
- // 检查计划是否可完成
- //====================================================================
- IF uo_order.tryfinishorder(scid,inwaremx[i].relid,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- //更新排程批(进仓计划) dyy20120809
- IF uof_update_planmx_fqty(scid,inwaremx[i].relid,0 -inwaremx[i].qty,arg_msg,False) = 0 THEN
- arg_msg = '更新行:'+String(i)+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- END IF
-
- If ( li_outtype = 2 Or li_outtype = 3 ) And inwaremx[i].outtype = 2 THEN mx_barcode_cnt++
-
- //yyx2012-9-29返回计算可装数库存id数组
- If ( inwaremx[i].ifpack = 1 Or inwaremx[i].ifpack = 2 Or inwaremx[i].ifpackpro = 3 Or inwaremx[i].ifpackpro = 4 ) And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_ref_mtrlwarid_array(inwaremx[i].mtrlid,inwaremx[i].plancode,ls_mtrlcuscode,storageid,s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- NEXT
- If ( li_outtype = 2 Or li_outtype = 3 ) And mx_barcode_cnt > 0 THEN
- IF uof_p_barcode(0,arg_msg,arg_s_mxbarcode_fp) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //yyx2012-9-29返回计算可装数库存id数组计算可装数
- IF UpperBound(s_mtrlwareid_array_rst.mtrlwareid) > 0 And uo_option_mtrlware_autocmp = 1 THEN
- IF uo_cmpl_p.uof_cmpl_diqty(s_mtrlwareid_array_rst,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- flag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_order
- Destroy uo_ma
- Destroy uo_cmpl_p
- RETURN rslt
- end function
- public function integer uof_auto_scll (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- IF uo_option_wkpmtrlware = -1000 THEN
- rslt = 0
- arg_msg = '选项:[057]核算车间库存,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- uo_cp_auto_scll uo_mrp_scll
- uo_mrp_scll = Create uo_cp_auto_scll
- uo_order_ml uo_order_scll
- uo_order_scll = Create uo_order_ml
- uo_outware uo_out,uo_out_ws
- uo_out = Create uo_outware
- uo_out.commit_transaction = commit_transaction
- uo_out.if_getid_ture = False
- uo_out_ws = Create uo_outware
- uo_out_ws.commit_transaction = commit_transaction
- uo_out_ws.if_getid_ture = False
- //自动扣车间库存
- IF uo_option_wkpmtrlware = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- s_cp_scll s_cs[],arg_s_cs[],tmp_s_cs[]
- Long i
- Long arg_itmxt,j,k,ll_itmxt
- Boolean if_f
- //1.取应车间库存物料
- FOR i = 1 To it_mxbt
- Long ll_wrkGrpid_p
- Int li_ifwkpmtrlware
-
- // IF inwaremx[i].relid = 0 THEN CONTINUE
-
- IF inwaremx[i].relid = 0 THEN
- SELECT dftwrkgrpid INTO :ll_wrkGrpid_p
- FROM u_mtrldef
- Where mtrlid = :inwaremx[i].mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询行:'+String(i)+'物料生产车间资料失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SELECT wrkGrpid INTO :ll_wrkGrpid_p
- FROM u_order_ml
- WHERE orderid = :inwaremx[i].relid
- And scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询行:'+String(i)+'生产指令单生产车间资料失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- if ll_wrkGrpid_p = 0 THEN CONTINUE
-
- SELECT ifwkpmtrlware INTO :li_ifwkpmtrlware
- FROM u_sc_wkp
- Where wrkGrpid = :ll_wrkGrpid_p Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询行:'+String(i)+'指令单生产车间是否使用车间核算标记失败,原因:'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ifwkpmtrlware = 0 THEN CONTINUE
-
- arg_itmxt = 0
-
- arg_s_cs = tmp_s_cs
-
- IF uo_mrp_scll.uof_cp_scll(scid,inwaremx[i].relid,inwaremx[i].mtrlid,&
- inwaremx[i].qty,arg_s_cs,arg_itmxt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- FOR k = 1 To arg_itmxt
-
- IF inwaremx[i].relid > 0 THEN
- IF uo_order_scll.f_add_dstrqty_ws(scid,inwaremx[i].relid,&
- arg_s_cs[k].wrkGrpid,arg_s_cs[k].mtrlid,arg_s_cs[k].mtrlcode,&
- arg_s_cs[k].status,arg_s_cs[k].woodcode,arg_s_cs[k].pcode,&
- arg_s_cs[k].noallocqty,arg_s_cs[k].allocqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- // if_f = FALSE
- //
- // FOR j = 1 TO UpperBound(s_cs)
- // IF s_cs[j].mtrlid = arg_s_cs[k].mtrlid &
- // AND s_cs[j].wrkGrpid = arg_s_cs[k].wrkGrpid &
- // AND s_cs[j].scid = arg_s_cs[k].scid &
- // AND s_cs[j].orderid = arg_s_cs[k].orderid THEN
- // s_cs[j].qty = s_cs[j].qty + arg_s_cs[k].qty
- // s_cs[j].noallocqty = s_cs[j].noallocqty + arg_s_cs[k].noallocqty
- // s_cs[j].allocqty = s_cs[j].allocqty + arg_s_cs[k].allocqty
- // if_f = TRUE
- // EXIT
- // END IF
- // NEXT
- //
- // IF NOT if_f THEN
-
- SELECT u_sc_wkp.wrkGrpid
- INTO :ll_wrkGrpid_p
- FROM u_sc_workgroup,u_sc_wkp
- WHERE u_sc_workgroup.wrkGrpid = :arg_s_cs[k].wrkGrpid
- AND u_sc_wkp.wrkGrpid = u_sc_workgroup.storageid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工组所属车间所属仓库失败'+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- ll_itmxt++
- s_cs[ll_itmxt].scid = arg_s_cs[k].scid
- s_cs[ll_itmxt].orderid = arg_s_cs[k].orderid
- s_cs[ll_itmxt].mtrlid = arg_s_cs[k].mtrlid
- s_cs[ll_itmxt].wrkGrpid = arg_s_cs[k].wrkGrpid
- s_cs[ll_itmxt].qty = arg_s_cs[k].qty
- s_cs[ll_itmxt].wrkgrpid_p = ll_wrkGrpid_p
- s_cs[ll_itmxt].noallocqty = arg_s_cs[k].noallocqty
- s_cs[ll_itmxt].allocqty = arg_s_cs[k].allocqty
- s_cs[ll_itmxt].mtrlcode = arg_s_cs[k].mtrlcode
-
- // END IF
- NEXT
- NEXT
- //2.查重复车间ID
- Boolean lb_f = False
- Long ch,ll_scid,ll_storageid
- Long lay_wrkgrpid[],ll_wrkgrpid
- Int li_ifnoall,li_ifall
- Long chc,ll_mtrlwareid,rst_outwareid
- Decimal ld_price
- String ls_unit
- FOR k = 1 To UpperBound(s_cs)
- FOR j = 1 To UpperBound(lay_wrkgrpid)
- IF lay_wrkgrpid[j] = s_cs[k].wrkgrpid_p THEN lb_f = True
- NEXT
- IF lb_f = False THEN
- ch++
- lay_wrkgrpid[ch] = s_cs[k].wrkgrpid_p
- END IF
- lb_f = False
- NEXT
- //3.生成出仓单
- FOR k = 1 To UpperBound(lay_wrkgrpid)
-
- ll_wrkgrpid = lay_wrkgrpid[k]
-
- SELECT u_storage.scid,
- u_sc_wkp.storageid
- INTO :ll_scid,:ll_storageid
- FROM u_storage,u_sc_wkp
- WHERE u_sc_wkp.wrkgrpid = :ll_wrkgrpid
- AND u_sc_wkp.storageid = u_storage.storageid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询车间对应仓库属性失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_storageid = 0 THEN
- arg_msg = '自动领料物料领用车间对应仓库未指定,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- li_ifnoall = 0
- li_ifall = 0
-
- FOR j = 1 To UpperBound(s_cs)
-
- if s_cs[j].qty = 0 then continue
-
- IF s_cs[j].wrkgrpid_p <> ll_wrkgrpid THEN CONTINUE
- IF s_cs[j].noallocqty > 0 THEN
- li_ifnoall = 1
- END IF
-
- IF s_cs[j].allocqty > 0 THEN
- li_ifall = 1
- END IF
-
- IF li_ifnoall = 1 And li_ifall = 1 THEN EXIT
- NEXT
-
- IF li_ifnoall = 1 THEN
- IF uo_out.newbegin(ll_scid,16,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 = ll_storageid
- uo_out.relint_1 = ll_wrkgrpid
-
- chc = 0
- FOR j = 1 To UpperBound(s_cs)
- IF s_cs[j].wrkgrpid_p <> ll_wrkgrpid Or s_cs[j].noallocqty < 0 or s_cs[j].qty = 0 THEN CONTINUE
- chc++
-
- SELECT top 1 u_mtrlware.mtrlwareid,
- u_mtrlware.cost ,
- u_mtrldef.unit
- INTO :ll_mtrlwareid,
- :ld_price,
- :ls_unit
- FROM u_mtrlware,u_mtrldef
- WHERE u_mtrlware.storageid = :ll_storageid
- AND u_mtrlware.mtrlid = :s_cs[j].mtrlid
- AND u_mtrlware.status = :s_cs[j].status
- AND u_mtrlware.woodcode = :s_cs[j].woodcode
- AND u_mtrlware.pcode = :s_cs[j].pcode
- AND u_mtrlware.mtrlid = u_mtrldef.mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
-
- ll_mtrlwareid = 0
- ld_price = 0
-
- SELECT unit INTO :ls_unit
- FROM u_mtrldef
- Where mtrlid = :s_cs[j].mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '车间反扣用料>>查询物料'+s_cs[j].mtrlcode+'库存单位失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF f_insert_0_mtrlware(ll_mtrlwareid,s_cs[j].mtrlid,s_cs[j].mtrlcode,ll_storageid,0,s_cs[j].status,s_cs[j].woodcode,s_cs[j].pcode,'','','',0,arg_msg) = 0 THEN
- arg_msg = '车间反扣用料>>增加车间仓0库存失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_out.acceptmx(ll_mtrlwareid,s_cs[j].noallocqty,&
- ld_price,1,'',chc,arg_msg,&
- 1,s_cs[j].orderid,0,0,'',0,s_cs[j].wrkGrpid,ls_unit,s_cs[j].noallocqty,1,'','',0,0,'',0,0,0,0,'','') = 0 THEN
- arg_msg = '车间反扣用料>>物料'+s_cs[j].mtrlcode+','+arg_msg
- 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(ll_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
- END IF
-
- IF li_ifall = 1 THEN
- IF uo_out_ws.newbegin(ll_scid,19,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_out_ws.relid = inwareid
- uo_out_ws.outdate = indate
- uo_out_ws.outrep = inrep
- uo_out_ws.part = inwarecode
- uo_out_ws.dscrp = dscrp
- uo_out_ws.cusname = '生产进仓车间自动出仓(已分配)'
- uo_out_ws.storageid = ll_storageid
- uo_out_ws.relint_1 = ll_wrkgrpid
-
- chc = 0
- FOR j = 1 To UpperBound(s_cs)
- IF s_cs[j].wrkgrpid_p <> ll_wrkgrpid Or s_cs[j].allocqty < 0 or s_cs[j].qty = 0 THEN CONTINUE
- chc++
-
- SELECT top 1 u_mtrlware.mtrlwareid,
- u_mtrlware.cost ,
- u_mtrldef.unit
- INTO :ll_mtrlwareid,
- :ld_price,
- :ls_unit
- FROM u_mtrlware,u_mtrldef
- WHERE u_mtrlware.storageid = :ll_storageid
- AND u_mtrlware.mtrlid = :s_cs[j].mtrlid
- AND u_mtrlware.status = :s_cs[j].status
- AND u_mtrlware.woodcode = :s_cs[j].woodcode
- AND u_mtrlware.pcode = :s_cs[j].pcode
- AND u_mtrlware.mtrlid = u_mtrldef.mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
-
- ll_mtrlwareid = 0
- ld_price = 0
-
- SELECT unit INTO :ls_unit
- FROM u_mtrldef
- Where mtrlid = :s_cs[j].mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '车间反扣用料>>查询物料'+s_cs[j].mtrlcode+'库存单位失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF f_insert_0_mtrlware(ll_mtrlwareid,s_cs[j].mtrlid,s_cs[j].mtrlcode,ll_storageid,0,s_cs[j].status,s_cs[j].woodcode,s_cs[j].pcode,'','','',0,arg_msg) = 0 THEN
- arg_msg = '车间反扣用料>>增加车间仓0库存失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- //
- // IF commit_transaction.SQLCode <> 0 THEN
- // arg_msg = '车间反扣用料>>查询物料库存资料失败(已分配),查检是否已开领料单并进行二审'
- // rslt = 0
- // GOTO ext
- // END IF
-
- IF uo_out_ws.acceptmx(ll_mtrlwareid,s_cs[j].allocqty,&
- ld_price,1,'',chc,arg_msg,&
- 1,s_cs[j].orderid,0,0,'',0,s_cs[j].wrkGrpid,ls_unit,s_cs[j].allocqty,1,'','',0,0,'',0,0,0,0,'','') = 0 THEN
- arg_msg = '车间反扣用料>>物料'+s_cs[j].mtrlcode+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
-
- IF uo_out_ws.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- rst_outwareid = uo_out_ws.outwareid
-
- //2.原事务审核出仓单
- IF uo_out_ws.getinfo(ll_scid,rst_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out_ws.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_mrp_scll
- Destroy uo_order_scll
- Destroy uo_out
- Destroy uo_out_ws
- RETURN rslt
- end function
- public function integer uof_auto_scll_caudit (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- IF uo_option_wkpmtrlware = -1000 THEN
- rslt = 0
- arg_msg = '选项:[057]核算车间库存,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_wkpmtrlware = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- uo_order_ml uo_order_scll
- uo_order_scll = Create uo_order_ml
- uo_outware uo_out
- uo_out = Create uo_outware
- uo_out.commit_transaction = commit_transaction
- uo_out.if_getid_ture = False
- Long rst_scid[],rst_outwareid[],out_i = 1 //出仓id
- String rst_outwarecode[]
- Long k,l
- Long ll_orderid_arr
- Long ll_wrkgrpid,ll_orderid,ll_mtrlid
- Long ll_wrkgrpid_array[],ll_orderid_array[],ll_mtrlid_array[]
- String ls_mtrlcode,ls_status,ls_woodcode,ls_pcode
- String ls_mtrlcode_array[],ls_status_array[],ls_woodcode_array[],ls_pcode_array[]
- Decimal ld_qty,ld_noallocqty,ld_allocqty
- decimal ld_noallocqty_array[],ld_allocqty_array[]
- Long ll_billtype
- DECLARE cur_out_1 CURSOR FOR
- SELECT outwareid,scid,outwarecode
- FROM u_outware
- WHERE part = :inwarecode
- And (billtype = 16 Or billtype = 19) Using commit_transaction;
-
- OPEN cur_out_1;
- FETCH cur_out_1 Into :rst_outwareid[out_i],:rst_scid[out_i],:rst_outwarecode[out_i];
- DO WHILE sqlca.SQLCode = 0
- out_i++
- FETCH cur_out_1 Into :rst_outwareid[out_i],:rst_scid[out_i],:rst_outwarecode[out_i];
- LOOP
- out_i = out_i - 1
- CLOSE cur_out_1;
- IF out_i > 0 THEN
- ll_orderid_arr = 0
- FOR k = 1 To out_i
- DECLARE cur_mx CURSOR FOR
- SELECT u_outwaremx.relprintid,
- u_outware.billtype,
- u_outwaremx.relid,
- u_outwaremx.mtrlid,
- u_mtrldef.mtrlcode,
- 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 INNER JOIN
- u_mtrldef ON u_outwaremx.mtrlid = u_mtrldef.mtrlid
- WHERE u_outware.scid = :rst_scid[k]
- AND u_outware.outwareid = :rst_outwareid[k]
- Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :ll_wrkgrpid,:ll_billtype,:ll_orderid,
- :ll_mtrlid,:ls_mtrlcode,:ls_status,:ls_woodcode,:ls_pcode,:ld_qty;
- DO WHILE commit_transaction.SQLCode = 0
- IF ll_billtype = 16 THEN
- ld_noallocqty = ld_qty
- ld_allocqty = 0
- ELSE
- ld_allocqty = ld_qty
- ld_noallocqty = 0
- END IF
-
- IF ll_orderid > 0 THEN
- ll_orderid_arr++
- ll_orderid_array[ll_orderid_arr] = ll_orderid
- ld_noallocqty_array[ll_orderid_arr] = ld_noallocqty
- ld_allocqty_array[ll_orderid_arr] = ld_allocqty
- ll_wrkgrpid_array[ll_orderid_arr] = ll_wrkgrpid
- ll_mtrlid_array[ll_orderid_arr] = ll_mtrlid
- ls_mtrlcode_array[ll_orderid_arr] = ls_mtrlcode
- ls_status_array[ll_orderid_arr] = ls_status
- ls_woodcode_array[ll_orderid_arr] = ls_woodcode
- ls_pcode_array[ll_orderid_arr] = ls_pcode
- END IF
-
- FETCH cur_mx INTO :ll_wrkgrpid,:ll_billtype,:ll_orderid,
- :ll_mtrlid,:ls_mtrlcode,:ls_status,:ls_woodcode,:ls_pcode,:ld_qty;
- LOOP
- CLOSE cur_mx;
-
-
- FOR l = 1 To ll_orderid_arr
- IF uo_order_scll.f_add_dstrqty_ws(rst_scid[k],ll_orderid_array[l],&
- ll_wrkgrpid_array[l],ll_mtrlid_array[l],ls_mtrlcode_array[l],&
- ls_status_array[l],ls_woodcode_array[l],ls_pcode_array[l],&
- 0 - ld_noallocqty_array[l],0 - ld_allocqty_array[l],arg_msg,False) = 0 THEN
- arg_msg = '车间反扣用料>>'+rst_outwarecode[k]+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- //撤审出仓单,再删除
- IF uo_out.getinfo(rst_scid[k],rst_outwareid[k],arg_msg) = 0 THEN
- arg_msg = '车间反扣用料>>撤审相关出仓单失败,:'+rst_outwarecode[k]+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.c_auditing(False,arg_msg) = 0 THEN
- arg_msg = '车间反扣用料>>撤审相关出仓单失败,:'+rst_outwarecode[k]+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_out.del(rst_scid[k],rst_outwareid[k],0,arg_msg,False) = 0 THEN
- arg_msg = '车间反扣用料>>删除相关出仓单失败,:'+rst_outwarecode[k]+','+arg_msg
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy uo_out
- Destroy uo_order_scll
- RETURN rslt
- end function
- public function integer uof_get_porder (ref long arg_orderid[], ref decimal arg_acmpqty[], ref string arg_msg);Int rslt = 1
- Long ll_i,ll_j
- Long ll_porderid
- Long cnt = 0
- Long ll_orderid_ref[]
- Decimal ld_acmpqty
- Decimal ld_acmpqty_ref[]
- Long li_ifpackpro,li_autoinstall
- Int li_ifpack
- FOR ll_i = 1 TO it_mxbt
- IF inwaremx[ll_i].relid = 0 THEN CONTINUE
-
- SELECT u_order_ml.porderid,u_mtrldef.ifpack
- INTO :ll_porderid,:li_ifpack
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.orderid = :inwaremx[ll_i].relid
- AND u_order_ml.scid = :scid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行'+String(ll_i)+',查询相关主生产计划失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ll_porderid = 0 THEN CONTINUE
- IF li_ifpack = 0 THEN CONTINUE
-
- SELECT u_mtrldef.ifpackpro,u_mtrldef.autoinstall
- INTO :li_ifpackpro,:li_autoinstall
- FROM u_mtrldef,u_order_ml
- WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid
- AND u_order_ml.orderid = :ll_porderid
- AND u_order_ml.scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行'+String(ll_i)+',查询相关主计划产品是否全包件产品及自动组装失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_ifpackpro = 0 OR li_autoinstall = 0 THEN CONTINUE //不是全包件产品,退出函数,否则检查主计划相关指令单是否全部完成
-
- FOR ll_j = 1 TO cnt
- IF ll_porderid = ll_orderid_ref[ll_j] THEN
- GOTO next_
- END IF
- NEXT
-
- SELECT acmpqty INTO :ld_acmpqty
- FROM u_order_ml
- WHERE orderid = :ll_porderid
- AND scid = :scid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '行'+String(ll_i)+',查询相关主生产计划已完成数失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- cnt++
- ll_orderid_ref[cnt] = ll_porderid
- ld_acmpqty_ref[cnt] = ld_acmpqty
- next_:
- NEXT
- ext:
- arg_orderid = ll_orderid_ref
- arg_acmpqty = ld_acmpqty_ref
- RETURN rslt
- end function
- public function integer uof_auto_di_in (long arg_orderid[], decimal arg_acmpqty[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i
- Long ll_inwareid_in
- IF UpperBound(arg_orderid) <= 0 THEN
- rslt = 1
- GOTO ext
- END IF
- Long ll_mtrlid
- String ls_mtrlcode,ls_plancode,ls_status,ls_woodcode,ls_pcode
- Long ll_cusid
- Decimal ld_planprice,ld_acmpqty
- Long cnt = 0
- string ls_unit
- //生成相关进仓单
- uo_inware uo_in
- uo_in = CREATE uo_inware
- uo_in.commit_transaction = commit_transaction
- uo_in.if_getid_ture = FALSE
- IF uo_in.newbegin(scid,19,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_in.relid = inwareid
- uo_in.indate = indate
- uo_in.inrep = opemp
- uo_in.part = inwarecode
- uo_in.dscrp = dscrp
- uo_in.storageid = storageid
- uo_in.sptname = '自动组装进仓单'
- FOR ll_i = 1 TO UpperBound(arg_orderid)
- SELECT u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- u_Order_ml.taskrelcode,
- u_Order_ml.cusid,
- u_mtrldef.mtrlcode,
- u_mtrldef.planprice,
- u_Order_ml.acmpqty,
- u_mtrldef.unit
- INTO :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_plancode,
- :ll_cusid,
- :ls_mtrlcode,
- :ld_planprice,
- :ld_acmpqty,
- :ls_unit
- FROM u_Order_ml INNER JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- WHERE u_Order_ml.orderid = :arg_orderid[ll_i]
- AND u_Order_ml.scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询主生产计划相关信息失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ld_acmpqty - arg_acmpqty[ll_i] = 0 THEN CONTINUE
- cnt++
-
- IF uo_in.acceptmx(ll_i,&
- ll_mtrlid,&
- ls_mtrlcode,&
- ls_plancode,&
- ls_status,&
- ld_acmpqty - arg_acmpqty[ll_i],&
- ld_planprice,&
- 1,&
- '',&
- ARG_MSG,&
- 0,0,0,ls_woodcode,&
- ls_pcode,&
- ll_cusid,&
- ls_unit,&
- 1,ld_acmpqty - arg_acmpqty[ll_i],&
- 0,0,'','',0,0,'','',&
- ld_acmpqty - arg_acmpqty[ll_i],&
- 0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF cnt > 0 THEN
- IF uo_in.Save(FALSE,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_inwareid_in = uo_in.inwareid
-
- IF uo_in.getinfo(scid,ll_inwareid_in,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
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_in
- RETURN rslt
- end function
- public function integer uof_auto_di_out (long arg_orderid[], decimal arg_acmpqty[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i,ll_j
- Long ll_outwareid_out
- IF UpperBound(arg_orderid) <= 0 THEN
- rslt = 1
- GOTO ext
- END IF
- Long ll_mtrlid
- String ls_mtrlcode,ls_plancode,ls_status,ls_woodcode,ls_pcode
- Long ll_cusid
- Decimal ld_planprice,ld_acmpqty
- Long cnt = 0
- Decimal ld_ref_qty,ld_ref_pack_min_nofpqty,ld_ref_noauditingqty_ifpackpro
- String ls_msg
- Long ll_SonMtrlid[],ll_storageid,ll_storageid_f
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
- Int li_ifover[],li_dipztype[]
- String ls_status_find,ls_woodcode_find,ls_pcode_find
- Decimal ld_Sonscale[]
- Decimal ld_mxqty
- Long it_mxt = 1
- Long ll_row
- Long ll_mtrlwareid
- Decimal ld_rqty
- Decimal ld_noallocqty,ld_cost
- Long i
- //生成出仓单
- uo_outware uo_out
- uo_out = CREATE uo_outware
- uo_out.commit_transaction = commit_transaction
- uo_out.if_getid_ture = FALSE
- IF uo_out.newbegin(scid,18,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- uo_out.relid = inwareid
- uo_out.outdate = indate
- uo_out.outrep = opemp
- uo_out.part = inwarecode
- uo_out.dscrp = dscrp
- uo_out.cusname = '自动组装出仓单'
- uo_out.storageid = storageid
- FOR ll_i = 1 TO UpperBound(arg_orderid)
- SELECT u_Order_ml.mtrlid,
- u_Order_ml.status_mode,
- u_Order_ml.woodcode,
- u_Order_ml.pcode,
- u_Order_ml.taskrelcode,
- u_Order_ml.cusid,
- u_mtrldef.mtrlcode,
- u_Order_ml.acmpqty
- INTO :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_plancode,
- :ll_cusid,
- :ls_mtrlcode,
- :ld_acmpqty
- FROM u_Order_ml INNER JOIN
- u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid
- WHERE u_Order_ml.orderid = :arg_orderid[ll_i]
- AND u_Order_ml.scid = :scid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询主生产计划相关信息失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ld_acmpqty - arg_acmpqty[ll_i] = 0 THEN CONTINUE
- cnt++
-
- IF f_cmp_di_qty(ll_mtrlid,storageid,ls_status,ls_woodcode,ls_pcode,ls_plancode,'',ld_ref_qty,ld_ref_pack_min_nofpqty,ld_ref_noauditingqty_ifpackpro,ls_msg,ARG_MSG) = 0 THEN
- ARG_MSG = '计算可装数失败,'+ARG_MSG
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_ref_qty < ld_acmpqty - arg_acmpqty[ll_i] THEN
- rslt = 0
- ARG_MSG = '物料:'+ls_mtrlcode+',可装数:'+String(ld_ref_qty,'#,##0.##########')+',少于此次进仓数:'+String(ld_acmpqty - arg_acmpqty[ll_i],'#,##0.##########')
- GOTO ext
- END IF
-
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.Sonscale,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.ifover,
- u_prdpf.dipztype
- 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.ifdft = 1 );
-
- OPEN cur_pf;
- FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[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];
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- FETCH cur_pf INTO :ll_SonMtrlid[it_mxt],:ld_Sonscale[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];
- LOOP
- it_mxt = it_mxt - 1
- CLOSE cur_pf;
-
- IF it_mxt = 0 THEN
- rslt = 0
- ARG_MSG = '产品:'+ls_mtrlcode+',没有建立默认结构,不能计算'
- END IF
-
- 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_acmpqty - arg_acmpqty[ll_i])
-
- DECLARE m_cur CURSOR FOR
- SELECT mtrlwareid,
- noallocqty,
- cost
- FROM u_mtrlware
- WHERE mtrlid = :ll_SonMtrlid[ll_j]
- AND storageid = :storageid
- AND ( status = :ls_status_find )
- AND ( woodcode = :ls_woodcode_find )
- AND ( pcode = :ls_pcode_find )
- ORDER BY noallocqty DESC
- USING commit_transaction;
-
- OPEN m_cur;
-
- FETCH m_cur INTO
- :ll_mtrlwareid,
- :ld_noallocqty ,
- :ld_cost;
-
- DO WHILE commit_transaction.SQLCode = 0 AND ld_rqty > 0
- i++
- IF ld_noallocqty >= ld_rqty THEN
- ld_mxqty = ld_rqty
- ld_rqty = 0
- ELSE
- ld_mxqty = ld_noallocqty
- ld_rqty = ld_rqty - ld_noallocqty
- END IF
-
- IF uo_out.acceptmx(ll_mtrlwareid,&
- ld_mxqty,&
- ld_cost,&
- 1,'',i,ARG_MSG,0,0,0,0,'',0,0,'',0,0,'','',0,0,'',0,0,0,0,'','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- FETCH m_cur INTO
- :ll_mtrlwareid,
- :ld_noallocqty,
- :ld_cost;
- LOOP
-
- CLOSE m_cur;
- NEXT
- NEXT
- IF cnt > 0 THEN
- IF uo_out.Save(FALSE,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_outwareid_out = uo_out.outwareid
-
- 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
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_out
- RETURN rslt
- end function
- public function integer uof_auto_di_caudit (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- Long ll_inwareid ,ll_outwareid
- cnt = 0
- uo_inware uo_in
- uo_in = CREATE uo_inware
- uo_in.commit_transaction = commit_transaction
- uo_in.if_getid_ture = FALSE
- uo_outware uo_out
- uo_out = CREATE uo_outware
- uo_out.commit_transaction = commit_transaction
- uo_out.if_getid_ture = FALSE
- //撤审删除进仓
- SELECT count(*) INTO :cnt
- FROM u_inware
- WHERE billtype = 19
- AND relid = :inwareid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否有相关自动组装进仓单失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- SELECT inwareid INTO :ll_inwareid
- FROM u_inware
- WHERE billtype = 19
- AND relid = :inwareid
- AND scid = :scid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是相关自动组装进仓单失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF uo_in.getinfo(scid,ll_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.c_auditing(FALSE,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.del(scid,ll_inwareid,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //撤审删除出仓
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_outware
- WHERE billtype = 18
- AND relid = :inwareid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否有相关自动组装出仓单失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- SELECT outwareid INTO :ll_outwareid
- FROM u_outware
- WHERE billtype = 18
- AND relid = :inwareid
- AND scid = :scid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是相关自动组装出仓单失败'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF uo_out.getinfo(scid,ll_outwareid,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,0,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_in
- DESTROY uo_out
- RETURN rslt
- end function
- public function integer priceaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Long ll_i
- IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF priceflag = 1 THEN
- rslt = 0
- arg_msg = "单据已经确认,不能再确认"
- GOTO ext
- END IF
- IF uo_option_cp_inware_scll_rate = 1 THEN
- FOR ll_i = 1 To it_mxbt
- IF uof_check_scll_rate(arg_scid,arg_billid,inwaremx[ll_i].printid,inwaremx[ll_i].relid,inwaremx[ll_i].mtrlid,inwaremx[ll_i].qty,1,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '行:'+String(ll_i)+','+arg_msg
- GOTO ext
- END IF
- NEXT
- END IF
- UPDATE u_inware
- SET priceflag = 1,
- pricedate = getdate(),
- pricerep = :publ_operator
- WHERE inwareid = :arg_billid
- AND scid = :arg_scid
- And priceflag = 0 ;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- priceflag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_update_planmx_fqty (long arg_scid, long arg_orderid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i
- Decimal ld_nofqty,ld_update_qty,ld_qty_in,ld_fqty
- String ls_aps_plancode
- ld_qty_in = arg_qty
- datastore ds_planmx
- ds_planmx = Create datastore
- ds_planmx.DataObject = 'dw_order_zl_planmx_index'
- ds_planmx.SetTransObject(commit_transaction)
- ds_planmx.Retrieve(arg_scid,arg_orderid)
- IF arg_qty > 0 THEN
- ds_planmx.SetSort('begindate A')
- ELSE
- ds_planmx.SetSort('begindate D')
- END IF
- ds_planmx.Sort()
- FOR ll_i = 1 To ds_planmx.RowCount()
- ls_aps_plancode = ds_planmx.Object.aps_plancode[ll_i]
-
- IF ld_qty_in = 0 THEN EXIT
-
- IF arg_qty > 0 THEN
- ld_nofqty = ds_planmx.Object.orderqty[ll_i] - ds_planmx.Object.fqty[ll_i]
-
- IF ld_nofqty > ld_qty_in THEN
- ld_update_qty = ld_qty_in
- ld_qty_in = 0
- ELSE
- ld_update_qty = ld_nofqty
- ld_qty_in = ld_qty_in - ld_nofqty
- END IF
-
- ELSE
- ld_fqty = ds_planmx.Object.fqty[ll_i]
-
- IF ld_fqty + ld_qty_in > 0 THEN
- ld_update_qty = ld_qty_in
- ld_qty_in = 0
- ELSE
- ld_update_qty = 0 - ld_fqty
- ld_qty_in = ld_qty_in + ld_fqty
- END IF
-
- END IF
-
- UPDATE u_order_zl_planmx
- SET fqty = fqty + :ld_update_qty
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- And aps_plancode = :ls_aps_plancode Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新进仓计划完成数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy ds_planmx
- RETURN rslt
- end function
- public function integer uof_auto_return_fp (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_shareqty, long arg_mtrlwareid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i,j
- DateTime server_dt
- Decimal ld_tmp_qty,ld_qty_return
- Long ll_array,ll_array2,ll_if_mx_if_change,ll_cnt,ll_mtrlid_task
- Long ll_taskid_return,ll_printid_return
- Int li_ifpackpro,li_status_task
- Decimal ld_assignqty,ld_sonscale,ld_sonscale_fm,ld_saleqty,ld_ok_returnqty
- String ls_status_task
- Boolean if_cf = False
- s_mtrlcfg_expr s_pz[]
- s_mtrlware_trans_fp s_fp_save
- uo_mtrlware_trans_fp uo_return
- uo_return = Create uo_mtrlware_trans_fp
- datastore ds_lendmx
- ds_lendmx = Create datastore
- ds_lendmx.DataObject = 'ds_auto_return_pf'
- ds_lendmx.SetTransObject(sqlca)
- SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- ds_lendmx.Retrieve(arg_scid,arg_taskid,arg_printid,arg_mtrlid,arg_status,arg_woodcode,arg_pcode)
- IF ds_lendmx.RowCount() > 0 THEN
-
- //yyx20130122
- SELECT ifpackpro
- INTO :li_ifpackpro
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询还货订单明细包件产品属性失败, "+commit_transaction.SQLErrText
- GOTO ext
- END IF
- //yyx20130122_end
-
- ld_tmp_qty = arg_shareqty
-
- FOR ll_i = 1 To ds_lendmx.RowCount()
-
- ld_assignqty = 0
- ld_saleqty = 0
-
- IF ld_tmp_qty <= 0 THEN EXIT
-
- s_fp_save.scid = arg_scid
- s_fp_save.billid = 0
- s_fp_save.billdate = server_dt
- s_fp_save.inrep = publ_operator
- s_fp_save.part = inwarecode
- s_fp_save.dscrp = '生产进仓单:'+inwarecode+'仓审自动生成'
- s_fp_save.storageid = ds_lendmx.Object.storageid[ll_i]
- s_fp_save.taskid = arg_taskid
- s_fp_save.printid = arg_printid
- s_fp_save.billtype = 2
- s_fp_save.fpgrade = ds_lendmx.Object.fpgrade[ll_i]
-
- ll_array = 0
- ll_array2 = 0
-
- IF ld_tmp_qty > 0 THEN
-
- ll_taskid_return = ds_lendmx.Object.taskid[ll_i]
- ll_printid_return = ds_lendmx.Object.taskprintid[ll_i]
-
- SELECT status
- INTO :li_status_task
- FROM u_saletask
- WHERE u_saletask.scid = :arg_scid
- AND u_saletask.taskid = :ll_taskid_return
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询还货订单状态失败, "+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_status_task = 1 THEN
- //yyx20120122
- SELECT u_saletaskmx.saleqty - u_saletaskmx.stopqty,
- u_saletaskmx.status,
- u_saletaskmx.mtrlid
- INTO :ld_saleqty,:ls_status_task,:ll_mtrlid_task
- FROM u_saletaskmx
- WHERE u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.taskid = :ll_taskid_return
- AND u_saletaskmx.printid = :ll_printid_return
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询还货订单明细订货数量失败, "+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF li_ifpackpro = 0 THEN
- ld_sonscale = 1
- ld_sonscale_fm = 1
- ELSEIF li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
- IF li_ifpackpro = 2 THEN
- SELECT count(*)
- INTO :ll_cnt
- FROM u_SaleTaskMx_pf
- WHERE u_SaleTaskMx_pf.scid = :arg_scid
- AND u_SaleTaskMx_pf.taskid = :ll_taskid_return
- AND u_SaleTaskMx_pf.printid = :ll_printid_return
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- ll_if_mx_if_change = 0
- END IF
-
- IF ll_cnt > 0 THEN
- ll_if_mx_if_change = 1
- ELSE
- ll_if_mx_if_change = 0
- END IF
- ELSE
- ll_if_mx_if_change = 0
- END IF
-
- IF ll_if_mx_if_change = 1 THEN
- SELECT u_SaleTaskMx_pf.sonscale,
- u_SaleTaskMx_pf.sonscale_fm
- INTO :ld_sonscale,:ld_sonscale_fm
- FROM u_SaleTaskMx_pf
- WHERE u_SaleTaskMx_pf.scid = :arg_scid
- AND u_SaleTaskMx_pf.taskid = :ll_taskid_return
- AND u_SaleTaskMx_pf.printid = :ll_printid_return
- AND u_SaleTaskMx_pf.sonmtrlid = :arg_mtrlid
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询还货订单明细个性清单组成数失败, "+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- SELECT u_prdpf.sonscale,1 INTO :ld_sonscale,:ld_sonscale_fm
- FROM u_prdpf INNER join
- u_mtrl_pf on ( u_prdpf.mtrlid = u_mtrl_pf.mtrlid AND u_mtrl_pf.ifdft = 1 )
- WHERE u_prdpf.sonmtrlid = :arg_mtrlid
- AND u_prdpf.mtrlid = :ll_mtrlid_task
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询还货订单明细默认清单组成数失败, "+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSEIF li_ifpackpro = 4 THEN
- f_checkpz(ls_status_task,s_pz[])
- FOR j = 1 To UpperBound(s_pz[])
- IF s_pz[j].cfgname = arg_status THEN
- ld_sonscale = Dec(s_pz[j].qty)
- ld_sonscale_fm = 1
- if_cf = True
- END IF
- NEXT
- IF Not if_cf THEN
- rslt = 0
- arg_msg = "查询还货订单明细组合配置子件组成数失败,请检查组合配置信息 "
- GOTO ext
- END IF
- END IF
-
- IF li_ifpackpro = 4 THEN
- SELECT isnull(SUM(u_mtrlware_assign.assignqty),0)
- INTO :ld_assignqty
- FROM u_mtrlware_assign,u_mtrlware
- WHERE u_mtrlware_assign.scid = u_mtrlware.scid AND
- u_mtrlware_assign.mtrlwareid = u_mtrlware.mtrlwareid AND
- u_mtrlware_assign.assigntype = 1 AND
- u_mtrlware_assign.scid = :arg_scid AND
- u_mtrlware_assign.Relbillid = :ll_taskid_return AND
- u_mtrlware_assign.Relprintid = :ll_printid_return AND
- u_mtrlware_assign.mtrlid = :arg_mtrlid AND
- u_mtrlware.status = :arg_status
- Using commit_transaction ;
- ELSE
- SELECT isnull(SUM(u_mtrlware_assign.assignqty),0)
- INTO :ld_assignqty
- FROM u_mtrlware_assign
- WHERE u_mtrlware_assign.assigntype = 1 AND
- u_mtrlware_assign.scid = :arg_scid AND
- u_mtrlware_assign.Relbillid = :ll_taskid_return AND
- u_mtrlware_assign.Relprintid = :ll_printid_return AND
- u_mtrlware_assign.mtrlid = :arg_mtrlid
- Using commit_transaction ;
- END IF
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询还货订单明细已分配数量失败, "+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ld_saleqty * ld_sonscale/ld_sonscale_fm - ld_assignqty > 0 THEN
- IF ds_lendmx.Object.noreturnqty[ll_i] > ld_saleqty * ld_sonscale/ld_sonscale_fm - ld_assignqty THEN
- ld_ok_returnqty = ld_saleqty * ld_sonscale/ld_sonscale_fm - ld_assignqty
- ELSE
- ld_ok_returnqty = ds_lendmx.Object.noreturnqty[ll_i]
- END IF
-
- IF ld_tmp_qty > ld_ok_returnqty THEN
- ld_qty_return = ld_ok_returnqty
- ld_tmp_qty = ld_tmp_qty - ld_ok_returnqty
- ELSE
- ld_qty_return = ld_tmp_qty
- ld_tmp_qty = 0
- END IF
- //
-
- // IF ld_tmp_qty > ds_lendmx.Object.noreturnqty[ll_i] THEN
- // ld_qty_return = ds_lendmx.Object.noreturnqty[ll_i]
- // ld_tmp_qty = ld_tmp_qty - ds_lendmx.Object.noreturnqty[ll_i]
- // ELSE
- // ld_qty_return = ld_tmp_qty
- // ld_tmp_qty = 0
- // END IF
-
-
- //调入
- ll_array++
- s_fp_save.arg_s_mx[ll_array].printid = ll_array
- s_fp_save.arg_s_mx[ll_array].transtype = 1
- s_fp_save.arg_s_mx[ll_array].qty = ld_qty_return
- s_fp_save.arg_s_mx[ll_array].mxdscrp = ''
- s_fp_save.arg_s_mx[ll_array].taskid = ds_lendmx.Object.taskid[ll_i]
- s_fp_save.arg_s_mx[ll_array].taskprintid = ds_lendmx.Object.taskprintid[ll_i]
- s_fp_save.arg_s_mx[ll_array].mxprintid = ds_lendmx.Object.mxprintid[ll_i]
-
- s_fp_save.arg_s_mx[ll_array].mtrlwareid = arg_mtrlwareid //ds_lendmx.Object.mtrlwareid[ll_j]
- s_fp_save.arg_s_mx[ll_array].relid = ds_lendmx.Object.relid[ll_i]
- s_fp_save.arg_s_mx[ll_array].Relprintid = ds_lendmx.Object.Relprintid[ll_i]
-
- //yyx20120906
- //调出
- ll_array2++
- s_fp_save.arg_s_mx2[ll_array2].printid = ds_lendmx.Object.mxprintid[ll_i]
- s_fp_save.arg_s_mx2[ll_array2].mtrlid = arg_mtrlid
- s_fp_save.arg_s_mx2[ll_array2].status = arg_status
- s_fp_save.arg_s_mx2[ll_array2].woodcode = arg_woodcode
- s_fp_save.arg_s_mx2[ll_array2].pcode = arg_pcode
- s_fp_save.arg_s_mx2[ll_array2].transqty = ld_qty_return
- s_fp_save.arg_s_mx2[ll_array2].sonscale = ds_lendmx.Object.sonscale[ll_i]
- s_fp_save.arg_s_mx2[ll_array2].assignid = 0
- s_fp_save.arg_s_mx2[ll_array2].mtrlwareid = arg_mtrlwareid
- s_fp_save.arg_s_mx2[ll_array2].taskid = arg_taskid
- s_fp_save.arg_s_mx2[ll_array2].taskprintid = arg_printid
- s_fp_save.arg_s_mx2[ll_array2].mxtype = 0
- END IF
- END IF
- END IF
-
- IF ll_array > 0 And ll_array2 > 0 THEN
- IF uo_return.Save(s_fp_save,publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '自动建立库存分配还货单失败,'+arg_msg
- GOTO ext
- END IF
-
- IF uo_option_inware_cp_autoreturnfp_audit = 0 Or uo_option_inware_cp_autoreturnfp_audit = 2 THEN
- IF uo_return.affirm(uo_return.uo_billid,publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '审核自动建立库存分配还货单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- IF uo_option_inware_cp_autoreturnfp_audit = 0 Or uo_option_inware_cp_autoreturnfp_audit = 2 And uo_mtrlware_trans_fp_return_secaudit = 0 THEN
- IF uo_return.audit(uo_return.uo_billid,publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '审核自动建立库存分配还货单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
- END IF
-
- NEXT
-
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_return
- Destroy ds_lendmx
- RETURN rslt
- end function
- public function integer fkauditing (long arg_scid, long arg_inwareid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- IF getinfo(arg_scid,arg_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据未审核"
- GOTO ext
- END IF
- IF fkflag = 1 THEN
- rslt = 0
- arg_msg = "单据已反扣"
- GOTO ext
- END IF
- UPDATE u_inware
- SET fkemp = :publ_operator,
- fkdate = getdate(),
- fkflag = 1
- WHERE scid = :arg_scid
- AND u_inware.inwareid = :arg_inwareid
- AND flag = 1
- And fkflag = 0 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 uof_auto_scll(arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer c_fkauditing (long arg_scid, long arg_inwareid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- IF getinfo(arg_scid,arg_inwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "单据未审核"
- GOTO ext
- END IF
- IF fkflag = 0 THEN
- rslt = 0
- arg_msg = "单据未反扣"
- GOTO ext
- END IF
- UPDATE u_inware
- SET fkemp = '',
- fkdate = null,
- fkflag = 0
- WHERE scid = :arg_scid
- AND u_inware.inwareid = :arg_inwareid
- And fkflag = 1 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 uof_auto_scll_caudit(arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_auto_scll_p (ref string arg_msg);Int rslt = 1
- String ls_msg
- String ls_inwarecode
- Long ll_rowcnt, i
- Long ll_scid, ll_inwareid
- Long ll_suc, ll_fail
- datastore ds
- ds = Create datastore
- ds.DataObject = "ds_inware_cp_not_fk"
- ds.SetTransObject(commit_transaction)
- ll_rowcnt = ds.Retrieve()
- FOR i = 1 To ll_rowcnt
- ll_scid = ds.Object.u_inware_scid[i]
- ll_inwareid = ds.Object.inwareid[i]
- ls_inwarecode = ds.Object.inwarecode[i]
-
- IF fkauditing(ll_scid, ll_inwareid, True, ls_msg) = 0 THEN
- ls_msg = "生产进仓单:"+ls_inwarecode + ","+ls_msg
- arg_msg += ls_msg + "~r~n"
- ll_fail++
- f_setsysoplog('生产进仓单','自动反扣失败,'+ls_msg,ls_msg,True)
- ELSE
- ll_suc++
- END IF
- NEXT
- f_setsysoplog('生产进仓单','自动批反扣,成功:'+String(ll_suc)+", 失败:"+String(ll_fail),ls_msg,True)
- Destroy ds
- if ll_fail > 0 then
- rslt = 0
- end if
- RETURN rslt
- end function
- public function integer uof_add_relcode (long arg_scid, long arg_inwareid, string arg_relcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- arg_relcode = Trim(arg_relcode)
- If it_updatebegin Or it_newbegin Then
- rslt = 0
- arg_msg = "编辑状态下不可用"
- Goto ext
- End If
- If p_getinfo(arg_scid,arg_inwareid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If flag = 0 Then
- rslt = 0
- arg_msg = "非审核状态下不可用"
- Goto ext
- End If
- Update u_inware
- Set part = :arg_relcode
- Where scid = :arg_scid
- And inwareid = :arg_inwareid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致添加相关号操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- part = arg_relcode
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Return (rslt)
- end function
- public function integer uof_secaudit (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,i
- If uo_option_cpinware_update_planprice = -1000 Then
- rslt = 0
- arg_msg = '选项:[256]生产进仓单审核更新计划成本价,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If getinfo(arg_scid,arg_billid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If secflag = 1 Then
- rslt = 0
- arg_msg = "单据已经财审,不能再财审"
- Goto ext
- End If
- For i = 1 To it_mxbt
- If uo_option_cpinware_update_planprice = 2 Then
- If f_update_planprice(inwaremx[i].mtrlid,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,2,inwaremx[i].fprice,arg_msg,False,commit_transaction) = 0 Then
- rslt = 0
- arg_msg = '更新计划价失败,行:'+String(i)+','+arg_msg
- Goto ext
- End If
- End If
- Next
- Update u_inware
- Set secflag = 1,
- secauditingdate = getdate(),
- secauditingrep = :publ_operator
- Where inwareid = :arg_billid
- And scid = :arg_scid
- And secflag = 0 ;
-
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
- Goto ext
- ElseIf commit_transaction.SQLNRows = 0 Then
- rslt = 0
- arg_msg = "单据正在财审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
- Goto ext
- End If
- secflag = 1
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using commit_transaction;
- End If
- Return rslt
- end function
- public function integer uof_add_pack_fpqty (long arg_scid, long arg_orderid, long arg_mtrlwareid, long arg_mtrlid, decimal arg_qty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_cpmtrlid,ll_porderid
- Int li_ordertype,li_ifpackpro
- String ls_taskrelcode,ls_status,ls_woodcode,ls_pcode
- Long ll_storageid,ll_cusid,ll_cpmtrlwareid
- Int li_storagetype,li_balctype
- uo_cmpl_packpro uo_pack
- uo_pack = Create uo_cmpl_packpro
- uo_pack.commit_transaction = commit_transaction
- Select u_Order_ml_p.mtrlid,
- u_Order_ml.ordertype,
- u_mtrldef.ifpackpro,
- isnull(u_order_ml.porderid,0),
- u_order_ml_p.taskrelcode,
- u_order_ml_p.status_mode,
- u_order_ml_p.woodcode,
- u_order_ml_p.pcode,
- u_mtrldef.storagetype
- Into :ll_cpmtrlid,
- :li_ordertype,
- :li_ifpackpro,
- :ll_porderid,
- :ls_taskrelcode,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :li_storagetype
- FROM u_Order_ml u_order_ml_p INNER JOIN
- u_mtrldef ON u_order_ml_p.mtrlid = u_mtrldef.mtrlid RIGHT OUTER JOIN
- u_Order_ml ON u_order_ml_p.OrderID = u_Order_ml.porderid AND
- u_order_ml_p.scid = u_Order_ml.scid
- Where u_order_ml.scid = :arg_scid
- And u_Order_ml.OrderID = :arg_orderid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询相关指令单信息失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- If ll_porderid = 0 Then
- rslt = 1
- Goto ext
- End If
- //如果进仓的不是指令单,不执行
- If li_ordertype <> 4 Then
- rslt = 1
- Goto ext
- End If
- //如果上级生产计划不是通用包件产品,不执行
- If li_ifpackpro <> 1 Then
- rslt = 1
- Goto ext
- End If
- //找生产计划产品对应的库存ID
- ll_storageid = storageid
- select balctype
- into :li_balctype
- from u_storage
- where storageid = :ll_storageid Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询进仓单仓库信息失败,'+commit_transaction.SQLErrText
- Goto ext
- End If
- If li_balctype = 0 Then
- ll_cusid = 0
- Else
- If li_storagetype = 1 Then ll_cusid = 0
- End If
- Select top 1 mtrlwareid Into :ll_cpmtrlwareid
- From u_mtrlware
- Where mtrlid = :ll_cpmtrlid
- And status = :ls_status
- And storageid = :ll_storageid
- And woodcode = :ls_woodcode
- And plancode = ''
- And pcode = :ls_pcode
- And sptid = :ll_cusid
- And mtrlcuscode = '';
- If commit_transaction.SQLCode = -1 Then
- arg_msg = '查询产品库存失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- ElseIf commit_transaction.SQLCode = 100 Then
- ll_cpmtrlwareid = 0
-
- ll_cpmtrlwareid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,True,id_sqlca)
- If ll_cpmtrlwareid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- Insert Into u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid,mtrlcuscode)
- Values(:arg_scid,:ll_cpmtrlwareid,:ll_cpmtrlid,:ll_storageid,0,:ls_status,'',:ls_woodcode,:ls_pcode,:ll_cusid,'') Using commit_transaction;
- If commit_transaction.SQLCode <> 0 Then
- arg_msg = '主生产计划产品加0库存失败或物料已经有库存,请检查,'+commit_transaction.SQLErrText
- rslt = 0
- Goto ext
- End If
- End If
- If uo_pack.uof_add_fpqty(arg_scid,arg_mtrlwareid,arg_mtrlid,ll_cpmtrlwareid,ll_cpmtrlid,arg_qty,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback Using commit_transaction;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using commit_transaction;
- End If
- Destroy uo_pack
- Return rslt
- end function
- on uo_inware_cp.create
- call super::create
- end on
- on uo_inware_cp.destroy
- call super::destroy
- end on
- event constructor;call super::constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('224',str_optionvalue,arg_msg)
- uo_option_order_ml_cpfp_noreltask = Long(str_optionvalue)
- f_get_sys_option_value('057',str_optionvalue,arg_msg)
- uo_option_wkpmtrlware = Long(str_optionvalue)
- f_get_sys_option_value('256',str_optionvalue,arg_msg)
- uo_option_cpinware_update_planprice = long(str_optionvalue)
- f_get_sys_option_value('112',str_optionvalue,arg_msg)
- uo_option_ifovertask_cp = Long(str_optionvalue)
- f_get_sys_option_value('346',str_optionvalue,arg_msg)
- uo_mtrlware_trans_fp_return_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('354',str_optionvalue,arg_msg)
- uo_option_inware_cp_autoreturnfp_audit = Long(str_optionvalue)
- end event
|