FVERS = 2
REFOBJET : ID = 800009803 ; ID_INIT = 650005345 ; NOM = Tpcv7dc ; VERSION = P25 ; DATE = 13/08/12-13:16:49 ( 1344863809 ) ; CAT = 7 ; ETAT = 0 ; NB_FILS =0 ; ID_FILS = 
ID_EST = 800000466
COMMENT = "G2R0Cl : MAJ des codes erreurs+suppression des ANOi"
CREATEUR = teguire
# DEBUT_CORPS
PCODE_PERE=
####################################################################
#
#                   CE NODES : SERVICE PCV
#                     article NODESTpcv7dc
#
# En entree: 
#       Article NODESTpcv7dc 
#
# En sortie:
#       Article OK:
#               Article  NODESTpcv7dc 
#
#       Article ERRONE:
#               Article NODESTpcv7dc 
#
#	Historique
#	DRE - 18/06/02 PCV V4.3 IMPREVISTO implicite :
#				nouvelle valeur du champ ETAP
#	RBE - 07/06/2004 - G2R0Cl : MAJ des codes erreurs
#	05/10/2011 RHE VerifPcode
#
############################################################################

############################################################################
#
#			          DEFINITIONS
#
############################################################################

#
# Constante liees au fichier artobj
#
DEFINITION      ic_T3g3         4
DEFINITION      ic_T3g4         10
DEFINITION      ic_STY_g3       6
DEFINITION      ic_STY_g4       12
DEFINITION      ic_SCT_g3       7
DEFINITION      ic_SCT_g4       13
DEFINITION      ic_INEF_g3      9
DEFINITION      ic_INEF_g4      15
DEFINITION      ic_REF_g4       16
DEFINITION      ic_T3cap1       33
DEFINITION      ic_CAX_cap1     35
DEFINITION      ic_TAP_cap1     36
# VerifPcode - RHE # DEFINITION      ic_DUR_cap1     37
DEFINITION      ic_TAX_cap1     38
DEFINITION      ic_T3cap2       39
DEFINITION      ic_CAX_cap2     41
DEFINITION      ic_TAP_cap2     42
# VerifPcode - RHE # DEFINITION      ic_DUR_cap2     43
DEFINITION      ic_TAX_cap2     44
# VerifPcode - RHE # DEFINITION      ic_T3etap       61
DEFINITION      ic_ETAP_etap    63


#---------------------------------------------------------------------------
# GLOBAL
#---------------------------------------------------------------------------
REGISTRE ENTIER code_rejet
REGISTRE ENTIER erreur

#---------------------------------------------------------------------------
# CHAMPS DE L'ARTICLE
#---------------------------------------------------------------------------
REGISTRE ENTIER CAX
REGISTRE ENTIER SCT
REGISTRE ENTIER STY
REGISTRE ENTIER INEF
REGISTRE ENTIER REF
REGISTRE ENTIER TAP
# VerifPcode - RHE # REGISTRE ENTIER DUR
REGISTRE ENTIER TAX
REGISTRE ENTIER ETAP
REGISTRE ENTIER T3g3
REGISTRE ENTIER T3g4
REGISTRE ENTIER T3cap1
REGISTRE ENTIER T3cap2
# VerifPcode - RHE # REGISTRE ENTIER T3etap
# VerifPcode - RHE # REGISTRE ENTIER T3cab

# gestion pour le stockage
REGISTRE ENTIER indice_date
REGISTRE ENTIER art_date
REGISTRE ENTIER type_gestion
REGISTRE ENTIER EFFICACE

############################################################################
# 
#				    CONTROLES
#
############################################################################


# trace( "Article NODESTpcv7dc - Service @llo CE Nodes")
type_gestion=0

# Initialisation de EFFICACE a inconnu
EFFICACE=2

