Files
GateDge2023_ljy/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql
PastSaid a44ce28933 aa
2023-12-14 10:31:17 +08:00

140 lines
3.8 KiB
Transact-SQL

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(200)
AS
begin
SELECT
A.FID
,A.FBILLNO
,AE.FMATERIALID
,AE.FENTRYID
,C.FNUMBER
,C_L.FNAME
,C_L.FSPECIFICATION
--,(CASE
-- CS.FEXPUNIT
-- WHEN 'Y' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '年'
-- WHEN 'M' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /12 ) + '年'
-- WHEN 'D' THEN
-- CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) /365) + '年' ELSE ''
--END) AS '有效期'
,(CASE
CS.FEXPUNIT
WHEN 'Y' THEN
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) * 12 ) + '个月'
WHEN 'M' THEN
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) ) + '个月'
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST(CS.FEXPPERIOD AS INT) / 365 * 12) + '个月' ELSE ''
END) AS 'ShelfLife'
--,'' AS '标准批量'
,CS.FSAFESTOCK --安全库存
--,CS.FSTOREUNITID --库存单位
--,CP.FLOTYIELD -- '每批产量'
--,CP.FPACKUNITCONVERRATIO -- '包装规格'
--,CP.FPACKUNITCONVERRATIO -- '包装规格-换算'
--,CP.FPACKUNITID -- '单位'
--,AE.M01
--,AE.S01
--,AE.S02
--,AE.S03
,'' AS 'M01'
,'' AS 'S01'
,'' AS 'S02'
,'' AS 'S03'
,B.FFirmQty
,B.FOrderQty
,B.FMATERIALID
FROM
(
SELECT
A.FMATERIALID
,A_B.FSALEORDERENTRYID
,SUM(A.FFirmQty) as 'FFirmQty'
,SUM(A.FORDERQTY) as 'FOrderQty'
FROM
T_PLN_PLANORDER A
LEFT JOIN T_PLN_PLANORDER_B A_B ON A.FID = A_B.FID
WHERE
A.FRELEASETYPE = 1 --AND (A.FRELEASESTATUS = 1 OR A.FRELEASESTATUS = 2 )
group By
A.FRELEASETYPE
,A.FMATERIALID
,A_B.FSALEORDERENTRYID
) B
--预测单
LEFT JOIN T_PLN_FORECASTENTRY AE ON B.FSALEORDERENTRYID = AE.FENTRYID
LEFT JOIN T_PLN_FORECAST A ON A.FID = AE.FID
LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L C_L ON C_L.FMATERIALID = B.FMATERIALID
LEFT JOIN T_BD_MATERIALSTOCK CS ON CS.FMATERIALID = B.FMATERIALID
LEFT JOIN T_BD_MATERIALPRODUCE CP ON CP.FMATERIALID = B.FMATERIALID
WHERE
--A.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
A.FDATE BETWEEN @STARTDATE AND @ENDDATE
--更新单位
alter table #TMPMPS add STOREUNITNAME varchar(10)
update #TMPMPS set #TMPMPS.STOREUNITNAME = B_L.FNAME from T_BD_UNIT_L B_L where B_L.FUNITID = #TMPMPS.FSTOREUNITID
--alter table #TMPMPS add FPACKUNITNAME varchar(10)
--update #TMPMPS set #TMPMPS.FPACKUNITNAME = B_L.FNAME from T_BD_UNIT_L B_L where B_L.FUNITID = #TMPMPS.FPACKUNITID
declare @sql varchar(2000)
set @sql = '
select
FID
,FENTRYID
,FBILLNO
,FMATERIALID
,FNAME
,FSPECIFICATION
,ShelfLife
--,'''' --标准批量
--,FLOTYIELD --每批产量
--,FPACKUNITCONVERRATIO -- 包装规格
--,CAST(FPACKUNITCONVERRATIO AS VARCHAR)+STOREUNITNAME+''/''+FPACKUNITNAME as FPACKUNITCONVT --包装规格
--,FPACKUNITID --单位
,FSTOREUNITID
,STOREUNITNAME
,'''' AS --安全库存量-件
,CAST(FSAFESTOCK AS INT) AS SAFESTOCK
,FSEQ
,0 AS M01
,0 AS S01
,0 AS S02
,0 AS S03
--,(B.PlanQty / CP.FPACKUNITCONVERRATIO)AS ''系统计划生产批数''
--,(B.VerifyQty / CP.FPACKUNITCONVERRATIO) AS ''确认计划生产批数''
,FFirmQty --确认计划生产数量
,FFirmQty as FirmLotQty --确认生产批数
,FOrderQty as OrderLotQty --计划生产批数
,'+@SeqFld+'
into '+ @TableName +' From #TMPMPS t0 '
--select @sql
EXECUTE(@sql)
drop table #TMPMPS
end
go
--DECLARE @STARTDATE DATETIME ,@ENDDATE DATETIME
--SELECT
-- @STARTDATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, '2023-12-15'), 0)
-- ,@ENDDATE = DATEADD(MS,-3, DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, '2023-12-15')), 0))
--DECLARE @LCID INT
--SET @LCID = 2052
--EXEC PROC_ProductionSchedule @STARTDATE,@ENDDATE, @LCID;