DEFINITION C_PREF_PORTABILITE_MOBILE_860026006 "600"
DEFINITION C_PREF_PORTABILITE_MOBILE2_860026006 "509"
DEFINITION COD_Q_860026006 2
DEFINITION COD_P_860026006 5
DEFINITION BASE_TELEPHONE_860026006 1
DEFINITION CODE_NUMERIS_860026006 3
DEFINITION RES_TYPCOM_860026006 0
DEFINITION RES_CLDEST_860026006 1
DEFINITION RES_TYPCPT_860026006 2
DEFINITION RES_CODCIR_860026006 3
DEFINITION RES_CODCIRDR_860026006 5
DEFINITION CPT_NOT_860026006 0
DEFINITION CPT_MAX_860026006 1
DEFINITION CPT_EGAL_860026006 3
DEFINITION CPT_SYMPHO_860026006 4
DEFINITION CPT_IMPOSE_860026006 7
DEFINITION CPT_MAX_NOMODIF_860026006 5
DEFINITION CPT_REJET_860026006 11
DEFINITION CPT_REJET2_860026006 10
DEFINITION CPT_REJET3_860026006 12
DEFINITION CPT_REJET4_860026006 13
DEFINITION CPT_REJET6_860026006 14
DEFINITION S1_860026006 109225
DEFINITION S2_860026006 205
DEFINITION S3_860026006 110
DEFINITION S4_860026006 1
DEFINITION RET_SELTRANS_FT_860026006 1
DEFINITION RET_SELTRANS_860026006 2
DEFINITION AUT_NDEUR_860026006 "ATL_NDEUR3"
DEFINITION AUT_NDE_860026006 "ATL_ZN_NDE2+"
DEFINITION RES_TTRAFIC_860026006 1
DEFINITION CCD_FCT_860026006 0x18
DEFINITION typarticle_860026006 "Tns6dc"
DEFINITION CPT_CPS_Loc_860026006 16
DEFINITION CPT_CPS_RI_860026006 17
REGISTRE ENTIER bPortabilite_mobile_860026006
REGISTRE ENTIER lg_860026006
REGISTRE POINTEUR pt_NUM_IDAV_860026006
REGISTRE POINTEUR pt_PREF_NUM_IDAV_860026006
REGISTRE POINTEUR pt_TEMP_860026006
REGISTRE ENTIER stocke_date_860026006
REGISTRE ENTIER type_cpt_860026006
REGISTRE ENTIER ta_860026006
REGISTRE ENTIER tc_860026006
REGISTRE ENTIER tr_860026006
REGISTRE ENTIER sdate_860026006
REGISTRE ENTIER duree_860026006
REGISTRE ENTIER dr_860026006
REGISTRE ENTIER code_rejet_860026006
REGISTRE ENTIER erreur_860026006
REGISTRE ENTIER cr_860026006
REGISTRE ENTIER SUP_860026006
REGISTRE ENTIER CAX_860026006
REGISTRE ENTIER SCT_860026006
REGISTRE ENTIER STY_860026006
REGISTRE ENTIER TAP_860026006
REGISTRE ENTIER T3cap2_860026006
REGISTRE ENTIER T3cab_860026006
REGISTRE ENTIER onnet_860026006
REGISTRE ENTIER offnet_860026006
REGISTRE ENTIER transgroupe_860026006
REGISTRE ENTIER T3cha_860026006
REGISTRE ENTIER MES1_860026006
REGISTRE ENTIER MES2_860026006
REGISTRE ENTIER test_E8_860026006
REGISTRE ENTIER cle_860026006
REGISTRE ENTIER categ_860026006
REGISTRE ENTIER code_dest_860026006
REGISTRE ENTIER nocodedest_860026006
REGISTRE ENTIER service_860026006
REGISTRE ENTIER secretndr_860026006
REGISTRE ENTIER seltrans_860026006
REGISTRE ENTIER modif_article_860026006
REGISTRE ENTIER pos_deb_860026006
REGISTRE ENTIER flag_stat_860026006
REGISTRE ENTIER appel_base_860026006
REGISTRE ENTIER nde_860026006
REGISTRE ENTIER isizeNDE_860026006
REGISTRE ENTIER result_zlt_860026006
REGISTRE ENTIER valeur_zlt_860026006
REGISTRE ENTIER comptage_zlt_860026006
REGISTRE ENTIER lg_NDE_860026006
REGISTRE ENTIER val_REJET_860026006
REGISTRE ENTIER CODCIR_860026006
REGISTRE ENTIER CODCIRDR_860026006
REGISTRE ENTIER typcom_860026006
REGISTRE ENTIER longueur_860026006
REGISTRE ENTIER beta_860026006
REGISTRE ENTIER betav_860026006
REGISTRE ENTIER indice_860026006
REGISTRE ENTIER res_860026006
REGISTRE ENTIER type_traf_860026006
REGISTRE ENTIER P_860026006
REGISTRE ENTIER Q_860026006
REGISTRE ENTIER ret_normila_860026006
REGISTRE POINTEUR pt_NDE_860026006
REGISTRE POINTEUR pt_SGTQS_860026006
REGISTRE POINTEUR pt_memo_860026006
################################################################
#Pcode de TRAITEMENT
#	article DC NUMERIS VN6 EEC
#
# En entree:
#	Article Tns6dc (domaine ILA=Lnumeris)
#	Domaine article: Dvn6dc
#
# En sortie:
#	Article OK:
#		Article Tns6dc (domaine ILA=Lnumeris)
#
#	Article ERRONE:
#		Article Tns6dc (domaine ILA=Lnumeris)
#
# LRA - 21/06/01		Ajout du champ REJET pour le pcode
#				de distribution.
# LRA - 29/06/01		Ajout du champ NORMAL pour
#				recuperer le ZA de NDE
#				apres normalisation.
# LRA - 11/09/01		Suppression de la duplication pour les
#				Tns6dc INEFF_CS [FOEX97]
# LRA - 28/09/01		Suppression du stockage en PRT pour les
#				inefficaces afin de connaitre REJET (FO817).
# 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 - 09/04/02		FOEX557:
#				appel a la base de comptage pour les inefficaces de duree
#				nulle avec CS.
# LRA - 14/05/02	FOEX593:
#			Recuperation du CCD apres appel a la base de comptage
#			pour articles avec code transporteur.
#Tns6dc
# DRE - 18/06/02	FO 1508 : Tns6dc: DC inefficaces avec complements de service
#			Pour les DC Tns6dc inefficaces, de duree nulle et complements
#			de service, l'appel a la base de comptage est fait pour recuperer #			le CCD pour un iventuel aiguillage vers FCT.
#			Par contre, il est inutile de faire les controles de valorisation #			sur ces DC qui sont ainsi souvent mis en erreur.
# URS - 15/07/02	G1Ry : Specif. V4.5
#			Pas de controle de valorisation pour 8FT/VTG
#			Restrictions filtre INEFF_CS
# 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 - 10/12/03	Cg : pas d'appel BNC si DIAL (CAX=9)
# 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/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/DRE - 22/07/04	FO 762  Ajout parametre "code_rejet" dans alarme 6931
# URS/PSA - 07/10/04	Cm : FO714  suppression cpt ANO
# URS/THE - 25/11/04	Cn : FO913 suppression 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) 12 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 - 06/06/06	G2R2Cu VGTplus et typ_com
# URS/JLG - 27/09/06	G2R2Cv : REJET3 (119 appels enfance maltraitee)
# URS/JLG - 05/11/06	G2R2Cv : REJET4 service Entraide 3212
# 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=14 dans le cadre des appels 118 PTD et 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)
#	04/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/DRE - 21/05/13 G4R3 lot2 cas 03172
# DECI/DRE - 26/03/14 G4R6 : Lot2 prise en compte des nouveaux Type Control envoy?s par la base (C+S )
#
############################################################################

