/*<OXADWDB>*/
/*req only on OXADWDB DB*/
/*===============BLOC CA============================*/
/*===============CREATION Table DETAILLE CONTENANT LES ENTETES DE CA ===============*/
/*===============DROP TABLE CA_ENTETES===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CA_ENTETES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE CA_ENTETES
END

<SEPARATEUR>
/*==============CREATION TABLE CA_ENTETES CONTENANT LES ENTETES CA: CA_ENTETES========*/
SELECT DOC_NUMERO_CDE              = ca.DOC_NUMERO_CDE,
       DOC_AVENANT                 = MAX(ca.DOC_AVENANT), 
       DOC_DEVISE_CDE              = MAX(ca.DOC_DEVISE_CDE),
       DOC_CODE_CE_CDE             = MAX(ca.DOC_CODE_CE_CDE),
       DOC_CODE_SOCIETE            = MAX(ca.DOC_CODE_SOCIETE),
       SOC_RAISON_SOCIALE          = MAX(soc.SOC_RAISON_SOCIALE),
       SOC_CODE_GROUPE             = MAX(soc.SOC_CODE_GROUPE),
       DOC_DATE_CREATION_CDE       = MAX(ca.DOC_DATE_CREATION_CDE),
       DOC_DATE_PERIODE_CDE        = MAX(ca.DOC_DATE_PERIODE_CDE),
       DOC_DATE_VALIDATION_CDE     = MAX(ca.DOC_DATE_VALIDATION_CDE), 
       DOC_DELAIS_SIGNATURE_JOURS_CDE = MAX(DOC_DELAIS_SIGNATURE_JOURS_CDE), 
       DOC_DATE_IMP_CDE            = MAX(ca.DOC_DATE_IMP_CDE),
       DOC_DATE_MEL_CDE            = MAX(ca.DOC_DATE_MEL_CDE),
       DOC_DATE_SIGNATURE_CDE      = MAX(ca.DOC_DATE_SIGNATURE_CDE),
       DOC_DATE_AR_CDE             = MAX(ca.DOC_DATE_AR_CDE),
       DOC_AR_CDE                  =  CASE WHEN ( max(ca.DOC_DATE_AR_CDE) >'19500101' ) THEN 1  ELSE 0 END   ,
       DOC_TYPE_ACHAT_CDE          = MAX(ca.DOC_TYPE_ACHAT_CDE),
       DOC_TYPE_ACHAT_LIBELLE_CDE = MAX(ca.DOC_TYPE_ACHAT_LIBELLE_CDE),
       DOC_ETAT_CDE                = MAX(ca.DOC_ETAT_CDE),
       DOC_ETAT_FINANCIER	   = MAX(ca.DOC_ETAT_FINANCIER),	
       DOC_CODE_FOURNISSEUR        = MAX(ca.DOC_CODE_FOURNISSEUR),
       DOC_CODE_ACHETEUR           = MAX(ca.DOC_CODE_ACHETEUR),
       DOC_CODE_SECTION_IMPUTATION = MAX(e.SECTIMP),
       SI_DESIGNATION              = MAX(sec.SI_DESIGNATION),
       DOC_TYPE_DOCUMENT_CDE       = MAX(ca.DOC_TYPE_DOCUMENT_CDE),
       DOC_OBJET_CDE		   = MAX(ca.DOC_OBJET_CDE), 	
       DOC_TITRE_CDE                =MAX(ca.DOC_TITRE_CDE),	
       DOC_BLOC_NOTE_CDE            =max(DOC_BLOC_NOTE_CDE),
       DOC_LANGUE_CDE		   = MAX(ca.DOC_LANGUE_CDE), 	
       DOC_CODE_MODE_PAIEMENT_CDE  = MAX(ca.DOC_CODE_MODE_PAIEMENT_CDE), 	
       DOC_MOTIF_AVENANT_CDE       = MAX(ca.DOC_MOTIF_AVENANT_CDE), 
       CE_PAYS                     = MAX(ce.CE_PAYS),
       FRS_RAISON_SOCIALE          = MAX(frs.FRS_RAISON_SOCIALE),
       FRS_PAYS                    = MAX(frs.FRS_PAYS),
       FRS_CODE_REGR               = MAX(frs.FRS_CODE_REGR),
       ACH_NOM_ACHETEUR            = MAX(ach.ACH_NOM_ACHETEUR),
       DOC_CODE_DEMANDEUR          = MAX(DOC_CODE_DEMANDEUR),
       DEM_NOM_DEMANDEUR           = MAX(dem.DEM_NOM_DEMANDEUR),
       DOC_BUDGET_ENT_DA           = MAX(DOC_BUDGET_ENT_DA),
       DOC_BUDGET_LIG_DA           = sum(DOC_BUDGET_LIG_DA),
	count( distinct ca.DOC_NUMERO_LIGNE_CDE) as NB_LIGNE_CDE,
       MONTANT                     = sum(ca.DOC_MONTANT_LIGNE_CDE)  ,
       MONTANT_DEV		             = sum(ca.DOC_MONTANT_LIGNE_CDE_DEV) ,
       MONTANT_DEJA_FACTURE        = max(DOC_MONTANT_DEJA_FACTURE_CDE) ,
       MONTANT_TTC  	           = sum(ca.DOC_MONTANT_LIGNE_TTC_CDE),
	   MONTANT_TTC_DEV			   = sum(ca.DOC_MONTANT_LIGNE_TTC_DEV_CDE)	
into CA_ENTETES
  FROM      DOCUMENTS ca        with (NOLOCK) 
  LEFT JOIN SOCIETES soc        with (NOLOCK) ON ca.DOC_CODE_SOCIETE      = soc.SOC_CODE_SOCIETE
  LEFT JOIN FOURNISSEURS frs    with (NOLOCK) ON ca.DOC_CODE_FOURNISSEUR  = frs.FRS_CODE_FOURNISSEUR
  LEFT JOIN CENTRES_EMISSION ce with (NOLOCK) ON ca.DOC_CODE_CE_CDE       = ce.CE_CODE_CENTRE_EMETTEUR
  LEFT JOIN ACHETEURS ach       with (NOLOCK) ON ca.DOC_CODE_ACHETEUR     = ach.ACH_CODE_ACHETEUR
  LEFT JOIN DEMANDEURS dem       with (NOLOCK) ON ca.DOC_CODE_DEMANDEUR   = dem.DEM_CODE_DEMANDEUR
  LEFT JOIN <PREFIXE_HA>CA_ENTET e  with (NOLOCK) ON ca.DOC_NUMERO_CDE    = e.NO_CDE
  LEFT JOIN SECTIONS_IMPUTATIONS sec with (NOLOCK) ON e.CODE_STE=sec.SI_CODE_SOCIETE and e.SECTIMP = sec.SI_CODE_SECTION_IMPUTATION
 WHERE ca.DOC_TYPE_TRANSACTION = 'CA'
   AND ca.DOC_AVENANT          = (SELECT MAX(ca2.DOC_AVENANT) 
                                    FROM DOCUMENTS ca2 with (NOLOCK)
                                   WHERE ca2.DOC_TYPE_TRANSACTION = 'CA'
                                     AND ca2.DOC_NUMERO_CDE       = ca.DOC_NUMERO_CDE)
