set xact_abort on
go

begin transaction
go

alter table ElencoListePrelievo add
  DestinatarioDescrizione nvarchar(50)
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_creaListaPrelievo
*
* crea un nuovo record nella ElencoListePrelievo e restituisce il codice ID appena creato
*
* Steamware, S.E.L. 8 (FROM Stintino)
* mod: 2010.07.30
*
************************************/
alter PROCEDURE stp_creaListaPrelievo
(
	@Anno NVARCHAR(2),
	@Mese NVARCHAR(2),
	@CodTipoLista NVARCHAR(10),
	@CodCS NCHAR(2),
	@CodCliente NVARCHAR(6),
	@RagSociale NVARCHAR(35),
	@CodSoggetto NCHAR(17),
	@Particolare NVARCHAR(15),
	@DescParticolare NVARCHAR(30),
	@DisegnoGrezzo NVARCHAR(30),
	@Esponente NVARCHAR(6),
	@Figura NVARCHAR(4),
	@CodImballo NVARCHAR(15),
	@QtaTot DECIMAL(10,2),
	@Destinatario NVARCHAR(50),
	@DestinatarioDescrizione NVARCHAR(50)
)
AS

-- Dichiarazioni iniziali
DECLARE @CodLista AS NVARCHAR(12)
DECLARE @numLista AS INT
DECLARE @temp AS INT
DECLARE @ora AS DATETIME
	
------------------------------------------------------------------------------------------------------
-- codice lista di prelievo KAAMM00000 - K = start char, AA = anno, MM = mese, 00000 = progressivo
------------------------------------------------------------------------------------------------------
-- controllo se ci sia già una lista di prelievo per company / flusso anno
BEGIN TRAN
	-- cerco nella tab contatori liste prelievo l'ultimo valido
	SET @numLista = (
		SELECT COUNT(*)
		FROM ContatoriListePrelievo
		WHERE	CodCS		=	@CodCS
		AND		Anno		=	@Anno
		AND		Mese		=	@Mese
	)
	-- controllo se record c'è...
	IF(@numLista > 0)
		BEGIN
			-- se c'è incremento di 1 in tab
			UPDATE ContatoriListePrelievo
			SET LastIdx = LastIdx  + 1
			WHERE	CodCS		=	@CodCS
			AND		Anno		=	@Anno
			AND		Mese		=	@Mese

		END
	ELSE
		BEGIN
			-- lo creo!
			INSERT INTO ContatoriListePrelievo(CodCS, Anno, Mese, LastIdx)
			VALUES (@CodCS, @Anno, @Mese, 1)
		END		
	-- aggiorno numero lista prelievo
	SET @numLista = (
		SELECT LastIdx
		FROM ContatoriListePrelievo
		WHERE	CodCS		=	@CodCS
		AND		Anno		=	@Anno
		AND		Mese		=	@Mese

	)
COMMIT TRAN
------------------------------------------------------------------------------------------------------

BEGIN TRAN

	------------------------------------------------------------------------------------------------------
	-- Ciclo principale x inserimento nuovo record	
	------------------------------------------------------------------------------------------------------
	-- ottengo il nuovo codice lista di prelievo completo
	SET @CodLista = 'K' + @CodCS + @Anno + dbo.f_padLeft(CAST(@Mese AS NVARCHAR(2)), 2, '0') + + dbo.f_padLeft(CAST(@numLista AS NVARCHAR(5)), 5, '0')

	INSERT INTO ElencoListePrelievo
						  (CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, DisegnoGrezzo, Esponente, Figura, CodImballo, QtaTot, CodStatoLista, Destinatario, DestinatarioDescrizione)
	VALUES     (@CodLista, @CodTipoLista, @CodCS, GETDATE(), @CodCliente, @RagSociale, @CodSoggetto, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente,@Figura, @CodImballo, @QtaTot, 0, @Destinatario, @DestinatarioDescrizione)

COMMIT TRAN

SELECT * FROM V_elencoListePrelievo WHERE CodLista = @CodLista;

RETURN
go

alter VIEW V_elencoListePrelievo
AS
SELECT        TOP (100) PERCENT dbo.ElencoListePrelievo.CodLista, dbo.ElencoListePrelievo.CodTipoLista, dbo.ElencoListePrelievo.CodCS, dbo.ElencoListePrelievo.DataCreaz, 
                         dbo.ElencoListePrelievo.CodCliente, dbo.ElencoListePrelievo.RagSociale, dbo.ElencoListePrelievo.CodSoggetto, dbo.ElencoListePrelievo.Particolare, 
                         dbo.ElencoListePrelievo.DescParticolare, dbo.ElencoListePrelievo.DisegnoGrezzo, dbo.ElencoListePrelievo.Esponente, dbo.ElencoListePrelievo.Figura, 
                         dbo.ElencoListePrelievo.CodImballo, dbo.ElencoListePrelievo.QtaTot, dbo.ElencoListePrelievo.CodStatoLista, ISNULL(dbo.v_righePrelevate.TotQta, 0) AS Prelevato, 
                         dbo.ElencoListePrelievo.Destinatario, ISNULL(dbo.ElencoListePrelievo.DestinatarioDescrizione, N'nd') AS DestinatarioDescrizione
FROM            dbo.ElencoListePrelievo LEFT OUTER JOIN
                         dbo.v_righePrelevate ON dbo.ElencoListePrelievo.CodLista = dbo.v_righePrelevate.CodLista
ORDER BY dbo.ElencoListePrelievo.DataCreaz DESC
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 = "ElencoListePrelievo"
            Begin Extent = 
               Top = 6
               Left = 38
               Bottom = 350
               Right = 208
            End
            DisplayFlags = 280
            TopColumn = 1
         End
         Begin Table = "v_righePrelevate"
            Begin Extent = 
               Top = 6
               Left = 454
               Bottom = 118
               Right = 624
            End
            DisplayFlags = 280
            TopColumn = 0
         End
      End
   End
   Begin SQLPane = 
   End
   Begin DataPane = 
      Begin ParameterDefaults = ""
      End
      Begin ColumnWidths = 19
         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
         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_elencoListePrelievo'
go

/***************************************
* STORED stp_RLP_sbloccaNonPrelevate
*
* sblocca righe liste di prelievo ATTIVE x UDC non prelevati
*
* Steamware, S.E.L.
* mod: 2010.08.31
*
****************************************/
alter PROCEDURE stp_RLP_sbloccaNonPrelevate
(
	@CodLista NVARCHAR(12),
	@UDC NVARCHAR(50)
)
AS

-- creo una CTE x le righe liste prelievo ATTIVE (escludo bozze e liste scaricate) - candidate per sblocco che NON fanno aprte della lista di prelievo attuale
WITH	cteUdcRigheAttive	AS (
			SELECT RLP.CodLista, RLP.UDC, RLP.Prelevato
			FROM   RigheListePrelievo AS RLP INNER JOIN ElencoListePrelievo AS ELP
				   ON RLP.CodLista = ELP.CodLista
			WHERE  (ELP.CodStatoLista BETWEEN 1 AND 3) AND RLP.Prelevato = 1 AND ELP.CodLista <> @CodLista
		)

-- effettua "sblocco" delle righe liste prelievo che danno UDC prelevati ma che NON risultano
UPDATE		cteUdcRigheAttive
    SET		Prelevato = 0
	WHERE   UDC = @UDC

RETURN
go

commit
go





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