DEFINITION Multidistribution_Non_660004683 0
DEFINITION DISTRIBUTION_SPECIALE_660004683 0
DEFINITION C_Tdpv_660004683 "Tdpvgsm"
DEFINITION C_Article_660004683 "Twha"
DEFINITION NUMTAB_660004683 4
DEFINITION TRAI_KO_660004683 -1
REGISTRE ENTIER date_plat_660004683
REGISTRE ENTIER date_fin_660004683
REGISTRE ENTIER erreur_660004683
REGISTRE ENTIER Nb_redist_660004683
REGISTRE ENTIER date_660004683
REGISTRE ENTIER EFFICACE_660004683
REGISTRE ENTIER code_errone_660004683
REGISTRE ENTIER type_cra_660004683
REGISTRE ENTIER res_660004683
REGISTRE ENTIER date_audit_660004683
REGISTRE ENTIER longueur_660004683
REGISTRE ENTIER index_660004683
REGISTRE ENTIER indexl_660004683
REGISTRE ENTIER duree_660004683
REGISTRE ENTIER VAL_660004683
REGISTRE ENTIER MOD_660004683
REGISTRE ENTIER montant_660004683
REGISTRE ENTIER puissance_660004683
REGISTRE ENTIER Fm_660004683
REGISTRE ENTIER total_660004683
REGISTRE ENTIER total2_660004683
REGISTRE ENTIER ICAR_ABS_660004683
REGISTRE ENTIER dizaine_660004683
REGISTRE ENTIER unite_660004683
REGISTRE ENTIER mCodeTauxTVA_660004683
REGISTRE POINTEUR pt_1_660004683
REGISTRE POINTEUR pt_2_660004683
REGISTRE POINTEUR pt_3_660004683
REGISTRE POINTEUR pt_idemet_660004683
REGISTRE POINTEUR pt_SGTQS_660004683
REGISTRE POINTEUR pt_BUFFER_660004683
REGISTRE POINTEUR pt_idemet_DCB_660004683
############################################################################
# DISTRIBUTION Twha_dist.src
#	Article DC Twha en entree de Platine
#	Pcode de distribution
#	Creation le 05/10/2005
# Historique
# 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/11/06 PKH FO 323 recuperation du code SGTQS EEC et concatenation avec AX_IDEMET pour interroger variablecontexte
# 16/04/07 DRE FO 477 correction du commentaire de T3t1.18 a 0x0E
# 04/05/07 PSA FO 500 suppression des caracteres espace de bourrage pour transactionDesc
# 11/04/07 PSA Extension de la FO 500 aux champs shopName et providerID
# 09/08/07 Creation enveloppe optionnelle E_Redist2
# 27/12/10 BEA G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 21/02/12 jlg G3R6  Differentiation taux de TVA
# 29/02/12 JLG G3R6 QC1005 modif alarme retour aiguillage
# 20/04/12 JLG QC1036 modif calcul Amount + suppression des champs sans deplacement NumDDR, Sequence, TransId
# 02/07/2014 - JLG -G5R1 QC1405, champ eec du DPV si g_ieec > 500
# 02/12/2014 - RHE - QC1470 alimentation idemet
# 13/01/2015 - RHE - QC1470 alimentation idemet (33008000000FFFFFFF)
############################################################################







EFFICACE_660004683=2
##############################################################################
# ALLOCATION DES POINTEURS
##############################################################################

pt_1_660004683		= "1111111111111111111111111111111111111111111111111111111111111111111111111"
pt_2_660004683		= "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
i_strcpy(pt_2_660004683,"")
pt_3_660004683		= "6573"
i_strcpy(pt_3_660004683,"")
pt_idemet_660004683	= "4444444444444444444444444444444444444444444444444444444444444444444444444"
pt_SGTQS_660004683 = "777777777777777777777777777777777777777"
pt_BUFFER_660004683 = "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"
pt_idemet_DCB_660004683 = "pt_idemet_DCB0123456790123456789"

trace("[Twha_dis] Debut Pcode Twha distribution")
#erreur = i_fdump_art(g_iartin)

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

