Sql_物料信息处理存储过程

CREATE PROC [dbo].[upDemo] 
@BatchID varchar(50), ---批次 
@LocationID varchar(20), ---仓库区位 
@OrderNo varchar(20), ---订单号 
@MatNo varchar(50), ---物料编号 
@OrderUser varchar(20), ---订料组 

@Supplier varchar(20), ---供应商 
@Season varchar(20), ---季度 
@Designer varchar(20), ---设计师 
@TrackUser varchar(20), ---跟单员 
@Flag varchar(20), ---上架状态 

@mattype varchar(20), --物料类型 
@isnewmat varchar(20), --新旧布 
@colorid varchar(50), 
@colordesc varchar(50), 
@matdesc varchar(100), 

@loginid varchar(20), 
@crockid varchar(30), 
@noindocno varchar(20), 
@storeno varchar(20), 
@banid varchar(50), 

@revnumber varchar(30), 
@reqname varchar(20), --订购人 
@tracgpname varchar(20), --跟单组长 
@ipaddress Varchar(20), 
@isImportPDAData VARCHAR(10), --是否导入PDA数据 1:表示导入PDA数据 0:表示不导入PDA数据 

@docType VARCHAR(10), --单据类型标记 0:表示开领料单; 1:表示开预留单; 
@pdaDocNo VARCHAR(50), --PDA单号,把PDA同一时间点发送的批次认为是同一单据 
@styleno varchar(50), 
@bantype varchar(20), 
@receivedpt varchar(60) 

as 

declare @sql varchar(8000),@charenter varchar(5) 
declare @qx_12 bit 

/* deal with 'vm_batchsendqty' _ begin */

--temp_c
,@sql_temp_c VARCHAR(8000)
,@temptb_c VARCHAR(50)
--temp_d
,@sql_temp_d VARCHAR(8000)
,@temptb_d VARCHAR(50)

--vm_batchsendqty
,@sql_e_0 VARCHAR(8000)
,@sql_f_0 VARCHAR(8000)
,@sql_h_0 VARCHAR(8000)
,@sql_i_0 VARCHAR(8000)
,@sql_vm_0 VARCHAR(8000)
,@sql_drop_tb_0 VARCHAR(1000)

,@temptb_e_0 VARCHAR(50)
,@temptb_f_0 VARCHAR(50)
,@temptb_h_0 VARCHAR(50)
,@temptb_i_0 VARCHAR(50)
,@temptb_vm_0 VARCHAR(50)

--vm_batchstoreqty
,@sql_d_01 VARCHAR(8000),@sql_d_02 VARCHAR(8000)
,@sql_e VARCHAR(8000)
,@sql_f VARCHAR(8000)
,@sql_h VARCHAR(8000)
,@sql_i VARCHAR(8000)
,@sql_vm VARCHAR(8000)

,@temptb_d_01 VARCHAR(50),@temptb_d_02 VARCHAR(50)
,@temptb_e VARCHAR(50)
,@temptb_f VARCHAR(50)
,@temptb_h VARCHAR(50)
,@temptb_i VARCHAR(50)
,@temptb_vm VARCHAR(50)

--temp_c
SET @temptb_c='TAB'+REPLACE(NEWID(),'-','')
--temp_d
SET @temptb_d='TAB'+REPLACE(NEWID(),'-','')

--vm_batchstoreqty
SET @temptb_d_01='TAB'+REPLACE(NEWID(),'-','')     --1.1
SET @temptb_d_02='TAB'+REPLACE(NEWID(),'-','')     --1.2
SET @temptb_e='TAB'+REPLACE(NEWID(),'-','')     --2.    
SET @temptb_f='TAB'+REPLACE(NEWID(),'-','')     --3.
SET @temptb_h='TAB'+REPLACE(NEWID(),'-','')     --4.
SET @temptb_i='TAB'+REPLACE(NEWID(),'-','')     --5.
SET @temptb_vm='VM'+REPLACE(NEWID(),'-','')     --6. 

set @charenter=char(13)+char(10) 
set @qx_12=ISNULL((select isnull(qx_7,0) from s_function where userid=@loginid and funcid='frmStockSendLL_msqDetaild'),0) 

--vm_batchsendqty
SET @temptb_e_0='TAB'+REPLACE(NEWID(),'-','')     --2.    
SET @temptb_f_0='TAB'+REPLACE(NEWID(),'-','')     --3.
SET @temptb_h_0='TAB'+REPLACE(NEWID(),'-','')     --4.
SET @temptb_i_0='TAB'+REPLACE(NEWID(),'-','')     --5.
SET @temptb_vm_0='VM'+REPLACE(NEWID(),'-','')     --6.


