608 lines
20 KiB
Transact-SQL
608 lines
20 KiB
Transact-SQL
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
|
|
|
|
|
|
|
|
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
|