#G3R6
#################### mCodeTauxTVA
i_strcpy(pt_1_660004683,"")
erreur_660004683 = i_get_art_str(g_iartin, $Twha::CodeTauxTva, pt_1_660004683)
SI (i_strcmp("   ", pt_1_660004683) == 0)
ALORS
	mCodeTauxTVA_660004683 = 1
SINON
	mCodeTauxTVA_660004683 = (i_strtab(pt_1_660004683, 0) - 0x30) * 100 + (i_strtab(pt_1_660004683, 1) - 0x30) * 10 + (i_strtab(pt_1_660004683, 2) - 0x30)
FINSI
#/G3R6

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

SI (Nb_redist_660004683 == 0)
ALORS
	erreur_660004683 = i_add_opt( "E_Redistri2" )
FINSI
erreur_660004683 = i_set_attr_val_n( $E_Redistri2::EnvoiRedis, 0)


# FE_0028 comptabilisation des CRAs issus de la redistribution
date_fin_660004683=i_get_art_field(g_iartin,$Twha::dfin)
erreur_660004683= i_incr_redist_dist_660004265(date_fin_660004683)


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

############################################################################
# VALORISATION
############################################################################

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

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

SI (i_dup_art_tab( g_iartin, g_iartout, C_Tdpv_660004683))
ALORS
#	trace("ERREUR de duplication")
	code_errone_660004683 = 0xA0D0
	code_errone_660004683 = code_errone_660004683 + EFFICACE_660004683
	erreur_660004683 = i_PlvMessEmettre(6152,2,g_iartin,"",2,code_errone_660004683,C_Tdpv_660004683,0)
	SAUT DISTRI_ERR
FINSI
erreur_660004683 = i_cree_art("Conv_URS",g_iartout10)

#################### T3t1.1	type :MSET :40:1

#################### T3t1.2	tentite :MSET :09:1

#################### V3t1.3 idemet (defaut table dup)   idemet :MSET :FF:9
#################### ICAR_ABS
date_660004683 =i_get_art_field(g_iartin,$Twha::DATE)
ICAR_ABS_660004683 =i_date_platine(g_ieec,g_iartin,date_660004683)

#FO323 recuperation du code SGTQS a partir de g_ieec 
i_strcpy(pt_SGTQS_660004683," ")
i_strcpy (pt_SGTQS_660004683, i_LireEECSGTQS(g_ieec))
trace2 ("[Twha_dis] pt_SGTQS = <%s>", pt_SGTQS_660004683,"")

i_strcpy(pt_idemet_660004683, " ")
i_strcpy(pt_BUFFER_660004683, " ")
erreur_660004683 = i_format_str2(pt_BUFFER_660004683,"%s%s","AX_IDEMET_",pt_SGTQS_660004683)
i_strcpy(pt_idemet_660004683, i_get_tab_field("VariableContexte", ICAR_ABS_660004683, pt_BUFFER_660004683))
trace2("[Twha_dis] pt_idemet = <%s>",pt_idemet_660004683,"")

# QC1470
#SI (i_strcmp(pt_idemet,g_inull)) != 0
#ALORS
#	longueur= 0
#	longueur=i_strlen(pt_idemet)
#	erreur = i_set_art_str(g_iartout10,$Conv_URS::RepTab, pt_idemet)
##	trace2("[Twha_dis] *****RepTab***=%s",pt_1,"")
#	index=0
#	POINT BOUCLE0
#	SI (index < longueur)
#	ALORS
#		g_iartout10.ax_idemet[index]=g_iartout10.RepTab[index] - 0x30
#		SI (g_iartout10.recipAddHex[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 : "33008000000FFFFFFF"
##	longueur = g_iartout.idemet!NELEM
#	g_iartout.idemet[0]= 0x3
#	g_iartout.idemet[1]= 0x3
#	g_iartout.idemet[2]= 0x0
#	g_iartout.idemet[3]= 0x0
#	g_iartout.idemet[4]= 0x8
#	index = 5
#	POINT BOUCLE
#	SI index < 11
#	ALORS
#		g_iartout.idemet[index]= 0x0
#		index = index + 1
#		SAUT BOUCLE
#	FINSI
#FINSI

SI (i_strcmp(pt_idemet_660004683,"") == 0)
  ALORS
  # QC1470 13/01/2015
  #i_strcpy(pt_idemet, "33610000000FFFFFFF")
  i_strcpy(pt_idemet_660004683, "33008000000FFFFFFF")

