DEFINITION C_PREF_PORTABILITE_MOBILE_860025984 "600"
DEFINITION C_PREF_PORTABILITE_MOBILE2_860025984 "509"
DEFINITION BASE_TELEPHONE_860025984 1
DEFINITION CODE_TELEPHONE_860025984 1
DEFINITION RES_TYPCOM_860025984 0
DEFINITION RES_CLDEST_860025984 1
DEFINITION RES_TYPCPT_860025984 2
DEFINITION RES_CODCIR_860025984 3
DEFINITION RES_CODCIRDR_860025984 5
DEFINITION CPT_NOT_860025984 0
DEFINITION CPT_MAX_860025984 1
DEFINITION CPT_EGAL_860025984 3
DEFINITION CPT_SYMPHO_860025984 4
DEFINITION CPT_IMPOSE_860025984 7
DEFINITION CPT_MAX_NOMODIF_860025984 5
DEFINITION CPT_REJET_860025984 11
DEFINITION CPT_REJET2_860025984 10
DEFINITION CPT_REJET3_860025984 12
DEFINITION CPT_REJET6_860025984 14
DEFINITION CPT_CPS_Loc_860025984 16
DEFINITION CPT_CPS_RI_860025984 17
DEFINITION S1_860025984 109225
DEFINITION S2_860025984 205
DEFINITION S3_860025984 110
DEFINITION S4_860025984 1
DEFINITION COD_Q_860025984 2
DEFINITION COD_P_860025984 5
DEFINITION RET_SELTRANS_FT_860025984 1
DEFINITION RET_SELTRANS_860025984 2
DEFINITION AUT_NDEUR_860025984 "ATL_NDEUR3"
DEFINITION AUT_NDE_860025984 "ATL_ZN_NDE2+"
DEFINITION RES_TTRAFIC_860025984 1
DEFINITION CCD_FCT_860025984 0x18
DEFINITION typarticle_860025984 "Tta6dc"
REGISTRE ENTIER bPortabilite_mobile_860025984
REGISTRE ENTIER lg_860025984
REGISTRE POINTEUR pt_NUM_IDAV_860025984
REGISTRE POINTEUR pt_PREF_NUM_IDAV_860025984
REGISTRE POINTEUR pt_TEMP_860025984
REGISTRE ENTIER stocke_date_860025984
REGISTRE ENTIER type_cpt_860025984
REGISTRE ENTIER ta_860025984
REGISTRE ENTIER tc_860025984
REGISTRE ENTIER tr_860025984
REGISTRE ENTIER sdate_860025984
REGISTRE ENTIER duree_860025984
REGISTRE ENTIER dr_860025984
REGISTRE ENTIER code_rejet_860025984
REGISTRE ENTIER erreur_860025984
REGISTRE ENTIER cr_860025984
REGISTRE ENTIER categ_860025984
REGISTRE ENTIER SUP_860025984
REGISTRE ENTIER CAX_860025984
REGISTRE ENTIER SCT_860025984
REGISTRE ENTIER STY_860025984
REGISTRE ENTIER TAP_860025984
REGISTRE ENTIER T3cap1_860025984
REGISTRE ENTIER T3cab_860025984
REGISTRE ENTIER onnet_860025984
REGISTRE ENTIER offnet_860025984
REGISTRE ENTIER transgroupe_860025984
REGISTRE ENTIER secretndr_860025984
REGISTRE ENTIER seltrans_860025984
REGISTRE ENTIER code_dest_860025984
REGISTRE ENTIER nocodedest_860025984
REGISTRE ENTIER modif_article_860025984
REGISTRE ENTIER pos_deb_860025984
REGISTRE ENTIER test_E8_860025984
REGISTRE ENTIER appel_base_860025984
REGISTRE ENTIER isizeNDE_860025984
REGISTRE ENTIER longueur_860025984
REGISTRE ENTIER flag_stat_860025984
REGISTRE ENTIER cle_860025984
REGISTRE ENTIER INF_DEDE_860025984
REGISTRE ENTIER nde_860025984
REGISTRE ENTIER val_REJET_860025984
REGISTRE ENTIER CODCIR_860025984
REGISTRE ENTIER CODCIRDR_860025984
REGISTRE ENTIER typcom_860025984
REGISTRE ENTIER result_zlt_860025984
REGISTRE ENTIER valeur_zlt_860025984
REGISTRE ENTIER comptage_zlt_860025984
REGISTRE ENTIER lg_NDE_860025984
REGISTRE ENTIER beta_860025984
REGISTRE ENTIER betav_860025984
REGISTRE ENTIER indice_860025984
REGISTRE ENTIER res_860025984
REGISTRE ENTIER type_traf_860025984
REGISTRE ENTIER ret_normila_860025984
REGISTRE ENTIER P_860025984
REGISTRE ENTIER Q_860025984
REGISTRE POINTEUR pt_memo_860025984
REGISTRE POINTEUR pt_NDE_860025984
# ---------------------------------------------------------------------------
# Pcode TRAITEMENT
# FICHIER     : Tta6dc.src
#
# VERSION     : %version: 7.3 %
#
# AUTEUR      : %created_by: loic %
#
# CREE le     : 19/03/02 17:38
#
# MODIFIE le  : %date_modified: 14/05/02 15:34 %
#
# DESCRIPTION : article DC ANALOGIQUE VN6 EEC
#
# En entree:
#       Article Tta6dc (domaine ILA=Lnumeris)
#       Domaine article: Dvn6dc
#
# En sortie:
#       Article OK:
#               Article Tta6dc (domaine ILA=Lnumeris)
#
#       Article ERRONE:
#               Article Tta6dc (domaine ILA=Lnumeris)
#
# HISTORIQUE
#
# LRA - 31/05/2001     Modifications de domaine_PRT et article_PRT pour permettre
#                      l'envoi des articles inefficaces vers le pcode de distribution.
# LRA - 25/06/01       Ajout du champ REJET pour le pcode de distribution
# LRA - 04/07/01	Ajout du champ NORMAL pour recuperer le ZA de NDE apres
#			normalisation.
# LRA - 28/09/01	Traitement des inefficaces dans le pcode de distribution.
# LRA - 31/01/02	FO1255:
# 			Inefficaces sans NDE => Pas de normalisation
# LRA - 18/02/02	FOEX401:
#			pas de normalisation, appel a base de comptage supprime.
# LRA - 14/05/02	FOEX593:
#                       Recuperation du CCD apres appel a la base de comptage
#			pour articles avec code transporteur.
# URS - 28/05/02 	FE1095:
#			Modif. criteres aiguillage des DC allo
# URS - 12/07/02	G1Ry : Specif. V4.5
#			Pas de controle de valorisation pour 8FT/VTG
# URS - 23/09/02	G1R2C2 : Specif. V4.7
#			Pas de controle de valorisation pour allo
#	21/10/2002 - PSA : FO61 : Modif des indices pour ajout CE
# URS - 28/10/2002 - RBE : Specif.4.8 : elimination des DC avec CAX=5
# URS/RBE - 01/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/RBE - 21/10/03	FO437 : recuperation du dede normalise pour la distri
# URS/MCH - 30/10/03	FO457 : correction ajoutChampNum CTT & CCD
# URS/PSA - 15/12/03	Cg : FO517
# URS/RBE - 18/12/03	Mise a jour des codes erreur pour envoi en errone (code rejet)
# URS/PSA - 04/02/03	Cg' : correction de la FO517
# URS/RBE - 13/02/04	Cp : suppression des alarmes inutilisees
# URS/RBE - 04/03/04    Cp : stockage en DIVERS des DC messie avec CAX=5
# URS/RBE - 25/03/04	Inversion dans le code_rejet de efficace et inefficace
# 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/05/04	FO603 : depassement taille max. du NDE qd ajout 16XY
# URS/PSA - 09/07/04	FO750 : gestion du type controle 4 pour appel vers 3001
# URS/PSA - 07/10/04	Cm : FO714  suppression cpt ANO
# URS/THE - 25/11/04	Cn : suppresion service @llo
# URS/RBE - 18/01/05	Cn : FO930:un DC sans cocav n est pas Operateur Tiers
# URS/JLG - 27/04/05	Ch : REJET2 (REJET=2) 10 operateur tiers
# URS/JLG - 18/05/05	Ch : FO 1296
# URS/PSA - 21/07/05	Cj : traitement Mayotte
# URS/PSA - 07/11/05	G2R2Co : prise en compte * et # pour l ajout NORMAL
# URS/FAL - 02/12/05	G2R2Co : FO 1603 pas de BDC si RPVI
# URS/PSA - 11/01/06	G2R2Co : FO 1678 (modif de la FO 1603 suite experimentation)
# THE FAL - 02/06/06	G2R2Cu VGTplus et table ext CodeOffre
# URS/JLG - 27/09/06	G2R2Cv : REJET3 (REJET=3) 12 "numero 119 enfance maltraitee"
# URS/JLG - 14/11/06	G2R2Cv type_cpt=13 valeur possible (rejet4)
# URS/RHE - 12/03/07	G3R0Ca FO2128 (FO2086): duree trop longue 18h en commut et 19h pour PLATINE
# URS/RHE - 19/03/07  G3R0Cb fusion G3R0Cp Portabilite Mobiles (prefixe 600 dans IDAV/NUM)
# URS/JLG - 07/08/07	ParamFTSA-G3R2C0 FO2206 : regression telephone sur ligne SDA (ivolution spec)
# URS/PKH - 06/11/07    G3R3Cv ajout du REJET6 dans le cadre des appels 118 PTD & kiosque
# URS/THE - 07/12/09    G3R15C10 Modif spec CAX = 99
# DECI/DRE - 08/09/11 G3R21C9 QC517 Ajout test sur C_PREF_PORTABILITE_MOBILE2 (509P)
#	06/10/2011 RHE VerifPcode
# DECI/DRE - 01/12/11 G3R23 QC553 DC SU en deprt pour CASPER avec DEDENSUC
# DECI/DRE THE - 23/12/2011 G3R23C2 QC562 creation variable "ret_normila"
# DECI/RHE - 25/01/12 G3R23 QC568 correction utilisation variable "ret_normila"
# DECI/DRE - 21/05/13 G4R3 lot2 cas 03172
# DECI/DRE - 25/03/14 G4R6 : Lot2 prise en compte des nouveaux Type Control envoy?s par la base (C+S )
#
# ---------------------------------------------------------------------------

