/*OXADWDB*/
/*On vire la PRIMARY KEY */
DECLARE @ConstraintName NVARCHAR(128);
DECLARE @TableName NVARCHAR(128) = 'EVENEMENTS'; -- Remplacez par le nom de votre table

-- Récupérer le nom de la contrainte de clé primaire
SELECT @ConstraintName = kc.name
FROM <OXADWDB_DATABASE>.sys.key_constraints kc
WHERE kc.type = 'PK'
  AND OBJECT_NAME(kc.parent_object_id) = @TableName;

-- Si la contrainte existe, la supprimer
IF @ConstraintName IS NOT NULL
BEGIN
    EXEC('ALTER TABLE ' + @TableName + ' DROP CONSTRAINT ' + @ConstraintName);
END

<SEPARATEUR>
--delete from  <PREFIXE_DW>EVENEMENTS
IF NOT EXISTS(SELECT * FROM <OXADWDB_DATABASE>.sys.indexes WHERE Name = 'IX_EVENEMENTS_EVE_TYPE_EVENEMENT_EVE_NUMERO_DOCUMENT') CREATE INDEX [IX_EVENEMENTS_EVE_TYPE_EVENEMENT_EVE_NUMERO_DOCUMENT] ON <PREFIXE_DW>[EVENEMENTS] ([EVE_TYPE_EVENEMENT], [EVE_NUMERO_DOCUMENT])

<SEPARATEUR>
insert into <PREFIXE_DW>EVENEMENTS (EVE_TYPE_EVENEMENT,EVE_TYPE_TRANSACTION,EVE_NUMERO_DOCUMENT,EVE_NUMERO_ORDRE,EVE_DATE_CREATION,EVE_HEURE_CREATION,EVE_CODE_EVENEMENT,EVE_UTILISATEUR,EVE_SIGNATAIRE_ATTENDU,EVE_LIBELLE_EVENEMENT,EVE_COMMENTAIRES)  
select distinct 'DA','DA',NO_DA,NUM_ORD,
CASE WHEN (DTE = ' ' OR DTE = '00000000' ) THEN NULL WHEN (DTE < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,DTE ,103) END,
HEURE,
CODE,
UTIL,
SIGNAT,
LIBELLE,
isnull(CONTMEMO,' ')
from <PREFIXE_HA>DA_EVENT evt_source <WITHNOLOCK>
left outer join <PREFIXE_HA>MEMOS <WITHNOLOCK> on NM_COMME=NODEMEMO 
left outer join <PREFIXE_HA>SUIDADAT <WITHNOLOCK>   on CODE=CODE_SDA
left outer join <PREFIXE_DW>EVENEMENTS evt on evt_source.NO_DA=evt.EVE_NUMERO_DOCUMENT and evt_source.NUM_ORD=evt.EVE_NUMERO_ORDRE  and evt.EVE_TYPE_EVENEMENT='DA'
where evt.EVE_NUMERO_DOCUMENT is null 

<SEPARATEUR>
insert into <PREFIXE_DW>EVENEMENTS (EVE_TYPE_EVENEMENT,EVE_TYPE_TRANSACTION,EVE_NUMERO_DOCUMENT,EVE_NUMERO_ORDRE,EVE_DATE_CREATION,EVE_HEURE_CREATION,EVE_CODE_EVENEMENT,EVE_UTILISATEUR,EVE_SIGNATAIRE_ATTENDU,EVE_AVENANT,EVE_LIBELLE_EVENEMENT,EVE_COMMENTAIRES)  
select distinct 'CDE','CA',NO_CDE,NUM_ORD ,
CASE WHEN (DTE = ' ' OR DTE = '00000000' ) THEN NULL WHEN (DTE < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,DTE ,103) END,
HEURE,
CODE,
UTIL,
SIGNAT,
AVNT,
LIBELLE,
isnull(CONTMEMO,' ')
from <PREFIXE_HA>CA_EVENT evt_source <WITHNOLOCK>
left outer join <PREFIXE_HA>MEMOS  <WITHNOLOCK> on NM_COMME=NODEMEMO 
left outer join <PREFIXE_HA>SUICADAT <WITHNOLOCK>    on CODE=CODE_SCD  
left outer join <PREFIXE_DW>EVENEMENTS evt on evt_source.NO_CDE=evt.EVE_NUMERO_DOCUMENT and evt_source.NUM_ORD=evt.EVE_NUMERO_ORDRE  and evt.EVE_TYPE_EVENEMENT='CDE'
where evt.EVE_NUMERO_DOCUMENT is null 

<SEPARATEUR>
insert into <PREFIXE_DW>EVENEMENTS (EVE_TYPE_EVENEMENT,EVE_TYPE_TRANSACTION,EVE_NUMERO_DOCUMENT,EVE_NUMERO_ORDRE,EVE_DATE_CREATION,EVE_HEURE_CREATION,EVE_CODE_EVENEMENT,EVE_UTILISATEUR,EVE_LIBELLE_EVENEMENT)  
select distinct 'BR','BR',NUM_BR,NUM_ORD ,
CASE WHEN (DATE_CRE = ' ' OR DATE_CRE = '00000000' ) THEN NULL WHEN (DATE_CRE < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,DATE_CRE ,103) END,
HEURE_CRE,
CODE_EVE,
UTIL,
LIBELLE
from <PREFIXE_HA>BR_EVENT evt_source <WITHNOLOCK> 
left outer join <PREFIXE_HA>SUIBRDAT <WITHNOLOCK>   on CODE_EVE=CODE_SBD
left outer join <PREFIXE_DW>EVENEMENTS evt on evt_source.NUM_BR=evt.EVE_NUMERO_DOCUMENT and evt_source.NUM_ORD=evt.EVE_NUMERO_ORDRE  and evt.EVE_TYPE_EVENEMENT='BR'
where evt.EVE_NUMERO_DOCUMENT is null  