FINSI
longueur_660004683 = i_conv_ascii_dcb(pt_idemet_660004683, pt_idemet_DCB_660004683)
SI (longueur_660004683 > 9)
  ALORS
  longueur_660004683 = 9
FINSI
erreur_660004683 = i_memcpy_art_field_n(g_iartout, $Tdpvgsm::idemet, pt_idemet_DCB_660004683, longueur_660004683)


#################### T3t1.4	IMSI :MSET :FF:8
#trace("[Twha_dis] IMSI")
index_660004683 = 0
POINT BOUCL
SI index_660004683 < 15
ALORS
	g_iartout.IMSI[index_660004683]= 0x9
	index_660004683 = index_660004683 + 1
	SAUT BOUCL
FINSI
#trace("[Twha_dis] Fin IMSI")
#################### T3t1.5	DATE :1VAL :DATE

#################### T3t1.6	DUREE :1VAL :DUREE
#trace("[Twha_dis] DUREE")
duree_660004683 = i_get_art_field(g_iartin, $Twha::DUREE)
erreur_660004683 = i_set_art_field(g_iartout, $Tdpvgsm::DUREE,duree_660004683)
#trace("[Twha_dis] Fin DUREE")
#################### T3t1.7	svcsup :MSET :FF:1

#################### T3t1.8	tlserv :MSET :11:1

#################### T3t1.9	support1 :MSET :FF:1

#################### T3t1.10	systype :MSET :FF:1

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

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

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

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

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

#################### T3t1.16	nbUT :MSET :00:1
#id T3t39.6

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

#################### T3t1.18	couleur :MSET :0E:1

#################### T3t2		 idpart <> Sequence
#trace("============Boucle1=================")
index_660004683=0
POINT BOUCLE1
#trace1( " =============sequenceH = %x", g_iartin.SequenceH[index])
SI ((g_iartin.SequenceH[index_660004683] >= 0x30) && (g_iartin.SequenceH[index_660004683] <= 0x39)) || ((g_iartin.SequenceH[index_660004683] >= 0x41) && (g_iartin.SequenceH[index_660004683] <= 0x45)) || g_iartin.SequenceH[index_660004683] == 0x2A || g_iartin.SequenceH[index_660004683] == 0x23 || g_iartin.SequenceH[index_660004683] == 0x2D
ALORS
	SI ((g_iartin.SequenceH[index_660004683] >= 0x30) && (g_iartin.SequenceH[index_660004683] <= 0x39))
	ALORS
		g_iartout10.idpart[index_660004683]=g_iartin.SequenceH[index_660004683]- 0x30
		index_660004683=index_660004683+1
#		trace1(" index : %d",index)
	SINON
		SI ((g_iartin.SequenceH[index_660004683] >= 0x41) && (g_iartin.SequenceH[index_660004683] <= 0x45))
		ALORS
			g_iartout10.idpart[index_660004683]=g_iartin.SequenceH[index_660004683]- 0x37
			index_660004683=index_660004683+1
#			trace1(" index : %d",index)
		SINON
			SI g_iartin.SequenceH[index_660004683] == 0x2A
			ALORS
				g_iartout10.idpart[index_660004683]=0xB
				index_660004683=index_660004683+1
#				trace1(" index : %d",index)
			SINON
				SI g_iartin.SequenceH[index_660004683] == 0x23
				ALORS
					g_iartout10.idpart[index_660004683]=0xC
					index_660004683=index_660004683+1
#					trace1(" index : %d",index)
				SINON
					SI g_iartin.SequenceH[index_660004683] == 0x2D
					ALORS
						g_iartout10.idpart[index_660004683]=0xE
						index_660004683=index_660004683+1
#						trace1(" index : %d",index)
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
SAUT BOUCLE1
FINSI

MOD_660004683=index_660004683%2
SI MOD_660004683!=0
ALORS
	VAL_660004683=((index_660004683/2) + 1)*8
#	trace1(" VAL1 : %d",VAL)
SINON
	VAL_660004683=(index_660004683/2)*8
