Gelöst Lagerbuchung: Bewegungsdatum konnte nicht gesetzt werden ?!

Arne Drews

Mitglied
Moin,

Ich habe eine Lagerbuchung geschrieben, um mit einem speziellen externen Lager Warenbuchungen mit den Sage Lagerplätzen umzusetzen.
Das hat bisher Monate lang sehr gut funktioniert, macht aber seit einiger Zeit den folgenden Fehler ( aus LagerplatzBuchung.Errors.GetDescriptionSummary() )
Es konnte kein Bewegungsdatum für die Buchung gesetzt werden.

Gefühlt besteht das Problem seit dem letzten LiveUpdate, allerdings habe ich die Anwendung schon gegen die aktuellen DLLs compiliert und erhalte weiterhi die Fehlermeldung.

Die Objektinitialisierung der Lagerplatzbuchung mache ich wie folgt:
C#:
Sagede.OfficeLine.Wawi.LagerEngine.LagerplatzBuchung Buchung =
  new Sagede.OfficeLine.Wawi.LagerEngine.LagerplatzBuchung(Client, DateTime.Now.Date, (short)DateTime.Now.Year);

Das Mandantenobjekt ist korrekt initialisiert.
Das sollte mit dem Datum doch so korrekt sein, oder nicht? Ich kann mir nicht erklären, warum er das Datum nicht setzen kann.

System
Windows Server 2019 Version 1809 - Build 17763.4645
Sage 100 Version 9.0.5.3 - Build 7248 - 16.06.2023
 
Könnte es an einem abweichenden Geschäftsjahr und darausfolgend einem Missmatch zwischen dem Datum
C#:
DateTime.Now.Date
und dem Jahr
C#:
(short)DateTime.Now.Year
liegen? Würde auch erklären, warum es lange ging und seit einiger Zeit nicht mehr.
 
Danke für die Antwort, aber durch den zweiten Parameter
C#:
DateTime.Now.Date
ergibt sich ja nach meiner Auffassung das aktuelle Tagesdatum, was vom Jahr her nicht von dem dritten Parameter
C#:
(short)DateTime.Now.Year
abweichen kann.

Das Geschäftsjahr setze ich ja an keiner Stelle explizit oder ist das machbar?
Der benannte Benutzer, der das Script ausführt befindet sich im korrekten Geschäftsjahr.
 
Stimmt, aber die Frage ist, was der dritte Parameter erwartet: das tatsächliche oder das fiskalische Jahr. Das tatsächliche kann ich mir kaum vorstellen, da dieses ja schon im Datum steckt. Warum sollte man es also nochmal angeben müssen?
Ich könnte mir also vorstellen, dass das fiskalische erwartet wird, aber das Tagesdatum aus dem zweiten Parameter nicht mehr im übergebenen tatsächlichen Jahr des dritten Parameters enthalten ist (bspw. wenn am 01.08.2023 das GJ 2024 begonnen hat -> der heutige 29.08.2023 wäre nicht mehr in GJ 2023 enthalten). Wie nun das GJ, mit dem der User angemeldet ist, ausgelesen werden kann und ob es überhaupt daran liegt weiß ich aus dem Stand nicht, sind nur Gedankenspiele :)
 
Ja ok, ich weiß, was Du meinst, aber das passt bei uns. Unser Geschäftsjahr geht immer von 01.01 bis 31.12.
Aktuell kann es da zu keinem Überhang kommen.
 
Hallo,

besteht das Problem, wenn man zusätzlich nach der Initialisierung das Bewegungsdatum explizit zuordnet?
Buchung.Bewegungsdatum = DateTime.Today;

Obwohl das Geschäftsjahr zum 01.01 beginnt, ist es empfehlenswert das Lagerplatzbuchungsobjekt etwa wie folgt zu initialisieren:
lagerbuchung = new LagerplatzBuchung(_mandant, DateTime.Today,(short)_mandant.PeriodenManager.Perioden.Date2Periode(DateTime.Today).Jahr);

Beste Grüße
Sergej
 
Danke für die Anregung,

Ich werde das nachher gleich mal testen und spätestens morgen früh Feedback geben.
 
Guten Morgen,

Also das scheint funktioniert zu haben. Ich habe die Initialisierung so umgeschrieben, wie von Dir angegeben und auch das Bewegungsdatum hinterher explizit gesetzt. Ob es jetzt an dem einen oder anderen lag, teste ich nochmal in Ruhe.

Erstmal das Lager in Zufriedenheit wiegen. :p

Danke für die Hinweise!
 
Zurück
Oben