FVERS = 2
REFOBJET : ID = 860026722 ; ID_INIT = 860025991 ; NOM = Trm6dc ; VERSION = V55 ; DATE = 26/02/15-14:34:59 ( 1424961299 ) ; CAT = 7 ; ETAT = 0 ; NB_FILS =0 ; ID_FILS = 
ID_EST = 860000144
COMMENT = "26/02/2015 - DRE - G4R9 QC875 Pb de normalisation du DEDE si pas d'appel a la BNC # 26/03/2014 - DRE - G4R6 : Lot2 prise en compte des nouveaux Type Control envoy?s par la base (C+S ) #23/05/2013 - DRE - G4R3 lot2 : Masquage de numero appelant (PNIJ)"
CREATEUR = drey
# DEBUT_CORPS
PCODE_PERE=
####################################################################
# Pcode TRAITEMENT
#	article DC RADIOMOBILE VN6
#
# En entree:
#       Article Trm6dc (domaine ILA=Lrmobile)
#       Domaine article: Dvn6dc
#
# En sortie:
#       Article OK:
#               Article Trm6dc (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
# 01/10/2004 - PSA : FO714 - Suppression gestion ANO
# 09/05/2005 - JLG : G2R1Ch REJET2
# 09/05/2005 - JLG - FO1276
# 30/05/2005 - JLG THE - Fusion G2R1Ca + FO 1319
# 19/07/2005 - PSA - FO 1387 : normalisation demande
# 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 appels enfance maltraitee)
# 09/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 PTD & kiosque
# 08/08/2011 - THE - G3R22 QC 488
# 05/10/2011 - RHE - VerifPcode
# 23/05/2013 - DRE - G4R3 lot2 : Masquage de numero appelant (PNIJ) (Suppression filtrage en traitement car fait en distribution pour envoi a symphonie avec DDeur masque)
# 26/03/2014 - DRE - G4R6 : Lot2 prise en compte des nouveaux Type Control envoyes par la base (C+S )
# 26/02/2015 - DRE - G4R9 QC875 Pb de normalisation du DEDE si pas d'appel a la BNC
#
####################################################################

#FO2086
DEFINITION	C_Article	"Trm6dc"

#////////////////////////////////////////////////////////////
# Codes de consultation des parametres de proc_copo
#////////////////////////////////////////////////////////////
# VerifPcode - RHE # DEFINITION	COD_NBAR	1
# VerifPcode - RHE # DEFINITION	COD_Q		2
# VerifPcode - RHE # DEFINITION	COD_D		3
# VerifPcode - RHE # DEFINITION	COD_C		4
# VerifPcode - RHE # DEFINITION	COD_P		5
# VerifPcode - RHE # DEFINITION	COD_TAXE	6
# VerifPcode - RHE # DEFINITION	COD_CT		7
# VerifPcode - RHE # DEFINITION	COD_HF		8
#
# Indice interne de la base de comptage pour le telephone
#
DEFINITION	BASE_TELEPHONE	1
DEFINITION	AUT_BIDON	"BIDON"
#
# Indice de la loi de calcul de taxation pour le telephone
#
# VerifPcode - RHE # DEFINITION	CODE_TELEPHONE	1
DEFINITION	CODE_NUMERIS	3
#
# Definition des resultats supplementaires retournes par le calcul de taxation.
#
# VerifPcode - RHE # DEFINITION	RES_TYPCOM	0
DEFINITION	RES_CLDEST	1
DEFINITION	RES_TYPCPT	2
DEFINITION	CPT_REJET2	10
DEFINITION	CPT_REJET3	12
DEFINITION	CPT_REJET6      14
#
# Valeur des codes d'action (collecte temps reel, collecte BM ou recyclage)
#
# VerifPcode - RHE # DEFINITION	TVAL_COLLECT	1
# VerifPcode - RHE # DEFINITION	TVAL_RECYCLE	2
# VerifPcode - RHE # DEFINITION	TVAL_BM		3
#
# valeurs des seuils utilises dans le controle de taxation
#
DEFINITION	S1		109225
# a diviser par 100
# VerifPcode - RHE # DEFINITION	S2		205
# a diviser par 100
# VerifPcode - RHE # DEFINITION	S3		110
# VerifPcode - RHE # DEFINITION	S4		1

