DEFINITION BASE_TELEPHONE_860026721 1
DEFINITION CODE_NUMERIS_860026721 3
DEFINITION RES_CLDEST_860026721 1
DEFINITION RES_TYPCPT_860026721 2
DEFINITION RES_CODCIR_860026721 3
DEFINITION RES_CODCIRDR_860026721 5
DEFINITION CPT_REJET_860026721 11
DEFINITION CPT_IMPOSE_860026721 7
DEFINITION S1_860026721 109225
DEFINITION RET_SELTRANS_860026721 2
DEFINITION AUT_NDEUR_860026721 "ATL_NDEUR3"
DEFINITION AUT_NDE_860026721 "ATL_ZN_NDE2+"
DEFINITION RES_TTRAFIC_860026721 1
DEFINITION CCD_FCT_860026721 0x18
DEFINITION CPT_CPS_Loc_860026721 16
DEFINITION CPT_CPS_RI_860026721 17
REGISTRE ENTIER stocke_date_860026721
REGISTRE ENTIER type_cpt_860026721
REGISTRE ENTIER ta_860026721
REGISTRE ENTIER tc_860026721
REGISTRE ENTIER sdate_860026721
REGISTRE ENTIER duree_860026721
REGISTRE ENTIER code_rejet_860026721
REGISTRE ENTIER erreur_860026721
REGISTRE ENTIER cr_860026721
REGISTRE ENTIER SUP_860026721
REGISTRE ENTIER CAX_860026721
REGISTRE ENTIER SCT_860026721
REGISTRE ENTIER STY_860026721
REGISTRE ENTIER TAP_860026721
REGISTRE ENTIER T3cap2_860026721
REGISTRE ENTIER T3cab_860026721
REGISTRE ENTIER onnet_860026721
REGISTRE ENTIER offnet_860026721
REGISTRE ENTIER transgroupe_860026721
REGISTRE ENTIER categ_860026721
REGISTRE ENTIER code_dest_860026721
REGISTRE ENTIER nocodedest_860026721
REGISTRE ENTIER secretndr_860026721
REGISTRE ENTIER seltrans_860026721
REGISTRE ENTIER modif_article_860026721
REGISTRE ENTIER pos_deb_860026721
REGISTRE ENTIER flag_stat_860026721
REGISTRE ENTIER nde_860026721
REGISTRE ENTIER result_zlt_860026721
REGISTRE ENTIER valeur_zlt_860026721
REGISTRE ENTIER comptage_zlt_860026721
REGISTRE ENTIER CODCIR_860026721
REGISTRE ENTIER CODCIRDR_860026721
REGISTRE ENTIER beta_860026721
REGISTRE ENTIER betav_860026721
REGISTRE ENTIER type_traf_860026721
REGISTRE ENTIER indice_860026721 
REGISTRE ENTIER res_860026721 
REGISTRE ENTIER Appel_BNC_860026721
REGISTRE POINTEUR pt_memo_860026721
REGISTRE POINTEUR pt_typarticle_860026721
################################################################
#	article DC NUMERIS VN8 venant de serveur ZTA
#
# En entree: 
#       Article Tns6dcZTA (domaine ILA=Lnumeris)
#       Domaine article: Dvn6dc
#
# En sortie:
#       Article OK:
#               Article Tns6dcZTA (domaine ILA=Lnumeris)
#               Domaine article: Dns4dc
#
#       Article ERRONE:
#               Article Tns6dcZTA (domaine ILA=Lnumeris)
#               Domaine article: Dns4dc
#
# DEX 	24/07/00	V8.4/5	Creation
#
# LRA - 14/05/02	FOEX593:
#                       Recuperation du CCD apres appel a la base de comptage
#			pour articles avec code transporteur.
# URS/RBE - 04/10/02	SI TRAFIC : recup. CODCIR et CODCIRDR de la BNC
# URS/RBE - 30/12/02 	Init. de type_cpt + Modif. DOM sur i_normal
# URS/RBE - 29/04/03	C14:Utilisation de i_get_art_field au lieu de i_get_artobj_attr
# URS/PSA - 10/12/03	Cg : pas d'appel BNC si DIAL (CAX=9)
# URS/RBE - 02/01/04	Mise a jour des codes erreur pour envoi en errone (code rejet)
# URS/RBE - 30/01/04	G2R0Ci:recup de tc pour SRP 089978 (via bnc- ctrl impose)
# URS/RBE - 18/03/04	FO568 et 585 : ajout de T4taxcal taxe calcule par Platine
# URS/RBE - 18/03/04	remplacement des verbes obsoletes ajout_tlv et retrait_tlv
# URS/RBE - 25/03/04	Inversion dans le code_rejet de efficace et inefficace
# URS/DRE - 22/07/04    FO 762  Ajout parametre "code_rejet" dans alarme 6931
# URS/PSA - 07/10/04	Cm : FO714  suppression cpt ANO
#	05/10/2011 RHE VerifPcode
# DECI/DRE - 31/03/14 G4R6 : Lot2 prise en compte des nouveaux Type Control envoy?s par la base (C+S )
# 26/02/2015 - DRE - G4R9 QC875 Pb de normalisation du DEDE si pas d'appel a la BNC
#
############################################################################
#////////////////////////////////////////////////////////////
# Codes de consultation des parametres de proc_copo 
#////////////////////////////////////////////////////////////

