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

Exemple de customizer MercatorPenguin : inventaires

0000003452     -      13/05/2026

Cette page montre un exemple de customizer pour l'écran de modification d'un inventaire. Le code source est fourni dans le zip disponible ci-dessous.

Le code repris ci-dessous montre comment :

  • Demander une confirmation avant la sauvegarde de l'inventaire.
  • Demander une confirmation avant la suppression d'une ligne.
  • Exécuter du code après la suppression d'une ligne.
  • Exécuter du code avant la modification d'une ligne.

Les codes d'exemple montrés pour l'écran Billing peuvent être aussi implémentés pour les inventaires.

Zoom
using MercatorPenguin;
using MercatorPenguin.EditCustomizers;

namespace TestPenguinCustomizerInventory
{
    public class CustomizerInventory : BaseEditInventoryCustomizer
    {
        public CustomizerInventory(ConstructorParams constructorParams) :
            base(constructorParams)
        { }

        public override async Task OnBeforeSaveAsync(BeforeSaveEventArgs e)
        {
            string lignes = string.Format("{0} ligne{1}", Lignes.Rows.Count, Lignes.Rows.Count > 1 ? "s" : "");
            if (!await Dialogs.AnswerYesNo(Page, $"Voulez-vous vraiment enregistrer les modifications sur cet inventaire contenant {lignes} ?"))
            {
                e.CancelSave = true;
            }
        }
		public override async Task OnBeforeDeleteLineAsync(BeforeDeleteLineEventArgs e)
		{
			if (!await Dialogs.AnswerYesNo(Page, $"Voulez-vous vraiment supprimer cette ligne {e.Ligne["id_art"]} sur ce picking ?"))
			{
				e.CancelDeleteLine = true;
			}
		}

		public override async void OnAfterDeleteLine(AfterDeleteLineEventArgs e)
		{
			await Dialogs.Stop(Page, $"La ligne a été sumprimée avec succès !");
		}

		public override async Task OnBeforeChangeLineAsync(BeforeChangeLineEventArgs e)
		{
			if (!await Dialogs.AnswerYesNo(Page, $"Voulez-vous vraiment modifier la colonne {e.ColumnToChange} de cette ligne {e.Line["id_art"]} avec cette nouvelle valeur {e.NewValue} ?"))
			{
				e.CancelChangeLine = true;
			}
		}
	}
}


A télécharger : 0000003452.zip (1 Kb - 13/05/2026)


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)