FVERS = 2
REFOBJET : ID = 860026613 ; ID_INIT = 860026256 ; NOM = Tfe6dc ; VERSION = V155 ; DATE = 10/12/14-15:33:16 ( 1418225596 ) ; CAT = 8 ; ETAT = 0 ; NB_FILS =1 ; ID_FILS = 860026233
ID_EST = 860000136
COMMENT = "10/12/2014 - G4R8 QC862 : pb d'affichage du champ ECC_FACT sur l'ECC SYMPHONIE + envoi a CASPER au 1er tour de Redistribution ---- 24/06/2014 - DRE - G4R7 QC829  #13/05/2014 - DRE - G4R6 QC817 #24/04/2014 - DRE - G4R6 QC807   #25/03/2014 - DRE - G4R6 : Lot2 prise en compte des nouveaux Type Control envoy?s par la base (C+S ) #11/02/2013 - DRE - G4R02 : QC677, rechercher SCP-SRP uniquement si Dde non international"
CREATEUR = drey
# DEBUT_CORPS
PCODE_PERE=Pdistribution
############################################################################
# Pcode de DISTRIBUTION Tfe6dc
# Fichier : Tfe6dc.src
#
# Version : %version: 1.19 %
#
# Date    : %date_modified: 03/04/02 11:05 %
#            le 30/04/02 par URS (NSA)
#
# Distribution :
#    DC sur faisceau entrant non GSM efficace et inefficace
#
# En entree :
#    Article : Tfe6dc  (domaine Dvndc)
#    Header: Txx8he
#
# En sortie:
#    CENTAURE
#    Symphonie
#
# HISTORIQUE :
#	17/06/2002 - PSA - FO1510  : Encapsulation pour le stockage en errone
#	16/07/2002 - RBE : Ajout variables EPORTABILITE et SPORTABILITE
#		           et Modif. mise au format NDEDE
#	02/10.2002 - MCH - FO 20235 : SUP sur FOR
#	07/10/2002 - MCH - FO 20260 : format IDUS_NUM
#	21/10/2002 - PSA - FO50 : traduction du B et C pour le demande
#	28/10/2002 - RBE : specif.4.8 : Modif. CCD en fonction de la portabilite
#	14/10/2002 - RBE : Ajout de l'envoie a APACHE
#	21/11/2002 - RBE : FO115 + Modif. alarme tables externes
#	21/01/2003 - MCH : GIR2C9 : FOR --> FORDC
#	07/04/2003 - RBE : FO245 : recup. de MINE et APPLI si VN8(ART=4)
#	22/07/2003 - DRE - Modif calcul codeoperateur
#	30/07/2003 - MCH - G2R0CJ SCP Correlation
# 	02/09/2003 - RBE - FO392 : Initialisation des variables Pcode
#	22/10/2003 - MCH - FO424 : palliatif pour bug de lireChpCdc
#	18/12/2003 - RBE : FO528 : Modif. initialisation de pointeurs
#	06/01/2004 - PSA - FO529 : inhibition envoi en correlation (Cg)
# 	02/06/2004 - NSA - G2R0Cl: integration des codes d erreurs
#	04/10/2004 - JLG - G2R0Caa : FORDC --> CENTAUREDC
#	24/01/2005 - RBE - G2R0Cnn : fusion Cn + Caa
#	09/05/2005 - JLG : G2R1Ch REJET2
#	09/05/2005 - JLG - FO1276
#	30/05/2005 - JLG - Fusion G2R1Ca
#	21/07/2005 - PSA - Cj : inef speciaux
#				DC_MAYOTTE_EXPE : le DC est stocke en divers au traitement. Les criteres de distri ne sont donc pas impactes.
#	25/10/2005 - PSA - G2R2Co : FO 1538
# 	25/11/2005 - PKH - G2R2Ca : Modification Apache alimente par les dc inefficaces des DC N0 URGENTS
#	05/01/2006 - DRE - FO1666 G2R2Ca Remplacement de i_retrait_tlv() par i_supprChamp()
#	27/09/2006 - JLG : G2R2Cv REJET3 (119 enfance maltraitee)
#	25/10/2006 - JLG - G2R2Cv modif pt_NORM car trop court
# 	06/11/2007 - PKH - G3R3Cv ajout REJET = 14 dans le cadre des appels 118 PTD & kiosque
#	25/03/2008 - JLG - ParamFTSA-G3R6 FO2359 evol spec S3F1
# 	08/11/2011 - RHE - G3R23 DC SU en deprt pour CASPER
# 	01/12/2011 - RHE - G3R23 QC553 DC SU en deprt pour CASPER avec DEDENSUC
#	11/02/2013 - DRE - G4R02 : QC677, rechercher SCP-SRP uniquement si Dde non international
#	28/05/2013 - THE - G4R3 suppression envoi vers APACHE
#	25/03/2014 - DRE - G4R6 : Lot2 prise en compte des nouveaux Type Control envoy?s par la base (C+S )
#	24/04/2014 - DRE - G4R6 QC807
#	13/05/2014 - DRE - G4R6 QC817
#	24/06/2014 - DRE - G4R7 QC829
#	10/12/2014 - DRE - G4R8 QC862 : pb d'affichage du champ ECC_FACT sur l'ECC SYMPHONIE + envoi a CASPER au 1er tour de Redistribution 
#
############################################################################

############################################################################
# Declarations
############################################################################
#Constantes pour message d alarme

DEFINITION 	C_Article	"Tfe6dc"
DEFINITION 	C_InstSYMP	"SYMP"
DEFINITION 	C_InstCENTAUREDC "CENTAUREDC"
#G4R3 DEFINITION 	C_InstAPACHE_DC	"APACHE_DC"
DEFINITION 	C_TcentaureDC 	"TcentaureDC"
#G4R3 DEFINITION 	C_TapacheDC	"TapacheDC"

DEFINITION	NUMTAB		1
DEFINITION	ZONEMETRO	7
# G3R23
DEFINITION	C_InstCASPER	"CASPER"
DEFINITION	C_Tcasper	"TcasperTfe6dc"
#DRE QC677
DEFINITION	CCD_Internat	 6
#DRE G4R6 lot2
DEFINITION	CPT_CPS_Loc	16
DEFINITION	CPT_CPS_RI	17
DEFINITION	C_DATCPS	"DATCPS" 
DEFINITION	TD_SVA	9
DEFINITION	C_INST_ALICE	"ALICE"
#\DRE G4R6 lot2


# VerifPcode
#REGISTRE	ENTIER		type_corr
#REGISTRE	ENTIER		date
REGISTRE	ENTIER		module_corr_ok
REGISTRE	ENTIER		ddebut
REGISTRE	ENTIER		gmt_date
REGISTRE	ENTIER		instSYMPH
REGISTRE	ENTIER		instCENTAURE
#G4R3 REGISTRE	ENTIER		instAPACHE
REGISTRE	ENTIER		EFFICACE
REGISTRE	ENTIER		erreur
REGISTRE	ENTIER		info
REGISTRE	ENTIER		res
REGISTRE	ENTIER		ICAR_REL
REGISTRE	ENTIER		ICAR_ABS
REGISTRE	ENTIER		dduree
REGISTRE	ENTIER		tax
REGISTRE	ENTIER		dpivot
REGISTRE	ENTIER		EPORTABILITE
REGISTRE	ENTIER		SPORTABILITE
REGISTRE	ENTIER		CCD
REGISTRE	ENTIER		CCD_REEL
REGISTRE	ENTIER		MINE
REGISTRE	ENTIER		ART
REGISTRE	ENTIER		APPLI
REGISTRE	ENTIER		DC_CAA
REGISTRE	ENTIER		CORR_OK
REGISTRE	ENTIER		id_corr
REGISTRE	ENTIER		valA
REGISTRE	ENTIER		valB
REGISTRE	ENTIER		valC
REGISTRE	ENTIER		valD
REGISTRE	ENTIER		valE
REGISTRE	ENTIER		valF
REGISTRE	ENTIER		valG
REGISTRE	ENTIER		valH
REGISTRE	ENTIER		valI
REGISTRE	ENTIER		lgr
REGISTRE	ENTIER		REJET
REGISTRE	ENTIER		code_errone
REGISTRE	ENTIER		INF_DEDE
REGISTRE	ENTIER		val_INEF
# G3R23
REGISTRE	ENTIER		instCASPER
REGISTRE	ENTIER		b_NSUC
#DRE G4R6 lot2
REGISTRE	ENTIER		Date_CPS
REGISTRE	ENTIER		instALICE 
REGISTRE	ENTIER		longueur 
REGISTRE	ENTIER		trait_ok
REGISTRE	ENTIER		bREDIST
#DRE - G4R7 QC829
REGISTRE 	ENTIER 		b_Fact_CPS_Loc
REGISTRE 	ENTIER 		b_Fact_CPS_RI
#QC862
REGISTRE 	ENTIER 		bREDISTALICE