#
# Indice interne de la base de comptage pour le telephone
#
#
# Indice de la loi de calcul de taxation pour numeris
#

#
# Definition des resultats supplementaires retournes par le calcul de taxation.
#

# Ajout pour module CNET statistiques
# Definition des types de communication. Cette valeur est retournee par le
# calcul de taxation dans le resultat supplementaire RES_TYPCOM


#
# valeurs des seuils utilises dans le controle de taxation
#
# a diviser par 100 
# a diviser par 100 

#############################################
# Declaration des variables pour la fonction
# de normalisation.
#############################################

#
# Codes de retour de la fonction i_normal
#

#
# Nom de l'automate du numero demandeur et demande
#

# indexe dans g_icopo.SUP[] du 'code classe de destination'

# CCD pour FCT
#DRE G4R6 lot2
#\DRE G4R6 lot2










#############################################
# Declaration des variables pour selection
# du transporteur
#############################################
# 0 : le champ n'existe pas, 1 le champ est present.

# code 'classe de destination'

#DRE G4R6 Lot2
#DRE G4R9 QC875



#####################################################################
# DEBUT DES TRAITEMENTS
#####################################################################
#

# trace("Article DC Numeris VN6 ou VN7")

# EV616 : Traitement du champ ZLT
comptage_zlt_860026721 = 0
result_zlt_860026721 = -1
type_cpt_860026721 = 0

#
beta_860026721 = 0
betav_860026721 = 0

# Ajout pour module CNET statistiques
flag_stat_860026721 = 0
# fin ajout

# Initialisation des parametres pour Transgroupe (appel interne TGP et
# le reseau general
onnet_860026721 = 0
offnet_860026721 = 0
transgroupe_860026721 = 0

# Detection de la modification g_iartin en g_iartout7
modif_article_860026721 = 0

# par defaut il n'y a pas de selection du transporteur
seltrans_860026721 = 0

# Initialisation des parametres pour code classe destination
nocodedest_860026721 = 0

# Initialisation des parametres pour les CS
# VerifPcode - RHE # T3ttx = 0
# VerifPcode - RHE # T3code = 0
# VerifPcode - RHE # T3cle = 0
# VerifPcode - RHE # T3sidr = 0
# VerifPcode - RHE # MES1 = 0xFF
# VerifPcode - RHE # MES2 = 0xFF
# VerifPcode - RHE # service = 0
# Initialisation des nouveaux parametres pour les CS (VN7)
# VerifPcode - RHE # T3inv = 0
# VerifPcode - RHE # T3chp = 0

# Initialisation pour le secret du demandeur
secretndr_860026721 = 0

# Initialisation du parametre de position du 16XY ou du E
pos_deb_860026721 = 0

CODCIR_860026721  = 0
CODCIRDR_860026721 = 0

#DRE G4R6 Lot2
indice_860026721 = 0
res_860026721 = 0
#DRE G4R9 QC875
Appel_BNC_860026721 = 0

pt_typarticle_860026721="1234"
i_strcpy(pt_typarticle_860026721,"ZTA")

#####################################################################
# Recuperation valeur de la taxe:
#	Soit le niveau T3cap2 est present:
#	dans ce cas on recupere la taxe indiquee dans ce niveau
#
#	Soit le niveau T3cab est present:
#	dans ce cas on recupere la taxe indiquee dans ce niveau
#
# On verifie qu'un seul de ces niveaux est present a la fois
#
# On en profite pour recuperer le champ CAX (categorie de taxation),
# le champ TAP (type d'appel) et la duree.
#####################################################################

T3cap2_860026721 = i_valid_field_n(g_iartin,$Tns6dcZTA::T3cap2)
T3cab_860026721 = i_valid_field_n(g_iartin,$Tns6dcZTA::T3cab)

SI T3cap2_860026721 > 0
ALORS
# trace("T3cap2 present")
#####################################################################
#	Test 160 : champs T3cap2 et T3cab presents
#####################################################################
	SI T3cab_860026721 > 0
	ALORS