#	trace1(" VAL2 : %d",VAL)
FINSI
#trace1( " VAL : %d",VAL)
erreur_660004683 = i_resize_tlv(g_iartout10, "T2_Idpart", "idpart", VAL_660004683)

#erreur = i_get_art_str(g_iartout10, $Conv_URS::idpart, pt_1)
#trace2( " Conv_URS idpart : %s",pt_1,"")
#trace1( " index : %d",index)
MOD_660004683 = g_iartout10.idpart!NELEM
#trace1( " MOD : %d",MOD)
SI MOD_660004683 > 6
ALORS
	erreur_660004683 = i_dup_chp_rnisGSM(g_iartout10, g_iartout, $Conv_URS::idpart, $Tdpvgsm::idpart,-$NORM:WHA_PARTNER,0)
	SI ( erreur_660004683 != 0)
	ALORS
		trace("[Twhaco_dis] :Erreur Normalisation pour idpart")
		i_strcpy(pt_1_660004683," pour idpart ")
		code_errone_660004683 = 0xA010
		code_errone_660004683 = code_errone_660004683 + EFFICACE_660004683
		erreur_660004683 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004683,C_Article_660004683,pt_1_660004683)
		SAUT DISTRI_ERR
	FINSI
SINON
	erreur_660004683 = i_dup_chp_1val(g_iartout10, g_iartout, $Conv_URS::idpart, $Tdpvgsm::idpart)
FINSI

#################### T3t3		 local <> NumDDR
#trace("============Boucle2=================")
index_660004683=0
POINT BOUCLE2
#trace1( " =============NumDDRH = %x", g_iartin.NumDDRH[index])
SI (g_iartin.NumDDRH[index_660004683] >= 0x30 && g_iartin.NumDDRH[index_660004683] <= 0x39) || g_iartin.NumDDRH[index_660004683] == 0x41 || g_iartin.NumDDRH[index_660004683] == 0x4A || g_iartin.NumDDRH[index_660004683] == 0x53 || g_iartin.NumDDRH[index_660004683] == 0x43 
ALORS
	SI (g_iartin.NumDDRH[index_660004683] >= 0x30 && g_iartin.NumDDRH[index_660004683] <= 0x39)
	ALORS
		g_iartout10.local[index_660004683]=g_iartin.NumDDRH[index_660004683]- 0x30
	SINON
		SI g_iartin.NumDDRH[index_660004683] == 0x41
		ALORS
			g_iartout10.local[index_660004683]= 0xB
		SINON
			SI g_iartin.NumDDRH[index_660004683] == 0x4A
			ALORS
				g_iartout10.local[index_660004683]= 0xC
			SINON
				SI g_iartin.NumDDRH[index_660004683] == 0x53
				ALORS
					g_iartout10.local[index_660004683]= 0xD
				SINON
					SI g_iartin.NumDDRH[index_660004683] == 0x43
					ALORS
						g_iartout10.local[index_660004683]= 0xE
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
	VAL_660004683=g_iartout10.local[index_660004683]
	index_660004683=index_660004683+1
	SAUT BOUCLE2
FINSI
MOD_660004683=index_660004683%2
SI MOD_660004683!=0
ALORS
	VAL_660004683=((index_660004683/2) + 1)*8
#	trace1(" VAL1 : %d",VAL)
SINON
	VAL_660004683=(index_660004683/2)*8
#	trace1(" VAL2 : %d",VAL)
FINSI
#trace1( " VAL : %d",VAL)
erreur_660004683 = i_resize_tlv(g_iartout10, "T2_Local", "local", VAL_660004683)
#erreur = i_get_art_str(g_iartout10, $Conv_URS::local, pt_1)

erreur_660004683 = i_dup_chp_rnisGSM(g_iartout10, g_iartout, $Conv_URS::local, $Tdpvgsm::local,-$NORM:WHA_MSISDN,0)
SI ( erreur_660004683 != 0)
ALORS
	trace("[Twhaco_dis] :Erreur Normalisation pour local")
	i_strcpy(pt_1_660004683," pour local ")
	code_errone_660004683 = 0xA010
	code_errone_660004683 = code_errone_660004683 + EFFICACE_660004683
	erreur_660004683 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004683,C_Article_660004683,pt_1_660004683)
	SAUT DISTRI_ERR
FINSI

