

/***************************************
* STORED stp_UDC_update
*
* aggiorna un cartellino dato il suo codice UDC e tutti i parametri da aggiornare
*
* Steamware, S.E.L.
* mod: 2010.04.30
*
****************************************/
CREATE PROCEDURE [dbo].[stp_UDC_update]
(
	@UDC_edit VARCHAR(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),
	@Note NVARCHAR(500)
)
AS

SET @UDC_parent = UPPER(@UDC_parent) -- nel caso sia passato in minuscolo
SET @UDC_edit   = UPPER(@UDC_edit)   -- nel caso sia passato in minuscolo

-- 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

------------------------------------------------------------------------------------------------------
-- 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      NumCont
	FROM        ElencoCartellini
	WHERE       (UDC = @UDC_edit)	
)


------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
-- 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
------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
-- Ciclo principale x edit record
------------------------------------------------------------------------------------------------------
BEGIN TRAN
	
	-- elimino vecchio record parent/child
	DELETE FROM RelazUDC
	WHERE (UDC_child = @UDC_edit)
	
	-- modifico il record 
	UPDATE	ElencoCartellini
	SET		CodCS = @CodCS, CodCliente = @CodCliente, RagSociale = @RagSociale, Particolare = @Particolare, DescParticolare = @DescParticolare,
			DisegnoGrezzo = @DisegnoGrezzo, Esponente = @Esponente, CodImpianto = @CodImpianto, DescImpianto = @DescImpianto, CodStampo = @CodStampo,
			Figura = @Figura, DataFus = @DataFus, TurnoFus = @TurnoFus, CodImballo = @CodImballo, CodSoggetto = @CodSoggetto, NumCont = @NumCont,
			Tara = @Tara, Qta = @Qta, CodStato = @CodStato, IdxPosizione = @IdxPosizione, PesoTot = @PesoTot, PesoCad = @PesoCad, ModDate = GETDATE(), Note = @Note, CodEvento = @CodEvento 
	WHERE	UDC = @UDC_edit

	-- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa)
	INSERT INTO RelazUDC(UDC_parent, UDC_child)
	VALUES (@UDC_parent, @UDC_edit)
COMMIT TRAN
------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
-- restituisco la tab dati con l'udc appena inserito
------------------------------------------------------------------------------------------------------
SELECT * 
FROM ElencoCartellini
WHERE  UDC = @UDC_edit
------------------------------------------------------------------------------------------------------

RETURN

