-- mod tabella

set xact_abort on
go

begin transaction
go

alter table TipoListaPrelievo add
  IdxPosizioneFinal int
go

exec sp_rename 'stp_getTipoListaByCodTipoLista', 'stp_TL_getByCodTipoLista', 'object'
go

commit
go


-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_getUDC_Older
*
* ottiene l'elenco degli UDC più vecchi in ordine asc TRA QUELLI in una data posizione
*
* Steamware, S.E.L.
* mod: 2010.07.06
*
****************************************/
create PROCEDURE stp_getUDC_Older
(
	@Esponente VARCHAR(50),
	@Particolare VARCHAR (50), 
	@IdxPosizione INT
)
AS

SELECT    *
FROM         ElencoCartellini
WHERE     (Esponente = @Esponente) AND (Particolare = @Particolare) AND (IdxPosizione = @IdxPosizione)
ORDER BY DataFus

RETURN
go

commit
go


-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_getUDC_UnusedOlder
*
* ottiene l'elenco degli UDC più vecchi in ordine asc TRA QUELLI NON ANCORA PRELEVATI nè proposti nella lista corrente
*
* Steamware, S.E.L.
* mod: 2010.07.06
*
****************************************/
create PROCEDURE stp_getUDC_UnusedOlder
(	
	@CodLista VARCHAR(12)
)
AS

	-- variabili locali che mi servono
	DECLARE @Figura AS VARCHAR(4)
	DECLARE @Esponente AS VARCHAR(6)
	DECLARE @CodImballo AS VARCHAR(15)
	DECLARE @Particolare AS VARCHAR (50)
	DECLARE @CodTipoLista AS VARCHAR (10)
	DECLARE @IdxPosizione AS INT
	SET @Figura			= (SELECT Figura FROM ElencoListePrelievo WHERE CodLista = @CodLista)
	SET @Esponente		= (SELECT Esponente FROM ElencoListePrelievo WHERE CodLista = @CodLista)
	SET @CodImballo		= (SELECT CodImballo FROM ElencoListePrelievo WHERE CodLista = @CodLista)
	SET @Particolare	= (SELECT Particolare FROM ElencoListePrelievo WHERE CodLista = @CodLista) 
	SET @CodTipoLista	= (SELECT CodTipoLista FROM ElencoListePrelievo WHERE CodLista = @CodLista) 
	SET @IdxPosizione	= (SELECT IdxPosizione FROM TipoListaPrelievo WHERE CodTipoLista = @CodTipoLista)

	-- effettuo la selezione
	SELECT		*
	FROM        ElencoCartellini
	WHERE       (Particolare = @Particolare) AND (IdxPosizione = @IdxPosizione) AND 
				(Figura		= CASE WHEN @Figura		= '*' THEN Figura		ELSE @Figura	END) AND
				(Esponente	= CASE WHEN @Esponente  = '*' THEN Esponente	ELSE @Esponente END) AND
				(CodImballo	= CASE WHEN @CodImballo	= '*' THEN CodImballo	ELSE @CodImballo END)				
				AND UDC NOT IN (
					SELECT DISTINCT UDC 
					FROM RigheListePrelievo INNER JOIN ElencoListePrelievo
					ON	RigheListePrelievo.CodLista = ElencoListePrelievo.CodLista
					WHERE (ElencoListePrelievo.CodLista = @CodLista) 
					OR (ElencoListePrelievo.CodLista <> @CodLista AND CodStatoLista > 1 AND Prelevato = 1)
					)
	ORDER BY	ElencoCartellini.DataFus

RETURN
go

commit
go




-- crea stored


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_LP_deleteQuery
*
* elimina lista di prelievo (e righe lista associate) della list aindicata
*
* Steamware, S.E.L. 8 (from Stintino)
* mod: 2010.07.15
*
************************************/
create PROCEDURE stp_LP_deleteQuery
(
	@Original_CodLista varchar(12)
)
AS

