/* =========================================================================================== */
/* Transfert DA - Phase 2 - Update des lignes pr�sentes dans DW, � partir des valeurs de HA+ */
/* =========================================================================================== */

update doc
set 
/* En-t�te */
DOC_DATE_EMISSION_DA         = CASE WHEN (ent.DTE_EMISS = ' ' OR ent.DTE_EMISS = '00000000' or ent.DTE_EMISS =NULL) THEN NULL WHEN (ent.DTE_EMISS < '17530101') THEN TRY_CONVERT (datetime,'19000101' ,103) ELSE TRY_CONVERT (datetime,ent.DTE_EMISS ,103) END,
DOC_DATE_VALIDATION_DA       = CASE WHEN (ent.DTE_VAL   = ' ' OR ent.DTE_VAL   = '00000000' or ent.DTE_VAL=NULL)    THEN NULL WHEN (ent.DTE_VAL   < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DTE_VAL   ,103) END,
DOC_DATE_PERIODE             = CASE WHEN (ent.DTE_VAL   = ' ' OR ent.DTE_VAL   = '00000000' or ent.DTE_VAL=NULL)    THEN NULL WHEN (ent.DTE_VAL   < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DTE_VAL   ,103) END,
   /* DOC_ID_DATE : Date r�f�rence = Date validation */
DOC_ID_DATE                  = CASE WHEN (ent.DTE_VAL   = ' ' OR ent.DTE_VAL   = '00000000' or ent.DTE_VAL=NULL)    THEN NULL WHEN (ent.DTE_VAL   < '17530101') THEN CONVERT (datetime,'19000101' ,103) ELSE CONVERT (datetime,ent.DTE_VAL   ,103) END,
DOC_DEVISE_DA                = ent.DEVISE,
DOC_TAUX_DEVISE              = 0, /* Inutile pour DA (idem HA+) */
DOC_CODE_DEMANDEUR           = ent.NO_DEM, 
DOC_TYPE_DA                  = CASE WHEN ent.CHIF_EXEC = 'C' THEN 'CHIFFRAGE' WHEN ent.CHIF_EXEC = 'E' THEN 'EXECUTION' ELSE ' ' END,
DOC_STATUT_DA                = CASE WHEN ent.TRAITEE = 0x54  THEN 'TRAITEE'   WHEN ent.SIGNEE = 0x54   THEN 'SIGNEE' WHEN ent.REFUSEE = 0x54 THEN 'REFUSEE' WHEN ent.VALIDITE = 0x54 THEN 'VALIDEE' ELSE ' ' END,
DOC_ZONE_LIBRE_DA            = ent.ZONELIB,
DOC_TYPE_DOCUMENT_DA         = ent.TYP_DOC,
DOC_CENTRE_LIVRAISON_DA      = ent.CTR_LIV,
DOC_LANGUE_DA                = ent.COD_LNG,
DOC_MESSAGE_DA               = ent.CODE_MESS, /* Le Libell� est ajout� ensuite (concat�nation), voir req. plus bas */
DOC_CODE_SOCIETE             = ent.CODE_STE,
DOC_BUDGET_ENT_DA            = ent.BUDGETDA,
DOC_FM_FORMULAIRE_DA         = ent.FM_CODE,
/* Lignes ou planning */
/*DOC_COMPTEUR_LIG             = convert(varchar(9),pla.NO_DA) + '-' + convert(varchar(3),pla.NO_PO) + '-' + '000',  Pour compteur lignes : P0?, encore utile? */
DOC_CODE_ARTICLE             = lig.CODE_ART,
DOC_DESIGNATION_ARTICLE_DA   = replace(replace(lig.DES_SOMM,char(10),' ')  ,char(13),'')     ,
DOC_PRIX_UNITAIRE_DA         = lig.PU, /* en Devise R�f : conversion �ventuelle req. suivante */
DOC_QUANTITE_DA              = pla.QTE_DEMAN,
DOC_REMISE_DA                = lig.TX_REMISE,
DOC_TAUX_TVA_DA              = lig.TVA,
DOC_MONTANT_LIGNE_DA         = pla.QTE_DEMAN * lig.PU *(1-lig.TX_REMISE/100), /* en Devise R�f : conversion �ventuelle req. suivante */
DOC_MONTANT_LIGNE_DA_DEV     = pla.QTE_DEMAN * lig.PU *(1-lig.TX_REMISE/100), /* en Devise de DA */
DOC_MONTANT_LIGNE_TTC_DA     = (pla.QTE_DEMAN * lig.PU *(1-lig.TX_REMISE/100)) + (pla.QTE_DEMAN * lig.PU *(1-lig.TX_REMISE/100) * (lig.TVA /100) ),
DOC_MONTANT_LIGNE_TTC_DEV_DA = (pla.QTE_DEMAN * lig.PU *(1-lig.TX_REMISE/100)) + (pla.QTE_DEMAN * lig.PU *(1-lig.TX_REMISE/100) * (lig.TVA /100) ), /* en Devise de DA */ 
DOC_QUANTITE_UNITE_ARTICLE_DA= pla.QTE_DEMAN, /* Qt� de la ligne de planning de DA, convertie en unit� d'article par req. suivante (OXADW_DOC_UPDREF.SQL) */ 
DOC_QTE_TOT_LIG_DA           = lig.QTE_DEM,   /* Qt� totale de la ligne de DA */
DOC_QTE_TOT_LIG_UA_DA        = lig.QTE_DEM,   /* Qt� totale de la ligne de DA, convertie en unit� d'article par req. suivante (OXADW_DOC_UPDREF.SQL) */
DOC_UNITE_LIGNE              = lig.UNITE,
DOC_CODE_FOURNISSEUR         = lig.CODE_FOU, 
DOC_CODE_ACCORD_CADRE        = lig.ACD, 
DOC_CODE_ACHETEUR            = lig.ACHETEUR,
DOC_CODE_SOUS_FAMILLE        = lig.SSFAM,
DOC_CODE_SECTION_IMPUTATION  = lig.SECTIMP,
DOC_CODE_COMPLEMENTAIRE      = lig.CODE_COMP,
DOC_CODE_SOUS_CPTE_ANALYSE   = lig.SSCPTEANA,
DOC_MODE_TRANSPORT_LIGNE_DA  = ent.MOD_TRS,
DOC_BUDGET_LIG_DA            = lig.BUDGET,
DOC_FM_METIER_DA             = lig.FM_MET,
DOC_FM_SPECIALITE_DA         = lig.FM_SPE,
DOC_CODE_GESTION_INTERNE     = lig.ID_CG,
DOC_CODE_GESTION_AFFICHE     = lig.CODGES,  
DOC_REFERENCE_FABRICANT      = lig.REF_FAB,                           
DOC_DATEMODI                 = pla.DATEMODI 
/* Remise � blanc des CS, avant la m�j ult�rieure (en cas de cght du param�trage) */
/*DOC_CS01   = ' ',    
DOC_CS01_L = ' ',
DOC_CS02   = ' ',    
DOC_CS02_L = ' ',
DOC_CS03   = ' ',    
DOC_CS03_L = ' ',
DOC_CS04   = ' ',    
DOC_CS04_L = ' ',
DOC_CS05   = ' ',    
DOC_CS05_L = ' ',
DOC_CS06   = ' ',    
DOC_CS06_L = ' ',
DOC_CS07   = ' ',    
DOC_CS07_L = ' ',
DOC_CS08   = ' ',    
DOC_CS08_L = ' ',
DOC_CS09   = ' ',    
DOC_CS09_L = ' ',
DOC_CS10   = ' ',    
DOC_CS10_L = ' ' */
/* Tables */
from <PREFIXE_DW>DOCUMENTS doc,  
     <PREFIXE_HA>DA_PLANN<SUFFIXE_HA> pla <WITHNOLOCK>, <PREFIXE_HA>DA_LIGNE<SUFFIXE_HA> lig <WITHNOLOCK>, <PREFIXE_HA>DA_ENTET<SUFFIXE_HA> ent <WITHNOLOCK>