# Portabilite Mobiles



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

# Definition des types de communication. Cette valeur est retournee par le
# calcul de taxation dans le resultat supplementaire RES_TYPCOM

# Nombre de colonnes dans le tableau de statistiques

# Definition des types de controle de taxation. Cette valeur est retournee
# par le calcul de taxation dans le resultat supplementaire RES_TYPCPT.

#DRE G4R6 lot2
#\DRE G4R6 lot2


# Valeur des codes d'action (collecte temps reel, collecte BM ou recyclage)

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

#////////////////////////////////////////////////////////////
# Codes de consultation des parametres de proc_copo
#////////////////////////////////////////////////////////////

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

# option du domaine d'article validant le calcul du trafic
# XYZ trafic fin

# CCD pour FCT



# Ajout pour module CNET statistiques
# fin ajout CNET

# Test pour FCP sur T3cle (EV458)

# Test presence NDE (EV576)

# Ajout du champ REJET (LRA - 25/06/01)

# Ajout du champ NORMAL (LRA - 04/07/01)
# EV616 : Traitement du champ ZLT

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

# Pour recuperation du dede normalise

# code 'classe de destination'

# PROC_COPO PML+LI 10/08/95 et LI 18/09/95



pt_memo_860025984		= "11111111111111111111111111111"
#typarticle	= "22222222222222222222222222222"
pt_NDE_860025984		= "33333333333333333333333333333333333333333333333333"

pt_NUM_IDAV_860025984 = "351254789523125468731589745681"
pt_PREF_NUM_IDAV_860025984 = "951753"
pt_TEMP_860025984     = "95135778965412317283979461328451"


i_strcpy(pt_NDE_860025984, "")
i_strcpy(pt_NUM_IDAV_860025984, "")
i_strcpy(pt_PREF_NUM_IDAV_860025984, "")
i_strcpy(pt_TEMP_860025984, "")

#####################################################################
# DEBUT DES TRAITEMENTS
#####################################################################
#IFDEF trace_niv1 = 1
trace( "__FILE__:__LINE__ - Debut du traitement" )
#ENDIF

# Initialisation pour REJET et NORMAL
val_REJET_860025984	= 0
# VerifPcode - RHE # val_NORMAL	= -1
type_cpt_860025984	= 0
# EV616 : Traitement du champ ZLT
comptage_zlt_860025984	= 0
result_zlt_860025984	= -1
appel_base_860025984 = 0
beta_860025984	= 0
betav_860025984	= 0
flag_stat_860025984 = 0

# Initialisation des parametres pour Transgroupe (appel interne TGP et
# le reseau general
onnet_860025984       = 0
offnet_860025984      = 0
transgroupe_860025984 = 0

# Detection de la modification g_iartin en g_iartout7
modif_article_860025984 = 0

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

# Initialisation pour le secret du demandeur
secretndr_860025984 = 0
nocodedest_860025984 = 0

# Initialisation du parametre de position du 16XY ou du E
pos_deb_860025984 = 0
CODCIR_860025984  = 0
CODCIRDR_860025984 = 0
lg_NDE_860025984 = 0
# G3R23C2
ret_normila_860025984 = 0


#i_strcpy(typarticle,"")

#####################################################################
# Recup du champ T3cle
#####################################################################

# les DC RPVI_TC sont uniquement pour Symphonie
# La facturation s effectue par le DC du RI
# Ajout de la condition sur NDE

SI i_valid_field_n(g_iartin,$Tta6dc::NDE)
ALORS
	SI ( g_iartin.NDE[0] == 1 )
	&& ( g_iartin.NDE[1] == 5 )
	&& ( g_iartin.NDE[2] == 0 )
	&& ( g_iartin.NDE[3] == 7 )
	ALORS
		cle_860025984 = i_verify_value( g_iartin, "T3cle", 0x47 )

		SI (cle_860025984 == 1)
		ALORS
			code_dest_860025984     = 0xFF
			flag_stat_860025984      = 0
			#trace("xxxxxxx FO1603 RPVI_TC OUI xxxxxxxxxxxxxxxxxxxxx")
			SAUT STOCKE_OK
		FINSI
	FINSI
FINSI

#####################################################################
# Recuperation valeur de la taxe:
#	Soit le niveau T3cap1 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), la duree et le champ SUP (nul dans T3cap1
# car n'existe pas dans ce T3)
#####################################################################

T3cap1_860025984 = i_valid_field_n( g_iartin, $Tta6dc::T3cap1 )
T3cab_860025984  = i_valid_field_n( g_iartin, $Tta6dc::T3cab )

SI T3cap1_860025984 > 0
ALORS
	#trace( "T3cap1 present" )
	#####################################################################
	#	Test 145 : champs T3cap1 et T3cab presents
	#####################################################################
	SI T3cab_860025984 > 0
	ALORS
		#trace( "T3cab present ==> STOCKE_ERRONE" )
		code_rejet_860025984   = 0x50F2
		erreur_860025984       = i_PlvMessEmettre(6725,2,g_iartin,"",2,code_rejet_860025984,typarticle_860025984,0)
		SAUT STOCKE_ERRONE
	FINSI

	#trace( "T3cab absent" )
	ta_860025984     = i_get_art_field(g_iartin,$Tta6dc::TAXE:0)
	CAX_860025984    = i_get_art_field(g_iartin,$Tta6dc::CAX:0)
	TAP_860025984    = i_get_art_field(g_iartin,$Tta6dc::TAP:0)
	duree_860025984  = i_get_art_field(g_iartin,$Tta6dc::DUREE:0)
	SUP_860025984    = 0
SINON
#trace( "T3cap1 absent" )

	#####################################################################
	#	Test 146 : champs T3cap1 et T3cab absents
	#####################################################################
	SI T3cab_860025984 <= 0
	ALORS
		#trace( "T3cab absent ==> STOCKE_ERRONE" )
		code_rejet_860025984   = 0x50F2
		erreur_860025984       = i_PlvMessEmettre(6766,2,g_iartin,"",2,code_rejet_860025984,typarticle_860025984,0)
		SAUT STOCKE_ERRONE
	FINSI

	#trace( "T3cab present" )
	ta_860025984     = i_get_art_field(g_iartin,$Tta6dc::TAXE:1)
	CAX_860025984    = i_get_art_field(g_iartin,$Tta6dc::CAX:1)
	TAP_860025984    = i_get_art_field(g_iartin,$Tta6dc::TAP:1)
	duree_860025984  = i_get_art_field(g_iartin,$Tta6dc::DUREE:1)
	SUP_860025984    = i_get_art_field(g_iartin,$Tta6dc::SUP:1)
FINSI

#trace1(" duree %d ",duree)
SI (duree_860025984 > 0x10B30)
ALORS
	code_rejet_860025984 = 0x5022
	erreur_860025984 = i_PlvMessEmettre(6927,2,g_iartin,"",2,code_rejet_860025984,"Tta6dc",0)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
# CAX = 99
#####################################################################
longueur_860025984 = 0
longueur_860025984 = i_get_art_field(g_iartin, $Tta6dc::L3idus)

SI CAX_860025984 != 99 && longueur_860025984 <= 1
ALORS
	code_rejet_860025984   = 0x5042
	erreur_860025984       = i_PlvMessEmettre(6939,2,g_iartin,"",3,code_rejet_860025984,typarticle_860025984,longueur_860025984)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
