DEFINITION COD_Q_860026007 2
DEFINITION COD_P_860026007 5
DEFINITION BASE_TELEPHONE_860026007 1
DEFINITION CODE_NUMERIS_860026007 3
DEFINITION RES_CLDEST_860026007 1
DEFINITION RES_TYPCPT_860026007 2
DEFINITION RES_CODCIR_860026007 3
DEFINITION RES_CODCIRDR_860026007 5
DEFINITION CPT_NOT_860026007 0
DEFINITION CPT_MAX_860026007 1
DEFINITION CPT_EGAL_860026007 3
DEFINITION CPT_SYMPHO_860026007 4
DEFINITION CPT_MAX_NOMODIF_860026007 5
DEFINITION CPT_REJET_860026007 11
DEFINITION CPT_REJET2_860026007 10
DEFINITION CPT_REJET3_860026007 12
DEFINITION CPT_REJET6_860026007 14
DEFINITION CPT_IMPOSE_860026007 7
DEFINITION S1_860026007 109225
DEFINITION S2_860026007 205
DEFINITION S3_860026007 110
DEFINITION S4_860026007 1
DEFINITION AUT_NDEUR_860026007 "ATL_NDEUR3"
DEFINITION AUT_NDE_860026007 "ATL_ZN_NDE2+"
DEFINITION RES_TTRAFIC_860026007 1
DEFINITION CCD_FCT_860026007 0x18
DEFINITION CPT_CPS_Loc_860026007 16
DEFINITION CPT_CPS_RI_860026007 17
REGISTRE ENTIER stocke_date_860026007
REGISTRE ENTIER type_cpt_860026007
REGISTRE ENTIER ta_860026007
REGISTRE ENTIER tc_860026007
REGISTRE ENTIER tr_860026007
REGISTRE ENTIER sdate_860026007
REGISTRE ENTIER duree_860026007
REGISTRE ENTIER dr_860026007
REGISTRE ENTIER code_rejet_860026007
REGISTRE ENTIER erreur_860026007
REGISTRE ENTIER cr_860026007
REGISTRE ENTIER SUP_860026007
REGISTRE ENTIER CAX_860026007
REGISTRE ENTIER SCT_860026007
REGISTRE ENTIER TAP_860026007
REGISTRE ENTIER T3cap2_860026007
REGISTRE ENTIER T3cab_860026007
REGISTRE ENTIER T3cha_860026007
REGISTRE ENTIER MES1_860026007
REGISTRE ENTIER MES2_860026007
REGISTRE ENTIER categ_860026007
REGISTRE ENTIER code_dest_860026007
REGISTRE ENTIER nocodedest_860026007
REGISTRE ENTIER seltrans_860026007
REGISTRE ENTIER modif_article_860026007
REGISTRE ENTIER pos_deb_860026007
REGISTRE ENTIER efgh_860026007
REGISTRE ENTIER inf_dede_860026007
REGISTRE ENTIER CODCIR_860026007
REGISTRE ENTIER CODCIRDR_860026007
REGISTRE ENTIER appel_base_860026007
REGISTRE ENTIER flag_stat_860026007
REGISTRE ENTIER cle_860026007
REGISTRE ENTIER nde_860026007
REGISTRE ENTIER result_zlt_860026007
REGISTRE ENTIER valeur_zlt_860026007
REGISTRE ENTIER comptage_zlt_860026007
REGISTRE ENTIER val_REJET_860026007
REGISTRE ENTIER betav_860026007
REGISTRE ENTIER indice_860026007
REGISTRE ENTIER res_860026007
REGISTRE ENTIER type_traf_860026007
REGISTRE ENTIER P_860026007
REGISTRE ENTIER Q_860026007
REGISTRE POINTEUR pt_memo_860026007
####################################################################
# Pcode de TRAITEMENT
#	article DC CENTREX
#
#
# HH - 11/06/2001     Modifications de domaine_PRT et article_PRT pour permettre
#                     l'envoi des articles inefficaces vers le pcode de distribution.
#
# HH - 25/06/01       Ajout du champ REJET pour le pcode de distribution
#
# HH - 18/07/01       Ajout du champ NORMAL pour
#                     recuperer le ZA de NDE apres
#                     normalisation.
#
# HH - 08/10/01       Suppression de la MAJ de la variable code_dest qui donne 
#		      systematiquement CDD=0xFF
#
# URS - PSA - 03/07/02 : Correction ajout REJET
#
# URS - RBE - 15/07/02 : suppression code et commentaires inutilises 
# 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/RBE - 04/10/02	SI TRAFIC : recup. CODCIR et CODCIRDR de la BNC
# URS/RBE - 30/12/02 	Init. de type_cpt + Modif. DOM sur i_normal
# URS/RBE - 29/04/03	C14:Utilisation de i_get_art_field au lieu de i_get_artobj_attr
# URS/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 - 02/01/04	Mise a jour des codes erreur pour envoi en errone (code rejet)
# URS/RBE - 30/01/04	G2R0Ci:recup de tc pour SRP 089978 (via bnc- ctrl impose)
# URS/RBE - 18/03/04	FO568 et 585 : ajout de T4taxcal taxe calcule par Platine
# URS/RBE - 25/03/04	Inversion dans le code_rejet de efficace et inefficace
# 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 : 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) 10 operateur tiers
# URS/JLG - 09/05/05	Ch : FO1276
# 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)
# URS/JLG - 27/09/06	G2R2Cv : REJET3 (119 appel enfance maltraitee)
# URS/JLG - 14/11/06	G2R2Cv type_cpt=13 valeur possible (rejet4)
# URS/PKH - 06/11/07    G3R3Cv ajout REJET6 = 14 dans le cadre des appels 118 PTD & kiosque
# 03/10/2011 - RHE - VerifPcode
# 26/03/2014 - DRE - G4R6 : Lot2 prise en compte des nouveaux Type Control envoy?s par la base (C+S )
####################################################################

