DEFINITION C_TPRESDIV_Contexte_860026350 "C1"
DEFINITION C_ORCA_Type_860026350 "ORP"
DEFINITION C_ARTICLE_860026350 "TorcaORP"
DEFINITION C_SUBSCRIB_860026350 "SUBSCRIB"
DEFINITION C_NUMTAB_860026350 1
DEFINITION C_NUMTAB2_860026350 2
DEFINITION C_ZONEMETRO_860026350 7
DEFINITION C_NUMTABSEL_860026350 4
DEFINITION C_TallegroPresDiv_860026350 "TallegroPresDiv"
DEFINITION C_TrevodTorcaORP_860026350 "TrevodTorcaORP"
DEFINITION C_TmmdmTorcaORP_860026350 "TmmdmTorcaORP"
DEFINITION C_InstALLEGRO_860026350 "ALLEGRO_PDZ"
DEFINITION C_InstREVOD_860026350 "REVOD"
DEFINITION C_InstMMDM_860026350 "MMDMORP"
DEFINITION C_InstTVING_860026350 "TVING"
DEFINITION C_InstTYPECLIENT_860026350 "TYPECLIENT"
DEFINITION C_Ref_860026350 "NEWTV"
DEFINITION C_TXTVA_860026350 "TXTVA"
DEFINITION C_Jour_860026350 86400
DEFINITION TD_NEWTV_860026350 8 
DEFINITION RD_TABLE9_860026350 0x01000000
REGISTRE ENTIER erreur_860026350
REGISTRE ENTIER res_860026350
REGISTRE ENTIER cpt_redist_860026350
REGISTRE ENTIER code_errone_860026350 
REGISTRE ENTIER code_rejet_860026350
REGISTRE ENTIER ICAR_METRO_860026350
REGISTRE ENTIER ICAR_LOCAL_860026350
REGISTRE ENTIER ICAR_UTC_860026350
REGISTRE ENTIER NUMZONE_860026350
REGISTRE ENTIER taille_860026350
REGISTRE ENTIER ValEntier_860026350
REGISTRE ENTIER EFFICACE_860026350
REGISTRE ENTIER instALLEGRO_860026350
REGISTRE ENTIER instREVOD_860026350
REGISTRE ENTIER instMMDM_860026350
REGISTRE ENTIER instTypAccTving_860026350
REGISTRE ENTIER instTypCliRevod_860026350
REGISTRE ENTIER b_Facturable_860026350
REGISTRE ENTIER b_REDIST_860026350
REGISTRE ENTIER instECCv_860026350
REGISTRE ENTIER duree_860026350
REGISTRE ENTIER date_locale_fin_860026350
REGISTRE ENTIER date_Metro_fin_860026350
REGISTRE ENTIER nb_entree_860026350
REGISTRE ENTIER indice_860026350
REGISTRE ENTIER date_debut_860026350
REGISTRE ENTIER date_fin_860026350
REGISTRE ENTIER b_conversion_OK_860026350
REGISTRE POINTEUR pt_temp_860026350
REGISTRE POINTEUR pt_ValEntier_860026350
REGISTRE POINTEUR pt_ValDec_860026350
REGISTRE POINTEUR pt_LIBELREDIST_860026350
REGISTRE POINTEUR pt_IDUS_NUM_860026350
REGISTRE POINTEUR pt_PAYMENT_METHOD_860026350
REGISTRE POINTEUR pt_ECCv_860026350
REGISTRE POINTEUR pt_TypeAcces_860026350
REGISTRE POINTEUR pt_AID_860026350
REGISTRE POINTEUR pt_TypeClient_860026350
REGISTRE POINTEUR pt_TPRESDIV_Cle_860026350
REGISTRE POINTEUR pt_TPRESDIV_DebCre_860026350
REGISTRE POINTEUR pt_TPRESDIV_CodPrest_860026350
REGISTRE POINTEUR pt_PRICE_HT_860026350
REGISTRE POINTEUR pt_MONTANT_HT_860026350
REGISTRE POINTEUR pt_SGTQS_860026350
REGISTRE POINTEUR pt_ICAR_LOCAL_860026350
REGISTRE POINTEUR pt_TIME_860026350
REGISTRE POINTEUR pt_GEOGRAPHIC_ZONE_860026350
REGISTRE POINTEUR pt_ZONE_GEO_860026350
REGISTRE POINTEUR pt_clevaleur_860026350
REGISTRE POINTEUR pt_cle_860026350
REGISTRE POINTEUR pt_valeur_860026350
REGISTRE POINTEUR pt_CATALOG_PRICE_860026350
REGISTRE POINTEUR pt_CoefTVA_860026350
REGISTRE POINTEUR pt_CoefConvTVA_860026350
REGISTRE POINTEUR pt_DateDeb_860026350
REGISTRE POINTEUR pt_DateFin_860026350
############################################################################
#	Pcode de Distribution TorcaORP.src
#
# En entree :
#	Article : TorcaORP 	DC ISSU DE LA PFS NEWTV ORCA DE TYPE ORP 
#
# En sortie :
#		ALLEGRO_PDZ	- g_iartout2	- TallegroPresDiv
#		REVOD		- g_iartout3	- TrevodTorcaORP
#		MMDM		- g_iartout4	- TmmdmTorcaORP
#
#
#
#	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
#	04/01/2011 - DRE - G3R19 : QC445 Ajout instance ALLEGRO_PDZ
#	03/02/2011 - DRE - G3R19Cy : Modif calcul de la date locale
#	04/09/2012 - DRE - G3R24C8 QC633 correction Convertion PRICE_HT en MONTANT_HT
#	18/09/2013 - DRE - G4R4
#	11/12/2013 - DRE - G4R5 Ajout recherche montant HT DOM
# 	07/01/2014 - DRE - G4R5 Modif. nom pointeur pour l'appel a la fonction "CalculHT"
# 	06/02/2014 - DRE - G4R5 QC791 calcule pour valeur HT < 1 + resize PRICE_HT + Prendre champ PRICE_TTC au lieu de CATALOG_PRICE
#	05/03/2014 - DRE - G4R6 Ajout champ TERMINAL_INFO pour MMDM. Suppression champ TERMINAL_INFO pour REVOD.
#
#
############################################################################
# Constantes
# G3R19Cy DRE




