DEFINITION Multidistribution_Non_660004722 0
DEFINITION DISTRIBUTION_SPECIALE_660004722 0
DEFINITION C_Tdpv_660004722 "Tdpvgsm"
DEFINITION C_Article_660004722 "Twha"
DEFINITION NUMTAB_660004722 4
DEFINITION TRAI_KO_660004722 -1
REGISTRE ENTIER date_plat_660004722
REGISTRE ENTIER date_fin_660004722
REGISTRE ENTIER erreur_660004722
REGISTRE ENTIER Nb_redist_660004722
REGISTRE ENTIER date_660004722
REGISTRE ENTIER EFFICACE_660004722
REGISTRE ENTIER code_errone_660004722
REGISTRE ENTIER res_660004722
REGISTRE ENTIER date_audit_660004722
REGISTRE ENTIER longueur_660004722
REGISTRE ENTIER index_660004722
REGISTRE ENTIER indexl_660004722
REGISTRE ENTIER VAL_660004722
REGISTRE ENTIER MOD_660004722
REGISTRE ENTIER montant_660004722
REGISTRE ENTIER puissance_660004722
REGISTRE ENTIER Fm_660004722
REGISTRE ENTIER total_660004722
REGISTRE ENTIER total2_660004722
REGISTRE ENTIER ICAR_ABS_660004722
REGISTRE ENTIER dizaine_660004722
REGISTRE ENTIER unite_660004722
REGISTRE ENTIER mCodeTauxTVA_660004722
REGISTRE ENTIER long_660004722
REGISTRE POINTEUR pt_1_660004722
REGISTRE POINTEUR pt_2_660004722
REGISTRE POINTEUR pt_3_660004722
REGISTRE POINTEUR pt_4_660004722
REGISTRE POINTEUR pt_idemet_660004722
REGISTRE POINTEUR pt_SGTQS_660004722
REGISTRE POINTEUR pt_BUFFER_660004722
REGISTRE POINTEUR pt_idemet_DCB_660004722
############################################################################
# DISTRIBUTION TwhaV2_dist.src
# Article DC TwhaV2 en entree de Platine
# Pcode de distribution
# Creation le 09/02/2015
# Historique
# 06/03/2015 verif_pcode : menage variables inutilisees
# 09/03/2015 QC1530 Champ TransactionID
# 13/03/2015 QC1539 : si T3t8/ProviderId vide => T4t45.1/providerID absent, si T3t9/Shopname vide => T4t74.1/ProviderName absent
# 24/03/2015 QC1556
############################################################################






EFFICACE_660004722=2
##############################################################################
# ALLOCATION DES POINTEURS
##############################################################################

pt_1_660004722= "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
pt_2_660004722= "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
i_strcpy(pt_2_660004722,"")
pt_3_660004722= "6573"
pt_4_660004722 = "pt_4123565432845845845845"
i_strcpy(pt_3_660004722,"")
i_strcpy(pt_4_660004722,"")

pt_idemet_660004722 = "4444444444444444444444444444444444444444444444444444444444444444444444444"
pt_SGTQS_660004722 = "777777777777777777777777777777777777777"
pt_BUFFER_660004722 = "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"
pt_idemet_DCB_660004722 = "pt_idemet_DCB0123456790123456789"

trace("<<<__LINE__<<<__FILE__<<<  Debut Pcode TwhaV2 distribution")
#erreur = i_fdump_art(g_iartin)

##############################################################################
# Variables fonctionnelles
##############################################################################
########## Date_Audit
date_audit_660004722=i_date_audit()
#trace1("<<<__LINE__<<<__FILE__<<<  date_audit=%x",date_audit)


#################### mCodeTauxTVA
i_strcpy(pt_1_660004722,"")
erreur_660004722 = i_get_art_str(g_iartin, $TwhaV2::CodeTVA, pt_1_660004722)
SI (i_strcmp("   ", pt_1_660004722) == 0)
ALORS
  mCodeTauxTVA_660004722 = 1
SINON
  mCodeTauxTVA_660004722 = (i_strtab(pt_1_660004722, 0) - 0x30) * 100 + (i_strtab(pt_1_660004722, 1) - 0x30) * 10 + (i_strtab(pt_1_660004722, 2) - 0x30)
