4 Replies Latest reply on Aug 31, 2015 3:40 PM by GuenterBorg

    Bessere Methode für folgende Probleme  .. ?

    GuenterBorg

      In einer Restaurant POS Lösung werden die Artikel aus einem Portal mittels Script ( holt durch klick auf den Button/Portalzeile die Feldwerte  und erstellt einen neuen Datensatz in der Tabelle TischJournal und fügt dort die Daten ein : Bezeichnung / Preis / Menge ) in die Zieltabelle übertragen.

      Jetzt soll aber falls der Artikel schon in der Zieltabelle vorhanden ist nur die Menge um 1 erhöht werden und kein neuer Datensatz erstellt werden.

      z.B. in der Tabelle steht schon : Bier 0,5 / 3,50/ 1

      Also soll aus der 1 eine 2 werden. Jetzt habe ich das umständlich mit einer Hilfstabelle und Abfrage (Sefjoin ) gelöst , Unter FMGo ist das ein wenig lahm und so kaum brauchbar. Gibt es da eine andere Möglichkeit ?

       

      Bin für jede Hilfe dankbar !

       

      Und da gibt es noch das Problem mit dem Tisch-Splitting . z.B. am Tisch sitzen 3 Gäste ,die werden zwar gemeinsam moniert aber nachher möchte jeder extra bezahlen die Rechnung soll also auf 3 Personen aufgesplittert werden. Hat schon mal jemand so ein Problem gehabt ? Und irgendwelche Ideen dazu ?

       

      Besten Dank

       

      Günter

        • 1. Re: Bessere Methode für folgende Probleme  .. ?
          erolst

          GuenterBorg wrote:

          In einer Restaurant POS Lösung werden die Artikel aus einem Portal mittels Script ( holt durch klick auf den Button/Portalzeile die Feldwerte  und erstellt einen neuen Datensatz in der Tabelle TischJournal und fügt dort die Daten ein : Bezeichnung / Preis / Menge )

           

          Eigentlich brauchst du nur die PrimärID festzuhalten; setze diese in TischJournal ein und lass' die relevanten Felder sich selbst ausfüllen (über TischJournal::id_artikel = Artikel::id).

           

          GuenterBorg wrote:

          Jetzt soll aber falls der Artikel schon in der Zieltabelle vorhanden ist nur die Menge um 1 erhöht werden und kein neuer Datensatz erstellt werden.

          Mit

           

          not isEmpty ( FilterValues ( Artikel__selektor::id ; List ( TischJournal::id_artikel ) ) )

           

          kannst du feststellen, ob der Artikel für diesen Tisch schon eingetragen ist (oder nicht); falls nein, business as usual; falls ja, nimmst du den Wert, loopst durch ein Portal mit den Bezugsdatensätzen für diesen Tisch, bis du den Artikel findest, und erhöhst die Menge um 1:

          Setze Feldwert [ TischJournal::menge ; TischJournal::menge + 1 ]

           

          GuenterBorg wrote:

          am Tisch sitzen 3 Gäste ,die werden zwar gemeinsam moniert aber nachher möchte jeder extra bezahlen die Rechnung soll also auf 3 Personen aufgesplittert werden. Hat schon mal jemand so ein Problem gehabt ? Und irgendwelche Ideen dazu ?

           

          Dann brauchst du eine Tabelle Rechnungen als Untertabelle von Tisch; und Tischjournal braucht einen Fremdschlüssel id_rechnung.

           

          Aber jetzt hast du natürlich das Problem, dass die brav in einem Datensatz zusammengefassten 5 Bier / 3 Jägerschnitzel plötzlich gesplittet werden müssen …

           

          Evtl. eine weitere Tabelle (als Kreuztabelle von Rechnung und TischJournal), in die man die TischJournal-Einträge mit Teilmengen überträgt? Da sollte man mal drüber nachdenken …

          • 2. Re: Bessere Methode für folgende Probleme  .. ?
            GuenterBorg

            Vielen herzlichen Dank für Deine ausführliche Antwort !

            Steiga aber nicht dahinter. Also ich übergebe dem Tischjournal die ArtikelId die restlichen Daten werden durch Referenz autom. geholt.

            Aber mit dem richtigen Bezugsdatensatz finden im Portal komme ich nicht klar.

             

            Bei dem Splitting ist das so: die gebuchten Artikel gehen an den/die Bondrucker . Die Tischrechnung ist noch als offener Betrag geführt . Beim bezahlen sollen die Artikel die Gast 2/Gast3.. zahlt aus der Gesamtrechnung herausgezogen werden. Ich glaube da scheitere ich mit Filemaker .Wenn z.B. die Buchungen auf Tisch 1 gemacht wurden und ein Teil geht auf Tisch 2, 1 Teil auf Gastname/Zimmer oder Tisch 1 ist mit 3 Personen besetzt und jeder zahlt extra. Also gibt es dann einen Tisch1/2 , Tisch1/3 ...da habe ich überhaupt keinen Plan :-)

             

            nochmals vielen Dank

             

            Guenter

            • 3. Re: Bessere Methode für folgende Probleme  .. ?
              erolst

              Aber mit dem richtigen Bezugsdatensatz finden im Portal komme ich nicht klar.

               

              Das funktioniert ungefähr so:

               

              # [ nachdem du einen Artikel angeklickt und seine ID in eine Variable geschrieben hast ]


              Wenn ( IstLeer ( FilterWerte ( $IDArtikelAusgewählt ; Liste ( TischJournal::id_artikel ) ) ) ]


                # [ ist noch nicht drin; also käme jetzt dein bestehender Code, um einen neuen Eintrag in TischJournal zu schreiben; hast du die anderen relevanten Felder mit Optionen für die Automatische Eingabe versehen, musst du nur noch $IDArtikelAusgewählt in den Fremdschlüssel setzen ]


              Sonst


                Gehe zu Objekt [ "TischJournalPortal" ]


                Gehe zu Ausschnittzeile [ erste ]


                Schleife


                   Beende Schleife wenn [ TischJournal::id_artikel = $IDArtikelAusgewählt ]


                   Gehe zu Ausschnittzeile [ nächste ]


                Schleife Ende

                Feldwert setzen [ TischJournal::menge ; TischJournal::menge +1 ]

              Ende wenn

              GuenterBorg wrote:

              Bei dem Splitting ist das so:  ...da habe ich überhaupt keinen Plan :-)

              
 

              Da würde ich mal zögerlich vorschlagen:


              
 

              Rechnung >-- Tisch --< TischJournal* >-- Artikel


              
 

              Jetzt erstellt du immer mindestens einen Datensatz in Rechnung.

               

              Wenn du keinen Split machst, bekommen alle Einträge in Tischjournal die ID dieser Rechnung.

               

              Andernfalls könntest du zuerst alle Bezugsdatensätze von TischJournal, die vollständig (also mit kompletter Menge) auf die „Hauptrechnung“ gehen (1 Hirschgulasch), dieser Rechnung #1 zuordnen; dann gibts du an, wie viele weitere Rechnungen du anlegen willst (das könnte natürlich auch der erste Schritt sein)

               

              Jetzt lässt du alle nicht zugeordneten TischJournal-Datensätze “aufdröseln”
. Z. B. werden aus “Bier 0,5, Menge 5“ fünf Bier mit Menge 1. Dann werden all diese Einzel-Datensätze ihren Rechnungen zuordnet.


              Am Schluss lässt du ein Skript laufen, das die Einzeldatensätze nach Rechnung# und Artikel wieder „komprimiert“ (Bier 0,5, Menge 2, für Rechnung #1; Bier, 0,5, Menge 1, für Rechnung 2, usw.), damit's auf der Rechnung hübsch aussieht.


              Dann findest du alle TischJournal-Einträge für diesen Tisch, sortierst nach Rechnungs-ID und druckst.


              Das Skript ist nicht weiter wild; die eigentliche Kunst wird hier wahrscheinlich darin bestehen, die Funktionalität in eine intuitive Oberfläche zu packen.

              
 

              *seltsamer Name eigentlich …

              • 4. Re: Bessere Methode für folgende Probleme  .. ?
                GuenterBorg

                Vielen Dank !

                 

                Wird morgen früh gleich ausprobiert !

                 

                lg

                 

                Guenter