set xact_abort on
go

begin transaction
go

create index i_dataFus on ElencoCartellini(DataFus)
go

create index i_IdxPosizione on ElencoCartellini(IdxPosizione)
go

commit
go

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_ArtiInProd_ByImpData
*
* ottiene l'elenco dei particolari in lavorazione in una certa data/ora (già trasformato data+turno in dataora) su un impianto 
* --> con dettaglio su articoli (da anagrafica)
*
* Steamware, S.E.L.
* mod: 2010.04.29
*
****************************************/
alter PROCEDURE stp_ArtiInProd_ByImpData
(
    @CodImpianto VARCHAR(50),
    @DataRif DATETIME
)
AS

-- iniziamo definendo le varie viste accessorie
WITH	cteUltStampo AS
            (SELECT		CodStampo, InizioValidita, ProgFigure, FineValidita, NumCommessa, NumFigure, CodCliente, CodArticolo, Particolare
                FROM    RilPro.StampoArticolo AS A
                WHERE   (@DataRif >= InizioValidita AND @DataRif <= ISNULL(FineValidita, DATEADD(year, 2, GETDATE()))) ), 
        cteEspAttivi AS
            (SELECT     s.CodStampo, s.Esponente, s.EspAttivo, s.DataInserim, s.DataValidita
                FROM    RilPro.StampoEsponente AS s INNER JOIN
                (SELECT     CodStampo, MAX(DataValidita) AS DataValidita
                    FROM          RilPro.StampoEsponente
                    WHERE      (DataValidita <= @DataRif) AND (EspAttivo = 'S')
                    GROUP BY CodStampo) AS s2 ON s.CodStampo = s2.CodStampo AND s.DataValidita = s2.DataValidita), 
        cteLineeAttive AS
            (SELECT		CodImpianto, CodStampo, NumStampate, CONVERT(DATETIME, DataInizio) AS DataInizio, DataFine, TurnoInizio, TurnoFine
                FROM    RilPro.LineaStampi
                WHERE   (@DataRif BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(year, 2, GETDATE())))
                AND		CodImpianto = @CodImpianto)
                
-- faccio la select principale
SELECT		l.CodImpianto, l.CodStampo, l.NumStampate, l.DataInizio, l.TurnoInizio, g.InizioValidita, g.FineValidita, g.NumFigure, 
            dbo.f_padLeft(CAST(g.CodCliente AS varchar(50)), 5, '0') AS CodCliente, ISNULL(cl.RagSociale,'-') AS RagSociale, CAST(g.CodArticolo AS varchar(50)) AS CodArticolo,
            g.Particolare, pa.DescParticolare, pa.DisegnoGrezzo, pa.CodFamiglia, fa.DescFamiglia, fi.Figura, es.Esponente
    FROM    cteLineeAttive AS l INNER JOIN cteUltStampo AS g ON l.CodStampo = g.CodStampo LEFT OUTER JOIN
            RilPro.StampoFigure AS fi ON l.CodStampo = fi.CodStampo LEFT OUTER JOIN
            cteEspAttivi AS es ON g.CodStampo = es.CodStampo LEFT OUTER JOIN
            RilPro.AnagParticolari AS pa ON g.Particolare = pa.Particolare LEFT OUTER JOIN
            RilPro.AnagFamiglie AS fa ON pa.CodFamiglia = fa.CodFamiglia LEFT OUTER JOIN
            RilPro.AnagClienti AS cl ON g.CodCliente = cl.CodCliente
    ORDER BY l.CodImpianto

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_UDC_delibera
*
* fa la delibera dell'UDC andando a processare la state machien e quindi eventualmente cambiando la sua posizione
*
* Steamware, S.E.L.
* mod: 2010.09.13
*
************************************/
alter PROCEDURE stp_UDC_delibera
(
    @CodTipoDelibera NVARCHAR(50),
    @UDC NVARCHAR(50),
    @CodSoggetto NVARCHAR(17),	
    @CodCS VARCHAR(2)
)

AS