FINSI


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

SI (Nb_redist_660004722 == 0)
ALORS
  erreur_660004722 = i_add_opt( "E_Redistri2" )
FINSI
erreur_660004722 = i_set_attr_val_n( $E_Redistri2::EnvoiRedis, 0)


# FE_0028 comptabilisation des CRAs issus de la redistribution
date_fin_660004722=i_get_art_field(g_iartin,$TwhaV2::dfin)
erreur_660004722= i_incr_redist_dist_660004265(date_fin_660004722)


############################################################################
# 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_660004722))
ALORS
  trace("<<<__LINE__<<<__FILE__<<< ERREUR de duplication")
  code_errone_660004722 = 0xA0D2
  code_errone_660004722 = code_errone_660004722 + EFFICACE_660004722
  erreur_660004722 = i_PlvMessEmettre(6165,2,g_iartin,"",2,code_errone_660004722,C_Tdpv_660004722,0)
  SAUT DISTRI_ERR
FINSI
erreur_660004722 = 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_660004722 =i_get_art_field(g_iartin,$TwhaV2::DATE)
ICAR_ABS_660004722 =i_date_platine(g_ieec,g_iartin,date_660004722)

i_strcpy(pt_SGTQS_660004722," ")
i_strcpy (pt_SGTQS_660004722, i_LireEECSGTQS(g_ieec))
trace2("<<<__LINE__<<<__FILE__<<<  pt_SGTQS = <%s>", pt_SGTQS_660004722,"")

i_strcpy(pt_idemet_660004722, " ")
i_strcpy(pt_BUFFER_660004722, " ")
erreur_660004722 = i_format_str2(pt_BUFFER_660004722,"%s%s","AX_IDEMET_",pt_SGTQS_660004722)
i_strcpy(pt_idemet_660004722, i_get_tab_field("VariableContexte", ICAR_ABS_660004722, pt_BUFFER_660004722))
trace2("<<<__LINE__<<<__FILE__<<<  pt_idemet = <%s>",pt_idemet_660004722,"")

SI (i_strcmp(pt_idemet_660004722,"") == 0)
ALORS
  i_strcpy(pt_idemet_660004722, "33008000000FFFFFFF")
FINSI
longueur_660004722 = i_conv_ascii_dcb(pt_idemet_660004722, pt_idemet_DCB_660004722)
SI (longueur_660004722 > 9)
ALORS
  longueur_660004722 = 9
FINSI
erreur_660004722 = i_memcpy_art_field_n(g_iartout, $Tdpvgsm::idemet, pt_idemet_DCB_660004722, longueur_660004722)


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

#################### T3t1.6 DUREE :- :- :CSTE :01

#################### 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 <> SeqMarchand
#trace("<<<__LINE__<<<__FILE__<<< ============Boucle1=================")
index_660004722=0
POINT BOUCLE1
#trace1("<<<__LINE__<<<__FILE__<<<  =============sequenceH = %x", g_iartin.SeqMarchand[index])
SI ((g_iartin.SeqMarchand[index_660004722] >= 0x30) && (g_iartin.SeqMarchand[index_660004722] <= 0x39)) || ((g_iartin.SeqMarchand[index_660004722] >= 0x41) && (g_iartin.SeqMarchand[index_660004722] <= 0x45)) || g_iartin.SeqMarchand[index_660004722] == 0x2A || g_iartin.SeqMarchand[index_660004722] == 0x23 || g_iartin.SeqMarchand[index_660004722] == 0x2D
ALORS
  SI ((g_iartin.SeqMarchand[index_660004722] >= 0x30) && (g_iartin.SeqMarchand[index_660004722] <= 0x39))
  ALORS
    g_iartout10.idpart[index_660004722]=g_iartin.SeqMarchand[index_660004722]- 0x30
    index_660004722=index_660004722+1
#   trace1("<<<__LINE__<<<__FILE__<<<  index : %d",index)
  SINON
    SI ((g_iartin.SeqMarchand[index_660004722] >= 0x41) && (g_iartin.SeqMarchand[index_660004722] <= 0x45))
    ALORS
      g_iartout10.idpart[index_660004722]=g_iartin.SeqMarchand[index_660004722]- 0x37
      index_660004722=index_660004722+1
