DEFINITION ERR_SYNTAX_840007655 0x5040
DEFINITION ERR_CROISE_840007655 0x50F0
DEFINITION INCREMENT_840007655 1
DEFINITION CPT_840007655 1501
DEFINITION NUMTAB_840007655 4
DEFINITION C_Article_840007655 "Twifi"
REGISTRE ENTIER date_plat_840007655
REGISTRE ENTIER X_840007655
REGISTRE ENTIER Y_840007655
REGISTRE ENTIER Z_840007655
REGISTRE ENTIER cpt_840007655
REGISTRE ENTIER date_840007655
REGISTRE ENTIER date_audit_840007655
REGISTRE ENTIER longueur_840007655
REGISTRE ENTIER taille_840007655
REGISTRE ENTIER index_840007655
REGISTRE ENTIER adr_840007655
REGISTRE ENTIER erreur_840007655
REGISTRE ENTIER code_rejet_840007655
REGISTRE ENTIER EFFICACE_840007655
REGISTRE ENTIER type_cra_840007655
REGISTRE POINTEUR pt_CHAMP_ERRONE_840007655
REGISTRE POINTEUR pt_1_840007655
REGISTRE POINTEUR pt_2_840007655
################################################################
# Pcode de TRAITEMENT	Twifi_trt.src
# Service WIFI
# Article : Twifi 
#	"VO" 	for voucher
#	"SU" 	for subscriber
#	"RI" 	for roaming in
#	"RO" 	for roaming out
#	"RR" 	for roaming out to be transmitted by SARAT
#	"RT" 	for roaming out to be filtered by SARAT
#	"RIR" 	for roaming in, from non TAP operator
#	"RIT" 	for roaming in, from TAP operator
#	"WCO" 	Wifi COmmunautaire
################################################################
#
# URS		19/12/2005	Creation
# 19/04/06 FO 180 dump article
# 04/09/06 JLG FO 240 complements
# 20/12/06 DRE G3R0CdME lot3
# 14/06/07 PKH/PSA G1R3/G3R0CeME : FO 525
# 14/06/07 PSA/RHE G1R4 - FO 006 de TeamTracker: userlogin sans @
# 09/10/07 PSA G1R4 : TT35 : remplacement g_iartin par g_iartout
# 26/08/10 JLG G3R1 lot3 : Prise en compte wifi communautaire
# 20/01/11 - G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 23/03/11 JLG G3R2C5 correction QC826
# 28/03/11 PKH G3R3 lot3 : Wifin communautaire ajout FAI
################################################################



# Initialisations
EFFICACE_840007655 = 2

# INITIALISATION POINTEUR
pt_CHAMP_ERRONE_840007655 = "012345678901234"
pt_1_840007655 = "pt_12222222222222222222222222222222222222222222221111111111111111111111111111111111111111111111111111111111111111111111111111\
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"

#QC826
pt_2_840007655 = "pt_22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222\
2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"


##############################################################################################

#trace("[Twifi_tr]********** DEBUT Pcode de traitement de Twifi *********")

#erreur = i_fdump_art(g_iartout)

# Duplication article entree
erreur_840007655 = i_dup_art_id(g_iartin, g_iartout)

################################################################
#   Test syntaxique
################################################################
# neant
################################################################
#   Tests semantiques
################################################################
# G3R1 lot3 : ajout WCO
# G3R3 lot2 : ajout FAI
#QC826
erreur_840007655=i_get_art_str(g_iartout, $Twifi::ChargingType, pt_1_840007655)
i_get_sub_str(pt_1_840007655, 0, 1, pt_2_840007655)
SI (
	i_strcmp("VO", pt_2_840007655) != 0 &&
   i_strcmp("SU", pt_2_840007655) != 0 &&
   i_strcmp("RI", pt_2_840007655) != 0 &&
   i_strcmp("RO", pt_2_840007655) != 0 &&
   i_strcmp("RR", pt_2_840007655) != 0 &&
   i_strcmp("RT", pt_2_840007655) != 0 &&
   i_strcmp("RX", pt_2_840007655) != 0 &&
   i_strcmp("RZ", pt_2_840007655) != 0 &&
   i_strcmp("WCO", pt_1_840007655) != 0 &&
   i_strcmp("FAI", pt_1_840007655) != 0
   )
ALORS
	i_strcpy(pt_CHAMP_ERRONE_840007655, "ChargingType")
	code_rejet_840007655 = ERR_SYNTAX_840007655 + EFFICACE_840007655
	erreur_840007655 = i_PlvMessEmettre(6250,2,g_iartin,"",3,code_rejet_840007655, pt_CHAMP_ERRONE_840007655, pt_1_840007655)
	SAUT STOCKE_ERRONE
FINSI
 
########################################################
# Cpt applicatifs traitement CPT 1501
########################################################

########################################################
########### Date_Audit
date_audit_840007655=i_date_audit()
#trace1("[Twifi_tr] date_audit=%x",date_audit)
# date_plat
date_plat_840007655 = i_DHgetLocalTime(NUMTAB_840007655, 7, date_audit_840007655)
#trace1("======== date_plat = %d ========",date_plat)

Y_840007655=g_ieec
X_840007655=0x80
Z_840007655=0

cpt_840007655 = CPT_840007655
erreur_840007655=i_incr_cpt(cpt_840007655,X_840007655,Y_840007655,Z_840007655,date_plat_840007655,INCREMENT_840007655)

########################################################
# Mise a jour du T3ace, les T4 
#
########################################################

# Creation des champs T3ace optionnels et obligatoires
erreur_840007655 = i_ajoutChampNum(g_iartout, $Twifi::T4msisdn,$Twifi::Adrmsisdn,6)
#erreur = i_fdump_art(g_iartout)