#   	trace("T3cab present")
		code_rejet_860026721 = 0x50F2
		erreur_860026721 = i_PlvMessEmettre(6770,2,g_iartin,"",2,code_rejet_860026721,pt_typarticle_860026721,0)
		SAUT STOCKE_ERRONE
	FINSI

#   trace("T3cab absent")
	ta_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::TAXE:0)
	CAX_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::CAX:0)
	SUP_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::SUP:0)
	TAP_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::TAP:0)
	duree_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::DUREE:0)
SINON
# 	trace("T3cap2 absent")
#####################################################################
#	Test 161 : champs T3cap2 et T3cab absents
#####################################################################
	SI T3cab_860026721 <= 0
	ALORS
#   	trace("T3cab absent")
		code_rejet_860026721 = 0x50F2
		erreur_860026721 = i_PlvMessEmettre(6771,2,g_iartin,"",2,code_rejet_860026721,pt_typarticle_860026721,0)
		SAUT STOCKE_ERRONE
	FINSI

#   trace("T3cab present")
	ta_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::TAXE:1)
	CAX_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::CAX:1)
	SUP_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::SUP:1)
	TAP_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::TAP:1)
	duree_860026721 = i_get_art_field(g_iartin,$Tns6dcZTA::DUREE:1)
FINSI

SI (SUP_860026721 == 0xFF)
ALORS
	SUP_860026721 = 0
FINSI

###########################################################################
# Determination type de date et conversion fin de comm -> debut de comm
# Si SCT : bits BC = 00: heure fin de comm
# Si SCT : bits BC = 01: heure debut de comm
#
###########################################################################

sdate_860026721 = i_get_art_field(g_iartin, $Tns6dcZTA::DATE)

SCT_860026721 = g_iartin.SCT
#
#==== Affectation du champ "DATE" (seulement s'il y a changement d'ICAR)
#==== Et modification du champ SCT si changement d'ICAR
#
SI ((SCT_860026721 & 0x60) == 0x00)
ALORS
#	trace("DATE = heure de fin de comm : conversion en debut de comm")
	sdate_860026721 = sdate_860026721 - duree_860026721
	erreur_860026721 = i_set_art_date(g_iartin,sdate_860026721)
	g_iartin.SCT = SCT_860026721 | 0x20
	SAUT FIN_SCT
FINSI

SI ((SCT_860026721 & 0x60) == 0x20)
ALORS
#	trace("DATE = heure de debut de comm")
	SAUT FIN_SCT
FINSI

#####################################################################
#	Test 163 : bits BC champ SCT != 00, 01
#####################################################################
SI TAP_860026721 & 0x40
ALORS
	code_rejet_860026721   = 0x5040
SINON
	code_rejet_860026721   = 0x5041
FINSI
erreur_860026721 = i_PlvMessEmettre(6773,2,g_iartin,"",3,code_rejet_860026721,pt_typarticle_860026721,SCT_860026721)
SAUT STOCKE_ERRONE

POINT FIN_SCT

#####################################################################
#	Determination de la date de stockage
#####################################################################

stocke_date_860026721 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)

###########################################################################
# Determination service implique par le champ STY
#		bits A = 0: Pas Trafic plus
#		bits A = 1: Trafic plus
#		bits B = 0: pas Transgroupe
#		bits B = 1: Transgroupe
#		Autres bits reserves et positionne a 0
#		Service Trafic plus non teste
#
#	Dans le cas de Transgroupe etendu seul le bit B de STY vaut 0, la CAX
# vaut 6 mais le numero demande est de type reseau general -> comm standard
#
###########################################################################

STY_860026721 = g_iartin.STY
SI ((STY_860026721 & 0x40) == 0x40)
ALORS
	transgroupe_860026721 = 1
#	trace("Article Transgroupe")
	SAUT FIN_STY
FINSI

#####################################################################
#	Test 165 : bits F champ STY != 0
#####################################################################
SI ((STY_860026721 & 0x04) != 0x00)
ALORS
	SI TAP_860026721 & 0x40
	ALORS
		code_rejet_860026721   = 0x5040
	SINON
		code_rejet_860026721   = 0x5041
	FINSI
	erreur_860026721 = i_PlvMessEmettre(6775,2,g_iartin,"",3,code_rejet_860026721,pt_typarticle_860026721,STY_860026721)
	SAUT STOCKE_ERRONE
FINSI

POINT FIN_STY

#
#####################################################################
#	Test : champs NDE absent si non ineff (EV576)
#####################################################################
nde_860026721 = i_valid_field_n(g_iartin, $Tns6dcZTA::NDE)
SI (nde_860026721 == 0)
ALORS
# 	Stockage en erronee
	code_rejet_860026721 = 0x5041
	erreur_860026721 = i_PlvMessEmettre(6931,2,g_iartin,"",2,code_rejet_860026721,pt_typarticle_860026721,0)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 168 : bits AC champ TAP == 11
