U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Toon de vorige bewegingen tijdens het zoeken naar artikelen in documenten van het commercieel beheer

0000003021     -      16-11-2021

Mercator 10.9 of later wordt gebruikt om de eerdere bewegingen in de artikelzoekopdracht uit de documenten van het commerciële management weer te geven. Dit maakt het mogelijk om binnen deze zoeklijst snel de laatste verkopen per artikel aan de huidige klant te visualiseren. 
Mercator voegt een kolom toe met subcellen die overeenkomen met de vorige bewegingen. Standaard worden de datum en het aantal weergegeven.

mouvements_precedents_n

Hetzelfde proces geldt voor leveranciers bij aankopen.

Om deze functionaliteit te activeren moet men de opties invullen onder "Ingave - Artikels zoeken: vorige verrichtingen"  (id=LAST_MVTS)

option_last_mvts_n

De parameters zijn respectievelijk:

  • Types van weer te geven documenten (1 = facturen, 12 = facturen en leveringen, ...)
  • Aantal dagen dat men terug gaat in de tijd om de historiek op te halen. (Beginnend vanaf datum van vandaag)
  • Maximum aantal lijnen per artikel
  • De kolom moet automatisch of manueel worden toegevoegd
    • via het contextmenu 'Vorige verrichtingen'
    • via CTRL-R

Binnen elke cel van deze extra kolom zijn de rijen in aflopende volgorde gesorteerd op basis van het veld datum

Deze sortering kan niet worden gewijzigd. Aan de andere kant zijn de algemene regels op kolomniveau sorteerbaar. Het sorteren gebeurt op basis van de datum van de eerste rij van de cel. Zo is het gemakkelijk, met een aflopende sortering, om de laatste aankoop op de eerste regel te verkrijgen.

 

Als u deze functionaliteit voor bepaalde klanten wilt uitschakelen (bijvoorbeeld een boekhoudklant), voegt u deze kolom toe aan de CLI-tabel :

alter table CLI add C_NO_LAST_MVTS bit not null default 0

en koppel het aan een vinkje op de klantenfiche. Zodra dit vakje is aangevinkt, wordt de functie gedeactiveerd.

Hetzelfde principe bestaat ook voor aankopen: een F_NO_LAST_MVTS kolom kan op dezelfde manier worden toegevoegd in de FOU-tabel.

 


De customizer hieronder laat zien hoe je informatie (bijvoorbeeld de eenheidsprijs) kunt toevoegen in de kolom "Vorige verrichtingen".

mouvements_precedents2_n

Het is ontworpen als een BrowseStock customizer,die volgende interfaces implementeert:

  • IStringUpdater om de SQL-query te wijzigen die de gegevens selecteert (ID = LAST_MVTS_V of LAST_MVTS_A)
  • IFormGridCustomizer, waarmee u het event LastMvts kan registreren, aangeroepen voor elke DataGridViewRow
    • om de extra subkolom toe te voegen in de LastMvts-kolom (de 3e) - bij de eerste oproep
    • om de nieuwe inhoud van elke cel in te stellen
  • IFormClosedCustomizer om het event LastMvts te verwijderen

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

namespace BrowseStock
{
    public class Customizer : MercatorUi.ICustomizers.IStringUpdater, MercatorUi.ICustomizers.IFormGridCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {

        public string StringUpdate(string stringToModify)
        {
            string id = Api.StrExtract(stringToModify, "<ID>", "</ID>");
            if (id.StartsWith("LAST_MVTS_"))
                stringToModify = stringToModify.Replace(", date", ", date, pu").Replace(", p.date", ", p.date, l.pu");
            return stringToModify;
        }

        public void FormGridCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigBrowseForm sigBrowseForm = (MercatorUi.Forms.Sig.SigBrowseForm)form;
            sigBrowseForm.LastMvts += sigBrowseForm_LastMvts;
        }

        void sigBrowseForm_LastMvts(object sender, MercatorUi.Forms.Sig.SigBrowseForm.LastMvtsEventArgs e)
        {
            MercatorUi.Forms.Sig.SigBrowseForm sigBrowseForm = (MercatorUi.Forms.Sig.SigBrowseForm)sender;
            MercatorUi.GridPro.DataGridViewMultiColsRowsColumn colLastMvts = (MercatorUi.GridPro.DataGridViewMultiColsRowsColumn)sigBrowseForm.dataGridView.Columns["LastMvts"];
            // Extra subkolom toevoegen aan de laatste kolom LastMvts
            if (colLastMvts.Columns.Count == 2)
                colLastMvts.Columns.Add(new MercatorUi.GridPro.DataGridViewMultiColsRowsColumn.Column(StringAlignment.Far, 60));

            e.RowInList["LastMvts"] = string.Join("\n", e.RowsLastMvts.Select(p =>
                Convert.ToDateTime(p["date"]).ToShortDateString()
                    + "\t" + Api.Transform(Convert.ToDouble(p["q"]), Globals.PictQ)
                    + "\t" + Api.Transform(Convert.ToDouble(p["pu"]), "### ##0.00")
                ));
        }

        public void FormClosedCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigBrowseForm sigBrowseForm = (MercatorUi.Forms.Sig.SigBrowseForm)form;
            sigBrowseForm.LastMvts -= sigBrowseForm_LastMvts;
        }
    }
}