This commit is contained in:
PastSaid
2024-03-11 14:47:23 +08:00
parent 6dd1816c96
commit 08d8878eef
202 changed files with 274 additions and 246 deletions

View File

@@ -0,0 +1,80 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP1111111111')
DROP PROCEDURE dbo.PROC_INQUIRPLMTMPRTP1111111111;
GO
CREATE PROCEDURE PROC_INQUIRPLMTMPRTP1111111111
@FRECORDDATE DATETIME
,@FRECORDYEAR INT
,@FRECORDMONTH INT
AS
BEGIN
SELECT
AE.FSRCBILLNO
,AE.FMATERIALID
,AE.FSALEORDERENTRYID
,AE.FSALEORDERENTRYSEQ
,SUM(AE.FQTY) AS FQTY
,SUM(B.FFINISHQTY) AS FFINISHQTY --
FROM
T_PRD_MO A
LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID
LEFT JOIN T_PRD_MOENTRY_A AE_A ON AE_A.FENTRYID = AE.FENTRYID
LEFT JOIN (SELECT
A.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e e52b554423704173b7306554708a8b05
,AE.FMOENTRYID
,FFINISHQTY
FROM
T_PRD_MORPT A
LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID
WHERE A.FDOCUMENTSTATUS='C'
) B on B.FMOENTRYID = AE.FENTRYID
RIGHT JOIN (
SELECT
A.FMATERIALID
,A.FNUMBER
,B.FSTOCKORGID
,B.FLOT
,SUM(B.FBASEQTY) AS FBASEQTY
,@FRECORDDATE AS FRECORDDATE
,@FRECORDYEAR as FRECORDYEAR
,@FRECORDMONTH as FRECORDMONTH
,AP.FLOTYIELD -- '每批产量'
,AP.FPACKUNITCONVERRATIO -- '包装规格'
,AP.FPACKUNITID -- '单位'
--INTO #TMPRECORD
FROM
T_BD_MATERIAL A
INNER JOIN T_BD_MATERIALPRODUCE AP ON AP.FMATERIALID = A.FMATERIALID
INNER JOIN T_STK_INVENTORY B ON A.FMASTERID = B.FMATERIALID
WHERE
B.FSTOCKORGID = 100038 And A.FDOCUMENTSTATUS = 'C'
GROUP BY
A.FMATERIALID
,A.FNUMBER
,B.FSTOCKORGID
,B.FLOT
,AP.FLOTYIELD -- '每批产量'
,AP.FPACKUNITCONVERRATIO -- '包装规格'
,AP.FPACKUNITID -- '单位'
) C on C.FMATERIALID = AE.FMATERIALID
WHERE
AE.FSRCBILLTYPE ='PLN_PLANORDER' AND AE_A.FSTATUS <> 6 and AE.FSALEORDERENTRYID <> 0
GROUP BY
AE.FSRCBILLNO
,AE.FMATERIALID
,AE.FSALEORDERENTRYID
,AE.FSALEORDERENTRYSEQ
--ALTER TABLE #TMPRECORD ADD FRECORDDATE DATETIME
--UPDATE #TMPRECORD SET FRECORDDATE = @FRECORDDATE
--ALTER TABLE #TMPRECORD ADD FRECORDYEAR int DEFAULT 0
--UPDATE #TMPRECORD SET FRECORDYEAR = @FRECORDYEAR
--ALTER TABLE #TMPRECORD ADD FRECORDMONTH int DEFAULT 0
--UPDATE #TMPRECORD SET FRECORDMONTH = @FRECORDMONTH
SELECT * FROM #TMPRECORD
DROP TABLE #TMPRECORD
END

View File

