DEFINITION INCREMENT_840006160 1
DEFINITION CPT_1501_840006160 1501
DEFINITION CPT_3G_840006160 1504
DEFINITION MODULE_840006160 0x5000
DEFINITION ERR_SEM_840006160 0x040
DEFINITION ERR_DATE_840006160 0x060
DEFINITION ERR_SYNTAX_840006160 0x070
DEFINITION ERR_CROISE_840006160 0x0F0
DEFINITION EFFICACE_840006160 1
REGISTRE ENTIER ERREUR_840006160
REGISTRE ENTIER code_rejet_840006160
REGISTRE ENTIER date_cra_840006160
REGISTRE ENTIER erreur_840006160
REGISTRE ENTIER rattype_840006160
REGISTRE ENTIER lsdrattype_840006160
REGISTRE ENTIER ratType_present_840006160
REGISTRE ENTIER lsdrattype_present_840006160
REGISTRE ENTIER TypeRAT_840006160
REGISTRE ENTIER VOLUME_NUL_840006160
REGISTRE ENTIER ACTIV_VOL_NUL_840006160
REGISTRE ENTIER res_840006160
####################################################################
#	Tegcdr_tr.src			Appel   EGCDR
####################################################################
#       article CRA EGCDR ASN1 => type DPV TLV = 0x90 (T1=0x60 T2=0x02)
#
# 11/06/12 - JLG - G3R7 lot2 : Creation
# 02/07/12 - JLG - correction : SI (rattype > 0x03 ou rattype < 0) "ou" au lieu de "et"
# 25/07/12 - JLG - QC1062 ajout controle croise
# 07/08/12 - PKH - QC1064 correction controle sur le champ lsdRatType
# 22/08/20 - JLG - verif des pointeurs
# 10/01/13 - PKH - G3R9 lot1 OBIWAN champ ratType=3 ne sont plus elimine + incrementation compteur 3G
####################################################################








# Initialisations
lsdrattype_present_840006160=0
ratType_present_840006160=0


trace("<<<<<< Tegcdr : Debut TRAITEMENT")

date_cra_840006160 = i_get_art_field(g_iartin,$Tegcdr::recOpenTime)

#####################################################################
# Controle syntaxique de l'article
#####################################################################

SI (date_cra_840006160 == -1)
ALORS
	trace1("Tegcdr_Tr : champ date, recOpenTime incorrect = 0x%x", date_cra_840006160)
	ERREUR_840006160 = ERR_SEM_840006160
	code_rejet_840006160 = MODULE_840006160 + ERREUR_840006160 + EFFICACE_840006160
	erreur_840006160 = i_PlvMessEmettre(7002,2,g_iartin,"",2, code_rejet_840006160, date_cra_840006160, 0)
	SAUT STOCKE_ERRONE
FINSI


# test recordType, valeur attendue 0x46
res_840006160 = i_get_art_field(g_iartin,$Tegcdr::recordType)
SI (res_840006160 != 0x46)
ALORS
	trace1("Tegcdr_Tr : champ recordType != 0x46 car = 0x%x", res_840006160)
	ERREUR_840006160 = ERR_SEM_840006160
	code_rejet_840006160 = MODULE_840006160 + ERREUR_840006160 + EFFICACE_840006160
	erreur_840006160 = i_PlvMessEmettre(7000, 2, g_iartin, "",2, code_rejet_840006160, res_840006160, 0)
	SAUT STOCKE_ERRONE
FINSI

