Déclencher la facturation automatique sans boîte de dialogue

0000002257     -      10/09/2025

Le module décrit ici permet de déclencher la facturation automatique sans boîte de dialogue. Cela permet d'exécuter cette procédure sans intervention de l'utilisateur. Le cas échéant, cette procédure peut être initialisée par une application externe ayant instancié Mercator.

Un procédé similaire peut être appliqué à tous les regroupements automatiques :

  • facturation des livraisons fournisseurs
  • livraison des commandes
  • commande des préparation de commandes
  • génération des abonnements
  • maintenance des abonnements
  • génération des contremarques

Ce processus peut être avantageusement implémenté via l'exécution de tâches en mode console.

Le code s'établit comme suit :

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

namespace TestDeliveriesInvoicing
{
    public class TestDeliveriesInvoicing
    {

        public void Exec()
        {
            DataSet ds = Api.Zselect(MercatorUi.Globals.RepData, "select * from sequenc where journal='Blivr'" + "\r\n" + "select * from sequenc where journal='Factu'");
            if (ds == null)
                return;
            if (ds.Tables[0].Rows.Count == 0)
            {
                MercatorUi.Dialogs.Stop("Séquence de livraisons non trouvée !");
                return;
            }
            if (ds.Tables[1].Rows.Count == 0)
            {
                MercatorUi.Dialogs.Stop("Séquence de factures non trouvée !");
                return;
            }
            Api.TrimEndDataSet(ds);

            MercatorUi.Forms.Gescom.GescomDialogs.GescomAskDeliveriesInvoicing.GescomAskDeliveriesInvoicingRet ret = new MercatorUi.Forms.Gescom.GescomDialogs.GescomAskDeliveriesInvoicing.GescomAskDeliveriesInvoicingRet(
                ds.Tables[0].Rows[0] // sequencOrig
                , ds.Tables[1].Rows[0] // sequencDest
                , string.Format("(pieds_v.date>={0}) and (pieds_v.date<{1})", Api.DateTimeSqlString(new DateTime(DateTime.Today.Year, DateTime.Today.Month - 1, 1)), Api.DateTimeSqlString(new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1))) // whereClause
                , true // groupLines
                , false // groupCustNoVat
                , false // invoiceAccount
                , true // withQZero
                , false // dateAllLines
                , false // noComment
                , 100 // minimum)
                );
            // ret contient toutes les sélections habituellement faites dans la boîte de dialogue     

            int n_fact = MercatorUi.Forms.Gescom.GescomProcedures.Procedures.DeliveriesInvoicing(MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V, ret, true);

            MercatorUi.Dialogs.Stop(string.Format("Facture(s) générée(s) automatiquement : {0}", n_fact));
        }

    }
}

Notez que dans le code, la variable ret reprend les options habituellement sélectionnées dans la boîte de dialogue affichée lors de la facturation automatique dans l'interface de Mercator.

Le dernier paramètre de la méthode DeliveriesInvoicing permet d'activer le mode "silencieux" de la procédure. (silent = true)

Voir aussi : Exécuter des tâches dans Mercator en mode console

 



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)