DEFINITION TailleSGTQS_800009835 6
DEFINITION ic_T3trans1_800009835 19
DEFINITION ic_T3trans2_800009835 38
DEFINITION ic_T3trans3_800009835 58
DEFINITION ic_T3trans4_800009835 78
DEFINITION ic_T3trans5_800009835 92
DEFINITION ic_TYPTAX_800009835 7
DEFINITION ic_IDRS_800009835 10      
DEFINITION ic_IDUS_800009835 12
DEFINITION ic_IDAC_800009835 13
DEFINITION ic_IDPCS_800009835 17
DEFINITION ic_ILA_800009835 113
DEFINITION ic_DUREE_800009835 116
DEFINITION TART_DVX1_800009835 "TvxNdcs"
DEFINITION TART_DVX2_800009835 "TvxNdcs"
DEFINITION TART_DVX3_800009835 "TvxNdcs"
DEFINITION TART_DKT1_800009835 "TvxNdcs"
DEFINITION TART_DKT2_800009835 "TvxNdcs"
DEFINITION ERR_SYNTAX_800009835 0x5071
DEFINITION ERR_SEMANT_800009835 0x5041
REGISTRE ENTIER type_dom_800009835
REGISTRE ENTIER erreur_800009835
REGISTRE ENTIER code_erreur_800009835
REGISTRE ENTIER nb_trans_800009835
REGISTRE ENTIER chp_typtax_800009835
REGISTRE ENTIER chp_idrs_800009835
REGISTRE ENTIER chp_accdde_800009835
REGISTRE ENTIER chp_rtax_800009835
REGISTRE ENTIER ic_T3courant_800009835
REGISTRE ENTIER ic_NUMNDE_800009835
REGISTRE ENTIER duree_800009835
REGISTRE ENTIER cpt_anomalie_800009835
REGISTRE ENTIER tailleReelle_800009835
REGISTRE ENTIER efficace_800009835
REGISTRE ENTIER nfact_800009835
REGISTRE ENTIER idpcsh_800009835
REGISTRE POINTEUR pt_type_art_800009835
REGISTRE POINTEUR pt_buf_SGTQS_800009835
####################################################################
#       article DC videotex  Nouveau format
#
#       MJA 10/04/98    creation
#
#       En entree : TvxNdce Dvxdce
#       En sortie :
#             OK  : TvxNdcs Dvxnfact apres ajout ILAVN4 
#             ERR : TvxNdce Dvxdce
#             Pas de recyclage (ajout TILA automatique)
#
#  DEX/IMC/CEB 08/03/00	V7.15/4 : FE445 : Creation
# modifie par Nicole.S le 24/05/02 ajout dump alarmes
# 24/05/2004	RBE	G2R0Cl: MAJ des codes erreurs
# 11/10/2011 RHE VerifPcode
####################################################################




# domaine 0 : video, 1 : kiosque


#####################################################################
# Test article
#####################################################################

# codes de rejet

#####################################################################
# Initialisation des variables locales
#####################################################################

nb_trans_800009835 = 0
duree_800009835 = 0
# VerifPcode - RHE # taxe = 0
cpt_anomalie_800009835=0
# 2 pour inconnu - 1 pour efficace et 0 pour inefficace
efficace_800009835 = 2
nfact_800009835=0

pt_type_art_800009835 = "1234567890123456789012345678901234567890"
pt_buf_SGTQS_800009835 = "0000000000111111111111111111111111111111"

# VerifPcode - RHE # 
i_strcpy(pt_type_art_800009835,"")
i_strcpy(pt_buf_SGTQS_800009835,"")

# Test si plusieur T3 de transaction dans l'article existent

SI i_valid_field_n(g_iartin,ic_T3trans1_800009835)
ALORS
        # VerifPcode - RHE # pt_type_art = TART_DVX1
        i_strcpy(pt_type_art_800009835,TART_DVX1_800009835)
        nb_trans_800009835 = nb_trans_800009835 + 1
        ic_T3courant_800009835 = ic_T3trans1_800009835
        type_dom_800009835 = 0