BEGIN TRAN
    DECLARE @IdxPosizioneTo AS INT
    DECLARE @IdxPosizioneFrom AS INT
    DECLARE @IdxPosizionePre AS NVARCHAR(50)
    DECLARE @IdxCellaPre AS INT
    DECLARE @IdxCellaTo AS INT

    -- ricavo cella ATTUALE
    SET		@IdxCellaPre = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
    
    -- ricavo posizione ATTUALE
    SET		@IdxPosizionePre = (SELECT TOP 1 b.CodMag FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco WHERE c.IdxCella = @IdxCellaPre)

    
    -- registro delibera
    INSERT INTO DELIBERE
    VALUES (@CodTipoDelibera, @UDC, GETDATE(), @CodSoggetto)

    -- ricavo nuova posizione
    SET		@IdxPosizioneTo = (SELECT	tt.IdxPosizioneTo
                               FROM     TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento
                               WHERE    (atd.CodTipoDelibera = @CodTipoDelibera))
    
    -- ricavo posizione TEORICA VECCHIA
    SET		@IdxPosizioneFrom = (SELECT	tt.IdxPosizione
                               FROM     TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento
                               WHERE    (atd.CodTipoDelibera = @CodTipoDelibera))

    -- calcolo la prima cella della nuova posizione...
    SET		@IdxCellaTo = (
                            SELECT TOP 1 IdxCella FROM Celle
                                WHERE IdxBlocco = (
                                    SELECT IdxBlocco FROM Blocchi
                                        WHERE CodMag=CAST(@IdxPosizioneTo AS NVARCHAR(50)))
                          )
    
    -- faccio update posizione
    UPDATE ElencoCartellini
    SET IdxPosizione = @IdxPosizioneTo
    WHERE UDC = @UDC

    -- controllo posizioni act e from teorica: SE e SOLO SE corrispondono faccio spostamento...
    IF(CAST(@IdxPosizioneFrom AS NVARCHAR(50)) = @IdxPosizionePre)
    BEGIN
        -- ora cambio anche la posizione corrente dell'UDC (e tramite trigger storicizza...)
        EXEC stp_spostaUdc @CodCS, @UDC, @IdxCellaTo	
    END
    
COMMIT TRAN


RETURN
go

/***************************************
* STORED stp_UDC_getByFlussoDate
*
* elenco cartellini creati su una data bilancia in un periodo ti tempo indicato
*
* Steamware, S.E.L.
* mod: 2010.10.13
*
****************************************/
create PROCEDURE stp_UDC_getByFlussoDate
(

    @CodCS NVARCHAR(2),
    @Flusso NVARCHAR(2),
    @DataFrom DATETIME,
    @DataTo DATETIME
)
AS

SELECT		*
FROM        ElencoCartellini
WHERE       (UDC LIKE 'U' + @CodCS + @Flusso + '%')
            AND (DataFus >= @DataFrom) AND (DataFus <= @DataTo)
ORDER BY	UDC DESC

RETURN
go

/***************************************
* STORED stp_UDC_getLast_ByDataTurnoLineaParticolare
*
* elenco cartellini ULTIMI creati su una data bilancia dati data, turno, linea e particolare
*
* Steamware, S.E.L.
* mod: 2010.10.13
*
****************************************/
create PROCEDURE stp_UDC_getLast_ByDataTurnoLineaParticolare
(
    @CodCS VARCHAR(2),
    @Particolare VARCHAR(15),
    @CodImpianto AS VARCHAR(50),
    @DataFus DATETIME,
    @TurnoFus INT
)
AS

-- carico l'elenco dei dati "attivi" x il filtraggio richiesto
WITH cte_contAttivi AS(
    SELECT        CodCS, Particolare, Esponente, CodImpianto,CodStampo, Figura, DataFus, TurnoFus, MAX(NumCont) AS NumCont
    FROM            ElencoCartellini
    GROUP BY CodCS, Particolare, Esponente, CodImpianto, CodStampo, Figura, DataFus, TurnoFus
    HAVING        (CodImpianto = @CodImpianto) AND (DataFus = @DataFus)  AND (TurnoFus= @TurnoFus) AND (Particolare= @Particolare) AND CodCS = @CodCS
)

    -- traduco in tab estesa UDC
    SELECT ec.* FROM ElencoCartellini ec INNER JOIN cte_contAttivi ca
        ON ec.Particolare = ca.Particolare AND ec.Esponente=ca.Esponente AND ec.CodImpianto=ca.CodImpianto 
        AND ec.CodStampo=ca.CodStampo AND ec.Figura=ca.Figura AND ec.DataFus=ca.DataFus AND ec.TurnoFus=ca.TurnoFus 
        AND ec.NumCont=ca.NumCont AND ec.CodCS=ca.CodCS

RETURN
go

commit
go

set xact_abort on
go

begin transaction
go

INSERT INTO dbo.TabTranPosizEventi
  VALUES (N'MagPreFus', 84, 84)
go

commit transaction
go



drop table AS400_BatchMovimenti
go






set xact_abort on
go

begin transaction
go

create table AS400_BatchMovimenti(
  IdxBatch     int           not null identity constraint PK_AS400_BatchMovimenti primary key,
  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
)
go

alter table AS400_BatchMovimenti add
  constraint FK_AS400_BatchMovimenti_AS400_MagCont foreign key(CodMagAS) references AS400_MagCont(CodMagAS) on update cascade,
  constraint FK_AS400_BatchMovimenti_AnagTipoEvento foreign key(CodEvento) references AnagTipoEvento(CodEvento) 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

commit
go






drop table RigheListePrelievo_AS
go



create table RigheListePrelievo_AS(
  IdxRiga   int           not null identity constraint PK_RigheListePrelievo_AS primary key,
  CodLista  nvarchar(12)  not null,
  UDC       nvarchar(50)  not null,
  Qta       decimal(10,2) not null,
  Proposto  bit,
  Prelevato bit
)
go


drop table ElencoListePrelievo_AS
go


set xact_abort on
go

begin transaction
go

create table ElencoListePrelievo_AS(
  CodLista        nvarchar(12)  not null constraint PK_ElencoListePrelievo_AS primary key,
  CodTipoLista    nvarchar(10)  not null,
  CodCS           nchar(2)      not null,
  DataCreaz       datetime      not null,
  CodCliente      nvarchar(6),
  RagSociale      nvarchar(35),
  CodSoggetto     nchar(17)     not null,
  Particolare     nvarchar(15)  not null,
  DescParticolare nvarchar(30),
  DisegnoGrezzo   nvarchar(30),
  Esponente       nvarchar(6),
  Figura          nvarchar(4),
  CodImballo      nvarchar(15),
  QtaTot          decimal(10,2) not null,
  CodStatoLista   int           not null constraint DF_ElencoListePrelievo_AS_CodStatoLista default (1),
  Destinatario    nvarchar(50),
  DataBatch       datetime,
  DataVerifica    datetime
)
go

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

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

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

create VIEW v_datiPackingList
AS
SELECT        dbo.RigheListePrelievo_AS.IdxRiga, dbo.ElencoCartellini.UDC, dbo.ElencoListePrelievo_AS.Particolare, dbo.ElencoCartellini.CodImballo, 
                         CAST(RIGHT(dbo.RigheListePrelievo_AS.UDC, 6) AS INT) AS matrUdc, CASE WHEN (dbo.ElencoListePrelievo_AS.CodTipoLista = '03-TerWip') 
                         THEN 'FO' ELSE 'CL' END AS tipo, dbo.ElencoListePrelievo_AS.Destinatario, dbo.ElencoCartellini.Qta, 
                         dbo.ElencoCartellini.PesoTot - dbo.ElencoCartellini.Tara AS PesoNetto, dbo.ElencoCartellini.PesoTot, 'B' AS Stato, GETDATE() AS data, 
                         dbo.ElencoListePrelievo_AS.DataBatch
