
/***************************************
* 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
*
************************************/
CREATE 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, DataModStato)
	VALUES  (@CodLista, @CodTipoLista, @CodCS, GETDATE(), @CodCliente, @RagSociale, @CodSoggetto, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente,@Figura, @CodImballo, @QtaTot, 0, @Destinatario, @DestinatarioDescrizione, GETDATE() )

COMMIT TRAN

SELECT CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, DisegnoGrezzo, Esponente, Figura, CodImballo, QtaTot, CodStatoLista, Destinatario, DestinatarioDescrizione
FROM V_elencoListePrelievo WHERE CodLista = @CodLista;

RETURN

