LOGO SQL URETIM PLANLANAN

USE [X];
GO

/****** Object:  View [dbo].[BM_211_URETIM_PLANLANAN]    Script Date: 28.1.2020 14:34:41 ******/
SET ANSI_NULLS ON;
GO

SET QUOTED_IDENTIFIER ON;
GO





CREATE VIEW [dbo].[BM_211_URETIM_PLANLANAN]
AS
SELECT *,
       CASE
           WHEN REPLACE(C.[Miktar Formülü], 'P1', [Uretim Miktar]) = 'P1' THEN
               ISNULL(CONVERT(VARCHAR(20), C.[Uretim Miktar]), '0')
           ELSE
               ISNULL(REPLACE(C.[Miktar Formülü], 'P1', [Uretim Miktar]), '0')
       END Formül
FROM
(
    SELECT PL.LOGICALREF,
           I.LOGICALREF LOGICALREFI,
           STFICHE.FICHENO,
           CASE
               WHEN STFICHE.TRCODE = 11 THEN
                   'Fire Fişi'
               WHEN STFICHE.TRCODE = 12 THEN
                   'Sarf Fişi'
               WHEN STFICHE.TRCODE = 13 THEN
                   'Üretimden Giriş Fiişi'
               ELSE
                   CONVERT(VARCHAR, STFICHE.TRCODE)
           END [Fiş Türü],
           CASE
               WHEN YEAR(PO.DATE_) IS NULL THEN
                   YEAR(STFICHE.DATE_)
               ELSE
                   YEAR(PO.DATE_)
           END YIL,
           CASE
               WHEN YEAR(PO.DATE_) * 100 + MONTH(PO.DATE_) IS NULL THEN
                   YEAR(STFICHE.DATE_) * 100 + MONTH(STFICHE.DATE_)
               ELSE
                   YEAR(PO.DATE_) * 100 + MONTH(PO.DATE_)
           END AY,
           CASE
               WHEN PO.DATE_ IS NULL THEN
                   STFICHE.DATE_
               ELSE
                   PO.DATE_
           END Tarih,
           CASE
               WHEN PO.FICHENO IS NULL THEN
                   STFICHE.PORDERFICHENO
               ELSE
                   PO.FICHENO
           END [Üretim No],
           STFICHE.BRANCH [İş Yeri Nr],
           (
               SELECT NAME
               FROM L_CAPIDIV WITH (NOLOCK)
               WHERE FIRMNR = 211
                     AND NR = STFICHE.BRANCH
           ) [İş Yeri Adı],
           CASE
               WHEN
               (
                   PL.LINETYPE = '4'
                   OR PL.LINETYPE IS NULL
               ) THEN
                   'Ana Ürün'
               WHEN PL.LINETYPE = '2' THEN
                   'Ek Ürün'
               WHEN PL.LINETYPE = '3' THEN
                   'Yan Ürün'
               WHEN PL.LINETYPE = '0' THEN
                   'Girdi'
               ELSE
                   CONVERT(VARCHAR(3), PL.LINETYPE)
           END [Satır Tipi],
           I.CODE [Malzeme Kodu],
           I.SPECODE [Malzeme Özel Kodu],
           I.NAME [Malzeme Açıklaması],
           (
               SELECT CODE
               FROM LG_211_UNITSETF WITH (NOLOCK)
               WHERE LOGICALREF = I.UNITSETREF
           ) AS [Malzeme Birimi],
           CASE
               WHEN PL.FORMULA = '' THEN
                   '1'
               ELSE
                   ISNULL(REPLACE(PL.FORMULA, ' ', ''), '0')
           END [Miktar Formülü],
           ISNULL(PL.FORMULA, '') [Formul Miktarı],
           --CASE WHEN PL.LINETYPE=0 THEN (SELECT SUM(STL.AMOUNT) FROM LG_211_01_STLINE STL WITH (NOLOCK) WHERE STL.STOCKREF=PL.ITEMREF AND STL.POLINEREF=pl.LOGICALREF AND STL.TRCODE=12 
           --AND LPRODSTAT=0  AND YEAR(STL.DATE_)>2018)
           --WHEN PL.LINETYPE=4 THEN (SELECT SUM(STL.AMOUNT) FROM LG_211_01_STLINE STL WITH (NOLOCK) WHERE  STL.STOCKREF=PL.ITEMREF AND STL.POLINEREF=pl.LOGICALREF AND STL.TRCODE=13 
           --AND LPRODSTAT=0 AND YEAR(STL.DATE_)>2018  
           --) ELSE 0 END 
           STLINE.AMOUNT [Gerçekleşen Miktar],
           ISNULL(PL.AMOUNT, '') [Planlanan Miktar],
           ISNULL(
           (
               SELECT TOP 1
                      AMOUNT
               FROM LG_211_POLINE pl2
               WHERE pl2.PRODORDREF = PL.PRODORDREF
                     AND pl2.LINETYPE = 4
               ORDER BY PL.LOGICALREF ASC
           ),
           0
                 ) [Uretim Miktar],
           ISNULL(CONVERT(DECIMAL(10, 2), STLINE.AMOUNT - PL.AMOUNT), 0) Fark
    FROM LG_211_01_STLINE STLINE
        LEFT JOIN LG_211_01_STFICHE STFICHE
            ON STFICHE.LOGICALREF = STLINE.STFICHEREF
        LEFT JOIN LG_211_POLINE PL
            ON PL.LOGICALREF = STLINE.POLINEREF /*ÜRETİM EMRİ SATIRLARI*/
        LEFT JOIN LG_211_PRODORD PO
            ON PO.LOGICALREF = PL.PRODORDREF /*ÜRETİM EMRİ FİŞLERİ*/
        LEFT JOIN LG_211_ITEMS I
            ON I.LOGICALREF = STLINE.STOCKREF
    WHERE
        --STFICHE.PORDERFICHENO='2019080010' AND 
        STLINE.LPRODSTAT = 0
        AND STFICHE.PRODORDERREF <> 0
/*ORDER BY STFICHE.FICHENO*/
) AS C;


