1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365 |
- $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
- long it_mxbt_pf //生产进仓按清单反扣数组
- end variables
- forward prototypes
- public function integer uf_get_pfmtrlmx (long arg_mtrlid, decimal arg_qty, ref s_inware_cp_fkmx arg_s_fkmx, ref string arg_msg)
- public function integer uf_get_mtrlware (long arg_storageid, long arg_mtrlid, decimal arg_qty, string arg_mtrlcode, string arg_storagename, ref s_mtrlware_fk s_fk, ref string arg_msg)
- public function integer uf_cmpl_rqmtrl (long arg_mtrlid, decimal arg_qty, long arg_lp, long arg_flag, string arg_mtrlcode, ref s_inware_cp_fkmx arg_s_fkmx, ref string arg_msg)
- public function integer uf_update_inprice (long arg_scid, long arg_inwareid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uf_destroy_scll (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit)
- public function integer auditing_end (ref string arg_msg)
- public function integer c_auditing_end (ref string arg_msg)
- public function integer uf_create_scll (long arg_scid, long arg_billid, string arg_billcode, ref string arg_msg)
- public function integer auditing_chk (ref string arg_msg)
- public function integer uf_update_inware_cost (ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (s_inwaremx s_mx, ref string arg_msg)
- public function integer save (boolean arg_ifcommit, ref string arg_msg)
- end prototypes
- public function integer uf_get_pfmtrlmx (long arg_mtrlid, decimal arg_qty, ref s_inware_cp_fkmx arg_s_fkmx, ref string arg_msg);Long rslt = 1
- Long ll_ifautoscll,ll_fklevel,ll_sauditflag
- String ls_mtrlcode
- SELECT ifautoscll,fklevel,mtrlcode,sauditflag
- INTO :ll_ifautoscll,:ll_fklevel,:ls_mtrlcode,:ll_sauditflag
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询产品资料失败,产品唯一码错误'
- GOTO ext
- END IF
- IF ll_ifautoscll = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF ll_sauditflag = 0 THEN
- rslt = 0
- arg_msg = '产品['+ls_mtrlcode+']清单还没审核,请先审核'
- GOTO ext
- END IF
- Dec lde_Sonscale,lde_sonloss,lde_sondecloss
- Long ll_SonMtrlid,ll_storageid,k,ll_dft,cnt,ll_wrkgrpid
- String ls_mtrlcode_pf
- IF ll_fklevel = 0 THEN // //清单反扣直接下级物料
- datastore ds_pfmx
- ds_pfmx = Create datastore
- ds_pfmx.DataObject = 'ds_mtrl_pfmx'
- ds_pfmx.SetTransObject(commit_transaction)
- ds_pfmx.Retrieve(arg_mtrlid)
- IF ds_pfmx.RowCount() = 0 THEN
- rslt = 1
- GOTO ext
- END IF
-
- FOR k = 1 To ds_pfmx.RowCount()
- IF ll_SonMtrlid <> ds_pfmx.Object.u_prdpf_sonmtrlid[k] THEN
- ll_SonMtrlid = ds_pfmx.Object.u_prdpf_sonmtrlid[k]
- ll_storageid = ds_pfmx.Object.u_mtrl_storage_storageid[k]
- lde_Sonscale = ds_pfmx.Object.u_prdpf_sonscale[k]
- lde_sonloss = ds_pfmx.Object.u_prdpf_sonloss[k]
- lde_sondecloss = ds_pfmx.Object.u_prdpf_sondecloss[k]
- ls_mtrlcode_pf = ds_pfmx.Object.u_mtrldef_mtrlcode[k]
- ll_wrkgrpid = ds_pfmx.Object.u_prdpf_wrkgrpid[k]
-
- IF ll_wrkgrpid <= 0 THEN
- rslt = 0
- arg_msg = '产品['+ls_mtrlcode+']清单中物料['+ls_mtrlcode_pf+']还没设定领料组,请先设定'
- GOTO ext
- END IF
-
- IF ds_pfmx.Object.u_mtrl_storage_dft[k] <> 1 THEN
- rslt = 0
- arg_msg = '物料['+ls_mtrlcode_pf+']还没设定默认反扣仓库,请先设定'
- GOTO ext
- END IF
-
- cnt++
- arg_s_fkmx.storageid[cnt] = ll_storageid
- arg_s_fkmx.mtrlid[cnt] = ll_SonMtrlid
- arg_s_fkmx.wrkgrpid[cnt] = ll_wrkgrpid
- arg_s_fkmx.qty[cnt] = arg_qty * lde_Sonscale / (1 - lde_sonloss) + lde_sondecloss
-
- END IF
- NEXT
- ELSEIF ll_fklevel = 1 THEN // //清单反扣最底层物料
- IF uf_cmpl_rqmtrl(arg_mtrlid,arg_qty,0,ll_sauditflag,ls_mtrlcode,arg_s_fkmx,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uf_get_mtrlware (long arg_storageid, long arg_mtrlid, decimal arg_qty, string arg_mtrlcode, string arg_storagename, ref s_mtrlware_fk s_fk, ref string arg_msg);//uf_get_mtrlware(arg_storageid,arg_mtrlid,arg_qty,arg_mtrlcode,arg_storagename,s_fk,arg_msg)
- Long rslt = 1
- Dec ll_sumqty
- Long plancnt
- SELECT isnull(sum(noallocqty),0)
- INTO :ll_sumqty
- FROM u_mtrlware
- WHERE ( mtrlid = :arg_mtrlid) AND
- (storageid = :arg_storageid) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料['+arg_mtrlcode+']库存失败'
- GOTO ext
- END IF
- IF ll_sumqty < arg_qty THEN
- rslt = 0
- arg_msg = '物料['+arg_mtrlcode+']在仓库['+arg_storagename+']库存为:'+String(ll_sumqty,'#,##0.#####')+',少于需领数:'+String(arg_qty,'#,##0.#####')
- GOTO ext
- END IF
- SELECT count(*)
- INTO :plancnt
- FROM u_mtrlware
- WHERE ( u_mtrlware.mtrlid = :arg_mtrlid ) AND
- ( u_mtrlware.storageid = :arg_storageid ) AND
- ( u_mtrlware.noallocqty > 0 ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料['+arg_mtrlcode+']库存资料失败'
- GOTO ext
- END IF
- Long ins_mtrlwareid
- Dec ins_qty,ins_addqty,ins_cost
- Long count,i
- Dec sumqty,noallocqty,allocqty,i_qty
- noallocqty = arg_qty
- DECLARE pf_cur CURSOR FOR
- SELECT u_mtrlware.mtrlwareid,
- u_mtrlware.noallocqty,
- u_mtrlware.noallocaddqty,
- u_mtrlware.cost
- FROM u_mtrlware
- WHERE ( u_mtrlware.mtrlid = :arg_mtrlid ) AND
- ( u_mtrlware.storageid = :arg_storageid ) AND
- ( u_mtrlware.noallocqty > 0 )
- Order By u_mtrlware.noallocqty Asc USING commit_transaction;
-
- OPEN pf_cur;
- count = 1
- FETCH pf_cur INTO :ins_mtrlwareid, &
- :ins_qty,:ins_addqty,:ins_cost ;
- DO WHILE sqlca.SQLCode = 0 AND sumqty < arg_qty
- count++
- sumqty = sumqty+ins_qty
- IF ins_qty > noallocqty THEN
-
- i_qty = noallocqty
- allocqty = allocqty+i_qty
- noallocqty = 0
- ins_addqty = Int(ins_addqty * noallocqty / ins_qty)
-
- ELSEIF ins_qty = noallocqty THEN
-
- i_qty = noallocqty
- allocqty = allocqty+i_qty
- noallocqty = 0 //noallocqty - ins_qty
- ELSE
- IF plancnt > 1 THEN
- i_qty = sumqty - allocqty
- allocqty = allocqty+i_qty
- noallocqty = arg_qty - allocqty
- ELSE
- i_qty = arg_qty
- noallocqty = 0
- END IF
- END IF
-
- i++
- s_fk.mtrlwareid[i] = ins_mtrlwareid
- s_fk.addqty[i] = ins_addqty
- s_fk.qty[i] = i_qty
- s_fk.cost[i] = ins_cost
-
- FETCH pf_cur INTO :ins_mtrlwareid,&
- :ins_qty,:ins_addqty,:ins_cost ;
-
- LOOP
- count = count - 1
- CLOSE pf_cur;
- ext:
- RETURN rslt
- end function
- public function integer uf_cmpl_rqmtrl (long arg_mtrlid, decimal arg_qty, long arg_lp, long arg_flag, string arg_mtrlcode, ref s_inware_cp_fkmx arg_s_fkmx, ref string arg_msg);Long rslt = 1
- Long ll_cnt,ll_lp,ll_rft,k,i
- Dec lde_Sonscale,lde_sonloss,lde_sondecloss,lde_qty
- Long ll_SonMtrlid,ll_storageid,ll_dft,ll_flag,ll_wrkgrpid
- String ls_mtrlcode_pf,ls_mtrlcode
- Long ll_SonMtrlid_arr[],ll_storageid_arr[],ll_flag_arr[],ll_wrkgrpid_arr[]
- Dec ll_qty_arr[]
- String ls_mtrlcode_arr[]
- SELECT count(*)
- INTO :ll_cnt
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :arg_mtrlid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询产品['+arg_mtrlcode+']清单失败'
- GOTO ext
- END IF
- IF arg_lp = 0 THEN
- IF ll_cnt = 0 THEN
- rslt = 0
- arg_msg = '产品['+arg_mtrlcode+']还没设定清单,请先设定'
- GOTO ext
- END IF
-
- IF arg_flag = 0 THEN
- rslt = 0
- arg_msg = '产品['+arg_mtrlcode+']清单还没审核,请先审核'
- GOTO ext
- END IF
- ELSE
- IF ll_cnt = 0 THEN
- rslt = 2
- GOTO ext
- ELSEIF ll_cnt > 0 AND arg_flag = 0 THEN
- rslt = 0
- arg_msg = '物料['+arg_mtrlcode+']清单还没审核,请先审核'
- GOTO ext
- END IF
- END IF
- ll_cnt = 0
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.Sonscale,
- u_PrdPF.sonloss,
- u_PrdPF.sondecloss,
- u_PrdPF.SonMtrlid,
- u_mtrldef.mtrlcode,
- u_mtrldef.sauditflag,
- u_PrdPF.wrkgrpid
- FROM u_PrdPF INNER JOIN
- u_mtrldef ON u_PrdPF.SonMtrlid = u_mtrldef.mtrlid
- Where ( u_PrdPF.mtrlid = :arg_mtrlid ) USING commit_transaction;
- OPEN cur_pf;
- FETCH cur_pf INTO :lde_Sonscale,:lde_sonloss,:lde_sondecloss,:ll_SonMtrlid,:ls_mtrlcode_pf,:ll_flag,:ll_wrkgrpid;
- DO WHILE commit_transaction.SQLCode = 0
- lde_qty = arg_qty * lde_Sonscale / (1 - lde_sonloss) + lde_sondecloss
- k++
- ll_SonMtrlid_arr[k] = ll_SonMtrlid
- ll_qty_arr[k] = lde_qty
- ll_flag_arr[k] = ll_flag
- ls_mtrlcode_arr[k] = ls_mtrlcode_pf
- ll_wrkgrpid_arr[k] = ll_wrkgrpid
- FETCH cur_pf INTO :lde_Sonscale,:lde_sonloss,:lde_sondecloss,:ll_SonMtrlid,:ls_mtrlcode_pf,:ll_flag,:ll_wrkgrpid;
- LOOP
- CLOSE cur_pf;
- FOR i = 1 TO UpperBound(ll_SonMtrlid_arr)
- ll_lp = arg_lp + 1
-
- IF ll_wrkgrpid_arr[i] <= 0 THEN
- rslt = 0
- arg_msg = '产品['+arg_mtrlcode+']清单中物料['+ls_mtrlcode_arr[i]+']领料组还没设定,请先设定'
- GOTO ext
- END IF
-
- ll_rft = uf_cmpl_rqmtrl(ll_SonMtrlid_arr[i],ll_qty_arr[i],ll_lp,ll_flag_arr[i],ls_mtrlcode_arr[i],arg_s_fkmx,arg_msg)
- IF ll_rft = 0 THEN
- rslt = 0
- GOTO ext
- ELSEIF ll_rft = 1 THEN
- CONTINUE
- END IF
-
- IF ll_SonMtrlid_arr[i] > 0 THEN
- SELECT count(*)
- INTO :ll_cnt
- FROM u_mtrldef LEFT OUTER JOIN
- u_mtrl_storage ON u_mtrldef.mtrlid = u_mtrl_storage.mtrlid
- WHERE u_mtrldef.mtrlid = :ll_SonMtrlid_arr[i] AND
- IsNull(u_mtrl_storage.dft,0) = 1 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料['+ls_mtrlcode_arr[i]+']默认反扣仓库失败'
- GOTO ext
- END IF
-
- IF ll_cnt = 0 THEN
- rslt = 0
- arg_msg = '物料['+ls_mtrlcode_arr[i]+']还没设定默认反扣仓库,请先设定'
- GOTO ext
- ELSEIF ll_cnt > 1 THEN
- rslt = 0
- arg_msg = '物料['+ls_mtrlcode_arr[i]+']设定了多个默认反扣仓库,只能设置一个'
- GOTO ext
- END IF
-
- SELECT u_mtrl_storage.storageid
- INTO :ll_storageid
- FROM u_mtrldef LEFT OUTER JOIN
- u_mtrl_storage ON u_mtrldef.mtrlid = u_mtrl_storage.mtrlid
- WHERE u_mtrldef.mtrlid = :ll_SonMtrlid_arr[i] AND
- IsNull(u_mtrl_storage.dft,0) = 1 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料['+ls_mtrlcode_arr[i]+']默认反扣仓库失败'
- GOTO ext
- END IF
- END IF
-
- it_mxbt_pf++
- arg_s_fkmx.storageid[it_mxbt_pf] = ll_storageid
- arg_s_fkmx.mtrlid[it_mxbt_pf] = ll_SonMtrlid_arr[i]
- arg_s_fkmx.wrkgrpid[it_mxbt_pf] = ll_wrkgrpid_arr[i]
- arg_s_fkmx.qty[it_mxbt_pf] = ll_qty_arr[i]
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uf_update_inprice (long arg_scid, long arg_inwareid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_mtrlid, ll_relid, ll_relprintid
- Decimal ld_qty
- String ls_status, ls_woodcode, ls_pcode
- Long ll_inprice_mode
- Decimal ld_planprice
- Decimal wfjgprice, jgprice,outcost
- Decimal ld_outamt
- Decimal ld_inamt
- Decimal ld_cost_price
- Decimal ld_fprice
- SELECT mtrlid, relid, relprintid, qty, status, woodcode, pcode
- INTO :ll_mtrlid, :ll_relid, :ll_relprintid, :ld_qty, :ls_status, :ls_woodcode, :ls_pcode
- FROM u_inwaremx
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓单明细信息失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT inprice_mode, planprice
- INTO :ll_inprice_mode, :ld_planprice
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料生产进仓取价模式失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_inprice_mode = 0 or ll_relid > 0 THEN
- // UPDATE u_inwaremx SET fprice = :ld_planprice
- // WHERE scid = :arg_scid
- // AND inwareid = :arg_inwareid
- // And printid = :arg_printid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '更新生产进仓明细单价为计划价失败,' + sqlca.SQLErrText
- // GOTO ext
- // END IF
- ELSE
- SELECT TOP 1 u_mtrlprice_sum.wfjgprice, u_mtrlprice_sum.jgprice, u_mtrlprice_sum.outcost
- INTO :wfjgprice,:jgprice,:outcost
- FROM u_mtrldef INNER JOIN
- u_mtrlprice_sum ON u_mtrldef.mtrlid = u_mtrlprice_sum.mtrlid INNER JOIN
- (SELECT MAX(sumdate) AS sumdate, mtrlid, pfcode, status, woodcode, pcode
- FROM u_mtrlprice_sum AS u_mtrlprice_sum_1
- GROUP BY mtrlid, pfcode, status, woodcode, pcode) AS v_mtrlid_sumdate ON u_mtrlprice_sum.pcode = v_mtrlid_sumdate.pcode AND
- u_mtrlprice_sum.woodcode = v_mtrlid_sumdate.woodcode AND u_mtrlprice_sum.status = v_mtrlid_sumdate.status AND
- u_mtrlprice_sum.mtrlid = v_mtrlid_sumdate.mtrlid AND u_mtrlprice_sum.pfcode = v_mtrlid_sumdate.pfcode AND
- u_mtrlprice_sum.sumdate = v_mtrlid_sumdate.sumdate
- WHERE (u_mtrlprice_sum.mtrlid = :ll_mtrlid)
- AND (u_mtrlprice_sum.status = :ls_status)
- AND (u_mtrlprice_sum.woodcode = :ls_woodcode)
- And (u_mtrlprice_sum.pcode = :ls_pcode);
-
- IF sqlca.SQLCode < 0 THEN
- rslt = 0
- arg_msg = '查询物料标准外协成+标准人工+标准费用分摊失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF sqlca.SQLCode = 100 THEN
- wfjgprice = 0
- jgprice = 0
- outcost = 0
- END IF
-
- IF ll_inprice_mode = 1 THEN
-
- SELECT ISNULL(SUM(u_outwaremx.qty * v_maxprice_sptprice.price),0)
- INTO :ld_outamt
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND u_outwaremx.outwareid = u_outware.outwareid INNER JOIN
- v_maxprice_sptprice ON u_outwaremx.mtrlid = v_maxprice_sptprice.mtrlid AND u_outwaremx.status = v_maxprice_sptprice.status AND
- u_outwaremx.woodcode = v_maxprice_sptprice.woodcode AND u_outwaremx.pcode = v_maxprice_sptprice.pcode
- WHERE (u_outware.billtype = 3)
- AND (u_outwaremx.scid = :arg_scid)
- AND (u_outwaremx.relid = :ll_relid)
- AND (u_outwaremx.relprintid = :ll_relprintid)
- And (u_outware.flag = 1);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的出仓总金额失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT ISNULL(SUM(u_inwaremx.cost_price * u_inwaremx.qty),0)
- INTO :ld_inamt
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND u_inwaremx.inwareid = u_inware.inwareid
- WHERE (u_inware.billtype = 3)
- AND (u_inwaremx.scid = :arg_scid)
- AND (u_inwaremx.relid = :ll_relid)
- AND (u_inwaremx.relprintid = :ll_relprintid)
- AND (u_inwaremx.inwareid <> :arg_inwareid OR u_inwaremx.printid <> :arg_printid)
- And (u_inware.flag = 1);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的其它明细进仓总金额失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- ld_cost_price = (ld_outamt - ld_inamt) / ld_qty
- ld_fprice = ld_cost_price + wfjgprice + jgprice + outcost
-
- UPDATE u_inwaremx SET cost_price = :ld_cost_price, fprice = :ld_fprice
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '按材料领用成本更新生产进仓明细单价失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- ELSEIF ll_inprice_mode = 2 THEN
- SELECT ISNULL(SUM(u_outwaremx.qty * u_outwaremx.fprice),0)
- INTO :ld_outamt
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND u_outwaremx.outwareid = u_outware.outwareid
- WHERE (u_outware.billtype = 3)
- AND (u_outwaremx.scid = :arg_scid)
- AND (u_outwaremx.relid = :ll_relid)
- AND (u_outwaremx.relprintid = :ll_relprintid)
- And (u_outware.flag = 1);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的出仓总金额失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT ISNULL(SUM(u_inwaremx.cost_price * u_inwaremx.qty),0)
- INTO :ld_inamt
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND u_inwaremx.inwareid = u_inware.inwareid
- WHERE (u_inware.billtype = 3)
- AND (u_inwaremx.scid = :arg_scid)
- AND (u_inwaremx.relid = :ll_relid)
- AND (u_inwaremx.relprintid = :ll_relprintid)
- AND (u_inwaremx.inwareid <> :arg_inwareid OR u_inwaremx.printid <> :arg_printid)
- And (u_inware.flag = 1);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的其它明细进仓总金额失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- ld_cost_price = (ld_outamt - ld_inamt) / ld_qty
- ld_fprice = ld_cost_price + wfjgprice + jgprice + outcost
-
- UPDATE u_inwaremx SET cost_price = :ld_cost_price, fprice = :ld_fprice
- WHERE scid = :arg_scid
- AND inwareid = :arg_inwareid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '按材料领用成本更新生产进仓明细单价失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- ext:
- IF arg_ifcommit THEN
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- END IF
- RETURN rslt
- end function
- public function integer uf_destroy_scll (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Long i,ch
- Long ll_outwareid_arr[],ll_outwareid
- Int li_flag_arr[], li_flag
- String ls_outwarecode_arr[], ls_outwarecode
- uo_outware_scll uo_ware
- uo_ware = Create uo_outware_scll
- uo_ware.commit_transaction = commit_transaction
- uo_ware.if_getid_ture = False
- //读取单据
- DECLARE getoutware CURSOR FOR
- SELECT outwareid , flag, outwarecode
- FROM u_outware
- WHERE billtype = 3
- AND relint_1 = :arg_inwareid
- AND dscrp = '生产进仓单自动生成领料'
- Using commit_transaction;
- OPEN getoutware;
- DO WHILE commit_transaction.SQLCode = 0
- FETCH getoutware Into :ll_outwareid, :li_flag, :ls_outwarecode;
- IF commit_transaction.SQLCode <> 0 THEN EXIT
- ch++
- ll_outwareid_arr[ch] = ll_outwareid
- li_flag_arr[ch] = li_flag
- ls_outwarecode_arr[ch] = ls_outwarecode
- LOOP
- CLOSE getoutware;
- //检查审核
- IF sys_option_inware_cp_autocreatescll = 0 THEN
- FOR i = 1 To ch
- IF li_flag_arr[i] = 1 THEN
- rslt = 0
- arg_msg = "系统选项[082]限制,相关领料单["+ls_outwarecode_arr[i]+"]已审核,请手动撤审后再处理生产进仓单"
- GOTO ext
- END IF
- NEXT
- END IF
- //删除单据
- String ls_msg
- FOR i = 1 To ch
- IF sys_option_inware_cp_autocreatescll = 1 THEN //自动撤审
- IF uo_ware.getinfo(arg_scid,ll_outwareid_arr[i],arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.c_auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF uo_ware.del(arg_scid,ll_outwareid_arr[i],arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF sys_option_inware_cp_autocreatescll = 1 THEN
- ls_msg = "生产进仓单撤审自动撤审、删除相关领料单"
- ELSE
- ls_msg = "生产进仓单撤审自动删除相关领料单"
- END IF
- if f_setsysoplog('领料单',ls_msg+',id:'+String(ll_outwareid_arr[i])+',code:'+ls_outwarecode_arr[i],arg_msg,False) = 0 then
- rslt = 0
- goto ext
- end if
-
- NEXT
- ext:
- Destroy uo_ware
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSE
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer auditing_end (ref string arg_msg);Long rslt = 1,cnt = 0
- Long i,j,k,l
- //Dec new_noallocqty = 0
- //Long ls_newid
- Long ll_storageid_arr[],ll_mtrlid_arr[],ll_storageid_bill[]
- Long ll_wrkgrpid_arr[],ll_wrkgrpid_bill[]
- Long ll_rqmtrlid_arr[], ll_rqmtrlid
- Dec lde_qty_arr[]
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- //Long ll_mtrlwareid
- FOR i = 1 To it_mxbt
-
- //更新已进仓数
- IF inwaremx[i].relid > 0 THEN
- IF inwaremx[i].ifrel = 1 THEN //引入订单运算的ifrel=0,不需要更新销售订单完成数。
- IF uo_task.addmxcmpl_assign(scid, inwaremx[i].relid, inwaremx[i].relprintid, &
- inwaremx[i].mtrlid, 0, inwaremx[i].qty, False, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- // 更新运算单的进仓数
- UPDATE u_orderrqmtrl
- SET inqty = inqty + :inwaremx[i].qty
- WHERE ( scid = :scid ) AND
- ( mtrlid = :inwaremx[i].mtrlid ) AND
- ( printid = :inwaremx[i].relprintid) AND
- (taskid = :inwaremx[i].relid) Using commit_transaction ;
- END IF
-
- //自动插计划价
- IF sys_option_planprice_configure = 1 THEN //计划价按配置
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrl_planprice
- WHERE mtrlid = :inwaremx[i].mtrlid
- AND status = :inwaremx[i].status
- AND woodcode = :inwaremx[i].woodcode
- AND pcode = :inwaremx[i].pcode
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(i)+',查询是否有计划价失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- INSERT INTO u_mtrl_planprice
- (mtrlid, status, woodcode, pcode, planprice)
- VALUES
- (:inwaremx[i].mtrlid, :inwaremx[i].status, :inwaremx[i].woodcode, :inwaremx[i].pcode, :inwaremx[i].cost)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '行:'+String(i)+',插入计划价失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- ext:
- it_mxbt_pf = 0
- Destroy uo_task
- RETURN rslt
- end function
- public function integer c_auditing_end (ref string arg_msg);//====================================================================
- // Function: c_auditing(arg_ifcommit,arg_msg)
- //--------------------------------------------------------------------
- // Description: 撤审
- //--------------------------------------------------------------------
- // Arguments:
- // value boolean arg_ifcommit
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.19
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Long rslt = 1,cnt = 0,i
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- FOR i = 1 To it_mxbt
- //更新已进仓数
- IF inwaremx[i].relid > 0 THEN
- IF inwaremx[i].ifrel = 1 THEN //引入订单运算的ifrel=0,不需要更新销售订单完成数。
- IF uo_task.addmxcmpl_assign(scid, inwaremx[i].relid, inwaremx[i].relprintid, &
- inwaremx[i].mtrlid, 0, 0 - inwaremx[i].qty, False, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- // IF uo_task.updateassignqty(scid,inwaremx[i].relid,inwaremx[i].relprintid,0 - inwaremx[i].qty,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // 更新运算单的进仓数
- UPDATE u_orderrqmtrl
- SET inqty = inqty - :inwaremx[i].qty
- WHERE ( scid = :scid ) AND
- ( mtrlid = :inwaremx[i].mtrlid ) AND
- ( printid = :inwaremx[i].relprintid) AND
- (taskid = :inwaremx[i].relid) Using commit_transaction ;
- END IF
-
- NEXT
- /// //删除自动生成领料单
- IF uf_destroy_scll(scid, inwareid, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- Destroy uo_task
- RETURN rslt
- end function
- public function integer uf_create_scll (long arg_scid, long arg_billid, string arg_billcode, ref string arg_msg);//uf_create_scll(arg_scid,arg_billid,arg_billcode,arg_storageid,arg_storageid_arr,arg_mtrlid_arr,arg_qty_arr,arg_msg)
- Long rslt = 1
- Long i, j,k,l,pid, ll_cnt, ll_cnt_2
- String ls_mtrlcode,ls_storagename,ls_unit
- Long ll_rqmtrlid
- Long ll_taskid, ll_printid, ll_ifrel
- Long ll_outwareid
- Long ll_storageid_arr[], ll_wrkgrpid_arr[], ll_mtrlid_arr[],ll_rqmtrlid_arr[],ll_storageid_bill[], ll_wrkgrpid_bill[]
- Decimal lde_qty_arr[], lde_add_DstrQty, lde_trueRqqty, lde_DstrQty
- uo_outware_scll uo_ware
- uo_ware = Create uo_outware_scll
- uo_ware.commit_transaction = commit_transaction
- s_mtrlware_fk s_fk, s_fk_null
- s_inware_cp_fkmx s_fpmx,s_null
- FOR i = 1 To it_mxbt
- //// //获取产品反扣物料资料
-
- s_fpmx = s_null
- IF uf_get_pfmtrlmx(inwaremx[i].mtrlid,inwaremx[i].qty,s_fpmx,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //汇总需领料的物料
- FOR j = 1 To UpperBound(s_fpmx.storageid)
- ll_rqmtrlid = 0
- IF inwaremx[i].relid > 0 THEN
- SELECT rqmtrlid
- INTO :ll_rqmtrlid
- FROM u_saleRqMtrl_scll
- WHERE taskID = :inwaremx[i].relid
- AND printid = :inwaremx[i].relprintid
- And mtrlid = :s_fpmx.mtrlid[j];
- IF sqlca.SQLCode <> 0 THEN
- ll_rqmtrlid = 0
- END IF
- END IF
-
- //统计物料
- FOR k = 1 To UpperBound(ll_storageid_arr)
- IF ll_storageid_arr[k] = s_fpmx.storageid[j] And &
- ll_mtrlid_arr[k] = s_fpmx.mtrlid[j] And &
- ll_wrkgrpid_arr[k] = s_fpmx.wrkgrpid[j] And &
- ll_rqmtrlid_arr[k] = ll_rqmtrlid THEN
-
- lde_qty_arr[k] = lde_qty_arr[k] + s_fpmx.qty[j]
- GOTO nxt
- END IF
- NEXT
-
- ll_cnt++
- ll_storageid_arr[ll_cnt] = s_fpmx.storageid[j]
- ll_wrkgrpid_arr[ll_cnt] = s_fpmx.wrkgrpid[j]
- ll_mtrlid_arr[ll_cnt] = s_fpmx.mtrlid[j]
- ll_rqmtrlid_arr[ll_cnt] = ll_rqmtrlid
- lde_qty_arr[ll_cnt] = s_fpmx.qty[j]
-
- nxt:
-
-
- //统计仓库
- FOR k = 1 To UpperBound(ll_storageid_bill)
- IF ll_storageid_bill[k] = s_fpmx.storageid[j] And ll_wrkgrpid_bill[k] = s_fpmx.wrkgrpid[j] THEN
- GOTO nxt2
- END IF
- NEXT
- ll_cnt_2++
- ll_storageid_bill[ll_cnt_2] = s_fpmx.storageid[j]
- ll_wrkgrpid_bill[ll_cnt_2] = s_fpmx.wrkgrpid[j]
-
- nxt2:
- NEXT
-
-
- NEXT
- //按仓库, 工作中心 生成领料单
- FOR i = 1 To UpperBound(ll_storageid_bill)
- pid = 0
-
- IF uo_ware.newbegin(arg_scid,3,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_ware.outdate = DateTime(Today(),Now())
- uo_ware.outrep = publ_operator
- uo_ware.dscrp = '生产进仓单自动生成领料'
- uo_ware.storageid = ll_storageid_bill[i]
- uo_ware.relid = ll_wrkgrpid_bill[i] /// //领料组、工作中心ID
- uo_ware.relint_1 = arg_billid
- uo_ware.part = arg_billcode
-
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- WHERE storageid = :ll_storageid_bill[i]
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询仓库资料失败'
- GOTO ext
- END IF
-
- FOR j = 1 To UpperBound(ll_storageid_arr)
- IF ll_storageid_arr[j] = ll_storageid_bill[i] And ll_wrkgrpid_arr[j] = ll_wrkgrpid_bill[i] THEN
-
- s_fk = s_fk_null
- ll_rqmtrlid = 0
- ll_taskid = 0
- ll_printid = 0
- ll_ifrel = 0
-
- IF ll_rqmtrlid_arr[j] > 0 THEN
- SELECT taskID, printid,trueRqqty , DstrQty
- INTO :ll_taskid, :ll_printid, :lde_trueRqqty, :lde_DstrQty
- FROM u_saleRqMtrl_scll
- Where rqmtrlid = :ll_rqmtrlid_arr[j] Using commit_transaction;
- IF commit_transaction.SQLCode = 0 THEN
- ll_rqmtrlid = ll_rqmtrlid_arr[j]
- ll_ifrel = 1
- END IF
-
- END IF
-
- SELECT mtrlcode,unit
- INTO :ls_mtrlcode,:ls_unit
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid_arr[j] Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料资料失败'
- GOTO ext
- END IF
-
- lde_add_DstrQty = lde_qty_arr[j]
- IF ll_ifrel = 1 THEN
- IF lde_add_DstrQty > lde_trueRqqty - lde_DstrQty THEN
- lde_add_DstrQty = lde_trueRqqty - lde_DstrQty
- END IF
- END IF
-
- IF lde_add_DstrQty > 0 THEN
- IF uf_get_mtrlware( ll_storageid_bill[i],ll_mtrlid_arr[j],lde_add_DstrQty,ls_mtrlcode,ls_storagename,s_fk,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- FOR k = 1 To UpperBound(s_fk.mtrlwareid)
- pid++
- IF uo_ware.acceptmx(s_fk.mtrlwareid[k],&
- s_fk.qty[k], s_fk.addqty[k], s_fk.cost[k],1,&
- '',pid,arg_msg,ll_ifrel,ll_taskid,ll_printid,ll_rqmtrlid,&
- 0,0,0,&
- ls_unit,1,'','') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- NEXT
-
- IF uo_ware.Save(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF sys_option_inware_cp_autocreatescll = 1 THEN
- ll_outwareid = uo_ware.outwareid
-
- IF uo_ware.getinfo(arg_scid,ll_outwareid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware.auditing(False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- NEXT
- ////// //建立自动反扣领料单
- //IF UpperBound(ll_storageid_bill) > 0 THEN
- // FOR i = 1 To UpperBound(ll_storageid_bill)
- // IF uf_create_scll(scid,inwareid,inwarecode,ll_storageid_bill[i],ll_wrkgrpid_bill[i],ll_storageid_arr,ll_wrkgrpid_arr,ll_mtrlid_arr,lde_qty_arr,arg_msg,ll_rqmtrlid_arr) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // NEXT
- //END IF
- //
- //FOR i = 1 To it_mxbt
- // IF uf_update_inprice (scid, inwareid, inwaremx[i].printid, arg_msg, False) <> 1 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //NEXT
- //IF uo_ware.newbegin(arg_scid,3,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //uo_ware.outdate = DateTime(Today(),Now())
- //uo_ware.outrep = publ_operator
- //uo_ware.dscrp = '生产进仓单自动生成领料'
- //uo_ware.storageid = arg_storageid
- //uo_ware.relid = arg_wrkgrpid /// //领料组、工作中心ID
- //uo_ware.relint_1 = arg_billid
- //uo_ware.part = arg_billcode
- //
- //FOR i = 1 To UpperBound(arg_storageid_arr)
- // IF arg_storageid_arr[i] = arg_storageid And arg_wrkgrpid_arr[i] = arg_wrkgrpid THEN
- // ll_rqmtrlid = 0
- // ll_taskid = 0
- // ll_printid = 0
- // ll_ifrel = 0
- //
- // IF arg_rqmtrlid_arr[i] > 0 THEN
- // SELECT taskID, printid
- // INTO :ll_taskid, :ll_printid
- // FROM u_saleRqMtrl_scll
- // Where rqmtrlid = :arg_rqmtrlid_arr[i];
- // IF sqlca.SQLCode = 0 THEN
- // ll_rqmtrlid = arg_rqmtrlid_arr[i]
- // ll_ifrel = 1
- // END IF
- //
- // END IF
- //
- // SELECT mtrlcode,unit
- // INTO :arg_mtrlcode,:arg_unit
- // FROM u_mtrldef
- // Where mtrlid = :arg_mtrlid_arr[i] Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询物料资料失败'
- // GOTO ext
- // END IF
- //
- // SELECT storagename
- // INTO :arg_storagename
- // FROM u_storage
- // Where storageid = :arg_storageid;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询仓库资料失败'
- // GOTO ext
- // END IF
- //
- // IF uf_get_mtrlware(arg_storageid,arg_mtrlid_arr[i],arg_qty_arr[i],arg_mtrlcode,arg_storagename,s_fk,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF UpperBound(s_fk.mtrlwareid) > 0 THEN
- // FOR k = 1 To UpperBound(s_fk.mtrlwareid)
- // pid++
- // IF uo_ware.acceptmx(s_fk.mtrlwareid[k],&
- // s_fk.qty[k], s_fk.addqty[k], s_fk.cost[k],1,&
- // '',pid,arg_msg,ll_ifrel,ll_taskid,ll_printid,ll_rqmtrlid,0,0,0,&
- // arg_unit,1,'','') = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- // NEXT
- // END IF
- //
- // END IF
- //NEXT
- //
- //IF uo_ware.Save(False,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //
- //
- //IF sys_option_inware_cp_autocreatescll = 1 THEN
- // ll_outwareid = uo_ware.outwareid
- //
- // IF uo_ware.getinfo(arg_scid,ll_outwareid,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // IF uo_ware.auditing(False,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //END IF
- ext:
- Destroy uo_ware
- RETURN rslt
- end function
- public function integer auditing_chk (ref string arg_msg);Long rslt = 1
- Long i
- IF sys_option_hide_ware = 0 THEN
- IF billtype <> 9 THEN
- IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF Not sysautobuild THEN
- IF dscrp = '盘点表审核自动生成盘盈单' THEN
- arg_msg = '系统自动生成的单据不能手动审核'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- //// //建立自动反扣领料单
- IF uf_create_scll(scid,inwareid,inwarecode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uf_update_inware_cost ( arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uf_update_inware_cost (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- long i
- Long ll_inprice_mode
- Decimal ld_planprice
- Decimal wfjgprice, jgprice,outcost
- Decimal ld_outamt
- Decimal ld_inamt
- Decimal ld_cost_price
- Decimal ld_fprice
- FOR i = 1 To it_mxbt
-
- SELECT inprice_mode, planprice
- INTO :ll_inprice_mode, :ld_planprice
- FROM u_mtrldef
- Where mtrlid = :inwaremx[i].mtrlid
- using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料生产进仓取价模式失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- // ll_inprice_mode 进仓成本模式; 0-取计划价; 1-按领用材料最新采购价; 2-按领用材料出仓成本价
- //MEI:
- //1/ 当取计划价时都跳过
- //2/选项为0时,都更新
- //3/选项为1时只有不选订单才更新
- IF ll_inprice_mode = 0 THEN //取计划价
- CONTINUE
- END IF
-
- IF sys_option_inwarecp_saleprice = 1 AND inwaremx[i].ifrel = 1 THEN //选项选比率,且有订单,不更新
- CONTINUE
- END IF
-
-
- SELECT TOP 1 u_mtrlprice_sum.wfjgprice, u_mtrlprice_sum.jgprice, u_mtrlprice_sum.outcost
- INTO :wfjgprice,:jgprice,:outcost
- FROM u_mtrldef INNER JOIN
- u_mtrlprice_sum ON u_mtrldef.mtrlid = u_mtrlprice_sum.mtrlid INNER JOIN
- (SELECT MAX(sumdate) AS sumdate, mtrlid, pfcode, status, woodcode, pcode
- FROM u_mtrlprice_sum AS u_mtrlprice_sum_1
- GROUP BY mtrlid, pfcode, status, woodcode, pcode) AS v_mtrlid_sumdate ON
- u_mtrlprice_sum.status = v_mtrlid_sumdate.status AND
- u_mtrlprice_sum.woodcode = v_mtrlid_sumdate.woodcode AND
- u_mtrlprice_sum.pcode = v_mtrlid_sumdate.pcode AND
- u_mtrlprice_sum.mtrlid = v_mtrlid_sumdate.mtrlid AND
- u_mtrlprice_sum.pfcode = v_mtrlid_sumdate.pfcode AND
- u_mtrlprice_sum.sumdate = v_mtrlid_sumdate.sumdate
- WHERE (u_mtrlprice_sum.mtrlid = :inwaremx[i].mtrlid)
- AND (u_mtrlprice_sum.status = :inwaremx[i].status)
- AND (u_mtrlprice_sum.woodcode = :inwaremx[i].woodcode)
- And (u_mtrlprice_sum.pcode = :inwaremx[i].pcode)
- using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN //统计成本
- wfjgprice = 0
- jgprice = 0
- outcost = 0
- END IF
-
-
- IF IsNull(wfjgprice) THEN wfjgprice = 0
- IF IsNull(jgprice) THEN jgprice = 0
- IF IsNull(outcost) THEN outcost = 0
-
-
- IF ll_inprice_mode = 1 THEN //按领用材料最新采购价
-
- SELECT ISNULL(SUM(u_outwaremx.qty * v_maxprice_sptprice.price),0)
- INTO :ld_outamt
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND u_outwaremx.outwareid = u_outware.outwareid INNER JOIN
- v_maxprice_sptprice ON u_outwaremx.mtrlid = v_maxprice_sptprice.mtrlid AND
- u_outwaremx.status = v_maxprice_sptprice.status AND
- u_outwaremx.woodcode = v_maxprice_sptprice.woodcode AND
- u_outwaremx.pcode = v_maxprice_sptprice.pcode
- WHERE (u_outware.billtype = 3)
- AND (u_outwaremx.scid = :scid)
- AND (u_outwaremx.relid = :inwaremx[i].relid)
- AND (u_outwaremx.relprintid = :inwaremx[i].relprintid)
- using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的出仓总金额失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT ISNULL(SUM(u_inwaremx.cost_price * u_inwaremx.qty),0)
- INTO :ld_inamt
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND u_inwaremx.inwareid = u_inware.inwareid
- WHERE (u_inware.billtype = 3)
- AND (u_inwaremx.scid = :scid)
- AND (u_inwaremx.relid = :inwaremx[i].relid)
- AND (u_inwaremx.relprintid = :inwaremx[i].relprintid)
- AND (u_inwaremx.inwareid <> :inwareid OR u_inwaremx.printid <> :inwaremx[i].printid)
- And (u_inware.flag = 1)
- using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的其它明细进仓总金额失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- ld_cost_price = (ld_outamt - ld_inamt) / inwaremx[i].qty
- ld_fprice = ld_cost_price + wfjgprice + jgprice + outcost
-
-
-
- ELSEIF ll_inprice_mode = 2 THEN //按领用材料出仓成本价
- SELECT ISNULL(SUM(u_outwaremx.qty * u_outwaremx.fprice),0)
- INTO :ld_outamt
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND u_outwaremx.outwareid = u_outware.outwareid
- WHERE (u_outware.billtype = 3)
- AND (u_outwaremx.scid = :scid)
- AND (u_outwaremx.relid = :inwaremx[i].relid)
- AND (u_outwaremx.relprintid = :inwaremx[i].relprintid)
- using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的出仓总金额失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- SELECT ISNULL(SUM(u_inwaremx.cost_price * u_inwaremx.qty),0)
- INTO :ld_inamt
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND u_inwaremx.inwareid = u_inware.inwareid
- WHERE (u_inware.billtype = 3)
- AND (u_inwaremx.scid = :scid)
- AND (u_inwaremx.relid = :inwaremx[i].relid)
- AND (u_inwaremx.relprintid = :inwaremx[i].relprintid)
- AND (u_inwaremx.inwareid <> :inwareid OR u_inwaremx.printid <> :inwaremx[i].printid)
- And (u_inware.flag = 1)
- using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产进仓明细的订单明细的其它明细进仓总金额失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- ld_cost_price = (ld_outamt - ld_inamt) / inwaremx[i].qty
- ld_fprice = ld_cost_price + wfjgprice + jgprice + outcost
-
- END IF
-
- inwaremx[i].fprice = ld_fprice
- inwaremx[i].cost = ld_fprice
- inwaremx[i].costamt = round(inwaremx[i].qty * ld_fprice, 2)
-
- UPDATE u_inwaremx
- SET cost_price = :ld_cost_price,
- fprice = :ld_fprice,
- cost = :ld_fprice,
- costamt = round(qty * :ld_fprice,2)
- WHERE scid = :scid
- AND inwareid = :inwareid
- And printid = :inwaremx[i].printid
- using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- IF ll_inprice_mode = 1 THEN
- arg_msg = '行:'+String(i)+',按领用材料最新采购价更新生产进仓明细单价失败,' + commit_transaction.SQLErrText
- ELSEIF ll_inprice_mode = 2 THEN
- arg_msg = '行:'+String(i)+',按领用材料出仓成本价更新生产进仓明细单价失败,' + commit_transaction.SQLErrText
- ELSE
- arg_msg = '行:'+String(i)+',更新生产进仓明细单价失败,' + commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer acceptmx (s_inwaremx s_mx, ref string arg_msg);Long rslt = 1,cnt = 0,ls_i
- Decimal ld_planprice,ld_cost,ld_dftsptprice
- Decimal ld_noauditqty,ld_bootqty
- String ls_relcode,ls_unit,ls_saletaskcode
- Int li_iflimitprice
- Long i
- Dec ld_round = 100
- uo_spt_price uo_sptprice
- uo_sptprice = Create uo_spt_price
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(s_mx.printid) THEN s_mx.printid = 0
- IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
- IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = ''
- IF IsNull(s_mx.plancode) THEN s_mx.plancode = ''
- IF IsNull(s_mx.status) THEN s_mx.status = ''
- IF IsNull(s_mx.uqty) THEN s_mx.uqty = 0
- IF IsNull(s_mx.addqty) THEN s_mx.addqty = 0
- IF IsNull(s_mx.packqty) THEN s_mx.packqty = 0
- IF IsNull(s_mx.uprice) THEN s_mx.uprice = 0
- IF IsNull(s_mx.rebate) THEN s_mx.rebate = 0
- IF IsNull(s_mx.mxdscrp) THEN s_mx.mxdscrp = ''
- IF IsNull(s_mx.mxdscrp2) THEN s_mx.mxdscrp2 = ''
- IF IsNull(s_mx.mxdscrp3) THEN s_mx.mxdscrp3 = ''
- IF IsNull(s_mx.mxdscrp4) THEN s_mx.mxdscrp4 = ''
- IF IsNull(s_mx.jgprice) THEN s_mx.jgprice = 0
- IF IsNull(s_mx.ifrel) THEN s_mx.ifrel = 0
- IF IsNull(s_mx.relid) THEN s_mx.relid = 0
- IF IsNull(s_mx.relprintid) THEN s_mx.relprintid = 0
- IF IsNull(s_mx.mxdscrp) THEN s_mx.woodcode = ''
- IF IsNull(s_mx.pcode) THEN s_mx.pcode = ''
- IF IsNull(s_mx.sptid) THEN s_mx.sptid = 0
- IF IsNull(s_mx.mtrlcuscode) THEN s_mx.mtrlcuscode = ''
- IF IsNull(s_mx.unit) THEN s_mx.unit = ''
- IF IsNull(s_mx.rate) THEN s_mx.rate = 1
- IF s_mx.rate = 0 THEN s_mx.rate = 1
- IF IsNull(s_mx.formula) THEN s_mx.formula = ''
- IF IsNull(s_mx.waredscrp) THEN s_mx.waredscrp = ''
- IF mrate = 0 THEN mrate = 1
- IF IsNull(s_mx.tax) THEN s_mx.tax = 0
- IF IsNull(s_mx.buyqty) THEN s_mx.buyqty = 0
- IF IsNull(s_mx.uprice_notax) THEN s_mx.uprice_notax = 0
- IF s_mx.uprice_notax = 0 THEN
- s_mx.uprice_notax = s_mx.uprice / (1 + s_mx.tax)
- END IF
- s_mx.uqty = Round(s_mx.uqty,5)
- s_mx.addqty = Round(s_mx.addqty,5)
- IF sys_option_outware_if_buyqty = 1 And billtype = 1 THEN //采购 , 采购数与进仓数分离
- ELSE //不分离
- s_mx.buyqty = s_mx.uqty
- END IF
- IF s_mx.mtrlid = 0 Or (s_mx.buyqty = 0 And s_mx.uqty = 0 And s_mx.addqty = 0) THEN
- rslt = 1
- GOTO ext
- END IF
- IF acceptmx_chk(s_mx, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //检查物料id
- SELECT unit,planprice,iflimitprice
- INTO :ls_unit,:ld_planprice,:li_iflimitprice
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :s_mx.mtrlid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "第" + String(s_mx.printid) + "行,查询物料资料信息失败,编码:"+s_mx.mtrlcode
- GOTO ext
- END IF
- //确实有=1的情况
- //IF ls_unit <> s_mx.unit And s_mx.rate = 1 THEN
- // arg_msg = "第" + String(s_mx.printid) + "行,库存单位与采购单位不同,但转换率为1,请检查!"
- // rslt = 0
- // GOTO ext
- //END IF
- IF ls_unit = s_mx.unit And s_mx.rate <> 1 THEN
- arg_msg = "第" + String(s_mx.printid) + "行,库存单位与采购单位相同,但转换率不为1,请检查!"
- rslt = 0
- GOTO ext
- END IF
- //查询采购限价并检查进仓价
- IF billtype = 1 Or billtype = 4 THEN
- IF li_iflimitprice = 1 THEN
- IF uo_sptprice.uf_check_price_save(thflag,sptid,s_mx.mtrlid,s_mx.mtrlcode,s_mx.unit,s_mx.status,s_mx.woodcode,s_mx.pcode,s_mx.uprice * s_mx.rebate,arg_msg) = 0 THEN
- arg_msg = "第" + String(s_mx.printid) + "行," + arg_msg
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- Int li_if_cus_mtrlware, li_if_plancode, li_inwaretype
- IF sys_option_hide_ware = 0 THEN
- SELECT balctype , if_plancode, inwaretype
- INTO :li_if_cus_mtrlware, :li_if_plancode, :li_inwaretype
- FROM u_storage
- Where storageid = :storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + "行,查询仓库是否使用客户库存失败"
- rslt = 0
- GOTO ext
- END IF
- END IF
- //关于客户库存处理,sptid
- Long ll_cusid
- Int li_bhflag
- IF dxflag = 0 THEN
- IF li_if_cus_mtrlware = 1 THEN
- IF billtype = 3 THEN
- //特殊情况 20140104
- //生产进仓单,按订单进仓的产品,如果订单的客户为 备货客户, 进仓时不按客户库存;
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,请先择相应的销售订单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT top 1 cusid INTO :ll_cusid
- FROM u_saletaskmx,u_saletask
- WHERE u_saletaskmx.scid = u_saletask.scid
- AND u_saletaskmx.taskid = u_saletask.taskid
- AND u_saletaskmx.scid = :scid
- AND u_saletaskmx.taskid = :s_mx.relid
- AND u_saletaskmx.printid = :s_mx.relprintid
- AND u_saletaskmx.mtrlid = :s_mx.mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,查询销售订单客户资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- // s_mx.mtrlid 以后有可能是 下级的生产物料!!!!
-
- IF IsNull(ll_cusid) THEN ll_cusid = 0
-
- IF ll_cusid > 0 THEN
- SELECT bhflag INTO :li_bhflag FROM u_cust WHERE cusid = :ll_cusid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,查询销售订单客户资料失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- li_bhflag = 0
- END IF
- IF IsNull(li_bhflag) THEN li_bhflag = 0
-
- IF li_bhflag = 1 THEN
- s_mx.sptid = 0
- ELSE
- s_mx.sptid = s_mx.sptid
- END IF
- END IF
-
- ELSE
- s_mx.sptid = s_mx.sptid
- END IF
- ELSE
- s_mx.sptid = 0
- END IF
- ELSE
- IF li_if_cus_mtrlware <> 1 THEN
- arg_msg = "仓库没有使用客户库存,不能建立代销单据"
- rslt = 0
- GOTO ext
- END IF
- s_mx.sptid = sptid
- END IF
- CHOOSE CASE billtype
- CASE 1 //采购
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = "第" + String(s_mx.printid) + "行,请先择相应的订单!"
- rslt = 0
- GOTO ext
- END IF
-
- SELECT taskcode ,uqty - consignedqty,
- CASE when u_buytask.billtype = 1 THEN u_buytaskmx.relcode ELSE '' END
- INTO :ls_relcode,:ld_bootqty,:ls_saletaskcode
- FROM u_buytaskmx,u_buytask
- WHERE u_buytaskmx.taskid = u_buytask.taskid
- AND u_buytaskmx.scid = u_buytask.scid
- AND u_buytaskmx.scid = :scid
- AND u_buytaskmx.taskid = :s_mx.relid
- AND u_buytaskmx.printid = :s_mx.relprintid
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + "行,查询采购订单是否有订购:"+s_mx.mtrlcode+'失败!'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //查相关销售订单已开单数
- ld_noauditqty = 0
- SELECT sum(uqty) INTO :ld_noauditqty
- FROM u_inwaremx
- WHERE scid = :scid
- AND relid = :s_mx.relid
- AND relprintid = :s_mx.relprintid
- And inwareid <> :inwareid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + "行,查询"+s_mx.mtrlcode+'相关订单单据已开单数失败!'
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_noauditqty) THEN ld_noauditqty = 0
- ELSE
- s_mx.relid = 0
- s_mx.relprintid = 0
- END IF
- CASE 3 //生产
-
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,请先择相应的销售订单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT top 1 taskcode INTO :ls_relcode
- FROM u_saletaskmx,u_saletask
- WHERE u_saletaskmx.scid = u_saletask.scid
- AND u_saletaskmx.taskid = u_saletask.taskid
- AND u_saletaskmx.scid = :scid
- AND u_saletaskmx.taskid = :s_mx.relid
- AND u_saletaskmx.printid = :s_mx.relprintid
- AND u_saletaskmx.mtrlid = :s_mx.mtrlid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,查询销售订单是否有排产:'+s_mx.mtrlcode+'失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- // s_mx.relid = 0
- // s_mx.relprintid = 0
- END IF
-
- IF s_mx.ifrel = 0 and s_mx.relid > 0 THEN
- Decimal ld_noqty,ld_readyqty
- SELECT u_orderrqmtrl.truerqqty - u_orderrqmtrl.inqty - ISNULL(notmp.noauditqty, 0) AS noqty
- INTO :ld_noqty
- FROM u_OrderRqMtrl
- LEFT JOIN u_OrderRqMtrl_tree ON u_OrderRqMtrl.scid = u_OrderRqMtrl_tree.scid
- AND u_OrderRqMtrl.taskid = u_OrderRqMtrl_tree.taskid
- AND u_OrderRqMtrl.printid = u_OrderRqMtrl_tree.printid
- AND u_OrderRqMtrl.mtrlid = u_OrderRqMtrl_tree.mtrlid
- LEFT JOIN (
- SELECT u_inwaremx.mtrlid
- ,u_inwaremx.scid
- ,u_inwaremx.relid
- ,u_inwaremx.relprintid
- ,SUM(u_inwaremx.qty) AS noauditqty
- FROM u_inware
- INNER JOIN u_inwaremx ON u_inwaremx.scid = u_inware.scid
- AND u_inwaremx.inwareid = u_inware.inwareid
- WHERE (u_inware.billtype = 3)
- AND (u_inware.flag = 0)
- AND (u_inware.scid = :scid)
- AND (u_inware.inwareid <> :inwareid)
- GROUP BY u_inwaremx.mtrlid
- ,u_inwaremx.scid
- ,u_inwaremx.relid
- ,u_inwaremx.relprintid
- ) AS notmp ON u_OrderRqMtrl.scid = notmp.scid
- AND u_OrderRqMtrl.taskid = notmp.relid
- AND u_OrderRqMtrl.printid = notmp.relprintid
- AND u_OrderRqMtrl.mtrlid = notmp.mtrlid
- WHERE u_orderrqmtrl_tree.lp <> 0
- AND (u_OrderRqMtrl_tree.plantype = 4 OR u_OrderRqMtrl_tree.plantype = 0)
- AND u_OrderRqMtrl.scid = :scid
- AND u_OrderRqMtrl.taskid = :s_mx.relid
- AND u_OrderRqMtrl.printid = :s_mx.relprintid
- AND u_OrderRqMtrl.mtrlid = :s_mx.mtrlid Using commit_transaction;
- IF SQLCA.SQLCODE <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,查询需求明细失败:'+s_mx.mtrlcode+'失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- ld_readyqty = s_mx.uqty
- for i = 1 to it_mxbt
- IF inwaremx[i].ifrel = 0 THEN
- IF inwaremx[i].relid = s_mx.relid and inwaremx[i].relprintid = s_mx.relprintid and inwaremx[i].mtrlid = s_mx.mtrlid THEN
- ld_readyqty +=inwaremx[i].uqty
- END IF
- END IF
- next
-
- IF ld_readyqty > ld_noqty THEN
- arg_msg = "第" + String(s_mx.printid) + '行,本次开单数'+String(ld_readyqty,"#,##0.00##")+'不能大于未开单数'+String(ld_noqty,"#,##0.00##")
- rslt = 0
- GOTO ext
- END IF
-
-
- END IF
- ///判断是否超数量
-
-
-
-
- CASE 4 //外协
- IF s_mx.ifrel > 0 THEN
- IF s_mx.relid = 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,请先择相应的外协订单'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_order_wfjg.taskcode,
- CASE when u_order_wfjg.billtype = 1 THEN u_order_wfjgmx.relcode ELSE '' END
- INTO :ls_relcode,:ls_saletaskcode
- FROM u_order_wfjgmx,u_order_wfjg
- WHERE u_order_wfjgmx.scid = u_order_wfjg.scid
- AND u_order_wfjgmx.wfjgid = u_order_wfjg.wfjgid
- AND u_order_wfjgmx.wfjgid = :s_mx.relid
- AND u_order_wfjgmx.printid = :s_mx.relprintid
- AND u_order_wfjgmx.mtrlid = :s_mx.mtrlid
- AND u_order_wfjgmx.status = :s_mx.status
- AND u_order_wfjgmx.woodcode = :s_mx.woodcode
- AND u_order_wfjgmx.pcode = :s_mx.pcode
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = "第" + String(s_mx.printid) + '行,查询外协订单是否有加工:'+s_mx.mtrlcode+'失败,'+commit_transaction.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- END CHOOSE
- //处理plancode
- storage_plancode_flag = 0
- IF li_if_plancode = 0 THEN //不使用
- s_mx.plancode = ''
- ELSE
- IF thflag <> 1 THEN //退货不处理
- IF li_inwaretype = 1 THEN //无(不变)
- //inwaremx[it_mxbt].plancode = s_mx.plancode
- ELSEIF li_inwaretype = 2 THEN //价格
- s_mx.plancode = String(Round(s_mx.uprice * s_mx.rebate,5))
- ELSEIF li_inwaretype = 3 THEN //订单
- IF ls_relcode <> '' And billtype = 3 THEN
- s_mx.plancode = ls_relcode
- ELSEIF ls_saletaskcode <> '' And (billtype = 1 Or billtype = 4 ) THEN
- s_mx.plancode = ls_saletaskcode
- ELSE
- s_mx.plancode = s_mx.plancode //(不变)
- END IF
- ELSEIF li_inwaretype = 5 THEN //进仓单号
- storage_plancode_flag = 1 //仓库中是否设置了使用 “进仓单号” 作为批号
-
- ELSEIF li_inwaretype = 6 THEN //数值
-
- s_mx.plancode = String(s_mx.uqty,'#,##0.####')
- ELSEIF li_inwaretype = 7 THEN //日期时间顺序
-
- IF s_mx.plancode = '' THEN
- s_mx.plancode = String(Today(), 'yymmddhhmm') + '-' + String(s_mx.printid)
- END IF
- END IF
- END IF //退货不处理
- END IF
- //处理 sptmtrlname
- String ls_sptmtrlname
- IF billtype = 1 THEN
- IF uo_sptprice.uf_getmtrlname(sptid,s_mx.mtrlid,ls_sptmtrlname,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- ls_sptmtrlname = ""
- END IF
- //处理价格===============================
- //取默认报价
- IF billtype = 1 THEN
- f_get_defsptprice(sptid,s_mx.mtrlid,s_mx.unit,s_mx.status,s_mx.pcode,s_mx.woodcode,ld_dftsptprice)
- ELSE
- ld_dftsptprice = 0
- END IF
- //不是自动的单价
- IF sysautobuild = False THEN
- IF s_mx.uprice * s_mx.rebate < 0 THEN //检查进仓价
- rslt = 0
- arg_msg = "第" + String(s_mx.printid) + '行,' + String(s_mx.mtrlcode)+" 单价错误"
- GOTO ext
- END IF
- END IF
- IF s_mx.tax < 0 THEN
- rslt = 0
- arg_msg = "税率不能为负数"
- GOTO ext
- END IF
- //检查成本价调整单
- Long ll_mtrlwareid
- IF sys_option_hide_ware = 0 THEN
- SELECT mtrlwareid
- INTO :ll_mtrlwareid
- FROM u_mtrlware
- WHERE ( mtrlid = :s_mx.mtrlid ) AND
- ( plancode = :s_mx.plancode ) AND
- ( storageid = :storageid ) AND
- ( scid = :scid ) AND
- ( status = :s_mx.status ) AND
- ( sptid = :s_mx.sptid) AND
- ( dxflag = :dxflag) AND
- ( woodcode = :s_mx.woodcode) AND
- ( pcode = :s_mx.pcode) Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- arg_msg = "第" + String(s_mx.printid) + "行,查询库存信息失败!"
- rslt = 0
- GOTO ext
- END IF
-
- IF IsNull(ll_mtrlwareid) THEN ll_mtrlwareid = 0
- IF ll_mtrlwareid > 0 THEN
- IF Not (billtype = 8 And sptname = '成本价调整单审核自动生成') THEN
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_updatecost,u_updatecostmx
- WHERE u_updatecost.wareid = u_updatecostmx.wareid AND
- u_updatecost.flag = 0 AND
- u_updatecostmx.mtrlwareid = :ll_mtrlwareid AND
- u_updatecost.scid = :scid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "第" + String(s_mx.printid) + "行,查询成本价调整单操作失败"
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "第" + String(s_mx.printid) + "行," + s_mx.mtrlcode + "已开成本价调整单,请先审核"
- GOTO ext
- END IF
- END IF
-
- //出仓的, 查询成本价
-
- ELSE
-
- END IF
- END IF
- //s_mx.price = Round(s_mx.enprice * mrate * s_mx.rebate,10) //进仓实价, 本位币,库存单位
- s_mx.qty = Round(s_mx.uqty * s_mx.rate, sys_option_unit_dec) //库存单位,进仓数量
- //写入内容
- it_mxbt++
- inwaremx[it_mxbt].mtrlwareid = ll_mtrlwareid
- inwaremx[it_mxbt].printid = s_mx.printid
- inwaremx[it_mxbt].mtrlid = s_mx.mtrlid
- inwaremx[it_mxbt].mtrlcode = s_mx.mtrlcode
- inwaremx[it_mxbt].unit = s_mx.unit
- inwaremx[it_mxbt].rate = s_mx.rate
- inwaremx[it_mxbt].noauditqty = ld_noauditqty
- inwaremx[it_mxbt].bootqty = ld_bootqty
- inwaremx[it_mxbt].addqty = s_mx.addqty
- inwaremx[it_mxbt].uqty = s_mx.uqty
- inwaremx[it_mxbt].qty = s_mx.qty
- inwaremx[it_mxbt].buyqty = s_mx.buyqty
- inwaremx[it_mxbt].packqty = s_mx.packqty
- inwaremx[it_mxbt].uprice = s_mx.uprice //进仓价, 原币, 进仓单位
- IF s_mx.buyqty <> 0 THEN
- inwaremx[it_mxbt].fprice = Round((s_mx.uprice * s_mx.buyqty) /(Round(s_mx.buyqty * s_mx.rate,sys_option_unit_dec)) * mrate ,10) //进仓价, 本位币, 库存单位
- ELSE
- inwaremx[it_mxbt].fprice = Round(s_mx.uprice * s_mx.rate * mrate,10)
- END IF
- inwaremx[it_mxbt].price = Round(inwaremx[it_mxbt].fprice * s_mx.rebate,10) //进仓实价, 本位币,库存单位
- inwaremx[it_mxbt].rebate = s_mx.rebate
- inwaremx[it_mxbt].tax = s_mx.tax
- IF billtype = 1 THEN
- ld_round = 10.0 ^ (2 - sys_option_inware_buy_amt_round)
- IF sys_option_inware_buy_amt_round = 5 THEN ld_round = 1000
- END IF
- inwaremx[it_mxbt].uamt = Round(s_mx.buyqty * s_mx.uprice * s_mx.rebate * ld_round, 0) / ld_round //原币,实价含税金额
- inwaremx[it_mxbt].uamt_tax = Round((s_mx.buyqty * s_mx.uprice * s_mx.rebate) * s_mx.tax / (1 + s_mx.tax) * ld_round, 0) / ld_round //原币, 税金
- inwaremx[it_mxbt].bsamt = Round(s_mx.buyqty * s_mx.uprice * s_mx.rebate * mrate * ld_round, 0) / ld_round //本位币, 实价含税金额
- inwaremx[it_mxbt].bsamt_tax = Round((s_mx.buyqty * s_mx.uprice * s_mx.rebate * mrate) * s_mx.tax / (1 + s_mx.tax) * ld_round, 0) / ld_round //本位币, 税金
- inwaremx[it_mxbt].planprice = ld_planprice
- inwaremx[it_mxbt].jgprice = s_mx.jgprice
- inwaremx[it_mxbt].mxdscrp = s_mx.mxdscrp
- inwaremx[it_mxbt].mxdscrp2 = s_mx.mxdscrp2
- inwaremx[it_mxbt].mxdscrp3 = s_mx.mxdscrp3
- inwaremx[it_mxbt].mxdscrp4 = s_mx.mxdscrp4
- inwaremx[it_mxbt].dxflag = dxflag
- inwaremx[it_mxbt].relid = s_mx.relid
- inwaremx[it_mxbt].relprintid = s_mx.relprintid
- inwaremx[it_mxbt].ifrel = s_mx.ifrel
- inwaremx[it_mxbt].status = s_mx.status
- inwaremx[it_mxbt].woodcode = s_mx.woodcode
- inwaremx[it_mxbt].pcode = s_mx.pcode
- inwaremx[it_mxbt].relcode = ls_relcode
- inwaremx[it_mxbt].mtrlcuscode = s_mx.mtrlcuscode
- inwaremx[it_mxbt].dftsptprice = ld_dftsptprice
- inwaremx[it_mxbt].formula = s_mx.formula
- inwaremx[it_mxbt].waredscrp = s_mx.waredscrp
- inwaremx[it_mxbt].inworkdate = s_mx.inworkdate
- inwaremx[it_mxbt].plancode = s_mx.plancode
- inwaremx[it_mxbt].sptid = s_mx.sptid
- inwaremx[it_mxbt].sptmtrlname = ls_sptmtrlname //供应商别名
- inwaremx[it_mxbt].uprice_notax = s_mx.uprice_notax //不含税单价
- //IF sys_option_buyth_wareamt = 0 THEN
- //
- If (billtype = 1 And thflag = 1 And sys_option_buyth_wareamt = 0 ) &
- Or (s_mx.uqty < 0 And billtype <> 3 And billtype <> 1) THEN //采购退货单 或者 非采购/生产进仓
- SELECT cost
- INTO :ld_cost
- FROM u_mtrlware
- WHERE scid = :scid
- AND mtrlid = :s_mx.mtrlid
- AND storageid = :storageid
- AND status = :s_mx.status
- AND plancode = :s_mx.plancode
- AND woodcode = :s_mx.woodcode
- AND pcode = :s_mx.pcode
- AND dxflag = :dxflag
- And sptid = :s_mx.sptid;
- IF sqlca.SQLCode <> 0 Or IsNull(ld_cost) THEN ld_cost = 0
-
- inwaremx[it_mxbt].cost = ld_cost
- ELSE
- inwaremx[it_mxbt].cost = inwaremx[it_mxbt].fprice * s_mx.rebate
- END IF
- inwaremx[it_mxbt].costamt = Round(inwaremx[it_mxbt].cost * inwaremx[it_mxbt].qty, 2) //成本金额,库存单位
- ext:
- Destroy uo_sptprice
- IF rslt = 0 THEN
- p_clearmx()
- arg_msg = billname + ',' + arg_msg
- END IF
- Return(rslt)
- end function
- public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i
- DateTime server_dt
- Long ls_newid
- String ls_sccode
- IF IsNull(relid) THEN relid = 0
- IF IsNull(storageid) THEN storageid = 0
- IF IsNull(inrep) THEN inrep = ''
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(part) THEN part = ''
- IF IsNull(sptid) THEN sptid = 0
- IF IsNull(sptname) THEN sptname = ''
- IF IsNull(dxflag) THEN dxflag = 0
- IF IsNull(thflag) THEN thflag = 0
- IF IsNull(relint_1) THEN relint_1 = 0
- IF IsNull(relint_2) THEN relint_2 = 0
- IF IsNull(relint_3) THEN relint_3 = 0
- IF IsNull(relint_4) THEN relint_4 = 0
- IF IsNull(relint_5) THEN relint_5 = 0
- IF IsNull(relstr_1) THEN relstr_1 = ''
- IF IsNull(relstr_2) THEN relstr_2 = ''
- IF IsNull(relstr_3) THEN relstr_3 = ''
- IF IsNull(mrate) THEN mrate = 0
- IF mrate = 0 THEN mrate = 1
- IF it_newbegin = False And it_updatebegin = False THEN
- rslt = 0
- arg_msg = "非编辑状态不可以提交"
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
- //取得系统时间,借用操作员表
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF save_chk(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF inwareid = 0 THEN //新建
- ls_newid = f_sys_scidentity(scid,"u_inware","inwareid",arg_msg,if_getid_ture,commit_transaction)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取分部代号
- IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //取得新单据编号
- CHOOSE CASE billtype
- CASE 1,2
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'CG',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'CT',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 3
- inwarecode = getid(scid,ls_sccode + 'CP',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 4
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'WN',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'WH',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 8
- inwarecode = getid(scid,ls_sccode + 'JC',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 9
- inwarecode = getid(scid,ls_sccode + 'PY',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 12
- inwarecode = getid(scid,ls_sccode + 'IC',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 15
- inwarecode = getid(scid,ls_sccode + 'DC',Date(server_dt),if_getid_ture,commit_transaction)
- CASE 20
- IF thflag = 0 THEN
- inwarecode = getid(scid,ls_sccode + 'RI',Date(server_dt),if_getid_ture,commit_transaction)
- ELSE
- inwarecode = getid(scid,ls_sccode + 'RT',Date(server_dt),if_getid_ture,commit_transaction)
- END IF
- CASE 22
- inwarecode = getid(scid,ls_sccode + 'TI',Date(server_dt),if_getid_ture,commit_transaction)
- END CHOOSE
-
- IF inwarecode = "err" THEN
- inwarecode = ''
- rslt = 0
- arg_msg = "无法获取进仓单编号"+"~n"
- GOTO ext
- END IF
-
- INSERT INTO u_inware (
- scid,
- inwareid,
- inwarecode,
- billtype,
- relid,
- storageid,
- indate,
- inrep,
- part,
- dscrp,
- sptid,
- sptname,
- thflag,
- dxflag,
- otheramt,
- opdate,
- opemp,
- relint_1,
- relint_2,
- relint_3,
- relstr_1,
- relstr_2,
- relstr_3,
- mrate,
- relint_4,
- relint_5)
- VALUES (
- :scid,
- :ls_newid,
- :inwarecode,
- :billtype,
- :relid,
- :storageid,
- :indate,
- :inrep,
- :part,
- :dscrp,
- :sptid,
- :sptname,
- :thflag,
- :dxflag,
- :otheramt,
- :server_dt,
- :publ_operator,
- :relint_1,
- :relint_2,
- :relint_3,
- :relstr_1,
- :relstr_2,
- :relstr_3,
- :mrate,
- :relint_4,
- :relint_5) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
-
- IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_inware') > 0 THEN
- arg_msg = '插入单据资料失败,关键字ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'IX_u_inware') > 0 THEN
- arg_msg = '插入单据资料失败,单据编号重复'
- ELSE
- arg_msg = '插入单据资料失败,'+commit_transaction.SQLErrText
- END IF
- //arg_msg = "插入操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //读取新inwareid
- inwareid = ls_newid
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE u_inware
- SET billtype = :billtype,
- relid = :relid,
- storageid = :storageid,
- indate = :indate,
- inrep = :inrep,
- part = :part,
- dscrp = :dscrp,
- sptid = :sptid,
- sptname = :sptname,
- thflag = :thflag,
- dxflag = :dxflag,
- otheramt = :otheramt,
- moddate = :server_dt,
- modemp = :publ_operator,
- relint_1 = :relint_1,
- relint_2 = :relint_2,
- relint_3 = :relint_3,
- relstr_1 = :relstr_1,
- relstr_2 = :relstr_2,
- relstr_3 = :relstr_3,
- mrate = :mrate,
- relint_4 = :relint_4,
- relint_5 = :relint_5
- WHERE u_inware.inwareid = :inwareid
- AND u_inware.scid = :scid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
- rslt = 0
-
- IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_inware') > 0 THEN
- arg_msg = '更新单据资料失败,关键字ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'IX_u_inware') > 0 THEN
- arg_msg = '更新单据资料失败,单据编号重复'
- ELSE
- arg_msg = '更新单据资料失败,'+commit_transaction.SQLErrText
- END IF
-
-
- arg_msg = "更新单据操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF billtype > 1 Or billtype = 1 And flag = 0 THEN
-
-
- //删除原有明细
- DELETE FROM u_inwaremx
- WHERE u_inwaremx.inwareid = :inwareid
- And u_inwaremx.scid = :scid Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有单据明细操作失败"+"~n"
- GOTO ext
- END IF
-
- ELSE
-
- END IF
- END IF
- IF billtype > 1 Or billtype = 1 And flag = 0 THEN
- FOR i = 1 To it_mxbt
- IF storage_plancode_flag = 1 THEN //仓库中是否设置了使用 “进仓单号” 作为批号
- inwaremx[i].plancode = inwarecode
- END IF
- INSERT INTO u_inwaremx
- (scid,
- inwareid,
- printid,
- mtrlid,
- plancode,
- status,
- qty,
- addqty,
- packqty,
- fprice,
- rebate,
- price,
- planprice,
- mxdscrp,
- mxdscrp2,
- mxdscrp3,
- mxdscrp4,
- jgprice,
- relid,
- relprintid,
- ifrel,
- woodcode,
- relcode,
- pcode,
- sptid_cusid,
- cost,
- sptmtrlname,
- unit,
- rate,
- uprice,
- uqty,
- bootqty,
- noauditqty,
- mtrlcuscode,
- dftsptprice,
- formula,
- waredscrp,
- inworkdate,
- tax,
- buyqty,
- uamt,
- uamt_tax,
- bsamt,
- bsamt_tax,
- costamt,
- uprice_notax)
- VALUES (
- :scid,
- :inwareid,
- :inwaremx[i].printid,
- :inwaremx[i].mtrlid,
- :inwaremx[i].plancode,
- :inwaremx[i].status,
- :inwaremx[i].qty,
- :inwaremx[i].addqty,
- :inwaremx[i].packqty,
- :inwaremx[i].fprice,
- :inwaremx[i].rebate,
- :inwaremx[i].price,
- :inwaremx[i].planprice,
- :inwaremx[i].mxdscrp,
- :inwaremx[i].mxdscrp2,
- :inwaremx[i].mxdscrp3,
- :inwaremx[i].mxdscrp4,
- :inwaremx[i].jgprice,
- :inwaremx[i].relid,
- :inwaremx[i].relprintid,
- :inwaremx[i].ifrel,
- :inwaremx[i].woodcode,
- :inwaremx[i].relcode,
- :inwaremx[i].pcode,
- :inwaremx[i].sptid,
- :inwaremx[i].cost,
- :inwaremx[i].sptmtrlname,
- :inwaremx[i].unit,
- :inwaremx[i].rate,
- :inwaremx[i].uprice,
- :inwaremx[i].uqty,
- :inwaremx[i].bootqty,
- :inwaremx[i].noauditqty,
- :inwaremx[i].mtrlcuscode,
- :inwaremx[i].dftsptprice,
- :inwaremx[i].formula,
- :inwaremx[i].waredscrp,
- :inwaremx[i].inworkdate,
- :inwaremx[i].tax,
- :inwaremx[i].buyqty,
- :inwaremx[i].uamt,
- :inwaremx[i].uamt_tax,
- :inwaremx[i].bsamt,
- :inwaremx[i].bsamt_tax,
- :inwaremx[i].costamt,
- :inwaremx[i].uprice_notax) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- IF it_newbegin THEN inwareid = 0
- rslt = 0
-
- IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_inwaremx') > 0 THEN
- arg_msg = '插入单据明细内容失败,关键字ID重复'
- ELSEIF Pos(Lower(commit_transaction.SQLErrText),'IX_u_inwaremx') > 0 THEN
- arg_msg = '插入单据明细内容失败,三个属性字段重复'
- ELSE
- arg_msg = '插入单据明细内容失败,'+commit_transaction.SQLErrText
- END IF
- GOTO ext
- END IF
- NEXT
-
- ELSE
- FOR i = 1 To it_mxbt
- UPDATE u_inWAREmx
- SET uprice = :inWAREmx[i].uprice,
- mxdscrp = :inwaremx[I].mxdscrp,
- mxdscrp2 = :inwaremx[I].mxdscrp2,
- mxdscrp3 = :inwaremx[I].mxdscrp3,
- mxdscrp4 = :inwaremx[I].mxdscrp4,
- fprice = :inwaremx[I].fprice,
- rebate = :inwaremx[I].rebate,
- price = :inwaremx[I].price,
- tax = :inwaremx[i].tax,
- uamt = :inwaremx[i].uamt,
- uamt_tax = :inwaremx[i].uamt_tax,
- bsamt = :inwaremx[i].bsamt,
- bsamt_tax = :inwaremx[i].bsamt_tax,
- uprice_notax =:inwaremx[i].uprice_notax
- WHERE ( scid = :scid AND
- inWAREid = :inwareid AND
- printid = :inwaremx[i].printid);
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新明细价格、备注操作失败"+"~n"
- GOTO ext
- END IF
- NEXT
- END IF
- IF save_end(arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- p_clearmx()
- arg_msg = billname + ',' + arg_msg
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- on uo_inware_cp.create
- call super::create
- end on
- on uo_inware_cp.destroy
- call super::destroy
- end on
|