set xact_abort on
go

begin transaction
go

drop index [<Name of Missing Index, sysname,>] on RilPro.RapQual
go

alter table RilPro.RapQual alter column
  UDC nvarchar(50)
go

create index [<Name of Missing Index, sysname,>] on RilPro.RapQual(DataRapQual)
  include(nRapQual,CodFor,CodLega,Qta,BenesQual,UDC)
go

create index i_dataPrelievo on RilPro.RapQual(DataPrelFus)
go

commit
go



set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_prtCartMatPrimaByUDC
*
* ottiene il record del Cartellino Materia Prima dato l'UDC richiesto x la sstampa
*
****************************************/
create PROCEDURE stp_prtCartMatPrimaByUDC
(
      @UDC VARCHAR(50)
)
AS
SELECT
        RQ.nRapQual,
        RQ.DataRapQual,
        RQ.ProgUDC,
        RQ.CodFor,
        RQ.DestTerz,
        RQ.CodLega,
        RQ.DataPrelFus,
        RQ.TurnoPrelFus,
        RQ.Qta,
        RQ.DestLega,
        RQ.LegaScaric,
        RQ.BenesQual,
        RQ.UDC,
        Fo.DescFornitore,
        Fo.DescFornitore2,
        Le.CodLega AS CodLega2,
        Le.DescLega,
        Le.DescLega2
FROM GMW.RilPro.RapQual AS RQ
INNER JOIN ReportAs400.RilPro.AnagFornitori AS Fo
  ON RQ.CodFor = Fo.CodFornitore
INNER JOIN ReportAs400.RilPro.AnagLeghe Le
  ON RQ.CodLega = 'L' + Le.CodLega
WHERE RQ.UDC = RTRIM(@UDC)                  -- 'UB31000000001'
RETURN
go

/***************************************
* STORED stp_rappQualConsumabili
*
* Ottiene l'elenco dei record di rapp qualità (e quindi degli UDC) di AS non ancora consumati per range di data di approvazione
*
* Steamware, S.E.L.
* mod: 2010.10.05
*
****************************************/
create PROCEDURE stp_rappQualConsumabili
(
    @dataFrom DATETIME,
    @dataTo DATETIME
)

AS
    -- restituisce le righe richieste
    SELECT	* 
    FROM	RilPro.RapQual 
    WHERE	((DataPrelFus IS NULL) OR (DataPrelFus = 0)) AND -- condizione sul NON aver fatto ancora il prelievo
            ((DataRapQual > dbo.dateToAsFormat(@dataFrom)) AND (DataRapQual < dbo.dateToAsFormat(@dataTo))) -- cond data RQ
        
RETURN
go

/***************************************
* STORED stp_rappQualSuntoGetByDataRange
*
* Ottiene l'elenco dei record di rapp qualità di AS dato il range delle date
*
* Steamware, S.E.L.
* mod: 2010.09.29
*
****************************************/
create PROCEDURE stp_rappQualSuntoGetByDataRange
(
    @dataFrom DATETIME,
    @dataTo DATETIME
)
AS
    -- restituisce le righe richieste
    SELECT			*
        FROM        v_RapQualSunto
        WHERE		(DataRapQual > dbo.dateToAsFormat(@dataFrom)) AND (DataRapQual < dbo.dateToAsFormat(@dataTo))
        ORDER BY nRapQual
RETURN
go

/***************************************
* STORED stp_rappQualSuntoGetByNumRap
*
* Ottiene il record di rapp qualità di AS dato il numero del rapporto di qualità
*
* Steamware, S.E.L.
* mod: 2010.09.29
*
****************************************/
create PROCEDURE stp_rappQualSuntoGetByNumRap
(
    @nRapQual NVARCHAR(20)
)
AS
    -- restituisce le righe richieste
    SELECT			*
        FROM        v_RapQualSunto
        WHERE	(nRapQual = @nRapQual)
RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_spostaUdc
*
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
*
* Steamware, S.E.L.
* mod: 2010.06.11
*
****************************************/
alter PROCEDURE stp_spostaUdc
(
    @CodCS VARCHAR(2),
    @UDC VARCHAR(50),
    @IdxCellaTo INT
)
AS

BEGIN TRAN
    
    -- DICHIARAZIONI iniziali variabili
    DECLARE @IdxCellaFrom INT
    DECLARE @capienza INT
    DECLARE @numUdc INT
    
    -- controllo cella di partenza
    SET		@IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
    -- controllo se la cella di dest vada indicata come piena
    SET		@capienza = (
                            SELECT tc.Capienza 
                                FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
                                WHERE c.IdxCella = @IdxCellaFrom	
                        )
    SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom)
    -- se capienza raggiunta aggiorno...
    IF(@numUdc -1 < @capienza)
        BEGIN
            EXEC stp_celle_updPiena @IdxCellaFrom, 0
        END
        
    -- cancello posizione occupata
    DELETE
    FROM	PosizioneUdcCorrente
    WHERE	UDC = @UDC
    
    -- creo una nuova posizione per l'UDC
    INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
    VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
    
    -- controllo se la cella di dest vada indicata come piena
    SET		@capienza = (
                            SELECT tc.Capienza 
                                FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
                                WHERE c.IdxCella = @IdxCellaTo	
                        )
    SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
    -- se capienza raggiunta aggiorno...
    IF(@numUdc >= @capienza)
        BEGIN
            EXEC stp_celle_updPiena @IdxCellaTo, 1
        END
    
COMMIT TRAN

RETURN
go

commit
go

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_batch_RapQual_S01
*
* Esegue lo step 1 (caricamento dati RAW da AS400) per la tab dei rapporti di qualità
*
* Steamware, S.E.L.
* mod: 2010.09.23
*
****************************************/
alter PROCEDURE BatchQueue.stp_batch_RapQual_S01
(
    @minData DATETIME
)
AS
    -- BOZZA DA COMPLETARE A CURA MAZZUCCONI!!!

    DECLARE @SQL AS NVARCHAR(1000)
    DECLARE @dataAs400 AS VARCHAR(8)
    
    SET @dataAs400 = (SELECT dbo.dateToAsFormat(@minData))

    -- svuoto tab raw attuale
    /*
    DELETE FROM RawData.XOGIX00F
    */


    -- INSERISCO DA AS400
    /*
    INSERT INTO RawData.XOGIX00F 
    (
        SET @SQL = 
        N'SELECT 
                XRPQLN
               ,XRPQLD
               ,XNRETI
               ,XCDFOR
               ,XCDTER
               ,XCDPAR
               ,XDTPRO
               ,XTRPRO
               ,XQTPRO
               ,XDESMT
               ,XMATSC
               ,XBENQL
        FROM OPENQUERY( P65220DC,  ''SELECT * FROM MAZZT_DTV3.XOGIX00F WHERE XRPQLD >= '
        SET @SQL = @SQL + @dataAs400 + ''' )'

        EXEC dbo.sp_executesql @SQL
    )
    */

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

create table RilPro.AnagFornitori(
  CodFornitore   nvarchar(6)  not null constraint PK_AnagFornitori primary key,
  DescFornitore  nvarchar(35),
  DescFornitore2 nvarchar(35)
)
go

create table RilPro.AnagLeghe(
  CodLega   nvarchar(12) not null constraint PK_AnagLeghe primary key,
  CodLega2  nvarchar(12),
  DescLega  nvarchar(25),
  DescLega2 nvarchar(25)
)
go

commit
go

set xact_abort on
go

begin transaction
go

alter table AS400_BatchMovimenti drop
  constraint FK_AS400_BatchMovimenti_AS400_MagCont ,
  constraint FK_AS400_BatchMovimenti_AnagTipoEvento 
go

exec sp_rename 'PK_AS400_BatchMovimenti', 'tmp__PK_AS400_BatchMovimenti', 'OBJECT'
go