FINSI

SI i_valid_field_n(g_iartin,ic_T3trans2_800009835)
ALORS
        # VerifPcode - RHE # pt_type_art = TART_DVX2
        i_strcpy(pt_type_art_800009835,TART_DVX2_800009835)
        nb_trans_800009835 = nb_trans_800009835 + 1
        ic_T3courant_800009835 = ic_T3trans2_800009835
        type_dom_800009835 = 0
FINSI

SI i_valid_field_n(g_iartin,ic_T3trans3_800009835)
ALORS
        # VerifPcode - RHE # pt_type_art = TART_DVX3
        i_strcpy(pt_type_art_800009835,TART_DVX3_800009835)
        nb_trans_800009835 = nb_trans_800009835 + 1
        ic_T3courant_800009835 = ic_T3trans3_800009835
        type_dom_800009835 = 0
FINSI

SI i_valid_field_n(g_iartin,ic_T3trans4_800009835)
ALORS
        # VerifPcode - RHE # pt_type_art = TART_DKT1
        i_strcpy(pt_type_art_800009835,TART_DKT1_800009835)
        nb_trans_800009835 = nb_trans_800009835 + 1
        ic_T3courant_800009835 = ic_T3trans4_800009835
        type_dom_800009835 = 1
FINSI

SI i_valid_field_n(g_iartin,ic_T3trans5_800009835)
ALORS
        # VerifPcode - RHE # pt_type_art = TART_DKT2
        i_strcpy(pt_type_art_800009835,TART_DKT2_800009835)
        nb_trans_800009835 = nb_trans_800009835 + 1
        ic_T3courant_800009835 = ic_T3trans5_800009835
        type_dom_800009835 = 1
FINSI

SI nb_trans_800009835 != 1
ALORS
# Nombre de T3 transaction errone
       	cpt_anomalie_800009835 = ANO2
	code_erreur_800009835 = ERR_SYNTAX_800009835 + efficace_800009835
	erreur_800009835 = i_PlvMessEmettre(7001,2,g_iartin,"",2,code_erreur_800009835,nb_trans_800009835,0)
        SAUT AJOUT_ILA
FINSI

#####################################################################
# Determination de efficacite
#####################################################################
chp_accdde_800009835 = i_get_art_field(g_iartin, ic_T3courant_800009835 + 3)

SI (chp_accdde_800009835 == 0xFF)
ALORS
#	Stockage en inefficace
	efficace_800009835 = 0
	SAUT AJOUT_ILA
FINSI

#####################################################################
# Controle syntaxique particulier
#####################################################################

chp_idrs_800009835 = i_get_art_field(g_iartin, ic_IDRS_800009835)

SI ( (chp_idrs_800009835 != 0x61) && (chp_idrs_800009835 != 0x63) && 
     (chp_idrs_800009835 != 0x64) && (chp_idrs_800009835 != 0x80) && 
     (ic_T3courant_800009835 != ic_T3trans3_800009835) )
ALORS
        erreur_800009835 =  i_test_field_ila_n( g_iartin, ic_IDAC_800009835, "LDvideotex" )
        SI erreur_800009835
        ALORS
                cpt_anomalie_800009835 = ANO1
                code_erreur_800009835 = ERR_SYNTAX_800009835 + efficace_800009835
                erreur_800009835 = i_PlvMessEmettre(7002,2,g_iartin,"",1,code_erreur_800009835,0,0)
                SAUT AJOUT_ILA
        FINSI
FINSI

# FE376
erreur_800009835 =  i_test_field_ila_n( g_iartin, ic_IDUS_800009835, "LDvideotex" )
SI (erreur_800009835 == -1)
ALORS  
#	le champ IDUS vaut F...F
	cpt_anomalie_800009835 = ANO4