#     trace1("<<<__LINE__<<<__FILE__<<<  index : %d",index)
    SINON
      SI g_iartin.SeqMarchand[index_660004722] == 0x2A
      ALORS
        g_iartout10.idpart[index_660004722]=0xB
        index_660004722=index_660004722+1
#       trace1("<<<__LINE__<<<__FILE__<<<  index : %d",index)
      SINON
        SI g_iartin.SeqMarchand[index_660004722] == 0x23
        ALORS
          g_iartout10.idpart[index_660004722]=0xC
          index_660004722=index_660004722+1
#         trace1("<<<__LINE__<<<__FILE__<<<  index : %d",index)
        SINON
          SI g_iartin.SeqMarchand[index_660004722] == 0x2D
          ALORS
            g_iartout10.idpart[index_660004722]=0xE
            index_660004722=index_660004722+1
#           trace1("<<<__LINE__<<<__FILE__<<<  index : %d",index)
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI
  SAUT BOUCLE1
FINSI

MOD_660004722=index_660004722%2
SI MOD_660004722!=0
ALORS
  VAL_660004722=((index_660004722/2) + 1)*8
# trace1("<<<__LINE__<<<__FILE__<<<  VAL1 : %d",VAL)
SINON
  VAL_660004722=(index_660004722/2)*8
# trace1("<<<__LINE__<<<__FILE__<<<  VAL2 : %d",VAL)
FINSI
#trace1("<<<__LINE__<<<__FILE__<<<  VAL : %d",VAL)
erreur_660004722 = i_resize_tlv(g_iartout10, "T2_Idpart", "idpart", VAL_660004722)

#erreur = i_get_art_str(g_iartout10, $Conv_URS::idpart, pt_1)
#trace2("<<<__LINE__<<<__FILE__<<<  Conv_URS idpart : %s",pt_1,"")
#trace1("<<<__LINE__<<<__FILE__<<<  index : %d",index)
MOD_660004722 = g_iartout10.idpart!NELEM
#trace1("<<<__LINE__<<<__FILE__<<<  MOD : %d",MOD)
SI MOD_660004722 > 6
ALORS
  erreur_660004722 = i_dup_chp_rnisGSM(g_iartout10, g_iartout, $Conv_URS::idpart, $Tdpvgsm::idpart,-$NORM:WHA_PARTNER,0)
  SI ( erreur_660004722 != 0)
  ALORS
    trace("<<<__LINE__<<<__FILE__<<<  :Erreur Normalisation pour idpart")
    i_strcpy(pt_1_660004722," pour idpart ")
    code_errone_660004722 = 0xA012
    code_errone_660004722 = code_errone_660004722 + EFFICACE_660004722
    erreur_660004722 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004722,C_Article_660004722,pt_1_660004722)
    SAUT DISTRI_ERR
  FINSI
SINON
  erreur_660004722 = i_dup_chp_1val(g_iartout10, g_iartout, $Conv_URS::idpart, $Tdpvgsm::idpart)
FINSI

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

erreur_660004722 = i_dup_chp_rnisGSM(g_iartout10, g_iartout, $Conv_URS::local, $Tdpvgsm::local,-$NORM:WHA_MSISDN,0)
SI ( erreur_660004722 != 0)
ALORS
  trace("<<<__LINE__<<<__FILE__<<< Erreur Normalisation pour local")
  i_strcpy(pt_1_660004722," pour local ")
  code_errone_660004722 = 0xA012
  code_errone_660004722 = code_errone_660004722 + EFFICACE_660004722
  erreur_660004722 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004722,C_Article_660004722,pt_1_660004722)
  SAUT DISTRI_ERR
FINSI

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

erreur_660004722 = i_dup_chp_rnisGSM(g_iartout10, g_iartout, $Conv_URS::local, $Tdpvgsm::MSISDN,-$NORM:WHA_MSISDN,0)
SI ( erreur_660004722 != 0)
ALORS
  trace("<<<__LINE__<<<__FILE__<<< [TwhV2_dis] :Erreur Normalisation pour MSISDN")
  i_strcpy(pt_1_660004722," pour MSISDN ")
  code_errone_660004722 = 0xA012
  code_errone_660004722 = code_errone_660004722 + EFFICACE_660004722
  erreur_660004722 = i_PlvMessEmettre(7503,2,g_iartin,"",3,code_errone_660004722,C_Article_660004722,pt_1_660004722)
  SAUT DISTRI_ERR