@@ -0,0 +1,162 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP')
DROP PROCEDURE dbo.PROC_INQUIRPLMTMPRTP;
GO
CREATE PROCEDURE PROC_INQUIRPLMTMPRTP
@TableName varchar(100)
,@STARTDATE date
,@ENDDATE date
,@LCID int
,@SeqFld varchar(200)
AS
BEGIN
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD>start
SELECT
t0E.FSRCBILLNO
,t0E.FMATERIALID
,t0E.FSALEORDERENTRYID
,t0E.FSALEORDERENTRYSEQ
,SUM(t0E.FQTY) AS FQTY
,SUM(t1.FFINISHQTY) AS FFINISHQTY --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
into #TMP_MO_INFO
FROM
T_PRD_MO t0
LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID
LEFT JOIN (SELECT
t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0E.FMOENTRYID
,FFINISHQTY
FROM
T_PRD_MORPT t0
LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID
WHERE t0.FDOCUMENTSTATUS='C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
) t1 on t1.FMOENTRYID = t0E.FENTRYID
WHERE
t0E.FSRCBILLTYPE ='PLN_PLANORDER'
AND t0E_A.FSTATUS <> 6
AND t0E.FSALEORDERENTRYID <> 0
AND t0.FDATE between @STARTDATE and @ENDDATE
GROUP BY
t0E.FSRCBILLNO
,t0E.FMATERIALID
,t0E.FSALEORDERENTRYID
,t0E.FSALEORDERENTRYSEQ
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD>end
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>start
SELECT
t0.FID
,t0.FBILLNO
,t0.FMATERIALID
,t0_B.FSALEORDERENTRYID
,SUM(t0.FFirmQty) as 'FFirmQty'
,SUM(t0.FORDERQTY) as 'FOrderQty'
into #TMP_PLN_INFO
FROM
T_PLN_PLANORDER t0
LEFT JOIN T_PLN_PLANORDER_B t0_B ON t0.FID = t0_B.FID
WHERE
t0.FRELEASETYPE = 1
--AND (t0.FRELEASESTATUS = 1 OR t0.FRELEASESTATUS = 2 )
GROUP By
t0.FID
,t0.FBILLNO
,t0.FRELEASETYPE
,t0.FMATERIALID
,t0_B.FSALEORDERENTRYID
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end
--<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>start
SELECT
t0.FID
,t0.FBILLNO
,t0E.FMATERIALID
,t0E.FENTRYID
,t2.FNUMBER
,t2_L.FNAME
,t2_L.FSPECIFICATION
,(CASE t2S.FEXPPERIOD
WHEN 0 THEN ''
ELSE
CASE
t2S.FEXPUNIT
WHEN 'Y' THEN
CONVERT ( VARCHAR,CAST((t2S.FEXPPERIOD * 12) AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'M' THEN
CONVERT ( VARCHAR,CAST(t2S.FEXPPERIOD AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 't3' THEN
CONVERT ( VARCHAR, CAST((
CASE t2S.FEXPPERIOD % 30 WHEN 0 THEN t2S.FEXPPERIOD / 30 ELSE t2S.FEXPPERIOD / 365 * 12 END
) AS INT)) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ELSE ''
END
END) AS 'SHELFLIFE'
,t2.FLotSize AS StandardLot
,t2S.FSAFESTOCK AS SAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t2S.FSTOREUNITID --<EFBFBD><EFBFBD><EFBFBD>λ
,(dbo.PackageValConver(t2S.FSAFESTOCK, t2P.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
,t2P.FLOTYIELD -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t2P.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,t2P.FPACKUNITID -- '<27><>λ'
,dbo.PackageValConver(t0E.M01,t2P.FPACKUNITCONVERRATIO) as M01
,dbo.PackageValConver(t0E.S01,t2P.FPACKUNITCONVERRATIO) as S01
,dbo.PackageValConver(t0E.S02,t2P.FPACKUNITCONVERRATIO) as S02
,dbo.PackageValConver(t0E.S03,t2P.FPACKUNITCONVERRATIO) as S03
,dbo.PackageValConver((ISNULL(t3.FQTY,0) - ISNULL(t3.FFINISHQTY,0)),t2P.FPACKUNITCONVERRATIO) AS InProductionQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t4.FQTY,0),t2P.FPACKUNITCONVERRATIO) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver((ISNULL(t3.FQTY,0) + ISNULL(t4.FQTY,0)),t2P.FPACKUNITCONVERRATIO) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(t1.FOrderQty,t2P.FPACKUNITCONVERRATIO) AS OrderLotQty --<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t1.FFirmQty
,t1.FOrderQty
into #TMPMPS
FROM
T_PLN_FORECAST t0
LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN #TMP_PLN_INFO t1 ON t1.FSALEORDERENTRYID = t0E.FENTRYID AND t1.FMATERIALID = t0E.FMATERIALID
LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0E.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L t2_L ON t2_L.FMATERIALID = t0E.FMATERIALID
LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0E.FMATERIALID
LEFT JOIN T_BD_MATERIALPRODUCE t2P ON t2P.FMATERIALID = t0E.FMATERIALID
LEFT JOIN #TMP_MO_INFO t3 on t3.FSRCBILLNO = t1.FBILLNO AND t3.FSALEORDERENTRYID = t0E.FENTRYID AND t3.FSALEORDERENTRYSEQ = t0E.FSEQ
LEFT JOIN (SELECT
t0.FMATERIALID
,t0.FSTOCKORGID
,SUM(t1.FQTY) AS FQTY
FROM T_STK_INVENTORY t0
LEFT JOIN T_STK_INVINITDETAIL t1 ON t0.FMATERIALID = t1.FMATERIALID AND t0.FSTOCKID = t1.FSTOCKID
GROUP BY t0.FMATERIALID,t0.FSTOCKORGID
) t4 on t4.FMATERIALID = t0E.FMATERIALID
WHERE
--t0.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
t0.FDATE BETWEEN @STARTDATE AND @ENDDATE
--<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>λ
ALTER TABLE #TMPMPS ADD FSTOREUNITNAME VARCHAR(50)
UPDATE #TMPMPS SET #TMPMPS.FSTOREUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FSTOREUNITID
ALTER TABLE #TMPMPS ADD FPACKUNITNAME VARCHAR(50)
UPDATE #TMPMPS SET #TMPMPS.FPACKUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FPACKUNITID
ALTER TABLE #TMPMPS ADD FPACKUNITCONVT VARCHAR(100)
UPDATE T SET T.FPACKUNITCONVT = CONCAT(CONVERT(VARCHAR,T.FPACKUNITCONVERRATIO),T.FSTOREUNITNAME,'/',T.FPACKUNITNAME) FROM #TMPMPS T
--ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6)
--UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T
--<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end
DECLARE @SQL VARCHAR(2000)
SET @sql = N'
select
t0.*
,'+@SeqFld+'
into '+ @TableName +' From #TMPMPS t0 '
EXECUTE(@sql)
DROP TABLE #TMPMPS
DROP TABLE #TMP_PLN_INFO
DROP TABLE #TMP_MO_INFO
END

View File

@@ -0,0 +1,25 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_PPL_SaveCurrentData')
DROP PROCEDURE dbo.PROC_PPL_SaveCurrentData;
GO
CREATE PROCEDURE PROC_PPL_SaveCurrentData
@TableName varchar(100)
,@FRECORDDATE varchar(20)
,@FRECORDYEAR INT
,@FRECORDMONTH INT
AS
BEGIN
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_PLAN_PLANPLMRPT]') AND type IN ('U'))
BEGIN
DELETE FROM T_PLAN_PLANPLMRPT WHERE FRECORDDATE = @FRECORDYEAR AND FRECORDMONTH = @FRECORDMONTH
END
DECLARE @SQL VARCHAR(2000)
SET @sql = '
SELECT *,'+@FRECORDDATE+' AS FRECORDDATE ,'+@FRECORDYEAR+' AS FRECORDYEAR ,'+@FRECORDMONTH+' AS FRECORDMONTH
INTO T_PLAN_PLANPLMRPT FROM '+@TableName
EXECUTE(@sql)
END

View File

@@ -0,0 +1,30 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_PPL_AutoSaveCurrentData')
DROP PROCEDURE dbo.PROC_PPL_AutoSaveCurrentData;
GO
CREATE PROCEDURE PROC_PPL_AutoSaveCurrentData
@TableName varchar(100)
,@FRECORDDATE datetime
,@STARTDATE date
,@ENDDATE date
,@FRECORDYEAR INT
,@FRECORDMONTH INT
AS
BEGIN
EXEC PROC_INQUIRPLMTMPRTP @TableName,@STARTDATE,@ENDDATE,2052,' ROW_NUMBER() OVER(ORDER BY t0.FID ) FIDENTITYID '
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_PLAN_PLANPLMRPT]') AND type IN ('U'))
BEGIN
DELETE FROM T_PLAN_PLANPLMRPT WHERE FRECORDDATE = @FRECORDYEAR AND FRECORDMONTH = @FRECORDMONTH
END
DECLARE @SQL VARCHAR(2000)
SET @sql = '
SELECT *,'+@FRECORDDATE+' AS FRECORDDATE ,'+@FRECORDYEAR+' AS FRECORDYEAR ,'+@FRECORDMONTH+' AS FRECORDMONTH
INTO T_PLAN_PLANPLMRPT FROM '+@TableName
EXECUTE(@sql)
execute(N'drop table'+ @TableName)
END

View File

@@ -0,0 +1,38 @@
SELECT
--A.FID
--,AE.FENTRYID
--,AE.FSALEORDERNO
--,AE.FSRCBILLID
--,AE.FSRCBILLENTRYID
--,AE.FSRCBILLENTRYSEQ
--,AE.FSRCBILLTYPE
--,AE.FSALEORDERID
--,AE_A.FREQSRC
--,AE_A.FCREATETYPE
--,AE_A.FSTATUS --6<EFBFBD><EFBFBD><EFBFBD>ѽ
AE.FSRCBILLNO
,AE.FMATERIALID
,AE.FSALEORDERENTRYID
,AE.FSALEORDERENTRYSEQ
,SUM(AE.FQTY) AS FQTY
,SUM(B.FFINISHQTY) AS FFINISHQTY --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM
T_PRD_MO A
LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID
LEFT JOIN T_PRD_MOENTRY_A AE_A ON AE_A.FENTRYID = AE.FENTRYID
LEFT JOIN (SELECT
A.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,AE.FMOENTRYID
,FFINISHQTY
FROM
T_PRD_MORPT A
LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID
WHERE A.FDOCUMENTSTATUS='C'
) B on B.FMOENTRYID = AE.FENTRYID
WHERE
AE.FSRCBILLTYPE ='PLN_PLANORDER' AND AE_A.FSTATUS <> 6 and AE.FSALEORDERENTRYID <> 0
GROUP BY
AE.FSRCBILLNO
,AE.FMATERIALID
,AE.FSALEORDERENTRYID
,AE.FSALEORDERENTRYSEQ

View File

@@ -0,0 +1,44 @@
/*
Navicat Premium Data Transfer
Source Server : sql server
Source Server Type : SQL Server
Source Server Version : 15002080
Source Host : .:1433
Source Catalog : AIS20231110222743
Source Schema : dbo
Target Server Type : SQL Server
Target Server Version : 15002080
File Encoding : 65001
Date: 27/12/2023 16:44:40
*/
-- ----------------------------
-- Table structure for T_MATERIAL_INVENTORY_MONTH_RECORD
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_MATERIAL_INVENTORY_MONTH_RECORD]') AND type IN ('U'))
DROP TABLE [dbo].[T_MATERIAL_INVENTORY_MONTH_RECORD]
GO
CREATE TABLE [dbo].[T_MATERIAL_INVENTORY_MONTH_RECORD] (
[FID] int not null PRIMARY KEY IDENTITY(100000,1),
[FMASTERID] int NULL,
[FMATERIALID] int NOT NULL,
[FNUMBER] nvarchar(80) COLLATE Chinese_PRC_CI_AS NOT NULL,
[FSTOCKQTY] decimal(23,6) NOT NULL,
[FLOTYIELD] int not NULL,
[FPACKUNITCONVERRATIO] int not NULL,
[FPACKUNITID] int not NULL,
[FUSEORGID] int NOT NULL,
[RECORDYEAR] int NOT NULL,
[RECORDMONTH] int NOT NULL,
[RECORDDAY] int NOT NULL
)
GO
ALTER TABLE [dbo].[T_MATERIAL_INVENTORY_MONTH_RECORD] SET (LOCK_ESCALATION = TABLE)
GO

