FVERS = 2
REFOBJET : ID = 860026361 ; ID_INIT = 860026126 ; NOM = Tta6dcZTA ; VERSION = V145 ; DATE = 01/07/14-08:22:30 ( 1404202950 ) ; CAT = 8 ; ETAT = 0 ; NB_FILS =1 ; ID_FILS = 860026233
ID_EST = 860000110
COMMENT = "#25/04/2014 - DRE - G4R6 QC807    #31/03/2014 - DRE - G4R6 : Lot2 --- 11/02/2013 - DRE - G4R02 : QC677, rechercher SCP-SRP uniquement si Dde non international ---FO2239 12/07/2005 "
CREATEUR = teguire
# DEBUT_CORPS
PCODE_PERE=Pdistribution
# ---------------------------------------------------------------------------
#
# FICHIER : Tta6dcZTA.src
#
# VERSION : %version: 19 %
#
# AUTEUR      : %created_by: loic %
#
# CREE le     : 13/03/02 15:05
#
# MODIFIE le  : %date_modified: 10/04/02 13:35 %
#
# DESCRIPTION :
#    Article detail de communication ZTA analogique efficace
#
# En entree :
#    Article : Tt6dcZTA.art
#
# En sortie :
#    FE
#    Delta_minute
#    TRAFIC
#    Symphonie
#
# HISTORIQUE :
#	21/03/2002 - CMI : FOEX500  	: NB_CSV si DEDE_NUM commence par 3212
#	10/04/2002 - LRA : FOEX559  	: NB_CSV si DEDE_NUM commence par 12
#	17/06/2002 - PSA : FO1510  	: Encapsulation pour le stockage en errone
#	19/06/2002 - PSA : FO1515  	: Dump des articles pour MSGA + integration de la redistribution
#	18/07/2002 - DRE : V4.5		: - Ajout variable EPORTABILITE et criteres pour FCT
#					  - Correction dans la mise au format FCT les cas DEDE=12 ou 3212
#					    des Complhments de Service sont supprimis.
#	15/10/2002 - PSA : FO18 et FO45 : modif format pour FOR
#			   FO55 : appel a CodeOperateur uniquement en cas portabilite entrante potentielle
#	28/10/2002 - RBE : specif.4.8 :Modif. CCD en fonction de la portabilite
#	14/10/2002 - RBE : MAJ champs CODCIR demandeur et demande
#		Ajout duplication metachamp (suppression dans dup_tab)
#	07/02/2003 - RBE - Envoi en redistrib. si pb acces fichiers de distrib.
#       11/02/2003 - MCH : GIR2C10 : bit d de INF_DEDE = 0 pour TRAFIC, FE, VTG_valo & DM
#	28/03/2003 - RBE - FO241 : envoi a symphonie si redist.
#	10/04/2003 - MCH - requete distri; date gmt + calcul longueur cle
#	22/07/2003 - DRE - Modif calcul gmt_date et codeoperateur
# 	03/09/2003 - DRE - FO392 : Initialisation des variables Pcode
#	08/09/2003 - MCH - G2R0CO: OPT + CODCIR
#	02/02/2004 - RBE - Ci: MAJ du chp TAX pour deltaminute
# 	18/03/2004 - RBE - FO585 : pas de MAJ de tax si AR appartient pas a 45S
# 	18/03/2004 - RBE - FO586 : filter pour FE le dede=A5
#	18/03/2004 - RBE - Suppression des verbes obsoletes ajout_tlv et retrait_tlv
#	23/03/2004 - RBE - FO591:si dede=A5 et si AR appartient a FE DC va pas a TRAFIC
# 	12/12/2003 - MCH - G2R0Ca : modif enveloppe - recup cfr pour c_libre de FE
#	27/05/2004 - RBE - FO688 : si ROC envoi a Symphonie et delta minute seulement
# 	11/06/2004 - NSA - G2R0Cl: integration des codes d erreurs
#	17/06/2004 - RBE - FO708 : Pour ROC envoi a DM incorrect
#	27/12/2004 - PKH-  G2R0Cbb :Identification des SCP entrant et sortant a partir du referentiel ACLA
#	31/01/2005 - PKH-  FO1079 DC TELEPHONE evolution du CCD_REEL sur SCP
#	15/02/2005 - PKH- Cbb 118XZ pour le 12
#       21/03/2005 - FAL - FO1164 Appel ACLA uniquement si necessaire
#       21/03/2005 - FAL - FO1171 reprise FO1079
#       09/05/2005 - FAL - FO1275 CS dans le cas du 12 et 118XYZ pour TRAFIC FE et DM
#	12/07/2005 - THE DRE FO 1385
#	13/07/2005 - DRE creation variable TAXE_CAL_SYMP
# 	15/09/2005 - DRE - FO1406 Retour Fonction i_LireInfoECC (doit etre != et non >)
#	02/05/2007 - FAL - G3R0Cr Suppression FCT , Prise en compte CCD  213 pour les SRP FT portes sortant
#	24/05/2007 - FAL - G3R0Cr FO2167 criteres DM
#	08/10/2007 - FAL - ParamFTSA-G3R3 lot2 FO2239 TAX de TRAFIC FE RPV DM ALLOFACT et CentaureVG
#	12/10/2011 - THE - VerfPcode
#	11/02/2013 - DRE - G4R02 : QC677, rechercher SCP-SRP uniquement si Dde non international
#	31/03/2014 - DRE - G4R6 : Lot2
#	25/04/2014 - DRE - G4R6 QC807
#
# ---------------------------------------------------------------------------

############################################################################
# Declarations
############################################################################
# Constantes
# VerifPcode
#DEFINITION	INST_45S		"45S"
DEFINITION	NUMTAB 			1
DEFINITION	ZONEMETRO		7
DEFINITION	INST_ACLA		"ACLA"
DEFINITION	C_Article		"Tta6dcZTA"
DEFINITION	C_InstSYMP		"SYMP"
DEFINITION	C_InstFE		"FE"
DEFINITION	C_InstTRAFIC		"TRAFIC"
DEFINITION	C_Tfe			"Tfe"
DEFINITION	C_Tdelta_minute		"Tdelta_minute"
DEFINITION	C_Ttrafic		"Ttrafic"
#DRE QC677
DEFINITION	CCD_Internat	 6

#DRE G4R6 lot2
DEFINITION	CPT_CPS_Loc	16
DEFINITION	CPT_CPS_RI	17
DEFINITION	C_DATCPS	"DATCPS" 
DEFINITION	TD_SVA		9
DEFINITION	C_INST_ALICE	"ALICE"
#\DRE G4R6 lot2