#####################################################################
# test des bits a et c uniquement
SI ((TAP_860026721 & 0xa0)  == 0xa0)
ALORS  
        code_rejet_860026721 = 0x5041
        erreur_860026721 = i_PlvMessEmettre(6776,2,g_iartin,"",2,code_rejet_860026721,pt_typarticle_860026721,0)
        SAUT STOCKE_ERRONE
FINSI

#####################################################################
# DIAL ==> STOCKE OK immediat
#####################################################################
SI CAX_860026721 == 9
ALORS
	SAUT STOCKE_OK
FINSI


#
#==================================================================
#====================		TRAITEMENT		====================
#==================================================================
#

#####################################################################
#	test 4 : TA > S1
#####################################################################

SI ta_860026721 > S1_860026721
ALORS
        code_rejet_860026721 = 0x5031
        erreur_860026721 = i_PlvMessEmettre(6777,2,g_iartin,"",3,code_rejet_860026721,pt_typarticle_860026721,ta_860026721)
        SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	 Article Transgroupe
#	Passage dans normalisation pour la NT
#	L'include tgp permet de faire un test sur le debut du
#	numero demande pour dissocier les appels onnet et offnet
#	seul les appels offnet sont valorises
#	Contrairement aux articles VN3 pour lesquels on identifie DC TGP
#	par le code en-tete, ici en VN5 c'est par STY et on l'a deja
#	identifie avant la conversion en VN3
#####################################################################

SI (transgroupe_860026721 == 1)
ALORS
#####################################################################
#	Cas Transgroupe	avec utilisation de g_iartin
#####################################################################

#
#	Appel offnet : NDE debutant par 0 ou 036510AB ou 0*31* ou * ou #
#					(services)
#	Appel onnet : NDE ne debutant pas par 0 ou 03651AB ou 0*31*AB
#			avec A different de 0
#	Les services type renvoi d'appel, reveil (pas le 0 en debut) sont
#	traitees comme des communications strandard
#

SI (g_iartin.NDE[0] == 0x0)
ALORS
#	Cas offnet sauf pour 03651 ou 0*31* : analyse supplementaire
	SI (((g_iartin.NDE[1] != 0xB)  && (g_iartin.NDE[1] != 0x3)) ||
                (g_iartin.NDE[1] == 0xC))
	ALORS
#	Cas des appels vers services et cas autres que 03 (pour 03651)
#	et 0* (pour 0*31*)
#		trace("Transgroupe offnet : suppression du '0'")
		offnet_860026721 = 1
#		Enlever le 0 pour appel a i_comptage
		pos_deb_860026721 = i_supp_quart_name("NDE",0,1,15,g_iartin,g_iartout7)
		modif_article_860026721 = 1
	SINON
#	Ici on a des appels debutant par 03 (pour 03651) ou 0* (pour 0*31*)
		SI ( ((g_iartin.NDE[1] == 0x3) && (g_iartin.NDE[2] == 0x6) &&
		     (g_iartin.NDE[3] == 0x5) && (g_iartin.NDE[4] == 0x1))
		|| ((g_iartin.NDE[1] == 0xB) && (g_iartin.NDE[2] == 0x3) &&
		    (g_iartin.NDE[3] == 0x1) && (g_iartin.NDE[4] == 0xB)) )
		ALORS
#		appel commencant par 03651 ou 0*31*
			SI (g_iartin.NDE[5] == 0x0)
			ALORS
#			appel commencant par 036510ABPQ ou 0*31*0ABPQ
#				trace("Transgroupe offnet : suppression de '036510' ou de '0*31*0'")
				offnet_860026721 = 1
#				Enlever 036510 ou 0*31*0 pour appel a i_comptage
				pos_deb_860026721 = i_supp_quart_name("NDE",0,6,15,
						g_iartin,g_iartout7)
				modif_article_860026721 = 1
			SINON
#			appel commencant par 03651ABPQ ou 0*31*ABPQ
#				trace("Transgroupe onnet")
				onnet_860026721 = 1
			FINSI
		SINON
#		appel commencant par 03BPQ (et different de 03651) ou 0*BPQ
#		(et different de 0*31*)
#			trace("Transgroupe offnet : suppression du '0'")
			offnet_860026721 = 1
#			Enlever le 0 pour appel a i_comptage
			pos_deb_860026721 = i_supp_quart_name("NDE",0,1,15,
					g_iartin,g_iartout7)
			modif_article_860026721 = 1
		FINSI
	FINSI
SINON
#	NDE commence par *31* alors onnet et SIDR
	SI ((g_iartin.NDE[0] == 0xB) && (g_iartin.NDE[1] == 0x3) &&
		(g_iartin.NDE[2] == 0x1) && (g_iartin.NDE[3] == 0xB))
	ALORS
