FVERS = 2
REFOBJET : ID = 860026629 ; ID_INIT = 860026421 ; NOM = Topitml ; VERSION = V30 ; DATE = 16/01/15-07:52:38 ( 1421394758 ) ; CAT = 8 ; ETAT = 0 ; NB_FILS =1 ; ID_FILS = 860026233
ID_EST = 860000138
COMMENT = " 07/01/2015 - THE - # G4R9 Lot1 #### # 27/03/2014 - THE - G4R6 Lot2  Creation C+S ---17/12/2013 - DRE - G4R5 QC772 Suppression des caracteres a partir de ";" au lieu de ";phone-context=+33"
CREATEUR = drey
# DEBUT_CORPS
PCODE_PERE=Pdistribution
#####################################################################
# DISTRIBUTION Topitml : DC de facturation transmises par la PF CGW-IMS
#####################################################################
# En entree :
#    Article : Topitml
#
# En sortie :
#		TRAFIC		- g_iartout2	- TtraficN
#		SYMPH		- g_iartout6	- TsymTopitml
#		CASPER 		- g_iartout3	- TcasperTopitml
#
#		ERRONNE		- g_iartout8
#		Conversion	- g_iartout10
#
#	HISTORIQUE
# 11/08/11 - RHE - G3R22 Creation
# 22/08/11 - DRE - G3R22 QC511 Evolution spec: OPITML_SOF2.doc
# 06/09/11 - DRE - G3R22 QC512 Modif NUMDEDE de facturation pour appli Trafic
# 16/11/2011 - THE - G3R22C5 QC546 Normalisation Ddeur (Z= 6,7,8,9 )
# 01/12/2011 - THE DRE - G3R22 QC554 normalisation DEDE_INF
# 23/01/2012 - THE - VerifPcode
# 21/03/2012 - DRE - G3R24 : nouveau palier tarifaire 0898PQ : SRP Tiers Deterministe
# 11/02/2013 - DRE - G4R02 : QC677, rechercher SCP-SRP uniquement si Dde non international
# 25/02/2013 - DRE - G4R02 : Reprise QC677 (OPITML_S3F1.doc) utilisation de la nature du demande au lieu du CCD pour filtrer l'acces a ACLA et 45S
# 25/04/2013 - DRE - G4R02 : QC718 Correction calcul longueur pt_IDUS_NUM_DCB
# 30/08/2013 - DRE - G4R3C5 QC744 : Conversion %23 en # avant suppression
# 17/12/2013 - DRE - G4R5 QC772 Suppression des caracteres a partir de ";" au lieu de ";phone-context=+33"
# 27/03/2014 - THE - G4R6 Lot2  Creation C+S 
# 24/06/2014 - THE - G4R7 Lot1 ##### Appel ACLA avec tous les dde
# 25/07/2014 - THE - #G4R7 Lot3 QC834 envoi en redist si IC ALICE vide
# 07/01/2015 - THE - # G4R9 Lot1 ####
#
############################################################################################

DEFINITION	C_Article	 "Topitml"
DEFINITION	BASE		 1
DEFINITION	MILEURODR	 110
DEFINITION	UTCDR		 100
DEFINITION	RES_CODCIR	 3
DEFINITION	RES_CODCIRDR	 5
DEFINITION	RES_UNITE	 6
DEFINITION	RES_TYPCTR	 2
DEFINITION	RES_TYPCOM	 0
DEFINITION	UTC		 0
DEFINITION	NUMTABSEL	 1
DEFINITION	NUMTAB		 1
DEFINITION	ZONE_METROPOLE	 7
DEFINITION	C_phone		 ";phone-context=+33"
DEFINITION	CATEG		 0
DEFINITION	CODE_ARTICLE	 3
DEFINITION	RES_CCD		 1
DEFINITION	C_Inst45S 	"45S"
DEFINITION	C_InstACLA 	"ACLA"
DEFINITION	C_InstTRAFIC	"TRAFIC"
DEFINITION	C_InstSYMP 	"SYMP"
DEFINITION	C_InstCASPER	"CASPER"
#G4R6 Lot2 
DEFINITION	CTR_CPSRI		17
DEFINITION	CTR_CPSLOC		16
DEFINITION	TD_ALICE		9
DEFINITION	C_instALICE		"ALICE"


#########################################################
# Variables fonctionnelles
REGISTRE	ENTIER		DATE_GMT
REGISTRE	ENTIER		Indicator
REGISTRE	ENTIER		RoleNode
REGISTRE	ENTIER		erreur
REGISTRE	ENTIER		code_rejet
REGISTRE	ENTIER		b_IDUS_OPITML
REGISTRE	ENTIER		b_DEDE_OPITML
REGISTRE	ENTIER		b_EFFICACE
REGISTRE	ENTIER		b_FACTURABLE
REGISTRE	ENTIER		IDUS_INF
REGISTRE	ENTIER		NUMZONE
REGISTRE	ENTIER		longueur
REGISTRE	ENTIER		HLAHM1
REGISTRE	ENTIER		DEDE_INF
REGISTRE	ENTIER		Duree
REGISTRE	ENTIER		CODCIRDR
REGISTRE	ENTIER		CODCIR
REGISTRE	ENTIER		TYPCTR
REGISTRE	ENTIER		CCD
REGISTRE	ENTIER		TYPCOM
REGISTRE	ENTIER		res
REGISTRE	ENTIER		ICAR_ABS
REGISTRE	ENTIER		retour_BNC
REGISTRE	ENTIER		vc
REGISTRE	ENTIER		UNITE
# DRE G3R24
#REGISTRE	ENTIER		b_SRP_TIERS_sans_ITX
#REGISTRE	ENTIER		b_PTD
REGISTRE	ENTIER		b_EPORTABILITE_SRP
REGISTRE	ENTIER		b_SPORTABILITE_SRP
REGISTRE	ENTIER		b_EPORTABILITE_SCP
REGISTRE	ENTIER		b_SPORTABILITE_SCP
REGISTRE	ENTIER		CCD_REEL
REGISTRE	ENTIER		b_Emessage_IP
REGISTRE	ENTIER		b_REJET1
REGISTRE	ENTIER		b_REJET2
REGISTRE	ENTIER		b_REJET3
REGISTRE	ENTIER		b_REJET5
REGISTRE	ENTIER		b_IDUS_INF_NAT
REGISTRE	ENTIER		b_IDUS_INF_INTER
REGISTRE	ENTIER		b_DEDE_INF_NAT
REGISTRE	ENTIER		b_DEDE_INF_INTER
REGISTRE	ENTIER		b_DEDE_INF_SPE
REGISTRE	ENTIER		b_IDUS_redirectNb
REGISTRE	ENTIER		b_IDUS_callingNb
REGISTRE	ENTIER		b_DISTRI_TRAFIC
REGISTRE	ENTIER		CPT_RDT
REGISTRE	ENTIER		b_REDIST
REGISTRE	ENTIER		flag_TRAFIC
REGISTRE	ENTIER		instTRAFIC
REGISTRE	ENTIER		instSYMP
REGISTRE	ENTIER		instCASPER
REGISTRE	ENTIER		inst45S
REGISTRE	ENTIER		instACLA
#G3R24
REGISTRE	ENTIER		b_SRP_TIERS_PTD
REGISTRE	ENTIER		b_118_TIERS_PTD
# 25/04/2013 - DRE - G4R02 : QC718 Correction calcul longueur pt_IDUS_NUM_DCB
REGISTRE	ENTIER		long_IDUS_NUM_DCB
#G4R6 Lot2 
REGISTRE	ENTIER		b_Fact_CPS_Loc
REGISTRE	ENTIER		b_Fact_CPS_RI
REGISTRE	ENTIER		b_Fact_CPS_Act
REGISTRE	ENTIER		b_ALICE
REGISTRE	ENTIER		instALICE
REGISTRE	ENTIER		date_table
REGISTRE	ENTIER		code_errone


#########################################################
# DECLARATION POINTEUR
REGISTRE	POINTEUR	pt_IDUS_SELECT
REGISTRE	POINTEUR	pt_IDUS_NUM
REGISTRE	POINTEUR	pt_IDUS_NUM_BNC
REGISTRE	POINTEUR	pt_DEDE_NUM_FAC
REGISTRE	POINTEUR	pt_IDUS_NUM_DCB
REGISTRE	POINTEUR	pt_DEDE_SELECT
REGISTRE	POINTEUR	pt_DEDE_NUM
REGISTRE	POINTEUR	pt_DEDE_INF
REGISTRE	POINTEUR	pt_Info7
REGISTRE	POINTEUR	pt_BUF1
REGISTRE	POINTEUR	pt_temp
REGISTRE	POINTEUR	pt_EccFact
REGISTRE	POINTEUR	pt_sgtqs
REGISTRE	POINTEUR	pt_CODESRP
REGISTRE	POINTEUR	pt_CODESCP
REGISTRE	POINTEUR	pt_debChamp1
REGISTRE	POINTEUR	pt_Num
REGISTRE	POINTEUR	pt_message
REGISTRE	POINTEUR	pt_Z
REGISTRE	POINTEUR	pt_ZABx
REGISTRE	POINTEUR	pt_InfoCompl
REGISTRE	POINTEUR	pt_inst
#G4R6 Lot2 
REGISTRE	POINTEUR	pt_datCPLUSS
REGISTRE	POINTEUR	pt_TARIF
REGISTRE	POINTEUR	pt_EDIT
REGISTRE	POINTEUR	pt_LIBELREDIST