# Variables entieres
# VerfPcode
# Numero d'instances
REGISTRE	ENTIER		instDM
REGISTRE	ENTIER		instTRAFIC
REGISTRE	ENTIER		instFE
REGISTRE	ENTIER		instSYMPHO
# Variables de presence de champ
REGISTRE	ENTIER		T3nos_OK
REGISTRE	ENTIER		T3cab_OK
REGISTRE	ENTIER		T3sidr_OK
REGISTRE	ENTIER		T3cle_OK
REGISTRE	ENTIER		T3coca_OK
REGISTRE	ENTIER		T3cocav_OK
REGISTRE	ENTIER		T3idav_OK
# Variables associees a la valeur de champ
REGISTRE	ENTIER		CCD
REGISTRE	ENTIER		INFNOS
REGISTRE	ENTIER		SUP
REGISTRE	ENTIER		CLE1
REGISTRE	ENTIER		TAP
REGISTRE	ENTIER		CAX
REGISTRE	ENTIER		INF_IDAV
REGISTRE	ENTIER		ddebut
REGISTRE	ENTIER		dduree
REGISTRE	ENTIER		tax
REGISTRE	ENTIER		res
REGISTRE	ENTIER		res1
REGISTRE	ENTIER		resFE
REGISTRE	ENTIER		erreur
REGISTRE	ENTIER		code_errone
REGISTRE	ENTIER		EFFICACE
REGISTRE	ENTIER		bitA_TAP
REGISTRE	ENTIER		bitC_TAP
REGISTRE	ENTIER		bitF_TAP
REGISTRE	ENTIER		bitG_TAP
REGISTRE	ENTIER		bitH_TAP
REGISTRE	ENTIER		ic_C_CSV1
REGISTRE	ENTIER		IEZLT
REGISTRE	ENTIER		ICAR_REL
REGISTRE	ENTIER		ICAR_ABS
REGISTRE	ENTIER		EPORTABILITE
REGISTRE	ENTIER		b_SPORTABILITE
REGISTRE	ENTIER		instECCTRAFIC
REGISTRE	ENTIER		SRP_PORTE
REGISTRE	ENTIER		TAXE_CAL
REGISTRE	ENTIER		TAXE_CAL_SYMP
REGISTRE	ENTIER		EPORTABILITE_SCP
REGISTRE	ENTIER		SPORTABILITE_SCP
REGISTRE	ENTIER		instACLA
REGISTRE	ENTIER		CCD_REEL
REGISTRE	ENTIER		bREDIST
REGISTRE	ENTIER		trait_ok
REGISTRE	ENTIER		INF_DEDE_TRAF
REGISTRE	ENTIER		gmt_date
REGISTRE	ENTIER		L_NDR
REGISTRE	ENTIER		pref
REGISTRE	ENTIER		nb_digit
REGISTRE	ENTIER		OPT
REGISTRE	ENTIER		ROC
REGISTRE	ENTIER		dizaine
REGISTRE	ENTIER		unite
REGISTRE	ENTIER		cfr
REGISTRE	ENTIER		ENVELOPPE_NOK
#DRE G4R6 lot2
REGISTRE	ENTIER		Date_CPS
REGISTRE	ENTIER		instALICE 
REGISTRE	ENTIER		REJET
REGISTRE	ENTIER		longueur 


# Variables pointeurs
#REGISTRE	POINTEUR	pt_BUF1
REGISTRE	POINTEUR	pt_NDR
REGISTRE	POINTEUR	pt_NUMNOS
REGISTRE	POINTEUR	pt_NDE
REGISTRE	POINTEUR	pt_BETA
REGISTRE	POINTEUR	pt_BETAV
REGISTRE	POINTEUR	pt_NUM_IDAV
REGISTRE	POINTEUR	pt_nomECCFact
#REGISTRE	POINTEUR	SGTQS
REGISTRE	POINTEUR	pt_LIBELREDIST
REGISTRE	POINTEUR	pt_CODCIRDA
REGISTRE	POINTEUR	pt_CODCIRA

REGISTRE	POINTEUR	pt_BUF
REGISTRE	POINTEUR	pt_InfoCompl
REGISTRE	POINTEUR	pt_TRAF_FACT
REGISTRE	POINTEUR	pt_DM
REGISTRE	POINTEUR	pt_CodeOp
REGISTRE	POINTEUR	pt_CODESCP
# Variables utilisees pour la redistribution
REGISTRE	POINTEUR	pt_SGTQS
# DRE G4R6 lot2
REGISTRE	POINTEUR	pt_MESSAGE
REGISTRE	POINTEUR	pt_CODE_TARIF 
REGISTRE	POINTEUR	pt_TYPE_EDIT 
REGISTRE	POINTEUR	pt_TEMP
REGISTRE	POINTEUR	pt_NORM


#IFDEF trace_niv1 = 1
trace( "__FILE__:__LINE__ : Debut pcode de distribution" )
#ENDIF


# Allocation memoire pour les pointeurs
pt_BUF		 ="04567890123456789012345678912312345"
pt_BETA		 ="001112345"
pt_BETAV		 ="112212345"
pt_NDR		 = "123456789012345"
pt_NUMNOS		 = "123456789012345678901234567812345"
pt_NDE		 = "1234567890123456789012345612345"
pt_NUM_IDAV	 = "12345678901234567890123412345"
pt_InfoCompl	 = "123412345"
pt_TRAF_FACT	 = "1234567812345"
pt_DM		 = "8765432112345"
pt_nomECCFact	 = "67676767676767"
pt_LIBELREDIST	 = "78901234567890123456789012345612345"
pt_SGTQS	 = "12345678901212345"
pt_CodeOp	 = "54567890123456789012345678912312345"
pt_CODESCP	 = "151515151515151515"
#SGTQS		 = "999999999999"
pt_CODCIRDA	 = "53453546"
pt_CODCIRA		 = "78474546"
# DRE G4R6 lot2
pt_MESSAGE = "pt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGE"
pt_LIBELREDIST	 = "pt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDIST"
pt_CODE_TARIF 	 = "pt_CODE_TARIFpt_CODE_TARIF"
pt_TYPE_EDIT	 = "pt_TYPE_EDIT"
pt_TEMP		 = "pt_TEMP9179179179179179179179179179179179171917"
pt_NORM		 = "pt_NORMpt_NORMpt_NORMpt_NORMpt_NORMpt_NORMpt_NO"


# Initialisation variables entieres
instSYMPHO	 = 0
instFE		 = 0
instTRAFIC	 = 0
instDM		 = 0
EPORTABILITE	 = 0
TAXE_CAL	 = 0
TAXE_CAL_SYMP	 = 0
SUP		 = 0
CCD		 = 255
bREDIST		 = 0
nb_digit	 = 0
pref		 =-1
OPT		 = 0
ROC		 = 0
EFFICACE	 = 1
b_SPORTABILITE	 = 0
instECCTRAFIC	 = 0
ENVELOPPE_NOK	 = -1
EPORTABILITE_SCP = 0
SPORTABILITE_SCP = 0
#DRE G4R6 lot2
Date_CPS 	 = 0
instALICE 	 = -1
tax 		 = 0
REJET    = 0
longueur = 0
	


# Initialisation des pointeurs
i_strcpy(pt_nomECCFact,"")
i_strcpy(pt_CODESCP,"")
i_strcpy(pt_BUF,"")
i_strcpy(pt_NDR,"")
i_strcpy(pt_NUMNOS,"")
i_strcpy(pt_NDE,"")
i_strcpy(pt_BETA,"")
i_strcpy(pt_BETAV,"")
i_strcpy(pt_NUM_IDAV,"")
i_strcpy(pt_InfoCompl,"")
i_strcpy(pt_TRAF_FACT,"")
i_strcpy(pt_DM,"")
i_strcpy(pt_CodeOp,"")
i_strcpy(pt_SGTQS,"")
i_strcpy(pt_LIBELREDIST,"")
i_strcpy(pt_CODCIRDA,"")
i_strcpy(pt_CODCIRA,"")
# DRE G4R6 lot2
i_strcpy(pt_MESSAGE, "")
i_strcpy(pt_CODE_TARIF , "    ")
i_strcpy(pt_TYPE_EDIT , " ")
i_strcpy(pt_TEMP , " ")
i_strcpy(pt_NORM , "")


############################################################################
# Variables Fonctionnelles Globales
############################################################################

# ICAR_ABS et ICAR_REL
ICAR_ABS = i_get_art_field(g_iartin,$DATE)
SI ( ICAR_ABS == -1 )
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_get_art_field/DATE" )
	SAUT DISTRI_ERR
FINSI

ICAR_REL = i_date_locale(g_ieec,g_iartin,ICAR_ABS)
SI ( ICAR_REL == -1 )
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_date_locale/ICAR_ABS" )
	SAUT DISTRI_ERR
FINSI

# controle metachamps
ddebut=i_get_art_field(g_iartin,$ddebut)
SI (ddebut == -1)
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_get_art_field/ddebut" )
	SAUT DISTRI_ERR
FINSI

