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

763 lines
33 KiB

This file contains ambiguous Unicode characters!

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

if exists(select * from sysobjects where name = 'f_monthoflastday' and xtype = 'fn')
drop function f_monthoflastday
go
create function f_monthoflastday(@sdate varchar(10)) returns int
as
begin
declare @iRtn int
select @iRtn = DATEPART(DD,DATEADD(mm,DATEDIFF(mm,0,@sdate) + 1,-1))
return @iRtn
end
go
if exists(select * from sysobjects where name = 'f_continuedays' and xtype = 'fn')
drop function f_continuedays
go
create function f_continuedays(@sourcestr varchar(8000),@idays int) returns int
as
begin
declare @str varchar(8000)
declare @iRtn int
if @idays = 1
begin
return (0)
end
set @str = substring(@sourcestr,1,@idays - 1)
set @str = reverse(@str)
set @iRtn =charindex('0',@str)
if @iRtn = 0
begin
set @iRtn = len(@str)
end
else
begin
set @iRtn = @iRtn - 1
end
return @iRtn
end
go
if exists(select * from sysobjects where name = 'f_continueenddays' and xtype = 'fn')
drop function f_continueenddays
go
create function f_continueenddays(@sourcestr varchar(8000),@idays int) returns int
as
begin
declare @str varchar(8000)
declare @iRtn int
if @idays >= 31
begin
return (0)
end
set @str = substring(@sourcestr,@idays + 1,31-@idays)
set @iRtn =charindex('0',@str)
if @iRtn = 0
begin
set @iRtn = len(@str)
end
else
begin
set @iRtn = @iRtn - 1
end
return @iRtn
end
go
/*
declare @psmsg varchar(2000)
exec p_create_askdata '','','', @psmsg out
print (@psmsg)
*/
--自动生成要货数据
if exists(select * from sysobjects where name='p_create_askdata' and xtype='p')
drop procedure p_create_askdata
go
create procedure p_create_askdata
(
@psorgcode varchar(10),
@psasktype varchar(1),
@psparams varchar(200),
@psmsg varchar(2000) out
)
as
declare @sorgcode varchar(10)
declare @sisdbdeploy varchar(1)
declare @sorgtype varchar(1)
declare @sver varchar(1)
declare @sdate varchar(10)
declare @stime varchar(8)
declare @ssql varchar(8000)
declare @saskbgndate varchar(10)
declare @saskenddate varchar(10)
begin
set @psmsg=''
select @sver=itemvalue from t_syscfg where section='SYSTEM' and itemname='VER'
if @sver <> '1'
begin
set @psmsg = '单店版不生成要货数据'
return (1)
end
select @sisdbdeploy=isdbdeploy,@sorgtype=orgtype from t_shop where orgcode=@sorgcode
if exists(select * from sysobjects where name = 'tmpaskdata_param' and xtype = 'U')
drop table tmpaskdata_param
create table tmpaskdata_param(
plucode varchar(20) not null default('*'),
orgcode varchar(10) not null default('*'),
asktype varchar(1) not null ,
askdate varchar(31) not null default(''),
promdesc varchar(100) null,
askbgndate varchar(10)null,
askenddate varchar(10) null,
dhdays int not null default (0),
safedays int not null default (0),
askcycle int not null default (0),
predays int not null default (0),
cgmode varchar not null default ('1'),
judgecnt numeric(19,4) not null default (0),
continuedays int not null default (0),
continueenddays int not null default (0),
gcount numeric(19,4) not null default (0),
ccount numeric(19,4) not null default (0),
onwaycount numeric(19,4) not null default (0),
dms numeric(19,4) not null default (0),
dscdms numeric(19,4) not null default (0),
caldms numeric(19,4) not null default (0),
askcounts numeric(19,4) not null default (0)
constraint pk_tmpaskdata_param primary key nonclustered
(
plucode,orgcode
)
)
--print(convert(varchar(100),getdate(),120) + ' begin fill data')
declare @iDay integer
set @iDay = datepart(dd,getdate())
insert into tmpaskdata_param(orgcode,plucode,asktype,askdate,dhdays,safedays,askcycle,predays,cgmode,judgecnt,continuedays,continueenddays,gcount,ccount,dms,dscdms,caldms)
select o.orgcode,o.plucode,a.asktype,a.askdate,a.dhdays,a.safedays,a.askcycle,a.predays,o.cgmode,o.judgecnt,
dbo.f_continuedays(askdate,@iDay),dbo.f_continueenddays(askdate,@iDay),o.gcount,o.ccount,o.dms,o.dscdms,o.dms
from t_plu_org o ,t_pluask_param a , t_shop s
where a.asktype = '2' and o.plucode = a.plucode and o.orgcode = s.orgcode
and substring(a.askdate,@iDay,1) = '1'
and o.isright = '1' and o.isask = '1' and o.mngstock = '1'
and s.orgtype <> '2'
and s.status = '1'
and not exists(select 1 from tmpaskdata_param where plucode = o.plucode and orgcode = o.orgcode)
and not exists(select plucode from t_ask_head,t_ask_body
where t_ask_head.billno=t_ask_body.billno
and t_ask_body.plucode=o.plucode and t_ask_head.orgcode = o.orgcode
and t_ask_head.lrdate = convert(varchar(10),getdate(),120)
and t_ask_head.asktype = '2')
and o.orgcode = case @psorgcode when '' then o.orgcode else @psorgcode end
insert into tmpaskdata_param(orgcode,plucode,asktype,askdate,dhdays,safedays,askcycle,predays,cgmode,judgecnt,continuedays,continueenddays,gcount,ccount,dms,dscdms,caldms)
select o.orgcode,o.plucode,a.asktype,a.askdate,a.dhdays,a.safedays,a.askcycle,a.predays,o.cgmode,o.judgecnt,
dbo.f_continuedays(askdate,@iDay),dbo.f_continueenddays(askdate,@iDay),o.gcount,o.ccount,o.dms,o.dscdms,o.dms
from t_plu_org o ,t_pluask_param a , t_shop s ,t_plu p ,t_gclass c
where a.asktype = '1' and o.plucode = p.plucode and o.orgcode = s.orgcode
and o.cgmode = '2' and p.clscode = c.clscode and c.uppercode1 = a.plucode
and substring(a.askdate,@iDay,1) = '1'
and o.isright = '1' and o.isask = '1' and o.mngstock = '1'
and s.orgtype <> '2'
and s.status = '1'
and not exists(select 1 from tmpaskdata_param where plucode = o.plucode)
and not exists(select plucode from t_ask_head,t_ask_body
where t_ask_head.billno=t_ask_body.billno
and t_ask_body.plucode=o.plucode and t_ask_head.orgcode = o.orgcode
and t_ask_head.lrdate = convert(varchar(10),getdate(),120)
and t_ask_head.asktype = '1')
and o.orgcode = case @psorgcode when '' then o.orgcode else @psorgcode end
insert into tmpaskdata_param(orgcode,plucode,asktype,askdate,dhdays,safedays,askcycle,predays,cgmode,judgecnt,continuedays,continueenddays,gcount,ccount,dms,dscdms,caldms)
select o.orgcode,o.plucode,a.asktype,a.askdate,a.dhdays,a.safedays,a.askcycle,a.predays,'1',o.judgecnt,
dbo.f_continuedays(askdate,@iDay),dbo.f_continueenddays(askdate,@iDay),o.gcount,o.ccount,o.dms,o.dscdms,o.dms
from t_plu_org o ,t_pluask_param a ,t_shop s
where a.asktype = '0' and o.orgcode = s.orgcode and(o.cgmode = '0' or o.cgmode = '1')
and substring(a.askdate,@iDay,1) = '1'
and o.isright = '1' and o.isask = '1' and o.mngstock = '1'
and s.orgtype <> '2'
and s.status = '1'
and not exists(select 1 from tmpaskdata_param where plucode = o.plucode)
and not exists(select plucode from t_ask_head,t_ask_body
where t_ask_head.billno=t_ask_body.billno
and t_ask_body.plucode=o.plucode and t_ask_head.orgcode = o.orgcode
and t_ask_head.lrdate = convert(varchar(10),getdate(),120)
and t_ask_head.asktype = '0')
and o.orgcode = case @psorgcode when '' then o.orgcode else @psorgcode end
--print(convert(varchar(100),getdate(),120) + ' end fill data');
delete a
from tmpaskdata_param a,t_plu b
where (a.plucode = b.plucode and b.plustatus = '2')
delete a
from tmpaskdata_param a
where exists(select billno from t_ask_head
where t_ask_head.orgcode = a.orgcode
and t_ask_head.lrdate between convert(varchar(10),dateadd(dd,-1*continuedays,getdate()),120) and convert(varchar(10),getdate(),120)
and t_ask_head.asktype = a.asktype)
--print(convert(varchar(100),getdate(),120) + ' end delete data');
if exists(select * from sysobjects where name = 'tmpaskdata_onway' and xtype = 'U')
drop table tmpaskdata_onway
create table tmpaskdata_onway(
plucode varchar(20) not null default(''),
orgcode varchar(10) not null default(''),
onwaycount numeric(19,4) not null default (0)
constraint pk_tmpaskdata_onway primary key nonclustered
(
plucode,orgcode
)
)
insert into tmpaskdata_onway(orgcode,plucode,onwaycount)
select a.orgcode,a.plucode,counts
from
(select orgcode,plucode,sum(counts) as counts
from (
select orgcode,plucode,sum(b.counts) as counts from t_accept_head a join t_accept_body b on a.billno = b.BillNo
where (a.billtype = '3') and isnull(a.rzdate,'')=''
group by orgcode,plucode
union all
select orgcode,plucode,sum(b.counts) as counts from t_order_head a join t_order_body b on a.billno = b.BillNo
where iszs = '1' and isnull(a.rzdate,'')<>''
and not exists(select 1 from t_accept_head where billtype = '2' and orderno = a.billno and isnull(rzdate,'') <> '')
group by orgcode,plucode
union all
select orgcode,plucode,sum(b.counts) as counts from t_outtrans_head a join t_outtrans_body b on a.billno = b.BillNo
where (a.isout = '0') and isnull(a.rzdate,'')=''
group by orgcode,plucode
)src1
group by orgcode,plucode
)a,tmpaskdata_param b where a.plucode = b.plucode and a.orgcode = b.orgcode
update a
set a.caldms = a.dscdms,
a.promdesc = b.promdesc
from tmpaskdata_param a, dbo.t_bcbiz_head h, dbo.t_bcbiz_body b
where a.plucode = b.plucode and (a.orgcode = b.orgcode or b.orgcode = '*') and h.billno = b.billno and h.qrstatus <>'0'
and dateadd(dd,a.predays,getdate()) between b.prombgndate and b.promenddate
update a
set a.onwaycount = isnull(b.onwaycount,0),
a.askcounts = ceiling(a.caldms * (askcycle + dhDays + SafeDays) - gcount - ccount - IsNull(b.onwaycount,0))
from tmpaskdata_param a left join tmpaskdata_onway b on a.plucode = b.plucode and a.orgcode = b.orgcode
delete a
from tmpaskdata_param a ,t_plu p,t_gclass c
where a.askcounts <= 0 and a.plucode = p.plucode and p.clscode = c.clscode
and c.uppercode1 = '2032'
update tmpaskdata_param
set askcounts = 0
where askcounts < 0
update a
set a.askcounts = ceiling(a.askcounts/b.askcnt)*b.askcnt
from tmpaskdata_param a ,t_plu b
where a.plucode = b.plucode and b.askcnt <> 0 and (a.askcounts % b.askcnt) <> 0
-- update a
-- set a.cgmode = case when askcounts < a.judgecnt then '1' else '2' end
-- from tmpaskdata_param a
-- where a.asktype = '2' and a.cgmode = '0' and isnull(a.judgecnt,0) <> 0
-- --判定数量为0的都设置为配送
-- update a
-- set a.cgmode = '1'
-- from tmpaskdata_param a
-- where a.asktype = '2' and a.cgmode = '0' and isnull(a.judgecnt,0) = 0
--print(convert(varchar(100),getdate(),120) + ' end logic data')
declare @saskno varchar(20)
declare @sasktype varchar(1)
declare cur cursor for select distinct orgcode,asktype from tmpaskdata_param order by orgcode
open cur
fetch next from cur into @sorgcode,@sasktype
while @@fetch_status=0
begin
select @sdate=convert(varchar(10),getdate(),20),@stime = substring(convert(varchar(20),getdate(),20),12,8)
set @saskno = ''
while 1=1
begin
exec f_get_billno 'yh',@sorgcode,'1',@saskno output
if exists(select 1 from t_ask_head where billno=@saskno)
continue
else
break
end
insert into t_ask_body(billno,serialno,asktype,plucode,pluname,barcode,cargono,spec,unit,punit,itemcnt,pcount,sglcount,counts,jycounts,price,
jprice,netjprice,cost,netcost,jtaxrate,ypcount,depcode,depname,remark,cgmode,promdesc,sscount,ztcount,total)
select @saskno,1,a.asktype,a.plucode,g.pluname,g.barcode,g.cargono,g.spec,g.unit,'' as punit,0 as itemcnt,0 as pcount,a.askcounts,a.askcounts,a.askcounts,o.price,
case when g.plutype='2' then 0 else o.jprice end as jprice,
round(case when g.plutype='2' then 0 else o.jprice/(1+isnull(g.jtaxrate,0)/100.00) end,4) as netjprice,
round(a.askcounts*(case when g.plutype='2' then 0 else o.jprice end),2) as cost,
round(a.askcounts*(case when g.plutype='2' then 0 else o.jprice/(1+isnull(g.jtaxrate,0)/100.00) end),2) as netcost,
g.jtaxrate,0 as ypcount,g.depcode,d.depname,'' as remark,a.cgmode,a.promdesc,a.gcount,a.onwaycount,round(a.askcounts*o.price,2)
from tmpaskdata_param a join t_plu g on a.plucode=g.plucode
join t_plu_org o on a.plucode=o.plucode and a.orgcode = o.orgcode and o.orgcode=@sorgcode and o.isright='1'
left join t_dept d on g.depcode=d.depcode
where a.asktype = @sasktype
if @@error<>0
begin
set @psmsg='生成要货单明细失败'
close cur
deallocate cur
return (-1)
end
select @saskbgndate = convert(varchar(10),DATEADD(dd,-1*continuedays,GETDATE()),120),
@saskenddate = convert(varchar(10),DATEADD(dd,continueenddays,GETDATE()),120)
from tmpaskdata_param
where plucode = (select top 1 plucode from t_ask_body where billno = @saskno)
and orgcode =@sorgcode
and asktype = @sasktype
insert into t_ask_head(billno,orgcode,lrdate,lrtime,depcode,depname,counts,cost,netcost,total,chkstatus,usercode,username,zdrcode,zdrname,asktype,remark,askbgndate,askenddate)
select @saskno,upper(@sorgcode),@sdate,@stime,'','',sum(d.counts),sum(d.cost),sum(d.netcost),sum(d.total),
'0' as chkstatus,'0000','管理员','0000','管理员',@sasktype,'自动要货生成',@saskbgndate as askbgndate,@saskenddate as askenddate
from t_ask_body d
where d.billno=@saskno
if @@error<>0
begin
set @psmsg='生成要货单主表失败'
close cur
deallocate cur
return (-1)
end
insert into t_tran_log(logdate,logtime,stationid,mdlcode,mdlname,usercode,username,operation)
values(@sdate,@stime,'油站订货作业','','','','','生成油站订货单:'+@saskno)
fetch next from cur into @sorgcode,@sasktype
end
close cur
deallocate cur
--print(convert(varchar(100),getdate(),120) + ' end process data')
set @psmsg=''
return(1)
end
go
if exists(select * from sysobjects where name='p_create_orderdata' and xtype='p')
drop procedure p_create_orderdata
go
CREATE procedure p_create_orderdata
(
@psusercode varchar(10),
@pstblname varchar(100),
@pirtn int out,
@psmsg varchar(2000) out
)
as
declare @sorgcode varchar(10)
declare @sdate varchar(10)
declare @stime varchar(8)
declare @susername varchar(20)
declare @ssql varchar(8000)
declare @icgvaliddays int
declare @svaliddate varchar(10)
declare @sarrivedate varchar(10)
declare @sorderno varchar(20)
declare @ssupcode varchar(20)
declare @scontrno varchar(40)
begin
set @psmsg=''
set @pirtn = 0
declare @sbranchno varchar(20)
select @sbranchno = itemvalue from dbo.t_syscfg where itemname = 'branchno'
if isnull(@sbranchno,'') = ''
begin
set @pirtn = -1
set @psmsg = '未找到中央仓'
return -1
end
select @susername=username from t_user where usercode = @psusercode
----中央仓,缺货缺省采购订单有效天数
select @icgvaliddays=convert(int,itemvalue) from t_syscfg where section='system' and itemname='cgvaliddays'
set @svaliddate=convert(varchar(10),dateadd(day,@icgvaliddays,getdate()),120)
set @sarrivedate = convert(varchar(10),dateadd(day,4,getdate()),120)
if exists(select * from sysobjects where name = 'tmporderdata_param' and xtype = 'U')
drop table tmporderdata_param
create table tmporderdata_param(
plucode varchar(20) not null default(''),
billno varchar(20) not null default(''),
orgcode varchar(10) not null default(''),
cgmode varchar not null default ('1'),
clmode varchar not null default ('0'),
supcode varchar(20) not null default(''),
ordercnt numeric(19,4) not null default(''),
askcounts numeric(19,4) not null default (0)
constraint pk_tmporderdata_param primary key nonclustered
(
plucode,billno,orgcode
)
)
------20231108调整根据判断数量进行调整Cgmode的方式当要货数据大于等于判断数量(非0为Cgmode=2否则为Cgmode=1
set @ssql = 'insert into tmporderdata_param(plucode,billno,orgcode,cgmode,clmode,supcode,ordercnt,askcounts) '+
'select a.plucode,a.billno,h.orgcode,
Case b.cgmode when ''0'' then case when (b.counts>=o.judgecnt And o.judgecnt >0) then ''2'' Else ''1'' end when ''1'' then ''1'' when ''2'' then ''2'' end As cgmode,
b.clmode,case when isnull(o.supcode,'''') <>'''' then o.supcode else p.supcode end as supcode,'+
'p.ordercnt,b.counts '+
'from '+@pstblname+' a '+
'join dbo.t_ask_body b on a.plucode = b.plucode and a.billno = b.billno '+
'join dbo.t_ask_head h on a.billno = h.billno '+
'join t_plu p on a.plucode = p.plucode '+
'join dbo.t_plu_org o on a.plucode = o.plucode and h.orgcode = o.orgcode'
exec (@ssql)
if @@error <>0
begin
set @pirtn = -1
set @psmsg = '初始数据失败'
return -1
end
update a
set supcode =case when isnull(o.supcode,'') <> '' then o.supcode else p.supcode end
from tmporderdata_param a,t_plu p ,t_plu_org o
where a.plucode = p.plucode and a.plucode = o.plucode and o.orgcode = @sbranchno
and a.cgmode = '1'
--delete from tmporderdata_param where isnull(supcode,'') = ''
--中央仓采购表
if exists(select * from sysobjects where name = 'tmporderdata_cg' and xtype = 'U')
drop table tmporderdata_cg
create table tmporderdata_cg(
plucode varchar(20) not null default(''),
supcode varchar(20) not null default(''),
contrno varchar(40) not null default(''),
orgcode varchar(10) not null default(''),
ordercnt numeric(19,4) not null default 0,
jprice numeric(19,4) not null default 0,
counts numeric(19,4) not null default (0),
tag varchar(1) null
constraint pk_tmporderdata_cg primary key nonclustered
(
plucode,supcode,orgcode
)
)
insert into tmporderdata_cg(plucode,supcode,ordercnt,orgcode, counts)
select plucode,supcode,ordercnt,@sbranchno, sum(askcounts) as counts
from tmporderdata_param
where cgmode = '1' and clmode = '0' and isnull(supcode,'') <> ''
group by plucode,supcode,ordercnt
/* 2023-11-08 以下内容不用这么复杂的控制
if exists(select * from sysobjects where name = 'tmporderdata_onway' and xtype = 'U')
drop table tmporderdata_onway
create table tmporderdata_onway(
plucode varchar(20) not null default(''),
askcount numeric(19,4) not null default 0,
onwaycount numeric(19,4) not null default (0)
constraint pk_tmporderdata_onway primary key nonclustered
(
plucode
)
)
insert into tmporderdata_onway(plucode,askcount,onwaycount)
select a.plucode,askcounts,onwaycount
from
(select plucode,sum(askcounts) as askcounts,sum(onwaycount) as onwaycount
from (
/* 2023-11-08物流已处理的状态订货数据已经生成了采购订单了
select plucode,sum(b.counts) as askcounts, 0 as onwaycount from t_ask_body b,t_ask_head h
where b.billno = h.billno and isnull(h.rzdate,'') <> '' and b.clstate = '1' and b.clmode = '0' and b.cgmode = '1'
group by b.plucode
union all
*/
-----只统计中央仓的采购订单执行状态的在途库存数据
select plucode,0 as askcounts, sum(b.counts-b.dhcount)as onwaycount from t_order_body b,t_order_head h,dbo.t_shop s
where b.billno = h.billno and h.orgcode = s.orgcode and s.orgtype = '2'
and h.state = '1'
group by b.plucode
)src1
group by plucode
)a,tmporderdata_cg b where a.plucode = b.plucode
--中央仓采购订单
-----处理冲减中央仓已有的库存数据和执行中的采购订单未到货库存数量
update a
set a.counts = a.counts + b.askcount - b.onwaycount - isnull(o.gcount,0) - isnull(o.ccount,0)
from tmporderdata_cg a join tmporderdata_onway b on a.plucode = b.plucode
join t_plu_org o on a.plucode = o.plucode and o.orgcode = @sbranchno
*2023-11-08 以上内容不用这么复杂的控制
* ----按中央仓库存+中央仓采购订单执行状态且未收完货的数据
Select pluCode ,sum(onwaycount) as onwaycount From
(Select pluCode,(isnull(gcount,0)+isnull(ccount,0)) as onwaycount from t_plu_org where orgcode='c001'
union all
select plucode, sum(b.counts-b.dhcount) as onwaycount from t_order_body b,t_order_head h,dbo.t_shop s
where b.billno = h.billno and h.orgcode = s.orgcode and s.orgcode='c001'
and h.state = '1'
group by b.plucode ) TT group by plucode
*/
---------20231108按中央仓库存+中央仓采购订单执行状态且未收完货的数据
update a
set a.counts = a.counts -o.onwaycount
from tmporderdata_cg a
join ( Select pluCode ,sum(onwaycount) as onwaycount From
(Select pluCode,(isnull(gcount,0)+isnull(ccount,0)) as onwaycount from t_plu_org where orgcode= @sbranchno
union all
select plucode, sum(b.counts-b.dhcount) as onwaycount from t_order_body b,t_order_head h,dbo.t_shop s
where b.billno = h.billno and h.orgcode = s.orgcode and s.orgcode= @sbranchno
and h.state = '1'
group by b.plucode
union all
select pluCode ,-sum(c.counts) as onwaycount from t_ask_body c , t_ask_head tah where c.cgmode='1' and clstate = '1' and c.billno = tah.billno and tah.state ='0' and c.clmode ='0'
group by c.plucode
) TT group by plucode ) o on a.plucode = o.plucode
update a
set
counts = case ordercnt when 0 then counts else round(counts/ordercnt,0)*ordercnt end,
contrno = isnull((select top 1 c.contrno
from t_contract c , t_contr_org co
where c.contrno = co.contrno and supcode = a.supcode and co.orgcode = a.orgcode and contrstatus = '0'
and CONVERT(varchar(10),GETDATE(),120) between bgndate and enddate
order by signdate,c.contrno)
,'')
from tmporderdata_cg a
where counts > 0
--获取进价
update a
set jprice = case when isnull(sp.jymode,'') = '2' then 0
else case when Exists (select JPrice from t_order_quote H where H.QuoteType='1' and convert(varchar(10),getdate(),120) between BgnDate and EndDate
and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
then (select top 1 JPrice from t_order_quote H,(select QuoteType,OrgCode,supcode,PluCode,max(RzDate+' '+RzTime) RzDateTime from t_order_quote where QuoteType='1' and convert(varchar(10),getdate(),120) between BgnDate and EndDate group by QuoteType,OrgCode,supcode,PluCode) B
where H.QuoteType=B.QuoteType and H.OrgCode=B.OrgCode and H.supcode=B.supcode and H.PluCode=B.PluCode and H.RzDate+' '+H.RzTime=B.RzDateTime
and convert(varchar(10),getdate(),120) between BgnDate and EndDate
and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
--when Exists (select JPrice from t_order_quote H where H.QuoteType='0' and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
--then (select JPrice from t_order_quote H where H.QuoteType='0' and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
else o.ojprice end end,
tag = case when isnull(sp.jymode,'') = '2' then '0'
else case when Exists (select JPrice from t_order_quote H where H.QuoteType='1' and convert(varchar(10),getdate(),120) between BgnDate and EndDate
and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode) then '1'
--when Exists( select JPrice from t_order_quote H where H.QuoteType='0' and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode) then '1'
else '0' end
end
from tmporderdata_cg a,t_plu_org o,t_supplier sp, t_plu g
where a.plucode = o.plucode and o.orgcode = a.orgcode and a.supcode = sp.supcode and a.plucode = g.plucode
-- update a
--set cgdate=@sdate,clstate = '1'
--from t_ask_body a,tmporderdata_param b
--where a.billno = b.billno and a.plucode = b.plucode and a.cgmode = '1'
--and exists (select * from tmporderdata_cg where plucode = b.plucode and counts <= 0)
declare cur cursor for select distinct supcode,orgcode,contrno from tmporderdata_cg where counts > 0 and contrno <> '' order by supcode
open cur
fetch next from cur into @ssupcode,@sorgcode,@scontrno
while @@fetch_status = 0
begin
select @sdate=convert(varchar(10),getdate(),20),@stime = substring(convert(varchar(20),getdate(),20),12,8)
set @sorderno = ''
while 1=1
begin
exec f_get_billno 'CG',@sorgcode,'1',@sorderno output
if exists(select 1 from t_order_head where billno=@sorderno)
continue
else
break
end
print (@sorderno)
insert into t_order_body(billno,serialno,plucode,pluname,barcode,cargono,spec,unit,price,counts,
jprice,netjprice,ornjprice,ornnetjprice,cost,netcost,jtaxrate,depcode,depname,remark,pcount,punit,itemcnt,sglcount,tag)
select @sorderno,0 as serialno,a.plucode,g.pluname,g.barcode,g.cargono,g.spec,g.unit,o.price,a.counts,
a.jprice,round(a.jprice/(1+isnull(g.jtaxrate,0)/100.00),4) as netjprice,a.jprice,round(a.jprice/(1+isnull(g.jtaxrate,0)/100.00),4) as ornnetjprice,
round(a.counts*a.jprice,2) as cost,
round(round(a.counts*a.jprice,2)/(1+isnull(g.jtaxrate,0)/100.00),2) as netcost,
g.jtaxrate,g.depcode,d.depname,'' as remark,
case when isnull(a.ordercnt,0)=0 then 0 else round(a.counts/a.ordercnt,1) end as pcount,
'' as punit,a.ordercnt as itemcnt,a.counts as sglcount,a.tag
from tmporderdata_cg a join t_plu g on a.plucode=g.plucode
join t_plu_org o on a.plucode=o.plucode and a.orgcode = o.orgcode and o.orgcode=@sbranchno
left join t_dept d on g.depcode = d.depcode
where a.supcode = @ssupcode and a.counts > 0 and a.contrno <> ''
if @@error<>0
begin
set @psmsg='生成中央仓订单明细失败'
close cur
deallocate cur
set @pirtn = -1
return (-1)
end
insert into t_order_head(billno,orgcode,billtype,bizdate,lrdate,lrtime,
counts,cost,netcost,zdrcode,zdrname,usercode,username,
chkstatus,remark,sqauremode,supcode,supname, depcode,depname,contrno,arrivedate,paydate,validdate,iszs)
select @sorderno,upper(@sorgcode),'0',@sdate,@sdate,@stime,
sum(d.counts),sum(d.cost),sum(d.netcost), @psusercode,@susername,@psusercode,@susername,
'0' as chkstatus,'油站订货处理生成','1' as sqauremode,@ssupcode,(select supname from t_supplier where supcode = @ssupcode) as supname,
'' as depcode,'' as depname,@scontrno as contrno,@sarrivedate,@svaliddate,@svaliddate,'0'
from t_order_body d where d.billno=@sorderno
if @@error<>0
begin
set @pirtn = -1
set @psmsg='生成中央仓订单主表信息失败'
close cur
deallocate cur
return (-1)
end
--更新处理状态
--update a
--set cgdate=@sdate,clstate = '1'
--from t_ask_body a,tmporderdata_param b
--where a.billno = b.billno and a.plucode = b.plucode and a.cgmode = '1' and b.supcode = @ssupcode
--update t_order_head
--set state = '1',
-- rzdate = @sdate,rztime = @stime
--where billno = @sorderno
insert into t_tran_log(logdate,logtime,stationid,mdlcode,mdlname,usercode,username,operation)
values(@sdate,@stime,'','','油站订货处理',@psusercode,@susername,'油站订货处理生成:'+@sorderno)
fetch next from cur into @ssupcode,@sorgcode,@scontrno
end
close cur
deallocate cur
--处理直送单
truncate table tmporderdata_cg
insert into tmporderdata_cg(plucode,supcode,ordercnt,orgcode, counts)
select plucode,supcode,ordercnt,orgcode, sum(askcounts) as counts
from tmporderdata_param
where cgmode = '2' and clmode = '0' and isnull(supcode,'') <> ''
group by plucode,supcode,ordercnt,orgcode
update a
set counts = case ordercnt when 0 then counts else round(counts/ordercnt,0)*ordercnt end,
contrno = isnull((select top 1 c.contrno
from t_contract c , t_contr_org co
where c.contrno = co.contrno and supcode = a.supcode and co.orgcode = a.orgcode and contrstatus = '0'
and CONVERT(varchar(10),GETDATE(),120) between bgndate and enddate
order by signdate,c.contrno)
,'')
from tmporderdata_cg a
where counts > 0
--获取进价
update a
set jprice = case when isnull(sp.jymode,'') = '2' then 0
else case when Exists (select JPrice from t_order_quote H where H.QuoteType='1' and convert(varchar(10),getdate(),120) between BgnDate and EndDate
and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
then (select top 1 JPrice from t_order_quote H,(select QuoteType,OrgCode,supcode,PluCode,max(RzDate+' '+RzTime) RzDateTime from t_order_quote where QuoteType='1' and convert(varchar(10),getdate(),120) between BgnDate and EndDate group by QuoteType,OrgCode,supcode,PluCode) B
where H.QuoteType=B.QuoteType and H.OrgCode=B.OrgCode and H.supcode=B.supcode and H.PluCode=B.PluCode and H.RzDate+' '+H.RzTime=B.RzDateTime
and convert(varchar(10),getdate(),120) between BgnDate and EndDate
and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
--when Exists (select JPrice from t_order_quote H where H.QuoteType='0' and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
--then (select JPrice from t_order_quote H where H.QuoteType='0' and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode)
else o.ojprice end end,
tag = case when isnull(sp.jymode,'') = '2' then '0'
else case when Exists (select JPrice from t_order_quote H where H.QuoteType='1' and convert(varchar(10),getdate(),120) between BgnDate and EndDate
and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode) then '1'
--when Exists( select JPrice from t_order_quote H where H.QuoteType='0' and h.orgcode = a.orgcode and h.plucode = a.plucode and h.supcode = a.supcode) then '1'
else '0' end
end
from tmporderdata_cg a,t_plu_org o,t_supplier sp, t_plu g
where a.plucode = o.plucode and o.orgcode = a.orgcode and a.supcode = sp.supcode and a.plucode = g.plucode
--update a
--set cgdate=@sdate,clstate = '1'
--from t_ask_body a,tmporderdata_param b
--where a.billno = b.billno and a.plucode = b.plucode and a.cgmode = '2'
declare curZ cursor for select distinct supcode,orgcode,contrno from tmporderdata_cg where counts > 0 and contrno <> '' order by orgcode,supcode
open curZ
fetch next from curZ into @ssupcode,@sorgcode,@scontrno
while @@fetch_status = 0
begin
select @sdate=convert(varchar(10),getdate(),20),@stime = substring(convert(varchar(20),getdate(),20),12,8)
set @sorderno = ''
while 1=1
begin
exec f_get_billno 'ZCG',@sorgcode,'1',@sorderno output
if exists(select 1 from t_order_head where billno=@sorderno)
continue
else
break
end
insert into t_order_body(billno,serialno,plucode,pluname,barcode,cargono,spec,unit,price,counts,
jprice,netjprice,ornjprice,ornnetjprice,cost,netcost,jtaxrate,depcode,depname,remark,pcount,punit,itemcnt,sglcount,tag)
select @sorderno,0 as serialno,a.plucode,g.pluname,g.barcode,g.cargono,g.spec,g.unit,o.price,a.counts,
a.jprice,round(a.jprice/(1+isnull(g.jtaxrate,0)/100.00),4) as netjprice,a.jprice,round(a.jprice/(1+isnull(g.jtaxrate,0)/100.00),4) as ornnetjprice,
round(a.counts*a.jprice,2) as cost,
round(round(a.counts*a.jprice,2)/(1+isnull(g.jtaxrate,0)/100.00),2) as netcost,
g.jtaxrate,g.depcode,d.depname,'' as remark,
case when isnull(a.ordercnt,0)=0 then 0 else round(a.counts/a.ordercnt,1) end as pcount,
'' as punit,a.ordercnt as itemcnt,a.counts as sglcount,a.tag
from tmporderdata_cg a join t_plu g on a.plucode=g.plucode
join t_plu_org o on a.plucode=o.plucode and a.orgcode = o.orgcode and o.orgcode=@sorgcode
left join t_dept d on g.depcode = d.depcode
where a.supcode = @ssupcode and a.counts > 0 and a.contrno <> ''
if @@error<>0
begin
set @psmsg='生成油站直送订单明细失败'
set @pirtn = -1
close curZ
deallocate curZ
return (-1)
end
insert into t_order_head(billno,orgcode,billtype,bizdate,lrdate,lrtime,
counts,cost,netcost,zdrcode,zdrname,usercode,username,
chkstatus,remark,sqauremode,supcode,supname,depcode,depname,contrno,arrivedate,paydate,validdate,iszs)
select @sorderno,upper(@sorgcode),'0',@sdate,@sdate,@stime,
sum(d.counts),sum(d.cost),sum(d.netcost), @psusercode,@susername,@psusercode,@susername,
'0' as chkstatus,'油站订货处理生成','1' as sqauremode,@ssupcode,(select supname from t_supplier where supcode = @ssupcode) as supname,
'' as depcode,'' as depname,@scontrno as contrno,@sarrivedate,@svaliddate,@svaliddate,'1'
from t_order_body d where d.billno=@sorderno
if @@error<>0
begin
set @pirtn = -1
set @psmsg='生成油站直送订单主表信息失败'
close curZ
deallocate curZ
return (-1)
end
--更新处理状态
--update a
--set cgdate=@sdate,clstate = '1'
--from t_ask_body a,tmporderdata_param b
--where a.billno = b.billno and a.plucode = b.plucode and a.cgmode = '2' and b.supcode = @ssupcode and b.orgcode = @sorgcode
--update t_order_head
--set state = '1',
-- rzdate = @sdate,rztime = @stime
--where billno = @sorderno
insert into t_tran_log(logdate,logtime,stationid,mdlcode,mdlname,usercode,username,operation)
values(@sdate,@stime,'','','油站订货处理',@psusercode,@susername,'油站订货处理生成:'+@sorderno)
fetch next from curZ into @ssupcode,@sorgcode,@scontrno
end
close curZ
deallocate curZ
update a
set cgdate=@sdate,clstate = '1'
from t_ask_body a,tmporderdata_param b
where a.billno = b.billno and a.plucode = b.plucode
if @@error<>0
begin
set @pirtn = -1
set @psmsg='更新油站订单处理状态失败'
return (-1)
end
set @psmsg=''
return(1)
end
go