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.
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)
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".
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
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;
}
}
}