1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735 |
- $PBExportHeader$uo_spt_price.sru
- forward
- global type uo_spt_price from nonvisualobject
- end type
- end forward
- global type uo_spt_price from nonvisualobject
- end type
- global uo_spt_price uo_spt_price
- type variables
- end variables
- forward prototypes
- public function integer uf_del_sdsptprice (long arg_mtrlid, long arg_sptid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, datetime arg_opdate, decimal arg_price, decimal arg_zqrate, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_getmtrlsptprice (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg)
- public function integer uf_getmtrlsptprice_ch (long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_price, ref decimal arg_rate, ref datetime arg_lastdate, ref string arg_msg)
- public function integer uf_getmtrlname (long arg_sptid, long arg_mtrlid, ref string arg_sptmtrlname, ref string arg_msg)
- public function integer uf_update_sptmtrlname (long arg_sptid, long arg_mtrlid, string arg_unit, string arg_sptmtrlname, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_update_sptprice (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_inwareid, long arg_moneyid, decimal arg_price, decimal arg_zqrate, decimal arg_rate, decimal arg_wareprice, datetime arg_indate, string arg_inwarecode, long arg_flag, string arg_dscrp, long arg_printid, integer arg_billtype, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_del_sptprice (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_inwareid, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_update_sptprice_mx_bk (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_inwareid, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_update_sptprice_mx (integer arg_ifth, long arg_inwareid, long arg_printid, integer arg_billtype, decimal arg_price, decimal arg_zqrate, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_getmtrlsptprice (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg)
- public function integer uof_get_mtrl_buyprice (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg)
- public function integer uof_get_buyprice_his (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg)
- public function integer uof_get_bj_price (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg)
- public function integer uof_get_lmbuyprice (long arg_mtrlid, ref decimal arg_buyprice, ref decimal arg_rebate)
- public function integer uf_check_price_save (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_price, ref string arg_msg)
- public function integer uf_check_price_audit (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_price, ref string arg_msg)
- private function integer uf_check_price (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_price, ref string arg_msg)
- end prototypes
- public function integer uf_del_sdsptprice (long arg_mtrlid, long arg_sptid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, datetime arg_opdate, decimal arg_price, decimal arg_zqrate, boolean arg_ifcommit, ref string arg_msg);//uf_del_sdsptprice(arg_mtrlid,arg_sptid,arg_opdate,arg_price,arg_ifcommit,arg_msg)
- //删除手动添加的采购价格
- long rslt=1
- long cnt=0
- //检查供应商存在否
- select count(*)
- into :cnt
- from u_spt
- where u_spt.sptid=:arg_sptid;
- if sqlca.sqlcode<>0 then
- rslt=0
- arg_msg='因网络和其他原因查询失败'+sqlca.sqlerrtext
- goto ext
- end if
- if cnt=0 then
- rslt=0
- arg_msg='供应商不存在'
- goto ext
- end if
- //检查商品存在否
- select count(*)
- into :cnt
- from u_mtrldef
- where u_mtrldef.mtrlid=:arg_mtrlid;
- if sqlca.sqlcode<>0 then
- rslt=0
- arg_msg='因网络和其他原因查询失败'+sqlca.sqlerrtext
- goto ext
- end if
- if cnt=0 then
- rslt=0
- arg_msg='编码不存在'
- goto ext
- end if
- //删除手动添加价格
- delete
- from u_spt_price_mx
- where u_spt_price_mx.sptid=:arg_sptid and u_spt_price_mx.mtrlid=:arg_mtrlid
- and u_spt_price_mx.opdate=:arg_opdate
- and u_spt_price_mx.unit=:arg_unit and u_spt_price_mx.status=:arg_status
- and u_spt_price_mx.woodcode=:arg_woodcode and u_spt_price_mx.pcode=:arg_pcode;
- if sqlca.sqlcode<>0 then
- rslt=0
- arg_msg='查询失败'+sqlca.sqlerrtext
- goto ext
- end if
- //更新最新价格表
- update u_spt_price
- set u_spt_price.price=:arg_price * :arg_zqrate,
- u_spt_price.fprice=:arg_price,
- u_spt_price.zqrate=:arg_zqrate
- where u_spt_price.sptid=:arg_sptid
- and u_spt_price.mtrlid=:arg_mtrlid
- and u_spt_price.unit=:arg_unit and u_spt_price.status=:arg_status
- and u_spt_price.woodcode=:arg_woodcode and u_spt_price.pcode=:arg_pcode;
- if sqlca.sqlcode<>0 then
- rslt=0
- arg_msg='查询失败'+sqlca.sqlerrtext
- goto ext
- end if
- ext:
- if rslt=0 then
- rollback;
- elseif rslt=1 and arg_ifcommit then
- commit;
- end if
- return rslt
- end function
- public function integer uf_getmtrlsptprice (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg);Long rslt = 1
- Decimal rtn_price,rtn_zqrate,rtn_rate
- String rtn_unit
- String rtn_wareunit
- IF arg_unit = '' THEN
- IF sys_option_buyprice_ifbj = 0 THEN
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode
- Order By u_spt_price_MX.opdate Desc;
- ELSE
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode AND
- u_spt_price_mx.billtype = 2
- Order By u_spt_price_MX.opdate Desc;
- END IF
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_price) THEN
- SELECT unit,unit_buy,rate_buy
- INTO :rtn_wareunit,:rtn_unit,:rtn_rate
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- rtn_rate = 1
- rtn_unit = ''
- arg_msg = '不存在资料'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF rtn_unit = '' OR rtn_rate = 0 THEN
- rtn_unit = rtn_wareunit
- rtn_price = 0.00
- rtn_rate = 1
- rslt = 2
- GOTO ext
- END IF
- END IF
- ELSE
- IF sys_option_buyprice_ifbj = 0 THEN
- SELECT fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price
- WHERE u_spt_price.mtrlid = :arg_mtrlid AND
- u_spt_price.sptid = :arg_sptid AND
- u_spt_price.unit = :arg_unit AND
- u_spt_price.woodcode = :arg_woodcode AND
- u_spt_price.status = :arg_status AND
- u_spt_price.pcode = :arg_pcode;
- ELSE
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.unit = :arg_unit AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode AND
- u_spt_price_mx.billtype = 2
- Order By u_spt_price_MX.opdate Desc;
- END IF
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_price) THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- GOTO ext
- END IF
- END IF
- ext:
- arg_price = rtn_price
- arg_zqrate = rtn_zqrate
- arg_rate = rtn_rate
- arg_unit = rtn_unit
- RETURN rslt
- end function
- public function integer uf_getmtrlsptprice_ch (long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_price, ref decimal arg_rate, ref datetime arg_lastdate, ref string arg_msg);Long rslt = 1
- Decimal rtn_price,rtn_rate
- DateTime rtn_lastdate
- IF arg_unit = '' THEN
- rtn_price = 0.00
- rtn_rate = 1
- SetNull(rtn_lastdate)
- rslt = 2
- GOTO ext
- ELSE
- IF sys_option_buyprice_ifbj = 0 THEN
- SELECT top 1 fprice,rate,outdate
- INTO :rtn_price,:rtn_rate ,:rtn_lastdate
- FROM u_spt_price_mx
- WHERE u_spt_price_mx.mtrlid = :arg_mtrlid
- AND u_spt_price_mx.sptid = :arg_sptid
- AND u_spt_price_mx.unit = :arg_unit
- AND u_spt_price_mx.status = :arg_status
- AND u_spt_price_mx.woodcode = :arg_woodcode
- AND u_spt_price_mx.pcode = :arg_pcode
- Order By Opdate Desc;
- ELSE
- SELECT top 1 fprice,rate,outdate
- INTO :rtn_price,:rtn_rate ,:rtn_lastdate
- FROM u_spt_price_mx
- WHERE u_spt_price_mx.mtrlid = :arg_mtrlid
- AND u_spt_price_mx.sptid = :arg_sptid
- AND u_spt_price_mx.unit = :arg_unit
- AND u_spt_price_mx.status = :arg_status
- AND u_spt_price_mx.woodcode = :arg_woodcode
- AND u_spt_price_mx.pcode = :arg_pcode
- AND u_spt_price_mx.billtype = 2
- Order By Opdate Desc;
- END IF
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_price) THEN
- rslt = 2
- rtn_price = 0.00
- rtn_rate = 1
- SetNull(rtn_lastdate)
- GOTO ext
- END IF
-
- END IF
- ext:
- arg_price = rtn_price
- arg_lastdate = rtn_lastdate
- arg_rate = rtn_rate
- RETURN rslt
- end function
- public function integer uf_getmtrlname (long arg_sptid, long arg_mtrlid, ref string arg_sptmtrlname, ref string arg_msg);Long rslt = 1
- String rtn_sptmtrlname
- SELECT sptmtrlname
- INTO :rtn_sptmtrlname
- FROM u_sptmtrlname
- WHERE u_sptmtrlname.mtrlid = :arg_mtrlid
- AND u_sptmtrlname.sptid = :arg_sptid;
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_sptmtrlname) THEN
- rtn_sptmtrlname = ''
- END IF
- arg_sptmtrlname = rtn_sptmtrlname
- ext:
- RETURN rslt
- end function
- public function integer uf_update_sptmtrlname (long arg_sptid, long arg_mtrlid, string arg_unit, string arg_sptmtrlname, boolean arg_ifcommit, ref string arg_msg);long rslt = 1
- long cnt = 0
- if isnull(arg_sptmtrlname) then arg_sptmtrlname = ''
- //检查供应商存在否
- select count(*)
- into :cnt
- from u_spt
- where u_spt.sptid = :arg_sptid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.sqlerrtext
- goto ext
- end if
- if cnt = 0 then
- rslt = 0
- arg_msg = '供应商不存在'
- goto ext
- end if
- //检查商品存在否
- select count(*)
- into :cnt
- from u_mtrldef
- where u_mtrldef.mtrlid = :arg_mtrlid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.sqlerrtext
- goto ext
- end if
- if cnt = 0 then
- rslt = 0
- arg_msg = '物料资料不存在'
- goto ext
- end if
- //1.更新供应商售价表
- select count(*)
- into :cnt
- from u_spt_price
- where u_spt_price.sptid = :arg_sptid and
- u_spt_price.mtrlid = :arg_mtrlid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '因网络和其他原因查询供应商物料最新价格失败'+sqlca.sqlerrtext
- goto ext
- end if
- if cnt > 0 then
- update u_spt_price
- set u_spt_price.sptmtrlname = :arg_sptmtrlname
- where u_spt_price.sptid = :arg_sptid and
- u_spt_price.mtrlid = :arg_mtrlid;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '因网络和其它原因,供应商物料别名更新失败'+sqlca.sqlerrtext
- goto ext
- end if
- elseif cnt = 0 then
- insert into u_spt_price
- (sptid,
- mtrlid,
- price,
- fprice,
- zqrate,
- dscrp,
- sptmtrlname,
- unit,
- status)
- values
- (
- :arg_sptid,
- :arg_mtrlid,
- 0,
- 0,
- 1,
- '',
- :arg_sptmtrlname,
- :arg_unit,
- '' );
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '因网络或其他原因,新增供应商物料别名失败'
- goto ext
- end if
- end if
- ext:
- if rslt = 0 then
- rollback;
- elseif arg_ifcommit and rslt = 1 then
- commit;
- end if
- return rslt
- end function
- public function integer uf_update_sptprice (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_inwareid, long arg_moneyid, decimal arg_price, decimal arg_zqrate, decimal arg_rate, decimal arg_wareprice, datetime arg_indate, string arg_inwarecode, long arg_flag, string arg_dscrp, long arg_printid, integer arg_billtype, boolean arg_ifcommit, ref string arg_msg);//====================================================================
- // 事件: uo_spt_price.Script - uf_update_sptprice ( integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_inwareid, long arg_moneyid, decimal arg_price, decimal arg_zqrate, decimal arg_rate, decim()
- //--------------------------------------------------------------------
- // 描述:更新供应商售价表及售价变动明细表
- //--------------------------------------------------------------------
- // 参数:
- // value integer arg_ifth 0 正常 1 退货 2 修改供应商物料名称
- // value long arg_sptid
- // value long arg_mtrlid
- // value string arg_unit
- // value string arg_status
- // value string arg_woodcode
- // value string arg_pcode
- // value long arg_inwareid
- // value long arg_moneyid
- // value decimal arg_price
- // value decimal arg_zqrate
- // value decimal arg_rate
- // value decimal arg_wareprice
- // value datetime arg_indate
- // value string arg_inwarecode
- // value long arg_flag 手动添加标志
- // value string arg_dscrp
- // value long arg_printid
- // value integer arg_billtype
- // value boolean arg_ifcommit
- // reference string arg_msg
- //--------------------------------------------------------------------
- // 返回: (none)
- //--------------------------------------------------------------------
- // 作者: LHD 日期: 2013年12月11日
- //--------------------------------------------------------------------
- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- Long rslt = 1
- Long cnt = 0
- DateTime server_time
- String ls_dscrp
- //检查退货
- IF arg_ifth = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- //检查参数
- IF IsNull(arg_sptid) THEN arg_sptid = 0
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_price) THEN arg_price = 0.0
- IF IsNull(arg_moneyid) THEN arg_moneyid = 0
- IF arg_indate <= DateTime(Date('1900-01-01'),Time(0)) THEN
- rslt = 0
- arg_msg = '不合理的发生时间'
- GOTO ext
- END IF
- IF Trim(arg_msg) = '' THEN arg_msg = ''
- IF Trim(arg_inwarecode) = '' THEN arg_inwarecode = ''
- //获得服务器时间
- SELECT Top 1 getdate() Into :server_time From u_user;
- //检查供应商存在否
- SELECT count(*)
- INTO :cnt
- FROM u_spt
- Where u_spt.sptid = :arg_sptid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '供应商不存在'
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询币种失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '币种资料不存在'
- rslt = 0
- GOTO ext
- END IF
- //检查商品存在否
- SELECT count(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '资料不存在'
- GOTO ext
- END IF
- //1.更新供应商售价表
- IF arg_billtype = 0 THEN
- ls_dscrp = '采购收货单'
- ELSEIF arg_billtype = 1 THEN
- ls_dscrp = '手动添加'
- ELSEIF arg_billtype = 2 THEN
- ls_dscrp = '调价单'
- ELSEIF arg_billtype = 4 THEN
- ls_dscrp = '外协收货单'
- ELSE
- ls_dscrp = arg_dscrp
- END IF
- UPDATE u_spt_price
- SET u_spt_price.price = :arg_price * :arg_zqrate,
- u_spt_price.fprice = :arg_price,
- u_spt_price.zqrate = :arg_zqrate,
- u_spt_price.wareprice = :arg_wareprice,
- u_spt_price.rate = :arg_rate,
- u_spt_price.dscrp = :ls_dscrp,
- u_spt_price.sys_changetime = getdate()
- WHERE u_spt_price.sptid = :arg_sptid AND
- u_spt_price.mtrlid = :arg_mtrlid AND
- u_spt_price.unit = :arg_unit AND
- u_spt_price.status = :arg_status AND
- u_spt_price.woodcode = :arg_woodcode AND
- u_spt_price.pcode = :arg_pcode AND
- u_spt_price.moneyid = :arg_moneyid;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_spt_price
- (sptid,
- mtrlid,
- price,
- fprice,
- zqrate,
- dscrp,
- unit,
- wareprice,
- rate,
- status,
- woodcode,
- pcode,
- moneyid,
- sys_changetime)
- VALUES
- (
- :arg_sptid,
- :arg_mtrlid,
- :arg_price * :arg_zqrate,
- :arg_price,
- :arg_zqrate,
- :ls_dscrp,
- :arg_unit,
- :arg_wareprice,
- :arg_rate,
- :arg_status,
- :arg_woodcode,
- :arg_pcode,
- :arg_moneyid,
- getdate());
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '新增供应商报价失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '供应商报价表更新失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //2.插入供应商售价变动明细表
- INSERT INTO u_spt_price_mx
- (
- u_spt_price_mx.sptid,
- u_spt_price_mx.mtrlid,
- u_spt_price_mx.opdate,
- u_spt_price_mx.opemp,
- u_spt_price_mx.inwareid,
- u_spt_price_mx.inwarecode,
- u_spt_price_mx.outdate,
- u_spt_price_mx.price,
- u_spt_price_mx.fprice,
- u_spt_price_mx.zqrate,
- u_spt_price_mx.dscrp,
- u_spt_price_mx.status,
- u_spt_price_mx.buildtype,
- u_spt_price_mx.unit,
- u_spt_price_mx.printid,
- u_spt_price_mx.wareprice,
- u_spt_price_mx.rate,
- u_spt_price_mx.woodcode,
- u_spt_price_mx.pcode,
- u_spt_price_mx.billtype,
- moneyid
- )
- VALUES
- (
- :arg_sptid,
- :arg_mtrlid,
- :server_time,
- :publ_operator,
- :arg_inwareid,
- :arg_inwarecode,
- :arg_indate,
- :arg_price * :arg_zqrate,
- :arg_price,
- :arg_zqrate,
- :arg_dscrp,
- :arg_status,
- :arg_flag,
- :arg_unit,
- :arg_printid,
- :arg_wareprice,
- :arg_rate,
- :arg_woodcode,
- :arg_pcode,
- :arg_billtype,
- :arg_moneyid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '登记在供应商报价表失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uf_del_sptprice (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_inwareid, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg);//删除自动类型的价格历史记录
- Int rslt = 1
- Long cnt = 0,ll_cnt = 0
- DateTime ld_opdate
- //检查供应商存在否
- SELECT count(*)
- INTO :cnt
- FROM u_spt
- Where u_spt.sptid = :arg_sptid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '供应商不存在'
- GOTO ext
- END IF
- //检查商品存在否
- SELECT count(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '物料不存在'
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT top 1 Opdate INTO :ld_opdate
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid
- Order By Opdate Desc;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND Opdate > :ld_opdate
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- Decimal ld_fprice,ld_zqrate,ld_price
- DateTime ld_sys_changetime,ld_nulldt
- SetNull(ld_nulldt)
- IF cnt = 0 THEN //如果被删明细是最新,用次新明细更新最新价
- SELECT count(*) INTO :ll_cnt
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND Opdate < :ld_opdate
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_cnt = 0 THEN
- DELETE FROM u_spt_price
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新最新价失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- SELECT top 1 fprice,zqrate,price,sys_changetime
- INTO :ld_fprice,:ld_zqrate,:ld_price,:ld_sys_changetime
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND Opdate < :ld_opdate
- AND moneyid = :arg_moneyid
- Order By Opdate Desc;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_spt_price
- SET fprice = :ld_fprice ,
- zqrate = :ld_zqrate,
- price = :ld_price,
- sys_changetime = :ld_sys_changetime
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新最新价失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- //删除手动添加价格
- DELETE
- FROM u_spt_price_mx
- Where sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uf_update_sptprice_mx_bk (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_inwareid, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg);//删除自动类型的价格历史记录
- Int rslt = 1
- Long cnt = 0,ll_cnt = 0
- DateTime ld_opdate
- //检查供应商存在否
- SELECT count(*)
- INTO :cnt
- FROM u_spt
- Where u_spt.sptid = :arg_sptid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '供应商不存在'
- GOTO ext
- END IF
- //检查商品存在否
- SELECT count(*)
- INTO :cnt
- FROM u_mtrldef
- Where u_mtrldef.mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '物料不存在'
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- SELECT top 1 Opdate INTO :ld_opdate
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid
- Order By Opdate Desc;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- //查询此明细后是否有记录
- SELECT count(*) INTO :cnt
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND Opdate > :ld_opdate
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- Decimal ld_fprice,ld_zqrate,ld_price
- DateTime ld_sys_changetime,ld_nulldt
- SetNull(ld_nulldt)
- IF cnt = 0 THEN //如果被删明细是最新,用新价更新最新价
- SELECT count(*) INTO :ll_cnt
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND Opdate < :ld_opdate
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_cnt = 0 THEN
- DELETE FROM u_spt_price
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新最新价失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- SELECT top 1 fprice,zqrate,price,sys_changetime
- INTO :ld_fprice,:ld_zqrate,:ld_price,:ld_sys_changetime
- FROM u_spt_price_mx
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND Opdate < :ld_opdate
- AND moneyid = :arg_moneyid
- Order By Opdate Desc;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_spt_price
- SET fprice = :ld_fprice ,
- zqrate = :ld_zqrate,
- price = :ld_price,
- sys_changetime = :ld_sys_changetime
- WHERE sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新最新价失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- END IF
- //删除手动添加价格
- DELETE
- FROM u_spt_price_mx
- Where sptid = :arg_sptid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND inwareid = :arg_inwareid
- AND printid = :arg_printid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND moneyid = :arg_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uf_update_sptprice_mx (integer arg_ifth, long arg_inwareid, long arg_printid, integer arg_billtype, decimal arg_price, decimal arg_zqrate, boolean arg_ifcommit, ref string arg_msg);//更新因修改单价导致的单价不对应的价格历史记录
- Int rslt = 1
- Long cnt = 0,ll_cnt = 0
- DateTime ld_opdate
- if arg_ifth = 1 then
- rslt = 1
- goto ext
- end if
- SELECT count(*) INTO :cnt
- FROM u_spt_price_mx
- WHERE inwareid = :arg_inwareid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- string ll_sptid, ll_mtrlid, ll_moneyid
- string ls_unit, ls_status, ls_woodcode, ls_pcode
- SELECT top 1 Opdate ,sptid, mtrlid,unit ,status,woodcode,pcode,moneyid
- INTO :ld_opdate,:ll_sptid, :ll_mtrlid, :ls_unit, :ls_status, :ls_woodcode, :ls_pcode, :ll_moneyid
- FROM u_spt_price_mx
- WHERE inwareid = :arg_inwareid
- AND printid = :arg_printid
- Order By Opdate Desc;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- //查询此明细后是否有记录
- SELECT count(*) INTO :cnt
- FROM u_spt_price_mx
- WHERE sptid = :ll_sptid
- AND mtrlid = :ll_mtrlid
- AND unit = :ls_unit
- AND status = :ls_status
- AND woodcode = :ls_woodcode
- AND pcode = :ls_pcode
- AND moneyid = :ll_moneyid
- AND Opdate > :ld_opdate;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- Decimal ld_fprice,ld_zqrate,ld_price
- DateTime ld_sys_changetime,ld_nulldt
- SetNull(ld_nulldt)
- IF cnt = 0 THEN //如果被删明细是最新,用新价更新最新价
- UPDATE u_spt_price
- SET u_spt_price.sptid = :ll_sptid,
- u_spt_price.mtrlid = :ll_mtrlid,
- u_spt_price.price = :arg_price * :arg_zqrate,
- u_spt_price.fprice = :arg_price,
- u_spt_price.zqrate = :arg_zqrate
- WHERE u_spt_price.sptid = :ll_sptid AND
- u_spt_price.mtrlid = :ll_mtrlid AND
- u_spt_price.unit = :ls_unit AND
- u_spt_price.status = :ls_status AND
- u_spt_price.woodcode = :ls_woodcode AND
- u_spt_price.pcode = :ls_pcode AND
- u_spt_price.moneyid = :ll_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其它原因,供应商报价表更新失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- UPDATE u_spt_price_mx
- SET price = :arg_price * :arg_zqrate,
- fprice = :arg_price,
- zqrate = :arg_zqrate
- WHERE inwareid = :arg_inwareid
- AND printid = :arg_printid
- AND sptid = :ll_sptid
- AND mtrlid = :ll_mtrlid
- AND unit = :ls_unit
- AND status = :ls_status
- AND woodcode = :ls_woodcode
- AND pcode = :ls_pcode
- AND moneyid = :ll_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其他原因,更新在供应商报价明细表失败'
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_getmtrlsptprice (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg);Long rslt = 1
- Decimal rtn_price,rtn_zqrate,rtn_rate
- String rtn_unit
- String rtn_wareunit
- IF arg_unit = '' THEN
- IF sys_option_buyprice_ifbj = 0 THEN
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode
- Order By u_spt_price_MX.opdate Desc;
- ELSE
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode AND
- u_spt_price_mx.billtype = 2
- Order By u_spt_price_MX.opdate Desc;
- END IF
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_price) THEN
- SELECT unit,unit_buy,rate_buy
- INTO :rtn_wareunit,:rtn_unit,:rtn_rate
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- rtn_rate = 1
- rtn_unit = ''
- arg_msg = '不存在资料'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF rtn_unit = '' OR rtn_rate = 0 THEN
- rtn_unit = rtn_wareunit
- rtn_price = 0.00
- rtn_rate = 1
- rslt = 2
- GOTO ext
- END IF
- END IF
- ELSE
- IF sys_option_buyprice_ifbj = 0 THEN
- SELECT fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price
- WHERE u_spt_price.mtrlid = :arg_mtrlid AND
- u_spt_price.sptid = :arg_sptid AND
- u_spt_price.unit = :arg_unit AND
- u_spt_price.woodcode = :arg_woodcode AND
- u_spt_price.status = :arg_status AND
- u_spt_price.pcode = :arg_pcode;
- ELSE
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.unit = :arg_unit AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode AND
- u_spt_price_mx.billtype = 2
- Order By u_spt_price_MX.opdate Desc;
- END IF
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_price) THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- GOTO ext
- END IF
- END IF
- ext:
- arg_price = rtn_price
- arg_zqrate = rtn_zqrate
- arg_rate = rtn_rate
- arg_unit = rtn_unit
- RETURN rslt
- end function
- public function integer uof_get_mtrl_buyprice (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg);Long rslt = 1
- Decimal rtn_price,rtn_zqrate,rtn_rate
- String rtn_unit
- String rtn_wareunit
- Decimal lde_buyprice, lde_rebate
- //参数合法性检查
- //IF arg_sptid = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- IF arg_mtrlid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_buyprice_ifbj = 0 THEN //取采购历史
- IF uof_get_buyprice_his(arg_sptid, arg_mtrlid, arg_unit , arg_status, arg_woodcode, arg_pcode, lde_buyprice, lde_rebate,arg_rate,arg_msg) = 0 THEN
- lde_buyprice = 0
- lde_rebate = 1
- END IF
- rtn_price = lde_buyprice
- rtn_zqrate = lde_rebate
- rtn_unit = arg_unit
- rtn_rate = arg_rate
- ELSEIF sys_option_buyprice_ifbj = 1 THEN //取报价
- IF uof_get_bj_price(arg_sptid, arg_mtrlid, arg_unit , arg_status, arg_woodcode, arg_pcode, lde_buyprice, lde_rebate,arg_rate,arg_msg) = 0 THEN
- lde_buyprice = 0
- lde_rebate = 1
- END IF
- rtn_price = lde_buyprice
- rtn_zqrate = lde_rebate
- rtn_unit = arg_unit
- rtn_rate = arg_rate
- ELSEIF sys_option_buyprice_ifbj = 2 THEN //取设定购价
-
- IF uof_get_lmbuyprice(arg_mtrlid, lde_buyprice, lde_rebate) = 0 THEN
- lde_buyprice = 0
- lde_rebate = 1
- END IF
-
- rtn_price = lde_buyprice
- rtn_zqrate = lde_rebate
-
- END IF
- ext:
- arg_price = rtn_price
- arg_zqrate = rtn_zqrate
- arg_rate = rtn_rate
- arg_unit = rtn_unit
- RETURN rslt
- end function
- public function integer uof_get_buyprice_his (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg);//取价格历史
- Long rslt = 1
- Decimal rtn_price,rtn_zqrate,rtn_rate
- String rtn_unit
- String rtn_wareunit
- IF arg_unit = '' THEN
-
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.pcode = :arg_pcode
- Order By u_spt_price_MX.opdate Desc;
-
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 Or IsNull(rtn_price) THEN
- SELECT unit,unit_buy,rate_buy
- INTO :rtn_wareunit,:rtn_unit,:rtn_rate
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- rtn_rate = 1
- rtn_unit = ''
- arg_msg = '不存在资料'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF rtn_unit = '' Or rtn_rate = 0 THEN
- rtn_unit = rtn_wareunit
- rtn_price = 0.00
- rtn_rate = 1
- rslt = 2
- GOTO ext
- END IF
- END IF
- ELSE
-
- SELECT fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price
- WHERE u_spt_price.mtrlid = :arg_mtrlid AND
- u_spt_price.sptid = :arg_sptid AND
- u_spt_price.unit = :arg_unit AND
- u_spt_price.woodcode = :arg_woodcode AND
- u_spt_price.status = :arg_status AND
- u_spt_price.pcode = :arg_pcode;
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 Or IsNull(rtn_price) THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- GOTO ext
- END IF
- END IF
- ext:
- arg_price = rtn_price
- arg_zqrate = rtn_zqrate
- arg_rate = rtn_rate
- arg_unit = rtn_unit
- RETURN rslt
- end function
- public function integer uof_get_bj_price (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg);Long rslt = 1
- Decimal rtn_price,rtn_zqrate,rtn_rate
- String rtn_unit
- String rtn_wareunit
- IF arg_unit = '' THEN
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode AND
- u_spt_price_mx.billtype = 2
- Order By u_spt_price_MX.opdate Desc;
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_price) THEN
- SELECT unit,unit_buy,rate_buy
- INTO :rtn_wareunit,:rtn_unit,:rtn_rate
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- rtn_rate = 1
- rtn_unit = ''
- arg_msg = '不存在资料'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF rtn_unit = '' OR rtn_rate = 0 THEN
- rtn_unit = rtn_wareunit
- rtn_price = 0.00
- rtn_rate = 1
- rslt = 2
- GOTO ext
- END IF
- END IF
- ELSE
- SELECT top 1 fprice,zqrate,rate,unit
- INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit
- FROM u_spt_price_MX
- WHERE u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.unit = :arg_unit AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode AND
- u_spt_price_mx.billtype = 2
- Order By u_spt_price_MX.opdate Desc;
-
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询操作失败'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_price) THEN
- rslt = 2
- rtn_price = 0.00
- rtn_zqrate = 1
- GOTO ext
- END IF
- END IF
- ext:
- arg_price = rtn_price
- arg_zqrate = rtn_zqrate
- arg_rate = rtn_rate
- arg_unit = rtn_unit
- RETURN rslt
- end function
- public function integer uof_get_lmbuyprice (long arg_mtrlid, ref decimal arg_buyprice, ref decimal arg_rebate);Int rslt = 1
- SELECT lmbuyprice
- INTO :arg_buyprice
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_buyprice = 0
- END IF
- arg_rebate = 1
- RETURN rslt
- end function
- public function integer uf_check_price_save (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_price, ref string arg_msg);//====================================================================
- // Function: uf_check_price()
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_sptid
- // value long arg_mtrlid
- // value string arg_mtrlcode
- // value decimal arg_price
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2004.07.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Int rslt = 1
- //124 保存, 1769 审核
- IF Not f_power_ind(124) Or sys_power_issuper THEN
- rslt = 1
- GOTO ext
- END IF
- IF uf_check_price(arg_thflag, arg_sptid, arg_mtrlid, arg_mtrlcode, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_price, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uf_check_price_audit (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_price, ref string arg_msg);//====================================================================
- // Function: uf_check_price()
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_sptid
- // value long arg_mtrlid
- // value string arg_mtrlcode
- // value decimal arg_price
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2004.07.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Int rslt = 1
- //124 保存, 1769 审核
- IF Not f_power_ind(1769) Or sys_power_issuper THEN
- rslt = 1
- GOTO ext
- END IF
- IF uf_check_price(arg_thflag, arg_sptid, arg_mtrlid, arg_mtrlcode, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_price, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- private function integer uf_check_price (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_price, ref string arg_msg);//====================================================================
- // Function: uf_check_price()
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_sptid
- // value long arg_mtrlid
- // value string arg_mtrlcode
- // value decimal arg_price
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2004.07.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Decimal i_lmbuyprice
- String i_sptname
- Int rslt = 1
- Long cnt = 0
- //124 保存, 1769 审核
- //IF NOT f_power_ind(124) OR sys_power_issuper THEN
- // rslt = 1
- // GOTO ext
- //END IF
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_woodcode) THEN arg_woodcode = ''
- IF IsNull(arg_pcode) THEN arg_pcode = ''
- IF sys_option_buylimit_ifbj = 0 THEN //价格历史
- SELECT price,u_spt.name INTO :i_lmbuyprice,:i_sptname
- FROM u_spt_price,u_spt
- WHERE u_spt_price.mtrlid = :arg_mtrlid
- AND u_spt_price.sptid = :arg_sptid
- AND u_spt_price.sptid = u_spt.sptid
- AND u_spt_price.unit = :arg_unit
- AND u_spt_price.status = :arg_status
- AND u_spt_price.woodcode = :arg_woodcode
- AND u_spt_price.pcode = :arg_pcode;
- ELSEIF sys_option_buylimit_ifbj = 1 THEN //报价
- SELECT top 1 price,u_spt.name INTO :i_lmbuyprice,:i_sptname
- FROM u_spt_price_MX,u_spt
- WHERE u_spt_price_MX.sptid = u_spt.sptid AND
- u_spt_price_MX.mtrlid = :arg_mtrlid AND
- u_spt_price_MX.sptid = :arg_sptid AND
- u_spt_price_MX.woodcode = :arg_woodcode AND
- u_spt_price_MX.status = :arg_status AND
- u_spt_price_MX.pcode = :arg_pcode AND
- u_spt_price_mx.billtype = 2
- Order By u_spt_price_MX.opdate Desc;
- ELSEIF sys_option_buylimit_ifbj = 2 THEN //设定购价
- SELECT top 1 lmbuyprice INTO :i_lmbuyprice
- FROM u_mtrldef
- WHERE mtrlid = :arg_mtrlid;
-
- i_sptname = ''
- ELSEIF sys_option_buylimit_ifbj = 3 THEN //计划价 禁止
- SELECT top 1 planprice INTO :i_lmbuyprice
- FROM u_mtrldef
- WHERE mtrlid = :arg_mtrlid;
-
- i_sptname = ''
- ELSEIF sys_option_buylimit_ifbj = 4 THEN //计划价 询问
- GOTO ext //在收货单里面已经询问 所以这里直接跳过
- END IF
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询'+arg_mtrlcode+'收货限价失败,可能该供应商的收货限价还没有设定,请检查'
- GOTO ext
- END IF
- IF arg_thflag = 0 THEN
- IF arg_price > i_lmbuyprice THEN
- rslt = 0
- arg_msg = '供应商:'+i_sptname+','+arg_mtrlcode+'收货时,收货单价{'+String(arg_price,'#,##0.00##')+'} 高于收货限价{'+String(i_lmbuyprice,'#,##0.00##')+'}'
- GOTO ext
- END IF
- ELSE
- IF arg_price < i_lmbuyprice THEN
- rslt = 0
- arg_msg = '供应商:'+i_sptname+','+arg_mtrlcode+'退货时,退货单价{'+String(arg_price,'#,##0.00##')+'} 低于收货限价{'+String(i_lmbuyprice,'#,##0.00##')+'}'
- GOTO ext
- END IF
- END IF
- ext:
- RETURN rslt
- end function
- on uo_spt_price.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_spt_price.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|