DEFINITION NUMTABSEL_860026400 0
DEFINITION NUMTAB_860026400 1
DEFINITION CATEG_860026400 0
DEFINITION BASE_860026400 1
DEFINITION CODE_ARTICLE_860026400 1
DEFINITION C_Article_860026400 "Tvoipvpn2"
DEFINITION RES_CLDEST_860026400 1
DEFINITION RES_TYPCTR_860026400 2
DEFINITION RES_CODCIR_860026400 3
DEFINITION RES_CODCIRDR_860026400 5
DEFINITION RES_UNITE_860026400 6
DEFINITION UTC_860026400 0
DEFINITION UTCDR_860026400 100
DEFINITION MILEURO_860026400 10
DEFINITION MILEURODR_860026400 110
DEFINITION COEFF_860026400 94
DEFINITION CPT_REJET_860026400 11
DEFINITION CPT_REJET2_860026400 10
DEFINITION CPT_REJET3_860026400 12
DEFINITION CPT_REJET5_860026400 9
DEFINITION CPT_CPS_Loc_860026400 16
DEFINITION CPT_CPS_RI_860026400 17
REGISTRE ENTIER efficace_860026400
REGISTRE ENTIER icar_abs_860026400
REGISTRE ENTIER date_GMT_860026400
REGISTRE ENTIER hlahm1_860026400
REGISTRE ENTIER erreur_860026400
REGISTRE ENTIER duree_860026400
REGISTRE ENTIER longueur_860026400
REGISTRE ENTIER taille_860026400
REGISTRE ENTIER idus_inf_860026400
REGISTRE ENTIER detr_ok_860026400
REGISTRE ENTIER code_rejet_860026400
REGISTRE ENTIER numzone_860026400
REGISTRE ENTIER nb_supp_860026400
REGISTRE ENTIER existe_860026400
REGISTRE ENTIER typ_ctr_860026400
REGISTRE ENTIER val_REJET_860026400
REGISTRE ENTIER unite_860026400
REGISTRE ENTIER vc_860026400
REGISTRE ENTIER vcdr2_860026400
REGISTRE ENTIER vcUT_860026400
REGISTRE ENTIER indice_860026400
REGISTRE ENTIER ic_DEMANDEUR_860026400
REGISTRE ENTIER b_APPEL_DTO_860026400
REGISTRE ENTIER b_DETR_B_NUM_860026400
REGISTRE ENTIER L_adr_DETRR_860026400
REGISTRE POINTEUR pt_1_860026400
REGISTRE POINTEUR pt_DETRR_860026400
REGISTRE POINTEUR pt_adr_DETRR_860026400
############################################################################
# TRAITEMENT	Tvoipvpn2_tr.src
#	Article DC Tvoipvpn2 en entree de Platine
#	Pcode de traitement
#	2005 - JLG- Creation
# Historique
# 02/06/05 -JLG THE- creation G2R1Ca FO 1230
#
#  07/06/05 -JLG- FO 1316 G2R1Ca (Prise en compte numeraux speciaux : REJET, envoi vers FCT, appel MAJ2G, redistribution)
#  08/07/05 -JLG- FO 1360 G2R1Ca (idus absent : suppression des ajouts CE)
#  07/09/05 -FAL- FO 1447 ace deja present
#  23/09/05 -FAL- FO 1470 traitement des demandeurs mobiles
#  03/10/05 -FAL- G2R1Cj suppression T4text1 de symphonie
#  08/11/05 -PSA- G2R2Co : FO1553
#  22/12/05 -DRE- G2R2Ca : FO1652
#  12/01/06 -FAL- G2R2Cd prise en compte des appels DTO
#  01/02/06 -FAL- G2R2Cd FO1706  correction variable APPEL_DTO
#  14/02/06 -FAL- G2R2Cd REJET2
#  14/02/06 -FAL- G2R2Cd FO1743 plus de test sur Text1
#  22/06/06 -FAL- G2R2Cu FO1842 normalisation COMORES
#  28/09/06 -JLG- G2R2Cv REJET3 (119 appel enfance maltraitee)
#  09/10/06 -JLG- G2R2Cv FO1987 enveloppe E_RPV modifiee
#  13/10/06 -JLG- G2R2Cv FO1992 evol spec Tvoipvpn2_S9F1 filtrage des IDUS anormaux
#  06/02/07 - THE - G3R0Ct 
#  21/05/08 - THE - Param FTSA-G3R7 FO 2371
#  25/02/09 -JLG- evolution G3R12Cz Portage de l'offre Business Talk IP de H323 vers SIP
#  10/10/2011 RHE VerifPcode
#  14/04/2014 - DRE - G4R6 : Lot3
#  09/07/2014 - DRE - G4R7 Reprise QC813
############################################################################




