


-- =============================================
-- Steamware, S.E.L.
-- mod: 2012.02.23
--
-- Description:	Verifica se ci sono RQ annullati e se ci sono cartellini associati 
-- li elimina richiamando la relativa stored
-- =============================================
CREATE PROCEDURE [BatchQueue].[stp_batch_cancellaUDC_RapQualAnnullati]
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
	SET NOCOUNT ON;

    IF OBJECT_ID(N'tempdb..#CartRQAnnullati') IS NOT NULL   -- Se esiste già la tabella temporanea cancello
       DROP TABLE #CartRQAnnullati;

    -- Carico gli UDC Annullati ( vengono messi ad A su AS400 quando annullano il Rapporto di Qualità )
    WITH Cte AS
    (   SELECT DISTINCT r.nRapQual
        FROM RilPro.RapQual AS r
            INNER JOIN dbo.ElencoCartellini AS e         -- per sicurezza verifico che i cartellini esistano anche in ElencoCartellini
            ON r.UDC = e.UDC
        WHERE r.BenesQual = 'A' AND r.UDC IS NOT NULL    -- Cartellino Annullato e associato a Cartellini GMW
    )
    SELECT nRapQual, ROW_NUMBER() OVER( ORDER BY  nRapQual ) AS Riga
    INTO #CartRQAnnullati
    FROM Cte

    DECLARE @Riga AS INT = 1;
    DECLARE @TotRighe AS INT;
    DECLARE @nRapQual NUMERIC(6,0);

    SELECT @TotRighe = MAX(Riga) FROM #CartRQAnnullati ;

    -- Per ogni UDC Annullato eseguo la stored di cancellazione
    WHILE @Riga <= @TotRighe
    BEGIN

        SELECT @nRapQual=nRapQual FROM #CartRQAnnullati WHERE Riga = @Riga

        EXECUTE dbo.stp_UDC_delete_byRdQ @nRapQual , 0     -- 0 eseguita in Batch

        -- Incremento contatore Riga ( RQ successiva )
        SET @Riga = @Riga + 1
    END

    IF OBJECT_ID(N'tempdb..#CartRQAnnullati') IS NOT NULL   -- tabella temporanea cancello
       DROP TABLE #CartRQAnnullati;
END