-- cancello righe lista
	DELETE FROM RigheListePrelievo
	WHERE CodLista = @Original_CodLista
	
-- cancello record lista
	DELETE FROM ElencoListePrelievo
	WHERE CodLista = @Original_CodLista

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_LP_exportToAs400
*
* esporta la lista di prelievo (e le relative righe) verso AS400 andando a copaire nelle relative tabelle _AS
*
* Steamware, S.E.L.
* mod: 2010.07.19
*
****************************************/
create PROCEDURE stp_LP_exportToAs400
(
	@CodLista NVARCHAR(12)
)
AS

-- copio la lista (intestazione)
INSERT INTO ElencoListePrelievo_AS
SELECT		*
FROM        ElencoListePrelievo
WHERE       (CodLista = @CodLista)

-- copio le righe lista di dettaglio
INSERT INTO RigheListePrelievo_AS
SELECT		*
FROM        RigheListePrelievo
WHERE       (CodLista = @CodLista) AND Prelevato = 1

-- aggiorno le quantità passate ad AS...
UPDATE		ElencoListePrelievo_AS 
SET			QtaTot = ( SELECT SUM(Qta) AS QtaTot FROM RigheListePrelievo WHERE (CodLista =@CodLista) AND Prelevato = 1 )
WHERE       (CodLista = @CodLista)

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_LP_updateUDC
*
* modifica l'UDC in una riga di lista prelievo
*
* Steamware, S.E.L. 8 (from Stintino)
* mod: 2010.07.15
*
************************************/
create PROCEDURE stp_LP_updateUDC
(
	@Original_CodLista VARCHAR(12),
	@Original_UDC VARCHAR(50),
	@UDC VARCHAR(50)
	
)
AS

-- aggiorno lista prelievo con nuovo UDC
	UPDATE	RigheListePrelievo
	SET		UDC = @UDC, QTA = (SELECT Qta FROM ElencoCartellini WHERE UDC = @UDC)
	WHERE	CodLista = @Original_CodLista AND UDC = @Original_UDC
	
RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*(
* STORED stp_ParticolariEspByParticolare
*
* elenco distinct particolari/esponente da particoalre
*
* Steamware, S.E.L.
* mod: 2010.07.07
*
****************************************/
create PROCEDURE stp_ParticolariEspByParticolare
(
	@Particolare VARCHAR(50)
)
AS

SELECT DISTINCT Particolare, DescParticolare, Esponente, Figura, CodImballo
	FROM	(
				SELECT       TOP (1) @Particolare AS Particolare, '' AS DescParticolare, '*' AS Esponente, '' AS Figura, '' AS CodImballo
				FROM         v_particolariEsponenteFigura
                WHERE        (Particolare = @Particolare)
			 UNION
				SELECT		DISTINCT Particolare, '' AS DescParticolare, Esponente, '' AS Figura, '' AS CodImballo
				FROM		v_particolariEsponenteFigura
				WHERE		Particolare = @Particolare
			) AS derivTab
			
	
RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*(
* STORED stp_ParticolariFiguraByParticolare
*
* elenco distinct particolari/figure da particoalre
*
* Steamware, S.E.L.
* mod: 2010.07.07
*
****************************************/
create PROCEDURE stp_ParticolariFiguraByParticolare
(
	@Particolare VARCHAR(50)
)
AS
	SELECT DISTINCT Particolare, DescParticolare, Esponente, Figura, CodImballo
	FROM	(
				SELECT       TOP (1) @Particolare AS Particolare, '' AS DescParticolare, '' AS Esponente, '*' AS Figura, '' AS CodImballo
				FROM         v_particolariEsponenteFigura
                WHERE        (Particolare = @Particolare)
			 UNION
				SELECT		DISTINCT Particolare, '' AS DescParticolare, '' AS  Esponente, Figura, '' AS CodImballo
				FROM		v_particolariEsponenteFigura
				WHERE		Particolare = @Particolare
			) AS derivTab

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*(
* STORED stp_ParticolariImballoByParticolare
*
* elenco distinct particolari/imballo da particoalre
*
* Steamware, S.E.L.
* mod: 2010.07.07
*
****************************************/
create PROCEDURE stp_ParticolariImballoByParticolare
(
	@Particolare VARCHAR(50)
)
AS
	SELECT DISTINCT Particolare, DescParticolare, Esponente, Figura, CodImballo
	FROM	(
				SELECT       TOP (1) @Particolare AS Particolare, '' AS DescParticolare, '' AS Esponente, '' AS Figura, '*' AS CodImballo
				FROM         v_particolariEsponenteFigura
                WHERE        (Particolare = @Particolare)
			 UNION
				SELECT DISTINCT Particolare, '' AS DescParticolare, '' AS Esponente, '' AS Figura, CodImballo
	            FROM            v_particolariEsponenteFigura AS v_particolariEsponenteFigura_1
	            WHERE        (Particolare = @Particolare)
			) AS derivTab
	
RETURN
go

commit
go




-- mod stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_ParticolariOverviewLike
*
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe") - modalità LIKE
*
* Steamware, S.E.L.
* mod: 2010.05.31
*
****************************************/
alter PROCEDURE stp_ParticolariOverviewLike
(
	@searchVal VARCHAR(50),
	@CodCS VARCHAR(2)
)
AS

	SELECT		RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare, ISNULL(COUNT(ElencoCartellini.UDC), 0) AS NumUDC, 
				SUM(ISNULL(ElencoCartellini.Qta, 0)) AS TotQta, ISNULL(COUNT(PosizioneUdcCorrente.IdxCella), 0) AS NumInMag
	FROM        RilPro.AnagParticolari LEFT OUTER JOIN
	            ElencoCartellini ON RilPro.AnagParticolari.Particolare = ElencoCartellini.Particolare LEFT OUTER JOIN
	            PosizioneUdcCorrente ON ElencoCartellini.UDC = PosizioneUdcCorrente.UDC
	WHERE       (RilPro.AnagParticolari.CodCS = @CodCS) AND ((RilPro.AnagParticolari.Particolare LIKE '%' + @searchVal + '%') OR (RilPro.AnagParticolari.DescParticolare LIKE '%' + @searchVal + '%'))
	GROUP BY	RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*(
* STORED stp_ParticolariOverviewLike
*
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe") - modalità LIKE con testo CHE INIZIA per searchVal
*
* Steamware, S.E.L.
* mod: 2010.07.07
*
****************************************/
create PROCEDURE stp_ParticolariOverviewLikePrefix
(
	@searchVal VARCHAR(50),
	@CodCS VARCHAR(2)
)
AS

	SELECT		RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare, ISNULL(COUNT(ElencoCartellini.UDC), 0) AS NumUDC, 
				SUM(ISNULL(ElencoCartellini.Qta, 0)) AS TotQta, ISNULL(COUNT(PosizioneUdcCorrente.IdxCella), 0) AS NumInMag
	FROM        RilPro.AnagParticolari LEFT OUTER JOIN
	            ElencoCartellini ON RilPro.AnagParticolari.Particolare = ElencoCartellini.Particolare LEFT OUTER JOIN
	            PosizioneUdcCorrente ON ElencoCartellini.UDC = PosizioneUdcCorrente.UDC
	WHERE       (RilPro.AnagParticolari.CodCS = @CodCS) AND (RilPro.AnagParticolari.Particolare LIKE '%' + @searchVal + '%')
	GROUP BY	RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_posizioniGetByIdxCellaUdc
*
* ottiene una singola posizione data la cella richiesta e l'UDC (e quindi verifica se sono associate...)
*
* Steamware, S.E.L.
* mod: 2010.06.12
*
****************************************/
create PROCEDURE stp_posizioniGetByIdxCellaUdc
(
	@UDC VARCHAR(50),
	@IdxCella INT
)
AS

	SELECT		UDC, IdxCella, CodCS, DataRif
	FROM        PosizioneUdcCorrente
	WHERE       (IdxCella = @IdxCella) AND (UDC = @UDC)
RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_RigheListePrelievo_eliminaNonPrelevate
*
* aggiorna la lista di prelievo ELIMINANDO le righe non ancora prelevate (per poi rigenerare l'elenco)
*
* Steamware, S.E.L.
* mod: 2010.07.06
*
************************************/
create PROCEDURE stp_RigheListePrelievo_eliminaNonPrelevate
(
	@CodLista AS varchar(12)
)
AS

DELETE FROM RigheListePrelievo
WHERE CodLista = @CodLista AND Prelevato = 0

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_righePrelevateByUdc
*
* restituisce l'elenco delle righe delle liste di prelievo PRELEVATE dato un UDC 
*
* Steamware, S.E.L.
* mod: 2010.07.06
*
****************************************/
create PROCEDURE stp_righePrelevateByUdc
(
	@UDC VARCHAR(50)
)
AS

	SELECT	*
	FROM    RigheListePrelievo
	WHERE   (UDC = @UDC) AND Prelevato = 1

RETURN
go

commit
go


-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_S2U_getByUtente
*
* ottiene record x corrisponenda utente <-> cod soggetto
*
* Steamware, S.E.L.
* mod: 2010.07.16
*
****************************************/
create PROCEDURE stp_S2U_getByUtente
(
	@USER_NAME VARCHAR(50),
	@DOMINIO VARCHAR(30)
)
AS

SELECT		*
FROM		Soggetti2Utente
WHERE		[USER_NAME] = @USER_NAME AND DOMINIO = @DOMINIO


RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_scaricaUdc
*
* elimina dalle posizioni correnti un UDC, salvandone la posizione precedente nella tab storica (per scaricamento / spedizione)
*
* Steamware, S.E.L.
* mod: 2010.07.19
*
****************************************/
create PROCEDURE stp_scaricaUdc
(
	@CodCS VARCHAR(2),
	@UDC VARCHAR(50),
	@IdxCellaFrom INT,
	@IdxPosizione INT
)
AS

BEGIN TRAN
	-- inizio mettendo in storico la posizione attuale dell'UDC (SE esiste)
	INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine)
	(
		SELECT	UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine
		FROM	PosizioneUdcCorrente
		WHERE	UDC = @UDC AND IdxCella = @IdxCellaFrom
	)
	
	-- libero la posizione attuale dell'UDC (se c'è...)
	DELETE
	FROM	PosizioneUdcCorrente
	WHERE	UDC = @UDC AND IdxCella = @IdxCellaFrom
	
	-- aggiorno l'UDC come posizione finale...
	UPDATE	ElencoCartellini
	SET		IdxPosizione = @IdxPosizione
	WHERE	UDC = @UDC	
	
COMMIT TRAN

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_setAnnullaUdcPrelevato
*
* Steamware, E.N.
* mod: 2010.06.25
*
************************************/
create PROCEDURE stp_setAnnullaUdcPrelevato
(
	@CodLista NVARCHAR(12),
	@UDC NVARCHAR(50)
)
AS

UPDATE RigheListePrelievo
SET Prelevato=0
WHERE     (CodLista = @CodLista) AND (UDC = @UDC)

SELECT     *
FROM         RigheListePrelievo
WHERE     (CodLista = @CodLista) AND (UDC = @UDC)
go

commit
go




-- crea stored


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
*
****************************************/
create PROCEDURE stp_spostaUdc
(
	@CodCS VARCHAR(2),
	@UDC VARCHAR(50),
	@IdxCellaFrom INT,
	@IdxCellaTo INT
)
AS

BEGIN TRAN
	-- inizio mettendo in storico la posizione attuale dell'UDC (SE esiste)
	INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine)
	(
		SELECT	UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine
		FROM	PosizioneUdcCorrente
		WHERE	UDC = @UDC AND IdxCella = @IdxCellaFrom
	)
	
	-- libero la posizione attuale dell'UDC (se c'è...)
	DELETE
	FROM	PosizioneUdcCorrente
	WHERE	UDC = @UDC AND IdxCella = @IdxCellaFrom
	
	-- creo una nuova posizione per l'UDC
	INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
	VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
	
COMMIT TRAN

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_UDC_updateQty
*
* aggiorna un cartellino x la sua quantità
*
* Steamware, S.E.L.
* mod: 2010.06.12
*
****************************************/
create PROCEDURE stp_UDC_updateQty
(
	@UDC VARCHAR(20),
	@CodSoggetto VARCHAR(16),
	@CodTipoDichiaraz CHAR(1),
	@CodEvento VARCHAR(10),
	@Qta DECIMAL(10,2)
)
AS


------------------------------------------------------------------------------------------------------
-- Ciclo principale x edit record
------------------------------------------------------------------------------------------------------
BEGIN TRAN

	-- registro in StoricoCartellini
	INSERT INTO StoricoCartellini(DataEv, CodEvento, CodTipoDichiaraz, UDC, CodCS,CodCliente, RagSociale, Particolare, DescParticolare,
						DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo, CodSoggetto, 
						NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad)
	SELECT		GETDATE() AS DataEv, @CodEvento AS CodEvento, @CodTipoDichiaraz AS CodTipoDichiaraz, UDC, CodCS,
				CodCliente, RagSociale, Particolare, DescParticolare, DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura,
				DataFus, TurnoFus, CodImballo, @CodSoggetto AS CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad
	FROM        ElencoCartellini
	WHERE       (UDC = @UDC)
		
	-- modifico il record 
	UPDATE	ElencoCartellini
	SET		Qta = @Qta, ModDate = GETDATE()
	WHERE	UDC = @UDC
	
COMMIT TRAN
------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
-- restituisco la tab dati con l'udc appena inserito
------------------------------------------------------------------------------------------------------
SELECT * 
FROM ElencoCartellini
WHERE  UDC = @UDC
------------------------------------------------------------------------------------------------------

RETURN
go

commit
go




-- crea stored

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_UDC_upsertPrelevato
*
* fa un upsert sulle righe liste prelievo indicando che è stato prelevato un dato udc
* (upsert: se c'è update, se non c'è insert...)
*
* Steamware, S.E.L.
* mod: 2010.06.29
*
************************************/
create PROCEDURE stp_UDC_upsertPrelevato
(
	@CodLista NVARCHAR(12),
	@UDC NVARCHAR(50)
)
AS

-- controllo se ci sia l'UDC tra quelli proposti...
DECLARE @trovato AS BIT

SET @trovato = (SELECT	COUNT(*) AS trovati
                FROM    RigheListePrelievo
                WHERE   (CodLista = @CodLista) AND (UDC = @UDC))

-- controllo x scelta upsert

IF ( @trovato > 0) -- UPDATE!
	BEGIN
		UPDATE RigheListePrelievo
		SET Prelevato=1
		WHERE     (CodLista = @CodLista) AND (UDC = @UDC)
	END
ELSE -- INSERT!
	BEGIN
		INSERT INTO RigheListePrelievo (CodLista, UDC, Qta, Proposto, Prelevato)
		SELECT	@CodLista, @UDC, Qta, 0, 1 
		FROM    ElencoCartellini
		WHERE   (UDC = @UDC)
	END


-- restituisce la tab delle righe di prelievo della lista indicata

SELECT	*
FROM    RigheListePrelievo
WHERE   (CodLista = @CodLista) AND (UDC = @UDC)
go

commit
go

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


