DEFINITION C_ORCA_Type_860026346 "DLV"
DEFINITION C_ARTICLE_860026346 "TorcaDLV"
DEFINITION C_SUBSCRIB_860026346 "SUBSCRIB"
DEFINITION C_NUMTAB_860026346 1
DEFINITION C_NUMTAB2_860026346 2
DEFINITION C_ZONEMETRO_860026346 7
DEFINITION C_NUMTABSEL_860026346 2
DEFINITION C_TrevodTorcaDLV_860026346 "TrevodTorcaDLV"
DEFINITION C_TmmdmTorcaDLV_860026346 "TmmdmTorcaDLV"
DEFINITION C_InstREVOD_860026346 "REVOD"
DEFINITION C_InstMMDM_860026346 "MMDMDLV"
DEFINITION C_InstTVING_860026346 "TVING"
DEFINITION C_InstTYPECLIENT_860026346 "TYPECLIENT"
DEFINITION C_Ref_860026346 "NEWTV"
DEFINITION TD_NEWTV_860026346 8 
DEFINITION RD_TABLE9_860026346 0x01000000
REGISTRE ENTIER erreur_860026346
REGISTRE ENTIER res_860026346
REGISTRE ENTIER cpt_redist_860026346
REGISTRE ENTIER code_errone_860026346 
REGISTRE ENTIER code_rejet_860026346
REGISTRE ENTIER ICAR_METRO_860026346
REGISTRE ENTIER ICAR_LOCAL_860026346
REGISTRE ENTIER ICAR_UTC_860026346
REGISTRE ENTIER NUMZONE_860026346
REGISTRE ENTIER taille_860026346
REGISTRE ENTIER EFFICACE_860026346
REGISTRE ENTIER instREVOD_860026346
REGISTRE ENTIER instMMDM_860026346
REGISTRE ENTIER instTypAccTving_860026346
REGISTRE ENTIER instTypCliRevod_860026346
REGISTRE ENTIER instECCv_860026346
REGISTRE ENTIER duree_860026346
REGISTRE ENTIER date_locale_fin_860026346
REGISTRE ENTIER date_Metro_fin_860026346
REGISTRE ENTIER b_REDIST_860026346
REGISTRE POINTEUR pt_temp_860026346
REGISTRE POINTEUR pt_IDUS_NUM_860026346
REGISTRE POINTEUR pt_ECCv_860026346
REGISTRE POINTEUR pt_TypeAcces_860026346
REGISTRE POINTEUR pt_AID_860026346
REGISTRE POINTEUR pt_TypeClient_860026346
REGISTRE POINTEUR pt_LIBELREDIST_860026346
REGISTRE POINTEUR pt_SGTQS_860026346
############################################################################
#	Pcode de Distribution TorcaDLV.src
#
# En entree :
#	Article : TorcaDLV 	DC ISSU DE LA PFS NEWTV ORCA DE TYPE DLV 
#
# En sortie :
#		REVOD	- g_iartout3	- TrevodTorcaDLV
#		MMDM	- g_iartout4	- TmmdmTorcaDLV
#			- g_iartout5 	utilisation interne
#
#
#	02/11/2010 - THE DRE - Creation
# Historique
# 08/12/2010 - DRE - G3R19 : QC437 
# 15/12/2010 - DRE - G3R19 : QC440 Gestion des alarmes de Resdistribution 
# 20/12/2010 - DRE - G3R19 : QC441 partie 1 et 5
# 17/12/2013 - DRE - G4R5 QC768
#
############################################################################
# Constantes





# 8 = TD_XXXXX


# Variables fonctionnelles globales






# Pointeurs




############################
# Affectation Pointeurs    #
############################
pt_temp_860026346			= "pt_temp111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
pt_LIBELREDIST_860026346		= "pt_LIBELREDIST88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"

pt_IDUS_NUM_860026346		= "pt_IDUS_NUM11111111111111111111111111111111"
pt_ECCv_860026346 		= "pt_ECCv222222222222222222222222222222222222"	