# Determination du champ "categorie d'acheminement et de taxation"
#==== (CAX -> categ)
# Ajout conversion CAX=6 en categ=15 pour TGP etendue pour le cas ou
# SUP=0 ou 1. Autres cas de valeur de SUP pour CAX=6 et autre cas de
# valeur de CAX (4 ou 5 pour GSM) erreur car dans ces cas comm Numeris
# Ajout conversion CAX=4 en categ=0
#####################################################################
#
SI ((CAX_860025984 == 1) || (CAX_860025984 == 4) || (CAX_860025984 == 7))
ALORS
	categ_860025984 = 0
	SAUT FIN_CAX
FINSI

SI CAX_860025984 == 2
ALORS
	categ_860025984 = 3
	SAUT FIN_CAX
FINSI

SI CAX_860025984 == 3
ALORS
	categ_860025984 = 8
	SAUT FIN_CAX
FINSI

SI CAX_860025984 == 6
ALORS
	SI ((SUP_860025984 == 0) || (SUP_860025984 == 1))
	ALORS
		categ_860025984 = 15
		#transgroupe = 1
		SAUT FIN_CAX
	FINSI
FINSI

#####################################################################
# CAX = 5 ==> DC stocke en divers
#####################################################################
SI CAX_860025984 == 5 || CAX_860025984 == 99
ALORS
	SAUT STOCKE_DIV
FINSI

#####################################################################
#	Test 149 : champ CAX !=1, 2, 3, 4, 5, 6
#####################################################################

#trace( "Test 149 : champ CAX !=1, 2, 3, 4, 6 ==> STOCKE_ERRONE" )
SI TAP_860025984 & 0x40
ALORS
	code_rejet_860025984   = 0x5040
SINON
	code_rejet_860025984   = 0x5041
FINSI

erreur_860025984       = i_PlvMessEmettre(6728,2,g_iartin,"",3,code_rejet_860025984,typarticle_860025984,CAX_860025984)

SAUT STOCKE_ERRONE

#  ===================================================================
POINT FIN_CAX
#  ===================================================================

###########################################################################
# 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_860025984 = i_get_art_field(g_iartin, $Tta6dc::DATE)
SCT_860025984 = 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_860025984 & 0x60) == 0x00)
ALORS
	#trace("DATE = heure de fin de comm : conversion en debut de comm")
	sdate_860025984 = sdate_860025984 - duree_860025984
	erreur_860025984 = i_set_art_date(g_iartin,sdate_860025984)
	g_iartin.SCT = (SCT_860025984 | 0x20)
	SAUT FIN_SCT
FINSI

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

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

#trace( "Test 151 : bits BC champ SCT != 00, 01 ==> STOCKE_ERRONE" )
SI TAP_860025984 & 0x40
ALORS
	code_rejet_860025984   = 0x5040
SINON
	code_rejet_860025984   = 0x5041
FINSI

erreur_860025984       = i_PlvMessEmettre(6730,2,g_iartin,"",3,code_rejet_860025984,typarticle_860025984,SCT_860025984)

SAUT STOCKE_ERRONE

# =====================================================================
POINT FIN_SCT
# =====================================================================

#####################################################################
#	Determination de la date de stockage en heure de fin
#####################################################################
stocke_date_860025984 = 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
###########################################################################
STY_860025984 = g_iartin.STY

SI ( (STY_860025984 & 0x40) == 0x40 )
ALORS
	#trace("Article Transgroupe")
	transgroupe_860025984 = 1
	SAUT FIN_STY
FINSI

#####################################################################
#	Test 156 : bits F champ STY != 0
#####################################################################

SI ( (STY_860025984 & 0x04) != 0x00 )
ALORS
	#trace( "(STY & 0x04) != 0x00 ==> STOCKE_ERRONE" )
	SI TAP_860025984 & 0x40
	ALORS
		code_rejet_860025984   = 0x5040
	SINON
		code_rejet_860025984   = 0x5041
	FINSI
	erreur_860025984       = i_PlvMessEmettre(6732,2,g_iartin,"",3,code_rejet_860025984,typarticle_860025984,STY_860025984)
	SAUT STOCKE_ERRONE
FINSI

POINT FIN_STY

#####################################################################
#	Test 158 : bit B champ TAP == 1 (inefficace)
#####################################################################

SI TAP_860025984 & 0x40
ALORS
	# Inefficaces => pas de normalisation, pas d appel a la base de comptage.
	trace("Article inefficace: absence de normalisation et d appel a la base de comptage")
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test : champs NDE absent si non ineff (EV576)
#####################################################################
nde_860025984 = i_valid_field_n( g_iartin, $Tta6dc::NDE )

SI ( nde_860025984 == 0 )
ALORS
	#trace( "nde == 0 ==> STOCKE_ERRONE" )
	code_rejet_860025984   = 0x5041
	erreur_860025984       = i_PlvMessEmettre(6932,2,g_iartin,"",2,code_rejet_860025984,typarticle_860025984,0)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test : champs NDE superieur a la taille max. - 2
#####################################################################
isizeNDE_860025984 = g_iartin.NDE!NELEM
trace1("taille NDE : %d",isizeNDE_860025984)

SI (isizeNDE_860025984 > 26)
ALORS
	code_rejet_860025984   = 0x5051
	erreur_860025984       = i_PlvMessEmettre(6731,2,g_iartin,"",1,code_rejet_860025984,0,0)
	SAUT STOCKE_ERRONE
FINSI

#==== Affectation du champ "TAXE"
#==== (la date est forcement une date de debut de comm)

SCT_860025984 = SCT_860025984 & 0x06

# ==== cas champ SCT: sans incrementation compteur
#
SI SCT_860025984 == 0x02
ALORS
	SI ( transgroupe_860025984 == 1 )
	ALORS
		#trace( "SCT == 0x02 et transgroupe == 1 ==> STOCKE_ERRONE" )
		code_rejet_860025984   = 0x5041
		erreur_860025984       = i_PlvMessEmettre(6733,2,g_iartin,"",2,code_rejet_860025984,typarticle_860025984,0)
		SAUT STOCKE_ERRONE
	FINSI

	SAUT FIN_CODE
FINSI

# ==== cas champ SCT: sans incrementation compteur et sans calcul de taxe

SI SCT_860025984 == 0x00
ALORS
	SI (transgroupe_860025984 == 1)
	ALORS
		#trace( "SCT == 0x00 et transgroupe == 1 ==> STOCKE_ERRONE" )
		code_rejet_860025984   = 0x5041
		erreur_860025984       = i_PlvMessEmettre(6734,2,g_iartin,"",2,code_rejet_860025984,typarticle_860025984,0)
		SAUT STOCKE_ERRONE
	FINSI
	SAUT FIN_CODE
FINSI

# ==== cas champ SCT: incrementation compteur ET sans calcul de taxe

SI SCT_860025984 == 0x04
ALORS
	#trace( "SCT == 0x04 ==> STOCKE_ERRONE" )
	code_rejet_860025984   = 0x5041
	erreur_860025984       = i_PlvMessEmettre(6735,2,g_iartin,"",2,code_rejet_860025984,typarticle_860025984,0)
	SAUT STOCKE_ERRONE
FINSI

# ====================================================================
POINT FIN_CODE
# ====================================================================

#
#==== Determination du champ "type d'appel"
#==== Si bit b = 1 => article inefficace (a stocker en PRT)
#
#==== Si bits a = 0 et c = 0 => appel normal (type = 0)
#==== Si bits a = 0 et c = 1 => conference A-C (type = 2)
#==== Si bits a = 1 et c = 0 => renvoye B-C (type = 1)
#==== Si bits a = 1 et c = 1 => erreur

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

SI ( (TAP_860025984 & 0xa0)  == 0xa0 )
ALORS
	#trace( "(TAP & 0xa0)  == 0xa0 ==> STOCKE_ERRONE" )
	code_rejet_860025984   = 0x5041
	erreur_860025984       = i_PlvMessEmettre(6736,2,g_iartin,"",2,code_rejet_860025984,typarticle_860025984,0)
	SAUT STOCKE_ERRONE
FINSI

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

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

SI ta_860025984 > S1_860025984
ALORS
	#trace( "ta > S1 ==> STOCKE_ERRONE" )
	code_rejet_860025984   = 0x5031
	erreur_860025984       = i_PlvMessEmettre(6737,2,g_iartin,"",3,code_rejet_860025984,typarticle_860025984,ta_860025984)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	 Article Mayotte expe : - NDR commence par 269
#                               - NDE sur 6 digits et commence par 6
#                               - appel non transgroupe
#####################################################################

SI i_valid_field_n(g_iartin,$Tta6dc::NDE)
ALORS
	erreur_860025984 = i_get_art_str(g_iartin,$Tta6dc::NDE, pt_NDE_860025984)
	lg_NDE_860025984 = i_strlen(pt_NDE_860025984)

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

