DEFINITION C_ARTICLE_860026324 "TwhaORD"
DEFINITION C_NUMTAB_860026324 1
DEFINITION C_NUMTAB2_860026324 2
DEFINITION C_ZONEMETRO_860026324 7
DEFINITION C_NUMTABSEL_860026324 4
DEFINITION C_InstTVING_860026324 "TVING"
DEFINITION TD_NEWTV_860026324 8 
DEFINITION RD_TABLE9_860026324 0x01000000
DEFINITION C_InstMMDM_860026324 "MMDMWHAORD"
DEFINITION C_TmmdmTwhaORD_860026324 "TmmdmTwhaORD"
DEFINITION C_Ref_860026324 "GAMELOFT"
REGISTRE ENTIER erreur_860026324
REGISTRE ENTIER res_860026324
REGISTRE ENTIER code_errone_860026324 
REGISTRE ENTIER code_rejet_860026324
REGISTRE ENTIER ICAR_METRO_860026324
REGISTRE ENTIER ICAR_LOCAL_860026324
REGISTRE ENTIER ICAR_UTC_860026324
REGISTRE ENTIER NUMZONE_860026324
REGISTRE ENTIER taille_860026324
REGISTRE ENTIER EFFICACE_860026324
REGISTRE ENTIER instTypAccTving_860026324
REGISTRE ENTIER duree_860026324
REGISTRE ENTIER date_locale_fin_860026324
REGISTRE ENTIER date_Metro_fin_860026324
REGISTRE ENTIER instMMDM_860026324
REGISTRE POINTEUR pt_temp_860026324
REGISTRE POINTEUR pt_IDUS_NUM_860026324
REGISTRE POINTEUR pt_ECCv_860026324
REGISTRE POINTEUR pt_TypeAcces_860026324
REGISTRE POINTEUR pt_TypeClient_860026324
REGISTRE POINTEUR pt_SGTQS_860026324
REGISTRE POINTEUR pt_GEOGRAPHIC_ZONE_860026324
REGISTRE POINTEUR pt_ZONE_GEO_860026324
REGISTRE POINTEUR pt_v_godet_860026324
############################################################################
#	Pcode de Distribution TwhaORD.src
#
# En entree :
#	Article : TwhaORD 	DC ISSU DE LA PFS WHA
#
# En sortie :
#		MMDM		- g_iartout4	- TmmdmTwhaORD
#
# Historique
#
#	08/03/2012 - DRE - Creation
#
############################################################################
# Constantes
# 8 = TD_XXXXX

# Variables fonctionnelles globales


# Pointeurs

############################
# Affectation Pointeurs    #
############################
pt_temp_860026324			= "pt_temp111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
pt_IDUS_NUM_860026324		= "pt_IDUS_NUM11111111111111111111111111111111"
pt_ECCv_860026324 		= "pt_ECCv444444444444444444444444444444444444"	
pt_TypeAcces_860026324 		= "pt_TypeAcces5555555555555555555555555555555"
pt_TypeClient_860026324 		= "pt_TypeClient888888888888888888888888888888"
pt_SGTQS_860026324		= "pt_SGTQS777777777777777777777777777777"
pt_GEOGRAPHIC_ZONE_860026324	= "pt_GEOGRAPHIC_ZONE888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"
pt_ZONE_GEO_860026324		= "pt_ZONE_GEO9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"
pt_v_godet_860026324		= "pt_v_godet0123"

############################
# Initialisation Variables #
############################
instTypAccTving_860026324	= 0
NUMZONE_860026324		= 0
instMMDM_860026324 	= 0
ICAR_UTC_860026324	= 0
ICAR_LOCAL_860026324	= 0

############################
# Initialisation Pointeurs #
############################
i_strcpy(pt_temp_860026324,"")
i_strcpy(pt_IDUS_NUM_860026324,"")
i_strcpy(pt_ECCv_860026324,"")
i_strcpy(pt_TypeAcces_860026324,"")
i_strcpy(pt_TypeClient_860026324,"")
i_strcpy(pt_SGTQS_860026324,"")
i_strcpy(pt_GEOGRAPHIC_ZONE_860026324,"")
i_strcpy(pt_ZONE_GEO_860026324,"")
i_strcpy(pt_v_godet_860026324,"")