#G4R5

# 8 = TD_XXXXX


# Variables fonctionnelles globales








#G4R5

# Pointeurs








#G3R19CY DRE



#G4R5


############################
# Affectation Pointeurs    #
############################
pt_temp_860026350			= "pt_temp111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
pt_ValEntier_860026350		= "pt_ValEntier2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"
pt_ValDec_860026350		= "pt_ValDec555522222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"
pt_LIBELREDIST_860026350		= "pt_LIBELREDIST88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"

pt_IDUS_NUM_860026350		= "pt_IDUS_NUM11111111111111111111111111111111"
pt_PAYMENT_METHOD_860026350 	= "pt_PAYMENT_METHOD123456789"
pt_ECCv_860026350 		= "pt_ECCv222222222222222222222222222222222222"	

pt_TypeAcces_860026350 		= "pt_TypeAcces1111111111111222222222222222222"
pt_AID_860026350 			= "pt_AID8888888888888888888888888888888888888"
pt_TypeClient_860026350 		= "pt_TypeClient999999999999999999999999999999"

pt_TPRESDIV_Cle_860026350 	= "pt_TPRESDIV_Cle333333333333333333333333333333333333333333333333333333333"
pt_TPRESDIV_DebCre_860026350 	= "pt_TPRESDIV_DebCre1111111111112222222222333"
pt_TPRESDIV_CodPrest_860026350 	= "pt_TPRESDIV_CodPrest4444444444444444444444444444444444444444444444444444"

pt_PRICE_HT_860026350 		= "pt_PRICE_HT5555555555555555555"
pt_MONTANT_HT_860026350		= "pt_MONTANT_HT66666666666666666"

pt_SGTQS_860026350		= "pt_SGTQS7777777777777777777777"

pt_ICAR_LOCAL_860026350		= "pt_ICAR_LOCAL7777777777777777777777777"
pt_TIME_860026350			= "pt_TIME22222222222222222222222"

#G3R19CY DRE
pt_GEOGRAPHIC_ZONE_860026350	= "pt_GEOGRAPHIC_ZONE888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888"
pt_ZONE_GEO_860026350		= "pt_ZONE_GEO9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"





#G4R5
pt_clevaleur_860026350		= "pt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleurpt_clevaleur"
pt_cle_860026350			= "pt_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_clept_cle"
pt_valeur_860026350		= "pt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_valeurpt_"
pt_CATALOG_PRICE_860026350	= "pt_CATALOG_PRICEpt_CATALOG_PRICEpt_CATALOG_PRICEpt_CATALOG_PRICEpt_CATALOG_PRICEpt_CATALOG_PRICE"
pt_CoefTVA_860026350 		= "pt_CoefTVApt_CoefTVApt_CoefTVApt_CoefTVApt_CoefTVApt_CoefTVApt_CoefTVApt_CoefTVA"
pt_CoefConvTVA_860026350  	= "pt_CoefConvTVApt_CoefConvTVApt_CoefConvTVApt_CoefConvTVApt_CoefConvTVApt_CoefConvTVApt_CoefConvTVApt_CoefConvTVA"
pt_DateDeb_860026350  		= "pt_DateDebpt_DateDeb"
pt_DateFin_860026350  		= "pt_DateFinpt_DateFin"


############################
# Initialisation Variables #
############################
b_Facturable_860026350	= 0
b_REDIST_860026350 	= 0

ValEntier_860026350=0

cpt_redist_860026350 	= -1


instECCv_860026350 	= 0
instALLEGRO_860026350 	= 0
instREVOD_860026350 	= 0
instMMDM_860026350 	= 0
instTypAccTving_860026350	= 0
instTypCliRevod_860026350	= 0

date_locale_fin_860026350 = 0
date_Metro_fin_860026350 	= 0
NUMZONE_860026350		= 0

#G4R5
nb_entree_860026350	= 0
indice_860026350		= 0
date_debut_860026350	= 0
date_fin_860026350	= 0

############################
# Initialisation Pointeurs #
############################
i_strcpy(pt_temp_860026350,"")
i_strcpy(pt_ValEntier_860026350,"")
i_strcpy(pt_ValDec_860026350,"")
i_strcpy(pt_LIBELREDIST_860026350,"")

i_strcpy(pt_IDUS_NUM_860026350,"")
i_strcpy(pt_PAYMENT_METHOD_860026350,"")