#########################################################
#Affectation
pt_IDUS_SELECT 	= "pt_IDUS_SELECT012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_IDUS_NUM 	= "pt_IDUS_NUM000012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_IDUS_NUM_BNC	= "pt_IDUS_NUM_BNC12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_DEDE_NUM_FAC	= "pt_DEDE_NUM_FAC08888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"
pt_IDUS_NUM_DCB = "pt_IDUS_NUM_DCB12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_DEDE_SELECT 	= "pt_DEDE_SELECT012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_DEDE_NUM	= "pt_DEDE_NUM000012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_DEDE_INF 	= "pt_DEDE_INF0123456789"
pt_Info7	= "pt_Info71234567890"
pt_BUF1		= "pt_BUF01010101012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_temp		= "pt_temp0101010012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_EccFact	= "pt_EccFact17617617617616176176"
pt_sgtqs	= "pt_sgtqs7777777497507597407694876"
pt_CODESRP	= "pt_CODESRP91791791791917917917917917917917917"
pt_CODESCP	= "pt_CODESCP32132132132132132132132132132132113"
pt_debChamp1	= "pt_debChamp179797979797979797979797979797979797979797979797979797979797979797979797979797"
pt_Num		= "pt_Num325999999999123459999123459999999991234599991234599999999912345999912345999999999123459999123459999999991234599991234599999999912345999912345999999999123459999123459999999991234599991234599999999912345999912345999999999123459999123459999999991234599991234\
99991234599999999912345999912345999999999123459999123459999999991234599991234599999999912345999912345999999999123459999123459999999991234599991234599999999912345999912345999999999123459999123459999999991234599991234599999999912345999912345999999999123459999123555555554"
pt_message 	= "pt_message01234567890123456789012345678901234567890123456789012345678901234567890123456789"
pt_Z		= "pt_Z0123456789"
pt_ZABx		= "pt_ZABx0123456789"
pt_InfoCompl	= "pt_InfoCompl0123456789"
pt_inst		= "pt_inst0123456789"
#G4R6 Lot2 
pt_datCPLUSS = "pt_datCPLUSS98765432109876543210"
pt_TARIF = "pt_TARIF0123456789"
pt_EDIT = "pt_EDIT0123456789"
pt_LIBELREDIST = "pt_LIBELREDIST0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"


#########################################################
# Initialisation
Indicator	= -1
RoleNode	= -1
erreur		= 0
code_rejet	= 0
b_IDUS_OPITML	= 0
b_DEDE_OPITML	= 0
b_EFFICACE	= 0
b_FACTURABLE	= 0
IDUS_INF	= 0
NUMZONE		= -1
longueur	= 0
DATE_GMT	= 0
HLAHM1		= -1
DEDE_INF	= 0
Duree		= -1
res		= 0
ICAR_ABS	= 0
retour_BNC	= 0
vc		= 0
UNITE		= -1
b_EPORTABILITE_SRP = 0
b_SPORTABILITE_SRP = 0
b_EPORTABILITE_SCP = 0
b_SPORTABILITE_SCP = 0
b_Emessage_IP 	= 0
b_REJET1 	= 0
b_REJET2 	= 0
b_REJET3 	= 0
b_REJET5 	= 0
b_DEDE_INF_NAT 	= 0
b_DEDE_INF_INTER = 0
b_DEDE_INF_SPE = 0
b_IDUS_INF_NAT = 0
b_IDUS_INF_INTER = 0
b_IDUS_redirectNb = 0
b_IDUS_callingNb = 0
b_DISTRI_TRAFIC = 0
CPT_RDT 	= 0
b_REDIST 	= 0
flag_TRAFIC 	= 0
instTRAFIC	= -1
instSYMP	= -1
instCASPER	= -1
# 25/04/2013 - DRE - G4R02 : QC718 Correction calcul longueur pt_IDUS_NUM_DCB
long_IDUS_NUM_DCB = 0
#G4R6 Lot2 
b_Fact_CPS_Act = 0
b_Fact_CPS_Loc = 0
b_Fact_CPS_RI = 0
b_ALICE = 0
date_table = 0


#########################################################
i_strcpy (pt_Info7,"" )
i_strcpy (pt_BUF1,"")
i_strcpy (pt_IDUS_NUM,"")
i_strcpy (pt_DEDE_NUM,"")
i_strcpy (pt_temp,"")
i_strcpy (pt_sgtqs,"")
i_strcpy (pt_EccFact,"")
i_strcpy (pt_CODESRP,"")
i_strcpy (pt_CODESCP,"")
i_strcpy (pt_debChamp1,"")
i_strcpy (pt_Num,"")
i_strcpy (pt_DEDE_INF,"")
i_strcpy (pt_message,"")
i_strcpy (pt_DEDE_SELECT,"")
i_strcpy (pt_IDUS_NUM_DCB,"")
i_strcpy (pt_IDUS_SELECT,"")
i_strcpy (pt_IDUS_NUM_BNC,"")
i_strcpy (pt_Z,"")
i_strcpy (pt_ZABx,"")
i_strcpy (pt_InfoCompl,"")
i_strcpy (pt_inst,"")
#DRE - QC511
i_strcpy (pt_DEDE_NUM_FAC,"")
#G4R6 Lot2 
i_strcpy (pt_datCPLUSS,"")
i_strcpy(pt_TARIF,"    ")
i_strcpy(pt_EDIT," ")
i_strcpy(pt_LIBELREDIST," ")


###########################################################################################
#============================================================
trace("## Debut Distribution -  [ __FILE__ ] ")
#============================================================

# Creation  article Conversion
erreur = i_cree_art("Conversion",g_iartout10)

# SGTQS
i_strcpy(pt_sgtqs, i_LireEECSGTQS(g_ieec))

# CPT_RDT (nb de passage en redistribution)
CPT_RDT = -1
CPT_RDT = i_LireRedistCpt()
#trace1(" ============= Nb de passage en redistribution CPT_RDT = <%d> ===",CPT_RDT)

#====================================
# Variables fonctionnelles globales
#====================================

# b_IDUS_OPITML
# b_DEDE_OPITML
# 	champ RoleNode	RoleNode = 0 appel sortant (ORIGINATING) -> b_IDUS_OPITML = 1
# 			RoleNode = 1 appel entrant (TERMINATING) -> b_DEDE_OPITML = 1
RoleNode = i_get_art_field(g_iartin, $Topitml::RoleNode)
SI (RoleNode == 0)
ALORS
	b_IDUS_OPITML = 1
SINON
	SI (RoleNode == 1)
	ALORS
		b_DEDE_OPITML = 1
	FINSI
FINSI
#trace1 ("__LINE__ ##  (ORIGINATING) b_IDUS_OPITML = %d ==========",b_IDUS_OPITML)
#trace1 ("__LINE__ ##  (TERMINATING) b_DEDE_OPITML = %d ==========",b_DEDE_OPITML)

# b_EFFICACE
SI (i_valid_field_n(g_iartin,$Topitml::AnswerIndicator))
ALORS
	Indicator = i_get_art_field(g_iartin, $Topitml::AnswerIndicator)
	SI (Indicator == 0x00 || Indicator == 0x02)
	ALORS
		SI (i_valid_field_n(g_iartin, $Topitml::CallDuration))
		ALORS
			Duree = i_get_art_field(g_iartin, $Topitml::CallDuration)
			SI (Duree > 0x00)
			ALORS
				SI (i_valid_field_n(g_iartin, $Topitml::CORLStatus))
				ALORS
					erreur = i_get_art_str(g_iartin,$Topitml::CORLStatus,pt_Info7)
					SI (i_strcmp(pt_Info7,"6") != 0)
					ALORS
						b_EFFICACE = 1
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
FINSI
#trace1 ("__LINE__ ##  b_EFFICACE = %d ==========",b_EFFICACE)


# IDUS_SELECT
# b_IDUS_redirectNb
# b_IDUS_callingNb
#	T3ComputeInfo06 -> NDI
#	T3SvcSpecInfo1 -> T4RedirecNb01 -> RedirecNb
#	T3CallingNb -> T4CallingPart02 -> CallingPart02
#	T3Computeinfo05 -> Computeinfo05
SI (b_IDUS_OPITML == 1)
ALORS
	SI (i_valid_field_n(g_iartin, $Topitml::NDI))
	ALORS
		erreur = i_get_art_str(g_iartin,$Topitml::NDI,pt_IDUS_SELECT)
		#trace2("__LINE__ ##  [b_IDUS_OPITML] pt_IDUS_SELECT -> NDI = %s =============", pt_IDUS_SELECT,"")
	SINON
		SI (i_valid_field_n(g_iartin, $Topitml::RedirecNb))
		ALORS
			erreur = i_get_art_str(g_iartin,$Topitml::RedirecNb,pt_IDUS_SELECT)
			#trace2("__LINE__ ##  [b_IDUS_OPITML] pt_IDUS_SELECT -> RedirecNb = %s =============", pt_IDUS_SELECT,"")
			b_IDUS_redirectNb = 1
		SINON
			SI (i_valid_field_n(g_iartin, $Topitml::CallingPart02))
			ALORS
				erreur = i_get_art_str(g_iartin,$Topitml::CallingPart02,pt_IDUS_SELECT)
				#trace2("__LINE__ ##  [b_IDUS_OPITML] pt_IDUS_SELECT -> CallingPart02 = %s =============", pt_IDUS_SELECT,"")
			SINON
				SI (i_valid_field_n(g_iartin, $Topitml::Computeinfo05))
				ALORS
					erreur = i_get_art_str(g_iartin,$Topitml::Computeinfo05,pt_IDUS_SELECT)
					#trace2("__LINE__ ##  [b_IDUS_OPITML] pt_IDUS_SELECT -> Computeinfo05 = %s =============", pt_IDUS_SELECT,"")
					b_IDUS_callingNb = 1
				FINSI
			FINSI
		FINSI
	FINSI