# VerifPcode
#REGISTRE	POINTEUR	pt_TEMP2
#REGISTRE	POINTEUR	pt_XY
#G4R3 REGISTRE	POINTEUR	pt_URGENCE_APACHE
REGISTRE	POINTEUR	pt_NORM
REGISTRE	POINTEUR	pt_IDUS_N
REGISTRE	POINTEUR	pt_DEDE_N
REGISTRE	POINTEUR	pt_COCA
REGISTRE	POINTEUR	pt_COCAV
REGISTRE	POINTEUR	pt_buffer
REGISTRE	POINTEUR	pt_temp
REGISTRE	POINTEUR	pt_SGTQS
REGISTRE	POINTEUR	pt_BUF
REGISTRE	POINTEUR	pt_CodeOp
REGISTRE	POINTEUR	pt_TEMP
REGISTRE	POINTEUR	pt_TCOMMUT
REGISTRE	POINTEUR	pt_INEF_STD
#G4R3 REGISTRE	POINTEUR	pt_CODE_APACHE
#G4R3 REGISTRE	POINTEUR	pt_INEF_APACHE
REGISTRE	POINTEUR	pt_INEF_COMMUT
REGISTRE	POINTEUR	pt_DEDE_DIST_N
REGISTRE	POINTEUR	pt_DEDE
REGISTRE	POINTEUR	pt_cas_corr
# G3R23
REGISTRE	POINTEUR	pt_NSUC
# DRE G4R6 lot2
REGISTRE	POINTEUR	pt_MESSAGE
REGISTRE	POINTEUR	pt_CODE_TARIF 
REGISTRE	POINTEUR	pt_TYPE_EDIT 
REGISTRE	POINTEUR	pt_LIBELREDIST


# Initialisation
val_INEF = 0
#G4R3 instAPACHE	= 0
instSYMPH 	= 0
instCENTAURE  	= 0
EPORTABILITE 	= 0
SPORTABILITE 	= 0
CCD 		= 255
CCD_REEL	= 255
ART		= 0xFFFFFFFF
MINE		= 0xFFFFFFFF
APPLI		= 0xFFFFFFFF
DC_CAA		= 0
CORR_OK 	= 0

module_corr_ok	= 0
REJET		= 0
INF_DEDE	= 0
#DRE G4R6 lot2
Date_CPS = 0
instALICE = -1
tax = 0
longueur = 0
bREDIST = 0
#DRE - G4R7 QC829
b_Fact_CPS_Loc = 0
b_Fact_CPS_RI = 0
#QC862
bREDISTALICE = 0


# Allocation de memoire
# Buffeur de 16 octets + 1 (pour le /0 final)
#G4R3 pt_URGENCE_APACHE	 = "0569587521589478585865"
#modif pt_NORM car trop court
pt_NORM			 = "389389389389389389389389389389389389389389389389389389"

pt_IDUS_N 		 = "44444444444444444444444444444444444"
pt_DEDE_N 		 = "555555555555555555555555555555555555555"
pt_COCA			 = "432112345"
pt_COCAV		 = "234512345"
pt_buffer 		 = "123456789012345612345 "
pt_temp 		 = "pt_temp99999999999123456789"
pt_SGTQS		 = "3030303030303030303030303030303030"
pt_BUF 			 = "12345678912345678912345612345"
pt_CodeOp 		 = "04567890123456789012345678912312345"
pt_TEMP 		 = "23456765489043556764546890875612345"
#pt_TEMP2 		 = "65675672342342346765436890875612345"
pt_TCOMMUT		 = "20202020202020202020202020202012345"
pt_INEF_STD		 = "60606060606060606060606060606012345"
#G4R3 pt_CODE_APACHE		 = "70707070707070707070707070707012345"
#G4R3 pt_INEF_APACHE		 = "80808080808080808080808080808012345"
pt_INEF_COMMUT		 = "90909090909090909090909090909012345"
#pt_XY			 = "089876"
pt_DEDE_DIST_N		 = "86456778567876789675"
pt_DEDE			 = "46564786674576789675"
pt_cas_corr		 = "66666666666666666666"

pt_NSUC = "pt_NSUC1234567890123456789012345"
# DRE G4R6 lot2
pt_MESSAGE = "pt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGEpt_MESSAGE"
pt_LIBELREDIST	 = "pt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDISTpt_LIBELREDIST"
pt_CODE_TARIF 	 = "pt_CODE_TARIFpt_CODE_TARIF"
pt_TYPE_EDIT	 = "pt_TYPE_EDIT"


# initialisation
# VerifPcode
#G4R3 i_strcpy(pt_URGENCE_APACHE,"")
i_strcpy(pt_NORM,"")
i_strcpy(pt_IDUS_N,"")
i_strcpy(pt_DEDE_N,"")
i_strcpy(pt_COCA,"")
i_strcpy(pt_COCAV,"")
i_strcpy(pt_buffer,"")
i_strcpy(pt_temp,"")
i_strcpy(pt_SGTQS,"")
i_strcpy(pt_BUF,"")
i_strcpy(pt_CodeOp,"")
i_strcpy(pt_TEMP,"")
i_strcpy(pt_TCOMMUT,"")
i_strcpy(pt_INEF_STD,"")
#G4R3 i_strcpy(pt_CODE_APACHE,"")
#G4R3 i_strcpy(pt_INEF_APACHE,"")
i_strcpy(pt_INEF_COMMUT,"")
i_strcpy(pt_DEDE_DIST_N,"")
i_strcpy(pt_DEDE,"")
i_strcpy(pt_cas_corr,"")

i_strcpy(pt_NSUC,"")
i_strcpy(pt_SGTQS,"")
# DRE G4R6 lot2
i_strcpy(pt_MESSAGE, "")
i_strcpy(pt_LIBELREDIST, "")
i_strcpy(pt_CODE_TARIF , "    ")
i_strcpy(pt_TYPE_EDIT , " ")



# DRE G4R6 Lot3
###################################################################################
################    trait_ok : nb de passage en redistribution   ##################
###################################################################################
trait_ok = -1
trait_ok = i_LireRedistCpt()
#\DRE G4R6 Lot3


############################################################################
# Variables Fonctionnelles Globales
############################################################################

# Variable fonctionnelle EFFICACE
trace("[Tfe6dc_dis] Calcul de EFFICACE")

#Initialisation de EFFICACE:
EFFICACE = 0

