set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_ODETTE_upsertUdc * * effettua upsert x l'UDC (ovver crea nuovo solo se non c'è...) * * Steamware, S.E.L. * mod: 2011.04.28 * ****************************************/ alter PROCEDURE stp_ODETTE_upsertUdc ( @UDC NVARCHAR(10), @CodCS VARCHAR(2), @numBolla NVARCHAR(6), @dataBolla NVARCHAR(8), @IndStabFrom NVARCHAR(50), @qtaCont NVARCHAR(50) ) AS -- DECLARE iniziali x gestione contatori odette DECLARE @Flusso AS VARCHAR(2) DECLARE @Anno AS VARCHAR(2) DECLARE @numOdette AS INT DECLARE @nextOdette AS INT ------------------------------------------------------------------------------------------------------ -- Fix flusso ed anno x 'OD' e '00' (contatore non spezzato su anno... ------------------------------------------------------------------------------------------------------ SET @Flusso = 'OD' SET @Anno = '00' ------------------------------------------------------------------------------------------------------ -- Contatore Odette ------------------------------------------------------------------------------------------------------ -- controllo se ci sia già un odette per company / flusso / anno BEGIN TRAN -- cerco nella tab contatori UDC l'ultimo valido SET @numOdette = ( SELECT count(*) FROM Odette WHERE CodCS = @CodCS ) -- controllo se record c'è... IF(@numOdette > 0) BEGIN -- se c'è incremento di 1 in tab UPDATE ContatoriUdc SET LastIdx = LastIdx + 1 WHERE CodCS = @CodCS AND Flusso = @Flusso AND Anno = @Anno END ELSE BEGIN -- lo creo! INSERT INTO ContatoriUdc(CodCS, Flusso, Anno, LastIdx) VALUES (@CodCS, @Flusso, @Anno, 1) END -- aggiorno numero UDC SET @numOdette = ( SELECT LastIdx FROM ContatoriUdc WHERE CodCS = @CodCS AND Flusso = @Flusso AND Anno = @Anno ) COMMIT TRAN -- cerco se ci sia già la riga Odette DECLARE @udcTrovati AS INT SET @udcTrovati = ( SELECT COUNT(*) FROM Odette WHERE CampoUDC = @UDC ) -- controllo se esista già... se non c'è creo IF (@udcTrovati = 0) BEGIN INSERT INTO Odette(CampoUDC, StatoOk, CodCS) VALUES(@UDC, 0, @CodCS) END -- calcolo valori x update DECLARE @DataB AS NVARCHAR(7) SET @DataB = ( SELECT 'D'+ SUBSTRING(@dataBolla, 3, 6) ) DECLARE @udcShort NVARCHAR(10) --SET @udcShort = SUBSTRING(@UDC, 3, LEN(@UDC)-2) -- prendo da 3° carattere perché prima "U" e una lettera x tipo prodotto gitterbox -- update valori (sovrascrivo...) UPDATE Odette SET Campo3_2 = @numBolla, Campo3_3 = @numBolla, Campo4_2 = @IndStabFrom, Campo9_2 = @qtaCont, Campo9_3 = @qtaCont, Campo13_2 = @DataB, Campo15_2 = @numOdette, Campo15_3 = @numOdette, Campo16_2 = @UDC WHERE CampoUDC = @UDC RETURN go commit go set xact_abort on go begin transaction go alter table Odette add CodMag nvarchar(2), GrpBolla nvarchar(1), DataBolla numeric(8,0), NumBolla numeric(6,0), Particolare nvarchar(15), CodLista nvarchar(12) go commit go set xact_abort on go begin transaction go update Odette set CodMag='SP', GrpBolla='0', NumBolla=cast(Campo3_2 as numeric(8,0)), Particolare=Campo11_1_2, DataBolla=0, CodLista='' go update Odette set CodLista = rlp.CodLista from Odette inner join RigheListePrelievo rlp on rlp.UDC=Odette.CampoUDC go update Odette set DataBolla = b.DTBOS from Odette inner join RawData.BORI202J b on b.NRBOS=Odette.NumBolla go commit go set xact_abort on go begin transaction go update Odette set CodMag = '' where CodMag is null go alter table Odette alter column CodMag nvarchar(2) not null go update Odette set GrpBolla = '' where GrpBolla is null go alter table Odette alter column GrpBolla nvarchar(1) not null go update Odette set DataBolla = 0 where DataBolla is null go alter table Odette alter column DataBolla numeric(8,0) not null go update Odette set NumBolla = 0 where NumBolla is null go alter table Odette alter column NumBolla numeric(6,0) not null go update Odette set Particolare = '' where Particolare is null go alter table Odette alter column Particolare nvarchar(15) not null go update Odette set CodLista = '' where CodLista is null go alter table Odette alter column CodLista nvarchar(12) not null go alter table Odette add constraint DF_Odette_Particolare default ('') for Particolare, constraint DF_Odette_CodLista default ('') for CodLista, constraint DF_Odette_DataBolla default (0) for DataBolla, constraint DF_Odette_NumBolla default (0) for NumBolla, constraint DF_Odette_CodMag default ('') for CodMag, constraint DF_Odette_GrpBolla default ('') for GrpBolla, constraint DF_Odette_CodCS default ('') for CodCS go set ANSI_NULLS on go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_ODETTE_deleteByLDP * * Elimina una riga etichetta odette * * Steamware, S.E.L. * mod: 2011.05.23 * ****************************************/ create PROCEDURE stp_ODETTE_deleteByLDP ( @CodLista NVARCHAR(12) ) AS DELETE FROM Odette WHERE CodLista = @CodLista RETURN go /***************************************** * STORED stp_ODETTE_getByBolla * * Recupera etichette odette associate ad una bolla CON STATO OK * * Steamware, S.E.L. * mod: 2011.05.23 * ****************************************/ create PROCEDURE stp_ODETTE_getByBolla ( @CodMag NVARCHAR(2), @GrpBolla NVARCHAR(1), @NumBolla NUMERIC(6,0), @DataBolla NUMERIC(8,0), @Particolare NVARCHAR(15) ) AS SELECT * FROM Odette WHERE CodMag = @CodMag AND GrpBolla = @GrpBolla AND NumBolla = @NumBolla AND DataBolla = @DataBolla AND Particolare = @Particolare AND StatoOk = 1 RETURN go /***************************************** * STORED stp_ODETTE_getByListaPrelievo * * Recupera etichette odette associate ad una lista di prelievo CON STATO OK * * Steamware, S.E.L. * mod: 2011.04.29 * ****************************************/ alter PROCEDURE stp_ODETTE_getByListaPrelievo ( @CodLista NVARCHAR(12) ) AS /* SELECT o.* FROM Odette o INNER JOIN RigheListePrelievo rlp ON o.CampoUDC = rlp.UDC WHERE (rlp.CodLista = @CodLista) AND (o.StatoOk = 1) */ SELECT * FROM Odette WHERE (CodLista = @CodLista) AND (StatoOk = 1) RETURN go /***************************************** * STORED stp_ODETTE_upsertUdc * * effettua upsert x l'UDC (ovver crea nuovo solo se non c'è...) * * Steamware, S.E.L. * mod: 2011.04.28 * ****************************************/ alter PROCEDURE stp_ODETTE_upsertUdc ( @UDC NVARCHAR(10), @CodCS VARCHAR(2), @numBolla NVARCHAR(6), @dataBolla NVARCHAR(8), @CodMag NVARCHAR(2), @GrpBolla NVARCHAR(1), @Particolare NVARCHAR(15), @CodLista NVARCHAR(12), @IndStabFrom NVARCHAR(50), @qtaCont NVARCHAR(50) ) AS -- DECLARE iniziali x gestione contatori odette DECLARE @Flusso AS VARCHAR(2) DECLARE @Anno AS VARCHAR(2) DECLARE @numOdette AS INT DECLARE @nextOdette AS INT ------------------------------------------------------------------------------------------------------ -- Fix flusso ed anno x 'OD' e '00' (contatore non spezzato su anno... ------------------------------------------------------------------------------------------------------ SET @Flusso = 'OD' SET @Anno = '00' ------------------------------------------------------------------------------------------------------ -- Contatore Odette ------------------------------------------------------------------------------------------------------ -- controllo se ci sia già un odette per company / flusso / anno BEGIN TRAN -- cerco nella tab contatori UDC l'ultimo valido SET @numOdette = ( SELECT count(*) FROM Odette WHERE CodCS = @CodCS ) -- controllo se record c'è... IF(@numOdette > 0) BEGIN -- se c'è incremento di 1 in tab UPDATE ContatoriUdc SET LastIdx = LastIdx + 1 WHERE CodCS = @CodCS AND Flusso = @Flusso AND Anno = @Anno END ELSE BEGIN -- lo creo! INSERT INTO ContatoriUdc(CodCS, Flusso, Anno, LastIdx) VALUES (@CodCS, @Flusso, @Anno, 1) END -- aggiorno numero UDC SET @numOdette = ( SELECT LastIdx FROM ContatoriUdc WHERE CodCS = @CodCS AND Flusso = @Flusso AND Anno = @Anno ) COMMIT TRAN -- cerco se ci sia già la riga Odette DECLARE @udcTrovati AS INT SET @udcTrovati = ( SELECT COUNT(*) FROM Odette WHERE CampoUDC = @UDC ) -- controllo se esista già... se non c'è creo IF (@udcTrovati = 0) BEGIN INSERT INTO Odette(CampoUDC, StatoOk, CodCS) VALUES(@UDC, 0, @CodCS) END -- calcolo valori x update DECLARE @DataB AS NVARCHAR(7) SET @DataB = ( SELECT 'D'+ SUBSTRING(@dataBolla, 3, 6) ) DECLARE @udcShort NVARCHAR(10) --SET @udcShort = SUBSTRING(@UDC, 3, LEN(@UDC)-2) -- prendo da 3° carattere perché prima "U" e una lettera x tipo prodotto gitterbox -- update valori (sovrascrivo...) UPDATE Odette SET Campo3_2 = @numBolla, Campo3_3 = @numBolla, Campo4_2 = @IndStabFrom, Campo9_2 = @qtaCont, Campo9_3 = @qtaCont, Campo13_2 = @DataB, Campo15_2 = @numOdette, Campo15_3 = @numOdette, Campo16_2 = @UDC, CodMag = @CodMag, GrpBolla = @GrpBolla, DataBolla = CAST(@dataBolla AS NUMERIC(8,0)), NumBolla = CAST(@numBolla AS NUMERIC(6,0)), Particolare = @Particolare, CodLista = @CodLista WHERE CampoUDC = @UDC RETURN go commit go set xact_abort on go begin transaction go alter table Odette_storico add CodMag nvarchar(2) not null constraint DF_Odette_storico_CodMag default (''), GrpBolla nvarchar(1) not null constraint DF_Odette_storico_GrpBolla default (''), DataBolla numeric(8,0) not null constraint DF_Odette_storico_DataBolla default (0), NumBolla numeric(6,0) not null constraint DF_Odette_storico_NumBolla default (0), Particolare nvarchar(15) not null constraint DF_Odette_storico_Particolare default (''), CodLista nvarchar(12) not null constraint DF_Odette_storico_CodLista default ('') go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go -- ============================================= -- Author: Samuele E. Locatelli -- Create date: 2011-05-20 -- Description: trigger x inserimento in tab -- storico record cancellati -- ============================================= alter TRIGGER trg_odetteDel ON Odette AFTER DELETE AS BEGIN -- setup variabili e verbosità SET NOCOUNT ON; -- inserisco in storico INSERT INTO Odette_storico (DataOraDelete,CampoUDC,Campo1_1,Campo1_2,Campo1_3,Campo1_4,Campo1_5,Campo2_1,Campo2_2,Campo2_3,Campo2_4,Campo2_5,Campo3_1, Campo3_2,Campo3_3,Campo3_4,Campo3_5,Campo4_1,Campo4_2,Campo4_3,Campo4_4,Campo4_5,Campo5_1,Campo5_2,Campo5_3,Campo5_4,Campo5_5, Campo6_1,Campo6_2,Campo6_3,Campo6_4,Campo6_5,Campo7_1,Campo7_2,Campo7_3,Campo7_4,Campo7_5,Campo8_1,Campo8_2,Campo8_3,Campo8_4, Campo8_5,Campo9_1,Campo9_2,Campo9_3,Campo9_4,Campo9_5,Campo10_1,Campo10_2,Campo10_3,Campo10_4,Campo10_5,Campo11_1_1,Campo11_1_2, Campo11_1_3,Campo11_1_4,Campo11_1_5,Campo11_2_1,Campo11_2_2,Campo11_2_3,Campo11_2_4,Campo11_2_5,Campo12_1,Campo12_2,Campo12_3, Campo12_4,Campo12_5,Campo13_1,Campo13_2,Campo13_3,Campo13_4,Campo13_5,Campo14_1,Campo14_2,Campo14_3,Campo14_4,Campo14_5,Campo15_1, Campo15_2,Campo15_3,Campo15_4,Campo15_5,Campo16_1,Campo16_2,Campo16_3,Campo16_4,Campo16_5,StatoOk,CodCS,CodMag,GrpBolla,DataBolla, NumBolla,Particolare,CodLista) SELECT GETDATE(), CampoUDC,Campo1_1,Campo1_2,Campo1_3,Campo1_4,Campo1_5,Campo2_1,Campo2_2,Campo2_3,Campo2_4,Campo2_5,Campo3_1, Campo3_2,Campo3_3,Campo3_4,Campo3_5,Campo4_1,Campo4_2,Campo4_3,Campo4_4,Campo4_5,Campo5_1,Campo5_2,Campo5_3,Campo5_4,Campo5_5, Campo6_1,Campo6_2,Campo6_3,Campo6_4,Campo6_5,Campo7_1,Campo7_2,Campo7_3,Campo7_4,Campo7_5,Campo8_1,Campo8_2,Campo8_3,Campo8_4, Campo8_5,Campo9_1,Campo9_2,Campo9_3,Campo9_4,Campo9_5,Campo10_1,Campo10_2,Campo10_3,Campo10_4,Campo10_5,Campo11_1_1,Campo11_1_2, Campo11_1_3,Campo11_1_4,Campo11_1_5,Campo11_2_1,Campo11_2_2,Campo11_2_3,Campo11_2_4,Campo11_2_5,Campo12_1,Campo12_2,Campo12_3, Campo12_4,Campo12_5,Campo13_1,Campo13_2,Campo13_3,Campo13_4,Campo13_5,Campo14_1,Campo14_2,Campo14_3,Campo14_4,Campo14_5,Campo15_1, Campo15_2,Campo15_3,Campo15_4,Campo15_5,Campo16_1,Campo16_2,Campo16_3,Campo16_4,Campo16_5,StatoOk,CodCS,CodMag,GrpBolla,DataBolla, NumBolla,Particolare,CodLista FROM deleted END go commit go set xact_abort on go begin transaction go INSERT INTO dbo.ElencoCartellini VALUES (N'EmptyGBox', N'SP', NULL, NULL, N'', NULL, N'', N'', NULL, NULL, NULL, N'', NULL, 0, N'', NULL, 1, 0, 27.00, N'Fin', 0, 0, 0, NULL, NULL) go commit transaction go set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_EDM_svuotaGitterbox * * Elimina il codice gitterbox dai datamatrix associati (svuotandolo...) * * Steamware, S.E.L. * mod: 2011.05.06 * ****************************************/ alter PROCEDURE stp_EDM_svuotaGitterbox ( @CodGitterbox NVARCHAR(10) ) AS UPDATE ElencoDataMatrix SET CodGitterbox = 'EmptyGBox' WHERE CodGitterbox = @CodGitterbox -- aggiorno valoti QTA gitterbox originale... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox -- aggiorno valoti QTA gitterbox 'EmptyGBox UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = 'EmptyGBox' ) WHERE UDC = 'EmptyGBox' -- aggiorno righe liste di prelievo... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox RETURN 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 ) 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 char(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) SELECT DISTINCT nd.CodGitterbox, null, MIN(InizioIniezione) 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 @Qta INT 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, dbo.getNumDatamatrix(nd.CodGitterbox) 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, @Qta 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, Qta = @Qta, 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, @Qta 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 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 dbo.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 char(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 -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(391, GETDATE()) GO