# Portabilite Mobiles



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

# Indice interne de la base de comptage pour le telephone
# Indice de la loi de calcul de taxation pour numeris
# Definition des resultats supplementaires retournes par le calcul de taxation.

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

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

# 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

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

# Codes de retour de la fonction i_normal

# Nom de l'automate du numero demandeur et demande

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

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

# CCD pour FCT

#DRE G4R6 lot2
#\DRE G4R6 lot2



# Nouveaux parametres CS (VN7)

# Test pour FCP sur T3cle (EV458)

# Test presence NDE (EV576)

# EV616 : Traitement du champ ZLT

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

# Ajout du champ NORMAL (LRA - 29/06/01)

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


# VerifPcode
pt_memo_860026006	= "1111111111111111111111111111111111"
pt_NDE_860026006	= "33333333333333333333333333333333333333333333333333"
pt_SGTQS_860026006= "4444444444444444444444444444444444"
pt_NUM_IDAV_860026006 = "351254789523125468731589745681"
pt_PREF_NUM_IDAV_860026006 = "951753"
pt_TEMP_860026006     = "95135778965412317283979461328451"


i_strcpy(pt_NUM_IDAV_860026006, "")
i_strcpy(pt_PREF_NUM_IDAV_860026006, "")
i_strcpy(pt_TEMP_860026006, "")
# VerifPcode
i_strcpy(pt_memo_860026006, "")
i_strcpy(pt_NDE_860026006, "")
i_strcpy(pt_SGTQS_860026006, "")


#####################################################################
# DEBUT DES TRAITEMENTS
#####################################################################
#
# trace("Article DC Numeris VN6 ou VN7")

# Initialisations pour REJET et NORMAL:
val_REJET_860026006=0
# VerifPcode - RHE # val_NORMAL=-1
type_cpt_860026006 = 0
# EV616 : Traitement du champ ZLT
comptage_zlt_860026006 = 0
result_zlt_860026006 = -1
appel_base_860026006 = 0

#
beta_860026006 = 0
betav_860026006 = 0
flag_stat_860026006 = 0

# Initialisation des parametres pour Transgroupe (appel interne TGP et
# le reseau general
onnet_860026006 = 0
offnet_860026006 = 0
transgroupe_860026006 = 0

# Detection de la modification g_iartin en g_iartout7
modif_article_860026006 = 0

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

# Initialisation des parametres pour code classe destination
nocodedest_860026006 = 0

# Initialisation des parametres pour les CS
# VerifPcode - RHE # T3ttx = 0
# VerifPcode - RHE # T3code = 0
# VerifPcode - RHE # T3cle = 0
# VerifPcode - RHE # T3sidr = 0
MES1_860026006 = 0xFF
MES2_860026006 = 0xFF
service_860026006 = 0
# Initialisation des nouveaux parametres pour les CS (VN7)
# VerifPcode - RHE # T3inv = 0
# VerifPcode - RHE # T3chp = 0

# Initialisation pour le secret du demandeur
secretndr_860026006 = 0

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

CODCIR_860026006  = 0
CODCIRDR_860026006 = 0
lg_NDE_860026006 = 0
#G3R23C2 QC562
ret_normila_860026006 = 0

#typarticle="1234"
#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,$Tns6dc::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_860026006 = i_verify_value( g_iartin, "T3cle", 0x47 )
		SI (cle_860026006 == 1)
		ALORS
			code_dest_860026006 = 0xFF
			flag_stat_860026006 = 0
			#trace("xxxxxxx FO1603 RPVI_TC OUI xxxxxxxxxxxxxxxxxxxxx")
			SAUT STOCKE_OK
		FINSI
	FINSI
FINSI

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

SI T3cap2_860026006 > 0
ALORS
	# trace("T3cap2 present")
	#####################################################################
	#	Test 160 : champs T3cap2 et T3cab presents
	#####################################################################
	SI T3cab_860026006 > 0
	ALORS
		#trace("T3cab present")
		code_rejet_860026006 = 0x50F2
		erreur_860026006 = i_PlvMessEmettre(6770,2,g_iartin,"",2,code_rejet_860026006,typarticle_860026006,0)
		SAUT STOCKE_ERRONE
	FINSI
	#trace("T3cab absent")
	ta_860026006 = i_get_art_field(g_iartin,$Tns6dc::TAXE:0)
	CAX_860026006 = i_get_art_field(g_iartin,$Tns6dc::CAX:0)
	SUP_860026006 = i_get_art_field(g_iartin,$Tns6dc::SUP:0)
	TAP_860026006 = i_get_art_field(g_iartin,$Tns6dc::TAP:0)
	duree_860026006 = i_get_art_field(g_iartin,$Tns6dc::DUREE:0)
SINON
	#trace("T3cap2 absent")
	#####################################################################
	#	Test 161 : champs T3cap2 et T3cab absents
	#####################################################################
	SI T3cab_860026006 <= 0
	ALORS
		#trace("T3cab absent")
		code_rejet_860026006 = 0x50F2
		erreur_860026006 = i_PlvMessEmettre(6771,2,g_iartin,"",2,code_rejet_860026006,typarticle_860026006,0)
		SAUT STOCKE_ERRONE
	FINSI
	#trace("T3cab present")
	ta_860026006 = i_get_art_field(g_iartin,$Tns6dc::TAXE:0)
	CAX_860026006 = i_get_art_field(g_iartin,$Tns6dc::CAX:0)
	SUP_860026006 = i_get_art_field(g_iartin,$Tns6dc::SUP:0)
	TAP_860026006 = i_get_art_field(g_iartin,$Tns6dc::TAP:0)
	duree_860026006 = i_get_art_field(g_iartin,$Tns6dc::DUREE:0)
