DEFINITION Multidistribution_Non_660004619 0
DEFINITION DISTRIBUTION_SPECIALE_660004619 0
DEFINITION C_Tdpv_660004619 "Tdpvgsm"
DEFINITION C_Article_660004619 "TgretadctlvHP"
DEFINITION C_PREF_660004619 "33"
DEFINITION C_Tous_660004619 "Tous"
DEFINITION C_IDUS_indetermine_660004619 "80001   "
DEFINITION TRAI_KO_660004619 -1
DEFINITION ESPACE_660004619 " "
DEFINITION INCREMENT_660004619 1
DEFINITION CPT1518_660004619 1518
DEFINITION CPT1519_660004619 1519
DEFINITION CPT1520_660004619 1520
DEFINITION NUMTAB_660004619 4
REGISTRE ENTIER date_audit_660004619
REGISTRE ENTIER date_plat_660004619
REGISTRE ENTIER GRETA_TAG_660004619
REGISTRE ENTIER ICAR_ABS_660004619
REGISTRE ENTIER DC_gratuit_660004619
REGISTRE ENTIER longueur_660004619
REGISTRE ENTIER index_660004619
REGISTRE ENTIER sdate_660004619
REGISTRE ENTIER erreur_660004619
REGISTRE ENTIER res_660004619
REGISTRE ENTIER car_660004619
REGISTRE ENTIER EFFICACE_660004619
REGISTRE ENTIER datefin_660004619
REGISTRE ENTIER code_errone_660004619
REGISTRE ENTIER duree_660004619
REGISTRE ENTIER NBUT_preval_660004619
REGISTRE ENTIER a_supprimer_660004619
REGISTRE ENTIER X_660004619
REGISTRE ENTIER Y_660004619
REGISTRE ENTIER Z_660004619
REGISTRE ENTIER NbDCElimine_660004619
REGISTRE POINTEUR pt_1_660004619
REGISTRE POINTEUR pt_2_660004619
REGISTRE POINTEUR pt_idemet_660004619
REGISTRE POINTEUR pt_BUFFER_660004619
REGISTRE POINTEUR pt_SGTQS_660004619
REGISTRE POINTEUR pt_DEDEini_660004619
REGISTRE POINTEUR pt_ITX_660004619
REGISTRE POINTEUR pt_IDUSNUM_660004619
############################################################################
# DISTRIBUTION TgretadctlvHP.src
#	Article DC TgretadctlvHP en entree de Platine
#	Pcode de distribution
# Creation le 09/11/12 G3R8 lot3 pour correlation HP
# Historique
# 02/07/2014 - JLG -G5R1 QC1405, champ eec du DPV si g_ieec > 500
############################################################################




EFFICACE_660004619=2
NbDCElimine_660004619 = 0
##############################################################################
# ALLOCATION DES POINTEURS
##############################################################################
# c'est la derniere affectation qui a raison. Permet de mettre en debut de zone (donnees privees) 
# evite l'effet debordement pointeur sur les chaines qui doivent restees constantes (Ex: C_Tdpv).
pt_1_660004619		= C_Tdpv_660004619
pt_1_660004619		= C_Article_660004619
pt_1_660004619		= C_PREF_660004619
pt_1_660004619		= C_Tous_660004619
pt_1_660004619		= C_IDUS_indetermine_660004619
pt_1_660004619		= ESPACE_660004619

pt_1_660004619		= "1111111111111111111111111111111111111111111111111111111111111111111111111"
pt_2_660004619      = "789012345678901234567890123456789012345678901234567890123456789012345678901"
pt_idemet_660004619	= "4444444444444444444444444444444444444444444444444444444444444444444444444"
pt_DEDEini_660004619 = "000000000000000000000000000000"
pt_ITX_660004619 = "2222222222"
pt_IDUSNUM_660004619 = "3333333333333333333333333333333333333333"
pt_SGTQS_660004619 = "8888877899877890987987789"
pt_BUFFER_660004619 = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999"
trace("<<<__LINE__<<<__FILE__<<< Debut pcode de distribution TgretadctlvHP")
i_strcpy(pt_ITX_660004619,"")

