Tenir compte des commissions sur paiements par carte de crédit lors de la reconnaissance des extraits de compte codifiés (CODA)

0000002371     -      26/07/2025

Cet exemple exploite l'évènement AfterCodaRecognition afin de séparer en 2 lignes distinctes les lignes correspondant à des mouvements créditeurs en suite à des paiements reçus avec une carte de crédit. La difficulté est que le montant net est repris par défaut dans l'extrait de compte. Le montant brut et la commission à déduire sont repris en simple commentaire, donc a priori difficilement exploitables. Nous avons créé ce customizer à titre d'exemple sur base d'extraits montrant des paiements avec carte de crédit gérés par Europabank. Cette programmation devrait pouvoir être facilement adaptée à d'autres prestataires de traitement de paiements par carte de crédit. Etant donné que cette programmation repose sur un "parsing" d'un simple commentaire sous forme de texte, elle est bien entendu sujette à toute modification future dans cette communication.

Dans notre exemple, il a été noté que les enregistrements concernés pouvaient être facilement reconnus par ce test : nom='EUROPABANK N.V.'

Par ailleurs, pour ces lignes, le champ commentair2 est de la forme :

BRUT: 371,10 - COMM 4,10 REF.OP.03935.

Les lignes de commissions seront automatiquement associées au compte général 650001.

Sur base de ces observations et hypothèses, le customizer peut être écrit comme suit :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {
        public void Main(MercatorUi.ICustomizers.ExecAction action)
        {
            if (action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
                MercatorUi.Forms.Accounting.AccountingBankCodaForm.AfterCodaRecognition += AccountingBankCodaForm_AfterCodaRecognition;
            else if (action == MercatorUi.ICustomizers.ExecAction.DossierClose)
                MercatorUi.Forms.Accounting.AccountingBankCodaForm.AfterCodaRecognition -= AccountingBankCodaForm_AfterCodaRecognition;
        }

        void AccountingBankCodaForm_AfterCodaRecognition(MercatorUi.Forms.Accounting.AccountingBankCodaForm.AfterCodaRecognitionEventArgs e)
        {
            //MercatorUi._Divers.ViewData(e.DtMouvements.Copy(), true);
            foreach (DataRow dr in e.DtMouvements.Select("nom='EUROPABANK N.V.'"))
            {
                string sbrut = Api.StrExtract(dr["communic2"].ToString(), "BRUT: ", " -").Replace(".", "").Replace(",", ".");
                string scomm = Api.StrExtract(dr["communic2"].ToString(), "COMM ", " REF").Replace(".", "").Replace("," ,".");
                double brut;
                double comm;
                if ((sbrut != "") && (scomm != "") && double.TryParse(sbrut, out brut) && double.TryParse(scomm, out comm))
                {
                    DataRow dr_new = e.DtMouvements.NewRow();
                    Api.DataRowMerge(dr_new, dr); // copier le contenu de dr dans dr_new
                    e.DtMouvements.Rows.InsertAt(dr_new, Api.DataRowIndexInDataTable(dr));
                    dr["montant"] = -comm;
                    MercatorUi.Forms.Accounting.AccountingBankCodaForm.CodaInsertAccount(MercatorUi.Sig._SigEnum.GEN, "650001", dr); // 650001 = compte de commissions carte de crédit - à adapter selon plan comptable
                    dr_new["montant"] = brut;
                }
            }
        }
    }
}

 

Mots clés : Visa; Bancontact.



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)