DEFINITION C_Article_860026720 "Tfe6dc"
DEFINITION BASE_TELEPHONE_860026720 1
DEFINITION AUT_BIDON_860026720 "BIDON"
DEFINITION CODE_NUMERIS_860026720 3
DEFINITION RES_CLDEST_860026720 1
DEFINITION RES_TYPCPT_860026720 2
DEFINITION CPT_REJET2_860026720 10
DEFINITION CPT_REJET3_860026720 12
DEFINITION CPT_REJET6_860026720 14
DEFINITION S1_860026720 109225
DEFINITION RET_SELTRANS_860026720 2
DEFINITION AUT_NDE_860026720 "ATL_ZN_NDE2+"
DEFINITION RES_TTRAFIC_860026720 1
DEFINITION CCD_FCT_860026720 0x18
DEFINITION CPT_CPS_Loc_860026720 16
DEFINITION CPT_CPS_RI_860026720 17
REGISTRE ENTIER stocke_date_860026720
REGISTRE ENTIER type_cpt_860026720
REGISTRE ENTIER ta_860026720
REGISTRE ENTIER sdate_860026720
REGISTRE ENTIER duree_860026720
REGISTRE ENTIER code_rejet_860026720
REGISTRE ENTIER val_REJET_860026720
REGISTRE ENTIER erreur_860026720
REGISTRE ENTIER cr_860026720
REGISTRE ENTIER SUP_860026720
REGISTRE ENTIER CAX_860026720
REGISTRE ENTIER SCT_860026720
REGISTRE ENTIER TAP_860026720
REGISTRE ENTIER T3cap2_860026720
REGISTRE ENTIER T3cab_860026720
REGISTRE ENTIER T3cle_860026720
REGISTRE ENTIER T3cha_860026720
REGISTRE ENTIER MES1_860026720
REGISTRE ENTIER MES2_860026720
REGISTRE ENTIER categ_860026720
REGISTRE ENTIER code_dest_860026720
REGISTRE ENTIER nocodedest_860026720
REGISTRE ENTIER service_860026720
REGISTRE ENTIER secretndr_860026720
REGISTRE ENTIER seltrans_860026720
REGISTRE ENTIER modif_article_860026720
REGISTRE ENTIER pos_deb_860026720
REGISTRE ENTIER flag_stat_860026720
REGISTRE ENTIER nde_860026720
REGISTRE ENTIER lg_NDE_860026720
REGISTRE ENTIER beta_860026720
REGISTRE ENTIER betav_860026720
REGISTRE ENTIER type_traf_860026720
REGISTRE ENTIER indice_860026720 
REGISTRE ENTIER res_860026720 
REGISTRE ENTIER Appel_BNC_860026720
REGISTRE POINTEUR pt_memo_860026720
REGISTRE POINTEUR pt_NDE_860026720
####################################################################
# Pcode de TRAITEMENT Tfe6dc
#	article DC VN6 sur faisceau entrant
# En entree: (1er passage et recyclage)
#	Article Tfe6dc (domaine ILA=Lnumeris)
#	Domaine article: Dvn6dc
#
# En sortie:
#       Article OK:
#               Article Tfe6dc (domaine ILA=Lrmobile)
#
#       Article ERRONE:
#               Article Tfe6dc (domaine ILA=Lrmobile)
#
# 21/10/2002 - PSA : FO61 : Modif des indices pour ajout CE
# 03/01/2003 - RBE : Modif. DOM sur i_normal
# 29/04/2003 - RBE : C14 : Utilisation de i_get_art_field au lieu 
#		     de i_get_artobj_attr
# 04/11/2003 - MCH : FO466 : remplacement ajou_tlv par ajoutchampNum
# 02/01/2004 - RBE : Mise a jour des codes erreur pour envoi en errone (code rejet)
# 25/03/2004 - RBE : Inversion dans le code_rejet de efficace et inefficace
# 07/10/2004 - PSA : Cm : FO714  suppression cpt ANO
# 09/05/2005 - JLG : G2R1Ch REJET2
# 09/05/2005 - JLG - FO1276
# 30/05/2005 - JLG THE - Fusion G2R1Ca
# 19/07/2005 - PSA - FO 1386 et 1387 : normalisation  demandeur/demande
# 21/07/2005 - PSA - Cj : traitement Mayotte
# 22/09/2005 - PSA - FO1478
# 25/11/2005 - PKH - G2R2Ca deplacement du test d inefficacite apres la normalisation
# 17/03/2006 - FAL - G2R2Cd Z9
# 27/09/2006 - JLG : G2R2Cv REJET3 (119 enfance maltraitee)
# 10/01/2007 - FAL - FO2086 core lors appel BNC cas duree trop longue 18h en commut et 19h pour PLATINE 
# 06/11/2007 - PKH - G3R3Cv ajout REJET6 dans le cadre des appels 118 PDT & kiosque
# 03/10/2011 - RHE - VerifPcode
# 25/03/2014 - DRE - 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
#
####################################################################

