Weergave van de totalen in de klantenhistoriek van het menu "Vensters"

0000001920     -      11-12-2012

Deze parameterinstelling biedt de mogelijkheid om de totalen weer te geven in de klantenhistoriek van het menu "Vensters". Dit steunt op het feit dat de Mercator-roosters gesplitst kunnen worden, waarbij ook het gesplitste deel de gevraagde totalen kan weergeven. Het volstaat dan ook een splitsing te plaatsen op een constant element voor alle lijnen van het rooster, en u verkrijgt het gevraagde resultaat. In ons voorbeeld komt dit constante element voor in de kolom "Alle" die voor alle roosterinputs een eenvoudige zone zal omvatten.

De code als dusdanig bestaat uit het schrijven van een customizer HistCli die beantwoordt aan de volgende interfaces:

  • IStringUpdater: voor het wijzigen van de SQL-opdracht die standaard geen rekening houdt met het veld "Vervaldag".
  • IFormGridCustomizer: voor het toevoegen van een kolom in het schermrooster.

Om deze module opnieuw te compileren, volstaat het een project te creëren, genaamd HistCli, dat bestaat uit één enkele klasse Customizer en met als toegevoegde referentie MercatorUi.dll of in de database een HistCli-customizer op te slaan vanaf een tabblad C# in de besteleditor. (deze tweede optie krijgt de voorkeur)

Broncode:

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using MercatorApi;
using System.Windows.Forms;
using System.Drawing;

namespace HistCli
{
     public class Customizer : MercatorUi.ICustomizers. IStringUpdater ,
                              MercatorUi.ICustomizers. IFormGridCustomizer
    {
         /*
          * Deze eerste methode is de implementatie van de interface IStringUpdater.
          * Hiermee kunt u rechtstreeks de SQL-opdracht wijzigen die Mercator standaard voorstelt voor uitvoering.
          * Aangezien deze opdracht van het volgende type is: select pieds_v.id,journal,piece,reference,type,date,heure,tot_bas_dv,tot_bas_fb,tot_ttc_dv,tot_ttc_fb,n_dec,id_dev,imprime,cubic as flag_appl,niveau_bo,c_nom,devises.nom as dev_nom from pieds_v (NOLOCK),cli (NOLOCK),devises (NOLOCK) where (pieds_v.id_cli=cli.c_id) and (pieds_v.id_dev=devises.id) and (journal='VEN  ')  and (piece>=20060000) and (piece<=20069999) and (date>=cast('01/10/2006' as datetime)) and (date<=cast('31/10/2006' as datetime)) order by piece desc
          * voegt men gewoon toe: ' ' as tout après devises.nom as dev_nom
          */

         public string StringUpdate( string StringToModify)
        {
             return StringToModify.Replace( "dev_nom" , "dev_nom,' ' as tout" );
        }

         /*
          * Deze tweede methode is de implementatie van de interface IFormGridCustomizer
          * Ze voegt de kolom "Alle" toe aan de datagridview
          * Aangezien deze kolom een waarde bevat voor alle registraties, hoeven we enkel een
          * splitsing op deze kolom te plaatsen om een algemeen totaal te krijgen. (als alle documenten in dezelfde valuta zijn opgemaakt)
          */

         public void FormGridCustomize( Form form)
        {
            MercatorUi.Forms.Hist. HistForm histForm = (MercatorUi.Forms.Hist. HistForm )form;
            histForm.dataGridView.Columns.Add( new MercatorUi.GridPro. RupturableDataGridViewTextBoxColumn ( "tout" , "" ));
            histForm.dataGridView.Columns[ "tout" ].DataPropertyName = "tout" ;
            MercatorUi._BaseClasses. TimerOneShot timer = new MercatorUi._BaseClasses. TimerOneShot (timer_Tick, histForm); // Deze timer wordt telkens slechts eenmaal uitgevoerd, de tweede parameter wordt ingevoerd voor de tag van de timer
        }

         void timer_Tick( object sender, EventArgs e) // Deze code zal aldus asynchroon worden uitgevoerd zodra het rooster volledig is geladen
        {
            MercatorUi._BaseClasses. TimerOneShot timer = (MercatorUi._BaseClasses. TimerOneShot )sender;
            MercatorUi.Forms.Hist. HistForm histForm = (MercatorUi.Forms.Hist. HistForm )timer.Tag;
            histForm.dataGridView.PlaceRupture(histForm.dataGridView.Columns[ "tout" ]);
            histForm.dataGridView.Columns[ "tout" ].Width = 8;
        }


    }
}