#////////////////////////////////////////////////////////////
# 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 le telephone 
#

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

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

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








# Ajout pour module CNET statistiques
# fin ajout CNET

# Test pour FCP sur T3cle (EV458)

# Test presence NDE (EV576)

# EV616 : Traitement du champ ZLT

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

# Ajout du champ NORMAL (HH - 18/07/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

# VerifPcode - RHE # p_memo renomme en pt_memo
pt_memo_860026007 = "pt_memo11111111111111111111111111111"
i_strcpy(pt_memo_860026007, "")

#####################################################################
# DEBUT DES TRAITEMENTS
#####################################################################
#
#	trace("Article DC Centrex VN7")

val_REJET_860026007=0
# VerifPcode - RHE # val_NORMAL=-1
type_cpt_860026007 = 0

# EV616 Traitement champ ZLT
comptage_zlt_860026007 = 0
result_zlt_860026007 = -1
appel_base_860026007 = 0

#
# VerifPcode - RHE # beta = 0
betav_860026007 = 0
flag_stat_860026007 = 0

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

# Initialisation des parametres pour les CS
MES1_860026007 = 0xFF
MES2_860026007 = 0xFF
# fin de l'initialisation

# Initialisation pour le secret du demandeur
# VerifPcode - RHE # secretndr = 0

# Detection de la modification g_iartin en g_iartout7
modif_article_860026007 = 0

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

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


CODCIR_860026007  = 0
CODCIRDR_860026007 = 0

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

#FO1603 les DC RPVI_TC sont uniquement pour Symphonie
#FO1603  La facturation s effectue par le DC du RI
#FO1678 Ajout de la condition sur NDE
SI i_valid_field_n(g_iartin,$Tcentrex::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_860026007 = i_verify_value( g_iartin, "T3cle", 0x47 )
		SI (cle_860026007 == 1)
		ALORS
			code_dest_860026007     = 0xFF
			flag_stat_860026007      = 0
        		#masqueFO1603#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_860026007 = i_valid_field_n(g_iartin,$Tcentrex::T3cap2)
T3cab_860026007 = i_valid_field_n(g_iartin,$Tcentrex::T3cab)

SI T3cap2_860026007 > 0
ALORS
# trace("T3cap2 present")
#####################################################################
#	Test : champs T3cap2 et T3cab presents
#####################################################################
	SI T3cab_860026007 > 0
	ALORS
#   	trace("T3cab present")
		code_rejet_860026007 = 0x50F2
		erreur_860026007 = i_PlvMessEmettre(6890,2,g_iartin,"",1,code_rejet_860026007,0,0)
		SAUT STOCKE_ERRONE
	FINSI

#   trace("T3cab absent")
	ta_860026007 = i_get_art_field(g_iartin,$Tcentrex::TAXE:0)
	CAX_860026007 = i_get_art_field(g_iartin,$Tcentrex::CAX:0)
	SUP_860026007 = i_get_art_field(g_iartin,$Tcentrex::SUP:0)
	TAP_860026007 = i_get_art_field(g_iartin,$Tcentrex::TAP:0)
	duree_860026007 = i_get_art_field(g_iartin,$Tcentrex::DUREE:0)
SINON
# 	trace("T3cap2 absent")
#####################################################################
#	Test : champs T3cap2 et T3cab absents
#####################################################################
	SI T3cab_860026007 <= 0
	ALORS
#   	trace("T3cab absent")
		code_rejet_860026007 = 0x50F2
		erreur_860026007 = i_PlvMessEmettre(6891,2,g_iartin,"",1,code_rejet_860026007,0,0)
		SAUT STOCKE_ERRONE
	FINSI

#   trace("T3cab present")
	ta_860026007 = i_get_art_field(g_iartin,$Tcentrex::TAXE:1)
	CAX_860026007 = i_get_art_field(g_iartin,$Tcentrex::CAX:1)
	SUP_860026007 = i_get_art_field(g_iartin,$Tcentrex::SUP:1)
	TAP_860026007 = i_get_art_field(g_iartin,$Tcentrex::TAP:1)
	duree_860026007 = i_get_art_field(g_iartin,$Tcentrex::DUREE:1)
FINSI

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

###########################################################################
# Determination type de date et conversion fin de comm -> debut de comm
# Si SCT : bits BC = 00: heure fin de comm
# Si SCT : bits BC = 01: heure debut de comm
#
###########################################################################
sdate_860026007 = i_get_art_field(g_iartin, $Tcentrex::DATE)

SCT_860026007 = 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_860026007 & 0x60) == 0x00)
ALORS
#	trace("DATE = heure de fin de comm : conversion en debut de comm")
	sdate_860026007 = sdate_860026007 - duree_860026007
	erreur_860026007 = i_set_art_date(g_iartin,sdate_860026007)
	g_iartin.SCT = SCT_860026007 | 0x20
	
	SAUT FIN_SCT