i_strcpy(pt_TypeAcces_860026350,"")
i_strcpy(pt_AID_860026350,"")
i_strcpy(pt_TypeClient_860026350,"")

i_strcpy(pt_TPRESDIV_Cle_860026350,"")

i_strcpy(pt_PRICE_HT_860026350,"")
i_strcpy(pt_MONTANT_HT_860026350,"")

i_strcpy(pt_SGTQS_860026350,"")

i_strcpy(pt_ICAR_LOCAL_860026350,"")
i_strcpy(pt_TIME_860026350,"")


i_strcpy(pt_ECCv_860026350,"")
i_strcpy(pt_TPRESDIV_DebCre_860026350,"")
i_strcpy(pt_TPRESDIV_CodPrest_860026350,"")

#G3R19CY DRE
i_strcpy(pt_GEOGRAPHIC_ZONE_860026350,"")
i_strcpy(pt_ZONE_GEO_860026350,"")


#G4R5
i_strcpy(pt_clevaleur_860026350,"")
i_strcpy(pt_cle_860026350,"")
i_strcpy(pt_valeur_860026350,"")
i_strcpy(pt_CATALOG_PRICE_860026350,"")
i_strcpy(pt_CoefTVA_860026350,"")
i_strcpy(pt_CoefConvTVA_860026350,"")
i_strcpy(pt_DateDeb_860026350,"")
i_strcpy(pt_DateFin_860026350,"")



############################
# Debut Distribution       #
############################
# Duplication article entree 
erreur_860026350 = i_dup_art_id(g_iartin, g_iartout)
erreur_860026350 = i_cree_art("Conversion",g_iartout10)


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

EFFICACE_860026350 = 2

############################
#  Normalisation du champ  IDUS_NUM  (T4phone_number)
############################
erreur_860026350 = i_get_art_str(g_iartout,$TorcaORP::IDUS_NUM,pt_IDUS_NUM_860026350)

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

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

#G3R19Cy DRE
#erreur = i_dup_art_id(g_iartin, g_iartout5)
#erreur = i_set_art_str(g_iartout5, $TorcaORP::IDUS_NUM,pt_IDUS_NUM)


#DATES

ICAR_METRO_860026350 = i_get_art_field(g_iartout,$TorcaORP::DATE)
ICAR_UTC_860026350 = i_DHgetCe2gTime(C_NUMTAB_860026350,C_ZONEMETRO_860026350,ICAR_METRO_860026350)

#G3R19Cy DRE
erreur_860026350 = i_get_art_str(g_iartout,$TorcaORP::GEOGRAPHIC_ZONE,pt_GEOGRAPHIC_ZONE_860026350)
erreur_860026350 = i_recupererValeur(pt_GEOGRAPHIC_ZONE_860026350, pt_temp_860026350, i_strlen(pt_GEOGRAPHIC_ZONE_860026350),'/')
i_strcpy(pt_ZONE_GEO_860026350,UCASE_860026233(pt_GEOGRAPHIC_ZONE_860026350))
i_replace_str(pt_ZONE_GEO_860026350," ","_",pt_ZONE_GEO_860026350)

erreur_860026350 = i_set_art_str(g_iartout10, $Conversion::ZONE_GEO,pt_ZONE_GEO_860026350)

NUMZONE_860026350 = i_DHgetZoneID(C_NUMTABSEL_860026350, g_iartout10)
SI NUMZONE_860026350 == 0
ALORS
	#trace("##### Zone Grographique inconnue ########")
	code_rejet_860026350 = 0xA080
	code_rejet_860026350 = code_rejet_860026350 + EFFICACE_860026350
	erreur_860026350 = i_format_str2( pt_temp_860026350 , " La zone geographique <%s> est inconnue dans la Table de Selection des Decalages Horaires <%s>",pt_ZONE_GEO_860026350,"zones.4")
	erreur_860026350 = i_PlvMessEmettre( 8612, 2, g_iartin,"", 3,code_rejet_860026350, C_ARTICLE_860026350, pt_temp_860026350)
	SAUT DISTRI_ERR
FINSI
#trace1("################## NUMZONE = >%d< ####################",NUMZONE)
#NUMZONE = i_DHgetZoneID(C_NUMTABSEL, g_iartout5)
#\G3R19Cy DRE

ICAR_LOCAL_860026350 = i_DHgetLocalTime(C_NUMTAB2_860026350,NUMZONE_860026350, ICAR_METRO_860026350)

duree_860026350 = 0
date_locale_fin_860026350 = ICAR_LOCAL_860026350 + duree_860026350
date_Metro_fin_860026350 = ICAR_METRO_860026350 + duree_860026350
		
# SGTQS
i_strcpy(pt_SGTQS_860026350, i_LireEECSGTQS(g_ieec))

#  Enregistrement du champ Nom_EEC dans l'ENVELOPPE Optionelle de redistribution
erreur_860026350 = i_add_opt( "EnomEEC" )
erreur_860026350 = i_set_attr_str_n($EnomEEC::Nom_EEC, pt_SGTQS_860026350)
erreur_860026350 = i_set_attr_val_n( $EnomEEC::date_Locale_fin, date_locale_fin_860026350)
erreur_860026350 = i_set_attr_val_n( $EnomEEC::date_Metro_fin, date_Metro_fin_860026350)

