Lors l'import Peppol en gestion commerciale, Mercator propose dans la partie gauche de l'écran la liste des commandes et des livraisons pour le fournisseur sélectionné. Par défaut, cet affichage reprend
- Journal et numéro
- Date
- Référence
Ce code montre comment ajouter une ou plusieurs colonnes. L'exemple est donné pour une colonne nommée CUSTOM_COL de la table PIEDS_A. Il s'implémente sous la forme d'un customizer Gescom.
Via l'interface IStringUpdater, la requête SQL dont l'ID est EINVOICE_IMPORT_PREVIOUS_DOC est modifiée.
Les modifications dans l'écran sont apportées via IDialogLoadCustomizer.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;
// <CompileWithRoslyn />
namespace Gescom
{
public class Customizer : MercatorUi.ICustomizers.IStringUpdater, MercatorUi.ICustomizers.IDialogLoadCustomizer
{
public string StringUpdate(string stringToModify)
{
string id = Api.StrExtract(stringToModify, "<ID>", "</ID>");
if (id == "EINVOICE_IMPORT_PREVIOUS_DOC")
stringToModify = stringToModify.Replace(",pieds_a.reference,", ",pieds_a.reference,pieds_a.custom_col,");
return stringToModify;
}
public void DialogLoadCustomize(System.Windows.Forms.Form form)
{
if (form is MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport)
{
gescomAskEinvoiceImport.CustomColumnsPreviousDocDescriptors.Add(
new MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport.CustomColumnsPreviousDocDescriptor
{
Source = "custom_col",
Width = 50,
HeaderText = "Custom Col."
});
gescomAskEinvoiceImport.PreviousDoc.Columns[2].Width.Absolute -= 50; // Rétrécir la colonne "Référence" de 50 px
gescomAskEinvoiceImport.SplitterDistance = 600; // Elargir la partie gauche de l'écran
}
}
}
}
Le même procédé peut être utilisé pour ajouter des colonnes numériques, par exemple les totaux des documents. Il est toutefois recommandé de travailler avec des colonnes de type caractères. Par exemple :
stringToModify = stringToModify.Replace(",pieds_a.reference,", ",pieds_a.reference,ltrim(dbo.transform(pieds_a.tot_bas_dv,'999 999.99')) as tot_htva,");