#####################################################################
#	 Article Transgroupe
#####################################################################

SI (transgroupe_860025984 == 1)
ALORS
	#trace("traitement Article Transgroupe")

#####################################################################
#	Cas Transgroupe	avec utilisation de g_iartin
#####################################################################
#	Appel offnet : NDE debutant par 0 ou 036510AB ou 031720AB ou 0*31* ou * ou #
#					(services)
#	Appel onnet : NDE ne debutant pas par 0 ou 03651AB ou 03172AB 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_860025984 = 1
#		Enlever le 0 pour appel a i_comptage
			pos_deb_860025984 = i_supp_quart_name("NDE",0,1,15,g_iartin,g_iartout7)
			modif_article_860025984 = 1
		SINON
#DRE G4R3 lot2 cas 03172
#	Ici on a des appels debutant par 03 (pour 03651 ou 03172) 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] == 0x3) && (g_iartin.NDE[2] == 0x1) &&
			(g_iartin.NDE[3] == 0x7) && (g_iartin.NDE[4] == 0x2))
			
			|| ((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 03172 ou 0*31*
				SI (g_iartin.NDE[5] == 0x0)
				ALORS
#			appel commencant par 036510ABPQ ou 031720 ou 0*31*0ABPQ
#				trace("Transgroupe offnet : suppression de '036510' ou de '0*31*0'")
					offnet_860025984 = 1
#				Enlever 036510 ou 031720 ou 0*31*0 pour appel a i_comptage
					pos_deb_860025984 = i_supp_quart_name("NDE",0,6,15,
					g_iartin,g_iartout7)
					modif_article_860025984 = 1
				SINON
#			appel commencant par 03651ABPQ ou 03172ABPQ ou 0*31*ABPQ
#				trace("Transgroupe onnet")
					onnet_860025984 = 1
				FINSI
			SINON
#		appel commencant par 03BPQ (et different de 03651 ou 03172 ) ou 0*BPQ
#		(et different de 0*31*)
#			trace("Transgroupe offnet : suppression du '0'")
				offnet_860025984 = 1
#			Enlever le 0 pour appel a i_comptage
				pos_deb_860025984 = i_supp_quart_name("NDE",0,1,15,g_iartin,g_iartout7)
				modif_article_860025984 = 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_860025984 = 1
			onnet_860025984 = 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_860025984 = 1
		FINSI
	FINSI

SINON
# trace("traitement Secret du Demandeur")
#####################################################################
#	Cas secret du demandeur	avec utilisation de g_iartin
#####################################################################
#DRE G4R3 lot2 cas 03172
# Detection 3651 ou 3172 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] == 0x3) && (g_iartin.NDE[1] == 0x1)
			&& (g_iartin.NDE[2] == 0x7) && (g_iartin.NDE[3] == 0x2))
	
		|| ((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 '3172' ou de '*31*'")
		secretndr_860025984 = 1
#	Enlever 3651 ou 3172 (ou *31*) pour appel a i_comptage
		pos_deb_860025984 = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
		modif_article_860025984 = 1
	FINSI
#\DRE G4R3 lot2 cas 03172

FINSI

#
# Seuls les articles Transgroupe onnet et allo sont stockes sans
# controle de valorisation
#
SI ( onnet_860025984 == 1 )
ALORS
#IFDEF trace_niv2 = 1
	#trace( " Tta6dc - Article Transgroupe onnet : stockage en OK" )
#ENDIF
	nocodedest_860025984 = 1
	SAUT STOCKE_OK
FINSI

#  Traitement specifique pour les cas ETSI national et internationnal
#####################################################################
SI ( modif_article_860025984 == 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_860025984 = 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_860025984 = 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_860025984 = i_add_quart_name("NDE",0,15,"0",g_iartin,g_iartout7)
		modif_article_860025984 = 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_860025984 = i_add_quart_name("NDE",0,15,"00",g_iartin,g_iartout7)
			modif_article_860025984 = 1
		FINSI
	FINSI
FINSI
#####################################################################
# 	SELECTION DU TRANSPORTEUR
#####################################################################
# Test de la presence du champ BETA et BETAV dans l'article (present si beta > 0)
beta_860025984 = i_valid_field_n(g_iartin,$Tta6dc::BETA)
betav_860025984 = i_valid_field_n(g_iartin,$Tta6dc::BETAV)

# trace("traitement du numero demande")
SI ( modif_article_860025984 == 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_860025984>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_860025984 = 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[0]
		g_iartout7.NDE[3] = g_iartout7.BETAV[1]
	SINON
		SI ((betav_860025984 <= 0 ) && (g_iartout7.NDE[0] == 0x1) && (g_iartout7.NDE[1] == 0x6))
		ALORS
			SI !( (g_iartout7.NDE[2] ==0) && (g_iartout7.NDE[3] ==8) )
			ALORS
				#trace("suppression du 16XY different de 08")
				pos_deb_860025984 = i_supp_quart_name("NDE",0,4,15,g_iartout7,g_iartout7)
			FINSI
		FINSI
	FINSI
SINON
#####################################################################
#	SELECTION DU TRANSPORTEUR avec utilisation g_iartin
#####################################################################
#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_860025984>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_860025984 = 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_860025984 = 1
	SINON
		SI ((betav_860025984 <= 0 ) && (g_iartin.NDE[0] == 0x1) && (g_iartin.NDE[1] == 0x6))
		ALORS
			SI !( (g_iartin.NDE[2]==0) && (g_iartin.NDE[3]==8) )
			ALORS
				#trace("suppression du 16XY different de 08")
				pos_deb_860025984 = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
				modif_article_860025984 = 1
			FINSI
		FINSI
	FINSI
FINSI

#####################################################################
# 	             G3R0Cp Portabilite Mobiles
#
#  SI IDAV/NUM commence par 600
#  Envoi de l'IDAV/NUM complet (sans normalisation) a la BNC
#  pour recuperer le CCD de l'operateur mobile demande
#  FO2206 modifiee G3R2
res_860025984 = 0

SI i_valid_field_n(g_iartin,$Tta6dc::INF_IDAV)
ALORS
	res_860025984 = i_get_art_field(g_iartin, $Tta6dc::INF_IDAV)
FINSI
bPortabilite_mobile_860025984 = 0

SI i_valid_field_n(g_iartin,$Tta6dc::NUM_IDAV)
ALORS
	erreur_860025984 = i_get_art_str(g_iartin, $Tta6dc::NUM_IDAV, pt_NUM_IDAV_860025984)
	# prefixes sur 3 digits
	i_get_sub_str(pt_NUM_IDAV_860025984, 0, 2, pt_PREF_NUM_IDAV_860025984)
	SI ( ( i_strcmp(pt_PREF_NUM_IDAV_860025984, C_PREF_PORTABILITE_MOBILE_860025984) == 0 || i_strcmp(pt_PREF_NUM_IDAV_860025984, C_PREF_PORTABILITE_MOBILE2_860025984) == 0 )  &&  res_860025984 == 2 )
	ALORS
		bPortabilite_mobile_860025984 = 1
	FINSI
FINSI
#trace1(" *************** bPortabilite_mobile = %d", bPortabilite_mobile)

#####################################################################
# 	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_860025984 == 1 )
ALORS
#IFDEF trace_niv1 = 1
	trace( "Normalisation des NDEUR/NDE avec g_iartout7" )
#ENDIF
	#QC568
	ret_normila_860025984 = i_normal_dila( g_iartout7, $Tta6dc::NDR, $Tta6dc::NDE, "LDnumeris", "",
	g_icopo, $Tcopo::NDR, $Tcopo::NDE, 3, AUT_NDEUR_860025984, AUT_NDE_860025984 )
SINON
#IFDEF trace_niv1 = 1
	trace( "Normalisation des NDEUR/NDE avec g_iartin" )
#ENDIF
	ret_normila_860025984 = i_normal_dila( g_iartin, $Tta6dc::NDR, $Tta6dc::NDE, "LDnumeris", "",
	g_icopo, $Tcopo::NDR, $Tcopo::NDE, 3, AUT_NDEUR_860025984, AUT_NDE_860025984 )
FINSI

#####################################################################
#   Test 112 : normalisation NDR ou NDE impossible
#####################################################################
SI ret_normila_860025984 < 0
ALORS
#IFDEF trace_niv1 = 1
	trace( "Tta6dc - Erreur de normalisation ==> STOCKE_ERRONE" )
#ENDIF
	code_rejet_860025984   = 0x5011
	erreur_860025984       = i_PlvMessEmettre(6738,2,g_iartin, "",3,code_rejet_860025984,typarticle_860025984,g_ierrno)
	SAUT STOCKE_ERRONE
FINSI

#G3R23 QC553
erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4dedensuc,$Tta6dc::DEDENSUC,0)
indice_860025984 = 0
POINT BOUCLE_DEDENSUC
res_860025984 = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice_860025984)
#trace1(" element : %x",res)

SI (res_860025984 != 00)
ALORS

	# Cas particuliers : * (2A en ASCII) et # (23 en ASCII)

	SI (res_860025984 == 0x2a)
	ALORS
		erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::DEDENSUC, indice_860025984, 0xB)
		indice_860025984 = indice_860025984 + 1
		SAUT BOUCLE_DEDENSUC
	FINSI

	SI (res_860025984 == 0x23)
	ALORS
		erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::DEDENSUC, indice_860025984, 0xC)
		indice_860025984 = indice_860025984 + 1
		SAUT BOUCLE_DEDENSUC
	FINSI

	# Cas generique
	erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::DEDENSUC, indice_860025984, res_860025984-0x30)
	indice_860025984 = indice_860025984 + 1
	SAUT BOUCLE_DEDENSUC
