Le code repris ci-dessous permet de changer le modèle d'impression lors de l'envoi par mail d'un document de la gestion commerciale. Il exploite l’événement PrintPrevPrepared du BillingEngine. Notez que l'eventArgs passé au délégué contient toute une série d'informations qui seront passées au générateur de rapports :
- DataSet : les données du rapport
- Parameters : les paramètres du rapport
- Layout : le modèle d'impression (nom du repx)
- OutputDescriptors : les OutputDescriptors qui déterminent le comportement qui sera adopté par le générateur de rapport (imprimer, exporter, ...). Attention : cette propriété est nulle quand on édite le rapport dans l'éditeur de rapports.
- PrintMode : Preview, Print, Send, eInvoice ou _none
Le code est le suivant :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using System.ComponentModel;
using System.Linq;
namespace Billing
{
public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
{
public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
{
BillingEngine.PrintPrevPrepared += BillingEngine_PrintPrevPrepared;
}
public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
{
BillingEngine.PrintPrevPrepared -= BillingEngine_PrintPrevPrepared;
}
void BillingEngine_PrintPrevPrepared(object sender, MercatorUi.Engine.Gescom.BillingEngine.PrintPrevPreparedEventArgs e)
{
if (e.PrintMode == MercatorUi.PrintPrevEnum.Send)
e.Layout = @"<MainDir\piece_mail.repx";
}
}
}