erreur_860026350 = i_get_art_str(g_iartout,$TorcaORP::PAYMENT_METHOD,pt_PAYMENT_METHOD_860026350)
SI i_strlen(pt_PAYMENT_METHOD_860026350) > 1 
ALORS
	i_strcpy(pt_PAYMENT_METHOD_860026350,REMPLACE_CHAINE_860026233(pt_PAYMENT_METHOD_860026350," ", ""))
FINSI

#G4R4 #############################
erreur_860026350 = i_format_str2( pt_temp_860026350, "%s_%s", C_TPRESDIV_Contexte_860026350, C_ORCA_Type_860026350 )
erreur_860026350 = i_format_str2( pt_TPRESDIV_Cle_860026350, "%s_%s", pt_temp_860026350, pt_PAYMENT_METHOD_860026350 )
#SI ( i_strcmp(pt_PAYMENT_METHOD, "2") == 0 )
SI i_strcmp (i_get_tab_field( "TPRESDIV", ICAR_UTC_860026350, pt_TPRESDIV_Cle_860026350 ),g_inull ) != 0
ALORS
	b_Facturable_860026350 = 1
FINSI



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

taille_860026350 = i_conv_ascii_dcb(pt_IDUS_NUM_860026350, pt_temp_860026350)

SI (i_EnvoiReqConsTabDist(TD_NEWTV_860026350, ICAR_UTC_860026350, pt_temp_860026350, taille_860026350, 0, 1) != 0)
ALORS
	code_rejet_860026350 = 0xA0C0
	code_rejet_860026350 = code_rejet_860026350 + EFFICACE_860026350
	erreur_860026350 = i_PlvMessEmettre(8607,2,g_iartout,"",3,code_rejet_860026350,C_Ref_860026350,C_ARTICLE_860026350)
	SAUT DISTRI_ERR
FINSI

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

#ALLEGRO_PDZ
instALLEGRO_860026350 = i_LireInstanceECC(C_InstALLEGRO_860026350)
SI (!instALLEGRO_860026350)
ALORS
#	trace("Pas d'instance pour ALLEGRO_PDZ !")
	erreur_860026350 = i_PlvMessEmettre(8501,2,g_iartin,"",3,C_InstALLEGRO_860026350,C_ARTICLE_860026350,g_ieec)
	SAUT DISTRI_ERR
FINSI	
#trace1("__FILE__:__LINE__ : instALLEGRO=<%d>",instALLEGRO)

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

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


############################
# Recherche instance ECC_Interne
############################
#TypAccTving
instTypAccTving_860026350 = i_LireInstanceECC(C_InstTVING_860026350)
SI (!instTypAccTving_860026350)
ALORS
#	trace("Pas d'instance pour TypAccTving !")
	erreur_860026350 = i_PlvMessEmettre(8501,2,g_iartin,"",3,"TypAccTving",C_ARTICLE_860026350,g_ieec)
	SAUT DISTRI_ERR
FINSI	
#trace1("__FILE__:__LINE__ : instTVING=<%d>",instTypAccTving)

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


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

erreur_860026350 = i_LireReqConsTabDist()

#Recherche du type d'acces
erreur_860026350 = i_LireChaineECCv( instTypAccTving_860026350, pt_ECCv_860026350)
SI erreur_860026350 == 0
ALORS
	i_get_sub_str(pt_ECCv_860026350, 0, 0, pt_TypeAcces_860026350)
FINSI

#Recherche de l'AID
res_860026350 = 0
instECCv_860026350 = i_LireEntierECCv( instTypAccTving_860026350 )
res_860026350 = i_LireInfoECC( instTypAccTving_860026350, instECCv_860026350 )
SI ( res_860026350 != 0)
ALORS
	erreur_860026350 = i_LireImsiInfo( res_860026350, 0, 8, pt_AID_860026350)
FINSI

#Recherche du type de client
res_860026350 = 0
res_860026350 = i_LireInfoECC( instTypCliRevod_860026350, 0 )
SI ( res_860026350 != 0)
ALORS
	erreur_860026350 = i_LireChaineInfo( res_860026350, 0, 8, pt_temp_860026350)
	# 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_860026350 = i_recupererValeur (pt_temp_860026350,pt_TypeClient_860026350,i_strlen(pt_temp_860026350),i_get_val_oct(255, 1))
FINSI

SI i_strcmp(pt_TypeClient_860026350,"") == 0
ALORS 
	i_strcpy(pt_TypeClient_860026350,C_SUBSCRIB_860026350)
FINSI

i_strcpy(pt_TPRESDIV_Cle_860026350,"")
#G3R19Cy DRE
#SI i_strcmp(pt_TypeAcces,"") != 0
SI b_Facturable_860026350 && i_strcmp(pt_TypeAcces_860026350,"") != 0
ALORS
	# Rechercher les informations, liees a la prestation, 
	# dans la table externe des prestations (TPRESDIV) 
	# a partir de la cle constituee : du contexte, du type de DC et du type d'acc?s 
	# ex: cle = C1ORPF  resultat = 0_prestORPF
#G4R4
	# ex: cle = C1_ORP_F  resultat = 0_prestORPF