GO



USE [X];
GO

/****** Object:  StoredProcedure [dbo].[BM_P_211_URETIM_PLANLANAN]    Script Date: 28.1.2020 14:35:30 ******/
SET ANSI_NULLS ON;
GO

SET QUOTED_IDENTIFIER ON;
GO









CREATE PROC [dbo].[BM_P_211_URETIM_PLANLANAN]
AS
DECLARE @sql NVARCHAR(MAX)
    =
        (
            SELECT STUFF(
                   (
                       SELECT ' select ' + STR([LOGICALREF]) + ', ' + STR([LOGICALREFI]) + ', '
                              + REPLACE(Formül, ',', '.') + ';'
                       FROM BM_211_URETIM_PLANLANAN t
                       FOR XML PATH('')
                   ),
                   1,
                   1,
                   ''
                        )
        );
DECLARE @temp TABLE
(
    [LOGICALREF] INT,
    [LOGICALREFI] INT,
    [Planlanan Miktar] FLOAT
);
INSERT @temp
EXEC (@sql);
SELECT
    --STFICHENO,
    --,PL2.LOGICALREF,
    YIL,
    AY,
    Tarih,
    [Üretim No],
    [Fiş Türü],
    FICHENO [Fiş No],
    [İş Yeri Adı],
    [Satır Tipi],
    [Malzeme Kodu],
    [Malzeme Özel Kodu],
    [Malzeme Açıklaması],
    [Malzeme Birimi],
    Formül,
    ISNULL(T.[Planlanan Miktar], 0) [Formul Miktarı],
    [Gerçekleşen Miktar],
    PL2.[Planlanan Miktar], /*,[Uretim Miktar]*/
    CONVERT(DECIMAL(10, 2), [Gerçekleşen Miktar] - PL2.[Planlanan Miktar]) Fark
FROM BM_211_URETIM_PLANLANAN PL2
    LEFT JOIN @temp T
        ON T.LOGICALREF = PL2.LOGICALREF;


--GO


--EXEC [dbo].[BM_P_211_URETIM_PLANLANAN]
GO

Leave a comment