169 lines
5.1 KiB
Transact-SQL
169 lines
5.1 KiB
Transact-SQL
/***************************************
|
|
* STORED stp_UAL_insertNewAL
|
|
*
|
|
* Stored completa x gestione postazione RxNt e AL:
|
|
* - crea un nuovo record nella tab ElencoAssiemi di tipo Rx NT (non tracciati dtmx)
|
|
* - associa tutti gli UDC della cella della postazione
|
|
* - sposta gli UDC da posizione temporanea a posizione reale
|
|
* - restituisce il codice AL appena creato in output
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.04.04
|
|
*
|
|
****************************************/
|
|
CREATE PROCEDURE stp_UAL_insertNewAL
|
|
(
|
|
@CodCS VARCHAR(2),
|
|
@Anno VARCHAR(2),
|
|
@Cesta VARCHAR(4),
|
|
@PostFlux VARCHAR(10), -- RxNt / RxDt / ...
|
|
@Flusso CHAR(2),
|
|
@TipoAl CHAR(1),
|
|
@DataCreaz DATETIME,
|
|
@CodSoggetto VARCHAR(17),
|
|
@CodDtxStart VARCHAR(50),
|
|
@CodDtxEnd VARCHAR(50),
|
|
@CodCella VARCHAR(50), -- CodCella che contiene UDC da associare
|
|
@CodEvento VARCHAR(10), -- evento
|
|
@Note NVARCHAR(500),
|
|
@AL VARCHAR(50) OUTPUT
|
|
)
|
|
AS
|
|
|
|
-- DECLARE iniziali
|
|
DECLARE @numFlu INT,
|
|
@numUdc INT,
|
|
@idxCellaTo INT = 0,
|
|
@idxPosizioneTo INT = 0
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Gestione Flusso
|
|
------------------------------------------------------------------------------------------------------
|
|
-- controllo se esiste il flusso...
|
|
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
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Gestione contatore incrementale x flusso...
|
|
------------------------------------------------------------------------------------------------------
|
|
-- 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 calcolo idxPosizione e idxCella di destinazione
|
|
------------------------------------------------------------------------------------------------------
|
|
-- cerco in TabTranPosizEventi record x calcolare cella
|
|
DECLARE @IdxBloccoTo INT
|
|
SET @IdxBloccoTo = 0
|
|
|
|
-- ricavo al volo blocco e idxPosizione
|
|
SELECT TOP 1 @IdxPosizioneTo = ttpe.IdxPosizioneTo
|
|
, @IdxBloccoTo = ttpe.IdxBloccoTo
|
|
FROM PosizioneUdcCorrente puc
|
|
INNER JOIN ElencoCartellini udc
|
|
ON puc.UDC = udc.UDC
|
|
INNER JOIN TabTranPosizEventi ttpe
|
|
ON ttpe.IdxPosizione = udc.IdxPosizione
|
|
INNER JOIN Celle c
|
|
ON puc.IdxCella = c.IdxCella
|
|
WHERE CodCella = @CodCella
|
|
|
|
|
|
SELECT TOP 1 @idxCellaTo = c.IdxCella
|
|
FROM Celle c
|
|
WHERE c.IdxBlocco = @IdxBloccoTo
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo principale x inserimento nuovo record, associazione UDC, spostamenti
|
|
------------------------------------------------------------------------------------------------------
|
|
BEGIN TRAN
|
|
-- ottengo il nuovo codice AL completo
|
|
SET @AL = dbo.f_componiAL(@TipoAl, @Flusso, @Anno, @numUdc, @Cesta)
|
|
|
|
-- inserisco un nuovo record
|
|
INSERT INTO ElencoAssiemi(AL, Attivo, DataCreaz, CodSoggetto, CodDtx_start, CodDtx_end)
|
|
VALUES (@AL, 1, @DataCreaz, @CodSoggetto, @CodDtxStart, @CodDtxEnd)
|
|
|
|
-- associo tutti gli UDC della cella indicata al nuovo AL
|
|
INSERT INTO AL2UDC(AL, UDC, DataCreaz, CodSoggetto)
|
|
SELECT @AL, UDC, @DataCreaz, @CodSoggetto
|
|
FROM PosizioneUdcCorrente puc
|
|
INNER JOIN Celle c
|
|
ON puc.IdxCella = c.IdxCella
|
|
WHERE CodCella = @CodCella
|
|
|
|
-- aggiorno gli UDC x idxPosizione!
|
|
UPDATE udc
|
|
SET idxPosizione = @IdxPosizioneTo
|
|
, Note = @Note
|
|
FROM ElencoCartellini udc
|
|
INNER JOIN PosizioneUdcCorrente puc
|
|
ON puc.UDC = udc.UDC
|
|
INNER JOIN Celle c
|
|
ON puc.IdxCella = c.IdxCella
|
|
WHERE CodCella = @CodCella
|
|
|
|
|
|
-- sposto gli UDC come cella!
|
|
UPDATE puc
|
|
SET IdxCella = @idxCellaTo
|
|
, DataRif = @DataCreaz
|
|
, CodSoggetto = @CodSoggetto
|
|
FROM PosizioneUdcCorrente puc
|
|
INNER JOIN Celle c
|
|
ON puc.IdxCella = c.IdxCella
|
|
WHERE CodCella = @CodCella
|
|
|
|
COMMIT TRAN
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
RETURN |