[GELÖST] Lagerwert zu einem bestimmten Datum

28. Juni 2011 17:08

Hallo Community,
ich benötige noch einmal eure Hilfe.

Ich habe einen Report, der mir alle Artikel mit dem aktuellen Lagerbestand als Tabelle auf der Seitenansicht anzeigt.

Nun habe ich auf dem Optionsreiter ein Feld hinterlegt, in dem der Benutzer ein Datum angeben kann, um den Lagerbestand zu einem bestimmten Datum zu ermitteln.

Beispiel:
Artikel 4711
01.01. EK -> 100 Stk.
05.01. VK -> -10 Stk
10.02. EK -> 30 Stk.
22.03. VK -> -40 Stk.

Mein aktueller Lagerwert würde jetzt 80 Stk. betragen.

Nun gebe ich z.B. in dem Feld im Optionsreiter das Datum 30.02.2011 an.
Jetzt soll der Lagerwert für den Zeitraum bis zum eingegebenen Datum ermittelt werden.
In dem Beispiel wären das dann die Werte:
01.01. EK -> 100 Stk.
05.01. VK -> -10 Stk
10.02. EK -> 30 Stk.

Lagerwert bis zum angegebenen Datum: 120 Stk.

Wie kann ich sowas als Code bewerkstelligen?
Der aktuelle Lagerwert ist ja kein Problem, ich weiß nur nicht wie ich den Lagerwert zu dem eingegebenen Datum ermitteln soll.
Zuletzt geändert von okidoki am 30. Juni 2011 09:50, insgesamt 3-mal geändert.

Re: CLCL Lagerwert zu einem bestimmten Datum

29. Juni 2011 08:03

Das ist aber kein Lagerwert sondern einfach nur Lagerbestand.
Es gibt Anpassungen die das Feld "Inventory" in der Item Tabelle kopieren in ein individuelles Feld und dort noch das Feld Date Filter ins Flowfield einbauen.
Dann müsstest Du den gleichen Effekt haben.

Re: CLCL Lagerwert zu einem bestimmten Datum

29. Juni 2011 09:39

JanGD hat geschrieben:Es gibt Anpassungen die das Feld "Inventory" in der Item Tabelle kopieren in ein individuelles Feld und dort noch das Feld Date Filter ins Flowfield einbauen.

Gibt es schon im Standard , statt "Inventory" nimmt man in solchen Fällen das Feld "Net Change" / Bewegung, siehe auch hier.
Report 1001 "Aktuellen Lagerwert ermitteln" liefert auch für jeden vergangenen Tag den Lagerwert und Lagerbestand, die deutsche Caption ist leider schlecht übersetzt.

Re: CLCL Lagerwert zu einem bestimmten Datum

29. Juni 2011 10:10

Also:
Erstmal vielen Dank für die Antworten.
Ich habe schon viel über dieses Thema hier im Forum gelesen und auch viele Beiträge von Kowa gelesen.

Hier mal ein Bild wie die Seitenansicht aussieht.
BILD1
Der Lagerbestand der dort angegeben ist, ist der aktuellste Lagerbestand.

Auf dem Optionsreiter habe ich nun ein Feld "Umlagerungsmenge berechnen" das auf TRUE gesetzt wird und ein Datumsfeld, wo ich das Datum eingeben kann, zu welchem Datum der Lagerbestand berechnet werden soll.
Bild2
d.h. wenn ich am 20.05.11 ein Lagerbestand von 50 habe und am 20.06.11 nochmal 50 Stk. raufpacke habe ich einen aktuellen Lagerbestand zum 20.06.11 von 100. Wenn ich in dem Datumsfeld jetzt 20.05.11 eingebe, habe ich einen Lagerbestand von 50 Stk, weil ich in dem Datumsfeld gesagt habe, nur den Lagerbestand bis zum 20.Mai.

Das Feld "Umlagerungsmenge berechnen" wird auf true gesetzt, weil die Umlagerungsmenge berechnet werden soll.
-> Item.Menge := BestandperDatum - BestandAktuell;

Um diese Rechnung durchführen zu können, wollte ich jetzt gerne wissen, wie ich den Bestand per Datum (Datum in dem Datumsfeld auf dem Optionsreiter) bestimmen kann.
Ich gebe also ein Datum dort ein und möchte den Lagerbestand bis zu diesem Datum haben.

Ich hoffe das war jetzt noch etwas verständlicher :P
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von okidoki am 29. Juni 2011 13:21, insgesamt 1-mal geändert.

Re: CLCL Lagerwert zu einem bestimmten Datum

29. Juni 2011 12:13

Upload funktion des Forums bitte benutzen für die Bilder.

Re: [aktualisiert] Lagerwert zu einem bestimmten Datum

29. Juni 2011 18:19

okidoki hat geschrieben:Ich gebe also ein Datum dort ein und möchte den Lagerbestand bis zu diesem Datum haben.

Zweite Recordvariable für Item anlegen, auf diese im "Date Filter" den gewünschten Filter setzen ("Date Filter",'..%1',OptionsDatum), dann im OnAfterGetRecord
Item2.GET("No.") und Item2.CALCFIELDS("Net Change"). Damit wird dann der Bestand (am Tagesende) für das eingegebene Datum berechnet. Das ist dann dein BestandPerDatum.

Re: Lagerwert zu einem bestimmten Datum

30. Juni 2011 09:16

Also einen Lagerbestand per Datum bekomme ich jetzt schonmal :P nur ist das glaub ich der falsche ...
und dazu muss ich noch sagen, das man beim Report nicht das Feld "net Change" genommen hat, sondern Inventory.
Meine Funktion ZeilenErzeugen sieht jetzt folgendermaßen aus:
Code:
IF BestimmeUmlagerungsmenge THEN BEGIN
  g_Rec_Item := Item;  // musste ich machen weil später beim get gemeckert wird, das Artikelnr. = "" (leer) ist
  L_Dec_BestandAktuell := Item.Inventory;
  g_Rec_Item.SETRANGE(g_Rec_Item."Date Filter", g_Startdatum, g_Enddatum); // habs jetzt mit Start- und Enddatum gelöst im Optionsreiter des Report
  g_Rec_Item.GET(g_Rec_Item."No.");  // das Get dann auf die Nr. wie du geschrieben hast
  g_Rec_Item.CALCFIELDS(g_Rec_Item."Net Change");
  L_Dec_BestandPerDatum := g_Rec_Item."Net Change";  // habs dann so geregelt. wäre das richtig?

// der nachfolgende Code dient nur dazu, Zeilen aus dem Report in die TransferLine Tabelle zu bringen und später zu sagen,
// das die Menge die Differenz vom Bestand per Datum - Bestand aktuell ist
IF L_Rec_TransferLine.FINDLAST THEN BEGIN
  L_Rec_TransferLine."Line No." += 10000;
  L_Rec_TransferLine."Item No." := Item."No.";
  L_Rec_TransferLine.Description := Item.Description;
  L_Rec_TransferLine.Quantity := L_Dec_BestandPerDatum - L_Dec_BestandAktuell;
  L_Rec_TransferLine.INSERT;
END ELSE BEGIN
  L_Rec_TransferLine.Quantity := 0;
END;
END;


Die Funktion habe ich dann übrigens in den OnAfterGetRecord Trigger des DataItems gepackt.

Re: Lagerwert zu einem bestimmten Datum

30. Juni 2011 09:50

ALLES SUPER HABS ENDLICH GESCHAFFT =)

VIELEN DANK