[Gelöst] Berechnung der Mehrwertsteuer anhand des Kaufdatums

18. November 2008 22:29

Hallo zusammen,

ich bin noch sehr grün hinter den Ohren bzgl. Navision und komme grad mal nicht weiter. Nach der Lektüre der Application Designer's Guide und diverser Seiten finde ich einfach nicht den Ansatz, wie ich mein Problem lösen kann:

Ich habe 2 Tabellen:
(Mehrwertsteuer)
Enabled Field No. Field Name Data Type Length Description
Yes 1 Lfd_Nr Code 10
Yes 2 von_Datum Date
Yes 3 bis_Datum Date
Yes 4 Mwst Decimal

(Umsatz)
Enabled Field No. Field Name Data Type Length Description
Yes 1 Lfd_nr Code 10 Lfd. Nummer
Yes 2 Zname Code 20 Verkäufername
Yes 3 Zartikel Code 20 Artikel
Yes 4 Datum Date Buchungsdatum
Yes 5 Umsatzbetrag_Netto Decimal Umsatzbetrag netto
Yes 6 Mehrwertsteuer Decimal Artikelabhängig

Jetzt soll der Wert "Mehrwertsteuer" der Umsatztabell in Abhängigkeit des Buchungsdatums berechnet werden. Es können auch Umsätze aus der Vergangenheit eingetragen werden. Könnt Ihr mir einen Tip geben, wo ich anfangen kann?
Muss ich dazu ein FlowField nutzen?
Ist der Trigger OnValidate() des Feldes Umsatzbetrag_Netto meine Anlaufstelle?
Wie kann ich, wenn ich mich in der Form Umsatz befinde, die Werte "Umsatzbetrag_Netto" und "Datum"per C/AL-Code auslesen und wie kann ich diese auf "Mehrwertsteuer->von_Datum" prüfen?

Bitte helft mir, ich glaub, wenn ich das mal kapiert hab schaff ich den Rest auch so....

Danke schon mal, und viele Grüße
Zuletzt geändert von An4k1n am 19. November 2008 23:35, insgesamt 1-mal geändert.

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 22:32

Könntest du bitte wiederholen, was du überhaupt berechnen möchtest und wie du es mit Papier und Bleistift machen würdest?

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 22:39

Klar ;-)
Ich möchte gerne aus der Tabelle "Umsätze" den Nettobetrag auslesen und diesen mit dem Wert, der in der Mehrwertsteuertabelle hinterlegt ist multiplizieren, ne nachdem, wann der Umsatz eingetragen wurde:

Mehrwertsteuer:
von_Datum=01.01.93
bis_Datum=31.03.98
Mwst=15,00

von_Datum=01.04.98
bis_Datum=31.12.06
Mwst=16,00

Umsatz:
Zartikel=Kerzen
Datum=20.05.95
Umsatzbetrag=20,00

Berechnung:
Datum liegt in dem Zeitfenster, in dem 15% Mwst galten
Mwst=15%
Umsatz=20,00
Mehrwertsteuer=20,00*0,15=3,00

Meinst Du das?

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 22:44

An4k1n hat geschrieben:Meinst Du das?

Jupp :-)

Spätestens, wenn Rechenoperationen (wie hier die Multiplikation) ins Spiel kommen, kannst du dies nicht mit einem FlowField abdecken. Keine Sorge, geht dafür auch anders!
Muss der MwSt-Betrag wirklich in die Tabelle geschrieben werden oder reicht es, wenn du auf Forms den Wert ablesen kannst, ohne z.B. darauf filtern zu können (d.h. soll der Wert beim Aufruf des Datensatzes auf der Form - und nur dort - temporär berechnet werden?

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 22:48

Nur dort, eine Speicherung der Werte ist nicht notwendig.

:-) das macht mich sehr zuversichtlich!

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 22:53

Wenn dem so ist, dann brauchst du das Tabellenfeld Mehrwertsteuer in der Tabelle Umsatz gar nicht.

