DEFINITION ERR_SYNTAX_840008098 0x5040
DEFINITION ERR_CROISE_840008098 0x50F0
DEFINITION INCREMENT_840008098 1
DEFINITION CPT_840008098 1501
DEFINITION CPT3G_840008098 1504
DEFINITION NUMTAB_840008098 4
DEFINITION NUMZONE_840008098 7
REGISTRE ENTIER X_840008098
REGISTRE ENTIER Y_840008098
REGISTRE ENTIER Z_840008098
REGISTRE ENTIER cpt_840008098
REGISTRE ENTIER date_audit_840008098
REGISTRE ENTIER erreur_840008098
REGISTRE ENTIER code_rejet_840008098
REGISTRE ENTIER RecordType_840008098
REGISTRE ENTIER PDPType_840008098
REGISTRE ENTIER Coverage_840008098
REGISTRE ENTIER DebutUsage_840008098
REGISTRE ENTIER EFFICACE_840008098
REGISTRE ENTIER date_plat_840008098
REGISTRE POINTEUR pt_CHAMP_ERRONE_840008098
################################################################
# Traitement : Tgourou.src
# DECI/PSA  20/08/09  Creation
# 27/10/09 DECI : QC 485 test sur le debut du champ USAGE realise seulement si RecordType vaut 0x11 (+ MAJ)
# 10/12/09 DECI : QC 512 : pb alimentation compteur 1501
# 14/01/11 - BEA - G3R1 lot4 Verification/Correction des variables (constantes, entiers, pointeurs)
# 21/08/13 -JLG- G3R4 lot4 envoi dans les elimines si champ coverage absent
################################################################












# Initialisations
EFFICACE_840008098 = 2

# INITIALISATION POINTEUR
pt_CHAMP_ERRONE_840008098 = "CHAMP_ERRONE012345678901234567890123456789012345678901234567890123456789"


########################
# Controles unitaires
########################

# RecordType : valeur 0x11 ou 0x40 
RecordType_840008098 = i_get_art_field(g_iartin, $Tgourou::RecordType)
SI (RecordType_840008098 != 0x11) && (RecordType_840008098 != 0x40)
ALORS
    i_strcpy(pt_CHAMP_ERRONE_840008098, "RecordType")
    code_rejet_840008098 = ERR_SYNTAX_840008098 + EFFICACE_840008098
    erreur_840008098 = i_PlvMessEmettre(6075,2,g_iartin,"",3,code_rejet_840008098, RecordType_840008098, pt_CHAMP_ERRONE_840008098)
    SAUT STOCKE_ERRONE
FINSI 

# PDPType  : valeur 0x00 ou 0x01 ou 0x02
PDPType_840008098 = i_get_art_field(g_iartin, $Tgourou::PDPType)
SI (PDPType_840008098 != 0x00) && (PDPType_840008098 != 0x01) && (PDPType_840008098 != 0x02)
ALORS
    i_strcpy(pt_CHAMP_ERRONE_840008098, "PDPType")
    code_rejet_840008098 = ERR_SYNTAX_840008098 + EFFICACE_840008098
    erreur_840008098 = i_PlvMessEmettre(6075,2,g_iartin,"",3,code_rejet_840008098, PDPType_840008098, pt_CHAMP_ERRONE_840008098)
    SAUT STOCKE_ERRONE
FINSI 

SI (!i_valid_field_n(g_iartin, $Tgourou::Coverage))
ALORS
    #envoi dans les elimines divers
    SAUT STOCKE_DIV
FINSI


########################
# Controles croises
########################

# Usage obligatoire et commence par 0000 si RecordType vaut 0x11
SI (RecordType_840008098 == 0x11)
ALORS
  SI i_valid_field_n(g_iartin, $Tgourou::Usage) == 0
  ALORS
    i_strcpy(pt_CHAMP_ERRONE_840008098, "RecordType et Usage")
    code_rejet_840008098 = ERR_CROISE_840008098 + EFFICACE_840008098
    erreur_840008098 = i_PlvMessEmettre(6076,2,g_iartin,"",2,code_rejet_840008098, pt_CHAMP_ERRONE_840008098, 0)
    SAUT STOCKE_ERRONE
  SINON
# QC485
# Usage : 2 premiers octets ne doivent pas etre a 0000
    DebutUsage_840008098 = (g_iartin.Usage[0] * 0x100) + g_iartin.Usage[1]
    SI (DebutUsage_840008098 != 0x00)
    ALORS
      code_rejet_840008098 = ERR_SYNTAX_840008098 + EFFICACE_840008098
      erreur_840008098 = i_PlvMessEmettre(6077,2,g_iartin,"",2,code_rejet_840008098,DebutUsage_840008098,0)
      SAUT STOCKE_ERRONE
    FINSI
  FINSI
FINSI 

# ServiceIPVolumeUsage obligatoire si RecordType vaut 0x40
SI (RecordType_840008098 == 0x40)
ALORS
  SI i_valid_field_n(g_iartin, $Tgourou::ServIPVolUsage) == 0
  ALORS
    i_strcpy(pt_CHAMP_ERRONE_840008098, "RecordType et ServiceIPVolumeUsage")
    code_rejet_840008098 = ERR_CROISE_840008098 + EFFICACE_840008098
    erreur_840008098 = i_PlvMessEmettre(6076,2,g_iartin,"",2,code_rejet_840008098, pt_CHAMP_ERRONE_840008098, 0)
    SAUT STOCKE_ERRONE
  FINSI
FINSI 

# Cause obligatoire si RecordType vaut 0x40
SI (RecordType_840008098 == 0x40)
ALORS
  SI i_valid_field_n(g_iartin, $Tgourou::Cause) == 0
  ALORS
    i_strcpy(pt_CHAMP_ERRONE_840008098, "RecordType et Cause")
    code_rejet_840008098 = ERR_CROISE_840008098 + EFFICACE_840008098
    erreur_840008098 = i_PlvMessEmettre(6076,2,g_iartin,"",2,code_rejet_840008098, pt_CHAMP_ERRONE_840008098, 0)
    SAUT STOCKE_ERRONE
  FINSI
FINSI 
  

########################################################
# Cpt applicatifs
########################################################
date_audit_840008098=i_date_audit()
date_plat_840008098 = i_DHgetLocalTime(NUMTAB_840008098, NUMZONE_840008098, date_audit_840008098)
Y_840008098=g_ieec
X_840008098=0x90
Z_840008098=0

# Nombre de CRA/Type/EEC/Jour
cpt_840008098 = CPT_840008098
erreur_840008098 = i_incr_cpt(cpt_840008098,X_840008098,Y_840008098,Z_840008098,date_plat_840008098,INCREMENT_840008098)

# CRA 3G
# RecordType vaut 0x11 ou 0x40 (non teste car toujours vrai si on arrive ici : cf controle unitaire
# Coverage vaut 0x01
Coverage_840008098 = i_get_art_field(g_iartin, $Tgourou::Coverage)
SI (Coverage_840008098 == 0x01)
ALORS
  cpt_840008098 = CPT3G_840008098
  erreur_840008098 = i_incr_cpt(cpt_840008098,X_840008098,Y_840008098,Z_840008098,date_plat_840008098,INCREMENT_840008098)
FINSI

erreur_840008098 = i_stocke_art(g_iartin, 0, PT_OK, 0)


RETOUR TRAIT_OK

########################################################
# Stockage en Elimine Divers
########################################################
POINT STOCKE_DIV
trace( "[Tgourou] Pcode de traitement   Stockage en DIVERS" )
erreur_840008098 = i_stocke_art( g_iartin, 0, PT_DIVERS, 0 )
RETOUR TRAIT_OK


#####################################################################
# POINT de branchement : stockage PT_ERRONE
#        correspond au cas d'erreur syntaxiques et semantiques
#####################################################################
POINT STOCKE_ERRONE

trace("#### Tgourou, Pcode de traitement Stockage en errone ####")
erreur_840008098 = i_make_art_rej(g_iartin, g_iartout, code_rejet_840008098)
erreur_840008098 = i_stocke_art(g_iartout, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

#-------------------------------- Fin Tgourou_trt.src ------------------------------
