FVERS = 2
REFOBJET : ID = 860026355 ; ID_INIT = 860026032 ; NOM = Trm6dea ; VERSION = V137 ; DATE = 01/07/14-08:22:30 ( 1404202950 ) ; CAT = 8 ; ETAT = 0 ; NB_FILS =1 ; ID_FILS = 860026233
ID_EST = 860000110
COMMENT = "# 02/04/2014 - PSA - G4R6 lot 2 : mise en place C+S appelant"
CREATEUR = teguire
# DEBUT_CORPS
PCODE_PERE=Pdistribution
############################################################################
#
# Fichier : Trm6dea.src X96
#
# Version : %version: 15 %
#
# Date    : %date_modified: 29/04/02 17:51 %
#         : le 29/04/02 par URS (NSA)
# Distribution :
#    Article DEA efficace et inefficace sur Acheminement GSM
#
# En entree :
#    Article : Trm6dea
#
# En sortie :
#
#    CENTAURE
#    SYMPHONIE
#
# HISTORIQUE :
# FOEX594 - Prise en compte du parametre NOS en entree - 29/04/2002 - LRA.
#	17/06/2002 - PSA - FO1510  : Encapsulation pour le stockage en errone
#	16/07/2002 - RBE : Ajout variables EPORTABILITE et SPORTABILITE
#		           et Modif. mise au format NDEDE
#	25/09/2002 - MCH - V4.7    : IDAV_DIST_N DEDE_DIST_N = 3622 ou 083601
#				     ---> Elimines explicite
#	24/10/2002 - PSA - FO34 : affectation de IDAV a DEDE pour FOR
#	28/10/2002 - RBE - FO34 : NDEDE=NDE si IDAV present
#	28/10/2002 - RBE : specif.4.8 : Modif. CCD en fonction de la portabilite
#	14/10/2002 - RBE : Ajout de l'envoie a APACHE
#	21/11/2002 - RBE : FO115 + Modif. alarme tables externes
#       17/03/2003 - DRE - IDAV_DIST_N DEDE_DIST_N = 3622 ou 083601
#                               Suppression Elimination explicite
#	07/04/2003 - RBE : FO245 : recup. de MINE et APPLI si VN8(ART=4)
#	22/07/2003 - DRE - Modif calcul codeoperateur
# 	03/09/2003 - DRE - FO392 : Initialisation des variables Pcode
# 	01/06/2003 - MCH - G2R0Cl: Efficace si duree <> 0
# 	09/06/2004 - NSA - G2R0Cl: integration des codes d erreurs
#	22/10/2004 - THE - G2R0Caa : creation Centaure
#	11/04/2005 - FAL - FO1232 evolution HERISSON
#	20/04/2005 - FAL - FO1248 HERISSON 996Q ou 0996Q avec Q 5 6 ou 7 et gestion alarme
#	09/05/2005 - FAL - FO1273 evol HERISSON avec Z = 6
#	22/07/2005 - PSA - FO1390 : evolution HERISSON
#	26/07/2005 - FAL - G2R1Cj INEF speciaux APACHE
#	25/10/2005 - PSA - G2R2Co : FO 1538
# 25/11/2005 - PKH - G2R2Ca : Evolution de Apache envoie des DC inefficace des N0 urgences
#	08/12/2005 - FAL - FO1379 utilisation IDAV si pas de NDE
#	05/01/2006 - DRE - FO1666 G2R2Ca Remplacement de i_retrait_tlv() par i_supprChamp()
#	06/01/2006 - FAL - FO1673 evolution HERISSON modf FO1390
#	25/10/2006 - JLG - G2R2Cv modif pt_NORM car trop court
#	19/11/2007 - FAL - G3R3Lot2 : FO2266 modif sortie vers CENTAURE
#	10/10/2011 - THE - VerifPcode
#	28/05/2013 - THE - G4R3 suppression envoi vers APACHE
# 02/04/2014 - PSA - G4R6 lot 2 : mise en place C+S appelant
#
############################################################################

############################################################################
# Declarations
############################################################################

# Constantes
DEFINITION	NUMTAB		1
DEFINITION	ZONEMETRO	7
#Constantes pour message d alarme
DEFINITION	C_Article	"Trm6dea"
DEFINITION	C_InstCENT	"CENTAUREDEA"
DEFINITION	C_InstSYMP	"SYMP"
#G4R3 DEFINITION	C_InstAPACHE_DC	"APACHE_DC"
DEFINITION	C_Tcent		"TcentaureDEA"
#G4R3 DEFINITION	C_TapacheDEA	"TapacheDEA"

# G4R6 Lot2
DEFINITION IDUS_BNC "**00"
DEFINITION TYPCTR_Fact_Loc 16
DEFINITION TYPCTR_Fact_RI 17
DEFINITION RES_TYPCTR 2
DEFINITION CODE_ARTICLE 3
DEFINITION CATEG 8
DEFINITION BASE_TELEPHONE 1

DEFINITION	C_DATCPS	"DATCPS"
DEFINITION	TD_SVA		9
DEFINITION	C_INST_ALICE	"ALICE"
# /G4R6 Lot2


# variables entieres
REGISTRE	ENTIER		res
REGISTRE	ENTIER		erreur
REGISTRE	ENTIER		code_errone
REGISTRE	ENTIER		INF
REGISTRE	ENTIER		EFFICACE
REGISTRE	ENTIER		ICAR_REL
REGISTRE	ENTIER		ICAR_ABS
REGISTRE	ENTIER		ddebut
REGISTRE	ENTIER		gmt_date
REGISTRE	ENTIER		dpivot
REGISTRE	ENTIER		dduree
REGISTRE	ENTIER		tax
REGISTRE	ENTIER		EPORTABILITE
REGISTRE	ENTIER		SPORTABILITE
REGISTRE	ENTIER		CCD
REGISTRE	ENTIER		instCENT
REGISTRE	ENTIER		instSYMP
#G4R3 REGISTRE	ENTIER		instAPACHE
REGISTRE	ENTIER		INEF_SPECIAUX
REGISTRE	ENTIER		val_INEF
REGISTRE	ENTIER		MINE
REGISTRE	ENTIER		ART
REGISTRE	ENTIER		APPLI
REGISTRE	ENTIER		DC_CAA

# G4R6 Lot2
REGISTRE	ENTIER b_Fact_CPS_Loc
REGISTRE	ENTIER b_Fact_CPS_RI
REGISTRE	ENTIER bREDIST
REGISTRE	ENTIER type_cpt