SINON
	erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::DEDENSUC, indice_860025984, 0xFF)
FINSI

# On test le retour de la normalisation
# si on a une selection du transporteur en 16XY ou en EZAB (E!=8)
SI ( ret_normila_860025984 == RET_SELTRANS_860025984 )
ALORS
#IFDEF trace_niv1 = 1
	trace( "Tta6dc - Article avec selection du transporteur non FT" )
#ENDIF
	seltrans_860025984    = 1
	flag_stat_860025984   = 1
	code_dest_860025984   = 0xFE
FINSI
# sinon
# selection transporteur FT (par EZAB avec E=8) ou pas de sel. trans.
# On effectue un calcul de valorisation.

test_E8_860025984=0

SI ( ret_normila_860025984 == RET_SELTRANS_FT_860025984 )
ALORS
	test_E8_860025984=1
FINSI

#IFDEF trace_niv1 = 1
trace1( "Fin de la normalisation et Calcul de valorisation retour = %d", erreur_860025984 )
#ENDIF

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

g_icopo.TAXE   = 0
g_icopo.CREDIT = 0
erreur_860025984 = i_set_art_date( g_icopo, sdate_860025984 )
g_icopo.DUREE  = duree_860025984
g_icopo.CODE   = CODE_TELEPHONE_860025984
g_icopo.CATEG  = categ_860025984
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

# si Portabilite Mobiles, appel BNC avec IDAV/NUM non normalise
SI bPortabilite_mobile_860025984 == 1
ALORS
	lg_860025984 = i_strlen(pt_NUM_IDAV_860025984)
	erreur_860025984 = i_format_str2(pt_TEMP_860025984, "%s%s", "0", pt_NUM_IDAV_860025984)
	erreur_860025984 = i_memcpy_art_field_n(g_icopo, $Tcopo::NDE, pt_TEMP_860025984, lg_860025984+2)
	#trace2(" *************** Tcopo:NDE = <%s>", pt_TEMP, " ")
FINSI

#	PROC_COPO PML+LI 10/08/95 et LI 18/09/95
#	Memorisation des parametres de PROC_COPO
pt_memo_860025984 = i_init_tax_param()

cr_860025984 = i_comptage( g_icopo, BASE_TELEPHONE_860025984, sdate_860025984 )
appel_base_860025984 = 1

# EV616 : Traitement du champ ZLT
comptage_zlt_860025984 = 1


# typcom
SI ( cr_860025984 == 0)
ALORS
	typcom_860025984 = g_icopo.SUP[RES_TYPCOM_860025984]
	#trace1(" #### typcom <%d> ",typcom )
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4typcom,$Tta6dc::typcom,0)
	erreur_860025984 = i_set_art_field( g_iartin, $Tta6dc::typcom, typcom_860025984 )
FINSI

#####################################################################
#	Test 6 : calcul taxe impossible
#####################################################################
SI ( (cr_860025984 != 0) && !(TAP_860025984 & 0x40) )
ALORS
	SI ( (g_ierrno == 1100) && (seltrans_860025984 == 1) )
	ALORS
		#EV616 : On force la valeur du T4ZLT a 1
		result_zlt_860025984 = 1
		SAUT STOCKE_OK
	FINSI

#IFDEF trace_niv2 = 1
	trace(  "Test 6 (cr != 0) && !(TAP & 0x40) et ! ( (g_ierrno == 1100) && (seltrans == 1) ) ==> STOCKE_ERRONE" )
	trace3( "Test 6 cr = %d, TAP %d, seltrans =%d", cr_860025984, TAP_860025984, seltrans_860025984 )
	trace1( "Test 6 g_ierrno = %d", g_ierrno )
#ENDIF
	code_rejet_860025984   = 0x5021
	erreur_860025984       = i_PlvMessEmettre(6739,2,g_iartin,"",3,code_rejet_860025984,typarticle_860025984,g_ierrno)
	SAUT STOCKE_ERRONE
FINSI

#    stocke_date - initialisee avant test 4
#    apres modif SCT deb comm g_iartin
type_cpt_860025984 = g_icopo.SUP[RES_TYPCPT_860025984]

# MAJ des code de circonscription de dde et ddeur
CODCIRDR_860025984 = g_icopo.SUP[RES_CODCIRDR_860025984]
CODCIR_860025984 = g_icopo.SUP[RES_CODCIR_860025984]

#IFDEF trace_niv1 = 1
trace1( "Tta6dc - Valeur de seltrans = %d", seltrans_860025984 )
#ENDIF

## Maj CCD - FOEX 593 - 14/05/2002.
code_dest_860025984 = g_icopo.SUP[RES_CLDEST_860025984]

SI ( (seltrans_860025984 == 1) && (code_dest_860025984 != CCD_FCT_860025984) )
ALORS
	code_dest_860025984   = 0xFE
FINSI

#IFDEF trace_niv1 = 1
trace1( "__FILE__:__LINE__ - Valeur de code_dest = %d", code_dest_860025984 )
#ENDIF
# REJET2

# DRE G4R6 Lot2
#SI ((type_cpt == CPT_REJET) || (type_cpt == CPT_SYMPHO) || (type_cpt == CPT_REJET2) || (type_cpt == CPT_REJET3) || (type_cpt ==  CPT_REJET6 ))
SI ( (type_cpt_860025984==CPT_CPS_Loc_860025984) || (type_cpt_860025984==CPT_CPS_RI_860025984) || (type_cpt_860025984 == CPT_REJET_860025984) || (type_cpt_860025984 == CPT_SYMPHO_860025984) || (type_cpt_860025984 == CPT_REJET2_860025984) || (type_cpt_860025984 == CPT_REJET3_860025984) || (type_cpt_860025984 ==  CPT_REJET6_860025984 ) )
ALORS
	flag_stat_860025984 = 1
	SAUT STOCKE_OK
FINSI

SI (seltrans_860025984 == 1)
ALORS
	SAUT STOCKE_OK
FINSI

# Test de detection des donnees FCP et allo
INF_DEDE_860025984 = i_get_art_field( g_iartin, $Tta6dc::INF_DEDE )

# Teste qu'au moins une valeur de T3cle vaut 0x01
cle_860025984 = i_verify_value( g_iartin, "T3cle", 0x01 )

SI ( cle_860025984 == 1 )
ALORS
	code_dest_860025984     = g_icopo.SUP[RES_CLDEST_860025984]
	flag_stat_860025984      = 1
	SAUT STOCKE_OK
FINSI
#IFDEF trace_niv1 = 1
trace1( "Tta6dc - Valeur de code_dest = %d", code_dest_860025984 )
#ENDIF

#	On conserve le type de traffic
#	code_dest = g_icopo.SUP[RES_CLDEST]

# Ajout pour module CNET statistiques
flag_stat_860025984 = 1

#####################################################################
# 	test : TAP/G = 1
#####################################################################
# Test si l'article porte la marque <abonne demande non taxe> :
# Si oui, stockage sans controle de valorisation et de modification
# du champ taxe.
#####################################################################

SI ((TAP_860025984 & 0x02)  == 0x02)
ALORS
	#trace("TAP/g = 1 : <abonne demande non taxe> : stockage en OK")
	SAUT STOCKE_OK
FINSI
#####################################################################

SI (test_E8_860025984==1)
ALORS
	SI ((CAX_860025984==4 )|| (CAX_860025984==7))
	ALORS
		flag_stat_860025984=1
		SAUT STOCKE_OK
	FINSI
FINSI

#trace("Controle de la valorisation")
#####################################################################
#	Taxe calculee et aiguillage selon type de comptage
#####################################################################
tc_860025984 = g_icopo.TAXE

SI type_cpt_860025984 == CPT_IMPOSE_860025984
ALORS
	SAUT MAJ_TAXCAL
FINSI

# ==== Indication controle ou simple calcul de taxation
# ==== - bit g de SCT == 0 , simple calcul
# ==== - autre, controle

# On teste si le champ de taxes de l'article est renseigne par l'EEC

