DEFINITION ERR_SYNTAX_780042401 0x5040
DEFINITION ERR_CROISE_780042401 0x50F0
DEFINITION INCREMENT_780042401 1
DEFINITION CPT_780042401 1501
DEFINITION C_NON_ACTIVE_780042401 "N/A"
DEFINITION NUMTAB_780042401 4
DEFINITION NUMZONE_780042401 7
REGISTRE ENTIER X_780042401
REGISTRE ENTIER Y_780042401
REGISTRE ENTIER Z_780042401
REGISTRE ENTIER date_audit_780042401
REGISTRE ENTIER erreur_780042401
REGISTRE ENTIER code_rejet_780042401
REGISTRE ENTIER EFFICACE_780042401
REGISTRE ENTIER MIBLOC_780042401
REGISTRE ENTIER MIBSTATUS_780042401
REGISTRE ENTIER MIBNOTIF_780042401
REGISTRE ENTIER TicketType_780042401
REGISTRE ENTIER status_780042401
REGISTRE ENTIER size_status_780042401
REGISTRE ENTIER CdiFF_780042401
REGISTRE ENTIER date_plat_780042401
REGISTRE POINTEUR pt_CHAMP_ERRONE_780042401
REGISTRE POINTEUR pt_contratid_780042401
REGISTRE POINTEUR pt_1_780042401
REGISTRE POINTEUR pt_2_780042401
################################################################
# Pcode de TRAITEMENT Tmib.src
# Service MIB: Mobile Internet for Business 
# Article : Tmib notification type SMS ou STATUS
#       ou : Tmib localisation
################################################################
# 
# URS/RBE	09/09/05	Creation
# URS/PSA	12/01/06	FO 11, 13, 14, 15
# URS/PSA	09/03/06	FO 115
# URS/PSA	26/07/06	Stockage en errone des DC avec contole croise incorrect
# 14/01/11 - BEA - G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
#
################################################################










# Initialisations
EFFICACE_780042401 = 2
MIBLOC_780042401 = 0
MIBSTATUS_780042401 = 0
MIBNOTIF_780042401 = 0
size_status_780042401 = 0
CdiFF_780042401 = 0
TicketType_780042401=0

# INITIALISATION POINTEUR
pt_CHAMP_ERRONE_780042401 = "0123456789012345678901234567890123456789"
pt_contratid_780042401 = "111111111111111111111111111111111111111111111"
i_strcpy(pt_contratid_780042401,"")
pt_1_780042401 = "222222222222222222222222222222222222222222222"
i_strcpy(pt_1_780042401,"")
pt_2_780042401 = "333333333333333333333333333333333333333333333"
i_strcpy(pt_2_780042401,"")
##############################################################################################

trace("Pcode de traitement de Tmib")

erreur_780042401=i_test_art(g_iartin)
SI erreur_780042401
ALORS
	#trace("test_art en erreur")
	code_rejet_780042401 = ERR_SYNTAX_780042401 + EFFICACE_780042401
	erreur_780042401 = i_PlvMessEmettre(6054,2,g_iartin,"",1,code_rejet_780042401,0,0)
	SAUT STOCKE_ERRONE
FINSI



erreur_780042401=i_get_art_str(g_iartin, $Tmib::TicketType, pt_1_780042401)
i_get_sub_str(pt_1_780042401, 0, 0, pt_2_780042401)
#trace2("Valeur de TType : %s",pt_1,"")
#trace2("Valeur de TType : %s",pt_2,"")

SI (i_strcmp("N", pt_2_780042401) == 0)
ALORS
	MIBNOTIF_780042401 = 1
	TicketType_780042401 = 0x61
SINON
	SI (i_strcmp("S", pt_2_780042401) == 0)
	ALORS
		MIBSTATUS_780042401 = 1
		TicketType_780042401 = 0x62
	SINON
		SI (i_strcmp("L", pt_2_780042401) == 0)
		ALORS
			MIBLOC_780042401 = 1
			TicketType_780042401 = 0x63
		SINON
			trace("Erreur sur TicketType")
			i_strcpy(pt_CHAMP_ERRONE_780042401, "TicketType")
			code_rejet_780042401 = ERR_SYNTAX_780042401 + EFFICACE_780042401
			erreur_780042401 = i_PlvMessEmettre(6050,2,g_iartin,"",3,code_rejet_780042401, pt_CHAMP_ERRONE_780042401, TicketType_780042401)
			SAUT STOCKE_ERRONE
		FINSI
	FINSI