#DRE G4R6 lot2



#trace(">>>__LINE__>>__FILE__==== debut Pcode TRAITEMENT  ====")

# INITIALISATION POINTEUR
pt_1_860026400 =		"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
pt_DETRR_860026400=	"pt_DETRR444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444"
pt_adr_DETRR_860026400=	"pt_adr_DETRR55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555"

# VerifPcode - RHE #
i_strcpy(pt_1_860026400, " ")
i_strcpy(pt_DETRR_860026400, " ")
i_strcpy(pt_adr_DETRR_860026400, " ")

#erreur = i_fdump_art(g_iartin)

#############################################
# Creation article Conversion (g_iartout10) #
#############################################
erreur_860026400 = i_cree_art("Conversion",g_iartout10)



################################################################
#
#	Test syntaxique
#
################################################################
erreur_860026400 = i_test_art(g_iartin)
SI erreur_860026400
ALORS
	code_rejet_860026400 = 0x5071
	erreur_860026400 = i_PlvMessEmettre(6086,2,g_iartin,"",2,code_rejet_860026400,C_Article_860026400,0)
	# "ERR=0x %04x - Pcode %s : Erreur syntaxique"
	SAUT STOCKE_ERRONE
FINSI

################################################################
#
#	Tests semantiques
#
################################################################



# FO 1167 : evol le camp Duree peut etre absent
duree_860026400 = 0
SI (i_valid_field_n(g_iartin, $Tvoipvpn2::T3_Duree))
ALORS
	duree_860026400 = i_get_art_field(g_iartin, $Tvoipvpn2::Duree)
SINON
	erreur_860026400=i_ajoutChampNum(g_iartin,$Tvoipvpn2::T3_Duree,$Tvoipvpn2::Duree,0)
	erreur_860026400 = i_set_art_field(g_iartin,$Tvoipvpn2::Duree, 0)
FINSI

# Duplication article entree pour retaillage des longueurs
erreur_860026400 = i_dup_art_id(g_iartin, g_iartout)

# Creation des champs ajout T3ace
#FO1447 apres i_ajoutChampNum ,2 tous les T4 de ace sont presents
erreur_860026400 = i_ajoutChampNum(g_iartout, $Tvoipvpn2::T4ccd,$Tvoipvpn2::CCD,2)

#=============================================================================
# Variables fonctionnelles
#=============================================================================

#  EFFICACE pt_1=disc (controle si duree!=0 et disc!=491 alors efficace)
# VerifPcode - RHE # i_strcpy(pt_1, " ")
erreur_860026400 = i_get_art_str(g_iartin,$Tvoipvpn2::DISC,pt_1_860026400)

SI ( (i_strcmp(pt_1_860026400,"491")!= 0) && (duree_860026400 != 0) )
ALORS
	efficace_860026400 = 1
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::EFFICACITE, 1)
	#trace1(">>>__LINE__>>__FILE__===== EFFICACE = %d ====",efficace)
SINON
	efficace_860026400 = 0
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::EFFICACITE, 0)
	#trace1(">>>__LINE__>>__FILE__=== INEFFICACE = %d ====",efficace)