REGISTRE 	ENTIER		Date_CPS
REGISTRE	ENTIER		instALICE
REGISTRE	ENTIER		val
REGISTRE	ENTIER		longueur
REGISTRE	ENTIER 		trait_ok
# /G4R6 Lot2


# Initialisations
EPORTABILITE  = 0
SPORTABILITE  = 0
CCD	      = 255
instSYMP      = 0
instCENT      = 0
#G4R3 instAPACHE    = 0
ART	      = 0xFFFFFFFF
MINE	      = 0xFFFFFFFF
APPLI	      = 0xFFFFFFFF
DC_CAA	      = 0
INF	      = 0
INEF_SPECIAUX = 0
val_INEF      = 0

# G4R6 Lot2
type_cpt = -1
b_Fact_CPS_Loc = 0
b_Fact_CPS_RI = 0

Date_CPS = 0
instALICE = -1
val = 0
longueur = 0
trait_ok = -1
bREDIST = 0
# /G4R6 Lot2


# variables pointeurs
REGISTRE	POINTEUR	pt_SGTQS
REGISTRE	POINTEUR	pt_TEMP
REGISTRE	POINTEUR	pt_TEMP2
REGISTRE	POINTEUR	pt_TEMP3
REGISTRE	POINTEUR	pt_NNOS
REGISTRE	POINTEUR	pt_DEDE_DIST_N
REGISTRE	POINTEUR	pt_IDAV_DIST_N
REGISTRE	POINTEUR	pt_TCOMMUT
REGISTRE	POINTEUR	pt_INEF_STD
#G4R3 REGISTRE	POINTEUR	pt_CODE_APACHE
#G4R3 REGISTRE	POINTEUR	pt_INEF_APACHE
REGISTRE	POINTEUR	pt_INEF_COMMUT

#G4R3 REGISTRE	POINTEUR	pt_URGENCE_APACHE
REGISTRE	POINTEUR	pt_NORM
REGISTRE	POINTEUR	pt_CodeOp
REGISTRE	POINTEUR	pt_BUF
REGISTRE	POINTEUR	pt_PREF_HERISSON

# G4R6 Lot2
REGISTRE	POINTEUR	pt_MESSAGE
REGISTRE	POINTEUR	pt_CODE_TARIF
REGISTRE	POINTEUR	pt_TYPE_EDIT
REGISTRE	POINTEUR	pt_NDE
REGISTRE	POINTEUR	pt_DEDE_BNC
REGISTRE	POINTEUR	pt_LIBELREDIST
# /G4R6 Lot2


# Allocation de memoire pour le buffeur
pt_TEMP		  = "1234567891234567891234567812345"
pt_TEMP2		  = "5456478954356787891234567812345"
pt_TEMP3		  = "8768768768768768768768768768768"
pt_DEDE_DIST_N	  = "2020202020202020202020202012345"
pt_IDAV_DIST_N	  = "30303030303030303030303012345"
pt_NNOS		  = "40404040404040404040404040404012345"
pt_CodeOp	  = "50505050505050505050505050505012345"
pt_BUF		  = "45667543987805435678357899123412345"
pt_TCOMMUT		  = "20202020202020202020202020202012345"
pt_INEF_STD	  = "60606060606060606060606060606012345"
#G4R3 pt_CODE_APACHE	  = "70707070707070707070707070707012345"
#G4R3 pt_INEF_APACHE	  = "80808080808080808080808080808012345"
pt_INEF_COMMUT	  = "90909090909090909090909090909012345"
pt_SGTQS		  = "888888888888888"
pt_PREF_HERISSON  = "4447852141444785214144478521414447852141"
#G4R3 pt_URGENCE_APACHE = "0569587521589478585865"
pt_NORM		  = "389389389389389389389389389389389389389389389389389389"

# 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_CODE_TARIF 	 = "pt_CODE_TARIFpt_CODE_TARIF"
pt_TYPE_EDIT	 = "pt_TYPE_EDIT"
pt_NDE		 = "pt_NDE3333333333333333333333333333333333333333"
pt_DEDE_BNC = "pt_DEDE_BNC1234567890123456789012345678901234567890"
pt_LIBELREDIST 	 = "pt_LIBELREDIST543210543210543210543210543210pt_LIBELREDIST543210543210543210543210543210pt_LIBELREDIST543210543210543210543210543210pt_LIBELREDIST543210543210543210543210543210pt_LIBELREDIST543210543210543210543210543210"
# /G4R6 Lot2


# Initialisation
#G4R3 i_strcpy(pt_URGENCE_APACHE,"")
i_strcpy(pt_NORM,"")
i_strcpy(pt_SGTQS,"")
i_strcpy(pt_TEMP,"")
i_strcpy(pt_TEMP2,"")
i_strcpy(pt_TEMP3,"")
i_strcpy(pt_NNOS,"")
i_strcpy(pt_CodeOp,"")
i_strcpy(pt_BUF,"")
i_strcpy(pt_DEDE_DIST_N,"")
i_strcpy(pt_IDAV_DIST_N,"")
i_strcpy(pt_TCOMMUT,"")
i_strcpy(pt_INEF_STD,"")
#G4R3 i_strcpy(pt_CODE_APACHE,"")
#G4R3 i_strcpy(pt_INEF_APACHE,"")
i_strcpy(pt_INEF_COMMUT,"")
i_strcpy(pt_PREF_HERISSON,"")

# G4R6 Lot2
i_strcpy(pt_MESSAGE, "")
i_strcpy(pt_CODE_TARIF , "    ")
i_strcpy(pt_TYPE_EDIT , " ")
i_strcpy(pt_NDE,"")
i_strcpy(pt_DEDE_BNC,"")
i_strcpy(pt_LIBELREDIST,"")
# /G4R6 Lot2


#trace("distribution - Trm6dea")

############################################################################
# identification de la provenance de l article
############################################################################

# si aucun passage en redistribution alors trait_ok = 0
trait_ok = i_LireRedistCpt()


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

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)

# 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

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

# article efficace si champ INEF = 0, 1, 200, 235, 236 , 237  ou duree <> 0

res = i_get_art_field( g_iartin, $INEF )
#trace1(" INEF=<%d>", res )

SI (dduree != 0)
	ALORS
	EFFICACE=1
SINON
	EFFICACE=0
FINSI

i_strcpy(pt_SGTQS,i_LireEECSGTQS( g_ieec ))
#trace2("pt_SGTQS=<%s>",pt_SGTQS,"")

erreur = i_get_art_str( g_iartin, $Trm6dea::INEF, pt_INEF_COMMUT )

#INEFF et la com est assurree par un CAA