Erstelle in der Tabelle Umsatz eine Funktion namens z.B. "GetMwSt" mit Rückgabe eines Decimal-Wertes.
In dieser Funktion berechnest du den Wert und gibst ihn mittelt EXIT aus (Kriegst du das hin? Wenn nicht, versuchs bitte wenigstens ansatzweise).

Auf deiner Form fügst du nun eine neue Textbox hinzu. Als SourceExpr gibst du statt des gewohnten Feldnamens GetMwSt ein. Fertig!

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 22:58

Dazu fehlt mich noch eine wichtige Info :-D :
Wie frage ich den Wert "Mwst" der Tabelle "Mehrwertsteuer" ab? Muss ich da über die ID gehen? Wenn ich das weiß, kann ich mir so auch die Werte für von_Datum und bis_Datum auslesen, mit dem Feld Datum der Umsätze vergleichen und den entsprechenden Mwst-Satz benutzen.

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 23:01

An4k1n hat geschrieben:Dazu fehlt mich noch eine wichtige Info :-D :
Wie frage ich den Wert "Mwst" der Tabelle "Mehrwertsteuer" ab? Muss ich da über die ID gehen? Wenn ich das weiß, kann ich mir so auch die Werte für von_Datum und bis_Datum auslesen, mit dem Feld Datum der Umsätze vergleichen und den entsprechenden Mwst-Satz benutzen.


Vorausgesetzt, du hast eine Recordvariable namens RecMwSt (nur als Beispiel) und hast mittels Filterung (SETRANGE oder SETFILTER) und FINDFIRST (oder FINDLAST) bereits in diese Variable den gesuchten Mwst-Datensatz geladen, kannst du mittels RecMwSt.Feldname auf den Inhalt zugreifen, z.B.
Code:
Eine_Decimalvarialbe := RecMwSt.MwSt;


Ruf mal im Quelltext F5 auf und klick da mal nach Auswahl deines Records rechts die Feldnamen an und schau, was passiert.

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 23:17

Du forderst mich. :-?
Auf die Gefahr hin, dass ich mich als totaler Depp oute: Was ist eine Recordvariable? Wie erstelle ich aus einer Tabelle eine solche (habe das gerade gelesen und diesen Hinweis gefunden)? Im Symbol Menu habe ich meine Mehwertsteuer nicht drin...

Sorry, das sind sicherlich absolute DAU Fragen, aber Du hast mich auf schon so viele Lösungen durch Deine Hinweise gebracht, die ich zu anderen Fragen hatte, vielleicht bekommen wir das auch noch hin.

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 23:24

Die Funktion ist schon erstellt?
Dann stell dich zuerst mit dem Cursor in dessen weißen Bereich hinein.
Gehe nun auf Ansicht -> C/AL Locals
--- Der Funktion mitgeben, dass sie einen Rückgabewert hat ---
Auf Registerkarte ReturnValues trage ein: Name = Result (frei wählbar, nur als Beispiel), Return Type = Decimal).
-- Der Funktion eine lokale Recordvariable mitgeben --
Auf Registerkarte Variables Name = RecMwSt, DataType = Record, Subtype = Mehrwertsteuer.

Erst wenn die Recordvariable erstellt ist, kannst du sie unter F5 in der linken Spalte sehen.

Wenn du allerdings noch niemals eine Recordvariable erstellt hast, dann wirst du schlecht schonmal per Quelltext gefiltert und gesucht haben, oder?
Ohne eine kleine vorherige Programmierschulung (ob intern oder extern) ist es zu müßig, hier anzusetzen ...

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

18. November 2008 23:47

Da hast Du wohl recht, ich hab mit C/AL noch nie programmiert, habe aber alle Unterlagen parat. Wenn ich den Einstieg mal geschafft habe denke ich, bekomm ich das alles hin, aber es ist verdammt schwer ein Einstiegstutorial oder so zu finden. Da ich neben meinem Studium Senior Java Entwickler bin ist das schon was ganz anderes hier.
Ich hab auch dieses Forum durchsucht, von vorne bis hinten, ob es nicht einfachste Grundlagen gibt, wie man zum Beispiel diese Dinge von denen Du sprichst anfängt, aber ohne Erfolg.
Zu allem findet man Einstiegshilfen: Wie erstellt man eine Funktion, wie liest man Variablen aus, wie erstellt man Schleifen, Rückgabewerte, wo muss man was ablegen, bei Navision ist das wohl anders.