# g_iartout T4msisdn <> UserLogin partie name
# c'est fait par defaut, erreur = i_set_art_field(g_iartout, $Twifi::Adrmsisdn, 0x0)
# userlogin si absence de @

SI (! i_valid_field_n(g_iartout, $Twifi::UserLogin))
  ALORS
  #trace("[Twifi_tr] ERREUR: champ UserLogin absent")
	code_rejet_840007655 = 0x5070
	code_rejet_840007655 = code_rejet_840007655 + EFFICACE_840007655
	i_strcpy(pt_CHAMP_ERRONE_840007655, "UserLogin")
	erreur_840007655 = i_PlvMessEmettre(6251,2,g_iartin,"",2, code_rejet_840007655, pt_CHAMP_ERRONE_840007655, 0)
	SAUT STOCKE_ERRONE
FINSI

i_strcpy(pt_1_840007655," ")
erreur_840007655 = i_get_art_str(g_iartout, $Twifi::UserLogin, pt_1_840007655)
#trace2("[Twifi_tr] valeur MSISDN : %s",pt_1,"")
longueur_840007655=0
longueur_840007655 = i_strlen(pt_1_840007655) - 1
SI (longueur_840007655 < 1)
  ALORS
  #trace("[Twifi_tr] ERREUR: champ UserLogin vide")
	code_rejet_840007655 = 0x5070
	code_rejet_840007655 = code_rejet_840007655 + EFFICACE_840007655
	i_strcpy(pt_CHAMP_ERRONE_840007655, "UserLogin")
	erreur_840007655 = i_PlvMessEmettre(6251,2,g_iartin,"",2, code_rejet_840007655, pt_CHAMP_ERRONE_840007655, 0)
	SAUT STOCKE_ERRONE
FINSI
index_840007655 = 0
POINT BOUCLE4
	i_strcpy(pt_2_840007655," ")
	i_get_sub_str(pt_1_840007655, index_840007655, index_840007655, pt_2_840007655)
	SI ((i_strcmp("@", pt_2_840007655) != 0) && (index_840007655 < longueur_840007655))
	ALORS
		index_840007655 = index_840007655 + 1
		SAUT BOUCLE4
	FINSI
index_840007655 = index_840007655 - 1
i_strcpy(pt_2_840007655," ")
i_get_sub_str(pt_1_840007655, 0, index_840007655, pt_2_840007655)
erreur_840007655=i_set_art_str(g_iartout, $Twifi::msisdnNb, pt_2_840007655)
taille_840007655 = 0
taille_840007655 = (i_strlen(pt_2_840007655) + 1) * 8

SI taille_840007655 > 152
ALORS
	taille_840007655 = 152
FINSI

##trace1("[Twifi_dis] msisdn taille=%d",taille)
erreur_840007655 = i_resize_tlv(g_iartout, "T4msisdn", "msisdn",taille_840007655)

# g_iartout T4accpointname4 <> UserLogin partie realm
SI (index_840007655 + 1 < longueur_840007655)
  ALORS
  index_840007655=index_840007655+1
  i_strcpy(pt_2_840007655," ")
  i_get_sub_str(pt_1_840007655, index_840007655, longueur_840007655, pt_2_840007655)
SINON
  i_strcpy(pt_2_840007655," ")
FINSI
#trace2( " valeur userlog_realm : %s",pt_2,"")
erreur_840007655=i_set_art_str(g_iartout, $Twifi::accpointname4, pt_2_840007655)
taille_840007655 = 0
taille_840007655 = (i_strlen(pt_2_840007655))
#trace1("[Twifi_dis] accpointname4 taille=%d",taille)
erreur_840007655 = i_resize_tlv(g_iartout, "T4accptname4", "accpointname4T",taille_840007655)

# 2) g_iartout T4_idpart <<>> HotspotID
# c'est fait par defaut, erreur = i_set_art_field(g_iartout, $Twifi::Adridpart, 0x0)
SI (i_valid_field_n(g_iartout, $Twifi::HotspotID))
ALORS
	i_strcpy(pt_1_840007655," ")
	erreur_840007655 = i_get_art_str(g_iartout, $Twifi::HotspotID, pt_1_840007655)
	#trace2("[Twifi_tr] valeur IDPART : %s",pt_1,"")
	erreur_840007655=i_set_art_str(g_iartout, $Twifi::idpartNb, pt_1_840007655)
	taille_840007655 = 0
	taille_840007655 = (i_strlen(pt_1_840007655) + 1) * 8
	#trace1("[Twifi_dis] IDPART taille=%d",taille)
	erreur_840007655 = i_resize_tlv(g_iartout, "T4idpart", "idpart",taille_840007655)
SINON
	erreur_840007655 = i_supprChamp(g_iartout, "T4idpart")
FINSI

erreur_840007655 = i_stocke_art(g_iartout, 0, PT_OK, 0)
##trace("[Twifi_tr] *******Fin traitement Article Twifi **********")

RETOUR TRAIT_OK

#####################################################################
# POINT de branchement : stockage PT_OK
#####################################################################

POINT STOCKE_OK

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

#trace("[Twifi_tr] **********Fin traitement WIFI********")
RETOUR TRAIT_OK

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

erreur_840007655 = i_make_art_rej(g_iartin, g_iartout5, code_rejet_840007655)
erreur_840007655 = i_stocke_art(g_iartout5, 0, PT_ERRONE, 0)

#trace("[Twifi_tr] Fin traitement WIFI : Stockage de l'article en ERRONE")
RETOUR TRAIT_OK
#---------------------------------- Fin Twifi_trt.src -------------------------
