De hier beschreven module laat ons toe om automatisch te factureren zonder tussenkomst van een dialoogvenster. Dit geeft ons de kans om de stored procedure te gebruiken zonder tussenkomst van de gebruiker. Indien nodig, kan deze procedure geïnitialiseerd worden door een externe applicatie die Mercator instantieert.
Hetzelfde principe kan worden toegepast op automatische facturering aan leveranciers, om leveranciers te filteren.
Een soortgelijke werkwijze kan toegepast worden op alle automatische groeperingen:
- facturering van leveranciersleveringen
- levering bestellingen
- bestelling van voorbereide bestellingen
- generatie abonnementen
- onderhoud abonnementen
- generatie tegenmerken
Dit proces kan met voordeel worden geïmplementeerd door taken in de consolemodus uit te voeren.
De code gaat als volgt:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
namespace TestDeliveriesInvoicing
{
public class TestDeliveriesInvoicing
{
public void Exec()
{
DataSet ds = Api.Zselect(MercatorUi.Globals.RepData, "select * from sequenc where journal='Blivr'" + "\r\n" + "select * from sequenc where journal='Factu'");
if (ds == null)
return;
if (ds.Tables[0].Rows.Count == 0)
{
MercatorUi.Dialogs.Stop("Sequentie leveringen niet gevonden!");
return;
}
if (ds.Tables[1].Rows.Count == 0)
{
MercatorUi.Dialogs.Stop("Sequentie facturen niet gevonden!");
return;
}
Api.TrimEndDataSet(ds);
MercatorUi.Forms.Gescom.GescomDialogs.GescomAskDeliveriesInvoicing.GescomAskDeliveriesInvoicingRet ret = new MercatorUi.Forms.Gescom.GescomDialogs.GescomAskDeliveriesInvoicing.GescomAskDeliveriesInvoicingRet(
ds.Tables[0].Rows[0] // sequencOrig
, ds.Tables[1].Rows[0] // sequencDest
, string.Format("(pieds_v.date>={0}) and (pieds_v.date<{1})", Api.DateTimeSqlString(new DateTime(DateTime.Today.Year, DateTime.Today.Month - 1, 1)), Api.DateTimeSqlString(new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1))) // whereClause
, true // groupLines
, false // groupCustNoVat
, false // invoiceAccount
, true // withQZero
, false // dateAllLines
, false // noComment
, 100 // minimum)
);
// ret bevat alle selecties die normaal gesproken in het dialoogvenster worden gemaakt
int n_fact = MercatorUi.Forms.Gescom.GescomProcedures.Procedures.DeliveriesInvoicing(MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V, ret, true);
MercatorUi.Dialogs.Stop(string.Format("Automatisch gegenereerde facturen: {0}", n_fact));
}
}
}
Merk het volgende op in de code: De variable ret bevat de meest gekozen opties uit het dialoogvenster van automatische facturatie in de interface van Mercator.
De laatste parameter van de methode DeliveriesInvoicing laten ons toe om stille-modus te activeren van de procedure. (Silent=true)
Zie ook: Uitvoering van taken in console modus