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

937 lines
24 KiB
Transact-SQL

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