--temp_c
SET @sql_temp_c='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_c+''') and [type]=''U'') drop table '+@temptb_c+'
Select c.pre_number,c.pre_line,SUM(a.length) as outlength 
into '+@temptb_c+'
from MaterialOut_Detail a left join 
MaterialOut_Head b on b.DocNo=a.DocNo left join 
MaterialSend_DetailD c on c.DocNo=b.SendNo and c.BatchID=a.BatchID 
where c.resno is null and b.SendNo not like ''BCK%'' and c.pre_number is not null 
--group by c.pre_number,c.pre_line
'
IF @BatchID IS NOT NULL SET @sql_temp_c=RTRIM(@sql_temp_c)+ ' and a.BatchID like ' +@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_temp_c=RTRIM(@sql_temp_c)+ ' and a.MatNo like ' +@MatNo +@charenter
SET @sql_temp_c=RTRIM(@sql_temp_c)+ ' group by c.pre_number,c.pre_line' +@charenter

--temp_d
SET @sql_temp_d='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_d+''') and [type]=''U'') drop table '+@temptb_d+'
Select a.pre_number,a.pre_line,SUM(length) as sendlength 
into '+@temptb_d+' 
from MaterialSend_DetailD a inner join 
MaterialSend_head c on c.docno=a.docno left join 
MaterialOut_Head b on b.SendNo=a.DocNo 
where c.indate>=getdate()-15 and a.resno is null and b.DocNo is null and a.docno like ''SED%'' and a.pre_number is not null 
-- group by a.pre_number,a.pre_line 
'
IF @BatchID IS NOT NULL SET @sql_temp_d=RTRIM(@sql_temp_d)+ ' and a.BatchID like ' +@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_temp_d=RTRIM(@sql_temp_d)+ ' and a.MatNo like ' +@MatNo +@charenter
SET @sql_temp_d=RTRIM(@sql_temp_d)+ ' group by a.pre_number,a.pre_line' +@charenter 

--(一)
--2. @temptb_e_0 正常领料未出货
SET @sql_e_0='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_e_0+''') and [type]=''U'') drop table '+@temptb_e_0+'
select batchid, SUM(length)as length,SUM(qtyi) as qtyi 
into '+@temptb_e_0+' 
from materialsend_detaild a(nolock) inner join 
materialsend_head d(nolock) on a.docno=d.docno left join 
materialout_head c(nolock) on a.docno=c.sendno 
where d.checkflag=1 and a.docno like ''SED%'' and isnull(a.resno,'''')='''' and isnull(c.docno,'''')='''' 
--group by BatchID 
' 
IF @BatchID IS NOT NULL SET @sql_e_0=RTRIM(@sql_e_0)+' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_e_0=RTRIM(@sql_e_0)+' and a.MatNo like '+@MatNo +@charenter
SET @sql_e_0=RTRIM(@sql_e_0)+ ' group by BatchID' +@charenter

--3.@temptb_f_0 预留数量
SET @sql_f_0='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_f_0+''') and [type]=''U'') drop table '+@temptb_f_0+'
select batchid, SUM(length)as length,SUM(qtyi) as qtyi
into '+@temptb_f_0+' 
from materialsend_detaild a(nolock) inner join 
materialsend_head d(nolock) on a.docno=d.docno 
where d.checkflag=1 and a.docno like ''RES%'' 
-- group by BatchID 
'
IF @BatchID IS NOT NULL SET @sql_f_0=RTRIM(@sql_f_0)+' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_f_0=RTRIM(@sql_f_0)+' and a.MatNo like '+@MatNo +@charenter
SET @sql_f_0=RTRIM(@sql_f_0)+ ' group by BatchID' +@charenter 

--4.@temptb_h_0 领预留数量
SET @sql_h_0='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_h_0+''') and [type]=''U'') drop table '+@temptb_h_0+'
select batchid, SUM(length)as length, SUM(qtyi) as qtyi 
into '+@temptb_h_0+' 
from materialsend_detaild a(nolock) inner join 
materialsend_head d(nolock) on a.docno=d.docno 
where d.checkflag=1 and a.resno like ''RES%'' 
-- group by BatchID 
'
IF @BatchID IS NOT NULL SET @sql_h_0=RTRIM(@sql_h_0)+ ' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_h_0=RTRIM(@sql_h_0)+ ' and a.MatNo like '+@MatNo +@charenter
SET @sql_h_0=RTRIM(@sql_h_0)+ ' group by BatchID' +@charenter

--5.@temptb_i_0 领预留未出数量
SET @sql_i_0='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_i_0+''') and [type]=''U'') drop table '+@temptb_i_0+'
select batchid, SUM(length)as length, SUM(qtyi) as qtyi 
into '+@temptb_i_0+' 
from materialsend_detaild a(nolock) inner join 
materialsend_head d(nolock) on a.docno=d.docno left join 
materialout_head c(nolock) on a.docno=c.sendno 
where d.checkflag=1 and a.docno like ''SED%'' and a.resno like ''RES%'' and c.docno is null 
-- group by BatchID 
'
IF @BatchID IS NOT NULL SET @sql_i_0=RTRIM(@sql_i_0)+ ' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_i_0=RTRIM(@sql_i_0)+ ' and a.MatNo like '+@MatNo +@charenter
SET @sql_i_0=RTRIM(@sql_i_0)+ ' group by BatchID' +@charenter 