FINSI

# 2 DATE_GMT
date_GMT_860026400 = i_get_art_field(g_iartout, $Tvoipvpn2::DATE)
#trace1(">>>__LINE__>>__FILE__===== date_gmt = %x ====",date_GMT)

# 3 ICAR_ABS (date metropole)
icar_abs_860026400 = i_get_art_field(g_iartout, $Tvoipvpn2::ddebut)
#trace1(">>>__LINE__>>__FILE__==== ICAR_ABS = %x =====",icar_abs)

# HLAHM1 voir plus bas

######################################################################################################
# Mise a jour des champs utilises pour l'appel a la BNC + MAJ ajout CE correspondants pour Symphonie #
######################################################################################################
#
# Champs IDUS_INF et IDUS_NUM
# On cherche a mettre a jour le champ IDUS pour calculer HLAHM1 meme si l article est inefficace
#G2R2Cd #prise en compte des appels DTO : le T3_NDR passe apres CalledPUBNDI si APPELDTO

#trace(">>>__LINE__>>__FILE__ trt DTO pour IDUS_NUM et IDUS_INF")
ic_DEMANDEUR_860026400 = 0
taille_860026400 = 0
longueur_860026400 = 0
#FO1706
b_APPEL_DTO_860026400 = 0

#G2R2Cd info i_get_art_fieldlength ne donne pas le meme resultat que NELEM

SI (i_valid_field_n(g_iartin, $Tvoipvpn2::T3_DTOAPPLIED))
ALORS
	erreur_860026400 = i_get_art_str(g_iartin,$Tvoipvpn2::DTOAPPLIED, pt_1_860026400)
	# APPEL_DTO vrai si (FD/DTOAPPLIED vaut 1)
	SI (i_strcmp(pt_1_860026400, "1") == 0)
	ALORS
		b_APPEL_DTO_860026400 = 1
		#trace(">>>__LINE__>>__FILE__ APPELDTO est vrai T3_DTOAPPLIED present ET DTOAPPLIED=1")
		SI (i_valid_field_n(g_iartin, $Tvoipvpn2::T3_CalledPUBNDI))
		ALORS
			ic_DEMANDEUR_860026400 = i_get_field_num(g_iartin, "CalledPUBNDI")
			#trace1(">>>__LINE__>>__FILE__   IDUS_NUM et IDUS_INF seront calcules avec CalledPUBNDI indice=<%d>", ic_DEMANDEUR)
			taille_860026400 = g_iartin.CalledPUBNDI!NELEM * 4
			longueur_860026400 = g_iartin.CalledPUBNDI!NELEM
		SINON
			ic_DEMANDEUR_860026400 = 0
			#trace(">>>__LINE__>>__FILE__  APPELDTO mais T3_CalledPUBNDI absent UNIQUEMENT SYMPHONIE")
		FINSI
	FINSI
FINSI
#FO1706 SINON
SI (b_APPEL_DTO_860026400 == 0)
ALORS
	SI (i_valid_field_n(g_iartin, $Tvoipvpn2::T3_NDR))
	ALORS
		ic_DEMANDEUR_860026400 = i_get_field_num(g_iartin, "NDR")
		#trace1(">>>__LINE__>>__FILE__ IDUS_NUM et IDUS_INF seront calcules avec NDR indice=<%d> cas non APPELDTO", ic_DEMANDEUR)
		taille_860026400 = g_iartin.NDR!NELEM * 4
		longueur_860026400 = g_iartin.NDR!NELEM
	FINSI
FINSI
#trace1(">>>__LINE__>>__FILE__   APPEL_DTO  <%d>",b_APPEL_DTO)
#trace1(">>>__LINE__>>__FILE__ taille   DEMANDEUR <%d>",taille)
#trace1(">>>__LINE__>>__FILE__ longueur DEMANDEUR <%d>",longueur)