SI ( (i_valid_field_n(g_iartin,$Tfe6dc::T3cab))||(i_valid_field_n(g_iartin,$Tfe6dc::T3cap2)) )
ALORS
	trace("[Tfe6dc_dis]Champ TAP present ")

	#Recuperation du bit B de TAP:
	info = i_get_bit_val( i_get_field_val(g_iartin,"TAP"),7)
	trace1("[Tfe6dc_dis]BitB=<%d>",info)

	#SI le bit B de TAP vaut 0
	SI(!info)
	ALORS
		EFFICACE = 1
	SINON
		EFFICACE = 0
	FINSI
SINON
	code_errone = 0xA080
	code_errone = code_errone + 2
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "TAP non valide" )
	SAUT DISTRI_ERR
FINSI
#trace1("[Tfe6dc_dis]EFFICACE=%d", EFFICACE)

#--------------------------
# REJET
#--------------------------

SI (i_valid_field_n(g_iartin,$T4rejet))
ALORS
	REJET = i_get_art_field(g_iartin,$REJET)
FINSI

#DRE - G4R7 QC829
SI REJET == CPT_CPS_Loc
ALORS
	b_Fact_CPS_Loc = 1
FINSI
SI REJET == CPT_CPS_RI
ALORS
	b_Fact_CPS_RI = 1
FINSI
#\DRE - G4R7 QC829


#trace1("[Tfe6dc_dis]REJET = %d",REJET)

#--------------------------
# CCD
#--------------------------

# Le CCD est rajoute dans le pcode de traitement
SI ( i_valid_field_n( g_iartin, $CCD ) )
ALORS
	CCD = i_get_art_field( g_iartin, $CCD )
	#trace1( "[Tfe6dc_dis] Tta6dc - CCD = <%d>", CCD )
FINSI

dpivot = i_get_art_field( g_iartin, $Tfe6dc::dpivot)


INF_DEDE=i_get_art_field(g_iartin, $Tfe6dc::INF_DEDE)

#DRE G4R6 Lot2
#erreur = i_get_art_str( g_iartin, $Tfe6dc::NDE, pt_NORM )
#trace2( "[Tfe6dc_dis] initialisation de NDEDE a <%s>", pt_NORM, "" )
#i_replace_str(pt_NORM,"BCDE","AJSC",pt_NORM)

i_strcpy(pt_SGTQS,i_LireEECSGTQS(g_ieec))
#trace2("[Tfe6dc_dis]Apres LireEECSGTQS=%s", pt_SGTQS, "")

#\DRE G4R6 Lot2
val_INEF=i_get_art_field(g_iartin, $Tfe6dc::INEF)

############################################################################
# Envoi en Correlation
############################################################################

erreur=i_get_art_str(g_iartin, $NDE, pt_DEDE)

res = i_set_art_str(g_iartin,$CORR_NDE,pt_DEDE)
res = i_strlen(pt_DEDE)
res = res - 9
i_get_sub_str(pt_DEDE,res,-1,pt_DEDE_DIST_N)

# Inhibition de la correlation
SI ((module_corr_ok) && (g_ipt == PT_OK) && EFFICACE && (!i_strplcmp(pt_DEDE,"84008",0,5) || !i_strplcmp(pt_DEDE_DIST_N,"81",0,2) || !i_strplcmp(pt_DEDE_DIST_N,"82",0,2)))
ALORS
	trace("[Tfe6dc_dis]===== DIST: Article mis en CORRELE =====")
	# Initialisation de la table des couples de correlation
	erreur = i_initialiserPrmCorr(g_iartin)
	trace1("[Tfe6dc_dis]CORR_DIST - code retour i_initialiserPrmCorr %d", erreur)

	# Ajouter le couplet NXXxxx, yyyy a la table de couplets
	trace("[Tfe6dc_dis]CORR_DIST - Ajout cas correlation")
	i_strcpy(pt_cas_corr,"SCP_1")

	# Calcul de id_corr : NDR
	lgr = i_get_art_fieldlength(g_iartin,$NDR)

	SI (lgr >= 1)
	ALORS
		valI = i_get_art_fieldtab(g_iartin,$NDR,lgr-1)
	SINON
		valI = 0
	FINSI

	SI (lgr >= 2)
	ALORS
		valH = i_get_art_fieldtab(g_iartin,$NDR,lgr-2)
	SINON
		valH = 0
	FINSI

	SI (lgr >= 3)
	ALORS
		valG = i_get_art_fieldtab(g_iartin,$NDR,lgr-3)
	SINON
		valG = 0
	FINSI

	SI (lgr >= 4)
	ALORS
		valF = i_get_art_fieldtab(g_iartin,$NDR,lgr-4)
	SINON
		valF = 0
	FINSI

	SI (lgr >= 5)
	ALORS
		valE = i_get_art_fieldtab(g_iartin,$NDR,lgr-5)
	SINON
		valE = 0
	FINSI

	SI (lgr >= 6)
	ALORS
		valD = i_get_art_fieldtab(g_iartin,$NDR,lgr-6)
	SINON
		valD = 0
	FINSI

	SI (lgr >= 7)
	ALORS
		valC = i_get_art_fieldtab(g_iartin,$NDR,lgr-7)
	SINON
		valC = 0
	FINSI

	SI (lgr >= 8)
	ALORS
		valB = i_get_art_fieldtab(g_iartin,$NDR,lgr-8)
	SINON
		valB = 0
	FINSI

	SI (lgr >= 9)
	ALORS
		valA = i_get_art_fieldtab(g_iartin,$NDR,lgr-9)
	SINON
		valA = 0
	FINSI

	SI ( (valA < 0) || (valA > 9))
	ALORS
		valA = 0
	FINSI

	SI ( (valB < 0) || (valB > 9))
	ALORS
		valB = 0
	FINSI

	SI ( (valC < 0) || (valC > 9))
	ALORS
		valC = 0
	FINSI

	SI ( (valD < 0) || (valD > 9))
	ALORS
		valD = 0
	FINSI

	SI ( (valE < 0) || (valE > 9))
	ALORS
		valE = 0
	FINSI

	SI ( (valF < 0) || (valF > 9))
	ALORS
		valF = 0
	FINSI

	SI ( (valG < 0) || (valG > 9))
	ALORS
		valG = 0
	FINSI

	SI ( (valH < 0) || (valH > 9))
	ALORS
		valH = 0
	FINSI

	SI ( (valI < 0) || (valI > 9))
	ALORS
		valI = 0
	FINSI
	id_corr = (valA*100000000) + (valB*10000000) + (valC*1000000) + (valD*100000) + (valE*10000) + (valF*1000) + (valG*100) + (valH*10) + valI

	trace2("[Tfe6dc_dis]CORR_DIST - cas: %s", pt_cas_corr, "")
	trace1("[Tfe6dc_dis]CORR_DIST - id: %d", id_corr)
	erreur = i_ajouterPrmCorr(g_iartin, pt_cas_corr, id_corr)
	trace1("[Tfe6dc_dis]CORR_DIST - code retour i_ajouterPrmCorr %d", erreur)

	erreur = i_stocke_art(g_iartin, 0, PT_CORRELE, 0)
FINSI

SI ( g_ipt == PT_CORRELE )
ALORS
	CORR_OK = 1
	#type_corr = i_get_art_field(g_iartin,$CORR_OK)
	# VerifPcode
	#erreur = i_get_art_str(g_iartin,$XY,pt_XY)
FINSI

# ICAR_REL et ICAR_ABS
ICAR_ABS = i_get_art_field(g_iartin,$DATE)
SI (ICAR_ABS == -1)
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_get_art_field/DATE" )
	SAUT DISTRI_ERR
FINSI
ICAR_REL = i_date_locale(g_ieec,g_iartin,ICAR_ABS)

