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

1089 lines
29 KiB
Transact-SQL

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