Pflichtzubehör wird nicht automatisch in Beleg übernommen

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:
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
 
Hallo,
ich kenne keine Funktion hierfür, auch deshalb nicht, da die Zubehörpositionen manuell in den Aufträgen geändert werden können, was bei Folgebelegen berücksichtigt werden sollte. Daher würde ich die Auftragspositionen durchgehen und die Positionen, die relevant sind, in die Sofortrechnung übernehmen. Für die Zubehörzugehörrigkeit ist die UrsprungsID (pos.VKUrsprungsHandle) relevant.
Beste Grüße
Sergej
 
Danke für die Info! So in etwas habe ich mir das leider auch schon gedacht.
Wäre halt schön, wenn man bei CopyData bspw. eine Parametrisierung hätte, über die man sagen kann, mit Zubehör oder ohne (Standard).

Aber dann weiß ich Bescheid, danke.
 
Zurück
Oben