DEFINITION Multidistribution_Non_660004625 0
DEFINITION DISTRIBUTION_SPECIALE_660004625 0
DEFINITION C_Tdpv_660004625 "Tdpvgsm"
DEFINITION PREFIXE_660004625 "MLPResultCode"
DEFINITION C_Article_660004625 "Tmlp"
DEFINITION NUMTAB_660004625 4
DEFINITION NUMZONE_660004625 7
DEFINITION TRAI_KO_660004625 -1
REGISTRE ENTIER date_audit_660004625
REGISTRE ENTIER date_plat_660004625
REGISTRE ENTIER date_fin_660004625
REGISTRE ENTIER erreur_660004625
REGISTRE ENTIER code_errone_660004625
REGISTRE ENTIER longueur_660004625
REGISTRE ENTIER index_660004625
REGISTRE ENTIER resultcodeOUT_660004625
REGISTRE ENTIER duree_660004625
REGISTRE ENTIER type_cra_660004625
REGISTRE POINTEUR pt_idemet_660004625
REGISTRE POINTEUR pt_cle_660004625
REGISTRE POINTEUR pt_resultcodeIN_660004625
REGISTRE POINTEUR pt_resultcodeOUT_660004625
################################################################
# Pcode de DISTIBUTION
# Service MLP
# Article : Tmlp
################################################################
# 
# URS/PSA	03/02/06	Creation
# URS/PSA	09/03/06	FO 109, 115
# 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
# 01/09/06 JLG changement d'article Conversion par Conv_URS (pb fusion sofrecom)
# 09/08/07 Creation enveloppe optionnelle E_Redist2
# 08/12/10 JLG G3R1lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 29/02/2012 - JLG -G3R6 QC1005 modif alarme retour aiguillage
# 02/07/2014 - JLG -G5R1 QC1405, champ eec du DPV si g_ieec > 500
################################################################








pt_idemet_660004625 = "1111111111111111111111111111111"
#pt_marque_audit = "9876543210123456712345"
pt_cle_660004625 = "77777777777777777777777777777777777"
pt_resultcodeIN_660004625 = "22222222"
pt_resultcodeOUT_660004625 = "pt_resultcodeOUT333333333"


resultcodeOUT_660004625 = 0
i_strcpy(pt_resultcodeIN_660004625, "")

# FE_0028 comptabilisation des CRAs issus de la redistribution
date_fin_660004625=i_get_art_field(g_iartin,$Tmlp::dfin)
erreur_660004625= i_incr_redist_dist_660004265(date_fin_660004625)

##############################################################################
# Conversion DPV3.3
##############################################################################

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

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

SI (i_dup_art_tab( g_iartin, g_iartout, C_Tdpv_660004625))
ALORS
	#trace("ERREUR de duplication")
	code_errone_660004625 = 0xA0D1
	erreur_660004625 = i_PlvMessEmettre(6204,2,g_iartin,"",2,code_errone_660004625,C_Tdpv_660004625,0)
	SAUT STOCKE_ERRONE
FINSI

# V3t1.1        type

# V3t1.2        tentite

# V3t1.3
# V3t1.3 idemet (defaut table dup)

	i_strcpy(pt_idemet_660004625, "")
	i_strcpy(pt_idemet_660004625, i_get_tab_field("VariableContexte", i_get_art_field(g_iartin,$Tmlp::DATE), "AX_IDEMET_MLP"))

SI (i_strcmp(pt_idemet_660004625,g_inull)) != 0
ALORS
	longueur_660004625= 0
	longueur_660004625=i_strlen(pt_idemet_660004625)
	erreur_660004625 = i_cree_art("Conv_URS",g_iartout10)
	erreur_660004625 = i_set_art_str(g_iartout10,$Conv_URS::recipAddAlp, pt_idemet_660004625)
	index_660004625=0
	POINT BOUCLE0
	SI (index_660004625 < longueur_660004625)
	ALORS
		SI (g_iartout10.recipAddHex[index_660004625] < 0x40)
		ALORS
			g_iartout.idemet[index_660004625]=g_iartout10.recipAddHex[index_660004625] - 0x30
		SINON
			g_iartout.idemet[index_660004625]=g_iartout10.recipAddHex[index_660004625] - 0x37
		FINSI
#		trace1("index=%d",index)
#		trace1("g_iartin.ax_idemet=%x",g_iartout10.recipAddHex[index] - 0x30)
		index_660004625=index_660004625+1
		SAUT BOUCLE0
	FINSI