FINSI

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

#trace1(" ##### duree %d ",duree)
SI (duree_860026006 > 0x10B30)
ALORS
	code_rejet_860026006 = 0x5022
	erreur_860026006 = i_PlvMessEmettre(6927,2,g_iartin,"",2,code_rejet_860026006,"Tns6dc",0)
	SAUT STOCKE_ERRONE
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_860026006 = i_get_art_field(g_iartin, $Tns6dc::DATE)

SCT_860026006 = 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_860026006 & 0x60) == 0x00)
ALORS
	#trace("DATE = heure de fin de comm : conversion en debut de comm")
	sdate_860026006 = sdate_860026006 - duree_860026006
	erreur_860026006 = i_set_art_date(g_iartin,sdate_860026006)
	g_iartin.SCT = SCT_860026006 | 0x20
	SAUT FIN_SCT
FINSI

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

#####################################################################
#	Test 163 : bits BC champ SCT != 00, 01
#####################################################################
SI TAP_860026006 & 0x40
ALORS
	code_rejet_860026006   = 0x5040
SINON
	code_rejet_860026006   = 0x5041
FINSI

erreur_860026006 = i_PlvMessEmettre(6773,2,g_iartin,"",3,code_rejet_860026006,typarticle_860026006,SCT_860026006)
SAUT STOCKE_ERRONE

POINT FIN_SCT

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

stocke_date_860026006 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)

###########################################################################
# Determination service implique par le champ STY
#		bits A = 0: Pas Trafic plus
#		bits A = 1: Trafic plus
#		bits B = 0: pas Transgroupe
#		bits B = 1: Transgroupe
#		Autres bits reserves et positionne a 0
#		Service Trafic plus non teste
#	Dans le cas de Transgroupe etendu seul le bit B de STY vaut 0, la CAX
# vaut 6 mais le numero demande est de type reseau general -> comm standard
###########################################################################
STY_860026006 = g_iartin.STY
SI ( (STY_860026006 & 0x40) == 0x40 )
ALORS
	transgroupe_860026006 = 1
	#trace("Article Transgroupe")
	SAUT FIN_STY
FINSI

#####################################################################
#	Test 165 : bits F champ STY != 0
#####################################################################
SI ((STY_860026006 & 0x04) != 0x00)
ALORS
	SI TAP_860026006 & 0x40
	ALORS
		code_rejet_860026006   = 0x5040
	SINON
		code_rejet_860026006   = 0x5041
	FINSI
	erreur_860026006 = i_PlvMessEmettre(6775,2,g_iartin,"",3,code_rejet_860026006,typarticle_860026006,STY_860026006)
	SAUT STOCKE_ERRONE
FINSI

POINT FIN_STY

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

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

SI TAP_860026006 & 0x40
ALORS
	# Inefficaces sans NDE => pas de normalisation, pas d appel a la base de comptage.
	nde_860026006 = i_valid_field_n(g_iartin, $Tns6dc::NDE)
	SI (!nde_860026006)
	ALORS
		trace("Article inefficace sans numero demande")
		SAUT STOCKE_OK
	FINSI

	SI duree_860026006 == 0
	ALORS
		T3cha_860026006 = i_valid_field_n(g_iartin,$Tns6dc::T3cha)
		SI T3cha_860026006 > 0
		ALORS
			MES1_860026006 = i_get_art_field(g_iartin,$Tns6dc::MES1)
			MES2_860026006 = i_get_art_field(g_iartin,$Tns6dc::MES2)
		FINSI

		SI ((T3cha_860026006 > 0) && ((MES1_860026006 != 0xFF) || (MES2_860026006 != 0xFF)))
		ALORS
			# FOEX557 - Valorisation des ineff, de duree nulle avec CS:
			service_860026006 = 1
			#trace("Article inefficace avec duree=0 et avec CS")
			SAUT FIN_INEFF
		FINSI
	FINSI

	# Inefficaces et non (duree=0 avec CS) => 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

POINT	FIN_INEFF

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

SI (nde_860026006 == 0)
ALORS
	#Stockage en erronee
	code_rejet_860026006 = 0x5041
	erreur_860026006 = i_PlvMessEmettre(6931,2,g_iartin,"",2,code_rejet_860026006,typarticle_860026006,0)
	SAUT STOCKE_ERRONE
FINSI

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

SI (isizeNDE_860026006 > 26)
ALORS
	code_rejet_860026006 = 0x5051
	erreur_860026006 = i_PlvMessEmettre(6772,2,g_iartin,"",1,code_rejet_860026006,0,0)
	SAUT STOCKE_ERRONE
FINSI

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

SI ((TAP_860026006 & 0xa0)  == 0xa0)
ALORS
	code_rejet_860026006 = 0x5041
	erreur_860026006 = i_PlvMessEmettre(6776,2,g_iartin,"",2,code_rejet_860026006,typarticle_860026006,0)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
# CAX = 99
#####################################################################
longueur_860026006 = 0
longueur_860026006 = i_get_art_field(g_iartin, $Tns6dc::L3idus)

SI CAX_860026006 != 99 && longueur_860026006 <= 1
ALORS
	code_rejet_860026006   = 0x5041
	erreur_860026006       = i_PlvMessEmettre(6939,2,g_iartin,"",3,code_rejet_860026006,typarticle_860026006,longueur_860026006)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
# CAX = 5 ==> DC stocke en divers
#####################################################################

SI CAX_860026006 == 5 || CAX_860026006 == 99
ALORS
	SAUT STOCKE_DIV
FINSI

#####################################################################
# DIAL ==> STOCKE OK immediat
#####################################################################

SI CAX_860026006 == 9
ALORS
	SAUT STOCKE_OK
FINSI

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

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

SI ta_860026006 > S1_860026006
ALORS
	code_rejet_860026006 = 0x5031
	erreur_860026006 = i_PlvMessEmettre(6777,2,g_iartin,"",3,code_rejet_860026006,typarticle_860026006,ta_860026006)
	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,$Tns6dc::NDE)
ALORS
	erreur_860026006 = i_get_art_str(g_iartin,$Tns6dc::NDE, pt_NDE_860026006)
	lg_NDE_860026006 = i_strlen(pt_NDE_860026006)

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

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

SI (transgroupe_860026006 == 1)
ALORS
	#####################################################################
	#	Cas Transgroupe	avec utilisation de g_iartin
	#####################################################################
	#	Appel offnet : NDE debutant par 0 ou 036510AB ou 03172AB 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 03172 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, 03172)
			#	et 0* (pour 0*31*)
			#trace("Transgroupe offnet : suppression du '0'")
			offnet_860026006 = 1
			#Enlever le 0 pour appel a i_comptage
			pos_deb_860026006 = i_supp_quart_name("NDE",0,1,15,g_iartin,g_iartout7)
			modif_article_860026006 = 1
		SINON