SI (!EFFICACE)
	ALORS
	#recuperation des champs APPLI MINE et ART de l'entete de bloc
	ART = i_bloc_V1V2_recupererIdent(ART_BLOC_V1V2)
	SI (ART == 4)
		ALORS
		MINE = i_bloc_V1V2_recupererIdent(MINE_BLOC_V1V2)
		APPLI = i_bloc_V1V2_recupererIdent(APPLI_BLOC_V1V2)
	FINSI

	#IFDEF trace_niv1 = 1
	trace1("champ ART : %x",ART)
	trace1("champ MINE : %x",MINE)
	trace1("champ APPLI : %x",APPLI)
	#ENDIF

	pt_TCOMMUT = type_commut("APA1", pt_SGTQS, dpivot)

	SI (pt_TCOMMUT == g_inull)
		ALORS
		erreur = i_format_str2(pt_TEMP," %s",pt_SGTQS,0)
		erreur = i_PlvMessEmettre(8505,2,g_iartin,"",3,"Trm6dea/type_commut",pt_TEMP,g_ieec)
	SINON
		pt_INEF_STD = inef_std("APA2", pt_TCOMMUT, pt_INEF_COMMUT, dpivot)

		SI ( pt_INEF_STD == g_inull)
			ALORS
			#trace("Code inef absent dans la table")
			erreur = i_format_str2(pt_TEMP," %s",pt_INEF_COMMUT,0)
			erreur = i_PlvMessEmettre(8505,2,g_iartin,"",3,"Trm6dea/inef_std",pt_TEMP,g_ieec)
		SINON
			DC_CAA=1
		FINSI
	FINSI
	#trace2(" Type de commutateur <%s>", pt_TCOMMUT, "")
	#trace2(" Code inefficace standard <%s>", pt_INEF_STD, "")
FINSI

# Portabilite
# NDE et INF pas toujours present

SI (i_valid_field_n(g_iartin,$NDE)==0)
	ALORS
	#masque_FO1379#trace("FO1379 util  NUM_IDAV pour appel CodeOperateur")
	erreur=i_get_art_str(g_iartin,$NUM_IDAV,pt_BUF)
SINON
	erreur=i_get_art_str(g_iartin,$NDE,pt_BUF)
FINSI
#trace2(" appel CodeOperateur <%s>", pt_BUF, "")

pt_CodeOp = CodeOperateur(gmt_date, pt_BUF)

SI (!i_strcmp(pt_CodeOp, "84208"))
	ALORS
	EPORTABILITE = 1
	CCD = 212
SINON
	SI ( pt_CodeOp != g_inull )
		ALORS
		SPORTABILITE = 1
		CCD = 213
	FINSI
FINSI
#trace1("PORTABILITE ENTRANTE=<%d>", EPORTABILITE)
#trace1("PORTABILITE SORTANTE=<%d>", SPORTABILITE)
#trace1("CCD REEL =<%d>",CCD)

# IDAV_DIST_N

SI (i_valid_field_n(g_iartin,$NUM_IDAV))
	ALORS
	res=i_get_art_str(g_iartin,$NUM_IDAV,pt_IDAV_DIST_N)

	SI (i_get_art_fieldlength(g_iartin,$NUM_IDAV) >= 9)
		ALORS
		i_get_sub_str(pt_IDAV_DIST_N, -9, -1, pt_IDAV_DIST_N)
	FINSI
FINSI

# 0996Q ou 996Q avec Q= 5 6 ou 7 si Q non 5 6 7 alors alarme avec DC en ERR
# si 0996Q6 (Q=5ou6ou7) ou si 996Q6 (Q=5ou6ou7) alors Herisson

SI (i_valid_field_n(g_iartin,$NDE)==0)
	ALORS
	#trace("FO1379 util  NUM_IDAV pour pt_DEDE_DIST_N")
	res=i_get_art_str(g_iartin,$NUM_IDAV,pt_DEDE_DIST_N)
	INF = i_get_art_field(g_iartin,$Trm6dea::INF_IDAV)
SINON
	res=i_get_art_str(g_iartin,$NDE,pt_DEDE_DIST_N)
	INF = i_get_art_field(g_iartin,$Trm6dea::INF_DEDE)
FINSI
#trace2("FO1379 DEDE_DIST_N avant norm HERISSON <%s>", pt_DEDE_DIST_N, "")

##############################################################
#	 Article Inef speciaux : variable INEF_SPECIAUX
#		- code INEF > 100 (decimal)
#		- DEDE_INF vaut 0
##############################################################
# retrait INEF_SPECIAUX

SI (i_valid_field_n(g_iartin,$NDE)==0)
	ALORS
	#trace("FO1379 util  NUM_IDAV pour inef_apache URGE")
	erreur=i_get_art_str(g_iartin,$Trm6dea::NUM_IDAV,pt_NORM)
SINON
	erreur = i_get_art_str(g_iartin,$Trm6dea::NDE, pt_NORM)
FINSI

val_INEF=i_get_art_field(g_iartin, $Trm6dea::INEF)
#G4R3 SI (EFFICACE == 0 && val_INEF >=100)
#G4R3 ALORS
#G4R3 	pt_URGENCE_APACHE = inef_apache("URGE",pt_NORM,dpivot)
#G4R3 	SI (pt_URGENCE_APACHE != g_inull)
#G4R3 	ALORS
#G4R3 		INEF_SPECIAUX =1
#G4R3 	FINSI
#G4R3
#G4R3 FINSI

i_get_sub_str(pt_DEDE_DIST_N,5,5,pt_TEMP3)

# on ne fait le test HERISSON que si l appel n est pas porte

SI ( i_valid_field_n(g_iartin, $Trm6dea::INF_IDAV))
	ALORS
	INF = i_get_art_field(g_iartin,$INF_IDAV)
FINSI
#trace1("INF avant etude herisson <%x>", INF)
#trace1("INF avant etude herisson <%x> 0x04", INF & 0x04)