SINON
	SI (b_DEDE_OPITML == 1)
	ALORS
		SI (i_valid_field_n(g_iartin, $Topitml::RedirecNb))
		ALORS
			erreur = i_get_art_str(g_iartin,$Topitml::RedirecNb,pt_IDUS_SELECT)
			#trace2("__LINE__ ##  [b_DEDE_OPITML] pt_IDUS_SELECT -> RedirecNb = %s =============", pt_IDUS_SELECT,"")
		SINON
			SI (i_valid_field_n(g_iartin, $Topitml::CallingPart02))
			ALORS
				erreur = i_get_art_str(g_iartin,$Topitml::CallingPart02,pt_IDUS_SELECT)
				#trace2("__LINE__ ##  [b_DEDE_OPITML] pt_IDUS_SELECT -> CallingPart02 = %s =============", pt_IDUS_SELECT,"")
			SINON
				SI (i_valid_field_n(g_iartin, $Topitml::Computeinfo05))
				ALORS
					erreur = i_get_art_str(g_iartin,$Topitml::Computeinfo05,pt_IDUS_SELECT)
					#trace2("__LINE__ ##  [b_DEDE_OPITML] pt_IDUS_SELECT -> Computeinfo05 = %s =============", pt_IDUS_SELECT,"")
				FINSI
			FINSI
		FINSI
	FINSI
FINSI

# IDUS_NUM
# IDUS_INF
# b_IDUS_INF_NAT
# b_IDUS_INF_INTER
# IDUS_NUM_BNC
SI (i_strcmp("", pt_IDUS_SELECT) != 0)
ALORS
	longueur = i_strlen(pt_IDUS_SELECT)
	erreur = i_recupererValeur(pt_IDUS_SELECT, pt_IDUS_NUM,longueur, '@')
	#trace1("__LINE__ ##  longueur pt_IDUS_SELECT    = %d =======", longueur)
	#trace2("__LINE__ ##  pt_IDUS_SELECT = %s ======= pt_IDUS_NUM = %s ====", pt_IDUS_SELECT, pt_IDUS_NUM)

	SI (i_strplcmp(pt_IDUS_NUM,"sip:",0,4) == 0 || i_strplcmp(pt_IDUS_NUM,"tel:",0,4) == 0 )
	ALORS
		i_get_sub_str(pt_IDUS_NUM, 4,-1, pt_IDUS_NUM)
	FINSI

	SI (i_strplcmp(pt_IDUS_NUM,"+",0,1) == 0)
	ALORS
		i_get_sub_str(pt_IDUS_NUM, 1,-1, pt_IDUS_NUM)
	FINSI

	SI (i_strplcmp(pt_IDUS_NUM,"33",0,2)==0)
	ALORS
		i_get_sub_str(pt_IDUS_NUM, 2,-1, pt_IDUS_NUM)
		IDUS_INF = 0x80
		b_IDUS_INF_NAT = 1
	SINON
		SI ( i_strplcmp(pt_IDUS_NUM,"262",res,3) == 0 || i_strplcmp(pt_IDUS_NUM,"269",res,3) == 0 
		  || i_strplcmp(pt_IDUS_NUM,"590",res,3) == 0 || i_strplcmp(pt_IDUS_NUM,"594",res,3) == 0 
		  || i_strplcmp(pt_IDUS_NUM,"596",res,3) == 0 || i_strplcmp(pt_IDUS_NUM,"508",res,3) == 0 )
		ALORS
			i_get_sub_str(pt_IDUS_NUM, 3,-1, pt_IDUS_NUM)
			IDUS_INF = 0x80
			b_IDUS_INF_NAT = 1
		SINON
			IDUS_INF = 0xC0
			b_IDUS_INF_INTER = 1
		FINSI
	FINSI
# 25/04/2013 - DRE - G4R02 : QC718 Correction calcul longueur pt_IDUS_NUM_DCB
#	longueur = i_conv_ascii_dcb(pt_IDUS_NUM, pt_IDUS_NUM_DCB)
	long_IDUS_NUM_DCB = i_conv_ascii_dcb(pt_IDUS_NUM, pt_IDUS_NUM_DCB)
FINSI

# b_FACTURABLE     G3R22C5 QC546
SI (b_EFFICACE && b_IDUS_OPITML && b_IDUS_INF_NAT)
ALORS
	b_FACTURABLE = 1
FINSI
#trace1("__LINE__ ##  b_FACTURABLE = %d =======", b_FACTURABLE)

# IDUS_NUM_BNC (Normalisation du demandeur)
# G3R22C5 QC546
i_get_sub_str(pt_IDUS_NUM, 0, 0, pt_Z)
SI (IDUS_INF == 0x80)
ALORS
	SI ( i_strcmp("0", pt_Z) == 0 || i_strcmp("6", pt_Z) == 0 || i_strcmp("7", pt_Z) == 0 
	  || i_strcmp("8", pt_Z) == 0 || i_strcmp("9", pt_Z) == 0 )
	ALORS
		SI b_FACTURABLE
		ALORS
			#trace("__LINE__ ##  erreur de normalisateur du demandeur")
			erreur = i_format_str2(pt_BUF1,"%s%s","Erreur de normalisateur du demandeur : ",pt_IDUS_NUM)
			code_rejet = 0xA011
			erreur = i_PlvMessEmettre(8612,2,g_iartin,"",3,code_rejet,C_Article,pt_BUF1)
			SAUT DISTRI_ERR
		SINON
			erreur = i_format_str2(pt_IDUS_NUM_BNC,"%s%s","0*",pt_IDUS_NUM)
		FINSI
	FINSI

	SI ( i_strcmp("1", pt_Z) == 0 || i_strcmp("2", pt_Z) == 0 || i_strcmp("3", pt_Z) == 0 
	  || i_strcmp("4", pt_Z) == 0 || i_strcmp("5", pt_Z) == 0 )
	ALORS
		erreur = i_format_str2(pt_IDUS_NUM_BNC,"%s%s","0",pt_IDUS_NUM)
	FINSI

	i_get_sub_str(pt_IDUS_NUM, 0, 3, pt_ZABx)
	SI ( i_strcmp(pt_ZABx,"9760") == 0 || i_strcmp(pt_ZABx,"9761") == 0 || i_strcmp(pt_ZABx,"9762") == 0 
	  || i_strcmp(pt_ZABx,"9763") == 0 || i_strcmp(pt_ZABx,"9764") == 0 || i_strcmp(pt_ZABx,"9765") == 0 
	  || i_strcmp(pt_ZABx,"9766") == 0 || i_strcmp(pt_ZABx,"9767") == 0 || i_strcmp(pt_ZABx,"9768") == 0 )
	ALORS
		erreur = i_format_str2(pt_IDUS_NUM_BNC, "%s%s", "0*", pt_ZABx)
	FINSI
FINSI

SI (IDUS_INF == 0xC0)
ALORS
	i_strcpy(pt_IDUS_NUM_BNC, pt_IDUS_NUM)
FINSI

longueur = i_strlen(pt_IDUS_NUM_BNC)
SI longueur > 10
ALORS
	i_get_sub_str(pt_IDUS_NUM_BNC,0,9,pt_IDUS_NUM_BNC)
	erreur = i_memcpy_art_field_n(g_icopo, $Tcopo::NDR, pt_IDUS_NUM_BNC, 11)
SINON
	erreur = i_memcpy_art_field_n(g_icopo, $Tcopo::NDR, pt_IDUS_NUM_BNC, longueur+1)
FINSI

#trace1("__LINE__ ##  IDUS_INF          = %d =======", IDUS_INF)
#trace1("__LINE__ ##  b_IDUS_INF_NAT    = %d =======", b_IDUS_INF_NAT)
#trace1("__LINE__ ##  b_IDUS_INF_INTER  = %d =======", b_IDUS_INF_INTER)
#trace2("__LINE__ ##  pt_IDUS_NUM = %s  = %s =======", pt_IDUS_NUM, "")
#trace2("__LINE__ ##  pt_IDUS_NUM_BNC   = %s =======", pt_IDUS_NUM_BNC,"")

# b_FACTURABLE     G3R22C5 QC546

# Controles croises entre champs connus du DC
SI (b_FACTURABLE)
ALORS
	SI (!i_valid_field_n(g_iartin, $Topitml::NDI))
	ALORS
		i_strcpy (pt_message,"champ NDI absent")
		code_rejet = 0xA041
		erreur = i_PlvMessEmettre(7306,2,g_iartin,"",3,code_rejet,C_Article,pt_message)
		#trace2("__LINE__ ##  Controles croises entre champs connus du DC:  %s =============", pt_message,"")
		SAUT DISTRI_ERR
	FINSI

	SI ( !i_valid_field_n(g_iartin, $Topitml::DialledDigits) && !i_valid_field_n(g_iartin,$Topitml::AsCalledPartyAd))
	ALORS
		i_strcpy (pt_message,"champs DialledDigits et AsCalledPartyAd absents")
		code_rejet = 0xA041
		erreur = i_PlvMessEmettre(7306,2,g_iartin,"",3,code_rejet,C_Article,pt_message)
		#trace2("__LINE__ ##  Controles croises entre champs connus du DC:  %s =============", pt_message,"")
		SAUT DISTRI_ERR
	FINSI

	SI (!i_valid_field_n(g_iartin,$Topitml::CallDuration))
	ALORS
		i_strcpy (pt_message,"champ CallDuration absent")
		code_rejet = 0xA041
		erreur = i_PlvMessEmettre(7306,2,g_iartin,"",3,code_rejet,C_Article,pt_message)
		#trace2("__LINE__ ##  Controles croises entre champs connus du DC:  %s =============", pt_message,"")
		SAUT DISTRI_ERR
	FINSI