#DRE G4R3 lot2 cas 03172
		#	Ici on a des appels debutant par 03 (pour 03651 ou 3172) 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 0*31*0ABPQ
					#trace("Transgroupe offnet : suppression de '036510' ou de '0*31*0'")
					offnet_860026006 = 1
					#Enlever 036510 ou 031720 ou 0*31*0 pour appel a i_comptage
					pos_deb_860026006 = i_supp_quart_name("NDE",0,6,15,g_iartin,g_iartout7)
					modif_article_860026006 = 1
				SINON
					#appel commencant par 03651ABPQ ou 03172ABPQ ou 0*31*ABPQ
					#trace("Transgroupe onnet")
					onnet_860026006 = 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_860026006 = 1
				#Enlever le 0 pour appel a i_comptage
				pos_deb_860026006 = i_supp_quart_name("NDE",0,1,15,g_iartin,g_iartout7)
				modif_article_860026006 = 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_860026006 = 1
			onnet_860026006 = 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_860026006 = 1
		FINSI
	FINSI
SINON
#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_860026006 = 1
		#Enlever 3651 ou 3172 (ou *31*) pour appel a i_comptage
		pos_deb_860026006 = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
		modif_article_860026006 = 1
	FINSI
FINSI

#############################################################################
#	Si appel transgroupe onnet ou allo , ni normalisation ni valorisation
#############################################################################

SI (onnet_860026006 == 1)
ALORS
	nocodedest_860026006 = 1
	#trace("Article Transgroupe onnet : stockage en OK")
	SAUT STOCKE_OK
FINSI

#####################################################################
#  Traitement specifique pour les cas ETSI national et internationnal
#####################################################################

SI ( modif_article_860026006 == 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_860026006 = 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_860026006 = 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_860026006 = i_add_quart_name("NDE",0,15,"0",g_iartin,g_iartout7)
		modif_article_860026006 = 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_860026006 = i_add_quart_name("NDE",0,15,"00",g_iartin,g_iartout7)
			modif_article_860026006 = 1
		FINSI
	FINSI
FINSI

#trace("Fin du traitement ETSI")

#####################################################################
#	SELECTION DU TRANSPORTEUR
#####################################################################
# Test de la presence du champ BETA et BETAV dans l'article (present si beta > 0)

beta_860026006 = i_valid_field_n(g_iartin,$Tns6dc::BETA)
betav_860026006 = i_valid_field_n(g_iartin,$Tns6dc::BETAV)

# trace("traitement du numero demande")
SI ( modif_article_860026006 == 1)
ALORS
	#####################################################################
	#	SELECTION DU TRANSPORTEUR avec utilisation g_iartout7
	#####################################################################
	# 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_860026006>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_860026006 = 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_860026006 <= 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_860026006 = 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_860026006>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_860026006 = 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_860026006 = 1
	SINON
		SI ((betav_860026006 <= 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_860026006 = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
				modif_article_860026006 = 1
			FINSI
		FINSI
	FINSI
FINSI

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

res_860026006 = 0

SI i_valid_field_n(g_iartin,$Tns6dc::INF_IDAV)
ALORS
	res_860026006 = i_get_art_field(g_iartin, $Tns6dc::INF_IDAV)
FINSI
bPortabilite_mobile_860026006 = 0
SI i_valid_field_n(g_iartin,$Tns6dc::NUM_IDAV)
ALORS
	erreur_860026006 = i_get_art_str(g_iartin, $Tns6dc::NUM_IDAV, pt_NUM_IDAV_860026006)
	# prefixes sur 3 digits
	i_get_sub_str(pt_NUM_IDAV_860026006, 0, 2, pt_PREF_NUM_IDAV_860026006)

	SI ( ( i_strcmp(pt_PREF_NUM_IDAV_860026006, C_PREF_PORTABILITE_MOBILE_860026006) == 0 || i_strcmp(pt_PREF_NUM_IDAV_860026006, C_PREF_PORTABILITE_MOBILE2_860026006) == 0 )  &&  res_860026006 == 2 )
	ALORS
		bPortabilite_mobile_860026006 = 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_860026006 == 1)
ALORS
	ret_normila_860026006 = i_normal_dila(g_iartout7,$Tns6dc::NDR,$Tns6dc::NDE, "LDnumeris" ,"" , g_icopo,$Tcopo::NDR,$Tcopo::NDE,3,AUT_NDEUR_860026006,AUT_NDE_860026006)
SINON
	ret_normila_860026006 = i_normal_dila(g_iartin,$Tns6dc::NDR,$Tns6dc::NDE, "LDnumeris" ,"" , g_icopo,$Tcopo::NDR,$Tcopo::NDE,3,AUT_NDEUR_860026006,AUT_NDE_860026006)
FINSI

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

SI ret_normila_860026006 < 0
ALORS
	code_rejet_860026006 = 0x5011
	erreur_860026006 = i_PlvMessEmettre(6778,2,g_iartin, "",3,code_rejet_860026006,typarticle_860026006,g_ierrno)
	SAUT STOCKE_ERRONE
FINSI

#G3R23 QC553
erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4dedensuc,$Tns6dc::DEDENSUC,0)
indice_860026006 = 0

POINT BOUCLE_DEDENSUC

res_860026006 = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice_860026006)
#trace1(" element : %x",res)

SI (res_860026006 != 00)
ALORS
	# Cas particuliers : * (2A en ASCII) et # (23 en ASCII)
	SI (res_860026006 == 0x2a)
	ALORS
		erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::DEDENSUC, indice_860026006, 0xB)
		indice_860026006 = indice_860026006 + 1
		SAUT BOUCLE_DEDENSUC
	FINSI

	SI (res_860026006 == 0x23)
	ALORS
		erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::DEDENSUC, indice_860026006, 0xC)
		indice_860026006 = indice_860026006 + 1
		SAUT BOUCLE_DEDENSUC
	FINSI

	# Cas generique
	erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::DEDENSUC, indice_860026006, res_860026006-0x30)
	indice_860026006 = indice_860026006 + 1
	SAUT BOUCLE_DEDENSUC
SINON
	erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::DEDENSUC, indice_860026006, 0xFF)
FINSI

# si on a une selection du transporteur en 16XY ou en EZAB (E!=8)
SI (ret_normila_860026006 == RET_SELTRANS_860026006)
ALORS
	#trace("Article avec selection du transporteur non FT : stockage en OK sans calcul de valo")
	seltrans_860026006 = 1
	flag_stat_860026006 = 1
	code_dest_860026006 = 0xFE
FINSI

