5 Antworten Neueste Antwort am Mar 26, 2016 3:21 AM von kip

    Mehrwertsteuer per SQL auslesen?

    kip

      ( Super - gleich zwei Schlagworte in einem Titel, zu denen ich in diesem Forum noch nicht viel gefunden habe ;-)

       

      Guten Abend,

       

      Ich bin mir nicht sicher, wie man in der Vergangenheit und sich zukünftig ggf. ändernde Mehrwertsteuersätze in Filemaker abbildet, aber da ich auch noch bei einem anderen Problem eine ähnlich flexible Lösung benötige, experimentiere ich zur Zeit mit einem Ansatz per SQL:

       

      Tabelle MwST beinhaltet MwSt (jeweiliger Steuersatz) und MwStGueltigAb (als Primärschlüssel).

      Eine Unterscheidung in z.B. 7% und 19% ist nicht notwendig.

       

      Tabelle Rechnungen beinhaltet im Feld MwSt folgende Formel:

       

      SQLAusführen ( "SELECT M.MwSt, MAX(M.MwStGueltigAb) AS MwstDatum

      FROM Mwst M, Rechnungen R

      WHERE M.MwStGueltigAb <= R.Bezahldatum" ; ""; "" )

       

      Leider wirft mit Filemaker bei neu angelegten Rechnungen nur ein ? aus.

       

      Gibt es eine geschickte Möglichkeit, Filemaker dazu zu bewegen, den entsprechenden MwSt-Satz passend zum Rechnungsdatum aus der Tabelle MwSt zu holen und damit weiter zu rechnen?

       

      Würde mich über einen Tipp sehr freuen.

      kip

        • 1. Re: Mehrwertsteuer per SQL auslesen?
          erolst

          Es könnte sein, dass der SQL-Parser sich verschluckt, weil der Name des Feldes und der Tabelle (bzw. des Tabellenauftretens) identisch sind, abgesehen von Groß-/Kleinschreibung. Ändere z. B. mal den Feldnamen (im Schema und der Formel) und schau, was passiert.

           

          That being said: Falls du nicht wirklich eine separate History der MwSt-Entwicklung führen willst, halte ich die Tabelle MwSt für überflüssig.

           

          Nutze doch einfach eine einzelnes Feld AktMwStSatz in einer Utility-Tabelle, lies den Wert aus und hinterlege/speichere ihn in/mit der jeweiligen Rechnung.

           

          Dazu würde ich in einem Start-Script den Satz in eine globale$$ lesen, und im Feld MwStSatz diese globale$$ als automatische Eingabeoption festlegen. Das braucht nur wenig Speicherplatz und macht die separate Tabelle überflüssig.

           

          Außerdem kannst du jetzt auch die auf der MwSt basierenden Ergebnisse speichern, statt sie jedes mal neu berechnen lassen zu müssen (Formelfelder mit SQL funktionieren nicht zuverlässig, wenn sie nicht auf Unstored gesetzt sind).

           

          Übrigens: warum SELECTest du zwei Felder, wenn du doch eigentlich nur den Satz (Prozentwert) lesen willst? Und außerdem müsstest du die Abfrage erweitern, etwa so:

           

          SQLAusführen ( "

            SELECT MwStSatz

            FROM Mwst

            WHERE MwStSatzGueltigAb <= ? AND ( MwStSatzGueltigBis IS NULL OR MwStGueltigBis >= ? )

            " ; ""; "" ; Rechnungen::Bezahldatum ; Rechnungen::Bezahldatum

          )

           

          Aber das nur am Rande. Ich finde das direkte Speichern des jewiels anzuwenden Wertes “vor Ort” weitaus leichter zu handhaben.

          • 2. Re: Mehrwertsteuer per SQL auslesen?
            kip

            Hallo erolst,

             

            vielen Dank für die umfangreiche Antwort - und ja, Dein Ansatz klingt tatsächlich deutlich einfacher ;-)

             

            Schaue ich mir auf jeden Fall mal an - zumal das tatsächlich viel Rechnerei bei Formelfeldern und mit diesen verknüpften weiteren Feldern sparen kann (wie zum Beispiel automatische Berechnung von Brutto-Beträgen aus Netto-Eingaben).

             

            Nur so eine spontane Idee: funktioniert es nicht auch, statt mit der globale$$ die automatische Eingabe über eine Berechnung (z.B. Hole Feldwert (AktMwStSatz) ) zu verknüpfen und die Option "Feldwert nicht ersetzen" zu aktivieren? Dann spare ich mir sogar noch das Start-Skript

             

            kip

            • 3. Re: Mehrwertsteuer per SQL auslesen?
              erolst

              kip wrote:

              Nur so eine spontane Idee: funktioniert es nicht auch, statt mit der globale$$ die automatische Eingabe über eine Berechnung (z.B. Hole Feldwert (AktMwStSatz) ) zu verknüpfen und die Option "Feldwert nicht ersetzen" zu aktivieren? Dann spare ich mir sogar noch das Start-Skript

              kip

               

              Naja, ein Start-Script hat man ja eigentlich sowieso für alle möglichen Intialisierungen – aber du kannst natürlich die Utility-Tabelle kartesisch mit der Rechnungstabelle verknüpfen und für die Auto-Eingabe einfach die Feldreferenz Utility::AktMwStSatz verwenden – oder ganz ohne Beziehung erneut mit ExecuteSQL:


              ExecuteSQL ( "SELECT AktMwStSatz FROM Utility" ; "" ; "" )


              Da eine solche Utility-Tabelle sowieso nur einen Datensatz hat (haben sollte), musst du das nicht weiter mit WHERE spezifizieren.

              • 4. Re: Mehrwertsteuer per SQL auslesen?
                HLandschulz

                Hallo,

                 

                ich weiß nicht, wo Du her kommst.

                Aber in Deutschland ist der Mehrwehrtsteuersatz abhängig vom Rechnungsdatum und nicht vom Bezahltdatum (zumindest bisher gewesen).

                 

                Heike

                • 5. Re: Mehrwertsteuer per SQL auslesen?
                  kip

                  Hallo Heike,

                   

                  hoppla - Danke für den Hinweis ;-)

                   

                  kip