SI ( ICAR_REL == -1 )
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_date_locale/ICAR_ABS" )
	SAUT DISTRI_ERR
FINSI

# controle des metachamps

SI (i_get_art_field(g_iartin,$ddebut) == -1)
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_get_art_field/ddebut" )
	SAUT DISTRI_ERR
FINSI

SI (i_get_art_field(g_iartin,$dfin) == -1)
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_get_art_field/dfin" )
	SAUT DISTRI_ERR
FINSI

dduree = i_get_art_field( g_iartin, $Tfe6dc::dduree )
tax    = i_get_art_field( g_iartin, $Tfe6dc::tax )
#dpivot = i_get_art_field( g_iartin, $Tfe6dc::dpivot)

ddebut = i_get_art_field(g_iartin,$ddebut)

SI (ddebut == -1)
ALORS
	code_errone = 0xA080
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre( 8600, 2, g_iartin,"", 3,code_errone, C_Article, "i_get_art_field/ddebut" )
	SAUT DISTRI_ERR
FINSI

gmt_date = i_DHgetCe2gTime(NUMTAB,ZONEMETRO,ddebut)

erreur = i_get_art_str( g_iartin, $Tfe6dc::INEF, pt_INEF_COMMUT )


#G3R23
# NSUC
#DRE G4R6 lot2  remplace pt_BUF par pt_NORM
#erreur = i_get_art_str( g_iartin, $NDE, pt_BUF )
#erreur = i_get_art_str( g_iartin, $NDE, pt_NORM )
SI ( i_valid_field_n(g_iartin, $NORMAL ) )
ALORS
	erreur = i_get_art_str(g_iartin, $NORMAL, pt_NORM )
SINON
	SI ( i_valid_field_n(g_iartin, $NDE ) )
	ALORS
		erreur = i_get_art_str(g_iartin, $NDE, pt_NORM)
	FINSI
FINSI
#\DRE G4R6 lot2  remplace pt_BUF par pt_NORM
		

#G3R23 QC553
res = i_strlen(pt_NORM)
SI (res > 9)
ALORS
	i_get_sub_str(pt_NORM,-9,-1,pt_NORM)
FINSI

i_strcpy(pt_NSUC, i_get_tab_field("TNSUC", gmt_date, pt_NORM))
SI (i_strcmp(pt_NSUC,"") != 0 )
ALORS
	b_NSUC = 1
	SI (i_strcmp(LCASE(pt_NSUC),"vide") == 0 )
	ALORS
		i_strcpy(pt_NSUC," ")
	FINSI
FINSI

trace2("Recherche NSUC - NDE   : <%s>", pt_NORM, "")
trace1("Recherche NSUC - b_NSUC : %x",b_NSUC)
#\DRE G4R6 lot2  remplace pt_BUF par pt_NORM

#DRE G4R6 lot2 
#####################################################################
# 	              Traitement C+S (CPS)

erreur = i_cree_art("Conversion",g_iartout10)


#DRE - G4R7 QC829
#SI (REJET==CPT_CPS_Loc)
SI b_Fact_CPS_Loc || b_Fact_CPS_RI
ALORS

	i_strcpy(pt_TEMP, i_get_tab_field( "TDATCPS", gmt_date, C_DATCPS ))

	erreur = i_set_art_str (g_iartout10,$Conversion::DATE_STR,pt_TEMP)
	Date_CPS = i_get_art_field(g_iartout10, $Conversion::DATE_ASC)
			
	SI ddebut < Date_CPS
	ALORS
		erreur = i_format_str2(pt_MESSAGE," AR <%s> avec date DC inferieure a la date d'activation <%s> de la facturation CPS",pt_NORM,pt_TEMP)
		code_errone = 0xA080
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre( 8599, 1, g_iartin,"", 3,code_errone, C_Article, pt_MESSAGE )
		SAUT DISTRI_DIV
	SINON
		#######################################
		#  Soumission de la requete de consultation d'une table de distribution ALICE
		#######################################
#DRE G4R6 QC807 pt_NDE remplace par pt_NORM
#		i_strcpy(pt_NDE,pt_NORM)
		SI i_strplcmp (pt_NORM,"0",0,1) == 0
		ALORS
			i_get_sub_str(pt_NORM,1,-1,pt_NORM) 	
		FINSI
		longueur = i_conv_ascii_dcb (pt_NORM, pt_TEMP)
		SI (i_EnvoiReqConsTabDist( TD_SVA,gmt_date,pt_TEMP,longueur,0,1) != 0)
		ALORS
			#trace("Erreur i_EnvoiReqConsTabDist ALICE")
#QC862
#			bREDIST = 1
			bREDISTALICE = 1
			i_strcpy(pt_LIBELREDIST,"Echec sur i_EnvoiReqConsTabDistDouble ALICE ")
		FINSI
		
		#######################################
		# Recherche de l'instance ECC ALICE
		#######################################
		instALICE = i_LireInstanceECC(C_INST_ALICE)
		SI (!instALICE)
		ALORS
			#trace("Pas d'instance pour ALICE !")
			erreur = i_PlvMessEmettre(8501,1,g_iartin,"",3,C_INST_ALICE,C_Article,g_ieec)
			SAUT DISTRI_ERR
		FINSI
		#trace1("instALICE  =<%d>",instALICE)	

		#######################################
		# Lecture Resultat requete ALICE
		#######################################
		erreur = i_LireReqConsTabDist()
		#trace1("RETOUR i_LireReqConsTabDist retour requette ALICE, erreur=<%d>",erreur)
		SI ( erreur != 0 )
		ALORS
			#trace1( "Erreur i_LireReqConsTabDist ALICE: <%d>", erreur)
#QC862
#			bREDIST = 1
			bREDISTALICE = 1
			i_strcpy(pt_LIBELREDIST,"Echec sur i_LireReqConsTabDistDouble ALICE ")
		FINSI
		res = i_LireInfoECC( instALICE, 0 )
		
		SI (res != 0)
		ALORS
			# AR present dans ALICE
			erreur = i_LireChaineInfo( res, 0, 4, pt_BUF )
			SI i_strcmp(pt_BUF,"") != 0
			ALORS
				i_strcpy(pt_CODE_TARIF,pt_BUF)
			SINON
				# info complementaire CODE_TARIF vide
#QC862
#				bREDIST = 1
				bREDISTALICE = 1
				erreur = i_format_str2(pt_LIBELREDIST," AR <%s> trouve dans LAR ALICE mais aucune info complementaire valorisee",pt_NORM,0)
			FINSI
			
			erreur = i_LireChaineInfo( res, 4, 1, pt_BUF )
			SI i_strcmp(pt_BUF,"") != 0
			ALORS
				i_strcpy(pt_TYPE_EDIT,pt_BUF)
			SINON
				# info complementaire TYPE_EDIT vide
#QC862
#				bREDIST = 1
				bREDISTALICE = 1
				erreur = i_format_str2(pt_LIBELREDIST," AR <%s> trouve dans LAR ALICE mais aucune info complementaire valorisee",pt_NORM,0)
			FINSI
		SINON
#QC862
#			bREDIST = 1
			bREDISTALICE = 1
			erreur = i_format_str2(pt_LIBELREDIST," AR <%s> non trouve dans ALICE",pt_NORM,0)
		FINSI
	FINSI
FINSI
#\DRE G4R6 lot2



#DRE QC677
SI CCD != CCD_Internat
ALORS
	# Portabilite
	erreur=i_get_art_str(g_iartin,$NDE,pt_BUF)
	pt_CodeOp = CodeOperateur(gmt_date, pt_BUF)
	SI (!i_strcmp(pt_CodeOp, "84208"))
	ALORS
		EPORTABILITE = 1
	SINON
		SI ( pt_CodeOp != g_inull )
		ALORS
			SPORTABILITE = 1
		FINSI
	FINSI
