140 lines
3.8 KiB
Transact-SQL
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; |