GROUP BY ca.DOC_NUMERO_CDE 
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON CA_ENTETES (DOC_NUMERO_CDE)

<SEPARATEUR> 
/*===============CREATION Table DETAILLE CONTENANT LES LIGNES DE CA ET TOUTES LES COL DE DOCUMENTS===============*/
/*===============DROP TABLE CA_LIGNES_DETAIL===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CA_LIGNES_DETAIL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE CA_LIGNES_DETAIL
END
<SEPARATEUR>
/*==============CREATION TABLE CA_LIGNES_DETAIL CONTENANT LES CA========*/
SELECT * INTO CA_LIGNES_DETAIL FROM DOCUMENTS where DOC_TYPE_TRANSACTION='CA'
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON CA_LIGNES_DETAIL (DOC_NUMERO_CDE,DOC_NUMERO_LIGNE_CDE)
<SEPARATEUR> 
/*===============CREATION table DETAILLE CONTENANT LES LIGNES DE CA ET UNIQUEMENT LES COL DE CA===============*/
/*===============DROP TABLE CA_LIGNES===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CA_LIGNES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE CA_LIGNES
END
<SEPARATEUR>
/*==============CREATION TABLE CA_LIGNES CONTENANT LES CA: CA_LIGNES========*/
SELECT DOC_TYPE_TRANSACTION, 
DOC_NUMERO_CDE,
DOC_NUMERO_LIGNE_CDE,
DOC_AVENANT,
DOC_DESIGNATION_ARTICLE_CDE,
DOC_DESIGNATION_COMP_CDE, 
DOC_PRIX_UNITAIRE_CDE, 
DOC_QUANTITE_CDE,
DOC_REMISE_CDE,
DOC_MONTANT_LIGNE_CDE, 
DOC_MONTANT_LIGNE_TTC_CDE,
DOC_MONTANT_LIGNE_CDE_DEV,
DOC_MONTANT_LIGNE_TTC_DEV_CDE,
DOC_DATE_CREATION_CDE,
DOC_DATE_PERIODE_CDE,
DOC_DATE_VALIDATION_CDE, 
DOC_DATE_AR_CDE,
DOC_AR_CDE   =  CASE WHEN ( DOC_DATE_AR_CDE >'19500101' ) THEN 1  ELSE 0 END   ,
DOC_DATE_LIVRAISON_CDE, 
DOC_DATE_IMP_CDE,
DOC_DATE_MEL_CDE,
DOC_OBJET_CDE,
DOC_ETAT_CDE,
DOC_TITRE_CDE,
DOC_TYPE_ACHAT_CDE,
DOC_TYPE_ACHAT_LIBELLE_CDE,
DOC_ETAT_FINANCIER,
DOC_DEVISE_CDE, 
DOC_CODE_MODE_PAIEMENT_CDE, 
DOC_CODE_MODE_LIVRAISON_CDE,
DOC_LIBELLE_MODE_LIVRAISON_CDE,
DOC_CODE_CONDITION_PAIE_CDE,
DOC_LIBELLE_CONDITION_PAIE_CDE,
DOC_STATUT_CDE,
DOC_STATUT_LIGNE_CDE,
DOC_ZONE_LIBRE_NUMERIQUE, 
DOC_TYPE_DOCUMENT_CDE, 
DOC_LIBELLE_DOCUMENT_CDE, 
DOC_TVA_CDE,
DOC_CODE_CE_CDE,
DOC_CODE_CL_CDE, 
DOC_QUANTITE_UNITE_ARTICLE_CDE, 
DOC_QTE_TOT_LIG_CDE,
DOC_QTE_TOT_LIG_UA_CDE,
DOC_CODE_PAYS_CDE,
DOC_LIBELLE_PAYS_CDE, 
DOC_MODE_TRANSPORT_CDE,
DOC_DATE_SIGNATURE_CDE,
DOC_CODE_FOURNISSEUR,
DOC_CODE_ARTICLE,
DOC_CODE_ACCORD_CADRE,
DOC_CODE_SOUS_CPTE_ANALYSE,
DOC_CODE_COMPLEMENTAIRE,
DOC_CODE_SECTION_IMPUTATION,
SI_DESIGNATION    ,
DOC_CODE_SOCIETE,
DOC_CODE_SIGNATAIRE,
DOC_CODE_MAGASINIER,
DOC_CODE_ACHETEUR,
DOC_CODE_DEMANDEUR,
dem.DEM_NOM_DEMANDEUR,
DOC_CODE_SOUS_FAMILLE,
DOC_CODE_TRANSITAIRE,
DOC_CODE_ORGANISME,
DOC_NUMERO_LICENCE,
DOC_BUDGET_ENT_DA,
DOC_BUDGET_LIG_DA,
DOC_ID_DATE,
DOC_MAGIC_DSTR_LIVRAISON
INTO CA_LIGNES FROM DOCUMENTS ca 
LEFT JOIN DEMANDEURS dem       with (NOLOCK) ON ca.DOC_CODE_DEMANDEUR   = dem.DEM_CODE_DEMANDEUR
LEFT JOIN SECTIONS_IMPUTATIONS sec with (NOLOCK) ON ca.DOC_CODE_SOCIETE=sec.SI_CODE_SOCIETE and ca.DOC_CODE_SECTION_IMPUTATION = sec.SI_CODE_SECTION_IMPUTATION
where DOC_TYPE_TRANSACTION='CA'
<SEPARATEUR>

CREATE    CLUSTERED  INDEX [IDX_1] ON CA_LIGNES (DOC_NUMERO_CDE,DOC_NUMERO_LIGNE_CDE)
<SEPARATEUR> 