gmt_date = i_DHgetCe2gTime(NUMTAB,ZONEMETRO,ddebut)
SI(i_get_art_field(g_iartin,$dfin) == -1)
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_get_art_field/dfin" )
	SAUT DISTRI_ERR
FINSI

dduree=i_get_art_field(g_iartin,$dduree)
tax=i_get_art_field(g_iartin,$tax)

# CCD
SI (i_valid_field_n(g_iartin,$CCD))
ALORS
	CCD=i_get_art_field(g_iartin,$CCD)
FINSI
#trace1("CCD distribution =<%d>",CCD)
erreur=i_get_art_str(g_iartin,$NDE,pt_BUF)


#DRE G4R6 lot2
erreur = i_cree_art("Conversion",g_iartout10)

## Variable fonctionnelle REJET:
SI (i_valid_field_n(g_iartin,$T4rejet))
ALORS
	REJET = i_get_art_field(g_iartin,$REJET)
FINSI
#trace1("Valeur de REJET = <%d>",REJET)
#\DRE G4R6 lot2

###############
# DRE QC677 recuperation plus tot du TAXCAL calcule dans le traitement
SRP_PORTE = 0

SI ( i_valid_field_n(g_iartin, $TAXCAL) )
ALORS
	SRP_PORTE = 1
	TAXE_CAL = i_get_art_field( g_iartin, $Tta6dcZTA::TAXCAL )
FINSI

#DRE QC677
SI CCD != CCD_Internat
ALORS
	# Portabilite
	pt_CodeOp = CodeOperateurTable6(gmt_date, pt_BUF,"45S")
	
	SI (!i_strcmp(pt_CodeOp, "84208"))
	ALORS
		EPORTABILITE = 1
	SINON
		SI (pt_CodeOp != g_inull)
		ALORS
			b_SPORTABILITE = 1
		FINSI
	FINSI
	
	#trace1("EPORTABILITE=<%d>", EPORTABILITE)
	#trace1("CCD REEL = <%d>", CCD)
	
	######################## Portabiliti Entrante ou Sortante SCP (referentiel ACLA)#################################################
	#trace("------------RECHERCHE INSTANCE ACLA-------------")
	instACLA = i_LireInstanceECC(INST_ACLA)
	
	SI (!instACLA)
	ALORS
		trace ("---------------------Pas d'instance pour ACLA------------------------------")
		erreur = i_PlvMessEmettre(8501,2,g_iartin,"",3,"ACLA",C_Article,g_ieec)
		SAUT DISTRI_ERR
	FINSI
	#trace1("-----------------------instACLA=<%d>-----------------------------",instACLA)
	
	##############################################################################
	# Envoi Requetes Table de Distribution ACLA
	##############################################################################
	
	erreur=i_get_art_str(g_iartin,$NDE,pt_BUF)
	pt_CODESCP= CodeOperateurTable6(gmt_date,pt_BUF,"ACLA")
	#trace2("--------------------Tta6dcZTA -resultat de pt_CODESCP : <%s>-------------------",pt_CODESCP,"")
	
	SI (!i_strcmp(pt_CODESCP, "84008"))
	ALORS
		EPORTABILITE_SCP = 1
	
	SINON
		SI (i_strcmp(pt_CODESCP,"84008")!=0 && i_strcmp(pt_CODESCP,"")!=0)
		ALORS
			SPORTABILITE_SCP = 1
		FINSI
	FINSI
FINSI
#FIN DRE QC677

#---------------------------------------------------------------------------
# Variable fonctionnelle CCD_REEL (FO 1079)
#---------------------------------------------------------------------------

SI (EPORTABILITE == 1)
ALORS
	CCD_REEL = 212
SINON
	SI (EPORTABILITE_SCP == 1)
	ALORS
		CCD_REEL = 218
	SINON
		SI (b_SPORTABILITE == 1)
		ALORS
			CCD_REEL = 213
		SINON
			SI (SPORTABILITE_SCP == 1)
			ALORS
				CCD_REEL = 219
			SINON
				CCD_REEL = CCD
			FINSI
		FINSI
	FINSI
FINSI
#trace1("-Valeur de EPORTABILITE     =<%d>----",EPORTABILITE)
#trace1("-Valeur de EPORTABILITE_SCP =<%d>----",EPORTABILITE_SCP)
#trace1("-Valeur de SPORTABILITE_SCP =<%d>----",SPORTABILITE_SCP)
#trace1("-Valeur de CCD              =<%d>----",CCD)
#trace1("-Valeur de CCD_REEL         =<%d>----",CCD_REEL)

# CAX
SI (i_valid_field_n(g_iartin,$T3cap1))
ALORS
	T3cab_OK=0
	CAX=i_get_art_field(g_iartin,$CAX:0)
SINON
	T3cab_OK=1
	CAX=i_get_art_field(g_iartin,$CAX:1)
FINSI

#--------------------------
# ROC Rappel sur OCcupation DEDE=A5
#--------------------------
SI ((10*(i_get_art_fieldtab(g_iartin,$NDE,0))+i_get_art_fieldtab(g_iartin,$NDE,1)) == 105 )
ALORS
	ROC = 1
FINSI

SI (i_valid_field_n(g_iartin,$ZLT))
ALORS
	IEZLT=i_get_art_field(g_iartin,$ZLT)
	# Test de presence obligatoire supprime (voir MAF)
FINSI
#trace1(" IEZLT : <%d>", IEZLT)

# COCA/COCAV
SI (i_valid_field_n(g_iartin,$BETAV))
ALORS
	T3cocav_OK = 1
	erreur=i_get_art_str(g_iartin,$BETAV,pt_BETAV)
	nb_digit=i_strlen(pt_BETAV)
	SI (nb_digit>0)
	ALORS
		pref = g_iartin.BETAV[nb_digit-1]
		SI (nb_digit>1)
		ALORS
			pref = ( 10*(g_iartin.BETAV[nb_digit-2]) + pref )
			SI (nb_digit>2)
			ALORS
				pref = ( 100*(g_iartin.BETAV[nb_digit-3]) + pref )
				SI (nb_digit>3)
				ALORS
					pref = ( 1000*(g_iartin.BETAV[nb_digit-4]) + pref )
				FINSI
			FINSI
		FINSI
	FINSI
FINSI

SI ((pref != 8) && (pref != -1))
ALORS
	OPT = 1
FINSI

# ---------------------------------------------------
# Identification de la provenance de l'article
# ---------------------------------------------------
trait_ok = -1
# trait_ok : nb de passage en redistribution
trait_ok = i_LireRedistCpt()

SI ( trait_ok > 0 )
ALORS
	ENVELOPPE_NOK = 0
FINSI
# ETLA G2R0CA

#DRE G4R6 lot2 lignes remontees
# NDE
res=i_get_art_str(g_iartin,$NDE,pt_NDE)

############################################################################
# Envoi requetes Table de Distribution
############################################################################

#DRE G4R6 lot2
#####################################################################
# 	              Traitement C+S (CPS)

