Arne Drews
Mitglied
Moin,
Ich erstelle eine Sofortrechnung über einen Auftrag und übernehme dort nur Speditionsartikel.
Einige Speditionsartikel haben automatisches Zubehör ( Pflichtzubehör ), das bei Erstellung der Position nicht automatisch mit aufgenommen wird.
Bestimmt gibt es da eine saubere Möglichkeit, die ich übersehe.
Mein aktueller ( hier auf das nötigste begrenzt ) Prozess:
Die Sofortrechnung wird sauber angelegt und die Positionen korrekt übernommen.
Nur eben die automatischen Zubehörartikel nicht. Das p.RefreshZubehoer() war mein Versuch, aber hilft an der Stelle nicht.
Was übersehe ich?
Gerne mit Zaunpfahl winken, falls erforderlich
Ich erstelle eine Sofortrechnung über einen Auftrag und übernehme dort nur Speditionsartikel.
Einige Speditionsartikel haben automatisches Zubehör ( Pflichtzubehör ), das bei Erstellung der Position nicht automatisch mit aufgenommen wird.
Bestimmt gibt es da eine saubere Möglichkeit, die ich übersehe.
Mein aktueller ( hier auf das nötigste begrenzt ) Prozess:
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);
Sofortrechnung.Positionen.Clear();
foreach (DropShippingItemPositionModel model in positions)
{
BelegPosition pos = Auftrag.Positionen.Where(i => i.Handle == model.BelPosId).FirstOrDefault();
if (pos == null)
throw new Exception($"{model.Sku} wurde im Auftrag nicht gefunden!");
BelegPosition p = new BelegPosition(Sofortrechnung);
p.CopyData(pos);
p.Calculate();
p.SetVorgangPositionHandle(pos.VorgangspositionsHandle);
p.RefreshZubehoer();
Sofortrechnung.Positionen.Add(p);
}
Sofortrechnung.Versand = Auftrag.Versand;
Sofortrechnung.Lieferbedingung = Auftrag.Lieferbedingung;
Sofortrechnung.Memo = $"[{DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")} - {Environment.UserName.ToLower()}] VOSS.GUI.DropShipping";
Sofortrechnung.Bearbeiter = $"{Environment.UserName.ToLower()} (DropShipping)";
Sofortrechnung.Zuschlaege = (Sofortrechnung.Positionen.Count < Auftrag.Positionen.Count) ? new BelegZuschlagCollection() : Auftrag.Zuschlaege;
Sofortrechnung.ZKDs = Auftrag.ZKDs;
Sofortrechnung.UserProperties["USER_VossApplication"].Value = VossStaticContextHelper.Namespace_Application;
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()}");
}
Die Sofortrechnung wird sauber angelegt und die Positionen korrekt übernommen.
Nur eben die automatischen Zubehörartikel nicht. Das p.RefreshZubehoer() war mein Versuch, aber hilft an der Stelle nicht.
Was übersehe ich?
Gerne mit Zaunpfahl winken, falls erforderlich