SINON
	SI ((erreur_800009835 != 0) && (chp_idrs_800009835 != 0x63))
	ALORS
		cpt_anomalie_800009835 = ANO1
		code_erreur_800009835 = ERR_SYNTAX_800009835 + efficace_800009835
              	erreur_800009835 = i_PlvMessEmettre(7002,2,g_iartin,"",1,code_erreur_800009835,0,0)
		SAUT AJOUT_ILA	
	FINSI
FINSI

#####################################################################
# Controles semantiques sur le champ TYPTAX
#####################################################################

chp_typtax_800009835 = i_get_art_field(g_iartin, ic_TYPTAX_800009835)
SI ((chp_typtax_800009835 > 0x12)
        || ((chp_typtax_800009835 & 0x0F) > 0x02))
ALORS
        cpt_anomalie_800009835 = ANO1
        code_erreur_800009835 = ERR_SEMANT_800009835 + efficace_800009835
        erreur_800009835 = i_PlvMessEmettre(7003,2,g_iartin,"",2,code_erreur_800009835,chp_typtax_800009835,0)
        SAUT AJOUT_ILA
FINSI


#####################################################################
# Controles sur les champs T3_trans
#####################################################################   


idpcsh_800009835 = i_get_art_field(g_iartin, ic_IDPCS_800009835)
SI ( idpcsh_800009835 != 0xffffffff)
ALORS
#	trace("stockage en non facture")
	nfact_800009835 = 1
	SAUT AJOUT_ILA
FINSI


# En Videotex, ACCDDE = {00,01,02,03,60,65,6A}
SI (type_dom_800009835 == 0)
ALORS   
        SI ((chp_accdde_800009835 > 0x03) &&
                ((chp_accdde_800009835 != 0x60) &&
                 (chp_accdde_800009835 != 0x65) &&
                 (chp_accdde_800009835 != 0x6A)))
        ALORS
                cpt_anomalie_800009835 = ANO2
                code_erreur_800009835 = ERR_SEMANT_800009835 + efficace_800009835
                erreur_800009835 = i_PlvMessEmettre(7005,2,g_iartin,"",2,code_erreur_800009835,chp_accdde_800009835,0)
                SAUT AJOUT_ILA
        FINSI
SINON
# En Kiosque, ACCDDE = {66,67,68,69} 
        SI ((chp_accdde_800009835 < 0x66) || (chp_accdde_800009835 > 0x69))
        ALORS
                cpt_anomalie_800009835 = ANO2
                code_erreur_800009835 = ERR_SEMANT_800009835 + efficace_800009835
                erreur_800009835 = i_PlvMessEmettre(7006,2,g_iartin,"",2,code_erreur_800009835,chp_accdde_800009835,0)
                SAUT AJOUT_ILA
        FINSI
FINSI

# Tester NUMNDE par test_field_ila_n plutot que par test_art (compteur d'anomalies)
ic_NUMNDE_800009835 = ic_T3courant_800009835 + 7
erreur_800009835 = i_test_field_ila_n(g_iartin, ic_NUMNDE_800009835, 0)
SI erreur_800009835
ALORS
        cpt_anomalie_800009835 = ANO2
        code_erreur_800009835 = ERR_SEMANT_800009835 + efficace_800009835
        erreur_800009835 = i_PlvMessEmettre(7007,2,g_iartin,"",1,code_erreur_800009835,0,0)
        SAUT AJOUT_ILA
FINSI

chp_rtax_800009835 = i_get_art_field(g_iartin, ic_T3courant_800009835 + 8)
SI (((chp_rtax_800009835 & 0x00FF) > 0x0020)
        || ((chp_rtax_800009835 & 0xFF00) == 0xFF00))
ALORS
        cpt_anomalie_800009835 = ANO2
        code_erreur_800009835 = ERR_SEMANT_800009835 + efficace_800009835
        erreur_800009835 = i_PlvMessEmettre(7008,2,g_iartin,"",2,code_erreur_800009835,chp_rtax_800009835,0)
        SAUT AJOUT_ILA
FINSI

