set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/***************************************
* STORED stp_spostaUdc
*
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
*
* Steamware, S.E.L.
* mod: 2010.06.11
*
****************************************/
alter PROCEDURE stp_spostaUdc
(
	@CodCS VARCHAR(2),
	@UDC VARCHAR(50),
	@IdxCellaTo INT,
	@resetRLP BIT
)
AS

BEGIN TRAN
	
	-- DICHIARAZIONI iniziali variabili
	DECLARE @IdxCellaFrom INT
	DECLARE @capienza INT
	DECLARE @numUdc INT
	
	-- controllo cella di partenza
	SET		@IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
	SET		@IdxCellaFrom = ISNULL(@IdxCellaFrom,0) -- controllo x cella null...
	-- controllo se cella di destinazione e di partenza coincidono NON FACCIO NULLA... altrimenti procedo
	IF (@IdxCellaTo <> @IdxCellaFrom)
		BEGIN
			
			-- controllo se la cella di partenza vada indicata come piena o meno
			SET		@capienza = (
									SELECT tc.Capienza 
										FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
										WHERE c.IdxCella = @IdxCellaFrom	
								)
			SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom)
			-- se capienza cella di partenza NON raggiunta aggiorno NON Piena
			IF(@numUdc -1 < @capienza)
				BEGIN
					EXEC stp_celle_updPiena @IdxCellaFrom, 0
				END
				
			-- cancello posizione occupata
			DELETE
			FROM	PosizioneUdcCorrente
			WHERE	UDC = @UDC
			
			-- SE RICHIESTO cancello eventuali righe liste di prelievo FUSI per l'UDC
			IF(@resetRLP = 1)
			BEGIN
				DELETE FROM RigheListePrelievo
					WHERE UDC = @UDC AND CodLista IN ( 
						SELECT CodLista FROM ElencoListePrelievo 
						--WHERE CodTipoLista='01-PreFus'
						WHERE CodStatoLista < 4
					)
			END

			
			
			-- creo una nuova posizione per l'UDC
			INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
			VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
			
			SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
		
			-- controllo se la cella di dest vada indicata come piena, altrimenti NON la indicheṛ (mai) come piena...
			SET		@capienza = (
									SELECT CASE CheckPiena WHEN 1 THEN tc.Capienza ELSE @numUdc + 1 END
										FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
										WHERE c.IdxCella = @IdxCellaTo	
								)
		
		
			-- se capienza raggiunta aggiorno...
			IF(@numUdc >= @capienza)
				BEGIN
					EXEC stp_celle_updPiena @IdxCellaTo, 1
				END
				
		END -- cellaFrom e cellaTo non coincidono...
	
COMMIT TRAN

RETURN
go

commit;
go

set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

alter VIEW v_righeListePrelievoPosizione
AS
SELECT        dbo.RigheListePrelievo.CodLista, dbo.RigheListePrelievo.UDC, dbo.RigheListePrelievo.Qta, dbo.RigheListePrelievo.Proposto, dbo.RigheListePrelievo.Prelevato, 
                         ISNULL(dbo.Celle.CodCella, N'') AS CodCella, ISNULL(dbo.Blocchi.CodMag, N'') AS CodMag, ISNULL(dbo.Blocchi.CodBlocco, N'') AS CodBlocco, ISNULL(dbo.Celle.X, 
                         0) AS X, ISNULL(dbo.Celle.Y, 0) AS Y, ISNULL(dbo.Celle.Z, 0) AS Z
FROM            dbo.Celle INNER JOIN
                         dbo.PosizioneUdcCorrente ON dbo.Celle.IdxCella = dbo.PosizioneUdcCorrente.IdxCella INNER JOIN
                         dbo.Blocchi ON dbo.Celle.IdxBlocco = dbo.Blocchi.IdxBlocco RIGHT OUTER JOIN
                         dbo.RigheListePrelievo ON dbo.PosizioneUdcCorrente.UDC = dbo.RigheListePrelievo.UDC
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 = "Celle"
            Begin Extent = 
               Top = 6
               Left = 621
               Bottom = 235
               Right = 791
            End
            DisplayFlags = 280
            TopColumn = 0
         End
         Begin Table = "PosizioneUdcCorrente"
            Begin Extent = 
               Top = 18
               Left = 377
               Bottom = 183
               Right = 547
            End
            DisplayFlags = 280
            TopColumn = 0
         End
         Begin Table = "Blocchi"
            Begin Extent = 
               Top = 5
               Left = 870
               Bottom = 134
               Right = 1040
            End
            DisplayFlags = 280
            TopColumn = 0
         End
         Begin Table = "RigheListePrelievo"
            Begin Extent = 
               Top = 6
               Left = 38
               Bottom = 188
               Right = 208
            End
            DisplayFlags = 280
            TopColumn = 0
         End
      End
   End
   Begin SQLPane = 
   End
   Begin DataPane = 
      Begin ParameterDefaults = ""
      End
      Begin ColumnWidths = 13
         Width = 284
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         Width = 1500
         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
        ', 'SCHEMA', 'dbo', 'VIEW', 'v_righeListePrelievoPosizione';
go

commit;
go







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