set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

alter VIEW v_selUdcByPart
AS
SELECT        UDC AS value, ISNULL(RTRIM(UDC), '-') + ' - ' + ISNULL(RTRIM(Particolare), '...') + ' (' + ISNULL(RTRIM(DescParticolare), '') + ') ' + ISNULL(RTRIM(DisegnoGrezzo), '-') 
                         + ' pz. ' + ISNULL(CAST(Qta AS varchar), '0') AS label, Particolare, IdxPosizione, CodCS
FROM            dbo.ElencoCartellini
WHERE        (NOT (Particolare IS NULL)) AND (IdxPosizione >= 0)
go

exec sp_updateextendedproperty 'MS_DiagramPane1', '[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00]
Begin DesignProperties = 
   Begin PaneConfigurations = 
      Begin PaneConfiguration = 0
         NumPanes = 4
         Configuration = "(H (1[40] 4[20] 2[20] 3) )"
      End
      Begin PaneConfiguration = 1
         NumPanes = 3
         Configuration = "(H (1 [50] 4 [25] 3))"
      End
      Begin PaneConfiguration = 2
         NumPanes = 3
         Configuration = "(H (1 [50] 2 [25] 3))"
      End
      Begin PaneConfiguration = 3
         NumPanes = 3
         Configuration = "(H (4 [30] 2 [40] 3))"
      End
      Begin PaneConfiguration = 4
         NumPanes = 2
         Configuration = "(H (1 [56] 3))"
      End
      Begin PaneConfiguration = 5
         NumPanes = 2
         Configuration = "(H (2 [66] 3))"
      End
      Begin PaneConfiguration = 6
         NumPanes = 2
         Configuration = "(H (4 [50] 3))"
      End
      Begin PaneConfiguration = 7
         NumPanes = 1
         Configuration = "(V (3))"
      End
      Begin PaneConfiguration = 8
         NumPanes = 3
         Configuration = "(H (1[56] 4[18] 2) )"
      End
      Begin PaneConfiguration = 9
         NumPanes = 2
         Configuration = "(H (1 [75] 4))"
      End
      Begin PaneConfiguration = 10
         NumPanes = 2
         Configuration = "(H (1[66] 2) )"
      End
      Begin PaneConfiguration = 11
         NumPanes = 2
         Configuration = "(H (4 [60] 2))"
      End
      Begin PaneConfiguration = 12
         NumPanes = 1
         Configuration = "(H (1) )"
      End
      Begin PaneConfiguration = 13
         NumPanes = 1
         Configuration = "(V (4))"
      End
      Begin PaneConfiguration = 14
         NumPanes = 1
         Configuration = "(V (2))"
      End
      ActivePaneConfig = 0
   End
   Begin DiagramPane = 
      Begin Origin = 
         Top = 0
         Left = 0
      End
      Begin Tables = 
         Begin Table = "ElencoCartellini"
            Begin Extent = 
               Top = 6
               Left = 38
               Bottom = 319
               Right = 208
            End
            DisplayFlags = 280
            TopColumn = 0
         End
      End
   End
   Begin SQLPane = 
   End
   Begin DataPane = 
      Begin ParameterDefaults = ""
      End
      Begin ColumnWidths = 9
         Width = 284
         Width = 1500
         Width = 8910
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
      End
   End
   Begin CriteriaPane = 
      Begin ColumnWidths = 11
         Column = 1440
         Alias = 900
         Table = 1170
         Output = 720
         Append = 1400
         NewValue = 1170
         SortType = 1350
         SortOrder = 1410
         GroupBy = 1350
         Filter = 1350
         Or = 1350
         Or = 1350
         Or = 1350
      End
   End
End
', 'SCHEMA', 'dbo', 'VIEW', 'v_selUdcByPart'
go