FINSI

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

#####################################################################
#	Test : bits BC champ SCT != 00, 01
#####################################################################
SI TAP_860026007 & 0x40
ALORS
	code_rejet_860026007   = 0x5040
SINON
	code_rejet_860026007   = 0x5041
FINSI
erreur_860026007 = i_PlvMessEmettre(6893,2,g_iartin,"",2,code_rejet_860026007,SCT_860026007,0)
SAUT STOCKE_ERRONE

POINT FIN_SCT

#####################################################################
#	Determination de la date de stockage
#####################################################################
stocke_date_860026007 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)

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


#####################################################################
#	Test : bit B champ TAP == 1 (inefficace)
#####################################################################
SI TAP_860026007 & 0x40
ALORS
#	trace("Article inefficace : stockage en OK")
	SAUT STOCKE_OK
FINSI


#####################################################################
#	Test : champs NDE absent si non ineff (EV576)
#####################################################################
nde_860026007 = i_valid_field_n(g_iartin, $Tcentrex::NDE)
SI (nde_860026007 == 0)
ALORS
# 	Stockage en erronee
	code_rejet_860026007 = 0x5041
	erreur_860026007 = i_PlvMessEmettre(6928,2,g_iartin,"",1,code_rejet_860026007,0,0)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test : bits AC champ TAP == 11
#####################################################################
# test des bits a et c uniquement
SI ((TAP_860026007 & 0xa0)  == 0xa0)
ALORS	
	code_rejet_860026007 = 0x5041
	erreur_860026007 = i_PlvMessEmettre(6894,2,g_iartin,"",1,code_rejet_860026007,0,0)
	SAUT STOCKE_ERRONE
FINSI

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

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

#####################################################################
#	test 4 : TA > S1
#####################################################################
SI ta_860026007 > S1_860026007
ALORS
        code_rejet_860026007 = 0x5031
        erreur_860026007 = i_PlvMessEmettre(6895,2,g_iartin,"",2,code_rejet_860026007,ta_860026007,0)
        SAUT STOCKE_ERRONE
FINSI

# 
# Seuls les articles allo sont stockes sans
# controle de valorisation
# 
#####################################################################
#   Determination de la nature de la communication
#   tests sur inf_dede et NDE (26/01/00)
#####################################################################

inf_dede_860026007 = i_get_art_field(g_iartin,$Tcentrex::INF_DEDE)
efgh_860026007 = (inf_dede_860026007 & 0x0f)
	
#	bits AB=01 cas de AXE10 - RG - sans prefixe d acces
SI ( (inf_dede_860026007 & 0xC0) == 0x40 )
ALORS
#Numero centrex
    SI (efgh_860026007 == 1)
    ALORS
#	trace("normalisation : Numero centrex")
	SAUT NORMALISATION
    SINON
#	Numero national sans selection transporteur
	SI (efgh_860026007 == 2)
	ALORS
#	    ZABPQmcdu -> 0ZABPQmcdu
	    erreur_860026007 = i_add_quart_name("NDE",0,15,"0",
					g_iartin,g_iartout7)
	    modif_article_860026007 = 1

#trace("normalisation : Numero national sans selection transporteur")
	    SAUT NORMALISATION
	SINON
#	Numero national avec selection transporteur
	    SI (efgh_860026007 == 4)
	    ALORS
#		XYZABPQmcdu -> 0ZABPQmcdu
		erreur_860026007 = i_supp_quart_name("NDE",
				0,1,15,	g_iartin,g_iartout7)
		g_iartout7.NDE[0] = 0
		modif_article_860026007 = 1
#trace("normalisation : Numero national avec selection transporteur")
		SAUT NORMALISATION
	    SINON
		SI (efgh_860026007 == 0)
		ALORS
#		Numero national avec prefixe eventuel
		    SI ((g_iartin.NDE[0] == 0xB) && (g_iartin.NDE[1] == 0x3))
		    ALORS
			erreur_860026007 = i_supp_quart_name("NDE",
				0,4,15, g_iartin,g_iartout7)
			modif_article_860026007 = 1
		    FINSI
		    SAUT NORMALISATION
		FINSI
	    FINSI
	FINSI
    FINSI
SINON
    SI ( (inf_dede_860026007 & 0xC0) == 0x00 )
    ALORS
