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

Fixer la remise automatiquement après import dans l'écran des remises clients

0000002551     -      21/04/2016

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 :

Zoom

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


namespace Gescom
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {

        public void FormLoadCustomize(Form WindowsForm)
        {
            if (WindowsForm is MercatorUi.Forms.Gescom.GescomAllowancesForm)
            {
                MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm = (MercatorUi.Forms.Gescom.GescomAllowancesForm)WindowsForm;
                if (gescomAllowancesForm.TypeVA == MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V) // uniquement pour les remises clients
                    gescomAllowancesForm.AfterImportItems += new MercatorUi.Forms.Gescom.GescomAllowancesForm.AfterImportItemsEventHandler(gescomAllowancesForm_AfterImportItems);
            }
        }

        public void FormClosedCustomize(Form WindowsForm)
        {
            if (WindowsForm is MercatorUi.Forms.Gescom.GescomAllowancesForm)
            {
                MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm = (MercatorUi.Forms.Gescom.GescomAllowancesForm)WindowsForm;
                if (gescomAllowancesForm.TypeVA == MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V) // uniquement pour les remises clients
                    gescomAllowancesForm.AfterImportItems -= new MercatorUi.Forms.Gescom.GescomAllowancesForm.AfterImportItemsEventHandler(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;
            }
        }
    }
}