View File

@@ -0,0 +1,66 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRE_PLANPLMRPT')
DROP PROCEDURE dbo.PROC_INQUIRE_PLANPLMRPT;
GO
CREATE PROCEDURE PROC_INQUIRE_PLANPLMRPT
@TABLENAME VARCHAR(100)
,@SEQFLD varchar(100)
,@YEAR INT
,@MONTH INT
,@DAY INT
,@HASID INT OUTPUT
AS
BEGIN
SET @HASID = 0;
SELECT
t0.FID
,t0.FMATERIALID
,t0.FNUMBER
,t0.FNAME
,t0.FSPECIFICATION
,t0.SHELFLIFE
,t0.StandardLot
,CEILING(t0.SAFESTOCK) SAFESTOCK
,t0.FSTOREUNITID
,t0.FSTOREUNITNAME
,CEILING(t0.SAFESTOCKCOUNT) SAFESTOCKCOUNT
,t0.FPACKUNITCONVT
,CEILING(t0.FLOTYIELD) FLOTYIELD
,CEILING(t0.FPACKUNITCONVERRATIO) FPACKUNITCONVERRATIO
,t0.FPACKUNITID
,t0.FPACKUNITNAME
,CEILING(t0.M01) M01
,CEILING(t0.S01) S01
,CEILING(t0.S02) S02
,CEILING(t0.S03) S03
,CEILING(t0.InProductionQty) InProductionQty
,CEILING(t0.InStockQty) InStockQty
,CEILING(t0.TotalStockQty) TotalStockQty
,CEILING(t0.OrderLotQty) OrderLotQty
,CEILING(t0.FirmLotQty) FirmLotQty
,CEILING(t0.FFirmQty) FFirmQty
,t0.FRECORDDAY
,t0.FRECORDMONTH
,t0.FRECORDYEAR
,t0.countM
INTO #TMPMPS
FROM
T_PLAN_PLANPLMRPT t0
WHERE
t0.FRECORDDAY = @DAY AND t0.FRECORDMONTH = @MONTH AND t0.FRECORDYEAR = @YEAR
SELECT @HASID = COUNT(1) FROM #TMPMPS
DECLARE @SQL VARCHAR(2000)
SET @sql = '
select
t0.*
,0 AS FDECIMALS
,'+@SEQFLD+'
into '+ @TableName +' From #TMPMPS t0 '
EXECUTE(@sql)
DROP TABLE #TMPMPS
END

