Lier un ou plusieurs reçus à une facture

0000003180     -      03/10/2023

La fonctionnalité décrite ici permet de lier un ou plusieurs reçus à une facture existante. Ces liaisons ne consistent pas en l'association d'acomptes, mais permettent qu'en comptabilité, après centralisation, la facture puisse être lettrée en tenant compte de ces éventuels reçus.

Elle répond donc à ce besoin :

  • Un client achète quelque chose qui lui est immédiatement facturé et qui fait l'objet d'un paiement différé, en tout ou en partie.
  • Plus tard, le client repasse au magasin et paie le solde de sa facture, en tout ou en partie. Cette facture n'est peut-être plus modifiable (centralisée) et on souhaite voir en comptabilité la date des différents mouvements (facture - paiements).
  • Il est demandé que tous ces mouvements en comptabilité soient lettrés automatiquement.

Pour installer cette fonctionnalité, il faut 

  • disposer d'une version 11.0 ou ultérieure de Mercator
  • ajouter les champs optionnels PIECE_LIEE_FREE et RECEIPT_1 à la table PIEDS_V
    alter table PIEDS_V add PIECE_LIEE_FREE varchar(MAX) not null default '' , RECEIPT_1 bit not null default 0
  • redémarrer Mercator
  • exécuter le menu "Outils / Outils Avancés / Base de données SQL / Mettre à jour"
  • ajouter un bouton dans la séquence de factures, avec le code C# ci-dessous. Ce bouton créera un reçu lié à cette facture.
Zoom
public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
{
    // enter your customized code here
    MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)clickedButton.Form;
    billingForm.BillingEngine.CreateReceiptForThisInvoice();
}

 

Le montant suggéré du reçu correspond au total de la facture diminué de l'encaissement "cash" sur cette facture, des acomptes précédemment reçus et des autres reçus déjà éventuellement liés.

Cette fonctionnalité ne contient aucun contrôle quant au montant à payer dans le(s) reçu(s). Si la somme des reçus liés n'est pas égal au total de la facture, acomptes éventuels déduits, alors tous ces mouvements comptables feront l'objet d'un lettrage partiel.

Pour que le lettrage soit effectué, il est nécessaire que la fourchette de dates utilisée lors de la centralisation couvre la facture et les différents reçus.


Il est possible d'intervenir via programmation dans le comportement de la méthode CreateReceiptForThisInvoice. Cela se fait via l'événement BeforeCreateReceiptForThisInvoice du BillingEngine de la facture. Son eventArgs contient ces propriétés :

  • e.Cancel pour arrêter processus
  • e.DesiredJournal pour spécifier la séquence de reçus souhaitée
  • e.Amount pour le montant proposé dans le reçu

Cette requête SQL permet de lister les reçus liés à une facture :

declare @piece_liee_free varchar(MAX)
select @piece_liee_free=piece_liee_free from PIEDS_V where... /* 1 facture */
select p.journal,p.piece,p.net_fb as tot from dbo.PIECES_LIEES(@piece_liee_free) l
inner join PIEDS_V p on (l.journal=p.journal) and (l.piece=p.piece)

Note : La centralisation vers des comptabilités externes n'effectue aucun lettrage. Afin de disposer des avantages de cette fonctionnalité, il faut donc utiliser Mercator comptabilité.


Voir aussi : Associer plusieurs acomptes à une commande client