REGISTRE ENTIER sdate_800009797
REGISTRE ENTIER SCT_800009797
REGISTRE ENTIER erreur_800009797
REGISTRE ENTIER code_rejet_800009797
REGISTRE ENTIER CAX_800009797
REGISTRE ENTIER ETAP_800009797
REGISTRE ENTIER DUR_800009797
REGISTRE POINTEUR pt_CHAMP_ERRONE_800009797
#####################################################################
# TRAITEMENT
#	Tmbmma7dc : DC de facturation MBMM
#
#####################################################################
#	HISTORIQUE
# 01/07/03 -DRE- Creation
# 18/08/03 -RBE- FO354 : ajout crtl sur bits BC de SCT
#		 FO355 : modif. ctrl croises
# 28/08/03 -RBE- FO355 modifiee
# 02/06/04 -RBE- G2R0Cl : MAJ des codes erreurs
#	04/10/2011 RHE VerifPcode
#####################################################################

# VerifPcode - RHE # 

sdate_800009797 = 0
SCT_800009797 = 0
erreur_800009797 = 0
code_rejet_800009797 = 0
CAX_800009797  = 0
ETAP_800009797 = 0
DUR_800009797  = 0

pt_CHAMP_ERRONE_800009797 = "01234567890123456789"
i_strcpy(pt_CHAMP_ERRONE_800009797, "")

################################################################
#
#	Test syntaxique
#
################################################################

erreur_800009797 = i_test_art(g_iartin)
SI erreur_800009797
ALORS
	code_rejet_800009797 = 0x5071
	erreur_800009797 = i_PlvMessEmettre(7070,3,g_iartin,"",1,code_rejet_800009797,0,0)
	# "DC facturation MBMM (Tmbmma7dc) : %04x - Erreur syntaxique"
	SAUT STOCKE_ERRONE
FINSI


################################################################
#
#	Tests semantiques
#
################################################################

# CAX
CAX_800009797 = i_get_art_field(g_iartin, $Tmbmma7dc::CAX)
SI (CAX_800009797 != 0x01)
ALORS
	pt_CHAMP_ERRONE_800009797 = "CAX"
	code_rejet_800009797 = 0x5041
        erreur_800009797 = i_PlvMessEmettre(7071,2,g_iartin,"",3,code_rejet_800009797,pt_CHAMP_ERRONE_800009797, CAX_800009797)
	SAUT STOCKE_ERRONE
FINSI	


# ETAP
ETAP_800009797 = i_get_art_field(g_iartin, $Tmbmma7dc::ETAP)
SI ( ( ETAP_800009797 < 0xDC ) || ( ETAP_800009797 > 0xEA ) )
ALORS
	pt_CHAMP_ERRONE_800009797 = "ETAP"
	code_rejet_800009797 = 0x5041
	erreur_800009797 = i_PlvMessEmettre(7071,2,g_iartin,"",3,code_rejet_800009797, pt_CHAMP_ERRONE_800009797, ETAP_800009797)
	SAUT STOCKE_ERRONE
FINSI

#DUR
DUR_800009797 = i_get_art_field(g_iartin, $Tmbmma7dc::DUR)
SI ( (ETAP_800009797 != 0xE6) && (DUR_800009797 != 0x01) )
ALORS
	pt_CHAMP_ERRONE_800009797 = "DUR"
	code_rejet_800009797 = 0x5041
	erreur_800009797 = i_PlvMessEmettre(7071,2,g_iartin,"",3,code_rejet_800009797, pt_CHAMP_ERRONE_800009797, DUR_800009797)
	SAUT STOCKE_ERRONE
FINSI

SCT_800009797 = g_iartin.SCT
SI ((SCT_800009797 & 0x60) == 0x60)
ALORS
	pt_CHAMP_ERRONE_800009797 = "SCT"
	code_rejet_800009797 = 0x5041
	erreur_800009797 = i_PlvMessEmettre(7071,2,g_iartin,"",3,code_rejet_800009797, pt_CHAMP_ERRONE_800009797, SCT_800009797)
	SAUT STOCKE_ERRONE
FINSI


#=============================================================================
#       Controles croises entre champs
#=============================================================================

SI ( i_valid_field_n(g_iartin, $Tmbmma7dc::TEM) && ( ETAP_800009797 == 0xE6 || ETAP_800009797 == 0xE7) )
ALORS
        code_rejet_800009797 = 0x5041
        erreur_800009797 = i_PlvMessEmettre(7072,2,g_iartin,"",3,code_rejet_800009797, "ETAP", "TEM")
        SAUT STOCKE_ERRONE
FINSI

SI ( i_valid_field_n(g_iartin, $Tmbmma7dc::TREC) && ( ETAP_800009797 == 0xE6 || ETAP_800009797 == 0xE7) )
ALORS
        code_rejet_800009797 = 0x5041
        erreur_800009797 = i_PlvMessEmettre(7072,2,g_iartin,"",3,code_rejet_800009797, "ETAP", "TREC")
        SAUT STOCKE_ERRONE
FINSI


SI ( !i_valid_field_n(g_iartin, $Tmbmma7dc::TEM) && ( ETAP_800009797 != 0xE6 && ETAP_800009797 != 0xE7) )
ALORS
	code_rejet_800009797 = 0x5041
	erreur_800009797 = i_PlvMessEmettre(7072,2,g_iartin,"",3,code_rejet_800009797, "ETAP", "TEM")
	SAUT STOCKE_ERRONE
FINSI

SI ( !i_valid_field_n(g_iartin, $Tmbmma7dc::TREC) && ( ETAP_800009797 != 0xE6 && ETAP_800009797 != 0xE7) )
ALORS
	code_rejet_800009797 = 0x5041
	erreur_800009797 = i_PlvMessEmettre(7072,2,g_iartin,"",3,code_rejet_800009797, "ETAP", "TREC")
	SAUT STOCKE_ERRONE
FINSI

###########################################################################
# Determination type de date et conversion fin de comm -> debut de comm
# Si SCT : bits BC = 00: heure fin de comm
# Si SCT : bits BC = 01: heure debut de comm
#
###########################################################################

sdate_800009797 = i_get_art_field(g_iartin, $Tmbmma7dc::DATE)

#
#==== Affectation du champ "DATE" (seulement s'il y a changement d'ICAR)
#==== Et modification du champ SCT si changement d'ICAR
#
SI ((SCT_800009797 & 0x60) == 0x00)
ALORS
        trace("DATE = heure de fin de comm : conversion en debut de comm")
        sdate_800009797 = sdate_800009797 - DUR_800009797
        erreur_800009797 = i_set_art_date(g_iartin,sdate_800009797)
        g_iartin.SCT = (SCT_800009797 | 0x20)
FINSI

#==============================================================================
#	Stockage en valide
#==============================================================================

POINT   STOCKE_OK

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

RETOUR TRAIT_OK


#==============================================================================
#	Stockage en errone
#==============================================================================

POINT   STOCKE_ERRONE

       trace2("Stockage en ERRONE %s", "", "")

erreur_800009797 = i_make_art_rej(g_iartin, g_iartout5, code_rejet_800009797)
erreur_800009797 = i_stocke_art(g_iartout5, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK







