/* 非油销售报表 */
if exists ( select * from sysobjects where name = ' p_rpt_salerpt ' and xtype = ' p ' )
drop procedure p_rpt_salerpt
go
create procedure p_rpt_salerpt
(
@ pfinacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pclscode varchar ( 1000 ) ,
@ pplucode varchar ( 2000 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sfinacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ sclscode varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sfinacode = replace ( @ pfinacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ sclscode = replace ( @ pclscode , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpgclass ' and xtype = ' u ' )
drop table ##tmpgclass
create table ##tmpgclass (
clscode varchar ( 10 ) , clsname varchar ( 20 ) , uppercode1 varchar ( 10 ) , uppername1 varchar ( 20 ) , uppercode2 varchar ( 10 ) , uppername2 varchar ( 20 ) )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplusale ' and xtype = ' u ' )
drop table ##tmpplusale
create table ##tmpplusale (
accdate varchar ( 10 ) , orgcode varchar ( 10 ) , orgname varchar ( 30 ) , plucode varchar ( 20 ) , pluname varchar ( 40 ) ,
supcode varchar ( 15 ) , supname varchar ( 100 ) , counts numeric ( 19 , 4 ) , cost numeric ( 19 , 4 ) , netcost numeric ( 19 , 4 ) , total numeric ( 19 , 4 ) ,
amount numeric ( 19 , 4 ) , netamount numeric ( 19 , 4 ) , normaldsc numeric ( 19 , 4 ) , vipdsc numeric ( 19 , 4 ) , pricedsc numeric ( 19 , 4 ) ,
grossprofit numeric ( 19 , 4 ) , netprofit numeric ( 19 , 4 ) , adjustprofit numeric ( 19 , 4 ) , netadjustprofit numeric ( 19 , 4 ) ,
jtaxrate int , staxrate int , prctr varchar ( 10 ) , finacode varchar ( 10 ) , kccount numeric ( 19 , 4 ) , price numeric ( 19 , 4 ) ,
clscode varchar ( 10 ) , clsname varchar ( 20 ) , uppercode1 varchar ( 10 ) , uppername1 varchar ( 20 ) , uppercode2 varchar ( 10 ) , uppername2 varchar ( 20 ) )
insert into ##tmpgclass (clscode,clsname,uppercode1,uppercode2)
select clscode , clsname , uppercode1 , uppercode2 from t_gclass where clslevel = 3
update a set uppername1 = b . clsname
from ##tmpgclass a,t_gclass b where a.uppercode1=b.clscode
update a set uppername2 = b . clsname
from ##tmpgclass a,t_gclass b where a.uppercode2=b.clscode
set @ stmpdate = @ sbgndate
while substring ( @ stmpdate , 1 , 7 ) < = substring ( @ senddate , 1 , 7 )
begin
if exists ( select name from sysobjects where name = ' t_plusale_ ' + substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' insert into ##tmpplusale(accdate,orgcode,orgname,plucode,pluname,supcode,supname,counts,cost,netcost,total,amount,netamount,normaldsc,vipdsc,pricedsc,grossprofit,netprofit,
adjustprofit , netadjustprofit , jtaxrate , staxrate , finacode , kccount , price , clscode , clsname , uppercode1 , uppername1 , uppercode2 , uppername2 , prctr )
select a . accdate , a . orgcode , b . orgname , a . plucode , d . pluname , a . supcode , c . supname , a . counts , a . cost , a . netcost , a . total , a . amount , a . netamount , a . normaldsc , a . vipdsc , a . pricedsc , a . grossprofit , a . netprofit ,
a . adjustprofit , a . netadjustprofit , a . jtaxrate , a . staxrate , b . finacode , e . gcount + e . ccount , e . price , d . clscode , f . clsname , f . uppercode1 , f . uppername1 , f . uppercode2 , f . uppername2 ,
' ' P ' ' + b . finacode + ' ' 1 ' ' + case when b . orgtype = ' ' 2 ' ' then b . param1 else b . orgcode end
from t_plusale_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' a
left join t_shop b on a . orgcode = b . orgcode
left join t_supplier c on a . supcode = c . supcode
left join t_plu d on a . plucode = d . plucode
left join t_plu_org e on a . plucode = e . plucode and a . orgcode = e . orgcode
left join ##tmpgclass f on d.clscode=f.clscode
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sfinacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.orgcode and finacode in ( '' ' + @ sfinacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ sclscode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_gclass where clscode=d.clscode and uppercode1 in ( '' ' + @ sclscode + ' '' )) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and a.plucode in ( '' ' + @ splucode + ' '' ) '
exec ( @ ssql )
end
set @ stmpdate = convert ( varchar ( 10 ) , dateadd ( month , 1 , @ stmpdate ) , 120 )
end
set @ ssql = ' select finacode,orgcode,orgname,accdate,plucode,pluname,
sum ( counts ) counts , sum ( total ) total , sum ( amount ) as amount ,
sum ( normaldsc + vipdsc + pricedsc ) as dsc , sum ( netamount ) as netamount , staxrate ,
sum ( amount - netamount ) as taxamount , sum ( normaldsc + vipdsc + pricedsc ) / ( 1 + jtaxrate / 100 . 0 ) as netdsc ,
sum ( normaldsc + vipdsc + pricedsc ) - sum ( normaldsc + vipdsc + pricedsc ) / ( 1 + jtaxrate / 100 . 0 ) as taxdsc ,
sum ( cost + adjustprofit ) as cost , sum ( netcost + netadjustprofit ) as netcost , sum ( grossprofit - adjustprofit ) as grossprofit ,
case when sum ( amount ) = 0 then 0 else sum ( grossprofit - adjustprofit ) / sum ( amount ) * 100 end as profitrate ,
' ' FP ' ' as fptype , uppercode2 , uppername2 , uppercode1 , uppername1 , clscode , clsname , supcode , supname , prctr , kccount , price
from ##tmpplusale where 0=0
group by finacode , orgcode , orgname , accdate , plucode , pluname , jtaxrate , staxrate , uppercode2 , uppername2 ,
uppercode1 , uppername1 , clscode , clsname , supcode , supname , prctr , kccount , price
order by finacode , orgcode , accdate , plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpgclass ' and xtype = ' u ' )
drop table ##tmpgclass
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplusale ' and xtype = ' u ' )
drop table ##tmpplusale
end
go
/* 非油支付报表 */
if exists ( select * from sysobjects where name = ' p_rpt_tendrpt ' and xtype = ' p ' )
drop procedure p_rpt_tendrpt
go
create procedure p_rpt_tendrpt
(
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pclscode varchar ( 1000 ) ,
@ pqryall varchar ( 1 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sorgcode varchar ( 1000 )
declare @ sclscode varchar ( 1000 )
declare @ sadd varchar ( 4000 )
declare @ tendcode varchar ( 4 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ sclscode = replace ( @ pclscode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmppaydeilysum ' and xtype = ' u ' )
drop table ##tmppaydeilysum
create table ##tmppaydeilysum (
orgcode varchar ( 10 ) , accdate varchar ( 10 ) , clscode varchar ( 10 ) , tendcode varchar ( 4 ) , amount numeric ( 19 , 4 ) )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmppaydeily ' and xtype = ' u ' )
drop table ##tmppaydeily
create table ##tmppaydeily (
finacode varchar ( 10 ) , finaname varchar ( 40 ) , orgcode varchar ( 10 ) , orgname varchar ( 30 ) , accdate varchar ( 10 ) , clscode varchar ( 10 ) , clsname varchar ( 20 ) ,
amount numeric ( 19 , 4 ) )
set @ stmpdate = @ sbgndate
while substring ( @ stmpdate , 1 , 7 ) < = substring ( @ senddate , 1 , 7 )
begin
if exists ( select name from sysobjects where name = ' t_int_flow_pay_deily_ ' + substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' update a set amount=b.amount
from ##tmppaydeilysum a,(select business_date,werks,clscode,mop_id,sum(amount) as amount
from t_int_flow_pay_deily_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where business_date between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( werks , 2 ) < > ' ' 2 D ' '
group by business_date , werks , clscode , mop_id ) b where a . accdate = b . business_date and a . orgcode = b . werks and a . clscode = b . clscode and a . tendcode = b . mop_id '
exec ( @ ssql )
set @ ssql = ' insert into ##tmppaydeilysum(orgcode,accdate,clscode,tendcode,amount)
select werks , business_date , clscode , mop_id , sum ( amount )
from t_int_flow_pay_deily_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where business_date between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( werks , 2 ) < > ' ' 2 D ' '
and not exists ( select * from ##tmppaydeilysum where accdate=t.business_date and orgcode=t.werks and clscode=t.clscode and tendcode=t.mop_id)
and exists ( select * from t_user_org where orgcode = t . werks and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and werks in ( '' ' + @ sorgcode + ' '' ) '
if @ sclscode < > ' '
set @ ssql = @ ssql + ' and clscode in ( '' ' + @ sclscode + ' '' ) '
if isnull ( @ pqryall , ' ' ) = ' 0 '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=t.werks and overdate>=t.business_date) '
set @ ssql = @ ssql + ' group by werks,business_date,clscode,mop_id '
exec ( @ ssql )
set @ ssql = ' update a set amount=b.amount
from ##tmppaydeily a,(select business_date,werks,clscode,sum(amount) as amount
from t_int_flow_pay_deily_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where business_date between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( werks , 2 ) < > ' ' 2 D ' '
group by business_date , werks , clscode ) b where a . accdate = b . business_date and a . orgcode = b . werks and a . clscode = b . clscode '
exec ( @ ssql )
set @ ssql = ' insert into ##tmppaydeily(finacode,finaname,orgcode,orgname,accdate,clscode,clsname,amount)
select b . finacode , c . finaname , a . werks , b . orgname , a . business_date , a . clscode , d . clsname , sum ( a . amount )
from t_int_flow_pay_deily_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' a
left join t_shop b on a . werks = b . orgcode
left join t_financial_body c on b . finacode = c . finacode
left join t_gclass d on a . clscode = d . clscode
where a . business_date between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and a . clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( werks , 2 ) < > ' ' 2 D ' '
and not exists ( select * from ##tmppaydeily where orgcode=a.werks and accdate=a.business_date and clscode=a.clscode)
and exists ( select * from t_user_org where orgcode = a . werks and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and b.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ sclscode < > ' '
set @ ssql = @ ssql + ' and a.clscode in ( '' ' + @ sclscode + ' '' ) '
if isnull ( @ pqryall , ' ' ) = ' 0 '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.werks and overdate>=a.business_date) '
set @ ssql = @ ssql + ' group by b.finacode,c.finaname,a.werks,b.orgname,a.business_date,a.clscode,d.clsname '
exec ( @ ssql )
end
set @ stmpdate = convert ( varchar ( 10 ) , dateadd ( month , 1 , @ stmpdate ) , 120 )
end
set @ sadd = ' '
set @ ssql = ' '
declare cur cursor for select tendcode from t_tend order by tendcode
open cur
fetch next from cur into @ tendcode
while @ @ fetch_status = 0
begin
set @ sadd = @ sadd + ' alter table ##tmppaydeily add tend ' + @ tendcode + ' numeric(19,4) ' + char ( 10 )
set @ ssql = @ ssql + ' update a set tend ' + @ tendcode + ' =b.amount from ##tmppaydeily a,##tmppaydeilysum b where a.orgcode=b.orgcode and a.accdate=b.accdate and a.clscode=b.clscode and b.tendcode= ' + @ tendcode + char ( 10 )
fetch next from cur into @ tendcode
end
close cur
deallocate cur
exec ( @ sadd )
exec ( @ ssql )
select * from ##tmppaydeily order by finacode,orgcode,accdate,clscode
if exists ( select name from tempdb . . sysobjects where name = ' ##tmppaydeilysum ' and xtype = ' u ' )
drop table ##tmppaydeilysum
if exists ( select name from tempdb . . sysobjects where name = ' ##tmppaydeily ' and xtype = ' u ' )
drop table ##tmppaydeily
end
go
/* 油站销售日报 */
if exists ( select * from sysobjects where name = ' p_rpt_dayrpt ' and xtype = ' p ' )
drop procedure p_rpt_dayrpt
go
create procedure p_rpt_dayrpt
(
@ pfinacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pisdiff varchar ( 1 ) ,
@ pqryall varchar ( 1 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sfinacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sfinacode = replace ( @ pfinacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpdayrpt ' and xtype = ' u ' )
drop table ##tmpdayrpt
create table ##tmpdayrpt (
accdate varchar ( 10 ) , orgcode varchar ( 10 ) , orgname varchar ( 30 ) , finacode varchar ( 10 ) , finaname varchar ( 40 ) ,
amount numeric ( 19 , 4 ) , tendamount numeric ( 19 , 4 ) )
set @ stmpdate = @ sbgndate
while substring ( @ stmpdate , 1 , 7 ) < = substring ( @ senddate , 1 , 7 )
begin
if exists ( select name from sysobjects where name = ' t_flow_total_ ' + substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' update a set amount=amount+b.plutotal
from ##tmpdayrpt a,(select accdate,orgcode,sum(plutotal) as plutotal
from t_flow_item_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ '
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( orgcode , 2 ) < > ' ' 2 D ' '
group by accdate , orgcode ) b where a . accdate = b . accdate and a . orgcode = b . orgcode '
exec ( @ ssql )
set @ ssql = ' insert into ##tmpdayrpt(accdate,orgcode,amount)
select accdate , orgcode , sum ( plutotal )
from t_flow_item_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' a
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( orgcode , 2 ) < > ' ' 2 D ' '
and not exists ( select * from ##tmpdayrpt where accdate=a.accdate and orgcode=a.orgcode)
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if isnull ( @ pqryall , ' ' ) = ' 0 '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.orgcode and overdate>=a.accdate) '
set @ ssql = @ ssql + ' group by accdate,orgcode '
exec ( @ ssql )
end
if exists ( select name from sysobjects where name = ' t_int_flow_pay_deily_ ' + substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' update a set tendamount=b.amount
from ##tmpdayrpt a,(select business_date,werks,sum(amount) as amount
from t_int_flow_pay_deily_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where business_date between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( werks , 2 ) < > ' ' 2 D ' '
group by business_date , werks ) b where a . accdate = b . business_date and a . orgcode = b . werks '
exec ( @ ssql )
set @ ssql = ' insert into ##tmpdayrpt(accdate,orgcode,amount,tendamount)
select business_date , werks , 0 , sum ( amount )
from t_int_flow_pay_deily_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where business_date between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( werks , 2 ) < > ' ' 2 D ' '
and not exists ( select * from ##tmpdayrpt where accdate=t.business_date and orgcode=t.werks)
and exists ( select * from t_user_org where orgcode = t . werks and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and werks in ( '' ' + @ sorgcode + ' '' ) '
if isnull ( @ pqryall , ' ' ) = ' 0 '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=t.werks and overdate>=t.business_date) '
set @ ssql = @ ssql + ' group by business_date,werks '
exec ( @ ssql )
end
set @ stmpdate = convert ( varchar ( 10 ) , dateadd ( month , 1 , @ stmpdate ) , 120 )
end
if @ pqryall = ' 1 '
begin
set @ ssql = ' update a set amount=amount+b.plutotal
from ##tmpdayrpt a,(select accdate,orgcode,sum(plutotal) as plutotal
from t_flow_item
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( orgcode , 2 ) < > ' ' 2 D ' '
group by accdate , orgcode ) b where a . accdate = b . accdate and a . orgcode = b . orgcode '
exec ( @ ssql )
set @ ssql = ' insert into ##tmpdayrpt(accdate,orgcode,amount)
select accdate , orgcode , sum ( plutotal )
from t_flow_item a
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and clscode not in ( ' ' 1001 ' ' , ' ' 1002 ' ' ) and left ( orgcode , 2 ) < > ' ' 2 D ' '
and not exists ( select * from ##tmpdayrpt where accdate=a.accdate and orgcode=a.orgcode)
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
set @ ssql = @ ssql + ' group by accdate,orgcode '
exec ( @ ssql )
end
update a set finacode = b . finacode , orgname = b . orgname
from ##tmpdayrpt a,t_shop b where a.orgcode=b.orgcode
update a set finaname = b . finaname
from ##tmpdayrpt a,t_financial_body b where a.finacode=b.finacode
update ##tmpdayrpt set tendamount=isnull(tendamount,0)
set @ ssql = ' select accdate,orgcode,orgname,amount,tendamount,amount-tendamount as diffamount,finacode,finaname
from ##tmpdayrpt where 0=0'
if @ sfinacode < > ' '
set @ ssql = @ ssql + ' and finacode in ( '' ' + @ sfinacode + ' '' ) '
if isnull ( @ pisdiff , ' ' ) = ' 1 '
set @ ssql = @ ssql + ' and amount-tendamount<>0 '
set @ ssql = @ ssql + ' order by accdate,orgcode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpdayrpt ' and xtype = ' u ' )
drop table ##tmpdayrpt
end
go
/* 全网络所有SKU移动明细 */
if exists ( select * from sysobjects where name = ' p_rpt_plubook ' and xtype = ' p ' )
drop procedure p_rpt_plubook
go
create procedure p_rpt_plubook
(
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pplucode varchar ( 2000 ) ,
@ pbilltype varchar ( 2 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sorgcode varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplubook ' and xtype = ' u ' )
drop table ##tmpplubook
create table ##tmpplubook (
accdate varchar ( 10 ) , orgcode varchar ( 10 ) , plucode varchar ( 20 ) , billno varchar ( 20 ) , billtype varchar ( 1 ) , unitcode varchar ( 10 ) ,
ywbilltype varchar ( 1 ) , inbilltype varchar ( 2 ) , r_billtype varchar ( 20 ) , tblname varchar ( 6 ) , serialno int , fscount numeric ( 19 , 4 ) , fsnetcost numeric ( 19 , 4 ) )
set @ stmpdate = @ sbgndate
while substring ( @ stmpdate , 1 , 7 ) < = substring ( @ senddate , 1 , 7 )
begin
if exists ( select name from sysobjects where name = ' t_gbk_ ' + substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' insert into ##tmpplubook(accdate,plucode,orgcode,billno,billtype,ywbilltype,tblname,serialno,fscount,fsnetcost)
select distinct accdate , plucode , orgcode , billno , billtype , ' '' ' , ' '' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ '' ' , serialno ,
case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fscount else fscount end ,
case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) and serialno < > 21151 then - fsnetcost else fsnetcost end
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' a
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and ( billtype = ' ' E ' ' and fscount < > 0 or billtype < > ' ' E ' ' )
and billtype not in ( ' ' 4 ' ' , ' ' 8 ' ' , ' ' Z ' ' )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode = ' C009 '
set @ ssql = @ ssql + ' and orgcode in (select orgcode from t_shop where finacode<> '' 2000 '' ) '
else if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and plucode in ( '' ' + @ splucode + ' '' ) '
exec ( @ ssql )
end
set @ stmpdate = convert ( varchar ( 10 ) , dateadd ( month , 1 , @ stmpdate ) , 120 )
end
set @ ssql = ' insert into ##tmpplubook(accdate,plucode,orgcode,billno,billtype,ywbilltype,tblname,serialno,fscount,fsnetcost)
select distinct accdate , plucode , orgcode , billno , billtype , ' '' ' , ' ' yyyymm ' ' , serialno ,
case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fscount else fscount end ,
case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fsnetcost else fsnetcost end
from t_gbk_yyyymm a
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and ( billtype = ' ' E ' ' and fscount < > 0 or billtype < > ' ' E ' ' )
and billtype not in ( ' ' 4 ' ' , ' ' 8 ' ' , ' ' Z ' ' )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode = ' C009 '
set @ ssql = @ ssql + ' and orgcode in (select orgcode from t_shop where finacode<> '' 2000 '' ) '
else if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and plucode in ( '' ' + @ splucode + ' '' ) '
exec ( @ ssql )
set @ ssql = ' update a set ywbilltype=case when c.finacode<> '' 2000 '' then '' 9 '' else b.billtype end
from ##tmpplubook a,t_accept_head b,t_shop c
where a . billno = b . billno and b . orgcode = c . orgcode and a . billtype = ' ' 0 ' ''
exec ( @ ssql )
set @ ssql = ' update a set ywbilltype=case when c.finacode<> '' 2000 '' then '' 9 '' else b.billtype end
from ##tmpplubook a,t_return_head b,t_shop c
where a . billno = b . billno and b . orgcode = c . orgcode and a . billtype = ' ' 5 ' ''
exec ( @ ssql )
- - 跨 财 务 主 体 的 直 送 验 收 不 产 生 虚 拟 配 送 单 台 账 , 动 态 生 成 台 账 , 体 现 在 内 部 销 售
set @ ssql = ' insert into ##tmpplubook(accdate,plucode,orgcode,billno,billtype,ywbilltype,tblname,serialno,fscount,fsnetcost)
select a . accdate , a . plucode , b . orgcode , b . billno , ' ' E ' ' , a . ywbilltype , a . tblname , a . serialno , a . fscount , a . fsnetcost
from ##tmpplubook a,t_dist_head b
where a . billno = b . remark and a . billtype = ' ' 0 ' ' and a . ywbilltype = ' ' 9 ' ' and a . orgcode = b . shopcode
and not exists ( select * from ##tmpplubook where accdate=a.accdate and plucode=a.plucode and orgcode=b.orgcode and billno=b.billno and billtype=''E'')'
exec ( @ ssql )
- - 跨 财 务 主 体 的 直 送 退 货 不 产 生 虚 拟 配 退 单 台 账 , 动 态 生 成 台 账 , 体 现 在 内 部 销 售
set @ ssql = ' insert into ##tmpplubook(accdate,plucode,orgcode,billno,billtype,ywbilltype,tblname,serialno,fscount,fsnetcost)
select a . accdate , a . plucode , b . orgcode , b . billno , ' ' E ' ' , a . ywbilltype , a . tblname , a . serialno , a . fscount , a . fsnetcost
from ##tmpplubook a,t_dist_head b
where a . billno = b . billno and a . billtype = ' ' 5 ' ' and a . ywbilltype = ' ' 9 ' ' and a . orgcode = b . shopcode
and not exists ( select * from ##tmpplubook where accdate=a.accdate and plucode=a.plucode and orgcode=b.orgcode and billno=b.billno and billtype=''E'')'
exec ( @ ssql )
- - 跨 财 务 主 体 的 配 送 单 , 体 现 在 内 部 销 售
set @ ssql = ' update a set ywbilltype= '' 9 ''
from ##tmpplubook a,t_dist_head b,t_shop c
where a . billno = b . billno and b . shopcode = c . orgcode and a . billtype = ' ' E ' ' and c . finacode < > ' ' 2000 ' ''
exec ( @ ssql )
/* *
* 采 购 验 收 : 中 央 仓 采 购 ( C001 ) 、 油 站 直 采 、 子 公 司 油 站 向 中 央 仓 采 购 / 直 采 、 中 央 仓 向 供 应 商 的 虚 拟 采 购
* 采 购 退 货 : 中 央 仓 采 购 退 货 ( C002 ) 、 油 站 直 采 退 货 、 子 公 司 油 站 向 中 央 仓 退 货 / 直 退 、 中 央 仓 向 供 应 商 的 虚 拟 退 货
* 配 送 入 库 : 中 央 仓 收 到 油 站 退 配 ( C002 ) 、 油 站 收 到 中 央 仓 配 送 ( 集 团 内 销 售 生 成 的 配 送 单 不 在 此 处 )
* 配 送 出 库 : 中 央 仓 向 油 站 配 送 ( C001 / C002 ) 、 油 站 向 中 央 仓 退 配 ( 集 团 内 销 售 生 成 的 配 送 单 不 在 此 处 )
* 调 拨 : 调 入 站 ( 正 数 ) 、 调 出 站 ( 负 数 )
* 销 售 : 油 站 销 售 ( 销 售 - 负 数 / 销 售 退 货 - 正 数 ) 、 销 售 补 录 ( 正 向 数 据 - 负 数 / 反 向 数 据 - 正 数 ) 、 中 央 仓 批 发 销 售 ( 负 数 ) 、 中 央 仓 批 发 销 售 退 货 ( 正 数 )
* 内 部 销 售 : 跨 财 务 主 体 的 配 送 单
* 盘 点 : 临 时 盘 点 、 月 度 盘 点 ( 盘 盈 - 正 数 / 盘 亏 - 负 数 )
* 报 损 : 报 损 ( 负 数 )
* 领 用 : 领 用 ( 负 数 )
* 加 工 用 料 : 原 料 成 本 ( 负 数 )
* 加 工 产 出 : 产 成 品 成 本 ( 正 数 )
* 移 库 : 中 央 仓 入 库 方 ( 正 数 ) 、 中 央 仓 出 库 方 ( 负 数 )
* * /
set @ ssql = ' update ##tmpplubook set
inbilltype = case when billtype = ' ' 0 ' ' and ywbilltype in ( ' ' 0 ' ' , ' ' 1 ' ' , ' ' 2 ' ' ) then ' ' 01 ' '
when billtype = ' ' 0 ' ' and ywbilltype = ' ' 9 ' ' then ' ' 15 ' '
when billtype = ' ' 5 ' ' and ywbilltype in ( ' ' 0 ' ' , ' ' 2 ' ' ) then ' ' 02 ' '
when billtype = ' ' 5 ' ' and ywbilltype = ' ' 9 ' ' then ' ' 16 ' '
when billtype = ' ' E ' ' and fscount > 0 and ywbilltype < > ' ' 9 ' ' or billtype = ' ' 0 ' ' and ywbilltype = ' ' 3 ' ' then ' ' 03 ' '
when billtype = ' ' E ' ' and fscount < 0 and ywbilltype < > ' ' 9 ' ' or billtype = ' ' 5 ' ' and ywbilltype = ' ' 3 ' ' then ' ' 04 ' '
when billtype = ' ' F ' ' then ' ' 05 ' ' when billtype in ( ' ' 6 ' ' , ' ' A ' ' , ' ' B ' ' ) then ' ' 06 ' '
when billtype = ' ' E ' ' and ywbilltype = ' ' 9 ' ' then ' ' 07 ' ' when billtype = ' ' 2 ' ' then ' ' 08 ' '
when billtype = ' ' S ' ' then ' ' 09 ' ' when billtype = ' ' 7 ' ' then ' ' 10 ' '
when billtype = ' ' C ' ' then ' ' 11 ' ' when billtype = ' ' D ' ' then ' ' 12 ' '
when billtype = ' ' G ' ' then ' ' 13 ' ' when billtype = ' ' 4 ' ' then ' ' 14 ' '
else ' ' 99 ' ' end ,
r_billtype = case when billtype = ' ' 0 ' ' and ywbilltype in ( ' ' 0 ' ' , ' ' 1 ' ' , ' ' 2 ' ' ) then ' ' 采 购 验 收 ' '
when billtype = ' ' 0 ' ' and ywbilltype = ' ' 9 ' ' then ' ' 直 送 采 购 验 收 ' '
when billtype = ' ' 5 ' ' and ywbilltype in ( ' ' 0 ' ' , ' ' 2 ' ' ) then ' ' 采 购 退 货 ' '
when billtype = ' ' 5 ' ' and ywbilltype = ' ' 9 ' ' then ' ' 直 送 采 购 退 货 ' '
when billtype = ' ' E ' ' and fscount > 0 and ywbilltype < > ' ' 9 ' ' or billtype = ' ' 0 ' ' and ywbilltype = ' ' 3 ' ' then ' ' 配 送 入 库 ' '
when billtype = ' ' E ' ' and fscount < 0 and ywbilltype < > ' ' 9 ' ' or billtype = ' ' 5 ' ' and ywbilltype = ' ' 3 ' ' then ' ' 配 送 出 库 ' '
when billtype = ' ' F ' ' then ' ' 调 拨 ' ' when billtype in ( ' ' 6 ' ' , ' ' A ' ' , ' ' B ' ' ) then ' ' 销 售 ' '
when billtype = ' ' E ' ' and ywbilltype = ' ' 9 ' ' then ' ' 内 部 销 售 ' ' when billtype = ' ' 2 ' ' then ' ' 盘 点 ' '
when billtype = ' ' S ' ' then ' ' 报 损 ' ' when billtype = ' ' 7 ' ' then ' ' 领 用 ' '
when billtype = ' ' C ' ' then ' ' 加 工 用 料 ' ' when billtype = ' ' D ' ' then ' ' 加 工 产 出 ' '
when billtype = ' ' G ' ' then ' ' 移 库 ' ' when billtype = ' ' 4 ' ' then ' ' 调 现 存 ' '
else ' ' 其 他 ' ' end '
exec ( @ ssql )
set @ ssql = ' update a set unitcode=(select top 1 unitcode from t_unit where unitname=b.unit)
from ##tmpplubook a,t_plu b
where a . plucode = b . plucode '
exec ( @ ssql )
set @ ssql = ' select a.plucode,b.pluname,a.orgcode,c.orgname,e.clscode,a.inbilltype,a.r_billtype,a.billno,a.accdate,a.fscount,a.unitcode,a.fsnetcost
from ##tmpplubook a
left join t_plu b on a . plucode = b . plucode
left join t_shop c on a . orgcode = c . orgcode
left join t_gclass d on b . clscode = d . clscode
left join t_gclass e on d . uppercode1 = e . clscode
where 1 = 1 '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ pbilltype < > ' '
set @ ssql = @ ssql + ' and a.inbilltype= '' ' + @ pbilltype + ' '' '
set @ ssql = @ ssql + ' order by a.tblname,a.serialno,a.plucode,a.orgcode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplubook ' and xtype = ' u ' )
drop table ##tmpplubook
end
go
/* 全网络所有SKU的期末库存 */
if exists ( select * from sysobjects where name = ' p_rpt_plustock ' and xtype = ' p ' )
drop procedure p_rpt_plustock
go
create procedure p_rpt_plustock
(
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pplucode varchar ( 2000 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sorgcode varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplustock ' and xtype = ' u ' )
drop table ##tmpplustock
create table ##tmpplustock (
plucode varchar ( 20 ) , orgcode varchar ( 10 ) , qccount numeric ( 19 , 4 ) , incount numeric ( 19 , 4 ) , outcount numeric ( 19 , 4 ) , jccount numeric ( 19 , 4 ) ,
qcnetcost numeric ( 19 , 4 ) , innetcost numeric ( 19 , 4 ) , outnetcost numeric ( 19 , 4 ) , jcnetcost numeric ( 19 , 4 ) )
set @ ssql = ' insert into ##tmpplustock(plucode,orgcode,qccount,incount,outcount,jccount,qcnetcost,innetcost,outnetcost,jcnetcost)
select plucode , orgcode , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 from t_plu_org t
where mngstock = ' ' 1 ' ' and exists ( select * from t_shop where orgcode = t . orgcode and status = ' ' 1 ' ' )
and exists ( select * from t_user_org where orgcode = t . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and plucode in ( '' ' + @ splucode + ' '' ) '
exec ( @ ssql )
if exists ( select name from sysobjects where name = ' t_gbk_ ' + substring ( @ sbgndate , 1 , 4 ) + substring ( @ sbgndate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' update a set qccount=b.jccount,qcnetcost=b.jcnetcost
from ##tmpplustock a,t_gbk_'+substring(@sbgndate,1,4)+substring(@sbgndate,6,2)+' b
where a . plucode = b . plucode and a . orgcode = b . orgcode and b . billtype = ' ' Z ' '
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
exec ( @ ssql )
end
if exists ( select name from sysobjects where name = ' t_gbk_ ' + substring ( @ senddate , 1 , 4 ) + substring ( @ senddate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' update a set jccount=b.jccount,jcnetcost=b.jcnetcost
from ##tmpplustock a,t_gbk_'+substring(@senddate,1,4)+substring(@senddate,6,2)+' b
where a . plucode = b . plucode and a . orgcode = b . orgcode and b . billtype = ' ' Z ' '
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
exec ( @ ssql )
end
set @ stmpdate = @ sbgndate
while substring ( @ stmpdate , 1 , 7 ) < = substring ( @ senddate , 1 , 7 )
begin
if exists ( select name from sysobjects where name = ' t_gbk_ ' + substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 ) and xtype = ' u ' )
begin
if substring ( @ stmpdate , 1 , 7 ) = substring ( @ sbgndate , 1 , 7 )
begin
set @ ssql = ' update a set qccount=a.qccount+b.fscount,qcnetcost=a.qcnetcost+b.fsnetcost
from ##tmpplustock a,(select plucode,orgcode,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fscount else fscount end ) as fscount ,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fsnetcost else fsnetcost end ) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate < ' '' +@sbgndate+ '' ' and billtype not in ( ' ' 4 ' ' , ' ' 8 ' ' , ' ' Z ' ' )
and exists ( select * from t_user_org where orgcode = t . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and plucode in ( '' ' + @ splucode + ' '' ) '
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
end
if substring ( @ stmpdate , 1 , 7 ) = substring ( @ senddate , 1 , 7 )
begin
set @ ssql = ' update a set jccount=a.jccount+b.fscount,jcnetcost=a.jcnetcost+b.fsnetcost
from ##tmpplustock a,(select plucode,orgcode,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fscount else fscount end ) as fscount ,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fsnetcost else fsnetcost end ) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate < = ' '' +@senddate+ '' ' and billtype not in ( ' ' 4 ' ' , ' ' 8 ' ' , ' ' Z ' ' )
and exists ( select * from t_user_org where orgcode = t . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and plucode in ( '' ' + @ splucode + ' '' ) '
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
end
set @ ssql = ' update a set incount=a.incount+b.incount,outcount=a.outcount+b.outcount,
innetcost = a . innetcost + b . innetcost , outnetcost = a . outnetcost + b . outnetcost
from ##tmpplustock a,(select plucode,orgcode,
sum ( case when billtype in ( ' ' 0 ' ' , ' ' B ' ' , ' ' D ' ' ) then fscount when billtype = ' ' 2 ' ' and fscount > 0 then fscount when billtype in ( ' ' E ' ' , ' ' F ' ' , ' ' G ' ' ) and fscount < 0 then - fscount else 0 end ) as incount ,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' S ' ' ) then - fscount when billtype = ' ' 2 ' ' and fscount < 0 then fscount when billtype = ' ' C ' ' then fscount when billtype in ( ' ' E ' ' , ' ' F ' ' , ' ' G ' ' ) and fscount > 0 then - fscount else 0 end ) as outcount ,
sum ( case when billtype in ( ' ' 0 ' ' , ' ' B ' ' , ' ' D ' ' ) then fsnetcost when billtype = ' ' 2 ' ' and fsnetcost > 0 then fsnetcost when billtype in ( ' ' E ' ' , ' ' F ' ' , ' ' G ' ' ) and fsnetcost < 0 then - fsnetcost else 0 end ) as innetcost ,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' S ' ' ) then - fsnetcost when billtype = ' ' 2 ' ' and fsnetcost < 0 then fsnetcost when billtype = ' ' C ' ' then fsnetcost when billtype in ( ' ' E ' ' , ' ' F ' ' , ' ' G ' ' ) and fsnetcost > 0 then - fsnetcost else 0 end ) as outnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype not in ( ' ' 4 ' ' , ' ' 8 ' ' , ' ' Z ' ' )
and exists ( select * from t_user_org where orgcode = t . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and plucode in ( '' ' + @ splucode + ' '' ) '
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
end
set @ stmpdate = convert ( varchar ( 10 ) , dateadd ( month , 1 , @ stmpdate ) , 120 )
end
set @ ssql = ' select distinct a.orgcode,a.plucode, '' ' + @ pbgndate + ' '' as bgndate, '' ' + @ penddate + ' '' as enddate,
a . qccount , a . incount , a . outcount , a . jccount ,
( select top 1 unitcode from t_unit where unitname = b . unit order by unitcode ) as unitcode ,
a . qcnetcost , a . innetcost , a . outnetcost , a . jcnetcost , ' ' CNY ' ' as currunit
from ##tmpplustock a
left join t_plu b on a . plucode = b . plucode
where 0 = 0 order by orgcode , plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplustock ' and xtype = ' u ' )
drop table ##tmpplustock
end
go
/* 商品进销存报表 */
if exists ( select * from sysobjects where name = ' p_rpt_plujxc ' and xtype = ' p ' )
drop procedure p_rpt_plujxc
go
create procedure p_rpt_plujxc
(
@ pfinacode varchar ( 1000 ) ,
@ pregncode varchar ( 1000 ) ,
@ pareacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pclscode varchar ( 1000 ) ,
@ pplucode varchar ( 2000 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sfinacode varchar ( 1000 )
declare @ sregncode varchar ( 1000 )
declare @ sareacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ sclscode varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sfilt varchar ( 8000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
-- if isnull(@porgcode,'')=''
-- begin
-- raiserror('必须选择油站',16,1)
-- return(1)
-- end
set @ sfinacode = replace ( @ pfinacode , ' , ' , ' '' , '' ' )
set @ sregncode = replace ( @ sregncode , ' , ' , ' '' , '' ' )
set @ sareacode = replace ( @ sareacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ sclscode = replace ( @ pclscode , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
set @ sfilt = ' and exists(select * from t_user_org where orgcode=t.orgcode and usercode= '' ' + @ ps_SysUserCode + ' '' ) '
if @ sfinacode < > ' '
set @ sfilt = @ sfilt + ' and exists(select * from t_shop where orgcode=t.orgcode and finacode in ( '' ' + @ sfinacode + ' '' )) '
if @ sregncode < > ' '
set @ sfilt = @ sfilt + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=t.orgcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ sfilt = @ sfilt + ' and exists(select * from t_shop where orgcode=t.orgcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ sfilt = @ sfilt + ' and orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ sclscode < > ' '
set @ sfilt = @ sfilt + ' and exists(select * from t_plu m,t_gclass n where m.clscode=n.clscode and m.plucode=t.plucode and n.uppercode1 in ( '' ' + @ sclscode + ' '' )) '
if @ splucode < > ' '
set @ sfilt = @ sfilt + ' and plucode in ( '' ' + @ splucode + ' '' ) '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplujxc ' and xtype = ' u ' )
drop table ##tmpplujxc
create table ##tmpplujxc (
plucode varchar ( 20 ) , orgcode varchar ( 10 ) , qccount numeric ( 19 , 4 ) , qcnetcost numeric ( 19 , 4 ) ,
jhcount numeric ( 19 , 4 ) , jhnetcost numeric ( 19 , 4 ) , thcount numeric ( 19 , 4 ) , thnetcost numeric ( 19 , 4 ) ,
xscount numeric ( 19 , 4 ) , xsnetcost numeric ( 19 , 4 ) , drcount numeric ( 19 , 4 ) , drnetcost numeric ( 19 , 4 ) ,
dccount numeric ( 19 , 4 ) , dcnetcost numeric ( 19 , 4 ) , pjhcount numeric ( 19 , 4 ) , pjhnetcost numeric ( 19 , 4 ) ,
pscount numeric ( 19 , 4 ) , psnetcost numeric ( 19 , 4 ) , tccount numeric ( 19 , 4 ) , tcnetcost numeric ( 19 , 4 ) ,
pthcount numeric ( 19 , 4 ) , pthnetcost numeric ( 19 , 4 ) , pycount numeric ( 19 , 4 ) , pynetcost numeric ( 19 , 4 ) ,
pkcount numeric ( 19 , 4 ) , pknetcost numeric ( 19 , 4 ) , bscount numeric ( 19 , 4 ) , bsnetcost numeric ( 19 , 4 ) ,
lycount numeric ( 19 , 4 ) , lynetcost numeric ( 19 , 4 ) , jgcount numeric ( 19 , 4 ) , jgnetcost numeric ( 19 , 4 ) ,
cjgcount numeric ( 19 , 4 ) , cjgnetcost numeric ( 19 , 4 ) , hccount numeric ( 19 , 4 ) , hcnetcost numeric ( 19 , 4 ) ,
zpscount numeric ( 19 , 4 ) , zpsnetcost numeric ( 19 , 4 ) , zthcount numeric ( 19 , 4 ) , zthnetcost numeric ( 19 , 4 ) ,
jccount numeric ( 19 , 4 ) , jcnetcost numeric ( 19 , 4 ) )
set @ ssql = ' insert into ##tmpplujxc(plucode,orgcode,qccount,qcnetcost,jhcount,jhnetcost,thcount,thnetcost,
xscount , xsnetcost , drcount , drnetcost , dccount , dcnetcost , pjhcount , pjhnetcost , pscount , psnetcost ,
tccount , tcnetcost , pthcount , pthnetcost , pycount , pynetcost , pkcount , pknetcost , bscount , bsnetcost ,
lycount , lynetcost , jgcount , jgnetcost , cjgcount , cjgnetcost , hccount , hcnetcost , zpscount , zpsnetcost ,
zthcount , zthnetcost , jccount , jcnetcost )
select plucode , orgcode , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
from t_plu_org t where mngstock = ' ' 1 ' ' and exists ( select * from t_shop where orgcode = t . orgcode and status = ' ' 1 ' ' ) '
set @ ssql = @ ssql + @ sfilt
exec ( @ ssql )
if exists ( select name from sysobjects where name = ' t_gbk_ ' + substring ( @ sbgndate , 1 , 4 ) + substring ( @ sbgndate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' update a set qccount=b.jccount,qcnetcost=b.jcnetcost
from ##tmpplujxc a,t_gbk_'+substring(@sbgndate,1,4)+substring(@sbgndate,6,2)+' b
where a . plucode = b . plucode and a . orgcode = b . orgcode and b . billtype = ' ' Z ' '
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
exec ( @ ssql )
end
if exists ( select name from sysobjects where name = ' t_gbk_ ' + substring ( @ senddate , 1 , 4 ) + substring ( @ senddate , 6 , 2 ) and xtype = ' u ' )
begin
set @ ssql = ' update a set jccount=b.jccount,jcnetcost=b.jcnetcost
from ##tmpplujxc a,t_gbk_'+substring(@senddate,1,4)+substring(@senddate,6,2)+' b
where a . plucode = b . plucode and a . orgcode = b . orgcode and b . billtype = ' ' Z ' '
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
exec ( @ ssql )
end
set @ stmpdate = @ sbgndate
while substring ( @ stmpdate , 1 , 7 ) < = substring ( @ senddate , 1 , 7 )
begin
if exists ( select name from sysobjects where name = ' t_gbk_ ' + substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 ) and xtype = ' u ' )
begin
if substring ( @ stmpdate , 1 , 7 ) = substring ( @ sbgndate , 1 , 7 )
begin
set @ ssql = ' update a set qccount=a.qccount+b.fscount,qcnetcost=a.qcnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fscount else fscount end ) as fscount ,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fsnetcost else fsnetcost end ) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate < ' '' +@sbgndate+ '' ' and billtype not in ( ' ' 4 ' ' , ' ' 8 ' ' , ' ' Z ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
end
if substring ( @ stmpdate , 1 , 7 ) = substring ( @ senddate , 1 , 7 )
begin
set @ ssql = ' update a set jccount=a.jccount+b.fscount,jcnetcost=a.jcnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fscount else fscount end ) as fscount ,
sum ( case when billtype in ( ' ' 3 ' ' , ' ' 5 ' ' , ' ' 6 ' ' , ' ' 7 ' ' , ' ' A ' ' , ' ' E ' ' , ' ' F ' ' , ' ' G ' ' , ' ' S ' ' ) then - fsnetcost else fsnetcost end ) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate < = ' '' +@senddate+ '' ' and billtype not in ( ' ' 4 ' ' , ' ' 8 ' ' , ' ' Z ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
end
set @ ssql = ' update a set jhcount=a.jhcount+b.fscount,jhnetcost=a.jhnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' 0 ' '
and exists ( select * from t_accept_head where billno = t . billno and billtype in ( ' ' 0 ' ' , ' ' 1 ' ' , ' ' 2 ' ' ) ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set thcount=a.thcount+b.fscount,thnetcost=a.thnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' 5 ' '
and exists ( select * from t_return_head where billno = t . billno and billtype in ( ' ' 0 ' ' , ' ' 2 ' ' ) ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set xscount=a.xscount+b.fscount,xsnetcost=a.xsnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,
sum ( case when billtype = ' ' B ' ' then - fscount else fscount end ) as fscount ,
sum ( case when billtype = ' ' B ' ' then - fsnetcost else fsnetcost end ) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype in ( ' ' 6 ' ' , ' ' A ' ' , ' ' B ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set drcount=a.drcount+b.fscount,drnetcost=a.drnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,-sum(fscount) as fscount,-sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' F ' ' and fscount < 0 '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set drcount=a.drcount+b.fscount,drnetcost=a.drnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' F ' ' and fscount > 0 '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set pjhcount=a.pjhcount+b.fscount,pjhnetcost=a.pjhnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' 0 ' '
and exists ( select * from t_accept_head p , t_shop q where p . orgcode = q . orgcode and billno = t . billno and p . billtype = ' ' 3 ' ' and q . finacode = ' ' 2000 ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set pscount=a.pscount+b.fscount,psnetcost=a.psnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' E ' '
and ( exists ( select * from t_dist_head p , t_shop q where p . shopcode = q . orgcode and billno = t . billno and p . zpcount > 0 and q . finacode = ' ' 2000 ' ' )
or exists ( select * from t_dist_head where billno = t . billno and zpcount = 0 and zpamount > 0 ) ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set tccount=a.tccount+b.fscount,tcnetcost=a.tcnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' 5 ' '
and exists ( select * from t_return_head p , t_shop q where p . orgcode = q . orgcode and billno = t . billno and p . billtype = ' ' 3 ' ' and q . finacode = ' ' 2000 ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set pthcount=a.pthcount+b.fscount,pthnetcost=a.pthnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' E ' '
and ( exists ( select * from t_dist_head p , t_shop q where p . shopcode = q . orgcode and billno = t . billno and p . zpcount < 0 and p . orgcode = ' ' C002 ' ' and q . finacode = ' ' 2000 ' ' )
or exists ( select * from t_dist_head where billno = t . billno and zpcount = 0 and zpamount < 0 ) ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set pycount=a.pycount+b.fscount,pynetcost=a.pynetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' 2 ' ' and fscount > 0 '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set pkcount=a.pkcount+b.fscount,pknetcost=a.pknetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' 2 ' ' and fscount < 0 '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set bscount=a.bscount+b.fscount,bsnetcost=a.bsnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' S ' ''
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set lycount=a.lycount+b.fscount,lynetcost=a.lynetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' 7 ' ''
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set jgcount=a.jgcount+b.fscount,jgnetcost=a.jgnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' C ' ''
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set cjgcount=a.cjgcount+b.fscount,cjgnetcost=a.cjgnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' D ' ''
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set hccount=a.hccount+b.fscount,hcnetcost=a.hcnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' E ' '
and exists ( select * from t_dist_head p , t_shop q where p . shopcode = q . orgcode and billno = t . billno and p . zpcount < 0 and p . orgcode = ' ' C001 ' ' and q . finacode = ' ' 2000 ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set zpscount=a.zpscount+b.fscount,zpsnetcost=a.zpsnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' E ' '
and exists ( select * from t_dist_head p , t_shop q where p . shopcode = q . orgcode and billno = t . billno and p . zpcount > 0 and q . finacode < > ' ' 2000 ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
set @ ssql = ' update a set zthcount=a.zthcount+b.fscount,zthnetcost=a.zthnetcost+b.fsnetcost
from ##tmpplujxc a,(select plucode,orgcode,sum(fscount) as fscount,sum(fsnetcost) as fsnetcost
from t_gbk_ ' +substring(@stmpdate,1,4)+substring(@stmpdate,6,2)+ ' t
where accdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and billtype = ' ' E ' '
and exists ( select * from t_dist_head p , t_shop q where p . shopcode = q . orgcode and billno = t . billno and p . zpcount < 0 and q . finacode < > ' ' 2000 ' ' ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by plucode,orgcode) b where a.plucode=b.plucode and a.orgcode=b.orgcode '
exec ( @ ssql )
end
set @ stmpdate = convert ( varchar ( 10 ) , dateadd ( month , 1 , @ stmpdate ) , 120 )
end
set @ ssql = ' select distinct b.finacode,d.areaname as regnname,c.areaname,a.orgcode,b.orgname,
h . clscode as dclscode , h . clsname as dclsname , g . clscode , g . clsname , a . plucode , e . pluname ,
( select top 1 unitcode from t_unit where unitname = e . unit order by unitcode ) as unitcode ,
a . qccount , a . qcnetcost , a . jhcount , a . jhnetcost , a . thcount , a . thnetcost , a . xscount , a . xsnetcost ,
a . drcount , a . drnetcost , a . dccount , a . dcnetcost , a . pjhcount , a . pjhnetcost , a . pscount , a . psnetcost ,
a . tccount , a . tcnetcost , a . pthcount , a . pthnetcost , a . pycount , a . pynetcost , a . pkcount , a . pknetcost ,
a . bscount , a . bsnetcost , a . lycount , a . lynetcost , a . jgcount , a . jgnetcost , a . cjgcount , a . cjgnetcost ,
a . hccount , a . hcnetcost , a . zpscount , zpsnetcost , zthcount , zthnetcost , a . jccount , a . jcnetcost
from ##tmpplujxc a
left join t_shop b on a . orgcode = b . orgcode
left join t_area c on b . areacode = c . areacode
left join t_area d on c . uppercode1 = d . areacode
left join t_plu e on a . plucode = e . plucode
left join t_gclass f on e . clscode = f . clscode
left join t_gclass g on f . uppercode1 = g . clscode
left join t_gclass h on g . uppercode1 = h . clscode
where 0 = 0 order by b . finacode , a . orgcode , a . plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpplujxc ' and xtype = ' u ' )
drop table ##tmpplujxc
end
go
/* 采购订单查询 */
if exists ( select * from sysobjects where name = ' p_rpt_orderrpt ' and xtype = ' p ' )
drop procedure p_rpt_orderrpt
go
create procedure p_rpt_orderrpt
(
@ pregncode varchar ( 1000 ) ,
@ pareacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ psupcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pbillno varchar ( 1000 ) ,
@ pbilltype varchar ( 2 ) ,
@ pbillstate varchar ( 1 ) ,
@ pplucode varchar ( 2000 ) ,
@ pchkstatus varchar ( 1 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sregncode varchar ( 1000 )
declare @ sareacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ ssupcode varchar ( 1000 )
declare @ sbillno varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sregncode = replace ( @ sregncode , ' , ' , ' '' , '' ' )
set @ sareacode = replace ( @ sareacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ ssupcode = replace ( @ psupcode , ' , ' , ' '' , '' ' )
set @ sbillno = replace ( @ pbillno , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmporderrpt ' and xtype = ' u ' )
drop table ##tmporderrpt
create table ##tmporderrpt (
orgcode varchar ( 10 ) , rzdate varchar ( 10 ) , jhrzdate varchar ( 10 ) , billno varchar ( 20 ) , billtype varchar ( 2 ) ,
state varchar ( 1 ) , supcode varchar ( 15 ) , zdrname varchar ( 10 ) , chkstatus varchar ( 1 ) , plucode varchar ( 20 ) ,
barcode varchar ( 20 ) , pluname varchar ( 40 ) , unit varchar ( 10 ) , pcount numeric ( 19 , 4 ) , jprice numeric ( 19 , 4 ) ,
counts numeric ( 19 , 4 ) , cost numeric ( 19 , 4 ) , netcost numeric ( 19 , 4 ) , jhcounts numeric ( 19 , 4 ) ,
jhcost numeric ( 19 , 4 ) , jhnetcost numeric ( 19 , 4 ) )
set @ ssql = ' insert into ##tmporderrpt(orgcode,rzdate,jhrzdate,billno,billtype,state,supcode,zdrname,chkstatus,plucode,
barcode , pluname , unit , pcount , jprice , counts , cost , netcost , jhcounts , jhcost , jhnetcost )
select a . orgcode , a . rzdate , ' '' ' , a . billno , case when a . iszs = ' ' 1 ' ' then ' ' 03 ' ' when a . supcode = ' ' C2000 ' ' then ' ' 05 ' ' else ' ' 01 ' ' end ,
a . state , a . supcode , a . zdrname , a . chkstatus , b . plucode , b . barcode , b . pluname , b . unit , b . itemcnt , b . jprice , b . counts , b . cost , b . netcost , 0 , 0 , 0
from t_order_head a , t_order_body b
where a . billno = b . billno
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sregncode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.orgcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.orgcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ ssupcode < > ' '
set @ ssql = @ ssql + ' and a.supcode in ( '' ' + @ ssupcode + ' '' ) '
if @ sbillno < > ' '
set @ ssql = @ ssql + ' and a.billno in ( '' ' + @ sbillno + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pbilltype , ' ' ) = ' 01 '
set @ ssql = @ ssql + ' and a.iszs= '' 0 '' and a.supcode<> '' C2000 '' '
else if isnull ( @ pbilltype , ' ' ) = ' 03 '
set @ ssql = @ ssql + ' and a.iszs= '' 1 '' '
else if isnull ( @ pbilltype , ' ' ) = ' 05 '
set @ ssql = @ ssql + ' and a.supcode= '' C2000 '' '
else if isnull ( @ pbilltype , ' ' ) < > ' '
set @ ssql = @ ssql + ' and 0=1 '
if isnull ( @ pbillstate , ' ' ) < > ' '
set @ ssql = @ ssql + ' and a.state= '' ' + @ pbillstate + ' '' '
if isnull ( @ pchkstatus , ' ' ) < > ' 1 '
set @ ssql = @ ssql + ' and a.rzdate between '' ' + @ sbgndate + ' '' and '' ' + @ senddate + ' '' '
else
set @ ssql = @ ssql + ' and isnull(a.rzdate, '' '' )= '' '' and a.chkstatus in ( '' 0 '' , '' 9 '' ) '
exec ( @ ssql )
set @ ssql = ' update t set jhrzdate=s.rzdate,jhcounts=s.counts,jhcost=s.cost,jhnetcost=s.netcost
from ##tmporderrpt t,
( select a . orderno , b . plucode , max ( a . rzdate ) rzdate , sum ( b . counts ) as counts , sum ( b . cost ) as cost , sum ( b . netcost ) as netcost
from t_accept_head a , t_accept_body b
where a . billno = b . billno and a . rzdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ''
if @ sregncode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.orgcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.orgcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ ssupcode < > ' '
set @ ssql = @ ssql + ' and a.supcode in ( '' ' + @ ssupcode + ' '' ) '
if @ sbillno < > ' '
set @ ssql = @ ssql + ' and a.orderno in ( '' ' + @ sbillno + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
set @ ssql = @ ssql + ' group by a.orderno,b.plucode) s
where t . billno = s . orderno and t . plucode = s . plucode '
exec ( @ ssql )
set @ ssql = ' insert into ##tmporderrpt(orgcode,rzdate,jhrzdate,billno,billtype,state,supcode,zdrname,chkstatus,plucode,
barcode , pluname , unit , pcount , jprice , counts , cost , netcost , jhcounts , jhcost , jhnetcost )
select a . orgcode , a . rzdate , a . rzdate , a . billno , case when a . billtype = ' ' 2 ' ' then ' ' 04 ' ' when a . supcode = ' ' C2000 ' ' then ' ' 06 ' ' else ' ' 02 ' ' end ,
' ' 0 ' ' , a . supcode , a . zdrname , a . chkstatus , b . plucode , b . barcode , b . pluname , b . unit , b . itemcnt , b . jprice , b . counts , b . cost , b . netcost , b . counts , b . cost , b . netcost
from t_return_head a , t_return_body b
where a . billno = b . billno and a . billtype in ( ' ' 0 ' ' , ' ' 2 ' ' )
and a . rzdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sregncode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.orgcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.orgcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ ssupcode < > ' '
set @ ssql = @ ssql + ' and a.supcode in ( '' ' + @ ssupcode + ' '' ) '
if @ sbillno < > ' '
set @ ssql = @ ssql + ' and a.billno in ( '' ' + @ sbillno + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pbilltype , ' ' ) = ' 02 '
set @ ssql = @ ssql + ' and a.billtype= '' 0 '' and a.supcode<> '' C2000 '' '
else if isnull ( @ pbilltype , ' ' ) = ' 04 '
set @ ssql = @ ssql + ' and a.billtype= '' 2 '' '
else if isnull ( @ pbilltype , ' ' ) = ' 06 '
set @ ssql = @ ssql + ' and a.supcode= '' C2000 '' '
else if isnull ( @ pbilltype , ' ' ) < > ' '
set @ ssql = @ ssql + ' and 0=1 '
if isnull ( @ pbillstate , ' ' ) < > ' '
set @ ssql = @ ssql + ' and 0=1 '
exec ( @ ssql )
set @ ssql = ' select a.orgcode,b.orgname,a.rzdate,a.jhrzdate,a.billtype,
case a . billtype when ' ' 01 ' ' then ' ' 中 央 仓 采 购 订 单 ' ' when ' ' 02 ' ' then ' ' 中 央 仓 采 购 退 货 单 ' ' when ' ' 03 ' ' then ' ' 便 利 店 直 送 采 购 订 单 ' '
when ' ' 04 ' ' then ' ' 便 利 店 直 送 退 货 订 单 ' ' when ' ' 05 ' ' then ' ' 母 子 公 司 采 购 订 单 ' ' when ' ' 06 ' ' then ' ' 母 子 公 司 采 购 退 货 单 ' '
else ' '' ' end as c_billtype ,
case a . state when ' ' 1 ' ' then ' ' 执 行 中 ' ' when ' ' 2 ' ' then ' ' 执 行 完 成 ' ' when ' ' 3 ' ' then ' ' 手 工 关 闭 ' ' when ' ' 4 ' ' then ' ' 过 期 关 闭 ' ' else ' '' ' end as billstate ,
a . billno , a . supcode , e . supname , a . zdrname , case when a . chkstatus in ( ' ' 1 ' ' , ' ' 2 ' ' ) then ' ' √ ' ' else ' '' ' end as chkflag ,
a . plucode , a . barcode , a . pluname , a . counts , ( select top 1 unitcode from t_unit where unitname = f . unit ) as unitcode , a . unit ,
a . jprice , a . cost , a . netcost , a . cost - a . netcost as taxamt , a . jhcost , a . jhnetcost , a . jhcounts , h . clscode , h . clsname ,
case when a . billtype in ( ' ' 02 ' ' , ' ' 04 ' ' , ' ' 06 ' ' ) then ' ' × ' ' else ' '' ' end as rtnflag , a . pcount , a . unit as punit , b . areacode , c . areaname , d . areacode as regncode , d . areaname as regnname
from ##tmporderrpt a
left join t_shop b on a . orgcode = b . orgcode
left join t_area c on b . areacode = c . areacode
left join t_area d on c . uppercode1 = d . areacode
left join t_supplier e on a . supcode = e . supcode
left join t_plu f on a . plucode = f . plucode
left join t_gclass g on f . clscode = g . clscode
left join t_gclass h on g . uppercode1 = h . clscode
order by a . orgcode , a . rzdate , a . jhrzdate , a . billno , a . plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmporderrpt ' and xtype = ' u ' )
drop table ##tmporderrpt
end
go
/* 中央仓配送报表 */
if exists ( select * from sysobjects where name = ' p_rpt_distrpt ' and xtype = ' p ' )
drop procedure p_rpt_distrpt
go
create procedure p_rpt_distrpt
(
@ pregncode varchar ( 1000 ) ,
@ pareacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pshopcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pjhbgndate varchar ( 10 ) ,
@ pjhenddate varchar ( 10 ) ,
@ pbillno varchar ( 1000 ) ,
@ pplucode varchar ( 2000 ) ,
@ pdifftype varchar ( 1 ) ,
@ pjhstate varchar ( 1 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sregncode varchar ( 1000 )
declare @ sareacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ sshopcode varchar ( 1000 )
declare @ sbillno varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
declare @ sjhbgndate varchar ( 10 )
declare @ sjhenddate varchar ( 10 )
begin
set @ sregncode = replace ( @ sregncode , ' , ' , ' '' , '' ' )
set @ sareacode = replace ( @ sareacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ sshopcode = replace ( @ pshopcode , ' , ' , ' '' , '' ' )
set @ sbillno = replace ( @ pbillno , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
set @ sjhbgndate = @ pjhbgndate
set @ sjhenddate = @ pjhenddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if isnull ( @ sjhbgndate , ' ' ) = ' '
set @ sjhbgndate = ' 2023-08-01 '
if isnull ( @ sjhenddate , ' ' ) = ' '
set @ sjhenddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpdistrpt ' and xtype = ' u ' )
drop table ##tmpdistrpt
create table ##tmpdistrpt (
orgcode varchar ( 10 ) , orgname varchar ( 30 ) , shopcode varchar ( 10 ) , rzdate varchar ( 10 ) , jhrzdate varchar ( 10 ) , billno varchar ( 20 ) ,
jhbillno varchar ( 20 ) , plucode varchar ( 20 ) , barcode varchar ( 20 ) , pluname varchar ( 40 ) , unit varchar ( 10 ) , pcount numeric ( 19 , 4 ) ,
zpcount numeric ( 19 , 4 ) , counts numeric ( 19 , 4 ) , thbillno varchar ( 20 ) , thcount numeric ( 19 , 4 ) , thrzdate varchar ( 10 ) )
set @ ssql = ' insert into ##tmpdistrpt(orgcode,orgname,shopcode,rzdate,jhrzdate,billno,jhbillno,plucode,barcode,pluname,unit,pcount,zpcount,counts,thbillno,thcount,thrzdate)
select a . supcode , a . supname , a . orgcode , a . bizdate , a . rzdate , a . orderno , a . billno , b . plucode , b . barcode , b . pluname , b . unit , b . itemcnt , b . cgcount ,
case when isnull ( a . rzdate , ' '' ' ) = ' '' ' then 0 else b . cgcount end , ' '' ' , 0 , ' '' '
from t_accept_head a , t_accept_body b
where a . billno = b . billno and a . billtype = ' ' 3 ' '
and a . bizdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and ( a . rzdate between ' '' +@sjhbgndate+ '' ' and ' '' +@sjhenddate+ '' ' or isnull ( a . rzdate , ' '' ' ) = ' '' ' )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sregncode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.shopcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.shopcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.supcode in ( '' ' + @ sorgcode + ' '' ) '
if @ sshopcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sshopcode + ' '' ) '
if @ sbillno < > ' '
set @ ssql = @ ssql + ' and a.orderno in ( '' ' + @ sbillno + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pdifftype , ' ' ) = ' 1 '
set @ ssql = @ ssql + ' and b.cgcount<>b.counts '
if isnull ( @ pjhstate , ' ' ) = ' 1 '
set @ ssql = @ ssql + ' and isnull(a.rzdate, '' '' )= '' '' '
else if isnull ( @ pjhstate , ' ' ) = ' 2 '
set @ ssql = @ ssql + ' and isnull(a.rzdate, '' '' )<> '' '' '
exec ( @ ssql )
set @ ssql = ' update t set thbillno=b.genbillno
from ##tmpdistrpt t,t_distdiffer_head a,t_distdiffer_body b
where t . jhbillno = a . ywbillno and a . billno = b . billno and t . plucode = b . plucode and a . differtype = ' ' 0 ' ''
exec ( @ ssql )
set @ ssql = ' update t set thcount=b.counts,thrzdate=a.rzdate
from ##tmpdistrpt t,t_return_head a,t_return_body b
where t . thbillno = a . billno and a . billno = b . billno and t . plucode = b . plucode and a . billtype = ' ' 3 ' ''
exec ( @ ssql )
set @ ssql = ' select a.orgcode,a.orgname,a.billno,a.rzdate,a.plucode,a.pluname,a.barcode,a.unit,a.pcount,
a . zpcount , a . counts , a . jhrzdate , a . zpcount - a . counts as diffcount , a . thbillno , a . thcount , a . thrzdate ,
b . areacode , c . areaname , d . areacode as regncode , d . areaname as regnname , a . shopcode , b . orgname as shopname ,
case when isnull ( a . jhrzdate , ' '' ' ) = ' '' ' then ' ' 未 收 货 ' ' else ' ' 已 收 货 ' ' end as r_jhstate
from ##tmpdistrpt a
left join t_shop b on a . shopcode = b . orgcode
left join t_area c on b . areacode = c . areacode
left join t_area d on c . uppercode1 = d . areacode
order by a . orgcode , a . rzdate , a . billno , a . plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpdistrpt ' and xtype = ' u ' )
drop table ##tmpdistrpt
end
go
/* 中央仓配送退货报表 */
if exists ( select * from sysobjects where name = ' p_rpt_distrtnrpt ' and xtype = ' p ' )
drop procedure p_rpt_distrtnrpt
go
create procedure p_rpt_distrtnrpt
(
@ pregncode varchar ( 1000 ) ,
@ pareacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pshopcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pjhbgndate varchar ( 10 ) ,
@ pjhenddate varchar ( 10 ) ,
@ pbillno varchar ( 1000 ) ,
@ pplucode varchar ( 2000 ) ,
@ pdifftype varchar ( 1 ) ,
@ pjhstate varchar ( 1 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ sregncode varchar ( 1000 )
declare @ sareacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ sshopcode varchar ( 1000 )
declare @ sbillno varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
declare @ sjhbgndate varchar ( 10 )
declare @ sjhenddate varchar ( 10 )
begin
set @ sregncode = replace ( @ sregncode , ' , ' , ' '' , '' ' )
set @ sareacode = replace ( @ sareacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ sshopcode = replace ( @ pshopcode , ' , ' , ' '' , '' ' )
set @ sbillno = replace ( @ pbillno , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
set @ sjhbgndate = @ pjhbgndate
set @ sjhenddate = @ pjhenddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if isnull ( @ sjhbgndate , ' ' ) = ' '
set @ sjhbgndate = ' 2023-08-01 '
if isnull ( @ sjhenddate , ' ' ) = ' '
set @ sjhenddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpdistrtnrpt ' and xtype = ' u ' )
drop table ##tmpdistrtnrpt
create table ##tmpdistrtnrpt (
orgcode varchar ( 10 ) , orgname varchar ( 30 ) , shopcode varchar ( 10 ) , rzdate varchar ( 10 ) , jhrzdate varchar ( 10 ) , billno varchar ( 20 ) ,
jhbillno varchar ( 20 ) , plucode varchar ( 20 ) , barcode varchar ( 20 ) , pluname varchar ( 40 ) , unit varchar ( 10 ) , pcount numeric ( 19 , 4 ) ,
zpcount numeric ( 19 , 4 ) , counts numeric ( 19 , 4 ) , thbillno varchar ( 20 ) , thcount numeric ( 19 , 4 ) , thrzdate varchar ( 10 ) )
set @ ssql = ' insert into ##tmpdistrtnrpt(orgcode,orgname,shopcode,rzdate,jhrzdate,billno,jhbillno,plucode,barcode,pluname,unit,pcount,zpcount,counts,thbillno,thcount,thrzdate)
select a . supcode , a . supname , a . orgcode , a . bizdate , a . rzdate , ' '' ' , a . billno , b . plucode , b . barcode , b . pluname , b . unit , b . itemcnt , b . orncounts ,
case when isnull ( a . rzdate , ' '' ' ) = ' '' ' then 0 else b . counts end , a . billno , 0 , ' '' '
from t_return_head a , t_return_body b
where a . billno = b . billno and a . billtype = ' ' 3 ' '
and a . bizdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and ( a . rzdate between ' '' +@sjhbgndate+ '' ' and ' '' +@sjhenddate+ '' ' or isnull ( a . rzdate , ' '' ' ) = ' '' ' )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sregncode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.shopcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.shopcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.supcode in ( '' ' + @ sorgcode + ' '' ) '
if @ sshopcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sshopcode + ' '' ) '
if @ sbillno < > ' '
set @ ssql = @ ssql + ' and a.orderno in ( '' ' + @ sbillno + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pdifftype , ' ' ) = ' 1 '
set @ ssql = @ ssql + ' and b.orncounts<>b.counts '
if isnull ( @ pjhstate , ' ' ) = ' 1 '
set @ ssql = @ ssql + ' and isnull(a.rzdate, '' '' )= '' '' '
else if isnull ( @ pjhstate , ' ' ) = ' 2 '
set @ ssql = @ ssql + ' and isnull(a.rzdate, '' '' )<> '' '' '
exec ( @ ssql )
set @ ssql = ' update t set billno=a.billno,thcount=b.zpcount,thrzdate=a.rzdate
from ##tmpdistrtnrpt t,t_dist_head a,t_dist_body b
where t . thbillno = a . billno and a . billno = b . billno and t . plucode = b . plucode and a . zpcount < 0 '
exec ( @ ssql )
set @ ssql = ' select a.orgcode,a.orgname,a.billno,a.rzdate,a.plucode,a.pluname,a.barcode,a.unit,a.pcount,
a . zpcount , a . counts , a . jhrzdate , a . zpcount - a . counts as diffcount , a . thbillno , a . thcount , a . thrzdate ,
b . areacode , c . areaname , d . areacode as regncode , d . areaname as regnname , a . shopcode , b . orgname as shopname ,
case when isnull ( a . jhrzdate , ' '' ' ) = ' '' ' then ' ' 未 收 货 ' ' else ' ' 已 收 货 ' ' end as r_jhstate
from ##tmpdistrtnrpt a
left join t_shop b on a . shopcode = b . orgcode
left join t_area c on b . areacode = c . areacode
left join t_area d on c . uppercode1 = d . areacode
order by a . orgcode , a . rzdate , a . billno , a . plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpdistrtnrpt ' and xtype = ' u ' )
drop table ##tmpdistrtnrpt
end
go
/* 母子公司购销明细汇总 */
if exists ( select * from sysobjects where name = ' p_rpt_subsettle ' and xtype = ' p ' )
drop procedure p_rpt_subsettle
go
create procedure p_rpt_subsettle
(
@ pfinacode varchar ( 1000 ) ,
@ pshopcode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pbilltype varchar ( 1 ) ,
@ pplucode varchar ( 2000 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ sfinacode varchar ( 1000 )
declare @ sshopcode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sfinacode = replace ( @ pfinacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ sshopcode = replace ( @ pshopcode , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpsubsettle ' and xtype = ' u ' )
drop table ##tmpsubsettle
create table ##tmpsubsettle (
billno varchar ( 20 ) , orgcode varchar ( 10 ) , shopcode varchar ( 10 ) , billtype varchar ( 1 ) , rzdate varchar ( 10 ) ,
plucode varchar ( 20 ) , pluname varchar ( 40 ) , jprice numeric ( 19 , 4 ) , netjprice numeric ( 19 , 4 ) , zpcount numeric ( 19 , 4 ) ,
cost numeric ( 19 , 4 ) , netcost numeric ( 19 , 4 ) , jhrzdate varchar ( 10 ) , jhjprice numeric ( 19 , 4 ) , jhnetjprice numeric ( 19 , 4 ) ,
jhcount numeric ( 19 , 4 ) , jhcost numeric ( 19 , 4 ) , jhnetcost numeric ( 19 , 4 ) )
set @ ssql = ' insert into ##tmpsubsettle(billno,orgcode,shopcode,billtype,rzdate,plucode,pluname,jprice,netjprice,
zpcount , cost , netcost , jhrzdate , jhjprice , jhnetjprice , jhcount , jhcost , jhnetcost )
select a . billno , a . orgcode , a . shopcode , case when t . billtype = ' ' 7 ' ' then ' ' 1 ' ' else ' ' 0 ' ' end , a . rzdate ,
b . plucode , b . pluname , b . jprice , b . netjprice , b . zpcount , b . cost , b . netcost , ' '' ' , 0 , 0 , 0 , 0 , 0
from t_pay_bill t , t_dist_head a , t_dist_body b
where t . billno = a . billno and a . billno = b . billno and t . billtype in ( ' ' 6 ' ' , ' ' 7 ' ' )
and a . rzdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and exists ( select * from t_shop where orgcode = a . orgcode and finacode < > t . finacode )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' )
and exists ( select * from t_user_org where orgcode = a . shopcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sfinacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.shopcode and finacode in ( '' ' + @ sfinacode + ' '' )) '
if @ sshopcode < > ' '
set @ ssql = @ ssql + ' and a.shopcode in ( '' ' + @ sshopcode + ' '' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and t.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pbilltype , ' ' ) = ' 0 '
set @ ssql = @ ssql + ' and t.billtype= '' 6 '' '
if isnull ( @ pbilltype , ' ' ) = ' 1 '
set @ ssql = @ ssql + ' and t.billtype= '' 7 '' '
else if isnull ( @ pbilltype , ' ' ) = ' 2 '
set @ ssql = @ ssql + ' and 0=1 '
exec ( @ ssql )
set @ ssql = ' update t set jhrzdate=a.rzdate,jhjprice=b.jprice,jhnetjprice=b.netjprice,jhcount=b.counts,jhcost=b.cost,jhnetcost=b.netcost
from ##tmpsubsettle t,t_accept_head a,t_accept_body b
where t . billno = a . orderno and a . billno = b . billno and t . plucode = b . plucode
and isnull ( a . rzdate , ' '' ' ) < > ' '' ' and t . billtype = ' ' 0 ' ' and a . billtype = ' ' 3 ' ''
exec ( @ ssql )
set @ ssql = ' update t set jhrzdate=a.rzdate,jhjprice=b.jprice,jhnetjprice=b.netjprice,jhcount=b.counts,jhcost=b.cost,jhnetcost=b.netcost
from ##tmpsubsettle t,t_return_head a,t_return_body b
where t . billno = a . billno and a . billno = b . billno and t . plucode = b . plucode
and isnull ( a . rzdate , ' '' ' ) < > ' '' ' and t . billtype = ' ' 1 ' ' and a . billtype = ' ' 3 ' ''
exec ( @ ssql )
set @ ssql = ' insert into ##tmpsubsettle(billno,orgcode,shopcode,billtype,rzdate,plucode,pluname,jprice,netjprice,
zpcount , cost , netcost , jhjprice , jhnetjprice , jhcount , jhcost , jhnetcost )
select a . billno , ' ' C009 ' ' , t . orgcode , ' ' 2 ' ' , a . rzdate , b . plucode , b . pluname ,
b . newjprice - b . jprice , b . newnetjprice - b . netjprice , b . tzcount , b . cjcost , b . netcjcost , 0 , 0 , 0 , 0 , 0
from t_pay_bill t , t_adjbuyprice_head a , t_adjbuyprice_body b
where t . billno = a . billno and a . billno = b . billno and t . billtype in ( ' ' 8 ' ' )
and a . rzdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' '
and exists ( select * from t_shop where orgcode = ' ' C009 ' ' and finacode < > t . finacode )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sfinacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.shopcode and finacode in ( '' ' + @ sfinacode + ' '' )) '
if @ sshopcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sshopcode + ' '' ) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and t.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pbilltype , ' ' ) = ' 0 '
set @ ssql = @ ssql + ' and 0=1 '
if isnull ( @ pbilltype , ' ' ) = ' 1 '
set @ ssql = @ ssql + ' and 0=1 '
else if isnull ( @ pbilltype , ' ' ) = ' 2 '
set @ ssql = @ ssql + ' and t.billtype= '' 8 '' '
exec ( @ ssql )
set @ ssql = ' select b.finacode,c.finaname,a.shopcode,b.orgname as shopname,
case a . billtype when ' ' 1 ' ' then ' ' 配 送 退 货 单 ' ' when ' ' 2 ' ' then ' ' 配 送 进 价 调 整 单 ' ' else ' ' 配 送 单 ' ' end as c_billtype , a . billno ,
a . plucode , a . pluname , f . clscode , f . clsname , d . staxrate , a . rzdate , a . zpcount , a . jprice , a . netjprice , a . cost , a . netcost , a . cost - a . netcost as taxamt ,
a . jhrzdate , a . jhcount , a . jhjprice , a . jhnetjprice , a . jhcost , a . jhnetcost , a . jhcost - a . jhnetcost as jhtaxamt , a . orgcode , g . orgname
from ##tmpsubsettle a
left join t_shop b on a . shopcode = b . orgcode
left join t_financial_body c on b . finacode = c . finacode
left join t_plu d on a . plucode = d . plucode
left join t_gclass e on d . clscode = e . clscode
left join t_gclass f on e . uppercode1 = f . clscode
left join t_shop g on a . orgcode = g . orgcode
order by b . finacode , a . shopcode , a . billtype , a . plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpsubsettle ' and xtype = ' u ' )
drop table ##tmpsubsettle
end
go
/* 总部盘点结果报表 */
if exists ( select * from sysobjects where name = ' p_rpt_cykrpt ' and xtype = ' p ' )
drop procedure p_rpt_cykrpt
go
create procedure p_rpt_cykrpt
(
@ pregncode varchar ( 1000 ) ,
@ pareacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pykreason varchar ( 2 ) ,
@ pplucode varchar ( 2000 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ sregncode varchar ( 1000 )
declare @ sareacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sregncode = replace ( @ sregncode , ' , ' , ' '' , '' ' )
set @ sareacode = replace ( @ sareacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
set @ ssql = ' select e.areaname as regnname,d.areaname,a.orgcode,c.orgname,a.billno,a.rzdate,
b . plucode , f . pluname , h . clscode , h . clsname , b . jtaxrate , b . bookcount , b . realcount , b . ykcount ,
b . netjprice , b . yknetcost , b . price , b . yktotal , b . remark + ' ' - ' ' + i . name as ykreason , b . describe
from t_differ_head a join t_differ_body b on a . billno = b . billno
left join t_shop c on a . orgcode = c . orgcode
left join t_area d on c . areacode = d . areacode
left join t_area e on d . uppercode1 = e . areacode
left join t_plu f on b . plucode = f . plucode
left join t_gclass g on f . clscode = g . clscode
left join t_gclass h on g . uppercode1 = h . clscode
left join ( select q . item_value , q . name from dict_data p , dict_data_item q where p . id = q . p_id and p . code = ' ' PD0006 ' ' ) i on b . remark = i . item_value
where a . rzdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and a . billtype in ( ' ' 0 ' ' , ' ' 1 ' ' , ' ' 3 ' ' )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sregncode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.orgcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.orgcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pykreason , ' ' ) < > ' '
set @ ssql = @ ssql + ' and b.remark= '' ' + @ pykreason + ' '' '
set @ ssql = @ ssql + ' order by e.areacode,d.areacode,a.orgcode,b.plucode '
exec ( @ ssql )
end
go
/* 油站盘点结果报表 */
if exists ( select * from sysobjects where name = ' p_rpt_sykrpt ' and xtype = ' p ' )
drop procedure p_rpt_sykrpt
go
create procedure p_rpt_sykrpt
(
@ pregncode varchar ( 1000 ) ,
@ pareacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ pbgndate varchar ( 10 ) ,
@ penddate varchar ( 10 ) ,
@ pykreason varchar ( 2 ) ,
@ pplucode varchar ( 2000 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ sregncode varchar ( 1000 )
declare @ sareacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ splucode varchar ( 1000 )
declare @ sbgndate varchar ( 10 )
declare @ senddate varchar ( 10 )
begin
set @ sregncode = replace ( @ sregncode , ' , ' , ' '' , '' ' )
set @ sareacode = replace ( @ sareacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ splucode = replace ( @ pplucode , ' , ' , ' '' , '' ' )
set @ sbgndate = @ pbgndate
set @ senddate = @ penddate
if isnull ( @ sbgndate , ' ' ) = ' '
set @ sbgndate = ' 2023-08-01 '
if isnull ( @ senddate , ' ' ) = ' '
set @ senddate = ' 2099-12-31 '
set @ ssql = ' select e.areaname as regnname,d.areaname,a.orgcode,c.orgname,a.billno,a.rzdate,
b . plucode , f . pluname , h . clscode , h . clsname , b . jtaxrate , b . bookcount , b . realcount , b . ykcount ,
b . price , b . yktotal , b . remark + ' ' - ' ' + i . name as ykreason , b . describe
from t_differ_head a join t_differ_body b on a . billno = b . billno
left join t_shop c on a . orgcode = c . orgcode
left join t_area d on c . areacode = d . areacode
left join t_area e on d . uppercode1 = e . areacode
left join t_plu f on b . plucode = f . plucode
left join t_gclass g on f . clscode = g . clscode
left join t_gclass h on g . uppercode1 = h . clscode
left join ( select q . item_value , q . name from dict_data p , dict_data_item q where p . id = q . p_id and p . code = ' ' PD0006 ' ' ) i on b . remark = i . item_value
where a . rzdate between ' '' +@sbgndate+ '' ' and ' '' +@senddate+ '' ' and a . billtype in ( ' ' 0 ' ' , ' ' 1 ' ' , ' ' 3 ' ' )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sregncode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.orgcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ ssql = @ ssql + ' and exists(select * from t_shop where orgcode=a.orgcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ ssql = @ ssql + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if @ splucode < > ' '
set @ ssql = @ ssql + ' and b.plucode in ( '' ' + @ splucode + ' '' ) '
if isnull ( @ pykreason , ' ' ) < > ' '
set @ ssql = @ ssql + ' and b.remark= '' ' + @ pykreason + ' '' '
set @ ssql = @ ssql + ' order by e.areacode,d.areacode,a.orgcode,b.plucode '
exec ( @ ssql )
end
go
/* 日结前数据检查 */
if exists ( select * from sysobjects where name = ' p_rpt_overqry ' and xtype = ' p ' )
drop procedure p_rpt_overqry
go
create procedure p_rpt_overqry
(
@ pregncode varchar ( 1000 ) ,
@ pareacode varchar ( 1000 ) ,
@ porgcode varchar ( 1000 ) ,
@ ps_SysUserCode varchar ( 20 )
)
as
declare @ ssql varchar ( 8000 )
declare @ sregncode varchar ( 1000 )
declare @ sareacode varchar ( 1000 )
declare @ sorgcode varchar ( 1000 )
declare @ sfilt varchar ( 8000 )
declare @ stmpdate varchar ( 10 )
declare @ thismonth varchar ( 6 )
declare @ lastmonth varchar ( 6 )
begin
set @ sregncode = replace ( @ sregncode , ' , ' , ' '' , '' ' )
set @ sareacode = replace ( @ sareacode , ' , ' , ' '' , '' ' )
set @ sorgcode = replace ( @ porgcode , ' , ' , ' '' , '' ' )
set @ stmpdate = convert ( varchar ( 10 ) , getdate ( ) , 120 )
set @ thismonth = substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 )
set @ stmpdate = convert ( varchar ( 10 ) , dateadd ( month , - 1 , getdate ( ) ) , 120 )
set @ lastmonth = substring ( @ stmpdate , 1 , 4 ) + substring ( @ stmpdate , 6 , 2 )
set @ sfilt = ' and exists(select * from t_shop where orgcode=a.orgcode and status= '' 1 '' )
and exists ( select * from t_user_org where orgcode = a . orgcode and usercode = ' '' +@ps_SysUserCode+ '' ' ) '
if @ sregncode < > ' '
set @ sfilt = @ sfilt + ' and exists(select * from t_shop m,t_area n where m.areacode=n.areacode and m.orgcode=a.orgcode and n.uppercode1 in ( '' ' + @ sregncode + ' '' )) '
if @ sareacode < > ' '
set @ sfilt = @ sfilt + ' and exists(select * from t_shop where orgcode=a.orgcode and areacode in ( '' ' + @ sareacode + ' '' )) '
if @ sorgcode < > ' '
set @ sfilt = @ sfilt + ' and a.orgcode in ( '' ' + @ sorgcode + ' '' ) '
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpoverqry ' and xtype = ' u ' )
drop table ##tmpoverqry
create table ##tmpoverqry (
orgcode varchar ( 10 ) , errtype varchar ( 2 ) , plucode varchar ( 20 ) , xscount numeric ( 19 , 4 ) , kccount numeric ( 19 , 4 ) )
set @ ssql = ' insert into ##tmpoverqry(orgcode,errtype,plucode,xscount,kccount)
select a . orgcode , ' ' 0 ' ' , ' '' ' , 0 , 0
from t_shop a
where orgtype < > ' ' 2 ' ' and overdate < convert ( varchar ( 10 ) , getdate ( ) - 1 , 120 )
and not exists ( select * from t_int_flow_total where orgcode = a . orgcode and accdate > a . overdate ) '
set @ ssql = @ ssql + @ sfilt
exec ( @ ssql )
set @ ssql = ' insert into ##tmpoverqry(orgcode,errtype,plucode,xscount,kccount)
select a . orgcode , ' ' 1 ' ' , ' '' ' , 0 , 0
from t_shop a
where orgtype < > ' ' 2 ' ' and overdate < convert ( varchar ( 10 ) , getdate ( ) - 1 , 120 ) '
if exists ( select name from sysobjects where name = ' t_int_flow_pay_deily_ ' + @ thismonth and xtype = ' u ' ) or exists ( select name from sysobjects where name = ' t_int_flow_pay_deily_ ' + @ lastmonth and xtype = ' u ' )
begin
set @ ssql = @ ssql + ' and not exists(select * from ( '
if exists ( select name from sysobjects where name = ' t_int_flow_pay_deily_ ' + @ thismonth and xtype = ' u ' )
set @ ssql = @ ssql + ' select * from t_int_flow_pay_deily_ ' + @ thismonth + ' where werks=a.orgcode and business_date>a.overdate '
if exists ( select name from sysobjects where name = ' t_int_flow_pay_deily_ ' + @ lastmonth and xtype = ' u ' )
set @ ssql = @ ssql + ' union select * from t_int_flow_pay_deily_ ' + @ lastmonth + ' where werks=a.orgcode and business_date>a.overdate '
set @ ssql = @ ssql + ' ) b) '
end
set @ ssql = @ ssql + @ sfilt
exec ( @ ssql )
set @ ssql = ' insert into ##tmpoverqry(orgcode,errtype,plucode,xscount,kccount)
select a . orgcode , ' ' 2 ' ' , a . plucode , sum ( a . pluqty ) , 0
from t_int_flow_item a
where not exists ( select * from t_plu where plucode = a . plucode )
and ( plucode not like ' ' 298 % ' ' or plucode in ( ' ' 298213 ' ' , ' ' 298214 ' ' , ' ' 298215 ' ' ) ) and plucode not like ' ' 299 % ' ' and plucode not in ( ' ' 300809 ' ' )
and exists ( select * from t_shop where orgcode = a . orgcode and overdate < a . accdate ) '
set @ ssql = @ ssql + @ sfilt
set @ ssql = @ ssql + ' group by a.orgcode,a.plucode,a.pluname '
exec ( @ ssql )
set @ ssql = ' insert into ##tmpoverqry(orgcode,errtype,plucode,xscount,kccount)
select a . orgcode , ' ' 3 ' ' , a . plucode , 0 , 0
from t_int_flow_item a , t_plu b , t_plu_org c
where a . plucode = b . plucode and a . plucode = c . plucode and a . orgcode = c . orgcode
and ( isnull ( c . supcode , ' '' ' ) < > ' '' ' and not exists ( select * from t_supplier where supcode = c . supcode )
or isnull ( b . supcode , ' '' ' ) < > ' '' ' and not exists ( select * from t_supplier where supcode = b . supcode ) )
and exists ( select * from t_shop where orgcode = a . orgcode and overdate < a . accdate ) '
set @ ssql = @ ssql + @ sfilt
exec ( @ ssql )
set @ ssql = ' insert into ##tmpoverqry(orgcode,errtype,plucode,xscount,kccount)
select a . orgcode , ' ' 4 ' ' , a . plucode , isnull ( c . packpluqty , 0 ) + isnull ( d . pluqty , 0 ) , a . gcount + a . ccount
from t_plu_org a
left join t_plu b on a . plucode = b . plucode
left join ( select i . orgcode , p . plucode , sum ( i . pluqty * p . counts ) packpluqty from t_plupack p , t_int_flow_item i
where p . packcode = i . plucode and exists ( select * from t_shop where orgcode = i . orgcode and overdate < i . accdate ) group by p . plucode , i . orgcode ) c
on a . plucode = c . plucode and a . orgcode = c . orgcode
left join ( select orgcode , plucode , sum ( pluqty ) as pluqty from t_int_flow_item j where exists ( select * from t_shop where orgcode = j . orgcode and overdate < j . accdate )
group by plucode , orgcode ) d on a . plucode = d . plucode and a . orgcode = d . orgcode
where b . plutype < > ' ' 3 ' ' and b . plutype < > ' ' 4 ' ' and a . mngstock = ' ' 1 ' '
and a . gcount + a . ccount - isnull ( c . packpluqty , 0 ) - isnull ( d . pluqty , 0 ) < 0
and isnull ( c . packpluqty , 0 ) + isnull ( d . pluqty , 0 ) < > 0
and not exists ( select * from t_mix_product where plucode = a . plucode ) '
set @ ssql = @ ssql + @ sfilt
exec ( @ ssql )
set @ ssql = ' insert into ##tmpoverqry(orgcode,errtype,plucode,xscount,kccount)
select a . orgcode , ' ' 5 ' ' , a . plucode , b . counts * c . mixcnt , a . gcount + a . ccount
from t_plu_org a , t_mix_stuff b , ( select orgcode , mixcode , mixcnt
from ( select i . orgcode , p . mixcode , i . plucode , ceiling ( sum ( i . pluqty ) / p . counts ) as mixcnt ,
row_number ( ) over ( partition by i . orgcode , p . mixcode , i . plucode order by ceiling ( sum ( i . pluqty ) / p . counts ) desc ) as rowid
from t_int_flow_item i , t_mix_product p where i . plucode = p . plucode and exists ( select * from t_shop where orgcode = i . orgcode and overdate < i . accdate )
group by i . orgcode , p . mixcode , i . plucode , p . counts ) t where rowid = 1 ) c
where a . plucode = b . plucode and a . orgcode = c . orgcode and b . mixcode = c . mixcode and b . counts * c . mixcnt > a . gcount + a . ccount '
set @ ssql = @ ssql + @ sfilt
exec ( @ ssql )
set @ ssql = ' select d.areaname as regnname,c.areaname,a.orgcode,b.orgname,b.overdate,
case errtype when ' ' 0 ' ' then ' ' 本 日 不 存 在 销 售 流 水 ' ' when ' ' 1 ' ' then ' ' 本 日 不 存 在 支 付 日 报 ' ' when ' ' 2 ' ' then ' ' 流 水 中 有 商 品 不 存 在 ' '
when ' ' 3 ' ' then ' ' 流 水 中 商 品 供 应 商 不 存 在 ' ' when ' ' 4 ' ' then ' ' 存 在 负 库 存 数 据 ' ' when ' ' 5 ' ' then ' ' BOM 存 在 负 库 存 数 据 ' ' else ' ' 其 他 ' ' end as r_errtype ,
a . plucode , e . pluname , a . xscount , a . kccount , a . xscount - a . kccount as diffcount
from ##tmpoverqry a
left join t_shop b on a . orgcode = b . orgcode
left join t_area c on b . areacode = c . areacode
left join t_area d on c . uppercode1 = d . areacode
left join t_plu e on a . plucode = e . plucode
order by d . areacode , c . areacode , a . orgcode , a . plucode '
exec ( @ ssql )
if exists ( select name from tempdb . . sysobjects where name = ' ##tmpoverqry ' and xtype = ' u ' )
drop table ##tmpoverqry
end
go