# sinon
# selection transporteur FT (par EZAB avec E=8) ou pas de sel. trans.
# On effectue un calcul de valorisation.

test_E8_860026006=0
SI ( ret_normila_860026006 == RET_SELTRANS_FT_860026006 )
ALORS
	trace("Article avec selection du transporteur 8FT")
	test_E8_860026006 = 1
FINSI

#trace("Fin de la normalisation")

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

# trace ("Calcul de valorisation")

categ_860026006 = (8 * CAX_860026006) + SUP_860026006
g_icopo.TAXE   = 0
g_icopo.CREDIT = 0
erreur_860026006 = i_set_art_date(g_icopo,sdate_860026006)
g_icopo.DUREE  = duree_860026006
g_icopo.CODE   = CODE_NUMERIS_860026006
g_icopo.CATEG  = categ_860026006
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_860026006 == 1
ALORS
	lg_860026006 = i_strlen(pt_NUM_IDAV_860026006)
	erreur_860026006 = i_format_str2(pt_TEMP_860026006, "%s%s", "0", pt_NUM_IDAV_860026006)
	erreur_860026006 = i_memcpy_art_field_n(g_icopo, $Tcopo::NDE, pt_TEMP_860026006, lg_860026006+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_860026006 = i_init_tax_param()
cr_860026006 = i_comptage(g_icopo,BASE_TELEPHONE_860026006,sdate_860026006)
appel_base_860026006 = 1

SI ( cr_860026006 == 0)
ALORS
	typcom_860026006 = g_icopo.SUP[RES_TYPCOM_860026006]
	trace1("G2R2Cu typcom <%d> ",typcom_860026006 )
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4typcom,$Tns6dc::typcom,0)
	erreur_860026006 = i_set_art_field( g_iartin, $Tns6dc::typcom, typcom_860026006 )
FINSI

# EV616 : Traitement du champ ZLT
comptage_zlt_860026006 = 1

#####################################################################
#	Test 6 : calcul taxe impossible
#####################################################################
SI ( (cr_860026006 != 0) && !(TAP_860026006 & 0x40) )
ALORS
	SI ( (g_ierrno == 1100) && (seltrans_860026006 == 1) )
	ALORS
		# EV616 : On force la valeur du T4ZLT a 1
		result_zlt_860026006 = 1
		SAUT STOCKE_OK
	FINSI

	code_rejet_860026006 = 0x5021
	erreur_860026006 = i_PlvMessEmettre(6779,2,g_iartin,"",3,code_rejet_860026006,typarticle_860026006,g_ierrno)
	SAUT STOCKE_ERRONE
FINSI

#    stocke_date - initialisee avant test 4
#    apres modif SCT deb comm g_iartin
type_cpt_860026006 = g_icopo.SUP[RES_TYPCPT_860026006]
#trace1("type_cpt= <%d>",type_cpt)

# MAJ des code de circonscription de dde et ddeur
CODCIR_860026006 = g_icopo.SUP[RES_CODCIR_860026006]
CODCIRDR_860026006 = g_icopo.SUP[RES_CODCIRDR_860026006]

## Maj CCD - 

code_dest_860026006 = g_icopo.SUP[RES_CLDEST_860026006]
# on garde le CCD de la BNC si Portabilite Mobiles
SI ( (seltrans_860026006 == 1) && ( code_dest_860026006 != CCD_FCT_860026006 ) && (bPortabilite_mobile_860026006 == 0) )
ALORS
	code_dest_860026006 = 0xFE
FINSI

# DC inefficace avec CS et duree nulle, stockage dans Dns4dc

SI (service_860026006 == 1)
ALORS
	SAUT STOCKE_OK
FINSI

# REJET2
# REJET3
# REJET4 (3212 retour BNC = 13)
# REJET6 (118 PTD & kiosque retour BNC = 14)

i_strcpy(pt_SGTQS_860026006,i_LireEECSGTQS( g_ieec ))

SI (type_cpt_860026006==CPT_REJET4_860026006 && (i_strcmp(pt_SGTQS_860026006,"LY65")==0 || i_strcmp(pt_SGTQS_860026006,"LY75")==0) )
ALORS
	#trace("Ajout du champ REJET=CPT_REJET4")
	val_REJET_860026006=CPT_REJET4_860026006
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4rejet,$Tns6dc::REJET,0)
	erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::REJET,val_REJET_860026006)
FINSI

# DRE G4R6 Lot2
#SI ( type_cpt==CPT_REJET || type_cpt==CPT_SYMPHO || type_cpt==CPT_REJET2 || type_cpt==CPT_REJET3 || val_REJET==CPT_REJET4 ||  type_cpt==CPT_REJET6)
SI ( (type_cpt_860026006==CPT_CPS_Loc_860026006) || (type_cpt_860026006==CPT_CPS_RI_860026006) || type_cpt_860026006==CPT_REJET_860026006 || type_cpt_860026006==CPT_SYMPHO_860026006 || type_cpt_860026006==CPT_REJET2_860026006 || type_cpt_860026006==CPT_REJET3_860026006 || val_REJET_860026006==CPT_REJET4_860026006 ||  type_cpt_860026006==CPT_REJET6_860026006)
ALORS
	flag_stat_860026006 = 1
	SAUT STOCKE_OK
FINSI

SI (seltrans_860026006 == 1)
ALORS
	SAUT STOCKE_OK
FINSI

# VerifPcode - RHE # INF_DEDE = i_get_art_field(g_iartin,$Tns6dc::INF_DEDE)

# Teste qu'au moins une valeur de T3cle vaut 0x01

cle_860026006 = i_verify_value(g_iartin,"T3cle",0x01)

SI (cle_860026006 == 1)
ALORS
	code_dest_860026006 = g_icopo.SUP[RES_CLDEST_860026006]
	flag_stat_860026006 = 1
	SAUT STOCKE_OK
FINSI

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

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

#####################################################################
# 	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_860026006 & 0x02)  == 0x02)
ALORS
	#trace("TAP/g = 1 : <abonne demande non taxe> : stockage en OK")
	SAUT STOCKE_OK
FINSI
#####################################################################
SI (test_E8_860026006==1)
ALORS
	SI ((CAX_860026006==4 )|| (CAX_860026006==7))
	ALORS
		trace("pas de controle de valo 8FT")
		flag_stat_860026006=1
		SAUT STOCKE_OK
	FINSI
FINSI

# Aiguillage selon le type de comptage
# et tests 127, 128, 129, 130, 131, 104
# trace("Controle de la valorisation")
#####################################################################
#	Taxe calculee et aiguillage selon type de comptage
#####################################################################
tc_860026006 = g_icopo.TAXE

