Report 718 (Lager-Verkauf Rückstände)

26. Februar 2007 15:47

Hallo zusammen!

Ich würde in den o. g. Report gerne eine kleine (?) Änderung einbauen:

Gedruckt werden sollen nur die Zeilen, wo das Ergebnis aus Restauftragsmenge minus Lagerbestand positiv ist. Bei der Restauftragsmenge dürfen aber nur die Kundenaufträge bis einschließlich Tagesdatum (also Rückstände) berücksichtigt werden.

Vorab schonmal vielen Dank für Eure Tipps!

Gruß
Sascha
Zuletzt geändert von Topspiner am 28. Februar 2007 10:12, insgesamt 2-mal geändert.

26. Februar 2007 17:03

Deine Änderung muss im Sales Line - OnAfterGetRecord-Trigger greifen:

Code:
IF "Shipment Date" >= WORKDATE THEN
  CurrReport.SKIP;


// --------- DEIN  NEUER QUELLTEXT --------------
IF Rückstand (musst du selber berechnen) THEN
  CurrReport.SKIP;

CALCFIELDS(Lagerbestand);
IF Restauftragsmenge - Lagerbestand <= 0 THEN
  CurrReport.SKIP;
// -----------------------------------------------------

Cust.GET("Bill-to Customer No.");

SalesOrderLine.SETRANGE("Bill-to Customer No.",Cust."No.");
SalesOrderLine.SETFILTER("No.",'<>' + Item."No.");
OtherBackOrders := SalesOrderLine.FIND('-');



Übrigens, falls du für die Berechnung des Rückstandes (1. Punkt) lediglich ein Datumsfeld der Sales Line abfragst, setze besser einen DataItemTableView (=TableFilter) in das DataItem Sales Line und nehme den programmierten Part oben wieder raus.
Zuletzt geändert von Natalie am 26. Februar 2007 17:30, insgesamt 1-mal geändert.

26. Februar 2007 17:19

Wieder was dazugelernt :-) Jetzt klappt es, vielen Dank!

Gruß
Sascha

27. Februar 2007 10:59

Leider zu früh gefreut...!

Es soll nicht die Restauftragsmenge pro Auftrag sondern die Gesamt-Restauftragsmenge (siehe Sales Line Footer) berücksichtigt werden.
wie kan nich das einbauen?

Danke!

27. Februar 2007 11:36

Das, was der Footer zusammen rechnet, selber manuell nachrechnen...

27. Februar 2007 11:45

Und dann...? Kann man das nicht im Code einbauen?

27. Februar 2007 12:14

Ja, genau das sollst du tun ;-)
Berechnungen, die nur einmal notwendig sind (und für alle Sales Lines gleich gelten), gehören in den OnPreDataItem-Trigger.

27. Februar 2007 12:35

Das habe ich versucht, dann bekomme ich aber wieder alles angedruckt!
Sorry, bin halt noch Frischling :-(

27. Februar 2007 13:51

Topspiner hat geschrieben:Das habe ich versucht, dann bekomme ich aber wieder alles angedruckt!

Kannst du uns den Code mal zeigen? Dann können wir wahrscheinlich besser helfen.
Topspiner hat geschrieben:Sorry, bin halt noch Frischling :-(
Kein Problem, dafür gibt es ja dieses Forum. :-)

Gruß, Marc

27. Februar 2007 14:17

Report 718: Habe diesen Code jetzt in den OnPreDataItem Trigger ergänzt:

CALCFIELDS(Lagerbestand);
IF Restauftragsmenge - Lagerbestand <= 0 THEN
CurrReport.SKIP;

Vorher stand dieser im OnAfterGetRecord Trigger. Das funktionierte auch soweit, allerdings rechnete Navision jede Zeile durch. In der Liste sollen aber nur Artikel ausgegeben werden, wo das Ergebnis aus (Gesamt-) Restauftragsmenge minus Lagerbestand >= 0 ist!

6. März 2007 14:41

Hat keiner eine Idee?

6. März 2007 15:56

Natürlich muss Navision jede Zeile durchrechnen, denn sonst kann deine If-Bedingung ja nicht ausgewertet werden. Im OnAfterGetRecord ist schon der richtige Platz.
Und durch das Skip sollte die weitere Bearbeitung nicht mehr stattfinden, also auch keine Ausgabe.