SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[p_doc_collections_update_doc_status_by_guid]
	@document_id int,				-- id du document à mettre à jour (-1 pour tous les documents de la collection)
	@guid varchar(64),				-- guid
	@status_code ais_code_short,	-- code statut à positionner
	@execution_utc_date datetime,	-- date d'exécution
	@error varchar(512)				-- erreur
AS

	/*
	DGE 01/03/2016

	Si document_id = -1: tous les documents de la collection, avec le même guid, sont impactés.

	*/

	set nocount on; 

	update	d
	set		d.dcd_status_code =	@status_code,
			d.dcd_mail_utc_date = @execution_utc_date,
			d.dcd_obs = case @status_code
						when 'SE' then @error
						else null
						END
	from	doc_collections_docs d
	where	-- uniquement les documents concernés par le lot de mailing
			d.dcd_mail_guid = @guid
			-- MAJ tous les documents, si -1 (initialisation KO du smtp, par exemple)
	and		((@document_id <0) or d.dcd_document_id = @document_id)
	
	/*
	On a une liste de N documents.
	3 documents sont exlus du mailing car (par exemple) le client n'a pas donné son autorisation.
	Pour les autres N-3 documents, il y a un plantage au moment de l'initialisation du SMTP.
	La condition suivante sert à éviter la MAJ des 3 documents avec le message d'erreur "initialisation smtp"

	Elle bloque également le traitement des documents L - locked.
	*/
	and		d.dcd_status_code not in ( 'SE', 'L')

			

GO