#FO2086

# Indice interne de la base de comptage pour le telephone
#

#
# Indice de la loi de calcul de taxation pour le telephone 
#
# Definition des resultats supplementaires retournes par le calcul 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









# Ajout pour module CNET statistiques
# fin ajout CNET

#	Ajout du parametre de calcul de trafic

# Test presence NDE (EV576)



#############################################
# 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

# drapeau, si calcul du trafic est valid

pt_memo_860026720 = "1111111111111111111111111111111111"
pt_NDE_860026720 = "33333333333333333333333333333333333333333333333333"

i_strcpy(pt_memo_860026720,"")
i_strcpy(pt_NDE_860026720,"")

trace( "[Tfe6dc_trt] Debut du pcode de traitement ***" )

#####################################################################
# DEBUT DES TRAITEMENTS
#####################################################################
#
	trace("[Tfe6dc_trt]Article DC faisceau entrant non GSM VN6 ou VN7")
#
# par defaut, il n'y a pas de code transporteur dans l'article.
# Toujours vrai pour types d'article VN3 et VN5.
#
beta_860026720  = 0
betav_860026720 = 0

type_cpt_860026720 = 0

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

# Initialisation des parametres pour code classe destination
nocodedest_860026720 = 0
# fin de l'initialisation

# Initialisation des parametres pour les CS
MES1_860026720    = 0xFF
MES2_860026720    = 0xFF
T3cle_860026720   = 0
service_860026720 = 0
# fin de l'initialisation

# Initialisation du parametre pour palliatif du NDE

# fin de l'initialisation

# Initialisation pour le secret du demandeur
secretndr_860026720 = 0

# Detection de la modification g_iartin en g_iartout7
modif_article_860026720 = 0

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

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

lg_NDE_860026720 = 0
#DRE G4R9 QC875
Appel_BNC_860026720 = 0

#####################################################################
# 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_860026720 = i_valid_field_n(g_iartin,$Tfe6dc::T3cap2)
T3cab_860026720  = i_valid_field_n(g_iartin,$Tfe6dc::T3cab)

SI T3cap2_860026720 > 0
ALORS

    trace( "[Tfe6dc_trt] T3cap2 present" )

	#####################################################################
	#	Test 175 : champs T3cap2 et T3cab presents
	#####################################################################
	SI T3cab_860026720 > 0
	ALORS

		trace( "[Tfe6dc_trt] T3cab present : Presence simultanee de T3cap2 et T3cab" )

		code_rejet_860026720   = 0x50F2
		erreur_860026720       = i_PlvMessEmettre(6850, 2, g_iartin, "", 1, code_rejet_860026720, 0, 0 )
		SAUT STOCKE_ERRONE
	FINSI

	ta_860026720  = i_get_art_field( g_iartin, $Tfe6dc::TAXE:0 )
	CAX_860026720 = i_get_art_field( g_iartin, $Tfe6dc::CAX:0 )
	SUP_860026720 = i_get_art_field( g_iartin, $Tfe6dc::SUP:0 )
	TAP_860026720 = i_get_art_field( g_iartin, $Tfe6dc::TAP:0 )
	duree_860026720 = i_get_art_field( g_iartin, $Tfe6dc::DUREE:0 )
SINON

	trace( "[Tfe6dc_trt] T3cap2 absent" )

	#####################################################################
	#	Test 176 : champs T3cap2 et T3cab absents
	#####################################################################
	SI T3cab_860026720 <= 0
	ALORS

		trace( "[Tfe6dc_trt] T3cab et T3cap2 simultanement absents" )

		code_rejet_860026720   = 0x50F2
		erreur_860026720       = i_PlvMessEmettre(6851, 2, g_iartin, "", 1, code_rejet_860026720, 0, 0 )
		SAUT STOCKE_ERRONE
	FINSI

	trace("[Tfe6dc_trt]T3cab present")
	ta_860026720 = i_get_art_field(g_iartin,$Tfe6dc::TAXE:1)
	CAX_860026720 = i_get_art_field(g_iartin,$Tfe6dc::CAX:1)
	SUP_860026720 = i_get_art_field(g_iartin,$Tfe6dc::SUP:1)
	TAP_860026720 = i_get_art_field(g_iartin,$Tfe6dc::TAP:1)
	duree_860026720 = i_get_art_field(g_iartin,$Tfe6dc::DUREE:1)
FINSI


#FO2086 
#trace1(" FO2086 duree %d ",duree)
SI (duree_860026720 > 0x10B30)
ALORS
   	#trace("[Tfe6dc_trt] Duree trop longue")
	code_rejet_860026720 = 0x5022
	erreur_860026720     = i_PlvMessEmettre(6927,2,g_iartin,"",2,code_rejet_860026720,C_Article_860026720,0)
	SAUT STOCKE_ERRONE
FINSI


SI (SUP_860026720 == 0xFF)
ALORS
	SUP_860026720 = 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_860026720 = i_get_art_field(g_iartin, $Tfe6dc::DATE)

# ENVELOPPE OPTIONNELLE OBSOLETE APRES FO1172:
#---------------------
#  AJOUT ENVELOPPE Optionelle
# (Contient le champs DATE qui permet de conserver la valeur du champ DATE en entree de Platine)
#---------------------
# Creation de l'enveloppe
#erreur=i_add_opt( "E_Tfe6dc")
# champ T1 ( 0x0A pour la reconnaissance de l'enveloppe,
# par l'arbre de reconnaissance Dopt )
#erreur=i_set_attr_val_n( $E_Tfe6dc::T1,0x0A)
# champ L1
#erreur=i_set_attr_val_n( $E_Tfe6dc::L1,0x05)
# DATE [5 octet]
#erreur=i_set_attr_val_n( $E_Tfe6dc::DATE,sdate)


SCT_860026720 = 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_860026720 & 0x60) == 0x00)
ALORS

	trace( "[Tfe6dc_trt] DATE = heure de fin de comm : conversion en debut de comm" )

	sdate_860026720 = sdate_860026720 - duree_860026720
	erreur_860026720 = i_set_art_date(g_iartin,sdate_860026720)
	g_iartin.SCT = SCT_860026720 | 0x20
	
	SAUT FIN_SCT
FINSI

SI ((SCT_860026720 & 0x60) == 0x20)
ALORS

	trace( "[Tfe6dc_trt] DATE = heure de debut de comm" )

	SAUT FIN_SCT
FINSI

#####################################################################
#	Test 178 : bits BC champ SCT != 00, 01
#####################################################################
SI TAP_860026720 & 0x40
ALORS
	code_rejet_860026720   = 0x5040
SINON
	code_rejet_860026720   = 0x5041
FINSI
erreur_860026720 = i_PlvMessEmettre(6853,2,g_iartin,"",2,code_rejet_860026720,SCT_860026720,0)


	trace( "[Tfe6dc_trt] Erreur test 178" )

SAUT STOCKE_ERRONE

POINT FIN_SCT

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

stocke_date_860026720 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)


#
###########################################################################
# Controle du champ "type d'appel"
#==== Si bit b = 1 => article inefficace
#==== Si bits a = 1 et c = 1 => erreur
###########################################################################

#####################################################################
#	Test 180 : bit B champ TAP == 1 (inefficace)
#####################################################################
#####################################################################
#	Test 180 : bit B champ TAP == 1 (inefficace)
#  - G2R2Ca - 02/12/2005  Deplacement du test d'inefficaciti apres la normalisation
######################################################################

