Trigger: automatische facturering zonder dialoogvenster

0000002257     -      24-06-2016

De hierbeschreven 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 Majuro instantieert.

Een soortgelijke werkwijze kan toegepast worden op alle automatische groeperingen:

  • levering bestellingen
  • bestelling van voorbereide bestellingen
  • generatie abonnementen
  • onderhoud abonnementen
  • generatie tegenmerken

De code gaat als volgt

Zoom
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 contient toutes les sélections habituellement faites dans la boîte de dialogue     

            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 method DeliveriesInvoicing laten ons toe om stille-modus te activeren van de procedure. (Silent=true)