#Acces au reseau general par E10B3
	SI ( (g_iartin.NDE[0] == 0x0) && (g_iartin.NDE[1] == 0x3) && 
             (g_iartin.NDE[2] == 0x6) && (g_iartin.NDE[3] == 0x5) && 
             (g_iartin.NDE[4] == 0x1) && (g_iartin.NDE[5] == 0x0) )
	ALORS
	    erreur_860026007 = i_supp_quart_name("NDE",0,6,15,g_iartin,g_iartout7)
	    modif_article_860026007 = 1
	SINON
	  SI ((g_iartin.NDE[0] == 0xB) && (g_iartin.NDE[1] == 0x3) &&
              (g_iartin.NDE[2] == 0x1) && (g_iartin.NDE[3] == 0xB) &&
	      (g_iartin.NDE[4] == 0x0)) 
	  ALORS
	      erreur_860026007 = i_supp_quart_name("NDE",0,5,15,g_iartin,g_iartout7)
	      modif_article_860026007 = 1
	  SINON
	    SI (g_iartin.NDE[0] == 0x0)
	    ALORS
#     	00ZABPQmcdu -> 0ZABPQmcdu
          	erreur_860026007 = i_supp_quart_name("NDE",0,1,15,g_iartin,g_iartout7)
          	modif_article_860026007 = 1
	    SINON
        	code_rejet_860026007 = 0x5011
        	erreur_860026007 = i_PlvMessEmettre(6897,2,g_iartin,"",2,code_rejet_860026007,0,0)
        	SAUT STOCKE_ERRONE
	    FINSI
	  FINSI
	FINSI
	SAUT NORMALISATION
    FINSI
FINSI

#####################################################################
#   TRAITEMENT PAR DEFAUT CENTREX
#####################################################################
# trace("Traitement par defaut sans normalisation")

# Par defaut CCD=0xFF et CTT=0xFFFF
code_dest_860026007 = 0xFF
g_icopo.SUP[RES_TTRAFIC_860026007] = 0xFFFF
flag_stat_860026007 = 1

SAUT STOCKE_OK

#####################################################################
#   Normalisation des numeros APPELANT et IDAV
#####################################################################

POINT NORMALISATION