############################
# Debut Distribution       #
############################
trace ("__LINE__ #### Debut Distribution #### :__FILE__ #### ")

# Duplication article entree 
erreur_860026324 = i_dup_art_id(g_iartin, g_iartout)
erreur_860026324 = i_cree_art("Conversion",g_iartout10)


EFFICACE_860026324 = 2

############################
#  Normalisation du champ  IDUS_NUM  (T3nd)
############################

SI ( i_valid_field_n(g_iartout,$TwhaORD::IDUS_NUM) )
ALORS
	erreur_860026324 = i_get_art_str(g_iartout,$TwhaORD::IDUS_NUM,pt_IDUS_NUM_860026324)
	
	SI i_strplcmp(pt_IDUS_NUM_860026324,"00",0,2)==0 || i_strplcmp(pt_IDUS_NUM_860026324,"+",0,1)==0
	ALORS
		#InterNational
		SI i_strplcmp(pt_IDUS_NUM_860026324,"00",0,2)==0 
		ALORS
			i_get_sub_str (pt_IDUS_NUM_860026324,2,-1,pt_IDUS_NUM_860026324)
		FINSI
	
		SI i_strplcmp(pt_IDUS_NUM_860026324,"+",0,1)==0 
		ALORS
			i_get_sub_str (pt_IDUS_NUM_860026324,1,-1,pt_IDUS_NUM_860026324)
		FINSI
		
		SI i_strplcmp(pt_IDUS_NUM_860026324,"33",0,2)==0 
		ALORS
			i_get_sub_str (pt_IDUS_NUM_860026324,2,-1,pt_IDUS_NUM_860026324)
		FINSI
		
		SI ( i_strplcmp(pt_IDUS_NUM_860026324,"262",0,3)==0 || i_strplcmp(pt_IDUS_NUM_860026324,"590",0,3) == 0 || i_strplcmp(pt_IDUS_NUM_860026324,"594",0,3)==0 || i_strplcmp(pt_IDUS_NUM_860026324,"596",0,3)==0 )
		ALORS
			i_get_sub_str (pt_IDUS_NUM_860026324,3,-1,pt_IDUS_NUM_860026324)
		FINSI
	SINON
		#National
		SI i_strplcmp(pt_IDUS_NUM_860026324,"0",0,1)==0 
		ALORS
			i_get_sub_str (pt_IDUS_NUM_860026324,1,-1,pt_IDUS_NUM_860026324)
		FINSI
	FINSI
FINSI

# DUREE
duree_860026324 = 0

#DATES
SI ( i_valid_field_n(g_iartout,$TwhaORD::DATE) )
ALORS
	ICAR_METRO_860026324 = i_get_art_field(g_iartout,$TwhaORD::DATE)
	ICAR_UTC_860026324   = i_DHgetCe2gTime(C_NUMTAB_860026324,C_ZONEMETRO_860026324,ICAR_METRO_860026324)

	# Recherche de la Zone en fonction du champ GEO_ZONE
	erreur_860026324 = i_get_art_str(g_iartout,$TwhaORD::GEO_ZONE,pt_GEOGRAPHIC_ZONE_860026324)
	erreur_860026324 = i_recupererValeur(pt_GEOGRAPHIC_ZONE_860026324, pt_temp_860026324, i_strlen(pt_GEOGRAPHIC_ZONE_860026324),'/')
	i_strcpy(pt_ZONE_GEO_860026324,UCASE_860026233(pt_GEOGRAPHIC_ZONE_860026324))
	i_replace_str(pt_ZONE_GEO_860026324," ","_",pt_ZONE_GEO_860026324)
	
	erreur_860026324 = i_set_art_str(g_iartout10, $Conversion::ZONE_GEO,pt_ZONE_GEO_860026324)
	
	NUMZONE_860026324 = i_DHgetZoneID(C_NUMTABSEL_860026324, g_iartout10)
	
	SI NUMZONE_860026324 == 0
	ALORS
		#trace("##### Zone Grographique inconnue ########")
		code_rejet_860026324 = 0xA080
		code_rejet_860026324 = code_rejet_860026324 + EFFICACE_860026324
		erreur_860026324 = i_format_str2( pt_temp_860026324 , " La zone geographique <%s> est inconnue dans la Table de Selection des Decalages Horaires <%s>",pt_ZONE_GEO_860026324,"zones.4")
		erreur_860026324 = i_PlvMessEmettre( 8612, 2, g_iartin,"", 3,code_rejet_860026324, C_ARTICLE_860026324, pt_temp_860026324)
		SAUT DISTRI_ERR
	FINSI
	#trace1("################## NUMZONE = >%d< ####################",NUMZONE)
	
	ICAR_LOCAL_860026324 = i_DHgetLocalTime(C_NUMTAB2_860026324,NUMZONE_860026324, ICAR_METRO_860026324)



	date_locale_fin_860026324 = ICAR_LOCAL_860026324 + duree_860026324
	date_Metro_fin_860026324 = ICAR_METRO_860026324 + duree_860026324
