i est un entier = 0
NbSelect est un entier = TableSelectOccurrence(TableReglement)
FenOuverte est un booléen = Faux
ComptabiliseTrouve est un booléen = Faux
IgnoreDejaComptabilise est un booléen = Faux

POUR TOUTE LIGNE SELECTIONNEE DE TableReglement
	SI TableReglement.CComptabiliser = Vrai ALORS
		ComptabiliseTrouve = Vrai ; SORTIR
	FIN
FIN

SI ComptabiliseTrouve = Vrai ALORS
	TitreSuivant("Confirmation")
	//1 : Comptabiliser
	//2 : Ne pas comptabiliser
	//3 : Annuler
	SELON Dialogue("Que faire pour les rélévés déjà intégrés ?")
		CAS 2
			IgnoreDejaComptabilise = Vrai
		CAS 3
			RepriseSaisie(BTN_Comptabiliser)
	FIN
FIN

HExécuteRequête(REQ_COMPTE_TRESO,hRequêteDéfaut)

POUR i = 1 A NbSelect
	
	SI CComptabiliser[TableSelect(TableReglement,i)] = 0 OU IgnoreDejaComptabilise = Faux ALORS
		
		SI FenOuverte = Faux ALORS
			FenOuverte = Oui
			OuvreFille(FEN_REGLEMENT_COMPTABILISATION)
			FEN_REGLEMENT_COMPTABILISATION.AliasOnglet = FEN_Erp_Gpharma.ONG_Principal..Valeur
		FIN
		
		TableAjouteLigne(FEN_REGLEMENT_COMPTABILISATION.TableReglementEscompte,CDateReg[TableSelect(TableReglement,i)],...
		CClient[TableSelect(TableReglement,i)],CModePaie[TableSelect(TableReglement,i)]..ValeurAffichée,CRefReglement[TableSelect(TableReglement,i)],...
		CmontantRegle[TableSelect(TableReglement,i)],"",...
		CNumCompteTiers[TableSelect(TableReglement,i)],CIDReglement[TableSelect(TableReglement,i)])
	FIN
FIN

SI FenOuverte = Oui ALORS
	FEN_REGLEMENT_COMPTABILISATION.NbreLigne = TableOccurrence(FEN_REGLEMENT_COMPTABILISATION.TableReglementEscompte)
	FEN_REGLEMENT_COMPTABILISATION.TxReg = FEN_REGLEMENT_COMPTABILISATION.CTotalReglement[ligneTotal]
FIN


SI OperationAutorisee = Faux ALORS	
	
	SI CompteTreso <= 0 ALORS
		TitreSuivant("Erreur")
		Erreur("Veuillez sélectionner un compte bancaire SVP !")
		RepriseSaisie(CompteTreso)
	FIN
	
	SI NbreLigne <= 0 ALORS
		TitreSuivant("Erreur")
		Erreur("Aucun règlement à comptabiliser !")
		RepriseSaisie(CompteTreso)
	FIN
	
	TitreSuivant("Confirmer l'opération")
	SI OuiNon(Oui,"Voulez-vous comptabiliser les règlements en cours ?") = Oui ALORS
		OuvreFille(FEN_AUTORISATION)
		FEN_AUTORISATION.AccesVerifie = "DC_Comptabilisation"
		FEN_AUTORISATION.DescriptionEvenement = "COMPTABILISATION DE REGLEMENT CLIENT"
		FEN_AUTORISATION.BoutonAExecuter = "FEN_REGLEMENT_COMPTABILISATION.BtnGenerationSage"
	FIN
