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

Lors de la création d'un nouveau lot dans l'interface, fixer une valeur par défaut

0000002883     -      05/07/2022

Le code illustré ici montre comment, dans la boîte de dialogue de saisie des lots, fixer une valeur pour une ou plusieurs colonnes (de la table ARTLOT). L'exemple montre comment calculer une date limite de consommation d'un produit, au départ de la date du jour augmentée d'un nombre de jours maximal de conservation fixé dans la fiche article. Ce nombre de jours sera stocké dans une nouvelle colonne de la table STOCK, qu'il faudra répercuter dans la table ARTLOT. La DLC calculée sera placée dans une colonne portant le même nom dans la table ARTLOT.

alter table STOCK add S_DLU_JOURS smallint not null default 0
alter table ARTLOT add S_DLU_JOURS smallint not null default 0
alter table ARTLOT add DLC datetime not null default '19000101'

Le code consiste en un customizer Billing qui exploite l'événement AskLotAddingRow du LotSubEngine accessible notamment depuis le BillingEngine.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
using MercatorDatabase;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.LotSubEngine.AskLotAddingRow += LotSubEngine_AskLotAddingRow;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.LotSubEngine.AskLotAddingRow -= LotSubEngine_AskLotAddingRow;
        }

        private void LotSubEngine_AskLotAddingRow(object sender, MercatorUi.Engine.Gescom.LotSubEngine.AskLotAddingRowEventArgs e)
        {
            e.NewRow["dlc"] = DateTime.Today.AddDays(Convert.ToInt32(e.NewRow["s_dlu_jours"]));
        }

    }
}