SI type_cpt_860026006 == CPT_IMPOSE_860026006
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_860026006 & 0x02) == 0
ALORS
	#####################################################################
	#   Test 127 : pas de taxe annoncee, cas du controle EGALITE
	#			on stocke avec TC
	#####################################################################
	SI type_cpt_860026006 == CPT_EGAL_860026006
	ALORS
		SAUT MAJ_TAXE
	FINSI

	#####################################################################
	#   Test 128, 129, 130 et 131 : pas de taxe annoncee, cas des controles
	#           autres que REJET ou EGALITE
	#####################################################################
	code_rejet_860026006 = 0x5031
	erreur_860026006 = i_PlvMessEmettre(6780,2,g_iartin,"",2,code_rejet_860026006,type_cpt_860026006,0)
	SAUT STOCKE_ERRONE
FINSI

SI type_cpt_860026006 == CPT_EGAL_860026006
ALORS
	SAUT CONTROLE_EGAL
FINSI

SI type_cpt_860026006 == CPT_MAX_860026006
ALORS
	SAUT CONTROLE_MAX
FINSI

SI type_cpt_860026006 == CPT_MAX_NOMODIF_860026006
ALORS
	SAUT CONTROLE_MAX_NOMODIF
FINSI
# type_cpt=13 valeur possible (rejet4)
SI ((type_cpt_860026006 == CPT_NOT_860026006) || ((type_cpt_860026006 > 5) && (type_cpt_860026006 < 14)))
ALORS
	#erreur = i_PlvMessEmettre(6605,2,g_iartin,"",2,ta,tc,0)
	SAUT STOCKE_OK
SINON

#####################################################################
#   Test 104 : type de controle inconnu
#####################################################################

	code_rejet_860026006 = 0x5031
	erreur_860026006 = i_PlvMessEmettre(6781,2,g_iartin,"",2,code_rejet_860026006,type_cpt_860026006,0)
	SAUT STOCKE_ERRONE
FINSI

#
#====================================================================
#======================== CONTROLE EGALITE ==========================
#====================================================================
#
POINT CONTROLE_EGAL

SI tc_860026006 == ta_860026006
ALORS

	#####################################################################
	#	Test 7 : TA = TC et DA != 0 (cas normal)
	#####################################################################

	SI duree_860026006 != 0
	ALORS
		SAUT STOCKE_OK
	FINSI

	#####################################################################
	#	test 133 : DA = 0 (decoupe en divers tests)
	#	Cas TC=TA=0 : Tests si complement de service numeris
	#	Complement de service sont CHAA par MES1 ou MES2 non nuls
	#####################################################################
	SI ((tc_860026006 == 0) && (service_860026006 == 1))
	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_860026006 = i_comptage(g_icopo,BASE_TELEPHONE_860026006,sdate_860026006)
	tr_860026006 = g_icopo.TAXE

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

	SI tr_860026006 == ta_860026006
	ALORS
		SAUT STOCKE_OK
	FINSI

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

	code_rejet_860026006 = 0x5031
	erreur_860026006 = i_PlvMessEmettre(6782,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tr_860026006)
	SAUT STOCKE_ERRONE
FINSI

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

SI duree_860026006 == 0
ALORS

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

	SI (ta_860026006 == 0) && (tc_860026006 != 0)
	ALORS
		code_rejet_860026006 = 0x5031
		erreur_860026006 = i_PlvMessEmettre(6783,2,g_iartin,"",2,code_rejet_860026006,tc_860026006,0)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026006 == 1) && (tc_860026006 == 0)
	ALORS
		code_rejet_860026006 = 0x5031
		erreur_860026006 = i_PlvMessEmettre(6784,2,g_iartin,"",1,code_rejet_860026006,0,0)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026006 >= 1) && (tc_860026006 != 0)
	ALORS
		code_rejet_860026006 = 0x5031
		erreur_860026006 = i_PlvMessEmettre(6785,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026006 > 1) && (tc_860026006 == 0)
	ALORS
		code_rejet_860026006 = 0x5031
		erreur_860026006 = i_PlvMessEmettre(6786,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
		SAUT STOCKE_ERRONE
	FINSI
SINON

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

	SI (ta_860026006 == 0) && (tc_860026006 != 0)
	ALORS
		code_rejet_860026006 = 0x5031
		erreur_860026006 = i_PlvMessEmettre(6809,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026006 != 0) && (tc_860026006 == 0)
	ALORS
		code_rejet_860026006 = 0x5031
		erreur_860026006 = i_PlvMessEmettre(6787,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

#####################################################################
#	Test 9A/9B: (TC < TA) && (TA <= TC + S4) et recalcul avec DA + 1
#####################################################################
SI ((tc_860026006 < ta_860026006) && (ta_860026006 <= tc_860026006 + S4_860026006))
ALORS
	dr_860026006 = duree_860026006 + 1
	g_icopo.TAXE   = 0
	g_icopo.CREDIT = 0
	g_icopo.DUREE  = dr_860026006
	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_860026006 = i_comptage(g_icopo, BASE_TELEPHONE_860026006, sdate_860026006)
	tr_860026006 = g_icopo.TAXE
	SI (ta_860026006 == tr_860026006)
	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_860026006 - S4_860026006 <= ta_860026006) && (ta_860026006 < tc_860026006))
ALORS
	P_860026006 = i_get_tax_param(pt_memo_860026006, COD_P_860026006, 0)
	Q_860026006 = i_get_tax_param(pt_memo_860026006, COD_Q_860026006, 0)

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

	SI ((Q_860026006 == 0) && (P_860026006 != 0))
	ALORS
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026006 != 0) && (P_860026006 == 0))
	ALORS
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026006 != 0) && (P_860026006 != 0) && (ta_860026006 <= Q_860026006))
	ALORS
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026006 != 0) && (P_860026006 != 0) && (ta_860026006 > Q_860026006))
	ALORS
		SAUT STOCKE_OK
	FINSI
FINSI

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

SI ( ((tc_860026006*100) <= (ta_860026006*S2_860026006)) && (ta_860026006 < (tc_860026006-S4_860026006)) )
ALORS
	P_860026006 = i_get_tax_param(pt_memo_860026006, COD_P_860026006, 0)
	Q_860026006 = i_get_tax_param(pt_memo_860026006, COD_Q_860026006, 0)

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

	SI ((Q_860026006 == 0) && (P_860026006 != 0))
	ALORS
		erreur_860026006 = i_PlvMessEmettre(6794,2,g_iartin,"",2,ta_860026006,tc_860026006,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026006 != 0) && (P_860026006 == 0))
	ALORS
		erreur_860026006 = i_PlvMessEmettre(6795,2,g_iartin,"",2,ta_860026006,tc_860026006,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026006 != 0) && (P_860026006 != 0) && (ta_860026006 <= Q_860026006))
	ALORS
		erreur_860026006 = i_PlvMessEmettre(6796,2,g_iartin,"",2,ta_860026006,tc_860026006,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026006 != 0) && (P_860026006 != 0) && (ta_860026006 > Q_860026006))
	ALORS
		erreur_860026006 = i_PlvMessEmettre(6797,2,g_iartin,"",2,ta_860026006,tc_860026006,0)
		SAUT STOCKE_OK
	FINSI