SINON
	i est un entier = 0
	NbSelect est un entier = NbreLigne
	
	DateE est une chaîne = ""

	SI ModeGenCSV = Vrai ALORS
		DateE = "REGL"
	FIN
	
	LibEcritu est une chaîne = ""
	
	MontTTC est une chaîne = ""
	MontExo est une chaîne = ""
	MontTaxable est une chaîne = ""
	MontTva est une chaîne = ""
	MontRetenu est une chaîne = ""
	MontApresRetenu est une chaîne = ""
	Comp est un entier = CompteTreso
	ModeRegt est une chaîne = ""
	
	DateCompta est une chaîne = DateVersChaîne(DateComptabilisa,"JJMMAA")
	
	CodeJr est une chaîne = ""
	HLitRecherchePremier(SCHEMA_COMPTABLE,TypeEcriture,CompteTreso)
	SI HTrouve(SCHEMA_COMPTABLE) ALORS
		CodeJr = SCHEMA_COMPTABLE.CodeJournalComptable
	FIN

	POUR i = 1 A NbSelect
		HLitRecherchePremier(REGLEMENTCLIENT,IDREGLEMENTCLIENT,CNumReg[i])
		SI HTrouve(REGLEMENTCLIENT) ALORS	
			
			SI REGLEMENTCLIENT.ReferenceReglementClient = "" ALORS
				LibEcritu = "REG. "+CClient[i]
			SINON
				LibEcritu = "REG. "+REGLEMENTCLIENT.ReferenceReglementClient
			FIN
			MontTTC = REGLEMENTCLIENT.MontantReglementClient
			
			AgenCli est un entier sur 8
			HLitRecherchePremier(CLIENT,IDCLIENT,REGLEMENTCLIENT.IDCLIENT)
			SI HTrouve(CLIENT) ALORS	
				HLitRecherchePremier(TOURNEE,IDTOURNEE,CLIENT.IDTOURNEE)
				SI HTrouve(TOURNEE) ALORS
					AgenCli = TOURNEE.IDAGENCE
				FIN
			FIN	
			
			SAGE_IDElement = REGLEMENTCLIENT.IDREGLEMENTCLIENT
			PG_INTEGRATION_SAGE_REG(C_TYPE_ECRITURE_REGLEMENT,AgenCli,DateCompta,DateE,LibEcritu,MontTTC,MontExo,MontTaxable,MontTva,MontRetenu,MontApresRetenu,"",CModePaie[i],CCompteTiersClient[i],CodeJr,ModeGenCSV)	
			SI TypComptabilisationTreso = 0 ALORS
				PG_INTEGRATION_SAGE_REG(Comp,AgenCli,DateCompta,DateE,LibEcritu,MontTTC,MontExo,MontTaxable,MontTva,MontRetenu,MontApresRetenu,"",CModePaie[i],CCompteTiersClient[i],CodeJr,ModeGenCSV)	
			FIN
			
			REGLEMENTCLIENT.ReglementComptabilise = 1
			HModifie(REGLEMENTCLIENT)
	
		FIN
	FIN
	
	SI TypComptabilisationTreso = 1 ALORS
		MontTTC = TxReg
		SAGE_IDElement = 0
		PG_INTEGRATION_SAGE_REG(Comp,2,DateCompta,DateE,"REMISE DE CHEQUE DU : "+DateVersChaîne(DateComptabilisa),MontTTC,MontExo,MontTaxable,MontTva,MontRetenu,MontApresRetenu,"","","",CodeJr)	
	FIN
	
	TitreSuivant("Information")
	Info("Règlements comptabilisés avec succès !")
	
	ExécuteTraitement(FenPrincipale + AliasOnglet + ".BTN_Rech",trtClic)
	Ferme(FEN_REGLEMENT_COMPTABILISATION)
FIN


PROCEDURE PG_INTEGRATION_SAGE_REG(TypJr est un entier,AgenceClien est un entier sur 8,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumeroDoc,ModeReg,CompteTiers,CodeJr sont des chaînes, ModeCSV est un booléen = Faux)

SAGE_TypeDoc = 3
RIntegration est un booléen = Faux

SI ModeCSV = Faux ALORS
	SELON PARAMETRE_UNIQUEAGENCE.ModeIntegrationSage
	
		CAS 2
			RIntegration = PasserelleSAGE_SQL_REG(TypJr,AgenceClien,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumeroDoc,ModeReg,CompteTiers,CodeJr)
		CAS 3
			RIntegration = PasserelleSAGE_REG(TypJr,AgenceClien,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumeroDoc,ModeReg,CompteTiers,CodeJr)
			RIntegration = PasserelleSAGE_SQL_REG(TypJr,AgenceClien,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumeroDoc,ModeReg,CompteTiers,CodeJr)
		CAS 4
			RIntegration = PasserelleSAGE_ObjetMetier_REG(TypJr,AgenceClien,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumeroDoc,ModeReg,CompteTiers,CodeJr)	
		AUTRE CAS
			RIntegration = PasserelleSAGE_REG(TypJr,AgenceClien,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumeroDoc,ModeReg,CompteTiers,CodeJr)	
	FIN
SINON
	RIntegration = PasserelleSAGE_REG(TypJr,AgenceClien,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumeroDoc,ModeReg,CompteTiers,CodeJr)	
FIN

RENVOYER RIntegration


PROCEDURE PasserelleSAGE_REG(TypJr est un entier,AgenceClien est un entier sur 8,DatePiece,DateEchean,LibEcriture,MontantTTC,MontantHTExo,MontantHTTaxable,MontantTVA,MontantRetenu,MontantApresRetenu,NumFact,ModeReg,CompteTiers,CodJournal)

HLitPremier(PARAMETRE_UNIQUEAGENCE)