where 
/* Crit�res */
    doc.DOC_TYPE_TRANSACTION     = 'DA' 
and doc.DOC_NUMERO_DOC           = pla.NO_DA
and doc.DOC_NUMERO_LIGNE_1       = pla.NO_PO
and doc.DOC_NUMERO_LIGNE_2       = 0
and doc.DOC_MAGIC_DSTR_LIVRAISON = pla.DTE_LIV
/* Jointure interne pla/lig */
and pla.NO_DA = lig.NO_DA
and pla.NO_PO = lig.NO_PO
/* Jointure interne pla/ent */
and pla.NO_DA = ent.NO_DA
and lig.NO_DA = ent.NO_DA
/* Diff�rentiel */
and pla.DATEMODI >= '<DATEMODIMIN>' and pla.DATEMODI <='<DATEMODIMAX>'
<SEPARATEUR>

/* Message standard : code - libell� */
update doc
set 
DOC_MESSAGE_DA  = msg.CODE_MSG + ' - ' + msg.LIBELLE
from <PREFIXE_DW>DOCUMENTS doc,  
     <PREFIXE_HA>MESSSTAN<SUFFIXE_HA> msg <WITHNOLOCK> 
where 
/* Crit�res */
    doc.DOC_TYPE_TRANSACTION     = 'DA' 
/* Jointure interne msg/doc */
and msg.CODE_MSG = doc.DOC_MESSAGE_DA
and DOC_DATEMODI>= '<DATEMODIMIN>' and DOC_DATEMODI <='<DATEMODIMAX>'
<SEPARATEUR>