FINSI

# calcul de la variable status
size_status_780042401 = g_iartin.STATUS!NELEM
#trace1("taille status : %d",size_status)

# NELEM donne le nombre d element y compris le F de bourrage eventuel
SI g_iartin.STATUS[size_status_780042401-1] == 0xF
ALORS
	size_status_780042401 = size_status_780042401 - 1
FINSI

SI (size_status_780042401 == 1)
ALORS
	status_780042401 = g_iartin.STATUS[0]
SINON
	SI (size_status_780042401 == 2)
	ALORS
		status_780042401 = g_iartin.STATUS[0]*10 + g_iartin.STATUS[1]
	SINON
		SI (size_status_780042401 == 3)
		ALORS
			status_780042401 = g_iartin.STATUS[0]*100 + g_iartin.STATUS[1]*10 + g_iartin.STATUS[2]
		SINON
			status_780042401 = g_iartin.STATUS[0]*1000 + 
			g_iartin.STATUS[1]*100 + 
			g_iartin.STATUS[2]*10 + 
			g_iartin.STATUS[3]
		FINSI
	FINSI
FINSI
#trace1("MIB - status : %d",status)

# Calcul de CdiFF
erreur_780042401 = i_get_art_str( g_iartin, $Tmib::ContratId, pt_contratid_780042401) 

# FO 13, 14, 15 : pour le moment ContratId en entree est en ASCII. Il faut donc tester la chaine N/A
#SI ((g_iartin.ContratId[0] == 0xF) && (g_iartin.ContratId[1] == 0xF) && 
#  (g_iartin.ContratId[2] == 0xF) && (g_iartin.ContratId[3] == 0xF) )
SI (i_strcmp(pt_contratid_780042401, C_NON_ACTIVE_780042401) == 0)
ALORS
	CdiFF_780042401 = 1
FINSI
#trace1("Valeur Cdiff : %d",CdiFF)

# calcul de l'inefficacite du DC
SI (MIBLOC_780042401 == 1) && 
   (CdiFF_780042401 == 1) &&
   ((status_780042401 == 101) || (status_780042401 == 102))
ALORS
	EFFICACE_780042401 = 0
	SAUT STOCKE_DIV
FINSI
EFFICACE_780042401 = 1
#trace1("Valeur EFFICACE : %d",EFFICACE)
# Tests croises
SI (MIBNOTIF_780042401 == 1)
ALORS
	SI (status_780042401 != 02) &&
	   (status_780042401 != 99) &&
	   (status_780042401 != 31) &&
	   (status_780042401 != 32)
	ALORS
		i_strcpy(pt_CHAMP_ERRONE_780042401, "MOBNOTIF et champ Status")
		code_rejet_780042401 = ERR_CROISE_780042401 + EFFICACE_780042401
		erreur_780042401 = i_PlvMessEmettre(6051,2,g_iartin,"",3,code_rejet_780042401, pt_CHAMP_ERRONE_780042401, status_780042401)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1("Tests croises1 Valeur MIBNOTIF : %d",MIBNOTIF)
#trace1("Tests croises1 Valeur status : %d",status)

SI (MIBSTATUS_780042401 == 1)
ALORS
	SI (status_780042401 != 02) &&
	   (status_780042401 != 00) &&
	   (status_780042401 != 01) &&
	   (status_780042401 != 11) &&
	   (status_780042401 != 12) &&
	   (status_780042401 != 21) &&
	   (status_780042401 != 99) &&
	   (status_780042401 != 31) &&
	   (status_780042401 != 32)
	ALORS
		i_strcpy(pt_CHAMP_ERRONE_780042401, "MOBSTATUS et champ Status")
		code_rejet_780042401 = ERR_CROISE_780042401 + EFFICACE_780042401
		erreur_780042401 = i_PlvMessEmettre(6051,2,g_iartin,"",3,code_rejet_780042401, pt_CHAMP_ERRONE_780042401, status_780042401)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1("Tests croises2 Valeur MIBSTATUS : %d",MIBSTATUS)
#trace1("Tests croises2 Valeur status : %d",status)

