FVERS = 2
REFOBJET : ID = 660004621 ; ID_INIT = 660004517 ; NOM = Tincc ; VERSION = B362 ; DATE = 01/04/15-13:06:17 ( 1427893577 ) ; CAT = 8 ; ETAT = 0 ; NB_FILS =1 ; ID_FILS = 660004590
ID_EST = 660000145
COMMENT = "G3R6 QC1005 modif alarme retour aiguillage"
CREATEUR = jlgambin
# DEBUT_CORPS
PCODE_PERE=Pdistribution
######################################################################
# DISTRIBUTION	Tincc_dist.src
#	Article Tincc 
#
######################################################################
#	HISTORIQUE
#	creation 10/01/2006
# 19/04/06 FO 181 stockage en errone
# 12/05/06 PSA Appel fonction i_incr_redist_dist pour compteur redistribution
# 12/07/06 THE G2R0CbME FO 238
# 14/08/06 PKH G3R0CcME GRETA-ITX (tempd d'attente gratuit) 
# 01/09/06 JLG report FO CaME : 240, 242
# 04/09/06 JLG FO 240 complements
# 03/10/06 DRE G3R0CdME spec Traitement INCC S3F0
# 17/10/06 DRE G3R0CdME spec Traitement INCC S3F1
# 28/11/06 DRE G3R0CdME FO 359 (regles de Normalisation sur le V4t18.4)
# 12/12/06 DRE FO 379 spec INCC_GRETA_ORLCF S3F4.doc
#		- Modification des valeurs des champs suivants :V3t1.7, V3t1.9, V3t1.10
#		- Ajout des sous valeurs du champ T4t18.5
# 09/08/07 Creation enveloppe optionnelle E_Redist2
# 05/09/07 JLG G1R5     spec Traitement INCC S6F1
# 21/09/07 JLG G1R5     spec Traitement INCC S6F2
# 24/09/07 JLG G1R5     FO595 Echec de Normalisation
# 31/10/07 RHE G1R5     FO606  modification pour le calcul du champ teleservice V3t1.8
# 22/04/08 PKH G1R7 TT 86 incrementation du CPT 1502 en commentaire
# 11/09/09 PKH G2R3 QC425 modification interro de la table FILTRE_DISE_LOC 
# 18/08/09 PKH G2R3 QC428 interro avec le champ SCPIN au lieu  TransNb
# 21/08/09 PKH G2R3 suite de QC428 interro avec le champ SCPIN au lieu de CalledNb dans le cas TransNb absent
# 09/11/09 PSA G2R5 prise en compte SimRing
# 21/01/10 JLGTHE G2R6 Service AVME pour MIPC Modification duplication du champ V3t1.4
# 04/02/10 JLG G2R6 lot3 : AVME pour MIPC (evolution) Type de distribution "Inconnu"
# 16/02/10 JLG G2R6 QC517, 556 evolution spec sur champ RedirReason (offre SimRing)
# 31/05/10 JLG G2R6 QC649
# 08/12/10 JLG G3R1lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 10/03/11 JLG G3R2C4 fusion G3R2C3 avec G3R1C600 (modif pour SimRing)
# 29/02/2012 - JLG -G3R6 QC1005 modif alarme retour aiguillage
# 02/07/2014 - JLG -G5R1 QC1405, champ eec du DPV si g_ieec > 500
#####################################################################

DEFINITION Multidistribution_Non 0
DEFINITION DISTRIBUTION_INCONNU 1

DEFINITION C_Article "Tincc"
DEFINITION C_Tdpv "Tdpvgsm"
DEFINITION NUMTAB 4
DEFINITION TRAI_KO -1

DEFINITION SvcKeySimRing 0x97

REGISTRE ENTIER date_plat
REGISTRE ENTIER erreur
REGISTRE ENTIER date_audit
REGISTRE ENTIER date_fin
REGISTRE ENTIER Nb_redist
REGISTRE ENTIER date
REGISTRE ENTIER ICAR_ABS
REGISTRE ENTIER code_errone
REGISTRE ENTIER EFFICACE
REGISTRE ENTIER type
REGISTRE ENTIER longueur
REGISTRE ENTIER index
REGISTRE ENTIER VAR
REGISTRE ENTIER NB_UT
REGISTRE ENTIER svckey
REGISTRE ENTIER Code_Pays_VLR
REGISTRE ENTIER TelSvcI