FINSI
#---------------------------------------------------------------------------
# Variable fonctionnelle CCD_REEL
#---------------------------------------------------------------------------

SI (EPORTABILITE == 1)
ALORS
	CCD_REEL = 212
SINON
	SI (SPORTABILITE == 1)
	ALORS
		CCD_REEL = 213
	SINON
		CCD_REEL = CCD
	FINSI
FINSI
#FIN DRE QC677
trace1("[Tfe6dc_dis]PORTABILITE ENTRANTE=<%d>", EPORTABILITE)
trace1("[Tfe6dc_dis]PORTABILITE SORTANTE=<%d>", SPORTABILITE)
trace1("[Tfe6dc_dis]CCD REEL = <%d>", CCD_REEL)


#INEFF et la com est assurree par un CAA
SI (!EFFICACE)
ALORS
	# recuperation des champs APPLI MINE et ART de l'entete de bloc
	ART = i_bloc_V1V2_recupererIdent(ART_BLOC_V1V2)

	SI (ART == 4)
	ALORS
		MINE = i_bloc_V1V2_recupererIdent(MINE_BLOC_V1V2)
		APPLI = i_bloc_V1V2_recupererIdent(APPLI_BLOC_V1V2)
	FINSI

	trace1("[Tfe6dc_dis]champ ART : %x",ART)
	trace1("[Tfe6dc_dis]champ MINE : %x",MINE)
	trace1("[Tfe6dc_dis]champ APPLI : %x",APPLI)

	pt_TCOMMUT = type_commut("APA1", pt_SGTQS, dpivot)

	SI (pt_TCOMMUT == g_inull)
	ALORS
		erreur = i_format_str2(pt_TEMP," %s",pt_SGTQS,0)
		erreur = i_PlvMessEmettre(8505,2,g_iartin,"",3,"Tfe6dc/type_commut",pt_TEMP,g_ieec)
	SINON
		pt_INEF_STD = inef_std("APA2", pt_TCOMMUT, pt_INEF_COMMUT, dpivot)

		SI ( pt_INEF_STD == g_inull)
		ALORS
			trace("[Tfe6dc_dis]Code inef absent dans la table")
			erreur = i_format_str2(pt_TEMP," %s",pt_INEF_COMMUT,0)
			erreur = i_PlvMessEmettre(8505,2,g_iartin,"",3,"Tfe6dc/inef_std",pt_TEMP,g_ieec)
		SINON
			DC_CAA=1
		FINSI
	FINSI

	trace2("[Tfe6dc_dis] Type de commutateur <%s>", pt_TCOMMUT, "")
	trace2("[Tfe6dc_dis] Code inefficace standard <%s>", pt_INEF_STD, "")
FINSI

############################################################################
# Envoi requetes Table de Distribution
############################################################################

# Sans objet

############################################################################
# Controles
############################################################################

# Sans objet

############################################################################
# Recherche Instances des ECC
############################################################################

#---------------------------------------------------------------------------
# SYMP
#---------------------------------------------------------------------------
instSYMPH=i_LireInstanceECC(C_InstSYMP)
trace1("[Tfe6dc_dis]instSYMPH=<%d>",instSYMPH)

SI (!instSYMPH)
ALORS
	code_errone = 0xA0B0
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstSYMP,C_Article)
	SAUT DISTRI_ERR
SINON
#DRE G4R6 lot2 
#	SI ( !CORR_OK )
	SI ( !CORR_OK ) && trait_ok == 0
	ALORS
		# Ajout de l'ECC SYMPHONIE a la liste courante des ECC:
		res = i_AjouterCouranteECC(instSYMPH)
		trace1("[Tfe6dc_dis]instSYMP=<%d>",instSYMPH)
	FINSI
FINSI

#---------------------------------------------------------------------------
# CENTAUREDC
#---------------------------------------------------------------------------

instCENTAURE = i_LireInstanceECC(C_InstCENTAUREDC)
trace1("[Tfe6dc_dis]instCENTAURE=<%d>",instCENTAURE)
SI ( ! instCENTAURE )
ALORS
	code_errone = 0xA0B0
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstCENTAUREDC,C_Article)
	SAUT DISTRI_ERR
FINSI

#---------------------------------------------------------------------------
# #G4R3 APACHE_DC
#---------------------------------------------------------------------------

#G4R3 instAPACHE = i_LireInstanceECC(C_InstAPACHE_DC)
#G4R3 SI (!instAPACHE)
#G4R3 ALORS
#G4R3 	trace("[Tfe6dc_dis]Pas d'instance pour APACHE_DC !")
#G4R3 	code_errone = 0xA0B0
#G4R3 	code_errone = code_errone + EFFICACE
#G4R3 	erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstAPACHE_DC,C_Article)
#G4R3 	SAUT DISTRI_ERR
#G4R3 FINSI
#G4R3 trace1("[Tfe6dc_dis]instAPACHE=<%d>",instAPACHE)

#G3R23
# CASPER
instCASPER = i_LireInstanceECC(C_InstCASPER)
SI (!instCASPER)
ALORS
	trace("[Tfe6dc_dis]Pas d'instance pour CASPER !")
	code_errone = 0xA0B0
	code_errone = code_errone + EFFICACE
	erreur = i_PlvMessEmettre(8601,2,g_iartin,"",3,code_errone,C_InstCASPER,C_Article)
	SAUT DISTRI_ERR
FINSI

############################################################################
# Duplication Symphonie
############################################################################

# Article fourni a Symphonie sous son format d'origine enrichi d'ajouts
# => Duplication article en entree + renommage

SI ( !i_ChercherCouranteECC(instSYMPH) )
ALORS
	# Duplication article en entree
	trace("[Tfe6dc_dis]Stockage vers SYMPHONIE")
	SI (i_dup_art_id(g_iartin,g_iartout))
	ALORS
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,"pour Symphonie",C_Article)
		SAUT DISTRI_ERR
	FINSI

	# Renommage en Tsymtfe6dc si EFFICACE ou
	# en Tsymtfe6In si non EFFICACE :

	SI ( i_valid_field_n(g_iartin,$Tfe6dc::T3ce) )
	ALORS
		#trace("[Tfe6dc_dis]Avant i_retrait_tlv T3ce")
		erreur = i_supprChamp(g_iartout,"T3ce")
	FINSI

	SI (EFFICACE)
	ALORS
		trace("[Tfe6dc_dis] Renommage Tsymtfe6dc")
		erreur=i_rename_art(g_iartout,"Tsymtfe6dc")

		erreur = i_ajoutChampNum( g_iartout, $Tsymtfe6dc::T4ccd,$Tsymtfe6dc::CCD, 0)
		erreur = i_ajoutChampNum( g_iartout, $Tsymtfe6dc::T4sgtqs,$Tsymtfe6dc::SGTQS, 0)
		erreur = i_ajoutChampNum( g_iartout, $Tsymtfe6dc::T4eccfact,$Tsymtfe6dc::ECC_FACT, 0)

		erreur=i_set_art_field(g_iartout,$Tsymtfe6dc::DATE,i_get_art_field(g_iartin,$DATE))
	SINON
		trace("[Tfe6dc_dis] Renommage Tsymtfe6In")

		erreur=i_rename_art(g_iartout,"Tsymtfe6In")

		erreur = i_ajoutChampNum( g_iartout, $Tsymtfe6In::T4ccd,$Tsymtfe6In::CCD, 0)
		erreur = i_ajoutChampNum( g_iartout, $Tsymtfe6In::T4sgtqs,$Tsymtfe6In::SGTQS, 0)
		erreur = i_ajoutChampNum( g_iartout, $Tsymtfe6In::T4eccfact,$Tsymtfe6In::ECC_FACT, 0)

		erreur=i_set_art_field(g_iartout,$Tsymtfe6In::DATE,i_get_art_field(g_iartin,$DATE))
	FINSI