FINSI
#################### V3T30.1 date audit
#################### T4t30.1 timeInCE :1VAL :DATE
#################### date_plat
date_plat_660004722 = i_DHgetLocalTime(NUMTAB_660004722, 7, date_audit_660004722)
#trace1("<<<__LINE__<<<__FILE__<<< ======== date_plat = %d ========",date_plat)
erreur_660004722 = i_set_art_field(g_iartout, $Tdpvgsm::timeInCE,date_plat_660004722)

#################### T4t30.2 eec :MSET :00:1

SI (g_ieec > 500)
ALORS
  erreur_660004722 = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec - 500)
SINON
  erreur_660004722 = i_set_art_field(g_iartout, $Tdpvgsm::eec, g_ieec)
FINSI

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

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

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

#################### T4t39.6 Amount :MSET :00:4     Amount <> Montant

index_660004722=0
longueur_660004722=0
montant_660004722=0
total_660004722=0
puissance_660004722=0
Fm_660004722=0
POINT BOUCLE4
SI g_iartin.Montant[longueur_660004722] >= 0x30 && g_iartin.Montant[longueur_660004722] <= 0x39
ALORS
  longueur_660004722=longueur_660004722+1
  SAUT BOUCLE4
FINSI
longueur_660004722=longueur_660004722-1
puissance_660004722=longueur_660004722
POINT BOUCLE44
SI index_660004722 <= longueur_660004722
ALORS
  montant_660004722=(g_iartin.Montant[index_660004722]- 0x30)
  SI puissance_660004722 == 9 && montant_660004722 > 4
  ALORS
    SI montant_660004722 == 9
    ALORS
      Fm_660004722=2
    SINON
      Fm_660004722=1
    FINSI
  FINSI
  montant_660004722=montant_660004722 * (10 ** puissance_660004722)
  total2_660004722=total_660004722+montant_660004722
  SI total2_660004722 < total_660004722
  ALORS
    SI total2_660004722<0 && total_660004722>=0
    ALORS
      SAUT FIN_amount1
    FINSI
    SI total2_660004722>=0 && total_660004722>=0
    ALORS
      Fm_660004722=Fm_660004722+1
      SAUT FIN_amount1
    FINSI
  SINON
    SI total2_660004722>=0 && total_660004722<0
    ALORS
      Fm_660004722=Fm_660004722+1
      SAUT FIN_amount1
    FINSI
  FINSI
  POINT FIN_amount1
  total_660004722=total2_660004722
  index_660004722=index_660004722+1
  puissance_660004722=puissance_660004722-1
  SAUT BOUCLE44
FINSI

erreur_660004722 = i_set_art_field(g_iartout10, $Conv_URS::Amount,total_660004722)
erreur_660004722 = i_set_art_field(g_iartout10, $Conv_URS::FAmount,Fm_660004722)
erreur_660004722 = i_dup_chp_tab(g_iartout10, g_iartout, $Conv_URS::AmountH, $Tdpvgsm::Amount,0)

#################### T3t1.16 nbUT :MSET :00:4
erreur_660004722 = i_set_art_field(g_iartout, $Tdpvgsm::nbUT,total_660004722)

#################### V4t43.3
i_strcpy(pt_2_660004722,"")
i_strcpy(pt_3_660004722,"")
erreur_660004722 = i_get_art_str(g_iartin, $TwhaV2::Description, pt_2_660004722)
erreur_660004722 = i_set_art_str(g_iartout, $Tdpvgsm::transactionDesc, pt_2_660004722)
index_660004722=i_strlen(pt_2_660004722)
trace1("Longueur champ Description <%d>",index_660004722)

erreur_660004722 = i_resize_tlv(g_iartout, "T4t43.3", "transactionDesc", index_660004722)


#################### V4t44.1 ######################
# transactionID   :-  :-  :MSET :FF:12    
# QC1530
# index de g_iartout
SI (!i_valid_field_n(g_iartin, $TwhaV2::TransactionId))
ALORS
  erreur_660004722 = i_supprChamp(g_iartout, "T4t44.1")
  SAUT FIN_transactionID