erreur_660004619 = i_cree_art("Conv_URS",g_iartout10)
erreur_660004619 = i_dup_art_id(g_iartin, g_iartout7)
ICAR_ABS_660004619 = i_get_art_field(g_iartin,$TgretadctlvHP::DATE)
datefin_660004619=i_get_art_field(g_iartin,$TgretadctlvHP::dfin)

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

##############################################################################
# Variables fonctionnelles
##############################################################################
#################### Date_Audit et date_plat (date_audit ramenee a heure platine)
date_audit_660004619=i_date_audit()
date_plat_660004619 = i_DHgetLocalTime(NUMTAB_660004619, 7, date_audit_660004619)

# incrementation du compteur 1518
#		DC envoye par le module de correlation vers la distribution
X_660004619=0x00
Y_660004619=g_ieec
Z_660004619=0
erreur_660004619=i_incr_cpt(CPT1518_660004619,X_660004619,Y_660004619,Z_660004619,datefin_660004619,INCREMENT_660004619)

# incrementation du compteur 1519
#		DC supprimes en correlation
# Recuperation du compteur des DC Elimines en correlation
NbDCElimine_660004619 = i_get_art_field(g_iartin,$TgretadctlvHP::CptDCElimine)
erreur_660004619=i_incr_cpt(CPT1519_660004619,X_660004619,Y_660004619,Z_660004619,datefin_660004619,NbDCElimine_660004619)

# incrementation du compteur 1520
#		DC en retour du module correlation non correles
SI ( i_get_art_field(g_iartin, $TgretadctlvHP::TYPE) != 2 ) 
ALORS
	erreur_660004619=i_incr_cpt(CPT1520_660004619,X_660004619,Y_660004619,Z_660004619,datefin_660004619,INCREMENT_660004619)
FINSI

#################### AX_IDEMET resultat fonction recherchevaleurcleftable 
i_strcpy(pt_idemet_660004619, "")
# G2R2/QC381
i_strcpy (pt_SGTQS_660004619,i_LireEECSGTQS(g_ieec))
erreur_660004619 = i_format_str2(pt_BUFFER_660004619,"%s%s","AX_IDEMET_",pt_SGTQS_660004619)
i_strcpy(pt_idemet_660004619, i_get_tab_field("VariableContexte", ICAR_ABS_660004619, pt_BUFFER_660004619))

#################### GRETA_TAG/DEDEini
erreur_660004619 = i_get_art_str(g_iartin, $TgretadctlvHP::DEDEini, pt_1_660004619)
longueur_660004619 = RECHERCHE_CARACTERE_660004265(pt_1_660004619, ESPACE_660004619)
SI ( longueur_660004619 < 0 )
ALORS
	longueur_660004619 = longueur_660004619 * -1
FINSI

i_get_sub_str(pt_1_660004619, 0, longueur_660004619-1, pt_1_660004619) 


# FO 332 : recherche des prefixes
a_supprimer_660004619 = 0
i_get_sub_str(pt_1_660004619, 0, 2, pt_2_660004619)
SI (i_strcmp(pt_2_660004619, "842") == 0) ||
   (i_strcmp(pt_2_660004619, "840") == 0) ||
   (i_strcmp(pt_2_660004619, "150") == 0)	
ALORS
	a_supprimer_660004619 = 5
	SAUT SUPPRESSSION_PREFIXE
FINSI

i_get_sub_str(pt_1_660004619, 0, 4, pt_2_660004619)
SI (i_strcmp(pt_2_660004619, "09999") == 0) 
ALORS
	a_supprimer_660004619 = 5
	SAUT SUPPRESSSION_PREFIXE
FINSI

index_660004619 = -1

POINT PREFIXE_0
SI (index_660004619 < longueur_660004619)
ALORS
	index_660004619 = index_660004619 + 1
	i_get_sub_str(pt_1_660004619, index_660004619, index_660004619, pt_2_660004619)
	SI (i_strcmp(pt_2_660004619, "0") == 0)
	ALORS
		SAUT PREFIXE_0
	SINON
		a_supprimer_660004619 = index_660004619
		SAUT SUPPRESSSION_PREFIXE
	FINSI
FINSI


POINT SUPPRESSSION_PREFIXE
SI a_supprimer_660004619 > 0
ALORS
	i_get_sub_str(pt_1_660004619, a_supprimer_660004619, -1, pt_1_660004619)	
	longueur_660004619 = longueur_660004619 - a_supprimer_660004619