SI TAP_860026720 & 0x40
ALORS
	SI duree_860026720 == 0
	ALORS
		T3cha_860026720 = i_valid_field_n(g_iartin,$Tfe6dc::T3cha)
		T3cle_860026720 = i_valid_field_n(g_iartin,$Tfe6dc::T3cle)

		SI T3cle_860026720 > 0
		ALORS
			service_860026720 = 1
		FINSI

		SI T3cha_860026720 > 0
		ALORS
			MES1_860026720 = i_get_art_field( g_iartin, $Tfe6dc::MES1 )
			MES2_860026720 = i_get_art_field( g_iartin, $Tfe6dc::MES2 )
		FINSI

		SI ((service_860026720 == 1) || (MES1_860026720 != 0xFF) || (MES2_860026720 != 0xFF))	
		ALORS
			# Test : champs NDE absent si non ineff (EV576)
			nde_860026720 = i_valid_field_n(g_iartin, $Tfe6dc::NDE)
			SI (nde_860026720 == 0)
			ALORS
				code_rejet_860026720   = 0x5041
				erreur_860026720       = i_PlvMessEmettre(6929,2,g_iartin,"",0,0,0,0)

				trace( "[Tfe6dc_trt] Erreur test 180" )

				SAUT STOCKE_ERRONE
			FINSI
		FINSI


	trace( "[Tfe6dc_trt] Article inefficace : stockage en PRT" )

###########################################################################################
# PKH -G2R2Ca SAUT STOCK_OK_PRT pour les dc inefficaces deplace apres la normalisation 
###########################################################################################		
		#SAUT STOCKE_OK_PRT

		
	FINSI

	trace( "[Tfe6dc_trt] Article inefficace : stockage en PRT" )


	#SAUT STOCKE_OK_PRT
FINSI



#####################################################################
#	Test : champs NDE absent si non ineff (EV576)
#####################################################################
nde_860026720 = i_valid_field_n(g_iartin, $Tfe6dc::NDE)
SI (nde_860026720 == 0)
ALORS
	code_rejet_860026720 = 0x5041
	erreur_860026720 = i_PlvMessEmettre(6929,2,g_iartin,"",0,0,0,0)
        trace ("[Tfe6dc_trt]Erreur test du champ NDE")
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 181 : bits AC champ TAP == 11
#####################################################################
# test des bits a et c uniquement
SI ((TAP_860026720 & 0xa0)  == 0xa0)
ALORS	
	code_rejet_860026720 = 0x5041
	erreur_860026720 = i_PlvMessEmettre(6854,2,g_iartin,"",1,code_rejet_860026720,0,0)
	SAUT STOCKE_ERRONE
FINSI

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

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


SI ta_860026720 > S1_860026720
ALORS
        code_rejet_860026720 = 0x5031
        erreur_860026720 = i_PlvMessEmettre(6855,2,g_iartin,"",2,code_rejet_860026720,ta_860026720,0)	
        SAUT STOCKE_ERRONE
FINSI


#####################################################################
#	 Article Mayotte expe : - NDR commence par 269
#                               - NDE sur 6 digits et commence par 6
#                               - pas de test sur transgroupe (car impossible pour un faisceau entrant)
#####################################################################

SI i_valid_field_n(g_iartin,$Tfe6dc::NDE)
ALORS
	erreur_860026720 = i_get_art_str(g_iartin,$Tfe6dc::NDE, pt_NDE_860026720)
	lg_NDE_860026720 = i_strlen(pt_NDE_860026720)

	SI ((g_iartin.NDR[0] == 0x2) && (g_iartin.NDR[1] == 0x6) && (g_iartin.NDR[2] == 0x9)) && 
    	    (lg_NDE_860026720 == 6) && (g_iartin.NDE[0] == 0x6)
	ALORS
		SAUT STOCKE_DIV
	FINSI 
FINSI


#####################################################################
#   SECRET DU DEMANDEUR
#####################################################################
# 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("[Tfe6dc_trt]Secret du demandeur : suppression de '3651' ou de '*31*'")
	secretndr_860026720 = 1
#	Enlever 3651 (ou *31*) pour appel a i_comptage
	pos_deb_860026720 = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
	modif_article_860026720 = 1
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 
#####################################################################

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


 trace("[Tfe6dc_trt]traitement du numero demande")