POINT	AJOUT_ILA
#####################################################################
# Ajout de l'Ila et de la Duree en fin d'article 
#####################################################################

# Attention, on ne peut effectuer rename que tant que Tvxdcs 
#  a la meme description artobj que Tvxdce (hormis ILAVN4)

erreur_800009835 = i_rename_art(g_iartin, pt_type_art_800009835)
erreur_800009835 = i_ajoutChamp(g_iartin,"T3AJCE","T4ILAVN4",0)
SI erreur_800009835
ALORS
        erreur_800009835 = i_PlvMessEmettre(7009,2,g_iartin,"",1,erreur_800009835,0,0)
        RETOUR TRAIT_OK
FINSI

#
#  Le champ SQTQS est copie dans le champ ILAVN4 de l'article
#
# VerifPcode - RHE # pt_buf_SGTQS = "       "
i_strcpy(pt_buf_SGTQS_800009835,"       ")
tailleReelle_800009835 = i_GetSGTQS(pt_buf_SGTQS_800009835, TailleSGTQS_800009835, F_ASCII)
SI tailleReelle_800009835 != TailleSGTQS_800009835
ALORS
        erreur_800009835= i_PlvMessEmettre(7014,2,g_iartin,"",
				2,tailleReelle_800009835,TailleSGTQS_800009835,0)
        RETOUR TRAIT_OK
FINSI
erreur_800009835 = i_memcpy_art_field_n(g_iartin, ic_ILA_800009835, pt_buf_SGTQS_800009835, TailleSGTQS_800009835)
erreur_800009835 = i_maj_ila(g_iartin)

SI ((cpt_anomalie_800009835 == ANO1) || (cpt_anomalie_800009835 == ANO2))
ALORS
	SAUT STOCKE_ERRONE
FINSI

#####################################################################
# Mise a jour de l'attribut DUREE
#####################################################################
SI ( type_dom_800009835 == 0)
ALORS   
        duree_800009835  = i_get_art_field(g_iartin, ic_T3courant_800009835 + 2) + i_get_art_field(g_iartin, ic_T3courant_800009835 + 13) + i_get_art_field(g_iartin, ic_T3courant_800009835 + 14)
SINON
#  Cas Kiosque telephonique
        SI ( ic_T3courant_800009835 == ic_T3trans5_800009835 )
        ALORS 
                duree_800009835  = i_get_art_field(g_iartin, ic_T3courant_800009835 + 2) + i_get_art_field(g_iartin, ic_T3courant_800009835 + 14) + i_get_art_field(g_iartin, ic_T3courant_800009835 + 15)
        SINON
                duree_800009835  = i_get_art_field(g_iartin, ic_T3courant_800009835 + 2) 
        FINSI
FINSI
erreur_800009835 = i_set_artobj_attr(g_iartin, "ART_DUR", duree_800009835)
# le champ DUREE de l'article stocke contient la duree de l'article
erreur_800009835 = i_set_art_field(g_iartin, ic_DUREE_800009835, duree_800009835)


#####################################################################
# Stockage de l'article en Pretrie OK DC ou inef
#####################################################################
# Modification pcode d'origine pour Platine ( mai 2001 ) :
# pas de renommage de g_iartin en "TvxNinef"
# ( Le pcode de distribution TvxNdcs.src gere les articles efficaces et inefficaces)
erreur_800009835 = i_stocke_art(g_iartin, 0, PT_OK, 0)

RETOUR  TRAIT_OK
                      
#####################################################################
# POINT de branchement : stockage PT_ERRONE
#####################################################################

POINT STOCKE_ERRONE
# modifier pour non stochage des errones
erreur_800009835 = i_set_artobj_attr(g_iartin, "ART_DUR", duree_800009835)

erreur_800009835 = i_make_art_rej(g_iartin, g_iartout, code_erreur_800009835)

erreur_800009835 = i_stocke_art(g_iartout, 0, PT_ERRONE, 0)
RETOUR TRAIT_OK
