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

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 ..)
 
Zurück
Oben