Belegübernahme z. B. LS in RückLS

mschauer

intellicon GmbH
Teammitglied
Hallo zusammen,
wir haben ein kleines VB.net-Tool, dass aus z. B. einem Beleg (LS) einen Rücklieferschein erstellt. Dazu transformen wir den Belg und passen die Mengen an. Denn die Mengen im Rücklieferschein müssen nicht der Liefermenge entsprechen, sie können auch geringer sein, da der Kunde nicht alles zurückliefert. Einzelne Positionen können auch mit neuer Menge = O sein, wenn der Kunde nicht alle Positionen zurückliefert.
Das passt soweit und funktioniert.

Wenn wir aber nun eine ungewöhnliche Belegreihenfolge machen bekommen wir immer eine exception, dass wir in der falschen Belegreihenfolge vorgegangen sind und die Positionseferenzen anpassen sollen. Dazu finde ich aber nirgendwo eine Anleitung, Codesnipsel oder eine Beschreibung der Methoden des Belegobjektes, und wie man sie in welcher Reihenfolge einsetzen soll.
Wir wollen z. B. eine Sofortrechnung in einen Rücklieferstorno (eigene Belegart) übernehmen, die Lager und Storno in einem Rutsch bucht.

Dabei bekommen wir die oben angesprochene Meldung und der Beleg kann nicht gespeichert werden.

Wir arbeiten sinngemäß so:

Lade alten Beleg (LS) --> Transform in neuen Beleg (RückLSStorno) --> Positionen übernehmen.
Dann in Schleife über alle Positionen des neuen Beleges
1. position.Menge = neue Menge
2. position.RefreshBasismenge(True, 0)
3. position.VorgangspositionsReferenzen.Item(0).Menge = position.Menge
4. position.VorgangspositionsReferenzen.Item(0).MengeBasis = position.MengeBasis

Dann Beleg validieren und speichern.

Und genau bei 3. wird schon die Exception geworfen, wenn wir in ungewöhnlicher Belegreihenfolge vorgehen.
Hat jemand eine Idee/ Dokumentation, wie man die Positionsreferenzen entsprechend anpassen kann, dass im neuen Beleg wirklich nur die neuen Mengen erfasst sind.

Wenn jemand eine Objekt/ Methodenliste mit genauer Beschreibung hat, würde das ja schon reichen. IntelliSense gibt aber keinen Aufschluss darüber, wie man in diesem speziellen Fall vorgehen sollte.

Vielen Dank schon einmal.
 
Zurück
Oben