In gekoppelde documenten de hoeveelheid van het tegenovergestelde document wijzigen

0000003270     -      24-12-2024

De onderstaande code laat zien hoe, binnen de mechaniek van gekoppelde documenten, de hoeveelheid in het tegenovergestelde document kan worden aangepast om af te wijken van die in het originele document. De situatie is als volgt: het originele document is een klantenorder. Het tegenovergestelde document is dus een leveranciersordervoorbereiding. In de tabel LIGNES_V is een kolom Q_RESERVE toegevoegd.

alter table LIGNES_V add Q_RESERVE float not null default 0

De hoeveelheid in de leveranciersordervoorbereiding moet altijd gelijk zijn aan Q van de klantenorder - Q_RESERVE. De aanpassing ten opzichte van het standaardgedrag van Mercator bestaat er dus in om altijd de waarde van Q_RESERVE af te trekken zoals gedefinieerd in de klantenorder.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Linq;
using MercatorUi.Engine.Gescom;


namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(BillingEngine billingEngine)
        {
            billingEngine.EvaluatingQtyForLinkedDocLineUpdate += BillingEngine_EvaluatingQtyForLinkedDocLineUpdate;
            billingEngine.HandlingLinkedDocLine += BillingEngine_HandlingLinkedDocLine;
        }

        public void BillingEngineClosed(BillingEngine billingEngine)
        {
            billingEngine.EvaluatingQtyForLinkedDocLineUpdate -= BillingEngine_EvaluatingQtyForLinkedDocLineUpdate;
            billingEngine.HandlingLinkedDocLine -= BillingEngine_HandlingLinkedDocLine;
        }

        private void BillingEngine_EvaluatingQtyForLinkedDocLineUpdate(object sender, BillingEngine.EvaluatingQtyForLinkedDocLineUpdateEventArgs e)
        {
            if (e.LignesVRecord.Q_RESERVE.CompareTo(e.LignesVRecord2.Q_RESERVE, Globals.N_DEC_Q) != 0)
                e.ShouldUpdateOppositeDocument = true;
        }

        private void BillingEngine_HandlingLinkedDocLine(object sender, BillingEngine.HandlingLinkedDocLineEventArgs e)
        {
            e.LignesARecordOpposite.Q = e.LignesVRecordSource.Q - e.LignesVRecordSource.Q_RESERVE;
        }
    }
}

 

De hoeveelheid zelf wordt gewijzigd door de code in het evenement HandlingLinkedDocLine. Het evenement EvaluatingQtyForLinkedDocLineUpdate wordt gebruikt om Mercator te vertellen dat de waarde van Q_RESERVE mogelijk is gewijzigd (een kolom die Mercator niet kent) en dat de orderpicking van de leverancier als gevolg daarvan moet worden aangepast.

 



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)