SI ( ( INF & 0x04 ) != 0x04 )
	ALORS
	SI (i_strcmp(pt_TEMP3,"6") == 0 )
		ALORS
		#trace ("Appel vers mobile Herisson possible cas 1")
		i_get_sub_str(pt_DEDE_DIST_N,0,3,pt_TEMP)

		SI  ((i_strcmp(pt_TEMP,"0996")) == 0 )
			ALORS
			#trace("Cbb Herisson 0996Q6 etude du Q")
			i_get_sub_str(pt_DEDE_DIST_N,4,4,pt_TEMP)

			SI  ( ( i_strcmp(pt_TEMP,"5") == 0 ) || ( i_strcmp(pt_TEMP,"6") == 0 ) || ( i_strcmp(pt_TEMP,"7") == 0 ) )
				ALORS
				i_get_sub_str(pt_DEDE_DIST_N,5,-1,pt_DEDE_DIST_N)
				#trace2("Cbb pt_DEDE_DIST_N sans 0996Q <%s>", pt_DEDE_DIST_N,"")
			SINON
				i_get_sub_str(pt_DEDE_DIST_N,0,4,pt_PREF_HERISSON)
				#trace2(" Tta6dea NDE <%s> prefixe HERISSON 0996Q6 mais Q non autorise ",pt_DEDE_DIST_N, "")
				code_errone = 0xA0B0
				code_errone = code_errone + EFFICACE
				erreur = i_PlvMessEmettre( 6938, 2, g_iartin,"", 3,code_errone, C_Article, pt_PREF_HERISSON)
				SAUT DISTRI_ERR
			FINSI
		FINSI
	SINON
		i_get_sub_str(pt_DEDE_DIST_N,4,4,pt_TEMP2)
		SI ( i_strcmp(pt_TEMP2,"6") == 0 )
			ALORS
			#trace ("Appel vers mobile Herisson possible cas 2")
			i_get_sub_str(pt_DEDE_DIST_N,0,2,pt_TEMP)

			SI ( i_strcmp(pt_TEMP,"996") == 0 )
				ALORS
				#trace("Cbb Herisson 996Q6 etude du Q")
				i_get_sub_str(pt_DEDE_DIST_N,3,3,pt_TEMP)

				SI  ( ( i_strcmp(pt_TEMP,"5") == 0 ) || ( i_strcmp(pt_TEMP,"6") == 0 ) || ( i_strcmp(pt_TEMP,"7") == 0 ) )
					ALORS
					i_get_sub_str(pt_DEDE_DIST_N,4,-1,pt_DEDE_DIST_N)
					#trace2("Cbb pt_DEDE_DIST_N sans 996Q <%s>", pt_DEDE_DIST_N,"")
				SINON
					i_get_sub_str(pt_DEDE_DIST_N,0,3,pt_PREF_HERISSON)
					#trace2(" Tta6dea NDE <%s> prefixe HERISSON 996Q6 mais Q non autorise ",pt_DEDE_DIST_N, "")
					code_errone = 0xA0B0
					code_errone = code_errone + EFFICACE
					erreur = i_PlvMessEmettre( 6938, 2, g_iartin,"", 3,code_errone, C_Article, pt_PREF_HERISSON )
					SAUT DISTRI_ERR
				FINSI
			FINSI
		FINSI
	FINSI
FINSI

# DEDE_DIST_N
SI (i_valid_field_n(g_iartin,$NDE)==0)
	ALORS
	#trace("FO1379 util  NUM_IDAV pour DEDE_DIST_N")
	res=i_get_art_str(g_iartin,$NUM_IDAV,pt_DEDE_DIST_N)
SINON
	res=i_get_art_str(g_iartin,$NDE,pt_DEDE_DIST_N)
FINSI

SI ( i_strlen(pt_DEDE_DIST_N) > 9 )
	ALORS
	#trace2("  FO1379 Lg DEDE_DIST_N > 9  <%s>", pt_DEDE_DIST_N, "")
	i_get_sub_str(pt_DEDE_DIST_N, -9, -1,pt_DEDE_DIST_N)
	#trace2("  FO1379 Lg DEDE_DIST_N coupe 9 <%s>", pt_DEDE_DIST_N, "")

FINSI
#trace2("FO1379 DEDE_DIST_N avant norm <%s>", pt_DEDE_DIST_N, "")

# ## Elimination explicite 3622 083601 :

# G4R6 Lot2
############################################################################
# Appel a la BNC pour recuperer le type de controle
############################################################################
# Si DEDE absent de l'article d'entree (cas possible pour les appels inefficaces), inutile d'appeler la BNC
SI i_valid_field_n(g_iartin,$Trm6dea::NDE)
	ALORS
	erreur = i_memcpy_art_field_n(g_icopo, $Tcopo::NDR, IDUS_BNC, 5)

# A priori pt_DEDE_DIST_N contient ZABPQMCDU du DEDE : il faut lui ajouter 0 pour appeler la BNC
	SI (i_strlen(pt_DEDE_DIST_N) == 9)
		ALORS
		erreur = i_format_str2(pt_DEDE_BNC, "%s%s", "0", pt_DEDE_DIST_N)
	SINON
		i_strcpy(pt_DEDE_BNC, pt_DEDE_DIST_N)
	FINSI

	erreur = i_memcpy_art_field_n(g_icopo, $Tcopo::NDE, pt_DEDE_BNC, i_strlen(pt_DEDE_BNC)+1)

	g_icopo.TAXE   = 0
	g_icopo.CREDIT = 0
	erreur = i_set_art_date(g_icopo, ICAR_REL)
	g_icopo.DUREE  = 0
	g_icopo.CODE   = CODE_ARTICLE
	g_icopo.CATEG  = CATEG
	g_icopo.SUP[0] = 0
	g_icopo.SUP[1] = 0
	g_icopo.SUP[RES_TYPCTR] = 0
	g_icopo.SUP[3] = 0
	g_icopo.SUP[4] = 0
	g_icopo.SUP[5] = 0xff
	erreur = i_comptage(g_icopo, BASE_TELEPHONE, ICAR_REL)

	SI erreur == 0
		ALORS
		type_cpt = g_icopo.SUP[RES_TYPCTR]
	FINSI
FINSI

# Appel de type C+S ?

SI ( type_cpt == TYPCTR_Fact_Loc)
	ALORS
	b_Fact_CPS_Loc =1
FINSI

SI ( type_cpt == TYPCTR_Fact_RI)
	ALORS
	b_Fact_CPS_RI =1
FINSI


SI (b_Fact_CPS_Loc == 1) || (b_Fact_CPS_RI == 1)
	ALORS
	erreur=i_cree_art("Conversion",g_iartout10)
	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_DEDE_DIST_N,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
		#######################################
		i_strcpy(pt_NDE,pt_DEDE_DIST_N)
		SI i_strplcmp (pt_NDE,"0",0,1) == 0
			ALORS
			i_get_sub_str(pt_NDE,1,-1,pt_NDE)
		FINSI
		longueur = i_conv_ascii_dcb (pt_NDE, 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
		val = i_LireInfoECC( instALICE, 0 )

		SI (val != 0)
			ALORS
			# AR present dans ALICE
			erreur = i_LireChaineInfo( val, 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_NDE,0)
			FINSI

			erreur = i_LireChaineInfo( val, 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_NDE,0)
			FINSI
		SINON
			bREDIST = 1
			erreur = i_format_str2(pt_LIBELREDIST," AR <%s> non trouve dans ALICE",pt_NDE,0)
		FINSI
	FINSI
FINSI

# /G4R6 Lot2

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

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

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

# CENTAURE
instCENT = i_LireInstanceECC(C_InstCENT)

SI (!instCENT)
	ALORS
	code_errone = 0xA0B0
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstCENT,C_Article)
	SAUT DISTRI_ERR