REGISTRE POINTEUR pt_1
REGISTRE POINTEUR pt_idemet
REGISTRE POINTEUR pt_DestNum1
REGISTRE POINTEUR pt_DestNum2
REGISTRE POINTEUR pt_local

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

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

pt_1		= "1111111111111111111111111111111111111111111111111111111111111111111111111"
pt_idemet	= "6666666666666666666666666666666666666666666666666666666666666666666666666"
pt_DestNum1 = "777777777777777777777777777777777777777777777"
pt_DestNum2 = "pt_DestNum29999999999999999999999999999999999"
pt_local = "pt_local8888888888888888888888888888888888888888"

i_strcpy(pt_1,"")
i_strcpy(pt_local,"")
i_strcpy(pt_DestNum1,"")

EFFICACE =1
type = 0
Code_Pays_VLR = 0xFF
TelSvcI = 0xFF

trace("[Tincc_dist] =========== debut Pcode DISTRIBUTION  =============")

# erreur = i_fdump_art(g_iartin)

SI (i_LireRedistCpt() == 0)
ALORS
	erreur = i_add_opt( "E_Redistri2" )
FINSI
erreur = i_set_attr_val_n( $E_Redistri2::EnvoiRedis, 0)

############################################################################
# Variables fonctionnelles
############################################################################
########################################################
########### Date_Audit
date_audit=i_date_audit()
#trace1("[Tincc_dist] date_audit=%x",date_audit)

SI (i_valid_field_n(g_iartin, $Tincc::VLRNb))
ALORS
	Code_Pays_VLR = ( g_iartin.VLRNb[0] * 10 ) + g_iartin.VLRNb[1]
FINSI

SI (i_valid_field_n(g_iartin, $Tincc::TelSvcI))
ALORS
	TelSvcI = i_get_art_field(g_iartin, $Tincc::TelSvcI)
FINSI

SI (i_valid_field_n(g_iartin, $Tincc::TransNb))
ALORS
	erreur = i_get_art_str(g_iartin, $Tincc::TransNb, pt_DestNum1)
SINON
	erreur = i_get_art_str(g_iartin, $Tincc::CalledNb, pt_DestNum1)
FINSI

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

	SI (i_dup_art_tab( g_iartin, g_iartout, C_Tdpv))
	ALORS
#		trace("ERREUR de duplication")
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(6303,2,g_iartin,"",3,code_errone,C_Tdpv,0)
		SAUT DISTRI_ERR
	FINSI

erreur = i_cree_art("Conv_URS",g_iartout10)

#############################
# REDISTRIBUTION
#############################
#Compteur de redistrib
##################################################################################
# la provenance de l'article 
# Nb_redist : nb de passage en redistribution (lecture de l'enveloppe obligatoire)
##################################################################################
Nb_redist = -1
Nb_redist = i_LireRedistCpt()

########################################################
# Cpt applicatif CPT_RDT=1509 (REDISTRIBUTION)
########################################################
# FE_0028 comptabilisation des CRAs issus de la redistribution
	date_fin=i_get_art_field(g_iartin,$Tincc::dfin)
	erreur= i_incr_redist_dist(date_fin)

#############################
# PORTABILITE
#############################

#############################
# PRE-VALORISATION
#############################
# dans mise au format dpv
#############################
# NORMALISATION et TRONCATURE
#############################
# dans mise au format dpv
############################################################################
# Mises au format DPV33
############################################################################
#trace("[Tincc_dis] Modif des champs Tdpvgsm")
########################## Modif des champs #############################
svckey = 0
svckey=i_get_art_field(g_iartin,$Tincc::SvcKey)

############ V3t1.1 type : MSET :00:1
# G1R5
SI (svckey == 0x43 || svckey == 0x55 || svckey == 0x95 || svckey == SvcKeySimRing)
ALORS
	erreur = i_set_art_field(g_iartout, $Tdpvgsm::type, 0x02)
FINSI
# /G1R5
############ V3t1.2 tentite : MSET :00:1

############ T3t1.3	idemet :MSET :FF:9 (defaut table dup)
########### ICAR_ABS
date =i_get_art_field(g_iartin,$Tincc::DATE)
ICAR_ABS =i_date_platine(g_ieec,g_iartin,date)