FINSI

# DEDE_SELECT
#	T3dialleD ->DialledDigits
#	T3Computeinfo04 -> AsCalledPartyAd
#	T3ComputeInfo06 -> NDI
SI (b_IDUS_OPITML == 1)
ALORS
	SI (i_valid_field_n(g_iartin, $Topitml::DialledDigits))
	ALORS
		erreur = i_get_art_str(g_iartin,$Topitml::DialledDigits,pt_DEDE_SELECT)
		#trace2("__LINE__ ##  [b_IDUS_OPITML] pt_DEDE_SELECT -> DialledDigits = %s =============", pt_DEDE_SELECT,"")
	SINON
		SI (i_valid_field_n(g_iartin, $Topitml::AsCalledPartyAd))
		ALORS
			erreur = i_get_art_str(g_iartin,$Topitml::AsCalledPartyAd,pt_DEDE_SELECT)
			#trace2("__LINE__ ##  [b_IDUS_OPITML] pt_DEDE_SELECT -> AsCalledPartyAd (Computeinfo04) = %s =============", pt_DEDE_SELECT,"")
		FINSI
	FINSI
SINON
	SI (b_DEDE_OPITML == 1)
	ALORS
		SI (i_valid_field_n(g_iartin, $Topitml::NDI))
		ALORS
			erreur = i_get_art_str(g_iartin,$Topitml::NDI,pt_DEDE_SELECT)
			#trace2("__LINE__ ##  [b_IDUS_OPITML] pt_DEDE_SELECT -> NDI = %s =============", pt_DEDE_SELECT,"")
		FINSI
	FINSI
FINSI

# DEDE_NUM
# DEDE_INF
# b_DEDE_INF_NAT
# b_DEDE_INF_INTER
# b_DEDE_INF_SPEC
# DEDE_NUM_BNC
i_strcpy (pt_DEDE_NUM,"")
SI (i_strcmp("", pt_DEDE_SELECT) != 0)
ALORS
	longueur = i_strlen(pt_DEDE_SELECT)

	# suppression des caracteres a partir de '@'
	erreur = i_recupererValeur(pt_DEDE_SELECT, pt_DEDE_NUM,longueur, '@')
	#trace1("__LINE__ ##  longueur pt_DEDE_SELECT     = %d =======", longueur)
	#trace2("__LINE__ ##  pt_DEDE_SELECT = %s ======= pt_DEDE_NUM = %s ====", pt_DEDE_SELECT, pt_DEDE_NUM)

	# suppression de 'sip:' ou 'tel:'
	SI (i_strplcmp(pt_DEDE_NUM,"sip:",0,4) == 0) || (i_strplcmp(pt_DEDE_NUM,"tel:",0,4) == 0)
	ALORS
		i_get_sub_str(pt_DEDE_NUM, 4, -1, pt_DEDE_NUM)
	FINSI
	# suppression de '847'
	SI (i_strplcmp(pt_DEDE_NUM,"847", 0, 3) == 0)
	ALORS
		i_get_sub_str(pt_DEDE_NUM, 3, -1, pt_DEDE_NUM)
	FINSI

#G4R5 QC772 
	## suppression de la chaine C_phone
	#i_strcpy(pt_DEDE_NUM,REMPLACE_CHAINE(pt_DEDE_NUM, C_phone, ""))

	# Si ? ; ? present, suppression des caracteres a partir de ? ; ?
	i_strcpy (pt_temp,pt_DEDE_NUM)
	erreur = i_recupererValeur(pt_temp, pt_DEDE_NUM, i_strlen(pt_temp),';')
#\G4R5 QC772



# DRE QC744 Conversion avant suppression
	# remplacement de %23 par #
	erreur = i_adequation_chaine_expreg (pt_DEDE_NUM, "%23")
	#trace1("__LINE__ ##  ******** erreur = %x ******** ",erreur)
	SI erreur == 0
	ALORS
		i_strcpy(pt_DEDE_NUM,REMPLACE_CHAINE(pt_DEDE_NUM,"%23","#"))
	FINSI

	# suppression du '#' final
	i_get_sub_str(pt_DEDE_NUM, -1, -1, pt_temp)
	SI i_strcmp(pt_temp, "#") == 0
	ALORS
		i_get_sub_str(pt_DEDE_NUM, 0, -2, pt_DEDE_NUM)
	FINSI

#	# remplacement de %23 par #
#	erreur = i_adequation_chaine_expreg (pt_DEDE_NUM, "%23")
#	#trace1("__LINE__ ##  ******** erreur = %x ******** ",erreur)
#
#	SI erreur == 0
#	ALORS
#		i_strcpy(pt_DEDE_NUM,REMPLACE_CHAINE(pt_DEDE_NUM,"%23","#"))
#	FINSI

	#Remplacer * par B et # par C
	i_replace_str(pt_DEDE_NUM,"*#","BC",pt_DEDE_NUM)

	# conversion DEDE_NUM ascii en DCB
	#longueur = i_conv_ascii_dcb(pt_DEDE_NUM, pt_IDUS_DEDE_DCB)
FINSI

########################################################################
#DEDE_INTERNAT
########################################################################
SI ( i_strplcmp(pt_DEDE_NUM,"+",0,1) == 0 )
ALORS
	SI ( i_strplcmp(pt_DEDE_NUM,"33",1,2) != 0 && i_strplcmp(pt_DEDE_NUM,"262",1,3) != 0
	  && i_strplcmp(pt_DEDE_NUM,"594",1,3) != 0 && i_strplcmp(pt_DEDE_NUM,"596",1,3) != 0
	  && i_strplcmp(pt_DEDE_NUM,"590",1,3) != 0 && i_strplcmp(pt_DEDE_NUM,"508",1,3) != 0
	  && i_strplcmp(pt_DEDE_NUM,"2696",1,4) != 0 && i_strplcmp(pt_DEDE_NUM,"2692",1,4) != 0 )
	ALORS
		b_DEDE_INF_INTER = 1
	FINSI
FINSI

SI (i_strplcmp(pt_DEDE_NUM,"00",0,2) == 0 )
ALORS
	SI ( i_strplcmp(pt_DEDE_NUM,"33",2,2) != 0 && i_strplcmp(pt_DEDE_NUM,"262",2,3) != 0
	  && i_strplcmp(pt_DEDE_NUM,"594",2,3) != 0 && i_strplcmp(pt_DEDE_NUM,"596",2,3) != 0
	  && i_strplcmp(pt_DEDE_NUM,"590",2,3) != 0 && i_strplcmp(pt_DEDE_NUM,"508",2,3) != 0
	  && i_strplcmp(pt_DEDE_NUM,"2696",2,4) != 0 && i_strplcmp(pt_DEDE_NUM,"2692",2,4) != 0 )
	ALORS
		b_DEDE_INF_INTER = 1
	FINSI
FINSI


########################################################################
#Modification DEDE_NUM
########################################################################
SI (i_strplcmp(pt_DEDE_NUM, "+", 0, 1) == 0)
ALORS
	i_get_sub_str(pt_DEDE_NUM, 1, -1, pt_DEDE_NUM)
SINON
	SI (i_strplcmp(pt_DEDE_NUM, "00", 0, 2) == 0)
	ALORS
		i_get_sub_str(pt_DEDE_NUM, 2, -1, pt_DEDE_NUM)
	FINSI
FINSI


SI (i_strplcmp(pt_DEDE_NUM, "33", 0, 2) == 0)
ALORS
	i_get_sub_str(pt_DEDE_NUM, 2, -1, pt_DEDE_NUM)
SINON
	SI ( i_strplcmp(pt_DEDE_NUM, "262", 0, 3) == 0 || i_strplcmp(pt_DEDE_NUM, "594", 0, 3) == 0
	  || i_strplcmp(pt_DEDE_NUM, "596", 0, 3) == 0 || i_strplcmp(pt_DEDE_NUM, "590", 0, 3) == 0 )
	ALORS
		i_get_sub_str(pt_DEDE_NUM, 3, -1, pt_DEDE_NUM)
	FINSI
FINSI

SI b_DEDE_INF_INTER != 1
ALORS
	SI (i_strplcmp(pt_DEDE_NUM,"0",0,1)==0  && i_strplcmp(pt_DEDE_NUM,"0",1,1) != 0)
	ALORS
		i_get_sub_str(pt_DEDE_NUM,1,-1,pt_DEDE_NUM)
	FINSI
FINSI


##############################################################################
# DEDE_INF (0x80: national, 0x40: special, 0xC0: international)
##############################################################################
SI  b_DEDE_INF_INTER
ALORS
	DEDE_INF = 0xC0
	i_strcpy(pt_DEDE_INF , "C0")
SINON
	#G3R22 QC554
	SI (i_strcmp("", pt_DEDE_NUM) != 0)
	ALORS
	#\G3R22 QC554
		SI (i_strlen(pt_DEDE_NUM)< 7)
		ALORS
			DEDE_INF = 0x40
			i_strcpy(pt_DEDE_INF , "40")
			b_DEDE_INF_SPE = 1
		SINON
			DEDE_INF = 0x80
			i_strcpy(pt_DEDE_INF , "80")
			b_DEDE_INF_NAT = 1
		FINSI
	FINSI
FINSI