FINSI

# Retrait de l'enveloppe optionnelle E_Tfe6dc:
#erreur=i_del_opt()

############################################################################
# Attente requetes Table de Distribution
############################################################################

# Recuperation bloquante des resultats de la derniere requete asynchrone
# Remarque: placer le plus de code possible avant ce point, pour optimiser le temps CPU

# Sans objet

############################################################################
# Critere de distribution
############################################################################

#---------------------------------------------------------------------------
# Criteres communs
#---------------------------------------------------------------------------

# Sans objet

trace1("[Tfe6dc_dis] instCENTAURE=%d", instCENTAURE)

#---------------------------------------------------------------------------
# CENTAUREDC
#---------------------------------------------------------------------------
# modif G2R1Ch rejet2 : si efficace et CENTAUREDC et !REJET2 sont vrais
# Inhibition de la correlation

#DRE G4R6 lot2 (CPT_CPS_RI = 17)
#SI ( (instCENTAURE>0) && ( EFFICACE ) && (REJET!=2) && (REJET!=3) && (REJET != 14))
#QC862
#SI bREDIST == 0
SI bREDIST == 0 && bREDISTALICE == 0
ALORS
#DRE G4R6 QC817
#	SI (EFFICACE && (REJET!=CPT_CPS_RI) && (REJET!=2) && (REJET!=3) && (REJET != 14))
	SI (EFFICACE && (REJET!=2) && (REJET!=3) && (REJET != 14))
	ALORS
		# Ajout ECC a la liste courante des destinataires
		res = i_AjouterCouranteECC(instCENTAURE)
		trace1("[Tfe6dc_dis] CENTAUREDC ajoute a la liste des ECC: %d",res)
	FINSI
FINSI

#################################################################################
# #G4R3 Tests des criteres envoi a APACHE_DC
#################################################################################
#Supprime G4R3

#G3R23
#################################################################################
# Tests des criteres envoi a CASPER
#################################################################################
#DRE G4R6 lot2
SI trait_ok == 0
ALORS
	SI (b_NSUC == 1)
	ALORS
		erreur=i_AjouterCouranteECC(instCASPER)
	FINSI
FINSI

############################################################################
# Validation de la liste des ECCs destinatrices
############################################################################

erreur = i_ValiderListeECC( 0, 0, 0, 0)

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

#---------------------------------------------------------------------------
# Valeurs communes
#---------------------------------------------------------------------------

# Sans objet

#---------------------------------------------------------------------------
# Symphonie
#---------------------------------------------------------------------------

SI (!i_ChercherCouranteECC(instSYMPH))
ALORS
	#pt_SGTQS=i_LireEECSGTQS( g_ieec )

#QC862
#	SI (EFFICACE)
	SI (EFFICACE && bREDISTALICE == 0)
	ALORS
		#champ SGTQS
		erreur = i_set_art_str(g_iartout, $Tsymtfe6dc::SGTQS, pt_SGTQS)

		#ECC_FACT
		SI (REJET != 2 && REJET != 3)
		ALORS
			erreur=i_set_art_str(g_iartout, $Tsymtfe6dc::ECC_FACT, "CENTAURE")
		SINON
			erreur=i_set_art_str(g_iartout, $Tsymtfe6dc::ECC_FACT, " ")
		FINSI

		# CCD
		erreur=i_set_art_field(g_iartout, $Tsymtfe6dc::CCD, CCD_REEL )
# DRE G4R6 Lot2
		# TYPE_EDIT
		SI i_strcmp(pt_TYPE_EDIT," ") != 0
		ALORS
			erreur = i_ajoutChampNum(g_iartout,$Tsymtfe6dc::T4type_edit,$Tsymtfe6dc::TYPE_EDIT,0)
			erreur=i_set_art_str(g_iartout, $Tsymtfe6dc::TYPE_EDIT, pt_TYPE_EDIT)
		FINSI
	
		# CODE_TARIF
		SI i_strcmp(pt_CODE_TARIF,"    ") != 0
		ALORS
			erreur = i_ajoutChampNum(g_iartout,$Tsymtfe6dc::T4code_tarif,$Tsymtfe6dc::CODE_TARIF,0)
			erreur=i_set_art_str(g_iartout, $Tsymtfe6dc::CODE_TARIF, pt_CODE_TARIF)
		FINSI
# \DRE G4R6 Lot2

	SINON
		#champ SGTQS
		erreur = i_set_art_str(g_iartout, $Tsymtfe6In::SGTQS, pt_SGTQS)

		#ECC_FACT
		erreur=i_set_art_str(g_iartout, $Tsymtfe6In::ECC_FACT, "")

		# CCD
		erreur=i_set_art_field(g_iartout, $Tsymtfe6In::CCD, CCD_REEL )
# DRE G4R6 Lot2
		# TYPE_EDIT
		SI i_strcmp(pt_TYPE_EDIT," ") != 0
		ALORS
			erreur = i_ajoutChampNum(g_iartout,$Tsymtfe6In::T4type_edit,$Tsymtfe6In::TYPE_EDIT,0)
			erreur=i_set_art_str(g_iartout, $Tsymtfe6In::TYPE_EDIT, pt_TYPE_EDIT)
		FINSI
	
		# CODE_TARIF
		SI i_strcmp(pt_CODE_TARIF,"    ") != 0
		ALORS
			erreur = i_ajoutChampNum(g_iartout,$Tsymtfe6In::T4code_tarif,$Tsymtfe6In::CODE_TARIF,0)
			erreur=i_set_art_str(g_iartout, $Tsymtfe6In::CODE_TARIF, pt_CODE_TARIF)
		FINSI
# \DRE G4R6 Lot2
	FINSI
FINSI

#---------------------------------------------------------------------------
# CENTAUREDC
#---------------------------------------------------------------------------

