DEFINITION INCREMENT_840008399 1
DEFINITION CPT_1501_840008399 1501
DEFINITION CPT_3G_840008399 1504
DEFINITION CPT_4G_840008399 1533
DEFINITION CPT_1534_840008399 1534
DEFINITION CPT_1535_840008399 1535
DEFINITION MODULE_840008399 0x5000
DEFINITION ERR_SEM_840008399 0x040
DEFINITION ERR_DATE_840008399 0x060
DEFINITION ERR_SYNTAX_840008399 0x070
DEFINITION ERR_CROISE_840008399 0x0F0
DEFINITION EFFICACE_840008399 1
REGISTRE ENTIER ERREUR_840008399
REGISTRE ENTIER code_rejet_840008399
REGISTRE ENTIER date_cra_840008399
REGISTRE ENTIER erreur_840008399
REGISTRE ENTIER rattype_840008399
REGISTRE ENTIER ratType_present_840008399
REGISTRE ENTIER TypeRAT_840008399
REGISTRE ENTIER b_VOLUME_NUL_840008399
REGISTRE ENTIER b_ACTIV_TrouNoir_840008399
REGISTRE ENTIER res_840008399
REGISTRE POINTEUR pt_buffer_840008399
####################################################################
# Tpgwcdr_trait.src
####################################################################
#       article CRA TPGWCDR ASN1 => type DPV TLV = 0x90 (T1=0x61 T2=0x02)
#
# 03/07/12 - RHE - G3R7 lot3 : Creation
# 25/07/12 - JLG - QC1062 ajout controle croise
# 22/08/20 - JLG - verif des pointeurs
# 10/01/13 - PKH - G3R9 lot1 CRA OBIWAN champ ratType=3 ne sont plus elimine + incrementation compteur 3G
# 10/09/13 - JLG - G3R10 lot4 correction capacitaire : QC1249, 1250, 1276
####################################################################






pt_buffer_840008399 = "pt_buffer77"
i_strcpy(pt_buffer_840008399,"")

trace("<<<<<< Tpgwcdr : Debut TRAITEMENT")

date_cra_840008399 = i_get_art_field(g_iartin,$Tpgwcdr::recOpenTime)

#####################################################################
# Controle syntaxique de l'article
#####################################################################

SI (date_cra_840008399 == -1)
ALORS
  trace1("Tpgwcdr_Tr : champ date, recOpenTime incorrect = 0x%x", date_cra_840008399)
  ERREUR_840008399 = ERR_SEM_840008399
  code_rejet_840008399 = MODULE_840008399 + ERREUR_840008399 + EFFICACE_840008399
  erreur_840008399 = i_PlvMessEmettre(7002,2,g_iartin,"",2, code_rejet_840008399, date_cra_840008399, 0)
  SAUT STOCKE_ERRONE
FINSI

# test recordType, valeur attendue 0x55
res_840008399 = i_get_art_field(g_iartin,$Tpgwcdr::recordType)
SI (res_840008399 != 0x55)
ALORS
  trace1("Tegcdr_Tr : champ recordType != 0x55 car = 0x%x", res_840008399)
  ERREUR_840008399 = ERR_SEM_840008399
  code_rejet_840008399 = MODULE_840008399 + ERREUR_840008399 + EFFICACE_840008399
  erreur_840008399 = i_PlvMessEmettre(7000, 2, g_iartin, "",2, code_rejet_840008399, res_840008399, 0)
  SAUT STOCKE_ERRONE
FINSI

