a
This commit is contained in:
@@ -0,0 +1,281 @@
|
||||
declare
|
||||
@moBillNo varchar(100)
|
||||
,@salesBillNo varchar(100)
|
||||
,@startMaterialId int
|
||||
,@endMaterialId int
|
||||
,@FSDate varchar (30)
|
||||
,@FEDate varchar (30)
|
||||
,@FSNumber varchar (50)
|
||||
,@FENumber varchar (50)
|
||||
,@FSStock varchar (max)
|
||||
SET @moBillNo =''
|
||||
SET @salesBillNo =''
|
||||
SET @moBillNo = 0
|
||||
SET @moBillNo = 0
|
||||
SET @FSDate = '2024-01-05'
|
||||
SET @FEDate = '2024-02-05'
|
||||
SET @FSNumber = '1.01'
|
||||
SET @FENumber = '1.01'
|
||||
--SET @FSNumber = 'TSH182H000208O'
|
||||
--SET @FENumber = 'TSH182H000208O'
|
||||
SET @FSStock =''
|
||||
|
||||
declare @FCloseBALDate varchar (30)
|
||||
declare @FClosedate varchar (30)
|
||||
|
||||
--<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ĩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
If NOT Exists(
|
||||
SELECT FORGID, MAX(FCLOSEDATE) fclosedate
|
||||
FROM T_STK_CLOSEPROFILE
|
||||
WHERE FORGID IN (1) AND FCATEGORY = 'STK' AND (FCLOSEDATE < @FSDate)
|
||||
GROUP BY FORGID)
|
||||
BEGIN
|
||||
SET @FClosedate='2020-01-01'
|
||||
SET @FCloseBALDate='2020-01-01'
|
||||
--print @FClosedate
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
--SET @FClosedate='2019-07-01'
|
||||
SELECT @FClosedate= CONVERT(varchar (30), DATEADD(D, 1,MAX(FCLOSEDATE)),23) FROM
|
||||
T_STK_CLOSEPROFILE WHERE ((FORGID IN (1) AND FCATEGORY = 'STK') AND (FCLOSEDATE < @FSDate)) GROUP BY FORGID
|
||||
SET @FCloseBALDate=CONVERT(varchar (30), DATEADD(D, -1,@FClosedate),23)
|
||||
--print @FClosedat
|
||||
END
|
||||
|
||||
DECLARE @FSWL varchar (50)
|
||||
DECLARE @FEWL varchar (50)
|
||||
|
||||
SET @FSWL=''
|
||||
SET @FEWL=''
|
||||
|
||||
IF @FSNumber<>'' and @FENumber<>''
|
||||
BEGIN
|
||||
SET @FSWL= @FSNumber
|
||||
SET @FEWL= @FENumber
|
||||
END
|
||||
IF @FSNumber<>'' and @FENumber=''
|
||||
BEGIN
|
||||
SET @FSWL= @FSNumber
|
||||
SELECT @FEWL=MAX(FNUMBER) FROM T_BD_MATERIAL
|
||||
END
|
||||
IF @FSNumber='' and @FENumber<>''
|
||||
BEGIN
|
||||
SET @FEWL= @FENumber
|
||||
SELECT @FSWL=MIN(FNUMBER) FROM T_BD_MATERIAL
|
||||
END
|
||||
IF @FSNumber='' and @FENumber=''
|
||||
BEGIN
|
||||
SELECT @FSWL=MIN(FNUMBER) FROM T_BD_MATERIAL
|
||||
SELECT @FEWL=MAX(FNUMBER) FROM T_BD_MATERIAL
|
||||
END
|
||||
|
||||
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱѡȡ<EFBFBD>ֿ<EFBFBD>
|
||||
|
||||
IF EXISTS(select * FROM tempdb..SYSOBJECTS WHERE id=OBJECT_ID('tempdb..#tmpStockID'))
|
||||
BEGIN
|
||||
DROP TABLE #tmpStockID
|
||||
print '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
||||
END
|
||||
Create Table #tmpStockID (
|
||||
FID INT IDENTITY(1,1)
|
||||
,FStockID INT
|
||||
)
|
||||
DECLARE @Strsql varchar(max)
|
||||
SET @Strsql= 'insert into #tmpStockID select distinct FSTOCKID from T_BD_STOCK where 1=1 ' +@FSStock
|
||||
EXEC(@Strsql)
|
||||
|
||||
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Stock_Status_temp'))
|
||||
begin
|
||||
drop table #Stock_Status_temp
|
||||
print '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
||||
end
|
||||
|
||||
Create Table #Stock_Status_temp (
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT IDENTITY(1,1),
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT ,
|
||||
<EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD> varchar(100) null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar(255) null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD> varchar(255) null ,
|
||||
<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD> varchar(100) null ,
|
||||
--<EFBFBD><EFBFBD>λ varchar(30) null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD>ڲɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD>ĩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD>۳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD>ֿⲦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD>ֿⲦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD>깺δת<EFBFBD><EFBFBD> DECIMAL (18, 2) Null,
|
||||
<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD> DECIMAL (18, 2) Null ,
|
||||
<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT ,
|
||||
<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar(100) null ,
|
||||
<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar(255) null ,
|
||||
<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT ,
|
||||
<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ʽ varchar(255) null
|
||||
)
|
||||
|
||||
if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TMP'))
|
||||
begin
|
||||
drop table #TMP
|
||||
print '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
||||
end
|
||||
|
||||
CREATE TABLE #TMP (
|
||||
FID INT IDENTITY(1,1),
|
||||
FSTOCKORGID INT NOT NULL DEFAULT 0,
|
||||
FBILLENTRYID INT NOT NULL DEFAULT 0,
|
||||
FORDERBY INT NOT NULL DEFAULT 0,
|
||||
FSTOCKIO CHAR (1) NULL,
|
||||
FMATERIALID INT NOT NULL DEFAULT 0,
|
||||
FAUXPROPID INT NOT NULL DEFAULT 0,
|
||||
FDATE DATETIME NULL,
|
||||
FSTOCKID INT NOT NULL DEFAULT 0,
|
||||
FSTOCKLOCID INT NOT NULL DEFAULT 0,
|
||||
FSTOCKSTATUSID INT NOT NULL DEFAULT 0,
|
||||
FBILLNAME NVARCHAR (100) NULL,
|
||||
FBILLID INT NOT NULL DEFAULT 0,
|
||||
FBILLSEQID INT NULL,
|
||||
FBILLNO NVARCHAR (100) NULL,
|
||||
FBASEQCQTY DECIMAL (23, 10) NOT NULL DEFAULT 0,
|
||||
FBASEINQTY DECIMAL (23, 10) NOT NULL DEFAULT 0,
|
||||
FBASEOUTQTY DECIMAL (23, 10) NOT NULL DEFAULT 0
|
||||
)
|
||||
|
||||
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>BOM<EFBFBD>㼶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE ID=OBJECT_ID('TEMPDB..#YC_T_MRP'))
|
||||
BEGIN
|
||||
DROP TABLE #YC_T_MRP
|
||||
END
|
||||
|
||||
CREATE TABLE #YC_T_MRP(
|
||||
FID INT IDENTITY(1,1),
|
||||
FBOMNumber NVARCHAR(255),
|
||||
FMATERIALID INT,
|
||||
<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> NVARCHAR(255),
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NVARCHAR(255),
|
||||
<EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD> DECIMAL(28,10) DEFAULT (0),
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DECIMAL(28,10),--BOM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD>ĸ DECIMAL(28,10),--BOM<EFBFBD><EFBFBD>ĸ
|
||||
FQty DECIMAL(28,10),--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FLevle INT ,
|
||||
FERPCLSID INT,
|
||||
FOrderNum NVARCHAR(255),
|
||||
FBOMID INT,
|
||||
BOM<EFBFBD>㼶 NVARCHAR(200) NULL,
|
||||
FSEQ1 INT,
|
||||
FSEQ2 INT,
|
||||
FSEQ3 INT,
|
||||
FSEQ4 INT,
|
||||
FSEQ5 INT,
|
||||
FSEQ6 INT,
|
||||
FParentNumber NVARCHAR(255)
|
||||
)
|
||||
|
||||
IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE ID=OBJECT_ID('TEMPDB..#BOMTMP'))
|
||||
BEGIN
|
||||
DROP TABLE #BOMTMP
|
||||
END
|
||||
|
||||
/*ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>BOM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
SELECT
|
||||
ID=IDENTITY(INT,1,1)
|
||||
,T0.FID
|
||||
,T0.FNUMBER
|
||||
,T0.FMATERIALID
|
||||
,ROW_NUMBER() OVER(PARTITION BY T0.FMATERIALID ORDER BY t0.FID DESC) AS ROWID
|
||||
INTO #BOMTmp
|
||||
FROM T_ENG_BOM T0
|
||||
INNER JOIN T_BD_MATERIAL TM ON t0.FMATERIALID=TM.FMATERIALID --<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
||||
WHERE (t0.FDOCUMENTSTATUS = 'C') and (t0.FFORBIDSTATUS='A')
|
||||
AND (TM.FNUMBER >= @FSWL AND TM.FNUMBER <=@FEWL)
|
||||
ORDER BY FMATERIALID,FNUMBER
|
||||
|
||||
--/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ͬһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°汾<EFBFBD><EFBFBD>BOM*/
|
||||
--DELETE FROM #BOMTmp WHERE id NOT IN (SELECT max(id) FROM #BOMTmp GROUP BY FMATERIALID)
|
||||
DELETE FROM #BOMTmp WHERE ROWID > 1
|
||||
|
||||
IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE ID=OBJECT_ID('TEMPDB..#TMP_TOP_BOM_SET'))
|
||||
BEGIN
|
||||
DROP TABLE #TMP_TOP_BOM_SET
|
||||
END
|
||||
|
||||
CREATE TABLE #TMP_TOP_BOM_SET(
|
||||
FID int
|
||||
,FNUMBER varchar(80)
|
||||
,FMATERIALID int
|
||||
,FSEQ int
|
||||
,BOMLEVEL int
|
||||
,TOPID int
|
||||
,showlevel varchar(80)
|
||||
,BOMID int
|
||||
,FERPCLSID int
|
||||
)
|
||||
CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID);
|
||||
|
||||
INSERT INTO #TMP_TOP_BOM_SET
|
||||
SELECT
|
||||
t0.FID
|
||||
,t1.FNUMBER
|
||||
,t0.FMATERIALID
|
||||
,ROW_NUMBER() over(partition BY t0.FID order by t0.fid)
|
||||
,1 'BOMLEVEL'
|
||||
,t0.FID AS 'TOPID'
|
||||
,''
|
||||
,t0.FID AS 'BOMID'
|
||||
,t2.FERPCLSID
|
||||
FROM T_ENG_BOM t0
|
||||
INNER JOIN T_BD_MATERIAL t1 on t0.FMATERIALID = t1.FMATERIALID
|
||||
LEFT OUTER JOIN t_BD_MaterialBase t2 ON t1.FMATERIALID = t2.FMATERIALID
|
||||
INNER JOIN #BOMTmp t3 on t3.FNUMBER = t0.FNUMBER AND t3.FMATERIALID = t0.FMATERIALID
|
||||
WHERE 1 = 1
|
||||
AND (t0.FDOCUMENTSTATUS = 'C')
|
||||
|
||||
DECLARE @num INT,@level int,@LoopCount int
|
||||
SET @num = 1
|
||||
SET @level =1
|
||||
SET @LoopCount = 0;
|
||||
|
||||
|
||||
WHILE (@num > 0 AND @LoopCount < 10)
|
||||
BEGIN
|
||||
INSERT INTO #TMP_TOP_BOM_SET
|
||||
SELECT
|
||||
t3.FID
|
||||
,t2.FNUMBER
|
||||
,t1.FMATERIALID
|
||||
,ROW_NUMBER() over(partition BY t0.TOPID,t0.bomid order by t0.fseq) 'FSEQ'
|
||||
,@level + 1 AS 'BOMLEVEL'
|
||||
,t0.TOPID
|
||||
,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.bomid,t0.fid order by t1.fseq) as VARCHAR)) 'showLevel'
|
||||
,0 'OID'
|
||||
,t4.FERPCLSID
|
||||
FROM
|
||||
#TMP_TOP_BOM_SET t0
|
||||
LEFT JOIN T_ENG_BOMCHILD t1 on t0.BOMID = t1.FID
|
||||
INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t1.FMATERIALID
|
||||
LEFT JOIN T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t1.FMATERIALID AND t1_l.FLOCALEID = 2052
|
||||
LEFT JOIN T_ENG_BOM t3 on t1.FID = t3.FID--t1.FMATERIALID = t3.FMATERIALID
|
||||
LEFT JOIN T_BD_MATERIALBASE t4 on t4.FMATERIALID = t1.FMATERIALID
|
||||
WHERE 1 = 1
|
||||
--AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 )
|
||||
AND t0.FERPCLSID >= 2
|
||||
AND t0.BOMLEVEL = @level
|
||||
AND t3.FDOCUMENTSTATUS = 'C'
|
||||
AND t2.FFORBIDSTATUS = 'A'
|
||||
|
||||
SET @num = @@ROWCOUNT
|
||||
SET @level += 1
|
||||
SET @LoopCount += 1
|
||||
END
|
||||
SELECT * FROM #TMP_TOP_BOM_SET
|
||||
Reference in New Issue
Block a user