

-- Aggiorno le relazioni UDC mancanti con la data creazione UDC_child
UPDATE RelazUDC
SET dataMod = el.CreateDate
FROM RelazUDC As Rl
INNER JOIN ElencoCartellini AS el ON Rl.UDC_child = el.UDC
WHERE rl.dataMod = '2012-01-01'


-- Sistemo CodStato x cartellini Anime vecchi con stato 'Fin'
UPDATE dbo.ElencoCartellini
SET CodStato = 'Anim'
WHERE IdxPosizione = 2 OR IdxPosizione = -2


-- Disattivo Lista Prelievo Anime Terzista perchè effettua cmq scarico
UPDATE dbo.TipoListaPrelievo
SET enabled = 0
WHERE CodTipoLista = '05-TerAn'

-- Inserisco Evento di ripristino dell' UDC Anime
INSERT [dbo].[TabTranPosizEventi]
VALUES('UDC_CONS',-2,2,0,1)

-- Metto anche questo anche se non serve visto che non fa scarico AS400
INSERT [dbo].[TabTranPosizEventi]
VALUES('UDC_CONS',-6,6,0,0)



SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


/***************************************
* STORED stp_selDestListePrelByConditio
*
* Ottiene i destinatari delle liste di prelievo data la condizione indicata
*
* Steamware, S.E.L.
* mod: 2010.11.02
*
****************************************/
ALTER PROCEDURE [dbo].[stp_selDestListePrelByConditio]
(
	@conditio NVARCHAR(20)
)
AS

IF (@conditio='01-PreFus')
BEGIN
	SELECT        CAST('*' AS NVARCHAR(6)) AS value, CAST('*' AS NVARCHAR(50)) AS label, '01-PreFus' AS conditio
END

ELSE IF (@conditio='01-PreAnim')
BEGIN
	SELECT        CAST(CodCliente AS NVARCHAR(6)) AS value, CAST(CodCliente AS NVARCHAR(6)) +'- ' +CAST(RagSociale AS NVARCHAR(50)) AS label, '01-PreAnim' AS conditio
	FROM            RilPro.AnagClienti
	ORDER BY label
END

ELSE IF (@conditio='02-PreCli') 
BEGIN
	SELECT        CAST(CodCliente AS NVARCHAR(6)) AS value, CAST(CodCliente AS NVARCHAR(6)) +'- ' +CAST(RagSociale AS NVARCHAR(50)) AS label, '02-PreCli' AS conditio
	FROM            RilPro.AnagClienti
	ORDER BY label
END

ELSE IF (@conditio='04-OdetSP') 
BEGIN
	SELECT        CAST(CodCliente AS NVARCHAR(6)) AS value, CAST(CodCliente AS NVARCHAR(6)) +'- ' +CAST(RagSociale AS NVARCHAR(50)) AS label, '04-OdetSP' AS conditio
	FROM            RilPro.AnagClienti
	ORDER BY label
END

ELSE IF (@conditio='05-TerAn') 
BEGIN
	SELECT        CAST(CodTerzista AS NVARCHAR(6)) AS value, CAST(CodTerzista AS NVARCHAR(6))+ '- '+CAST(DescTerzista AS NVARCHAR(50)) AS label, '05-TerAn' AS conditio
	FROM            RilPro.AnagDepositi
	ORDER BY label
END

ELSE IF (@conditio='03-TerWip') 
BEGIN
	SELECT        CAST(CodTerzista AS NVARCHAR(6)) AS value, CAST(CodTerzista AS NVARCHAR(6))+ '- '+CAST(DescTerzista AS NVARCHAR(50)) AS label, '03-TerWip' AS conditio
	FROM            RilPro.AnagDepositi
	ORDER BY label
END

ELSE   -- Se non configurata prendo elenco destinatari esterni
BEGIN
	SELECT        CAST(CodTerzista AS NVARCHAR(6)) AS value, CAST(CodTerzista AS NVARCHAR(6))+ '- '+CAST(DescTerzista AS NVARCHAR(50)) AS label, '99-Terzis' AS conditio
	FROM            RilPro.AnagDepositi
	ORDER BY label
END

RETURN

GO



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



-- =============================================
-- Author:		Samuele E. Locatelli
-- Create date: 2009-09-20 mod. 2012-03-14
-- Description:	trigger x inserimento movimenti
--				nella coda di trasferimento batch
--				verso AS400 x UPDATE UDC
-- =============================================
ALTER TRIGGER [dbo].[trg_updMovAS]
   ON [dbo].[ElencoCartellini]
   AFTER UPDATE
AS
BEGIN

	-- setup variabili e verbosità
	SET NOCOUNT ON;
	DECLARE @partOk AS BIT
	DECLARE	@currUdc AS NVARCHAR(50)
	DECLARE @IdxPosFrom AS INT
	DECLARE @IdxPosTo AS INT
	DECLARE @magFrom AS NVARCHAR(50)
	DECLARE @magTo AS NVARCHAR(50)
	DECLARE @qta AS DECIMAL(10,2)
	DECLARE @qtaOld AS DECIMAL(10,2)
	DECLARE @IdxPosizioneComp INT
	DECLARE	@toAs400 BIT

	-- e se modificano il codice UDC ??? o + di uno ?
	-- ciclo solo solo se è cambiata la posizione o la quantità
	DECLARE cursore CURSOR FOR
	    SELECT CASE WHEN ISNULL(i.Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END, i.UDC 
	    FROM inserted AS i
	    INNER JOIN deleted AS d ON i.UDC = d.UDC
	    WHERE ( (i.IdxPosizione <> d.IdxPosizione) OR (i.Qta <> d.Qta) )
	          AND i.Particolare IS NOT NULL
	
	OPEN cursore
	FETCH NEXT FROM cursore INTO @partOk, @currUdc

	WHILE @@FETCH_STATUS = 0
	BEGIN
		-- controllo che CI SIA il particolare (altrimenti non eseguo)
		IF(@partOk = 1)
			-- Prendo la IdxPosizione e qta precedente
        	SELECT @qtaOld = Qta , @IdxPosFrom = IdxPosizione  FROM deleted  WHERE UDC = @currUdc
            -- Prendo la IdxPosizione e qta nuova
        	SELECT @qta = Qta    , @IdxPosTo = IdxPosizione FROM inserted WHERE UDC = @currUdc

			-- se c'è stata modifica di quantità inizio a rettificare quella
			IF ( (UPDATE(Qta)) AND (@qta <> @qtaOld) )
			BEGIN
				-- registro il VERO movimento se previsto verso AS400
				INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita)
					(
						SELECT	GETDATE(), 'UDC_MOD', Particolare, UDC, 
						        CAST(IdxPosizione AS NVARCHAR(50)), @qta - Qta
						FROM	deleted
						WHERE	UDC = @currUdc AND CAST(IdxPosizione AS NVARCHAR(50)) IN
                                (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1)
					)
				-- controllo: se il magazzino di destinazione richiede una compensazione registro il 2° movimento di compensazione
				-- calcolo il mag di compensazione
				SET @IdxPosizioneComp = ISNULL( (SELECT CAST(ISNULL(CodMagAS_compensaz,0) AS INT) FROM AS400_MagCont 
				                                 WHERE (Attivo = 1) AND (CodMagAS = CAST(@IdxPosFrom AS NVARCHAR(50))) 
				                               ),0)
				-- Se il Magazzino compensazione non è 0 ed esiste compenso
				IF (@IdxPosizioneComp > 0) 
					BEGIN
						INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita)
							(
								SELECT	GETDATE(), 'UDC_COMP', Particolare, UDC,
                                        CAST(@IdxPosizioneComp AS NVARCHAR(50)), Qta - @qta
								FROM	deleted
								WHERE	UDC = @currUdc 
								        -- AND CAST(IdxPosizione AS NVARCHAR(50)) IN (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1)
							)
					END
			END

			-- controllo se devo fare rettifiche quantità in base a IdxPosizioneTo ...
			SET	@toAs400 =  (   SELECT TOP 1 toAs400 as valore
                                FROM  TabTranPosizEventi
                                WHERE IdxPosizione = @IdxPosFrom AND IdxPosizioneTo = @IdxPosTo AND CodEvento = 'UDC_CONS' ) -- NON E' CORRETTO!!!! DOVEVA ESSERE MAX !!!

			-- controllo poi se sia cambiato il magazzino logico (IdxPosizione) e si richieda update verso AS400, altrimenti non lo inserisco
			IF (UPDATE(IdxPosizione) AND @IdxPosFrom <> @IdxPosTo AND @toAs400 = 1)
			BEGIN
				-- Le trasformo nelle equivalenti stringhe del codMag SE attive
				SET @magFrom	= ( SELECT CodMagAS FROM AS400_MagCont
                                    WHERE Attivo = 1 AND CodMagAs = CAST(@IdxPosFrom AS NVARCHAR(50)))
				SET @magTo		= ( SELECT CodMagAS FROM AS400_MagCont
                                    WHERE Attivo = 1 AND CodMagAs = CAST(@IdxPosTo AS NVARCHAR(50)))
				
				-- inserisco un movimento di deposito verso mag nuovo (SE attivo)
				IF @magFrom IS NOT NULL
					BEGIN
						INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita)
						(
							SELECT	GETDATE(), 'UDC_MOV', Particolare, UDC,
                            CAST(IdxPosizione AS NVARCHAR(50)), -@qta
							FROM	deleted
							WHERE	UDC = @currUdc AND CAST(IdxPosizione AS NVARCHAR(50)) IN
                                    (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1)
						)
					END
				-- inserisco un movimento di prelievo verso mag vecchio (SE attivo)
				IF @magTo IS NOT NULL
					BEGIN
						INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita)
						(
							SELECT	GETDATE(), 'UDC_MOV', Particolare, UDC,
                            CAST(IdxPosizione AS NVARCHAR(50)), @qta
							FROM	inserted
							WHERE	UDC = @currUdc AND CAST(IdxPosizione AS NVARCHAR(50)) IN
                            (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1)
						)
					END
			END
		FETCH NEXT FROM cursore INTO @partOk, @currUdc
	END

	CLOSE cursore
	DEALLOCATE cursore

END








-- Lemma mancante
Print 'Da Fare su VOCABOLARIO'

USE TK_Vocabolario
EXEC dbo.stp_insNewLemma @lemma = N'05-TerAn', @traduzione = N'Anime Terzista'

Print 'Da Fare su VOCABOLARIO'


