15. Dezember 2009 12:23
Hallo alle!
Ich habe eine Anfängerfrage in Verbindung mit Flowfields.
Ich soll in der Artikelkarte drei neue Felder hinzufügen, mit folg. Vorgaben:
- Letztgültiger VK-Preis
Preis aus VK-Preistabelle, gültig für alle Kunden
- Startdatum des VK-Preises
- Enddatum des VK-Preises
Dazu habe ich in der T27 ("Item") drei Flowfields angelegt:
- Most Recent Unit Price (Decimal)
- Most Recent Starting Date (Date)
- Most Recent Ending Date (Date)
Da ich mit Flowfields so gut wie noch nie gearbeitet habe, stehe ich vor einem riesen Problem:
Wie müssen die CalcFormulas der drei Felder aussehen?
Vielen Dank im Voraus für eure Hilfe!
LG Gerald
15. Dezember 2009 13:02
Wozu der Aufstand? Nimm doch "FindSalesPrice" aus der CU7000, die gibt dir alle drei Daten zurück.
15. Dezember 2009 13:06
Das Problem ist, wie das Flowfield eingrenzen?
Per DateFilter kein problem, aber zu Laufzeit variabel anhand des gültigen Datumzeitraums schon problematischer.
Ich wüsste "ad hock" keine Lösung, wenn es nicht zwingend ein FlowField sein muß, würde ich keine neuen Felder anlegen in der Tabelle, sondern nur drei Felder in der Form + 3 Variablen.
Auf dem OnAfterGetRecord - Trigger eine Funktion zur Berechnung der Felder aufrufen.
Ggf. könnte ein manueller Lookup programmiert werden, wenn der erforderlich ist.
**Edit**
Ich sehe gerade, McClane hat anscheinend eine passende Lösung
15. Dezember 2009 13:29
Hallo!
Danke für eure Antworten!
Die Sache ist die, dass auf alle 3 Felder im Form gefiltert werden können soll.
Darum die Idee mit den Flowfields...
LG Gerald
15. Dezember 2009 13:47
BadGer hat geschrieben:Die Sache ist die, dass auf alle 3 Felder im Form gefiltert werden können soll.
Woher habe ich das nur geahnt
Ich wüsste nicht, wie man mit einem Flowfield an den Preis käme. Also würde ich die drei Daten direkt von der Preistabelle in die Artikeltabelle schreiben.
15. Dezember 2009 13:57
Wie McClane es schreib, würde ich es auch machen (nicht schön, aber klappt).
Die Daten (Tabelle 27) 1x beim öffnen der Form prüfen ob aktuell, wenn nicht aktualisieren.
Ebenso, wenn eine Zeile geändert oder hinzugefügt/gelöscht wird in der VK-Preistabelle (die Änderungen müssen ja auch nach 27!).
Wenn es sehr viele Artikel sind (bzw. wenn das System ohnehin langsam ist), wäre ggf. ein Aktualisierungslauf pro Tag der bessere Weg (z.B. Nachts), als bei jedem öffnen der Form.
15. Dezember 2009 14:01
mikka hat geschrieben:Die Daten (Tabelle 27) 1x beim öffnen der Form prüfen ob aktuell, wenn nicht aktualisieren.
Würde ich für unnötig halten.
15. Dezember 2009 14:28
McClane hat geschrieben:mikka hat geschrieben:Die Daten (Tabelle 27) 1x beim öffnen der Form prüfen ob aktuell, wenn nicht aktualisieren.
Würde ich für unnötig halten.
Wieso, sonst würden die Daten nie aktualisiert werden. Z.B. Beim Wechsel der Preisgültigkeit wenn das nächste Startdatum erreicht wird?!
Wie würdest du vorgehen?
15. Dezember 2009 14:33
mikka hat geschrieben:Wieso, sonst würden die Daten nie aktualisiert werden. Z.B. Beim Wechsel der Preisgültigkeit wenn das nächste Startdatum erreicht wird?!
Wie würdest du vorgehen?
Hab gar nicht an das Startdatum gedacht
15. Dezember 2009 14:46
Ich bin zwar noch nicht so genau dahinter gestiegen wo die Preise alles hinterlegt sind, aber wäre es in diesem Fall nicht einfacher (sofern SQL-Server und nicht Native) eine SQL-View anzulegen und als linked Table in NAV wieder einzubinden?
Volker
15. Dezember 2009 14:56
In diesem Fall geht es um eine Tabelle 7002 "Verkaufspreis".
Kann den die View automatisch das jeweils gültige Datum ausgeben / anzeigen, bzw. den dazugehörigen Preis?
Ich bin bisher noch nicht in den "Genuß" gekommen soetwas auszuprobieren.
Das Problem an der Sache ist, das der Preis ab einen bestimmten Datum oder bis zu einem Datum gültig sein kann!
Z.B. Duch Preiserhöhungen oder Aktionen
Daher kann nicht einfach eine Zeile (z.B. die letzte) genommen werden.
15. Dezember 2009 15:40
Hallo,
habt ihr auch an die "Bestpreis-Findung" in NAV gedacht?.
Mit einem Flowfield ist das ganze sicherlich nicht zu lösen.
Die ganze Lösung wäre in SQL nur zu realisieren, wenn man die Preisfindung im SQL-View nach programmiert. Was bei Änderungen in NAV garantiert zu Problemn führt.
McCLane's Vorschlag ist schon der vernünftigste.
Den dort ermittelten Wert in die Artikeltabelle schreiben (wenn denn unbedingt gefiltert werden muss). Was ich persönlich, aus eigener Erfahrung, für keine gute Idee halte (Laufzeit, Fehleranfälligkeit). Besser wäre eine Funktion in der Artikeltabelle, die den aktuellen VK-Preis mit FindSalesPrise ermittelt, und deren Ergebnis im Feld auf dem Form ausgegeben wird. (die Werte sind immer aktuell, und abweichende Preisinformationen (z.B. Einheit) können problemlos in der Funktion umgerechnet werden).
Warum soll denn auf diese Felder gefiltert werden? Versucht da jemand etwas zu vereinfachen, was nicht zu vereinfachen geht?
Gruß, Fiddi
15. Dezember 2009 16:55
Hallo alle!
Das mit dem Filtern ist einfach die Vorgabe.
Ich hab mir mal die Funktion "FindSalesPrice" näher angesehen.
Da wird mir einfach ein Record-Objekt zurückgegeben mit n Datensätzen drin.
Was muss ich denn da als StartDate übergeben?
Und wie weiß ich, welcher der n Datensätze nun der ist, der die Werte für meine Felder enthält?
LG Gerald
15. Dezember 2009 17:12
Du machst dir eine temporäre Variable Record Sales Price, die du leer an die Funktion übergibst. In den anderen Parametern muss nicht viel mehr als Artikelnummer, evtl. Variante, Einheit und Tagesdatum gefüllt sein (musst mal ausprobieren). Dann bekommst du dein Record zurück, und darin sind Preis, Start- und Enddatum gefüllt.
15. Dezember 2009 17:45
Beim Experimentieren mit "FindSalesPrice" aber wirklich nur
temporäre Records übergeben, da sonst die Tabellendaten gelöscht werden. Siehe auch
hier.
15. Dezember 2009 17:55
Kowa hat geschrieben:Beim Experimentieren mit "FindSalesPrice" aber wirklich nur temporäre Records übergeben, da sonst die Tabellendaten gelöscht werden.
Stimmt, da war doch was ...
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.