#############################################
# Declaration des variables pour la fonction
# de normalisation.
#############################################
#
# Codes de retour de la fonction i_normal
#
# VerifPcode - RHE # DEFINITION	RET_NO_SELTRANS	0
# VerifPcode - RHE # DEFINITION	RET_SELTRANS_FT	1
# VerifPcode - RHE # DEFINITION	RET_SELTRANS	2
#
# Nom de l'automate du numero demandeur et demande
#
DEFINITION	AUT_NDE		"ATL_ZN_NDE2+"

# indexe dans g_icopo.SUP[] du 'code classe de destination'
DEFINITION	RES_TTRAFIC	1
#DRE G4R6 lot2
DEFINITION	CPT_CPS_Loc	16
DEFINITION	CPT_CPS_RI	17
#\DRE G4R6 lot2

REGISTRE ENTIER	stocke_date
REGISTRE ENTIER	type_cpt
REGISTRE ENTIER	ta
# VerifPcode - RHE # REGISTRE ENTIER	tc
# VerifPcode - RHE # REGISTRE ENTIER	tr

REGISTRE ENTIER	sdate
REGISTRE ENTIER	duree
# VerifPcode - RHE # REGISTRE ENTIER	dr

REGISTRE ENTIER	code_rejet
REGISTRE ENTIER	val_REJET
REGISTRE ENTIER	erreur
REGISTRE ENTIER	cr

REGISTRE ENTIER	SUP
REGISTRE ENTIER	CAX
REGISTRE ENTIER	SCT
REGISTRE ENTIER	TAP
REGISTRE ENTIER	T3cap2
REGISTRE ENTIER	T3cab

REGISTRE ENTIER	T3cle
REGISTRE ENTIER	T3cha
REGISTRE ENTIER	MES1
REGISTRE ENTIER	MES2
REGISTRE ENTIER	categ
REGISTRE ENTIER	code_dest
REGISTRE ENTIER	nocodedest
#REGISTRE ENTIER	palliatif
REGISTRE ENTIER	secretndr
REGISTRE ENTIER seltrans
REGISTRE ENTIER modif_article
REGISTRE ENTIER pos_deb

# Ajout pour module CNET statistiques
REGISTRE ENTIER flag_stat
# fin ajout CNET

# Test presence NDE (EV576)
REGISTRE ENTIER 	nde
#DRE G4R6 Lot2
REGISTRE ENTIER		indice


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

# code 'classe de destination'
REGISTRE ENTIER type_traf
# drapeau, si calcul du trafic est valid
# VerifPcode - RHE # REGISTRE ENTIER CALC_TRAFIC
# VerifPcode - RHE # REGISTRE ENTIER flag

# PROC_COPO PML+LI 10/08/95 et LI 18/09/95
# VerifPcode - RHE # REGISTRE ENTIER		P
# VerifPcode - RHE # REGISTRE ENTIER		Q
REGISTRE ENTIER		res
#DRE G4R9 QC875
REGISTRE ENTIER Appel_BNC

REGISTRE POINTEUR	pt_memo
# VerifPcode - RHE # REGISTRE POINTEUR	pt_DEDE_DIST_N
REGISTRE POINTEUR	pt_DEDE
# VerifPcode - RHE # REGISTRE POINTEUR	pt_NDR

# VerifPcode - RHE # pt_DEDE_DIST_N 	= "99999999999999999999999999999999999"
pt_DEDE 		= "88888888888888888888888888888888888"
# VerifPcode - RHE # pt_NDR		= "77777777777777777777777777777777777"
# VerifPcode - RHE # pt_memo 		= "111111111111111111111111111111111"

i_strcpy(pt_DEDE,"")