SI(!i_ChercherCouranteECC(instCENTAURE))
ALORS
	trace("[Tfe6dc_dis]Stockage vers CENTAUREDC")

	# Duplication article en entree
	SI ( i_dup_art_dest( g_iartin, g_iartout2, C_TcentaureDC ))
	ALORS
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,C_TcentaureDC,C_Article)
		SAUT DISTRI_ERR
	FINSI

	# T1
	trace( "[Tfe6dc_dis]initialisation de T1 a 14" )
	erreur=i_set_art_field( g_iartout2, $TcentaureDC::T1, 14 )

	# T2
	trace( "[Tfe6dc_dis]initialisation de T2 a 2" )
	erreur=i_set_art_field( g_iartout2, $TcentaureDC::T2, 2 )

	# champs SCT
	trace("[Tfe6dc_dis] Conversion bit a bit du champ G4/SCT")

	erreur=i_transformer_bits(g_iartin,$SCT,"FV",pt_buffer)

	erreur=i_set_art_str(g_iartout2, $TcentaureDC::SCT,pt_buffer)

	#CAX (numerique-->numerique)
	SI (i_valid_field_n(g_iartin,$Tfe6dc::T3cab))
	ALORS
		erreur=i_set_art_field(g_iartout2,$TcentaureDC::CAX,i_get_art_field(g_iartin,$Tfe6dc::CAX:1))
	FINSI

	SI (i_valid_field_n(g_iartin,$Tfe6dc::T3cap2))
	ALORS
		erreur=i_set_art_field(g_iartout2,$TcentaureDC::CAX,i_get_art_field(g_iartin,$Tfe6dc::CAX:0))
	FINSI

	# champs TAP
	trace("[Tfe6dc_dis] Conversion bit a bit du champ G4/TAP")

	SI ( (!i_valid_field_n(g_iartin,$Tfe6dc::T3cab))&&(!i_valid_field_n(g_iartin,$Tfe6dc::T3cap2)) )
	ALORS
		trace("[Tfe6dc_dis] Champ TAP absent en entree !")
		SAUT DISTRI_ERR
	FINSI

	SI (i_valid_field_n(g_iartin,$Tfe6dc::T3cab))
	ALORS
		erreur=i_transformer_bits(g_iartin,$Tfe6dc::TAP:1,"FV",pt_buffer)

		erreur=i_set_art_str(g_iartout2, $TcentaureDC::TAP,pt_buffer)
	SINON
		SI (i_valid_field_n(g_iartin,$Tfe6dc::T3cap2))
		ALORS
			erreur=i_transformer_bits(g_iartin,$Tfe6dc::TAP:0,"FV",pt_buffer)
			erreur=i_set_art_str(g_iartout2, $TcentaureDC::TAP,pt_buffer)
		FINSI
	FINSI
	erreur=i_set_art_str(g_iartout2, $TcentaureDC::TAP,pt_buffer)

	# champs STY
	trace("[Tfe6dc_dis] initialisation des STYi")

	erreur=i_transformer_bits(g_iartin,$STY,"FV",pt_buffer)
	erreur=i_set_art_str(g_iartout2, $TcentaureDC::STY,pt_buffer)

	# INDEX
	trace( "[Tfe6dc_dis] initialisation de INDEX a 0" )
	erreur=i_set_art_field( g_iartout2, $TcentaureDC::INDEX, 0 )

	# DATE
	erreur=i_set_art_field(g_iartout2,$TcentaureDC::DATE,ICAR_REL)

	#ALINK (numerique/alphanumerique) (champ ALINK <=> champ APPEL)
	SI( i_valid_field_n(g_iartin, $Tfe6dc::APPEL) )
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::APPEL,pt_temp)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::ALINK,pt_temp )
	SINON
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::ALINK,"00000000")
	FINSI

	#NLINK (numerique/alphanumerique) (champ NLINK <=> champ NOEUD)
	SI( i_valid_field_n(g_iartin, $Tfe6dc::NOEUD) )
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::NOEUD,pt_temp)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NLINK,pt_temp )
	SINON
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NLINK,"00000")
	FINSI

	#ILOCUS (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::INFLOCUS))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::ILOCUS, i_get_art_field(g_iartin,$Tfe6dc::INFLOCUS) )
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::ILOCUS,0)
	FINSI

	#NLOCUS (numerique/alphanumerique)
	SI  (i_valid_field_n(g_iartin, $Tfe6dc::NUMLOCUS))
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::NUMLOCUS,pt_temp)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NLOCUS,pt_temp )
	SINON
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NLOCUS,"        ")
	FINSI

	# champ IIDUS optionnel / bourrage avec la table de duplication:
	SI (i_valid_field_n(g_iartin,$INF_IDUS))
	ALORS
		erreur=i_set_art_field(g_iartout2,$TcentaureDC::IIDUS,i_get_art_field(g_iartin,$INF_IDUS))
	FINSI

	#NIDUS (tableau de num-->tableau de num)
	#Remarque: initialisation de la variable fonctionnele pt_IDUS_N
	#NDR optionnel => initialisation par defaut dans table de duplication
	#et verification de la presence du champ dans pcode:
	SI (i_valid_field_n(g_iartin,$Tfe6dc::NDR))
	ALORS
		erreur = i_get_art_str( g_iartin, $Tfe6dc::NDR, pt_IDUS_N )
		trace2( "[Tfe6dc_dis] initialisation de NIDUS a <%s>", pt_IDUS_N, "" )
		#	i_replace_str(pt_IDUS_N,"BCDE","AJSC",pt_IDUS_N)
		erreur = i_set_art_str( g_iartout2, $TcentaureDC::NIDUS, pt_IDUS_N )
	FINSI

	#IIPRV (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::INFIPRV))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::IIPRV,i_get_art_field(g_iartin,$Tfe6dc::INFIPRV ))
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::IIPRV,0)
	FINSI

	#NIPRV (tableau de numeriques/alphanumerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::NUMIPRV))
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::NUMIPRV,pt_temp)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NIPRV,pt_temp )
	SINON
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NIPRV,"    ")
	FINSI

	#IIDRV (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::INF_IDRV))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::IIDRV,i_get_art_field(g_iartin,$Tfe6dc::INF_IDRV ))
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::IIDRV,0)
	FINSI

	#NIDRV (tableau de numeriques/alphanumerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::NUM_IDRV))
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::NUM_IDRV,pt_temp)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NIDRV,pt_temp )
	SINON
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NIDRV," ")
	FINSI

	#NDEDE (tableau de num-->tableau de num)
	#Remarque: initialisation de la variable fonctionnele pt_DEDE_N
	erreur = i_get_art_str( g_iartin, $Tfe6dc::NDE, pt_DEDE_N )
	#trace2( "[Tfe6dc_dis] initialisation de NDEDE a <%s>", pt_DEDE_N, "" )
	i_replace_str(pt_DEDE_N,"BCDE","AJSC",pt_DEDE_N)

	erreur = i_set_art_str( g_iartout2, $TcentaureDC::NDEDE, pt_DEDE_N )

	#IIDAV (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::INF_IDAV))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::IIDAV, i_get_art_field(g_iartin,$Tfe6dc::INF_IDAV) )
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::IIDAV,0)
	FINSI

	#NIDAV (numerique/alphanumerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::NUM_IDAV))
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::NUM_IDAV,pt_temp)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NIDAV,pt_temp )
	SINON
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::NIDAV," ")
	FINSI

	#NICOM (tableau de num-->tableau de num)
	erreur = i_get_art_str( g_iartin, $Tfe6dc::NUM_ICOM, pt_buffer )
	#trace2( "[Tfe6dc_dis]initialisation de NICOM a <%s>", pt_buffer, "" )
	erreur = i_set_art_str( g_iartout2, $TcentaureDC::NICOM, pt_buffer )

	#REF (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::REF))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::REF, i_get_art_field(g_iartin,$Tfe6dc::REF) )
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::REF,0)
	FINSI

	#NBRV (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::NRENV))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::NBRV, i_get_art_field(g_iartin,$Tfe6dc::NRENV) )
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::NBRV,0)
	FINSI

	# TAX ( numerique/numerique )
	erreur=i_set_art_field( g_iartout2, $TcentaureDC::TAX,i_get_art_field( g_iartin, $TAXE ) )

	# DUREE ( numerique/numerique )
	# Si Duree de T3cab2 renseigne
	SI ( i_valid_field_n(g_iartin,$DUREE:0))
	ALORS
		erreur=i_set_art_field( g_iartout2, $TcentaureDC::DUREE,i_get_art_field( g_iartin, $DUREE:0 ) )
	SINON
		# Duree de T3cap renseigne
		erreur=i_set_art_field( g_iartout2, $TcentaureDC::DUREE,i_get_art_field( g_iartin, $DUREE:1 ) )
	FINSI

	# SGTQS
	#pt_SGTQS = i_LireEECSGTQS( g_ieec )
	#trace2( "[Tfe6dc_dis] pt_SGTQS=<%s>", pt_SGTQS, "" )
	erreur=i_set_art_str( g_iartout2, $TcentaureDC::CDSGTQS, pt_SGTQS)

	# DUSEL ( numerique/numerique )
	SI (i_valid_field_n(g_iartin, $Tfe6dc::DUSEL))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::DUSEL, i_get_art_field(g_iartin,$Tfe6dc::DUSEL) )
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::DUSEL,0)
	FINSI

	# DUSON ( numerique/numerique )
	SI (i_valid_field_n(g_iartin, $Tfe6dc::DUSON))
	ALORS
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::DUSON, i_get_art_field(g_iartin,$Tfe6dc::DUSON) )
	SINON
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::DUSON,0)
	FINSI

	#CLE1 (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::CLE1))
	ALORS
		info = i_get_art_field(g_iartin,$Tfe6dc::CLE1)
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::CLE1,info )
	FINSI

	#CLE2 (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::CLE2))
	ALORS
		info = i_get_art_field(g_iartin,$Tfe6dc::CLE2)
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::CLE2,info )
	FINSI

	#CLE3 (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::CLE3))
	ALORS
		info = i_get_art_field(g_iartin,$Tfe6dc::CLE3)
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::CLE3,info )
	FINSI

	#CLE4 (numerique/numerique)
	SI  (i_valid_field_n(g_iartin, $Tfe6dc::CLE4))
	ALORS
		info = i_get_art_field(g_iartin,$Tfe6dc::CLE4)
		erreur = i_set_art_field(g_iartout2,$TcentaureDC::CLE4,info )
	FINSI

	#COCA (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::BETA))
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::BETA,pt_COCA)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::COCA,pt_COCA )
	FINSI

	#COCAV (numerique/numerique)
	SI (i_valid_field_n(g_iartin, $Tfe6dc::BETAV))
	ALORS
		erreur = i_get_art_str(g_iartin,$Tfe6dc::BETAV,pt_COCAV)
		erreur = i_set_art_str(g_iartout2,$TcentaureDC::COCAV,pt_COCAV )
	FINSI

	#SUP (numerique/numerique)
	# FO 20235 MCH
	SI (i_valid_field_n(g_iartin, $Tfe6dc::T3cap2))
	ALORS
		res=i_get_art_field(g_iartin,$Tfe6dc::SUP:0)
		trace1("[Tfe6dc_dis] Test de la valeur de SUP=<%d>" , res)
		erreur=i_set_art_field(g_iartout2, $TcentaureDC::SUP, res)
	SINON
		SI (i_valid_field_n(g_iartin, $Tfe6dc::T3cab))
		ALORS
			res=i_get_art_field(g_iartin, $Tfe6dc::SUP:1)
			erreur=i_set_art_field(g_iartout2, $TcentaureDC::SUP, res)
		SINON
			erreur=i_set_art_field(g_iartout2, $TcentaureDC::SUP, 0)
		FINSI
	FINSI

	#champ MES1 et MES2
	SI ( i_valid_field_n(g_iartin, $Tfe6dc::MES1) )
	ALORS
		res=i_get_art_field(g_iartin, $MES1)
		erreur=i_set_art_field(g_iartout2,$TcentaureDC::MES1,res)
	FINSI

	SI ( i_valid_field_n(g_iartin, $Tfe6dc::MES2) )
	ALORS
		res=i_get_art_field(g_iartin, $MES2)
		erreur=i_set_art_field(g_iartout2,$TcentaureDC::MES2,res)
	FINSI

