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

Comment dans une étiquette article imprimer des informations relatives au document à partir duquel on imprime ces étiquettes ?

0000002305     -      09/05/2016

Les étiquettes "articles" peuvent être imprimées au départ de la fiche "article" ou à partir d'un document de la gestion commerciale. Si cette seconde possibilité est utilisée, il est souvent demandé de reprendre sur cette étiquette des informations relatives au document d'origine (journal, n° de piece, ...)

Cela peut se faire à l'aide d'un customizer de rapport dans le paramétrage de l'étiquette. (Pas dans l'éditeur de rapports mais bien dans l'écran obtenu par "Outils / Paramétrage Documents"). Dans notre exemple, nous allons passer une DataTable supplémentaire au rapport, nommée Pieds et contenant 2 colonnes : journal et piece. Le customizer implémente l'interface MercatorUi.ICustomizers.IDataSetForReportUpdater, ce qui permet d'ajouter facilement cette DataTable au DataSet passé à l'éditeur de rapport.

Le code de ce customizer est le suivant :

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

namespace MercatorUi.Reporting
{
    public class Customizer : MercatorUi.ICustomizers.IDataSetForReportUpdater
    {

        public void DataSetForReportUpdate(DataSet ds, MercatorUi.Reporting.CustomizerInfo customizerInfo)
        {
            DataTable dt = new DataTable("Pieds");
            dt.Columns.Add("journal", typeof(string));
            dt.Columns.Add("piece", typeof(Int64));
            dt.Rows.Add(dt.NewRow());
            ds.Tables.Add(dt);
            Form f = MercatorUi.Globals.Main.WonTopForm();
            if ((f != null) && (f is MercatorUi.Forms.Billing.BillingForm))
            {
                MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)f;
                Api.DataRowMerge(dt.Rows[0], billingForm.BillingEngine.PIEDS, true);
            }
        }
    }
}

On voit bien dans le code une gestion correcte du cas où l'étiquette est imprimée en dehors d'un document. (ligne commençant par if) Dans cette circonstance, l'information contenue dans la table ajoutée sera vide. (DbNull)

L'exemple d'étiquette peut être trouvé dans le fichier Statx disponible dans le zip ci-joint.



A télécharger : 0000002305.zip (7 Kb - 06/03/2014)