FROM            dbo.ElencoListePrelievo_AS INNER JOIN
                         dbo.RigheListePrelievo_AS ON dbo.ElencoListePrelievo_AS.CodLista = dbo.RigheListePrelievo_AS.CodLista INNER JOIN
                         dbo.ElencoCartellini ON dbo.RigheListePrelievo_AS.UDC = dbo.ElencoCartellini.UDC
WHERE        (dbo.ElencoListePrelievo_AS.DataBatch IS NULL)
go

exec sp_addextendedproperty 'MS_DiagramPane1', '[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00]
Begin DesignProperties = 
   Begin PaneConfigurations = 
      Begin PaneConfiguration = 0
         NumPanes = 4
         Configuration = "(H (1[40] 4[20] 2[20] 3) )"
      End
      Begin PaneConfiguration = 1
         NumPanes = 3
         Configuration = "(H (1 [50] 4 [25] 3))"
      End
      Begin PaneConfiguration = 2
         NumPanes = 3
         Configuration = "(H (1 [50] 2 [25] 3))"
      End
      Begin PaneConfiguration = 3
         NumPanes = 3
         Configuration = "(H (4 [30] 2 [40] 3))"
      End
      Begin PaneConfiguration = 4
         NumPanes = 2
         Configuration = "(H (1 [56] 3))"
      End
      Begin PaneConfiguration = 5
         NumPanes = 2
         Configuration = "(H (2 [66] 3))"
      End
      Begin PaneConfiguration = 6
         NumPanes = 2
         Configuration = "(H (4 [50] 3))"
      End
      Begin PaneConfiguration = 7
         NumPanes = 1
         Configuration = "(V (3))"
      End
      Begin PaneConfiguration = 8
         NumPanes = 3
         Configuration = "(H (1[56] 4[18] 2) )"
      End
      Begin PaneConfiguration = 9
         NumPanes = 2
         Configuration = "(H (1 [75] 4))"
      End
      Begin PaneConfiguration = 10
         NumPanes = 2
         Configuration = "(H (1[66] 2) )"
      End
      Begin PaneConfiguration = 11
         NumPanes = 2
         Configuration = "(H (4 [60] 2))"
      End
      Begin PaneConfiguration = 12
         NumPanes = 1
         Configuration = "(H (1) )"
      End
      Begin PaneConfiguration = 13
         NumPanes = 1
         Configuration = "(V (4))"
      End
      Begin PaneConfiguration = 14
         NumPanes = 1
         Configuration = "(V (2))"
      End
      ActivePaneConfig = 0
   End
   Begin DiagramPane = 
      Begin Origin = 
         Top = 0
         Left = 0
      End
      Begin Tables = 
         Begin Table = "ElencoCartellini"
            Begin Extent = 
               Top = 14
               Left = 658
               Bottom = 376
               Right = 828
            End
            DisplayFlags = 280
            TopColumn = 0
         End
         Begin Table = "ElencoListePrelievo_AS"
            Begin Extent = 
               Top = 6
               Left = 38
               Bottom = 367
               Right = 208
            End
            DisplayFlags = 280
            TopColumn = 0
         End
         Begin Table = "RigheListePrelievo_AS"
            Begin Extent = 
               Top = 5
               Left = 353
               Bottom = 200
               Right = 523
            End
            DisplayFlags = 280
            TopColumn = 0
         End
      End
   End
   Begin SQLPane = 
   End
   Begin DataPane = 
      Begin ParameterDefaults = ""
      End
      Begin ColumnWidths = 14
         Width = 284
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
      End
   End
   Begin CriteriaPane = 
      Begin ColumnWidths = 11
         Column = 1440
         Alias = 900
         Table = 1170
         Output = 720
         Append = 1400
         NewValue = 1170
         SortType = 1350
         SortOrder = 1410
         GroupBy = 1350
         Filter = 1350
         Or = 1350
         Or = 1350
         Or = 1350
      End
   End
End
', 'SCHEMA', 'dbo', 'VIEW', 'v_datiPackingList'
go