commit
go

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_ParticolariOverviewPerListaPrelievo
*
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe") x una possibile lista di prelievo
*
* Steamware, S.E.L.
* mod: 2010.05.31
*
****************************************/
alter PROCEDURE stp_ParticolariOverviewPerListaPrelievo
(
	@Particolare VARCHAR(50),
	@CodCS VARCHAR(2),
	@Esponente NVARCHAR(6),
	@Figura NVARCHAR(4),
	@CodImballo NVARCHAR(15),
	@CodTipoLista NVARCHAR (10)
)
AS
	SELECT      RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare, ISNULL(COUNT(dbo.ElencoCartellini.UDC), 0) AS NumUDC, 
				ISNULL(SUM(dbo.ElencoCartellini.Qta), 0) AS TotQta, ISNULL(COUNT(dbo.PosizioneUdcCorrente.IdxCella), 0) AS NumInMag
	FROM        RilPro.AnagParticolari LEFT OUTER JOIN
				dbo.ElencoCartellini ON RilPro.AnagParticolari.Particolare = dbo.ElencoCartellini.Particolare LEFT OUTER JOIN
				dbo.PosizioneUdcCorrente ON dbo.ElencoCartellini.UDC = dbo.PosizioneUdcCorrente.UDC
	WHERE		RilPro.AnagParticolari.CodCS = @CodCS AND 
				RilPro.AnagParticolari.Particolare = @Particolare AND 
				(IdxPosizione IN (SELECT	tt.IdxPosizione
	                 	   FROM     TipoListaPrelievo tlp INNER JOIN TabTranPosizEventi tt ON tlp.CodEvento = tt.CodEvento
	                 	   WHERE	(tlp.CodTipoLista = @CodTipoLista))) AND 
				(dbo.ElencoCartellini.Figura		= CASE WHEN @Figura		= '*' THEN dbo.ElencoCartellini.Figura		ELSE @Figura	END) AND
				(dbo.ElencoCartellini.Esponente		= CASE WHEN @Esponente  = '*' THEN dbo.ElencoCartellini.Esponente	ELSE @Esponente END) AND
				(dbo.ElencoCartellini.CodImballo	= CASE WHEN @CodImballo	= '*' THEN dbo.ElencoCartellini.CodImballo	ELSE @CodImballo END)
				/*
				AND ElencoCartellini.UDC NOT IN (
					SELECT DISTINCT UDC 
					FROM RigheListePrelievo INNER JOIN ElencoListePrelievo
					ON	RigheListePrelievo.CodLista = ElencoListePrelievo.CodLista
					WHERE (CodStatoLista > 1 AND Prelevato = 1)
					)
				*/
	GROUP BY	RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_ParticolariOverviewPerListaPrelievo
*
* elenco degli UDC x lista di prelievo e particolare
*
* Steamware, S.E.L.
* mod: 2010.11.26
*
****************************************/
create PROCEDURE stp_UdcPerParticolareCodLista
(
	@Particolare VARCHAR(50),
	@CodCS VARCHAR(2),
	@CodTipoLista NVARCHAR (10)
)
AS
	SELECT      *
	FROM        v_selUdcByPart
	WHERE       (Particolare = @Particolare) AND (CodCS = @CodCS) 
	AND			(IdxPosizione IN (SELECT	tt.IdxPosizione
	                 			   FROM     TipoListaPrelievo tlp INNER JOIN TabTranPosizEventi tt ON tlp.CodEvento = tt.CodEvento
	                 			   WHERE	(tlp.CodTipoLista = @CodTipoLista))) 


RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

alter table TabTranPosizEventi add
  toAs400 bit constraint DF_TabTranPosizEventi_toAs400 default (1)
go

update TabTranPosizEventi set toAs400=1
go

set ANSI_NULLS on
go

-- =============================================
-- Author:		Samuele E. Locatelli
-- Create date: 2009-09-20
-- Description:	trigger x inserimento movimenti
--				nella coda di trasferimento batch
--				verso AS400 x UPDATE UDC
-- =============================================
alter TRIGGER trg_updMovAS 
   ON ElencoCartellini
   AFTER UPDATE