Stehe echt auf dem Schlauch, hast du nen Tip, wie und wo ich anfangen kann?

Trotzdem schon mal Danke für Deine Mühe und Zeit!!!

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

19. November 2008 01:15

...aber ich hab die Funktion jetzt soweit fertig ;-). Na immerhin komme ich so langsam dahinter, wie das alles in Navision läuft. Nur das mit der Selektion des Datums bekomm ich noch nicht hin.

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

19. November 2008 09:18

An4k1n hat geschrieben:...aber ich hab die Funktion jetzt soweit fertig ;-). Na immerhin komme ich so langsam dahinter, wie das alles in Navision läuft.

Gute Nachrichten! :-)

Nur das mit der Selektion des Datums bekomm ich noch nicht hin.

Was genau meinst du?

Veröffentliche doch bitte deinen bisherigen Quelltext deiner Funktion, und zwar so: [code]Dein Quelltext[/code]

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

19. November 2008 22:00

Also pass auf, ich hab das viel einfacher gelöst:

Ich hab mir einen Record erstellt mwst auf die Tabelle Mehrwertsteuer.
Dann bin ich einfach auf die Trigger der Umsatzsteuer_Netto gegangen und habe da auf den Record einen Filter gesetzt und zwar auf die von und bis Datums Felder:
Code:
mwst.SETFILTER(von_Datum,'<= %1',Rec.Datum);
mwst.SETFILTER(bis_Datum,'>= %1',Rec.Datum);
IF mwst.FIND('-') THEN BEGIN
Rec.Mehrwertsteuer :=  mwst.Mwst * Rec.Umsatzbetrag_Netto / 100;

und fertig ist das Dingen. Das mit der Funktion hab ich nachher auch noch durchgespielt, aber er hat mir immer was gesagt von IdField oder so und dann hatte ich da keine Lust mehr drauf.

Danke für die vielen Tipps, sie haben mich alle ein Stück weitergebracht!

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

19. November 2008 22:21

Ah, schön!
Wenn du jetzt noch das FIND('-') durch ein FINDFIRST ersetzt, dann ist es sogar noch ein Stückchen performanter.
Das mit der Fehlermeldung hätte mich jetzt noch interessiert, aber du scheinst damit abgeschlossen zu haben.

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

19. November 2008 23:34

Die Fehlermeldung kann ich so auch leider nicht mehr nachstellen. Dazu müsste ich die ganze Funktion noch einmal versuchen nachzubauen. Ob ich das nochmal hinbekomme denke ich eher nicht. Fürs nächste mal weiß ich bescheid, da mach ich nen Screenshot.

Das mit dem gelöst habe ich vorhin schon mal versucht, die Zeile ist für mich aber nicht editierbar. Kannst du das machen? Ah, Moment, ich versuchs mal auf ne ganz üble Art ;-)

Re: Berechnung der Mehrwertsteuer anhand des Kaufdatums (2 Tabel

20. November 2008 09:28

An4k1n hat geschrieben:Fürs nächste mal weiß ich bescheid, da mach ich nen Screenshot.

Es geht einfacher:
Wann immer du in NAV eine Fehlermeldung bekommst, drück Strg+C, dann kannst du die Fehlermeldung mittels Strg+V als Text einfügen.
Hat u.a. den großen Vorteil, dass der Fehlertext über die Forensuche gefunden werden kann.

Das mit dem gelöst habe ich vorhin schon mal versucht, die Zeile ist für mich aber nicht editierbar. Kannst du das machen? Ah, Moment, ich versuchs mal auf ne ganz üble Art ;-)
Hat doch geklappt?