#	erreur = i_format_str2( pt_temp, "%s%s", C_TPRESDIV_Contexte, C_ORCA_Type )
#	erreur = i_format_str2( pt_TPRESDIV_Cle, "%s%s", pt_temp, pt_TypeAcces )
	erreur_860026350 = i_format_str2( pt_temp_860026350, "%s_%s", C_TPRESDIV_Contexte_860026350, C_ORCA_Type_860026350 )
	erreur_860026350 = i_format_str2( pt_TPRESDIV_Cle_860026350, "%s_%s", pt_temp_860026350, pt_TypeAcces_860026350 )
	
	i_strcpy(pt_temp_860026350, i_get_tab_field( "TPRESDIV", ICAR_UTC_860026350, pt_TPRESDIV_Cle_860026350 ))
	
	erreur_860026350 = i_recupererValeur(pt_temp_860026350, pt_TPRESDIV_DebCre_860026350, i_strlen(pt_temp_860026350),'_')
	
	i_strcpy(pt_TPRESDIV_CodPrest_860026350,pt_temp_860026350)
FINSI

############################
# Controle pour envoi en redistribution
############################
SI b_Facturable_860026350 && i_strcmp(pt_TPRESDIV_CodPrest_860026350,"") == 0
ALORS
	SI i_strcmp(pt_TypeAcces_860026350,"") == 0 
	ALORS
		b_REDIST_860026350 = 1
		i_strcpy(pt_LIBELREDIST_860026350, "Echec:  Type d'Acces absent du referentiel TVING, IDUS_NUM = <")
		erreur_860026350 = i_format_str2( pt_temp_860026350, "%s%s", pt_LIBELREDIST_860026350, pt_IDUS_NUM_860026350 )
		i_strcpy(pt_LIBELREDIST_860026350,pt_temp_860026350)
	SINON
		b_REDIST_860026350 = 2
		i_strcpy(pt_LIBELREDIST_860026350, "Echec: Code Prestation absent de la table externe TPRESDIV, manque cle <")
		erreur_860026350 = i_format_str2( pt_temp_860026350, "%s%s", pt_LIBELREDIST_860026350, pt_TPRESDIV_Cle_860026350 )
		i_strcpy(pt_LIBELREDIST_860026350,pt_temp_860026350)
	FINSI

	SAUT AVANT_REDIST
FINSI

#G4R5
############################
# Conversion CATALOG_PRICE TTC vers PRICE_HT
############################
SI b_Facturable_860026350 && i_strcmp(pt_TPRESDIV_CodPrest_860026350,"") != 0
ALORS
# G4R5 QC791 test presence champ CATALOG_PRICE
#	erreur = i_get_art_str(g_iartout,$TorcaORP::CATALOG_PRICE,pt_CATALOG_PRICE)
#	SI (i_valid_field_n(g_iartout,$TorcaORP::CATALOG_PRICE) == 1)
#	ALORS
#		erreur = i_get_art_str(g_iartout,$TorcaORP::CATALOG_PRICE,pt_CATALOG_PRICE)
#	SINON
#		erreur = i_get_art_str(g_iartout,$TorcaORP::PRICE_TTC,pt_CATALOG_PRICE)
#	FINSI
	
# G4R5 QC791 prendre champ PRICE_TTC au lieu de CATALOG_PRICE
	erreur_860026350 = i_get_art_str(g_iartout,$TorcaORP::PRICE_TTC,pt_CATALOG_PRICE_860026350)
		
	res_860026350 = -1
	SI NUMZONE_860026350 != 7
	ALORS
		#Recherche sequentiel dans la table TXTVA la table peu avoir plusieur cle identique
		
		nb_entree_860026350=i_get_tab_nb_entries(C_TXTVA_860026350,ICAR_UTC_860026350)
		SI(nb_entree_860026350==0)
		ALORS
			trace("Pas de valeur dans la table")
			SAUT FIN_RECHERCHE
		FINSI
		indice_860026350=0

		POINT BOUCLE_NB_ENTRY
		
		erreur_860026350=i_get_tab_one_entry (C_TXTVA_860026350,ICAR_UTC_860026350,indice_860026350,pt_clevaleur_860026350)
		erreur_860026350=i_recupererValeur(pt_clevaleur_860026350,pt_cle_860026350,i_strlen(pt_clevaleur_860026350),';')
		SI i_strcmp(pt_cle_860026350,pt_ZONE_GEO_860026350) == 0
		ALORS
			erreur_860026350=i_recupererValeur(pt_clevaleur_860026350,pt_valeur_860026350,i_strlen(pt_clevaleur_860026350),';')
			erreur_860026350=i_recupererValeur(pt_valeur_860026350,pt_CoefTVA_860026350,i_strlen(pt_valeur_860026350),'|')
			erreur_860026350=i_recupererValeur(pt_valeur_860026350,pt_CoefConvTVA_860026350,i_strlen(pt_valeur_860026350),'|')
			erreur_860026350=i_recupererValeur(pt_valeur_860026350,pt_DateDeb_860026350,i_strlen(pt_valeur_860026350),'|')
			erreur_860026350=i_recupererValeur(pt_valeur_860026350,pt_DateFin_860026350,i_strlen(pt_valeur_860026350),'|')
			
			erreur_860026350 = i_set_art_str (g_iartout10,$Conversion::DATE_STR,pt_DateDeb_860026350)
			date_debut_860026350 = i_get_art_field(g_iartout10, $Conversion::DATE_ASC)
			erreur_860026350 = i_set_art_str (g_iartout10,$Conversion::DATE_STR,pt_DateFin_860026350)
			date_fin_860026350 = i_get_art_field(g_iartout10, $Conversion::DATE_ASC) + C_Jour_860026350
			
			SI ICAR_LOCAL_860026350 >= date_debut_860026350 && ICAR_LOCAL_860026350 < date_fin_860026350
			ALORS
				res_860026350 = 1
				SAUT FIN_RECHERCHE
			FINSI
		FINSI
	
		indice_860026350=indice_860026350+1
		SI(indice_860026350<nb_entree_860026350)
		ALORS
			# continuer la lecture
			SAUT BOUCLE_NB_ENTRY
		FINSI
	FINSI
	