#		trace("Transgroupe onnet")
		secretndr_860026721 = 1
		onnet_860026721 = 1
	FINSI

#	NDE commence par * (autre que *31*) ou # appel normal;
#	sinon onnet car commence pas par 0 a ce niveau de test
	SI ((g_iartin.NDE[0] != 0xB) && (g_iartin.NDE[0] != 0xC))
	ALORS
#		trace("Transgroupe onnet")
		onnet_860026721 = 1
	FINSI
FINSI

SINON
# trace("traitement Secret du Demandeur")
#####################################################################
#	Cas secret du demandeur	avec utilisation de g_iartin
#####################################################################

# Detection 3651 ou *31*
SI (((g_iartin.NDE[0] == 0x3) && (g_iartin.NDE[1] == 0x6) &&
	(g_iartin.NDE[2] == 0x5) && (g_iartin.NDE[3] == 0x1)) ||
	((g_iartin.NDE[0] == 0xB) && (g_iartin.NDE[1] == 0x3) &&
	(g_iartin.NDE[2] == 0x1) && (g_iartin.NDE[3] == 0xB)))
ALORS
#	trace("Secret du demandeur : suppression de '3651' ou de '*31*'")
	secretndr_860026721 = 1
#	Enlever 3651 (ou *31*) pour appel a i_comptage
	pos_deb_860026721 = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
	modif_article_860026721 = 1
FINSI

FINSI

#####################################################################
#	Si appel transgroupe onnet, ni normalisation ni valorisation
#####################################################################
SI (onnet_860026721 == 1)
ALORS
	nocodedest_860026721 = 1
#	trace("Article Transgroupe onnet : stockage en OK")
	SAUT STOCKE_OK
FINSI

#####################################################################
#  Traitement specifique pour les cas ETSI national et internationnal
#####################################################################
SI ( modif_article_860026721 == 1)
ALORS
# 	Cas ETSI National
	SI ( (g_iartout7.INF_DEDE & 0xC0) == 0x80)
	ALORS
#		trace("Cas ETSI National : ajout de '0' au debut de NDE")
		erreur_860026721 = i_add_quart_name("NDE",0,15,"0",g_iartout7,g_iartout7)
	SINON
# 		Cas ETSI International
		SI ( (g_iartout7.INF_DEDE & 0xC0) == 0xC0)
		ALORS
#			trace("Cas ETSI International : ajout de '00' au debut de NDE")
			erreur_860026721 = i_add_quart_name("NDE",0,15,"00",g_iartout7,g_iartout7)
		FINSI
	FINSI
SINON
# 	Cas ETSI National
	SI ( (g_iartin.INF_DEDE & 0xC0) == 0x80)
	ALORS
#		trace("Cas ETSI National : ajout de '0' au debut de NDE")
		erreur_860026721 = i_add_quart_name("NDE",0,15,"0",g_iartin,g_iartout7)
		modif_article_860026721 = 1
	SINON
# 		Cas ETSI International
		SI ( (g_iartin.INF_DEDE & 0xC0) == 0xC0)
		ALORS
#			trace("Cas ETSI International : ajout de '00' au debut de NDE")
			erreur_860026721 = i_add_quart_name("NDE",0,15,"00",g_iartin,g_iartout7)
			modif_article_860026721 = 1
		FINSI
	FINSI
FINSI

#####################################################################
#	SELECTION DU TRANSPORTEUR
#
# La plupart des traitements concernants la selection du
# transporteur et la numerotation courte des DOM, a ete deporte dans
# les nouveaux automates de normalisation introduits dans la version 6
# du CE2G.
#####################################################################

# Test de la presence du champ BETA et BETAV dans l'article (present si beta > 0)
beta_860026721 = i_valid_field_n(g_iartin,$Tns6dcZTA::BETA)
betav_860026721 = i_valid_field_n(g_iartin,$Tns6dcZTA::BETAV)


# trace("traitement du numero demande")
#####################################################################
#	SELECTION DU TRANSPORTEUR
#####################################################################

SI ( modif_article_860026721 == 1)
ALORS
# trace("Traitement COCA avec utilisation g_iartout7")

#
# 	Ajout de 16XY devant le NDE :
# 	Si le code du transporteur (COCA ou COCAV) est present dans l'article 
# 	et si le NDE debute par 0, on effectue l'ajout (beta ou betav si beta absent)
#
	SI ( (betav_860026721>0) && (g_iartout7.NDE[0] == 0x0) )
	ALORS
# 			Ajout de 16XY devant le NDE
#			trace("champ betav present et NDE commence par '0' : ajout de 16XY")
			erreur_860026721 = i_add_quart_name("NDE",0,15,"1600",g_iartout7,g_iartout7)