FINSI
#trace1("instCENT=<%d>",instCENT)

# G4R6 on ne distribue a Symphonie qu'au 1er passage
SI (trait_ok == 0)
	ALORS
# SYMPHONIE
	instSYMP = i_LireInstanceECC(C_InstSYMP)

	SI (!instSYMP)
		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
	SINON
		# Ajout de l'ECC SYMPHONIE a la liste courante des ECC:
		res = i_AjouterCouranteECC(instSYMP)
	FINSI
FINSI


# #G4R3 APACHE_DC
#G4R3 instAPACHE = i_LireInstanceECC(C_InstAPACHE_DC)

#G4R3 SI (!instAPACHE)
#G4R3 ALORS
#G4R3 	#trace("Pas d'instance pour APACHE_DC !")
#G4R3 	code_errone = 0xA0B0
#G4R3 	code_errone = code_errone + EFFICACE
#G4R3 	erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstAPACHE_DC,C_Article)
#G4R3 	SAUT DISTRI_ERR
#G4R3 FINSI
#trace1("instAPACHE=<%d>",instAPACHE)

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

SI ( !i_ChercherCouranteECC(instSYMP) )
	ALORS
	trace( "Stockage vers SYMPHONIE")

	SI ( i_valid_field_n(g_iartin,$Trm6dea::T3ce) )
		ALORS
		#trace("Avant i_retrait_tlv T3ce")
		erreur = i_supprChamp(g_iartin,"T3ce")
	FINSI

	SI ( i_dup_art_id(g_iartin,g_iartout) )
		ALORS
		#trace1("ERREUR de duplication vers SYMPHONIE, erreur=<%d>",erreur)
		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
	res = i_rename_art(g_iartout, "Tsymtrm6dea")
FINSI

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

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

#---------------------------------------------------------------------------
# CENTAURE
#---------------------------------------------------------------------------

SI (EFFICACE)
	ALORS
	# Ajout de l'ECC CENTAURE a la liste courante des ECC:
	res = i_AjouterCouranteECC(instCENT)
FINSI

#################################################################################
# #G4R3 Tests des criteres envoi a APACHE_DC
#################################################################################

#G4R3 SI ( !EFFICACE && DC_CAA )
#G4R3 ALORS
#G4R3 	pt_CODE_APACHE = code_apache("APA3", pt_SGTQS, dpivot)
#G4R3 	pt_INEF_APACHE = inef_apache("APA4", pt_INEF_STD, dpivot)
#G4R3
#G4R3 	#trace2(" code apache <%s>", pt_CODE_APACHE, "")
#G4R3 	#trace2(" Inef. apache <%s>", pt_INEF_APACHE, "")
#G4R3
#G4R3 	SI ( ( pt_CODE_APACHE != g_inull ) && ( pt_INEF_APACHE != g_inull ) || INEF_SPECIAUX )
#G4R3 	ALORS
#G4R3 		erreur=i_AjouterCouranteECC(instAPACHE)
#G4R3 	FINSI
#G4R3 FINSI

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

erreur = i_ValiderListeECC( 0, 0, 0, 0)

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

#---------------------------------------------------------------------------
# Complements Symphonie (SGTQS + CCD)
#---------------------------------------------------------------------------

SI ( !i_ChercherCouranteECC(instSYMP) )
	ALORS
	### Ajout des champs CCD, SGTQS et ECC_FACT ###

	erreur=i_ajoutChampNum(g_iartout,$Tsymtrm6dea::T4ccd,$Tsymtrm6dea::CCD,0)
	erreur=i_set_art_field(g_iartout,$Tsymtrm6dea::CCD, CCD)

	erreur = i_ajoutChampNum(g_iartout,$Tsymtrm6dea::T4sgtqs,$Tsymtrm6dea::SGTQS,0)
	i_strcpy(pt_SGTQS,i_LireEECSGTQS(g_ieec))
	#trace2("pt_SGTQS=<%s>",pt_SGTQS,"")
	erreur = i_set_art_str(g_iartout, $Tsymtrm6dea::SGTQS, pt_SGTQS)

	erreur=i_ajoutChampNum(g_iartout,$Tsymtrm6dea::T4eccfact,$Tsymtrm6dea::ECC_FACT,0)
	SI (!EFFICACE)
		ALORS
		erreur = i_set_art_str(g_iartout, $Tsymtrm6dea::ECC_FACT, "   ")
	SINON
		erreur = i_set_art_str(g_iartout, $Tsymtrm6dea::ECC_FACT, "CENTAURE")
	FINSI

	# G4R6 Lot2
	# TYPE_EDIT
	SI i_strcmp(pt_TYPE_EDIT," ") != 0
		ALORS
		erreur = i_ajoutChampNum(g_iartout,$Tsymtrm6dea::T4type_edit,$Tsymtrm6dea::TYPE_EDIT,0)
		erreur=i_set_art_str(g_iartout, $Tsymtrm6dea::TYPE_EDIT, pt_TYPE_EDIT)
	FINSI

	# CODE_TARIF
	SI i_strcmp(pt_CODE_TARIF,"    ") != 0
		ALORS
		erreur = i_ajoutChampNum(g_iartout,$Tsymtrm6dea::T4code_tarif,$Tsymtrm6dea::CODE_TARIF,0)
		erreur=i_set_art_str(g_iartout, $Tsymtrm6dea::CODE_TARIF, pt_CODE_TARIF)
	FINSI
	

	res=i_stocke_art_iecc(g_iartout, instSYMP)
	trace("Emission vers SYMPHONIE reussie")

FINSI
	
# \G4R6 Lot2



# G4R6
SI (bREDIST == 1)
	ALORS
	SAUT DISTRI_RDT
FINSI

#---------------------------------------------------------------------------
# CENTAURE
#---------------------------------------------------------------------------