FINSI

# SGTQS
i_strcpy(pt_SGTQS_860026324, i_LireEECSGTQS(g_ieec))

#  Enregistrement du champ Nom_EEC dans l'ENVELOPPE Optionelle de redistribution
erreur_860026324 = i_add_opt( "EnomEEC" )
erreur_860026324 = i_set_attr_str_n($EnomEEC::Nom_EEC, pt_SGTQS_860026324)
erreur_860026324 = i_set_attr_val_n( $EnomEEC::date_Locale_fin, date_locale_fin_860026324)
erreur_860026324 = i_set_attr_val_n( $EnomEEC::date_Metro_fin, date_Metro_fin_860026324)

############################
#  Soumission de la requete de consultation d'une table de distribution
############################

SI (ICAR_UTC_860026324 != 0) && (i_strcmp(pt_IDUS_NUM_860026324,"") != 0)
ALORS

	taille_860026324 = i_conv_ascii_dcb(pt_IDUS_NUM_860026324, pt_temp_860026324)
	
	SI (i_EnvoiReqConsTabDist(TD_NEWTV_860026324, ICAR_UTC_860026324, pt_temp_860026324, taille_860026324, 0, 1) != 0)
	ALORS
		code_rejet_860026324 = 0xA0C0
		code_rejet_860026324 = code_rejet_860026324 + EFFICACE_860026324
		erreur_860026324 = i_PlvMessEmettre(8607,2,g_iartout,"",3,code_rejet_860026324,C_Ref_860026324,C_ARTICLE_860026324)
		SAUT DISTRI_ERR
	FINSI
FINSI

##########################################################################
# Recherche des instances des ECC  
##########################################################################

# MMDM 
instMMDM_860026324 = i_LireInstanceECC(C_InstMMDM_860026324)
SI (!instMMDM_860026324)
ALORS
	#trace("Pas d'instance pour MMDM !")
	erreur_860026324 = i_PlvMessEmettre(8501,2,g_iartin,"",3,"MMDM",C_ARTICLE_860026324,g_ieec)
	SAUT DISTRI_ERR
FINSI	
#trace1("__FILE__:__LINE__ : instMMDM=<%d>",instMMDM)

############################
# Recherche instance ECC_Interne
############################

# TypAccTving
instTypAccTving_860026324 = i_LireInstanceECC(C_InstTVING_860026324)

SI (!instTypAccTving_860026324)
ALORS
	#trace("Pas d'instance pour TypAccTving !")
	erreur_860026324 = i_PlvMessEmettre(8501,2,g_iartin,"",3,"TypAccTving",C_ARTICLE_860026324,g_ieec)
	SAUT DISTRI_ERR
FINSI	
#trace1("__FILE__:__LINE__ : instTVING=<%d>",instTypAccTving)

############################
# Lecture Resultat requete
############################

SI (ICAR_UTC_860026324 != 0) && (i_strcmp(pt_IDUS_NUM_860026324,"") != 0)
ALORS
	erreur_860026324 = i_LireReqConsTabDist()
	
	#Recherche du type d'acces
	erreur_860026324 = i_LireChaineECCv( instTypAccTving_860026324, pt_ECCv_860026324)
	
	SI erreur_860026324 == 0
	ALORS
		i_get_sub_str(pt_ECCv_860026324, 0, 0, pt_TypeAcces_860026324)
	FINSI