#####################################################################
# DEBUT DES TRAITEMENTS
#####################################################################
#
trace("[Trm6dc_trt]Article DC faisceau entrant 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 = 0
betav = 0
type_cpt = 0

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

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

# Initialisation des parametres pour les CS
MES1 = 0xFF
MES2 = 0xFF
# fin de l'initialisation

# Initialisation du parametre pour palliatif du NDE
#palliatif = 1
# fin de l'initialisation

# Initialisation pour le secret du demandeur
secretndr = 0

# Detection de la modification g_iartin en g_iartout7
modif_article = 0

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

# Initialisation du parametre de position du 16XY ou du E
pos_deb = 0
indice = 0
#DRE G4R9 QC875
Appel_BNC = 0

#DRE - G4R3 lot2 : suppression filtrage, masquage de num?ro appelant (PNIJ) en distribution
######################################################################
## G3R22 QC488 "Filtrage DC faisceau entrant TRM6DC" 
## pour appel num?ro mobile vers un num?ro fixe technique.
######################################################################
#
#erreur=i_get_art_str(g_iartin,$Trm6dc::NDE, pt_DEDE)
#SI ( i_adequation_chaine_expreg ( pt_DEDE,"145505051" ) == 0 )
#ALORS
#	SAUT STOCKE_DIV
#FINSI
#\DRE - G4R3 lot2  

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

SI T3cap2 > 0
ALORS
	trace("[Trm6dc_trt]T3cap2 present")
#####################################################################
#	Test 175 : champs T3cap2 et T3cab presents
#####################################################################
	SI T3cab > 0
	ALORS
		trace("[Trm6dc_trt]T3cab present")
		code_rejet = 0x50F2
		erreur = i_PlvMessEmettre(6810,2,g_iartin,"",1,code_rejet,0,0)
		SAUT STOCKE_ERRONE
	FINSI

	#trace("[Trm6dc_trt]T3cab absent")
	ta = i_get_art_field(g_iartin,$Trm6dc::TAXE:0)
	CAX = i_get_art_field(g_iartin,$Trm6dc::CAX:0)
	SUP = i_get_art_field(g_iartin,$Trm6dc::SUP:0)
	TAP = i_get_art_field(g_iartin,$Trm6dc::TAP:0)
	duree = i_get_art_field(g_iartin,$Trm6dc::DUREE:0)
SINON
	#trace("[Trm6dc_trt]T3cap2 absent")
#####################################################################
#	Test 176 : champs T3cap2 et T3cab absents
#####################################################################
	SI T3cab <= 0
	ALORS
		#trace("[Trm6dc_trt]T3cab absent")
		code_rejet = 0x50F2
		erreur = i_PlvMessEmettre(6811,2,g_iartin,"",1,code_rejet,0,0)
		SAUT STOCKE_ERRONE
	FINSI

	#trace("[Trm6dc_trt]T3cab present")
	ta = i_get_art_field(g_iartin,$Trm6dc::TAXE:1)
	CAX = i_get_art_field(g_iartin,$Trm6dc::CAX:1)
	SUP = i_get_art_field(g_iartin,$Trm6dc::SUP:1)
	TAP = i_get_art_field(g_iartin,$Trm6dc::TAP:1)
	duree = i_get_art_field(g_iartin,$Trm6dc::DUREE:1)
FINSI

#FO2086
#trace1(" FO2086 duree %d ",duree)
SI (duree > 0x10B30)
ALORS
	#trace("[Trm6dc_trt] Duree trop longue")
	code_rejet = 0x5022
	erreur = i_PlvMessEmettre(6927,2,g_iartin,"",2,code_rejet,C_Article,0)
	SAUT STOCKE_ERRONE
FINSI

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

SCT = 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 & 0x60) == 0x00)
ALORS
	#trace("[Trm6dc_trt]DATE = heure de fin de comm : conversion en debut de comm")
	sdate = sdate - duree
	erreur = i_set_art_date(g_iartin,sdate)
	g_iartin.SCT = SCT | 0x20
	SAUT FIN_SCT
FINSI

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

#####################################################################
#	Test 178 : bits BC champ SCT != 00, 01
#####################################################################

SI TAP & 0x40
ALORS
	code_rejet   = 0x5040
SINON
	code_rejet   = 0x5041
FINSI

erreur = i_PlvMessEmettre(6813,2,g_iartin,"",2,code_rejet,SCT,0)
SAUT STOCKE_ERRONE

POINT FIN_SCT

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

stocke_date = 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)
#  -G2R2Ca- 02/12/05 MODIFICATION :deplacement du test inefficace apres la normalisation
#	de DEDE pour evolution APACHE
#####################################################################
#####################################################################

SI TAP & 0x40
ALORS
	SI duree == 0
	ALORS
		T3cha = i_valid_field_n(g_iartin,$Trm6dc::T3cha)
		T3cle = i_valid_field_n(g_iartin,$Trm6dc::T3cle)

		SI T3cha > 0
		ALORS
			MES1 = i_get_art_field(g_iartin,$Trm6dc::MES1)
			MES2 = i_get_art_field(g_iartin,$Trm6dc::MES2)
		FINSI

		SI ((MES1 != 0xFF) || (MES2 != 0xFF))
		ALORS
			#trace("[Trm6dc_trt]Article inefficace avec duree=0 et avec CS=CHA: stockage en PRT")
			SAUT STOCKE_NODATA
		SINON
			SI T3cle > 0
			ALORS