pt_TypeAcces_860026346 		= "pt_TypeAcces3333333333333333333333333333333"
pt_AID_860026346 			= "pt_AID8888888888888888888888888888888888888"
pt_TypeClient_860026346 		= "pt_TypeClient999999999999999999999999999999"

pt_SGTQS_860026346		= "pt_SGTQS77777777777777777777777777777777777"

############################
# Initialisation Variables #
############################
instECCv_860026346 	= 0
instREVOD_860026346 	= 0
instMMDM_860026346 	= 0
instTypAccTving_860026346	= 0
instTypCliRevod_860026346	= 0

cpt_redist_860026346 	= -1

b_REDIST_860026346 	= 0

date_locale_fin_860026346 = 0
date_Metro_fin_860026346 = 0

############################
# Initialisation Pointeurs #
############################
i_strcpy(pt_temp_860026346,"")

i_strcpy(pt_IDUS_NUM_860026346,"")

i_strcpy(pt_TypeAcces_860026346,"")
i_strcpy(pt_AID_860026346,"")
i_strcpy(pt_TypeClient_860026346,"")
i_strcpy(pt_LIBELREDIST_860026346,"")

i_strcpy(pt_SGTQS_860026346,"")

i_strcpy(pt_ECCv_860026346,"")

############################
# Debut Distribution       #
############################
# Duplication article entree 
erreur_860026346 = i_dup_art_id(g_iartin, g_iartout)


############################
# Identification de la provenance de l'article        
############################
# trait_ok : nb de passage en redistribution
cpt_redist_860026346 = i_LireRedistCpt()

EFFICACE_860026346 = 2

############################
#  Normalisation du champ  IDUS_NUM  (T4phone_number)
############################
erreur_860026346 = i_get_art_str(g_iartout,$TorcaDLV::IDUS_NUM,pt_IDUS_NUM_860026346)

SI i_strplcmp(pt_IDUS_NUM_860026346,"00",0,2)==0 || i_strplcmp(pt_IDUS_NUM_860026346,"+",0,1)==0
ALORS
	#InterNational
	SI i_strplcmp(pt_IDUS_NUM_860026346,"00",0,2)==0 
	ALORS
			i_get_sub_str (pt_IDUS_NUM_860026346,2,-1,pt_IDUS_NUM_860026346)
	FINSI

	SI i_strplcmp(pt_IDUS_NUM_860026346,"+",0,1)==0 
	ALORS
			i_get_sub_str (pt_IDUS_NUM_860026346,1,-1,pt_IDUS_NUM_860026346)
	FINSI
	
	SI i_strplcmp(pt_IDUS_NUM_860026346,"33",0,2)==0 
	ALORS
			i_get_sub_str (pt_IDUS_NUM_860026346,2,-1,pt_IDUS_NUM_860026346)
	FINSI
	
	SI ( i_strplcmp(pt_IDUS_NUM_860026346,"262",0,3)==0 || i_strplcmp(pt_IDUS_NUM_860026346,"590",0,3) == 0 || i_strplcmp(pt_IDUS_NUM_860026346,"594",0,3)==0 || i_strplcmp(pt_IDUS_NUM_860026346,"596",0,3)==0 )
	ALORS
			i_get_sub_str (pt_IDUS_NUM_860026346,3,-1,pt_IDUS_NUM_860026346)
	FINSI
SINON
	#National
	SI i_strplcmp(pt_IDUS_NUM_860026346,"0",0,1)==0 
	ALORS
			i_get_sub_str (pt_IDUS_NUM_860026346,1,-1,pt_IDUS_NUM_860026346)
	FINSI
FINSI

erreur_860026346 = i_dup_art_id(g_iartin, g_iartout5)
erreur_860026346 = i_set_art_str(g_iartout5, $TorcaDLV::IDUS_NUM,pt_IDUS_NUM_860026346)


#DATES