# 			On renseigne XY = T3cocav/BETAV :
# 			En VN7, le code du transporteur sera toujours sur 2 digits
# 			A revoir pour VN8 (on aura 3 digits Plus bourrage : XYZF) !!!
			#g_iartout7.NDE[2] = ( g_iartout7.BETAV >> 4 ) & 0x0f
                	#g_iartout7.NDE[3] = ( g_iartout7.BETAV ) & 0x0f

			# BETAV est maintenant un tableau de DBC et non plus un champ numerique en hexa
			g_iartout7.NDE[2] = g_iartout7.BETAV[0]
			g_iartout7.NDE[3] = g_iartout7.BETAV[1]
	FINSI
SINON

# trace("Traitement COCA avec utilisation g_iartin")

#
# 	Ajout de 16XY devant le NDE :
# 	Si le code du transporteur (COCA ou COCAV) est present dans l'article 
# 	et si le NDE debute par 0, on effectue l'ajout (beta ou betav si beta absent)
#
	SI ( (betav_860026721>0) && (g_iartin.NDE[0] == 0x0) )
	ALORS
# 			Ajout de 16XY devant le NDE
#			trace("champ betav present et NDE commence par '0' : ajout de 16XY")
			erreur_860026721 = i_add_quart_name("NDE",0,15,"1600",g_iartin,g_iartout7)

# 			On renseigne XY = T3cocav/BETAV :
# 			En VN7, le code du transporteur sera toujours sur 2 digits
# 			A revoir pour VN8 (on aura 3 digits Plus bourrage : XYZF) !!!
			
			# BETAV est maintenant un tableau de DBC et non plus un champ numerique en hexa
			g_iartout7.NDE[2] = g_iartout7.BETA[0]
			g_iartout7.NDE[3] = g_iartout7.BETA[1]

			modif_article_860026721 = 1
	FINSI
FINSI


#####################################################################
# 	Normalisation des numeros APPELANT et APPELE
#
# erreur = Valeur de retour de la normalisation :
#
# RET_SELTRANS : l'automate de normalisation du numero APPELE detecte
# une selection du transporteur en '16XY' ou en 'EZAB' avec E!=8 (FT);
# on ne fait pas de calcul de valorisation et CCD=0xFE et CTT=0x00FE.
#
# RET_SELTRANS_FT : le transporteur est France Telecom (par 'E=8'),
# l'automate normalise en remplacant le '8' par '0'; on effectue un
# calcul de valorisation.
#
# RET_NO_SELTRANS : Pas de selection du transporteur; on effectue un
# calcul de valorisation.
#
# En cas d'erreur de normalisation, on n'effectue pas de calcul de
# valorisation et CCD=0xFF et CTT=0x00FF (valeur par defaut)
#
# L'automate normalise un numero demande des DOM en numerotation
# abregee en lui ajoutant le '0ZAB' du numero APPELANT.
#
#####################################################################

SI (modif_article_860026721 == 1)
ALORS
#	trace("Normalisation des NDEUR/NDE avec g_iartout7")
        erreur_860026721 = i_normal_dila(g_iartout7,$Tns6dcZTA::NDR,$Tns6dcZTA::NDE,"LDnumeris","",
				g_icopo,$Tcopo::NDR,$Tcopo::NDE,3,AUT_NDEUR_860026721,AUT_NDE_860026721)

SINON
#	trace("Normalisation des NDEUR/NDE avec g_iartin")
        erreur_860026721 = i_normal_dila(g_iartin,$Tns6dcZTA::NDR,$Tns6dcZTA::NDE,"LDnumeris","",
				g_icopo,$Tcopo::NDR,$Tcopo::NDE,3,AUT_NDEUR_860026721,AUT_NDE_860026721)

FINSI

#####################################################################
#   Test 112 : normalisation NDR ou NDE impossible
#####################################################################

SI erreur_860026721 < 0
ALORS
        code_rejet_860026721 = 0x5011
	erreur_860026721 = i_PlvMessEmettre(6778,2,g_iartin, "",3,code_rejet_860026721,pt_typarticle_860026721,g_ierrno)
        SAUT STOCKE_ERRONE
FINSI

# si on a une selection du transporteur en 16XY ou en EZAB (E!=8)
SI (erreur_860026721==RET_SELTRANS_860026721)
ALORS
#	trace("Article avec selection du transporteur non FT : stockage en OK sans calcul de valo")
	seltrans_860026721 = 1
	flag_stat_860026721 = 1
	code_dest_860026721   = 0xFE
FINSI
# sinon
# selection transporteur FT (par EZAB avec E=8) ou pas de sel. trans.
# On effectue un calcul de valorisation.

#	trace("Fin de la normalisation")