<SEPARATEUR>
insert into <PREFIXE_DW>EVENEMENTS (EVE_TYPE_EVENEMENT,EVE_TYPE_TRANSACTION,EVE_NUMERO_DOCUMENT,EVE_NUMERO_ORDRE,EVE_DATE_CREATION,EVE_HEURE_CREATION,EVE_CODE_EVENEMENT,EVE_UTILISATEUR,EVE_SIGNATAIRE_ATTENDU,EVE_LIBELLE_EVENEMENT,EVE_COMMENTAIRES)  
select distinct 'FAC','FAC',NUM_FACT,NUM_ORD ,
CASE WHEN (DATE_CRE = ' ' OR DATE_CRE = '00000000' ) THEN NULL WHEN (DATE_CRE < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,DATE_CRE ,103) END,
HEURE_CRE,
CODE_EVE,
UTIL,
SIGNAT,
LIBELLE,
isnull(CONTMEMO,' ')
from <PREFIXE_HA>FA_EVENT evt_source <WITHNOLOCK>
left outer join <PREFIXE_HA>MEMOS <WITHNOLOCK> on NM_COMME=NODEMEMO 
left outer join <PREFIXE_HA>SUIFADAT <WITHNOLOCK>  on CODE_EVE=CODE_SFAC
left join <PREFIXE_DW>EVENEMENTS evt on evt_source.NUM_FACT=evt.EVE_NUMERO_DOCUMENT and evt_source.NUM_ORD=evt.EVE_NUMERO_ORDRE  and evt.EVE_TYPE_EVENEMENT='FAC'
where evt.EVE_NUMERO_DOCUMENT is null 

<SEPARATEUR>
/*Ajout evt des fournisseurs FOUR_EVE*/
insert into <PREFIXE_DW>EVENEMENTS (EVE_TYPE_EVENEMENT,EVE_TYPE_TRANSACTION,EVE_NUMERO_DOCUMENT,EVE_NUMERO_ORDRE,EVE_DATE_CREATION,EVE_HEURE_CREATION,EVE_CODE_EVENEMENT,EVE_UTILISATEUR,EVE_SIGNATAIRE_ATTENDU,EVE_LIBELLE_EVENEMENT,EVE_COMMENTAIRES,EVE_ID_OBJET,EVE_LIBELLE_OBJET)  
select distinct 'FRS','FRS',
abs(CONVERT(INT, CRYPT_GEN_RANDOM(8))),
NUM_ORDR,
CASE WHEN (DTE_EVE = ' ' OR DTE_EVE = '00000000' ) THEN NULL WHEN (DTE_EVE < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,DTE_EVE ,103) END,
HEU_EVE,
evt_source.COD_EVE,
ID_USER,
'' as EVE_SIGNATAIRE_ATTENDU,
l.LIBELLE,
COMMENTAIRE,
evt_source.CODE,
'' as EVE_LIBELLE_OBJET
from <PREFIXE_HA>FOUR_EVE evt_source  with (nolock) 
left outer join <PREFIXE_HA>FOUR_TYP_EVE l with (nolock)    on evt_source.COD_EVE=l.COD_EVE
left outer join <PREFIXE_DW>EVENEMENTS evt on evt_source.CODE=evt.EVE_ID_OBJET and evt_source.NUM_ORDR=evt.EVE_NUMERO_ORDRE  and evt.EVE_TYPE_EVENEMENT='FRS'
where evt.EVE_ID_OBJET is null 

<SEPARATEUR>
update evt set evt.EVE_UTILISATEUR_NOM=h.NOM
	from <PREFIXE_DW>EVENEMENTS evt, <PREFIXE_HA>HASTUTIL h where evt.EVE_UTILISATEUR=h.CODE and evt.EVE_UTILISATEUR_NOM<>h.NOM
    
<SEPARATEUR>    
update evt set evt.EVE_LIBELLE_OBJET=h.RS
	from <PREFIXE_DW>EVENEMENTS evt, <PREFIXE_HA>FOURNISS h where evt.EVE_ID_OBJET=h.CODE and evt.EVE_TYPE_TRANSACTION='FRS' and evt.EVE_LIBELLE_OBJET<>h.RS  

<SEPARATEUR>       
update evt set EVE_FOURNISSEUR_UTILISATEUR_NOM=o.NOM,EVE_FOURNISSEUR_UTILISATEUR_EMAIL=o.EMAIL
	from <PREFIXE_DW>EVENEMENTS evt ,<PREFIXE_HA>OXALINK_USER o, <PREFIXE_HA>CONTFOUR c ,<PREFIXE_HA>FOUR_EVE fe
	where evt.EVE_ID_OBJET=fe.CODE and evt.EVE_NUMERO_ORDRE=fe.NUM_ORDR and fe.ID_USER_OXALINK=o.USER_ID 
      