You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

537 lines
27 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

--批发销售
if exists(select * from sysobjects where name='p_rz_prepare_xh' and xtype='p')
drop procedure p_rz_prepare_xh
go
create procedure p_rz_prepare_xh
(
@psorgcode varchar(10),
@psbillno varchar(20),
@psparams varchar(200),
@psmsg varchar(2000) out
)
as
begin
declare @sorgcode varchar(10)
declare @scustcode varchar(15)
declare @ssqauremode varchar(1)
declare @syqflag varchar(1)
declare @sstr varchar(1000)
declare @ismngcredit varchar(1)
declare @billamount numeric(19,4)
declare @pfamount numeric(19,4)
declare @prepay numeric(19,4)
declare @ystotal numeric(19,4)
declare @spackcode varchar(20)
declare @splucode varchar(20)
declare @fcounts numeric(19,4)
declare @splutype varchar(1)
declare @fkycount numeric(19,4)
declare @fbillcounts numeric(19,4)
declare @serrmsg varchar(200)
declare @sbillno varchar(20)
declare @splace varchar(1)
declare @irtncode int
declare @pfquoteno varchar(20)
declare @pfquotemultsend varchar(1)
set @psmsg=''
select @sbillno=refbillno,@splace=place,@sorgcode=orgcode,@scustcode=custcode,@ssqauremode=sqauremode,@ystotal=ystotal,@pfquoteno=pfquoteno from t_whsale_head where billno=@psbillno
select @pfquotemultsend=isnull(itemvalue,'1') from t_syscfg where section='whlsale' and itemname='pfquotemultsend'
select @syqflag=yqflag,@pfamount=pftotal-thtotal-fktotal,@prepay=prepay from t_customer where custcode=@scustcode
if @@rowcount=0
begin
set @psmsg='客户已经不存在'
return(-1)
end
if (@ssqauremode='1') and (@syqflag='0')
begin
set @psmsg='客户不允许延期收款'
return(-1)
end
select @sstr=coalesce(@sstr+char(13),'')+rtrim(d.plucode)+'-'+rtrim(d.pluname) from t_whsale_body d
where d.billno=@psbillno and not exists(select plucode from t_plu where plucode=d.plucode and depcode=d.depcode)
if isnull(@sstr,'')<>''
begin
set @psmsg='已经不存在或部门发生了变化'+char(13)+@sstr
return(-1)
end
if exists(select * from t_whsale_head where isnull(@sbillno,'')<>'' and refbillno=@sbillno and isnull(rzdate,'')<>'')
begin
set @psmsg='该批发销售单对应的要货单存在已经记账的批发销售单,请检查'
return(-1)
end
if @pfquotemultsend<>'1' and isnull(@pfquoteno,'')<>''
begin
if exists(select 1 from t_whsale_head where isnull(@pfquoteno,'')<>'' and pfquoteno=@pfquoteno and isnull(rzdate,'')<>'')
begin
set @psmsg='该批发销售单对应的批发订单已发货,请检查'
return(-1)
end
end
exec @irtncode=p_check_plu_stock_rz @sorgcode,@psbillno,@splace,'t_whsale_head','t_whsale_body',@psparams,@psmsg output
if @irtncode=-1
return(-1)
if @psmsg<>''
return(-2)
set @psmsg=''
return(1)
end
go
if exists(select * from sysobjects where name='p_rz_xh' and xtype='p')
drop procedure p_rz_xh
go
CREATE procedure p_rz_xh
(
@psorgcode varchar(10),
@psbillno varchar(20),
@psparams varchar(200),
@psmsg varchar(2000) out
)
as
begin
declare @sorgcode varchar(10)
declare @scustcode varchar(15)
declare @szdrcode varchar(6)
declare @ssqauremode varchar(1)
declare @splace varchar(1)
declare @srzdate varchar(10)
declare @ispfpriceflag varchar(1)
declare @org_orgtype varchar(1)
declare @org_isdbdeploy varchar(1)
declare @scurver varchar(1)
declare @scurdate varchar(10)
declare @scurtime varchar(8)
declare @custbook_name varchar(20)
declare @sedition varchar(20)
declare @ssql varchar(8000)
declare @sinfo varchar(8000)
declare @irtn int
declare @detail_jtaxrate int
declare @detail_cost numeric(19,4)
declare @detail_netcost numeric(19,4)
declare @detail_total numeric(19,4)
declare @detail_plucode varchar(20)
declare @detail_depcode varchar(10)
declare @detail_pfprice numeric(19,4)
declare @detail_zrtotal numeric(19,4)
declare @detail_pftotal numeric(19,4)
declare @detail_counts numeric(19,4)
declare @detail_zpcounts numeric(19,4)
declare @detail_serialno numeric(19,0)
declare @detail_plutype varchar(1)
declare @detail_mngstock varchar(1)
declare @detail_jymode varchar(1)
declare @detail_ornpftotal numeric(19,4)
declare @detail_ystotal numeric(19,4)
declare @detail_pludsctotal numeric(19,4)
declare @detail_dsccode varchar(20)
declare @detail_authno varchar(6)
declare @detail_sharetotal numeric(19,4)
declare @goods_netjprice numeric(19,4)
declare @goods_jprice numeric(19,4)
declare @goods_price numeric(19,4)
declare @stock_gcount numeric(19,4)
declare @stock_ccount numeric(19,4)
declare @stock_cost numeric(19,4)
declare @stock_netcost numeric(19,4)
declare @stock_total numeric(19,4)
declare @stock_tzamount numeric(19,4)
declare @new_cost numeric(19,4)
declare @new_netcost numeric(19,4)
declare @new_total numeric(19,4)
declare @stock_csgcount numeric(19,4)
declare @stock_csccount numeric(19,4)
declare @csdetail_ccounts numeric(19,4)
declare @csdetail_plucode varchar(20)
declare @csdetail_colorcode varchar(10)
declare @csdetail_sizecode varchar(10)
declare @csdetail_zpcounts numeric(19,4)
declare @packplu_plucode varchar(20)
declare @packplu_pluname varchar(40)
declare @packplu_barcode varchar(20)
declare @packplu_depcode varchar(10)
declare @packplu_depname varchar(20)
declare @packplu_cargono varchar(20)
declare @packplu_spec varchar(40)
declare @packplu_prodarea varchar(30)
declare @packplu_unit varchar(4)
declare @packplu_jtaxrate int
declare @packplu_price numeric(19,4)
declare @packplu_jprice numeric(19,4)
declare @packplu_netjprice numeric(19,4)
declare @packplu_counts numeric(19,4)
declare @packplu_zpcounts numeric(19,4)
declare @packplu_plutotal numeric(19,4)
declare @packplu_pftotal numeric(19,4)
declare @packplu_zrtotal numeric(19,4)
declare @packplu_pfprice numeric(19,4)
declare @packplu_pfcounts numeric(19,4)
declare @packplu_ornpftotal numeric(19,4)
declare @packplu_ornpfprice numeric(19,4)
declare @packplu_ystotal numeric(19,4)
declare @packplu_pludsctotal numeric(19,4)
declare @packplu_sharetotal numeric(19,4)
declare @fscscount numeric(19,4)
declare @packplucount int
declare @packplutotalsum numeric(19,4)
declare @i int
declare @sumpftotal numeric(19,4)
declare @sumzrtotal numeric(19,4)
declare @sumornpftotal numeric(19,4)
declare @sumystotal numeric(19,4)
declare @sumpludsctotal numeric(19,4)
declare @sumsharetotal numeric(19,4)
declare @fscount numeric(19,4)
declare @fscost numeric(19,4)
declare @fsnetcost numeric(19,4)
declare @fstotal numeric(19,4)
declare @jccost numeric(19,4)
declare @jcnetcost numeric(19,4)
declare @jctotal numeric(19,4)
declare @jccount numeric(19,4)
declare @billystotal numeric(19,4)
declare @billno varchar(20)
declare @pfquoteno varchar(20)
declare @goods_iszfcode varchar(1)
declare @packplu_iszfcode varchar(1)
declare @packplu_zmcode varchar(20)
select @sedition=itemvalue from t_syscfg where section='SYSTEM' and itemname='Edition'
select @sorgcode=orgcode,@scustcode=custcode,@splace=place,@szdrcode=zdrcode,@ssqauremode=sqauremode,@srzdate=isnull(rzdate,''),@billno=refbillno,@pfquoteno=pfquoteno
from t_whsale_head where billno=@psbillno
select @ispfpriceflag=pfpriceflag from t_customer where custcode=@scustcode
select @org_orgtype=orgtype,@org_isdbdeploy=isdbdeploy from t_shop where orgcode=@sorgcode
select @scurver=itemvalue from t_syscfg where section='SYSTEM' and itemname='VER'
select @scurdate=convert(varchar(100),getdate(),120),@scurtime=convert(varchar(100),getdate(),108)
set @custbook_name='t_whcbk_yyyymm'
declare cur cursor for select d.plucode,d.serialno,g.plutype,d.counts,d.zpcount,d.pftotal,d.zrtotal,d.ornpftotal,d.ystotal,
d.pludsctotal,d.dsccode,d.authno,d.sharetotal,isnull(g.iszfcode,'0')
from t_whsale_body d,t_plu g where billno=@psbillno and d.plucode=g.plucode order by d.plucode,d.serialno
open cur
fetch next from cur into @detail_plucode,@detail_serialno,@detail_plutype,@detail_counts,@detail_zpcounts,@detail_pftotal,@detail_zrtotal
,@detail_ornpftotal,@detail_ystotal,@detail_pludsctotal,@detail_dsccode,@detail_authno,@detail_sharetotal,@goods_iszfcode
while @@fetch_status=0
begin
if (@detail_plutype<>'3') and (@goods_iszfcode<>'2')
begin
insert into t_whsale_body2(billno,serialno,plucode,packcode,barcode,pluname,cargono,spec,
prodarea,punit,pcount,unit,price,jprice,netjprice,ornpfprice,zkrate,pfprice,counts,zpcount,
pftotal,zrtotal,cost,netcost,total,jtaxrate,tag,depname,depcode,remark,itemcnt,sglcount,
ornpftotal,ystotal,pludsctotal,dsccode,authno,sharetotal)
select billno,serialno,plucode,'' packcode,barcode,pluname,cargono,spec,
prodarea,punit,pcount,unit,price,jprice,netjprice,ornpfprice,zkrate,pfprice,counts,zpcount,
pftotal,zrtotal,cost,netcost,total,jtaxrate,tag,depname,depcode,remark,itemcnt,sglcount,
ornpftotal,ystotal,pludsctotal,dsccode,authno,sharetotal
from t_whsale_body d
where billno=@psbillno and plucode=@detail_plucode and serialno=@detail_serialno
end
else if (@detail_plutype<>'3') and (@goods_iszfcode='2')
begin
insert into t_whsale_body2(billno,serialno,plucode,packcode,barcode,pluname,cargono,spec,
prodarea,punit,pcount,unit,price,jprice,netjprice,ornpfprice,zkrate,pfprice,counts,zpcount,
pftotal,zrtotal,cost,netcost,total,jtaxrate,tag,depname,depcode,remark,itemcnt,sglcount,
ornpftotal,ystotal,pludsctotal,dsccode,authno,sharetotal)
select billno,serialno,p.innercode,'' packcode,barcode,pluname,cargono,spec,
prodarea,punit,pcount,unit,price,jprice,netjprice,ornpfprice,zkrate,pfprice,d.counts,zpcount,
pftotal,zrtotal,cost,netcost,total,jtaxrate,tag,depname,depcode,remark,itemcnt,sglcount,
ornpftotal,ystotal,pludsctotal,dsccode,authno,sharetotal
from t_whsale_body d,(select plucode,innercode from t_plu where iszfcode='2') p
where billno=@psbillno and d.plucode=@detail_plucode and serialno=@detail_serialno and p.plucode=d.plucode
end
else if @detail_plutype='3'
begin
set @i=1
set @sumpftotal=0
set @sumzrtotal=0
set @sumornpftotal=0
set @sumystotal=0
set @sumpludsctotal=0
set @sumsharetotal=0
select @packplucount=count(*),@packplutotalsum=sum(pluprice*counts) from t_plupack where packcode=@detail_plucode and packtype='0'
declare curpackplu cursor static for select g.plucode,g.pluname,g.barcode,g.depcode,d.depname,g.cargono,g.spec,g.prodarea,g.unit,g.jtaxrate,o.price,
case when isnull(iszfcode,'0')='2' then g.jprice else o.jprice end as jprice,
case when isnull(iszfcode,'0')='2' then g.netjprice else o.netjprice end as netjprice,
p.counts,(p.counts * p.pluprice),isnull(iszfcode,'0')
from t_plupack p,t_plu_org o,t_plu g left join t_dept d on g.depcode=d.depcode
where o.orgcode=@sorgcode and p.packcode=@detail_plucode and p.plucode=g.plucode and p.plucode=o.plucode and p.packtype='0'
open curpackplu
--set @packplucount=@@cursor_rows --包内商品总数,注意这里使用静态游标以获得游标记录数
fetch next from curpackplu into @packplu_plucode,@packplu_pluname,@packplu_barcode,@packplu_depcode,@packplu_depname,
@packplu_cargono,@packplu_spec,@packplu_prodarea,@packplu_unit,@packplu_jtaxrate,
@packplu_price,@packplu_jprice,@packplu_netjprice,@packplu_counts,@packplu_plutotal,@packplu_iszfcode
while @@fetch_status=0
begin
if @i<@packplucount
begin
set @packplu_pftotal=round(@detail_pftotal*@packplu_plutotal/@packplutotalsum,2)
set @packplu_zrtotal=round(@detail_zrtotal*@packplu_plutotal/@packplutotalsum,2)
set @packplu_ornpftotal=round(@detail_ornpftotal*@packplu_plutotal/@packplutotalsum,2)
set @packplu_ystotal=round(@detail_ystotal*@packplu_plutotal/@packplutotalsum,2)
set @packplu_pludsctotal=round(@detail_pludsctotal*@packplu_plutotal/@packplutotalsum,2)
set @packplu_sharetotal=round(@detail_sharetotal*@packplu_plutotal/@packplutotalsum,2)
set @sumpftotal=@sumpftotal+@packplu_pftotal
set @sumzrtotal=@sumzrtotal+@packplu_zrtotal
set @sumornpftotal=@sumornpftotal+@packplu_ornpftotal
set @sumystotal=@sumystotal+@packplu_ystotal
set @sumpludsctotal=@sumpludsctotal+@packplu_pludsctotal
set @sumsharetotal=@sumsharetotal+@packplu_sharetotal
end
else
begin
set @packplu_pftotal=round(@detail_pftotal-@sumpftotal,2)
set @packplu_zrtotal=round(@detail_zrtotal-@sumzrtotal,2)
set @packplu_ornpftotal=round(@detail_ornpftotal-@sumornpftotal,2)
set @packplu_ystotal=round(@detail_ystotal-@sumystotal,2)
set @packplu_pludsctotal=round(@detail_pludsctotal-@sumpludsctotal,2)
set @packplu_sharetotal=round(@detail_sharetotal-@sumsharetotal,2)
end
set @packplu_pfcounts=@packplu_counts*@detail_counts
set @packplu_zpcounts=@packplu_counts*@detail_zpcounts
if @packplu_pfcounts<>0
begin
set @packplu_pfprice=round(@packplu_pftotal/@packplu_pfcounts,4)
set @packplu_ornpfprice=round(@packplu_ornpftotal/@packplu_pfcounts,4)
end
else
begin
set @packplu_pfprice=0
set @packplu_ornpfprice=0
end
if @packplu_iszfcode='2'
begin
select @packplu_zmcode=innercode from t_plu where plucode=@packplu_plucode
if exists (select plucode from t_whsale_body2 where billno=@psbillno and serialno=@detail_serialno and plucode=@packplu_zmcode)
begin
update t_whsale_body2 set counts=counts+@packplu_pfcounts,zpcount=zpcount+@packplu_zpcounts,pftotal=pftotal+@packplu_pftotal,
zrtotal=zrtotal+@packplu_zrtotal,cost=cost+round(@packplu_jprice*@packplu_pfcounts,2),netcost=netcost+round(round(@packplu_jprice*@packplu_pfcounts,2)/(1+@packplu_jtaxrate/100.0),2),
total=total+round(@packplu_price*@packplu_pfcounts,2),sglcount=sglcount+@packplu_pfcounts,ornpftotal=ornpftotal+@packplu_ornpftotal,
ystotal=ystotal+@packplu_ystotal,pludsctotal=pludsctotal+@packplu_pludsctotal,sharetotal=sharetotal+@packplu_sharetotal
where billno=@psbillno and serialno=@detail_serialno and plucode=@packplu_zmcode
set @i=@i+1
end
else
begin
insert into t_whsale_body2(billno,serialno,plucode,packcode,barcode,pluname,cargono,spec,
prodarea,punit,pcount,unit,price,jprice,netjprice,zkrate,pfprice,counts,zpcount,
pftotal,zrtotal,cost,netcost,total,jtaxrate,tag,depname,depcode,remark,itemcnt,sglcount,
ornpftotal,ornpfprice,ystotal,pludsctotal,dsccode,authno,sharetotal)
values(@psbillno,@detail_serialno,@packplu_zmcode,@detail_plucode,@packplu_barcode,@packplu_pluname,@packplu_cargono,@packplu_spec,
@packplu_prodarea,'',0,@packplu_unit,@packplu_price,@packplu_jprice,@packplu_netjprice,0,@packplu_pfprice,
@packplu_pfcounts,@packplu_zpcounts,@packplu_pftotal,@packplu_zrtotal,
round(@packplu_jprice*@packplu_pfcounts,2),round(round(@packplu_jprice*@packplu_pfcounts,2)/(1+@packplu_jtaxrate/100.0),2),round(@packplu_price*@packplu_pfcounts,2),
@packplu_jtaxrate,'',@packplu_depname,@packplu_depcode,'',0,@packplu_pfcounts,
@packplu_ornpftotal,@packplu_ornpfprice,@packplu_ystotal,@packplu_pludsctotal,@detail_dsccode,@detail_authno,@packplu_sharetotal)
set @i=@i+1
end
end
else
begin
insert into t_whsale_body2(billno,serialno,plucode,packcode,barcode,pluname,cargono,spec,
prodarea,punit,pcount,unit,price,jprice,netjprice,zkrate,pfprice,counts,zpcount,
pftotal,zrtotal,cost,netcost,total,jtaxrate,tag,depname,depcode,remark,itemcnt,sglcount,
ornpftotal,ornpfprice,ystotal,pludsctotal,dsccode,authno,sharetotal)
values(@psbillno,@detail_serialno,@packplu_plucode,@detail_plucode,@packplu_barcode,@packplu_pluname,@packplu_cargono,@packplu_spec,
@packplu_prodarea,'',0,@packplu_unit,@packplu_price,@packplu_jprice,@packplu_netjprice,0,@packplu_pfprice,
@packplu_pfcounts,@packplu_zpcounts,@packplu_pftotal,@packplu_zrtotal,
round(@packplu_jprice*@packplu_pfcounts,2),round(round(@packplu_jprice*@packplu_pfcounts,2)/(1+@packplu_jtaxrate/100.0),2),round(@packplu_price*@packplu_pfcounts,2),
@packplu_jtaxrate,'',@packplu_depname,@packplu_depcode,'',0,@packplu_pfcounts,
@packplu_ornpftotal,@packplu_ornpfprice,@packplu_ystotal,@packplu_pludsctotal,@detail_dsccode,@detail_authno,@packplu_sharetotal)
set @i=@i+1
end
fetch next from curpackplu into @packplu_plucode,@packplu_pluname,@packplu_barcode,@packplu_depcode,@packplu_depname,
@packplu_cargono,@packplu_spec,@packplu_prodarea,@packplu_unit,@packplu_jtaxrate,
@packplu_price,@packplu_jprice,@packplu_netjprice,@packplu_counts,@packplu_plutotal,@packplu_iszfcode
end
close curpackplu
deallocate curpackplu
update a set cost=b.cost,jprice=round(b.cost/(a.counts+zpcount),4),
netcost=b.netcost,netjprice=round(b.netcost/(a.counts+zpcount),4),
total=b.total,price=round(b.total/(a.counts+zpcount),2)
from t_whsale_body a,(select billno,serialno,packcode,sum(cost) cost,sum(netcost) netcost,sum(total) total
from t_whsale_body2 where billno=@psbillno and isnull(packcode,'')<>'' group by billno,serialno,packcode) b
where a.billno=@psbillno and a.billno=b.billno and a.plucode=b.packcode and a.serialno=b.serialno
end
--else
--begin
-- set @psmsg='单据表体中商品类型不正确'
-- return(-1)
--end
fetch next from cur into @detail_plucode,@detail_serialno,@detail_plutype,@detail_counts,@detail_zpcounts,@detail_pftotal,@detail_zrtotal,
@detail_ornpftotal,@detail_ystotal,@detail_pludsctotal,@detail_dsccode,@detail_authno,@detail_sharetotal,@goods_iszfcode
end
close cur
deallocate cur
declare cur cursor for select d.plucode,d.serialno,d.counts,d.zpcount,d.pfprice,d.pftotal,d.depcode,d.jtaxrate,o.mngstock,isnull(v2.jymode,v1.jymode) as jymode
from t_whsale_body2 d join t_plu_org o on d.plucode = o.plucode and o.orgcode = @sorgcode
join t_plu p on d.plucode = p.plucode
left join t_supplier v1 on p.supcode = v1.supcode
left join dbo.t_supplier v2 on o.supcode = v2.supcode
where billno=@psbillno
order by d.plucode,d.serialno
open cur
fetch next from cur into @detail_plucode,@detail_serialno,@detail_counts,@detail_zpcounts,@detail_pfprice,@detail_pftotal,@detail_depcode,
@detail_jtaxrate,@detail_mngstock,@detail_jymode
while @@fetch_status=0
begin
set @fscount=@detail_counts+@detail_zpcounts
select @goods_netjprice=netjprice,@goods_jprice=jprice,@goods_price=price,
@stock_gcount=gcount,@stock_ccount=ccount,@stock_cost=cost,@stock_netcost=netcost,
@stock_total=total,@stock_tzamount=tzamount
from t_plu_org where plucode=@detail_plucode and orgcode=@sorgcode
if @scurver='0'
begin
if @splace='0'
set @stock_gcount=@stock_gcount-@fscount
else
set @stock_ccount=@stock_ccount-@fscount
end
else
begin
if @org_orgtype='2'
set @stock_ccount=@stock_ccount-@fscount
else if (@org_orgtype<>'2' and @org_isdbdeploy='1')
set @stock_gcount=@stock_gcount-@fscount
end
set @jccount=@stock_gcount+@stock_ccount
/*2024-03-05 插入台账表 结存cost = 原cost-发生cost 结存netcost = 原netcost - 发生netcost*/
-- set @new_cost=round(@goods_jprice*@jccount,2)
-- set @new_netcost=round(@new_cost/(1+@detail_jtaxrate/100.00),2)
-- set @new_total=round(@goods_price*@jccount,2)
--
-- set @detail_cost=@stock_cost-@new_cost
-- set @detail_netcost=round(@detail_cost/(1+@detail_jtaxrate/100.00),2);
-- set @detail_total=@stock_total-@new_total
--
-- set @jccost=(@new_cost+(@stock_tzamount))
-- set @jcnetcost=(@new_netcost+@stock_tzamount/(1+@detail_jtaxrate/100.00))
-- set @jctotal=@new_total
set @detail_cost=round(@goods_jprice*@fscount,2) --发生cost
set @detail_netcost=round(@detail_cost/(1+@detail_jtaxrate/100.00),2);--发生netcost
set @detail_total=round(@goods_price*@fscount,2) --发生total
set @new_cost=@stock_cost-@detail_cost
set @new_netcost=@stock_netcost-@detail_netcost
set @new_total= @stock_total-@detail_total
--如果结存数量=0 则结存cost=0 结存netcost=0 结存total =0
if @jccount =0
BEGIN
set @new_cost=0 --结存cost
set @new_netcost=0 --结存netcost
set @new_total= 0 --结存total
end
set @jccost=(@new_cost+(@stock_tzamount))
set @jcnetcost=@new_netcost+@stock_tzamount/(1+@detail_jtaxrate/100.00)
set @jctotal=@new_total
update t_plu_org set ccount=@stock_ccount,gcount=@stock_gcount,cost=@new_cost,netcost=@new_netcost,total=@new_total
where plucode=@detail_plucode and orgcode=@sorgcode and @detail_mngstock = '1'
update t_whsale_body2 set jprice=@goods_jprice,netjprice=@goods_netjprice,price=@goods_price,
cost=@detail_cost,netcost=@detail_netcost,total=@detail_total
where billno=@psbillno and serialno=@detail_serialno and plucode=@detail_plucode
update a set cost=b.cost,jprice=round(b.cost/(a.counts+zpcount),4),
netcost=b.netcost,netjprice=round(b.netcost/(a.counts+zpcount),4),
total=b.total,price=round(b.total/(a.counts+zpcount),2)
from t_whsale_body a,(select billno,serialno,packcode,sum(cost) cost,sum(netcost) netcost,sum(total) total
from t_whsale_body2 where billno=@psbillno and isnull(packcode,'')<>'' group by billno,serialno,packcode) b
where a.billno=@psbillno and a.billno=b.billno and a.plucode=b.packcode and a.serialno=b.serialno
if @detail_jymode = '2'
begin
select @goods_jprice = 0,@goods_netjprice=0,@detail_cost=0,@detail_netcost=0,@detail_total=0,@jccost=0,@jcnetcost=0,@jctotal=0
if @detail_mngstock = '0'
begin
select @fscount=0,@jccount =0
end
end
-- set @psmsg=CAST(@stock_cost AS CHAR) +'-'+ CAST(@detail_cost AS CHAR) + '=' + CAST(@jccost AS CHAR)+ CAST(@new_cost AS CHAR)
-- return(-1)
exec p_create_gbk_data @scurdate,@scurtime,@detail_plucode,@detail_depcode,@psbillno,'A',
@goods_jprice,@goods_netjprice,@goods_price,@fscount,@detail_cost,@detail_netcost,@detail_total,
@jccount,@jccost,@jcnetcost,@jctotal,@sorgcode,'','',@sinfo out
fetch next from cur into @detail_plucode,@detail_serialno,@detail_counts,@detail_zpcounts,@detail_pfprice,@detail_pftotal,@detail_depcode,@detail_jtaxrate,@detail_mngstock,@detail_jymode
end
close cur
deallocate cur
if @sedition='4'
begin
insert into t_plu_org_cs(plucode,orgcode,colorcode,sizecode,csbarcode,gcount,ccount,remark)
select distinct a.plucode as plucode,@sorgcode as orgcode,a.colorcode as colorcode,a.sizecode as sizecode,g.csbarcode as csbarcode,0 as gcount,0 as ccount,'' as remark
from t_whsale_cs_body a,t_plu_cs g where a.plucode=g.plucode and a.colorcode=g.colorcode and a.sizecode=g.sizecode and a.billno=@psbillno
and not exists (select plucode from t_plu_org_cs o where o.plucode=a.plucode and o.colorcode=a.colorcode and o.sizecode=a.sizecode and o.orgcode=@sorgcode)
update a set a.gcount=case when @splace='0' then a.gcount-b.ccounts-b.zpcounts else a.gcount end,
a.ccount=case when @splace='0' then a.ccount else a.ccount-b.ccounts-b.zpcounts end
from t_plu_org_cs a,(select plucode,colorcode,sizecode,sum(ccounts) as ccounts,sum(zpcounts) as zpcounts from t_whsale_cs_body where billno=@psbillno group by plucode,colorcode,sizecode) b
where a.plucode=b.plucode and a.orgcode=@sorgcode and a.colorcode=b.colorcode and a.sizecode=b.sizecode
end
if (@ispfpriceflag='1')
begin
delete a from t_whsle_cust_info a,t_whsale_body b
where b.billno=@psbillno and a.custcode=@scustcode and a.plucode=b.plucode and b.counts>0
insert into t_whsle_cust_info (pfsaleno,custcode,rzdate,zdrcode,sqauremode,plucode,pfprice,pfcount,zpcount,pftotal)
select distinct b.billno,@scustcode,@scurdate,@szdrcode,@ssqauremode,b.plucode,b.pfprice,b.counts,b.zpcount,b.pftotal
from t_whsale_body b,(select plucode,max(serialno) as serialno from t_whsale_body where billno=@psbillno group by plucode) a
where b.billno=@psbillno and b.counts>0 and b.plucode=a.plucode and b.serialno=a.serialno
end
update g set newxsdate=@scurdate,yjdate=case when yjdate is null or yjdate='' then @scurdate else yjdate end
from t_plu_org g,t_whsale_head f,t_whsale_body2 d
where f.billno=d.billno and f.billno=@psbillno and g.orgcode=f.orgcode and g.plucode=d.plucode and g.isright='1' and d.ystotal<>0
update a set cost=b.cost,netcost=b.netcost,total=b.total
from t_whsale_head a,(select sum(IsNull(cost,0)) cost,sum(IsNull(netcost,0)) netcost,sum(IsNUll(total,0)) total from t_whsale_body2 where billno=@psbillno) b
where billno=@psbillno
update a set a.pftotal=a.pftotal+(b.ystotal) from t_customer a,t_whsale_head b where a.custcode=b.custcode and a.custcode=@scustcode and b.billno=@psbillno
set @ssql='insert into '+@custbook_name+' (bookdate,booktime,bizdate,custcode,billtype,billno,username,ywname,ctotal,ysjytotal,prepayjytotal,orgcode,tag,accdate)'
+' select '''+@scurdate+''','''+@scurtime+''',f.bizdate,f.custcode,''0'',f.billno,f.username,f.zdrname,(f.ystotal) as ctotal,
c.pftotal-c.thtotal-c.fktotal as ysjytotal,prepay as prepayjytotal,'''+@sorgcode+''' as orgcode,''0'' as tag,'''' as accdate
from t_customer c,t_whsale_head f
where c.custcode=f.custcode and c.custcode='''+@scustcode+''' and f.billno='''+@psbillno+''''
exec(@ssql)
select @billystotal=b.ystotal from t_customer a,t_whsale_head b where a.custcode=b.custcode and b.billno=@psbillno
update t_whsale_head set rzdate=@scurdate,rztime=@scurtime where billno=@psbillno
update t_whsale_head set isfinished='1' where billno=@psbillno and ystotal=0
if isnull(@billno,'')<>''
update t_ask_head set state='1' where billno=@billno
if isnull(@pfquoteno,'')<>''
update t_whquote_head set state='1' where billno=@pfquoteno
--exec p_sup_stock_out @psbillno,'XH',@psmsg
set @psmsg=''
return(1)
end
go