#G2R2Cd ancien SI (i_valid_field_n(g_iartin, $Tvoipvpn2::T3_NDR))
SI (ic_DEMANDEUR_860026400 > 0)
ALORS
	i_strcpy(pt_1_860026400, " ")
	erreur_860026400 = i_get_art_str(g_iartout,ic_DEMANDEUR_860026400, pt_1_860026400)
	#trace2(">>>__LINE__>>__FILE__ IDUS_NUM et idus_inf a partir du DEMANDEUR <%s>",pt_1,"")
	#G2R2Cd ancien erreur = i_dup_chp_1val(g_iartout, g_iartout, $Tvoipvpn2::NDR, $Tvoipvpn2::IDUS_NUM)
	erreur_860026400 = i_dup_chp_1val(g_iartout, g_iartout, ic_DEMANDEUR_860026400, $Tvoipvpn2::IDUS_NUM)
	#G2R2Cd ancien taille = 0
	#G2R2Cd ancien taille = g_iartout.NDR!NELEM * 4
	erreur_860026400 = i_resize_tlv(g_iartout, "T4idus", "IDUS_NUM", taille_860026400)


	# si code pays = 33  alors idus_inf = 0x80 national
	nb_supp_860026400 = 0
	idus_inf_860026400 = 0

	SI (i_strplcmp(pt_1_860026400, "33",0,2) == 0)
	ALORS
		SI (longueur_860026400 > 2)
		ALORS
			nb_supp_860026400 = 2
			#FO1992 evol spec Tvoipvpn2_S9F1 : filtrage des IDUS exotiques 11 = 9 + 2
			SI (longueur_860026400 < 11)
			ALORS
				idus_inf_860026400 = 0xFF
			SINON
				idus_inf_860026400 = 0x80
			FINSI
		SINON
			nb_supp_860026400 = 0
			idus_inf_860026400 = 0xFF
		FINSI
	SINON
		# si Numero DOM (ex 59[0,4,6]59[0,4,6]ZABPQ  ou 262262ZABPQ) alors idus_inf = 0x80
		SI    (
			(i_strplcmp(pt_1_860026400, "590", 0, 3) == 0) || (i_strplcmp(pt_1_860026400, "594", 0, 3) == 0) ||
			(i_strplcmp(pt_1_860026400, "596", 0, 3) == 0) || (i_strplcmp(pt_1_860026400, "262", 0, 3) == 0)
			)
		ALORS
			SI (longueur_860026400 > 3)
			ALORS
				nb_supp_860026400 = 3
				#FO1992 evol spec Tvoipvpn2_S9F1 : filtrage des IDUS exotiques 11 = 9 + 2
				SI (longueur_860026400 < 11)
				ALORS
					idus_inf_860026400 = 0xFF
				SINON
					idus_inf_860026400 = 0x80
				FINSI
			SINON
				nb_supp_860026400 = 0
				idus_inf_860026400 = 0xFF
			FINSI

		SINON
			nb_supp_860026400 = 0
			idus_inf_860026400 = 0xC0
		FINSI
	FINSI
SINON
	nb_supp_860026400 = 0
	idus_inf_860026400 = 0xFF
FINSI
erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::IDUS_INF, idus_inf_860026400)

# nb_supp : determine le nombre de digits a enlever
SI (nb_supp_860026400 >0)
ALORS
	erreur_860026400 = i_supp_quart_num($Tvoipvpn2::IDUS_NUM, 0, nb_supp_860026400, 0x0f, g_iartout, g_iartout)
FINSI

# variable fonctionnelle : b_DETR_B_NUM
# Champs DETR_INF et DETR_NUM
# Suppression entete 33, 590, 594, 596, 262 269 ou 508 de DETR_NUM
# FO:1083, renumerotation du 12 en 118XYZ (<=9 chiffres)
# FO:1225, DETR_INF baser sur les premiers digits de DETR_NUM
detr_ok_860026400 = 0