#				Test : champs NDE absent si non ineff (EV576)
				nde = i_valid_field_n(g_iartin, $Trm6dc::NDE)
				SI (nde == 0)
				ALORS
					code_rejet = 0x5041
					erreur = i_PlvMessEmettre(6930,2,g_iartin,"",1,code_rejet,0,0)
					SAUT STOCKE_ERRONE
				FINSI
			FINSI
		FINSI
	FINSI
	#trace("[Trm6dc_trt]Article inefficace : stockage en PRT")
	#SAUT STOCKE_OK_PRT
FINSI

#####################################################################
#	Test : champs NDE absent si non ineff (EV576)
#####################################################################

nde = i_valid_field_n(g_iartin, $Trm6dc::NDE)
SI (nde == 0)
ALORS
	code_rejet = 0x5041
	erreur = i_PlvMessEmettre(6930,2,g_iartin,"",1,code_rejet,0,0)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 181 : bits AC champ TAP == 11
#####################################################################
# test des bits a et c uniquement

SI ((TAP & 0xa0)  == 0xa0)
ALORS
	code_rejet   = 0x5041
	erreur = i_PlvMessEmettre(6814,2,g_iartin,"",1,code_rejet,0,0)
	SAUT STOCKE_ERRONE
FINSI
#
#==================================================================
#=====================	 	TRAITEMENT	===================
#==================================================================
#

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

SI ta > S1
ALORS
	code_rejet = 0x5031
	erreur = i_PlvMessEmettre(6815,2,g_iartin,"",2,code_rejet,ta,0)
	SAUT STOCKE_ERRONE
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("[Trm6dc_trt]Secret du demandeur : suppression de '3651' ou de '*31*'")
	secretndr = 1
	#Enlever 3651 (ou *31*) pour appel a i_comptage
	pos_deb = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
	modif_article = 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 = i_valid_field_n(g_iartin,$Trm6dc::BETA)
betav = i_valid_field_n(g_iartin,$Trm6dc::BETAV)
#trace("[Trm6dc_trt]traitement du numero demande")

#####################################################################
#	SELECTION DU TRANSPORTEUR
#####################################################################

SI ( modif_article == 1)
ALORS
	#trace("[Trm6dc_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>0) && (g_iartout7.NDE[0] == 0x0) )
	ALORS
		# Ajout de 16XY devant le NDE
		#trace("[Trm6dc_trt]champ betav present et NDE commence par '0' : ajout de 16XY")
		erreur = i_add_quart_name("NDE",0,15,"1600",g_iartout7,g_iartout7)
		g_iartout7.NDE[2] = g_iartout7.BETAV[0]
		g_iartout7.NDE[3] = g_iartout7.BETAV[1]
	FINSI
SINON
	#trace("[Trm6dc_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>0) && (g_iartin.NDE[0] == 0x0) )
	ALORS
		# Ajout de 16XY devant le NDE
		#trace("[Trm6dc_trt]champ betav present et NDE commence par '0' : ajout de 16XY")
		erreur = i_add_quart_name("NDE",0,15,"1600",g_iartin,g_iartout7)
		g_iartout7.NDE[2] = g_iartout7.BETAV[0]
		g_iartout7.NDE[3] = g_iartout7.BETAV[1]
		modif_article = 1
	FINSI
FINSI

# Ajout PSA 19/07/05
#  Traitement specifique pour les cas ETSI national et internationnal
#####################################################################

