SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE procedure [dbo].[p_pr_products_list_by_branch_currency_introducer]
	@branch_id		int,					-- entité juridique de la session
	@user_code		ais_code_medium,		-- login
	@introducer_id	int,					-- apporteur attaché à l'utilisateur
	@currency_code	ais_code_short,			-- code devise
	@actor_id		int						-- apporteur
as

	set nocount on;

	declare @products_table TABLE(product_code ais_code_short not null)

	insert into @products_table (product_code)
	select	product_code
	from	pr_products p
			/*
			DGE 20/04/2017
			0000702: Affichage des produits en fonction des droits d'accès- bordereau compagnie
			On n'applique pas des filtres par utilisateur/apporteur en ce qui concerne l'affichage des produits
			inner join dbo.f_pr_products(@branch_id, @user_code, @introducer_id, @currency_code, null) on product_code = p.prd_product_code
			inner join pr_products_introducers i	on	i.prdint_product_code = p.prd_product_code
													and	i.prdint_branch_id = @branch_id
													and	i.prdint_introducer_id = @actor_id
			*/
			inner join dbo.f_pr_products(@branch_id, '%', 0, @currency_code, null) on product_code = p.prd_product_code
			inner join pr_products_introducers i	on	i.prdint_product_code = p.prd_product_code
													and	i.prdint_branch_id = @branch_id
													and	i.prdint_introducer_id = @actor_id
	
	
	/* 
	Liste des produits utilisés par l'apporteur sélectionné
	*/		
	select	distinct p.prd_product_code, p.prd_l1, p.prd_l2, p.prd_l3 
	from	pr_products p
			inner join @products_table pt on pt.product_code = p.prd_product_code
	
	/* 
	Liste des variables (et leur type) utilisées par l'apporteur sélectionné
	- freeze = 0;
	- ignored = 0
	On aurait pu utiliser la table pr_families_variables pour déterminer la liste des variables. 
	On a préféré l'utilisation de pr_products_variables pour avoir accès aux informations prdv_ignored et prdv_retroceded
	*/	
	select	distinct nv.nmpv_variable_code, nv.nmpv_l1, nv.nmpv_l2, nv.nmpv_l3, p.prd_product_code,
			nvt.nmpvt_l1, nvt.nmpvt_l2, nvt.nmpvt_l3
	from	nm_products_variables nv
			inner join pr_products_variables pv on pv.prdv_variable_code = nv.nmpv_variable_code  and pv.prdv_retroceded != 0
			-- cette table contient uniquement des exceptions
			--inner join pr_products_variables_introducers pvi on pvi.prdvi_variable_id = pv.prdv_variable_id
			inner join pr_products p on p.prd_product_code = pv.prdv_product_code 
			inner join @products_table pt on pt.product_code = p.prd_product_code
			inner join nm_products_variables_types nvt on nvt.nmpvt_type_code = nv.nmpv_type_code 
	where	/*pvi.prdvi_introducer_id = @introducer_id 
	and		*/pv.prdv_ignored = 0
	







GO