i_strcpy(pt_idemet, "")
# G1R5
# SPEC S6F2
SI (svckey == 0x95)
	ALORS
	i_strcpy(pt_idemet, i_get_tab_field("VariableContexte", ICAR_ABS, "AX_IDEMET_HCE"))
SINON
	SI  (svckey == SvcKeySimRing)
		ALORS
# On ne reteste pas la presence de RedirectionReason car c est un controle croise du traitement
		i_strcpy(pt_idemet, i_get_tab_field("VariableContexte", ICAR_ABS, "AX_IDEMET_SIMRING"))
	SINON
		SI (svckey == 0x43) || (svckey == 0x55)
			ALORS
			i_strcpy(pt_idemet, i_get_tab_field("VariableContexte", ICAR_ABS, "AX_IDEMET_ORLCF"))
		SINON
			i_strcpy(pt_idemet, i_get_tab_field("VariableContexte", ICAR_ABS, "AX_IDEMET_INCC"))
		FINSI
	FINSI
FINSI
# /G1R5

#trace2("[Tincc_dis] AX_IDEMET =%s",pt_idemet,"")

# AX_IDEMET resultat fonction recherchevaleurcleftable T3t1/V3t1.3

SI (i_strcmp(pt_idemet,g_inull)) != 0
ALORS
#	trace2("[Tincc_dis] AX_IDEMET != 0 =%s",pt_idemet,"")
	longueur= 0
	longueur=i_strlen(pt_idemet)
	erreur = i_set_art_str(g_iartout10,$Conv_URS::RepTab, pt_idemet)
	index=0
	POINT BOUCLE0
	SI (index < longueur)
	ALORS
		g_iartout10.ax_idemet[index]=g_iartout10.RepTab[index] - 0x30
		SI (g_iartout10.RepTab[index] > 0x40)
		ALORS
			g_iartout10.ax_idemet[index]=g_iartout10.RepTab[index] - 0x37
		FINSI
#		trace1("index=%d",index)
#		trace1("g_iartout10.ax_idemet=%x",g_iartout10.RepTab[index] - 0x30)
		index=index+1
		SAUT BOUCLE0
	FINSI

	erreur = i_dup_chp_1val(g_iartout10, g_iartout, $Conv_URS::ax_idemet, $Tdpvgsm::idemet)

SINON
#	pt_idemet : "33032000000FFFFFFF"
#	longueur = g_iartout.idemet!NELEM
	g_iartout.idemet[0]= 0x3
	g_iartout.idemet[1]= 0x3
	g_iartout.idemet[2]= 0x0
	g_iartout.idemet[3]= 0x3
	g_iartout.idemet[4]= 0x2
	index = 5
	POINT BOUCLE
	SI index < 11
	ALORS
		g_iartout.idemet[index]= 0x0
		index = index + 1
		SAUT BOUCLE
	FINSI
FINSI

############ V3t1.4 IMSI : MSET :FF:8
#trace("[Tincc_dis] IMSI")
# G2R6 lot3 AVME pour MIPC
erreur = i_get_art_str(g_iartout, $Tdpvgsm::MSISDN, pt_1)
index = 0
SI (i_strplcmp ( pt_1, "6", 2, 1) != 0 && i_strplcmp ( pt_1, "7", 2, 1) != 0)
ALORS
	POINT BOUC7
	SI index < 15
	ALORS
		g_iartout.IMSI[index]= 0x7
		index = index + 1
		SAUT BOUC7
	FINSI
SINON
	POINT BOUC9
	SI index < 15
	ALORS
		g_iartout.IMSI[index]= 0x9
		index = index + 1
		SAUT BOUC9
	FINSI
FINSI
# /G2R6 lot3 AVME pour MIPC

#trace("[Tincc_dis] Fin IMSI")

############ V3t1.5 DATE : 1VAL :DATE

############ V3t1.6 DUREE : 1VAL :DUREE

############ V3t1.7 svcsup : MSET :FF:1
# G1R5
SI (svckey == 0x43 || svckey == 0x55 || svckey == 0x95 || svckey == SvcKeySimRing)
ALORS
	SI (TelSvcI == 0x01)
	ALORS
		erreur = i_set_art_field(g_iartout, $Tdpvgsm::svcsup, 0x1F)
	FINSI
FINSI
# /G1R5