/*===============CREATION DATAMART DETAILLE GROUPE + JOIN===============*/
/*===============DROP TABLE DATAMART_CA_4===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DATAMART_CA_4]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE DATAMART_CA_4
END  
<SEPARATEUR> 
/*==============CREATION TABLE DATAMART_CA_4 CONTENANT LES CA: DATAMART_CA_4========*/
/*SELECT DOC_NUMERO_CDE              = ca.DOC_NUMERO_CDE,
       DOC_AVENANT                 = MAX(ca.DOC_AVENANT), 
       DOC_DEVISE_CDE              = MAX(ca.DOC_DEVISE_CDE),
       DOC_CODE_CE_CDE             = MAX(ca.DOC_CODE_CE_CDE),
       DOC_CODE_SOCIETE            = MAX(ca.DOC_CODE_SOCIETE),
       SOC_RAISON_SOCIALE          = MAX(soc.SOC_RAISON_SOCIALE),
       SOC_CODE_GROUPE             = MAX(soc.SOC_CODE_GROUPE),
       DOC_CODE_SECTION_IMPUTATION = MAX(ca.DOC_CODE_SECTION_IMPUTATION),
       DOC_DATE_CREATION_CDE       = MAX(ca.DOC_DATE_CREATION_CDE),
       DOC_DATE_PERIODE_CDE        = MAX(ca.DOC_DATE_PERIODE_CDE),
       DOC_DATE_IMP_CDE            = MAX(ca.DOC_DATE_IMP_CDE),
       DOC_ETAT_CDE                = MAX(ca.DOC_ETAT_CDE),
       DOC_TYPE_ACHAT_CDE          = MAX(ca.DOC_TYPE_ACHAT_CDE),
       DOC_TYPE_ACHAT_LIBELLE_CDE  = MAX(ca.DOC_TYPE_ACHAT_LIBELLE_CDE),
       DOC_CODE_FOURNISSEUR        = MAX(ca.DOC_CODE_FOURNISSEUR),
       DOC_CODE_SOUS_FAMILLE       = MAX(ca.DOC_CODE_SOUS_FAMILLE),
       DOC_CODE_ACHETEUR           = MAX(ca.DOC_CODE_ACHETEUR),
       DOC_CODE_ARTICLE            = MAX(ca.DOC_CODE_ARTICLE),
       DOC_TYPE_DOCUMENT_CDE       = MAX(ca.DOC_TYPE_DOCUMENT_CDE),
       CE_PAYS                     = MAX(ce.CE_PAYS),
       FRS_RAISON_SOCIALE          = MAX(frs.FRS_RAISON_SOCIALE),
       FRS_PAYS                    = MAX(frs.FRS_PAYS),
       FRS_CODE_REGR               = MAX(frs.FRS_CODE_REGR),
       SF_CODE_FAMILLE             = MAX(sf.SF_CODE_FAMILLE),
       SF_DESIGNATION              = MAX(sf.SF_DESIGNATION),
       FA_DESIGNATION              = MAX(fam.FA_DESIGNATION),
       ACH_NOM_ACHETEUR            = MAX(ach.ACH_NOM_ACHETEUR),
       
	count(distinct ca.DOC_NUMERO_LIGNE_CDE) as NB_LIGNE_CDE,
       MONTANT                     = sum(ca.DOC_MONTANT_LIGNE_CDE)  ,
       MONTANT_DEV                     = sum(ca.DOC_MONTANT_LIGNE_CDE_DEV) 	
into DATAMART_CA_4
  FROM      DOCUMENTS ca        with (NOLOCK) 
  LEFT JOIN SOCIETES soc        with (NOLOCK) ON ca.DOC_CODE_SOCIETE      = soc.SOC_CODE_SOCIETE
  LEFT JOIN FOURNISSEURS frs    with (NOLOCK) ON ca.DOC_CODE_FOURNISSEUR  = frs.FRS_CODE_FOURNISSEUR
  LEFT JOIN SOUS_FAMILLES sf    with (NOLOCK) ON ca.DOC_CODE_SOUS_FAMILLE = sf.SF_CODE_SOUS_FAMILLE
  LEFT JOIN CENTRES_EMISSION ce with (NOLOCK) ON ca.DOC_CODE_CE_CDE       = ce.CE_CODE_CENTRE_EMETTEUR
  LEFT JOIN FAMILLES fam        with (NOLOCK) ON sf.SF_CODE_FAMILLE       = fam.FA_CODE_FAMILLE
  LEFT JOIN ACHETEURS ach       with (NOLOCK) ON ca.DOC_CODE_ACHETEUR     = ach.ACH_CODE_ACHETEUR
  LEFT JOIN ARTICLES art        with (NOLOCK) ON ca.DOC_CODE_ARTICLE      = art.ART_CODE_ARTICLE
 WHERE ca.DOC_TYPE_TRANSACTION = 'CA'
   AND ca.DOC_AVENANT          = (SELECT MAX(ca2.DOC_AVENANT) 
                                    FROM DOCUMENTS ca2 with (NOLOCK)
                                   WHERE ca2.DOC_TYPE_TRANSACTION = 'CA'
                                     AND ca2.DOC_NUMERO_CDE       = ca.DOC_NUMERO_CDE)
 GROUP BY ca.DOC_NUMERO_CDE,DOC_CODE_ARTICLE,ca.DOC_CODE_SOUS_FAMILLE,ca.DOC_CODE_SECTION_IMPUTATION */
<SEPARATEUR>

/*===============CREATION DATAMART DETAILLE UNIQUEMENT CERTAINES COL===============*/
/*===============DROP TABLE DATAMART_CA_5===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DATAMART_CA_5]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE DATAMART_CA_5
END
<SEPARATEUR>

/*==============CREATION TABLE DATAMART_CA_5 CONTENANT LES CA: DATAMART_CA_5========*/
/*SELECT
DOC_TYPE_TRANSACTION,
DOC_CODE_PAYS_CDE,
DOC_DEVISE_CDE,
DOC_CODE_SECTION_IMPUTATION,
DOC_DATE_CREATION_CDE ,
DOC_DATE_VALIDATION_CDE ,
DOC_DATE_IMP_CDE,
DOC_ETAT_CDE,
DOC_TYPE_ACHAT_CDE,
DOC_TYPE_ACHAT_LIBELLE_CDE,
DOC_NUMERO_CDE,
DOC_NUMERO_LIGNE_CDE,DOC_AVENANT,
DOC_DESIGNATION_ARTICLE_CDE,
DOC_PRIX_UNITAIRE_CDE,
DOC_QUANTITE_CDE,
DOC_REMISE_CDE,
DOC_MONTANT_LIGNE_CDE,
DOC_MONTANT_LIGNE_CDE_DEV,
DOC_CODE_ACHETEUR,
DOC_CODE_CE_CDE,
DOC_CODE_FOURNISSEUR,
DOC_CODE_SOUS_FAMILLE,
DOC_NUMERO_DOC,
DOC_CODE_SOCIETE

INTO DATAMART_CA_5
FROM DOCUMENTS  
where DOC_TYPE_TRANSACTION='CA'*/
<SEPARATEUR>