#################### T3t4		 MSISDN <> NumDDR
#trace("============Boucle3=================")
index_660004683=0
POINT BOUCLE3
#trace1( " =============NumDDRH = %x", g_iartin.NumDDRH[index])
SI (g_iartin.NumDDRH[index_660004683] >= 0x30 && g_iartin.NumDDRH[index_660004683] <= 0x39) || g_iartin.NumDDRH[index_660004683] == 0x41 || g_iartin.NumDDRH[index_660004683] == 0x4A || g_iartin.NumDDRH[index_660004683] == 0x53 || g_iartin.NumDDRH[index_660004683] == 0x43 
ALORS
	SI (g_iartin.NumDDRH[index_660004683] >= 0x30 && g_iartin.NumDDRH[index_660004683] <= 0x39)
	ALORS
		g_iartout10.MSISDN[index_660004683]=g_iartin.NumDDRH[index_660004683]- 0x30
	SINON
		SI g_iartin.NumDDRH[index_660004683] == 0x41
		ALORS
			g_iartout10.MSISDN[index_660004683]= 0xB
		SINON
			SI g_iartin.NumDDRH[index_660004683] == 0x4A
			ALORS
				g_iartout10.MSISDN[index_660004683]= 0xC
			SINON
				SI g_iartin.NumDDRH[index_660004683] == 0x53
				ALORS
					g_iartout10.MSISDN[index_660004683]= 0xD
				SINON
					SI g_iartin.NumDDRH[index_660004683] == 0x43
					ALORS
						g_iartout10.MSISDN[index_660004683]= 0xE
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
	index_660004683=index_660004683+1
#	trace1(" index : %d",index)
	SAUT BOUCLE3
FINSI
MOD_660004683=index_660004683%2
SI MOD_660004683!=0
ALORS
	VAL_660004683=((index_660004683/2) + 1)*8
#	trace1(" VAL1 : %d",VAL)
SINON
	VAL_660004683=(index_660004683/2)*8
#	trace1(" VAL2 : %d",VAL)
FINSI
#trace1( " VAL : %d",VAL)
erreur_660004683 = i_resize_tlv(g_iartout10, "T2_Local", "local", VAL_660004683)
erreur_660004683 = i_get_art_str(g_iartout10, $Conv_URS::local, pt_1_660004683)

erreur_660004683 = i_dup_chp_rnisGSM(g_iartout10, g_iartout, $Conv_URS::local, $Tdpvgsm::MSISDN,-$NORM:WHA_MSISDN,0)
SI ( erreur_660004683 != 0)
ALORS
	trace("[Twhaco_dis] :Erreur Normalisation pour MSISDN")
	i_strcpy(pt_1_660004683," pour MSISDN ")
	code_errone_660004683 = 0xA010
	code_errone_660004683 = code_errone_660004683 + EFFICACE_660004683
	erreur_660004683 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004683,C_Article_660004683,pt_1_660004683)
	SAUT DISTRI_ERR
FINSI
#################### V3T30.1 date audit
#################### T4t30.1 timeInCE :1VAL :DATE
#################### date_plat
date_plat_660004683 = i_DHgetLocalTime(NUMTAB_660004683, 7, date_audit_660004683)
#trace1("======== date_plat = %d ========",date_plat)
erreur_660004683 = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_plat_660004683)

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

#################### T3t39 

#G3R6
#################### T4t39.5 balanceUnits		:-	:-	:MSET :00:6
SI (mCodeTauxTVA_660004683 > 0x7F)
ALORS
	erreur_660004683 = i_set_art_fieldtab(g_iartout, $Tdpvgsm::balanceUnits, 0, mCodeTauxTVA_660004683 / 0x100)
	erreur_660004683 = i_set_art_fieldtab(g_iartout, $Tdpvgsm::balanceUnits, 1, mCodeTauxTVA_660004683 % 0x100)
	erreur_660004683 = i_resize_tlv(g_iartout, "T4t39.5", "balanceUnits", 2)
SINON
	erreur_660004683 = i_set_art_fieldtab(g_iartout, $Tdpvgsm::balanceUnits, 0, mCodeTauxTVA_660004683)
	erreur_660004683 = i_resize_tlv(g_iartout, "T4t39.5", "balanceUnits", 1)