POINT FIN_RECHERCHE
	b_conversion_OK_860026350 = 0

	SI res_860026350 == 1
	ALORS
		SI i_strcmp(pt_CoefTVA_860026350,"1") != 0
		ALORS
			# Recalcul du montant HT
			# pt_CATALOG_PRICE = Montant TTC
			i_strcpy(pt_MONTANT_HT_860026350,CalculHT_860026233(pt_CATALOG_PRICE_860026350,pt_CoefTVA_860026350,pt_CoefConvTVA_860026350,pt_PRICE_HT_860026350))
			# Modification du montant HT d'origine avec le montant HT recalcule
# DRE - G4R5 QC791 Resize priceHT
			erreur_860026350 = i_resize_tlv ( g_iartout, "T4price_ht","PRICE_HT", i_strlen(pt_PRICE_HT_860026350) )
			erreur_860026350 = i_set_art_str(g_iartout,$TorcaORP::PRICE_HT,pt_PRICE_HT_860026350) 

			# mise au format en 1/10 000 ieme d'euros ex : 1234 centimes d'euros apres conversion 000000123400 			
#			erreur = i_format_str2( pt_temp, "00000000%s0000", pt_MONTANT_HT )
#			i_get_sub_str (pt_temp, -12, -1,pt_MONTANT_HT)
			erreur_860026350 = i_format_str2( pt_temp_860026350, "%s%s", pt_MONTANT_HT_860026350,"00" )
			i_strcpy(pt_MONTANT_HT_860026350,pt_temp_860026350)
			b_conversion_OK_860026350 = 1
			
		SINON
			# Modification du montant HT d'origine avec le montant TTC d'origine
			# ORP/price_HT = ORP/catalog_price
	
			erreur_860026350 = i_resize_tlv ( g_iartout, "T4price_ht","PRICE_HT", i_strlen(pt_CATALOG_PRICE_860026350) )
			erreur_860026350 = i_set_art_str(g_iartout,$TorcaORP::PRICE_HT,pt_CATALOG_PRICE_860026350)
		FINSI
	FINSI
	############################
	# Conversion PRICE_HT en MONTANT_HT
	############################
	#G4R4
	#G4R5 	Arrondi et mise au format en 1/10 000 ieme d'euros ex : 1234 centimes d'euros apres conversion 000000123400 			
	#	pour les DC NON TROUVE dans la table externe "TXTVA" OU dont le pt_CoefTVA = 1
	#SI b_Facturable && i_strcmp(pt_TPRESDIV_CodPrest,"") != 0
	SI b_conversion_OK_860026350 == 0
	ALORS

		erreur_860026350 = i_get_art_str(g_iartout,$TorcaORP::PRICE_HT,pt_temp_860026350)
		i_strcpy(pt_PRICE_HT_860026350,pt_temp_860026350)
		
		# on attend "." point ou "," virgule dans le montant
		i_replace_str(pt_temp_860026350,",",".",pt_temp_860026350)
		erreur_860026350 = i_recupererValeur(pt_temp_860026350, pt_ValEntier_860026350, i_strlen(pt_temp_860026350),'.')
		
		# pt_PRICE_HT = nombre, pt_ValEntier = valeur entiere du nombre et pt_temp = valeur decimale du nombre)
		#	ex: pt_PRICE_HT = "123"
		#			pt_ValEntier = "123" et pt_temp=""
		#	ex: pt_PRICE_HT = "123,42536"
		#			pt_ValEntier = "123" et pt_temp="42536"
		
		#Test si le nombre comporte des decimales
		SI i_strlen(pt_temp_860026350) > 0
		ALORS
			erreur_860026350 = i_format_str2( pt_ValDec_860026350, "%s%s", pt_temp_860026350,"00")
		
			i_get_sub_str(pt_ValDec_860026350, 2, 2 , pt_temp_860026350)
			#test si la 3ieme decimale est superieure a 4
			SI i_strcmp(pt_temp_860026350,"4") > 0 
			ALORS
				#faire l'arrondi comptable
				i_get_sub_str(pt_ValDec_860026350, 0, 1 , pt_ValDec_860026350)
				#prendre les 2 premieres decimales ex pt_ValDec = "42"
				#transformation en entier en passant par le float
				erreur_860026350 = i_str_to_float (pt_ValDec_860026350)
				res_860026350 = i_float_to_entier(erreur_860026350)
				#ex res = 42
				res_860026350 = res_860026350 + 1
				#ex res = 42 + 1 = 43 (arrondi par exces)
				SI res_860026350 > 99
				ALORS
					#faire +1 a la partie entiere du nombre et mettre a zero la partie decimale
					erreur_860026350 = i_str_to_float (pt_ValEntier_860026350)
					ValEntier_860026350 = i_float_to_entier(erreur_860026350) + 1
					#ValEntier = 124
					erreur_860026350 = i_EntierToString ( ValEntier_860026350, pt_ValEntier_860026350, 10)
					#pt_ValEntier = "124"
					i_strcpy(pt_temp_860026350,"00")
				SINON
					erreur_860026350 = i_EntierToString ( res_860026350, pt_ValDec_860026350, 10)
					SI res_860026350 < 10
					ALORS
						erreur_860026350 = i_format_str2( pt_temp_860026350, "%s%s", "0",pt_ValDec_860026350)
					SINON
						i_strcpy(pt_temp_860026350,pt_ValDec_860026350)
					FINSI
		
				FINSI
			SINON	
					i_get_sub_str(pt_ValDec_860026350, 0, 1 , pt_temp_860026350)
		
					
			FINSI
			erreur_860026350 = i_format_str2( pt_PRICE_HT_860026350, "%s%s", pt_ValEntier_860026350,pt_temp_860026350 )
			erreur_860026350 = i_format_str2( pt_MONTANT_HT_860026350, "%s%s", pt_PRICE_HT_860026350,"00")
			#concatenation de la partie entiere et de la partie decimale arrondie + jout de 2 zeros pour mettre en 10 000 ieme d'Euro
			# ex pt_MONTANT_HT = 1234300
		
		SINON
			erreur_860026350 = i_format_str2( pt_MONTANT_HT_860026350, "%s%s", pt_ValEntier_860026350,"0000")
			# ex pt_MONTANT_HT = 1230000
		
		FINSI
	FINSI
