DEFINITION INCREMENT_840008400 1
DEFINITION CPT_1501_840008400 1501
DEFINITION CPT_3G_840008400 1504
DEFINITION CPT_4G_840008400 1533
DEFINITION CPT_1534_840008400 1534
DEFINITION CPT_1535_840008400 1535
DEFINITION MODULE_840008400 0x5000
DEFINITION ERR_SEM_840008400 0x040
DEFINITION ERR_DATE_840008400 0x060
DEFINITION ERR_SYNTAX_840008400 0x070
DEFINITION ERR_CROISE_840008400 0x0F0
DEFINITION EFFICACE_840008400 1
REGISTRE ENTIER ERREUR_840008400
REGISTRE ENTIER code_rejet_840008400
REGISTRE ENTIER date_cra_840008400
REGISTRE ENTIER erreur_840008400
REGISTRE ENTIER rattype_840008400
REGISTRE ENTIER b_VOLUME_NUL_840008400
REGISTRE ENTIER b_ACTIV_TrouNoir_840008400
REGISTRE ENTIER res_840008400
REGISTRE ENTIER flag_AbsRatType_840008400
REGISTRE POINTEUR pt_buffer_840008400
####################################################################
# Tsgwcdr_tr.src      Appel   SGWCDR
####################################################################
#       article CRA SGWCDR ASN1 => type DPV TLV = 0x90 (T1=0x62 T2=0x02)
#
# 02/07/12 - JLG - G3R7 lot3 : Creation
# 25/07/12 - JLG - QC1062 ajout controle croise
# 03/08/12 - PKH - QC1079 prise en compte de ratType pour incrementer cpt et condition pour aller vers les elimines
# 22/08/20 - JLG - verif des pointeurs
# 19/10/12 - PKH - QC1107 si ratType == 6 ou ratType absent incremente le compteur 4G
# 10/09/13 - JLG - G3R10 lot4 correction capacitaire : QC1249, 1250, 1276
####################################################################







# Initialisations
pt_buffer_840008400 = "pt_buffer77"
i_strcpy(pt_buffer_840008400,"")
rattype_840008400 = 0
flag_AbsRatType_840008400 = 0
trace("<<<<<< Tsgwcdr : Debut TRAITEMENT")

date_cra_840008400 = i_get_art_field(g_iartin,$Tsgwcdr::recOpenTime)

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

SI (date_cra_840008400 == -1)
ALORS
  trace1("Tsgwcdr_Tr : champ date, recOpenTime incorrect = 0x%x", date_cra_840008400)
  ERREUR_840008400 = ERR_SEM_840008400
  code_rejet_840008400 = MODULE_840008400 + ERREUR_840008400 + EFFICACE_840008400
  erreur_840008400 = i_PlvMessEmettre(7008,2,g_iartin,"",2, code_rejet_840008400, date_cra_840008400, 0)
  SAUT STOCKE_ERRONE
FINSI


# test recordType, valeur attendue 0x46
res_840008400 = i_get_art_field(g_iartin,$Tsgwcdr::recordType)
SI (res_840008400 != 0x54)
ALORS
  trace1("Tsgwcdr_Tr : champ recordType != 0x54 car = 0x%x", res_840008400)
  ERREUR_840008400 = ERR_SEM_840008400
  code_rejet_840008400 = MODULE_840008400 + ERREUR_840008400 + EFFICACE_840008400
  erreur_840008400 = i_PlvMessEmettre(7006, 2, g_iartin, "",2, code_rejet_840008400, res_840008400, 0)
  SAUT STOCKE_ERRONE
FINSI
#QC1079
#1) Elimination des CRAs EGCDR
SI (i_valid_field_n( g_iartin, $Tsgwcdr::ratType))
ALORS
  rattype_840008400 = i_get_art_field(g_iartin, $Tsgwcdr::ratType)
  #trace1("<<__LINE__>>-------------------rattype=%d-------------------",rattype)
  SI (rattype_840008400 == 0x03)
ALORS
    trace("Tsgwcdr_Tr : champ rattype = 0x03 eliminee DIVERS")
      erreur_840008400 = i_stocke_art(g_iartin, 0, PT_DIVERS, 0)
      RETOUR TRAIT_OK
  FINSI
