set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_ComAs_lastComandoByStored
*
* Ottiene il record dell'ultimo comando inviato ad AS400 dato il nome della stored con Test = 0
*
* Steamware, S.E.L.
* mod: 2011.03.30
*
****************************************/
create PROCEDURE stp_ComAs_lastComandoByStored
(
    @Stored NVARCHAR(100)
)
AS
    -- restituisce le righe richieste
    SELECT	TOP 1 * 
    FROM	RawData.AS400_Comandi 
    WHERE	(Stored = @Stored) AND Test = 0
    ORDER BY DataEsecuzione DESC
        
RETURN
go

commit
go

drop procedure stp_BORI_caricaDatiNew
go





set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*****************************************
* STORED stp_BORI_caricaDatiBolla
*
* richiama la stored di caricamento da AS400 x la bolla indicata
*
* Steamware, S.E.L.
* mod: 2011.04.28
*
****************************************/
alter PROCEDURE stp_BORI_caricaDatiBolla
(
    @RaggrMagazz NVARCHAR(2)  ,
    @GruppoBolle NVARCHAR(1)  ,
    @NumeroBolla NVARCHAR(6)  ,
    @DataBolla   NVARCHAR(8)  ,
    @Particolare NVARCHAR(15)
)
AS
 
      SET NOCOUNT ON;
 
    --DECLARE @RaggrMagazz AS NVARCHAR(2)  = N'SP'
    --DECLARE @GruppoBolle AS NVARCHAR(1)  = N'0'
    --DECLARE @NumeroBolla AS NVARCHAR(6)  = N'678'
    --DECLARE @DataBolla   AS NVARCHAR(8)  = N'20110421'
    --DECLARE @Particolare AS NVARCHAR(15) = N'P00528536146'
 
    -- Prima cancello i dati della se già presenti bolla poi li carico
    DELETE SP_GMW.RawData.BORI202J
    WHERE  CDMFS = @RaggrMagazz
       AND GRBOS = @GruppoBolle
       AND NRBOS = @NumeroBolla
       AND DTBOS = @DataBolla
       AND CDARS = @Particolare
 
    DECLARE @SQL AS NVARCHAR(4000)
    DECLARE @SqlOK AS INT;
 
    SET  @SqlOK = 0;
 
    -- ATTENZIONE!!! i parametri non devono essere nulli altrimenti la stringa ritornata è nulla
 
    /*
       Prima estraggo i dati della bolla dal file in AS400 in una tabella temporanea
       Poi va letta la tabella temporanea per creare i dati per la stampa Odette
       NON VA BENE, SE ESEGUONO IN DUE LA STAMPA PUO ANDARE IN CONFLITTO
    */
 
    --IF OBJECT_ID(N'tempdb..##TabTemp') IS NOT NULL   -- ##TabTemp Tabella temporanea globale altrimenti non riesco ad usarla
    --  DROP TABLE ##TabTemp;
    -- SET @SQL = 'SELECT * INTO ##TabTemp FROM OPENQUERY(P65220DC,
 
    BEGIN TRY
        SET @SQL = 'INSERT INTO SP_GMW.RawData.BORI202J SELECT * FROM OPENQUERY(P65220DC,
        ''SELECT
                 CDMFS
                ,GRBOS
                ,DTBOS
                ,NRBOS
                ,CDARS
                ,NRRGS
                ,CDINB
                ,RA1ND
                ,RA2ND
                ,CAPND
                ,CITND
                ,RASCL
                ,INDCL
                ,CAPCL
                ,LOCCL
                ,PROCL
                ,INEND
                ,CRAGCL
                ,TELND
                ,CCDMOL
                ,CCDPTR
                ,EPLAVO
                ,NRC1B  
                ,ECMM01
                ,DEPAR
                ,RCARTC
                ,PERND
                ,CCDET1
                ,ECDNAE
                ,ECDNA1
                ,EESPMD
                ,PELDB
                ,QTCNS
        FROM POSN_AZI.BORI202J
        WHERE ATV08 <> ''''A''''
        '
 
        -- commemntare le righe successive per estrarre tutto
        -- Parametri di selezione della bolla
        SET @SQL = @SQL + ' AND CDMFS = '''''  + @RaggrMagazz  + ''''' '
        SET @SQL = @SQL + ' AND GRBOS = '''''  + @GruppoBolle  + ''''' '
        SET @SQL = @SQL + ' AND NRBOS = '      + @NumeroBolla  + ' '
        SET @SQL = @SQL + ' AND DTBOS = '      + @DataBolla    + ' '
        SET @SQL = @SQL + ' AND CDARS = '''''  + @Particolare  + ''''' '
 
        SET @SQL = @SQL + ''' )';
 
        EXEC dbo.sp_executesql @SQL
 
      END TRY
    BEGIN CATCH
      -- PRINT ERROR_NUMBER()
      SET @SqlOK = ERROR_NUMBER();
 
      -- Uso RAISERROR mandare in errore la procedura e x per tornare le info
      -- sull'errore originale che ha portato l'esecuzione nel blocco CATCH
      --DECLARE @ErrorMessage NVARCHAR(4000);
      --DECLARE @ErrorSeverity INT;
      --DECLARE @ErrorState INT;
      --SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE();
      --RAISERROR (@ErrorMessage,@ErrorSeverity,@ErrorState);  -- Se non uso RAISERROR la procedura non mi da errore es. se schedulata     
    END CATCH
 
    -- MANCA IL TEST SE VA IN ERRORE E IL SALVATAGGIO NEL LOG AS400
 
    -- Memorizzo il comando per verifica T-SQL e l'esito del comando se 0 è OK
 
      --INSERT INTO RawData.AS400_Comandi
      --SELECT GETDATE(), 'stp_CaricaDatiBolladaAs400', @SQL, @SqlOK;
 
    -- Carico i dati della Temp table nel file di appoggio
    -- INSERT INTO SP_GMW.RawData.BORI202J
    -- SELECT * FROM ##TabTemp
 
RETURN
go

commit
go




-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(361, GETDATE())
GO