/* Conversion de devises */
update doc 
set 
DOC_PRIX_UNITAIRE_DA = DOC_PRIX_UNITAIRE_DA * 
 (
 CASE 
  /* Devise in euro */
  WHEN dev.INEURO = 0x54 and <EUROACTIF> = 1 and ( doc.DOC_DATE_EMISSION_DA >= (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_LIGNE_DA = DOC_MONTANT_LIGNE_DA_DEV * 
 (
 CASE 
  /* Devise in euro */
  WHEN dev.INEURO = 0x54 and <EUROACTIF> = 1 and ( doc.DOC_DATE_EMISSION_DA >= (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 <PREFIXE_DW>DOCUMENTS doc, <PREFIXE_HA>DEVISES<SUFFIXE_HA> dev <WITHNOLOCK> 
/* Crit�res */
where doc.DOC_TYPE_TRANSACTION     = 'DA' 
and   doc.DOC_DEVISE_DA           <> '<DEVISEREF>' 
/* Jointure interne dev/doc */
and dev.CODE_DEVI = doc.DOC_DEVISE_DA
and DOC_DATEMODI>= '<DATEMODIMIN>' and DOC_DATEMODI <='<DATEMODIMAX>'
<SEPARATEUR>
/*Recalcul Montant TVA*/
update <PREFIXE_DW>DOCUMENTS set DOC_MONTANT_LIGNE_TTC_DA=DOC_MONTANT_LIGNE_DA+ (DOC_MONTANT_LIGNE_DA * (DOC_TAUX_TVA_DA /100) ) where DOC_MONTANT_LIGNE_TTC_DA<>DOC_MONTANT_LIGNE_DA+ (DOC_MONTANT_LIGNE_DA * (DOC_TAUX_TVA_DA /100) ) 
update <PREFIXE_DW>DOCUMENTS set DOC_MONTANT_LIGNE_TTC_DEV_DA=DOC_MONTANT_LIGNE_DA+ (DOC_MONTANT_LIGNE_DA * (DOC_TAUX_TVA_DA /100) ) where DOC_MONTANT_LIGNE_TTC_DEV_DA<>DOC_MONTANT_LIGNE_DA+ (DOC_MONTANT_LIGNE_DA * (DOC_TAUX_TVA_DA /100) )

<SEPARATEUR>
/* Recherche TITRE DA */
update doc
set 
DOC_TITRE_DA  = replace(replace(substring(m.CONTMEMO,1,100) ,char(10),' ') ,char(13),'')
from <PREFIXE_DW>DOCUMENTS doc,  
     <PREFIXE_HA>MEMOS<SUFFIXE_HA> m ,
	 <PREFIXE_HA>DA_ENTET<SUFFIXE_HA> d	
where 
doc.DOC_TYPE_TRANSACTION     = 'DA' 
and m.NODEMEMO = d.NM_TITRE
and DOC_NUMERO_DOC=d.NO_DA
and DOC_DATEMODI>= '<DATEMODIMIN>' and DOC_DATEMODI <='<DATEMODIMAX>'
<SEPARATEUR>

/* Recherche COMMENTAIRE DA */
update doc
set
DOC_COMMENTAIRE_DA  = replace(replace(substring(m.CONTMEMO,1,100) ,char(10),' ') ,char(13),'')
from <PREFIXE_DW>DOCUMENTS doc,
     <PREFIXE_HA>MEMOS<SUFFIXE_HA> m ,
     <PREFIXE_HA>DA_ENTET<SUFFIXE_HA> d
where
doc.DOC_TYPE_TRANSACTION     = 'DA'
and m.NODEMEMO = d.NM_COMMEN
and DOC_NUMERO_DOC=d.NO_DA
and DOC_DATEMODI>= '<DATEMODIMIN>' and DOC_DATEMODI <='<DATEMODIMAX>'

<SEPARATEUR>
/* Recherche D�signation compl�mentaire ligne DA */
update doc
set
DOC_DESIGNATION_COMP_DA  =replace(replace(substring(m.CONTMEMO,1,255),char(10),' '),char(13),'')
from <PREFIXE_DW>DOCUMENTS doc,
     <PREFIXE_HA>MEMOS<SUFFIXE_HA> m ,
     <PREFIXE_HA>DA_LIGNE<SUFFIXE_HA> d
where
doc.DOC_TYPE_TRANSACTION     = 'DA'
and m.NODEMEMO = d.NM_DCOMP
and DOC_NUMERO_DOC=d.NO_DA
and DOC_NUMERO_LIGNE_1=d.NO_PO
and DOC_DATEMODI>= '<DATEMODIMIN>' and DOC_DATEMODI <='<DATEMODIMAX>'
<SEPARATEUR> 