set xact_abort on;
go

begin transaction;
go

alter table PrintJobQueue add
  dtLastTry datetime;
go

exec sp_addextendedproperty 'MS_Description', 'data/ora ultimo tentativo di stampa (x check se zombie process)', 'SCHEMA', 'dbo', 'TABLE', 'PrintJobQueue', 'COLUMN', 'dtLastTry';
go

set ANSI_NULLS on;
go

/***************************************
* STORED stp_PJQ_chiudiZombie
*
* aggiorna la tabella indicando come zoombie processi che abbiano dtLastTry antecedente a @dtLastTryMax e stato=0
*
* Steamware, S.E.L.
* mod: 2013.10.03
*
****************************************/
create PROCEDURE stp_PJQ_chiudiZoombie
(
	@dtLastTryMax	DATETIME
)
AS

UPDATE  PrintJobQueue
SET     stato = -1
WHERE   stato = 0 AND dtLastTry < @dtLastTryMax
go

/***************************************
* STORED stp_PJQ_updateStato
*
* aggiorna stato di un job di stampa in tabella gestione coda (stato = 0) x un dato UDC
* indicando che ho tentato di stamparlo (x sapere che non è un processo zombie)
*
* Steamware, S.E.L.
* mod: 2013.10.03
*
****************************************/
create PROCEDURE stp_PJQ_updateLastTry
(
	@UDC VARCHAR(50)
)
AS

UPDATE  PrintJobQueue
SET     dtLastTry = GETDATE()
WHERE   stato = 0 AND UDC = @UDC
go

/***************************************
* STORED stp_PJQ_insert
*
* inserisce un job di stampa in tabella gestioen coda
*
* Steamware, S.E.L.
* mod: 2013.07.23
*
****************************************/
alter PROCEDURE stp_PJQ_insert
(
	@TipoCart VARCHAR(250),
	@UDC VARCHAR(50),
	@prtName VARCHAR(500)
)
AS

INSERT INTO PrintJobQueue(TipoCart, UDC, prtName, dtStart, dtLastTry, stato)
VALUES  (@TipoCart, @UDC, @prtName, GETDATE(), GETDATE(), 0)
go

commit;
go


set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/***************************************
* STORED stp_PJQ_chiudiZombie
*
* aggiorna la tabella indicando come zoombie processi che abbiano dtLastTry antecedente a @dtLastTryMax e stato=0
*
* Steamware, S.E.L.
* mod: 2013.10.03
*
****************************************/
alter PROCEDURE stp_PJQ_chiudiZoombie
(
	@dtLastTryMax	DATETIME
)
AS

UPDATE  PrintJobQueue
SET     stato = -1
WHERE   stato = 0 AND dtLastTry < @dtLastTryMax
go

/***************************************
* STORED stp_PJQ_insert
*
* inserisce un job di stampa in tabella gestioen coda
*
* Steamware, S.E.L.
* mod: 2013.07.23
*
****************************************/
alter PROCEDURE stp_PJQ_insert
(
	@TipoCart VARCHAR(250),
	@UDC VARCHAR(50),
	@prtName VARCHAR(500)
)
AS

INSERT INTO PrintJobQueue(TipoCart, UDC, prtName, dtStart, dtLastTry, stato)
VALUES  (@TipoCart, @UDC, @prtName, GETDATE(), GETDATE(), 0)
go

/***************************************
* STORED stp_PJQ_updateStato
*
* aggiorna stato di un job di stampa in tabella gestione coda (stato = 0) x un dato UDC
* indicando che ho tentato di stamparlo (x sapere che non è un processo zombie)
*
* Steamware, S.E.L.
* mod: 2013.10.03
*
****************************************/
alter PROCEDURE stp_PJQ_updateLastTry
(
	@UDC VARCHAR(50)
)
AS

UPDATE  PrintJobQueue
SET     dtLastTry = GETDATE()
WHERE   stato = 0 AND UDC = @UDC
go

commit;
go





update PrintJobQueue
set dtLastTry = dtStart
where dtLastTry IS NULL

SELECT * FROM PrintJobQueue
GO

-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(570, GETDATE())
GO
SELECT TOP 5 * FROM LogUpdateDb ORDER BY Versione DESC
GO
