DEFINITION NUMTAB_660004627 4
DEFINITION TRAI_KO_660004627 -1
DEFINITION Multidistribution_Non_660004627 0
DEFINITION DISTRIBUTION_AIG_IMSI_660004627 2
DEFINITION DISTRIBUTION_SPECIALE_660004627 0
DEFINITION C_Article_660004627 "Tmmm"
DEFINITION C_Tdpv_660004627 "Tdpvgsm"
REGISTRE ENTIER erreur_660004627
REGISTRE ENTIER calltype_660004627
REGISTRE ENTIER duree_660004627
REGISTRE ENTIER date_audit_660004627
REGISTRE ENTIER date_fin_660004627
REGISTRE ENTIER date_audit_gmt_660004627
REGISTRE ENTIER nbpagefaxmax_660004627
REGISTRE ENTIER nbpagefax_660004627
REGISTRE ENTIER flag_rdt_660004627
REGISTRE ENTIER code_errone_660004627
REGISTRE ENTIER EFFICACE_660004627
REGISTRE ENTIER res_660004627
REGISTRE POINTEUR pt_1_660004627
REGISTRE POINTEUR pt_deb_660004627
REGISTRE POINTEUR pt_imsi_660004627
######################################################################
# DISTRIBUTION	Tmmm_dis.src
#	Article Tmmm 
#	Automate E164
#
######################################################################
#	HISTORIQUE
# creation 07/09/05
# 17/11/05 modif ajout ECC, nbpagefax
# URS/PSA	01/02/06	Appel a aiguillage2
# 07/03/06 JLG date audit en heure metro
# 20/03/06 JLG compteur redistribution
# 23/03/06 JLG FO 131 suppression ancienne ECC
# 05/04/06 JLG FO 164 champ duree
# 19/04/06 FO 180 dump article
# 19/04/06 FO 181 stockage en errone
# 12/05/06 PSA Appel fonction i_incr_redist_dist pour compteur redistribution
# 01/09/06 JLG report FO CaME : 240, 242
# 04/09/06 JLG FO 240 complements
# 09/08/07 Creation enveloppe optionnelle E_Redist2
# 08/12/10 JLG G3R1lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 29/03/11 PKH QC800 appel aiguillage2 avec  criteres speciaux
# 29/02/2012 - JLG -G3R6 QC1005 modif alarme retour aiguillage
# 02/07/2014 - JLG -G5R1 QC1405, champ eec du DPV si g_ieec > 500
#####################################################################

# ftab_normal (table d'indices des automates) :
#E164	(MMM)








###########################################################################
# Allocation memoire
###########################################################################

pt_1_660004627		= "1111111111111111111111111111111111111111111111111111111111111111111111111"
pt_deb_660004627		= "5555555555555555555555555555555555555555555555555555555555555555555555555"
pt_imsi_660004627     	= "99999999999999999999999999999999999999999999999999999999999999999999999999"
EFFICACE_660004627 =1

trace("[Tmmm_dis] =========== debut Pcode DISTRIBUTION  =============")
#erreur = i_fdump_art(g_iartin)

##################################################################################
# Identification de la provenance de l'article
# flag_rdt : nb de passage en redistribution (lecture de l'enveloppe obligatoire)
##################################################################################
flag_rdt_660004627 = -1
flag_rdt_660004627 = i_LireRedistCpt()

SI (flag_rdt_660004627 == 0)
ALORS
	erreur_660004627 = i_add_opt( "E_Redistri2" )
FINSI
erreur_660004627 = i_set_attr_val_n( $E_Redistri2::EnvoiRedis, 0)

########################################################
# Cpt applicatif CPT_RDT=1509 (REDISTRIBUTION)
########################################################
# FE_0028 comptabilisation des CRAs issus de la redistribution
date_fin_660004627=i_get_art_field(g_iartin,$Tmmm::dfin)
erreur_660004627= i_incr_redist_dist_660004265(date_fin_660004627)



