Zuschläge bei Beleg BeforeSave (7.0/alte Belegerfassung) -> VorPosID Problem

Dieses Thema im Forum ".NET (sagede.* DLLs)" wurde erstellt von DavidG, 5. März 2020.

  1. DavidG

    DavidG Neues Mitglied

    Hi,
    wir nutzen Code zum dynamischen Anlegen von Zuschlägen (Frachtkosten). Der Code funktioniert problemlos, wenn er eigenständig ausgeführt und ein neuer Beleg angelegt bzw. ein bestehender Beleg geladen und bearbeitet/gespeichert wird. Jedoch haben wir das Problem, dass der Code in einer DCM nicht funktioniert.
    Für den im Event "beforesave" hinzugefügten Zuschlag wird scheinbar keine VorPosID generiert. Das hat zur Folge, dass der Zuschlag in khkvkvorgaengepositionen mit VorPosID "0" gespeichert wird.
    Hat da jemand eine Idee?
    Mein workaround wäre, dass ich die Programmierung nun in eine AfterSave-DCM auslagere, aber bin mir gerade nicht sicher, ob die Transaktion zu diesem Zeitpunkt schon abgeschlossen ist und ich den Beleg neu laden kann (dann würde der Code jedenfalls funktionieren).
    Das manuelle Setzen der VorPosID funktionierte leider auch nicht korrekt. Manuelles Einfügen der Position ebensowenig (foreign key Verletzung, da der Vorgang zu diesem Zeitpunkt noch nicht existiert in khkvkvorgaenge).


    Auszug aus dem Code:

    sQry = "SELECT KHKZuschlagsarten.ZuschlagID, KHKArtikel.Steuerklasse, KHKArtikel.Erloescode, KHKArtikel.SachkontoVK, KHKZuschlagsarten.Zuschlagsart " & _
    " FROM KHKArtikel INNER JOIN KHKZuschlagsarten ON KHKArtikel.Mandant = KHKZuschlagsarten.Mandant AND " & _
    " KHKArtikel.Artikelnummer = KHKZuschlagsarten.Artikelnummer " & _
    " WHERE (KHKZuschlagsarten.Zuschlagsart = 'Fracht' and khkzuschlagsarten.Artikelnummer = 'xxx' and KHKZuschlagsarten.Mandant = " & _mandant.Id.ToString & ")"


    rs = genericConn.OpenRecordset(sQry)
    If Not rs.EOF Then
    Dim Zuschlag As New Sagede.OfficeLine.Wawi.BelegEngine.BelegZuschlag(_beleg)
    Zuschlag.Handle = rs.Item("ZuschlagID")
    Zuschlag.Zuschlagsart = rs.Item("Zuschlagsart")
    Zuschlag.Kontocode = rs.Item("Erloescode")
    Zuschlag.VKIstSchlussrechnungGleichgewichtsstatistikErfuellt = False
    Zuschlag.StaffelWert = 0
    Zuschlag.Steuerbetrag = Zuschlagswert * 0.19
    Zuschlag.VKGleichgewichtsstatistikBerechnet = 0
    Zuschlag.Zuschlagsbetrag = Zuschlagswert
    Zuschlag.ZuschlagsbetragIntern = Zuschlagswert
    Zuschlag.SteuerPeriode = _beleg.Periode

    'Zuschlag.VorgangspositionsHandle = VorPosID
    Zuschlag.Sortierung = 1
    Zuschlag.Steuercode = _beleg.Steuern(0).Steuercode 'mit dem ersten Steuercode des Belegs belegen
    Zuschlag.SteuercodeOld = _beleg.Steuern(0).Steuercode
    Zuschlag.Steuerklasse = rs.Item("Steuerklasse")
    'Zuschlag.Sachkonto = rs.Item("SachkontoVK")
    'Zuschlag.Refresh(True)
    _beleg.Zuschlaege.Add(Zuschlag)
    'Beleg.Calculate(True)
    End If


    Zuschlag.Refresh und Beleg.Calculate führt zu zusätzlichen Problemen in der DCM (Fehler in der Belegerfassung Verkauf ..)
     

Diese Seite empfehlen