/*===============BLOC DA===========================================================================*/
/*===============CREATION table DA ENTETES===============*/
/*===============DROP TABLE DA_ENTETES===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DA_ENTETES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE DA_ENTETES
END  
<SEPARATEUR>

/*==============CREATION TABLE DA_ENTETES CONTENANT LES DA ========*/
select	DOC_NUMERO_DA		= Max(da.DOC_NUMERO_DA),
	DOC_DEVISE_DA		= Max(da.DOC_DEVISE_DA),
	DOC_CODE_SOCIETE	= Max(da.DOC_CODE_SOCIETE),
	SOC_RAISON_SOCIALE	= Max(soc.SOC_RAISON_SOCIALE),
	SOC_CODE_GROUPE		= Max(soc.SOC_CODE_GROUPE),
	DOC_DATE_EMISSION_DA	= Max(da.DOC_DATE_EMISSION_DA),
	DOC_DATE_VALIDATION_DA	= Max(da.DOC_DATE_VALIDATION_DA),
  DOC_DATE_TRAITEMENT_DA	= Max(da.DOC_DATE_TRAITEMENT_DA),
	DOC_DATE_SIGNATURE_DA   = Max(da.DOC_DATE_SIGNATURE_DA),
	DOC_STATUT_DA		= Max(da.DOC_STATUT_DA),
	DOC_TYPE_DA		= Max(da.DOC_TYPE_DA),
	DOC_TYPE_DOCUMENT_DA	= Max(da.DOC_TYPE_DOCUMENT_DA),
	DOC_CENTRE_LIVRAISON_DA = Max(da.DOC_CENTRE_LIVRAISON_DA),
	DOC_CODE_FOURNISSEUR	= Max(da.DOC_CODE_FOURNISSEUR),
	DOC_CODE_ACHETEUR	= Max(da.DOC_CODE_ACHETEUR),
	ACH_NOM_ACHETEUR	= Max(ach.ACH_NOM_ACHETEUR),
  DOC_CODE_DEMANDEUR =MAX(da.DOC_CODE_DEMANDEUR),
  DEM_NOM_DEMANDEUR = MAX(dem.DEM_NOM_DEMANDEUR),
	DOC_BUDGET_ENT_DA	= Max(da.DOC_BUDGET_ENT_DA),
  DOC_BUDGET_LIG_DA = sum(da.DOC_BUDGET_LIG_DA), 
	DOC_ZONE_LIBRE_DA	= Max(da.DOC_ZONE_LIBRE_DA),
	DOC_MESSAGE_DA		= Max(da.DOC_MESSAGE_DA),
	CE_PAYS			= MAX(ce.CE_PAYS),
	FRS_RAISON_SOCIALE	= Max(frs.FRS_RAISON_SOCIALE),
	FRS_PAYS		= Max(frs.FRS_PAYS),
	FRS_CODE_REGR		= Max(frs.FRS_CODE_REGR),
	NB_LIGNE_DA		= count(distinct da.DOC_NUMERO_LIGNE_DA),
	MONTANT			= sum(da.DOC_MONTANT_LIGNE_DA) ,
  MONTANT_TTC = sum(da.DOC_MONTANT_LIGNE_TTC_DA),
	MONTANT_DEV		= sum(da.DOC_MONTANT_LIGNE_DA_DEV) ,
  DOC_DELAIS_SIGNATURE_JOURS_DA = max(DOC_DELAIS_SIGNATURE_JOURS_DA),
  DOC_DELAIS_TRAITEMENT_JOURS_DA = max(DOC_DELAIS_TRAITEMENT_JOURS_DA),
  DOC_CODE_SECTION_IMPUTATION = MAX(e.SECTIMP),
  SI_DESIGNATION              = MAX(sec.SI_DESIGNATION)
INTO DA_ENTETES
FROM      DOCUMENTS da        with (NOLOCK) 
  LEFT JOIN SOCIETES soc        with (NOLOCK) ON da.DOC_CODE_SOCIETE      = soc.SOC_CODE_SOCIETE
  LEFT JOIN FOURNISSEURS frs    with (NOLOCK) ON da.DOC_CODE_FOURNISSEUR  = frs.FRS_CODE_FOURNISSEUR
  LEFT JOIN CENTRES_EMISSION ce with (NOLOCK) ON da.DOC_CODE_CE_CDE       = ce.CE_CODE_CENTRE_EMETTEUR
  LEFT JOIN ACHETEURS ach       with (NOLOCK) ON da.DOC_CODE_ACHETEUR     = ach.ACH_CODE_ACHETEUR
  LEFT JOIN DEMANDEURS dem       with (NOLOCK) ON da.DOC_CODE_DEMANDEUR     = dem.DEM_CODE_DEMANDEUR
  LEFT JOIN <PREFIXE_HA>DA_ENTET e  with (NOLOCK) ON da.DOC_NUMERO_DA    = e.NO_DA
  LEFT JOIN SECTIONS_IMPUTATIONS sec with (NOLOCK) ON e.CODE_STE=sec.SI_CODE_SOCIETE and e.SECTIMP = sec.SI_CODE_SECTION_IMPUTATION
 WHERE da.DOC_TYPE_TRANSACTION = 'DA'  
GROUP BY da.DOC_NUMERO_DA 
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON DA_ENTETES (DOC_NUMERO_DA)
<SEPARATEUR>
/*===============DROP TABLE DA_LIGNES_DETAIL===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DA_LIGNES_DETAIL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE DA_LIGNES_DETAIL
END
<SEPARATEUR>

/*==============CREATION TABLE DA_LIGNES_DETAIL CONTENANT LES DA========*/
SELECT * INTO DA_LIGNES_DETAIL FROM DOCUMENTS where DOC_TYPE_TRANSACTION='DA'
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON DA_LIGNES_DETAIL (DOC_NUMERO_DA,DOC_NUMERO_LIGNE_DA)
<SEPARATEUR>