FINSI

index_660004722 = 0
# indexl de g_iartin
indexl_660004722 = 0

long_660004722 = g_iartin.TransactionId!NELEM

POINT BOUCLE5
SI (g_iartin.TransactionId[indexl_660004722]==0x30 && indexl_660004722 < long_660004722)
ALORS
  indexl_660004722 = indexl_660004722 + 1
  SAUT BOUCLE5
FINSI

# si TransactionId ne contient que des zeros
SI indexl_660004722 >= long_660004722
ALORS
  erreur_660004722 = i_resize_tlv(g_iartout, "T4t44.1", "transactionID", 1)
  g_iartout.transactionID[0] = 0x00
  SAUT FIN_transactionID
FINSI

# La longueur du champ en sortie correspond a la longueur variable du champ d'entree a partir du 1er caractere different de 0
longueur_660004722 = ( long_660004722 - indexl_660004722 ) / 2

# Si on a un nombre impair de digits, il faut ajouter un octet
SI (((longueur_660004722 * 2) + indexl_660004722) != long_660004722)
ALORS
  longueur_660004722 = longueur_660004722 + 1
FINSI

#trace3("<<<__LINE__<<<__FILE__<<<  long = <%d>, 2) indexl = <%d>, longueur = <%d>", long, indexl, longueur)

erreur_660004722 = i_resize_tlv(g_iartout, "T4t44.1", "transactionID", longueur_660004722)

index_660004722=0
POINT BOUCLE6

#trace1("<<<__LINE__<<<__FILE__<<<  =============TransId = %x", g_iartin.TransactionId[indexl])

SI (indexl_660004722 < long_660004722)
ALORS
  SI (g_iartin.TransactionId[indexl_660004722] >= 0x30 && g_iartin.TransactionId[indexl_660004722] <= 0x39)
  ALORS
    g_iartout.transactionID[index_660004722]=g_iartin.TransactionId[indexl_660004722]- 0x30
    dizaine_660004722 = (g_iartin.TransactionId[indexl_660004722] - 0x30) * 16
    indexl_660004722 = indexl_660004722 + 1
    #trace1("<<<__LINE__<<<__FILE__<<< 3) indexl = <%d>",indexl)
    # On teste si on a fini la lecture du champ d entree
    SI (indexl_660004722 == long_660004722)
    ALORS
      unite_660004722 = 0x0F
    SINON
      #trace1("<<<__LINE__<<<__FILE__<<<  =============TransId = %x", g_iartin.TransactionId[indexl])
      SI (g_iartin.TransactionId[indexl_660004722] >= 0x30 && g_iartin.TransactionId[indexl_660004722] <= 0x39)
      ALORS
        unite_660004722 = g_iartin.TransactionId[indexl_660004722] - 0x30
        indexl_660004722 = indexl_660004722 + 1
      SINON
        trace("<<<__LINE__<<<__FILE__<<< ERREUR, TransactionId n'est pas entierement numerique partie unite")
        code_errone_660004722 = 0xA042
        code_errone_660004722 = code_errone_660004722 + EFFICACE_660004722
        erreur_660004722 = i_PlvMessEmettre(6160, 2, g_iartin, "", 3, code_errone_660004722, "non-numerique", "TransactionId")
        SAUT DISTRI_ERR
      FINSI
    FINSI

    g_iartout.transactionID[index_660004722] = (dizaine_660004722 + unite_660004722)

    index_660004722 = index_660004722 + 1
    # trace3("<<<__LINE__<<<__FILE__<<<  index de g_iartout=<%d>, indexl de g_iartin=<%d>",index, indexl, 0)
    SAUT BOUCLE6
  SINON
    trace("<<<__LINE__<<<__FILE__<<< ERREUR, TransactionId n'est pas entierement numerique partie dizaine")
    code_errone_660004722 = 0xA042
    code_errone_660004722 = code_errone_660004722 + EFFICACE_660004722
    erreur_660004722 = i_PlvMessEmettre(6160, 2, g_iartin, "", 3, code_errone_660004722, "non-numerique", "TransactionId")
    SAUT DISTRI_ERR
  FINSI
FINSI

POINT FIN_transactionID