# G4R5 DRE QC768
#ICAR_METRO = i_get_art_field(g_iartout,$TorcaDLV::DATE)
ICAR_METRO_860026346 = i_get_art_field(g_iartout,$TorcaDLV::ddebut)
ICAR_UTC_860026346 = i_DHgetCe2gTime(C_NUMTAB_860026346,C_ZONEMETRO_860026346,ICAR_METRO_860026346)
NUMZONE_860026346 = i_DHgetZoneID(C_NUMTABSEL_860026346, g_iartout5)
ICAR_LOCAL_860026346 = i_DHgetLocalTime(C_NUMTAB2_860026346,NUMZONE_860026346, ICAR_METRO_860026346)

duree_860026346 = 0
date_locale_fin_860026346 = ICAR_LOCAL_860026346 + duree_860026346
date_Metro_fin_860026346 = ICAR_METRO_860026346 + duree_860026346
		
# SGTQS
i_strcpy(pt_SGTQS_860026346, i_LireEECSGTQS(g_ieec))

#  Enregistrement du champ Nom_EEC dans l'ENVELOPPE Optionelle de redistribution
erreur_860026346 = i_add_opt( "EnomEEC" )
erreur_860026346 = i_set_attr_str_n($EnomEEC::Nom_EEC, pt_SGTQS_860026346)
erreur_860026346 = i_set_attr_val_n( $EnomEEC::date_Locale_fin, date_locale_fin_860026346)
erreur_860026346 = i_set_attr_val_n( $EnomEEC::date_Metro_fin, date_Metro_fin_860026346)


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

taille_860026346 = i_conv_ascii_dcb(pt_IDUS_NUM_860026346, pt_temp_860026346)

SI (i_EnvoiReqConsTabDist(TD_NEWTV_860026346, ICAR_UTC_860026346, pt_temp_860026346, taille_860026346, 0, 1) != 0)
ALORS
	code_rejet_860026346 = 0xA0C0
	code_rejet_860026346 = code_rejet_860026346 + EFFICACE_860026346
	erreur_860026346 = i_PlvMessEmettre(8607,2,g_iartout,"",3,code_rejet_860026346,C_Ref_860026346,C_ARTICLE_860026346)
	SAUT DISTRI_ERR
FINSI

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

#REVOD
instREVOD_860026346 = i_LireInstanceECC(C_InstREVOD_860026346)
SI (!instREVOD_860026346)
ALORS
#	trace("Pas d'instance pour REVOD !")
	erreur_860026346 = i_PlvMessEmettre(8501,2,g_iartin,"",3,"REVOD",C_ARTICLE_860026346,g_ieec)
	SAUT DISTRI_ERR
FINSI	
#trace1("__FILE__:__LINE__ : instREVOD=<%d>",instREVOD)

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


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

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

#TypCliRevod
instTypCliRevod_860026346 = i_LireInstanceECC(C_InstTYPECLIENT_860026346)
SI (!instTypCliRevod_860026346)
ALORS
#	trace("Pas d'instance pour TypCliRevod !")
	erreur_860026346 = i_PlvMessEmettre(8501,2,g_iartin,"",3,"TypCliRevod",C_ARTICLE_860026346,g_ieec)
	SAUT DISTRI_ERR
FINSI	
#trace1("__FILE__:__LINE__ : instTypCliRevod=<%d>",instTypCliRevod)


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

erreur_860026346 = i_LireReqConsTabDist()

#Recherche du type d'acces
erreur_860026346 = i_LireChaineECCv( instTypAccTving_860026346, pt_ECCv_860026346)
SI erreur_860026346 == 0
ALORS
	i_get_sub_str(pt_ECCv_860026346, 0, 0, pt_TypeAcces_860026346)
FINSI

#Recherche de l'AID
res_860026346 = 0
instECCv_860026346 = i_LireEntierECCv( instTypAccTving_860026346 )
res_860026346 = i_LireInfoECC( instTypAccTving_860026346, instECCv_860026346 )
SI ( res_860026346 != 0)
ALORS
	erreur_860026346 = i_LireImsiInfo( res_860026346, 0, 8, pt_AID_860026346)
FINSI