FINSI


erreur_660004619 = i_format_str2(pt_DEDEini_660004619,"%s%s",C_PREF_660004619,pt_1_660004619)
longueur_660004619 = longueur_660004619 + 2
i_strcpy(pt_2_660004619, i_get_tab_field("GRETA_TAG", ICAR_ABS_660004619, pt_DEDEini_660004619))
SI (i_strcmp(pt_2_660004619,g_inull)) != 0
ALORS
	GRETA_TAG_660004619 = 1
	SI (i_strcmp(pt_2_660004619,C_Tous_660004619)) != 0
	ALORS
		longueur_660004619 = i_strlen(pt_2_660004619)
		i_strcpy(pt_DEDEini_660004619, pt_2_660004619)
	FINSI
SINON
	GRETA_TAG_660004619 = 0
FINSI


index_660004619 = -1

POINT FORMAT_DEDE
SI (index_660004619 < longueur_660004619)
ALORS
	index_660004619 = index_660004619 + 1
	i_get_sub_str(pt_DEDEini_660004619, index_660004619, index_660004619, pt_1_660004619)
	SI ( CONV_ASCIINUMHEX_INT_660004265(pt_1_660004619) != -1 )
	ALORS
		g_iartout10.idpart[index_660004619] = CONV_ASCIINUMHEX_INT_660004265(pt_1_660004619)
		SAUT FORMAT_DEDE
	SINON
		SAUT FIN_FORMAT_DEDE
	FINSI
FINSI
POINT FIN_FORMAT_DEDE
erreur_660004619 = i_resize_tlv(g_iartout10, "T2_Idpart", "idpart", (index_660004619*4))

#################### IDUSNUM
erreur_660004619 = i_get_art_str(g_iartin, $TgretadctlvHP::IDUSNUM, pt_1_660004619)

i_get_sub_str(pt_1_660004619, 0, 7, pt_2_660004619)
SI (i_strcmp(pt_2_660004619,C_IDUS_indetermine_660004619)) != 0
ALORS
	erreur_660004619 = i_format_str2(pt_IDUSNUM_660004619,"%s%s",C_PREF_660004619,pt_1_660004619)
SINON
	i_strcpy(pt_IDUSNUM_660004619, pt_2_660004619)
FINSI

longueur_660004619 = RECHERCHE_CARACTERE_660004265(pt_IDUSNUM_660004619, ESPACE_660004619)


index_660004619 = -1

POINT FORMAT_IDUS
SI (index_660004619 < longueur_660004619)
ALORS
	index_660004619 = index_660004619 + 1
	i_get_sub_str(pt_IDUSNUM_660004619, index_660004619, index_660004619, pt_1_660004619)
	SI ( CONV_ASCIINUMHEX_INT_660004265(pt_1_660004619) != -1 )
	ALORS
		g_iartout10.MSISDN[index_660004619] = CONV_ASCIINUMHEX_INT_660004265(pt_1_660004619)
		SAUT FORMAT_IDUS
	SINON
		SAUT FIN_FORMAT_IDUS
	FINSI
FINSI
POINT FIN_FORMAT_IDUS
erreur_660004619 = i_resize_tlv(g_iartout10, "T2_MSISDN", "MSISDN", (index_660004619*4))


#################### DC_gratuit
erreur_660004619 = i_get_art_str(g_iartin, $TgretadctlvHP::ITX, pt_ITX_660004619)
i_strcpy(pt_2_660004619, i_get_tab_field("Indice_ITX", ICAR_ABS_660004619, pt_ITX_660004619))
SI (i_strcmp(pt_2_660004619,g_inull)) != 0
ALORS
	DC_gratuit_660004619 = 1
SINON
	DC_gratuit_660004619 = 0
FINSI


#################### DATEFIN

##############################################################################
# Cpt applicatif CPT_RDT=1509 (REDISTRIBUTION)
##############################################################################
# FE_0028 comptabilisation des CRAs issus de la redistribution
erreur_660004619= i_incr_redist_dist_660004265(datefin_660004619)



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

