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

Lors de la facturation automatique des livraisons, filtrer les clients en fonction de la séquence de factures sélectionnée

0000002657     -      27/12/2019

La programmation illustrée ici montre comment, lors de la facturation automatique des livraisons, filtrer les clients en fonction de la séquence de facture sélectionnée. Elle est basée sur un customizer Gescom qui implémente l'interface MercatorUi.ICustomizers.IStringUpdaterWithContextInfo.

L'objectif est de modifier la requête de sélection des livraisons à facturer, en ajoutant un filtre sur le client. L'interface IStringUpdaterWithContextInfo diffère de l'interface IStringUpdater, en ce sens qu'elle va permettre d'obtenir un objet supplémentaire. Dans le cas des regroupements automatiques, ce sera toujours l'objet qui contient toutes les sélections faites par l'utilisateur. Lors du regroupement des livraisons en factures, cet objet sera de type MercatorUi.Forms.Gescom.GescomDialogs.GescomAskDeliveriesInvoicing.GescomAskDeliveriesInvoicingRet.

Le code de ce customizer 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 Gescom
{
    public class Customizer : MercatorUi.ICustomizers.IStringUpdaterWithContextInfo
    {

        public string StringUpdate(string StringToModify, object ContextInfo)
        {
            string id = Api.StrExtract(StringToModify, "<ID>", "</ID>");
            if (id == "SEL_DOC_DELIVERIES_INVOICING")
            {
                MercatorUi.Forms.Gescom.GescomDialogs.GescomAskDeliveriesInvoicing.GescomAskDeliveriesInvoicingRet askRet = (MercatorUi.Forms.Gescom.GescomDialogs.GescomAskDeliveriesInvoicing.GescomAskDeliveriesInvoicingRet)ContextInfo;
                string compl = askRet.SequencDest["journal"].ToString() == "1VEN" ? " and (cli.c_company='ABC srl')" : " and (cli.c_company='XYZ sa')";
                StringToModify = StringToModify.Replace("(n_lignes2>0)", "(n_lignes2>0)" + compl);
            }
            return StringToModify;
        }
    }
}