Depuis la version 10.10 de Mercator, le même résultat peut être obtenu sans code. Ces boutons permettent de saisir jusque 4 remises après import.

Le paramétrage illustré ici montre comment, après un import de lignes dans l'écran "Outils / Remises / Clients", fixer la remise en une fois, pour toutes les lignes importées. Cet import peut être effectué
- via un terminal portable
- via l'injection des fiches du filtre actif sur un signalétique "articles" ouvert au préalable
Le code montre aussi comment, si l'utilisateur clique sur le bouton "Annuler" de la boîte de dialogue lui permettant la saisie de la remise, supprimer toutes les lignes qui viennent d'être importées.
L'exemple est donné pour la colonne "remise" mais peut être appliqué à toute autre colonne de la table BAREMES.
Le code est construit à partir d'un customizer Gescom qui implémente les interfaces MercatorUi.ICustomizers.IFormLoadCustomizer et MercatorUi.ICustomizers.IFormClosedCustomizer. Il exploite l'évènement AfterImportItems de MercatorUi.Forms.Gescom.GescomAllowancesForm. Il s'établit comme suit :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
// <CompileWithRoslyn />
namespace Gescom
{
public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
public void FormLoadCustomize(Form form)
{
if (form is MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm)
{
if (gescomAllowancesForm.TypeVA == MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V) // uniquement pour les remises clients
gescomAllowancesForm.AfterImportItems += GescomAllowancesForm_AfterImportItems;
}
}
public void FormClosedCustomize(Form form)
{
if (form is MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm)
{
if (gescomAllowancesForm.TypeVA == MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V) // uniquement pour les remises clients
gescomAllowancesForm.AfterImportItems -= GescomAllowancesForm_AfterImportItems;
}
}
void GescomAllowancesForm_AfterImportItems(object sender, MercatorUi.Forms.Gescom.GescomAllowancesForm.AfterImportItemsEventArgs e)
{
MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm = (MercatorUi.Forms.Gescom.GescomAllowancesForm)sender;
double remise = MercatorUi.Dialogs.AskDouble(string.Format("Quelle remise appliquer à ces lignes importées depuis le {0} ?", (e.Mode == MercatorUi.Forms.Gescom.GescomAllowancesForm.ImportItemsMode.FromBarcodeTerm ? "terminal" : "filtre des articles")), 0, "##0.00");
if (remise == double.MinValue) // on a cliqué sur annuler
{
if (MercatorUi.Dialogs.AnswerYesNo("Voulez-vous alors supprimer les lignes importées ?"))
{
foreach (DataRow dr in e.DataRowLignes)
gescomAllowancesForm.Dt.Rows.Remove(dr);
}
}
else
{
remise = Api.Min(remise, 100); // ne pas autoriser une remise > 100
remise = Api.Max(remise, 0); // ne pas autoriser une remise < 0
foreach (DataRow dr in e.DataRowLignes)
dr["remise"] = remise;
}
}
}
}