exec sp_addextendedproperty 'MS_DiagramPaneCount', 1, 'SCHEMA', 'dbo', 'VIEW', 'v_datiPackingList'
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_consumaMP
*
* Salva il movimento di consumo dell'UDC di MP indicato
*
* Steamware, S.E.L.
* mod: 2010.10.12
*
****************************************/
alter PROCEDURE BatchQueue.stp_consumaMP
(
    @XRPQLN	INT, --è il num rap qualità
    @XNRETI NVARCHAR(10), -- è il numUdc prog
    @XDTPRO	INT, -- data 8 cifre aaaammgg
    @XTRPRO NVARCHAR(5), -- turno
    @XDESMT NVARCHAR(3), -- destinatario int/terzista
    @XCDTER NVARCHAR(6) -- cod terzista
)
AS
    -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!!

    DECLARE @SQL AS NVARCHAR(1000)

    -- Faccio chiamata su AS400
    
    SET @SQL =  N' OPENQUERY( P65220DC,  ''UPDATE MAZZT_DTV3.XOGIX00F' 
    SET @SQL = @SQL + 'SET	XDTPRO =  ' + CAST(@XDTPRO AS NVARCHAR(8)) + ', XTRPRO = ' + @XTRPRO
    SET @SQL = @SQL + ', XDESMT = ''' + @XDESMT +''', XMATSC=''S'' , XCDTER = ''' + @XCDTER + ''' '
    SET @SQL = @SQL + 'WHERE XRPQLN =' +  CAST(@XRPQLN AS NVARCHAR(20))  + ' AND XNRETI = ' + @XNRETI + ''' )'

    EXEC dbo.sp_executesql @SQL
    
RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*stp_processaCodaMovimMag
* STORED stp_processaCodaConsumoMP
*
* Processa la coda dei movimenti di magazzino e chiama procedura x salvataggio dato su AS400
*
* Steamware, S.E.L.
* mod: 2010.10.15
*
****************************************/
create PROCEDURE BatchQueue.stp_processaCodaMovimMag
AS
    -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!!
    
    -- campi x cursore e valorizzazione riga a riga
    DECLARE @IdxRiga INT
    DECLARE @CodStab CHAR(2)
    DECLARE @UDC NVARCHAR(15)
    DECLARE @Particolare NVARCHAR(15)
    DECLARE @CodImb NVARCHAR(15)
    DECLARE @Matr INT	
    DECLARE @Tipo NVARCHAR(2)
    DECLARE @Dest NVARCHAR(10)
    DECLARE @Qta INT
    DECLARE @PesoNet NUMERIC(7,3)
    DECLARE @PesoLor NUMERIC(7,3)	
    DECLARE @Stato CHAR(1)
    DECLARE @Data NVARCHAR(8)
    -- variabile x composizioen query
    DECLARE @SqlCode NVARCHAR(1000)
    -- faccio una query con un cursore x processare tutte le righe da inviare ad AS400..
    DECLARE RigaPackList CURSOR FOR
        SELECT IdxRiga FROM v_datiPackingList

    -- setto il codice stabilimento da inviare ad AS... VERIFICARE!!!
    SET @CodStab = '05'	

    -- inizio cursore!
    OPEN RigaPackList
    FETCH NEXT FROM RigaPackList 
    INTO @IdxRiga
    WHILE @@FETCH_STATUS = 0
    BEGIN
      -- controllo ci sia la riga
      IF (SELECT COUNT(IdxRiga) FROM v_datiPackingList WHERE IdxRiga = @IdxRiga) > 0
        BEGIN
            -- carico valori che mi servono
            SELECT	@Particolare=pl.Particolare, @UDC=UDC, @CodImb=pl.CodImballo, @Matr = pl.matrUdc, @Tipo=pl.tipo, @Dest=pl.Destinatario, 
                    @Qta=ABS(pl.Qta), @PesoNet=pl.PesoNetto, @PesoLor=pl.PesoTot, @Stato=pl.Stato, @Data=dbo.dateToAsFormat(pl.data)
                    FROM v_datiPackingList pl
                    WHERE IdxRiga = @IdxRiga
                    
            -- compongo testo x exec
            SET @SqlCode = N'EXEC BatchQueue.stp_registraPackList ' + @CodStab + ' ' + @UDC + ' ' + @Particolare + ' ' + @CodImb + ' ' + CAST(@Matr AS NVARCHAR(8)) + ' ' + @Tipo + ' ' + @Dest + ' ' + CAST(@Qta AS NVARCHAR(8)) + ' ' + CAST(@PesoNet AS NVARCHAR(8)) + ' ' + CAST(@PesoLor AS NVARCHAR(8)) + ' ' + @Stato + ' ' + @Data
            -- lo mostro
            print '%' + LTRIM(RTRIM(@SqlCode)) + '%'
            
            -- !!! TESTARE !!!
            /*
            -- chiamo la stored ed eseguo invio
            EXEC dbo.sp_executesql @SqlCode -- decommentare se va bene...
            
            -- registro la data del movimento BATCH
            UPDATE AS400_BatchMovimenti SET DataBatch = GETDATE() WHERE IdxRiga = @IdxRiga
            */
            
            FETCH NEXT FROM RigaPackList INTO @IdxRiga
        END
    END
    CLOSE RigaPackList
    DEALLOCATE RigaPackList
    

