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

0000002551     -      19/01/2025

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 :

Zoom
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;
            }
        }
    }
}

 



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)