FINSI
#/G3R6

#################### T4t39.6 Amount :MSET :00:4     Amount <> MontComm
# QC1036
index_660004683=0
longueur_660004683=0
montant_660004683=0
total_660004683=0
puissance_660004683=0
Fm_660004683=0
POINT BOUCLE4
SI g_iartin.MontCommH[longueur_660004683] >= 0x30 && g_iartin.MontCommH[longueur_660004683] <= 0x39 
ALORS
	longueur_660004683=longueur_660004683+1
	SAUT BOUCLE4
FINSI
longueur_660004683=longueur_660004683-1
puissance_660004683=longueur_660004683
POINT BOUCLE44
SI index_660004683 <= longueur_660004683
ALORS
	montant_660004683=(g_iartin.MontCommH[index_660004683]- 0x30)
	SI puissance_660004683 == 9 && montant_660004683 > 4
	ALORS
		SI montant_660004683 == 9
		ALORS
			Fm_660004683=2
		SINON
			Fm_660004683=1
		FINSI
	FINSI
	montant_660004683=montant_660004683 * (10 ** puissance_660004683)
	total2_660004683=total_660004683+montant_660004683
	SI total2_660004683 < total_660004683
	ALORS
		SI total2_660004683<0 && total_660004683>=0
		ALORS
			SAUT FIN_amount1
		FINSI
		SI total2_660004683>=0 && total_660004683>=0
		ALORS
			Fm_660004683=Fm_660004683+1
			SAUT FIN_amount1
		FINSI
	SINON
		SI total2_660004683>=0 && total_660004683<0
		ALORS
			Fm_660004683=Fm_660004683+1
			SAUT FIN_amount1
		FINSI
	FINSI
	POINT FIN_amount1
	total_660004683=total2_660004683
	index_660004683=index_660004683+1
	puissance_660004683=puissance_660004683-1
	SAUT BOUCLE44
FINSI

erreur_660004683 = i_set_art_field(g_iartout10, $Conv_URS::Amount,total_660004683)
erreur_660004683 = i_set_art_field(g_iartout10, $Conv_URS::FAmount,Fm_660004683)
erreur_660004683 = i_dup_chp_tab(g_iartout10, g_iartout, $Conv_URS::AmountH, $Tdpvgsm::Amount,0)
#/QC1036
#################### T3t1.16 nbUT :MSET :00:4
erreur_660004683 = i_set_art_field(g_iartout, $Tdpvgsm::nbUT,total_660004683)

#################### V4t43.3
#FO 500 : suppression des caracteres espace de bourrage
erreur_660004683 = i_get_art_str(g_iartin, $Twha::TransDesc, pt_2_660004683)
erreur_660004683 = i_set_art_str(g_iartout, $Tdpvgsm::transactionDesc, pt_2_660004683)
index_660004683 = 245

POINT BOUCLE_BOURRAGE1
i_get_sub_str(pt_2_660004683,index_660004683,index_660004683,pt_3_660004683)
SI ( index_660004683 > 0 )
ALORS
	SI ( i_strcmp(" ",pt_3_660004683) == 0 )  
	ALORS
		index_660004683 = index_660004683 - 1
		SAUT BOUCLE_BOURRAGE1
	SINON
		erreur_660004683 = i_resize_tlv(g_iartout, "T4t43.3", "transactionDesc", index_660004683+1)
	FINSI
FINSI 


#################### V4t44.1
# TransIdH <> transactionID
#trace("============Boucle5=================")
index_660004683=0
indexl_660004683 = 0
POINT BOUCLE5
SI g_iartin.TransIdH[indexl_660004683]==0x30
ALORS
	indexl_660004683 = indexl_660004683 + 1
#	trace1(" indexl : %d",indexl)
	SAUT BOUCLE5
FINSI
#trace("============Boucle6=================")

# La longueur du champ en sortie correspond a la longueur du champ d entree a partir du 1er caractere different de 0
longueur_660004683 = ( 24 - indexl_660004683 ) / 2

# Si on a un nombre impair de digit, il faut ajouter un octet
SI ((longueur_660004683 * 2) + indexl_660004683) != 24
ALORS
	longueur_660004683 = longueur_660004683 + 1
FINSI

