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

Automatisch de korting bevestigen na het importeren van het scherm klantenkortingen

0000002551     -      21-04-2016

Hieronder getoonde instellingen toont hoe, we na het importeren van lijnen uit het scherm "Tools/Kortingen/Klanten",we de kortingen in één keer bevestigen voor alle geïmporteerde lijnen. Deze import kan op volgende manieren worden gedaan:

  • via een draagbare terminal
  • via fiche-injectie met een actieve filter in het informatiebestand "Artikelen" geopend op voorhand

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.

De code hier toont hoe we, indien de gebruiker op Annuleren klikt in het dialoogvenster waarin hij de korting kan invoeren, alle geïmporteerde lijnen verwijderen. Het voorbeeld is gegeven voor de kolom "Korting", maar kan toegepast worden op alle andere kolommen van de tabel BAREMES.

De code is opgebouwd vertrekkend vanuit de GESCOM-customizer, die de interfaces MercatorUi.ICustomizers.IFormLoadCustomizer en MercatorUi.ICustomizers.IFormClosedCustomizer implementeert. Het gebruikt het event AfterImportItems van MercatorUi.Forms.Gescom.GescomAllowancesForm. Het gaat als volgt:

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