SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[p_acc_cts_update_type_code__cts_invoices]
	@table_id type_table_id READONLY,		-- liste des id quittances (inv_invoice_id)
	@cts_type_code ais_code_short,			-- code contentieux
	@cts_date date,							-- date contentieux
	@cts_fee ais_decimal2					-- frais de contentieux:
											-- a) si null - aucun changement au niveau des frais
											-- b) si != null - la valeur est prise en compte
AS
	

	if (@cts_fee is not null)
	begin
		/*
		DGE 27/04/2017
		Merci de penser à la modification de la procédure p_acc_cts_update_fees
		*/


		-- modification des frais ctx
		update	a
		set		a_amount = isnull(a.a_amount, 0) - isnull(i.inv_cts_fee, 0) + @cts_fee
		from	acc_accounts a
				inner join @table_id t		on	t.id = a.a_account_id 
				inner join acc_invoices i	on	i.inv_invoice_id = a.a_account_id

	end

	update	i
	set		i.inv_type_code__cts = @cts_type_code,
			i.inv_cts_date = @cts_date, 
			i.inv_cts_fee = ISNULL(@cts_fee, inv_cts_fee)
	from	acc_invoices i 
			inner join @table_id t on t.id = i.inv_invoice_id

	/*
	DGE
	Cette procedure met à jour le code contentieux (inv_type_code__cts) des quittances spécifiées dans @table_id
	par rapport aux bordereaux contentieux dans lesquels la quittance est référencée.
	*/
	
	
	-- MAJ des contrats					


	declare @policies type_table_id
	
	insert into @policies(id)
	select	distinct icp.pols_policy_id
	from	@table_id t
			inner join vw_acc_invoices_clients_policy icp on icp.inv_invoice_id = t.id
			
	exec p_acc_cts_update_type_code__cts_policies @policies
	
	-- MAJ des clients
	declare @clients type_table_id
	
	insert into @clients(id)
	select	distinct icp.act_actor_id
	from	@table_id t
			inner join vw_acc_invoices_clients_policy icp on icp.inv_invoice_id = t.id
			
	exec p_acc_cts_update_type_code__cts_clients @clients
				
	




GO
