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

1777 lines
49 KiB
Transact-SQL

-- STEP 3: stored & functions
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_creaListaPrelievo
*
* crea un nuovo record nella ElencoListePrelievo e restituisce il codice ID appena creato
*
* Steamware, S.E.L. 8 (FROM Stintino)
* mod: 2010.07.30
*
************************************/
alter PROCEDURE stp_creaListaPrelievo
(
@Anno NVARCHAR(2),
@Mese NVARCHAR(2),
@CodTipoLista NVARCHAR(10),
@CodCS NCHAR(2),
@CodCliente NVARCHAR(6),
@RagSociale NVARCHAR(35),
@CodSoggetto NCHAR(17),
@Particolare NVARCHAR(15),
@DescParticolare NVARCHAR(30),
@DisegnoGrezzo NVARCHAR(30),
@Esponente NVARCHAR(6),
@Figura NVARCHAR(4),
@CodImballo NVARCHAR(15),
@QtaTot DECIMAL(10,2),
@Destinatario NVARCHAR(50),
@DestinatarioDescrizione NVARCHAR(50)
)
AS
-- Dichiarazioni iniziali
DECLARE @CodLista AS NVARCHAR(12)
DECLARE @numLista AS INT
DECLARE @temp AS INT
DECLARE @ora AS DATETIME
------------------------------------------------------------------------------------------------------
-- codice lista di prelievo KAAMM00000 - K = start char, AA = anno, MM = mese, 00000 = progressivo
------------------------------------------------------------------------------------------------------
-- controllo se ci sia già una lista di prelievo per company / flusso anno
BEGIN TRAN
-- cerco nella tab contatori liste prelievo l'ultimo valido
SET @numLista = (
SELECT COUNT(*)
FROM ContatoriListePrelievo
WHERE CodCS = @CodCS
AND Anno = @Anno
AND Mese = @Mese
)
-- controllo se record c'è...
IF(@numLista > 0)
BEGIN
-- se c'è incremento di 1 in tab
UPDATE ContatoriListePrelievo
SET LastIdx = LastIdx + 1
WHERE CodCS = @CodCS
AND Anno = @Anno
AND Mese = @Mese
END
ELSE
BEGIN
-- lo creo!
INSERT INTO ContatoriListePrelievo(CodCS, Anno, Mese, LastIdx)
VALUES (@CodCS, @Anno, @Mese, 1)
END
-- aggiorno numero lista prelievo
SET @numLista = (
SELECT LastIdx
FROM ContatoriListePrelievo
WHERE CodCS = @CodCS
AND Anno = @Anno
AND Mese = @Mese
)
COMMIT TRAN
------------------------------------------------------------------------------------------------------
BEGIN TRAN
------------------------------------------------------------------------------------------------------
-- Ciclo principale x inserimento nuovo record
------------------------------------------------------------------------------------------------------
-- ottengo il nuovo codice lista di prelievo completo
SET @CodLista = 'K' + @CodCS + @Anno + dbo.f_padLeft(CAST(@Mese AS NVARCHAR(2)), 2, '0') + + dbo.f_padLeft(CAST(@numLista AS NVARCHAR(5)), 5, '0')
INSERT INTO ElencoListePrelievo
(CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, DisegnoGrezzo, Esponente, Figura, CodImballo, QtaTot, CodStatoLista, Destinatario, DestinatarioDescrizione, DataModStato)
VALUES (@CodLista, @CodTipoLista, @CodCS, GETDATE(), @CodCliente, @RagSociale, @CodSoggetto, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente,@Figura, @CodImballo, @QtaTot, 0, @Destinatario, @DestinatarioDescrizione, GETDATE() )
COMMIT TRAN
SELECT CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, DisegnoGrezzo, Esponente, Figura, CodImballo, QtaTot, CodStatoLista, Destinatario, DestinatarioDescrizione
FROM V_elencoListePrelievo WHERE CodLista = @CodLista;
RETURN
go
commit;
go
--- modifica manuale da testare... manca db ACG...
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;
------------------------------------------------------------------------------------------------------
-- 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, CodEvento )
SELECT DISTINCT nd.CodGitterbox, @CodCS, tp.Particolare, an.DescParticolare, an.DisegnoGrezzo, an.EsponenteModifica
,InizioIniezione, dbo.getNumDatamatrix(nd.CodGitterbox), @CodSoggetto As CodSoggetto, 'FinGBox' AS CodStato
,@IdxPosizione, GETDATE(), GETDATE()
,'' AS Figura, '' AS CodImballo,0 AS Tara,0 AS PesoTot,0 AS PesoCad,1 AS NumCont,0 AS TurnoFus, 'UDC_GBOX' AS CodEvento
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_elencoListePrelievoUpdateStato
*
* aggiorna la lista di prelievo indicando lo stato richiesto
*
* Steamware, S.E.L.
* mod: 2010.07.06
*
************************************/
alter PROCEDURE stp_elencoListePrelievoUpdateStato
(
@NewCodSoggetto NCHAR(17),
@CodListaAttuale AS varchar(12),
@CodStatoLista INT
)
AS
UPDATE ElencoListePrelievo
SET CodSoggetto = @NewCodSoggetto
,CodStatoLista = @CodStatoLista
,DataModStato = GETDATE()
WHERE (CodLista = @CodListaAttuale)
SELECT CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, DisegnoGrezzo, Esponente, Figura, CodImballo, QtaTot, CodStatoLista, Destinatario, DestinatarioDescrizione
FROM V_elencoListePrelievo WHERE (CodLista = @CodListaAttuale)
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_EP_delete
*
* elimina una postazione + stampante
* Steamware, S.E.L.
* mod: 2012.10.02
*
****************************************/
alter PROCEDURE stp_EP_delete
(
@Original_codPostazione NVARCHAR(250)
)
AS
DELETE
FROM ElencoPostazioni
WHERE codPostazione = @Original_codPostazione
RETURN
go
/***************************************
* STORED stp_EP_update
*
* update di una postazione + stampante
* Steamware, S.E.L.
* mod: 2012.10.02
*
****************************************/
alter PROCEDURE stp_EP_update
(
@Original_codPostazione NVARCHAR(250),
@codPostazione NVARCHAR(250),
@stampante NVARCHAR(250),
@note NVARCHAR(250)
)
AS
UPDATE ElencoPostazioni
SET codPostazione = @codPostazione,
stampante = @stampante,
note = @note
WHERE codPostazione = @Original_codPostazione
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
/***************************************
* STORED stp_MagFifoByParticolare
*
* restituisce elenco giacenze a magazzino in logica FIFO per un dato particolare
*
* Steamware, S.E.L.
* mod: 2012.10.01
*
****************************************/
create PROCEDURE stp_MagFifoByParticolare
(
@CodCS VARCHAR(2),
@Particolare VARCHAR(20)
)
AS
SELECT b.IdxBlocco, b.CodBlocco, b.DescBlocco, ec.Particolare
, COUNT(puc.UDC) AS NumUDC
, ISNULL(MIN(puc.DataRif) , GETDATE()) AS Oldest
, ISNULL(MAX(puc.DataRif) , GETDATE()) AS Newest
, SUM(ec.Qta) AS QtaTotPz
FROM AnagMag am
INNER JOIN Blocchi b ON am.CodMag = b.CodMag AND am.CodCS = b.CodCS
INNER JOIN Celle c
INNER JOIN ElencoCartellini ec
LEFT OUTER JOIN PosizioneUdcCorrente puc ON ec.UDC = puc.UDC ON c.IdxCella = puc.IdxCella ON b.IdxBlocco = c.IdxBlocco
INNER JOIN AnagStatiProdotto asp ON ec.CodStato = asp.CodStato
WHERE (c.Attiva = 1)
AND b.CodMag <> 'VMLP'
AND (am.CodCS = @CodCS)
AND (ec.Particolare = @Particolare)
GROUP BY b.IdxBlocco, b.CodBlocco, b.DescBlocco, ec.Particolare
ORDER BY Oldest ASC
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_prtCartFusiByUDC
*
* ottiene il record del Cartellino FUSI dato l'UDC richiesto x la stampa
*
* Steamware, G.A.R.
* mod: 2012.02.27
*
****************************************/
create PROCEDURE stp_prtCartFusiByUDC
(
@UDC NVARCHAR(50)
)
AS
-- estraggo i trattamenti nelle note ( x max 10 trattamenti )
DECLARE @tmp NVARCHAR(500)
DECLARE @NoteTratt NVARCHAR(500)
SET @NoteTratt = ''
-- SET @NoteTratt = (SELECT SUBSTRING(@tmp, 0, LEN(@tmp)))
-- ora seleziono i dati veri e propri
SELECT
ElencoCartellini.UDC, ElencoCartellini.CodCS, ISNULL(ElencoCartellini.CodCliente, N'') AS codcliente,
ISNULL(ElencoCartellini.RagSociale, N'') AS ragsociale, ISNULL(ElencoCartellini.Particolare, N'') AS particolare,
ISNULL(ElencoCartellini.DescParticolare, N'') AS DescParticolare, ISNULL(ElencoCartellini.DisegnoGrezzo, N'') AS DisegnoGrezzo,
ISNULL(ElencoCartellini.Esponente, N'') AS esponente, ISNULL(ElencoCartellini.CodImpianto, N'') AS CodImpianto,
ISNULL(ElencoCartellini.DescImpianto, N'') AS DescImpianto, ISNULL(ElencoCartellini.CodStampo, N'') AS codstampo,
ISNULL(ElencoCartellini.Figura, N'') AS figura, ISNULL(ElencoCartellini.DataFus, N'') AS datafus,
ISNULL(ElencoCartellini.TurnoFus, N'') AS turnofus, ISNULL(ElencoCartellini.CodImballo, N'') AS CodImballo,
ISNULL(ElencoCartellini.CodSoggetto, N'') AS CodSoggetto, ISNULL(ElencoCartellini.NumCont, N'') AS NumCont,
ISNULL(ElencoCartellini.Tara, N'') AS tara, ISNULL(ElencoCartellini.Qta, N'') AS qta, ISNULL(ElencoCartellini.CodStato, N'') AS CodStato,
ISNULL(ElencoCartellini.IdxPosizione, N'') AS IdxPosizione,
ISNULL(ElencoCartellini.PesoTot, N'') AS PesoTot, ISNULL(ElencoCartellini.PesoCad, N'') AS PesoCad, ElencoCartellini.CreateDate,
ElencoCartellini.ModDate, ISNULL(RilPro.AnagOperatori.Cognome, N'') AS cognome,
ISNULL(RilPro.AnagOperatori.Nome, N'') AS nome, ISNULL(AnagStatiProdotto.DescStato, N'') AS DescStato,
ISNULL(RilPro.AnagImballi.DescImballo, N'') AS DescImballo, RilPro.AnagParticolari.CodFamiglia, RilPro.AnagFamiglie.DescFamiglia,
ISNULL(ElencoCartellini.Note, N'') AS Note, @NoteTratt AS NoteTratt
FROM
RilPro.AnagParticolari
LEFT OUTER JOIN
RilPro.AnagFamiglie
ON
RilPro.AnagParticolari.CodFamiglia = RilPro.AnagFamiglie.CodFamiglia
RIGHT OUTER JOIN
ElencoCartellini
ON
RilPro.AnagParticolari.Particolare = ElencoCartellini.Particolare
LEFT OUTER JOIN
AnagStatiProdotto
ON
ElencoCartellini.CodStato = AnagStatiProdotto.CodStato
LEFT OUTER JOIN
RilPro.AnagOperatori
ON
ElencoCartellini.CodSoggetto = RilPro.AnagOperatori.CodSoggetto
LEFT OUTER JOIN
RilPro.AnagImballi
ON
ElencoCartellini.CodImballo = RilPro.AnagImballi.CodImballo
WHERE
(ElencoCartellini.UDC = @UDC)
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_riattivaUdc
*
* riattiva un dato UDC (da mag consumato negativo a corrispettivo positivo) --> se era positivo NON FA NULLA!!! (perchè uso ABS e controllo sia < 0)
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
****************************************/
alter PROCEDURE stp_riattivaUdc
(
@UDC VARCHAR(50),
@CodSoggetto NVARCHAR(17)
)
AS
DECLARE @CodEvento VARCHAR(10)
DECLARE @CodTipoDichiaraz VARCHAR(1)
DECLARE @IdxCella INT
DECLARE @CodCS NVARCHAR(2)
SET @UDC = UPPER(@UDC) -- metto ad Upper nel caso venga passato in minuscolo ( es. da terminalino )
SET @CodEvento = 'UDC_RIA'
SET @CodTipoDichiaraz = 'U'
BEGIN TRAN
-- faccio update posizione
UPDATE ElencoCartellini
SET IdxPosizione = ABS(IdxPosizione)
,ModDate=GETDATE()
,CodEvento = @CodEvento
,CodSoggetto = @CodSoggetto
WHERE UDC = @UDC AND IdxPosizione IN (SELECT IdxPosizione FROM AnagPosizioni WHERE (IsRiattivaEnabled = 1)
)
-- lo elimino da eventuali precedenti liste di prelievo sennò poi non potrei + prelevarlo
DELETE FROM RigheListePrelievo
WHERE UDC = @UDC
-- imposto posizione CELLA corrente x l'udc nella prima libera
SET @IdxCella = (SELECT c.IdxCella FROM Celle c inner join Blocchi b ON c.IdxBlocco=b.IdxBlocco INNER JOIN ElencoCartellini e ON b.CodMag = CAST(e.IdxPosizione AS NVARCHAR(50)) WHERE e.UDC = @UDC)
SET @CodCS = (SELECT CodCS FROM ElencoCartellini WHERE UDC = @UDC)
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
VALUES(@Udc, @IdxCella, @CodCS, GETDATE(), @CodSoggetto)
COMMIT TRAN
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/*stp_SAO_getByIdxEv
* STORED stp_SAO_getBySearch
*
* cerca riga in Storico Azioni Operatore
* Steamware, S.E.L.
* mod: 2012.09.25
*
****************************************/
create PROCEDURE stp_SAO_getByIdxEv
(
@idxEvento INT=0
)
AS
SELECT *
FROM StoricoAzioniOperatore
WHERE idxEvento = @idxEvento
RETURN
go
/***************************************
* STORED stp_SAO_getBySearch
*
* effettua ricerca nello Storico Azioni Operatore
* Steamware, S.E.L.
* mod: 2012.09.25
*
****************************************/
create PROCEDURE stp_SAO_getBySearch
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME,
@CodSoggetto NVARCHAR(17)='*',
@codPostazione NVARCHAR(250)='*',
@UDC NVARCHAR(50),
@Particolare NVARCHAR(15),
@codAzione NVARCHAR(10)='*'
)
AS
SELECT *
FROM StoricoAzioniOperatore
WHERE DataOra BETWEEN @DataOraFrom AND @DataOraTo
AND codPostazione = CASE WHEN ISNULL(@codPostazione,'*') = '*' THEN codPostazione ELSE @codPostazione END -- NON VA!!!
AND CodSoggetto = CASE WHEN ISNULL(@CodSoggetto,'*') = '*' THEN CodSoggetto ELSE @CodSoggetto END
AND codAzione = CASE WHEN ISNULL(@codAzione,'*') = '*' THEN codAzione ELSE @codAzione END
AND UDC = CASE WHEN ISNULL(@UDC,'*') = '*' THEN UDC ELSE @UDC END
AND Particolare = CASE WHEN ISNULL(@Particolare,'*') = '*' THEN Particolare ELSE @Particolare END
ORDER BY IdxEvento DESC
RETURN
go
/***************************************
* STORED stp_SAO_getLastPostazione
*
* ultimi record SAO x postazione
* Steamware, S.E.L.
* mod: 2012.09.25
*
****************************************/
create PROCEDURE stp_SAO_getLastPostazione
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME,
@codPostazione NVARCHAR(250)=''
)
AS
SELECT *
FROM StoricoAzioniOperatore
WHERE DataOra BETWEEN @DataOraFrom AND @DataOraTo
AND codPostazione = @codPostazione
ORDER BY DataOra DESC
RETURN
go
/***************************************
* STORED stp_SAO_insert
*
* inserisce nuova riga nello Storico Azioni Operatore
*
* Steamware, S.E.L.
* mod: 2012.09.25
*
****************************************/
create PROCEDURE stp_SAO_insert
(
@DataOra DATETIME,
@CodSoggetto NVARCHAR(17),
@codPostazione NVARCHAR(250),
@clientIp NVARCHAR(250)='',
@UDC NVARCHAR(50),
@Particolare NVARCHAR(15),
@codAzione NVARCHAR(10),
@descrizione NVARCHAR(500)
)
AS
BEGIN tran
-- inserisco nuovo record storico azioni operatore
INSERT INTO StoricoAzioniOperatore(DataOra, CodSoggetto, codPostazione, clientIp, UDC, Particolare, codAzione, descrizione)
VALUES (@DataOra, @CodSoggetto, @codPostazione, @clientIp, @UDC, @Particolare, @codAzione, @descrizione)
COMMIT tran
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
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_selMagByConditio
*
* Steamware, S.E.L.
* mod: 2012.10.08
*
************************************/
create PROCEDURE stp_selMagByConditio
(
@conditio NVARCHAR(2)
)
AS
SELECT value, label, conditio
FROM v_selMag
WHERE (conditio = @conditio)
ORDER BY label
RETURN
go
/***************************************
* STORED stp_selMagLogicoByConditio
*
* Steamware, S.E.L.
* mod: 2012.10.08
*
************************************/
create PROCEDURE stp_selMagLogicoByConditio
(
@conditio NVARCHAR(2)
)
AS
SELECT value, label, conditio
FROM v_selMagLogico
WHERE (conditio = @conditio)
ORDER BY label
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
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
set ANSI_NULLS on;
go
/***************************************
* STORED stp_UDC_delete
*
* elimina un dato UDC
*
* Steamware, S.E.L.
* mod: 2012.09.25
*
****************************************/
create PROCEDURE stp_UDC_delete
(
@UDC NVARCHAR(50)
)
AS
BEGIN tran
-- annullo cella piena
UPDATE dbo.Celle
SET Piena = 0
FROM PosizioneUdcCorrente p
INNER JOIN dbo.Celle c ON p.IdxCella = c.IdxCella
WHERE c.Piena = 1 AND p.UDC = @UDC
-- cancello posizione
DELETE
FROM PosizioneUdcCorrente
WHERE UDC = @UDC
-- cancello UDC
DELETE
FROM ElencoCartellini
WHERE UDC = @UDC
COMMIT tran
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_UDC_FifoByParticolareBlocco
*
* restituisce elenco UDC a magazzino in logica FIFO per un dato particolare+blocco
*
* Steamware, S.E.L.
* mod: 2012.10.01
*
****************************************/
create PROCEDURE stp_UDC_FifoByParticolareBlocco
(
@CodCS VARCHAR(2),
@Particolare VARCHAR(20),
@idxBlocco INT
)
AS
SELECT ec.UDC, c.CodCella, puc.DataRif, ec.Qta
FROM AnagMag am
INNER JOIN Blocchi b ON am.CodMag = b.CodMag AND am.CodCS = b.CodCS
INNER JOIN Celle c
INNER JOIN ElencoCartellini ec
LEFT OUTER JOIN PosizioneUdcCorrente puc ON ec.UDC = puc.UDC ON c.IdxCella = puc.IdxCella ON b.IdxBlocco = c.IdxBlocco
INNER JOIN AnagStatiProdotto asp ON ec.CodStato = asp.CodStato
WHERE (c.Attiva = 1)
AND b.CodMag <> 'VMLP'
AND (am.CodCS = @CodCS)
AND (ec.Particolare = @Particolare)
AND b.IdxBlocco = @idxBlocco
GROUP BY ec.UDC, c.CodCella, puc.DataRif, ec.Qta
ORDER BY puc.DataRif ASC
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_v_selPartic_SAO
*
* elenco particolari x ricerca dato periodo analisi
* Steamware, S.E.L.
* mod: 2012.09.28
*
****************************************/
create PROCEDURE stp_v_selPartic_SAO
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME
)
AS
SELECT DISTINCT value, label, GETDATE() AS conditio
FROM v_selPartic_SAO
WHERE conditio BETWEEN @DataOraFrom AND @DataOraTo
RETURN
go
/***************************************
* STORED stp_v_selPostazioni_SAO
*
* elenco Postazioni x ricerca dato periodo analisi
* Steamware, S.E.L.
* mod: 2012.10.02
*
****************************************/
create PROCEDURE stp_v_selPostazioni_SAO
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME
)
AS
SELECT DISTINCT value, label, GETDATE() AS conditio
FROM v_selPostazioni_SAO
WHERE conditio BETWEEN @DataOraFrom AND @DataOraTo
RETURN
go
/***************************************
* STORED stp_v_selSoggetti_SAO
*
* elenco soggetti x ricerca dato periodo analisi
* Steamware, S.E.L.
* mod: 2012.10.02
*
****************************************/
create PROCEDURE stp_v_selSoggetti_SAO
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME
)
AS
SELECT DISTINCT value, label, GETDATE() AS conditio
FROM v_selSoggetti_SAO
WHERE conditio BETWEEN @DataOraFrom AND @DataOraTo
RETURN
go
/***************************************
* STORED stp_v_selUDC_SAO
*
* elenco UDC x ricerca dato periodo analisi
* Steamware, S.E.L.
* mod: 2012.09.28
*
****************************************/
create PROCEDURE stp_v_selUDC_SAO
(
@DataOraFrom DATETIME,
@DataOraTo DATETIME
)
AS
SELECT DISTINCT value, label, GETDATE() AS conditio
FROM v_selUDC_SAO
WHERE conditio BETWEEN @DataOraFrom AND @DataOraTo
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/***************************************
* STORED stp_UDC_insNewFull
*
* crea un nuovo record nella TabStatoOdpUdc FULL (con pesi, qta...) e restituisce il codice UDC appena creato
*
* Steamware, S.E.L.
* mod: 2010.04.28
*
****************************************/
alter PROCEDURE stp_UDC_insNewFull
(
@CodCS VARCHAR(2),
@Flusso VARCHAR(2),
@Anno VARCHAR(2),
@CodCliente VARCHAR(6),
@Particolare VARCHAR(15),
@CodImpianto AS VARCHAR(50),
@CodStampo VARCHAR(8),
@Esponente VARCHAR(6),
@Figura VARCHAR(4),
@DataFus DATETIME,
@TurnoFus INT,
@CodImballo VARCHAR(15),
@CodSoggetto VARCHAR(17),
@Tara FLOAT,
@IdxPosizione INT,
@CodTipoDichiaraz CHAR(1),
@CodEvento VARCHAR(10),
@Qta DECIMAL(10,2),
@PesoTot FLOAT,
@PesoCad FLOAT,
@CodStato VARCHAR(50),
@UDC_parent VARCHAR(50),
@DoDeleteUdcParent BIT,
@Note NVARCHAR(500)
)
AS
-- DECLARE iniziali
DECLARE @UDC AS VARCHAR(50)
DECLARE @RagSociale AS VARCHAR(35)
DECLARE @DescParticolare AS VARCHAR(30)
DECLARE @DescImpianto AS VARCHAR(50)
DECLARE @DisegnoGrezzo AS VARCHAR(30)
DECLARE @NumCont AS INT
DECLARE @numFlu AS INT
DECLARE @numUdc AS INT
DECLARE @nextUdc AS INT
DECLARE @IdxCella AS INT
SET @UDC_parent = UPPER(@UDC_parent) -- nel caso sia passato in minuscolo
------------------------------------------------------------------------------------------------------
-- Caricamento Dati da anagrafica
------------------------------------------------------------------------------------------------------
-- cerco la ragione sociale...
SET @RagSociale = ISNULL(
(
SELECT RagSociale
FROM RilPro.AnagClienti
WHERE (CodCliente = @CodCliente)
)
, '')
-- Cerco descrizione del particolare...
SET @DescParticolare = ISNULL(
(
SELECT DescParticolare
FROM RilPro.AnagParticolari
WHERE (Particolare = @Particolare)
)
, 'ND')
-- se non lo trova provo anche nell'anagrafica leghe
IF(@DescParticolare = 'ND')-- OR (@DescParticolare is null)
BEGIN
SET @DescParticolare = ISNULL(
(
SELECT DescLega
FROM RilPro.AnagLeghe
WHERE ('L'+CodLega = @Particolare)
)
, '')
END
-- cerco codice disegno grezzo
SET @DisegnoGrezzo = ISNULL(
(
SELECT DisegnoGrezzo
FROM RilPro.AnagParticolari
WHERE (Particolare = @Particolare)
)
, '')
-- cerco descrizione Impianto
SET @DescImpianto = ISNULL(
(
SELECT DescImpianto
FROM AnagImpianti
WHERE (CodImpianto = @CodImpianto)
)
, '')
-- Calcolo contatore intero successivo x il contenitore...
SET @NumCont = (
SELECT ISNULL(MAX(NumCont), 0) + 1 AS NumCont
FROM ElencoCartellini
WHERE (Particolare = @Particolare)
AND (DataFus = @DataFus)
AND (TurnoFus = @TurnoFus)
AND (CodImpianto = @CodImpianto)
AND (CodStampo = @CodStampo)
AND (Figura = @Figura)
)
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- Flusso
------------------------------------------------------------------------------------------------------
-- controllo se esiste il flusso (bilancia)...
SET @numFlu = (
SELECT count(*)
FROM AnagBilance
WHERE CodBilancia = @Flusso
)
-- ...sennò lo creo...
IF(@numFlu = 0)
BEGIN
-- se c'è inserisco in tab
INSERT INTO AnagBilance(CodBilancia, DescrImpianto, CodCS)
VALUES (@Flusso, @Flusso, @CodCS)
END
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- UDC
------------------------------------------------------------------------------------------------------
-- controllo se ci sia già un UDC per company / flusso anno
BEGIN TRAN
-- cerco nella tab contatori se esiste contatore x il flusso
-- controllo se record c'è...
IF EXISTS( SELECT TOP 1 Flusso FROM ContatoriUdc
WHERE CodCS = @CodCS
AND Flusso = @Flusso
AND Anno = @Anno )
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 @numUdc = (
SELECT LastIdx
FROM ContatoriUdc
WHERE CodCS = @CodCS
AND Flusso = @Flusso
AND Anno = @Anno
)
COMMIT TRAN
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- Ciclo principale x inserimento nuovo record
------------------------------------------------------------------------------------------------------
BEGIN TRAN
-- ottengo il nuovo codice UDC completo
SET @UDC = dbo.componiUdc(@CodCS, @Flusso, @Anno, @numUdc)
-- inserisco un nuovo record
INSERT INTO ElencoCartellini(UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare, DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo, CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, CreateDate, ModDate, Note, CodEvento)
VALUES (@UDC, @CodCS, @CodCliente, @RagSociale, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente, @CodImpianto, @DescImpianto, @CodStampo, @Figura, @DataFus, @TurnoFus, @CodImballo, @CodSoggetto, @NumCont, @Tara, @Qta, @CodStato, @IdxPosizione, @PesoTot, @PesoCad, GETDATE(), GETDATE(), @Note, @CodEvento)
-- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa) SSE UDC_parent valido
IF((NOT @UDC_parent IS NULL) AND (NOT @UDC_parent = ''))
BEGIN
INSERT INTO RelazUDC(UDC_parent, UDC_child)
VALUES (@UDC_parent, @UDC)
END
COMMIT TRAN
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- Ciclo secondario x eventuale cancellazione UDC tara parent e inserimento in posizione
------------------------------------------------------------------------------------------------------
-- se richiesto elimino l'UDC parent (tara)
IF(@DoDeleteUdcParent = 1)
BEGIN
DELETE FROM ElencoCartellini WHERE UDC = @UDC_parent
END
-- cerco in TabTranPosizEventi record x calcolare cella
DECLARE @IdxBloccoTo INT
SET @IdxBloccoTo = 0
/* da testare... */
SET @IdxBloccoTo = (
SELECT ISNULL(
(
SELECT IdxBloccoTo
FROM TabTranPosizEventi
WHERE CodEvento = @CodEvento
AND IdxPosizione = 0
AND IdxPosizioneTo = @IdxPosizione
AND CodStatoTo = @CodStato
), 0)
)
-- se non lo trovo cerco con CodStatoTo null ( x stato UDC non specifico ) ...
IF(@IdxBloccoTo = 0)
BEGIN
SET @IdxBloccoTo = (
SELECT ISNULL(
(
SELECT IdxBloccoTo
FROM TabTranPosizEventi
WHERE CodEvento = @CodEvento
AND IdxPosizione = 0
AND IdxPosizioneTo = @IdxPosizione
), 0)
)
END
/* fine modifica da testare */
-- se NON HO trovato una conf x @IdxBloccoTo utilizzo questo valore utilizzo modalità "vecchia"
IF(@IdxBloccoTo = 0)
BEGIN
-- calcolo la prima cella della posizione indicata..
SET @IdxCella = (
SELECT TOP 1 c.IdxCella
FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco
WHERE b.CodMag = CAST(@IdxPosizione AS NVARCHAR(50))
)
END
ELSE
BEGIN
-- calcolo la prima cella della posizione indicata..
SET @IdxCella = (
SELECT TOP 1 c.IdxCella
FROM Celle c
WHERE c.IdxBlocco = @IdxBloccoTo
)
END
-- inserisco il cartellino nella prima cella della posizione indicata...
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
VALUES(@Udc, @IdxCella, @CodCS, GETDATE(), @CodSoggetto)
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- restituisco la tab dati con l'udc appena inserito
------------------------------------------------------------------------------------------------------
SELECT *
FROM ElencoCartellini
WHERE UDC = @UDC
------------------------------------------------------------------------------------------------------
RETURN
go
/***************************************
* STORED stp_UDC_insNewFull_fixUDC
*
* crea un nuovo record nella TabStatoOdpUdc FULL (con pesi, qta...) avendo in entrata il codice UDC da
utilizzare
*
* Steamware, S.E.L.
* mod: 2011.12.07
*
****************************************/
alter PROCEDURE stp_UDC_insNewFull_fixUDC
(
@UDC AS NVARCHAR(50),
@CodCS VARCHAR(2),
@Flusso VARCHAR(2),
@Anno VARCHAR(2),
@CodCliente VARCHAR(6),
@Particolare VARCHAR(15),
@CodImpianto AS VARCHAR(50),
@CodStampo VARCHAR(8),
@Esponente VARCHAR(6),
@Figura VARCHAR(4),
@DataFus DATETIME,
@TurnoFus INT,
@CodImballo VARCHAR(15),
@CodSoggetto VARCHAR(17),
@Tara FLOAT,
@IdxPosizione INT,
@CodTipoDichiaraz CHAR(1),
@CodEvento VARCHAR(10),
@Qta DECIMAL(10,2),
@PesoTot FLOAT,
@PesoCad FLOAT,
@CodStato VARCHAR(50),
@UDC_parent VARCHAR(50),
@DoDeleteUdcParent BIT,
@Note NVARCHAR(500)
)
AS
-- DECLARE iniziali
DECLARE @RagSociale AS VARCHAR(35)
DECLARE @DescParticolare AS VARCHAR(30)
DECLARE @DescImpianto AS VARCHAR(50)
DECLARE @DisegnoGrezzo AS VARCHAR(30)
DECLARE @NumCont AS INT
DECLARE @numFlu AS INT
DECLARE @numUdc AS INT
DECLARE @nextUdc AS INT
DECLARE @IdxCella AS INT
------------------------------------------------------------------------------------------------------
-- Caricamento Dati da anagrafica
------------------------------------------------------------------------------------------------------
-- cerco la ragione sociale...
SET @RagSociale = ISNULL(
(
SELECT RagSociale
FROM RilPro.AnagClienti
WHERE (CodCliente = @CodCliente)
)
, '')
-- Cerco descrizione del particolare...
SET @DescParticolare = ISNULL(
(
SELECT DescParticolare
FROM RilPro.AnagParticolari
WHERE (Particolare = @Particolare)
)
, 'ND')
-- se non lo trova provo anche nell'anagrafica leghe
IF(@DescParticolare = 'ND')-- OR (@DescParticolare is null)
BEGIN
SET @DescParticolare = ISNULL(
(
SELECT DescLega
FROM RilPro.AnagLeghe
WHERE ('L'+CodLega = @Particolare)
)
, '')
END
-- cerco codice disegno grezzo
SET @DisegnoGrezzo = ISNULL(
(
SELECT DisegnoGrezzo
FROM RilPro.AnagParticolari
WHERE (Particolare = @Particolare)
)
, '')
-- cerco descrizione Impianto
SET @DescImpianto = ISNULL(
(
SELECT DescImpianto
FROM AnagImpianti
WHERE (CodImpianto = @CodImpianto)
)
, '')
-- Calcolo contatore intero successivo x il contenitore...
SET @NumCont = (
SELECT ISNULL(MAX(NumCont), 0) + 1 AS NumCont
FROM ElencoCartellini
WHERE (Particolare = @Particolare)
AND (DataFus = @DataFus)
AND (TurnoFus = @TurnoFus)
AND (CodImpianto = @CodImpianto)
AND (CodStampo = @CodStampo)
AND (Figura = @Figura)
)
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- Ciclo principale x inserimento nuovo record
------------------------------------------------------------------------------------------------------
BEGIN TRAN
-- inserisco un nuovo record
INSERT INTO ElencoCartellini(UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare,
DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo,
CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, CreateDate, ModDate, Note, CodEvento)
VALUES (@UDC, @CodCS, @CodCliente, @RagSociale, @Particolare, @DescParticolare, @DisegnoGrezzo,
@Esponente, @CodImpianto, @DescImpianto, @CodStampo, @Figura, @DataFus, @TurnoFus, @CodImballo,
@CodSoggetto, @NumCont, @Tara, @Qta, @CodStato, @IdxPosizione, @PesoTot, @PesoCad, GETDATE(), GETDATE(),
@Note, @CodEvento)
-- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa) SSE UDC_parent valido
IF((NOT @UDC_parent IS NULL) AND (NOT @UDC_parent = ''))
BEGIN
INSERT INTO RelazUDC(UDC_parent, UDC_child)
VALUES (@UDC_parent, @UDC)
END
COMMIT TRAN
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- Ciclo secondario x eventuale cancellazione UDC tara parent e inserimento in posizione
------------------------------------------------------------------------------------------------------
-- se richiesto elimino l'UDC parent (tara)
IF(@DoDeleteUdcParent = 1)
BEGIN
DELETE FROM ElencoCartellini WHERE UDC = @UDC_parent
END
-- cerco in TabTranPosizEventi record x calcolare cella
DECLARE @IdxBloccoTo INT
SET @IdxBloccoTo = 0
/* da testare...*/
SET @IdxBloccoTo = (
SELECT ISNULL(
(
SELECT IdxBloccoTo
FROM TabTranPosizEventi
WHERE CodEvento = @CodEvento
AND IdxPosizione = 0
AND IdxPosizioneTo = @IdxPosizione
AND CodStatoTo = @CodStato
), 0)
)
-- se non lo trovo cerco con CodStatoTo null...
IF(@IdxBloccoTo = 0)
BEGIN
SET @IdxBloccoTo = (
SELECT ISNULL(
(
SELECT IdxBloccoTo
FROM TabTranPosizEventi
WHERE CodEvento = @CodEvento
AND IdxPosizione = 0
AND IdxPosizioneTo = @IdxPosizione
), 0)
)
END
/* fine test */
-- se NON HO trovato una conf x @IdxBloccoTo utilizzo questo valore utilizzo modalità "vecchia"
IF(@IdxBloccoTo = 0)
BEGIN
-- calcolo la prima cella della posizione indicata..
SET @IdxCella = (
SELECT TOP 1 c.IdxCella
FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco
WHERE b.CodMag = CAST(@IdxPosizione AS NVARCHAR(50))
)
END
ELSE
BEGIN
-- calcolo la prima cella della posizione indicata..
SET @IdxCella = (
SELECT TOP 1 c.IdxCella
FROM Celle c
WHERE c.IdxBlocco = @IdxBloccoTo
)
END
-- inserisco il cartellino nella prima cella della posizione indicata..
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
VALUES(@Udc, @IdxCella, @CodCS, GETDATE(), @CodSoggetto)
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-- restituisco la tab dati con l'udc appena inserito
------------------------------------------------------------------------------------------------------
SELECT *
FROM ElencoCartellini
WHERE UDC = @UDC
------------------------------------------------------------------------------------------------------
RETURN
go
commit;
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(510, GETDATE())
GO