# test ratType, valeurs admises : 0x00, 0x01, 0x02, 0x03; valeur eliminee 0x03 vers les DIVERS
SI (i_valid_field_n( g_iartin, $Tegcdr::ratType))
ALORS
	ratType_present_840006160 = 1
	rattype_840006160=i_get_art_field(g_iartin,$Tegcdr::ratType)
	SI (rattype_840006160 > 0x03 || rattype_840006160 < 0)
	ALORS
		trace1("Tegcdr_Tr : champ ratType != 0x00, 0x01, 0x02,0x03 car = 0x%x", rattype_840006160)
		ERREUR_840006160 = ERR_SEM_840006160
		code_rejet_840006160 = MODULE_840006160 + ERREUR_840006160 + EFFICACE_840006160
		erreur_840006160 = i_PlvMessEmettre(7001,2,g_iartin,"",2, code_rejet_840006160,rattype_840006160,0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

# test ratType, valeurs admises : 0x00, 0x01, 0x02, 0x03
SI (i_valid_field_n( g_iartin, $Tegcdr::lsdRATType))
ALORS
	lsdrattype_present_840006160 = 1
	lsdrattype_840006160 = i_get_art_field(g_iartin,$Tegcdr::lsdRATType)
#QC1064 correction test sur lsdrattype
#	SI (lsdrattype < 0 && lsdrattype > 0x03)
	SI !(lsdrattype_840006160 >= 0 && lsdrattype_840006160 <= 3)
	ALORS
		trace1("Tegcdr_Tr : champ lsdRATType != 0x00, 0x01, 0x02,0x03 car = 0x%x", lsdrattype_840006160)
		ERREUR_840006160 = ERR_SEM_840006160
		code_rejet_840006160 = MODULE_840006160 + ERREUR_840006160 + EFFICACE_840006160
		erreur_840006160 = i_PlvMessEmettre(7001,2,g_iartin,"",2, code_rejet_840006160,lsdrattype_840006160,0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

# QC1062 Controle croises entre champs connus de l'article 
#=========test de presence de l'un de ces tags T4t4.1 et T4t4.2  en exclusion mutuelle 
SI (i_valid_field_n(g_iartin, $Tegcdr::ggsniPBinV4Ad) && i_valid_field_n(g_iartin, $Tegcdr::ggsniPBinV6Ad))
ALORS
	trace("Tegcdr : presence de T4t4.1 et T4t4.2 -->errone")
	ERREUR_840006160 = ERR_CROISE_840006160
	code_rejet_840006160 = MODULE_840006160 + ERREUR_840006160 + EFFICACE_840006160
	erreur_840006160=i_PlvMessEmettre(7004, 2, g_iartin, "", 3, code_rejet_840006160,"ggsniPBinV4Ad", "ggsniPBinV6Ad")
	SAUT STOCKE_ERRONE
FINSI

#=========test de presence de l'un de ces tags T4t6.1 et T4t6.2  en exclusion mutuelle 
SI (i_valid_field_n(g_iartin, $Tegcdr::sgsniPBinV4Ad) && i_valid_field_n(g_iartin, $Tegcdr::sgsniPBinV6Ad))
ALORS
	trace("Tegcdr : presence de T4t6.1 et T4t6.2 -->errone")
	ERREUR_840006160 = ERR_CROISE_840006160
	code_rejet_840006160 = MODULE_840006160 + ERREUR_840006160 + EFFICACE_840006160
	erreur_840006160=i_PlvMessEmettre(7004, 2, g_iartin, "", 3, code_rejet_840006160,"sgsniPBinV4Ad", "sgsniPBinV6Ad")
	SAUT STOCKE_ERRONE
FINSI

#=========test de presence de l'un de ces tags T4t9.1 et T4t9.2  en exclusion mutuelle 
SI (i_valid_field_n(g_iartin, $Tegcdr::servPdpiPBinV4A) && i_valid_field_n(g_iartin, $Tegcdr::servPdpiPBinV6A))
ALORS
	trace("Tegcdr : presence de T4t9.1 et T4t9.2 -->errone")
	ERREUR_840006160 = ERR_CROISE_840006160
	code_rejet_840006160 = MODULE_840006160 + ERREUR_840006160 + EFFICACE_840006160
	erreur_840006160=i_PlvMessEmettre(7004, 2, g_iartin, "", 3, code_rejet_840006160,"servPdpiPBinV4A", "servPdpiPBinV6A")
	SAUT STOCKE_ERRONE
FINSI


# Variables fonctionnelles : TypeRAT, VOLUME_NUL, ACTIV_VOL_NUL

#TypeRAT
TypeRAT_840006160 = -1
SI lsdrattype_present_840006160
ALORS
	TypeRAT_840006160 = lsdrattype_840006160
SINON
	SI ratType_present_840006160
	ALORS
		TypeRAT_840006160 = rattype_840006160
	FINSI
FINSI

# VOLUME_NUL
VOLUME_NUL_840006160 = 1
SI (i_valid_field_n( g_iartin, $Tegcdr::lsdDataVolUp))
ALORS
	SI (i_get_art_field(g_iartin,$Tegcdr::lsdDataVolUp) > 0)
	ALORS
		VOLUME_NUL_840006160 = 0
	FINSI
FINSI
SI VOLUME_NUL_840006160
ALORS
	SI (i_valid_field_n( g_iartin, $Tegcdr::lsdDataVolDo))
	ALORS
		SI i_get_art_field(g_iartin,$Tegcdr::lsdDataVolDo) > 0
		ALORS
			VOLUME_NUL_840006160 = 0
		FINSI
	FINSI
FINSI

# ACTIV_VOL_NUL
ACTIV_VOL_NUL_840006160 = 0
SI ( i_get_tab_field("VariableContexte",date_cra_840006160,"FILT_GPRS_NUL") != g_inull ) 
ALORS
	ACTIV_VOL_NUL_840006160 = 1
FINSI

##G3R9 lot1 OBIWAN cra TypeRAT == 0x03 ne sont plus elimines

#SI (TypeRAT == 0x03)
#ALORS
#	trace("Tegcdr_Tr : champ TypeRAT = 0x03 eliminee DIVERS")
#  erreur = i_stocke_art(g_iartin, 0, PT_DIVERS, 0)
#  RETOUR TRAIT_OK
#FINSI

SI (VOLUME_NUL_840006160 && ACTIV_VOL_NUL_840006160)
ALORS
	trace("Tegcdr_Tr : VOLUME_NUL et ACTIV_VOL_NUL eliminee DIVERS")
  erreur_840006160 = i_stocke_art(g_iartin, 0, PT_DIVERS, 0)
  RETOUR TRAIT_OK
FINSI


###############################
# increment du compteur
###############################

#X = 0x90
#Y = g_ieec
#Z = 0
#CPT_3G=1504

# Incremenation du compteur (1501) pour tous les CRA non-elimine par les tests ci-dessus
erreur_840006160=i_incr_cpt(CPT_1501_840006160, 0x90, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), INCREMENT_840006160)

# Incremenation du compteur 3G (1504) pour les CRA ayant un TypeRAT = 0x01
#G3R9 lot1 OBIWAN incrementation des cras typeRAT = 0x03
SI (TypeRAT_840006160 == 0x01 || TypeRAT_840006160 == 0x03)
ALORS
        erreur_840006160=i_incr_cpt(CPT_3G_840006160, 0x90, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), INCREMENT_840006160)
FINSI

trace("[Trait] Tbgw_gsn : Fin traitement OK ")
erreur_840006160 = i_stocke_art(g_iartin, 0, PT_OK, 0)
RETOUR TRAIT_OK


#
# Fin de traitement : Stockage en Errone
#
POINT STOCKE_ERRONE
trace( "Tegcdr : Stockage de l'article en ERRONE" )
erreur_840006160 = i_make_art_rej(g_iartin, g_iartout, code_rejet_840006160)
erreur_840006160 = i_stocke_art(g_iartout,	0, PT_ERRONE, 0)
RETOUR TRAIT_OK

#--------------- Fin	Tegcdr_tr.src --------------------
