Bij het afdrukken van commercieel beheer, een tabel en een configuratie in de rapporteneditor toevoegen

0000002225     -      10-04-2019

Dit voorbeeld toont hoe u een wijziging kan aanbrengen in de gegevens die aan de rapporteneditor worden doorgestuurd met het oog op een afdrukvoorbeeld / het printen van een commercieel beheersdocument. Dit doet u door het toevoegen van:

  1. een datatabel die het rekeningoverzicht van de klant bevat in de reeks beschikbare gegevens;
  2. een bijkomende parameter die het aantal lijnen bevat in de bovenvermelde datatabel.

De code moet in een Billing-customizer geplaatst worden die gecreëerd werd vanuit de bijbehorende sequentie. Dit implementeert de volgende interfaces:

Maakt vooral gebruik van het event PrintPrevPrepared van de BillingEngine van het huidige document.

De code wordt als volgt samengesteld:

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

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

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.PrintPrevPrepared += new MercatorUi.Engine.Gescom.BillingEngine.PrintPrevPreparedEventHandler(BillingEngine_PrintPrevPrepared);
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.PrintPrevPrepared -= new MercatorUi.Engine.Gescom.BillingEngine.PrintPrevPreparedEventHandler(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) // de klant werd niet opgegeven
                return;

            string reqSql = "select journal,piece,date,(case when tot<0 then -tot else 0 end) as debit,(case when tot>0 then tot else 0 end) as credit \r\n"
                + "    from lignes_c (NOLOCK) \r\n"
                + "    where (id_cli=@id_cli) and (lettrage<=0) \r\n"
                + "    order by date";
            DataSet ds = Api.Zselect(Globals.RepData, reqSql, new MercatorSqlParam("@id_cli", BillingEngine.CLI["C_ID"], SqlDbType.Char, 10));
            if (ds == null)
                return;

            ds.Tables[0].TableName = "ExtraitCompte";
            e.DataSet.Tables.Add(ds.Tables[0].Copy()); // toevoegen van een kopij van de tabel van dit rekeningoverzicht in de dataset die naar de rapportgenerator wordt gestuurd

            e.Parameters.Add("NRowsExtraitCompte", ds.Tables[0].Rows.Count); // toevoegen van een parameter die aan de rapportgenerator werd doorgegeven: het aantal lijnen in deze datatabel
        }
    }
}

Het zip-bestand in de bijlage bevat een verkooplay-out die compatibel is met deze programmering.



Te laden : 0000002225.zip (38 Kb - 28-02-2023)