set xact_abort on go begin transaction go create table ElencoListePrelievo_storico( DataOraDelete datetime not null, CodLista nvarchar(12) not null, 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, Destinatario nvarchar(50), DestinatarioDescrizione nvarchar(50) ) go create index i_codLista on ElencoListePrelievo_storico(CodLista) go create table Odette_storico( DataOraDelete datetime not null, CampoUDC varchar(10) not null, Campo1_1 nvarchar(50) not null, Campo1_2 nvarchar(50) not null, Campo1_3 nvarchar(50) not null, Campo1_4 nvarchar(50) not null, Campo1_5 nvarchar(50) not null, Campo2_1 nvarchar(50) not null, Campo2_2 nvarchar(50) not null, Campo2_3 nvarchar(50) not null, Campo2_4 nvarchar(50) not null, Campo2_5 nvarchar(50) not null, Campo3_1 nvarchar(50) not null, Campo3_2 nvarchar(50) not null, Campo3_3 nvarchar(50) not null, Campo3_4 nvarchar(50) not null, Campo3_5 nvarchar(50) not null, Campo4_1 nvarchar(50) not null, Campo4_2 nvarchar(50) not null, Campo4_3 nvarchar(50) not null, Campo4_4 nvarchar(50) not null, Campo4_5 nvarchar(50) not null, Campo5_1 nvarchar(50) not null, Campo5_2 nvarchar(50) not null, Campo5_3 nvarchar(50) not null, Campo5_4 nvarchar(50) not null, Campo5_5 nvarchar(50) not null, Campo6_1 nvarchar(50) not null, Campo6_2 nvarchar(50) not null, Campo6_3 nvarchar(50) not null, Campo6_4 nvarchar(50) not null, Campo6_5 nvarchar(50) not null, Campo7_1 nvarchar(50) not null, Campo7_2 nvarchar(50) not null, Campo7_3 nvarchar(50) not null, Campo7_4 nvarchar(50) not null, Campo7_5 nvarchar(50) not null, Campo8_1 nvarchar(50) not null, Campo8_2 nvarchar(50) not null, Campo8_3 nvarchar(50) not null, Campo8_4 nvarchar(50) not null, Campo8_5 nvarchar(50) not null, Campo9_1 nvarchar(50) not null, Campo9_2 nvarchar(50) not null, Campo9_3 nvarchar(50) not null, Campo9_4 nvarchar(50) not null, Campo9_5 nvarchar(50) not null, Campo10_1 nvarchar(50) not null, Campo10_2 nvarchar(50) not null, Campo10_3 nvarchar(50) not null, Campo10_4 nvarchar(50) not null, Campo10_5 nvarchar(50) not null, Campo11_1_1 nvarchar(50) not null, Campo11_1_2 nvarchar(50) not null, Campo11_1_3 nvarchar(50) not null, Campo11_1_4 nvarchar(50) not null, Campo11_1_5 nvarchar(50) not null, Campo11_2_1 nvarchar(50) not null, Campo11_2_2 nvarchar(50) not null, Campo11_2_3 nvarchar(50) not null, Campo11_2_4 nvarchar(50) not null, Campo11_2_5 nvarchar(50) not null, Campo12_1 nvarchar(50) not null, Campo12_2 nvarchar(50) not null, Campo12_3 nvarchar(50) not null, Campo12_4 nvarchar(50) not null, Campo12_5 nvarchar(50) not null, Campo13_1 nvarchar(50) not null, Campo13_2 nvarchar(50) not null, Campo13_3 nvarchar(50) not null, Campo13_4 nvarchar(50) not null, Campo13_5 nvarchar(50) not null, Campo14_1 nvarchar(50) not null, Campo14_2 nvarchar(50) not null, Campo14_3 nvarchar(50) not null, Campo14_4 nvarchar(50) not null, Campo14_5 nvarchar(50) not null, Campo15_1 nvarchar(50) not null, Campo15_2 nvarchar(50) not null, Campo15_3 nvarchar(50) not null, Campo15_4 nvarchar(50) not null, Campo15_5 nvarchar(50) not null, Campo16_1 nvarchar(50) not null, Campo16_2 nvarchar(50) not null, Campo16_3 nvarchar(50) not null, Campo16_4 nvarchar(50) not null, Campo16_5 nvarchar(50) not null, StatoOk bit not null, CodCS nchar(2) not null ) go create index i_UDC on Odette_storico(CampoUDC) go create table RigheListePrelievo_storico( DataOraDelete datetime not null, CodLista nvarchar(12) not null, UDC nvarchar(50) not null, Qta decimal(10,2) not null, Proposto bit, Prelevato bit ) go create index i_UDC on RigheListePrelievo_storico(UDC) go create index i_CodListaUDC on RigheListePrelievo_storico(CodLista,UDC) 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 -- ============================================= create TRIGGER trg_ListePrelievoDel ON ElencoListePrelievo AFTER DELETE AS BEGIN -- setup variabili e verbosità SET NOCOUNT ON; -- inserisco in storico INSERT INTO ElencoListePrelievo_storico (DataOraDelete,CodLista,CodTipoLista,CodCS,DataCreaz,CodCliente,RagSociale,CodSoggetto,Particolare,DescParticolare,DisegnoGrezzo, Esponente,Figura,CodImballo,QtaTot,CodStatoLista,Destinatario,DestinatarioDescrizione) SELECT GETDATE(), CodLista,CodTipoLista,CodCS,DataCreaz,CodCliente,RagSociale,CodSoggetto,Particolare,DescParticolare,DisegnoGrezzo, Esponente,Figura,CodImballo,QtaTot,CodStatoLista,Destinatario,DestinatarioDescrizione FROM deleted END go -- ============================================= -- Author: Samuele E. Locatelli -- Create date: 2011-05-20 -- Description: trigger x inserimento in tab -- storico record cancellati -- ============================================= create 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) 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 FROM deleted END go -- ============================================= -- Author: Samuele E. Locatelli -- Create date: 2011-05-20 -- Description: trigger x inserimento in tab -- storico record cancellati -- ============================================= create TRIGGER trg_RigheListePrelievoDel ON RigheListePrelievo AFTER DELETE AS BEGIN -- setup variabili e verbosità SET NOCOUNT ON; -- inserisco in storico INSERT INTO RigheListePrelievo_storico (DataOraDelete,CodLista,UDC,Qta,Proposto,Prelevato) SELECT GETDATE(), CodLista,UDC,Qta,Proposto,Prelevato FROM deleted END go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_RLP_resetPrelevate * * sblocca righe liste di prelievo come NON PRELEVATE * * Steamware, S.E.L. * mod: 2011.05.20 * ****************************************/ create PROCEDURE stp_RLP_resetPrelevate ( @CodLista NVARCHAR(12) ) AS -- effettua "sblocco" delle righe liste prelievo UPDATE RigheListePrelievo SET Prelevato = 0 WHERE CodLista = @CodLista RETURN go /*************************************** * STORED stp_TTPE_getByCodEvento * * ottiene una riga della tab di transizione eventi dato evento * * Steamware, S.E.L. * mod: 2011.05.20 * ************************************/ create PROCEDURE stp_TTPE_getByCodEvento ( @CodEvento NVARCHAR(10) ) AS SELECT * FROM TabTranPosizEventi where CodEvento = @CodEvento go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * FUNCTION f_getCellaByPos * * fornisce la prima cella associata ad una posizione "logica" di magazzino * * Steamware, S.E.L. * mod: 2011.05.20 * ****************************************/ create FUNCTION f_getCellaByPos (@posizione VARCHAR(255)) RETURNS INT AS BEGIN DECLARE @answ AS INT SET @answ = ( SELECT TOP 1 ISNULL(IdxCella,0) FROM Celle WHERE IdxBlocco = ( SELECT IdxBlocco FROM Blocchi WHERE CodMag = @posizione ) ) RETURN @answ END 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: 2010.09.28 * ****************************************/ alter PROCEDURE stp_scaricaUdc ( @UDC VARCHAR(50), @IdxCellaFrom INT, @IdxPosizione INT ) AS BEGIN TRAN -- libero la posizione attuale dell'UDC (se c'è...) DELETE FROM PosizioneUdcCorrente WHERE UDC = @UDC --AND IdxCella = @IdxCellaFrom -- aggiorno l'UDC come posizione finale... UPDATE ElencoCartellini SET IdxPosizione = @IdxPosizione, ModDate = GETDATE() WHERE UDC = @UDC COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_ODETTE_delete * * Elimina una riga etichetta odette * * Steamware, S.E.L. * mod: 2011.05.10 * ****************************************/ create PROCEDURE stp_ODETTE_delete ( @Original_CampoUDC NVARCHAR(50) ) AS DELETE FROM Odette WHERE CampoUDC = @Original_CampoUDC 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), @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 = @udcShort WHERE CampoUDC = @UDC RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_cellaGetFirstByPosizione * * ottiene la prima cella data la posizione indicata * * Steamware, S.E.L. * mod: 2011.05.20 * ****************************************/ create PROCEDURE stp_cellaGetFirstByPosizione ( @posizione NVARCHAR(50) ) AS SELECT * FROM Celle WHERE IdxCella = dbo.f_getCellaByPos(@posizione) RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_EDM_spostaDataMtx * * Sposta un datamatrix in un nuovo gitterbox * * Steamware, S.E.L. * mod: 2011.05.05 * ****************************************/ alter PROCEDURE stp_EDM_spostaDataMtx ( @CodDataMatrix NUMERIC(23), @CodGitterbox NVARCHAR(10) ) AS -- salvo codice gitterbox di partenza DECLARE @CodGitterboxFrom AS NVARCHAR(10) SET @CodGitterboxFrom = ( SELECT CodGitterbox FROM ElencoDataMatrix WHERE CodDataMatrix = @CodDataMatrix ) UPDATE ElencoDataMatrix SET CodGitterbox = @CodGitterbox WHERE CodDataMatrix = @CodDataMatrix -- aggiorno valori QTA gitterbox di partenza... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom ) WHERE UDC = @CodGitterboxFrom -- aggiorno valoti QTA gitterbox destinazione... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox -- aggiorno righe liste di prelievo... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom ) WHERE UDC = @CodGitterboxFrom -- aggiorno valoti QTA gitterbox destinazione... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox -- select finale! SELECT * FROM ElencoDataMatrix WHERE CodDataMatrix = @CodDataMatrix RETURN go commit go drop procedure stp_BORI_caricaDatiNew go -- ATTENZIONE!!! DA QUI SI DEVE AVERE corrette le view sul db SP_produzione_test set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_DtMtx_getOrig * * Cerca la bolla richiesta x chiave * * Steamware, S.E.L. * mod: 2011.05.19 * ****************************************/ create PROCEDURE stp_DtMtx_getOrig ( @CodDataMatrix NVARCHAR(50) ) AS SELECT * FROM v_trasfDataMatrix WHERE CodDataMatrix = @CodDataMatrix 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' -- 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 alter table ElencoDataMatrix drop constraint DF_ElencoDataMatrix_CodGitterbox go alter table ElencoDataMatrix alter column CodGitterbox nvarchar(50) not null go alter table ElencoDataMatrix add constraint DF_ElencoDataMatrix_CodGitterbox default ('') for CodGitterbox, constraint FK_ElencoDataMatrix_ElencoCartellini foreign key(CodGitterbox) references ElencoCartellini(UDC) on update cascade go set ANSI_NULLS on go /***************************************** * STORED stp_EDM_spostaDataMtx * * Sposta un datamatrix in un nuovo gitterbox * * Steamware, S.E.L. * mod: 2011.05.05 * ****************************************/ alter PROCEDURE stp_EDM_spostaDataMtx ( @CodDataMatrix NUMERIC(23), @CodGitterbox NVARCHAR(10) ) AS -- salvo codice gitterbox di partenza DECLARE @CodGitterboxFrom AS NVARCHAR(10) SET @CodGitterboxFrom = ( SELECT CodGitterbox FROM ElencoDataMatrix WHERE CodDataMatrix = @CodDataMatrix ) UPDATE ElencoDataMatrix SET CodGitterbox = @CodGitterbox WHERE CodDataMatrix = @CodDataMatrix -- aggiorno valori QTA gitterbox di partenza... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom ) WHERE UDC = @CodGitterboxFrom -- aggiorno valoti QTA gitterbox destinazione... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox -- aggiorno righe liste di prelievo... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom ) WHERE UDC = @CodGitterboxFrom -- aggiorno valoti QTA gitterbox destinazione... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox -- select finale! SELECT * FROM ElencoDataMatrix WHERE CodDataMatrix = @CodDataMatrix RETURN 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' -- 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 -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(390, GETDATE()) GO