/*===============CREATION Table DETAILLE LIGNE DE DA et COL de DA===============*/
/*===============DROP TABLE DA_LIGNES===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DA_LIGNES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE DA_LIGNES
END
<SEPARATEUR>
/*==============CREATION TABLE DA_LIGNES CONTENANT une s�lection de champs LES DA========*/
SELECT DOC_TYPE_TRANSACTION, 
DOC_NUMERO_DA,
DOC_NUMERO_LIGNE_DA,
DOC_TYPE_DA,
DOC_DESIGNATION_ARTICLE_DA,
DOC_PRIX_UNITAIRE_DA, 
DOC_QUANTITE_DA,
DOC_REMISE_DA,
DOC_MONTANT_LIGNE_DA, 
DOC_TAUX_TVA_DA,
DOC_MONTANT_LIGNE_TTC_DA,
DOC_MONTANT_LIGNE_DA_DEV,
DOC_DATE_EMISSION_DA,
DOC_DATE_VALIDATION_DA, 
DOC_DATE_AR_CDE,
DOC_DATE_LIVRAISON_DA, 
DOC_DEVISE_DA, 
DOC_STATUT_DA,
DOC_ZONE_LIBRE_NUMERIQUE, 
DOC_LIBELLE_DOCUMENT_CDE, 
DOC_QUANTITE_UNITE_ARTICLE_DA, 
DOC_QTE_TOT_LIG_DA,
DOC_QTE_TOT_LIG_UA_DA,
DOC_DATE_SIGNATURE_DA,
DOC_CODE_FOURNISSEUR,
DOC_CODE_ARTICLE,
DOC_CODE_ACCORD_CADRE,
DOC_CODE_SOUS_CPTE_ANALYSE,
DOC_CODE_COMPLEMENTAIRE,
DOC_CODE_SECTION_IMPUTATION,
sec.SI_DESIGNATION,
DOC_CODE_SOCIETE,
DOC_CODE_SIGNATAIRE,
DOC_CODE_MAGASINIER,
DOC_CODE_ACHETEUR,
DOC_CODE_DEMANDEUR,
dem.DEM_NOM_DEMANDEUR,
DOC_CODE_SOUS_FAMILLE,
DOC_CODE_TRANSITAIRE,
DOC_CODE_ORGANISME,
DOC_ID_DATE,
DOC_BUDGET_ENT_DA,
DOC_BUDGET_LIG_DA,
DOC_ZONE_LIBRE_DA,
DOC_MESSAGE_DA,
DOC_MAGIC_DSTR_LIVRAISON
INTO DA_LIGNES FROM DOCUMENTS da 
LEFT JOIN DEMANDEURS dem       with (NOLOCK) ON da.DOC_CODE_DEMANDEUR   = dem.DEM_CODE_DEMANDEUR
LEFT JOIN SECTIONS_IMPUTATIONS sec with (NOLOCK) ON da.DOC_CODE_SOCIETE=sec.SI_CODE_SOCIETE and da.DOC_CODE_SECTION_IMPUTATION = sec.SI_CODE_SECTION_IMPUTATION
where DOC_TYPE_TRANSACTION='DA'
<SEPARATEUR>

CREATE    CLUSTERED  INDEX [IDX_1] ON DA_LIGNES (DOC_NUMERO_DA, DOC_NUMERO_LIGNE_DA)
<SEPARATEUR>

/*===============CREATION DATAMART DETAILLE AVEC CERTAINES COL===============*/
/*===============DROP TABLE DATAMART_DA_5===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DATAMART_DA_5]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE DATAMART_DA_5
END  
<SEPARATEUR>
/*SELECT
DOC_TYPE_TRANSACTION,
DOC_CODE_SECTION_IMPUTATION, 
DOC_NUMERO_DA ,
DOC_NUMERO_DOC,
DOC_NUMERO_LIGNE_DA,
DOC_DESIGNATION_ARTICLE_DA ,
DOC_STATUT_DA ,
DOC_PRIX_UNITAIRE_DA ,
DOC_QUANTITE_DA ,
DOC_REMISE_DA ,
DOC_MONTANT_LIGNE_DA , 
DOC_MONTANT_LIGNE_DA_DEV , 
DOC_DATE_EMISSION_DA ,
DOC_DATE_LIVRAISON_DA ,
DOC_CODE_SOUS_FAMILLE,
DOC_CODE_FOURNISSEUR,
DOC_CODE_SOCIETE,
DOC_CENTRE_LIVRAISON_DA,
DOC_CODE_DEMANDEUR,
DOC_CODE_ARTICLE,
DOC_CODE_CE_CDE,
DOC_CODE_PAYS_CDE

INTO DATAMART_DA_5
FROM DOCUMENTS 
where DOC_TYPE_TRANSACTION='DA'*/
<SEPARATEUR>
/*
CREATE    CLUSTERED  INDEX [IDX_1] ON DATAMART_DA_5 (DOC_NUMERO_DA, DOC_NUMERO_LIGNE_DA)*/
<SEPARATEUR>

/*===============BLOC BR===========================================================================*/
/*===============CREATION table BR ENTETES===============*/
/*===============DROP TABLE BR_ENTETES===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BR_ENTETES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE BR_ENTETES
END  
<SEPARATEUR>

/*==============CREATION TABLE BR_ENTETES CONTENANT LES BR========*/
select	DOC_NUMERO_BR		= Max(br.DOC_NUMERO_BR),
	DOC_DEVISE_BR		= Max(br.DOC_DEVISE_BR),
	DOC_CODE_SOCIETE	= Max(br.DOC_CODE_SOCIETE),
	SOC_RAISON_SOCIALE	= Max(soc.SOC_RAISON_SOCIALE),
	SOC_CODE_GROUPE		= Max(soc.SOC_CODE_GROUPE),
	DOC_DATE_CREATION_BR	= Max(br.DOC_DATE_CREATION_BR),
	DOC_DATE_VALIDATION_BR	= Max(br.DOC_DATE_VALIDATION_BR),
	DOC_DATE_PERIODE_BR	= Max(br.DOC_DATE_PERIODE_BR),
	DOC_CODE_FOURNISSEUR	= Max(br.DOC_CODE_FOURNISSEUR),
	DOC_DATE_BON_LIVRAISON	= Max(br.DOC_DATE_BON_LIVRAISON),
	DOC_NUMERO_BON_LIVRAISON= Max(br.DOC_NUMERO_BON_LIVRAISON),
	DOC_VALIDITE_BON_LIVRAISON=Max(br.DOC_VALIDITE_BON_LIVRAISON),
	CE_PAYS			= MAX(ce.CE_PAYS),
	FRS_RAISON_SOCIALE	= Max(frs.FRS_RAISON_SOCIALE),
	FRS_PAYS		= Max(frs.FRS_PAYS),
	FRS_CODE_REGR		= Max(frs.FRS_CODE_REGR),
	NB_LIGNE_BR		= count(distinct br.DOC_NUMERO_LIGNE_BR),
	MONTANT			= sum(br.DOC_MONTANT_LIGNE_BR) ,
	MONTANT_DEV		= sum(br.DOC_MONTANT_LIGNE_BR_DEV) 
INTO BR_ENTETES
FROM      DOCUMENTS br        	with (NOLOCK) 
  LEFT JOIN SOCIETES soc        with (NOLOCK) ON br.DOC_CODE_SOCIETE      = soc.SOC_CODE_SOCIETE
  LEFT JOIN FOURNISSEURS frs    with (NOLOCK) ON br.DOC_CODE_FOURNISSEUR  = frs.FRS_CODE_FOURNISSEUR
  LEFT JOIN CENTRES_EMISSION ce with (NOLOCK) ON br.DOC_CODE_CE_CDE       = ce.CE_CODE_CENTRE_EMETTEUR
  LEFT JOIN ACHETEURS ach       with (NOLOCK) ON br.DOC_CODE_ACHETEUR     = ach.ACH_CODE_ACHETEUR
 WHERE br.DOC_TYPE_TRANSACTION = 'BR'  