##############################################################################
# elimination prefixe 150PQ ou VWXY
##############################################################################
#QC512 DRE
# G4R9 Lot1 ####
SI (DEDE_INF == 0x80)
ALORS
	longueur = i_strlen(pt_DEDE_NUM)
	SI (longueur > 9)
	ALORS
		# N? M2M sur 13 digits
		SI (i_strplcmp(pt_DEDE_NUM, "700", 0, 3) != 0)
		ALORS
			SI (i_strplcmp(pt_DEDE_NUM, "150", 0, 3) == 0)
			ALORS
				# prefixe d'acheminement vers le RI Convergent ( 150PQ)
				i_get_sub_str(pt_DEDE_NUM, 5, -1, pt_DEDE_NUM)
			SINON
				# numero renvoi vers messagerie vocale ( btpack) ( EX: 3379966ABPQMCDU)
				i_get_sub_str(pt_DEDE_NUM, 4, -1, pt_DEDE_NUM)
			FINSI
		FINSI
	FINSI
FINSI
#\QC512 DRE

# DATE_GMT (ICAR_UTC)
DATE_GMT = i_get_art_field(g_iartin, $Topitml::StartTime_SDATE)

#G4R6 Lot2 TDATCPS
#-----------------------------------------------------------
# DATCPS : Determine si la Tv2oip::DATE est egale ou posteriereure a celle
# retournee par la table TDATCPS
#------------------------------------------------------------
i_strcpy (pt_datCPLUSS,i_get_tab_field("TDATCPS", DATE_GMT, "DATCPS"))
erreur = i_set_art_str (g_iartout10,$Conversion::DATE_STR,pt_datCPLUSS)
date_table = i_get_art_field(g_iartout10, $Conversion::DATE_ASC)

SI DATE_GMT >= date_table
ALORS
	b_Fact_CPS_Act = 1
FINSI

# Metropole (ICAR_METRO)
ICAR_ABS = i_DHgetLocalTime(NUMTAB, ZONE_METROPOLE, DATE_GMT)

#  HLAHM1 (ICAR_LOCAL)
SI (IDUS_INF == 0x80)
ALORS
	longueur = i_conv_ascii_dcb(pt_IDUS_NUM, pt_BUF1)
	erreur = i_memcpy_art_field_n(g_iartout10, $Conversion::NDR, pt_BUF1, longueur)
	NUMZONE = i_DHgetZoneID(NUMTABSEL, g_iartout10)
	HLAHM1 = i_DHgetLocalTime(NUMTAB, NUMZONE, DATE_GMT)
FINSI

########################################################################
#Normalisation du demande
########################################################################

# G3R22C6 QC554
SI (i_strcmp("", pt_DEDE_NUM) != 0) 
ALORS
	erreur = i_format_str2(pt_Num,"%s%s",pt_DEDE_INF,pt_DEDE_NUM)
	#trace2("<<<<__LINE__ <<<<<############# pt_Num = <%s> ###########################",pt_Num,"")
	longueur = i_conv_ascii_dcb(pt_Num, pt_BUF1)
	#trace1("######### Longueur pt_Num = <%d> ############ ",longueur)
	erreur = i_memcpy_art_field_n(g_iartout10, $Conversion::NOS, pt_BUF1, longueur)
	erreur = i_normal(g_iartout10, $Conversion::NOS, $Conversion::NOS, g_icopo, $Tcopo::NDE ,$Tcopo::NDE ,3 , "BIDON", "OPIT_NDE")
	erreur = i_get_art_str(g_icopo,$Tcopo::NDE,pt_Num)
	longueur = i_conv_ascii_dcb(pt_Num, pt_BUF1)

	SI longueur > 10
	ALORS
		i_get_sub_str(pt_BUF1, 0, 9, pt_Num)
		erreur = i_memcpy_art_field_n(g_icopo, $Tcopo::NDE, pt_Num, 11)
	FINSI

	#QC512 01/09/2011 DRE  suppression du 00 ou du 0
	######## pt_DEDE_NUM_FAC ########
	i_strcpy(pt_DEDE_NUM_FAC,pt_BUF1)

	SI (i_strplcmp(pt_DEDE_NUM_FAC,"00",0,2) == 0 )
	ALORS
		i_get_sub_str(pt_DEDE_NUM_FAC,2,-1,pt_DEDE_NUM_FAC)
	SINON
		SI (i_strplcmp(pt_DEDE_NUM_FAC,"0",0,1) == 0 )
		ALORS
			i_get_sub_str(pt_DEDE_NUM_FAC,1,-1,pt_DEDE_NUM_FAC)
		FINSI
	FINSI
FINSI
#\G3R22C6 QC554
#\QC512 DRE

###################
# Appel a la BNC
###################
# critere de valorisation

CODCIRDR=-1
CODCIR=-1
TYPCTR=-1
CCD = 0xFF
TYPCOM = 0xFF

#trace1("__LINE__ ##  EFFICACE = <%d>", b_EFFICACE)
#trace1("__LINE__ ##  IDUS_INF = <%d>", IDUS_INF)
#trace2("__LINE__ ##  pt_DEDE_NUM = %s", pt_DEDE_NUM, "")

SI ( b_EFFICACE == 1 && IDUS_INF == 0x80 && i_strcmp(pt_DEDE_NUM, "") != 0 && ( i_strcmp("0", pt_Z) != 0 ) )
ALORS
	#trace("__LINE__ ##  Appel a la base de comptage")
	g_icopo.TAXE   = 0
	g_icopo.CREDIT = 0
	erreur = i_set_art_date(g_icopo, HLAHM1)
	g_icopo.DUREE  = Duree
	g_icopo.CODE   = CODE_ARTICLE
	g_icopo.CATEG  = CATEG
	g_icopo.SUP[0] = 0
	g_icopo.SUP[1] = 0
	g_icopo.SUP[2] = 0
	g_icopo.SUP[3] = 0
	g_icopo.SUP[4] = 0
	g_icopo.SUP[5] = 0
	g_icopo.SUP[6] = 0
	g_icopo.SUP[7] = 0

	retour_BNC = i_comptage(g_icopo, BASE, HLAHM1)

	# Erreur retour base de comptage
	SI (retour_BNC == -1 && b_FACTURABLE)
	ALORS
		#trace1("__LINE__ ##  Erreur retour BNC : erreur = %d", retour_BNC)
		code_rejet = 0xA020 + b_EFFICACE
		erreur = i_PlvMessEmettre(8507,2,g_iartin,"",3,code_rejet,C_Article,g_ierrno)
		SAUT DISTRI_ERR
	FINSI

	# TYPCOM, CCD, CODCIR, CODCIRDR, vc, UNITE, TYPCTR
	SI retour_BNC == 0
	ALORS
		SI (b_FACTURABLE)
		ALORS
			TYPCOM = g_icopo.SUP[RES_TYPCOM]
		FINSI

		CCD = g_icopo.SUP[RES_CCD]

		CODCIRDR = g_icopo.SUP[RES_CODCIRDR]
		CODCIR = g_icopo.SUP[RES_CODCIR]

		############################################
		# Controle sur l'unite renvoyee par la BNC
		# COEFF=94 MILEURO=10 MILEURODR=110
		# NbUT=vcUT UTC=0 UTCDR=100
		############################################
		vc = g_icopo.TAXE
		UNITE = g_icopo.SUP[RES_UNITE]
		SI UNITE != UTC && UNITE != MILEURODR && UNITE != UTCDR
		ALORS
			#trace(">>>__LINE__>>> Erreur retour BNC")
			code_rejet = 0xA020
			code_rejet = code_rejet + b_EFFICACE
			erreur = i_PlvMessEmettre(8506,2,g_iartin,"",3,code_rejet,C_Article,UNITE)
			SAUT DISTRI_ERR
		FINSI
		TYPCTR = g_icopo.SUP[RES_TYPCTR]
	FINSI
FINSI

# b_REJET1
# b_REJET2
# b_REJET3
# b_REJET5
SI (TYPCTR == 11)
ALORS
	b_REJET1 = 1
SINON
	SI (TYPCTR == 10)
	ALORS
		b_REJET2 = 1
	SINON
		SI (TYPCTR == 12)
		ALORS
			b_REJET3 = 1
		SINON
			SI (TYPCTR == 9)
			ALORS
				b_REJET5 = 1
			FINSI
		FINSI
	FINSI
FINSI

##########################################################################################################
#G4R6 Lot2 Verif DATE
SI ( TYPCTR == CTR_CPSLOC || TYPCTR == CTR_CPSRI ) && !b_Fact_CPS_Act
ALORS
	# message dalarme AR <DEDE_NUM> C+S avec date DC <ICAR_UTC> inferieure a la date d'activation de la facturation C+S < Date_CPS> 
	erreur = i_format_str2(pt_LIBELREDIST," AR <%s> avec date DC inferieure a la date d'activation <%s> de la facturation CPS",pt_DEDE_NUM,pt_datCPLUSS)
	code_errone = 0xA080
	code_errone = code_errone + b_EFFICACE
	erreur = i_PlvMessEmettre( 8599, 1, g_iartin,"", 3,code_errone, C_Article, pt_LIBELREDIST )
	SAUT ELIMINE_EXP
SINON
	SI TYPCTR == CTR_CPSLOC && b_Fact_CPS_Act
	ALORS
		b_Fact_CPS_Loc =1
	SINON
		SI TYPCTR == CTR_CPSRI && b_Fact_CPS_Act
		ALORS
			b_Fact_CPS_RI = 1
		FINSI
	FINSI
FINSI

# b_Emessage_IP
SI (CCD == 0x17)
ALORS
	b_Emessage_IP = 1