--6.@temptb_vm_0
SET @sql_vm_0='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_vm_0+''') and [type]=''U'') drop table '+@temptb_vm_0+'
select a.BatchID,a.MatNo,a.volumeid,a.mattype,a.mattypename,a.mattypedesc,a.MatDesc,a.OrderNo,a.line,a.orderserial,a.lockflag, 
a.ColorID,a.ColorDesc,a.Season,a.reqperson,a.Designer,a.dsgdeptdesc,a.supplierid, a.SupplierDesc,a.Package,a.batch, 
a.conversion,a.crockid,a.dsgpoperson,a.poprice,a.isoldmat,a.storeno,a.podept,a.podeptdesc,a.reqdept,a.reqdeptdesc, 
a.revperson,a.supply_colorname,a.part,a.dsgstyle,a.element,a.needqty,a.banid,a.goodsperiod,a.styleno,a.rev_number, 
a.clothareano,a.weight as kz,a.dsgclothareano,a.itemtype, 
b.LocationID,b.sampleqty,a.Lunit,a.Wunit, 
b.Length as StoreLength,--库存数量 
b.weight as StoreWeight,--库存重量 
b.inlength,--入库数量 
b.inweight, 
(case when b.length-isnull(e.length,0)-isnull(i.length,0)<0 then 0 else b.length-isnull(e.length,0)-isnull(i.length,0) end) avlength,--可用数量=库存-正常未出-预留未出 
(case when b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0)<0 then 0 else b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0) end) avweight,--可用重量 
case WHEN isnull(f.length,0)-isnull(h.length,0) < 0 THEN b.length-isnull(e.length,0) 
WHEN b.length-isnull(e.length,0)-isnull(i.length,0)-(isnull(f.length,0)-isnull(h.length,0)) < 0 THEN 0 
else b.length-isnull(e.length,0)-isnull(i.length,0)-(isnull(f.length,0)-isnull(h.length,0)) 
end as avnoreslength, --实际可用数量= 库存-正常未出-预留未出-预留剩余 
case WHEN isnull(f.qtyi,0)-isnull(h.qtyi,0) < 0 THEN b.weight-isnull(e.qtyi,0) 
WHEN b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0)-(isnull(f.qtyi,0)-isnull(h.qtyi,0)) < 0 THEN 0 
else b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0)-(isnull(f.qtyi,0)-isnull(h.qtyi,0)) 
end as avnoresweight, --实际可用重量 
e.length as nochecknoreslen , --未审核(不包括领预留)|数量 
e.qtyi as nochecknoresweight, 
h.length as reslylen , --预留|已领数量(b) 
h.qtyi as reslyqtyi, 
case when (isnull(f.length,0)-isnull(h.length,0)) > 0 then isnull(f.length,0)-isnull(h.length,0) 
else 0.0 
end as reslensy , --预留|剩余数量(c=a-b) 
case when (isnull(f.qtyi,0)-isnull(h.qtyi,0)) > 0 then isnull(f.qtyi,0)-isnull(h.qtyi,0) 
else 0.0 
end as resweightsy, 
f.length as reslen , --预留|最初数量(a) 
f.qtyi as resweight 

into '+@temptb_vm_0+'

from materialbatchinfo (nolock) a left join 
MaterialStoreQty (nolock) b on b.BatchID=a.BatchID left join
'+@temptb_e_0+' e on e.BatchID=a.BatchID left join
'+@temptb_f_0+' f on f.BatchID=a.BatchID left join
'+@temptb_h_0+' h on h.BatchID=a.BatchID left join
'+@temptb_i_0+' i on i.BatchID=a.BatchID
where 1=1
'
IF @MatNo IS NOT NULL SET @sql_vm_0=RTRIM(@sql_vm_0)+ ' and a.MatNo like '+@MatNo +@charenter
IF @mattype IS NOT NULL SET @sql_vm_0=RTRIM(@sql_vm_0)+ ' and a.mattype like '+@mattype +@charenter 


--(二)vm_batchstoreqty
--1.1 @temptb_d_01 
SET @sql_d_01='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_d_01+''') and [type]=''U'') drop table '+@temptb_d_01+'
select mm.docno,mm.batchid,matno,length,lunit,weight,wunit,conversion, turnoldragsflag,turnoldragsdate 
,cc.CollectDate ,cc.color_name,cc.color_desc,mm.remark,'''' as returndpt 
into '+@temptb_d_01+' 
from MaterialCollect_detail (nolock) mm inner join 
MaterialCollect_head cc on mm.docno=cc.docno
where 1=1
' 
IF @BatchID IS NOT NULL SET @sql_d_01=RTRIM(@sql_d_01)+' and mm.batchid like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_d_01=RTRIM(@sql_d_01)+' and mm.matno like '+@MatNo +@charenter

--1.2 @temptb_d_02
SET @sql_d_02='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_d_02+''') and [type]=''U'') drop table '+@temptb_d_02+'
select rr.docno,newbatchid,rr.matno,length,lunit,weight,wunit,conversion ,'''' AS turnoldragsflag,'''' AS turnoldragsdate 
,ss.InDate CollectDate,ss.ColorID color_name,ss.ColorDesc color_desc ,rr.remark,returndpt 
into '+@temptb_d_02+' 
from MaterialReturnStore_Detail (nolock) rr inner join 
MaterialReturnStore_head ss on rr.docno=ss.docno
where 1=1
'
IF @BatchID IS NOT NULL SET @sql_d_02=RTRIM(@sql_d_02)+' and newbatchid like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_d_02=RTRIM(@sql_d_02)+' and rr.matno like '+@MatNo +@charenter

