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;
        }


    }
}