FINSI

#####################################################################
#	Test 11: TC+S4 < TA <= TCxS2
#####################################################################

SI ( ((tc_860026006+S4_860026006) < ta_860026006 ) && ((ta_860026006*100) <= (tc_860026006*S2_860026006)) )
ALORS
	erreur_860026006 = i_PlvMessEmettre(6798,2,g_iartin,"",2,ta_860026006,tc_860026006,0)
	SAUT STOCKE_OK
FINSI

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

SI  ( ((ta_860026006*100) > (S2_860026006*tc_860026006)) || ((tc_860026006*100) > (S2_860026006*ta_860026006)) )
ALORS
	code_rejet_860026006 = 0x5031
	erreur_860026006 = i_PlvMessEmettre(6799,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
	SAUT STOCKE_ERRONE
FINSI

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

code_rejet_860026006 = 0x5031
erreur_860026006 = i_PlvMessEmettre(6800,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
SAUT STOCKE_ERRONE

#
#====================================================================
#=================== TYPE DE COMPTAGE = MAXIMUM =====================
#====================================================================
#
POINT CONTROLE_MAX

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

SI (ta_860026006 == 0) && (tc_860026006 != 0)
ALORS
	code_rejet_860026006 = 0x5031
	erreur_860026006 = i_PlvMessEmettre(6801,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
	SAUT STOCKE_ERRONE
FINSI

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

SI ta_860026006 <= tc_860026006
ALORS
	SAUT STOCKE_OK
FINSI

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

SI ( (tc_860026006<ta_860026006) && ((ta_860026006*100) <= (tc_860026006*S3_860026006)) )
ALORS
	erreur_860026006 = i_PlvMessEmettre(6802,2,g_iartin,"",2,ta_860026006,tc_860026006,0)
	SAUT STOCKE_OK
FINSI

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

SI ( (ta_860026006*100) > (S3_860026006*tc_860026006) )
ALORS
	code_rejet_860026006 = 0x5031
	erreur_860026006 = i_PlvMessEmettre(6803,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
	SAUT STOCKE_ERRONE
FINSI

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

code_rejet_860026006 = 0x5031
erreur_860026006 = i_PlvMessEmettre(6804,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
SAUT STOCKE_ERRONE

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

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

SI (ta_860026006 == 0) && (tc_860026006 != 0)
ALORS
	SAUT STOCKE_OK
FINSI

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

SI ta_860026006 <= tc_860026006
ALORS
	SAUT STOCKE_OK
FINSI

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

SI ( (tc_860026006<ta_860026006) && ((ta_860026006*100) <= (tc_860026006*S3_860026006)) )
ALORS
	erreur_860026006 = i_PlvMessEmettre(6802,2,g_iartin,"",2,ta_860026006,tc_860026006,0)
	SAUT STOCKE_OK
FINSI

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

SI ( (ta_860026006*100) > (S3_860026006*tc_860026006) )
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 102 : Cas non prevu !!!
#####################################################################

code_rejet_860026006 = 0x5031
erreur_860026006 = i_PlvMessEmettre(6805,2,g_iartin,"",3,code_rejet_860026006,ta_860026006,tc_860026006)
SAUT STOCKE_ERRONE

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

#####################################################################
# POINT de branchement : mise a jour champ taxe par la taxe calculee
#####################################################################
POINT MAJ_TAXE
# trace("Mise a jour du champ TAXE")

#####################################################################
#	Test : taxe > 65534 et champ T3cap2 (2 octets)
#####################################################################
SI tc_860026006 > 65534
ALORS
	SI T3cap2_860026006 > 0
	ALORS
		code_rejet_860026006 = 0x5031
		erreur_860026006 = i_PlvMessEmettre(6806,2,g_iartin,"",1,code_rejet_860026006,0,0)
		SAUT STOCKE_ERRONE
	SINON
		erreur_860026006 = i_set_art_field(g_iartin,$Tns6dc::TAXE:1,tc_860026006)
	FINSI
SINON
	SI T3cap2_860026006 > 0
	ALORS
		erreur_860026006 = i_set_art_field(g_iartin,$Tns6dc::TAXE:0,tc_860026006)
	SINON
		erreur_860026006 = i_set_art_field(g_iartin,$Tns6dc::TAXE:1,tc_860026006)
	FINSI
FINSI
#
# On force le bit g de SCT a 1 (indication champ TAXE renseigne)
#
# Le champ SCT peut avoir ete modifier (si changement d'ICAR)
g_iartin.SCT = g_iartin.SCT | 0x02

SAUT STOCKE_OK

POINT MAJ_TAXCAL
erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4taxcal,$Tns6dc::TAXCAL,0)
erreur_860026006 = i_set_art_field(g_iartin, $Tns6dc::TAXCAL, tc_860026006)
SAUT STOCKE_OK

#
#====================================================================
#==================== BRANCHEMENTS POUR STOCKAGE ====================
#====================================================================
POINT STOCKE_OK

#	 trace("Stockage de l'article")

# EV616 : Calcul et traitement du champ ZLT
# G2R1Ch : REJET2
# G2R2Cv : REJET3
# G2R2Cv lot 2 : REJET4
# G3R3Cv : REJET6
SI (comptage_zlt_860026006 == 1)
ALORS
	SI ( type_cpt_860026006 != CPT_REJET_860026006 && type_cpt_860026006 != CPT_SYMPHO_860026006 && type_cpt_860026006 != CPT_REJET2_860026006 && type_cpt_860026006 != CPT_REJET3_860026006 && val_REJET_860026006 != CPT_REJET4_860026006 )
	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_860026006 == -1)
		ALORS
			result_zlt_860026006 = i_get_zlt(g_icopo,BASE_TELEPHONE_860026006,sdate_860026006)
		FINSI
		# analyse du reultat de l'appel a la fonction i_get_zlt
		SI (result_zlt_860026006 == -1)
		ALORS
			erreur_860026006 = i_PlvMessEmettre(6807,2,g_iartin,"",1,typarticle_860026006,0,0)
			valeur_zlt_860026006 = -1
		SINON
			SI ((result_zlt_860026006 & 0x01) == 1)
			ALORS
				# resultat impair
				valeur_zlt_860026006 = 1
				erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4ZLT,$Tns6dc::ZLT,0)
				erreur_860026006 = i_set_art_field(g_iartin, $Tns6dc::ZLT, valeur_zlt_860026006)
			SINON
				# resultat pair
				valeur_zlt_860026006 = 0
				erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4ZLT,$Tns6dc::ZLT,0)
				erreur_860026006 = i_set_art_field(g_iartin, $Tns6dc::ZLT, valeur_zlt_860026006)
			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_860026006 == 0)