# Calcul variable fonctionnelle : b_DETR_B_NUM (vrai si DETR est numerique)
SI (i_valid_field_n(g_iartout, $Tvoipvpn2::T3_DETRR))
ALORS
	detr_ok_860026400 = 1
	erreur_860026400=i_get_art_str(g_iartout, $Tvoipvpn2::DETRR, pt_DETRR_860026400)
	longueur_860026400 = i_strlen(pt_DETRR_860026400)
	indice_860026400 = 0
	POINT BOUCLE_DETRR
	SI (indice_860026400 < longueur_860026400)
	ALORS
		i_get_sub_str(pt_DETRR_860026400, indice_860026400, indice_860026400, pt_1_860026400)
		#SI (i_adequation_chaine_expreg (pt_1,"[0-9*+@]") == 0)
		SI (i_adequation_chaine_expreg (pt_1_860026400,"[0-9]") == 0)
		ALORS
			indice_860026400=indice_860026400 + 1
			SAUT BOUCLE_DETRR
		SINON
			b_DETR_B_NUM_860026400 = 0
		FINSI
	SINON
		b_DETR_B_NUM_860026400 = 1
	FINSI
SINON
	b_DETR_B_NUM_860026400 = 0
FINSI

SI (b_DETR_B_NUM_860026400)
ALORS
	SI (i_strplcmp(pt_DETRR_860026400, "33",0,2) == 0)
	ALORS
		SI (longueur_860026400 > 2)
		ALORS
			nb_supp_860026400 = 2
			SI (longueur_860026400 <= 9)
			ALORS
				erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::DETR_INF, 0x40)
			SINON
				erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::DETR_INF, 0x80)
			FINSI
		SINON
			detr_ok_860026400 = 0
			nb_supp_860026400 = 0
		FINSI
	SINON
		#FO1842 COMORES 2693 2697 ne pas retirer prefixe et INF 0xC0
		# si Numero DOM (ex 59[0,4,6]59[0,4,6]ZABPQ  ou 262262ZABPQ)
		# FO 2371
		SI (
		   ( (i_strplcmp(pt_DETRR_860026400, "590", 0, 3) == 0) || (i_strplcmp(pt_DETRR_860026400, "594", 0, 3) == 0) ||
		     (i_strplcmp(pt_DETRR_860026400, "596", 0, 3) == 0) || (i_strplcmp(pt_DETRR_860026400, "262", 0, 3) == 0) )
		    && (i_strplcmp ( pt_DETRR_860026400, "2693", 0, 4) !=0)
		    && (i_strplcmp ( pt_DETRR_860026400, "2697", 0, 4) !=0)
		   )
		ALORS
			SI (longueur_860026400 > 3)
			ALORS
				nb_supp_860026400 = 3
				SI (longueur_860026400 <= 9)
				ALORS
					erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::DETR_INF, 0x40)
				SINON
					erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::DETR_INF, 0x80)
				FINSI
			SINON
				detr_ok_860026400 = 0
				nb_supp_860026400 = 0
			FINSI
		SINON
			nb_supp_860026400 = 0
			erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::DETR_INF, 0xC0)
		FINSI
	FINSI
FINSI

# nb_supp : determine le nombre de digits a enlever
# DETR_DCB = contenu du champ Tvoipvpn2::DETR_NUM
SI (b_DETR_B_NUM_860026400)
ALORS
	SI (nb_supp_860026400 >0)
	ALORS
		i_get_sub_str (pt_DETRR_860026400, nb_supp_860026400, -1, pt_1_860026400)
	SINON
		i_strcpy(pt_1_860026400,pt_DETRR_860026400)
	FINSI
	L_adr_DETRR_860026400 = i_conv_ascii_dcb(pt_1_860026400, pt_adr_DETRR_860026400)
	
	erreur_860026400 = i_memcpy_art_field_n(g_iartout10, $Conversion::NDR, pt_adr_DETRR_860026400, L_adr_DETRR_860026400)
	erreur_860026400 = i_resize_tlv(g_iartout10, "T2ndr", "NDR", L_adr_DETRR_860026400 * 8 )
	
	erreur_860026400 = i_dup_chp_1val(g_iartout10, g_iartout, $Conversion::NDR, $Tvoipvpn2::DETR_NUM)