GROUP BY br.DOC_NUMERO_BR 
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON BR_ENTETES (DOC_NUMERO_BR)
<SEPARATEUR>

/*===============CREATIONTable DETAILLE CONTENANT TOUTES LES COL DE DOCUMENTS===============*/
/*===============DROP TABLE BR_LIGNES_DETAIL===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BR_LIGNES_DETAIL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE BR_LIGNES_DETAIL
END
<SEPARATEUR>

/*==============CREATION TABLE BR_LIGNES_DETAIL CONTENANT LES BR========*/
SELECT * INTO BR_LIGNES_DETAIL FROM DOCUMENTS where DOC_TYPE_TRANSACTION='BR'
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON BR_LIGNES_DETAIL (DOC_NUMERO_BR,DOC_NUMERO_LIGNE_BR)
<SEPARATEUR>

/*===============CREATION Table DETAILLE LIGNE DE BR ET COL DE BR===============*/
/*===============DROP TABLE BR_LIGNES===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BR_LIGNES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE BR_LIGNES
END
<SEPARATEUR>

/*==============CREATION TABLE BR_LIGNES CONTENANT LES BR========*/
SELECT DOC_TYPE_TRANSACTION, 
DOC_NUMERO_BR,
DOC_NUMERO_LIGNE_BR,
DOC_AVENANT,
DOC_QUANTITE_RECUE_BR,
DOC_QUANTITE_ACCEPTEE_BR,
DOC_RECEPTION_EN_MONTANT_BR,
DOC_MONTANT_LIGNE_BR, 
DOC_MONTANT_LIGNE_TTC_BR,
DOC_MONTANT_LIGNE_BR_DEV,
DOC_DATE_CREATION_BR,
DOC_DATE_PERIODE_BR,
DOC_DATE_VALIDATION_BR, 
DOC_DATE_BON_LIVRAISON
DOC_ETAT_FINANCIER,
DOC_ZONE_LIBRE_NUMERIQUE, 
DOC_CODE_FOURNISSEUR,
DOC_CODE_ARTICLE,
DOC_CODE_ACCORD_CADRE,
DOC_CODE_SOUS_CPTE_ANALYSE,
DOC_CODE_COMPLEMENTAIRE,
DOC_CODE_SECTION_IMPUTATION,
DOC_CODE_SOCIETE,
DOC_CODE_SIGNATAIRE,
DOC_CODE_MAGASINIER,
DOC_CODE_ACHETEUR,
DOC_CODE_DEMANDEUR,
DOC_CODE_SOUS_FAMILLE,
DOC_CODE_TRANSITAIRE,
DOC_CODE_ORGANISME,
DOC_NUMERO_LICENCE,
DOC_ID_DATE,
DOC_MAGIC_DSTR_LIVRAISON
INTO BR_LIGNES FROM DOCUMENTS where DOC_TYPE_TRANSACTION='BR'
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON BR_LIGNES (DOC_NUMERO_BR,DOC_NUMERO_LIGNE_BR)
<SEPARATEUR>

/*===============BLOC FAC===========================================================================*/
/*===============CREATION Table FAC ENTETES===============*/
/*===============DROP TABLE FAC_ENTETES===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FAC_ENTETES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE FAC_ENTETES
END  
<SEPARATEUR>

/*==============CREATION TABLE FAC_ENTETES CONTENANT LES FAC========*/
select	DOC_NUMERO_FAC		= Max(fac.DOC_NUMERO_FAC),
	DOC_DEVISE_FAC		= Max(fac.DOC_DEVISE_FAC),
  DOC_TAUX_DEVISE   = Max(fac.DOC_TAUX_DEVISE),
	DOC_CODE_SOCIETE	= Max(fac.DOC_CODE_SOCIETE),
	DOC_DATE_ENREGISTREMENT_FAC	=Max(fac.DOC_DATE_ENREGISTREMENT_FAC),
	DOC_DATE_PERIODE_FAC	= Max(fac.DOC_DATE_PERIODE_FAC),
	DOC_DATE_ECHEANCE_FAC	= Max(fac.DOC_DATE_ECHEANCE_FAC),
	DOC_DATE_FACTURE_FOURNISSEUR	=Max(fac.DOC_DATE_FACTURE_FOURNISSEUR),
	DOC_DATE_VALID_BON_A_PAYER	=Max(fac.DOC_DATE_VALID_BON_A_PAYER),
  DOC_ENTETE_VALIDE_FAC = max(DOC_ENTETE_VALIDE_FAC),
  DOC_AFFECTATION_ENREGISTRE_FAC =max(DOC_AFFECTATION_ENREGISTRE_FAC),
  DOC_AFFECTATION_VALIDE_FAC=max(DOC_AFFECTATION_VALIDE_FAC),
  DOC_BON_A_PAYER_FAC=max(DOC_BON_A_PAYER_FAC), 
	DOC_DATE_SCAN_FAC	=Max(fac.DOC_DATE_SCAN_FAC),
	DOC_DATE_DERN_REG_FAC	=Max(fac.DOC_DATE_DERN_REG_FAC),
  DOC_TYPE_FAC		= Max(fac.DOC_TYPE_FAC),
	DOC_CODE_ORDONNANCE	= Max(fac.DOC_CODE_ORDONNANCE),	
	DOC_LITIGE_FAC		= Max(fac.DOC_LITIGE_FAC),
	SOC_RAISON_SOCIALE	= Max(soc.SOC_RAISON_SOCIALE),
	DOC_CODE_FOURNISSEUR	= Max(fac.DOC_CODE_FOURNISSEUR),
	DOC_CODE_SIGNATAIRE  	= Max(fac.DOC_CODE_SIGNATAIRE),
	DOC_NUMERO_FACTURE_FRS	= Max(fac.DOC_NUMERO_FACTURE_FRS),
  DOC_CDE_LUE_LAD_FAC =Max(fac.DOC_CDE_LUE_LAD_FAC),
	DOC_CODE_ACHETEUR=Max(fac.DOC_CODE_ACHETEUR),
  ACH_NOM_ACHETEUR	= Max(ach.ACH_NOM_ACHETEUR),
	CE_PAYS			= MAX(ce.CE_PAYS),
	FRS_RAISON_SOCIALE	= Max(frs.FRS_RAISON_SOCIALE),
	FRS_PAYS		= Max(frs.FRS_PAYS),
	FRS_CODE_REGR		= Max(frs.FRS_CODE_REGR),
	NB_LIGNE_FAC		= count(distinct fac.DOC_NUMERO_LIGNE_FAC),
     /* Ces montants sont sur les lignes, donc SUM */
	MONTANT			= sum(fac.DOC_MONTANT_LIGNE_FAC) ,
	MONTANT_DEV			= sum(fac.DOC_MONTANT_LIGNE_FAC_DEV),
  MONTANT_TTC = sum(fac.DOC_MONTANT_LIGNE_TTC_FAC) ,
  MONTANT_TTC_DEV = sum(fac.DOC_MONTANT_LIGNE_TTC_DEV_FAC) ,
     /* Le Montant total r�gl� HT est sur l'en-t�te, donc MAX au lieu de SUM (Spec 4198) */
  DOC_MONTANT_TOT_REGLE_FAC_DEV = max(fac.DOC_MONTANT_TOT_REGLE_FAC_DEV),
  DOC_MONTANT_TOT_REGLE_FAC = max(fac.DOC_MONTANT_TOT_REGLE_FAC),
  DOC_LIBELLE_COMPTABLE_FAC = max(DOC_LIBELLE_COMPTABLE_FAC)