SI ( modif_article == 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 = 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 = 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 = i_add_quart_name("NDE",0,15,"0",g_iartin,g_iartout7)
		modif_article = 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 = i_add_quart_name("NDE",0,15,"00",g_iartin,g_iartout7)
			modif_article = 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 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.
#
#####################################################################

#erreur=i_get_art_str(g_iartin, $NDE, DEDE)
#22/10/2003 - MCH - FO424 : paliatif pour bug de lireChpCdc dans la correlation
#res = i_strlen(pt_DEDE)
#res = res - 9
#i_get_sub_str(DEDE,res,-1,pt_DEDE_DIST_N)
#erreur=i_get_art_str(g_iartin, $NDR, pt_NDR)
#erreur=i_memcpy_art_field_n(g_icopo,$Tcopo::NDR,pt_NDR,11)
#erreur=i_memcpy_art_field_n(g_icopo,$Tcopo::NDE,pt_DEDE_DIST_N,11)

SI (modif_article == 1)
ALORS
	#trace("Normalisation des NDEUR/NDE avec g_iartout7")
	#fonction BNC_TYPCTR (NomBase,Code_article,CATEG,'**00',pt_DEDE_DIST_N,Date_Locale(ddebut,IDUS_N),dduree)
	erreur = i_memcpy_art_field_n(g_icopo, $Tcopo::NDR,"**00", 5)
	erreur = i_normal(g_iartout7,$Trm6dc::NDE , $Trm6dc::NDE, g_icopo, $Tcopo::NDE, $Tcopo::NDE,3, AUT_BIDON , AUT_NDE)
SINON
	#trace("Normalisation des NDEUR/NDE avec g_iartin")
	erreur = i_memcpy_art_field_n(g_icopo, $Tcopo::NDR,"**00", 5)
	erreur = i_normal(g_iartin,$Trm6dc::NDE , $Trm6dc::NDE, g_icopo, $Tcopo::NDE, $Tcopo::NDE,3, AUT_BIDON , AUT_NDE)
FINSI

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

SI erreur < 0
ALORS
	nocodedest = 1
	SAUT STOCKE_OK
FINSI

##################################################################################
# G2R2Ca - PKH - deplacement du test d inefficacite apres la normalisatio
##################################################################################

SI TAP & 0x40
ALORS
	SAUT STOCKE_OK_PRT
FINSI

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

categ = (8 * CAX) + SUP

g_icopo.TAXE   = 0
g_icopo.CREDIT = 0
erreur = i_set_art_date(g_icopo,sdate)
g_icopo.DUREE  = duree
g_icopo.CODE   = CODE_NUMERIS
g_icopo.CATEG  = categ
# 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 = i_init_tax_param()

cr = i_comptage(g_icopo,BASE_TELEPHONE,sdate)

SI cr != 0
ALORS
	#SI ((g_ierrno == 1100) && (seltrans == 1))
	#ALORS
	nocodedest = 1
	SAUT STOCKE_OK
	#FINSI

	#code_rejet = 0x5021
	#erreur = i_PlvMessEmettre(6818,2,g_iartin,"",2,code_rejet,g_ierrno,0)
	#SAUT STOCKE_ERRONE
FINSI

#DRE G4R9 QC875
Appel_BNC = 1

# G2R1Ch : REJET2

type_cpt = g_icopo.SUP[RES_TYPCPT]
trace1("[Trm6dc_trt] type_cpt retour de BNC : g_icopo.SUP[RES_TYPCPT]=%d",type_cpt)
#
#On conserve le type de trafic
code_dest = g_icopo.SUP[RES_CLDEST]
trace1("[Trm6dc_trt] code_dest retour de BNC : g_icopo.SUP[RES_CLDEST]=%d",code_dest)

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

#trace("[Trm6dc_trt]Controle de la valorisation")

SAUT STOCKE_OK
#
#====================================================================
#==================== BRANCHEMENTS POUR STOCKAGE ====================
#====================================================================
#

#####################################################################
# POINT de branchement : stockage STOCKE_NODATA
#
#####################################################################
# EV316 point 2
POINT STOCKE_NODATA

stocke_date = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)

SAUT STOCKE_OK_PRT

POINT STOCKE_OK

#trace("[Trm6dc_trt]Stockage de l'article")
#trace("[Trm6dc_trt]Ajout du T3=0x7E avec CCD = 0xFF et CTT = 0xFFFF")

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

# G2R1Ch : REJET2
val_REJET = 0
SI (type_cpt==CPT_REJET2)
ALORS
	#trace("[Trm6dc_trt]Ajout du champ REJET=2")
	val_REJET=2
	erreur=i_ajoutChampNum(g_iartin,$Trm6dc::T4rejet,$Trm6dc::REJET,0)
	erreur=i_set_art_field(g_iartin,$Trm6dc::REJET,val_REJET)
FINSI
# G2R2Cv : REJET3
SI (type_cpt==CPT_REJET3)
ALORS
	#trace("[Trm6dc_trt]Ajout du champ REJET=3")
	val_REJET=3
	erreur=i_ajoutChampNum(g_iartin,$Trm6dc::T4rejet,$Trm6dc::REJET,0)
	erreur=i_set_art_field(g_iartin,$Trm6dc::REJET,val_REJET)
FINSI

# G3R3Cv : REJET6