#DRE G4R6 QC807
#SI (REJET==CPT_CPS_Loc)
SI (REJET==CPT_CPS_Loc || REJET==CPT_CPS_RI)
ALORS
	i_strcpy(pt_TEMP, i_get_tab_field( "TDATCPS", gmt_date, C_DATCPS ))

	erreur = i_set_art_str (g_iartout10,$Conversion::DATE_STR,pt_TEMP)
	Date_CPS = i_get_art_field(g_iartout10, $Conversion::DATE_ASC)
			
	SI ddebut < Date_CPS
	ALORS
		erreur = i_format_str2(pt_MESSAGE," AR <%s> avec date DC inferieure a la date d'activation <%s> de la facturation CPS",pt_NDE,pt_TEMP)
		code_errone = 0xA080
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre( 8599, 1, g_iartin,"", 3,code_errone, C_Article, pt_MESSAGE )
		SAUT DISTRI_DIV
	SINON
		#######################################
		#  Soumission de la requete de consultation d'une table de distribution ALICE
		#######################################
		SI ( i_valid_field_n(g_iartin, $NORMAL ) )
		ALORS
			erreur = i_get_art_str(g_iartin, $NORMAL, pt_NORM )
		SINON
			SI ( i_valid_field_n(g_iartin, $NDE ) )
			ALORS
				erreur = i_get_art_str(g_iartin, $NDE, pt_NORM)
			FINSI
		FINSI
		
		i_get_sub_str(pt_NORM, 0, 0, pt_BUF)
		
		SI (i_strcmp(pt_BUF, "0") == 0)
		ALORS
			i_get_sub_str(pt_NORM, 1, -1, pt_NORM)
		FINSI
		
		longueur = i_conv_ascii_dcb (pt_NORM, pt_TEMP)
		SI (i_EnvoiReqConsTabDist( TD_SVA,gmt_date,pt_TEMP,longueur,0,1) != 0)
		ALORS
			#trace("Erreur i_EnvoiReqConsTabDist ALICE")
			bREDIST = 1
			i_strcpy(pt_LIBELREDIST,"Echec sur i_EnvoiReqConsTabDistDouble ALICE ")
		FINSI
		
		#######################################
		# Recherche de l'instance ECC ALICE
		#######################################
		instALICE = i_LireInstanceECC(C_INST_ALICE)
		SI (!instALICE)
		ALORS
			#trace("Pas d'instance pour ALICE !")
			erreur = i_PlvMessEmettre(8501,1,g_iartin,"",3,C_INST_ALICE,C_Article,g_ieec)
			SAUT DISTRI_ERR
		FINSI
		#trace1("instALICE  =<%d>",instALICE)	

		#######################################
		# Lecture Resultat requete ALICE
		#######################################
		erreur = i_LireReqConsTabDist()
		#trace1("RETOUR i_LireReqConsTabDist retour requette ALICE, erreur=<%d>",erreur)
		SI ( erreur != 0 )
		ALORS
			#trace1( "Erreur i_LireReqConsTabDist ALICE: <%d>", erreur)
			bREDIST = 1
			i_strcpy(pt_LIBELREDIST,"Echec sur i_LireReqConsTabDistDouble ALICE ")
		FINSI
		res = i_LireInfoECC( instALICE, 0 )
		
		SI (res != 0)
		ALORS
			# AR present dans ALICE
			erreur = i_LireChaineInfo( res, 0, 4, pt_BUF )
			SI i_strcmp(pt_BUF,"") != 0
			ALORS
				i_strcpy(pt_CODE_TARIF,pt_BUF)
			SINON
				# info complementaire CODE_TARIF vide
				bREDIST = 1
				erreur = i_format_str2(pt_LIBELREDIST," AR <%s> trouve dans LAR ALICE mais aucune info complementaire valorisee",pt_NORM,0)
			FINSI
			
			erreur = i_LireChaineInfo( res, 4, 1, pt_BUF )
			SI i_strcmp(pt_BUF,"") != 0
			ALORS
				i_strcpy(pt_TYPE_EDIT,pt_BUF)
			SINON
				# info complementaire TYPE_EDIT vide
				bREDIST = 1
				erreur = i_format_str2(pt_LIBELREDIST," AR <%s> trouve dans LAR ALICE mais aucune info complementaire valorisee",pt_NORM,0)
			FINSI
		SINON
			bREDIST = 1
			erreur = i_format_str2(pt_LIBELREDIST," AR <%s> non trouve dans ALICE",pt_NORM,0)
		FINSI
	FINSI
FINSI
#\DRE G4R6 lot2



L_NDR = i_get_art_fieldlength(g_iartin,$NDR)
SI ( L_NDR % 2 == 0 )
ALORS
	L_NDR = L_NDR / 2
SINON
	L_NDR = L_NDR / 2 + 1
FINSI
res=i_EnvoiReqConsTabDistDouble( TD_Fixe, TD_Inter, gmt_date,i_get_art_fieldptr(g_iartin,$NDR), L_NDR, L_NDR, 1, 0, 1)

SI ( res !=0 )
ALORS
	#trace1("Erreur i_EnvoiReqConsTabDistDouble %d",res)
	#pLIBELREDIST = "i_EnvoiReqConsTabDistDouble"
	i_strcpy(pt_LIBELREDIST,"i_EnvoiReqConsTabDistDouble")
	bREDIST = 1
FINSI

############################################################################
# Controles
############################################################################

############################################################################
# Recherche Instances des ECC
############################################################################

# SYMPHONIE
instSYMPHO=i_LireInstanceECC(C_InstSYMP)

SI !(instSYMPHO > 0)
ALORS
	code_errone = 0xA0B0
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstSYMP,C_Article)
	SAUT DISTRI_ERR
FINSI

SI (!bREDIST)
ALORS
	# FE
	instFE=i_LireInstanceECC(C_InstFE)
	SI !(instFE > 0)
	ALORS
		code_errone = 0xA0B0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstFE,C_Article)
		SAUT DISTRI_ERR
	FINSI

	# TRAFIC
	instTRAFIC=i_LireInstanceECC(C_InstTRAFIC)
	SI !(instTRAFIC > 0)
	ALORS
		code_errone = 0xA0B0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstTRAFIC,C_Article)
		SAUT DISTRI_ERR
	FINSI
	
	# FCT
FINSI

############################################################################
# Duplication Symphonie
############################################################################

# DRE G4R6 bloc deplace
SI (i_dup_art_id(g_iartin,g_iartout))
ALORS
	code_errone = 0xA0D0
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,"pour Symphonie",C_Article)

	SAUT DISTRI_ERR
FINSI
# \DRE G4R6 bloc deplace

# retrait du TLV T3ce si ajoute par le traitement
SI (i_valid_field_n(g_iartin,$T3ce))
ALORS
	erreur=i_get_art_str(g_iartin, $Tta6dcZTA::CODCIRDA,pt_CODCIRDA)

	SI (g_iartin.CODCIRDA[2] > 9)
	ALORS
		i_get_sub_str(pt_CODCIRDA,2,5,pt_CODCIRDA)
	SINON
		i_get_sub_str(pt_CODCIRDA,1,5,pt_CODCIRDA)
	FINSI

	erreur=i_get_art_str(g_iartin, $Tta6dcZTA::CODCIRA,pt_CODCIRA)

	SI (g_iartin.CODCIRA[2] > 9)
	ALORS
		i_get_sub_str(pt_CODCIRA,2,5,pt_CODCIRA)
	SINON
		i_get_sub_str(pt_CODCIRA,1,5,pt_CODCIRA)
	FINSI

	# DRE G4R6 Retrait T3ce dans g_iartout pour conserver g_iartin::T3ce en retour de redistri
	# retrait du TLV T3ce si ajoute par le traitement
	# erreur = i_supprChamp(g_iartin,"T3ce")
	erreur = i_supprChamp(g_iartout,"T3ce")
FINSI

res=i_rename_art(g_iartout,"Tsymphta6ZTA")

# champ CCD
res=i_ajoutChampNum(g_iartout,$Tsymphta6ZTA::T4ccd,$Tsymphta6ZTA::CCD,0)

# SGTQS
res=i_ajoutChampNum(g_iartout,$Tsymphta6ZTA::T4sgtqs,$Tsymphta6ZTA::SGTQS,0)

# ECC_FACT
res=i_ajoutChampNum(g_iartout,$Tsymphta6ZTA::T4eccfact,$Tsymphta6ZTA::ECC_FACT,0)

# IEZLT
# Test de presence de IEZLT car si absent, pas d'IEZLT en sortie