#---------------------------------------------------------------------------
# TEST DE L'ARTICLE
#---------------------------------------------------------------------------
erreur = i_test_art( g_iartin)
SI erreur
ALORS
   code_rejet = 0x5070+EFFICACE
   erreur = i_PlvMessEmettre( 7550, 2, g_iartin, "", 1, code_rejet, 0, 0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x Erreur syntaxique"
   SAUT STOCKE_ERRONE
FINSI

#----------------------------------------------------------------------------
# TEST 408 et 409: de presence des champs obligatoires exclusifs T3g3 et T3g4
# On en profite pour recuperer la valeur des champs existants
#----------------------------------------------------------------------------

T3g3 = i_valid_field_n( g_iartin, ic_T3g3)
T3g4 = i_valid_field_n( g_iartin, ic_T3g4)

SI T3g3 > 0
ALORS
        SI T3g4 > 0
        ALORS
                code_rejet = 0x5070+EFFICACE
                erreur = i_PlvMessEmettre(7581,2,g_iartin,"",1,code_rejet,0,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. syntaxique (T3g3 et T3g4 presents)"
                SAUT STOCKE_ERRONE
        FINSI
#  *** recuperation des champs de G3 ***
        STY = i_get_art_field( g_iartin, ic_STY_g3)
        SCT = i_get_art_field( g_iartin, ic_SCT_g3)
	type_gestion=3
	indice_date = i_get_field_num( g_iartin,"DATE_g3")
	art_date = i_get_art_field (g_iartin, indice_date)
        INEF = i_get_art_field( g_iartin, ic_INEF_g3)
# test de duplication de l article afin de controler la validite du champ DATE)
	erreur = i_dup_art(g_iartin, "Tpcv7g3dc", g_iartout10)
	SI (erreur != 0)
        ALORS
                code_rejet = 0x5040+EFFICACE
                erreur = i_PlvMessEmettre( 7593, 2, g_iartin, "", 1, code_rejet, 0, 0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x Format de date incorrect"
                SAUT STOCKE_ERRONE
        FINSI
SINON
        SI T3g4 <= 0
        ALORS
                code_rejet = 0x5070+EFFICACE
                erreur = i_PlvMessEmettre(7582,2,g_iartin,"",1,code_rejet,0,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. syntaxique (T3g3 et T3g4 absents)"
                SAUT STOCKE_ERRONE
        FINSI
# *** recuperation des champs de G4***
        STY = i_get_art_field( g_iartin, ic_STY_g4)
        SCT = i_get_art_field( g_iartin, ic_SCT_g4)
	type_gestion=4
        indice_date = i_get_field_num( g_iartin,"DATE_g4")
        art_date = i_get_art_field (g_iartin, indice_date)
        INEF = i_get_art_field( g_iartin, ic_INEF_g4)
        REF = i_get_art_field( g_iartin, ic_REF_g4)
# test de duplication de l article afin de controler la validite du champ DATE)
        erreur = i_dup_art(g_iartin, "Tpcv7g4dc", g_iartout10)
        SI (erreur != 0)
        ALORS
                code_rejet = 0x5040+EFFICACE
                erreur = i_PlvMessEmettre( 7593, 2, g_iartin, "", 1, code_rejet, 0, 0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x Format de date incorrect"
                SAUT STOCKE_ERRONE
        FINSI
FINSI

#----------------------------------------------------------------------------
# TEST 417 : Recuperation des valeurs des champs DUR et ETAP
#----------------------------------------------------------------------------
ETAP = i_get_art_field( g_iartin, ic_ETAP_etap)
SI ETAP < 0
ALORS
   code_rejet = 0x5070+EFFICACE
   erreur = i_PlvMessEmettre(7591,2,g_iartin,"",1,code_rejet,0,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. syntaxique (pas de champ ETAP)"
   SAUT STOCKE_ERRONE
FINSI

#----------------------------------------------------------------------------
# TEST 413 et 411: presence des champs optionnels exclusifs T3cap1 et T3cap2
# On en profite pour recuperer la valeur des champs existants
#----------------------------------------------------------------------------

T3cap1 = i_valid_field_n( g_iartin, ic_T3cap1)
T3cap2 = i_valid_field_n( g_iartin, ic_T3cap2)

SI T3cap1 > 0
ALORS
# trace("T3cap1 present")
   SI T3cap2 > 0
   ALORS
# ce cas n'est pas normal car ces 2 champs ne peuvent etre present en meme temps.
# trace("T3cap2 present")
      code_rejet = 0x5070+EFFICACE
      erreur = i_PlvMessEmettre(7578,2,g_iartin,"",1,code_rejet,0,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. syntaxique (T3cap1 et T3cap2 presents)"
      SAUT STOCKE_ERRONE
   FINSI

#  *** recuperation des champs de CAP1 ***
#   trace("T3cap2 absent")
   CAX = i_get_art_field( g_iartin, ic_CAX_cap1)
   TAP = i_get_art_field( g_iartin, ic_TAP_cap1)
   TAX = i_get_art_field( g_iartin, ic_TAX_cap1)
SINON
#   trace("T3cap1 absent")
   SI T3cap2 <= 0
   ALORS
# Ni CAP1 ni CAP2 ne sont present, ce n'est normalement pas possible
# trace("T3cap2 absent")
      code_rejet = 0x5070+EFFICACE
      erreur = i_PlvMessEmettre(7592,2,g_iartin,"",1,code_rejet,0,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. syntaxique (T3cap1 et T3cap2 absents)"
      SAUT STOCKE_ERRONE
   FINSI
# *** recuperation des champs de CAP2***
# trace("T3cap2 present")
   CAX = i_get_art_field( g_iartin, ic_CAX_cap2)
   TAP = i_get_art_field( g_iartin, ic_TAP_cap2)
   TAX = i_get_art_field( g_iartin, ic_TAX_cap2)
FINSI

#---------------------------------------------------------------------------
# DETERMINATION DES ARTICLES INEFFICACES
# Bit B du champ TAP : 0 : efficace, 1: inefficace
#----------------------------------------------------------------------------
SI ((TAP & 0x40) == 0x40)
ALORS
   trace( "Article inefficace -> Stockage en inefficace")
   EFFICACE = 0
SINON
   EFFICACE = 1
FINSI


#----------------------------------------------------------------------------
# TEST 302 : on verifie que le champ CAX est egale a 0x01
#----------------------------------------------------------------------------
SI (CAX != 0x01)
ALORS
   code_rejet = 0x5040+EFFICACE
   erreur = i_PlvMessEmettre(7553,2,g_iartin,"",2,code_rejet,CAX,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. semantique (CAX = 0x%02x inconnue)"
   SAUT STOCKE_ERRONE
FINSI

#----------------------------------------------------------------------------
# TEST 307 : on verifie que le champ TAP est egale a 0x00 ou 0x40
#----------------------------------------------------------------------------
#SI ((TAP != 0x00) && (TAP != 0x40))
#ALORS
#   code_rejet = 0x5040+EFFICACE
#   erreur = i_PlvMessEmettre(7558,2,g_iartin,"",2,code_rejet,TAP,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. semantique (TAP = 0x%02x incoherent)"
#   SAUT STOCKE_ERRONE
#FINSI

#----------------------------------------------------------------------------
# TEST 416 : on verifie que le champ TAX est egale a 0x01
#----------------------------------------------------------------------------
SI (TAX != 0x0001)
ALORS
   code_rejet = 0x5040+EFFICACE
   erreur = i_PlvMessEmettre(7585,2,g_iartin,"",2,code_rejet,TAX,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. semantique (TAX = 0x%02x inconnue)"
   SAUT STOCKE_ERRONE
FINSI

#----------------------------------------------------------------------------
# TEST 417 : on verifie que le champ ETAP est egal a 0x0E ou 0x0F ou 0x10 ou 0x11
#   (Ajout DRE 18/06/02 IMPREVISTO implicite)
#     ou 0xBC ou 0xC0 ou 0xC1 ou 0xC2 ou 0xC3 ou 0xC4 ou 0xC5 ou 0xBD ou 0xBF
#----------------------------------------------------------------------------
SI ((ETAP != 0x0E) && (ETAP != 0x0F) && (ETAP != 0x10) && (ETAP != 0x11) && (ETAP != 0xBC) && (ETAP != 0xC0) && (ETAP != 0xC1) && (ETAP != 0xC2) && (ETAP != 0xC3) && (ETAP != 0xC4) && (ETAP != 0xC5) && (ETAP != 0xBD) && (ETAP != 0xBE) && (ETAP != 0xBF))
ALORS
   code_rejet = 0x5040+EFFICACE
   erreur = i_PlvMessEmettre(7588,2,g_iartin,"",2,code_rejet,ETAP,0)
# DEST_JNL | DEST_TEEC | DEST_BASE,"DC VN7: %04x- Err. semantique (ETAP = 0x%02x incorrect)"
   SAUT STOCKE_ERRONE
FINSI

############################################################################
#
#                               STOCKAGE
#
############################################################################

#---------------------------------------------------------------------------
# STOCKAGE EN OK
#----------------------------------------------------------------------------

#   Duplication de l'article
erreur = i_dup_art_id(g_iartin, g_iartout)

SI type_gestion == 3
ALORS
	erreur = i_clever_dup_art(g_iartout, "Tpcv7g3dc", g_iartout4)
#	erreur = i_fdump_art(g_iartout4)
	erreur = i_set_art_date(g_iartout4, art_date)
#	erreur = i_fdump_art(g_iartout4)
SINON
        erreur = i_clever_dup_art(g_iartout, "Tpcv7g4dc", g_iartout4)
#	erreur = i_fdump_art(g_iartout4)
	erreur = i_set_art_date(g_iartout4, art_date)
        erreur = i_set_art_field(g_iartout4, ic_STY_g3, STY)
        erreur = i_set_art_field(g_iartout4, ic_SCT_g3, SCT)
        erreur = i_set_art_field(g_iartout4, ic_INEF_g3, INEF)
#	erreur = i_fdump_art(g_iartout4)
FINSI

erreur = i_stocke_art(g_iartout4,0,PT_OK,0)

# trace("Fin traitement Article NODESTpcv7dc Nodes")
RETOUR TRAIT_OK


#---------------------------------------------------------------------------
# STOCKAGE EN ERRONE
#----------------------------------------------------------------------------
POINT STOCKE_ERRONE

# trace("Stockage de l'article en ERRONE")

erreur = i_make_art_rej( g_iartin, g_iartout, code_rejet)
erreur = i_stocke_art( g_iartout,0,PT_ERRONE,0)

# trace("Fin traitement Article NODESTpcv7dc Nodes")
RETOUR TRAIT_OK

############################################################################
#
#                               FIN
#
############################################################################


# FIN_CORPS