FINSI


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

# ALLEGRO_PDZ

SI b_Facturable_860026350 && i_strcmp(pt_TPRESDIV_CodPrest_860026350,"") != 0
ALORS
	erreur_860026350 = i_AjouterCouranteECC(instALLEGRO_860026350)
FINSI 

POINT AVANT_REDIST

SI b_REDIST_860026350 == 0 || cpt_redist_860026350 == 2
ALORS
	erreur_860026350 = i_AjouterCouranteECC(instREVOD_860026350)
FINSI

SI cpt_redist_860026350 == 0
ALORS
	erreur_860026350 = i_AjouterCouranteECC(instMMDM_860026350)
FINSI


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


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

#--------------------------------------------------------------------------
# ALLEGRO_PDZ
#--------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instALLEGRO_860026350) )
ALORS
	#trace("Stockage vers ALLEGRO_PDZ")

#        SI ( i_dup_art_dest( g_iartout, g_iartout2, C_TallegroPresDiv ) )
        SI ( i_dup_art( g_iartout, C_TallegroPresDiv_860026350, g_iartout2 ) )
        ALORS
		code_errone_860026350 = 0xA0D1
		erreur_860026350 = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone_860026350,C_TallegroPresDiv_860026350,C_ARTICLE_860026350)
                SAUT DISTRI_ERR
        FINSI

	#CODART
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::CODART,"E1")
	
	#NOLIG
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::NOLIG,pt_IDUS_NUM_860026350)

	#CODPRES
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::CODPRES,pt_TPRESDIV_CodPrest_860026350)
	
	#DEBCRED
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::DEBCRED,pt_TPRESDIV_DebCre_860026350)

	#DATPREST
	erreur_860026350 = i_set_art_field(g_iartout2,$TallegroPresDiv::DATPREST,ICAR_LOCAL_860026350)

	#CODEMET
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::CODEMET,"N57P")

	#MONTANT
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::MONTANT,pt_MONTANT_HT_860026350)

	#DEVISE
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::DEVISE,"EUR")
	
	#HEURE
        erreur_860026350 = i_set_art_field(g_iartout10,$Conversion::DATE_ASC,ICAR_LOCAL_860026350)

        erreur_860026350 = i_get_art_str(g_iartout10, $Conversion::DATE_STR,pt_ICAR_LOCAL_860026350)
	i_get_sub_str(pt_ICAR_LOCAL_860026350,8,11,pt_TIME_860026350)
	erreur_860026350 = i_set_art_str(g_iartout2,$TallegroPresDiv::HEURE,pt_TIME_860026350)
FINSI


#--------------------------------------------------------------------------
# REVOD
#--------------------------------------------------------------------------
  # Duplication article en entree
SI ( !i_ChercherCouranteECC(instREVOD_860026350) )
ALORS
	SI ( i_dup_art_id(g_iartout,g_iartout3) )
	ALORS
		#trace("Erreur de i_dup_art")
		code_errone_860026350 = 0xA0D0
		code_errone_860026350 = code_errone_860026350 + EFFICACE_860026350
		erreur_860026350 = i_PlvMessEmettre(8602,2,g_iartout,"",3,code_errone_860026350,C_TrevodTorcaORP_860026350,C_ARTICLE_860026350)
		SAUT  DISTRI_ERR
	FINSI
	erreur_860026350 = i_rename_art(g_iartout3, C_TrevodTorcaORP_860026350)

	
# DRE G4R6
	#*** Suppression Champs obligatoires *** 
	erreur_860026350 = i_supprChamp(g_iartout3, "T3term_connect")