View File

@@ -0,0 +1,157 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_TMP_INQUIRE_PLANPLMRPT')
DROP PROCEDURE dbo.PROC_TMP_INQUIRE_PLANPLMRPT;
GO
CREATE PROCEDURE PROC_TMP_INQUIRE_PLANPLMRPT
@TABLENAME VARCHAR(100)
,@SEQFLD VARCHAR(200)
,@LCID INT
,@STARTDATE DATE
,@ENDDATE DATE
,@YEAR INT
,@MONTH INT
,@DAY INT
,@HASID INT OUTPUT
AS
BEGIN
SELECT
ROW_NUMBER() OVER(ORDER BY t0.FMATERIALID) AS FID
,t0.FMATERIALID
,t2.FNUMBER
,t2_L.FNAME
,t2_L.FSPECIFICATION
,(CASE t2S.FEXPPERIOD
WHEN 0 THEN ''
ELSE
CASE
t2S.FEXPUNIT
WHEN 'Y' THEN
CONVERT ( VARCHAR,CAST((t2S.FEXPPERIOD * 12) AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'M' THEN
CONVERT ( VARCHAR,CAST(t2S.FEXPPERIOD AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST((
CASE t2S.FEXPPERIOD % 30 WHEN 0 THEN t2S.FEXPPERIOD / 30 ELSE t2S.FEXPPERIOD / 365 * 12 END
) AS INT)) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ELSE ''
END
END) AS 'SHELFLIFE'
,CONCAT(t2.FLotSize,t5_L.FNAME, '/<2F><>') AS StandardLot
,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,ISNULL(t2S.FSTOREUNITID ,0) AS FSTOREUNITID--<EFBFBD><EFBFBD><EFBFBD>λ
,t5_L.FNAME AS FSTOREUNITNAME
,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT
,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t4.FPACKUNITCONVERRATIO,0) AS FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,ISNULL(t4.FPACKUNITID,0) AS FPACKUNITID-- '<27><>λ'
,t6_L.FNAME AS FPACKUNITNAME
,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01
,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01
,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02
,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03
,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,ISNULL(t0.FLotQty,0) AS FirmLotQty
,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0.countM
,2 AS FDECIMALS
into #TMPMPS
FROM
(SELECT
t0E.FMATERIALID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
,sum(t1.FFINISHQTY) AS FFINISHQTY
,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
,sum(t1.FLotQty) As FLotQty
,sum(M01) AS M01
,sum(S01) AS S01
,sum(S02) AS S02
,sum(S03) AS S03
,count(1) AS countM
FROM
T_PLN_FORECAST t0
LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN (
SELECT
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
,sum(t2.FFINISHQTY) AS FFINISHQTY
,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
,sum(t1.FLotQty) As FLotQty
FROM
T_PLN_PLANORDER t1
LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID
LEFT JOIN (
SELECT
t0E.FMATERIALID
,t0E_LK.FSID
,SUM(t1.FFINISHQTY) AS FFINISHQTY --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --<EFBFBD>ϸ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM
T_PRD_MO t0
LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN T_PRD_MOENTRY_LK t0E_LK ON t0E_LK.FENTRYID = t0E.FENTRYID AND t0E_LK.FSTABLENAME = 'T_PLN_PLANORDER'
LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID
LEFT JOIN (
SELECT
t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0E.FMOENTRYID
,t0E.FFINISHQTY
,t0E_A.FSTOCKINQUASELQTY
FROM
T_PRD_MORPT t0
LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID
LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
) t1 ON t1.FMOENTRYID = t0E.FENTRYID
WHERE
t0E.FSRCBILLTYPE ='PLN_PLANORDER'
AND t0E_A.FREQSRC = 2
AND t0E_A.FSTATUS <> 6
AND t0E.FSALEORDERENTRYID <> 0
GROUP BY
t0E.FMATERIALID
,t0E_LK.FSID
) t2 ON t2.FSID = t1.FID AND t2.FMATERIALID = t1.FMATERIALID
WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2
GROUP BY
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ)
WHERE
t0.FDATE BETWEEN @STARTDATE AND @ENDDATE
GROUP BY
t0E.FMATERIALID
) t0
LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY)
LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID)
SELECT @HASID = COUNT(1) FROM #TMPMPS
DECLARE @SQL VARCHAR(2000)
SET @sql = '
select
t0.*
,'+@SeqFld+'
into '+ @TableName +' From #TMPMPS t0 '
EXECUTE(@sql)
DROP TABLE #TMPMPS
END

View File