###########################################
#V4t44.2  transactionType :-  :-  :MSET :00
###########################################
#erreur = i_ajoutChamp(g_iartout, "T4t44.2","transactionType",0)
erreur_660004722 = i_get_art_str(g_iartin, $TwhaV2::TypeAchat, pt_3_660004722)
erreur_660004722= i_format_str2( pt_4_660004722, "%s%s" , "0", pt_3_660004722)

trace2("<<<__LINE__<<<__FILE__<<< TypeAchat = %s",pt_4_660004722,"")

erreur_660004722 = i_resize_tlv( g_iartout10, "T2idpart2", "idpartASCII", 2)
erreur_660004722 = i_set_art_str(g_iartout10,$Conv_URS::idpartASCII, pt_4_660004722)
erreur_660004722 = i_dup_chp_tab(g_iartout10, g_iartout, $Conv_URS::idpartDCB, $Tdpvgsm::transactionType,0)

######################################
# V4t45.1  providerID
######################################
# QC1539
i_strcpy(pt_2_660004722, "")
erreur_660004722 = i_get_art_str(g_iartin, $TwhaV2::ProviderId, pt_2_660004722)
SI (i_strcmp(pt_2_660004722, "") != 0)
ALORS
  erreur_660004722 = i_set_art_str(g_iartout, $Tdpvgsm::providerID, pt_2_660004722)
  index_660004722=i_strlen(pt_2_660004722)
  trace1("<<<__LINE__<<<__FILE__<<< Longueur champ Description <%d>",index_660004722)
  erreur_660004722 = i_resize_tlv(g_iartout, "T4t45.1", "providerID", index_660004722)
SINON
  erreur_660004722 = i_supprChamp(g_iartout, "T4t45.1")
FINSI

######################################
# V4t74.1  ProviderName
######################################
# QC1539
i_strcpy(pt_2_660004722, "")
erreur_660004722 = i_get_art_str(g_iartin, $TwhaV2::Shopname, pt_2_660004722)
SI (i_strcmp(pt_2_660004722, "") != 0)
ALORS
  erreur_660004722 = i_set_art_str(g_iartout, $Tdpvgsm::ProviderName, pt_2_660004722)
  index_660004722=i_strlen(pt_2_660004722)
  erreur_660004722 = i_resize_tlv(g_iartout, "T4t74.1", "ProviderName", index_660004722)
SINON
  erreur_660004722 = i_supprChamp(g_iartout, "T4t74.1")
FINSI

##############################
#V3T72 TypeEditeurSVA
#############################

SI (i_valid_field_n(g_iartin, $TwhaV2::TypeOperateur))

ALORS
  erreur_660004722 = i_get_art_str(g_iartin, $TwhaV2::TypeOperateur, pt_2_660004722)
  erreur_660004722 = i_set_art_str(g_iartout, $Tdpvgsm::TypeEditeurSVA, pt_2_660004722)
FINSI

##############################
#V4T74.2  CatContentCode
#############################

SI  (i_valid_field_n(g_iartin, $TwhaV2::Categorie))
ALORS
  erreur_660004722 = i_get_art_str(g_iartin, $TwhaV2::Categorie, pt_2_660004722)
  erreur_660004722 = i_set_art_str(g_iartout, $Tdpvgsm::CatContentCode, pt_2_660004722)
FINSI

##############################################################################
# Cpt applicatifs
##############################################################################

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

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

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

erreur_660004722 = aiguillage2_660004590 (g_iartin, g_iartout, DISTRIBUTION_SPECIALE_660004722, Multidistribution_Non_660004722)
SI (erreur_660004722 == TRAI_KO_660004722)
ALORS
  trace("<<<__LINE__<<<__FILE__<<< <<<__LINE__<<<__FILE__<<< Erreur retour fonction aiguillage2")
  SAUT DISTRI_ERR
FINSI

RETOUR TRAIT_OK

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

POINT   DISTRI_ERR

trace( "<<<__LINE__<<<__FILE__<<< Stockage en errone de distribution")
res_660004722 = i_make_art_rej(g_iartin, g_iartout8, 0)
res_660004722 = i_stocke_art( g_iartout8, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

#___________________________ FIN TwhaV2_dist.src_________________________________