SI (MIBLOC_780042401 == 1)
ALORS
	#FO289 ajout de (status != 42) && (status != 43)

	SI (status_780042401 != 00)  &&
	   (status_780042401 != 11)  &&
	   (status_780042401 != 12)  &&
	   (status_780042401 != 13)  &&
	   (status_780042401 != 21)  &&
	   (status_780042401 != 22)  &&
	   (status_780042401 != 41)  &&
	   (status_780042401 != 42)  &&
	   (status_780042401 != 43)  &&
	   (status_780042401 != 44)  &&
	   (status_780042401 != 49)  &&
	   (status_780042401 != 99)  &&
	   (status_780042401 != 101) &&
	   (status_780042401 != 102) &&
	   (status_780042401 != 103) &&
	   (status_780042401 != 104) &&
	   (status_780042401 != 105) &&
	   (status_780042401 != 111) &&
	   (status_780042401 != 112) &&
	   (status_780042401 != 201) &&
	   (status_780042401 != 202) &&
	   (status_780042401 != 203) &&
	   (status_780042401 != 204) &&
	   (status_780042401 != 205) &&
	   (status_780042401 != 211) &&
	   (status_780042401 != 212) &&
	   (status_780042401 != 213) &&
	   (status_780042401 != 311) &&
	   (status_780042401 != 312) 
	ALORS
		i_strcpy(pt_CHAMP_ERRONE_780042401, "MOBLOC et champ Status")
		code_rejet_780042401 = ERR_CROISE_780042401 + EFFICACE_780042401
		erreur_780042401 = i_PlvMessEmettre(6051,2,g_iartin,"",3,code_rejet_780042401, pt_CHAMP_ERRONE_780042401, status_780042401)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1("Tests croises3 Valeur MIBLOC : %d",MIBLOC)
#trace1("Tests croises3 Valeur status : %d",status)

SI (MIBNOTIF_780042401 == 1) || (MIBSTATUS_780042401 == 1)
ALORS
	SI (CdiFF_780042401 == 1)
	ALORS
		i_strcpy(pt_CHAMP_ERRONE_780042401, "MOBNOTIF ou MIBSTATUS et champ ContratID")
		code_rejet_780042401 = ERR_CROISE_780042401 + EFFICACE_780042401
		erreur_780042401 = i_PlvMessEmettre(6052,2,g_iartin,"",3,code_rejet_780042401, pt_CHAMP_ERRONE_780042401, pt_contratid_780042401)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1("Tests croises4 Valeur MIBNOTIF : %d",MIBNOTIF)
#trace1("Tests croises4 Valeur MIBSTATUS : %d",MIBSTATUS)

SI (MIBLOC_780042401 == 1) && (CdiFF_780042401 == 1)
ALORS
	SI ((status_780042401 != 101) && (status_780042401 != 102))
	ALORS
		i_strcpy(pt_CHAMP_ERRONE_780042401, "MOBLOC et champ status")
		code_rejet_780042401 = ERR_CROISE_780042401 + EFFICACE_780042401
		erreur_780042401 = i_PlvMessEmettre(6051,2,g_iartin,"",3,code_rejet_780042401, pt_CHAMP_ERRONE_780042401, status_780042401)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1("Tests croises5 Valeur MIBLOC : %d",MIBLOC)
#trace1("Tests croises5 Valeur status : %d",status)

########################################################
# Cpt applicatifs
########################################################
date_audit_780042401=i_date_audit()
date_plat_780042401 = i_DHgetLocalTime(NUMTAB_780042401, NUMZONE_780042401, date_audit_780042401)
Y_780042401=g_ieec
X_780042401=0
Z_780042401=0
X_780042401 = TicketType_780042401
erreur_780042401 = i_incr_cpt(CPT_780042401,X_780042401,Y_780042401,Z_780042401,date_plat_780042401,INCREMENT_780042401)

erreur_780042401 = i_stocke_art(g_iartin, 0, PT_OK, 0)
#trace("Fin traitement Article Tmib")

RETOUR TRAIT_OK

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

POINT STOCKE_OK

erreur_780042401 = i_stocke_art(g_iartin, 0, PT_OK,0)

trace("Fin traitement Article Tmib")
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")

erreur_780042401 = i_make_art_rej(g_iartin, g_iartout, code_rejet_780042401)
erreur_780042401 = i_stocke_art(g_iartout, 0, PT_ERRONE, 0)

trace("Fin traitement Tmib")
RETOUR TRAIT_OK


###########################################################################
# Stockage en elimine
###########################################################################
POINT STOCKE_DIV
#IFDEF trace_niv1 = 1
trace( "Fin du Pcode de traitement MIB : Stockage en ELIMINE" )
#ENDIF
erreur_780042401 = i_stocke_art( g_iartin, 0, PT_DIVERS, 0 )

RETOUR TRAIT_OK

#---------------------------- Fin Tmib.src -----------------------------------------
