Gelöst AppLibraryCall (Buchungserfassung)

lireiner

Mitglied
Teammitglied
Hallo, ich habe mal wieder ein Problemchen ;-).

Kann mir jemand sagen wie man in der dll (Aufruf über AppLibraryCall) an das Objekt der Buchungserfassung kommt.
Ich benötige Infos aus dem Buchungssatz auf dem der Benutzer gerade steht b.z.w gerade ausgewählt hat.

Dazu habe ich mir zwar die Verweise Rewe.Buchungserfassung und Rewe.RealTimeData eingebunden, aber ich kann darin nichts finden wie ich an den aktuell gewählten Buchungssatz komme.

Für den VK- oder EK-Beleg nutze ich so etwas
Code:
Dim beleg = New Sagede.OfficeLine.Wawi.BelegEngine.Beleg(MyBase.Mandant, Sagede.OfficeLine.Wawi.Tools.Erfassungsart.Einkauf)
beleg = Sagede.OfficeLine.Wawi.BelegProxyEngine.BelegHandler.FromDataContainer(MyBase.Mandant, DateTime.Now, MyBase.Data)
Schön wäre ein ähnlicher Code Ausschnitt für die Buchungserfassung.

Gruß Reiner
 
Hallo,
ich habe eine erstaunlich einfache Möglichkeit gefunden an die von mit benötigten Daten heranzukommen.
Code:
Dim Bucherfass_TAN As Int32 = Me.Data.GetValue(Of Int32)("Tan")
                    Dim Bucherfass_KtoHaben As String = Me.Data.GetValue(Of String)("KontoHaben")
                    Dim Bucherfass_Belegnummer As String = Me.Data.GetValue(Of String)("Belegnummer")
                    Dim Bucherfass_LiefMatchcode As String = MyBase.Data.GetValue(Of String)("KontoHabenMatchcode")

Super wäre, wenn das im Kochbuch oder im Entwicklerhandbuch mit erwähnt wäre.

Gruß Reiner
 
Hallo,
Ein Äquivalent zu BelegHandler.FromDataContainer für einen Buchungssatz habe ich nicht gefunden.
Was man ausprobieren kann ist

Code:
//DataContainer zu buchungProxy
Sagede.OfficeLine.Rewe.RealTimeData.DataServices.Buchungserfassung.BuchungProxy buchungProxy = new Sagede.OfficeLine.Rewe.RealTimeData.DataServices.Buchungserfassung.BuchungProxy(this.Data, mandant);

//Handler instanzieren

            Sagede.OfficeLine.Rewe.RealTimeData.DataServices.Buchungserfassung.BuchungHandler buchungHandler = new Sagede.OfficeLine.Rewe.RealTimeData.DataServices.Buchungserfassung.BuchungHandler(mandant);


//zum Buchungssatz konvertieren
            Sagede.OfficeLine.Rewe.Buchungserfassung.Buchungssatz buchungssatz = buchungHandler.ConvertContainerToBuchung(mandant, buchungProxy, "", DateTime.Now.Year, DateTime.Today);

Ggf. muss hier darauf geachtet werden dass es ein normaler Buchungssatz ist und keine Aufteilung.
 
Hallo Jan,

ich denke darübe komme ich nicht an den aktuellen Buchungssatz, ich finde im BuchungsProxy keinen gefüllten DataContainer.
Aber meine Methode klappt eigentlich Prima, oder siehst da irgendwelche Gefahren, dass man dabei auch falsche Daten erwischen kann?

Super wäre wenn es einen Tipp in den Sage Dokumentationen gäbe (damit meine ich nicht irgendwo, sondern in den von mir genannten Dokus).
Nur so zur Sicherheit, damit man nicht kompletten Humbug zusammenschraubt.

Gruß Reiner
 
Hallo Reiner,

ich sehe keine Gefahren mit der Methode.
Darüber kannst du sogar die Werte zurück an die Buchungserfassung geben.
Du könntest dir eine Hilfsklasse bauen, die von Sagede.Core.Data.DataContainer erbt.
In dieser Klasse könntest du mit den von Sage bereitgestellten Snippets "propdc" deine Properties aufbauen.
Code:
Public Class BuchungHelper
Inherits Sagede.Core.Data.DataContainer

    Public Property Tan As Int32
        Get
            Return Me.GetValue(Of Int32)("Tan")
        End Get
        Set(ByVal value As Int32)
            Me("Tan") = value
        End Set
    End Property

Jetzt kannst du die im AppLibraryCall geerbte Property "Data" casten, in etwa so
Code:
Sagede.Core.Data.DataContainerElementExtensions.CastAs(Of BuchungHelper)(Me.Data)

Alle Daten die du in der Klasse BuchungHelper manipulierst sollten an die Buchungserfassung zurückgegeben werden.
 
Hallo Jan,

das gefällt mir sehr gut, vielen Dank für die Hilfestellung.

Gruß Reiner
 
Zurück
Oben