SI ( !i_ChercherCouranteECC(instCENT) )
	ALORS
	#trace("Stockage vers CENTAURE")

	# Duplication de l'article
	SI ( i_dup_art_dest(g_iartin, g_iartout2, C_Tcent) )
		ALORS
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8602, 2, g_iartin, "", 3, code_errone, C_Tcent, C_Article)
		#trace1("Erreur de i_dup_art_dest: <%d>",res)
		SAUT DISTRI_ERR
	FINSI

	# T1: Service '005'-> dans fichier de duplication 5:005:0
	# T2: Type d'article '024'-> dans fichier de duplication 5:024:1

	# champs SCT
	#trace("initialisation des SCT")
	res = i_transformer_bits(g_iartin, $SCT, "FV", pt_TEMP)
	erreur = i_set_art_str(g_iartout2, $TcentaureDEA::SCT, pt_TEMP)

	# CAX : '000'-> dans fichier de duplication 6:30:3:3
	# TAP : 'FFFFFFFF'-> dans fichier de duplication 6:46:8:4

	# champs STY
	#trace("initialisation des STY")
	res = i_transformer_bits(g_iartin, $STY, "FV", pt_TEMP)
	erreur = i_set_art_str(g_iartout2, $TcentaureDEA::STY, pt_TEMP)

	# INDEX : '0000'-> dans fichier de duplication 6:30:4:6

	# champ ICAR
	erreur=i_set_art_field(g_iartout2, $TcentaureDEA::DATE, ICAR_REL)

	# ALINK : '00000000'-> dans fichier de duplication 6:30:8:8
	# NLINK : '00000'-> dans fichier de duplication 6:30:5:9

	# champ ILOCUS
	SI (i_valid_field_n(g_iartin, $Trm6dea::INFLOCUS))
		ALORS
		res = i_get_art_field(g_iartin, $INFLOCUS)
		#trace1("Test de la valeur de INFLOCUS=<%d>", res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::ILOCUS, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::ILOCUS, 0x30)
	FINSI

	# champ NLOCUS
	SI (i_valid_field_n(g_iartin, $Trm6dea::NUMLOCUS))
		ALORS
		erreur = i_get_art_str(g_iartin, $NUMLOCUS, pt_TEMP)
		#trace2("NUMLOCUS=<%s>", pt_TEMP, "")
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NLOCUS, pt_TEMP)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::NLOCUS, 0x20)
	FINSI

	# champ IIDUS
	SI (i_valid_field_n(g_iartin, $INF_IDUS))
		ALORS
		res = i_get_art_field(g_iartin, $INF_IDUS)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::IIDUS, res)
	FINSI

	# champ NIDUS
	SI (i_valid_field_n(g_iartin, $NDR))
		ALORS
		#trace("affecter valeur au champ NIDUS")
		erreur = i_get_art_str(g_iartin, $NDR, pt_TEMP)
		#trace2("NDR=<%s>", pt_TEMP, "")
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NIDUS, pt_TEMP)
	FINSI

	# champ IIPRV
	#trace("affecter valeur au champ IIPRV")
	SI (i_valid_field_n(g_iartin, $Trm6dea::INFIPRV))
		ALORS
		res = i_get_art_field(g_iartin, $INFIPRV)
		#trace1("Test de la valeur de INFIPRV=<%d>" , res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::IIPRV, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::IIPRV, 0x30)
	FINSI

	# champ NIPRV
	#trace("affecter valeur au champ NIPRV")
	SI (i_valid_field_n(g_iartin, $Trm6dea::NUMIPRV))
		ALORS
		erreur = i_get_art_str(g_iartin, $NUMIPRV, pt_TEMP)
		#trace2("NUMIPRV=<%s>", pt_TEMP, "")
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NIPRV, pt_TEMP)
	SINON
		erreur=i_memset_field_n(g_iartout2, $TcentaureDEA::NIPRV, 0x20)
	FINSI

	# champ IIDRV
	#trace("affecter valeur au champ IIDRV")
	SI (i_valid_field_n(g_iartin, $Trm6dea::INF_IDRV))
		ALORS
		res = i_get_art_field(g_iartin, $INF_IDRV)
		#trace1("Test de la valeur de IIDRV=<%d>" , res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::IIDRV, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::IIDRV, 0x30)
	FINSI

	# champ NIDRV
	#trace("affecter valeur au champ NIDRV")
	SI (i_valid_field_n(g_iartin, $Trm6dea::NUM_IDRV))
		ALORS
		erreur = i_get_art_str(g_iartin, $NUM_IDRV, pt_TEMP)
		#trace2("NUM_IDRV=<%s>", pt_TEMP, "")
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NIDRV, pt_TEMP)
	SINON
		erreur=i_memset_field_n(g_iartout2, $TcentaureDEA::NIDRV, 0x20)
	FINSI

	# champ IDEDE
	SI (i_valid_field_n(g_iartin, $Trm6dea::INF_DEDE))
		ALORS
		res = i_get_art_field(g_iartin, $INF_DEDE)
		#trace1("Test de la valeur de INF_DEDE=<%d>" , res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::IDEDE, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::IDEDE, 0x30)
	FINSI

	# champ NDEDE
	SI (i_valid_field_n(g_iartin,$NDE))
		ALORS
		res = i_get_art_str(g_iartin, $NDE, pt_TEMP2)
		i_replace_str(pt_TEMP2, "BCDE", "AJSC", pt_TEMP2)
	SINON
		i_strcpy(pt_TEMP2, "")
	FINSI
	erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NDEDE, pt_TEMP2)

	# champ IIDAV
	#trace("affecter valeur au champ IIDAV")
	SI (i_valid_field_n(g_iartin, $Trm6dea::INF_IDAV))
		ALORS
		res = i_get_art_field(g_iartin, $INF_IDAV)
		#trace1("Test de la valeur de INF_IDAV=<%d>" , res)
		erreur=i_set_art_field(g_iartout2, $TcentaureDEA::IIDAV, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::IIDAV, 0x30)
	FINSI

	# champ NIDAV
	#trace("affecter valeur au champ NIDAV")
	SI (i_valid_field_n(g_iartin, $Trm6dea::NUM_IDAV))
		ALORS
		erreur = i_get_art_str(g_iartin, $NUM_IDAV, pt_TEMP)
		#trace2("NUM_IDAV=<%s>", pt_TEMP, "")
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NIDAV, pt_TEMP)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::NIDAV, 0x20)
	FINSI

	# champ INOS
	SI (i_valid_field_n(g_iartin, $INFNOS))
		ALORS
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::INOS, i_get_art_field(g_iartin, $INFNOS))
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::INOS, 0x30)
	FINSI

	# champ NNOS
	SI (i_valid_field_n( g_iartin, $NUMNOS))
		ALORS
		erreur = i_get_art_str(g_iartin, $NUMNOS, pt_NNOS)
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NNOS, pt_NNOS)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::NNOS, 0x20)
	FINSI

	# champ IICOM
	SI (i_valid_field_n(g_iartin, $Trm6dea::INF_ICOM))
		ALORS
		res = i_get_art_field(g_iartin, $INF_ICOM)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::IICOM, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::IICOM, 0x30)
	FINSI

	# champ NICOM
	#trace("affecter valeur au champ NICOM")
	SI ( ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,0) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,0) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,1) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,1) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,2) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,2) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,3) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,3) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,4) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,4) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,5) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,5) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,6) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,6) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,7) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,7) <=9 )
		&& ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,8) >=0 ) && ( i_get_art_fieldtab(g_iartin,$NUM_ICOM,8) <=9 ) )
		ALORS
		#trace2("NUM_ICOM avant affectation=<%s>", pt_TEMP, "")
		erreur = i_get_art_str(g_iartin, $NUM_ICOM, pt_TEMP)
		#trace2("NUM_ICOM=<%s>", pt_TEMP, "")
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::NICOM, pt_TEMP)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::NICOM, 0x20)
	FINSI

	# REF : DEA/G4/REF-> dans fichier de duplication 1:10:26

	# champ NBRV
	#trace("affecter valeur au champ NBRV")
	SI (i_valid_field_n(g_iartin, $Trm6dea::NRENV))
		ALORS
		res = i_get_art_field(g_iartin, $NRENV)
		#trace1("Test de la valeur de NRENV=<%d>" , res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::NBRV, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::NBRV, 0x30)
	FINSI

	# champ DUR
	res = i_get_art_field(g_iartin, $dduree)
	#trace1("Test de la valeur du metachamp dduree=<%d>" , res)
	erreur = i_set_art_field(g_iartout2, $TcentaureDEA::DUREE, res)

	# champ TAX
	#trace("affecter valeur au champ TAX")
	SI (i_valid_field_n(g_iartin, $Trm6dea::TAXE))
		ALORS
		res = i_get_art_field(g_iartin, $tax)
		#trace1("Test de la valeur de TAXE=<%d>" , res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::TAX, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::TAX, 0x30)
	FINSI

	# champ DUSEL
	#trace("affecter valeur au champ DUSEL")
	SI (i_valid_field_n(g_iartin, $Trm6dea::DUSEL))
		ALORS
		res = i_get_art_field(g_iartin, $DUSEL)
		#trace1("Test de la valeur de DUSEL=<%d>" , res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::DUSEL, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::DUSEL, 0x30)
	FINSI

	# champ DUSON
	#trace("affecter valeur au champ DUSON")
	SI (i_valid_field_n(g_iartin, $Trm6dea::DUSON))
		ALORS
		res = i_get_art_field(g_iartin, $DUSON)
		#trace1("Test de la valeur de DUSON=<%d>" , res)
		erreur = i_set_art_field(g_iartout2, $TcentaureDEA::DUSON, res)
	SINON
		erreur = i_memset_field_n(g_iartout2, $TcentaureDEA::DUSON, 0x30)
	FINSI

	# TTX : 'F'-> dans fichier de duplication 6:46:1:32
	# SIDR : 'F'-> dans fichier de duplication 6:46:1:33
	# MES1 : '255'-> dans fichier de duplication 5:255:34
	# MES2 : '255'-> dans fichier de duplication 5:255:35
	# INEF : DEA/G4/INEF-> dans fichier de duplication 1:9:36
	# CI : '000000'-> dans fichier de duplication 6:30:6:37
	# CLE1 : '000'-> dans fichier de duplication 6:30:3:38
	# CLE2 : '000'-> dans fichier de duplication 6:30:3:39
	# CLE3 : '000'-> dans fichier de duplication 6:30:3:40
	# CLE4 : '000'-> dans fichier de duplication 6:30:3:41

	# champ COCA
	SI i_valid_field_n(g_iartin, $BETA)
		ALORS
		erreur = i_get_art_str(g_iartin, $BETA, pt_TEMP)
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::COCA, pt_TEMP)
	FINSI

	# champ COCAV
	SI i_valid_field_n(g_iartin, $BETAV)
		ALORS
		erreur = i_get_art_str(g_iartin, $BETAV, pt_TEMP)
		erreur = i_set_art_str(g_iartout2, $TcentaureDEA::COCAV, pt_TEMP)
	FINSI

	# NUMLOT : '000000'-> dans fichier de duplication 6:30:6:44

	# champ CDSGTQS
	i_strcpy(pt_SGTQS, i_LireEECSGTQS(g_ieec))
	#trace2("pt_SGTQS=<%s>",pt_SGTQS,"")
	erreur = i_set_art_str(g_iartout2, $TcentaureDEA::CDSGTQS, pt_SGTQS)

	# NOS - FOEX594 (FO2266 -> deplace apres IIDAV)

	# SUP : '0'-> valeur par defaut
	# INVOCATION : '000'-> dans fichier de duplication 6:30:3:47
	# MERE : '000'-> dans fichier de duplication 6:30:3:48
	# ECHO : '00000000'-> dans fichier de duplication 6:30:8:49
	# MENV : '000'-> dans fichier de duplication 6:30:3:50

	# G4R6 Lot2
	# TYPE_EDIT
	erreur=i_set_art_str(g_iartout2, $TcentaureDEA::TYPE_EDIT, pt_TYPE_EDIT)

	# CODE_TARIF
	erreur=i_set_art_str(g_iartout2, $TcentaureDEA::CODE_TARIF, pt_CODE_TARIF)