# DRE G4R6 Lot2
	# TYPE_EDIT
	erreur=i_set_art_str(g_iartout2, $TcentaureDC::TYPE_EDIT, pt_TYPE_EDIT)
	
	# CODE_TARIF
	erreur=i_set_art_str(g_iartout2, $TcentaureDC::CODE_TARIF, pt_CODE_TARIF)
# \DRE G4R6 Lot2

	#FIN
	erreur=i_set_art_field(g_iartout2, $TcentaureDC::FIN, 0x0A )
FINSI

#-------------------------------------------------------------------------
# #G4R3 APACHE_DC
#-----------------------------------------------------------------------
#Supprime en G4R3

#-----------------------------------------------------------------------
#G3R23
#-----------------------------------------------------------------------
# CASPER
#-----------------------------------------------------------------------

SI ( !i_ChercherCouranteECC(instCASPER) )
ALORS
	trace("[Tfe6dc_dis] Mise au format CASPER")
	SI ( i_dup_art_id(g_iartin,g_iartout5) )
	ALORS
		code_errone = 0xA0D0
		code_errone = code_errone + EFFICACE
		erreur = i_PlvMessEmettre(8602,2,g_iartin,"",3,code_errone,C_Tcasper,C_Article)
		SAUT DISTRI_ERR
	FINSI

	SI ( i_valid_field_n(g_iartout5,$Tfe6dc::T3ce) )
	ALORS
		erreur = i_supprChamp(g_iartout5,"T3ce")
	FINSI

	res = i_rename_art(g_iartout5, C_Tcasper)

	# COMPLEMENTS CASPER (SGTQS NSUC)

	#champ SGTQS
	erreur = i_ajoutChampNum(g_iartout5,$TcasperTfe6dc::T4sgtqs,$TcasperTfe6dc::SGTQS,0)
	erreur = i_set_art_str(g_iartout5, $TcasperTfe6dc::SGTQS, pt_SGTQS)

	#champ NSUC
	erreur = i_ajoutChampNum(g_iartout5,$TcasperTfe6dc::T4nsuc,$TcasperTfe6dc::NSUC,0)
	erreur = i_set_art_str(g_iartout5,$TcasperTfe6dc::NSUC,pt_NSUC)
	res = i_strlen(pt_NSUC)
	erreur = i_resize_tlv(g_iartout5, "T4nsuc", "NSUC", res)
FINSI

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

#--------- CENTAUREDC ------------
SI(!i_ChercherCouranteECC(instCENTAURE))
ALORS
	res = i_stocke_art_iecc( g_iartout2, instCENTAURE )
FINSI

#------- SYMPHONIE ----------
SI( !i_ChercherCouranteECC(instSYMPH) )
ALORS
	res = i_stocke_art_iecc(g_iartout, instSYMPH)
FINSI

#G3R23
#------- CASPER --------------
SI ( !i_ChercherCouranteECC(instCASPER) )
ALORS
	trace( "[Tfe6dc_dis] Emission vers CASPER" )
	res = i_stocke_art_iecc(g_iartout5, instCASPER)
FINSI

# DRE G4R6 Lot2
#QC862
#SI (bREDIST == 1 )
SI (bREDIST == 1 || bREDISTALICE == 1)
ALORS
	SAUT DISTRI_REDIST
FINSI
# \DRE G4R6 Lot2


trace("[Tfe6dc_dis] Fin du Pcode de distribution Tfe6dc")

RETOUR TRAIT_OK

############################################################################
# Envoi vers Recyclage
############################################################################

# Sans objet

############################################################################
# Stockage en Errone
############################################################################

POINT DISTRI_ERR

trace( "[Tfe6dc_dis] Anomalie de distribution")
res=i_make_art_rej(g_iartin, g_iartout, code_errone)
res = i_stocke_art( g_iartout, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

# DRE G4R6 Lot2
###########################################################################
# Stockage pour redistribution
###########################################################################

POINT DISTRI_REDIST

trace("Stockage pour redistribution")

SI (trait_ok == 0)
ALORS
	erreur = i_PlvMessEmettre(8503,2,g_iartin,"",3,pt_LIBELREDIST,C_Article,pt_SGTQS)
FINSI

res = i_stocke_art(g_iartin, 0, PT_REDIST|RD_TABLE5, 0)
RETOUR TRAIT_OK

############################################################################
# Stockage en elimine
############################################################################

POINT DISTRI_DIV

trace( "Stockage en divers")

res = i_stocke_art( g_iartin, 0, PT_DIVERS, 0)

RETOUR TRAIT_OK
# \DRE G4R6 Lot2

# ---------------------- fin pcode Tfe6dc_dis ---------------------------------# FIN_CORPS
