Files
Samuele E. Locatelli bdd7b413e8 Riaggiunto GMW_data
2016-11-22 17:58:00 +01:00

238 lines
6.0 KiB
Transact-SQL

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
)
AS
------------------------------------------------------------------------------------------------------
-- 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"
DECLARE @newData TABLE
(
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
)
INSERT INTO @newData
SELECT CodDataMatrix, LTRIM(RTRIM(CodGitterbox)), NumConchiglia, NumDisegno, EsponenteDisegno, CodDifettoScarto, InizioPreparazione, FinePreparazione, InizioIniezione, FineIniezione, MagDestinazione, DataImport
FROM v_trasfDataMatrix
WHERE DataImport > @lastImport AND LEFT(CodGitterbox, 1) = 'U'
AND CodDifettoScarto = '00' -- non importerò gli scarti!!!
-- creo UDC da gitterbox nuovi
INSERT INTO ElencoCartellini(UDC, Particolare, DataFus, Qta)
SELECT DISTINCT nd.CodGitterbox, null, MIN(InizioIniezione), dbo.getNumDatamatrix(nd.CodGitterbox)
FROM @newData nd LEFT OUTER JOIN ElencoCartellini ec ON nd.CodGitterbox = ec.UDC
WHERE ec.UDC IS NULL
GROUP BY nd.CodGitterbox
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
DECLARE cursoreImport CURSOR FOR
SELECT nd.CodGitterbox, tp.Particolare, tp.NumDisegno, tp.EsponenteDisegno
FROM @newData nd
INNER JOIN v_transcParticolari tp ON nd.NumDisegno = tp.NumDisegno AND nd.EsponenteDisegno = tp.EsponenteDisegno
OPEN cursoreImport
FETCH NEXT FROM cursoreImport INTO @udc, @Particolare, @NumDisegno, @EsponenteDisegno
WHILE @@FETCH_STATUS = 0
BEGIN
-- aggiorno gli UDC gitterbox esistenti per quantità tra quelli dei dati da importare...
UPDATE ElencoCartellini
SET CodCS = @CodCS,
IdxPosizione = @IdxPosizione,
CreateDate = @adesso,
Particolare = @Particolare,
DisegnoGrezzo = @NumDisegno,
Esponente = @EsponenteDisegno,
Figura = '',
CodImballo = '',
Tara = 0,
PesoTot = 0,
PesoCad = 0,
CodStato = 'Fin',
NumCont = 1,
TurnoFus = 0,
ModDate = @adesso
WHERE UDC = @udc
-- indico cella UDC corrente... calcolo la prima cella della nuova posizione...
SET @IdxCellaTo = ( SELECT dbo.f_getCellaByPos(CAST(@IdxPosizione AS NVARCHAR(50))) )
/*(
SELECT TOP 1 IdxCella FROM Celle
WHERE IdxBlocco = (
SELECT IdxBlocco FROM Blocchi
WHERE CodMag=CAST(@IdxPosizione AS NVARCHAR(50)))
)*/
-- controllo se posizione non ancora creata...
SET @posTrovate = ( SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE UDC = @udc )
IF( @posTrovate =0)
BEGIN
INSERT INTO PosizioneUdcCorrente
VALUES (@udc, @IdxCellaTo, @CodCS, @adesso)
END
FETCH NEXT FROM cursoreImport INTO @udc, @Particolare, @NumDisegno, @EsponenteDisegno
END
CLOSE cursoreImport
DEALLOCATE cursoreImport
-- inserisco datamatrix da ultimo import
INSERT INTO ElencoDataMatrix
SELECT * FROM @newData
-- aggiorno dati ultimo caricamento
SET @lastImport = ( SELECT ISNULL(MAX(DataImport),@lastImport) FROM @newData )
UPDATE LogImportFlussi
SET LastImport = @lastImport
WHERE NomeFlusso = @nomeFlusso
RETURN
go
commit
go
update Delibere
set UDC=LTRIM(RTRIM(udc))
go
-- disabilita triggers su db
DISABLE TRIGGER ALL ON DATABASE
go
update ElencoCartellini
set UDC=LTRIM(RTRIM(udc))
go
UPDATE ElencoDataMatrix
set CodGitterbox=LTRIM(RTRIM(CodGitterbox))
go
UPDATE Odette
SET CampoUDC=LTRIM(RTRIM(CampoUDC))
go
UPDATE Odette_storico
SET CampoUDC=LTRIM(RTRIM(CampoUDC))
go
UPDATE PosizioneUdcStorico
SET UDC=LTRIM(RTRIM(UDC))
go
-- ESEGUE
UPDATE PosizioneUdcCorrente
SET UDC=LTRIM(RTRIM(UDC))
go
UPDATE RelazUDC
SET UDC_child=LTRIM(RTRIM(UDC_child)),
UDC_parent=LTRIM(RTRIM(UDC_parent))
go
UPDATE RigheListePrelievo_storico
SET UDC=LTRIM(RTRIM(UDC))
go
-- ESEGUE
UPDATE RigheListePrelievo
SET UDC=LTRIM(RTRIM(UDC))
go
UPDATE StoricoCartellini
SET UDC=LTRIM(RTRIM(UDC))
go
ENABLE TRIGGER ALL ON DATABASE
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(392, GETDATE())
GO