FINSI

##########
# HLAHM1 #
##########
# On calcule HLAHM1 ici car il sert pour l appel a la BNC (si article efficace)
#

#FO1652
#Si IDUS present et <> 33	Date_Locale (ICAR_ABS, IDUS_NUM)sinon, on considere qu'on est en metropole

hlahm1_860026400 = 0
numzone_860026400 = 7
SI (i_valid_field_n(g_iartout, $Tvoipvpn2::IDUS_NUM))
ALORS
	numzone_860026400 = i_DHgetZoneID(NUMTABSEL_860026400, g_iartout)
FINSI
hlahm1_860026400 = i_DHgetLocalTime(NUMTAB_860026400, numzone_860026400, date_GMT_860026400)
erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::HLAHM1, hlahm1_860026400)

##################################################
# Normalisation pour appel a la base de comptage #
##################################################
#G2R2Cd_FO1743 SI ((idus_inf == 0x80) && (detr_ok == 1) && (efficace == 1) && (text1 == 1))
SI (idus_inf_860026400 == 0x80 && detr_ok_860026400 == 1 && efficace_860026400 == 1 && b_DETR_B_NUM_860026400)
ALORS
	# ATTENTION : si on normalise un numero trop long, procopo fait corer
	# Pour pallier ce probleme, on limite les numeros passes en argument a 10 octets (soit, en comptant le INF, 18 digits)
	longueur_860026400 = 0
	longueur_860026400=i_get_art_field(g_iartout,$Tvoipvpn2::L4idus)
	existe_860026400 = 0
	SI longueur_860026400 > 10
	ALORS
		nb_supp_860026400 = ((longueur_860026400 - 1) * 2) - 18
		erreur_860026400 = i_supp_quart_num($Tvoipvpn2::IDUS_NUM, 17, nb_supp_860026400, 0x0f, g_iartout, g_iartout10)
		existe_860026400 = 1
	FINSI

	longueur_860026400 = 0
	longueur_860026400=i_get_art_field(g_iartout,$Tvoipvpn2::L4detr)
	SI longueur_860026400 > 10
	ALORS
		nb_supp_860026400 = ((longueur_860026400 - 1) * 2) - 18
		erreur_860026400 = i_supp_quart_num($Tvoipvpn2::DETR_NUM, 17, nb_supp_860026400, 0x0f, g_iartout, g_iartout10)
		existe_860026400 = 1
	FINSI

	SI ( existe_860026400 == 0 )
	ALORS
		erreur_860026400 = i_dup_art_id(g_iartout, g_iartout10)
	FINSI

	erreur_860026400 = i_normal(g_iartout10, $Tvoipvpn2::IDUS,$Tvoipvpn2::DETR, g_icopo, $Tcopo::NDR,$Tcopo::NDE ,3, "VOIPVPN_NDR", "VOIPVPN_NDE")
	SI erreur_860026400
	ALORS
		code_rejet_860026400 = 0x5010
		code_rejet_860026400 = code_rejet_860026400 + efficace_860026400
		erreur_860026400 = i_PlvMessEmettre(6088,2,g_iartout,"",2,code_rejet_860026400,C_Article_860026400,0)
		# "ERR=0x %04x Pcode=<%s>, erreur de normalisation"

		SAUT STOCKE_ERRONE
	FINSI

	#trace(">>>__LINE__>>__FILE__=========== Avant appel base ========")

	##########################
	# Appel base de comptage #
	##########################

	# Initialisation de l'interface "proc_copo"

	g_icopo.TAXE   = 0
	g_icopo.CREDIT = 0
	erreur_860026400 = i_set_art_date(g_icopo,hlahm1_860026400)
	g_icopo.DUREE  = i_get_art_field(g_iartout, $Tvoipvpn2::Duree)
	g_icopo.CODE   = CODE_ARTICLE_860026400
	g_icopo.CATEG  = CATEG_860026400
	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
	g_icopo.SUP[5] = 0
	g_icopo.SUP[6] = 0
	g_icopo.SUP[7] = 0

	erreur_860026400 = i_comptage(g_icopo,BASE_860026400,hlahm1_860026400)

	##################################
	# Erreur retour base de comptage #
	##################################

	SI (erreur_860026400 != 0)
	ALORS
		code_rejet_860026400 = 0x5020
		code_rejet_860026400 = code_rejet_860026400 + efficace_860026400
		erreur_860026400 = i_PlvMessEmettre(6089,2,g_iartout,"",3,code_rejet_860026400,C_Article_860026400,g_ierrno)
		# "ERR=0x %04x Pcode=<%s>, erreur Retour Base Comptage (g_ierrno=%d)"
		SAUT STOCKE_ERRONE
	FINSI

	############################################
	# Controle sur l'unite renvoyee par la BNC
	# COEFF=94 MILEURO=10 MILEURODR=110
	# NbUT=vcUT UTC=0 UTCDR=100
	############################################
	vc_860026400 = 0
	vcUT_860026400 = 0
	vcdr2_860026400 = 0
	unite_860026400 = 0

	vc_860026400 = g_icopo.TAXE
	unite_860026400 = g_icopo.SUP[RES_UNITE_860026400]

	SI (unite_860026400 == MILEURO_860026400 || unite_860026400 == MILEURODR_860026400 )
	ALORS
		vcdr2_860026400 = vc_860026400
		vcUT_860026400 = vcdr2_860026400 / COEFF_860026400
		SI ( vcdr2_860026400 - (vcUT_860026400 * COEFF_860026400) ) > 0
		ALORS
			vcUT_860026400 = vcUT_860026400 + 1
			#trace1(">>>__LINE__>>__FILE__ vcUT : %d", vcUT)
		FINSI
	SINON
		SI ((unite_860026400 == UTC_860026400) || (unite_860026400 == UTCDR_860026400))
		ALORS
			vcUT_860026400 = vc_860026400
			vcdr2_860026400 = vc_860026400 * COEFF_860026400
		SINON
			code_rejet_860026400 = 0x5022
			erreur_860026400 = i_PlvMessEmettre(8506,2,g_iartin,"",3,code_rejet_860026400,C_Article_860026400,unite_860026400)
			SAUT STOCKE_ERRONE
		FINSI
	FINSI

	#trace(">>>__LINE__>>__FILE__======= Apres appel base =====")

	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::VCDR2, vcdr2_860026400)
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::VCUT, vcUT_860026400)
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::TAX1, vc_860026400)
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::UNITE1, unite_860026400)
	#CCD
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::CCD, g_icopo.SUP[RES_CLDEST_860026400])
	#CODCIRDR
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::CODCIRDR, g_icopo.SUP[RES_CODCIRDR_860026400])
	#CODCIR
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::CODCIR, g_icopo.SUP[RES_CODCIR_860026400])

	#TYPCTR
	typ_ctr_860026400 = 0
	typ_ctr_860026400 = g_icopo.SUP[RES_TYPCTR_860026400]
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::TYPCTR, typ_ctr_860026400)

	#REJET service du "12" ou "118XYZ", "Audiotel" et certains 3BPQ
	#REJET=1 si le retour de la fonction  BNC_TYPCTR = 11 (CPT_REJET)
	#REJET=2 si  le retour de la fonction  BNC_TYPCTR = 10 (CPT_REJET2)
	#REJET=3 si  le retour de la fonction  BNC_TYPCTR = 12 (CPT_REJET3)
	#trace1(">>>__LINE__>>__FILE__ REJET  BNC_TYPCTR    <%d>",typ_ctr)
	val_REJET_860026400 = 0
	SI (typ_ctr_860026400 == CPT_REJET_860026400)
	ALORS
		val_REJET_860026400 = 1
	SINON
		SI (typ_ctr_860026400 == CPT_REJET2_860026400)
		ALORS
			val_REJET_860026400 = 2
		SINON
			SI (typ_ctr_860026400 == CPT_REJET3_860026400)
			ALORS
				val_REJET_860026400 = 3
			SINON
				SI (typ_ctr_860026400 == CPT_REJET5_860026400)
				ALORS
					val_REJET_860026400 = 5
				FINSI
			FINSI
		FINSI
	FINSI
	