ALORS
	# Ajout condition propre aux inefficaces sans DEDE (FO1295):
	SI ( ( TAP_860026006 & 0x40 ) && ( !i_valid_field_n(g_iartin,$NDE) ) )
	ALORS
		trace("Pas d appel a i_comptage !")
	SINON
		#trace("Appel a i_comptage realise et valide : maj CCD")
		erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4ccd,$Tns6dc::CCD,0)
		erreur_860026006 = i_set_art_field(g_iartin, $Tns6dc::CCD, code_dest_860026006)
	FINSI
FINSI

SI (flag_stat_860026006 == 1) && (nocodedest_860026006 == 0)
ALORS
#	trace("Appel a i_comptage realise et valide : maj CTT")
	type_traf_860026006 = g_icopo.SUP[RES_TTRAFIC_860026006]
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4typtra,$Tns6dc::CTT,0)
	erreur_860026006 = i_set_art_field(g_iartin,$Tns6dc::CTT,type_traf_860026006)
FINSI
# XYZ trafic fin

# Ajout 0x00FE dans le cas de seltrans=1 et flag_stat=1
SI ((flag_stat_860026006 == 1) && (seltrans_860026006 == 1))
ALORS
#	trace("Selection transporteur non FT : maj CTT = 0x00FE et CCD = 0xFE")
	SI (!i_valid_field_n(g_iartin,$Tns6dc::CTT))
	ALORS
		erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4typtra,$Tns6dc::CTT,0)
	FINSI
	erreur_860026006 = i_set_art_field(g_iartin,$Tns6dc::CTT,code_dest_860026006)

#	g_iartin.CCD = code_dest
	SI (!i_valid_field_n(g_iartin,$Tns6dc::CCD))
	ALORS
		erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4ccd,$Tns6dc::CCD,0)
	FINSI
	erreur_860026006 = i_set_art_field( g_iartin, $Tns6dc::CCD, code_dest_860026006 )
FINSI

# Ajout du champ REJET (LRA - 21/06/01)
SI (type_cpt_860026006==CPT_REJET_860026006)
ALORS
	#trace("Ajout du champ REJET=1")
	val_REJET_860026006=1
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4rejet,$Tns6dc::REJET,0)
	erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::REJET,val_REJET_860026006)
FINSI

# G2R1Ch : REJET2
SI (type_cpt_860026006==CPT_REJET2_860026006)
ALORS
	#trace("Ajout du champ REJET=2")
	val_REJET_860026006=2
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4rejet,$Tns6dc::REJET,0)
	erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::REJET,val_REJET_860026006)
FINSI

# G2R2Cv : REJET3
SI (type_cpt_860026006==CPT_REJET3_860026006)
ALORS
	#trace("Ajout du champ REJET=3")
	val_REJET_860026006=3
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4rejet,$Tns6dc::REJET,0)
	erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::REJET,val_REJET_860026006)
FINSI

# G3R3Cv : REJET6
SI (type_cpt_860026006==CPT_REJET6_860026006)
ALORS
	#trace("Ajout du champ REJET=14")
	val_REJET_860026006=14
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4rejet,$Tns6dc::REJET,0)
	erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::REJET,val_REJET_860026006)
FINSI

# G2R2Cv lot 2 : REJET4 (3212 retour BNC = 13)
# calcule plus haut (ligne 1004)

SI (type_cpt_860026006==CPT_SYMPHO_860026006)
ALORS
	#trace("Ajout du champ REJET = CPT_SYMPHO")
	val_REJET_860026006=CPT_SYMPHO_860026006
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4rejet,$Tns6dc::REJET,0)
	erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::REJET,val_REJET_860026006)
FINSI

#DRE G4R6 lot2
SI ( (type_cpt_860026006==CPT_CPS_Loc_860026006) || (type_cpt_860026006==CPT_CPS_RI_860026006) )
ALORS
	#trace("Ajout du champ REJET = CPS_Loc ou CPS_RI")
	val_REJET_860026006=type_cpt_860026006
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4rejet,$Tns6dc::REJET,0)
	erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::REJET,val_REJET_860026006)
FINSI
#\DRE G4R6 lot2

# MAJ des codes de circonscription ddeur et dde
erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4codcirdr,$Tns6dc::CODCIRDR,0)
erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::CODCIRDR,CODCIRDR_860026006)

erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4codcir,$Tns6dc::CODCIR,0)
erreur_860026006=i_set_art_field(g_iartin,$Tns6dc::CODCIR,CODCIR_860026006)

SI (appel_base_860026006 == 1)
ALORS
	erreur_860026006=i_ajoutChampNum(g_iartin,$Tns6dc::T4normal,$Tns6dc::NORMAL,0)
	indice_860026006 = 0
	POINT BOUCLE_NDE
	res_860026006 = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice_860026006)
	#trace1(" element : %x",res)
	SI (res_860026006 != 00)
	ALORS
		# Cas particuliers : * (2A en ASCII) et # (23 en ASCII)
		SI (res_860026006 == 0x2a)
		ALORS
			erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::NORMAL, indice_860026006, 0xB)
			indice_860026006 = indice_860026006 + 1
			SAUT BOUCLE_NDE
		FINSI

		SI (res_860026006 == 0x23)
		ALORS
			erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::NORMAL, indice_860026006, 0xC)
			indice_860026006 = indice_860026006 + 1
			SAUT BOUCLE_NDE
		FINSI

		# Cas generique
		erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::NORMAL, indice_860026006, res_860026006-0x30)
		indice_860026006 = indice_860026006 + 1
		SAUT BOUCLE_NDE
	SINON
		erreur_860026006 = i_set_art_fieldtab(g_iartin, $Tns6dc::NORMAL, indice_860026006, 0xFF)
	FINSI
FINSI

erreur_860026006 = i_stocke_art(g_iartin,stocke_date_860026006,PT_OK,0)

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

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

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

stocke_date_860026006 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)
erreur_860026006 = i_make_art_rej(g_iartin, g_iartout, code_rejet_860026006)
erreur_860026006 = i_stocke_art(g_iartout,stocke_date_860026006,PT_ERRONE,0)

#trace("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 traitement : Stockage en ELIMINE" )
#ENDIF
erreur_860026006 = i_stocke_art( g_iartin, 0, PT_DIVERS, 0 )

RETOUR TRAIT_OK
# ------------------------- Fin PCODE Tns6dc_trt.src ---------------------------