# \G4R6 Lot2

	# champ FIN
	erreur = i_set_art_field(g_iartout2, $TcentaureDEA::FIN, 0x0A )

	# fin de traitement des champs
FINSI

#-------------------------------------------------------------------------
# #G4R3 APACHE_DC
#-----------------------------------------------------------------------
#G4R3 SI ( !i_ChercherCouranteECC(instAPACHE) )
#G4R3 ALORS
#G4R3 	#trace("Mise au format APACHE")
#G4R3
#G4R3 	# Duplication de l article
#G4R3 	SI ( i_dup_art_dest(g_iartin,g_iartout9,C_TapacheDEA) )
#G4R3 	ALORS
#G4R3 		trace("erreur de duplication")
#G4R3 		code_errone = 0xA0D0
#G4R3 		code_errone = code_errone + EFFICACE
#G4R3 		erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,C_TapacheDEA,C_Article)
#G4R3 		SAUT DISTRI_ERR
#G4R3 	FINSI
#G4R3
#G4R3 	res=i_get_art_field(g_iartin, $Trm6dea::STY)
#G4R3 	erreur=i_set_art_field(g_iartout9, $TapacheDEA::STY, res)
#G4R3
#G4R3 	res=i_get_art_field(g_iartin, $Trm6dea::SCT)
#G4R3 	erreur=i_set_art_field(g_iartout9, $TapacheDEA::SCT, res)
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INF_IDUS))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_IDUS, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::NDR))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::NUM_IDUS, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INF_DEDE))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_DEDE, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::NDE))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::NUM_DEDE, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INFLOCUS))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_LOCUS, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::NUMLOCUS))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::NUM_LOCUS, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INF_IDAV))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_IDAV, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::NUM_IDAV))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::NUM_IDAV, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::BETA))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::COCA, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::BETAV))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::COCAV, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INF_ICOM))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_ICOM, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::NUM_ICOM))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::NUM_ICOM, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INFNOS))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_NOS, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::NUMNOS))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::NUM_NOS, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	#champ DUREE
#G4R3 	erreur=i_set_art_field(g_iartout9,$TapacheDEA::DUR,dduree)
#G4R3
#G4R3 	#champ TAXE
#G4R3 	erreur=i_set_art_field(g_iartout9,$TapacheDEA::TAXE,tax)
#G4R3
#G4R3 	#CLEi
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE1))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE1)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE1,res)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE2))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE2)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE2,res)
#G4R3 	FINSI
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE3))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE3)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE3,res)
#G4R3 	FINSI
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE4))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE4)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE4,res)
#G4R3 	FINSI
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE5))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE5)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE5,res)
#G4R3 	FINSI
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE6))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE6)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE6,res)
#G4R3 	FINSI
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE7))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE7)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE7,res)
#G4R3 	FINSI
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::CLE8))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::CLE8)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::CLE8,res)
#G4R3 	FINSI
#G4R3
#G4R3 	#champ REP
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::REP))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::REP)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::REP,res)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INFIPRV))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_IPRV, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI ( !i_valid_field_n(g_iartin, $Trm6dea::NUMIPRV) )
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::NUM_IPRV, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::INF_IDRV))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::INF_IDRV, 0x00)
#G4R3 	FINSI
#G4R3
#G4R3 	SI ( !i_valid_field_n(g_iartin, $Trm6dea::NUM_IDRV) )
#G4R3 	ALORS
#G4R3 		erreur=	i_memset_field_n(g_iartout9, $TapacheDEA::NUM_IDRV, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	#champ NBRV
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::NRENV))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::NRENV)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::NBRV,res)
#G4R3 	FINSI
#G4R3
#G4R3 	#champ DUSEL
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::T3sel))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$Trm6dea::DUSEL)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::SEL,res)
#G4R3 	FINSI
#G4R3
#G4R3 	#champ DUSON
#G4R3 	SI (i_valid_field_n(g_iartin, $Trm6dea::DUSON))
#G4R3 	ALORS
#G4R3 		res=i_get_art_field(g_iartin,$DUSON)
#G4R3 		erreur=i_set_art_field(g_iartout9,$TapacheDEA::SON,res)
#G4R3 	FINSI
#G4R3
#G4R3 	# MAJ des champs Faisceau
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::nfsce))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::FSC_ENTRANT, 0x40)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::afcte))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::CIRCUITE, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::nfscs))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::FSC_SORTANT, 0x40)
#G4R3 	FINSI
#G4R3
#G4R3 	SI (!i_valid_field_n(g_iartin, $Trm6dea::afcts))
#G4R3 	ALORS
#G4R3 		erreur=i_memset_field_n(g_iartout9, $TapacheDEA::CIRCUITS, 0xFF)
#G4R3 	FINSI
#G4R3
#G4R3 	#champ SGTQS
#G4R3 	erreur=i_set_art_str(g_iartout9,$TapacheDEA::CODE_CAA, pt_SGTQS)
#G4R3 	erreur=i_set_art_field(g_iartout9,$TapacheDEA::MINE,MINE)
#G4R3 	erreur=i_set_art_field(g_iartout9,$TapacheDEA::APPLI,APPLI)
#G4R3 	erreur=i_set_art_field(g_iartout9,$TapacheDEA::ART,ART)
#G4R3
#G4R3 	#MAJ champ INEF_STD de ASCII en Hexa
#G4R3 	erreur=i_cree_art("Conversion",g_iartout10)
#G4R3 	erreur= i_set_art_str(g_iartout10, $Conversion::INEF_STD, pt_INEF_STD)
#G4R3 	erreur=i_conv_field("INEF_STD", g_iartout10, 3, g_iartout9, 1, 0)
#G4R3 FINSI


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

#---------------------------------------------------------------------------
# CENTAURE
#---------------------------------------------------------------------------

SI ( !i_ChercherCouranteECC(instCENT) )
	ALORS
	res=i_stocke_art_iecc(g_iartout2, instCENT)
	trace("Emission vers CENTAURE reussie")
FINSI



#-------------------------------------------------------------------------
# #G4R3 APACHE
#-------------------------------------------------------------------------

#G4R3 SI ( !i_ChercherCouranteECC(instAPACHE) )
#G4R3 ALORS
#G4R3 	res = i_stocke_art_iecc(g_iartout9, instAPACHE)
#G4R3 #	trace( "Emission vers APACHE" )
#G4R3 FINSI

SAUT DISTRI_FIN

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

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

POINT DISTRI_ERR

#trace( "stockage en errone de distribution")
res=i_make_art_rej(g_iartin, g_iartout, code_errone)
res = i_stocke_art( g_iartout, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

###########################################################################
# Stockage en elimine
###########################################################################
POINT DISTRI_ELM

#IFDEF trace_niv1 = 1
trace( "__FILE__:__LINE__ : Fin du Pcode de distribution : Stockage en ELIMINE" )
#ENDIF
res = i_stocke_art( g_iartin, 0, PT_ELIMINE, 0 )

RETOUR TRAIT_OK

###########################################################################
# Stockage en elimine DIVERS
###########################################################################

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

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

POINT DISTRI_RDT

#trace( "envoi en redistribution")
SI (trait_ok == 0)
	ALORS
	#---------------------
	#  Mise a jour de ENVELOPPE Optionelle:
	# Contient le nom de l'EEC necessaire au message d'erreur de la redistribution
	# Nom_EEC
	i_strcpy(pt_SGTQS, i_LireEECSGTQS(g_ieec))

	erreur = i_PlvMessEmettre(8503,2,g_iartin,"",3,pt_LIBELREDIST,"Trm6dea",pt_SGTQS)
FINSI

res = i_stocke_art( g_iartin, 0, PT_REDIST|RD_TABLE2, 0)
RETOUR TRAIT_OK

POINT DISTRI_FIN

trace("Fin du Pcode de distribution Trm6dea")

RETOUR TRAIT_OK# FIN_CORPS
