Arne Drews
Mitglied
Moin,
Ich erstelle über eine Anwendung eine Sofortrechnung, wie in anderen Anwendungen auch und obwohl ich Beleg.Save(false) verwende, also ohne Abbruch bei Warnungen, steigt er an der Stelle mit false aus, obwohl er keinen Fehler, sondern nur eine Warnung meldet:
Und mehr, wie:
Gibt es einen Weg, das detaillierter zu debuggen?
Hier mal der relevante Code-Teil, mit dem ich die Sofortrechnung aufbaue, evtl. sieht ja jemand auch einen Fehler, den ich übersehe:
Ich arbeite erst seit kurzem mit CopyData(), weshalb ich nicht ausschließe, dass ich an der Stelle mit den Positionen etwas falsch mache. Allerdings sieht es im Debugger bis zum Save() alles gut aus für mich.
Ich erstelle über eine Anwendung eine Sofortrechnung, wie in anderen Anwendungen auch und obwohl ich Beleg.Save(false) verwende, also ohne Abbruch bei Warnungen, steigt er an der Stelle mit false aus, obwohl er keinen Fehler, sondern nur eine Warnung meldet:
Und mehr, wie:
sagt der Fehler nicht aus. Warum liefert Save false zurück, obwohl ich angebe, dass er bei Warnungen nicht abbrechen soll?!Fehler in der Belegerfassung Verkauf
Es ist ein Fehler bei der Belegspeicherung aufgetreten.
Gibt es einen Weg, das detaillierter zu debuggen?
Hier mal der relevante Code-Teil, mit dem ich die Sofortrechnung aufbaue, evtl. sieht ja jemand auch einen Fehler, den ich übersehe:
C#:
Auftrag = new Beleg(Mandant, Erfassungsart.Verkauf);
Auftrag.Load((int)CurrentOrderItem.BelID);
using (Sofortrechnung = new Beleg(Mandant, Erfassungsart.Verkauf))
{
Sofortrechnung.Initialize(doc_type, DateTime.Now.Date, (short)DateTime.Now.Year);
Sofortrechnung.Transform(Auftrag.Handle, doc_type, DateTime.Now.Date, (short)DateTime.Now.Year, false, true);
foreach (BelegPosition pos in Auftrag.Positionen)
{
BelegPosition p = new BelegPosition(Sofortrechnung);
p.CopyData(pos);
p.Calculate();
p.SetVorgangPositionHandle(pos.VorgangspositionsHandle);
Sofortrechnung.Positionen.Add(p);
}
Sofortrechnung.Versand = Auftrag.Versand;
Sofortrechnung.Lieferbedingung = Auftrag.Lieferbedingung;
Sofortrechnung.Bearbeiter = $"{Environment.UserName.ToLower()}";
Sofortrechnung.Zuschlaege = (Sofortrechnung.Positionen.Count < Auftrag.Positionen.Count) ? new BelegZuschlagCollection() : Auftrag.Zuschlaege;
Sofortrechnung.ZKDs = Auftrag.ZKDs;
Sofortrechnung.Calculate(true);
Sofortrechnung.Validate(true);
if (!Sofortrechnung.Save(false))
throw new Exception($"could not save shipment document of order {Auftrag.BelegnummerFormatiert}. {Sofortrechnung.Errors.GetDescriptionSummary()}");
}