# \DRE G4R6

	#*** Ajout Champs obligatoires *** 
	erreur_860026350 = i_ajoutChampNum(g_iartout3, $TrevodTorcaORP::T4type_client,$TrevodTorcaORP::TYPE_CLIENT,8)
	
	# TYPE_CLIENT
	erreur_860026350 = i_set_art_str(g_iartout3, $TrevodTorcaORP::TYPE_CLIENT, pt_TypeClient_860026350)
	erreur_860026350 = i_resize_tlv ( g_iartout3, "T4type_client","TYPE_CLIENT", i_strlen(pt_TypeClient_860026350) )

	# TYPE_ACCES
	erreur_860026350 = i_set_art_str(g_iartout3, $TrevodTorcaORP::TYPE_ACCES, pt_TypeAcces_860026350)
	erreur_860026350 = i_resize_tlv ( g_iartout3, "T4type_acces","TYPE_ACCES", i_strlen(pt_TypeAcces_860026350) )

FINSI


#--------------------------------------------------------------------------
# MMDM
#--------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instMMDM_860026350) )
ALORS
	SI ( i_dup_art_id(g_iartout,g_iartout4) )
	ALORS
		#trace("Erreur de i_dup_art")
		code_errone_860026350 = 0xA0D0
		code_errone_860026350 = code_errone_860026350 + EFFICACE_860026350
		erreur_860026350 = i_PlvMessEmettre(8602,2,g_iartout,"",3,code_errone_860026350,C_TmmdmTorcaORP_860026350,C_ARTICLE_860026350)
		SAUT  DISTRI_ERR
	FINSI
	erreur_860026350 = i_rename_art(g_iartout4, C_TmmdmTorcaORP_860026350)

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

	# TYPE
	erreur_860026350=i_set_art_str(g_iartout4,$TmmdmTorcaORP::TYPE,C_ORCA_Type_860026350)

	# TYPE_CLIENT
	erreur_860026350 = i_set_art_str(g_iartout4, $TmmdmTorcaORP::TYPE_CLIENT, pt_TypeClient_860026350)
	erreur_860026350 = i_resize_tlv ( g_iartout4, "T4type_client","TYPE_CLIENT", i_strlen(pt_TypeClient_860026350) )

	# TYPE_ACCES
	erreur_860026350 = i_set_art_str(g_iartout4, $TmmdmTorcaORP::TYPE_ACCES, pt_TypeAcces_860026350)
	erreur_860026350 = i_resize_tlv ( g_iartout4, "T4type_acces","TYPE_ACCES", i_strlen(pt_TypeAcces_860026350) )

	# SGTQS
	erreur_860026350=i_set_art_str(g_iartout4,$TmmdmTorcaORP::SGTQS,pt_SGTQS_860026350)

	# AID
	erreur_860026350=i_set_art_str(g_iartout4,$TmmdmTorcaORP::AID,pt_AID_860026350)
	erreur_860026350 = i_resize_tlv ( g_iartout4, "T4aid","AID", i_strlen(pt_AID_860026350) )
	
	# CODE_PREST
	taille_860026350 = i_get_art_field(g_iartout4, $TmmdmTorcaORP::L4cod_prest)
	erreur_860026350=i_set_art_str(g_iartout4,$TmmdmTorcaORP::CODE_PREST,pt_TPRESDIV_CodPrest_860026350)
	SI i_strlen(pt_TPRESDIV_CodPrest_860026350) < taille_860026350
	ALORS
		erreur_860026350 = i_resize_tlv ( g_iartout4, "T4cod_prest","CODE_PREST", i_strlen(pt_TPRESDIV_CodPrest_860026350) )
	FINSI
	
	# DATE_LOCALE
	erreur_860026350=i_set_art_field(g_iartout4,$TmmdmTorcaORP::DATE_LOCALE,ICAR_LOCAL_860026350)

FINSI


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

#----------------------------------------------------------------------------
# ALLEGRO_PDZ
#----------------------------------------------------------------------------
SI ( !i_ChercherCouranteECC(instALLEGRO_860026350) )
ALORS
	erreur_860026350=i_stocke_art_iecc(g_iartout2, instALLEGRO_860026350)
	trace("Emission vers ALLEGRO_PDZ reussie")
FINSI


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


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

#----------------------------------------------------------------------------
# ENVOI EN REDISTRIBUTION
#----------------------------------------------------------------------------
SI b_REDIST_860026350 > 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_860026350,"" )
#ENDIF

erreur_860026350 = i_make_art_rej(g_iartin, g_iartout7, code_rejet_860026350)
erreur_860026350 = 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_860026350,"" )
#ENDIF
erreur_860026350 = i_stocke_art( g_iartin, 0, PT_ELIMINE, 0 )

RETOUR TRAIT_OK

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

POINT DISTRI_REDIST

SI (cpt_redist_860026350 == 0)
ALORS
	SI b_REDIST_860026350 == 1
	ALORS
		erreur_860026350 = i_PlvMessEmettre(8603,2,g_iartin,"",3,pt_LIBELREDIST_860026350,C_ARTICLE_860026350,pt_SGTQS_860026350)
	SINON
		erreur_860026350 = i_PlvMessEmettre(8604,2,g_iartin,"",3,pt_LIBELREDIST_860026350,C_ARTICLE_860026350,pt_SGTQS_860026350)
	FINSI
FINSI

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

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

RETOUR TRAIT_OK