##############################################################################
# Variables fonctionnelles
##############################################################################


########### Date_Audit
date_audit_gmt_660004627 = i_date_audit()
date_audit_660004627 = i_DHgetLocalTime(NUMTAB_660004627, 7, date_audit_gmt_660004627)


########### EECidNorm

# voir plus bas : V3t1.3	idemet

########### NbPageFaxMax

calltype_660004627 = i_get_art_field(g_iartin, $Tmmm::CallType)

SI (i_valid_field(g_iartin,"T3_nbPageFax"))
ALORS
	nbpagefax_660004627=i_get_art_field(g_iartin,$Tmmm::nbPageFax)
	trace1("nbpagefax=0x%x",nbpagefax_660004627)

#	longueur = g_iartin.nbPageFax!NELEM
#	index = longueur - 1
#	nbpagefax=0
#	exposant=0
#	res=0
#	facteur=0
#	POINT BOUCLE1
#	SI index >= 0
#	ALORS
#		SI g_iartin.nbPageFax[index] != 0xF
#		ALORS
#			facteur=exposant
#			res = g_iartin.nbPageFax[index]
#			POINT BOUCLE2
#			SI facteur > 0
#			ALORS
#				res = res * 10
#				facteur = facteur - 1
#				SAUT BOUCLE2
#			FINSI
#			nbpagefax = nbpagefax + res
#			exposant=exposant + 1
#		FINSI
#		index = index - 1
#		SAUT BOUCLE1
#	FINSI

	
	SI (calltype_660004627 == 0x22)
	ALORS
		SI (nbpagefax_660004627 > 254)
		ALORS
			nbpagefaxmax_660004627 = 0xFE
		SINON
			nbpagefaxmax_660004627 = nbpagefax_660004627
		FINSI
	SINON
		nbpagefaxmax_660004627 = 0xFF
	FINSI
SINON
	nbpagefaxmax_660004627 = 0xFF
FINSI
trace1("[Tmmm_dis] calltype=0x%x",calltype_660004627)
trace1("[Tmmm_dis] nbpagefax=%d",nbpagefax_660004627)
trace1("[Tmmm_dis] nbpagefaxmax=%d",nbpagefaxmax_660004627)
########################################################
# Cpt applicatifs dans fonction de distri
########################################################


#############################################
# Creation article Conversion (g_iartout10) #
# Sera utile pour CCD		       #
#############################################

#erreur = i_cree_art("Conversion",g_iartout10)

############################################################################
# Duplication Tdpv33 (g_iartout)
############################################################################
#Duplication article d entree vers DPV TLV

	SI (i_dup_art_tab( g_iartin, g_iartout, C_Tdpv_660004627))
	ALORS
		trace("ERREUR de duplication vers Tdpv33")
		code_errone_660004627 = 0xA0D0
		code_errone_660004627 = code_errone_660004627 + EFFICACE_660004627
		erreur_660004627 = i_PlvMessEmettre(6004,2,g_iartin,"",3,code_errone_660004627,C_Tdpv_660004627,0)
		SAUT DISTRI_ERR
	FINSI
	trace("[Tmmm_dis] OK de duplication vers Tdpv33")

#############################
# PORTABILITE fait dans fonction de distri
#############################



#############################
# PRE-VALORISATION
#############################
# neant

#############################
# NORMALISATION et TRONCATURE
#############################

############################################################################
# Mises au format DPV33
############################################################################

trace("[Tmmm_dis] Ajout de champs supplementaires")


# T3.t1
# V3t1.1	type			:-	:-	:1VAL :CallType
#FO 21897 binaire METEOR corrigee
erreur_660004627 = i_set_art_field(g_iartout, $Tdpvgsm::type,calltype_660004627)

# V3t1.2	tentite			:-	:-	:MSET :05:1

## V3t1.3	idemet			:-	:-	:1VAL :EECid
# V3t1.3	idemet			:-      :E      :NORM :EECid:-:$E164
# V3t1.4	IMSI			:-	:-	:1VAL :imsi
# V3t1.5	DATE			:-	:-	:1VAL :DATE

# V3t1.6	DUREE			:-	:-	:MSET :00
duree_660004627 = i_get_art_field(g_iartin, $Tmmm::DUREE)
erreur_660004627 = i_set_art_field(g_iartout, $Tdpvgsm::DUREE,duree_660004627)

# V3t1.7	svcsup			:-	:-	:MSET :FF:1
# V3t1.8	tlserv			:-	:-	:MSET :FF:1
# V3t1.9	support1		:-	:-	:MSET :FF:1
# V3t1.10	systype			:-	:-	:MSET :00:1
# V3t1.11	reserve2		:-	:-	:MSET :FF:1
# V3t1.12	origine			:-	:-	:MSET :FF:1
# V3t1.13	indeff			:-	:-	:MSET :00:1
# V3t1.14	tterm			:-	:-	:MSET :00:1
# V3t1.15	indtax			:-	:-	:MSET :FF:1
# V3t1.16	nbUT			:-	:-	:MSET :FF:4
# V3t1.17	chgcar			:-	:-	:MSET :FF:2

# V3t1.18	couleur			:-	:-	:MSET :FF:1

# T3t2

# V3t2		idpart			:-	:-	:1VAL :CalledId
erreur_660004627 = i_get_art_str(g_iartin, $Tmmm::CalledId,pt_1_660004627)
i_get_sub_str(pt_1_660004627, 0, 1, pt_deb_660004627)
SI  ( i_strcmp("A1", pt_deb_660004627) == 0 )
ALORS
	erreur_660004627 = i_dup_chp_1val(g_iartin, g_iartout, $Tmmm::CalledId, $Tdpvgsm::idpart)
	erreur_660004627 = i_supp_quart_num($Tdpvgsm::idpart, 0, 2, 0x0f, g_iartout, g_iartout)
	erreur_660004627 = i_add_quart_num($Tdpvgsm::idpart, 0, 0x0f, "33", g_iartout, g_iartout)
SINON
	SI ( i_strcmp("91", pt_deb_660004627) == 0 )
	ALORS
		erreur_660004627 = i_dup_chp_1val(g_iartin, g_iartout, $Tmmm::CalledId, $Tdpvgsm::idpart)
		erreur_660004627 = i_supp_quart_num($Tdpvgsm::idpart, 0, 2, 0x0f, g_iartout, g_iartout)
	SINON
		trace("[Tmmm_dis] Normalisation CalledId pour idpart NOK")
		code_errone_660004627 = 0xA010
		code_errone_660004627 = code_errone_660004627 + EFFICACE_660004627
		i_strcpy(pt_1_660004627,"CalledId pour idpart")
		erreur_660004627 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004627,C_Article_660004627,pt_1_660004627)
		SAUT DISTRI_ERR
	FINSI
FINSI

# T3t4

# V3t4		MSISDN			:-	:-	:1VAL :MSISDN
erreur_660004627 = i_get_art_str(g_iartin, $Tmmm::MSISDN,pt_1_660004627)
i_get_sub_str(pt_1_660004627, 0, 1, pt_deb_660004627)
SI  ( i_strcmp("A1", pt_deb_660004627) == 0 )
ALORS
	erreur_660004627 = i_dup_chp_1val(g_iartin, g_iartout, $Tmmm::MSISDN, $Tdpvgsm::MSISDN)
	erreur_660004627 = i_supp_quart_num($Tdpvgsm::MSISDN, 0, 2, 0x0f, g_iartout, g_iartout)
	erreur_660004627 = i_add_quart_num($Tdpvgsm::MSISDN, 0, 0x0f, "33", g_iartout, g_iartout)