SI (i_dup_art_tab( g_iartin, g_iartout, C_Tdpv_660004619))
	ALORS
	#trace("[TgretadctlvHP_dis] ERREUR de duplication")
	code_errone_660004619 = 0xA0D0
	code_errone_660004619 = code_errone_660004619 + EFFICACE_660004619
	erreur_660004619 = i_PlvMessEmettre(6610,2,g_iartin,"",2,code_errone_660004619,C_Article_660004619,0)
	SAUT DISTRI_ERR
FINSI


#################### V3t1.1 type :-	:-	:MSET :00


#################### V3t1.2 tentite :-	:-	:MSET:16


# AX_IDEMET resultat fonction recherchevaleurcleftable T3t1/V3t1.3
SI (i_strcmp(pt_idemet_660004619,g_inull)) != 0
ALORS
	longueur_660004619= 0
	longueur_660004619=i_strlen(pt_idemet_660004619)
	erreur_660004619 = i_set_art_str(g_iartout10,$Conv_URS::RepTab, pt_idemet_660004619)
	index_660004619=0
	POINT BOUCLE_2
	SI (index_660004619 < longueur_660004619)
		ALORS
		g_iartout10.ax_idemet[index_660004619]=g_iartout10.RepTab[index_660004619] - 0x30
		SI (g_iartout10.RepTab[index_660004619] > 0x40)
			ALORS
			g_iartout10.ax_idemet[index_660004619]=g_iartout10.RepTab[index_660004619] - 0x37
		FINSI
		#trace1("[TgretadctlvHP_dis] index=%d",index)
		#trace1("[TgretadctlvHP_dis] g_iartout10.ax_idemet=%x",g_iartout10.RepTab[index] - 0x30)
		index_660004619=index_660004619+1
		SAUT BOUCLE_2
	FINSI
	erreur_660004619 = i_dup_chp_1val(g_iartout10, g_iartout, $Conv_URS::ax_idemet, $Tdpvgsm::idemet)
	SINON
	#pt_idemet : "33037000000FFFFFFF"
	#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]= 0x7
	index_660004619 = 5
	POINT BOUCLE_3
	SI index_660004619 < 11
		ALORS
		g_iartout.idemet[index_660004619]= 0x0
		index_660004619 = index_660004619 + 1
		SAUT BOUCLE_3
	FINSI
FINSI

#################### V3t4 MSISDN :-	:-	:MSET :FF (mis avant pour calculer V3t1.4)
erreur_660004619 = i_dup_chp_1val(g_iartout10, g_iartout, $Conv_URS::MSISDN, $Tdpvgsm::MSISDN)


#################### V3t1.4 IMSI :-	:-	:MSET :FF
#G1R8 lot2 : item MIPC (si MSISDN commence par 33 et Z different de 6 alors 7 sinon 9)
i_strcpy(pt_1_660004619," ")
erreur_660004619 = i_get_art_str(g_iartout, $Tdpvgsm::MSISDN, pt_1_660004619)

# QC678 : prise en compte du Z=7 pour valorisation IMSI
SI (i_strplcmp(pt_1_660004619, "33", 0, 2) == 0) && (i_strplcmp(pt_1_660004619, "6", 2, 1) != 0) && (i_strplcmp(pt_1_660004619, "7", 2, 1) != 0)
ALORS
	car_660004619=0x7
SINON
	car_660004619=0x9
FINSI

longueur_660004619 = g_iartout.IMSI!NELEM - 1
index_660004619 = 0

POINT BOUCLE2
SI index_660004619 < longueur_660004619
ALORS
        g_iartout.IMSI[index_660004619]= car_660004619
        index_660004619 = index_660004619 + 1
        SAUT BOUCLE2
FINSI

g_iartout.IMSI[index_660004619]= 0xF



#################### V3t1.5 DATE :-	:-	:1VAL :DATE
sdate_660004619 = i_get_art_field(g_iartin, $TgretadctlvHP::VARDATE)
erreur_660004619 = i_set_art_field(g_iartout, $Tdpvgsm::DATE,sdate_660004619)


#################### V3t1.6 DUREE :-	:-	:MSET :00
# QC634
duree_660004619 = i_get_art_field(g_iartin, $TgretadctlvHP::VARDATEFIN) - i_get_art_field(g_iartin, $TgretadctlvHP::VARDATE)
SI (duree_660004619 < 0)
ALORS
	code_errone_660004619 = 0xA060
	code_errone_660004619 = code_errone_660004619 + EFFICACE_660004619
	erreur_660004619 = i_PlvMessEmettre(6615,2,g_iartin,"",2,code_errone_660004619, C_Article_660004619, 0)
	SAUT DISTRI_ERR