SI (IEZLT != -1)
ALORS
	res = i_ajoutChampNum(g_iartout,$Tsymphta6ZTA::T4iezlt,$Tsymphta6ZTA::IEZLT,0)
FINSI

# TAXE
SI ( (SRP_PORTE == 1) && (tax == 0) )
ALORS
	TAXE_CAL_SYMP = TAXE_CAL
SINON
	TAXE_CAL_SYMP = tax
FINSI

SI (i_valid_field_n(g_iartin,$Tta6dcZTA::T3cap1))
ALORS
	erreur=i_set_art_field(g_iartout, $Tsymphta6ZTA::TAXE:0, TAXE_CAL_SYMP)
SINON
	erreur=i_set_art_field(g_iartout, $Tsymphta6ZTA::TAXE:1, TAXE_CAL_SYMP)
FINSI

############################################################################
# Attente requetes Table de Distribution
############################################################################

SI (!bREDIST)
ALORS
	res=i_LireReqConsTabDist()

	SI ( res != 0 )
	ALORS
		#trace1( "Erreur i_LireReqConsTabDist: <%d>", res)
		#pLIBELREDIST = "i_LireReqConsTabDist"
		i_strcpy(pt_LIBELREDIST,"i_LireReqConsTabDist")
		bREDIST = 1
	FINSI
FINSI

############################################################################
# Critere de distribution
############################################################################

# ajout de l'EEC SYMPHONIE a la liste courante des EEC
res=i_AjouterCouranteECC(instSYMPHO)

#---------------------------------------------------------------------------
# Criteres communs
#---------------------------------------------------------------------------
resFE =i_LireInfoECC(instFE,0)

#---------------------------------------------------------------------------
# FCT
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# FE
#---------------------------------------------------------------------------
SI ((resFE != 0) && !OPT && !bREDIST && !ROC)
ALORS
	res1=i_AjouterCouranteECC(instFE)
FINSI

#---------------------------------------------------------------------------
# TRAFIC
#---------------------------------------------------------------------------
SI ((resFE == 0) && !OPT && !ROC && !bREDIST)
ALORS
	res=i_LireInfoECC(instTRAFIC,0)

	SI (res != 0)
	ALORS
		res1=i_LireChaineInfo(res,0,3,pt_InfoCompl)
		res1=i_format_str2(pt_TRAF_FACT,"TRAF%s",pt_InfoCompl,0)
		instECCTRAFIC=i_LireInstanceECC(pt_TRAF_FACT)

		SI (!instECCTRAFIC)
		ALORS
			code_errone = 0xA0B0
			code_errone = code_errone + EFFICACE
			erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,pt_TRAF_FACT,C_Article)

			SAUT DISTRI_ERR
		FINSI
		res=i_AjouterCouranteECC(instECCTRAFIC)
	SINON
		#pLIBELREDIST = "Indicatif inconnu de MAJ2G"
		i_strcpy(pt_LIBELREDIST,"Indicatif inconnu de MAJ2G")
		bREDIST = 1
		SAUT AVANT_REDIST
	FINSI
FINSI


#---------------------------------------------------------------------------
# DM
#---------------------------------------------------------------------------
SI ( (resFE != 0) || OPT || ROC) && !bREDIST
ALORS
	res=i_LireInfoECC(instTRAFIC,0)

	SI (res != 0)
	ALORS
		erreur=i_LireChaineInfo(res,0,3,pt_InfoCompl)
		erreur=i_format_str2(pt_DM,"DM%s",pt_InfoCompl,0)
		instDM=i_LireInstanceECC(pt_DM)
		SI (!instDM)
		ALORS
			code_errone = 0xA0B0
			code_errone = code_errone + EFFICACE
			erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,pt_DM,C_Article)
			SAUT DISTRI_ERR
		FINSI

		SI (resFE)
		ALORS
			# Recuperation du code CFR pour meta c_libre de FE
			dizaine = i_LireEntierInfo(res,0,1)
			unite = i_LireEntierInfo(res,1,1)
			cfr = (dizaine & 0x0F) * 10 + (unite & 0x0F)

			SI ( ENVELOPPE_NOK )
			ALORS
				#IFDEF trace_niv1 = 1
				trace("__FILE__:__LINE__ ======> Creation enveloppe CFR/FE")
				#ENDIF
				ENVELOPPE_NOK = i_add_opt("E_Tta6dcZTA")
				erreur = i_set_attr_val_n($E_Tta6dcZTA::T1,0x22)
				erreur = i_set_attr_val_n($E_Tta6dcZTA::L1,0x07)
			FINSI
			erreur = i_set_attr_val_n($E_Tta6dcZTA::CFR,cfr)
			#IFDEF trace_niv1 = 1
			trace1("__FILE__:__LINE__ ======> code CFR : <%d> ", cfr)
			trace1("__FILE__:__LINE__ ======> ENVELOPPE_NOK : <%d> ", ENVELOPPE_NOK)
			#ENDIF
		FINSI
		erreur=i_AjouterCouranteECC(instDM)
	SINON
		#pLIBELREDIST = "Indicatif inconnu de MAJ2G"
		i_strcpy(pt_LIBELREDIST,"Indicatif inconnu de MAJ2G")
		bREDIST = 1
		SAUT AVANT_REDIST
	FINSI
FINSI

############################################################################
# Validation de la liste des ECCs destinatrices
############################################################################

res=i_ValiderListeECC(0,0,0,0)

############################################################################
# Mises au format
############################################################################

#---------------------------------------------------------------------------
# Valeurs communes
#---------------------------------------------------------------------------

# Initialisation des variables de presence a l etat non present
T3nos_OK=0
T3sidr_OK=0
T3cle_OK=0
T3coca_OK=0
T3cocav_OK=0
T3idav_OK=0

# NDR
res=i_get_art_str(g_iartin,$NDR,pt_NDR)

# INFNOS,NUMNOS
SI (i_valid_field_n(g_iartin,$NUMNOS))
ALORS
	T3nos_OK=1
	INFNOS=i_get_art_field(g_iartin,$INFNOS)
	res=i_get_art_str(g_iartin,$NUMNOS,pt_NUMNOS)
FINSI

# SUP
SI T3cab_OK
ALORS
	SUP=i_get_art_field(g_iartin,$SUP)
FINSI

# T3sidr
SI (i_valid_field_n(g_iartin,$T3sidr))
ALORS
	T3sidr_OK=1
FINSI

# CLE1
SI (i_valid_field_n(g_iartin,$T3cle))
ALORS
	T3cle_OK=1
	CLE1=i_get_art_field(g_iartin,$CLE1)
FINSI

# TAP
SI T3cab_OK
ALORS
	TAP=i_get_art_field(g_iartin,$TAP:1)
SINON
	TAP=i_get_art_field(g_iartin,$TAP:0)
FINSI

bitA_TAP=(TAP & 0x80) >>4
bitC_TAP=(TAP & 0x20) >>4
bitF_TAP=(TAP & 0x04)
bitG_TAP=(TAP & 0x02)
bitH_TAP=(TAP & 0x01)

# INF_IDAV, NUM_IDAV
SI (i_valid_field_n(g_iartin,$T3idav))
ALORS
	T3idav_OK=1
	INF_IDAV=i_get_art_field(g_iartin,$INF_IDAV)
	res=i_get_art_str(g_iartin,$NUM_IDAV,pt_NUM_IDAV)
FINSI

# BETA
SI (i_valid_field_n(g_iartin,$T3coca))
ALORS
	T3coca_OK=1
	res=i_get_art_str(g_iartin,$BETA,pt_BETA)
FINSI

#---------------------------------------------------------------------------
# FE
#---------------------------------------------------------------------------

SI !(i_ChercherCouranteECC(instFE)) && !bREDIST
ALORS
	# ECC_FACT
	# VerifPcode
	#nomECCFact="FE"
	i_strcpy(pt_nomECCFact,"FE")

	# utilisation de la table de duplication
	SI (i_dup_art_dest(g_iartin,g_iartout2,C_Tfe))
	ALORS
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,C_Tfe,C_Article)
		SAUT DISTRI_ERR
	FINSI


	# DATE
	res=i_set_art_field(g_iartout2,$Tfe::DATE,ICAR_REL)

	# SERVICE
	res=i_set_art_str(g_iartout2,$Tfe::SERVICE,"00")

	# IDUS_NUM
	i_replace_str(pt_NDR,"BCDE","AJSC",pt_NDR)
	res=i_set_art_str(g_iartout2,$Tfe::IDUS_NUM,pt_NDR)

	# DEDE_NUM
	i_replace_str(pt_NDE,"BC","*#",pt_NDE)
	res=i_set_art_str(g_iartout2,$Tfe::DEDE_NUM,pt_NDE)

	# Paliatif bit D DEDE_INF
	INF_DEDE_TRAF = i_get_art_field(g_iartout2,$Tfe::DEDE_INF)
	INF_DEDE_TRAF = INF_DEDE_TRAF & 0xEF
	res = i_set_art_field(g_iartout2,$Tfe::DEDE_INF,INF_DEDE_TRAF)

	# E
	res=i_set_art_str(g_iartout2,$Tfe::E,"0")

	# CAX
	res=i_set_art_field(g_iartout2,$Tfe::CAX,CAX)

	# NDS_INF,NDS_NUM
	SI T3nos_OK
	ALORS
		res=i_set_art_field(g_iartout2,$Tfe::NDS_INF,INFNOS)
		res=i_set_art_str(g_iartout2,$Tfe::NDS_NUM,pt_NUMNOS)
	FINSI

	# SUP
	SI T3cab_OK
	ALORS
		res=i_set_art_field(g_iartout2,$Tfe::SUP,SUP)
	FINSI

	#champ DUREE
	erreur=i_set_art_field(g_iartout2, $Tfe::DUREE, dduree)

	#champ TAX
#DRE G4R6 Lot2
	SI (REJET==CPT_CPS_Loc)
	ALORS
		erreur=i_set_art_field(g_iartout2, $Tfe::TAX, tax)
	SINON
		SI ( (SRP_PORTE == 1) && (tax == 0) )
		ALORS
			erreur=i_set_art_field(g_iartout2,$Tfe::TAX,TAXE_CAL)
		SINON
			erreur=i_set_art_field(g_iartout2,$Tfe::TAX,tax)
		FINSI
	FINSI
#\DRE G4R6 Lot2

	# CLASSDEST
	res=i_set_art_field(g_iartout2,$Tfe::CLASSDEST,CCD_REEL)

	# MES1
	res=i_set_art_field(g_iartout2,$Tfe::MES1,255)

	# MES2
	res=i_set_art_field(g_iartout2,$Tfe::MES2,255)

	# recuperation de l indice de C_CSV1 dans Tfe, pour l'algo suivant
	ic_C_CSV1=i_get_field_num(g_iartout2,"C_CSV1")

	# NB_CSV, C_CSV et OP_CSV
	res1=0
	#IFDEF trace_niv1 = 1
	trace2( "__FILE__:__LINE__ : NDE = <%s>", pt_NDE, "" )
	#ENDIF

	SI ( (i_strplcmp( pt_NDE, "12", 0, 2 ) ==0) || (i_strplcmp( pt_NDE, "118", 0, 3 )==0) )
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"H")
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"A")
	SINON
		SI !( i_strplcmp( pt_NDE, "3212", 0, 4 ) )
		ALORS
			#IFDEF trace_niv3 = 1
			trace2( "__FILE__:__LINE__ : Pour FE : NDE = <%s>", pt_NDE, "" )
			#ENDIF
			res1=res1+1
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"Z")
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"A")
		FINSI
	FINSI
	SI T3sidr_OK
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"C")
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI
	SI (T3cle_OK && (CLE1 == 0x0B))
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"30")
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI
	SI  bitA_TAP
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"T")
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI
	SI bitC_TAP
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"3")
		res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI
	SI  (res1<5)
	ALORS
		SI bitF_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"D")
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI
		SI bitG_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"N")
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI
		SI bitH_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1),"O")
			res=i_set_art_str(g_iartout2,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI
	FINSI
	res=i_set_art_field(g_iartout2,$Tfe::NB_CSV,res1)

	# COCA
	SI T3coca_OK
	ALORS
		res=i_set_art_str(g_iartout2,$Tfe::COCA,pt_BETA)
	FINSI

	# COCAV
	SI T3cocav_OK
	ALORS
		res=i_set_art_str(g_iartout2,$Tfe::COCAV,pt_BETAV)
	FINSI

	# IDAV_INF,IDAV_NUM
	SI T3idav_OK
	ALORS
		res=i_set_art_field(g_iartout2,$Tfe::IDAV_INF,INF_IDAV)
		res=i_set_art_str(g_iartout2,$Tfe::IDAV_NUM,pt_NUM_IDAV)
	FINSI
# DRE G4R6 Lot2
	# TYPE_EDIT
	erreur=i_set_art_str(g_iartout2, $Tfe::TYPE_EDIT, pt_TYPE_EDIT)
	
	# CODE_TARIF
	erreur=i_set_art_str(g_iartout2, $Tfe::CODE_TARIF, pt_CODE_TARIF)
# \DRE G4R6 Lot2

FINSI

#---------------------------------------------------------------------------
# DM
#---------------------------------------------------------------------------

SI !(i_ChercherCouranteECC(instDM)) && !bREDIST
ALORS
	# utilisation de la table de duplication
	SI (i_dup_art_dest(g_iartin,g_iartout3,C_Tdelta_minute))
	ALORS
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,C_Tdelta_minute,C_Article)
		SAUT DISTRI_ERR
	FINSI

	# DATE
	res=i_set_art_field(g_iartout3,$Tdelta_minute::DATE,ICAR_REL)

	# DOMAINE
	SI ( (CCD == 0x18) && !EPORTABILITE  )
	ALORS
		res=i_set_art_str(g_iartout3,$Tdelta_minute::DOMAINE,"96")
	SINON
		res=i_set_art_str(g_iartout3,$Tdelta_minute::DOMAINE,"05")
	FINSI

	# SERVICE
	res=i_set_art_str(g_iartout3,$Tdelta_minute::SERVICE,"00")

	# IDUS_NUM
	i_replace_str(pt_NDR,"BCDE","AJSC",pt_NDR)
	res=i_set_art_str(g_iartout3,$Tdelta_minute::IDUS_NUM,pt_NDR)

	# DEDE_NUM
	i_replace_str(pt_NDE,"BC","*#",pt_NDE)
	res=i_set_art_str(g_iartout3,$Tdelta_minute::DEDE_NUM,pt_NDE)

	# Paliatif bit D DEDE_INF
	INF_DEDE_TRAF = i_get_art_field(g_iartout3,$Tdelta_minute::DEDE_INF)
	INF_DEDE_TRAF = INF_DEDE_TRAF & 0xEF
	res = i_set_art_field(g_iartout3,$Tdelta_minute::DEDE_INF,INF_DEDE_TRAF)

	# E
	res=i_set_art_str(g_iartout3,$Tdelta_minute::E,"0")

	# CAX
	res=i_set_art_field(g_iartout3,$Tdelta_minute::CAX,CAX)

	#champ TAX
	erreur=i_set_art_field(g_iartout3,$Tdelta_minute::TAX,tax)


	# NDS_NUM
	SI T3nos_OK
	ALORS
		res=i_set_art_str(g_iartout3,$Tdelta_minute::NDS_NUM,pt_NUMNOS)
	FINSI

	# SUP
	SI T3cab_OK
	ALORS
		res=i_set_art_field(g_iartout3,$Tdelta_minute::SUP,SUP)
	FINSI

	#champ DUREE
	erreur=i_set_art_field(g_iartout3, $Tdelta_minute::DUREE, dduree)

	#champ TAX
	SI ( (SRP_PORTE == 1) && (tax == 0) )
	ALORS
		erreur=i_set_art_field(g_iartout3,$Tdelta_minute::TAX,TAXE_CAL)
	SINON
		erreur=i_set_art_field(g_iartout3,$Tdelta_minute::TAX,tax)
	FINSI

	# CLASSDEST
	res=i_set_art_field(g_iartout3,$Tdelta_minute::CLASSDEST,CCD_REEL)

	# MES1
	res=i_set_art_field(g_iartout3,$Tdelta_minute::MES1,255)

	# MES2
	res=i_set_art_field(g_iartout3,$Tdelta_minute::MES2,255)

	# recuperation de l indice de C_CSV1 dans Tfe, pour l'algo suivant
	ic_C_CSV1=i_get_field_num(g_iartout3,"C_CSV1")

	# NB_CSV, C_CSV et OP_CSV
	res1=0
	#IFDEF trace_niv1 = 1
	trace2( "__FILE__:__LINE__ : NDE = <%s>", pt_NDE, "" )
	#ENDIF

	SI ( (i_strplcmp( pt_NDE, "12", 0, 2 ) ==0) || (i_strplcmp( pt_NDE, "118", 0, 3 )==0) )
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"H")
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"A")
	SINON
		SI !( i_strplcmp( pt_NDE, "3212", 0, 4 ) )
		ALORS
			#IFDEF trace_niv3 = 1
			trace2( "__FILE__:__LINE__ : Pour DM : NDE = <%s>", pt_NDE, "" )
			#ENDIF
			res1=res1+1
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"Z")
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"A")
		FINSI
	FINSI

	SI T3sidr_OK
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"C")
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI (T3cle_OK && (CLE1 == 0x0B))
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"30")
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI  bitA_TAP
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"T")
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI bitC_TAP
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"3")
		res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI  (res1<5)
	ALORS

		SI bitF_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"D")
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI

		SI bitG_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"N")
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI

		SI bitH_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1),"O")
			res=i_set_art_str(g_iartout3,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI
	FINSI
	res=i_set_art_field(g_iartout3,$Tdelta_minute::NB_CSV,res1)

	# STY
	res=i_set_art_str(g_iartout3,$Tdelta_minute::STY,"FF")

	# COCA
	SI T3coca_OK
	ALORS
		res=i_set_art_str(g_iartout3,$Tdelta_minute::COCA,pt_BETA)
	FINSI

	# COCAV
	SI T3cocav_OK
	ALORS
		res=i_set_art_str(g_iartout3,$Tdelta_minute::COCAV,pt_BETAV)
	FINSI

	# IDAV_INF,IDAV_NUM
	SI T3idav_OK
	ALORS
		res=i_set_art_field(g_iartout3,$Tdelta_minute::IDAV_INF,INF_IDAV)
		res=i_set_art_str(g_iartout3,$Tdelta_minute::IDAV_NUM,pt_NUM_IDAV)
	FINSI

	#champ SGTQS
	res=i_set_art_str(g_iartout3, $Tdelta_minute::SGTQS,i_LireEECSGTQS(g_ieec) )
FINSI

#---------------------------------------------------------------------------
# TRAFIC
#---------------------------------------------------------------------------

SI !(i_ChercherCouranteECC(instECCTRAFIC)) && !bREDIST
ALORS
	# ECC_FACT
	# VerifPcode
	#nomECCFact=pt_TRAF_FACT
	i_strcpy(pt_nomECCFact,pt_TRAF_FACT)

	# utilisation de la table de duplication
	SI (i_dup_art_dest(g_iartin,g_iartout4,C_Ttrafic))
	ALORS
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,C_Ttrafic,C_Article)
		SAUT DISTRI_ERR
	FINSI

	# DATE
	res=i_set_art_field(g_iartout4,$Ttrafic::DATE,ICAR_REL)

	# DOMAINE
	res=i_set_art_str(g_iartout4,$Ttrafic::DOMAINE,"05")

	# SERVICE
	res=i_set_art_str(g_iartout4,$Ttrafic::SERVICE,"00")

	# IDUS_NUM
	i_replace_str(pt_NDR,"BCDE","AJSC",pt_NDR)
	res=i_set_art_str(g_iartout4,$Ttrafic::IDUS_NUM,pt_NDR)

	# DEDE_NUM
	i_replace_str(pt_NDE,"BC","*#",pt_NDE)
	res=i_set_art_str(g_iartout4,$Ttrafic::DEDE_NUM,pt_NDE)

	# Paliatif bit D DEDE_INF
	INF_DEDE_TRAF = i_get_art_field(g_iartout4,$Ttrafic::DEDE_INF)
	INF_DEDE_TRAF = INF_DEDE_TRAF & 0xEF
	res = i_set_art_field(g_iartout4,$Ttrafic::DEDE_INF,INF_DEDE_TRAF)

	# E
	res=i_set_art_str(g_iartout4,$Ttrafic::E,"0")

	# CAX
	res=i_set_art_field(g_iartout4,$Ttrafic::CAX,CAX)

	# NDS_NUM
	SI T3nos_OK
	ALORS
		res=i_set_art_str(g_iartout4,$Ttrafic::NDS_NUM,pt_NUMNOS)
	FINSI

	# SUP
	SI T3cab_OK
	ALORS
		res=i_set_art_field(g_iartout4,$Ttrafic::SUP,SUP)
	FINSI

	#champ DUREE
	erreur=i_set_art_field(g_iartout4, $Ttrafic::DUREE, dduree)

	#champ TAX
#DRE G4R6 Lot2
	SI (REJET==CPT_CPS_Loc)
	ALORS
		erreur=i_set_art_field(g_iartout4, $Ttrafic::TAX, tax)
	SINON
		SI ( (SRP_PORTE == 1) && (tax == 0) )
		ALORS
			erreur=i_set_art_field(g_iartout4, $Ttrafic::TAX,TAXE_CAL)
		SINON
			erreur=i_set_art_field(g_iartout4, $Ttrafic::TAX, tax)
		FINSI
	FINSI
#\DRE G4R6 Lot2

	# CLASSDEST
	res=i_set_art_field(g_iartout4,$Ttrafic::CLASSDEST,CCD_REEL)

	# MES1
	res=i_set_art_field(g_iartout4,$Ttrafic::MES1,255)

	# MES2
	res=i_set_art_field(g_iartout4,$Ttrafic::MES2,255)

	# recuperation de l indice de C_CSV1 dans Tfe, pour l'algo suivant
	ic_C_CSV1=i_get_field_num(g_iartout4,"C_CSV1")

	# NB_CSV, C_CSV et OP_CSV
	res1=0
	#IFDEF trace_niv1 = 1
	trace2( "__FILE__:__LINE__ : NDE = <%s>", pt_NDE, "" )
	#ENDIF

	SI ( (i_strplcmp( pt_NDE, "12", 0, 2 ) ==0) || (i_strplcmp( pt_NDE, "118", 0, 3 )==0) )
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"H")
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"A")
	SINON
		SI !( i_strplcmp( pt_NDE, "3212", 0, 4 ) )
		ALORS
			#IFDEF trace_niv3 = 1
			trace2( "__FILE__:__LINE__ : Pour TRAFIC : NDE = <%s>", pt_NDE, "" )
			#ENDIF
			res1=res1+1
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"Z")
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"A")
		FINSI
	FINSI

	SI T3sidr_OK
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"C")
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI (T3cle_OK && (CLE1 == 0x0B))
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"30")
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI  bitA_TAP
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"T")
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI bitC_TAP
	ALORS
		res1=res1+1
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"3")
		res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"U")
	FINSI

	SI  (res1<5)
	ALORS
		SI bitF_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"D")
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI

		SI bitG_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"N")
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI

		SI bitH_TAP
		ALORS
			res1=res1+1
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1),"O")
			res=i_set_art_str(g_iartout4,ic_C_CSV1+2*(res1-1)+1,"U")
		FINSI
	FINSI
	res=i_set_art_field(g_iartout4,$Ttrafic::NB_CSV,res1)

	# STY
	res=i_set_art_str(g_iartout4,$Ttrafic::STY,"FF")

	# COCA
	SI T3coca_OK
	ALORS
		res=i_set_art_str(g_iartout4,$Ttrafic::COCA,pt_BETA)
	FINSI

	# COCAV
	SI T3cocav_OK
	ALORS
		res=i_set_art_str(g_iartout4,$Ttrafic::COCAV,pt_BETAV)
	FINSI

	# IDAV_INF,IDAV_NUM
	SI T3idav_OK
	ALORS
		res=i_set_art_field(g_iartout4,$Ttrafic::IDAV_INF,INF_IDAV)
		res=i_set_art_str(g_iartout4,$Ttrafic::IDAV_NUM,pt_NUM_IDAV)
	FINSI

	#champ SGTQS
	res=i_set_art_str(g_iartout4, $Ttrafic::SGTQS,i_LireEECSGTQS(g_ieec) )
# DRE G4R6 Lot2
	# TAG
	erreur=i_set_art_str(g_iartout4, $Ttrafic::TAG, " ")
	
	# TYPE_EDIT
	erreur=i_set_art_str(g_iartout4, $Ttrafic::TYPE_EDIT, pt_TYPE_EDIT)
	
	# CODE_TARIF
	erreur=i_set_art_str(g_iartout4, $Ttrafic::CODE_TARIF, pt_CODE_TARIF)
# \DRE G4R6 Lot2

FINSI

#---------------------------------------------------------------------------
# FCT
#---------------------------------------------------------------------------

POINT AVANT_REDIST

SI (trait_ok == 0)
ALORS
	#---------------------------------------------------------------------------
	# Complements Symphonie
	#---------------------------------------------------------------------------

	# CCD
	res= i_set_art_field(g_iartout,$Tsymphta6ZTA::CCD,CCD_REEL)

	# SGTQS
	res=i_set_art_str(g_iartout,$Tsymphta6ZTA::SGTQS,i_LireEECSGTQS(g_ieec))

	# ECC_FACT
	res=i_set_art_str(g_iartout,$Tsymphta6ZTA::ECC_FACT,pt_nomECCFact)

	# IEZLT
	SI (IEZLT != -1)
	ALORS
		res= i_set_art_field(g_iartout,$Tsymphta6ZTA::IEZLT,IEZLT)
	FINSI

	# CODCIRDR
	erreur=i_ajoutChampNum( g_iartout, $Tsymphta6ZTA::T4codcirdr, $Tsymphta6ZTA::CODCIRDR, 0 )
	erreur=i_set_art_str( g_iartout, $Tsymphta6ZTA::CODCIRDR, pt_CODCIRDA )

	# CODCIR
	erreur=i_ajoutChampNum( g_iartout, $Tsymphta6ZTA::T4codcir, $Tsymphta6ZTA::CODCIR, 0 )
	erreur=i_set_art_str( g_iartout, $Tsymphta6ZTA::CODCIR, pt_CODCIRA )
	
# DRE G4R6 Lot2
	# TYPE_EDIT
	SI i_strcmp(pt_TYPE_EDIT," ") != 0
	ALORS
		erreur = i_ajoutChampNum(g_iartout,$Tsymphta6ZTA::T4type_edit,$Tsymphta6ZTA::TYPE_EDIT,0)
		erreur=i_set_art_str(g_iartout, $Tsymphta6ZTA::TYPE_EDIT, pt_TYPE_EDIT)
	FINSI

	# CODE_TARIF
	SI i_strcmp(pt_CODE_TARIF,"    ") != 0
	ALORS
		erreur = i_ajoutChampNum(g_iartout,$Tsymphta6ZTA::T4code_tarif,$Tsymphta6ZTA::CODE_TARIF,0)
		erreur=i_set_art_str(g_iartout, $Tsymphta6ZTA::CODE_TARIF, pt_CODE_TARIF)
	FINSI
# \DRE G4R6 Lot2


	#---------------------------------------------------------------------------
	# Symphonie
	#---------------------------------------------------------------------------
	SI !(i_ChercherCouranteECC(instSYMPHO))
	ALORS
		res=i_stocke_art_iecc(g_iartout,instSYMPHO)
	FINSI
FINSI

SI (bREDIST == 1)
ALORS
	SAUT DISTRI_RDT
FINSI

############################################################################
# Envoi vers IECC
############################################################################

#---------------------------------------------------------------------------
# FE
#---------------------------------------------------------------------------

SI !(i_ChercherCouranteECC(instFE))
ALORS
	res=i_stocke_art_iecc(g_iartout2,instFE)
FINSI

#---------------------------------------------------------------------------
# DM
#---------------------------------------------------------------------------

SI !(i_ChercherCouranteECC(instDM))
ALORS
	res=i_stocke_art_iecc(g_iartout3,instDM)
FINSI

#---------------------------------------------------------------------------
# TRAFIC
#---------------------------------------------------------------------------

SI !(i_ChercherCouranteECC(instECCTRAFIC))
ALORS
	res=i_stocke_art_iecc(g_iartout4,instECCTRAFIC)
FINSI

#---------------------------------------------------------------------------
# FCT
#---------------------------------------------------------------------------

RETOUR TRAIT_OK

############################################################################
# Envoi vers Recyclage
############################################################################

############################################################################
# Stockage en Errone
############################################################################

POINT DISTRI_ERR

res=i_make_art_rej(g_iartin, g_iartout, code_errone)
res=i_stocke_art(g_iartout,0,PT_ERRONE,0)

RETOUR TRAIT_OK

# DRE G4R6 Lot2
###########################################################################
# Stockage en elimine   
###########################################################################

POINT DISTRI_DIV

#IFDEF trace_niv1 = 1
trace( "__FILE__:__LINE__ : Fin du Pcode de distribution : Stockage en DIVERS" )
#ENDIF

res = i_stocke_art( g_iartin, 0, PT_DIVERS, 0 )

RETOUR TRAIT_OK
# \DRE G4R6 Lot2

############################################################################
# Stockage en Redistribution
############################################################################

POINT DISTRI_RDT

trace("Envoi en redistribution")

SI (trait_ok == 0)
ALORS
	#---------------------
	#  Creation de l'ENVELOPPE Optionelle:
	# Contient le nom de l'EEC necessaire au message d'erreur de la redistribution
	# Nom_EEC
	# Creation de l'enveloppe

	SI ( ENVELOPPE_NOK )
	ALORS
		#IFDEF trace_niv1 = 1
		trace("__FILE__:__LINE__ =====> Creation enveloppe REDISTRI")
		#ENDIF
		ENVELOPPE_NOK = i_add_opt( "E_Tta6dcZTA" )
		# champ T1 (=>  0x22 pour la reconnaissance de l'enveloppe,

		# Champ L1
	FINSI

	i_strcpy(pt_SGTQS,i_LireEECSGTQS(g_ieec))
	res = i_set_attr_str_n( $E_Tta6dcZTA::Nom_EEC, pt_SGTQS)
	res = i_get_attr_str_n($E_Tta6dcZTA::Nom_EEC, pt_SGTQS)
	erreur = i_PlvMessEmettre(8503,2,g_iartin,"",3,pt_LIBELREDIST,"Tta6dcZTA",pt_SGTQS)
FINSI

res=i_stocke_art(g_iartin,0,PT_REDIST|RD_TABLE5,0)

RETOUR TRAIT_OK
# FIN_CORPS