# DRE G4R7 QC813
#	# DRE G4R6 lot3	
#	SI ( (typ_ctr==CPT_CPS_Loc) || (typ_ctr==CPT_CPS_RI) )
#	ALORS
#		val_REJET = typ_ctr
#	FINSI
#	# \DRE G4R6 lot3
# \DRE G4R7 QC813

	# ajout CE le champ est deja cree
	erreur_860026400=i_set_art_field(g_iartout,$Tvoipvpn2::REJET,val_REJET_860026400)
	#trace1(">>>__LINE__>>__FILE__ ::REJET     <%d>",val_REJET)
SINON
	#trace(">>>__LINE__>>__FILE__-- Pas de normalisation ni d'appel BNC car DETR absent ou IDUS_INF != 80 ou text1 non FT --")
	# CCD=0xff , CODCIRDR= , CODCIR=
	erreur_860026400 = i_set_art_field(g_iartout, $Tvoipvpn2::CCD, 0xff)
FINSI
#erreur = i_fdump_art(g_iartout)

#==============================================================================
#	Stockage en valide
#==============================================================================

POINT   STOCKE_OK

# Creation de l'enveloppe optionnelle E_RPV
# FO1987
#---------------------
#  AJOUT ENVELOPPE Optionelle:
## Ajout enveloppe optionnelle E_RPV
# Contient la date metropole pour la distri
#---------------------
# Creation de l'enveloppe
erreur_860026400 = i_add_opt( "E_RPV" )

