update riallineamento SQL aggiornato/produzione
This commit is contained in:
@@ -59,13 +59,549 @@ go
|
||||
|
||||
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
/***************************************
|
||||
* STORED stp_scaricaUdc
|
||||
*
|
||||
* elimina dalle posizioni correnti un UDC, salvandone la posizione precedente nella tab storica (per scaricamento / spedizione)
|
||||
*
|
||||
* Steamware, S.E.L.
|
||||
* mod: 2012.05.30
|
||||
*
|
||||
****************************************/
|
||||
alter PROCEDURE stp_scaricaUdc
|
||||
(
|
||||
@UDC VARCHAR(50),
|
||||
@IdxPosizione INT,
|
||||
@CodEvento VARCHAR(10),
|
||||
@CodSoggetto NVARCHAR(17)
|
||||
)
|
||||
AS
|
||||
|
||||
BEGIN TRAN
|
||||
|
||||
/* Tolto da GCarlo xche non salvo utente che cancella x adesso
|
||||
-- aggiorno utente x la posizione corrente, in modo da poter POI salvare l'utente che scarica UDC
|
||||
UPDATE PosizioneUdcCorrente
|
||||
SET CodSoggetto = @CodSoggetto
|
||||
WHERE UDC = @UDC
|
||||
*/
|
||||
|
||||
-- Tabella del record cancellato ( al momento NON usata ) RIATTIVARE x QUANDO Voglio lo STORICO cancellati
|
||||
-- DECLARE @MyTableVar table ( IdxCella int, CodCS nchar(2) );
|
||||
|
||||
-- libero la posizione attuale dell'UDC (se c'è...)
|
||||
DELETE
|
||||
FROM dbo.PosizioneUdcCorrente
|
||||
-- OUTPUT DELETED.IdxCella , DELETED.CodCS INTO @MyTableVar RIATTIVARE x QUANDO Voglio lo STORICO cancellati
|
||||
WHERE UDC = @UDC;
|
||||
|
||||
-- ( al momento NON usata ) RIATTIVARE x QUANDO Voglio lo STORICO cancellati
|
||||
-- Inserisco in Storico Posizione il record di chi ha cancellato
|
||||
-- INSERT dbo.PosizioneUdcStorico ( UDC, IdxCella, DataInizio, DataFine, CodCS, CodSoggetto )
|
||||
-- SELECT @UDC, IdxCella, GETDATE(), GETDATE(), CodCS, @CodSoggetto FROM @MyTableVar
|
||||
|
||||
-- aggiorno l'UDC come posizione finale...
|
||||
UPDATE dbo.ElencoCartellini
|
||||
SET IdxPosizione = @IdxPosizione
|
||||
,ModDate = GETDATE()
|
||||
,CodEvento = @CodEvento
|
||||
,CodSoggetto = @CodSoggetto
|
||||
WHERE UDC = @UDC
|
||||
|
||||
COMMIT TRAN
|
||||
|
||||
RETURN
|
||||
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,
|
||||
@resetRLP BIT,
|
||||
@CodSoggetto VARCHAR(17)
|
||||
)
|
||||
AS
|
||||
|
||||
SET @UDC = UPPER(@UDC) -- metto ad Upper nel caso venga passato in minuscolo ( es. smart LDP da terminalino )
|
||||
|
||||
BEGIN TRAN
|
||||
|
||||
-- DICHIARAZIONI iniziali variabili
|
||||
DECLARE @IdxCellaFrom INT
|
||||
DECLARE @capienza INT
|
||||
DECLARE @numUdc INT
|
||||
DECLARE @udcInLdpPrel BIT
|
||||
|
||||
-- controllo cella di partenza
|
||||
SET @IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
|
||||
SET @IdxCellaFrom = ISNULL(@IdxCellaFrom,0) -- controllo x cella null...
|
||||
|
||||
-- controllo UDC, se faccia parte di LDP che NON permette MOV...
|
||||
SET @udcInLdpPrel = ( SELECT ISNULL(COUNT(rldp.UDC),0)
|
||||
FROM RigheListePrelievo rldp INNER JOIN ElencoListePrelievo ldp
|
||||
ON ldp.CodLista=rldp.CodLista INNER JOIN AnagStatiListe asl
|
||||
ON ldp.CodStatoLista = asl.CodStatoLista
|
||||
WHERE asl.canMovUDC = 0
|
||||
AND rldp.UDC=@UDC )
|
||||
-- controllo se cella di destinazione e di partenza coincidono NON FACCIO NULLA... altrimenti procedo
|
||||
IF (@IdxCellaTo <> @IdxCellaFrom)
|
||||
BEGIN
|
||||
-- controllo UDC "libero" da LDP (ovvero non faccia parte di LDP in uno stato che NON permette MOV, nel qual caso NON sposto)
|
||||
IF (@udcInLdpPrel = 0)
|
||||
-- tutto ok PROCEDO!
|
||||
BEGIN
|
||||
|
||||
-- controllo se la cella di partenza vada indicata come piena o meno
|
||||
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 cella di partenza NON raggiunta aggiorno NON Piena
|
||||
IF(@numUdc -1 < @capienza)
|
||||
BEGIN
|
||||
EXEC stp_celle_updPiena @IdxCellaFrom, 0
|
||||
END
|
||||
|
||||
---- aggiorno utente x la posizione corrente, in modo da poter POI salvare l'utente che scarica UDC
|
||||
--UPDATE PosizioneUdcCorrente
|
||||
--SET CodSoggetto = @CodSoggetto
|
||||
--WHERE UDC = @UDC
|
||||
|
||||
---- cancello posizione occupata ( non serve più faccio UPDATE )
|
||||
--DELETE
|
||||
--FROM PosizioneUdcCorrente
|
||||
--WHERE UDC = @UDC
|
||||
|
||||
-- SE RICHIESTO cancello eventuali righe liste di prelievo FUSI per l'UDC
|
||||
IF(@resetRLP = 1)
|
||||
BEGIN
|
||||
DELETE FROM RigheListePrelievo
|
||||
WHERE UDC = @UDC AND CodLista IN (
|
||||
SELECT CodLista FROM ElencoListePrelievo
|
||||
--WHERE CodTipoLista='01-PreFus'
|
||||
WHERE CodStatoLista < 4
|
||||
)
|
||||
END
|
||||
|
||||
-- modifico la posizione per l'UDC se esiste altrimenti la inserisco
|
||||
IF @IdxCellaFrom <> 0
|
||||
UPDATE PosizioneUdcCorrente
|
||||
SET IdxCella = @IdxCellaTo,
|
||||
DataRif = GETDATE(),
|
||||
CodSoggetto = @CodSoggetto
|
||||
FROM PosizioneUdcCorrente WHERE UDC = @UDC AND CodCS = @CodCS AND IdxCella = @IdxCellaFrom
|
||||
ELSE
|
||||
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
|
||||
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE(), @CodSoggetto);
|
||||
|
||||
|
||||
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
|
||||
|
||||
-- controllo se la cella di dest vada indicata come piena, altrimenti NON la indicherò (mai) come piena...
|
||||
SET @capienza = (
|
||||
SELECT CASE CheckPiena WHEN 1 THEN tc.Capienza ELSE @numUdc + 1 END
|
||||
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
||||
WHERE c.IdxCella = @IdxCellaTo
|
||||
)
|
||||
|
||||
|
||||
-- se capienza raggiunta aggiorno...
|
||||
IF(@numUdc >= @capienza)
|
||||
BEGIN
|
||||
EXEC stp_celle_updPiena @IdxCellaTo, 1
|
||||
END
|
||||
|
||||
END -- cellaFrom e cellaTo non coincidono...
|
||||
END -- UDC NON appartiene a LDP già prelevate...
|
||||
|
||||
COMMIT TRAN
|
||||
|
||||
RETURN
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
create index i_destinatario on ElencoListePrelievo(Destinatario);
|
||||
go
|
||||
|
||||
exec sp_rename 'ElencoListePrelievo.IX_ElencoListePrelievo_CodTipoLista_CodSoggettoCodStatoLista', 'ix_ElencoListePrelievo_CodTipoLista_CodSoggettoCodStatoLista', 'index';
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
-- =============================================
|
||||
-- Author: Samuele E. Locatelli
|
||||
-- Create date: 2009-09-13
|
||||
-- Mod date: 2012-09-17
|
||||
-- Description: trigger x inserimento valori in archivio storico alla cancellazione/modifica del dato (tranne curr user)
|
||||
-- =============================================
|
||||
alter TRIGGER trg_storico
|
||||
ON PosizioneUdcCorrente
|
||||
AFTER DELETE,UPDATE
|
||||
AS
|
||||
BEGIN
|
||||
-- SET NOCOUNT ON added to prevent extra result sets from
|
||||
-- interfering with SELECT statements.
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @FlaStoricizza AS Bit = 0; -- impostazione x test storicizza sempre attivo
|
||||
|
||||
-- Se è una cancellazione Storicizzo
|
||||
IF ( SELECT COUNT(*) FROM inserted ) = 0
|
||||
SET @FlaStoricizza = 1 ;
|
||||
|
||||
-- devo EVITARE di salvare se c'è solo modifica del codSoggetto...
|
||||
IF( UPDATE(UDC) OR UPDATE(IdxCella) OR UPDATE(CodCS) OR UPDATE(DataRif) )
|
||||
SET @FlaStoricizza = 1;
|
||||
|
||||
|
||||
-- IF( UPDATE(UDC) OR UPDATE(IdxCella) OR UPDATE(CodCS) OR UPDATE(DataRif) )
|
||||
|
||||
IF @FlaStoricizza = 1
|
||||
BEGIN
|
||||
-- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
|
||||
INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine, CodSoggetto)
|
||||
(
|
||||
SELECT UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine, CodSoggetto
|
||||
FROM deleted
|
||||
)
|
||||
END
|
||||
END
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
/*****************************************
|
||||
* STORED stp_DtMtrx_import
|
||||
*
|
||||
* Recupera dati Gitterbox/DataMatrix partendo leggendo dati successivi all'ultimo import e importanto in tab GMW
|
||||
*
|
||||
* Steamware, S.E.L.
|
||||
* mod: 2011.04.29
|
||||
*
|
||||
****************************************/
|
||||
alter PROCEDURE stp_DtMtrx_import
|
||||
(
|
||||
@CodCS VARCHAR(2),
|
||||
@IdxPosizione INT,
|
||||
@CodSoggetto VARCHAR(17)
|
||||
)
|
||||
AS
|
||||
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
/**** NON PRESENTE IN TEKAL
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- leggo data ultimo import (o creo record...)
|
||||
------------------------------------------------------------------------------------------------------
|
||||
DECLARE @nomeFlusso AS NVARCHAR(50)
|
||||
DECLARE @lastImport AS DATETIME
|
||||
DECLARE @trovati AS INT
|
||||
|
||||
-- imposto valori
|
||||
SET @nomeFlusso = 'DataMatrix'
|
||||
SET @lastImport = DATEADD(yy,-10,GETDATE()) -- inizializzo a -10 anni ...
|
||||
-- sistemo tab registrazione import...
|
||||
BEGIN TRAN
|
||||
-- cerco nella tab log ultima data caricamento
|
||||
SET @trovati = (
|
||||
SELECT COUNT(*)
|
||||
FROM logImportFlussi
|
||||
WHERE NomeFlusso = @nomeFlusso
|
||||
)
|
||||
-- controllo se record c'è...
|
||||
IF(@trovati > 0)
|
||||
BEGIN
|
||||
SET @lastImport = ( SELECT LastImport FROM LogImportFlussi WHERE NomeFlusso = @nomeFlusso )
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
-- lo creo!
|
||||
INSERT INTO LogImportFlussi(NomeFlusso, LastImport)
|
||||
VALUES (@nomeFlusso, @lastImport)
|
||||
END
|
||||
COMMIT TRAN
|
||||
------------------------------------------------------------------------------------------------------
|
||||
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- ora gestisco il vero caricamento...
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- filtro e salvo in tabella... gitterbox validi SOLO se iniziano per "U"
|
||||
-- verifico già se esite già l'UDC/Gitterbox in ElencoCartellini
|
||||
DECLARE @newData TABLE
|
||||
(
|
||||
RowNumber int,
|
||||
CodDataMatrix numeric(23, 0) ,
|
||||
CodGitterbox varchar(10) ,
|
||||
NumConchiglia int ,
|
||||
NumDisegno numeric(7, 0) ,
|
||||
EsponenteDisegno tinyint ,
|
||||
CodDifettoScarto varchar(5) ,
|
||||
InizioPreparazione smalldatetime ,
|
||||
FinePreparazione smalldatetime ,
|
||||
InizioIniezione smalldatetime ,
|
||||
FineIniezione smalldatetime ,
|
||||
MagDestinazione varchar(2) ,
|
||||
DataImport smalldatetime ,
|
||||
UDC varchar(50)
|
||||
)
|
||||
INSERT INTO @newData
|
||||
SELECT
|
||||
ROW_NUMBER() OVER(PARTITION BY CodGitterbox ORDER BY InizioIniezione ASC),
|
||||
dm.CodDataMatrix, LTRIM(RTRIM(dm.CodGitterbox)), dm.NumConchiglia, dm.NumDisegno, dm.EsponenteDisegno,dm.CodDifettoScarto, dm.InizioPreparazione, dm.FinePreparazione, dm.InizioIniezione, dm.FineIniezione, dm.MagDestinazione, dm.DataImport,
|
||||
ec.UDC
|
||||
FROM dbo.v_trasfDataMatrix AS dm
|
||||
LEFT JOIN dbo.ElencoCartellini AS ec
|
||||
ON dm.CodGitterbox = ec.UDC
|
||||
WHERE DataImport > @lastImport AND LEFT(CodGitterbox, 1) = 'U'
|
||||
AND CodDifettoScarto = '00' -- non importa gli scarti!!!
|
||||
|
||||
/* INIZIO MODIFICA
|
||||
|
||||
Note GCarlo :
|
||||
|
||||
Se il Gitterbox è già stato trasferito e/o cmq già presente non viene caricato, al
|
||||
limite vengono caricati i Datamatrix non ancora presenti ma con Gitterbox = EmptyGBox
|
||||
|
||||
Se non trovo il Particolare in dbo.v_transcParticolari i datamatrix non vengono importati
|
||||
Posso reimportarli spostando la data di import indietro in LogImportFlussi
|
||||
|
||||
ATTENZIONE! Si presuppone che i DataMatrix siano coerenti ovvero stesso Particolare ecc. ecc.
|
||||
*/
|
||||
BEGIN TRAN;
|
||||
|
||||
-- creo UDC da gitterbox nuovi ( Se UDC già presenti non li carico )
|
||||
-- GCARLO messo un RowCount prima e prendo solo il primo DataMatrix
|
||||
INSERT INTO ElencoCartellini(UDC,CodCS, Particolare, DescParticolare, DisegnoGrezzo, Esponente, DataFus, Qta,
|
||||
CodSoggetto, CodStato, IdxPosizione,CreateDate, ModDate, Figura, CodImballo, Tara, PesoTot, PesoCad, NumCont, TurnoFus )
|
||||
SELECT DISTINCT nd.CodGitterbox, @CodCS, tp.Particolare, an.DescParticolare, an.DisegnoGrezzo, an.EsponenteModifica
|
||||
,InizioIniezione, dbo.getNumDatamatrix(nd.CodGitterbox), @CodSoggetto As CodSoggetto, 'Fin' AS CodStato
|
||||
,@IdxPosizione, GETDATE(), GETDATE()
|
||||
,'' AS Figura, '' AS CodImballo,0 AS Tara,0 AS PesoTot,0 AS PesoCad,1 AS NumCont,0 AS TurnoFus
|
||||
FROM @newData nd
|
||||
INNER JOIN dbo.v_transcParticolari tp -- solo se PArticolare è presente in Trascodifica
|
||||
ON nd.NumDisegno = tp.NumDisegno AND nd.EsponenteDisegno = tp.EsponenteDisegno
|
||||
LEFT JOIN RilPro.AnagParticolari an -- Leggo il disegno in anagrafica
|
||||
ON tp.Particolare = an.Particolare
|
||||
WHERE nd.RowNumber = 1 -- Prendo solo i dati del First DataMatrix ( data iniezione )
|
||||
AND nd.UDC IS NULL -- solo Gitterbox Nuovi
|
||||
|
||||
|
||||
DECLARE @udc NVARCHAR(50)
|
||||
DECLARE @Particolare NVARCHAR(50)
|
||||
DECLARE @NumDisegno NVARCHAR(50)
|
||||
DECLARE @EsponenteDisegno NVARCHAR(50)
|
||||
DECLARE @IdxCellaTo INT
|
||||
DECLARE @adesso DATETIME
|
||||
DECLARE @posTrovate INT
|
||||
|
||||
SET @adesso = GETDATE()
|
||||
SET @posTrovate = 0
|
||||
|
||||
-- indico cella UDC corrente... calcolo la prima cella della nuova posizione...
|
||||
SET @IdxCellaTo = ( SELECT dbo.f_getCellaByPos(CAST(@IdxPosizione AS NVARCHAR(50))) )
|
||||
|
||||
DECLARE cursoreImport CURSOR FOR
|
||||
SELECT DISTINCT CodGitterbox
|
||||
FROM @newData
|
||||
WHERE UDC IS NULL -- solo x Gitterbox Nuovi
|
||||
|
||||
OPEN cursoreImport
|
||||
FETCH NEXT FROM cursoreImport INTO @udc
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
|
||||
-- controllo se posizione non ancora creata...
|
||||
SET @posTrovate = ( SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE UDC = @udc )
|
||||
IF( @posTrovate = 0)
|
||||
BEGIN
|
||||
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
|
||||
VALUES(@udc, @IdxCellaTo, @CodCS, @adesso, @CodSoggetto)
|
||||
END
|
||||
|
||||
FETCH NEXT FROM cursoreImport INTO @udc
|
||||
END
|
||||
|
||||
CLOSE cursoreImport
|
||||
DEALLOCATE cursoreImport
|
||||
|
||||
-- CARICAMENTO DATAMATRIX --
|
||||
|
||||
-- Carico i datamatrix se UDC/Gitterbox nuovi
|
||||
INSERT INTO dbo.ElencoDataMatrix
|
||||
SELECT nw.CodDataMatrix
|
||||
,nw.CodGitterbox
|
||||
,nw.NumConchiglia
|
||||
,nw.NumDisegno
|
||||
,nw.EsponenteDisegno
|
||||
,nw.CodDifettoScarto
|
||||
,nw.InizioPreparazione
|
||||
,nw.FinePreparazione
|
||||
,nw.InizioIniezione
|
||||
,nw.FineIniezione
|
||||
,nw.MagDestinazione
|
||||
,nw.DataImport
|
||||
FROM @newData AS nw
|
||||
LEFT JOIN dbo.ElencoDataMatrix AS el
|
||||
ON nw.CodDataMatrix = el.CodDataMatrix
|
||||
WHERE el.CodDataMatrix IS NULL -- Nuovi Datamatrix
|
||||
AND nw.UDC IS NULL -- Solo per Gitterbox nuovi
|
||||
|
||||
-- Se esistono Datamatrix di UDC già caricati in precedenza li inserisco ma senza
|
||||
-- assegnare l'UDC ma lo metto a EmptyGBox perchè potrebbero essere UDC già spediti o
|
||||
-- movimentati e dovrei anche aggiornare la giacenza in ElencoCartellini
|
||||
INSERT INTO dbo.ElencoDataMatrix
|
||||
SELECT nw.CodDataMatrix
|
||||
,'EmptyGBox' AS CodGitterbox
|
||||
,nw.NumConchiglia
|
||||
,nw.NumDisegno
|
||||
,nw.EsponenteDisegno
|
||||
,nw.CodDifettoScarto
|
||||
,nw.InizioPreparazione
|
||||
,nw.FinePreparazione
|
||||
,nw.InizioIniezione
|
||||
,nw.FineIniezione
|
||||
,nw.MagDestinazione
|
||||
,nw.DataImport
|
||||
FROM @newData AS nw
|
||||
LEFT JOIN dbo.ElencoDataMatrix AS el
|
||||
ON nw.CodDataMatrix = el.CodDataMatrix
|
||||
WHERE el.CodDataMatrix IS NULL
|
||||
AND nw.UDC IS NOT NULL
|
||||
|
||||
-- aggiorno dati ultimo caricamento
|
||||
SET @lastImport = ISNULL( ( SELECT MAX(DataImport)FROM @newData ),@lastImport )
|
||||
UPDATE LogImportFlussi
|
||||
SET LastImport = @lastImport
|
||||
WHERE NomeFlusso = @nomeFlusso
|
||||
COMMIT TRAN;
|
||||
*/
|
||||
RETURN
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
/***************************************
|
||||
* STORED stp_getUdcDetailFullCode_storico
|
||||
*
|
||||
* ottiene ULTIM dati UDC DA STORICO con i dati significativi partendo da un codice UDC COMPLETO
|
||||
*
|
||||
* Steamware, S.E.L.
|
||||
* mod: 2012.10.01
|
||||
*
|
||||
****************************************/
|
||||
create PROCEDURE stp_getUdcDetailFullCode_storico
|
||||
(
|
||||
@DataOraFrom DATETIME,
|
||||
@DataOraTo DATETIME,
|
||||
@UDC NVARCHAR(50),
|
||||
@CodCS NVARCHAR(2)
|
||||
)
|
||||
AS
|
||||
|
||||
WITH myCTE AS
|
||||
(
|
||||
SELECT TOP 1 *
|
||||
FROM StoricoCartellini
|
||||
WHERE DataEv BETWEEN @DataOraFrom AND @DataOraTo
|
||||
AND UDC = @UDC
|
||||
ORDER BY DataEv DESC
|
||||
)
|
||||
|
||||
SELECT stc.UDC, ISNULL(stc.RagSociale, N'nd') AS RagSociale, ISNULL(stc.Particolare, N'nd') AS Particolare,
|
||||
ISNULL(stc.DescParticolare, N'nd') AS DescParticolare, ISNULL(stc.DisegnoGrezzo, N'nd') AS DisegnoGrezzo,
|
||||
ISNULL(stc.Esponente, N'nd') AS Esponente, ISNULL(stc.DescImpianto, N'nd') AS DescImpianto,
|
||||
ISNULL(stc.DataFus, N'') AS DataFus, ISNULL(stc.TurnoFus, 0) AS TurnoFus, stc.CodImballo,
|
||||
stc.Qta, ISNULL(AnagStatiProdotto.DescStato, N'nd') AS DescStato, stc.ModDate,
|
||||
CASE WHEN(stc.IdxPosizione < 0) THEN 'Consum' ELSE ISNULL(Blocchi.CodMag, N'nd') END AS CodMag,
|
||||
ISNULL(Blocchi.CodBlocco, N'nd') AS CodBlocco, ISNULL(Celle.CodCella, N'nd') AS CodCella, ISNULL(dbo.Celle.IdxCella, 0) AS IdxCella,
|
||||
ISNULL(Celle.X, 0) AS X, ISNULL(Celle.Y, 0) AS Y, ISNULL(Celle.Z, 0) AS Z, stc.IdxPosizione, ISNULL(stc.Note,'') AS Note
|
||||
FROM AnagStatiProdotto RIGHT OUTER JOIN
|
||||
myCTE stc ON AnagStatiProdotto.CodStato = stc.CodStato AND AnagStatiProdotto.CodStato = stc.CodStato
|
||||
LEFT OUTER JOIN Celle INNER JOIN PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella
|
||||
AND Celle.IdxCella = PosizioneUdcCorrente.IdxCella AND Celle.IdxCella = PosizioneUdcCorrente.IdxCella
|
||||
INNER JOIN Blocchi ON Celle.IdxBlocco = Blocchi.IdxBlocco INNER JOIN AnagMag ON Blocchi.CodMag = AnagMag.CodMag
|
||||
AND Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag AND Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag
|
||||
AND Blocchi.CodCS = AnagMag.CodCS ON stc.UDC = PosizioneUdcCorrente.UDC
|
||||
WHERE (stc.UDC = @UDC) AND (stc.CodCS = @CodCS)
|
||||
|
||||
RETURN
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- registro versione...
|
||||
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(505, GETDATE())
|
||||
GO
|
||||
|
||||
Reference in New Issue
Block a user