--2. @temptb_e 正常领料未出货
SET @sql_e='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_e+''') and [type]=''U'') drop table '+@temptb_e+'
select batchid, SUM(length)as length,SUM(qtyi) as qtyi 
into '+@temptb_e+' 
from materialsend_detaild a(nolock) 
inner join materialsend_head d(nolock) on a.docno=d.docno 
left join materialout_head c(nolock) on a.docno=c.sendno 
where d.checkflag=1 and a.docno not like ''RES%'' and a.resno is null and c.docno is null 
' 
IF @BatchID IS NOT NULL SET @sql_e=RTRIM(@sql_e)+' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_e=RTRIM(@sql_e)+' and a.MatNo like '+@MatNo +@charenter
SET @sql_e=RTRIM(@sql_e)+ ' group by BatchID' +@charenter

--3. @temptb_f 预留数量
SET @sql_f='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_f+''') and [type]=''U'') drop table '+@temptb_f+'
select batchid, SUM(length)as length,SUM(qtyi) as qtyi 
into '+@temptb_f+' 
from materialsend_detaild a(nolock) inner join 
materialsend_head d(nolock) on a.docno=d.docno 
where d.checkflag=1 and a.docno like ''RES%'' 
'
IF @BatchID IS NOT NULL SET @sql_f=RTRIM(@sql_f)+ ' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_f=RTRIM(@sql_f)+ ' and a.MatNo like '+@MatNo +@charenter
SET @sql_f=RTRIM(@sql_f)+ ' group by BatchID' +@charenter

--4. @temptb_h 领预留数量
SET @sql_h='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_h+''') and [type]=''U'') drop table '+@temptb_h+'
select batchid, SUM(length)as length, SUM(qtyi) as qtyi
into '+@temptb_h+' 
from materialsend_detaild a(nolock) inner join 
materialsend_head d(nolock) on a.docno=d.docno 
where d.checkflag=1 and a.resno like ''RES%'' 
'
IF @BatchID IS NOT NULL SET @sql_h=RTRIM(@sql_h)+ ' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_h=RTRIM(@sql_h)+ ' and a.MatNo like '+@MatNo +@charenter
SET @sql_h=RTRIM(@sql_h)+ ' group by BatchID' +@charenter

--5. @temptb_i 领预留未出数量
SET @sql_i='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_i+''') and [type]=''U'') drop table '+@temptb_i+'
select batchid, SUM(length)as length, SUM(qtyi) as qtyi
into '+@temptb_i+' 
from materialsend_detaild a(nolock) inner join 
materialsend_head d(nolock) on a.docno=d.docno 
left join materialout_head c(nolock) on a.docno=c.sendno 
where d.checkflag=1 and a.docno not like ''RES%'' and a.resno like ''RES%'' and c.docno is null 
--group by BatchID 
'
IF @BatchID IS NOT NULL SET @sql_i=RTRIM(@sql_i)+ ' and a.BatchID like '+@BatchID +@charenter
IF @MatNo IS NOT NULL SET @sql_i=RTRIM(@sql_i)+ ' and a.MatNo like '+@MatNo +@charenter
SET @sql_i=RTRIM(@sql_i)+ ' group by BatchID' +@charenter