SI (SCT_860025984 & 0x02) == 0
ALORS
#####################################################################
#   Test 127 : pas de taxe annoncee, cas du controle EGALITE
#			on stocke avec TC
#####################################################################
	SI type_cpt_860025984 == CPT_EGAL_860025984
	ALORS
		SAUT MAJ_TAXE
	FINSI

#####################################################################
#   Test 128, 129, 130 et 131 : pas de taxe annoncee, cas des controles
#           autres que REJET ou EGALITE
#####################################################################
#IFDEF trace_niv2 = 1
	trace( "Test 128, 129, 130 et 131 ==> STOCKE_ERRONE" )
#ENDIF
	code_rejet_860025984   = 0x5031
	erreur_860025984       = i_PlvMessEmettre(6740,2,g_iartin,"",2,code_rejet_860025984,type_cpt_860025984,0)
	SAUT STOCKE_ERRONE
FINSI

SI type_cpt_860025984 == CPT_EGAL_860025984
ALORS
	SAUT CONTROLE_EGAL
FINSI

SI type_cpt_860025984 == CPT_MAX_860025984
ALORS
	SAUT CONTROLE_MAX
FINSI

SI type_cpt_860025984 == CPT_MAX_NOMODIF_860025984
ALORS
	SAUT CONTROLE_MAX_NOMODIF
FINSI
# type_cpt=13 valeur possible (rejet4)

SI ((type_cpt_860025984 == CPT_NOT_860025984) || ((type_cpt_860025984 > 5) && (type_cpt_860025984 < 14)))
ALORS
	SAUT STOCKE_OK
SINON
#####################################################################
#   Test 104 : type de controle inconnu
#####################################################################
#IFDEF trace_niv2 = 1
	trace( "Test 104 : type de controle inconnu ==> STOCKE_ERRONE" )
#ENDIF
	code_rejet_860025984   = 0x5031
	erreur_860025984       = i_PlvMessEmettre(6741,2,g_iartin,"",2,code_rejet_860025984,type_cpt_860025984,0)
	SAUT STOCKE_ERRONE
FINSI

#====================================================================
#======================== CONTROLE EGALITE ==========================
#====================================================================

POINT CONTROLE_EGAL

SI tc_860025984 == ta_860025984
ALORS
#####################################################################
#	Test 7 : TA = TC et DA != 0 (cas normal)
#####################################################################

	SI duree_860025984 != 0
	ALORS
		SAUT STOCKE_OK
	FINSI

#####################################################################
#		Cas TC=TA (DA=0) : Calcul de TR avec DA=1
#####################################################################

	g_icopo.TAXE   = 0
	g_icopo.CREDIT = 0
	g_icopo.DUREE  = 1
	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
	cr_860025984 = i_comptage(g_icopo,BASE_TELEPHONE_860025984,sdate_860025984)
	tr_860025984 = g_icopo.TAXE

#####################################################################
#	test 8A1 : DA = 0, TA = TC = TR recalculee avec D = 1 (cas normal)
#####################################################################

	SI tr_860025984 == ta_860025984
	ALORS
		SAUT STOCKE_OK
	FINSI

#####################################################################
#	test 8A2 : DA = 0, TA = TC != TR recalculee avec D = 1
#####################################################################

#IFDEF trace_niv2 = 1
	trace( "test 8A2 : DA = 0, TA = TC != TR recalculee avec D = 1 ==> STOCKE_ERRONE" )
#ENDIF
	code_rejet_860025984   = 0x5031
	erreur_860025984       = i_PlvMessEmettre(6742,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tr_860025984)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	A partir de la, on a TC != TA (pour ce type de controle)
#####################################################################

SI duree_860025984 == 0
ALORS

#####################################################################
#	Test 8B: DA = 0, TA = 0 et TC != 0
#####################################################################

#IFDEF trace_niv2 = 1
	trace( "Test 8B: DA = 0, TA = 0 et TC != 0 ==> STOCKE_ERRONE" )
#ENDIF
	SI (ta_860025984 == 0) && (tc_860025984 != 0)
	ALORS
		code_rejet_860025984   = 0x5031
		erreur_860025984       = i_PlvMessEmettre(6743,2,g_iartin,"",2,code_rejet_860025984,tc_860025984,0)
		SAUT STOCKE_ERRONE
	FINSI

#####################################################################
#	Test 8C : DA = 0, TA = 1 et TC = 0
#####################################################################

	SI (ta_860025984 == 1) && (tc_860025984 == 0)
	ALORS
#IFDEF trace_niv2 = 1
		trace( "Test 8C : DA = 0, TA = 1 et TC = 0 ==> STOCKE_ERRONE" )
#ENDIF
		code_rejet_860025984   = 0x5031
		erreur_860025984       = i_PlvMessEmettre(6724,2,g_iartin,"",1,code_rejet_860025984,0,0)
		SAUT STOCKE_ERRONE
	FINSI

#####################################################################
#	Test 8D : DA = 0, TA >= 1 et TC != 0
#####################################################################

	SI (ta_860025984 >= 1) && (tc_860025984 != 0)
	ALORS
#IFDEF trace_niv2 = 1
		trace( "Test 8D : DA = 0, TA >= 1 et TC != 0 ==> STOCKE_ERRONE" )
