L'exemple ici montre comment imprimer un cadre supplémentaire reprenant les données Intrastat des articles repris dans le document. Pour ce faire, nous passons par l'ajout de 4 paramètres supplémentaires au rapport.
Le code doit être placé dans un customizer Billing créé à partir de la séquence correspondante. Il implémente les interfaces suivantes :
Il exploite essentiellement l'évènement PrintPrevPrepared du BillingEngine du document en cours.
Le code s'établit comme suit :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using System.Linq;
using MercatorExtensions;
using MercatorDatabase;
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)
{
MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
if (billingEngine.CLI == null) // le client n'a pas été saisi
return;
// Ajout données Intrastat
string dossier = "";
if (billingEngine.SEQUENC.Table.Columns.Contains("DOSSIER"))
dossier = billingEngine.SEQUENC["DOSSIER"].ToString();
string cliLangue = billingEngine.CliRecord.C_LANGUE;
e.Parameters.Add("ISTAT_CODE", MercatorController.xFunctions.xSumIstat(MercatorController.xFunctions.SumIstatType.V, billingEngine.PIEDS, billingEngine.LIGNES, MercatorController.xFunctions.SumIstatInfo.CodeId, dossier)); // ajout d'un paramètre passé au générateur de rapports
MercatorController.xFunctions.SumIstatInfo libLangue = MercatorController.xFunctions.SumIstatInfo.CodeLibF;
switch (cliLangue)
{
case "N": libLangue = MercatorController.xFunctions.SumIstatInfo.CodeLibN; break;
case "E": libLangue = MercatorController.xFunctions.SumIstatInfo.CodeLibE; break;
case "D": libLangue = MercatorController.xFunctions.SumIstatInfo.CodeLibD; break;
default: libLangue = MercatorController.xFunctions.SumIstatInfo.CodeLibF; break;
}
e.Parameters.Add("ISTAT_LIB", MercatorController.xFunctions.xSumIstat(MercatorController.xFunctions.SumIstatType.V, billingEngine.PIEDS, billingEngine.LIGNES, libLangue, dossier)); // ajout d'un paramètre passé au générateur de rapports
e.Parameters.Add("ISTAT_VALEUR", MercatorController.xFunctions.xSumIstat(MercatorController.xFunctions.SumIstatType.V, billingEngine.PIEDS, billingEngine.LIGNES, MercatorController.xFunctions.SumIstatInfo.Value, dossier)); // ajout d'un paramètre passé au générateur de rapports
e.Parameters.Add("ISTAT_POIDS", MercatorController.xFunctions.xSumIstat(MercatorController.xFunctions.SumIstatType.V, billingEngine.PIEDS, billingEngine.LIGNES, MercatorController.xFunctions.SumIstatInfo.Weight, dossier)); // ajout d'un paramètre passé au générateur de rapports
e.Parameters.Add("ISTAT_Q", MercatorController.xFunctions.xSumIstat(MercatorController.xFunctions.SumIstatType.V, billingEngine.PIEDS, billingEngine.LIGNES, MercatorController.xFunctions.SumIstatInfo.Quantity, dossier)); // ajout d'un paramètre passé au générateur de rapports
}
}
}
Le fichier zip ci-joint contient un layout de vente compatible avec cette programmation.
A télécharger :
0000002887.zip (38 Kb - 28/02/2023)