﻿

-- =============================================
-- Author:	 GAR
-- Create date: 2015.11.20
-- Description: Import iniziale dati: Giacenze
-- =============================================
CREATE PROCEDURE [import].[stp_importMagRic_step2]
AS
BEGIN

SET NOCOUNT ON;

--SELECT * FROM [som_ita].[tmp_ImportRic_A] WHERE Descrizione = ''
--SELECT * FROM MagRic 
--SELECT * FROM AnagLocazioni

DECLARE @Test BIT = 0; -- se 1 fa il rollback
DECLARE @DataImp AS SMALLDATETIME = GETDATE();
DECLARE @SummaryOfChanges TABLE (Change VARCHAR(10));

BEGIN TRANSACTION;;

    WITH cteImportRicA
    AS (
        SELECT   LTRIM(RTRIM(UPPER(Gruppo)))                                 AS Famiglia
                ,LTRIM(RTRIM(UPPER(REPLACE(CASE WHEN ISNULL([Descrizione], '') <> '' 
                                                THEN [Descrizione] 
                                                ELSE [CodCostruttore] 
                                           END, '"', ''))))                 AS Descrizione -- tolgo eventuali "
                ,LTRIM(RTRIM(UPPER(NomeCostruttore)))                       AS NomeCostruttore
                ,LTRIM(RTRIM(UPPER(CodCostruttore)))                        AS CodCostruttore
                ,LTRIM(RTRIM(UPPER(CodSomaschini)))                         AS CodInterno
                ,Giacenza
        FROM [som_ita].[tmp_ImportRic_A]
     )
    ,cteBis AS (
                SELECT ai.*
                    ,'MAG00' AS CodLocazione
                    ,tmp.Giacenza
                FROM cteImportRicA AS tmp
                INNER JOIN dbo.AnagItems AS ai 
                    ON tmp.Famiglia = ai.Famiglia AND tmp.Descrizione = ai.Descrizione AND tmp.NomeCostruttore = ai.NomeCostruttore AND tmp.CodCostruttore = ai.CodCostruttore AND tmp.CodInterno = ai.CodInterno
               )
    -- SELECT idxItem, 'MAG00' AS CodLocazione , Giacenza FROM cteBis WHERE idxItem = 1310
    MERGE INTO dbo.MagRic AS Target
    USING (
            SELECT idxItem,CodLocazione,SUM(Giacenza) AS Giacenza FROM cteBis
            GROUP BY idxItem ,CodLocazione
          ) AS Source
          ON Target.idxItem = Source.idxItem AND Target.CodLocazione = Source.CodLocazione
    WHEN NOT MATCHED BY TARGET THEN
        INSERT (idxItem,CodLocazione,Giacenza,dtLastUpd)
        VALUES (idxItem,CodLocazione,Giacenza,@DataImp)
    WHEN MATCHED THEN
            UPDATE
            SET Giacenza = Source.Giacenza ,dtLastUpd = @DataImp
    --WHEN NOT MATCHED BY SOURCE THEN DELETE
    OUTPUT $ACTION INTO @SummaryOfChanges;-- carico i cambiamenti in tabella

    SELECT * FROM dbo.MagRic

IF @Test = 1 
     ROLLBACK 
ELSE COMMIT;

-- Carico le modifiche fatte in variabile Testo
SELECT Change + ' : ' + CONVERT(VARCHAR(10), COUNT(*)) 
FROM @SummaryOfChanges
GROUP BY Change;

END