#ENDIF
		code_rejet_860025984   = 0x5031
		erreur_860025984       = i_PlvMessEmettre(6744,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
		SAUT STOCKE_ERRONE
	FINSI

#####################################################################
#	Test 8E : DA = 0, TA > 1 et TC = 0
#####################################################################

	SI (ta_860025984 > 1) && (tc_860025984 == 0)
	ALORS
#IFDEF trace_niv2 = 1
		trace( "Test 8E : DA = 0, TA > 1 et TC = 0 ==> STOCKE_ERRONE" )
#ENDIF
		code_rejet_860025984   = 0x5031
		erreur_860025984       = i_PlvMessEmettre(6745,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
		SAUT STOCKE_ERRONE
	FINSI
SINON
#####################################################################
#	Test 8F : DA != 0, TA == 0 et TC != 0
#####################################################################

	SI (ta_860025984 == 0) && (tc_860025984 != 0)
	ALORS
#IFDEF trace_niv2 = 1
		trace( "Test 8F : DA != 0, TA == 0 et TC != 0 ==> STOCKE_ERRONE" )
#ENDIF
		code_rejet_860025984   = 0x5031
		erreur_860025984       = i_PlvMessEmettre(6746,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
		SAUT STOCKE_ERRONE
	FINSI

#####################################################################
#	Test 8G : DA != 0, TA != 0 et TC = 0
#####################################################################

	SI (ta_860025984 != 0) && (tc_860025984 == 0)
	ALORS
#IFDEF trace_niv2 = 1
		trace( "Test 8G : DA != 0, TA != 0 et TC = 0 ==> STOCKE_ERRONE" )
#ENDIF
		code_rejet_860025984   = 0x5031
		erreur_860025984       = i_PlvMessEmettre(6747,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

#####################################################################
#	Test 9A/9B: (TC < TA) && (TA <= TC + S4) et recalcul avec DA + 1
#####################################################################

SI ((tc_860025984 < ta_860025984) && (ta_860025984 <= tc_860025984 + S4_860025984))
ALORS
	dr_860025984 = duree_860025984 + 1
	g_icopo.TAXE   = 0
	g_icopo.CREDIT = 0
	g_icopo.DUREE  = dr_860025984
	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
	cr_860025984 = i_comptage(g_icopo, BASE_TELEPHONE_860025984, sdate_860025984)
	tr_860025984 = g_icopo.TAXE
	SI (ta_860025984 == tr_860025984)
	ALORS

#####################################################################
#	Test 9A: (TC < TA) && (TA <= TC + S4) et TA = TC recalcule DA + 1
#####################################################################

		SAUT STOCKE_OK
	SINON

#####################################################################
#	Test 9B: : (TC < TA) && (TA <= TC + S4) et TA != TC recalcule DA + 1
#####################################################################

		SAUT STOCKE_OK
	FINSI
FINSI

#####################################################################
#	Test 9C/9D/9E/9F: (TC - S4 =< TA) && (TA < TC) et tests sur Q et P
#####################################################################

SI ( (tc_860025984 - S4_860025984 <= ta_860025984) && (ta_860025984 < tc_860025984) )
ALORS
	P_860025984 = i_get_tax_param(pt_memo_860025984, COD_P_860025984, 0)
	Q_860025984 = i_get_tax_param(pt_memo_860025984, COD_Q_860025984, 0)

#####################################################################
#	Test 9C: (TC - S4 =< TA) && (TA < TC), Q = 0, P != 0
#####################################################################

	SI ((Q_860025984 == 0) && (P_860025984 != 0))
	ALORS
		SAUT STOCKE_OK
	FINSI

#####################################################################
#	Test 9D: (TC - S4 =< TA) && (TA < TC), Q != 0, P = 0
#####################################################################

	SI ((Q_860025984 != 0) && (P_860025984 == 0))
	ALORS
		SAUT STOCKE_OK
	FINSI

#####################################################################
#	Test 9E: (TC - S4 =< TA) && (TA < TC), Q != 0, P != 0, TA <= Q
#####################################################################

	SI ((Q_860025984 != 0) && (P_860025984 != 0) && (ta_860025984 <= Q_860025984))
	ALORS
		SAUT STOCKE_OK
	FINSI

#####################################################################
#	Test 9F: (TC - S4 =< TA) && (TA < TC), Q != 0, P != 0, TA > Q
#####################################################################

	SI ((Q_860025984 != 0) && (P_860025984 != 0) && (ta_860025984 > Q_860025984))
	ALORS
		SAUT STOCKE_OK
	FINSI
FINSI

#####################################################################
#	Test 10: TC/S2 <= TA < TC-S4 et tests sur valeurs Q et P
#####################################################################

SI ( ((tc_860025984*100) <= (ta_860025984*S2_860025984)) && (ta_860025984 < (tc_860025984-S4_860025984)) )
ALORS
	P_860025984 = i_get_tax_param(pt_memo_860025984, COD_P_860025984, 0)
	Q_860025984 = i_get_tax_param(pt_memo_860025984, COD_Q_860025984, 0)

#####################################################################
#	Test 10A: TC/S2 <= TA < TC-S4, Q = 0, P != 0
#####################################################################

	SI ((Q_860025984 == 0) && (P_860025984 != 0))
	ALORS
		erreur_860025984 = i_PlvMessEmettre(6748,2,g_iartin,"",2,ta_860025984,tc_860025984,0)
		SAUT STOCKE_OK
	FINSI

#####################################################################
#	Test 10B: TC/S2 <= TA < TC-S4, Q != 0, P = 0
#####################################################################

	SI ((Q_860025984 != 0) && (P_860025984 == 0))
	ALORS
		erreur_860025984 = i_PlvMessEmettre(6749,2,g_iartin,"",2,ta_860025984,tc_860025984,0)
		SAUT STOCKE_OK
	FINSI

#####################################################################
#	Test 10C: TC/S2 <= TA < TC-S4, Q != 0, P != 0, TA <= Q
#####################################################################

	SI ((Q_860025984 != 0) && (P_860025984 != 0) && (ta_860025984 <= Q_860025984))
	ALORS
		erreur_860025984 = i_PlvMessEmettre(6750,2,g_iartin,"",2,ta_860025984,tc_860025984,0)
		SAUT STOCKE_OK
	FINSI

#####################################################################
#	Test 10D: TC/S2 <= TA < TC-S4, Q != 0, P != 0, TA > Q
#####################################################################

	SI ((Q_860025984 != 0) && (P_860025984 != 0) && (ta_860025984 > Q_860025984))
	ALORS
		erreur_860025984 = i_PlvMessEmettre(6751,2,g_iartin,"",2,ta_860025984,tc_860025984,0)
		SAUT STOCKE_OK
	FINSI
FINSI

#####################################################################
#	Test 11: TC+S4 < TA <= TCxS2
#####################################################################
SI ( ( (tc_860025984+S4_860025984) < ta_860025984 ) && ( (ta_860025984*100) <= (tc_860025984*S2_860025984) ) )
ALORS
	erreur_860025984 = i_PlvMessEmettre(6758,2,g_iartin,"",2,ta_860025984,tc_860025984,0)
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 12: TA/TC > S2 ou TC/TA > S2
#####################################################################

SI  ( ((ta_860025984*100) > (S2_860025984*tc_860025984)) || ((tc_860025984*100) > (S2_860025984*ta_860025984)) )
ALORS
#IFDEF trace_niv2 = 1
	trace( "Test 12: TA/TC > S2 ou TC/TA > S2 ==> STOCKE_ERRONE" )
#ENDIF
	code_rejet_860025984   = 0x5031
	erreur_860025984       = i_PlvMessEmettre(6759,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 100 : Cas non prevu !!!
#####################################################################

#IFDEF trace_niv2 = 1
trace( "Test 100 : Cas non prevu !!! ==> STOCKE_ERRONE" )
#ENDIF
code_rejet_860025984   = 0x5031
erreur_860025984       = i_PlvMessEmettre(6760,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)

SAUT STOCKE_ERRONE

#====================================================================
#=================== TYPE DE COMPTAGE = MAXIMUM =====================
#====================================================================

POINT CONTROLE_MAX

#####################################################################
#	Test 13 : TA == 0 et TC != 0
#####################################################################

SI (ta_860025984 == 0) && (tc_860025984 != 0)
ALORS
#IFDEF trace_niv2 = 1
	trace( "Test 13 : TA == 0 et TC != 0 ==> STOCKE_ERRONE" )
#ENDIF
	code_rejet_860025984   = 0x5031
	erreur_860025984       = i_PlvMessEmettre(6761,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 14 : TA <= TC (cas normal)
#####################################################################

SI ta_860025984 <= tc_860025984
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 16 : TC < TA <= TCxS3
#####################################################################

SI ( (tc_860025984<ta_860025984) && ((ta_860025984*100) <= (tc_860025984*S3_860025984)) )
ALORS
	erreur_860025984 = i_PlvMessEmettre(6762,2,g_iartin,"",2,ta_860025984,tc_860025984,0)
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 17 : TA/TC > S3
#####################################################################

SI ( (ta_860025984*100) > (S3_860025984*tc_860025984) )
ALORS
#IFDEF trace_niv2 = 1
	trace( "Test 17 : TA/TC > S3 ==> STOCKE_ERRONE" )
#ENDIF
	code_rejet_860025984   = 0x5031
	erreur_860025984       = i_PlvMessEmettre(6763,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 101 : Cas non prevu !!!
#####################################################################

#IFDEF trace_niv2 = 1
trace( "Test 101 : Cas non prevu !!! ==> STOCKE_ERRONE" )
#ENDIF
code_rejet_860025984   = 0x5031
erreur_860025984       = i_PlvMessEmettre(6764,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)
SAUT STOCKE_ERRONE

#
#====================================================================
#========== TYPE DE COMPTAGE = MAXIMUM SANS MODIFICATION ============
#====================================================================
#
POINT CONTROLE_MAX_NOMODIF

#####################################################################
#	Test 13 : TA == 0 et TC != 0
#####################################################################

SI (ta_860025984 == 0) && (tc_860025984 != 0)
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 14 : TA <= TC (cas normal)
#####################################################################

SI ta_860025984 <= tc_860025984
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 16 : TC < TA <= TCxS3
#####################################################################

SI ( (tc_860025984<ta_860025984) && ((ta_860025984*100) <= (tc_860025984*S3_860025984)) )
ALORS
	erreur_860025984 = i_PlvMessEmettre(6762,2,g_iartin,"",2,ta_860025984,tc_860025984,0)
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 17 : TA/TC > S3
#####################################################################

SI ( (ta_860025984*100) > (S3_860025984*tc_860025984) )
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 102 : Cas non prevu !!!
#####################################################################
#IFDEF trace_niv2 = 1
trace( "Test 102 : Cas non prevu !!! ==> STOCKE_ERRONE" )
#ENDIF
code_rejet_860025984   = 0x5031
erreur_860025984       = i_PlvMessEmettre(6765,2,g_iartin,"",3,code_rejet_860025984,ta_860025984,tc_860025984)

SAUT STOCKE_ERRONE

#====================================================================
#================== BRANCHEMENTS POUR MODIFICATION ==================
#====================================================================

#####################################################################
# POINT de branchement : mise a jour champ taxe par la taxe calculee
# On change le code article et TA = TC
# On est toujours dans le cas code en-tete 17 : on ne le change pas
#####################################################################

POINT MAJ_TAXE

# trace("Mise a jour du champ TAXE")
SI tc_860025984 > 65534
ALORS
	SI T3cap1_860025984 > 0
	ALORS
		code_rejet_860025984 = 0x5031
		erreur_860025984 = i_PlvMessEmettre(6767,2,g_iartin,"",1,code_rejet_860025984,0,0)
	SINON
		erreur_860025984 = i_set_art_field(g_iartin,$Tta6dc::TAXE:1,tc_860025984)
	FINSI
SINON
	SI T3cap1_860025984 > 0
	ALORS
		erreur_860025984 = i_set_art_field(g_iartin,$Tta6dc::TAXE:0,tc_860025984)
	SINON
		erreur_860025984 = i_set_art_field(g_iartin,$Tta6dc::TAXE:1,tc_860025984)
	FINSI

FINSI

SAUT STOCKE_OK

POINT MAJ_TAXCAL

erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4taxcal,$Tta6dc::TAXCAL,0)
erreur_860025984 = i_set_art_field(g_iartin, $Tta6dc::TAXCAL, tc_860025984)

SAUT STOCKE_OK

#====================================================================
#==================== BRANCHEMENTS POUR STOCKAGE ====================
#====================================================================

POINT STOCKE_OK

#trace("Stockage de l'article")

# EV616 : Calcul et traitement du champ ZLT
#REJET2
SI (comptage_zlt_860025984 == 1)
ALORS
	SI ((type_cpt_860025984 != CPT_REJET_860025984) && (type_cpt_860025984 != CPT_SYMPHO_860025984) && (type_cpt_860025984 != CPT_REJET2_860025984))
	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_860025984 == -1)
		ALORS
			result_zlt_860025984 = i_get_zlt(g_icopo,BASE_TELEPHONE_860025984,sdate_860025984)
		FINSI

# analyse du reultat de l'appel a la fonction i_get_zlt
		SI (result_zlt_860025984 == -1)
		ALORS
			erreur_860025984 = i_PlvMessEmettre(6726,2,g_iartin,"",1,typarticle_860025984,0,0)
			valeur_zlt_860025984 = -1
		SINON
			SI ((result_zlt_860025984 & 0x01) == 1)
			ALORS
# resultat impair
				valeur_zlt_860025984 = 1
				erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4ZLT,$Tta6dc::ZLT,0)
				erreur_860025984 = i_set_art_field(g_iartin, $Tta6dc::ZLT, valeur_zlt_860025984)
			SINON
# resultat pair
				valeur_zlt_860025984 = 0
				erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4ZLT,$Tta6dc::ZLT,0)
				erreur_860025984 = i_set_art_field(g_iartin, $Tta6dc::ZLT, valeur_zlt_860025984)
			FINSI
		FINSI
	FINSI
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_860025984 == 0 )
ALORS
	# Ajout condition propre aux inefficaces sans DEDE (FO1295):
	SI ( ( TAP_860025984 & 0x40 ) && ( !i_valid_field_n( g_iartin, $NDE ) ) )
	ALORS
		trace( "Pas d appel a i_comptage !")
	SINON
#IFDEF trace_niv1 = 1
		trace1( "Appel a i_comptage realise et valide : maj CCD avec %d", code_dest_860025984)
#ENDIF
		erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4ccd,$Tta6dc::CCD,0)
		erreur_860025984 = i_set_art_field( g_iartin, $Tta6dc::CCD, code_dest_860025984 )
	FINSI
FINSI

SI (flag_stat_860025984 == 1) && (nocodedest_860025984 == 0)
ALORS
	#trace("Appel a i_comptage realise et valide : maj CTT")
	type_traf_860025984 = g_icopo.SUP[RES_TTRAFIC_860025984]
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4typtra,$Tta6dc::CTT,0)
	erreur_860025984 = i_set_art_field(g_iartin,$Tta6dc::CTT,type_traf_860025984)