FINSI

# referentiel ACLA
# b_EPORTABILITE_SCP
# b_SPORTABILITE_SCP
#G4R7 Lot1
#i_get_sub_str(pt_DEDE_NUM, 0, 0, pt_debChamp1)
longueur = i_strlen(pt_DEDE_NUM)


#DRE QC677
SI b_DEDE_INF_NAT || b_DEDE_INF_SPE
#SI CCD != CCD_Internat
ALORS
	#SI ( (i_strcmp(pt_debChamp1,"8") == 0 || (i_strcmp(pt_debChamp1,"3") == 0 ) && longueur == 4 ))
	#ALORS
	#G4R7 Lot1
	instACLA = i_LireInstanceECC(C_InstACLA)

	SI (!instACLA)
	ALORS
		#trace (">>>__LINE__>>> --------Pas d'instance pour ACLA------------------------------")
		code_rejet = 0xA0B0
		code_rejet = code_rejet + b_EFFICACE
		erreur   = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_rejet,C_InstACLA,C_Article)
		SAUT DISTRI_ERR
	FINSI
	#trace1(">>>__LINE__>>> -------instACLA=<%d>-----------------------------",instACLA  )
	
	# Envoi Requetes Table de Distribution ACLA
	i_strcpy(pt_BUF1,pt_DEDE_NUM)
	#trace2(">>>__LINE__>>> ------ envoi ACLA avec pt_DEDE_NUM= pt_BUF1 <%s>---------",pt_BUF1,"")
	pt_CODESCP = CodeOperateurTable6(DATE_GMT, pt_BUF1, "ACLA")
	#trace2(">>>__LINE__>>> ------ resultat de pt_CODESCP : <%s>---------",pt_CODESCP   ,"")

	SI i_strcmp(pt_CODESCP, "84008") == 0
	ALORS
		#trace(" ACLA pt_CODESCP=84008  EPORTABILITE_SCP   = 1")
		b_EPORTABILITE_SCP = 1
	SINON
		SI i_strcmp(pt_CODESCP  ,"")!= 0
		ALORS
			b_SPORTABILITE_SCP = 1
		FINSI
	FINSI
	#FINSI

	# referentiel 45S "SKITEL"
	# b_EPORTABILITE_SRP
	# b_SPORTABILITE_SRP
	inst45S = i_LireInstanceECC(C_Inst45S)
	
	SI (!inst45S)
	ALORS
		#trace (">>>__LINE__>>> --------Pas d'instance pour 45S------------------------------")
		code_rejet = 0xA0B0
		code_rejet = code_rejet + b_EFFICACE
		erreur   = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_rejet,C_Inst45S,C_Article)
		SAUT DISTRI_ERR
	FINSI
	
	# Envoi Requetes Table de Distribution 45S
	i_strcpy(pt_BUF1,pt_DEDE_NUM)
	#trace2(">>>__LINE__>>> ------ envoi 45S avec pt_DEDE_NUM= pt_BUF1 <%s>---------",pt_BUF1,"")
	pt_CODESRP = CodeOperateurTable6(DATE_GMT, pt_BUF1, "45S")
	#trace2(">>>__LINE__>>> ------ resultat de pt_CODESRP : <%s>---------",pt_CODESRP   ,"")
	
	SI i_strcmp(pt_CODESRP  , "84208") == 0
	ALORS
		#trace("******** EPORTABILITE_SRP   = 1 car pt_CODESRP  84208")
		b_EPORTABILITE_SRP = 1
	SINON
		SI (i_strcmp(pt_CODESRP, "84208")!=0 && i_strcmp(pt_CODESRP, "")!=0)
		ALORS
			b_SPORTABILITE_SRP = 1
		FINSI
	FINSI
FINSI
#FIN DRE QC677
# DRE G3R24

	## b_PTD (SRP_PTD)
	#b_PTD = 0
	#
	#SI (TYPCOM == 0x4E)
	#ALORS
	#	b_PTD = 1
	#FINSI
	#
	## b_SRP_TIERS_sans_ITX
	#########################################################################
	#b_SRP_TIERS_sans_ITX = 0
	#
	#SI ( CCD == 0x18 ) 
	#&& ( TYPCOM == 0x52 || TYPCOM == 0x58 || TYPCOM == 0x59 || TYPCOM == 0x5A || TYPCOM == 0x5B || TYPCOM == 0x5C )
	#ALORS
	#	b_SRP_TIERS_sans_ITX = 1
	#FINSI
	
##################### b_SRP_TIERS_PTD Calcul du Booleen ##################
b_SRP_TIERS_PTD = 0

SI ( (CCD == 0x18) && (TYPCTR == 3) )
ALORS
	b_SRP_TIERS_PTD = 1
FINSI


#################### b_118_TIERS_PTD Calcul du Booleen ####################
b_118_TIERS_PTD = 0
SI (CCD == 0x1B)
ALORS
	b_118_TIERS_PTD = 1
FINSI

# \DRE G3R24

##########################################################################################################
#G4R6 Lot2 Interro Ref ALICE

SI b_Fact_CPS_Loc
ALORS
	longueur = i_conv_ascii_dcb(pt_DEDE_NUM_FAC, pt_temp)
	SI ( i_EnvoiReqConsTabDist( TD_ALICE, DATE_GMT, pt_temp, longueur, 0, 1) != 0 )
	ALORS
		code_errone = 0xA0C0
		code_errone = code_errone + b_EFFICACE
		erreur = i_PlvMessEmettre(8607,2,g_iartin,"",3,code_errone,C_instALICE,C_Article)
		SAUT DISTRI_ERR
	FINSI

	instALICE = i_LireInstanceECC(C_instALICE)

	SI (!instALICE)
	ALORS
		erreur = i_PlvMessEmettre(8501,2, g_iartin, "", 3, "ALICE", C_Article, g_ieec)
		SAUT DISTRI_ERR
	FINSI

	erreur = i_LireReqConsTabDist()

	SI erreur == 0
	ALORS
		#erreur = i_LireChaineECCv(instALICE, pt_ECCv)
		#instECCv = i_LireEntierECCv( instALICE )
		res = i_LireInfoECC( instALICE, 0 )

#G4R7 Lot3 QC834
		SI ( res != 0)
		ALORS
			# AR present dans ALICE
			erreur = i_LireChaineInfo( res, 0, 4, pt_temp )
			SI i_strcmp(pt_temp, "" ) != 0
			ALORS
				i_strcpy(pt_TARIF, pt_temp )
				b_ALICE = 1
			SINON
				# info complementaire CODE_TARIF vide
				b_REDIST = 1
				erreur = i_format_str2(pt_LIBELREDIST," AR <%s> trouve dans LAR ALICE mais aucune info complementaire valorisee",pt_DEDE_NUM,0)
			FINSI
			
			erreur = i_LireChaineInfo( res, 4, 1, pt_temp )
			SI i_strcmp(pt_temp, "" ) != 0
			ALORS
				i_strcpy(pt_EDIT, pt_temp )
				b_ALICE = 1
			SINON
				# info complementaire TYPE_EDIT vide
				b_REDIST = 1
				erreur = i_format_str2(pt_LIBELREDIST," AR <%s> trouve dans LAR ALICE mais aucune info complementaire valorisee",pt_DEDE_NUM,0)
			FINSI
		SINON
			erreur = i_format_str2(pt_LIBELREDIST," AR <%s> non trouve dans ALICE",pt_DEDE_NUM,0)
			b_REDIST = 1
		FINSI
	FINSI
FINSI

# CCD_REEL
SI b_EPORTABILITE_SRP
ALORS
	CCD_REEL = 212
SINON
	SI b_SPORTABILITE_SRP
	ALORS
		CCD_REEL = 213
	SINON
		SI b_EPORTABILITE_SCP
		ALORS
			CCD_REEL = 218
		SINON
			SI b_SPORTABILITE_SCP
			ALORS
				CCD_REEL = 219
			SINON
				SI CCD != -1
				ALORS
					CCD_REEL = CCD
				SINON
					CCD_REEL = 255
				FINSI
			FINSI
		FINSI
	FINSI
FINSI

# b_DISTRI_TRAFIC
#G4R6 Lot2 
#SI ( b_FACTURABLE && !( b_REJET1 ||  b_REJET2 || b_REJET3 || b_REJET5 ) && !( b_SPORTABILITE_SRP ) )
SI ( b_FACTURABLE && !( b_Fact_CPS_RI || b_REJET1 ||  b_REJET2 || b_REJET3 || b_REJET5 ) && !( b_SPORTABILITE_SRP ) )
ALORS
	b_DISTRI_TRAFIC = 1
FINSI

############################
#  Recherche instances ECC
############################

# TRAFIC (ECC de facturation)
# bassin de facturation dans MAJ2G (TD_Inter / 4)
SI (b_DISTRI_TRAFIC == 1)
ALORS
	instTRAFIC = i_LireInstanceECC(C_InstTRAFIC)
	SI (!instTRAFIC)
	ALORS
		erreur = i_PlvMessEmettre(8501, 2, g_iartin,"", 3, C_InstTRAFIC, C_Article, g_ieec)
		SAUT DISTRI_ERR
	FINSI
	#trace1(">>>__LINE__>>> instTRAFIC=<%d>",instTRAFIC)
