In een verkoopdocument van het commercieel beheer een lijst opmaken van de klantenbestellingen wanneer de klant belt

0000002198     -      16-01-2025

Het maakt het mogelijk om in een verkoopdocument een lijst te maken van de openstaande klantenbestellingen wanneer een klant belt. Wanneer een klant geselecteerd wordt geeft de module het aantal openstaande orders weer (indien het aantal hoger is dan nul). De gebruiker kan zijn keuze om de bestellingen weer te geven, bevestigen. Deze weergave gebeurt via de historiek van de klant.

De code moet in een Billing-customizer geplaatst worden die gecreëerd werd vanuit de bijbehorende sequentie. Dit implementeert de volgende interfaces:

Maakt vooral gebruik van het event AfterApplyCustomerSupplier van de BillingEngine van het huidige document.

De code wordt als volgt samengesteld:

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

// <CompileWithRoslyn />

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.AfterApplyCustomerSupplier += BillingEngine_AfterApplyCustomerSupplier;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.AfterApplyCustomerSupplier -= BillingEngine_AfterApplyCustomerSupplier;
        }

        void BillingEngine_AfterApplyCustomerSupplier(object sender, MercatorUi.Engine.Gescom.BillingEngine.AfterApplyCustomerSupplierEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            if (billingEngine.BillingForm == null) // BillingEngine is niet gekoppeld aan een BillingForm. We bevinden ons waarschijnlijk niet in een automatische verwerking
                return;
            if (!billingEngine.IsNew) // oude documenten die gewijzigd worden, worden niet verwerkt
                return;
            DataSet ds = Api.Zselect(Globals.RepData, "select count(id) as nbr_comm from pieds_v (NOLOCK) where (id_cli=@id_cli) and (n_lignes>0) and (type=3)", new MercatorSqlParam("@id_cli", e.IdCliOrFou, SqlDbType.Char));
            if (ds == null)
                return;
            int nbr_comm = ds.Tables[0].Rows[0].Value<int>("nbr_comm");
            if (nbr_comm == 0)
                return; // geen bestelling voor deze klant -> de procedure wordt niet verdergezet
            if (!Dialogs.AnswerYesNo(_Divers.Iif_langue(Globals.Langue, "Order(s) existing for this customer : ", "Bestande bestellingen voor deze klant : ", "Commande(s) en cours pour ce client : ") + nbr_comm.ToString() + "\r\n" + _Divers.Iif_langue(Globals.Langue, "Browse these orders ?", "Deze bestellingen bladeren ?", "Parcourir ces commandes ?"), billingEngine.BillingForm))
                return; // de gebruiker wil de bestellingen niet zien -> de procedure wordt niet verdergezet
            string reqSql = string.Format("select pieds_v.id,journal,piece,reference,type,date,heure,tot_bas_dv,tot_bas_fb,tot_ttc_dv,tot_ttc_fb,n_dec,id_dev,imprime,cubic as flag_appl,niveau_bo,c_nom,devises.nom as dev_nom "
                                        + "from pieds_v (NOLOCK) inner join cli (NOLOCK) on (pieds_v.id_cli=cli.c_id) "
                                        + "inner join devises(NOLOCK) on (pieds_v.id_dev=devises.id) where (pieds_v.type=3) and (pieds_v.id_cli='{0}') order by pieds_v.date", Api.UnquoteSql(e.IdCliOrFou));
            Globals.Main.ShowHistWithReqSql("V", reqSql, false, billingEngine.BillingForm);
        }
    }
}


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)