--6. @temptb_vm
SET @sql_vm='
if exists(select 1 from sysobjects where id=object_id('''+@temptb_vm+''') and [type]=''U'') drop table '+@temptb_vm+'
select a.BatchID,a.MatNo,a.volumeid,a.mattype,a.mattypename,a.mattypedesc,a.MatDesc,a.OrderNo,a.line,a.orderserial,a.lockflag, 
a.ColorID,a.ColorDesc,a.Season,a.reqperson,a.Designer,a.dsgdeptdesc,a.supplierid, a.SupplierDesc,a.Package,a.batch, 
a.conversion,a.crockid,a.dsgpoperson,a.poprice,a.isoldmat,a.storeno,a.podept,a.podeptdesc,a.reqdept,a.reqdeptdesc, 
a.revperson,a.supply_colorname,a.part,a.dsgstyle,a.element,a.needqty,a.banid,a.goodsperiod,a.styleno,a.rev_number, 
a.isoptionalflag,a.optionalflaguser,a.optionalflagdate,a.clothareano,a.weight as kz,a.dsgclothareano,a.itemtype, 
(case when (a.mattypename=''针织'' or a.mattypename=''毛织'' or a.mattypename=''鸭绒'') 
then isnull(a.poprice,0)*isnull(b.weight,0) 
else isnull(a.poprice,0)*isnull(b.Length,0) 
end) as amount, 
b.LocationID,b.sampleqty,a.Lunit,a.Wunit, 
b.Length as StoreLength,--库存数量 
b.weight as StoreWeight,--库存重量 
d.Length inlength,--入库数量 
d.Weight inweight, 
(case when b.length-isnull(e.length,0)-isnull(i.length,0)<0 then 0 else b.length-isnull(e.length,0)-isnull(i.length,0) end) avlength,--可用数量=库存-正常未出-预留未出 
(case when b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0)<0 then 0 else b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0) end) avweight,--可用重量 
case WHEN isnull(f.length,0)-isnull(h.length,0) < 0 THEN b.length-isnull(e.length,0) 
WHEN b.length-isnull(e.length,0)-isnull(i.length,0)-(isnull(f.length,0)-isnull(h.length,0)) < 0 THEN 0 
else b.length-isnull(e.length,0)-isnull(i.length,0)-(isnull(f.length,0)-isnull(h.length,0)) 
end as avnoreslength, --实际可用数量= 库存-正常未出-预留未出-预留剩余 
case WHEN isnull(f.qtyi,0)-isnull(h.qtyi,0) < 0 THEN b.weight-isnull(e.qtyi,0) 
WHEN b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0)-(isnull(f.qtyi,0)-isnull(h.qtyi,0)) < 0 THEN 0 
else b.weight-isnull(e.qtyi,0)-isnull(i.qtyi,0)-(isnull(f.qtyi,0)-isnull(h.qtyi,0)) 
end as avnoresweight, --实际可用重量 
e.length as nochecknoreslen , --未审核(不包括领预留)|数量 
e.qtyi as nochecknoresweight, 
h.length as reslylen , --预留|已领数量(b) 
h.qtyi as reslyqtyi, 
case when (isnull(f.length,0)-isnull(h.length,0)) > 0 then isnull(f.length,0)-isnull(h.length,0) 
else 0.0 
end as reslensy , --预留|剩余数量(c=a-b) 
case when (isnull(f.qtyi,0)-isnull(h.qtyi,0)) > 0 then isnull(f.qtyi,0)-isnull(h.qtyi,0) 
else 0.0 
end as resweightsy, 
f.length as reslen , --预留|最初数量(a) 
f.qtyi as resweight,b.inoutdate,d.remark,d.CollectDate,d.DocNo as coldocno,d.turnoldragsdate,d.returndpt 

INTO '+@temptb_vm+' 

from materialbatchinfo (nolock) a left join 
MaterialStoreQty (nolock) b on b.BatchID=a.BatchID left join
(select * from '+@temptb_d_01+' union all select * from '+@temptb_d_02+') d on a.batchid=d.BatchID left join
'+@temptb_e+' e on e.BatchID=a.BatchID left join
'+@temptb_f+' f on f.BatchID=a.BatchID left join
'+@temptb_h+' h on h.BatchID=a.BatchID left join
'+@temptb_i+' i on i.BatchID=a.BatchID
where 1=1 
'
IF @MatNo IS NOT NULL SET @sql_vm=RTRIM(@sql_vm)+ ' and a.MatNo like '+@MatNo +@charenter
IF @mattype IS NOT NULL SET @sql_vm=RTRIM(@sql_vm)+ ' and a.mattype like '+@mattype +@charenter


/* end */ 

