Gelöst Gleichgewicht wird nicht übernommen

Arne Drews

Mitglied
Hallo,

Wie kann ich das Gleichgewicht der Belege beim Erstellen belegen?
Die Positionen haben zwar die Eigenschaften GleichgewichtsstatistikBestellt, -Geliefert und -Berechnet, aber wenn ich die setze:
Code:
p.GleichgewichtsstatistikBestellt = p.Menge;
p.GleichgewichtsstatistikGeliefert = p.Menge;
p.GleichgewichtsstatistikBerechnet = p.Menge;
Getestet habe ich auch, VKIstSchlussrechnungGleichgewichtsstatistikErfuellt auf true zu setzen, aber es bleiben immer die entsprechenden Felder auf 0.

Beispiel:
Auftrag hat (Bestellt/Geliefert/Berechnet): 1/0/0

Logisch bis dahin, erstelle ich aber den Lieferschein, hat dieser 0/1/0.
Bei Erstellung einer Rechnung dann 0/0/1

Die Belege werden mit Transform übernommen und mit allen Daten aufgefüllt. Bis auf das Gleichgewicht haut auch alles hin.

Ich setze nach dem Speichern auch den Beleg auf IstErfuellt = true.

Welche Möglichkeit übersehe ich?
Danke
 
Hallo,

wie werden die Positionen übernommen?
Code:
 oBeleg.AddBelegPositionen(lBelId, True)
Ggf. fehlen noch das VorgangspositionsHandle der Position oder auch Mengenangaben in den Referenzen
Code:
 For Each oPosRef In oPos.VorgangspositionsReferenzen
               oPosRef.Menge = oPos.Menge
               oPosRef.MengeBasis = oPos.MengeBasis
Next oPosRef
 
Hi,

Beleg.AddBelegPositionen() habe ich bisher nie verwendet. Ist der Parameter für das BelegHandle eigene oder ein Quell-Dokument?

Ich übernehme die Artikel aktuell auf diese Weise aus einem Vorgängerbeleg:
Code:
foreach ( BelegPosition pos in source_doc.Positionen )
{
    BelegPosition p = new BelegPosition(doc);
    p.SetArtikel(pos.Artikelnummer, pos.AuspraegungsHandle);
    p.Menge = pos.Menge;
    p.Einzelpreis = pos.Einzelpreis;
    p.Rabatt = pos.Rabatt;
    p.SetLagerplatz(20183, "INTERN;0;0;0");
    p.Bezeichnung1 = pos.Bezeichnung1;
    p.Bezeichnung2 = pos.Bezeichnung2;
    p.Langtext = pos.Langtext;
    p.LangtextHtml = pos.LangtextHtml;

    if (pos.LangtextIstRichtext)
        p.LangtextRtf = pos.LangtextRtf;

    p.Calculate();
    p.GleichgewichtsstatistikBestellt = p.Menge;
    p.GleichgewichtsstatistikGeliefert = p.Menge;
    p.GleichgewichtsstatistikBerechnet = p.Menge;

    p.IstErledigt = true;
    doc.Positionen.Add( p );
}
Dass ich die Mengen zusätzlich in den VorgangsPositionsReferenzen noch manuell anlegen soll, erscheint mir ein wenig FailByDesign. Das müssen doch die Sage-Prozesse machen?

Danke
 
evtl. reicht dann schon
Code:
p.VorgangspositionsHandle  = pos.VorgangspositionsHandle

lBelId kommt aus dem Quell-Beleg
 
Teste ich, danke!

Getestet: Das war die Lösung, danke!
Einzige Anmerkung: Position.VorgangspositionsHandle ist read-only, man muss über den Setter gehen:
Code:
/*
    p  : Position neuer Beleg
    pos: Position Quellbeleg
*/
p.SetVorgangPositionHandle( pos.VorgangspositionsHandle );
 
Zuletzt bearbeitet:
Zurück
Oben