############ V3t1.8 tlserv : MSET :11:1
# G2R5 reprise complet avec ajout SimRing (algo precedent incorrect)
SI (svckey == 0x43 || svckey == 0x55 || svckey == 0x95 || svckey == SvcKeySimRing)
ALORS
	#QC649
	i_strcpy(pt_DestNum2, "")
	#/QC649
	erreur = i_get_art_str(g_iartout, $Tdpvgsm::SCPIN, pt_DestNum2)
	SI ((i_strcmp(pt_DestNum2, "") != 0) && (table_exp_reg(pt_DestNum2, "FILTRE_DISE_LOC" , ICAR_ABS) == 1 ))
	ALORS
		erreur = i_set_art_field(g_iartout,$Tdpvgsm::tlserv,0x03)
	SINON
		SI (svckey == 0x43 || svckey == 0x55)
		ALORS
			erreur = i_set_art_field(g_iartout,$Tdpvgsm::tlserv,0x04)
		FINSI
	FINSI
FINSI


########### V3t1.9 support1 : MSET :00:1
# FO 379
SI (svckey == 0x43) || (svckey == 0x55 || svckey == SvcKeySimRing)
ALORS
	erreur = i_set_art_field(g_iartout, $Tdpvgsm::support1, 0xFF)
FINSI

############ V3t1.10 systype : MSET :00:1
# FO 379
erreur = i_set_art_field(g_iartout, $Tdpvgsm::systype, 0xFF)

############ V3t1.11 reserve2 : MSET :FF:1

############ V3t1.12 origine : MSET :00:1
SI ( Code_Pays_VLR != 33 ) && ( (svckey == 0x43) || (svckey == 0x55) || (svckey == SvcKeySimRing))
ALORS
	erreur = i_set_art_field(g_iartout,$Tdpvgsm::origine,0x01)
FINSI

############ V3T1.13 indeff : MSET :00:1

############ V3T1.14 tterm : MSET :00:1

############ V3T1.15 indtax : MSET :01:1    Pour appel Preval_

erreur = i_set_art_field(g_iartout, $Tdpvgsm::indtax, 0x01)

############ V3T1.16 nbUT : MSET :00:4


#################
# appel preval
#################
# G1R5
# SPEC S6F2
SI (svckey == 0x43) || (svckey == 0x55) || (svckey == 0x95) || (svckey == SvcKeySimRing)
ALORS
	erreur = i_set_art_field(g_iartout,$Tdpvgsm::nbUT, 0x00000000)
SINON
	NB_UT = preval_ut(g_iartout)
	SI (NB_UT == -1 )
	ALORS
		erreur = i_stocke_art(g_iartin,0,PT_ERRONE,0)
		#trace("Fin traitement: erreur prevalorisation")
		RETOUR TRAIT_OK
	SINON
		SI (NB_UT == -2 )
		ALORS
			trace("pas de prevalorisation : retour preval == -2")
		SINON
			trace1("Prevalorisation OK avec valeur : %d", NB_UT)
			erreur = i_set_art_field(g_iartout,$Tdpvgsm::nbUT, NB_UT)
		FINSI
	FINSI
FINSI
# /G1R5
# indtax a 0xff apres appel prevalo
# G3R0CbME FO 238
# erreur = i_set_art_field(g_iartout, $Tdpvgsm::indtax, 0xff)

############ V3T1.17 chgcar : MSET :FF:2
# Evol QC517, 556
#G3R2

############ V3T1.18 portabilite couleur : MSET :FF:1

############ V3t2 idpart 
#idpart		:-      :E      :NORM :idpart:-:$INCC_TR_CD
# Le choix entre CallingNb et CalledNb est fait au traitement dans l ajout Platine

############ V3t3 local 
#local		:-      :-      :NORM :local:-:$INCC_LOCAL
# Le choix entre VLRNb, TransNb, CalledNb et LocationNb est fait au traitement dans l ajout Platine
# FO595
SI (i_valid_field_n(g_iartout, $Tdpvgsm::T3t3))
  ALORS
  erreur = i_get_art_str(g_iartout, $Tdpvgsm::local, pt_local)
  SI (i_strcmp(pt_local, "") == 0)
    ALORS
    erreur = i_supprChamp(g_iartout, "T3t3")
  FINSI
FINSI
  
############ V3t4 MSISDN 
#MSISDN		:-      :E      :NORM :msisdn:-:$INCC_CG
# Le choix entre OrigCalledNb et CallingNb est fait au traitement dans l ajout Platine