SINON
	#i_strcpy(pt_idemet,"33010000000FFFFFFF")
	longueur_660004625 = g_iartout.idemet!NELEM
	g_iartout.idemet[0]= 0x3
	g_iartout.idemet[1]= 0x3
	g_iartout.idemet[2]= 0x0
	g_iartout.idemet[3]= 0x1
	index_660004625 = 4
	POINT BOUCLE
	SI index_660004625 < 11
	ALORS
		g_iartout.idemet[index_660004625]= 0x0
		index_660004625 = index_660004625 + 1
		SAUT BOUCLE
	FINSI
FINSI


# V3t1.4      IMSI
index_660004625=0
POINT BOUCLE1
SI index_660004625 < 15
ALORS
	g_iartout.IMSI[index_660004625]= 0x9
	index_660004625 = index_660004625 + 1
	#trace1(" index : %d",index)
	SAUT BOUCLE1
FINSI

# V3t1.5      DATE
erreur_660004625 = i_set_art_field(g_iartout, $Tdpvgsm::DATE,i_get_art_field(g_iartin,$Tmlp::ddebut))

# V3t1.13       indeff
SI (i_get_art_field(g_iartin, $Tmlp::ResultCode) == 0)
ALORS
	erreur_660004625 = i_set_art_field(g_iartout, $Tdpvgsm::indeff,0)
SINON
	erreur_660004625 = i_set_art_field(g_iartout, $Tdpvgsm::indeff,1)
FINSI


# V3t1.14       tterm 
SI i_valid_field_n(g_iartin,$Tmlp::ResultCode)
ALORS
	erreur_660004625 = i_get_art_str(g_iartin, $Tmlp::ResultCode, pt_resultcodeIN_660004625)
	erreur_660004625 = i_format_str2(pt_cle_660004625, "%s%s", PREFIXE_660004625, pt_resultcodeIN_660004625)
	i_strcpy(pt_resultcodeOUT_660004625, i_get_tab_field("VariableContexte", i_get_art_field(g_iartin,$Tmlp::DATE), pt_cle_660004625))
	resultcodeOUT_660004625 = CONV_ASCIINUMHEX_INT_660004265(pt_resultcodeOUT_660004625)

# Pas de test de validite car deja fait en traitement	
FINSI
erreur_660004625 = i_set_art_field(g_iartout, $Tdpvgsm::tterm,resultcodeOUT_660004625)


#V3T30.1 date audit
#pt_marque_audit=i_LireMarqueAudit()
#date_audit=i_strtab(pt_marque_audit,0)*256*256*256 + i_strtab(pt_marque_audit,1)*256*256 + i_strtab(pt_marque_audit,2)*256 + i_strtab(pt_marque_audit,3)
# date audit en nb s depuis 1900 (BC191380 nb de s de 1/1/1900  a 1/1/2000)
#date_audit = (date_audit / 10) + 0xBC191380

date_audit_660004625 = i_date_audit()
date_plat_660004625 = i_DHgetLocalTime(NUMTAB_660004625, NUMZONE_660004625, date_audit_660004625)
erreur_660004625 = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_plat_660004625)

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

#V4T35.1 duration
# FO 109 : a remettre en secondes
duree_660004625 = i_get_art_field(g_iartout, $Tdpvgsm::duration)
duree_660004625 = duree_660004625 / 1000
erreur_660004625 = i_set_art_field(g_iartout, $Tdpvgsm::duration, duree_660004625)

##############################################################################
# Critere de distribution
##############################################################################


#######################################
# Appel fonction distribution
#######################################
erreur_660004625 = aiguillage2_660004590 (g_iartin, g_iartout, DISTRIBUTION_SPECIALE_660004625, Multidistribution_Non_660004625)
# QC1005
SI (erreur_660004625 == TRAI_KO_660004625)
ALORS
	trace("<<<__LINE__<<<__FILE__<<< Erreur retour fonction aiguillage2")
#	code_errone = 0xA0B1
#	type_cra=i_get_art_field(g_iartout,$Tdpvgsm::type)
#	erreur = i_PlvMessEmettre(7500,2,g_iartin,"",3,code_errone,C_Article,type_cra)
	SAUT STOCKE_ERRONE
FINSI


RETOUR TRAIT_OK

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

POINT STOCKE_OK

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

trace("Fin distribution Article Tmlp")
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_660004625 = i_make_art_rej(g_iartin, g_iartout, 0)
erreur_660004625 = i_stocke_art(g_iartout, 0, PT_ERRONE, 0)

trace("Fin traitement Tmlp")
RETOUR TRAIT_OK


###########################################################################
# Stockage en elimine
###########################################################################

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

RETOUR TRAIT_OK
#---------------------------------------FIN Tmlp_dis.src-------------------
