Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Comment gérer de façon automatique une fraction professionnelle et une fraction privée ?

0000002495     -      29/09/2015

En matière d'encodage de frais généraux dans la comptabilité, il est fréquent, pour les indépendants et professions libérales, de devoir séparer la quotité professionnelle de la partie privée. Ceci sous forme d'une fraction. (2/4, 6/7, ...)

Le module ci-joint offre cette possibilité.

Installation :

  • Un bouton doit être ajouté dans l'écran d'encodage du document d'achat.
  • Le code ci-dessous doit être placé dans la propriété Code de ce bouton
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
using System.Windows.Forms;

namespace MercatorUi.MovableControls.ButtonsCodes
{
     public static class Script
    {

         public static void Exec(MercatorUi.MovableControls. MovableButton clickedButton)
        {
            MercatorUi.Forms.Booking. BookingForm bookingForm = (MercatorUi.Forms.Booking. BookingForm )clickedButton.FindForm();
            MercatorUi.Engine.Cpta. BookingEngine bookingEngine = (MercatorUi.Engine.Cpta. BookingEngine )bookingForm.BookingEngine;
             if (bookingEngine.LIGNES_C.Rows.Count == 0)
                 return ;
             int n_dec = Convert .ToInt32(bookingEngine.PIEDS_C[ "n_dec" ]);

             // demander les proportions
             double [] proportion = Dialogs .AskDoubles( "Proportion professionnelle ? \n\r    Dividende                              Diviseur" , 6, 7, bookingEngine.DisplayFormat, bookingEngine.DisplayFormat);
             if (proportion == null ) // on a choisi Annuler
                 return ;
             if ( Math .Round(proportion[1], 5) == 0) // diviseur nul
                 return ;

             // calculer le nouveau montant de la ligne (total et tva) et modifier la ligne existante
             double totdv = Math .Round(( Convert .ToDouble(bookingEngine.LIGNES_C.Rows[0][ "tot_dv" ]) * proportion[0] / proportion[1]), n_dec);
             double tauxtva = MercatorController.xFunctions.xLookupLocalDouble(bookingEngine.TVACODES, string .Format( "id='{0}'" , Api.UnquoteSql(bookingEngine.LIGNES_C.Rows[0][ "id_tva" ].ToString())), "TAUX" );
             double tvadv = Math .Round((totdv * tauxtva / 100), n_dec);
            bookingEngine.LIGNES_C.Rows[0][ "tot_dv" ] = totdv;
            bookingEngine.LIGNES_C.Rows[0][ "tva_dv" ] = tvadv;

             // ajouter une deuxième ligne
            MercatorUi.Sig. Sig sig_gen = MercatorUi.Sig. _SigsStatic .SigByModule(MercatorUi.Sig. _SigEnum .GEN); // sera nécessaire pour indiquer qu'on va insérer un compte général

             int n = bookingEngine.AppendLine(); // initialise une nouvelle ligne et renvoie le n° de la ligne créée
             if (!bookingEngine.InsertAccount(sig_gen, "483000" , bookingEngine.LIGNES_C.Rows[n]))
            {
                 Dialogs .Stop( "InsertAccount 1 : " + bookingEngine.LastError);
                 return ;
            }
            bookingEngine.LIGNES_C.Rows[n][ "tot_dv" ] = Math .Round( Convert .ToDouble(bookingEngine.PIEDS_C[ "tot_ttc_dv" ]) - totdv - tvadv, n_dec);
        }
    }
}

Utilisation : lors de la saisie d'une écriture, il convient d'encoder l'écriture pour son montant total. Si Mercator est bien configuré (compte par défaut associé au fournisseur et code TVA associé à ce code général), les seules saisies du fournisseur et du montant total TTC produiront la saisie automatique de la première ligne d'imputation. Ensuite, appeler ce module via un clic sur le bouton ajouté. Une boîte de dialogue permet la saisie de la fraction de répartititon. Lors de la validation de cette fraction, Mercator adapte automatiquement le montant de la première ligne d'imputation et crée une seconde ligne. Cette seconde ligne reprend le solde, sans TVA, sur le compte du gérant (483000).

Remarque : le module peut être adapté afin d'utiliser un autre compte que le 483000. Il est aussi possible de lier la fraction au compte général.


En législation belge, si la fraction est utilisée sur un code TVA contenant une partie non déductible (par ex. 50% sur les frais liés aux véhicules), se pose alors le problème que la TVA est récupérable à concurrence de maximum 50 % (et non à concurrence de 50 % de la partie professionnelle). Dès lors, le pourcentage de TVA non récupérable à indiquer dans le code TVA ne doit pas être de 50 % mais doit être inférieur et calculé comme suit :

pour une fraction professionnelle de n/m, le taux de TVA non récupérable est (1-(0.50+(m-n)/m))*100

Par exemple :

  • 6/7 : 35.71 %
  • 5/7 : 21.43 %