/*Spec 5210 10/2025 + 5232 Ajout pour les Termes de paiement (TP) 	En-têtes de TP, par Commande, 	avec des informations sur : Société, Centre de facturation, Fournisseur. */

drop table if exists <PREFIXE_DW>TERMES_PAIEMENT

<SEPARATEUR>
/*<VERSION_MINIMUM>12.02</VERSION_MINIMUM>*/
select 
	/* Champs disponibles sur l'etat */
	cae.CODE_STE			as TP_CODE_SOCIETE,  
	max(soc.RAIS_SOC)		as TP_RAISON_SOCIALE_SOCIETE, 
	cae.CTR_FACTU			as TP_CODE_CENTRE_FACTURATION, 
	max(ctrfac.RAIS_SOC)	as TP_RAISON_SOCIALE_CENTRE_FACTURATION, 
	cae.CODE_FOU			as TP_CODE_FOURNISSEUR, 
	max(fou.RS)				as TP_RAISON_SOCIALE_FOURNISSEUR, 
	tpe.NUM_CDE				as TP_NUMERO_CDE,
	max(tpe.LIBELLE)		as TP_LIBELLE, 
	max(tpe.DESCRIPTIF)		as TP_DESCRIPTIF, 
	max(cast(tpe.MNT_BASE * tpe.POURC_TP /100 as decimal(15,2)))	as TP_MONTANT_A_PAYER, 
	0																as TP_MONTANT_DEJA_FACTURE, 
	max(cae.DEVISE)													as TP_DEVISE_CDE,
	max(try_convert(datetime,DATELIBFACT))							as TP_DATE_ECHEANCE,	/* Date de "libération" de la facture d'acompte */
	cast('' as varchar(30))											as TP_STATUT,			/* A venir | Réalisé (par défaut) | Action à effectuer | */ 
	/* Champs techniques internes */
	tpe.NUM_TP as TP_NUMERO_TP 
into <PREFIXE_DW>TERMES_PAIEMENT 
from <PREFIXE_HA>TP_ENT tpe with(nolock) 
	inner join <PREFIXE_HA>CA_ENTET cae with(nolock) on cae.NO_CDE = tpe.NUM_CDE 
	inner join <PREFIXE_HA>FOURNISS fou with(nolock) on fou.CODE = cae.CODE_FOU
	inner join <PREFIXE_HA>SOCIETE soc with(nolock) on soc.CODE_STE = cae.CODE_STE 
	left outer join <PREFIXE_HA>CENTRE ctrfac with(nolock) on ctrfac.CODE_CTR = cae.CTR_FACTU 
where tpe.TYPEOBJ = 'CA_ENTET' 
group by cae.CODE_STE, cae.CTR_FACTU, cae.CODE_FOU, tpe.NUM_CDE, tpe.NUM_TP  

<SEPARATEUR>
/*<VERSION_MINIMUM>12.02</VERSION_MINIMUM>*/
update t   
	set TP_MONTANT_DEJA_FACTURE = isnull((
		select sum(pos.MNT_DE_FA)   
			from <PREFIXE_HA>TP_POS pos with(nolock) 
			where pos.TYPEOBJ = 'CA_ENTET' and pos.NUM_CDE = t.TP_NUMERO_CDE and pos.NUM_TP = t.TP_NUMERO_TP
		), 0) 
	from <PREFIXE_DW>TERMES_PAIEMENT  t 

<SEPARATEUR>
/*<VERSION_MINIMUM>12.02</VERSION_MINIMUM>*/    
update t   
	set TP_STATUT = 'Facturable'
	from <PREFIXE_DW>TERMES_PAIEMENT t 
		inner join <PREFIXE_HA>TP_ENT tpe with(nolock) on tpe.TYPEOBJ = 'CA_ENTET' and tpe.NUM_CDE = t.TP_NUMERO_CDE and tpe.NUM_TP = t.TP_NUMERO_TP
	where tpe.TP_FACT = 0x54 
		and t.TP_STATUT = '' 

<SEPARATEUR>
/*<VERSION_MINIMUM>12.02</VERSION_MINIMUM>*/
update t   
	set TP_STATUT = 'Action A effectuer'
	from <PREFIXE_DW>TERMES_PAIEMENT t 
		inner join <PREFIXE_HA>TP_EVT evt with(nolock) on evt.TYPEOBJ = 'CA_ENTET' and evt.NUM_CDE = t.TP_NUMERO_CDE and evt.NUM_TP = t.TP_NUMERO_TP 
		left outer join <PREFIXE_HA>TYEVTSTP typ with(nolock) on typ.CODE_EVT = evt.EVENEMENT 
	where isnull(typ.HAPLUS,0x46) = 0x46 -- evt manuel
		and evt.EVT_OK = 0x46 
		and t.TP_STATUT = '' 

<SEPARATEUR>
/*<VERSION_MINIMUM>12.02</VERSION_MINIMUM>*/
update t   
	set TP_STATUT = 'A venir'
	from <PREFIXE_DW>TERMES_PAIEMENT t 
		inner join <PREFIXE_HA>TP_EVT evt with(nolock) on evt.TYPEOBJ = 'CA_ENTET' and evt.NUM_CDE = t.TP_NUMERO_CDE and evt.NUM_TP = t.TP_NUMERO_TP 
		left outer join <PREFIXE_HA>TYEVTSTP typ with(nolock) on typ.CODE_EVT = evt.EVENEMENT 
	where isnull(typ.HAPLUS,0x46) = 0x54 -- evt automatique
		and evt.EVT_OK = 0x46 
		and t.TP_STATUT = '' 

<SEPARATEUR>
/*<VERSION_MINIMUM>12.02</VERSION_MINIMUM>*/
update t   
	set TP_STATUT = 'Realise'
	from <PREFIXE_DW>TERMES_PAIEMENT t 
	where t.TP_STATUT = '' 


    