SI ( modif_article_860026007 == 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_860026007>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_860026007 = 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]
# debut FO930
	SINON
                SI ((betav_860026007 <= 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_860026007 = i_supp_quart_name("NDE",0,4,15,g_iartout7,g_iartout7)
                        FINSI
                FINSI
# FIN FO930

	FINSI
SINON
# 	trace("Traitement COCA avec utilisation g_iartin")
# 	Ajout de 16XY devant le NDE :
# 	Si le code du transporteur (COCA ou COCAV) est present dans l'article 
# 	et si le NDE debute par 0, on effectue l'ajout (beta ou betav si beta absent)
#
	SI ( (betav_860026007>0) && (g_iartin.NDE[0] == 0x0) )
	ALORS
# 		On renseigne XY = T3coca/BETA :
# 		En VN7, le code du transporteur sera toujours sur 2 digits
# 		A revoir pour VN8 (on aura 3 digits Plus bourrage : XYZF) !!!
# 		Ajout de 16XY devant le NDE
#		trace("champ betav present et NDE commence par '0' : ajout de 16XY")

		erreur_860026007 = i_add_quart_name("NDE",0,15,"1600",g_iartin,g_iartout7)
		g_iartout7.NDE[2] = g_iartout7.BETAV[0]	
		g_iartout7.NDE[3] = g_iartout7.BETAV[1]
		modif_article_860026007 = 1
# debut FO930
        SINON
                SI ((betav_860026007 <= 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_860026007 = i_supp_quart_name("NDE",0,4,15,g_iartin,g_iartout7)
                                modif_article_860026007 = 1
                        FINSI
                FINSI
# fin FO930

	FINSI
FINSI

#	trace("Normalisation des NDEUR/IDAV avec g_iartout7")
SI (modif_article_860026007 == 1)
ALORS
	erreur_860026007 = i_normal_dila(g_iartout7,$Tcentrex::NDR,$Tcentrex::NDE,"LDnumeris","",
		g_icopo,$Tcopo::NDR,$Tcopo::NDE,3,AUT_NDEUR_860026007,AUT_NDE_860026007)
SINON
	erreur_860026007 = i_normal_dila(g_iartin,$Tcentrex::NDR,$Tcentrex::NDE,"LDnumeris","",
		g_icopo,$Tcopo::NDR,$Tcopo::NDE,3,AUT_NDEUR_860026007,AUT_NDE_860026007)
FINSI

#####################################################################
#	Initialisation de l'interface "proc_copo" et calcul taxation
#####################################################################
# trace ("Calcul de valorisation")

categ_860026007 = (8 * CAX_860026007) + SUP_860026007
g_icopo.TAXE   = 0
g_icopo.CREDIT = 0
erreur_860026007 = i_set_art_date(g_icopo,sdate_860026007)
g_icopo.DUREE  = duree_860026007
g_icopo.CODE   = CODE_NUMERIS_860026007
g_icopo.CATEG  = categ_860026007
g_icopo.SUP[0] = 0
g_icopo.SUP[1] = 0
g_icopo.SUP[2] = 0
g_icopo.SUP[3] = 0
g_icopo.SUP[4] = 0

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

cr_860026007 = i_comptage(g_icopo,BASE_TELEPHONE_860026007,sdate_860026007)
appel_base_860026007 = 1

# EV616 : Traitement du champ ZLT
comptage_zlt_860026007 = 1

#####################################################################
#	Test 6 : calcul taxe impossible
#####################################################################
SI cr_860026007 != 0
ALORS
        code_rejet_860026007 = 0x5021
        erreur_860026007 = i_PlvMessEmettre(6898,2,g_iartin,"",2,code_rejet_860026007,g_ierrno,0)
        SAUT STOCKE_ERRONE
FINSI

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

# MAJ des code de circonscription de dde et ddeur
CODCIR_860026007 = g_icopo.SUP[RES_CODCIR_860026007]
CODCIRDR_860026007 = g_icopo.SUP[RES_CODCIRDR_860026007]

code_dest_860026007 = g_icopo.SUP[RES_CLDEST_860026007]
SI (seltrans_860026007 == 1)
ALORS
	SI ( code_dest_860026007 != CCD_FCT_860026007 )
	ALORS
	    code_dest_860026007   = 0xFE
	FINSI
FINSI
# G2R1Ch : REJET2
# G2R2Cv : REJET3
#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_860026007==CPT_CPS_Loc_860026007) || (type_cpt_860026007==CPT_CPS_RI_860026007) || (type_cpt_860026007 == CPT_REJET_860026007) || (type_cpt_860026007 == CPT_SYMPHO_860026007) || (type_cpt_860026007 == CPT_REJET2_860026007) || (type_cpt_860026007 == CPT_REJET3_860026007) || (type_cpt_860026007 == CPT_REJET6_860026007))
ALORS
	flag_stat_860026007 = 1
	SAUT STOCKE_OK
FINSI

SI (seltrans_860026007 == 1)
ALORS
	SAUT STOCKE_OK
FINSI


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

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

cle_860026007 = i_verify_value(g_iartin,"T3cle",0x01)
SI (cle_860026007 == 1)
ALORS
	code_dest_860026007 = g_icopo.SUP[RES_CLDEST_860026007]
	flag_stat_860026007 = 1
	SAUT STOCKE_OK
FINSI

# trace("Traitement par defaut avec normalisation")

# Par defaut CCD=0xFF et CTT=0xFFFF
# code_dest = 0xFF (MAJ HH - 08/10/01)
g_icopo.SUP[RES_TTRAFIC_860026007] = 0xFFFF
flag_stat_860026007 = 1

tc_860026007 = g_icopo.TAXE
SI type_cpt_860026007 == CPT_IMPOSE_860026007
ALORS
	SAUT MAJ_TAXCAL
FINSI

#####################################################################
#   POUR L'INSTANT PAR DE CONTROLE DE VALORISATION !!!
#####################################################################
#	trace("Pas de controle de valorisation sur DC Centrex VN7 : stockage en OK")
SAUT STOCKE_OK

#####################################################################
#   Debut controle de valorisation (non utilise)
#####################################################################

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

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

#
# ==== 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_860026007 & 0x02) == 0
ALORS
#####################################################################
#   Test 127 : pas de taxe annoncee, cas du controle EGALITE
#			on stocke avec TC
#####################################################################
	SI type_cpt_860026007 == CPT_EGAL_860026007
	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_860026007 = 0x5031
	erreur_860026007 = i_PlvMessEmettre(6899,2,g_iartin,"",2,code_rejet_860026007,type_cpt_860026007,0)
	SAUT STOCKE_ERRONE
FINSI

SI type_cpt_860026007 == CPT_EGAL_860026007
ALORS
	SAUT CONTROLE_EGAL
FINSI

SI type_cpt_860026007 == CPT_MAX_860026007
ALORS
	SAUT CONTROLE_MAX
FINSI

SI type_cpt_860026007 == CPT_MAX_NOMODIF_860026007
ALORS
	SAUT CONTROLE_MAX_NOMODIF
FINSI
# G2R2Cv type_cpt=13 valeur possible (rejet4)
SI ((type_cpt_860026007 == CPT_NOT_860026007) || ((type_cpt_860026007 > 5) && (type_cpt_860026007 < 14)))
ALORS
#	erreur = i_PlvMessEmettre(6662,2,g_iartin,"",2,ta,tc,0)
	SAUT STOCKE_OK
SINON
#####################################################################
#   Test 104 : type de controle inconnu
#####################################################################
	code_rejet_860026007 = 0x5031
	erreur_860026007 = i_PlvMessEmettre(6900,2,g_iartin,"",2,code_rejet_860026007,type_cpt_860026007,0)
	SAUT STOCKE_ERRONE
FINSI

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

SI tc_860026007 == ta_860026007
ALORS

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

	SI duree_860026007 != 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
#####################################################################

	T3cha_860026007 = i_valid_field_n(g_iartin,$Tcentrex::T3cha)

	SI T3cha_860026007 > 0
	ALORS
		MES1_860026007 = i_get_art_field(g_iartin,$Tcentrex::MES1)
		MES2_860026007 = i_get_art_field(g_iartin,$Tcentrex::MES2)
	FINSI

	SI (tc_860026007 == 0)
	ALORS
		SI ((MES1_860026007 != 0xFF) || (MES2_860026007 != 0xFF))
		ALORS
			SAUT STOCKE_OK
		FINSI
	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_860026007 = i_comptage(g_icopo,BASE_TELEPHONE_860026007,sdate_860026007)
	tr_860026007 = g_icopo.TAXE

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

	SI tr_860026007 == ta_860026007
	ALORS
		SAUT STOCKE_OK
	FINSI

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

	code_rejet_860026007 = 0x5031
	erreur_860026007 = i_PlvMessEmettre(6901,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tr_860026007)
	SAUT STOCKE_ERRONE
FINSI

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

SI duree_860026007 == 0 
ALORS

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

	SI (ta_860026007 == 0) && (tc_860026007 != 0) 
	ALORS
		code_rejet_860026007 = 0x5031
		erreur_860026007 = i_PlvMessEmettre(6902,2,g_iartin,"",2,code_rejet_860026007,tc_860026007,0)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026007 == 1) && (tc_860026007 == 0) 
	ALORS
		code_rejet_860026007 = 0x5031
		erreur_860026007 = i_PlvMessEmettre(6889,2,g_iartin,"",1,code_rejet_860026007,0,0)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026007 >= 1) && (tc_860026007 != 0) 
	ALORS
		code_rejet_860026007 = 0x5031
		erreur_860026007 = i_PlvMessEmettre(6903,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026007 > 1) && (tc_860026007 == 0) 
	ALORS
		code_rejet_860026007 = 0x5031
		erreur_860026007 = i_PlvMessEmettre(6904,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
		SAUT STOCKE_ERRONE
	FINSI
SINON

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

	SI (ta_860026007 == 0) && (tc_860026007 != 0) 
	ALORS
		code_rejet_860026007 = 0x5031
		erreur_860026007 = i_PlvMessEmettre(6905,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
		SAUT STOCKE_ERRONE
	FINSI

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

	SI (ta_860026007 != 0) && (tc_860026007 == 0) 
	ALORS
		code_rejet_860026007 = 0x5031
		erreur_860026007 = i_PlvMessEmettre(6906,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

#####################################################################
#	Test 9A/9B: (TC < TA) && (TA <= TC + S4) et recalcul avec DA + 1
#####################################################################
SI ((tc_860026007 < ta_860026007) && (ta_860026007 <= tc_860026007 + S4_860026007))
ALORS
	dr_860026007 = duree_860026007 + 1
	g_icopo.TAXE   = 0
	g_icopo.CREDIT = 0
	g_icopo.DUREE  = dr_860026007
	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_860026007 = i_comptage(g_icopo, BASE_TELEPHONE_860026007, sdate_860026007)
	tr_860026007 = g_icopo.TAXE
	SI (ta_860026007 == tr_860026007)
	ALORS

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

		erreur_860026007 = i_PlvMessEmettre(6907,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	SINON

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

		erreur_860026007 = i_PlvMessEmettre(6908,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI
FINSI

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

SI ((tc_860026007 - S4_860026007 <= ta_860026007) && (ta_860026007 < tc_860026007))
ALORS
	P_860026007 = i_get_tax_param(pt_memo_860026007, COD_P_860026007, 0)
	Q_860026007 = i_get_tax_param(pt_memo_860026007, COD_Q_860026007, 0)

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

	SI ((Q_860026007 == 0) && (P_860026007 != 0))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6909,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026007 != 0) && (P_860026007 == 0))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6910,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026007 != 0) && (P_860026007 != 0) && (ta_860026007 <= Q_860026007))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6911,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026007 != 0) && (P_860026007 != 0) && (ta_860026007 > Q_860026007))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6912,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI
FINSI


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

SI ( ((tc_860026007*100) <= (ta_860026007*S2_860026007)) && (ta_860026007 < (tc_860026007-S4_860026007)) )
ALORS
	P_860026007 = i_get_tax_param(pt_memo_860026007, COD_P_860026007, 0)
	Q_860026007 = i_get_tax_param(pt_memo_860026007, COD_Q_860026007, 0)

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

	SI ((Q_860026007 == 0) && (P_860026007 != 0))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6913,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026007 != 0) && (P_860026007 == 0))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6914,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026007 != 0) && (P_860026007 != 0) && (ta_860026007 <= Q_860026007))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6915,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI

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

	SI ((Q_860026007 != 0) && (P_860026007 != 0) && (ta_860026007 > Q_860026007))
	ALORS
		erreur_860026007 = i_PlvMessEmettre(6916,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
		SAUT STOCKE_OK
	FINSI
FINSI

#####################################################################
#	Test 11: TC+S4 < TA <= TCxS2
#####################################################################
SI ( ((tc_860026007+S4_860026007) < ta_860026007 ) && ((ta_860026007*100) <= (tc_860026007*S2_860026007)) )
ALORS
	erreur_860026007 = i_PlvMessEmettre(6917,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 12: TA/TC > S2 ou TC/TA > S2
#####################################################################
SI  ( ((ta_860026007*100) > (S2_860026007*tc_860026007)) || ((tc_860026007*100) > (S2_860026007*ta_860026007)) )
ALORS
	code_rejet_860026007 = 0x5031
	erreur_860026007 = i_PlvMessEmettre(6918,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 100 : Cas non prevu !!!
#####################################################################
code_rejet_860026007 = 0x5031
erreur_860026007 = i_PlvMessEmettre(6919,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
SAUT STOCKE_ERRONE

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

#####################################################################
#	Test 13 : TA == 0 et TC != 0
#####################################################################
SI (ta_860026007 == 0) && (tc_860026007 != 0) 
ALORS
	code_rejet_860026007 = 0x5031
	erreur_860026007 = i_PlvMessEmettre(6920,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 14 : TA <= TC (cas normal)
#####################################################################
SI ta_860026007 <= tc_860026007
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 16 : TC < TA <= TCxS3
#####################################################################
SI ( (tc_860026007<ta_860026007) && ((ta_860026007*100) <= (tc_860026007*S3_860026007)) )
ALORS
	erreur_860026007 = i_PlvMessEmettre(6921,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 17 : TA/TC > S3
#####################################################################
SI ( (ta_860026007*100) > (S3_860026007*tc_860026007) )
ALORS
	code_rejet_860026007 = 0x5031
	erreur_860026007 = i_PlvMessEmettre(6922,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
#	Test 101 : Cas non prevu !!!
#####################################################################
code_rejet_860026007 = 0x5031
erreur_860026007 = i_PlvMessEmettre(6923,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
SAUT STOCKE_ERRONE

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

#####################################################################
#	Test 13 : TA == 0 et TC != 0
#####################################################################
SI (ta_860026007 == 0) && (tc_860026007 != 0) 
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 14 : TA <= TC (cas normal)
#####################################################################
SI ta_860026007 <= tc_860026007
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 16 : TC < TA <= TCxS3
#####################################################################
SI ( (tc_860026007<ta_860026007) && ((ta_860026007*100) <= (tc_860026007*S3_860026007)) )
ALORS
	erreur_860026007 = i_PlvMessEmettre(6921,2,g_iartin,"",2,ta_860026007,tc_860026007,0)
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 17 : TA/TC > S3
#####################################################################
SI ( (ta_860026007*100) > (S3_860026007*tc_860026007) )
ALORS
	SAUT STOCKE_OK
FINSI

#####################################################################
#	Test 102 : Cas non prevu !!!
#####################################################################
code_rejet_860026007 = 0x5031
erreur_860026007 = i_PlvMessEmettre(6924,2,g_iartin,"",3,code_rejet_860026007,ta_860026007,tc_860026007)
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_860026007 > 65534
ALORS
	SI T3cap2_860026007 > 0
	ALORS
		code_rejet_860026007 = 0x5031
		erreur_860026007 = i_PlvMessEmettre(6925,2,g_iartin,"",1,code_rejet_860026007,0,0)
		SAUT STOCKE_ERRONE
	SINON
		erreur_860026007 = i_set_art_field(g_iartin,$Tcentrex::TAXE:1,tc_860026007)
	FINSI
SINON
	SI T3cap2_860026007 > 0
	ALORS
		erreur_860026007 = i_set_art_field(g_iartin,$Tcentrex::TAXE:0,tc_860026007)
	SINON
		erreur_860026007 = i_set_art_field(g_iartin,$Tcentrex::TAXE:1,tc_860026007)
	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_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4taxcal,$Tcentrex::TAXCAL,0)
        erreur_860026007 = i_set_art_field(g_iartin, $Tcentrex::TAXCAL, tc_860026007)
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
SI (comptage_zlt_860026007 == 1)
ALORS
    SI ( (type_cpt_860026007 != CPT_REJET_860026007) && (type_cpt_860026007 != CPT_SYMPHO_860026007) && (type_cpt_860026007 != CPT_REJET2_860026007) && (type_cpt_860026007 != CPT_REJET3_860026007) )
    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_860026007 == -1)
ALORS
         result_zlt_860026007 = i_get_zlt(g_icopo,BASE_TELEPHONE_860026007,sdate_860026007)
FINSI

# analyse du reultat de l'appel a la fonction i_get_zlt
SI (result_zlt_860026007 == -1)
ALORS
	 erreur_860026007 = i_PlvMessEmettre(6896,2,g_iartin,"",0,0,0,0)
	 valeur_zlt_860026007 = -1
SINON
	SI ((result_zlt_860026007 & 0x01) == 1)
	ALORS
# resultat impair
		valeur_zlt_860026007 = 1
                erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4ZLT,$Tcentrex::ZLT,0)
                erreur_860026007 = i_set_art_field(g_iartin, $Tcentrex::ZLT, valeur_zlt_860026007)
	SINON
# resultat pair
		valeur_zlt_860026007 = 0
                erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4ZLT,$Tcentrex::ZLT,0)
                erreur_860026007 = i_set_art_field(g_iartin, $Tcentrex::ZLT, valeur_zlt_860026007)
	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_860026007 == 0)
ALORS
#	trace("Appel a i_comptage realise et valide : maj CCD")
        erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4ccd,$Tcentrex::CCD,0)
	erreur_860026007 = i_set_art_field(g_iartin, $Tcentrex::CCD, code_dest_860026007)
FINSI

SI (flag_stat_860026007 == 1) && (nocodedest_860026007 == 0)
ALORS
#	trace("Appel a i_comptage realise et valide : maj CTT")
	type_traf_860026007 = g_icopo.SUP[RES_TTRAFIC_860026007]
        erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4typtra,$Tcentrex::CTT,0)
	erreur_860026007 = i_set_art_field(g_iartin,$Tcentrex::CTT,type_traf_860026007)
FINSI
# XYZ trafic fin

# Ajout 0x00FE dans le cas de seltrans=1 et flag_stat=1
SI ((flag_stat_860026007 == 1) && (seltrans_860026007 == 1))
ALORS
#	trace("Selection transporteur non FT : maj CTT = 0x00FE et CCD = 0xFE")
	SI (!i_valid_field_n(g_iartin,$Tcentrex::CTT))
	ALORS
        	erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4typtra,$Tcentrex::CTT,0)
	FINSI
	erreur_860026007 = i_set_art_field(g_iartin,$Tcentrex::CTT,code_dest_860026007)

