FVERS = 2
REFOBJET : ID = 660004625 ; ID_INIT = 660004521 ; NOM = Tmlp ; VERSION = B343 ; DATE = 01/04/15-13:06:40 ( 1427893600 ) ; 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
################################################################
# 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
################################################################
DEFINITION Multidistribution_Non 0
DEFINITION DISTRIBUTION_SPECIALE 0

DEFINITION	C_Tdpv		"Tdpvgsm"
DEFINITION	PREFIXE		"MLPResultCode"

DEFINITION	C_Article	"Tmlp"

DEFINITION	NUMTAB		4
DEFINITION	NUMZONE		7

DEFINITION TRAI_KO -1

REGISTRE ENTIER date_audit
REGISTRE ENTIER date_plat
REGISTRE ENTIER date_fin
REGISTRE ENTIER erreur
REGISTRE ENTIER code_errone
REGISTRE ENTIER longueur
REGISTRE ENTIER index
REGISTRE ENTIER resultcodeOUT
REGISTRE ENTIER duree
REGISTRE ENTIER type_cra

REGISTRE POINTEUR pt_idemet
#REGISTRE POINTEUR pt_marque_audit
REGISTRE POINTEUR pt_cle
REGISTRE POINTEUR pt_resultcodeIN
REGISTRE POINTEUR pt_resultcodeOUT


pt_idemet = "1111111111111111111111111111111"
#pt_marque_audit = "9876543210123456712345"
pt_cle = "77777777777777777777777777777777777"
pt_resultcodeIN = "22222222"
pt_resultcodeOUT = "pt_resultcodeOUT333333333"


resultcodeOUT = 0
i_strcpy(pt_resultcodeIN, "")

# FE_0028 comptabilisation des CRAs issus de la redistribution
date_fin=i_get_art_field(g_iartin,$Tmlp::dfin)
erreur= i_incr_redist_dist(date_fin)

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

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

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

SI (i_dup_art_tab( g_iartin, g_iartout, C_Tdpv))
ALORS
	#trace("ERREUR de duplication")
	code_errone = 0xA0D1
	erreur = i_PlvMessEmettre(6204,2,g_iartin,"",2,code_errone,C_Tdpv,0)
	SAUT STOCKE_ERRONE
FINSI

# V3t1.1        type

# V3t1.2        tentite

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

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

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

SINON
	#i_strcpy(pt_idemet,"33010000000FFFFFFF")
	longueur = 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 = 4
	POINT BOUCLE
	SI index < 11
	ALORS
		g_iartout.idemet[index]= 0x0
		index = index + 1
		SAUT BOUCLE
	FINSI
FINSI


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

# V3t1.5      DATE
erreur = 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 = i_set_art_field(g_iartout, $Tdpvgsm::indeff,0)
SINON
	erreur = i_set_art_field(g_iartout, $Tdpvgsm::indeff,1)
FINSI


# V3t1.14       tterm 
SI i_valid_field_n(g_iartin,$Tmlp::ResultCode)
ALORS
	erreur = i_get_art_str(g_iartin, $Tmlp::ResultCode, pt_resultcodeIN)
	erreur = i_format_str2(pt_cle, "%s%s", PREFIXE, pt_resultcodeIN)
	i_strcpy(pt_resultcodeOUT, i_get_tab_field("VariableContexte", i_get_art_field(g_iartin,$Tmlp::DATE), pt_cle))
	resultcodeOUT = CONV_ASCIINUMHEX_INT(pt_resultcodeOUT)

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


#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 = i_date_audit()
date_plat = i_DHgetLocalTime(NUMTAB, NUMZONE, date_audit)
erreur = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_plat)

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

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

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


#######################################
# Appel fonction distribution
#######################################
erreur = aiguillage2 (g_iartin, g_iartout, DISTRIBUTION_SPECIALE, Multidistribution_Non)
# QC1005
SI (erreur == TRAI_KO)
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 = 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 = i_make_art_rej(g_iartin, g_iartout, 0)
erreur = 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 = i_stocke_art( g_iartin, 0, PT_DIVERS, 0 )

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