SI (type_cpt==CPT_REJET6)
ALORS
	#trace("[Trm6dc_trt]Ajout du champ REJET=14 pour REJET6")
	val_REJET=14
	erreur=i_ajoutChampNum(g_iartin,$Trm6dc::T4rejet,$Trm6dc::REJET,0)
	erreur=i_set_art_field(g_iartin,$Trm6dc::REJET,val_REJET)
FINSI


#DRE G4R9 QC875
SI Appel_BNC == 1
ALORS
	
	#DRE G4R6 lot2
	SI ( (type_cpt==CPT_CPS_Loc) || (type_cpt==CPT_CPS_RI) )
	ALORS
		#trace("Ajout du champ REJET = CPS_Loc ou CPS_RI")
		val_REJET=type_cpt
		erreur=i_ajoutChampNum(g_iartin,$Trm6dc::T4rejet,$Trm6dc::REJET,0)
		erreur=i_set_art_field(g_iartin,$Trm6dc::REJET,val_REJET)
	FINSI
	erreur=i_ajoutChampNum(g_iartin,$Trm6dc::T4normal,$Trm6dc::NORMAL,0)
	indice = 0
	POINT BOUCLE_NDE
	res = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice)
	#trace1(" element : %x",res)
	
	SI (res != 00)
	ALORS
		# Cas particuliers : * (2A en ASCII) et # (23 en ASCII)
	
		SI (res == 0x2a)
		ALORS
			erreur = i_set_art_fieldtab(g_iartin, $Trm6dc::NORMAL, indice, 0xB)
			indice = indice + 1
			SAUT BOUCLE_NDE
		FINSI
	
		SI (res == 0x23)
		ALORS
			erreur = i_set_art_fieldtab(g_iartin, $Trm6dc::NORMAL, indice, 0xC)
			indice = indice + 1
			SAUT BOUCLE_NDE
		FINSI
	
		# Cas generique
		erreur = i_set_art_fieldtab(g_iartin, $Trm6dc::NORMAL, indice, res-0x30)
		indice = indice + 1
		SAUT BOUCLE_NDE
	SINON
		erreur = i_set_art_fieldtab(g_iartin, $Trm6dc::NORMAL, indice, 0xFF)
	FINSI
	
	#\DRE G4R6 lot2
	
FINSI

# 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 == 0)
ALORS
	#trace("[Trm6dc_trt]Appel a i_comptage realise et valide : maj CCD")
	erreur = i_set_art_field(g_iartin, $Trm6dc::CCD, code_dest)
FINSI

SI (flag_stat == 1) && (nocodedest == 0)
ALORS
	type_traf = g_icopo.SUP[RES_TTRAFIC]
	erreur = i_set_art_field(g_iartin,$Trm6dc::CTT,type_traf)
	trace1("[Trm6dc_trt]Appel a i_comptage realise et valide : maj CTT type_traf=%d",type_traf)
FINSI
# XYZ trafic fin

# Ajout 0x00FE dans le cas de seltrans=1 et flag_stat=1
SI ((flag_stat == 1) && (seltrans == 1))
ALORS
	#trace("[Trm6dc_trt]Selection transporteur non FT : maj CTT = 0x00FE et CCD = 0xFE")
	erreur = i_set_art_field(g_iartin,$Trm6dc::CTT,code_dest)
	g_iartin.CCD = code_dest
	#trace1("[Trm6dc_trt]Ajout du T3=0x7E avec CTT = %d",type_traf)
	#trace1("[Trm6dc_trt]Ajout du T3=0x7E avec CCD = %d",code_dest)
FINSI

POINT STOCKE_OK_PRT

erreur = i_ajoutChampNum(g_iartin,$Trm6dc::T4_CORR,$Trm6dc::CORR_OK,0)
#trace("[Trm6dc_trt]Stockage de l'article en OK")
erreur = i_stocke_art(g_iartin, stocke_date, PT_OK, 0)

#trace("[Trm6dc_trt]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("[Trm6dc_trt]Stockage de l'article en ERRONE")

stocke_date = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)

erreur = i_make_art_rej(g_iartin, g_iartout, code_rejet)
erreur = i_stocke_art(g_iartout, stocke_date, PT_ERRONE, 0)

trace("[Trm6dc_trt]Fin traitement Article DC VN6 ou VN7")
RETOUR TRAIT_OK


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

POINT STOCKE_DIV

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

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

RETOUR TRAIT_OK


POINT STOCKE_ELM

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

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

RETOUR TRAIT_OK


#----------------------------- FIN PCODE Trm6dc_trt ------------------------------# FIN_CORPS