FINSI

erreur_660004619 = i_set_art_field(g_iartout, $Tdpvgsm::DUREE,duree_660004619)


#################### V3t1.7 svcsup :-	:-	:MSET :FF


#################### V3t1.8 tlserv :-	:-	:MSET :90
SI ( DC_gratuit_660004619 == 1 )
ALORS
	erreur_660004619 = i_set_art_field(g_iartout, $Tdpvgsm::tlserv,0x02)
SINON
	erreur_660004619 = i_set_art_field(g_iartout, $Tdpvgsm::tlserv,0x01)
FINSI


#################### V3t1.9 support1 :-	:-	:MSET :00


#################### T3t1.10 systype :-	:-	:MSET :00


#################### T3t1.11 reserve2 :- :-	:MSET :FF


#################### T3t1.12 origine :-	:-	:MSET :00


#################### T3t1.13 indeff :-	:-	:MSET :00


#################### T3t1.14 tterm :-	:-	:MSET :00


#################### T3t1.15 indtax :-	:-	:MSET :FF

#################### T3t1.16 nbUT :-	:-	:MSET :FF
# Deplace plus bas pour la prevalo 

#################### T3t1.17 chgcar :-	:-	:MSET :FF


#################### T3t1.18 couleur :-	:-	:MSET :FF


#################### V3t2 idpart :-	:-	:MSET :FF
erreur_660004619 = i_dup_chp_1val(g_iartout10, g_iartout, $Conv_URS::idpart, $Tdpvgsm::idpart)
	
	
#################### V3t4 MSISDN (calcule plus haut avant V3t1.4 IMSI)


#################### T4t30.1 timeInCE :MSET :00:1
erreur_660004619 = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_plat_660004619)


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

#################### T4t99.1 GretaTag :MSET :00:1
SI ( i_get_art_field(g_iartin, $TgretadctlvHP::TYPE) == 0 ) 
ALORS
	erreur_660004619 = i_set_art_field(g_iartout, $Tdpvgsm::GretaTag,0x02)
FINSI


#################### T3t1.16 nbUT :-	:-	:MSET :FF
SI ( DC_gratuit_660004619 != 1 )
ALORS
	NBUT_preval_660004619 = preval_ut_660004265(g_iartout)

	SI (NBUT_preval_660004619 == -1 )
	ALORS
		code_errone_660004619 = 0xA030
		code_errone_660004619 = code_errone_660004619 + EFFICACE_660004619
		erreur_660004619 = i_PlvMessEmettre(7501,2,g_iartin,"",2,code_errone_660004619, C_Article_660004619, 0)
		SAUT DISTRI_ERR
	SINON
		SI (NBUT_preval_660004619 == -2 )
		ALORS
			trace("pas de prevalorisation : retour preval == -2")
		SINON
			erreur_660004619 = i_set_art_field(g_iartout,$Tdpvgsm::nbUT, NBUT_preval_660004619)
		FINSI
	FINSI
FINSI

##############################################################################
# Appel fonction distribution
##############################################################################


erreur_660004619 = aiguillage2_660004590 (g_iartin, g_iartout, DISTRIBUTION_SPECIALE_660004619, Multidistribution_Non_660004619)
# QC1005
SI (erreur_660004619 == TRAI_KO_660004619)
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, 0)
	SAUT DISTRI_ERR
FINSI
trace("<<<__LINE__<<<__FILE__<<< Fin pcode de distribution TgretadctlvHP, envoi OK")
RETOUR TRAIT_OK




##############################################################################
# Stockage en Errone
##############################################################################

POINT DISTRI_ERR

res_660004619 = i_make_art_rej(g_iartin, g_iartout8, 0)
res_660004619 = i_stocke_art( g_iartout8, 0, PT_ERRONE, 0)
trace("<<<__LINE__<<<__FILE__<<< Fin pcode de distribution TgretadctlvHP, envoi en Errone")
RETOUR TRAIT_OK
#--------------------- TgretadctlvHP_dis.src -------------------------------------------------------