SI ( modif_article_860026720 == 1 )
ALORS
 trace("[Tfe6dc_trt]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_860026720>0) && (g_iartout7.NDE[0] == 0x0) )
	ALORS
	    # Ajout de 16XY devant le NDE
	     trace("[Tfe6dc_trt]champ betav present et NDE commence par '0' : ajout de 16XY")
	    erreur_860026720 = 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
	    g_iartout7.NDE[2] = g_iartout7.BETAV[0]
	    g_iartout7.NDE[3] = g_iartout7.BETAV[1] 

	FINSI
SINON

 trace("[Tfe6dc_trt]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_860026720>0) && (g_iartin.NDE[0] == 0x0) )
	ALORS
	    # Ajout de 16XY devant le NDE
	     trace("[Tfe6dc_trt]champ betav present et NDE commence par '0' : ajout de 16XY")
	    erreur_860026720 = 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) !!!
	    g_iartout7.NDE[2] = g_iartout7.BETAV[0]  
	    g_iartout7.NDE[3] = g_iartout7.BETAV[1]
	    modif_article_860026720 = 1
	FINSI
FINSI

# Ajout PSA 19/07/05
#  Traitement specifique pour les cas ETSI national et internationnal
#####################################################################
SI ( modif_article_860026720 == 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_860026720 = 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_860026720 = 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_860026720 = i_add_quart_name("NDE",0,15,"0",g_iartin,g_iartout7)
                modif_article_860026720 = 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_860026720 = i_add_quart_name("NDE",0,15,"00",g_iartin,g_iartout7)
                        modif_article_860026720 = 1
                FINSI
        FINSI
FINSI
# Fin ajout PSA 19/07/05


#####################################################################
#   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 CTfe6dc=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_860026720 == 1)
ALORS
#	trace("Normalisation des NDEUR/NDE avec g_iartout7")
#fonction BNC_TYPCTR (NomBase,Code_article,CATEG,'**00',DEDE_DIST_N,Date_Locale(ddebut,IDUS_N),dduree)

	erreur_860026720 = i_memcpy_art_field_n(g_icopo, $Tcopo::NDR,"**00", 5)
	
	erreur_860026720 = i_normal(g_iartout7,$Tfe6dc::NDE , $Tfe6dc::NDE, g_icopo, $Tcopo::NDE, $Tcopo::NDE,3, AUT_BIDON_860026720 , AUT_NDE_860026720)
SINON
#	trace("Normalisation des NDEUR/NDE avec g_iartin")
	erreur_860026720 = i_memcpy_art_field_n(g_icopo, $Tcopo::NDR,"**00", 5)
	
	erreur_860026720 = i_normal(g_iartin,$Tfe6dc::NDE , $Tfe6dc::NDE, g_icopo, $Tcopo::NDE, $Tcopo::NDE,3, AUT_BIDON_860026720 , AUT_NDE_860026720)
FINSI


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

SI erreur_860026720 < 0
ALORS
#        code_rejet = 0x5011
#	erreur = i_PlvMessEmettre(6857,2,g_iartin, "",2,code_rejet,g_ierrno,0)
#        SAUT STOCKE_ERRONE
	nocodedest_860026720 = 1
	SAUT STOCKE_OK
FINSI

# si on a une selection du transporteur en 16XY ou en EZAB (E!=8)
SI (erreur_860026720==RET_SELTRANS_860026720)
ALORS
	trace("[Tfe6dc_trt]Article avec selection du transporteur non FT : stockage en OK sans calcul de valo")
	seltrans_860026720 = 1
	flag_stat_860026720 = 1
	code_dest_860026720 = g_icopo.SUP[RES_CLDEST_860026720]
	SI ( code_dest_860026720 != CCD_FCT_860026720 )
	ALORS
	    code_dest_860026720   = 0xFE
	FINSI
FINSI
# sinon
# selection transporteur FT (par EZAB avec E=8) ou pas de sel. trans.
# On effectue un calcul de valorisation.

	trace("[Tfe6dc_trt]Fin de la normalisation")

#####################################################################
# G2R2Ca -PKH- ICI apres normalisation test et envoie en STOCKE_OK_PRT les inefficaces
#############################################################################

SI TAP_860026720 & 0x40
ALORS 
 
			SAUT STOCKE_OK_PRT 

FINSI 
 
 
 trace ("[Tfe6dc_trt]Calcul de valorisation")

#####################################################################
#	Initialisation de l'interface "proc_copo" et calcul taxation
#####################################################################

categ_860026720 = (8 * CAX_860026720) + SUP_860026720

g_icopo.TAXE   = 0
g_icopo.CREDIT = 0
erreur_860026720 = i_set_art_date(g_icopo,sdate_860026720)
g_icopo.DUREE  = duree_860026720
g_icopo.CODE   = CODE_NUMERIS_860026720
g_icopo.CATEG  = categ_860026720
#	g_icopo.CAX    = CAX
#	g_icopo.SUPPORT = SUP
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

#	PROC_COPO PML+LI 10/08/95 et LI 18/09/95
#	Memorisation des parametres de PROC_COPO

pt_memo_860026720 = i_init_tax_param()

cr_860026720 = i_comptage(g_icopo,BASE_TELEPHONE_860026720,sdate_860026720)

# Erreur retour BNC
SI cr_860026720 != 0
ALORS
#        SI ((g_ierrno == 1100) && (seltrans == 1))
#        ALORS
		nocodedest_860026720 = 1
                SAUT STOCKE_OK

#        FINSI

#        code_rejet = 0x5021
#        erreur = i_PlvMessEmettre(6858,2,g_iartin,"",2,code_rejet,g_ierrno,0)
#        SAUT STOCKE_ERRONE
FINSI
#DRE G4R9 QC875
Appel_BNC_860026720 = 1


# G2R1Ch : REJET2

type_cpt_860026720 = g_icopo.SUP[RES_TYPCPT_860026720]
#On conserve le type de trafic
## Maj CCD - G2R1Ch
code_dest_860026720 = g_icopo.SUP[RES_CLDEST_860026720]
trace1("[Tfe6dc_trt] type_cpt retour de g_icopo.SUP[RES_TYPCPT]=%d",type_cpt_860026720)
trace1("[Tfe6dc_trt] code_dest retour de g_icopo.SUP[RES_CLDEST]=%d",code_dest_860026720)

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

#

#====================================================================
#==================== BRANCHEMENTS POUR STOCKAGE ====================
#====================================================================
#
#	Ajout du module CNET statistiques

POINT STOCKE_OK


trace( "[Tfe6dc_trt] Stockage de l'article" )



trace( "[Tfe6dc_trt] Ajout du T3=0x7E avec CCD = 0xFF et CTT = 0xFFFF" )

#FO466 : remplacement ajou_tlv par ajoutchampNum
erreur_860026720 = i_ajoutChampNum(g_iartin,$Tfe6dc::T4ccd,$Tfe6dc::CCD,0)
erreur_860026720 = i_ajoutChampNum(g_iartin,$Tfe6dc::T4typtra,$Tfe6dc::CTT,0)

# G2R1Ch : REJET2
val_REJET_860026720 = 0
SI (type_cpt_860026720==CPT_REJET2_860026720)
ALORS
	trace("[Tfe6dc_trt]Ajout du champ REJET=2")
	val_REJET_860026720=2
	erreur_860026720=i_ajoutChampNum(g_iartin,$Tfe6dc::T4rejet,$Tfe6dc::REJET,0)
	erreur_860026720=i_set_art_field(g_iartin,$Tfe6dc::REJET,val_REJET_860026720)
FINSI

# G2R2Cv : REJET3
SI (type_cpt_860026720==CPT_REJET3_860026720)
ALORS
	trace("[Tfe6dc_trt]Ajout du champ REJET=3")
	val_REJET_860026720=3
	erreur_860026720=i_ajoutChampNum(g_iartin,$Tfe6dc::T4rejet,$Tfe6dc::REJET,0)
	erreur_860026720=i_set_art_field(g_iartin,$Tfe6dc::REJET,val_REJET_860026720)
FINSI

# G3R3Cv : REJET6
SI (type_cpt_860026720==CPT_REJET6_860026720)
ALORS
	trace("[Tfe6dc_trt]Ajout du champ REJET6=14")
	val_REJET_860026720=14
	erreur_860026720=i_ajoutChampNum(g_iartin,$Tfe6dc::T4rejet,$Tfe6dc::REJET,0)
	erreur_860026720=i_set_art_field(g_iartin,$Tfe6dc::REJET,val_REJET_860026720)
FINSI

#DRE G4R6 lot2
SI ( (type_cpt_860026720==CPT_CPS_Loc_860026720) || (type_cpt_860026720==CPT_CPS_RI_860026720) )
ALORS
	#trace("Ajout du champ REJET = CPS_Loc ou CPS_RI")
	val_REJET_860026720=type_cpt_860026720
	erreur_860026720=i_ajoutChampNum(g_iartin,$Tfe6dc::T4rejet,$Tfe6dc::REJET,0)
	erreur_860026720=i_set_art_field(g_iartin,$Tfe6dc::REJET,val_REJET_860026720)
FINSI
#\DRE G4R6 lot2



# si nocodedest est reste a 0, cela veut dire que l appel a i_comptage a ete
# realise et valide
# Dans le cas contraire, on laisse l ajout CE CCD a la valeur par defaut (FF)
SI (nocodedest_860026720 == 0)
ALORS
	trace("[Tfe6dc_trt]Traitement: Appel a i_comptage realise et valide : maj CCD")
	erreur_860026720 = i_set_art_field(g_iartin, $Tfe6dc::CCD, code_dest_860026720)
FINSI

SI (flag_stat_860026720 == 1) && (nocodedest_860026720 == 0)
ALORS
	type_traf_860026720 = g_icopo.SUP[RES_TTRAFIC_860026720]
	erreur_860026720 = i_set_art_field(g_iartin,$Tfe6dc::CTT,type_traf_860026720)
	trace1("[Tfe6dc_trt]Appel a i_comptage realise et valide : maj CTT type_traf=%d",type_traf_860026720)
FINSI
# XYZ trafic fin

# Ajout 0x00FE dans le cas de seltrans=1 et flag_stat=1
SI ((flag_stat_860026720 == 1) && (seltrans_860026720 == 1))
ALORS
	trace("[Tfe6dc_trt]Traitement: Selection transporteur non FT : maj CTT = 0x00FE et CCD = 0xFE")
	erreur_860026720 = i_set_art_field( g_iartin, $Tfe6dc::CTT, code_dest_860026720 )
	g_iartin.CCD = code_dest_860026720
FINSI

#DRE G4R9 QC875
SI Appel_BNC_860026720 == 1
ALORS

	#DRE G4R6 lot2
	SI ( i_valid_field_n(g_iartin, $NDE ) )
	ALORS
	
		#Ajout NORMAL (NDE normalise)
		erreur_860026720=i_ajoutChampNum(g_iartin,$Tfe6dc::T4normal,$Tfe6dc::NORMAL,0)
		indice_860026720 = 0
		POINT BOUCLE_NDE
		res_860026720 = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice_860026720)
		#        trace1(" element : %x",res)
		SI (res_860026720 != 00)
		ALORS
			erreur_860026720 = i_set_art_fieldtab(g_iartin, $Tfe6dc::NORMAL, indice_860026720, res_860026720-0x30)
			indice_860026720 = indice_860026720 + 1
			SAUT BOUCLE_NDE
		SINON
			erreur_860026720 = i_set_art_fieldtab(g_iartin, $Tfe6dc::NORMAL, indice_860026720, 0xFF)
		FINSI
	FINSI
	#\DRE G4R6 lot2
FINSI

POINT STOCKE_OK_PRT


trace( "[Tfe6dc_trt] Traitement: Stockage de l'article en OK ***" )


erreur_860026720 = i_ajoutChampNum(g_iartin,$Tfe6dc::T4_CORR,$Tfe6dc::CORR_OK,0)
erreur_860026720 = i_stocke_art( g_iartin, stocke_date_860026720, PT_OK, 0 )


trace( "[Tfe6dc_trt] Fin du pcode de traitement ***" )

RETOUR TRAIT_OK



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

POINT STOCKE_ERRONE

 	trace("[Tfe6dc_trt]Traitement Tfe6dc: Stockage de l'article en ERRONE")

# Retrait de l'enveloppe optionnelle E_GSM_nom:
erreur_860026720=i_del_opt()

stocke_date_860026720 = i_get_art_stocke_date( g_iartin, DATE_PLUS_DUREE )

erreur_860026720 = i_make_art_rej( g_iartin, g_iartout, code_rejet_860026720 )
erreur_860026720 = i_stocke_art  ( g_iartout, stocke_date_860026720, PT_ERRONE, 0 )


trace( "[Tfe6dc_trt] Fin du pcode de traitement STOCKE_ERRONE ***" )


RETOUR TRAIT_OK

###########################################################################
# Stockage en elimine   
###########################################################################
POINT STOCKE_ELM

trace( "[Tfe6dc_trt] Fin du Pcode de traitement : Stockage en ELIMINE" )

erreur_860026720 = i_stocke_art( g_iartin, 0, PT_ELIMINE, 0 )

RETOUR TRAIT_OK

POINT STOCKE_DIV

trace( "[Tfe6dc_trt] Fin du Pcode de traitement : Stockage en DIVERS" )

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

RETOUR TRAIT_OK

# ---------------------- fin pcode Tfe6dc_trt ---------------------------------
