Le module "Taxes & Accises" de Mercator ne peut être utilisé pour la gestion des cotisations BEBAT, étant donné que, dans Mercator, il n'y a pas de TVA sur les taxes et accises. Le schéma qui suit illustre le paramétrage pour BEBAT. Ce schéma pourra être utilisé pour la gestion de toute taxe ou cotisation sur laquelle il y a lieu de comptabiliser la TVA.
L'exemple repris ci-après permet de déterminer dans la fiche article le montant de la cotisation (onglet prix). Dans l'écran de saisie de vente, une colonne a été ajoutée. Elle est alimentée par le montant en EUR de la cotisation. Cette colonne est modifiable.
Le champ S_BEBAT peut être remplacé par exemple par S_RECUPEL s'il s'agit de la taxe RECUPEL. Dans ce cas, il faut également modifier la formule au niveau de la séquence.
Procédure à suivre pour implémenter cette solution :
Pour la suite, il existe trois possibilités :
Solution 1 : inclure la cotisation dans le prix de vente
- Dans la fiche article, le prix de vente de l'article doit être mentionné "taxe Bebat incluse".
- Modifier la mise en page des documents de vente : il faut ajouter une "sous-ligne" qui sera insérée juste en dessous des lignes d'article pour, le cas échéant, mentionner le montant de la taxe Bebat incluse dans le prix.
Solution 2 : via formule "Total" (solution obsolète)
- Modifier l'écran de saisie de ventes pour faire apparaître cette colonne S_BEBAT.
- Au niveau des séquences, paramétrer une formule "total" telle que reprise ci-dessous.
- Modifier la mise en page des documents de vente : il faut ajouter une "sous-ligne" qui sera insérée juste en dessous des lignes d'article pour, le cas échéant, mentionner le montant de la taxe Bebat incluse dans le prix.
Math.Round(q*pu*(100-remise)/100+q*s_bebat*(Convert.ToInt32(billingEngine.PIEDS["regime"]) == 6 ? (1+taux_tva/100) : 1) / billingEngine.Conversion, billingEngine.NDec)
⚠️ Cette approche requiert la mise en place de code spécifique pour l'export Peppol. Voir cette page.
Solution 3 : via les remises en valeur (solution recommandée)
- Ajouter la colonne REMISE_NET_DV9 float dans la table LIGNES_V. (On utilise la 9ème remise nette puisque cette colonne ne sera pas visible. Cela permet de laisser les colonnes précédentes disponibles pour d'autres usages).
- Modifier l'écran de saisie de ventes pour faire apparaître cette colonne S_BEBAT. (Pas la colonne REMISE_NET_DV9)
- Au niveau des séquences, mettez en place le customizer dont le code est repris ci-dessous.
- Modifier la mise en page des documents de vente : il faut ajouter une "sous-ligne" qui sera insérée juste en dessous des lignes d'article pour, le cas échéant, mentionner le montant de la taxe Bebat incluse dans le prix.
alter table LIGNES_V add REMISE_NET_DV9 float not null default 0
SP_SET_COLUMN_DESCRIPTION 'LIGNES_V', 'REMISE_NET_DV9', 'Bebat' -- sera utilisée comme AllowanceChargeReason lors de l'export Peppol
namespace Billing
{
public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
{
public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
{
billingEngine.BeforeUpdateAmounts += BillingEngine_BeforeUpdateAmounts;
}
public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
{
billingEngine.BeforeUpdateAmounts -= BillingEngine_BeforeUpdateAmounts;
}
private void BillingEngine_BeforeUpdateAmounts(object sender, MercatorUi.Engine.Gescom.BillingEngine.UpdateAmountsEventArgs e)
{
MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
foreach (DataRow dr in e.DtLignes.Select("id_article<>''"))
{
if (billingEngine.PiedsVRecord.REGIME != RegimesEnum.VatIncluded)
Api.SmartReplace(dr, "remise_net_dv9", -dr.Value<double>("s_bebat"));
else
Api.SmartReplace(dr, "remise_net_dv9", Math.Round(-dr.Value<double>("s_bebat") * (1 + dr.Value<double>("taux_tva") / 100), 5), 5);
}
}
}
}
💡 Notez la présence du signe - dans l'assignation de remise_net_dv9 car la cotisation est une charge que l'on stocke dans une colonne de remise. Les remises nettes sont unitaires (par article). Il ne faut donc pas multiplier par la quantité.
👉 Lors de la liaison à la comptabilité, le montant des cotisations sera englobé dans les montants principaux des ventes.
Une statistique sur mesure tirée à partir de Mercator permettra d'encoder une O.D. pour alimenter un compte général de cotisation.