#Recherche du type de client
res_860026346 = 0
res_860026346 = i_LireInfoECC( instTypCliRevod_860026346, 0 )
SI ( res_860026346 != 0)
ALORS
	erreur_860026346 = i_LireChaineInfo( res_860026346, 0, 8, pt_temp_860026346)
	# Dans le referentiel, le bourrage de l'info est FF soit 255 au lieu de null (00)
	# Ci dessous on recupere tout ce qui se trouve avant ce bourrage
	erreur_860026346 = i_recupererValeur (pt_temp_860026346,pt_TypeClient_860026346,i_strlen(pt_temp_860026346),i_get_val_oct(255, 1))
FINSI

SI i_strcmp(pt_TypeClient_860026346,"") == 0
ALORS 
	i_strcpy(pt_TypeClient_860026346,C_SUBSCRIB_860026346)
FINSI


############################
# Controle pour envoi en redistribution
############################
SI ( i_strcmp(pt_TypeAcces_860026346,"") == 0 )
ALORS
	b_REDIST_860026346 = 1
	i_strcpy(pt_LIBELREDIST_860026346, "Echec:  Type d'Acces absent du referentiel TVING, IDUS_NUM = <")
	erreur_860026346 = i_format_str2( pt_temp_860026346, "%s%s", pt_LIBELREDIST_860026346, pt_IDUS_NUM_860026346 )
	i_strcpy(pt_LIBELREDIST_860026346,pt_temp_860026346)

	SAUT AVANT_REDIST
FINSI


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

POINT AVANT_REDIST

SI b_REDIST_860026346 == 0 || cpt_redist_860026346 == 2
ALORS
	erreur_860026346 = i_AjouterCouranteECC(instREVOD_860026346)
FINSI

SI cpt_redist_860026346 == 0
ALORS
	erreur_860026346 = i_AjouterCouranteECC(instMMDM_860026346)
FINSI

##################################################################################
# Validation de la liste des ECCs destinataires
##################################################################################

erreur_860026346=i_ValiderListeECC( 0, 0, 0, 0)

############################################################################
# Mises au format
############################################################################

#--------------------------------------------------------------------------
# REVOD
#--------------------------------------------------------------------------
# Duplication article en entree
SI ( !i_ChercherCouranteECC(instREVOD_860026346) )
ALORS
	SI ( i_dup_art_id(g_iartout,g_iartout3) )
	ALORS
		trace("Erreur de i_dup_art")
		code_errone_860026346 = 0xA0D0
		code_errone_860026346 = code_errone_860026346 + EFFICACE_860026346
		erreur_860026346 = i_PlvMessEmettre(8602,2,g_iartout,"",3,code_errone_860026346,C_TrevodTorcaDLV_860026346,C_ARTICLE_860026346)
		SAUT  DISTRI_ERR
	FINSI
	erreur_860026346 = i_rename_art(g_iartout3, C_TrevodTorcaDLV_860026346)
	
	#*** Ajout Champs obligatoires *** 
	erreur_860026346 = i_ajoutChampNum(g_iartout3, $TrevodTorcaDLV::T4type_client,$TrevodTorcaDLV::TYPE_CLIENT,8)
	# TYPE_CLIENT
	erreur_860026346 = i_set_art_str(g_iartout3, $TrevodTorcaDLV::TYPE_CLIENT, pt_TypeClient_860026346)
	erreur_860026346 = i_resize_tlv ( g_iartout3, "T4type_client","TYPE_CLIENT", i_strlen(pt_TypeClient_860026346) )

	# TYPE_ACCES
	erreur_860026346 = i_set_art_str(g_iartout3, $TrevodTorcaDLV::TYPE_ACCES, pt_TypeAcces_860026346)
	erreur_860026346 = i_resize_tlv ( g_iartout3, "T4type_acces","TYPE_ACCES", i_strlen(pt_TypeAcces_860026346) )

FINSI