AS 
BEGIN

	-- setup variabili e verbosità
	SET NOCOUNT ON;
	DECLARE @partOk AS BIT
	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
	
	-- controllo che CI SIA il particolare (altrimenti non eseguo)
	SET @partOk = (SELECT CASE WHEN ISNULL(Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END FROM deleted)
	
	IF(@partOk = 1)
		SET @qta = (SELECT Qta FROM inserted)
		SET @qtaOld = (SELECT Qta FROM deleted)
		-- se c'è stata modifica di quantità inizio a rettificare quella
		IF ((UPDATE(Qta)) AND(@qta <> @qtaOld))
		BEGIN
			-- registro il VERO movimento
			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	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
			SET @IdxPosFrom = (SELECT IdxPosizione FROM deleted)
			SET @IdxPosTo	= (SELECT IdxPosizione FROM inserted)
			-- calcolo il mag di compensazione
			SET @IdxPosizioneComp = (SELECT CAST(ISNULL(CodMagAS_compensaz,0) AS INT) FROM AS400_MagCont WHERE (Attivo = 1) AND (CodMagAS = CAST(@IdxPosFrom AS NVARCHAR(50))))
			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	CAST(IdxPosizione AS NVARCHAR(50)) IN (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1)
						)
				END
		END

		-- Prendo le posizioni di magazzino precedente e nuova 
		SET @IdxPosFrom = (SELECT IdxPosizione FROM deleted)
		SET @IdxPosTo	= (SELECT IdxPosizione FROM inserted)
		
		-- controllo se devo fare rettifiche quantità...
		SET	@toAs400 = (
					SELECT TOP 1 ISNULL(toAs400, 0) as valore
						FROM   TabTranPosizEventi
						WHERE IdxPosizione = @IdxPosFrom AND IdxPosizioneTo = @IdxPosTo
						)

		-- controllo poi se sia cambiato il magazzino logico (IdxPosizione) e si richieda update verso AS400, altrimenti non lo inserisco
		IF ((UPDATE(IdxPosizione)) AND @toAs400 = 1)
		BEGIN
			-- Le trasformo nelle equivalenti stringhe del codMag SE attive
			SET @magFrom	= (SELECT ISNULL(CodMagAS,'---') FROM AS400_MagCont WHERE Attivo = 1 AND CodMagAs = CAST(@IdxPosFrom AS NVARCHAR(50)))
			SET @magTo		= (SELECT ISNULL(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 <> '---')
				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	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 <> '---')
				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	CAST(IdxPosizione AS NVARCHAR(50)) IN (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1)
					)
				END
		END

END
go

commit
go

set xact_abort on
go

begin transaction
go

INSERT INTO dbo.AnagTipoEvento
  VALUES (N'UDC_RIEN', N'Rientro UDC da 88')
go

commit transaction
go


set xact_abort on
go

begin transaction
go

UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'DelWipPost' and IdxPosizione=305
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'DelWipPre' and IdxPosizione=290
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'MagPreFin' and IdxPosizione=54
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'MagPreFus' and IdxPosizione=80
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'MagPreFus' and IdxPosizione=84
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'MagPreWip' and IdxPosizione=84
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'SpeWipTerz' and IdxPosizione=290
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'SpeWipTerz' and IdxPosizione=295
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'UDC_CONS' and IdxPosizione=54
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'UDC_CONS' and IdxPosizione=56
UPDATE dbo.TabTranPosizEventi SET 
  toAs400=0
  WHERE CodEvento=N'UDC_CONS' and IdxPosizione=84
INSERT INTO dbo.TabTranPosizEventi
  VALUES (N'UDC_RIEN', 88, 84, 1)
go

commit transaction
go









-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(327, GETDATE())
GO