#	g_iartin.CCD = code_dest
	SI (!i_valid_field_n(g_iartin,$Tcentrex::CCD))
	ALORS
        	erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4ccd,$Tcentrex::CCD,0)
	FINSI
	erreur_860026007 = i_set_art_field( g_iartin, $Tcentrex::CCD, code_dest_860026007 )

FINSI

# Ajout du champ REJET (HH - 25/06/01)
SI (type_cpt_860026007==CPT_REJET_860026007)
ALORS
	trace("Ajout du champ REJET1")
	val_REJET_860026007=1
        erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4rejet,$Tcentrex::REJET,0)
	erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::REJET,val_REJET_860026007)
FINSI
# G2R1Ch : REJET2
SI (type_cpt_860026007==CPT_REJET2_860026007)
ALORS
	trace("Ajout du champ REJET2")
	val_REJET_860026007=2
	erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4rejet,$Tcentrex::REJET,0)
	erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::REJET,val_REJET_860026007)
FINSI

# G2R2Cv : REJET3
SI (type_cpt_860026007==CPT_REJET3_860026007)
ALORS
	trace("Ajout du champ REJET3")
	val_REJET_860026007=3
	erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4rejet,$Tcentrex::REJET,0)
	erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::REJET,val_REJET_860026007)
FINSI