FINSI

############################
# Controle pour envoi en redistribution
############################
# NEANT


#####################################################################
# CRITERES DE DISTRIBUTION
#####################################################################

erreur_860026324 = i_AjouterCouranteECC(instMMDM_860026324)



##################################################################################
# Validation de la liste des ECCs destinataires
##################################################################################
erreur_860026324=i_ValiderListeECC( 0, 0, 0, 0)

############################################################################
# Mises au format
############################################################################
#--------------------------------------------------------------------------
# MMDM 
#--------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instMMDM_860026324) )
ALORS
	SI ( i_dup_art_id(g_iartout,g_iartout4) )
	ALORS
		#trace("Erreur de i_dup_art")
		code_errone_860026324 = 0xA0D0
		code_errone_860026324 = code_errone_860026324 + EFFICACE_860026324
		erreur_860026324 = i_PlvMessEmettre(8602,2,g_iartout,"",3,code_errone_860026324,C_TmmdmTwhaORD_860026324,C_ARTICLE_860026324)
		SAUT  DISTRI_ERR
	FINSI
	erreur_860026324 = i_rename_art(g_iartout4, C_TmmdmTwhaORD_860026324)

	#*** Ajout Champs obligatoires *** 
	# TYPE_ACCES
	erreur_860026324 = i_ajoutChampNum(g_iartout4, $TmmdmTwhaORD::T4type_acces,$TmmdmTwhaORD::TYPE_ACCES,0)
	erreur_860026324 = i_set_art_str(g_iartout4, $TmmdmTwhaORD::TYPE_ACCES, pt_TypeAcces_860026324)
	erreur_860026324 = i_resize_tlv ( g_iartout4, "T4type_acces","TYPE_ACCES", i_strlen(pt_TypeAcces_860026324) )

	# SGTQS
	erreur_860026324 = i_ajoutChampNum(g_iartout4, $TmmdmTwhaORD::T4sgtqs,$TmmdmTwhaORD::SGTQS,0)
	erreur_860026324=i_set_art_str(g_iartout4,$TmmdmTwhaORD::SGTQS,pt_SGTQS_860026324)

	# Suppression du champ interne "DATE" 
	erreur_860026324 = i_supprChamp(g_iartout4, "T4date")	
FINSI

############################################################################
# Envoi vers IECC
############################################################################

#----------------------------------------------------------------------------
# MMDM 
#----------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instMMDM_860026324) )
ALORS
	erreur_860026324=i_stocke_art_iecc(g_iartout4, instMMDM_860026324)
	trace2( "Emission vers %s reussie",C_InstMMDM_860026324,"" )
FINSI


#----------------------------------------------------------------------------
# FIN DISTRIBUTION
#----------------------------------------------------------------------------

RETOUR TRAIT_OK

#####################################################################
# POINT de branchement : stockage PT_ERRONE
#####################################################################

POINT DISTRI_ERR

#IFDEF trace_niv1 = 1
trace2( "Stockage de l'article %s en ERRONE",C_ARTICLE_860026324,"" )
#ENDIF

erreur_860026324 = i_make_art_rej(g_iartin, g_iartout7, code_rejet_860026324)
erreur_860026324 = i_stocke_art(g_iartout7,0,PT_ERRONE,0)

RETOUR TRAIT_OK

###########################################################################
# POINT de branchement : stockage PT_ELIMINE
###########################################################################

POINT DISTRI_ELM

#IFDEF trace_niv1 = 1
trace2( "Stockage de l'article %s en ELIMINE",C_ARTICLE_860026324,"" )
#ENDIF
erreur_860026324 = i_stocke_art( g_iartin, 0, PT_ELIMINE, 0 )

RETOUR TRAIT_OK

############################################################################
# Stockage en Redistribution
############################################################################
# NEANT



#trace2( "Fin du Pcode de distribution %s ",C_ARTICLE,"" )
RETOUR TRAIT_OK