SINON
	SI ( i_strcmp("91", pt_deb_660004627) == 0 )
	ALORS
		erreur_660004627 = i_dup_chp_1val(g_iartin, g_iartout, $Tmmm::MSISDN, $Tdpvgsm::MSISDN)
		erreur_660004627 = i_supp_quart_num($Tdpvgsm::MSISDN, 0, 2, 0x0f, g_iartout, g_iartout)
	SINON
		trace("[Tmmm_dis] Normalisation MSISDN pour MSISDN NOK")
		code_errone_660004627 = 0xA010
		code_errone_660004627 = code_errone_660004627 + EFFICACE_660004627
		i_strcpy(pt_1_660004627,"MSISDN pour MSISDN")
		erreur_660004627 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004627,C_Article_660004627,pt_1_660004627)
		SAUT DISTRI_ERR
	FINSI
FINSI

# T3t13 
# T4t13.5	subpart			:-	:-	:1VAL :partBox
# T4t13.5	subdom			:-	:-	:1VAL :domBox
# T4t13.5	chrgact			:-	:-	:MSET :FF:1

# T4t13.5	nbfaxpag		:-	:-	:MSET :00:1
trace1("[Tmmm_dis] nbpagefaxmax =0x%x",nbpagefaxmax_660004627)
erreur_660004627 = i_set_art_field(g_iartout, $Tdpvgsm::nbfaxpag,nbpagefaxmax_660004627)

# T3t30
# T4t30.1	timeInCE		:-	:-	:1VAL	:DATE
erreur_660004627 = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_audit_660004627)

# T4t30.2	eec			:-	:-	:MSET :00:1
# QC1405
SI (g_ieec > 500)
ALORS
  erreur_660004627 = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec - 500)
SINON
  erreur_660004627 = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec)
FINSI
#/QC1405


############################################################################
# Elimines explicites en DIVERS 
############################################################################
# Neant

##############################################################################
# Attente requete Table de Distribution
##############################################################################
# !bREDIST signifie envoie et lecture requete OK
# bREDIST ==1 signifie Echec sur i_EnvoiReqConsTabDistDouble ou lecture requete impossible

#---------------------------------------------------------------------------
# DPV33
#---------------------------------------------------------------------------
# SAUT ECC_RJPGSM
#######################################
# Appel fonction distribution
#######################################
#QC800 DISTRIBUTION_SPECIALE au lieu de DISTRIBUTION_AIG_IMSI pour IMSI = 777777777777777

erreur_660004627 = i_get_art_str(g_iartin,$Tmmm::imsi,pt_imsi_660004627)
SI (!i_strplcmp(pt_imsi_660004627,"777777777777777",0,15))
ALORS
	erreur_660004627 = aiguillage2_660004590 (g_iartin, g_iartout, DISTRIBUTION_SPECIALE_660004627, Multidistribution_Non_660004627)
SINON
	erreur_660004627 = aiguillage2_660004590 (g_iartin, g_iartout, DISTRIBUTION_AIG_IMSI_660004627, Multidistribution_Non_660004627)
FINSI

SI (erreur_660004627 == TRAI_KO_660004627)
ALORS
# QC1005
	trace("<<<__LINE__<<<__FILE__<<< Erreur retour fonction aiguillage2")
#	code_errone = 0xA0B0
#	code_errone = code_errone + EFFICACE
#	erreur = i_PlvMessEmettre(7500,2,g_iartin,"",3,code_errone,C_Article,calltype)
	SAUT DISTRI_ERR
FINSI

RETOUR TRAIT_OK

############################################################################
# Stockage en Errone 
############################################################################
POINT DISTRI_ERR

trace("[Tmmm_dis] Stockage en errone de distribution")
res_660004627 = i_make_art_rej(g_iartin, g_iartout8, 0)
res_660004627 = i_stocke_art( g_iartout8, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK
#---------------------------------------FIN Tmmm_dis.src-------------------