SI ((nocodedest_860026721 == 1) && (seltrans_860026721 == 0))
ALORS
#	trace("nocodedest=1 : stockage en OK")
	SAUT STOCKE_OK
FINSI

# trace ("Calcul de valorisation")

#####################################################################
#	Initialisation de l'interface "proc_copo" et calcul taxation
#
#		Suppression de l'utilisation de CAX et SUP et utilisation
#		de categ
#####################################################################

categ_860026721 = (8 * CAX_860026721) + SUP_860026721

g_icopo.TAXE   = 0
g_icopo.CREDIT = 0
erreur_860026721 = i_set_art_date(g_icopo,sdate_860026721)
g_icopo.DUREE  = duree_860026721
g_icopo.CODE   = CODE_NUMERIS_860026721
g_icopo.CATEG  = categ_860026721
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

#	Memorisation des parametres de PROC_COPO
pt_memo_860026721 = i_init_tax_param()

cr_860026721 = i_comptage(g_icopo,BASE_TELEPHONE_860026721,sdate_860026721)

# EV616 : Traitement du champ ZLT
comptage_zlt_860026721 = 1

#####################################################################
#	Test 6 : calcul taxe impossible
#####################################################################

SI cr_860026721 != 0
ALORS
        SI ((g_ierrno == 1100) && (seltrans_860026721 == 1))
        ALORS
#	EV616 : On force la valeur du T4ZLT a 1
		result_zlt_860026721 = 1
                SAUT STOCKE_OK
        FINSI

        code_rejet_860026721 = 0x5021
        erreur_860026721 = i_PlvMessEmettre(6779,2,g_iartin,"",3,code_rejet_860026721,pt_typarticle_860026721,g_ierrno)
        SAUT STOCKE_ERRONE
FINSI
#DRE G4R9 QC875
Appel_BNC_860026721 = 1

# Ajout pour module CNET statistiques
flag_stat_860026721 = 1
# fin ajout

tc_860026721 = g_icopo.TAXE
type_cpt_860026721 = g_icopo.SUP[RES_TYPCPT_860026721]
SI type_cpt_860026721 == CPT_IMPOSE_860026721
ALORS
	erreur_860026721=i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4taxcal,$Tns6dcZTA::TAXCAL,0)
        erreur_860026721 = i_set_art_field(g_iartin, $Tns6dcZTA::TAXCAL, tc_860026721)
FINSI


POINT STOCKE_OK

#DRE G4R9 QC875
SI Appel_BNC_860026721 == 1
ALORS
	#DRE G4R6 lot2
	SI ( i_valid_field_n(g_iartin, $NDE ) )
	ALORS
	
		#Ajout NORMAL (NDE normalise)
		erreur_860026721=i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4normal,$Tns6dcZTA::NORMAL,0)
		indice_860026721 = 0
		POINT BOUCLE_NDE
		res_860026721 = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice_860026721)
		#        trace1(" element : %x",res)
		SI (res_860026721 != 00)
		ALORS
			erreur_860026721 = i_set_art_fieldtab(g_iartin, $Tns6dcZTA::NORMAL, indice_860026721, res_860026721-0x30)
			indice_860026721 = indice_860026721 + 1
			SAUT BOUCLE_NDE
		SINON
			erreur_860026721 = i_set_art_fieldtab(g_iartin, $Tns6dcZTA::NORMAL, indice_860026721, 0xFF)
		FINSI
	FINSI
FINSI

SI ( (type_cpt_860026721==CPT_CPS_Loc_860026721) || (type_cpt_860026721==CPT_CPS_RI_860026721) )
ALORS
	#trace("Ajout du champ REJET = CPS_Loc ou CPS_RI")
	erreur_860026721=i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4rejet,$Tns6dcZTA::REJET,0)
	erreur_860026721=i_set_art_field(g_iartin,$Tns6dcZTA::REJET,type_cpt_860026721)
FINSI
#\DRE G4R6 lot2


# EV616 : Calcul et traitement du champ ZLT
SI (comptage_zlt_860026721 == 1)
ALORS
    SI (type_cpt_860026721 != CPT_REJET_860026721)
    ALORS
#####################################################################
# Test pour connaitre si il faut ajouter le champs ZLT ou pas
# Si la recherche donne un chiffre 
#		pair : ZLT =0
#		impair : ZLT=1
#		-1 : T4ZLT non ajoute a l'ajout CE
#####################################################################

# Il ne faut pas appeler i_get_zlt si le resultat a ete impose avant
SI (result_zlt_860026721 == -1)
ALORS
         result_zlt_860026721 = i_get_zlt(g_icopo,BASE_TELEPHONE_860026721,sdate_860026721)
FINSI