@@ -0,0 +1,37 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_ProductionSchedule')
DROP PROCEDURE dbo.PROC_ProductionSchedule;
GO
CREATE PROCEDURE PROC_ProductionSchedule
@TABLENAME VARCHAR(100)
,@STARTDATE DATE
,@ENDDATE DATE
,@LCID INT
,@SEQFLD varchar(100)
,@YEAR INT
,@MONTH INT
,@DAY INT
,@HASID INT OUTPUT
AS
BEGIN
SET @HASID = 0
--<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ʱ<EFBFBD>ƻ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>ֵ
DECLARE @FSCHEDULETYPEID varchar(80)
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD> AIS20221208083030
SET @FSCHEDULETYPEID = '65967bf69b80ca'
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD> AIS20231206144015
--SET @FSCHEDULETYPEID = '658e1974b04f4f'
--<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD>Կ<EFBFBD>
--SET @FSCHEDULETYPEID = '657BF589F52174'
SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = @FSCHEDULETYPEID
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_PLAN_PLANPLMRPT]') AND TYPE IN ('U'))
BEGIN
EXEC PROC_INQUIRE_PLANPLMRPT @TABLENAME ,@SEQFLD,@YEAR,@MONTH,@DAY, @HASID OUTPUT
END
ELSE
BEGIN
EXEC PROC_TMP_INQUIRE_PLANPLMRPT @TABLENAME, @SEQFLD, @LCID, @STARTDATE, @ENDDATE, @YEAR, @MONTH, @DAY, @HASID OUTPUT
END
END

View File

