create table AS400_BatchConsumoMP(
  ProgUDC      char(10)     not null constraint PK_AS400_BatchPrelievoMP primary key,
  UDC          nvarchar(50) not null,
  DataPrelFus  numeric(8,0) not null,
  TurnoPrelFus char(5)      not null,
  DestLega     char(3),
  DestTerz     char(6),
  DataInvioAs  datetime
)
go



set xact_abort on
go

begin transaction
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)
	
	-- 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
			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)
				)
		END
	
		-- controllo poi se sia cambiato il magazzino, altrimenti non lo inserisco
		IF UPDATE(IdxPosizione)
		BEGIN
			-- Prendo le posizioni di magazzino precedente e nuova 
			SET @IdxPosFrom = (SELECT IdxPosizione FROM deleted)
			SET @IdxPosTo	= (SELECT IdxPosizione FROM inserted)
			-- 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


create index i_update on As400.t_CQNOC98L(NumDocRNC,TipoInterv,CodArticolo,MatrPezzo)
go

set xact_abort on
go

begin transaction
go

create index i_update on As400.t_MOMA200F(NumSessione,NumMovimento)
go

create index i_update on As400.t_MWMV200F(NomeUtente,CodCausale,CodParticolare,CodMagazzino,QtaMovimento,DataMovimento)
go

create index i_update on As400.t_PACKL00F(CodStabilimento,ProgUDC,CodParticolare,CodContenitore,MatrContenitore)
go

alter table As400.t_XOGIX00F add
  XRPQLN numeric(6,0) not null constraint DFX_03434E4C default(0),
  XRPQLD numeric(8,0) not null constraint DFX_03452060 default(0),
  XNRETI char(10) not null constraint DFX_03434DA4 default(''),
  XCDFOR char(6) not null constraint DFX_03463944 default(''),
  XCDTER char(6) not null constraint DFX_03460E6C default(''),
  XCDPAR char(15) not null constraint DFX_0345A2BC default(''),
  XDTPRO numeric(8,0) not null constraint DFX_0345CC28 default(0),
  XTRPRO char(5) not null constraint DFX_03434DDC default(''),
  XQTPRO numeric(5,0) not null constraint DFX_034583E0 default(0),
  XDESMT char(3) not null constraint DFX_037522B8 default(''),
  XMATSC char(1) not null constraint DFX_03453C08 default(''),
  XBENQL char(1) not null constraint DFX_03E1D3BC default('')
go

alter table As400.t_XOGIX00F drop
  column nRapQual,
  column DataRapQual,
  column ProgUDC,
  column CodFor,
  column DestTerz,
  column CodLega,
  column DataPrelFus,
  column TurnoPrelFus,
  column Qta,
  column DestLega,
  column LegaScaric,
  column BenesQual
go

create index i_update on As400.t_XOGIX00F(XRPQLN,XRPQLD,XNRETI)
go

alter table As400.t_XOGIX00F drop
  constraint DFX_03E1D3BC,
  constraint DFX_03453C08,
  constraint DFX_037522B8,
  constraint DFX_034583E0,
  constraint DFX_03434DDC,
  constraint DFX_0345CC28,
  constraint DFX_0345A2BC,
  constraint DFX_03460E6C,
  constraint DFX_03463944,
  constraint DFX_03434DA4,
  constraint DFX_03452060,
  constraint DFX_03434E4C
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_accodaConsumoUdcMP
*
* Accoda alla tab Batch il consumo di un UDC
*
* Steamware, S.E.L.
* mod: 2010.10.10
*
****************************************/
create PROCEDURE stp_accodaConsumoUdcMP
(
	@UDC NVARCHAR(50),
	@DataPrelFus DATETIME,
	@TurnoPrelFus CHAR(5),
	@DestLega CHAR(3),
	@DestTerz CHAR(3)
	
)
AS

BEGIN TRAN

	-- registro movimento da riconciliare
	INSERT INTO AS400_BatchConsumoMP(ProgUDC, UDC, DataPrelFus, TurnoPrelFus, DestLega, DestTerz)
	SELECT ProgUdc, UDC, dbo.dateToAsFormat(@DataPrelFus), @TurnoPrelFus, @DestLega, @DestTerz FROM RilPro.RapQual WHERE UDC = @UDC

	-- aggiorno con data e turno di prelievo su tab RilPro (locale)
	UPDATE RilPro.RapQual
	SET DataPrelFus = dbo.dateToAsFormat(@DataPrelFus), TurnoPrelFus = @TurnoPrelFus
	WHERE UDC = @UDC

COMMIT TRAN

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_rappQualConsumabili
*
* Ottiene l'elenco dei record di rapp qualità (e quindi degli UDC) di AS non ancora consumati per range di data di approvazione
*
* Steamware, S.E.L.
* mod: 2010.10.05
*
****************************************/
alter PROCEDURE stp_rappQualConsumabili
(
	@dataFrom DATETIME,
	@dataTo DATETIME
)

AS
	-- restituisce le righe richieste
	SELECT	* 
	FROM	RilPro.RapQual 
	WHERE	((DataPrelFus IS NULL) OR (DataPrelFus = 0)) AND -- condizione sul NON aver fatto ancora il prelievo
			((DataRapQual > dbo.dateToAsFormat(@dataFrom)) AND (DataRapQual < dbo.dateToAsFormat(@dataTo))) -- cond data RQ
			AND (ISNULL(UDC,'') <>'') -- non nullo UDC, quindi stampati...
		
RETURN
go

commit
go








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