FINSI
# XYZ trafic fin

# Ajout 0x00FE dans le cas de seltrans=1 et flag_stat=1
SI ((flag_stat_860025984 == 1) && (seltrans_860025984 == 1))
ALORS
#	trace("Selection transporteur non FT : maj CTT = 0x00FE et CCD = 0xFE")
	SI (!i_valid_field_n(g_iartin,$Tta6dc::CTT))
	ALORS
		erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4typtra,$Tta6dc::CTT,0)
	FINSI
	erreur_860025984 = i_set_art_field(g_iartin,$Tta6dc::CTT,code_dest_860025984)
#IFDEF trace_niv1 = 1
	trace1( "Mise a jour de g_iartin.CCD avec code_dest = %d", code_dest_860025984 )
#ENDIF
#	g_iartin.CCD = code_dest
	SI (!i_valid_field_n(g_iartin,$Tta6dc::CCD))
	ALORS
		erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4ccd,$Tta6dc::CCD,0)
	FINSI
	erreur_860025984 = i_set_art_field( g_iartin, $Tta6dc::CCD, code_dest_860025984 )
FINSI

# Ajout du champ REJET (LRA - 25/06/01)
SI (type_cpt_860025984==CPT_REJET_860025984)
ALORS
	#trace("Ajout du champ REJET=1 cpt_rejet")
	val_REJET_860025984=1
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4rejet,$Tta6dc::REJET,0)
	erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::REJET,val_REJET_860025984)
FINSI
# G2R1Ch : REJET2
SI (type_cpt_860025984==CPT_REJET2_860025984)
ALORS
	#trace("Ajout du champ REJET=2 cpt_rejet2")
	val_REJET_860025984=2
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4rejet,$Tta6dc::REJET,0)
	erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::REJET,val_REJET_860025984)
FINSI

# REJET3
SI (type_cpt_860025984==CPT_REJET3_860025984)
ALORS
	#trace("Ajout du champ REJET=3 cpt_rejet3")
	val_REJET_860025984=3
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4rejet,$Tta6dc::REJET,0)
	erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::REJET,val_REJET_860025984)
FINSI

# REJET6

SI (type_cpt_860025984==CPT_REJET6_860025984)
ALORS
	#trace("Ajout du champ REJET=14 cpt_rejet6")
	val_REJET_860025984=14
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4rejet,$Tta6dc::REJET,0)
	erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::REJET,val_REJET_860025984)
FINSI

SI (type_cpt_860025984==CPT_SYMPHO_860025984)
ALORS
	#trace("Ajout du champ REJET=4 cpt_sympho")
	val_REJET_860025984=4
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4rejet,$Tta6dc::REJET,0)
	erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::REJET,val_REJET_860025984)
FINSI

#DRE G4R6 lot2
SI ( (type_cpt_860025984==CPT_CPS_Loc_860025984) || (type_cpt_860025984==CPT_CPS_RI_860025984) )
ALORS
	#trace("Ajout du champ REJET = CPS_Loc ou CPS_RI")
	val_REJET_860025984=type_cpt_860025984
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4rejet,$Tta6dc::REJET,0)
	erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::REJET,val_REJET_860025984)
FINSI
#\DRE G4R6 lot2

erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4codcirdr,$Tta6dc::CODCIRDR,0)
erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::CODCIRDR,CODCIRDR_860025984)

erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4codcir,$Tta6dc::CODCIR,0)
erreur_860025984=i_set_art_field(g_iartin,$Tta6dc::CODCIR,CODCIR_860025984)

SI (appel_base_860025984 == 1)
ALORS
	erreur_860025984=i_ajoutChampNum(g_iartin,$Tta6dc::T4normal,$Tta6dc::NORMAL,0)
	indice_860025984 = 0
	POINT BOUCLE_NDE
	res_860025984 = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice_860025984)
	#trace1(" element : %x",res)

	SI (res_860025984 != 00)
	ALORS
		# Cas particuliers : * (2A en ASCII) et # (23 en ASCII)

		SI (res_860025984 == 0x2a)
		ALORS
			erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::NORMAL, indice_860025984, 0xB)
			indice_860025984 = indice_860025984 + 1
			SAUT BOUCLE_NDE
		FINSI

		SI (res_860025984 == 0x23)
		ALORS
			erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::NORMAL, indice_860025984, 0xC)
			indice_860025984 = indice_860025984 + 1
			SAUT BOUCLE_NDE
		FINSI

		# Cas generique
		erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::NORMAL, indice_860025984, res_860025984-0x30)
		indice_860025984 = indice_860025984 + 1
		SAUT BOUCLE_NDE
	SINON
		erreur_860025984 = i_set_art_fieldtab(g_iartin, $Tta6dc::NORMAL, indice_860025984, 0xFF)
	FINSI
FINSI

#trace("Stockage de l'article en OK")
erreur_860025984 = i_stocke_art(g_iartin, stocke_date_860025984, PT_OK, 0)

#IFDEF trace_niv1 = 1
trace( "Fin traitement Article Tta6dc OK OK OK OK OK" )
#ENDIF

RETOUR TRAIT_OK

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

POINT STOCKE_ERRONE

#IFDEF trace_niv1 = 1
trace( "Stockage de l'article en ERRONE" )
#ENDIF

stocke_date_860025984 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)

erreur_860025984 = i_make_art_rej(g_iartin, g_iartout, code_rejet_860025984)
erreur_860025984 = i_stocke_art(g_iartout,stocke_date_860025984,PT_ERRONE,0)

#IFDEF trace_niv1 = 1
trace( "Fin traitement Article Tta6dc ERRONE ERRONE ERRONE ERRONE ERRONE" )
#ENDIF

RETOUR TRAIT_OK

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

POINT STOCKE_DIV

#IFDEF trace_niv1 = 1
trace( "__FILE__:__LINE__ : Fin du Pcode de traitement : Stockage en DIVERS" )
#ENDIF
erreur_860025984 = i_stocke_art( g_iartin, 0, PT_DIVERS, 0 )

RETOUR TRAIT_OK
#
#==================================================================
#====================		TRAITEMENT		====================
#==================================================================

# fin de fichier --------------- Tta6dc_tr.src --------------------------------------------