@@ -0,0 +1,164 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SAVE_PLANPLMRPT_DATA')
DROP PROCEDURE dbo.PROC_SAVE_PLANPLMRPT_DATA;
GO
CREATE PROCEDURE PROC_SAVE_PLANPLMRPT_DATA
@STARTDATE date
,@ENDDATE date
,@YEAR int
,@MONTH int
,@DAY int
,@LCID int
AS
BEGIN
--<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ʱ<EFBFBD>ƻ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>ֵ
DECLARE @FSCHEDULETYPEID varchar(80)
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD> AIS20221208083030
SET @FSCHEDULETYPEID = '65967bf69b80ca'
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD> AIS20231206144015
--SET @FSCHEDULETYPEID = '658e1974b04f4f'
--<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD>Կ<EFBFBD>
--SET @FSCHEDULETYPEID = '657BF589F52174'
SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = @FSCHEDULETYPEID
DELETE FROM T_PLAN_PLANPLMRPT WHERE (FRECORDYEAR = @YEAR AND FRECORDMONTH = @MONTH AND FRECORDDAY = @DAY)
INSERT INTO T_PLAN_PLANPLMRPT
SELECT
t0.FMATERIALID
,t2.FNUMBER
,t2_L.FNAME
,t2_L.FSPECIFICATION
,(CASE t2S.FEXPPERIOD
WHEN 0 THEN ''
ELSE
CASE
t2S.FEXPUNIT
WHEN 'Y' THEN
CONVERT ( VARCHAR,CAST((t2S.FEXPPERIOD * 12) AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'M' THEN
CONVERT ( VARCHAR,CAST(t2S.FEXPPERIOD AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST((
CASE t2S.FEXPPERIOD % 30 WHEN 0 THEN t2S.FEXPPERIOD / 30 ELSE t2S.FEXPPERIOD / 365 * 12 END
) AS INT)) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ELSE ''
END
END) AS 'SHELFLIFE'
--,CONCAT(t2.FLotSize,t5_L.FNAME, '/<2F><>') AS StandardLot
,CONCAT(CAST(CEILING(t4.FLOTYIELD) AS VARCHAR),t5_L.FNAME, '/<2F><>') AS StandardLot
,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,ISNULL(t2S.FSTOREUNITID ,0) AS FSTOREUNITID--<EFBFBD><EFBFBD><EFBFBD>λ
,t5_L.FNAME AS FSTOREUNITNAME
,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
,CONCAT(CONVERT(VARCHAR,CEILING(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT
,ISNULL(CAST(t2.FLotSize AS INT),0) AS FLOTYIELD-- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t4.FPACKUNITCONVERRATIO,0) AS FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,ISNULL(t4.FPACKUNITID,0) AS FPACKUNITID-- '<27><>λ'
,t6_L.FNAME AS FPACKUNITNAME
,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01
,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01
,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02
,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03
--,dbo.PackageValConver(ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t3.FSNRPTSELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t3.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) + ISNULL(t4.FSTOCKQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,dbo.PackageValConver((ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver((ISNULL(t3.FSNRPTSELQTY,0) + ISNULL(t3.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FLOTYIELD) AS OrderLotQty --<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,ISNULL(t0.FLotQty,0) AS FirmLotQty
,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,@DAY AS FRECORDDAY
,@MONTH AS FRECORDMONTH
,@YEAR AS FRECORDYEAR
,t0.countM
FROM
(SELECT
t0E.FMATERIALID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
--,sum(t2.FFINISHQTY) AS FFINISHQTY
--,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
,sum(t1.FLotQty) As FLotQty
,sum(t0E.FQTY) AS M01
,sum(t0E.S01) AS S01
,sum(t0E.S02) AS S02
,sum(t0E.S03) AS S03
,count(1) AS countM
FROM
T_PLN_FORECAST t0
LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN (
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SELECT
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
--,sum(t2.FFINISHQTY) AS FFINISHQTY
--,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
,sum(t1.FLotQty) As FLotQty
FROM
T_PLN_PLANORDER t1
LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID
WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2
GROUP BY
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ)
WHERE
t0.FDATE BETWEEN @STARTDATE AND @ENDDATE
GROUP BY
t0E.FMATERIALID
) t0
LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID
LEFT JOIN (
SELECT
t0E.FMATERIALID
,SUM(ISNULL(t0e.FQTY,0) - ISNULL(t0E_A.FREPQUASELQTY,0)) AS 'FSNRPTSELQTY' --<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>
,SUM(ISNULL(t0E_A.FREPQUASELQTY,0)) AS FREPQUASELQTY
,SUM(ISNULL(t0E_A.FREPQUASELAUXQTY,0)) AS FREPQUASELAUXQTY
,SUM(t0e.FQTY) FQTY--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,SUM(t1.FFINISHQTY) AS 'FFINISHQTY' --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,SUM(t1.FSTOCKINQUASELQTY) AS 'FSTOCKINQUASELQTY' --<EFBFBD>ϸ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,(SUM(t1.FFINISHQTY - t1.FSTOCKINQUASELQTY)) AS '<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM
T_PRD_MO t0
LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN T_PRD_MOSNDETAIL t0s on t0s.FENTRYID = t0e.FENTRYID
LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID
LEFT JOIN (
SELECT
t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0E.FMOENTRYID
,SUM(t0E.FFINISHQTY) 'FFINISHQTY'
,SUM(t0E_A.FSTOCKINQUASELQTY) 'FSTOCKINQUASELQTY'
FROM
T_PRD_MORPT t0
LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID
LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
GROUP BY
t0.FBILLTYPE
,t0E.FMOENTRYID
) t1 ON t1.FMOENTRYID = t0E.FENTRYID
WHERE 1=1
AND t0.FDOCUMENTSTATUS = 'C'
AND (t0E_A.FSTATUS = 3 OR t0E_A.FSTATUS = 4 OR t0E_A.FSTATUS = 5)
GROUP BY
t0E.FMATERIALID
) t3 on t3.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY)
LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID)
END

View File

@@ -0,0 +1,43 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SAVE_MATERIAL_INVENTORY')
DROP PROCEDURE dbo.PROC_SAVE_MATERIAL_INVENTORY;
GO
CREATE PROCEDURE PROC_SAVE_MATERIAL_INVENTORY
@LCID int
,@YEAR int
,@MONTH int
,@DAY int
AS
BEGIN
DELETE FROM T_MATERIAL_INVENTORY_MONTH_RECORD WHERE RECORDDAY = @DAY AND RECORDMONTH = @MONTH AND RECORDYEAR = @YEAR
INSERT INTO T_MATERIAL_INVENTORY_MONTH_RECORD
SELECT
T0.FMASTERID
,T0.FMATERIALID
,T0.FNUMBER
,ISNULL(T1.STOCKQTY,0) AS FSTOCKQTY
,T0P.FLOTYIELD -- '<27><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>'
,T0P.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,T0P.FPACKUNITID -- '<27><>λ'
,T0.FUSEORGID
,@YEAR AS RECORDYEAR
,@MONTH AS RECORDMONTH
,@DAY AS RECORDDAY
FROM
T_BD_MATERIAL T0
LEFT JOIN T_BD_MATERIALPRODUCE T0P ON T0P.FMATERIALID = T0.FMATERIALID
LEFT JOIN (
SELECT
T1.FMATERIALID
,SUM(T1.FBASEQTY) AS STOCKQTY
FROM
T_STK_INVENTORY T1
GROUP BY
T1.FMATERIALID
) T1 ON T0.FMATERIALID = T1.FMATERIALID
WHERE
T0.FDOCUMENTSTATUS = 'C' AND T0.FUSEORGID = 1
ORDER BY T0.FMATERIALID
END

View File

@@ -0,0 +1,62 @@
/*
Navicat Premium Data Transfer
Source Server : sql server
Source Server Type : SQL Server
Source Server Version : 15002080
Source Host : .:1433
Source Catalog : AIS20231110222743
Source Schema : dbo
Target Server Type : SQL Server
Target Server Version : 15002080
File Encoding : 65001
Date: 30/12/2023 03:59:37
*/
-- ----------------------------
-- Table structure for T_PLAN_PLANPLMRPT
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[T_PLAN_PLANPLMRPT]') AND type IN ('U'))
DROP TABLE [dbo].[T_PLAN_PLANPLMRPT]
GO
CREATE TABLE [dbo].[T_PLAN_PLANPLMRPT] (
[FID] int IDENTITY(100000,1) NOT NULL,
[FMATERIALID] int DEFAULT 0 NOT NULL,
[FNUMBER] varchar(80) COLLATE Chinese_PRC_CI_AS NULL,
[FNAME] varchar(100) COLLATE Chinese_PRC_CI_AS NULL,
[FSPECIFICATION] varchar(100) COLLATE Chinese_PRC_CI_AS NULL,
[SHELFLIFE] varchar(50) COLLATE Chinese_PRC_CI_AS NULL,
[StandardLot] varchar(100) COLLATE Chinese_PRC_CI_AS NULL,
[SAFESTOCK] decimal(23,2) DEFAULT 0 NOT NULL,
[FSTOREUNITID] int DEFAULT 0 NOT NULL,
[FSTOREUNITNAME] varchar(80) COLLATE Chinese_PRC_CI_AS NULL,
[SAFESTOCKCOUNT] decimal(23,6) DEFAULT 0 NOT NULL,
[FPACKUNITCONVT] varchar(100) COLLATE Chinese_PRC_CI_AS NULL,
[FLOTYIELD] decimal(23,6) DEFAULT 0 NOT NULL,
[FPACKUNITCONVERRATIO] decimal(23,6) DEFAULT 0 NOT NULL,
[FPACKUNITID] int DEFAULT 0 NOT NULL,
[FPACKUNITNAME] varchar(80) COLLATE Chinese_PRC_CI_AS NULL,
[M01] decimal(23,6) DEFAULT 0 NOT NULL,
[S01] decimal(23,6) DEFAULT 0 NOT NULL,
[S02] decimal(23,6) DEFAULT 0 NOT NULL,
[S03] decimal(23,6) DEFAULT 0 NOT NULL,
[InProductionQty] decimal(23,6) DEFAULT 0 NOT NULL,
[InStockQty] decimal(23,6) DEFAULT 0 NOT NULL,
[TotalStockQty] decimal(23,6) DEFAULT 0 NOT NULL,
[OrderLotQty] decimal(23,6) DEFAULT 0 NOT NULL,
[FirmLotQty] decimal(23,6) DEFAULT 0 NOT NULL,
[FFirmQty] decimal(23,6) DEFAULT 0 NOT NULL,
[FRECORDDAY] int DEFAULT 0 NOT NULL,
[FRECORDMONTH] int DEFAULT 0 NOT NULL,
[FRECORDYEAR] int DEFAULT 0 NOT NULL,
[countM] int DEFAULT 0 NOT NULL
)
GO
ALTER TABLE [dbo].[T_PLAN_PLANPLMRPT] SET (LOCK_ESCALATION = TABLE)
GO

View File

@@ -0,0 +1,65 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SAVE_PLANPLMRPT_BEFORE_CHECK')
DROP PROCEDURE dbo.PROC_SAVE_PLANPLMRPT_BEFORE_CHECK;
GO
CREATE PROCEDURE PROC_SAVE_PLANPLMRPT_BEFORE_CHECK
@STARTDATE date
,@ENDDATE date
,@YEAR int
,@MONTH int
AS
BEGIN
--<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ʱ<EFBFBD>ƻ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>ֵ
DECLARE @FSCHEDULETYPEID varchar(80)
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD> AIS20221208083030
SET @FSCHEDULETYPEID = '65967bf69b80ca'
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD> AIS20231206144015
--SET @FSCHEDULETYPEID = '658e1974b04f4f'
--<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD>Կ<EFBFBD>
--SET @FSCHEDULETYPEID = '657BF589F52174'
DECLARE @CODE int ,@MSG varchar(80)
SET @CODE = 0
SET @MSG = ''
DECLARE @DAY int
SET @DAY = 1
SELECT
@DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN 20 ELSE CAST(T0.FPARAMETERS AS INT) END)
FROM
T_BAS_SCHEDULEINFO T0
WHERE
T0.FSCHEDULETYPEID = @FSCHEDULETYPEID
SELECT
@CODE = (case t0.CountNum when 0 then -1 else 0 end)
,@MSG = (case t0.CountNum when 0 then CONCAT('<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>¼,Լ<><D4BC><EFBFBD><EFBFBD>¼ʱ<C2BC>',t0.RECORDDATE) else '' end)
FROM(
SELECT
COUNT(1) AS CountNum
,CONCAT(CAST(@YEAR AS varchar),'-',CAST(@MONTH AS varchar),'-',CAST(@DAY AS varchar)) AS RECORDDATE
FROM
T_MATERIAL_INVENTORY_MONTH_RECORD T0
WHERE
T0.RECORDDAY = @DAY
AND T0.RECORDMONTH = @MONTH
AND T0.RECORDYEAR = @YEAR
) t0
IF(@CODE = 0)
BEGIN
SELECT
@CODE = (case t0.CountNum when 0 then -1 else 0 end)
,@MSG = (case t0.CountNum when 0 then '<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>Ԥ<EFBFBD>' else '' end)
FROM(
SELECT COUNT(1) AS CountNum
FROM
T_PLN_FORECAST t0
INNER JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID
WHERE
t0.FDATE BETWEEN @STARTDATE AND @ENDDATE
) t0
END
SELECT @CODE AS code,@MSG as msg
END

View File

@@ -0,0 +1,13 @@
ALTER FUNCTION PackageValConver(@cnvNumber decimal(23,6) ,@coefficient int)
RETURNS decimal(23,2) --<EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
as
BEGIN
declare @result decimal(23,6)
select @result = (CASE isnull(@coefficient,0)
WHEN 0
THEN isnull(@cnvNumber,0) ELSE (ISNULL(@cnvNumber,0)/@coefficient)
END)
--RETURN ROUND(@result,2)
RETURN CEILING(@result)
END

View File

@@ -0,0 +1,6 @@
ALTER FUNCTION ToDecimal2(@cnvNumber decimal(23,10))
RETURNS decimal(23,2) --<EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
as
BEGIN
RETURN ISNULL(@cnvNumber, 0)
END

View File

@@ -0,0 +1,30 @@
DELETE FROM T_MATERIAL_INVENTORY_MONTH_RECORD WHERE RECORDDAY = 20 AND RECORDMONTH = 12 AND RECORDYEAR = 2023
INSERT INTO T_MATERIAL_INVENTORY_MONTH_RECORD
SELECT
T0.FMASTERID
,T0.FMATERIALID
,T0.FNUMBER
,ISNULL(T1.STOCKQTY,0) AS FSTOCKQTY
,T0P.FLOTYIELD -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,T0P.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,T0P.FPACKUNITID -- '<27><>λ'
,T0.FUSEORGID
,2023 AS RECORDYEAR
,12 AS RECORDMONTH
,20 AS RECORDDAY
FROM
T_BD_MATERIAL T0
LEFT JOIN T_BD_MATERIALPRODUCE T0P ON T0P.FMATERIALID = T0.FMATERIALID
LEFT JOIN (
SELECT
T1.FMATERIALID
,SUM(T1.FBASEQTY) AS STOCKQTY
FROM
T_STK_INVENTORY T1
GROUP BY
T1.FMATERIALID
) T1 ON T0.FMATERIALID = T1.FMATERIALID
WHERE
T0.FDOCUMENTSTATUS = 'C' AND T0.FUSEORGID =1
ORDER BY T0.FMATERIALID

View File

@@ -0,0 +1,16 @@
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SELECT_MPS_ATTRIBUTE')
DROP PROCEDURE DBO.PROC_SELECT_MPS_ATTRIBUTE;
GO
CREATE PROCEDURE PROC_SELECT_MPS_ATTRIBUTE
@formId varchar(80)
AS
BEGIN
SELECT 'FNUMBER' AS TITLEKEY , 200 AS TITLEWIDTH
UNION ALL SELECT 'FNAME' AS TITLEKEY , 200 AS TITLEWIDTH
UNION ALL SELECT 'SHELFLIFE' AS TITLEKEY , 200 AS TITLEWIDTH
UNION ALL SELECT 'StandardLot' AS TITLEKEY , 200 AS TITLEWIDTH
UNION ALL SELECT 'FLOTYIELD' AS TITLEKEY , 200 AS TITLEWIDTH
UNION ALL SELECT 'FPACKUNITCONVERRATIO' AS TITLEKEY , 200 AS TITLEWIDTH
UNION ALL SELECT 'FPACKUNITCONVT' AS TITLEKEY , 200 AS TITLEWIDTH
END

View File

@@ -0,0 +1,158 @@
DECLARE @STARTDATE DATE,@ENDDATE DATE,@LCID INT,@YEAR INT,@MONTH INT,@DAY INT
SET @LCID = 2052
SET @STARTDATE ='2024-01-01'
SET @ENDDATE ='2024-01-31'
SET @YEAR = 2024
SET @MONTH = 1
SET @DAY = 20
--SET @STARTDATE ='2023-12-01'
--SET @ENDDATE ='2023-12-31'
--SET @YEAR = 2023
--SET @MONTH = 12
--SET @DAY = 20
--<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ʱ<EFBFBD>ƻ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>ֵ
DECLARE @FSCHEDULETYPEID varchar(80)
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD> AIS20221208083030
SET @FSCHEDULETYPEID = '65967bf69b80ca'
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD> AIS20231206144015
--SET @FSCHEDULETYPEID = '658e1974b04f4f'
--<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD>Կ<EFBFBD>
--SET @FSCHEDULETYPEID = '657BF589F52174'
SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = @FSCHEDULETYPEID
SELECT
t0.FMATERIALID
,t2.FNUMBER
,t2_L.FNAME
,t2_L.FSPECIFICATION
,(CASE t2S.FEXPPERIOD
WHEN 0 THEN ''
ELSE
CASE
t2S.FEXPUNIT
WHEN 'Y' THEN
CONVERT ( VARCHAR,CAST((t2S.FEXPPERIOD * 12) AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'M' THEN
CONVERT ( VARCHAR,CAST(t2S.FEXPPERIOD AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST((
CASE t2S.FEXPPERIOD % 30 WHEN 0 THEN t2S.FEXPPERIOD / 30 ELSE t2S.FEXPPERIOD / 365 * 12 END
) AS INT)) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ELSE ''
END
END) AS 'SHELFLIFE'
--,CONCAT(t2.FLotSize,t5_L.FNAME, '/<2F><>') AS StandardLot
,CONCAT(CAST(CEILING(t4.FLOTYIELD) AS VARCHAR),t5_L.FNAME, '/<2F><>') AS StandardLot
,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,ISNULL(t2S.FSTOREUNITID ,0) AS FSTOREUNITID--<EFBFBD><EFBFBD><EFBFBD>λ
,t5_L.FNAME AS FSTOREUNITNAME
,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
,CONCAT(CONVERT(VARCHAR,CEILING(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT
,ISNULL(CAST(t2.FLotSize AS INT),0) AS FLOTYIELD-- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
--,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t4.FPACKUNITCONVERRATIO,0) AS FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,ISNULL(t4.FPACKUNITID,0) AS FPACKUNITID-- '<27><>λ'
,t6_L.FNAME AS FPACKUNITNAME
,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01
,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01
,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02
,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03
--,dbo.PackageValConver(ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t3.FSNRPTSELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t3.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) + ISNULL(t4.FSTOCKQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,dbo.PackageValConver((ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver((ISNULL(t3.FSNRPTSELQTY,0) + ISNULL(t3.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FLOTYIELD) AS OrderLotQty --<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,ISNULL(t0.FLotQty,0) AS FirmLotQty
,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,@DAY AS FRECORDDAY
,@MONTH AS FRECORDMONTH
,@YEAR AS FRECORDYEAR
,t0.countM
FROM
(SELECT
t0E.FMATERIALID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
--,sum(t2.FFINISHQTY) AS FFINISHQTY
--,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
,sum(t1.FLotQty) As FLotQty
,sum(t0E.FQTY) AS M01
,sum(t0E.S01) AS S01
,sum(t0E.S02) AS S02
,sum(t0E.S03) AS S03
,count(1) AS countM
FROM
T_PLN_FORECAST t0
LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN (
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SELECT
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
,sum(t1.FFirmQty) AS FFirmQty
,sum(t1.FOrderQty) AS FOrderQty
--,sum(t2.FFINISHQTY) AS FFINISHQTY
--,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY
,sum(t1.FLotQty) As FLotQty
FROM
T_PLN_PLANORDER t1
LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID
WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2
GROUP BY
t1.FMATERIALID
,t1_B.FSALEORDERENTRYID
,t1_B.FSALEORDERENTRYSEQ
,t1_B.FSALEORDERID
) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ)
WHERE
t0.FDATE BETWEEN @STARTDATE AND @ENDDATE
GROUP BY
t0E.FMATERIALID
) t0
LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID
LEFT JOIN (
SELECT
t0E.FMATERIALID
,SUM(ISNULL(t0e.FQTY,0) - ISNULL(t0E_A.FREPQUASELQTY,0)) AS 'FSNRPTSELQTY' --<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>
,SUM(ISNULL(t0E_A.FREPQUASELQTY,0)) AS FREPQUASELQTY
,SUM(ISNULL(t0E_A.FREPQUASELAUXQTY,0)) AS FREPQUASELAUXQTY
,SUM(t0e.FQTY) FQTY--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,SUM(t1.FFINISHQTY) AS 'FFINISHQTY' --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,SUM(t1.FSTOCKINQUASELQTY) AS 'FSTOCKINQUASELQTY' --<EFBFBD>ϸ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,(SUM(t1.FFINISHQTY - t1.FSTOCKINQUASELQTY)) AS '<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM
T_PRD_MO t0
LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID
LEFT JOIN T_PRD_MOSNDETAIL t0s on t0s.FENTRYID = t0e.FENTRYID
LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID
LEFT JOIN (
SELECT
t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0E.FMOENTRYID
,SUM(t0E.FFINISHQTY) 'FFINISHQTY'
,SUM(t0E_A.FSTOCKINQUASELQTY) 'FSTOCKINQUASELQTY'
FROM
T_PRD_MORPT t0
LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID
LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
GROUP BY
t0.FBILLTYPE
,t0E.FMOENTRYID
) t1 ON t1.FMOENTRYID = t0E.FENTRYID
WHERE 1=1
AND t0.FDOCUMENTSTATUS = 'C'
AND (t0E_A.FSTATUS = 3 OR t0E_A.FSTATUS = 4 OR t0E_A.FSTATUS = 5)
GROUP BY
t0E.FMATERIALID
) t3 on t3.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY)
LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID)
LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID)