Files
GMW/GMW_DB/dbo/Stored Procedures/stp_UDC_insNewFull_fixUDC.sql
T

233 lines
6.6 KiB
Transact-SQL

/***************************************
* 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
*
****************************************/
CREATE 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
SET @UDC_parent = UPPER(@UDC_parent) -- nel caso sia passato in minuscolo
-- metto il particolare in Maiuscolo ( il campo è Case Insensitive )
SET @Particolare = UPPER(@Particolare);
------------------------------------------------------------------------------------------------------
-- 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