############ V3t11.1 nbsvcIN : MSET :01:1

############ V3t11.2 lstSVCIN : 1VAL :SvcKey
VAR=i_get_art_field(g_iartin,$Tincc::SvcKey)
g_iartout.lstSVCIN[0]= 0x0
g_iartout.lstSVCIN[1]= VAR

############ V3t11.3 SCPIN
#SCPIN		:-	:E	:NORM:scpin:-:$INCC_TR_CD
# Le choix entre TransNb et CalledNb est fait au traitement dans l ajout Platine

############ V3t18.4 C_DestNum1
# FO 359 DRE   copie de scpin dans C_DestNum1 par table de duplication, puis retirer le T4t18.4 si test NON OK
#C_DestNum1	:-	:E	:NORM:scpin:-:$INCC_TR_CD
SI !((svckey == 0x43) || (svckey == 0x55) || (svckey == SvcKeySimRing))
ALORS
	erreur = i_supprChamp(g_iartout, "T4t18.4")
FINSI

############ V3t18.5 C_Key1
SI (svckey == 0x43) || (svckey == 0x55)
ALORS
# FO 379
#	erreur = i_ajoutChamp(g_iartout, "T4t18.5","C_Key1",0)
	erreur = i_ajoutChamp(g_iartout, "T4t18.5","",1)
	erreur = i_set_art_field(g_iartout, $Tdpvgsm::C_Key1,svckey)
FINSI

############ V4T30.1 date audit
####### date_plat
date_plat = i_DHgetLocalTime(NUMTAB, 7, date_audit)
#trace1("======== date_plat = %d ========",date_plat)
erreur = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_plat)

############ V4T30.2 EEC
# QC1405
SI (g_ieec > 500)
ALORS
  erreur = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec - 500)
SINON
  erreur = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec)
FINSI
#/QC1405

############ V3t38.5 originBearSrv
# G1R5 (ajout de ou svckey == 0x95)
SI (svckey == 0x43) || (svckey == 0x55) || (svckey == 0x95) || (svckey == SvcKeySimRing)
ALORS
	SI ( TelSvcI == 0x01 )
	ALORS
		erreur = i_ajoutChamp(g_iartout, "T4t38.5","originBearSrv",0)
		erreur = i_set_art_field(g_iartout, $Tdpvgsm::originBearSrv,0x04)
	FINSI
FINSI

# G3R2
############ V3t65 RedirectReason
SI (svckey == SvcKeySimRing) 
ALORS
	erreur = i_ajoutChamp(g_iartout, "T3t65","RedirectReason",0)
	erreur = i_set_art_field(g_iartout,$Tdpvgsm::RedirectReason, i_get_art_field(g_iartin, $Tincc::RedirReason))
FINSI

########################################################
# Cpt applicatifs
########################################################
#TT 86 G1R7 en commentaire le compteur 1502
# CPT = 1502
# X : type de CRA, Y : EEC, Z : inutilise, date : date_audit, Increment : 1

#Y = g_ieec
#X = type 
#Z = 0

#erreur=i_incr_cpt(CPT,X,Y,Z,date_plat,INCREMENT)

############################################################################
# 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
#---------------------------------------------------------------------------

############################################################################
# Envoi vers IECC (dpv33)
############################################################################
#erreur = i_fdump_art(g_iartout)

#######################################
# Appel fonction distribution
#######################################
# G2R6 lot3 critere de distri inconu au lieu de aiguillage par IMSI
erreur = aiguillage2 (g_iartin, g_iartout, DISTRIBUTION_INCONNU, Multidistribution_Non)
# /G2R6 lot3
# QC1005
SI (erreur == TRAI_KO)
ALORS
	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,type)
	SAUT DISTRI_ERR
FINSI

#erreur = i_fdump_art(g_iartout)

RETOUR TRAIT_OK

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

POINT STOCKE_OK

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

trace("Fin distribution Article Tincc")
RETOUR TRAIT_OK

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

POINT DISTRI_ERR
trace("Stockage de l'article en ERRONE")

erreur = i_make_art_rej(g_iartin, g_iartout, 0)
erreur = i_stocke_art(g_iartout, 0, PT_ERRONE, 0)

trace("Fin traitement Tincc")
RETOUR TRAIT_OK

#---------------------------------------FIN Tincc_dis.src-------------------# FIN_CORPS