# 25/04/2013 - DRE - G4R02 : QC718 Correction calcul longueur pt_IDUS_NUM_DCB
#	longueur = i_strlen(pt_IDUS_NUM_DCB)
#	res = i_EnvoiReqConsTabDist(TD_Inter, DATE_GMT, pt_IDUS_NUM_DCB, longueur, 0, 1)
	res = i_EnvoiReqConsTabDist(TD_Inter, DATE_GMT, pt_IDUS_NUM_DCB, long_IDUS_NUM_DCB, 0, 1)
	SI ( res != 0 )
	ALORS
		#trace1(">>>__LINE__>>> Erreur i_EnvoiReqConsTabDist %d - alarme a emettre", res)
		code_rejet = 0xA0C0
		code_rejet = code_rejet + b_EFFICACE
		erreur = i_PlvMessEmettre(8607, 2, g_iartin, "", 3, code_rejet, "MAJ2G", C_Article)
		SAUT DISTRI_ERR
	FINSI

	erreur = i_LireReqConsTabDist()
	#trace1(">>>__LINE__>>> RETOUR i_LireReqConsTabDist, erreur=<%d>",erreur)
	SI ( erreur != 0 )
	ALORS
		#trace1( ">>>__LINE__>>> Erreur i_LireReqConsTabDist: <%d>", erreur)
		code_rejet = 0xA070
		code_rejet = code_rejet + b_EFFICACE
		erreur = i_PlvMessEmettre(8508, 2, g_iartin, "", 3, C_Article, "LireReqConsTabDist", "MAJ2G")
		SAUT DISTRI_ERR
	FINSI

	res = i_LireInfoECC(instTRAFIC, 0)
	#trace1(">>>__LINE__>>> ============res i_LireInfoECC(instTRAFIC) = <%d>",res)
	SI ( res != 0)
	ALORS
		erreur = i_LireChaineInfo( res, 0, 3, pt_InfoCompl)
		erreur = i_format_str2(pt_inst, "TRAF%s", pt_InfoCompl,0)
		#trace2(">>>__LINE__>>> Concatenation de TRAF avec info.compl: <%s>", pt_inst, "")
		instTRAFIC = i_LireInstanceECC(pt_inst)
		#trace1(">>>__LINE__>>> Instance de TRAFIC: instTRAFIC=<%d>",instTRAFIC)
		SI (!instTRAFIC)
		ALORS
			erreur = i_PlvMessEmettre(8501,2,g_iartin,"",3,pt_inst,C_Article,g_ieec)
			SAUT DISTRI_ERR
		FINSI
#G4R6 Lot2
#		b_REDIST = 0
		flag_TRAFIC = 1
		i_strcpy(pt_EccFact, pt_inst)
		#trace2(">>>__LINE__>>> ECC de facturation: <%s>", pt_EccFact, "")
	SINON
		b_REDIST = 1
		erreur = i_format_str2(pt_LIBELREDIST,"Indicatif inconnu dans la table DISTRI MAJ2G",pt_DEDE_NUM,0)
		flag_TRAFIC = 0
	FINSI
SINON
	flag_TRAFIC = 0
FINSI

# SYMPHONIE (tous DC)
instSYMP =i_LireInstanceECC(C_InstSYMP)

SI (!instSYMP)
ALORS
	erreur = i_PlvMessEmettre(8501, 2, g_iartin, "", 3, C_InstSYMP, C_Article, g_ieec)
	SAUT DISTRI_ERR
FINSI

# CASPER (tous DC)
instCASPER=i_LireInstanceECC(C_InstCASPER)

SI (!instCASPER)
ALORS
	erreur = i_PlvMessEmettre(8501, 2, g_iartin, "", 3, C_InstCASPER, C_Article, g_ieec)
	SAUT DISTRI_ERR
FINSI

############################
#  Ajout des ECC
############################

SI (flag_TRAFIC == 1) && !b_REDIST
ALORS
	erreur = i_AjouterCouranteECC(instTRAFIC)
FINSI

SI (CPT_RDT == 0)
ALORS
	erreur = i_AjouterCouranteECC(instSYMP)
	erreur = i_AjouterCouranteECC(instCASPER)
FINSI

# Validation de la liste des ECCs destinataires
erreur = i_ValiderListeECC( 0, 0, 0, 0)

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

#---------------------------------------------------------------------------
# TRAFIC - g_iartout2
#---------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instTRAFIC) )
ALORS
	#trace(" ##__LINE__## Duplication vers TRAFIC")
	SI (i_dup_art_dest(g_iartin,g_iartout2,"TtraficN"))
	ALORS
		#trace(" ##__LINE__## erreur de i_dup_art_dest")
		erreur = i_PlvMessEmettre(8502, 2, g_iartin, "", 3, "TtraficN", C_Article, g_ieec)
		SAUT  DISTRI_ERR
	FINSI

	# DOMAINE
	erreur=i_set_art_str(g_iartout2,$TtraficN::DOMAINE, "10")

	# SERVICE
	erreur=i_set_art_str(g_iartout2,$TtraficN::SERVICE, "67")

	#I DUS_INF
	# table de duplication : 6:F0:3:$IDUS_INF # "000" -> IDUS_INF

	# E
	# table de duplication : 6:F0:1:$E # "0" -> E

	# IDUS_NUM
	erreur=i_set_art_str(g_iartout2,$TtraficN::IDUS_NUM, pt_IDUS_NUM)

	# DEDE_INF
	# table de duplication : 6:F0:3:$DEDE_INF # "000" -> DEDE_INF
	SI (b_DEDE_INF_NAT || b_DEDE_INF_INTER)
	ALORS
		erreur=i_set_art_field(g_iartout2,$TtraficN::DEDE_INF, DEDE_INF)
	FINSI

	# DEDE_NUM
	#QC511 22/08/2011 DRE pt_DEDE_NUM_FAC = Numero normalise sans 0 devant (00 ou 0)
	#erreur=i_set_art_str(g_iartout2,$TtraficN::DEDE_NUM, pt_DEDE_NUM)
	erreur=i_set_art_str(g_iartout2,$TtraficN::DEDE_NUM, pt_DEDE_NUM_FAC)
	#\QC511 22/08/2011 DRE suppression du 00 ou du 0

	# DATE
	erreur = i_set_art_field(g_iartout2,$TtraficN::DATE, HLAHM1)

	# DUREE
	erreur = i_set_art_field(g_iartout2,$TtraficN::DUREE,Duree)

	# CAX
	# table de duplication : 6:F0:1:$CAX # "0" -> CAX

	# TAX
	# table de duplication : 6:F0:8:$TAX # "00000000" -> TAX
	#DRE G3R24
	#SI ( b_SRP_TIERS_sans_ITX || b_PTD || b_Emessage_IP )
	SI (b_SRP_TIERS_PTD == 1 || b_118_TIERS_PTD == 1 || b_Emessage_IP == 1)
	ALORS
		erreur = i_set_art_field(g_iartout2,$TtraficN::TAX, vc)
	FINSI

	# NDS_NUM
	# table de duplication : 6:40:10:$NDS_NUM # "          " -> NDS_NUM
	SI (b_IDUS_redirectNb || b_IDUS_callingNb)
	ALORS
		erreur = i_set_art_str(g_iartout2,$TtraficN::NDS_NUM, pt_IDUS_NUM_DCB)
	FINSI

	# SUP
	# table de duplication : 6:F0: 1:$SUP # "0" -> SUP
	erreur = i_set_art_field(g_iartout2,$TtraficN::SUP, 9)

	# REF, MES1, MES2, ...
	# table de duplication :
	# 6:F0:3:$REF		# "000"   -> REF
	# 5:255:$MES1		# "255" -> MES1
	# 5:255:$MES2		# "255" -> MES2
	# 6:40:1:$NB_CSV
	# 6:40:2:$C_CSV1
	# 6:40:1:$OP_CSV1
	# 6:40:2:$C_CSV2
	# 6:40:1:$OP_CSV2
	# 6:40:2:$C_CSV3
	# 6:40:1:$OP_CSV3
	# 6:40:2:$C_CSV4
	# 6:40:1:$OP_CSV4
	# 6:40:2:$C_CSV5
	# 6:40:1:$OP_CSV5
	# 6:C6:2:$STY		# "FF"     -> STY
	# 6:40:4:$COCA		# "    "   -> COCA
	# 6:40:4:$COCAV		# "    "   -> COCAV
	# 6:F0:3:$IDAV_INF	# "000"   -> IDAV_INF
	# 6:40:20:$IDAV_NUM	# "                    "   -> IDAV_NUM
	# 6:40:10:$MNEMO	# " "   -> MNEMO
	# 6:40:1:$TAG		# " "   -> TAG

	#champ SGTQS
	erreur=i_set_art_str(g_iartout2, $TtraficN::SGTQS, pt_sgtqs)

	#champ CLASSDEST
	erreur=i_set_art_field(g_iartout2, $TtraficN::CLASSDEST, CCD_REEL)
	
	#G4R6 Lot2 
	#CODE_TARIF
	erreur = i_set_art_str(g_iartout2, $TtraficN::CODE_TARIF,pt_TARIF )

	#TYPE_EDIT
	erreur = i_set_art_str(g_iartout2, $TtraficN::TYPE_EDIT,pt_EDIT )
FINSI

#---------------------------------------------------------------------------
# Symphonie - g_iartout5
#---------------------------------------------------------------------------

