U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Bij het automatisch factureren van klanten, beschikken over een extra kolom in het selectie scherm voor leverbonnen.

0000002278     -      24-06-2016

De hierbeschreven module laat ons toe om een kolom toe te voegen in het selectievenster van leverbonnen weergegeven in het automatische facturatieproces van klanten. Deze programmatie wordt uitgevoerd in 2 stappen:

  • SQL-query wijzigen die de selectie van leverbonnen regelt, via de interface MercatorUi.ICustomizers.IStringUpdater
  • Een kolom toevoegen in de grid van het gevraagde scherm, via de interface MercatorUi.ICustomizers.IDialogLoadCustomizer

Op niveau van SQL-query wijziging, bestaat de moeilijkheid uit het feit dat de naam van de SQL-tabel varieert bij elke uitvoering. In de code, laat de string "tmp" ons toe om een deel van deze variabele te recupereren.

Het gegeven voorbeeld voegt een veld ID_CLI_LIV toe in de PIEDS_V. Elke andere wijziging is uiteraard mogelijk:

De code gaat als volgt:

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.IStringUpdater, MercatorUi.ICustomizers.IDialogLoadCustomizer
    {

        // modifier la requête SQL pour obtenir une colonne supplémentaire
        public string StringUpdate(string StringToModify)
        {
            string id = Api.StrExtract(StringToModify, "<ID>", "</ID>");
            if ((id == "SEL_DOC_DELIVERIES_INVOICING") && StringToModify.Contains("id_cli"))
            {
                string tmp = Api.StrExtract(StringToModify, "tempdb..##pieds_auto_", "')"); // obtenir la partie variable du nom de la table ##pieds_auto
                StringToModify = StringToModify.Replace(string.Format("##pieds_auto_{0}.id,", tmp), string.Format("##pieds_auto_{0}.id,##pieds_auto_{0}.id_cli_liv,", tmp));
            }
            return StringToModify;
        }

        // ajouter une colonne dans l'écran de sélection des BL
        public void DialogLoadCustomize(System.Windows.Forms.Form WindowsForm)
        {
            if (WindowsForm is MercatorUi.Forms.Gescom.GescomDialogs.GescomAutomaticProceduresSelectDocs)
            {
                MercatorUi.Forms.Gescom.GescomDialogs.GescomAutomaticProceduresSelectDocs gescomAutomaticProceduresSelectDocs = (MercatorUi.Forms.Gescom.GescomDialogs.GescomAutomaticProceduresSelectDocs)WindowsForm;
                DataTable dt = (DataTable)gescomAutomaticProceduresSelectDocs.Grid.DataSource;
                if (dt.Columns.Contains("id_cli_liv")) // est-on bien dans le cas "facturation des livraisons clients" ?
                {
                    gescomAutomaticProceduresSelectDocs.Grid.Columns.Add("id_cli_liv", "Id Client Livr.");
                    gescomAutomaticProceduresSelectDocs.Grid.Columns["id_cli_liv"].Width = 75;
                    gescomAutomaticProceduresSelectDocs.Grid.Columns["id_cli_liv"].DataPropertyName = "id_cli_liv";
                }
            }
        }

    }
}