#--------------------------------------------------------------------------
# MMDM
#--------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instMMDM_860026346) )
ALORS
	SI ( i_dup_art_id(g_iartout,g_iartout4) )
	ALORS
		trace("Erreur de i_dup_art")
		code_errone_860026346 = 0xA0D0
		code_errone_860026346 = code_errone_860026346 + EFFICACE_860026346
		erreur_860026346 = i_PlvMessEmettre(8602,2,g_iartout,"",3,code_errone_860026346,C_TmmdmTorcaDLV_860026346,C_ARTICLE_860026346)
		SAUT  DISTRI_ERR
	FINSI
	erreur_860026346 = i_rename_art(g_iartout4, C_TmmdmTorcaDLV_860026346)

	#*** Ajout Champs obligatoires *** 
	erreur_860026346 = i_ajoutChampNum(g_iartout4, $TmmdmTorcaDLV::T4type,$TmmdmTorcaDLV::TYPE,8)

	# TYPE
	erreur_860026346=i_set_art_str(g_iartout4,$TmmdmTorcaDLV::TYPE,C_ORCA_Type_860026346)
	
	# TYPE_CLIENT
	erreur_860026346 = i_set_art_str(g_iartout4, $TmmdmTorcaDLV::TYPE_CLIENT, pt_TypeClient_860026346)
	erreur_860026346 = i_resize_tlv ( g_iartout4, "T4type_client","TYPE_CLIENT", i_strlen(pt_TypeClient_860026346) )

	# TYPE_ACCES
	erreur_860026346 = i_set_art_str(g_iartout4, $TmmdmTorcaDLV::TYPE_ACCES, pt_TypeAcces_860026346)
	erreur_860026346 = i_resize_tlv ( g_iartout4, "T4type_acces","TYPE_ACCES", i_strlen(pt_TypeAcces_860026346) )

	# SGTQS
	erreur_860026346=i_set_art_str(g_iartout4,$TmmdmTorcaDLV::SGTQS,pt_SGTQS_860026346)

	# AID
	erreur_860026346=i_set_art_str(g_iartout4,$TmmdmTorcaDLV::AID,pt_AID_860026346)
	erreur_860026346 = i_resize_tlv ( g_iartout4, "T4aid","AID", i_strlen(pt_AID_860026346) )

FINSI


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

#----------------------------------------------------------------------------
# REVOD
#----------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instREVOD_860026346) )
ALORS
	erreur_860026346=i_stocke_art_iecc(g_iartout3, instREVOD_860026346)
	trace("Emission vers REVOD reussie")
FINSI

#----------------------------------------------------------------------------
# MMDM
#----------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instMMDM_860026346) )
ALORS
	erreur_860026346=i_stocke_art_iecc(g_iartout4, instMMDM_860026346)
	trace("Emission vers MMDM reussie")
FINSI

#----------------------------------------------------------------------------
# ENVOI EN REDISTRIBUTION
#----------------------------------------------------------------------------
SI b_REDIST_860026346 > 0
ALORS
	SAUT DISTRI_REDIST
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_860026346,"" )
#ENDIF

erreur_860026346 = i_make_art_rej(g_iartin, g_iartout7, code_rejet_860026346)
erreur_860026346 = 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_860026346,"" )
#ENDIF
erreur_860026346 = i_stocke_art( g_iartin, 0, PT_ELIMINE, 0 )

RETOUR TRAIT_OK

############################################################################
# Stockage en Redistribution
############################################################################
POINT DISTRI_REDIST

SI (cpt_redist_860026346 == 0)
ALORS
	SI b_REDIST_860026346 == 1
	ALORS
		erreur_860026346 = i_PlvMessEmettre(8603,2,g_iartin,"",3,pt_LIBELREDIST_860026346,C_ARTICLE_860026346,pt_SGTQS_860026346)
	SINON
		erreur_860026346 = i_PlvMessEmettre(8604,2,g_iartin,"",3,pt_LIBELREDIST_860026346,C_ARTICLE_860026346,pt_SGTQS_860026346)
	FINSI
FINSI

trace( "__FILE__:__LINE__ : Fin du Pcode de distribution : Stockage en REDISTRIBUTION" )
res_860026346 = i_stocke_art( g_iartin, 0, PT_REDIST|RD_TABLE9_860026346, 0 )

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