# G3R3Cv : REJET6
SI (type_cpt_860026007==CPT_REJET6_860026007)
ALORS
	trace("Ajout du champ REJET6 = 14")
	val_REJET_860026007=14
	erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4rejet,$Tcentrex::REJET,0)
	erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::REJET,val_REJET_860026007)
FINSI

#DRE G4R6 lot2
SI ( (type_cpt_860026007==CPT_CPS_Loc_860026007) || (type_cpt_860026007==CPT_CPS_RI_860026007) )
ALORS
	#trace("Ajout du champ REJET = CPS_Loc ou CPS_RI")
	val_REJET_860026007=type_cpt_860026007
	erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4rejet,$Tcentrex::REJET,0)
	erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::REJET,val_REJET_860026007)
FINSI
#\DRE G4R6 lot2




SI (type_cpt_860026007==CPT_SYMPHO_860026007)
ALORS
	trace("Ajout du champ REJET4")
	val_REJET_860026007=4
        erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4rejet,$Tcentrex::REJET,0)
	erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::REJET,val_REJET_860026007)
FINSI

erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4codcirdr,$Tcentrex::CODCIRDR,0)
erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::CODCIRDR,CODCIRDR_860026007)
 
erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4codcir,$Tcentrex::CODCIR,0)
erreur_860026007=i_set_art_field(g_iartin,$Tcentrex::CODCIR,CODCIR_860026007)