if (@banid is not null) or (@styleno is not null) 
begin 
set @sql='Select distinct cast(0 as bit ) as selectflag, 
a.LocationID,y.item_code MatNo,y.item_desc MatDesc,a.BatchID,a.volumeid,a.Package, 
a.avnoresweight Qtyi, 
a.Wunit as Qunit,a.storelength stocklength, 
a.storeweight stockweight, 
a.Wunit,a.conversion, 
a.avnoreslength as Length, 
a.lunit, 
a.avnoreslength as usablelength, 
(case when isnull(a.colorid,'''')<>'''' then a.colorid else y.color_name end) colorid, 
(case when isnull(a.colordesc,'''')<>'''' then a.colordesc else y.color_desc end) colordesc, 
a.mattype,y.Season,a.reqperson as person, 
case when reqd.req_serial is null then a.dsgpoperson else reqd.bantracknm end as dsgpoperson,a.crockid,a.sampleqty,NULL as resno,NULL as resline,a.storeno, 
case when reqd.req_serial is null then y.styleno else reqd.styleno end as styleno,case when reqd.req_serial is null then a.banid else reqd.banid end as templetid , 


a.itemtype, 
case when a.storeno in (''B'',''C'') then ''主料'' when a.storeno=''A'' then ''辅料'' else '''' end as itemtype1, 
--y.itemtypedesc, 

a.OrderNo,a.inoutdate,a.SupplierDesc,a.inLength as YLength,a.inWeight AS YWeight,a.supplierid,a.podeptdesc,a.supply_colorname, a.rev_number, 
a.mattypename,a.mattypedesc, 
case when reqd.req_serial is null then a.banid else reqd.banid end as banid, 
case when reqd.req_serial is null then a.part else reqd.part end as part, 
case when reqd.req_serial is null then a.Designer else reqd.dsgdeptname end as Designer, 
case when reqd.req_serial is null then a.dsgstyle else reqd.dsgstyle end as dsgstyle, 

reqd.pre_number,reqd.pre_line,reqd.needqty,pre.unit as preunit, 
case when pre.unit<>a.Lunit and pre.unit='''' then (pre.needqty-ISNULL(pre.cancleQty,0)-ISNULL(pre.cancleQty2,0))*a.sampleqty/a.conversion 
else 
(pre.needqty-ISNULL(pre.cancleQty,0)-ISNULL(pre.cancleQty2,0)) end preneedqty,(isnull(c.outlength,0)+ISNULL(d.sendlength,0)) bcklength, 
case when a.storeno in (''B'',''C'') and a.avnoreslength-((case when pre.unit<>a.Lunit and pre.unit='''' then pre.rtnqty*a.sampleqty/a.conversion else pre.rtnqty end)-isnull(c.outlength,0)-ISNULL(d.sendlength,0))>=0 then 
((case when pre.unit<>a.Lunit and pre.unit='''' then pre.rtnqty*a.sampleqty/a.conversion else pre.rtnqty end)-isnull(c.outlength,0)-ISNULL(d.sendlength,0)) 
when a.storeno in (''B'',''C'') and a.avnoreslength-((case when pre.unit<>a.Lunit and pre.unit='''' then pre.rtnqty*a.sampleqty/a.conversion else pre.rtnqty end)-isnull(c.outlength,0)-ISNULL(d.sendlength,0))<0 then 
a.avnoreslength 
when a.storeno in (''A'') and a.avnoreslength-(pre.rtnqty-isnull(c.outlength,0)-ISNULL(d.sendlength,0))>=0 
then pre.rtnqty-isnull(c.outlength,0)-ISNULL(d.sendlength,0) 
when a.storeno in (''A'') and a.avnoreslength-(pre.rtnqty-isnull(c.outlength,0)-ISNULL(d.sendlength,0))<0 
then a.avnoreslength 
else a.avnoreslength end as prerestqty' 
IF @isImportPDAData='1' 
set @sql=@sql+',m.pdaid,m.pkey ' 

set @sql=@sql+' into #tmpmaterialsend 
from dsg_bi.dbo.Ban_Material_Needs y 
left join dsg_prelist_detail(nolock) pre on pre.banid=y.matioid and pre.item_code=y.item_code and pre.color_name=y.itemcolorid 
left join req_detaild reqd(nolock) on reqd.pre_number=pre.pre_number and reqd.pre_line=pre.pre_line 
left join req_head reqh(nolock) on reqh.req_serial=reqd.req_serial 
left join '+@temptb_vm+' a
on a.orderserial=reqd.req_serial and a.line=reqd.req_line 


left join materialtype (nolock) b on a.mattype=b.mattypeid 
left join MaterialLocationInfo (nolock) k on a.LocationID = k.locationID 
left join '+@temptb_c+' c on c.pre_number=reqd.pre_number and c.pre_line=reqd.pre_line --已出库 
left join '+@temptb_d+' d on d.pre_number=reqd.pre_number and d.pre_line=reqd.pre_line --未出库 
'+@charenter 

IF @isImportPDAData='1' 
begin 
set @sql=@sql+' INNER JOIN (SELECT batchid,pdaid,pkey FROM dbo.pdadsgclothsendll_res (NOLOCK) 
WHERE userid='''+@loginid+''''+' AND isend=''0'' AND docType='''+@docType+'''' +' AND datediff(day,worktime,GETDATE())<7 '+@charenter 

IF @pdaDocNo IS NOT NULL 
BEGIN 
SET @sql = @sql + ' and pkey like ' + @pdadocno + @charenter 
END 
SET @sql = @sql + ' ) m ON a.batchid=m.batchid ' + @charenter 
end 
SET @sql = @sql + 'where 1=1 and (k.lockflag is null or k.lockflag <> ''1'') '+@charenter 
if @qx_12=1 
SET @sql = @sql +' and isnull(reqh.tjkflag,0)=0 ' 

if @bantype is not null 
set @sql=@sql+' and y.bantype like '+@bantype+@charenter 
else 
set @sql=@sql+' and y.bantype=''齐色'' '+@charenter 


if @banid is not null set @sql=@sql+' and y.matioid like '+@banid+@charenter 
if @styleno is not null set @sql=@sql+' and y.styleno like '+@styleno+@charenter 
end 
else 
begin 
set @sql='Select top 4000 cast(0 as bit ) as selectflag,a.LocationID,a.MatNo,a.MatDesc,a.BatchID,a.volumeid,a.Package, 
a.avnoresweight Qtyi, 
a.Wunit as Qunit,a.storelength stocklength,--库存数量 
a.storeweight stockweight, 
a.Wunit,a.conversion, 
a.avnoreslength as Length, 
a.Lunit, 
a.avnoreslength as usablelength,--实际可用 
a.ColorID,a.ColorDesc, a.mattype,a.Season,a.reqperson as person, 
case when reqd.req_serial is null then a.dsgpoperson else reqd.bantracknm end as dsgpoperson,a.crockid,a.sampleqty,NULL as resno,NULL as resline,a.storeno, 
case when reqd.req_serial is null then a.styleno else reqd.styleno end as styleno,case when reqd.req_serial is null then a.banid else reqd.banid end as templetid , 


a.itemtype, 
case when a.storeno in (''B'',''C'') then ''主料'' when a.storeno=''A'' then ''辅料'' else '''' end as itemtype1, 

a.OrderNo,a.SupplierDesc,a.inLength as YLength,a.inWeight AS YWeight,a.supplierid,a.podeptdesc,a.supply_colorname, a.rev_number, 
a.mattypename,a.mattypedesc, 
case when reqd.req_serial is null then a.banid else reqd.banid end as banid, 
case when reqd.req_serial is null then a.part else reqd.part end as part, 
case when reqd.req_serial is null then a.Designer else reqd.dsgdeptname end as Designer, 
case when reqd.req_serial is null then a.dsgstyle else reqd.dsgstyle end as dsgstyle, 

reqd.pre_number,reqd.pre_line,pre.unit as preunit,' 
if @receivedpt='订购' 
set @sql=@sql+' case when pre.unit<>a.Lunit and pre.unit='''' then (pre.needqty+reqd.qtyotherorder-ISNULL(pre.cancleQty,0)-ISNULL(pre.cancleQty2,0))*a.sampleqty/a.conversion 
else 
(pre.needqty+reqd.qtyotherorder-ISNULL(pre.cancleQty,0)-ISNULL(pre.cancleQty2,0)) end preneedqty,' 
else 
set @sql=@sql+' case when pre.unit<>a.Lunit and pre.unit='''' then (pre.needqty-ISNULL(pre.cancleQty,0)-ISNULL(pre.cancleQty2,0))*a.sampleqty/a.conversion 
else 
(pre.needqty-ISNULL(pre.cancleQty,0)-ISNULL(pre.cancleQty2,0)) end preneedqty,' 
set @sql=@sql+'(isnull(c.outlength,0)+ISNULL(d.sendlength,0)) bcklength, 
case when a.storeno in (''B'',''C'') and a.avnoreslength-((case when pre.unit<>a.Lunit and pre.unit='''' then pre.rtnqty*a.sampleqty/a.conversion 
else pre.rtnqty end)-isnull(c.outlength,0)-ISNULL(d.sendlength,0))>=0 
then ((case when pre.unit<>a.Lunit and pre.unit='''' then pre.rtnqty*a.sampleqty/a.conversion 
else pre.rtnqty end)-isnull(c.outlength,0)-ISNULL(d.sendlength,0)) 
when a.storeno in (''B'',''C'') and a.avnoreslength-((case when pre.unit<>a.Lunit and pre.unit='''' then pre.rtnqty*a.sampleqty/a.conversion 
else pre.rtnqty end)-isnull(c.outlength,0)-ISNULL(d.sendlength,0))<0 then a.avnoreslength 
when a.storeno in (''A'') and a.avnoreslength-(pre.rtnqty-isnull(c.outlength,0)-ISNULL(d.sendlength,0))>=0 
then pre.rtnqty-isnull(c.outlength,0)-ISNULL(d.sendlength,0) 
when a.storeno in (''A'') and a.avnoreslength-(pre.rtnqty-isnull(c.outlength,0)-ISNULL(d.sendlength,0))<0 
then a.avnoreslength 
else a.avnoreslength end as prerestqty ' 
IF @isImportPDAData='1' 
set @sql=@sql+',m.pdaid,m.pkey ' 

set @sql=@sql+' into #tmpmaterialsend 
--from vm_batchsendqty a 
from '+@temptb_vm_0+' a 
left join materialtype (nolock) b on a.mattype=b.mattypeid 
left join req_detaild reqd(nolock) on a.orderserial=reqd.req_serial and a.line=reqd.req_line 
left join req_head reqh(nolock) on reqh.req_serial=reqd.req_serial 
left join MaterialLocationInfo (nolock) k on a.LocationID = k.locationID 
Left join dsg_prelist_detail(nolock) pre on pre.pre_number=reqd.pre_number and pre.pre_line=reqd.pre_line 
left join '+@temptb_c+' c on c.pre_number=reqd.pre_number and c.pre_line=reqd.pre_line --已出库 
left join '+@temptb_d+' d on d.pre_number=reqd.pre_number and d.pre_line=reqd.pre_line --未出库 
'+@charenter 
IF @isImportPDAData='1' 
begin 
set @sql=@sql+' INNER JOIN (SELECT batchid,pdaid,pkey FROM dbo.pdadsgclothsendll_res (NOLOCK) 
WHERE userid='''+@loginid+''''+' AND isend=''0'' AND docType='''+@docType+'''' +' AND datediff(day,worktime,GETDATE())<7 '+@charenter 
IF @pdaDocNo IS NOT NULL 
BEGIN 
SET @sql = @sql + ' and pkey like ' + @pdadocno + @charenter 
END 
SET @sql = @sql + ' ) m ON a.batchid=m.batchid ' + @charenter 
end 

SET @sql = @sql + 'where 1=1 and a.storelength>0 and a.storeweight>0 and a.avnoreslength >0 and a.avnoresweight>0 
and (k.lockflag is null or k.lockflag <> ''1'') '+@charenter 
if @qx_12=1 
SET @sql = @sql +' and isnull(reqh.tjkflag,0)=0 ' 
end 


if @BatchID is not null set @sql=@sql+ 
' and a.BatchID like '+@BatchID+@charenter 
if @LocationID is not null set @sql=@sql+ 
' and a.LocationID like '+@LocationID+@charenter 
if @docType='1' set @sql=@sql+ --如果是开预留单,排除此货架 
' AND a.LocationID <>''BA666666'''+@charenter 

IF @docType <> '1'--如果是开领料单和退料出库单,只有以下用户可以开单 
AND @loginid NOT IN ( 'BF0011', 'BF1854', 'BF0625', 'BF0014', 'BF0632', 
'BF0667', 'BF0028', 'BF0025', 'BF1683', 'BF0012', 
'BF1255', 'BF0030', 'BF0043', 'BF0675', 'BF0609', 
'BF1287', 'BF0006', 'BF0013', 'BF0020', 'BF1781', 
'BF1896', 'BF1921','SA' ) 
SET @sql = @sql + ' AND a.LocationID <>''BA666666''' + @charenter 

if @MatNo is not null set @sql=@sql+ 
' and a.MatNo like '+@MatNo+@charenter 

if @OrderNo is not null set @sql=@sql+ 
' and a.OrderNo like '+@OrderNo+@charenter 

if @OrderUser is not null set @sql=@sql+ 
' and a.reqperson like '+@OrderUser+@charenter 

if @Supplier is not null set @sql=@sql+ 
' and a.SupplierID like '+@Supplier+@charenter 

if @Season is not null set @sql=@sql+ 
' and a.Season like '+@Season+@charenter 

if @Designer is not null set @sql=@sql+ 
' and ( reqd.dsgdeptname like '+@Designer+' or a.Designer like '+@Designer+')'+ @charenter 

if @TrackUser is not null set @sql=@sql+ 
' and (reqd.bantracknm like '+@TrackUser+' or a.dsgpoperson like '+@TrackUser+')'+ @charenter 


if @colorid is not null set @sql=@sql+ 
' and a.colorid = '+ replace(@colorid,'%','')+@charenter 

if @colordesc is not null set @sql=@sql+ 
' and a.colordesc like '+@colordesc+@charenter 
if @matdesc is not null set @sql=@sql+ 
' and a.matdesc like '+@matdesc+@charenter 


if @Flag=1 set @sql=@sql+ 
' and isnull(a.locationid,'''')<>'''''+@charenter 

if @Flag=2 set @sql=@sql+ 
' and isnull(a.locationid,'''')='''''+@charenter 

if @isnewmat=1 set @sql=@sql+ 
' and isnull(a.isoldmat,0)>0'+@charenter 
if @isnewmat=2 set @sql=@sql+ 
' and isnull(a.isoldmat,0)=0'+@charenter 

if @mattype is not null set @sql=@sql+ 
' and a.mattype like '+@mattype+@charenter 

if @crockid is not null set @sql=@sql+ 
' and isnull(a.crockid,'''') like '+@crockid+@charenter 

if @storeno is not null set @sql=@sql+ 
' and a.storeno= '+@storeno+@charenter 

if @revnumber is not null set @sql=@sql+ 
' and a.rev_number = '+@revnumber+@charenter 

if @reqname is not null set @sql=@sql+ 
' and (reqd.reqperson like '+@reqname + ')'+ @charenter 

if @tracgpname is not null set @sql=@sql+ 
' and (reqd.rptgroupnm like '+@tracgpname + ')'+ @charenter 


set @sql=@sql+' select * from #tmpmaterialsend ' 
--删除临时表
SET @sql_drop_tb_0=' drop table ' + @temptb_e_0
+    ' drop table ' + @temptb_f_0
+    ' drop table ' + @temptb_h_0
+    ' drop table ' + @temptb_i_0
+    ' drop table ' + @temptb_vm_0
+ ' drop table '+@temptb_d_01 
+ ' drop table '+@temptb_d_02
+ ' drop table '+@temptb_e
+ ' drop table '+@temptb_f
+ ' drop table '+@temptb_h
+ ' drop table '+@temptb_i
+ ' drop table '+@temptb_vm
+ ' drop table '+@temptb_c
+ ' drop table '+@temptb_d

EXEC ( @sql_temp_c+@sql_temp_d+ @sql_e_0+@sql_f_0+@sql_h_0+@sql_i_0+@sql_vm_0 ) 
EXEC ( @sql_d_01+@sql_d_02+@sql_e+@sql_f+@sql_h+@sql_i+@sql_vm) 
exec(@sql + @sql_drop_tb_0)

 

转载于:https://www.cnblogs.com/lxh168/p/7560117.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值