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

608 lines
20 KiB
Transact-SQL

set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_getUdcDetailFullCode_storico
*
* ottiene ULTIM dati UDC DA STORICO con i dati significativi partendo da un codice UDC COMPLETO
*
* Steamware, S.E.L.
* mod: 2012.10.01
*
****************************************/
create PROCEDURE stp_getUdcDetailFullCode_storico
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME,
@UDC NVARCHAR(50),
@CodCS NVARCHAR(2)
)
AS
WITH myCTE AS
(
SELECT TOP 1 *
FROM StoricoCartellini
WHERE DataEv BETWEEN @DataOraFrom AND @DataOraTo
AND UDC = @UDC
ORDER BY DataEv DESC
)
SELECT stc.UDC, ISNULL(stc.RagSociale, N'nd') AS RagSociale, ISNULL(stc.Particolare, N'nd') AS Particolare,
ISNULL(stc.DescParticolare, N'nd') AS DescParticolare, ISNULL(stc.DisegnoGrezzo, N'nd') AS DisegnoGrezzo,
ISNULL(stc.Esponente, N'nd') AS Esponente, ISNULL(stc.DescImpianto, N'nd') AS DescImpianto,
ISNULL(stc.DataFus, N'') AS DataFus, ISNULL(stc.TurnoFus, 0) AS TurnoFus, stc.CodImballo,
stc.Qta, ISNULL(AnagStatiProdotto.DescStato, N'nd') AS DescStato, stc.ModDate,
CASE WHEN(stc.IdxPosizione < 0) THEN 'Consum' ELSE ISNULL(Blocchi.CodMag, N'nd') END AS CodMag,
ISNULL(Blocchi.CodBlocco, N'nd') AS CodBlocco, ISNULL(Celle.CodCella, N'nd') AS CodCella, ISNULL(dbo.Celle.IdxCella, 0) AS IdxCella,
ISNULL(Celle.X, 0) AS X, ISNULL(Celle.Y, 0) AS Y, ISNULL(Celle.Z, 0) AS Z, stc.IdxPosizione, ISNULL(stc.Note,'') AS Note
FROM AnagStatiProdotto RIGHT OUTER JOIN
myCTE stc ON AnagStatiProdotto.CodStato = stc.CodStato AND AnagStatiProdotto.CodStato = stc.CodStato
LEFT OUTER JOIN Celle INNER JOIN PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella
AND Celle.IdxCella = PosizioneUdcCorrente.IdxCella AND Celle.IdxCella = PosizioneUdcCorrente.IdxCella
INNER JOIN Blocchi ON Celle.IdxBlocco = Blocchi.IdxBlocco INNER JOIN AnagMag ON Blocchi.CodMag = AnagMag.CodMag
AND Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag AND Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag
AND Blocchi.CodCS = AnagMag.CodCS ON stc.UDC = PosizioneUdcCorrente.UDC
WHERE (stc.UDC = @UDC) AND (stc.CodCS = @CodCS)
RETURN
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: 2012.05.30
*
****************************************/
alter PROCEDURE stp_scaricaUdc
(
@UDC VARCHAR(50),
@IdxPosizione INT,
@CodEvento VARCHAR(10),
@CodSoggetto NVARCHAR(17)
)
AS
BEGIN TRAN
/* Tolto da GCarlo xche non salvo utente che cancella x adesso
-- aggiorno utente x la posizione corrente, in modo da poter POI salvare l'utente che scarica UDC
UPDATE PosizioneUdcCorrente
SET CodSoggetto = @CodSoggetto
WHERE UDC = @UDC
*/
-- Tabella del record cancellato ( al momento NON usata ) RIATTIVARE x QUANDO Voglio lo STORICO cancellati
-- DECLARE @MyTableVar table ( IdxCella int, CodCS nchar(2) );
-- libero la posizione attuale dell'UDC (se c'è...)
DELETE
FROM dbo.PosizioneUdcCorrente
-- OUTPUT DELETED.IdxCella , DELETED.CodCS INTO @MyTableVar RIATTIVARE x QUANDO Voglio lo STORICO cancellati
WHERE UDC = @UDC;
-- ( al momento NON usata ) RIATTIVARE x QUANDO Voglio lo STORICO cancellati
-- Inserisco in Storico Posizione il record di chi ha cancellato
-- INSERT dbo.PosizioneUdcStorico ( UDC, IdxCella, DataInizio, DataFine, CodCS, CodSoggetto )
-- SELECT @UDC, IdxCella, GETDATE(), GETDATE(), CodCS, @CodSoggetto FROM @MyTableVar
-- aggiorno l'UDC come posizione finale...
UPDATE dbo.ElencoCartellini
SET IdxPosizione = @IdxPosizione
,ModDate = GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @UDC
COMMIT TRAN
RETURN
go
/***************************************
* STORED stp_spostaUdc
*
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
*
* Steamware, S.E.L.
* mod: 2010.06.11
*
****************************************/
alter PROCEDURE stp_spostaUdc
(
@CodCS VARCHAR(2),
@UDC VARCHAR(50),
@IdxCellaTo INT,
@resetRLP BIT,
@CodSoggetto VARCHAR(17)
)
AS
SET @UDC = UPPER(@UDC) -- metto ad Upper nel caso venga passato in minuscolo ( es. smart LDP da terminalino )
BEGIN TRAN
-- DICHIARAZIONI iniziali variabili
DECLARE @IdxCellaFrom INT
DECLARE @capienza INT
DECLARE @numUdc INT
DECLARE @udcInLdpPrel BIT
-- controllo cella di partenza
SET @IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
SET @IdxCellaFrom = ISNULL(@IdxCellaFrom,0) -- controllo x cella null...
-- controllo UDC, se faccia parte di LDP che NON permette MOV...
SET @udcInLdpPrel = ( SELECT ISNULL(COUNT(rldp.UDC),0)
FROM RigheListePrelievo rldp INNER JOIN ElencoListePrelievo ldp
ON ldp.CodLista=rldp.CodLista INNER JOIN AnagStatiListe asl
ON ldp.CodStatoLista = asl.CodStatoLista
WHERE asl.canMovUDC = 0
AND rldp.UDC=@UDC )
-- controllo se cella di destinazione e di partenza coincidono NON FACCIO NULLA... altrimenti procedo
IF (@IdxCellaTo <> @IdxCellaFrom)
BEGIN
-- controllo UDC "libero" da LDP (ovvero non faccia parte di LDP in uno stato che NON permette MOV, nel qual caso NON sposto)
IF (@udcInLdpPrel = 0)
-- tutto ok PROCEDO!
BEGIN
-- controllo se la cella di partenza vada indicata come piena o meno
SET @capienza = (
SELECT tc.Capienza
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
WHERE c.IdxCella = @IdxCellaFrom
)
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom)
-- se capienza cella di partenza NON raggiunta aggiorno NON Piena
IF(@numUdc -1 < @capienza)
BEGIN
EXEC stp_celle_updPiena @IdxCellaFrom, 0
END
---- aggiorno utente x la posizione corrente, in modo da poter POI salvare l'utente che scarica UDC
--UPDATE PosizioneUdcCorrente
--SET CodSoggetto = @CodSoggetto
--WHERE UDC = @UDC
---- cancello posizione occupata ( non serve più faccio UPDATE )
--DELETE
--FROM PosizioneUdcCorrente
--WHERE UDC = @UDC
-- SE RICHIESTO cancello eventuali righe liste di prelievo FUSI per l'UDC
IF(@resetRLP = 1)
BEGIN
DELETE FROM RigheListePrelievo
WHERE UDC = @UDC AND CodLista IN (
SELECT CodLista FROM ElencoListePrelievo
--WHERE CodTipoLista='01-PreFus'
WHERE CodStatoLista < 4
)
END
-- modifico la posizione per l'UDC se esiste altrimenti la inserisco
IF @IdxCellaFrom <> 0
UPDATE PosizioneUdcCorrente
SET IdxCella = @IdxCellaTo,
DataRif = GETDATE(),
CodSoggetto = @CodSoggetto
FROM PosizioneUdcCorrente WHERE UDC = @UDC AND CodCS = @CodCS AND IdxCella = @IdxCellaFrom
ELSE
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE(), @CodSoggetto);
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
-- controllo se la cella di dest vada indicata come piena, altrimenti NON la indicherò (mai) come piena...
SET @capienza = (
SELECT CASE CheckPiena WHEN 1 THEN tc.Capienza ELSE @numUdc + 1 END
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
WHERE c.IdxCella = @IdxCellaTo
)
-- se capienza raggiunta aggiorno...
IF(@numUdc >= @capienza)
BEGIN
EXEC stp_celle_updPiena @IdxCellaTo, 1
END
END -- cellaFrom e cellaTo non coincidono...
END -- UDC NON appartiene a LDP già prelevate...
COMMIT TRAN
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
create index i_destinatario on ElencoListePrelievo(Destinatario);
go
exec sp_rename 'ElencoListePrelievo.IX_ElencoListePrelievo_CodTipoLista_CodSoggettoCodStatoLista', 'ix_ElencoListePrelievo_CodTipoLista_CodSoggettoCodStatoLista', 'index';
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
-- =============================================
-- Author: Samuele E. Locatelli
-- Create date: 2009-09-13
-- Mod date: 2012-09-17
-- Description: trigger x inserimento valori in archivio storico alla cancellazione/modifica del dato (tranne curr user)
-- =============================================
alter TRIGGER trg_storico
ON PosizioneUdcCorrente
AFTER DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @FlaStoricizza AS Bit = 0; -- impostazione x test storicizza sempre attivo
-- Se è una cancellazione Storicizzo
IF ( SELECT COUNT(*) FROM inserted ) = 0
SET @FlaStoricizza = 1 ;
-- devo EVITARE di salvare se c'è solo modifica del CodSoggetto...
IF( UPDATE(UDC) OR UPDATE(IdxCella) OR UPDATE(CodCS) OR UPDATE(DataRif) )
SET @FlaStoricizza = 1;
-- IF( UPDATE(UDC) OR UPDATE(IdxCella) OR UPDATE(CodCS) OR UPDATE(DataRif) )
IF @FlaStoricizza = 1
BEGIN
-- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine, CodSoggetto)
(
SELECT UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine, CodSoggetto
FROM deleted
)
END
END
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,
@CodSoggetto VARCHAR(17)
)
AS
SET XACT_ABORT ON;
SET NOCOUNT ON;
/**** NON PRESENTE IN TEKAL
------------------------------------------------------------------------------------------------------
-- 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"
-- verifico già se esite già l'UDC/Gitterbox in ElencoCartellini
DECLARE @newData TABLE
(
RowNumber int,
CodDataMatrix numeric(23, 0) ,
CodGitterbox varchar(10) ,
NumConchiglia int ,
NumDisegno numeric(7, 0) ,
EsponenteDisegno tinyint ,
CodDifettoScarto varchar(5) ,
InizioPreparazione smalldatetime ,
FinePreparazione smalldatetime ,
InizioIniezione smalldatetime ,
FineIniezione smalldatetime ,
MagDestinazione varchar(2) ,
DataImport smalldatetime ,
UDC varchar(50)
)
INSERT INTO @newData
SELECT
ROW_NUMBER() OVER(PARTITION BY CodGitterbox ORDER BY InizioIniezione ASC),
dm.CodDataMatrix, LTRIM(RTRIM(dm.CodGitterbox)), dm.NumConchiglia, dm.NumDisegno, dm.EsponenteDisegno,dm.CodDifettoScarto, dm.InizioPreparazione, dm.FinePreparazione, dm.InizioIniezione, dm.FineIniezione, dm.MagDestinazione, dm.DataImport,
ec.UDC
FROM dbo.v_trasfDataMatrix AS dm
LEFT JOIN dbo.ElencoCartellini AS ec
ON dm.CodGitterbox = ec.UDC
WHERE DataImport > @lastImport AND LEFT(CodGitterbox, 1) = 'U'
AND CodDifettoScarto = '00' -- non importa gli scarti!!!
/* INIZIO MODIFICA
Note GCarlo :
Se il Gitterbox è già stato trasferito e/o cmq già presente non viene caricato, al
limite vengono caricati i Datamatrix non ancora presenti ma con Gitterbox = EmptyGBox
Se non trovo il Particolare in dbo.v_transcParticolari i datamatrix non vengono importati
Posso reimportarli spostando la data di import indietro in LogImportFlussi
ATTENZIONE! Si presuppone che i DataMatrix siano coerenti ovvero stesso Particolare ecc. ecc.
*/
BEGIN TRAN;
-- creo UDC da gitterbox nuovi ( Se UDC già presenti non li carico )
-- GCARLO messo un RowCount prima e prendo solo il primo DataMatrix
INSERT INTO ElencoCartellini(UDC,CodCS, Particolare, DescParticolare, DisegnoGrezzo, Esponente, DataFus, Qta,
CodSoggetto, CodStato, IdxPosizione,CreateDate, ModDate, Figura, CodImballo, Tara, PesoTot, PesoCad, NumCont, TurnoFus )
SELECT DISTINCT nd.CodGitterbox, @CodCS, tp.Particolare, an.DescParticolare, an.DisegnoGrezzo, an.EsponenteModifica
,InizioIniezione, dbo.getNumDatamatrix(nd.CodGitterbox), @CodSoggetto As CodSoggetto, 'Fin' AS CodStato
,@IdxPosizione, GETDATE(), GETDATE()
,'' AS Figura, '' AS CodImballo,0 AS Tara,0 AS PesoTot,0 AS PesoCad,1 AS NumCont,0 AS TurnoFus
FROM @newData nd
INNER JOIN dbo.v_transcParticolari tp -- solo se PArticolare è presente in Trascodifica
ON nd.NumDisegno = tp.NumDisegno AND nd.EsponenteDisegno = tp.EsponenteDisegno
LEFT JOIN RilPro.AnagParticolari an -- Leggo il disegno in anagrafica
ON tp.Particolare = an.Particolare
WHERE nd.RowNumber = 1 -- Prendo solo i dati del First DataMatrix ( data iniezione )
AND nd.UDC IS NULL -- solo Gitterbox Nuovi
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
-- indico cella UDC corrente... calcolo la prima cella della nuova posizione...
SET @IdxCellaTo = ( SELECT dbo.f_getCellaByPos(CAST(@IdxPosizione AS NVARCHAR(50))) )
DECLARE cursoreImport CURSOR FOR
SELECT DISTINCT CodGitterbox
FROM @newData
WHERE UDC IS NULL -- solo x Gitterbox Nuovi
OPEN cursoreImport
FETCH NEXT FROM cursoreImport INTO @udc
WHILE @@FETCH_STATUS = 0
BEGIN
-- controllo se posizione non ancora creata...
SET @posTrovate = ( SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE UDC = @udc )
IF( @posTrovate = 0)
BEGIN
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
VALUES(@udc, @IdxCellaTo, @CodCS, @adesso, @CodSoggetto)
END
FETCH NEXT FROM cursoreImport INTO @udc
END
CLOSE cursoreImport
DEALLOCATE cursoreImport
-- CARICAMENTO DATAMATRIX --
-- Carico i datamatrix se UDC/Gitterbox nuovi
INSERT INTO dbo.ElencoDataMatrix
SELECT nw.CodDataMatrix
,nw.CodGitterbox
,nw.NumConchiglia
,nw.NumDisegno
,nw.EsponenteDisegno
,nw.CodDifettoScarto
,nw.InizioPreparazione
,nw.FinePreparazione
,nw.InizioIniezione
,nw.FineIniezione
,nw.MagDestinazione
,nw.DataImport
FROM @newData AS nw
LEFT JOIN dbo.ElencoDataMatrix AS el
ON nw.CodDataMatrix = el.CodDataMatrix
WHERE el.CodDataMatrix IS NULL -- Nuovi Datamatrix
AND nw.UDC IS NULL -- Solo per Gitterbox nuovi
-- Se esistono Datamatrix di UDC già caricati in precedenza li inserisco ma senza
-- assegnare l'UDC ma lo metto a EmptyGBox perchè potrebbero essere UDC già spediti o
-- movimentati e dovrei anche aggiornare la giacenza in ElencoCartellini
INSERT INTO dbo.ElencoDataMatrix
SELECT nw.CodDataMatrix
,'EmptyGBox' AS CodGitterbox
,nw.NumConchiglia
,nw.NumDisegno
,nw.EsponenteDisegno
,nw.CodDifettoScarto
,nw.InizioPreparazione
,nw.FinePreparazione
,nw.InizioIniezione
,nw.FineIniezione
,nw.MagDestinazione
,nw.DataImport
FROM @newData AS nw
LEFT JOIN dbo.ElencoDataMatrix AS el
ON nw.CodDataMatrix = el.CodDataMatrix
WHERE el.CodDataMatrix IS NULL
AND nw.UDC IS NOT NULL
-- aggiorno dati ultimo caricamento
SET @lastImport = ISNULL( ( SELECT MAX(DataImport)FROM @newData ),@lastImport )
UPDATE LogImportFlussi
SET LastImport = @lastImport
WHERE NomeFlusso = @nomeFlusso
COMMIT TRAN;
*/
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_getUdcDetailFullCode_storico
*
* ottiene ULTIM dati UDC DA STORICO con i dati significativi partendo da un codice UDC COMPLETO
*
* Steamware, S.E.L.
* mod: 2012.10.01
*
****************************************/
create PROCEDURE stp_getUdcDetailFullCode_storico
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME,
@UDC NVARCHAR(50),
@CodCS NVARCHAR(2)
)
AS
WITH myCTE AS
(
SELECT TOP 1 *
FROM StoricoCartellini
WHERE DataEv BETWEEN @DataOraFrom AND @DataOraTo
AND UDC = @UDC
ORDER BY DataEv DESC
)
SELECT stc.UDC, ISNULL(stc.RagSociale, N'nd') AS RagSociale, ISNULL(stc.Particolare, N'nd') AS Particolare,
ISNULL(stc.DescParticolare, N'nd') AS DescParticolare, ISNULL(stc.DisegnoGrezzo, N'nd') AS DisegnoGrezzo,
ISNULL(stc.Esponente, N'nd') AS Esponente, ISNULL(stc.DescImpianto, N'nd') AS DescImpianto,
ISNULL(stc.DataFus, N'') AS DataFus, ISNULL(stc.TurnoFus, 0) AS TurnoFus, stc.CodImballo,
stc.Qta, ISNULL(AnagStatiProdotto.DescStato, N'nd') AS DescStato, stc.ModDate,
CASE WHEN(stc.IdxPosizione < 0) THEN 'Consum' ELSE ISNULL(Blocchi.CodMag, N'nd') END AS CodMag,
ISNULL(Blocchi.CodBlocco, N'nd') AS CodBlocco, ISNULL(Celle.CodCella, N'nd') AS CodCella, ISNULL(dbo.Celle.IdxCella, 0) AS IdxCella,
ISNULL(Celle.X, 0) AS X, ISNULL(Celle.Y, 0) AS Y, ISNULL(Celle.Z, 0) AS Z, stc.IdxPosizione, ISNULL(stc.Note,'') AS Note
FROM AnagStatiProdotto RIGHT OUTER JOIN
myCTE stc ON AnagStatiProdotto.CodStato = stc.CodStato AND AnagStatiProdotto.CodStato = stc.CodStato
LEFT OUTER JOIN Celle INNER JOIN PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella
AND Celle.IdxCella = PosizioneUdcCorrente.IdxCella AND Celle.IdxCella = PosizioneUdcCorrente.IdxCella
INNER JOIN Blocchi ON Celle.IdxBlocco = Blocchi.IdxBlocco INNER JOIN AnagMag ON Blocchi.CodMag = AnagMag.CodMag
AND Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag AND Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag
AND Blocchi.CodCS = AnagMag.CodCS ON stc.UDC = PosizioneUdcCorrente.UDC
WHERE (stc.UDC = @UDC) AND (stc.CodCS = @CodCS)
RETURN
go
commit;
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(505, GETDATE())
GO