INTO FAC_ENTETES
FROM      DOCUMENTS fac       	with (NOLOCK) 
  LEFT JOIN SOCIETES soc        with (NOLOCK) ON fac.DOC_CODE_SOCIETE      = soc.SOC_CODE_SOCIETE
  LEFT JOIN FOURNISSEURS frs    with (NOLOCK) ON fac.DOC_CODE_FOURNISSEUR  = frs.FRS_CODE_FOURNISSEUR
  LEFT JOIN CENTRES_EMISSION ce with (NOLOCK) ON fac.DOC_CODE_CE_CDE       = ce.CE_CODE_CENTRE_EMETTEUR
  LEFT JOIN ACHETEURS ach       with (NOLOCK) ON fac.DOC_CODE_ACHETEUR     = ach.ACH_CODE_ACHETEUR
 WHERE fac.DOC_TYPE_TRANSACTION = 'FAC'  
GROUP BY fac.DOC_NUMERO_FAC 
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON FAC_ENTETES (DOC_NUMERO_FAC)

<SEPARATEUR>
/*Ajout des ent de fac sans lignes*/
insert into FAC_ENTETES(DOC_NUMERO_FAC,NB_LIGNE_FAC,DOC_LIBELLE_COMPTABLE_FAC) 
select ent.NUM_FACT,0,' '
from 
<PREFIXE_HA>FAC_ENT ent  <WITHNOLOCK>
left outer join FAC_ENTETES
on 
(NUM_FACT)=(DOC_NUMERO_FAC)
where
DOC_NUMERO_FAC
is null
<SEPARATEUR>
/*MAJ des info des fac ent sans lignes venant de FAC_ENT*/
Update doc
SET 
doc.DOC_DEVISE_FAC=ent.DEVISE,
doc.DOC_TAUX_DEVISE=ent.TX_DEVISE,
doc.DOC_CODE_SOCIETE=ent.CODE_STE,
doc.DOC_DATE_ENREGISTREMENT_FAC=CASE WHEN (ent.DATE_ENR  = ' ' OR ent.DATE_ENR  = '00000000' ) THEN NULL WHEN (ent.DATE_ENR  < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DATE_ENR  ,103) END,
doc.DOC_DATE_PERIODE_FAC=CASE WHEN (ent.DATE_PER  = ' ' OR ent.DATE_PER  = '00000000' ) THEN NULL WHEN (ent.DATE_PER  < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DATE_PER  ,103) END,
doc.DOC_DATE_ECHEANCE_FAC=CASE WHEN (ent.DTAE_ECH  = ' ' OR ent.DTAE_ECH  = '00000000' ) THEN NULL WHEN (ent.DTAE_ECH  < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DTAE_ECH  ,103) END,
doc.DOC_DATE_FACTURE_FOURNISSEUR=CASE WHEN (ent.DATE_FAFO = ' ' OR ent.DATE_FAFO = '00000000' ) THEN NULL WHEN (ent.DATE_FAFO < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DATE_FAFO ,103) END,
doc.DOC_DATE_VALID_BON_A_PAYER=CASE WHEN (ent.DATE_BAP  = ' ' OR ent.DATE_BAP  = '00000000' ) THEN NULL WHEN (ent.DATE_BAP  < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DATE_BAP  ,103) END,

doc.DOC_DATE_SCAN_FAC=CASE WHEN (ent.DATESCAN  = ' ' OR ent.DATESCAN  = '00000000' ) THEN NULL WHEN (ent.DATESCAN  < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DATESCAN  ,103) END,
doc.DOC_DATE_DERN_REG_FAC=CASE WHEN (ent.DTE_DERNREG  = ' ' OR ent.DTE_DERNREG  = '00000000' ) THEN NULL WHEN (ent.DTE_DERNREG  < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DTE_DERNREG  ,103) END,

doc.DOC_TYPE_FAC=ent.TYPE,
doc.DOC_CODE_ORDONNANCE=ent.ORDO,
doc.DOC_LITIGE_FAC=CASE WHEN ent.LITIGE = 0x54 THEN 'OUI' ELSE 'NON' END,
doc.DOC_CODE_FOURNISSEUR=ent.CODE_FOUR,
doc.DOC_NUMERO_FACTURE_FRS=ent.FACT_FOU,
doc.MONTANT_DEV= ent.TOTAL_HT,
doc.DOC_MONTANT_TOT_REGLE_FAC_DEV = ent.MT_TOTREG,
doc.DOC_LIBELLE_COMPTABLE_FAC=substring( isnull(ent.LIB_COMPT,' '),1,120),
doc.SOC_RAISON_SOCIALE=soc.SOC_RAISON_SOCIALE,
doc.FRS_RAISON_SOCIALE=frs.FRS_RAISON_SOCIALE,
doc.FRS_PAYS=frs.FRS_PAYS,
doc.FRS_CODE_REGR=frs.FRS_CODE_REGR,
doc.ACH_NOM_ACHETEUR=ach.ACH_NOM_ACHETEUR
FROM FAC_ENTETES doc 
LEFT JOIN  <PREFIXE_HA>FAC_ENT ent   <WITHNOLOCK>
ON  doc.DOC_NUMERO_FAC=ent.NUM_FACT
left join SOCIETES soc    <WITHNOLOCK>
on ent.CODE_STE=soc.SOC_CODE_SOCIETE
left join FOURNISSEURS frs
on ent.CODE_FOUR=frs.FRS_CODE_FOURNISSEUR
left join ACHETEURS ach
on doc.DOC_CODE_ACHETEUR=ach.ACH_NOM_ACHETEUR
where ent.NUM_FACT not in (select NUM_FACT from <PREFIXE_HA>FAC_LIG <WITHNOLOCK>)
<SEPARATEUR>
/*Calcul Montant en DEV pour les ent sans lignes*/
update doc 
set 
MONTANT = MONTANT_DEV * 
 (
 CASE 
  /* Devise in euro */
  WHEN dev.INEURO = 0x54 and <EUROACTIF> = 1 and ( doc.DOC_DATE_PERIODE_FAC >= (CASE WHEN (dev.DTEENTEUR = ' ' OR dev.DTEENTEUR = '00000000' ) THEN NULL WHEN (dev.DTEENTEUR < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,dev.DTEENTEUR ,103) END ) OR doc.DOC_TAUX_DEVISE =0 ) THEN 1/dev.TXFROMEUR
 ELSE
  /* Devise hors euro */
  CASE WHEN doc.DOC_TAUX_DEVISE = 0  THEN dev.VALEUR ELSE doc.DOC_TAUX_DEVISE END
 END
 ),
