belegservices.ValidateKonto // ApplicationContext

D.Benker

Mitglied
Teammitglied
Hallo zusammen,

wir haben eine kleine Anpassungen mit der u.a. auch Belege erstellt werden. nach Update auf die SAGE 9.0.9 funktioniert diese Anpassung nicht mehr.

Leider haben wir (als nicht Developer Partner) keinen Zugriff auf Developer Ressourcen um herauszufinden was genau wir ändern müssen damit es wieder funktioniert,

Der Beleg wird erstellt mit einem Code wie in einer alten Version des "Developer Kochbuchs" gezeigt:

Code:
private static void handleCreateAuftragAusKundenstamm(Sagede.OfficeLine.Wawi.BelegProxyEngine.DcmContextBelegProxyServiceCall svcContext, BelegServices belegservices, string kontokorrent, string artikelnummer)
{
    svcContext.CreateNewBeleg(Erfassungsart.Verkauf, "VVA", DateTime.Today, (short)svcContext.Mandant.PeriodenManager.Perioden.Date2Periode(DateTime.Today).Jahr);

    if (!svcContext.Beleg.SetKonto(kontokorrent, false))
    {
        svcContext.Errors.AppendErrorWithSource(0, "Kunde ist nicht gültig.", "A0Konto");
    }
    svcContext.Beleg.Bearbeiter = svcContext.Mandant.Benutzer.Name;
    svcContext.Beleg.Matchcode = "Beleg über .NET-Service Call erstellt";
    belegservices.ValidateKonto(svcContext.Mandant, svcContext.Beleg);
    var position = new BelegPosition(svcContext.Beleg);
    position.Initialize(Positionstyp.Texte);
    position.Langtext = string.Format("Automatische Bestellung von Artikel {0} aus dem Kundenstamm... :)", artikelnummer) ;
    position.LangtextRtf = Sagede.Core.Tools.ConversionHelper.PlainTextToRtf(position.Langtext, "Arial", 12);
    svcContext.Beleg.Positionen.Add(position);
    position = new BelegPosition(svcContext.Beleg);
    position.Initialize(Positionstyp.Artikel);
    position.SetArtikel(artikelnummer, 0);
    position.Menge = 1;
    position.RefreshBasismenge(true, 2);
    position.Calculate();
    belegservices.ValidatePosition(svcContext.Mandant, svcContext.Beleg, position);
    svcContext.Beleg.Positionen.Add(position);
    svcContext.Beleg.Renumber();
    svcContext.Beleg.Calculate(true);
    svcContext.Beleg.Validate();
    svcContext.Beleg.PrepareForDataService();
}

Es scheint sich in der SAGE 9.0.9 jetzt dieser Aufruf geändert zu haben:

belegservices.ValidateKonto(svcContext.Mandant, svcContext.Beleg);

Dieser erwartet jetzt einen dritten Parameter vom Typ "Sagede.Shared.RealTimeData.Common.ApplicationContext"

Kann mir hier vielleicht jemand auf die Sprünge helfen wie man den oben stehenden Code wieder lauffähig bekommt ?

Vielen Dank!
 
Hallo @D.Benker,

beim dritten Parameter den ApplicationContext übergeben
etwa so:
var applicationContext = new OfficeLineConnectionInfo(svcContext.Mandant);
belegservices.ValidateKonto(svcContext.Mandant, svcContext.Beleg, applicationContext);

Dazu muss noch der Verweis auf sagede.officeline.controlcenter.shared.dll gesetzt sein.

Beste Grüße
Sergej Müller
 
Hallo Sergej

vielen Dank für deine Antwort.

ich habe es gerade einmal probiert:

Dim ApplicationContext As New OfficeLineConnectionInfo(svcContext.Mandant)
belegservices.ValidateKonto(svcContext.Mandant, svcContext.Beleg, ApplicationContext)

Die dll lies sich auch erstellen. Nur bringt mir SAGE jetzt die Meldung

1756810085581.png

Dazu eine Idee ?
 
versuche bitte noch den LegacyClient vor dem Funktionsaufruf auf true zu setzen.
applicationContext.IsLegacyClient = true;
 
Zurück
Oben