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.

160 lines
7.2 KiB

if exists(select * from sysobjects where name='p_rz_prepare_jz' and xtype='p')
drop procedure p_rz_prepare_jz
go
create procedure p_rz_prepare_jz
(
@psorgcode varchar(10),
@psbillno varchar(20),
@psparams varchar(200),
@psmsg varchar(2000) out
)
as
begin
set @psmsg=''
return(1)
end
go
if exists(select * from sysobjects where name='p_rz_jz' and xtype='p')
drop procedure p_rz_jz
go
create procedure p_rz_jz
(
@psorgcode varchar(10),
@psbillno varchar(20),
@psparams varchar(200),
@psmsg varchar(2000) out
)
as
declare @sorgcode varchar(10)
declare @sisdbdeploy varchar(1)
declare @sorgtype varchar(1)
declare @sver varchar(1)
declare @sdate varchar(10)
declare @bookdate varchar(10)
declare @booktime varchar(8)
declare @ssql varchar(8000)
begin
set @psmsg=''
select @sver=itemvalue from t_syscfg where section='SYSTEM' and itemname='VER'
select @sorgcode=orgcode from t_damage_head where billno=@psbillno
select @sisdbdeploy=isdbdeploy,@sorgtype=orgtype from t_shop where orgcode=@sorgcode
select @sdate=convert(varchar(10),getdate(),20)
if @@error <> 0
begin
set @psmsg='商品减值单记账初始化变量失败'
return -1
end
if @sver='0' or @sisdbdeploy='1'
begin
if ((@sver='0') or (@sver='1' and @sisdbdeploy='1'))
begin
if exists(select name from tempdb..sysobjects where name='##tmpjz_d' and xtype='u')
drop table ##tmpjz_d
create table ##tmpjz_d
(billno varchar(20),plucode varchar(20),jprice numeric(19,4),netjprice numeric(19,4),newjprice numeric(19,4),newnetjprice numeric(19,4),
tzcount numeric(19,4),cjcost numeric(19,4),netcjcost numeric(19,4),stock_counts numeric(19,4),stock_cost numeric(19,4),
tzcjcost numeric(19,4),nettzcjcost numeric(19,4),g_jtaxrate numeric(19,4),g_jprice numeric(19,4),g_tzamount numeric(19,4))
insert into ##tmpjz_d(billno,plucode,jprice,netjprice,newjprice,newnetjprice,tzcount,cjcost,netcjcost,
stock_counts,stock_cost,tzcjcost,nettzcjcost,g_jtaxrate,g_jprice,g_tzamount)
select billno,d.plucode,d.jprice,d.netjprice,d.newjprice,d.newnetjprice,d.jzcounts,d.cjcost,d.netcjcost,
o.gcount+o.ccount,o.cost,0 tzcjcost,0 tznetcjcost,g.jtaxrate,o.jprice,o.tzamount
from t_damage_body d join t_plu_org o on d.plucode=o.plucode join t_plu g on d.plucode=g.plucode
where d.billno=@psbillno and o.orgcode=@sorgcode
update d set jprice=o.jprice,
netjprice=o.netjprice,
jzcounts=o.gcount+o.ccount,
cost=o.cost,
netcost=o.netcost,
cjcost=round(d.newjprice*(o.gcount+o.ccount)-o.cost,2),
netcjcost=round(d.newnetjprice*(o.gcount+o.ccount)-o.netcost,2),
newcost=round(d.newjprice*(o.gcount+o.ccount),2),
newnetcost=round(d.newnetjprice*(o.gcount+o.ccount),2)
from t_damage_body d join t_plu_org o on d.plucode=o.plucode and d.billno=@psbillno and o.orgcode=@sorgcode
where o.isright='1'
--update g set jprice=d.newjprice,
-- netjprice=d.newnetjprice
-- from t_plu g join t_damage_body d on g.plucode=d.plucode and d.billno=@psbillno
update o set jprice=d.newjprice,
netjprice=d.newnetjprice,
--ojprice=d.newjprice,
--hjprice=case when hjprice>d.newjprice then hjprice else d.newjprice end,
--ljprice=case when ljprice<d.newjprice then ljprice else d.newjprice end,
cost=round(d.newjprice*(o.gcount+o.ccount),2),
netcost=o.netcost+round(tmp.g_tzamount/(1+g_jtaxrate/100.00),2)+d.netcjcost-round(o.tzamount/(1+g_jtaxrate/100.00),2)
from t_damage_body d join t_plu_org o on d.plucode=o.plucode and d.billno=@psbillno and o.orgcode=@sorgcode
join ##tmpjz_d tmp on d.plucode=tmp.plucode
where o.isright='1'
select @bookdate=convert(varchar(10),getdate(),20),@booktime=convert(varchar(8),getdate(),8)
update t_gbk_yyyymm set jprice=round((fscost+d.cjcost)/(fscount+0),4),
netjprice=round((fsnetcost+d.netcjcost)/(fscount+0),4),
price=o.price,
fscost=fscost+d.cjcost,
fsnetcost=fsnetcost+d.netcjcost,
jccount=o.gcount+o.ccount,
jccost=o.cost+o.tzamount,
jcnetcost=o.netcost+round(o.tzamount/(1+d.jtaxrate/100.00),2),
jctotal=o.total,
tag='',
accdate=''
from t_gbk_yyyymm gbk join t_damage_body d on gbk.plucode=d.plucode and d.billno=@psbillno
join t_plu_org o on d.plucode=o.plucode and o.orgcode=@sorgcode
where bookdate=@bookdate and booktime=@booktime and gbk.plucode=d.plucode and gbk.depcode=d.depcode
and d.billno=@psbillno and billtype='9' and gbk.orgcode=@sorgcode
if @@error<>0
begin
set @psmsg='更新商品台账失败'
return -1
end
insert into t_gbk_yyyymm
(bookdate,booktime,plucode,depcode,billno,billtype,jprice,netjprice,price,fscount,
fscost,fsnetcost,fstotal,jccount,jccost,jcnetcost,jctotal,tag,orgcode,accdate)
select @bookdate,@booktime,d.plucode,d.depcode,@psbillno,'9',o.jprice,o.netjprice,o.price,0,d.cjcost,d.netcjcost,0,
o.gcount+o.ccount,o.cost+o.tzamount,o.netcost+round(o.tzamount/(1+d.jtaxrate/100.00),2),o.total,'',@sorgcode,''
from t_damage_body d join t_plu_org o on d.plucode=o.plucode and d.billno=@psbillno and o.orgcode=@sorgcode
where not exists(select plucode from t_gbk_yyyymm where bookdate=@bookdate and booktime=@booktime and plucode=d.plucode
and depcode=d.depcode and billno=@psbillno and billtype='9' and orgcode=@sorgcode)
if @@error<>0
begin
set @psmsg='插入商品台账失败'
return -1
end
update a set cost=b.cost,
netcost=b.netcost,
cjcost=b.cjcost,
netcjcost=b.netcjcost,
newcost=b.newcost,
newnetcost=b.newnetcost,
jzcounts=b.jzcounts
from t_damage_head a,
(select sum(cost) cost,sum(netcost) netcost,sum(cjcost) cjcost,sum(netcjcost) netcjcost,
sum(newcost) newcost,sum(newnetcost) newnetcost,sum(jzcounts) jzcounts
from t_damage_body where billno=@psbillno) b
where (a.billno=@psbillno)
end
end
if exists(select a.plucode from t_damage_body a,t_plu b where a.plucode=b.plucode and isnull(b.iszfcode,'0')='1' and a.billno=@psbillno)
begin
update a set jprice=b.jprice,netjprice=b.netjprice from t_plu_org a,
(select plucode,jprice,netjprice,orgcode from t_plu_org where plucode in (select plucode from t_damage_body where billno=@psbillno)) b,
(select plucode,innercode from t_plu where iszfcode='2') c
where a.plucode=c.plucode and b.plucode=c.innercode and a.orgcode=b.orgcode
end
set @psmsg=''
return(1)
end
go