# test ratType, valeurs admises : 0x00, 0x01, 0x02, 0x03, 0x06; valeur eliminee 0x03 vers les DIVERS
SI (i_valid_field_n( g_iartin, $Tpgwcdr::ratType))
ALORS
  ratType_present_840008399 = 1
  rattype_840008399=i_get_art_field(g_iartin,$Tpgwcdr::ratType)
  SI !(rattype_840008399 == 0x00 ||  rattype_840008399 == 0x01 ||rattype_840008399 == 0x02 ||rattype_840008399 == 0x03 ||rattype_840008399 == 0x06)
  ALORS
    trace1("Tpgwcdr_Tr : champ ratType != 0x00, 0x01, 0x02,0x03,0x06 car = 0x%x", rattype_840008399)
    ERREUR_840008399 = ERR_SEM_840008399
    code_rejet_840008399 = MODULE_840008399 + ERREUR_840008399 + EFFICACE_840008399
    erreur_840008399 = i_PlvMessEmettre(7001,2,g_iartin,"",2, code_rejet_840008399,rattype_840008399,0)
    SAUT STOCKE_ERRONE
  FINSI
FINSI

# QC1062 Controle croises entre champs connus de l'article
#=========test de presence de l'un de ces tags T4t4.1 et T4t4.2  en exclusion mutuelle
SI (i_valid_field_n(g_iartin, $Tpgwcdr::PgWiPBinV4Ad) && i_valid_field_n(g_iartin, $Tpgwcdr::PgWiPBinV6Ad))
ALORS
  trace("Tpgwcdr : presence de T4t4.1 et T4t4.2 -->errone")
  ERREUR_840008399 = ERR_CROISE_840008399
  code_rejet_840008399 = MODULE_840008399 + ERREUR_840008399 + EFFICACE_840008399
  erreur_840008399=i_PlvMessEmettre(7014, 2, g_iartin, "", 3, code_rejet_840008399,"PgWiPBinV4Ad", "PgWiPBinV6Ad")
  SAUT STOCKE_ERRONE
FINSI

#=========test de presence de l'un de ces tags T4t6.1 et T4t6.2  en exclusion mutuelle
SI (i_valid_field_n(g_iartin, $Tpgwcdr::SgWiPBinV4Ad) && i_valid_field_n(g_iartin, $Tpgwcdr::SgWiPBinV6Ad))
ALORS
  trace("Tpgwcdr : presence de T4t6.1 et T4t6.2 -->errone")
  ERREUR_840008399 = ERR_CROISE_840008399
  code_rejet_840008399 = MODULE_840008399 + ERREUR_840008399 + EFFICACE_840008399
  erreur_840008399=i_PlvMessEmettre(7014, 2, g_iartin, "", 3, code_rejet_840008399,"SgWiPBinV4Ad", "SgWiPBinV6Ad")
  SAUT STOCKE_ERRONE
FINSI

#=========test de presence de l'un de ces tags T4t9.1 et T4t9.2  en exclusion mutuelle
SI (i_valid_field_n(g_iartin, $Tpgwcdr::PdpiPBinV4A) && i_valid_field_n(g_iartin, $Tpgwcdr::PdpiPBinV6A))
ALORS
  trace("Tpgwcdr : presence de T4t9.1 et T4t9.2 -->errone")
  ERREUR_840008399 = ERR_CROISE_840008399
  code_rejet_840008399 = MODULE_840008399 + ERREUR_840008399 + EFFICACE_840008399
  erreur_840008399=i_PlvMessEmettre(7014, 2, g_iartin, "", 3, code_rejet_840008399,"PdpiPBinV4A", "PdpiPBinV6A")
  SAUT STOCKE_ERRONE
FINSI

# Variable fonctionnelle : TypeRAT
TypeRAT_840008399 = -1
SI ratType_present_840008399
ALORS
  TypeRAT_840008399 = rattype_840008399
FINSI

# Variable fonctionnelle : b_VOLUME_NUL
b_VOLUME_NUL_840008399 = 1
SI (i_valid_field_n( g_iartin, $Tpgwcdr::lsdDataVolUp))
ALORS
  SI (i_get_art_field(g_iartin,$Tpgwcdr::lsdDataVolUp) > 0)
  ALORS
    b_VOLUME_NUL_840008399 = 0
  FINSI
FINSI
SI b_VOLUME_NUL_840008399
ALORS
  SI (i_valid_field_n( g_iartin, $Tpgwcdr::lsdDataVolDo))
  ALORS
    SI i_get_art_field(g_iartin,$Tpgwcdr::lsdDataVolDo) > 0
    ALORS
      b_VOLUME_NUL_840008399 = 0
    FINSI
  FINSI