SINON
      flag_AbsRatType_840008400 = 1
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, $Tsgwcdr::sGWiPBinV4Ad) && i_valid_field_n(g_iartin, $Tsgwcdr::sGWiPBinV6Ad))
ALORS
  trace("Tsgwcdr : presence de T4t4.1 et T4t4.2 -->errone")
  ERREUR_840008400 = ERR_CROISE_840008400
  code_rejet_840008400 = MODULE_840008400 + ERREUR_840008400 + EFFICACE_840008400
  erreur_840008400=i_PlvMessEmettre(7005, 2, g_iartin, "", 3, code_rejet_840008400,"sGWiPBinV4Ad", "sGWiPBinV6Ad")
  SAUT STOCKE_ERRONE
FINSI

#=========test de presence de l'un de ces tags T4t21.1 et T4t21.2  en exclusion mutuelle 
SI (i_valid_field_n(g_iartin, $Tsgwcdr::PgWiPBinV4Ad) && i_valid_field_n(g_iartin, $Tsgwcdr::PgWiPBinV6Ad))
ALORS
  trace("Tsgwcdr : presence de T4t21.1 et T4t21.2 -->errone")
  ERREUR_840008400 = ERR_CROISE_840008400
  code_rejet_840008400 = MODULE_840008400 + ERREUR_840008400 + EFFICACE_840008400
  erreur_840008400=i_PlvMessEmettre(7005, 2, g_iartin, "", 3, code_rejet_840008400,"PgWiPBinV4Ad", "PgWiPBinV6Ad")
  SAUT STOCKE_ERRONE
FINSI

# Variables fonctionnelles : b_VOLUME_NUL
b_VOLUME_NUL_840008400 = 1
SI (i_valid_field_n( g_iartin, $Tsgwcdr::DataVolUp))
ALORS
  SI (i_get_art_field(g_iartin,$Tsgwcdr::DataVolUp) > 0)
ALORS
    b_VOLUME_NUL_840008400 = 0
  FINSI
FINSI
SI b_VOLUME_NUL_840008400
ALORS
  SI (i_valid_field_n( g_iartin, $Tsgwcdr::DataVolDown))
ALORS
    SI i_get_art_field(g_iartin,$Tsgwcdr::DataVolDown) > 0
  ALORS
      b_VOLUME_NUL_840008400 = 0
    FINSI
  FINSI
FINSI

#QC1249, 1250, 1276
b_ACTIV_TrouNoir_840008400 = -1

i_strcpy(pt_buffer_840008400, i_get_tab_field("VariableContexte", date_cra_840008400, "FILT_SGW_NUL"))
SI (i_strcmp(pt_buffer_840008400, g_inull) == 0)
ALORS
  SAUT FIN_FILTRE_VOLNUL
SINON
  SI (i_strcmp(pt_buffer_840008400, "1") == 0)
  ALORS
    b_ACTIV_TrouNoir_840008400 = 1
  SINON
    SI (i_strcmp(pt_buffer_840008400, "0") == 0)
    ALORS
      b_ACTIV_TrouNoir_840008400 = 0
    SINON
      SAUT FIN_FILTRE_VOLNUL
    FINSI
  FINSI
FINSI

#2) Elimination des CRAs EGCDR
SI (b_VOLUME_NUL_840008400 && b_ACTIV_TrouNoir_840008400 != -1)
ALORS
  SI (b_ACTIV_TrouNoir_840008400 == 1)
  ALORS
    trace("Tsgwcdr_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_840008400=i_incr_cpt(CPT_1534_840008400, g_ieec, 0, 0, date_cra_840008400, INCREMENT_840008400)
    erreur_840008400=i_incr_cpt(CPT_1535_840008400, g_ieec, 0, 0, i_DHgetLocalTime(4, 7, i_cur_time()), INCREMENT_840008400)
    RETOUR TRAIT_OK
      
  SINON
    trace("Tsgwcdr_Tr : b_VOLUME_NUL eliminee DIVERS")
    erreur_840008400 = 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

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

# Incremenation du compteur 3G (1504) pour les CRA ayant un rattype = 0x01
SI (rattype_840008400 == 0x01)
ALORS
        erreur_840008400=i_incr_cpt(CPT_3G_840008400, 0x90, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), INCREMENT_840008400)
FINSI

# Incremenation du compteur 4G

SI (rattype_840008400 == 0x06 || flag_AbsRatType_840008400 == 1)
ALORS
        erreur_840008400=i_incr_cpt(CPT_4G_840008400, 0x90, g_ieec, 0, i_DHgetLocalTime(4, 7, i_date_audit()), INCREMENT_840008400)
FINSI

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

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

#--------------- Fin  Tsgwcdr_tr.src --------------------
