Toevoegen van de vervaldatum in de klantenhistoriek bij één journaal

0000003056     -      22-12-2024

 Sinds versie 10.10 is deze code verouderd. Het is mogelijk de roosters van de historieken in het menu "Vensters" zonder programmatie te wijzigen.

Deze configuratie toont hoe u, alleen bij sequentie VEN, een vervaldatum kan toevoegen in de klantenhistoriek (menu "Vensters"). In dit voorbeeld laten we u ook zien hoe u de vervaldatum in het vet kan zetten voor de datum van vandaag.

Dit wordt gedaan door een HistCli customizer te maken die maar één interface aanspreekt: IGridUnifiedCustomizer.

De code bevat 3 delen die verenigd worden via het GridUnifiedCustomizerContainer object:

  • StringUpdater : die de SQL query kan wijzigen. Deze code wordt altijd eerst aangeroepen en wordt gebruikt om onderstaande onderdelen in te stellen.
  • GridUpdater : die tegelijkertijd met FormGridCustomize werkt.
  • PrefuserKeyCompl : die ons toelaat om een extra tekenreeks op te geven die de volgorde en breedte van de kolommen kan bewaren.
  • Dispose : die slechts één keer kan uitgevoerd worden om het rooster weg te gooien.

Deze programmering is compatibel met het contextmenu "Opnieuw zoeken" van het rooster.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Drawing;
using MercatorUi.GridPro;


// <CompileWithRoslyn />

namespace HistCli
{
    public class Customizer : MercatorUi.ICustomizers.IGridUnifiedCustomizer
    {
        public void GridUnifiedCustomize(GridUnifiedCustomizerContainer gridUnifiedCustomizerContainer)
        {
            gridUnifiedCustomizerContainer.StringUpdater = (reqSql) =>
            {
                string journal = Api.StrExtract(reqSql, "pieds_v.journal='", "'").TrimEnd();
                if (journal == "VEN")
                    reqSql = reqSql.Replace("date,", "date,echeance,");

                gridUnifiedCustomizerContainer.GridUpdater = () =>
                {
                    if ((journal == "VEN") && !gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
                    {
                        gridUnifiedCustomizerContainer.Grid.Columns.Add("echeance", "Echéance");
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].Width = 85;
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DataPropertyName = "echeance";
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DefaultCellStyle.Format = Api.Iif(MercatorUi.Globals.DateMDY, "MM/dd/yyyy", "dd/MM/yyyy");
                        gridUnifiedCustomizerContainer.Grid.CellFormatting += Grid_CellFormatting;
                    }
                    else if ((journal != "VEN") && gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
                    {
                        gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
                        gridUnifiedCustomizerContainer.Grid.Columns.Remove("echeance");
                    }
                };

                gridUnifiedCustomizerContainer.PrefuserKeyCompl = journal == "VEN" ? journal : "";

                gridUnifiedCustomizerContainer.Dispose = () =>
                {
                    gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
                };
                
                return reqSql;
            };
        }

        void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;
            if ((grid.Columns[e.ColumnIndex].Name == "echeance") && (grid.Rows[e.RowIndex].Cells["echeance"].Value != DBNull.Value))
            {
                if (Convert.ToDateTime(e.Value) < DateTime.Now)
                    e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
            }
        }
    }
}


Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)