SI (appel_base_860026007 == 1)
ALORS
	erreur_860026007=i_ajoutChampNum(g_iartin,$Tcentrex::T4normal,$Tcentrex::NORMAL,0)
	indice_860026007 = 0
	POINT BOUCLE_NDE
	res_860026007 = i_get_art_fieldtab(g_icopo, $Tcopo::NDE, indice_860026007)
	#        trace1(" element : %x",res)
	SI (res_860026007 != 00)
	ALORS
        	erreur_860026007 = i_set_art_fieldtab(g_iartin, $Tcentrex::NORMAL, indice_860026007, res_860026007-0x30)
        	indice_860026007 = indice_860026007 + 1
        	SAUT BOUCLE_NDE
	SINON
        	erreur_860026007 = i_set_art_fieldtab(g_iartin, $Tcentrex::NORMAL, indice_860026007, 0xFF)
	FINSI
FINSI


erreur_860026007 = i_stocke_art(g_iartin, stocke_date_860026007, 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_860026007 = i_get_art_stocke_date(g_iartin,DATE_PLUS_DUREE)
erreur_860026007 = i_make_art_rej(g_iartin, g_iartout, code_rejet_860026007)
erreur_860026007 = i_stocke_art(g_iartout,
			stocke_date_860026007,
			PT_ERRONE,
			0)

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

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

RETOUR TRAIT_OK

#----------------------------- FIN PCODE Tcentrex_trt.src ------------------------------