erreur_660004683 = i_resize_tlv(g_iartout, "T4t44.1", "transactionID", longueur_660004683)

index_660004683=0
POINT BOUCLE6
#trace1( " =============TransId = %x", g_iartin.TransIdH[indexl])
SI ( g_iartin.TransIdH[indexl_660004683] >= 0x30 && g_iartin.TransIdH[indexl_660004683] <= 0x39 ) && ( indexl_660004683 < 24 )
ALORS
	g_iartout.transactionID[index_660004683]=g_iartin.TransIdH[indexl_660004683]- 0x30
	dizaine_660004683 = (g_iartin.TransIdH[indexl_660004683] - 0x30) * 16
	indexl_660004683 = indexl_660004683 + 1

# On teste si on a fini la lecture du champ d entree
	SI indexl_660004683 > 23
	ALORS
		unite_660004683 = 0xf
	SINON
		unite_660004683 = g_iartin.TransIdH[indexl_660004683] - 0x30
		indexl_660004683 = indexl_660004683 + 1
	FINSI
	
	g_iartout.transactionID[index_660004683] = (dizaine_660004683 + unite_660004683)	
	index_660004683 = index_660004683 + 1
#	trace1(" index : %d",index)
#	trace1(" indexl : %d",indexl)
	SAUT BOUCLE6
FINSI

# V4t45.1
#erreur = i_dup_chp_1val(g_iartin, g_iartout, $Twha::ProviderId, $Tdpvgsm::providerID)
#FO 500 : suppression des caracteres espace de bourrage
erreur_660004683 = i_get_art_str(g_iartin, $Twha::ProviderId, pt_2_660004683)
erreur_660004683 = i_set_art_str(g_iartout, $Tdpvgsm::providerID, pt_2_660004683)
index_660004683 = 17

POINT BOUCLE_BOURRAGE2
i_get_sub_str(pt_2_660004683,index_660004683,index_660004683,pt_3_660004683)
SI ( index_660004683 > 0 )
ALORS
	SI ( i_strcmp(" ",pt_3_660004683) == 0 )  
	ALORS
		index_660004683 = index_660004683 - 1
		SAUT BOUCLE_BOURRAGE2
	SINON
		erreur_660004683 = i_resize_tlv(g_iartout, "T4t45.1", "providerID", index_660004683+1)
	FINSI
FINSI 


# V4t45.3
#erreur = i_dup_chp_1val(g_iartin, g_iartout, $Twha::ShopName, $Tdpvgsm::shopName)
#FO 500 : suppression des caracteres espace de bourrage
erreur_660004683 = i_get_art_str(g_iartin, $Twha::ShopName, pt_2_660004683)
erreur_660004683 = i_set_art_str(g_iartout, $Tdpvgsm::shopName, pt_2_660004683)
index_660004683 = 17

POINT BOUCLE_BOURRAGE3
i_get_sub_str(pt_2_660004683,index_660004683,index_660004683,pt_3_660004683)
SI ( index_660004683 > 0 )
ALORS
	SI ( i_strcmp(" ",pt_3_660004683) == 0 )  
	ALORS
		index_660004683 = index_660004683 - 1
		SAUT BOUCLE_BOURRAGE3
	SINON
		erreur_660004683 = i_resize_tlv(g_iartout, "T4t45.3", "shopName", index_660004683+1)
	FINSI
FINSI 
##############################################################################
# Cpt applicatifs
##############################################################################

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

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

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

erreur_660004683 = aiguillage2_660004590 (g_iartin, g_iartout, DISTRIBUTION_SPECIALE_660004683, Multidistribution_Non_660004683)
SI (erreur_660004683 == TRAI_KO_660004683)
ALORS
# QC1005
	trace("<<<__LINE__<<<__FILE__<<< Erreur retour fonction aiguillage2")
#	code_errone = 0xA0B0
#	code_errone = code_errone + EFFICACE
#	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 DISTRI_ERR
FINSI

RETOUR TRAIT_OK

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

POINT   DISTRI_ERR

trace( "Stockage en errone de distribution")
res_660004683 = i_make_art_rej(g_iartin, g_iartout8, 0)
res_660004683 = i_stocke_art( g_iartout8, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

#___________________________ FIN Twha_dist.src_________________________________