DOC_MONTANT_TOT_REGLE_FAC = DOC_MONTANT_TOT_REGLE_FAC_DEV * 
 (
 CASE 
  /* Devise in euro */
  WHEN dev.INEURO = 0x54 and <EUROACTIF> = 1 and ( doc.DOC_DATE_PERIODE_FAC >= (CASE WHEN (dev.DTEENTEUR = ' ' OR dev.DTEENTEUR = '00000000' ) THEN NULL WHEN (dev.DTEENTEUR < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,dev.DTEENTEUR ,103) END ) OR doc.DOC_TAUX_DEVISE =0 ) THEN 1/dev.TXFROMEUR
 ELSE
  /* Devise hors euro */
  CASE WHEN doc.DOC_TAUX_DEVISE = 0  THEN dev.VALEUR ELSE doc.DOC_TAUX_DEVISE END
 END
 )
from FAC_ENTETES doc, <PREFIXE_HA>DEVISES<SUFFIXE_HA> dev <WITHNOLOCK> 
/* Crit�res */
where doc.DOC_DEVISE_FAC      <> '<DEVISEREF>' 
/* Jointure interne dev/doc */
and dev.CODE_DEVI = doc.DOC_DEVISE_FAC 
and DOC_NUMERO_FAC not in (select NUM_FACT from <PREFIXE_HA>FAC_LIG <WITHNOLOCK>)
<SEPARATEUR>
/*Spec 4381 Ajout du champ qui vient de la LAD qui donne les numéros de commandes lues par la LAD. */
update doc set DOC_CDE_LUE_LAD_FAC=NUM_CDE
from FAC_ENTETES doc ,<PREFIXE_HA>FAC_CDELAD f with (nolock) where DOC_NUMERO_FAC=f.NUM_FACT  

<SEPARATEUR>
/*--------Recalcul du TTC cf PP dossier 301329, 03/2024-----------*/
update f set  f.MONTANT = ent.TOTAL_HT ,f.MONTANT_DEV = ent.TOTAL_HT * TX_DEVISE   ,f.MONTANT_TTC = ent.TOTAL_TTC,f.MONTANT_TTC_DEV = ent.TOTAL_TTC * TX_DEVISE
    from <PREFIXE_DW>FAC_ENTETES f,  <PREFIXE_HA>FAC_ENT ent  with (nolock) where f.DOC_NUMERO_FAC=ent.NUM_FACT

<SEPARATEUR>
/*===============CREATION table DETAILLE CONTENANT TOUTES LES COL DE DOCUMENTS===============*/
/*===============DROP TABLE FAC_LIGNES_DETAIL===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FAC_LIGNES_DETAIL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE FAC_LIGNES_DETAIL
END
<SEPARATEUR>
/*==============CREATION TABLE FAC_LIGNES_DETAIL CONTENANT LES FAC========*/
SELECT * INTO FAC_LIGNES_DETAIL FROM DOCUMENTS where DOC_TYPE_TRANSACTION='FAC'
<SEPARATEUR>
CREATE    CLUSTERED  INDEX [IDX_1] ON FAC_LIGNES_DETAIL (DOC_NUMERO_FAC,DOC_NUMERO_LIGNE_FAC)
<SEPARATEUR>

/*===============DROP TABLE FAC_LIGNES LIGNE DE FAC et COL DE FAC===================*/
if  exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FAC_LIGNES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	DROP TABLE FAC_LIGNES
END
<SEPARATEUR>

/*==============CREATION TABLE FAC_LIGNES CONTENANT LES FAC========*/
SELECT DOC_TYPE_TRANSACTION, 
DOC_NUMERO_FAC,
DOC_NUMERO_LIGNE_FAC,
DOC_AVENANT,
DOC_DESIGNATION_FAC,
DOC_QUANTITE_LIGNE_FAC,
DOC_TAUX_TVA_FAC,
DOC_MONTANT_LIGNE_FAC, 
DOC_MONTANT_LIGNE_TTC_FAC,
DOC_MONTANT_LIGNE_FAC_DEV, 
DOC_DATE_VALID_BON_A_PAYER,
DOC_DATE_PERIODE_FAC,
DOC_DATE_ECHEANCE_FAC,
DOC_DATE_FACTURE_FOURNISSEUR,
DOC_DATE_ENREGISTREMENT_FAC,
DOC_TYPE_FAC,
DOC_DEVISE_FAC, 
DOC_CODE_MODE_PAIEMENT_FAC, 
DOC_LIBELLE_MODE_PAIEMENT_FAC,
DOC_ZONE_LIBRE_NUMERIQUE, 
DOC_CODE_FOURNISSEUR,
DOC_CODE_ARTICLE,
DOC_CODE_ACCORD_CADRE,
DOC_CODE_SOUS_CPTE_ANALYSE,
DOC_CODE_COMPLEMENTAIRE,
DOC_CODE_SECTION_IMPUTATION,
DOC_CODE_SOCIETE,
DOC_CODE_SIGNATAIRE,
DOC_CODE_MAGASINIER,
DOC_CODE_ACHETEUR,
DOC_CODE_DEMANDEUR,
DOC_CODE_SOUS_FAMILLE,
DOC_CODE_TRANSITAIRE,
DOC_CODE_ORGANISME,
DOC_NUMERO_LICENCE,
DOC_ID_DATE,
DOC_MAGIC_DSTR_LIVRAISON
INTO FAC_LIGNES FROM DOCUMENTS where DOC_TYPE_TRANSACTION='FAC'
<SEPARATEUR>

CREATE    CLUSTERED  INDEX [IDX_1] ON FAC_LIGNES (DOC_NUMERO_FAC,DOC_NUMERO_LIGNE_FAC)
<SEPARATEUR>