# champ T1 (=>  0x0C pour la reconnaissance de l'enveloppe,
# par l'arbre de reconnaissance Dopt )
#erreur = i_set_attr_val_n( $E_RPV::T1, 0x0C )

# Champ L1 (taille champ Nom_EEC = 0x0B octets)
#erreur = i_set_attr_val_n( $E_RPV::L1, 0x0B )
#---------------------
#  Mise a jour de l'ENVELOPPE Optionelle:
# Contient la date de fin metropole necessaire pour les metachamps de distri
# Champ DATE
icar_abs_860026400 = i_get_art_field(g_iartout, $Tvoipvpn2::dfin)
erreur_860026400 = i_set_attr_val_n( $E_RPV::DATE_M, icar_abs_860026400)

erreur_860026400 = i_stocke_art(g_iartout, 0, PT_OK, 0)

RETOUR TRAIT_OK

#==============================================================================
#	Stockage en errone
#==============================================================================

POINT   STOCKE_ERRONE

#trace2(">>>__LINE__>>__FILE__ Stockage en ERRONE %s", "", "")

erreur_860026400 = i_make_art_rej(g_iartin, g_iartout5, code_rejet_860026400)
erreur_860026400 = i_stocke_art(g_iartout5, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

########################################################
# Stockage en Elimine Divers
########################################################

POINT STOCKE_DIV

#trace( "[Tvoipvpn2_tr] Pcode de traitement : Contenu de TEXT1 <> FT ; Stockage en DIVERS" )

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

RETOUR TRAIT_OK

#--------------------- FIN Tvoipvpn2_tr.src------------------------