SI PARAMETRE_UNIQUEAGENCE.CheminDossierComptable <> "" ALORS
	
	IDFiles est un entier
	
	SI TypJr = 1 ALORS
		IDFiles = fOuvre(PARAMETRE_UNIQUEAGENCE.CheminDossierComptable+"VENTES_"+PG_DateServeur()+".txt",foAjout+foLectureEcriture)
		SI IDFiles = -1 ALORS		
			IDFiles = fCrée(PARAMETRE_UNIQUEAGENCE.CheminDossierComptable+"VENTES_"+PG_DateServeur()+".txt",foAnsi)
		FIN
	SINON
		IDFiles = fOuvre(PARAMETRE_UNIQUEAGENCE.CheminDossierComptable+"DIVERS_"+PG_DateServeur()+".txt",foAjout+foLectureEcriture)
		SI IDFiles = -1 ALORS		
			IDFiles = fCrée(PARAMETRE_UNIQUEAGENCE.CheminDossierComptable+"DIVERS_"+PG_DateServeur()+".txt",foAnsi)
		FIN
	FIN
	
	NumCompteGeneral,MontDebit,MontCredit sont des chaînes
	Lettrage est une chaîne = "   "
	
	
	SI DateEchean = "REGL" ALORS 
		DateEchean = ""
	SINON
		TANTQUE Taille(DateEchean) < 6
			DateEchean += " "
		FIN
	FIN
	
	NumPiece est une chaîne
	TANTQUE Taille(NumPiece) < 13
		NumPiece += " "
	FIN
	
	NumCompteTierVide est une chaîne
	TANTQUE Taille(NumCompteTierVide) < 20
		NumCompteTierVide += " "
	FIN
	
	SI PARAMETRE.PaysSociete = CodeTG ALORS
	FIN
	
	PG_ExecuteRequeteSchema(TypJr,AgenceClien)
	
	POUR TOUT REQ_SCHEMACOMPTABLE_ECRITURE 				
		TANTQUE Taille(CodJournal) < 6
			CodJournal += " "
		FIN
		
		NumCompteGeneral = REQ_SCHEMACOMPTABLE_ECRITURE.NumeroCompteGeneralComptable
		TANTQUE Taille(NumCompteGeneral) < 13
			NumCompteGeneral += " "
		FIN	
		
		CompteTiers = Gauche(CompteTiers,20)
		TANTQUE Taille(CompteTiers) < 20
			CompteTiers += " "
		FIN
		
		LibEcriture = Gauche(LibEcriture,35)
		TANTQUE Taille(LibEcriture) < 35
			LibEcriture += " "
		FIN
		
		MontAMvter est un entier = 0
		
		SI REQ_SCHEMACOMPTABLE_ECRITURE.TypeMvtDebitCredit = 1 ALORS
			SELON REQ_SCHEMACOMPTABLE_ECRITURE.TypeMontant
				CAS 1 //TTC
					MontDebit = MontantTTC
				CAS 2 //HT Exo
					MontDebit = MontantHTExo
				CAS 3 //HT Taxable
					MontDebit = MontantHTTaxable
				CAS 4 //Tva
					MontDebit = MontantTVA
				CAS 5 //Retenu
					MontDebit = MontantRetenu		
				CAS 6 //Apres Retenu
					MontDebit = MontantApresRetenu				
			FIN
			MontCredit = " "
			MontAMvter = MontDebit
		SINON
			SELON REQ_SCHEMACOMPTABLE_ECRITURE.TypeMontant
				CAS 1 //TTC
					MontCredit = MontantTTC
				CAS 2 //HT Exo
					MontCredit = MontantHTExo
				CAS 3 //HT Taxable
					MontCredit = MontantHTTaxable
				CAS 4 //Tva
					MontCredit = MontantTVA
				CAS 5 //Retenu
					MontCredit = MontantRetenu		
				CAS 6 //Apres Retenu
					MontCredit = MontantApresRetenu			
			FIN
			MontDebit = " "
			MontAMvter = MontCredit
		FIN
		
		SI MontAMvter < 0 ALORS
			MontAMvter = MontAMvter * -1
			SI MontDebit <> " " ALORS
				MontCredit = MontAMvter
				MontDebit = " "
			SINON
				MontDebit = MontAMvter
				MontCredit = " "
			FIN				
		FIN	
		
		TANTQUE Taille(MontDebit) < 14
			MontDebit = " "+MontDebit
		FIN
		
		TANTQUE Taille(MontCredit) < 14
			MontCredit = " "+MontCredit
		FIN
		
		TANTQUE Taille(NumFact) < 17
			NumFact += " "
		FIN
		
		TANTQUE Taille(ModeReg) < 35
			ModeReg += " "
		FIN
		
		SI IDFiles > 0 ALORS
			SI REQ_SCHEMACOMPTABLE_ECRITURE.AjouterCompteTiers = 0 ALORS
				fEcritLigne(IDFiles,CodJournal+DatePiece+NumPiece+NumFact+NumCompteGeneral+NumCompteTierVide+LibEcriture+MontDebit+MontCredit+DateEchean+ModeReg)
			SINON
				fEcritLigne(IDFiles,CodJournal+DatePiece+NumPiece+NumFact+NumCompteGeneral+CompteTiers+LibEcriture+MontDebit+MontCredit+DateEchean+ModeReg)
			FIN
		FIN
		
	FIN
	
	SI IDFiles > 0 ALORS
		fFerme(IDFiles)
	FIN
FIN

RENVOYER Vrai