exec sp_rename 'AS400_BatchMovimenti', 'tmp__AS400_BatchMovimenti_0', 'OBJECT'
go

create table AS400_BatchMovimenti(
  DataIns      datetime      not null,
  CodEvento    nvarchar(10)  not null,
  Particolare  nvarchar(15)  not null,
  UDC          nvarchar(50)  not null,
  CodMagAS     nvarchar(50)  not null,
  Quantita     decimal(10,2) not null,
  DataBatch    datetime,
  DataVerifica datetime,

  constraint PK_AS400_BatchMovimenti primary key(DataIns,CodEvento,Particolare,UDC,CodMagAS)
)
go

alter table AS400_BatchMovimenti add
  constraint FK_AS400_BatchMovimenti_AnagTipoEvento foreign key(CodEvento) references AnagTipoEvento(CodEvento) on update cascade,
  constraint FK_AS400_BatchMovimenti_AS400_MagCont foreign key(CodMagAS) references AS400_MagCont(CodMagAS) on update cascade
go

exec sp_addextendedproperty 'MS_Description', 'dataora inserimento in coda caricamento', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataIns'
go

exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'CodEvento'
go

exec sp_addextendedproperty 'MS_Description', 'dataora di caricamento batch verso AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataBatch'
go

exec sp_addextendedproperty 'MS_Description', N'dataora in cui è stato verificato il caricamento su AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataVerifica'
go

insert into AS400_BatchMovimenti(DataIns,CodEvento,Particolare,UDC,CodMagAS,Quantita,DataBatch,DataVerifica) select DataIns,CodEvento,Particolare,N'',CodMagAS,Quantita,DataBatch,DataVerifica from tmp__AS400_BatchMovimenti_0
go

drop table tmp__AS400_BatchMovimenti_0
go

commit
go







set xact_abort on
go

begin transaction
go

alter table AS400_BatchMovimenti drop
  constraint FK_AS400_BatchMovimenti_AS400_MagCont ,
  constraint FK_AS400_BatchMovimenti_AnagTipoEvento 
go

exec sp_rename 'PK_AS400_BatchMovimenti', 'tmp__PK_AS400_BatchMovimenti', 'OBJECT'
go

exec sp_rename 'AS400_BatchMovimenti', 'tmp__AS400_BatchMovimenti_0', 'OBJECT'
go

create table AS400_BatchMovimenti(
  DataIns      datetime      not null,
  CodEvento    nvarchar(10)  not null,
  Particolare  nvarchar(15)  not null,
  UDC          nvarchar(50)  not null,
  CodMagAS     nvarchar(50)  not null,
  Quantita     decimal(10,2) not null,
  DataBatch    datetime,
  DataVerifica datetime,

  constraint PK_AS400_BatchMovimenti primary key(DataIns,CodEvento,Particolare,UDC,CodMagAS)
)
go

alter table AS400_BatchMovimenti add
  constraint FK_AS400_BatchMovimenti_AnagTipoEvento foreign key(CodEvento) references AnagTipoEvento(CodEvento) on update cascade,
  constraint FK_AS400_BatchMovimenti_AS400_MagCont foreign key(CodMagAS) references AS400_MagCont(CodMagAS) on update cascade
go

exec sp_addextendedproperty 'MS_Description', 'dataora inserimento in coda caricamento', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataIns'
go

exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'CodEvento'
go

exec sp_addextendedproperty 'MS_Description', 'dataora di caricamento batch verso AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataBatch'
go

exec sp_addextendedproperty 'MS_Description', N'dataora in cui è stato verificato il caricamento su AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataVerifica'
go

insert into AS400_BatchMovimenti(DataIns,CodEvento,Particolare,UDC,CodMagAS,Quantita,DataBatch,DataVerifica) select DataIns,CodEvento,Particolare,N'',CodMagAS,Quantita,DataBatch,DataVerifica from tmp__AS400_BatchMovimenti_0
go

drop table tmp__AS400_BatchMovimenti_0
go

commit
go





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