FINSI

#QC1249, 1250, 1276
b_ACTIV_TrouNoir_840008399 = -1

i_strcpy(pt_buffer_840008399, i_get_tab_field("VariableContexte", date_cra_840008399, "FILT_PGW_NUL"))
SI (i_strcmp(pt_buffer_840008399, g_inull) == 0)
ALORS
  SAUT FIN_FILTRE_VOLNUL
SINON
  SI (i_strcmp(pt_buffer_840008399, "1") == 0)
  ALORS
    b_ACTIV_TrouNoir_840008399 = 1
  SINON
    SI (i_strcmp(pt_buffer_840008399, "0") == 0)
    ALORS
      b_ACTIV_TrouNoir_840008399 = 0
    SINON
      SAUT FIN_FILTRE_VOLNUL
    FINSI
  FINSI
FINSI


SI (b_VOLUME_NUL_840008399 && b_ACTIV_TrouNoir_840008399 != -1)
ALORS
  SI (b_ACTIV_TrouNoir_840008399 == 1)
  ALORS
    trace("Tpgwcdr_Tr : b_VOLUME_NUL et b_ACTIV_TrouNoir eliminee TROU NOIR")
    # Incremenation des compteurs (1534 et 1535) pour les CRA elimines non stockes
    #X = g_ieec
    #Y = 0
    #Z = 0
    #CPT_1534=1534
    #CPT_1535=1535
    erreur_840008399=i_incr_cpt(CPT_1534_840008399, g_ieec, 0, 0, date_cra_840008399, INCREMENT_840008399)
    erreur_840008399=i_incr_cpt(CPT_1535_840008399, g_ieec, 0, 0, i_DHgetLocalTime(4, 7, i_cur_time()), INCREMENT_840008399)
    RETOUR TRAIT_OK

  SINON
    trace("Tpgwcdr_Tr : b_VOLUME_NUL eliminee DIVERS")
    erreur_840008399 = i_stocke_art(g_iartin, 0, PT_DIVERS, 0)
    RETOUR TRAIT_OK
  FINSI
FINSI

POINT FIN_FILTRE_VOLNUL
#/QC1249 et 1250 1276

###############################
# increment du compteur
###############################

#X = 0x90
#Y = g_ieec
#Z = 0
#CPT_3G=1504
#CPT_4G=1533

# Incremenation du compteur (1501) pour tous les CRA non-elimine par les tests ci-dessus
erreur_840008399=i_incr_cpt(CPT_1501_840008399, 0x90, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), INCREMENT_840008399)

# Incremenation du compteur 3G (1504) pour les CRA ayant un TypeRAT = 0x01
# G3R9 lot1 Incrementation 3G (1504) pour les CRA ayant un typeRAT = 0x03
SI (TypeRAT_840008399 == 0x01 || TypeRAT_840008399 == 0x03)
ALORS
  erreur_840008399=i_incr_cpt(CPT_3G_840008399, 0x90, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), INCREMENT_840008399)
FINSI

# Incremenation du compteur 4G (1533) pour les CRA ayant un TypeRAT = 0x06
SI (TypeRAT_840008399 == 0x06)
ALORS
  erreur_840008399=i_incr_cpt(CPT_4G_840008399, 0x90, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), INCREMENT_840008399)
FINSI


trace("[Trait] TPGWCDR : Fin traitement OK ")
erreur_840008399 = i_stocke_art(g_iartin, 0, PT_OK, 0)
RETOUR TRAIT_OK


#
# Fin de traitement : Stockage en Errone
#
POINT STOCKE_ERRONE
trace( "Tpgwcdr : Stockage de l'article en ERRONE" )
erreur_840008399 = i_make_art_rej(g_iartin, g_iartout, code_rejet_840008399)
erreur_840008399 = i_stocke_art(g_iartout,  0, PT_ERRONE, 0)
RETOUR TRAIT_OK

#--------------- Fin  Tpgwcdr_tr.src --------------------