SI ( !i_ChercherCouranteECC(instSYMP) )
ALORS
	#trace(">>>__LINE__>>> Duplication vers SYMPHONIE")
	erreur = i_dup_art_id(g_iartin,g_iartout5)

	SI (erreur)
	ALORS
		#trace1(">>>__LINE__>>>__FILE__>>> ERREUR de duplication vers SYMPHONIE : %d",erreur)
		code_rejet = 0xA0D0
		code_rejet = code_rejet + b_EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin, "", 3, code_rejet, "TsymTopitml", C_Article)
		SAUT DISTRI_ERR
	FINSI

	res = i_rename_art(g_iartout5, "TsymTopitml")

	# ajout de tous les champs de T3ce
	erreur = i_ajoutChampNum(g_iartout5, $TsymTopitml::T4ccd,$TsymTopitml::CCD,6)

	# CCD
	SI (b_IDUS_INF_NAT == 1)
	ALORS
		erreur = i_set_art_field(g_iartout5,$TsymTopitml::CCD, CCD_REEL)
	SINON
		erreur = i_set_art_field(g_iartout5,$TsymTopitml::CCD, 255)
	FINSI

	# SGTQS
	erreur=i_set_art_str(g_iartout5,$TsymTopitml::SGTQS, pt_sgtqs)

	# ECC_FACT
	SI (i_strcmp("", pt_EccFact) != 0)
	ALORS
		erreur=i_set_art_str(g_iartout5, $TsymTopitml::ECC_FACT, pt_EccFact)
	SINON
		erreur=i_set_art_str(g_iartout5, $TsymTopitml::ECC_FACT,"        ")
	FINSI

	#  HLAHM1 (DATE_LOCALE)
	SI (b_IDUS_INF_NAT == 1)
	ALORS
		erreur = i_set_art_field(g_iartout5, $TsymTopitml::DATE_LOCALE, HLAHM1)
	SINON
		erreur = i_supprChamp(g_iartout5, "T4date_locale")
	FINSI

	# CODCIRDR (g_iartout10, $Conversion num hexa /tab hexa)
	SI CODCIRDR != -1
	ALORS
		#trace(">>>__LINE__>>>CODCIRDR est valide")
		i_strcpy(pt_BUF1, " ")
		erreur = i_set_art_field(g_iartout10,$Conversion::CODCIRDR,CODCIRDR)
		erreur = i_get_art_str(g_iartout10, $Conversion::CODCIRDA,pt_BUF1)
		SI  g_iartout10.CODCIRDA[2] > 9
		ALORS
			i_get_sub_str(pt_BUF1,2,5,pt_BUF1)
		SINON
			i_get_sub_str(pt_BUF1,1,5,pt_BUF1)
		FINSI
		erreur=i_set_art_str(g_iartout5, $TsymTopitml::CODCIRDR, pt_BUF1)
	SINON
		erreur=i_supprChamp(g_iartout5,"T4codcirdr")
	FINSI

	# CODCIR (g_iartout10, $Conversion num hexa /tab hexa)
	SI CODCIR != -1
	ALORS
		#trace(">>>__LINE__>>>CODCIR est valide")
		i_strcpy(pt_BUF1, "")
		erreur = i_set_art_field(g_iartout10,$Conversion::CODCIRDR,CODCIR)
		erreur = i_get_art_str(g_iartout10, $Conversion::CODCIRDA,pt_BUF1)
		SI (g_iartout10.CODCIRDA[2] > 9)
		ALORS
			i_get_sub_str(pt_BUF1,2,5,pt_BUF1)
		SINON
			i_get_sub_str(pt_BUF1,1,5,pt_BUF1)
		FINSI
		erreur=i_set_art_str(g_iartout5, $TsymTopitml::CODCIR, pt_BUF1)
	SINON
		erreur=i_supprChamp(g_iartout5,"T4codcir")
	FINSI

	# EFFICACITE
	erreur = i_set_art_field(g_iartout5,$TsymTopitml::EFFICACE, b_EFFICACE)

	# DETR_INF
	#G3R22 QC554
	SI DEDE_INF == 0x40
	ALORS
		DEDE_INF = 0x00
	FINSI
	#\G3R22 QC554
	erreur = i_set_art_field(g_iartout5,$TsymTopitml::DEDE_INF, DEDE_INF)

	# IDUS_INF
	erreur = i_set_art_field(g_iartout5,$TsymTopitml::IDUS_INF, IDUS_INF)
	
	#G4R6 Lot2 
	SI b_ALICE
	ALORS
		erreur = i_set_art_str(g_iartout5, $TsymTopitml::CODE_TARIF,pt_TARIF )
		erreur = i_set_art_str(g_iartout5, $TsymTopitml::TYPE_EDIT,pt_EDIT )
	SINON
		erreur = i_supprChamp(g_iartout5, "T4code_tarif")
		erreur = i_supprChamp(g_iartout5, "T4type_edit")
	FINSI

FINSI

#---------------------------------------------------------------------------
# CASPER - g_iartout3
#---------------------------------------------------------------------------
SI( !i_ChercherCouranteECC(instCASPER))
ALORS
	#trace(">>>__LINE__>>> Duplication vers CASPER")
	erreur = i_dup_art_id(g_iartin,g_iartout3)

	SI (erreur)
	ALORS
		#trace1(">>>__LINE__>>>__FILE__>>> ERREUR de duplication vers CASPER : %d",erreur)
		code_rejet = 0xA0D0
		code_rejet = code_rejet + b_EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin, "", 3, code_rejet, "TcasperTopitml", C_Article)
		SAUT DISTRI_ERR
	FINSI

	res = i_rename_art(g_iartout3, "TcasperTopitml")

	# ajout de tous les champs de T3ce
	erreur = i_ajoutChampNum(g_iartout3, $TcasperTopitml::T4sgtqs, $TsymTopitml::SGTQS, 6)

	# Champ SGTQS
	erreur = i_set_art_str(g_iartout3,$TcasperTopitml::SGTQS, pt_sgtqs)

	# Champ CODCIR
	SI CODCIR != -1
	ALORS
		#trace(">>>__LINE__>>>CODCIR est valide")
		i_strcpy(pt_BUF1, "")
		erreur = i_set_art_field(g_iartout10,$Conversion::CODCIRDR,CODCIR)
		erreur = i_get_art_str(g_iartout10, $Conversion::CODCIRDA,pt_BUF1)
		SI (g_iartout10.CODCIRDA[2] > 9)
		ALORS
			i_get_sub_str(pt_BUF1,2,5,pt_BUF1)
		SINON
			i_get_sub_str(pt_BUF1,1,5,pt_BUF1)
		FINSI
		erreur=i_set_art_str(g_iartout3, $TcasperTopitml::CODCIR, pt_BUF1)
	SINON
		erreur=i_set_art_str(g_iartout3, $TcasperTopitml::CODCIR, "     ")
	FINSI

	# Champ CODCIRDR
	SI CODCIRDR != -1
	ALORS
		#trace(">>>__LINE__>>>CODCIR est valide")
		i_strcpy(pt_BUF1, "")
		erreur = i_set_art_field(g_iartout10,$Conversion::CODCIRDR,CODCIRDR)
		erreur = i_get_art_str(g_iartout10, $Conversion::CODCIRDA,pt_BUF1)

		SI (g_iartout10.CODCIRDA[2] > 9)
		ALORS
			i_get_sub_str(pt_BUF1,2,5,pt_BUF1)
		SINON
			i_get_sub_str(pt_BUF1,1,5,pt_BUF1)
		FINSI
		erreur=i_set_art_str(g_iartout3, $TcasperTopitml::CODCIRDR, pt_BUF1)
	SINON
		erreur=i_set_art_str(g_iartout3, $TcasperTopitml::CODCIRDR, "     ")
	FINSI
FINSI

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

SI (! i_ChercherCouranteECC(instTRAFIC))
ALORS
	#trace(">>>__LINE__>>> emission vers TRAFIC")
	erreur  = i_stocke_art_iecc(g_iartout2, instTRAFIC)
FINSI

SI (! i_ChercherCouranteECC(instSYMP))
ALORS
	#trace(">>>__LINE__>>> emission vers Symphonie")
	erreur  = i_stocke_art_iecc(g_iartout5, instSYMP)
FINSI

SI( !i_ChercherCouranteECC(instCASPER))
ALORS
	#trace(">>>__LINE__>>> emission vers CASPER")
	res = i_stocke_art_iecc(g_iartout3, instCASPER)
FINSI

# Redistribution
SI (b_REDIST == 1)
ALORS
#  Enregistrement du champ Nom_EEC dans l'ENVELOPPE Optionelle de redistribution
	#G4R6 Lot2
	#res = i_add_opt( "EnomEEC" )
	#res = i_set_attr_str_n($EnomEEC::Nom_EEC, pt_sgtqs)
	#trace1("__FILE__:__LINE__ ## TEST ## ======> Envoi en redistribution CPT : <%d> #### ", CPT_RDT_860026004)
	SI (CPT_RDT == 0)
	ALORS
		erreur = i_PlvMessEmettre(8503,2,g_iartin,"",3, pt_LIBELREDIST, C_Article, pt_sgtqs)
	FINSI
	res = i_stocke_art( g_iartin, 0, PT_REDIST|RD_TABLE6, 0 )
FINSI

RETOUR TRAIT_OK

#G4R6 Lot2
##############################################################################
# Stockage en ELIMINE EXPLICITE  (REJET3 = 1 ex: cas DC 119)
##############################################################################

POINT ELIMINE_EXP

#trace( ">>>__LINE__>>> Stockage en elimine explicite")
res = i_stocke_art( g_iartin, 0, PT_DIVERS, 0 )

RETOUR TRAIT_OK


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

POINT DISTRI_ERR

#trace( ">>>__LINE__>>> Stockage en errone de distribution")
res = i_make_art_rej(g_iartin, g_iartout8, code_rejet)
res = i_stocke_art( g_iartout8, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

RETOUR TRAIT_OK

#--------------Fin Pcode Distribution Topitml ------------------------
# FIN_CORPS
