Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Affichage des totaux dans l'historique clients du menu "Fenêtres"

0000001920     -      11/12/2012

Ce paramétrage offre la possibilité d'afficher les totaux dans l'historique clients du menu "Fenêtres". Cela se fonde sur la capacité qu'ont les grilles de Mercator de pouvoir se doter d'une rupture, elle-même présentant les totaux demandés. Il suffit dès lors de placer une rupture sur un élément constant pour toutes les lignes de la grille et le résultat demandé sera obtenu. Dans notre exemple, cet élément constant sera contenu dans la colonne "tout" qui contiendra pour tous les enregistrements de la grille un simple espace.

Le code en tant que tel se fait par l'écriture d'un customizer HistCli qui répond aux interfaces

  • IStringUpdater : pour modifier la requête SQL qui, par défaut, ne prend pas en compte le champ "échéance"
  • IFormGridCustomizer : pour ajouter une colonne dans la grille de l'écran

Pour recompiler ce module, il suffit de créer un projet dont le nom est HistCli, qui contient une seule classe Customizer et qui a comme référence ajoutée MercatorUi.dll ou stocker dans la base de données un customizer HistCli à partir d'un onglet C# de l'éditeur de commande. (Cette seconde option est recommandée).

Sources du code :

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
    {
         /*
          * Cette première méthode est l'implémentation de l'interface IStringUpdater.
          * Elle permet de modifier directement la requête SQL que Mercator se propose d'exécuter par défaut.
          * Comme cette requête est du type 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
          * on ajoute simplement ' ' as tout après devises.nom as dev_nom
          */

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

         /*
          * Cette seconde méthode est l'implémentation de l'interface IFormGridCustomizer
          * Elle ajoute la colonne "tout" au datagridview
          * Comme cette colonne contient une valeur pour tous les enregistrements, le simple fait de placer une
          * rupture sur cette colonne, nous donnera un total général. (si tous les documents sont dans la même devise)
          */

         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); // ce timer n'est jamais exécuté qu'une seule fois, le second paramètre est passé au Tag du timer
        }

         void timer_Tick( object sender, EventArgs e) // ce code sera ainsi exécuté de façon asynchrone, après chargement complet de la grille
        {
            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;
        }


    }
}