RETURN
go

/***************************************
* STORED stp_registraMovMag
*
* Salva il movimento di magazzino indicato
*
* Steamware, S.E.L.
* mod: 2010.10.15
*
****************************************/
create PROCEDURE BatchQueue.stp_registraMovMag
(
    @NOMUS	NVARCHAR(50), -- è il nome utente
    @CDCAU NVARCHAR(2), -- è la causale del movimento
    @CDPAR	NVARCHAR(15), -- codice particolare
    @CDMAG NVARCHAR(2), -- codice magazzino
    @QTMOV	INT, -- quantità movimento
    @DAMOV	NVARCHAR(8), -- data 8 cifre aaaammgg
    @RIFFO NVARCHAR(8) -- cod UDC compresso
)
AS
    -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!!

    DECLARE @SQL AS NVARCHAR(1000)

    -- Faccio chiamata su AS400
    SET @SQL =  N' OPENQUERY( P65220DC,  ''INSERT INTO MAZZT_DTV3.MWMV200F VALUES ' 
    SET @SQL = @SQL + @NOMUS + ', ' + @CDCAU + ', ' + @CDPAR + ', ' + @CDMAG + ', '
    SET @SQL = @SQL + CAST(@QTMOV AS NVARCHAR(8)) + ', ' + @DAMOV + ', ' + @RIFFO + ''' )'

    EXEC dbo.sp_executesql @SQL
    
RETURN
go

/***************************************
* STORED stp_registraPackList
*
* Salva i dati di packing list indicati
*
* Steamware, S.E.L.
* mod: 2010.10.15
*
****************************************/
create PROCEDURE BatchQueue.stp_registraPackList
(
    @PLREPA	NVARCHAR(2), -- è il codice reparto/stabilimento (05 pressofusione)
    @PLCART NVARCHAR(15), -- UDC
    @PLARTI NVARCHAR(15), -- cod articolo
    @PLCONT NVARCHAR(15), -- cod contenitore
    @PLMATR INT, -- matricola contenitore (solo cifre finali INT)
    @PLTPAN CHAR(2), -- tipo anagrafico CLiente / FOrnitore-terzista
    @PLCDAN NVARCHAR(6), -- cod terzista / cliente
    @PLQTA INT, -- quantità
    @PLPNET NUMERIC(7, 3), -- peso netto
    @PLPLOR NUMERIC(7, 3), -- peso lordo
    @PLSTAT CHAR(1), -- stato "P" predisposto per packing list, "B" bolla stampata
    @PLDTEN INT -- data entrata merce, data di carico dell'UDC 8 cifre aaaammgg
)
AS
    -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!!

    DECLARE @SQL AS NVARCHAR(1000)

    -- Faccio chiamata su AS400
    SET @SQL =  N' OPENQUERY( P65220DC,  ''INSERT INTO MAZZT_DTV3.PACKL00F VALUES ' 
    SET @SQL = @SQL + @PLREPA + ', ' + @PLCART + ', ' + @PLARTI + ', ' + @PLCONT + ', '
    SET @SQL = @SQL + CAST(@PLMATR AS NVARCHAR(5)) + ', ' + @PLTPAN + ', ' + @PLCDAN + ', ' + CAST(@PLQTA AS NVARCHAR(10)) + ', '
    SET @SQL = @SQL + CAST(@PLPNET AS NVARCHAR(10)) + ', ' + CAST(@PLPLOR AS NVARCHAR(10)) + ', ' + @PLSTAT + ', ' 
    SET @SQL = @SQL + CAST(@PLDTEN AS NVARCHAR(8)) + ''' )'

    EXEC dbo.sp_executesql @SQL
    
RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_ParticolariOverview
*
* restituisce solo la riga con il num max di celle DI UN DATO magazzino
*
* Steamware, S.E.L.
* mod: 2010.06.02
*
****************************************/
alter PROCEDURE stp_magazzinoOverviewByMag_maxCelle
(
    @CodCS VARCHAR(2),
    @CodMag VARCHAR(50)
)
AS


WITH cte_celle AS(
    SELECT     b.CodBlocco, c.IdxTipoCella, COUNT(c.IdxCella) * t.Capienza AS numCelle
    FROM         Celle AS c INNER JOIN
                          Blocchi AS b ON c.IdxBlocco = b.IdxBlocco INNER JOIN
                          TipoCella AS t ON c.IdxTipoCella = t.IdxTipoCella
    WHERE     (b.CodCS = @CodCS) AND (b.CodMag = @CodMag)
    GROUP BY b.CodBlocco, c.IdxTipoCella, t.Capienza
)


    SELECT		TOP (1) AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, b.IdxBlocco, b.CodBlocco, 
                ISNULL(c.numCelle,ISNULL(b.NumX * b.NumY * b.NumZ,1)) AS TotCelle, 
                0 AS CelleAttive, 0 AS CelleOccupate, 0 AS CelleLibere, GETDATE() AS Oldest, GETDATE() AS Newest
    FROM        AnagMag INNER JOIN Blocchi b ON AnagMag.CodMag = b.CodMag AND AnagMag.CodCS = b.CodCS INNER JOIN cte_celle c ON c.CodBlocco = b.CodBlocco
    WHERE       (AnagMag.CodCS = @CodCS) AND AnagMag.CodMag = @CodMag
    ORDER BY	TotCelle DESC
RETURN
go

/***************************************
* STORED stp_ParticolariOverview
*
* restituisce solo la riga con il num max di celle
*
* Steamware, S.E.L.
* mod: 2010.06.02
*
****************************************/
alter PROCEDURE stp_magazzinoOverview_maxCelle
(
    @CodCS VARCHAR(2)
)
AS

WITH cte_celle AS(
    SELECT     b.CodBlocco, c.IdxTipoCella, COUNT(c.IdxCella) * t.Capienza AS numCelle
    FROM         Celle AS c INNER JOIN
                          Blocchi AS b ON c.IdxBlocco = b.IdxBlocco INNER JOIN
                          TipoCella AS t ON c.IdxTipoCella = t.IdxTipoCella
    WHERE     (b.CodCS = @CodCS)
    GROUP BY b.CodBlocco, c.IdxTipoCella, t.Capienza
)


    SELECT		TOP (1) AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, b.IdxBlocco, b.CodBlocco, 
                ISNULL(c.numCelle,ISNULL(b.NumX * b.NumY * b.NumZ,1)) AS TotCelle, 
                0 AS CelleAttive, 0 AS CelleOccupate, 0 AS CelleLibere, GETDATE() AS Oldest, GETDATE() AS Newest
    FROM        AnagMag INNER JOIN Blocchi b ON AnagMag.CodMag = b.CodMag AND AnagMag.CodCS = b.CodCS INNER JOIN cte_celle c ON c.CodBlocco = b.CodBlocco
    WHERE       (AnagMag.CodCS = @CodCS)
    ORDER BY	TotCelle DESC

RETURN
go

commit
go




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