# analyse du reultat de l'appel a la fonction i_get_zlt
SI (result_zlt_860026721 == -1)
ALORS
	 erreur_860026721 = i_PlvMessEmettre(6807,2,g_iartin,"",1,pt_typarticle_860026721,0,0)
	 valeur_zlt_860026721 = -1
SINON
	SI ((result_zlt_860026721 & 0x01) == 1)
	ALORS
# resultat impair
		valeur_zlt_860026721 = 1
		erreur_860026721 = i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4ZLT,$Tns6dcZTA::ZLT,0)
                erreur_860026721 = i_set_art_field(g_iartin,$Tns6dcZTA::ZLT,valeur_zlt_860026721)
	SINON
# resultat pair
		valeur_zlt_860026721 = 0
		erreur_860026721 = i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4ZLT,$Tns6dcZTA::ZLT,0)
                erreur_860026721 = i_set_art_field(g_iartin,$Tns6dcZTA::ZLT,valeur_zlt_860026721)
	FINSI
FINSI
    FINSI
FINSI

# MAJ des code de circonscription de dde et ddeur
CODCIRDR_860026721 = g_icopo.SUP[RES_CODCIRDR_860026721] 
CODCIR_860026721 = g_icopo.SUP[RES_CODCIR_860026721]

## ( FO1184 - LRA 12/12/2001 ) et ( FOEX 593 - 14/05/2002 ).
code_dest_860026721 = g_icopo.SUP[RES_CLDEST_860026721]
SI ( (seltrans_860026721 == 1) && (code_dest_860026721 != CCD_FCT_860026721) ) 
ALORS
	code_dest_860026721   = 0xFE
FINSI

SI (nocodedest_860026721 == 0)
ALORS
#   trace("Appel a i_comptage realise et valide : maj CCD")
	erreur_860026721 = i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4ccd,$Tns6dcZTA::CCD,0)
        erreur_860026721 = i_set_art_field(g_iartin,$Tns6dcZTA::CCD,code_dest_860026721)
FINSI

SI (flag_stat_860026721 == 1) && (nocodedest_860026721 == 0)
ALORS
#	trace("Appel a i_comptage realise et valide : maj CTT")
	type_traf_860026721 = g_icopo.SUP[RES_TTRAFIC_860026721]
	erreur_860026721 = i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4typtra,$Tns6dcZTA::CTT,0)
	erreur_860026721 = i_set_art_field(g_iartin,$Tns6dcZTA::CTT,type_traf_860026721)
FINSI
# XYZ trafic fin

# Ajout 0x00FE dans le cas de seltrans=1 et flag_stat=1
SI ((flag_stat_860026721 == 1) && (seltrans_860026721 == 1))
ALORS
#   trace("Selection transporteur non FT : maj CTT = 0x00FE et CCD = 0xFE")
	erreur_860026721 = i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4typtra,$Tns6dcZTA::CTT,0)
        erreur_860026721 = i_set_art_field(g_iartin,$Tns6dcZTA::CTT,code_dest_860026721)
        g_iartin.CCD = code_dest_860026721
FINSI

erreur_860026721=i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4codcirdr,$Tns6dcZTA::CODCIRDR,0)
erreur_860026721=i_set_art_field(g_iartin,$Tns6dcZTA::CODCIRDR,CODCIRDR_860026721)

erreur_860026721=i_ajoutChampNum(g_iartin,$Tns6dcZTA::T4codcir,$Tns6dcZTA::CODCIR,0)
erreur_860026721=i_set_art_field(g_iartin,$Tns6dcZTA::CODCIR,CODCIR_860026721)


erreur_860026721 = i_stocke_art(g_iartin,stocke_date_860026721,PT_OK,0)



# trace("Fin traitement Article DC VN6 ou VN7")
RETOUR TRAIT_OK

#####################################################################
# POINT de branchement : stockage PT_ERRONE
#           correspond au cas d'erreur syntaxiques et semantiques
#####################################################################

POINT STOCKE_ERRONE

#   trace("Stockage de l'article en ERRONE")

stocke_date_860026721 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)

erreur_860026721 = i_make_art_rej(g_iartin, g_iartout, code_rejet_860026721)
erreur_860026721 = i_stocke_art(g_iartout, stocke_date_860026721, PT_ERRONE, 0)

# trace("Fin traitement Article DC VN6 ou VN7")
RETOUR TRAIT_OK

###########################################################################
# Stockage en elimine   
###########################################################################
POINT STOCKE_ELM
#IFDEF trace_niv1 = 1
trace( "__FILE__:__LINE__ : Fin du Pcode de traitement : Stockage en ELIMINE" )
#ENDIF
erreur_860026721 = i_stocke_art( g_iartin, 0, PT_ELIMINE, 0 )

RETOUR TRAIT_OK














