0

Erstellen von wiederkehrenden Terminen

Hallo an alle,

ich habe vor, eine App für ein Taxiunternehmen zu entwickeln, in dem alle Fahrten mit den Daten der Fahrgäste erfasst werden und anschließend den drei Fahrern zugeteilt werden. Am Ende der Fahrt wird anhand der gefahrenen km und der Zusatzleistungen der Fahrtpreis berechnet und das ganze vom Fahrgast unterschrieben. Dabei gibt es Fahrgäste, die beispielsweise täglich gefahren werden. Für solche Fälle soll dann die Möglichkeit bestehen, den Termin täglich, wöchentlich und monatlich bis zu einem Enddatum in den Kalender einzupflegen. Gut wäre auch, eine Warnung auszugeben, wenn mehr als drei Termine gleichzeitig eingeschrieben werden sollen.

Bisher habe ich eine Abrechnungtabelle, in der die Fahrtdaten erfasst und ausgerechnet werden und eine Kundentabelle, in der feste Kundendaten gespeichert werden. Die Kundentabelle wird dann mit der Abrechnungstabelle verknüpft, sodass dort aus Bestandkunden ausgewählt und bei Neukunden ein neuer Datensatz angelegt werden kann.

Wie wäre jetzt der beste Ansatz, die wiederkehrenden Termine zu integrieren?

LG Markus

7 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Markus, ich hatte mal was ähnliches gemacht und die DB schnell ein wenig angepasst. Hier wird die Terminserie vom Kunden aus angelegt und es gibt auch keine Überprüfungen auf Anzahl oder bestimmte Wochentage. Aber im Code des Buttons "Terminserie erzeugen" kannst du sehen, wie man dabei grundsätzlich vorgehen kann. Vielleicht hilft das schon mal weiter. Die DB kannst du hier herunterladen:

     

    https://www.dropbox.com/s/q277r0y1lpljlup/Taxitermine.ninox?dl=0

    • Markus_Weise
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Vielen Dank schonmal, werde ich mir demnächst mal anschauen! :)

    • Markus_Weise
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo planox,

     

    ich habe mir das mal angesehen und es funktioniert schon sehr gut. Gibt es aber eine Möglichkeit, das auch anstatt der Datums- und Uhrzeitfelder mit einem Startterminfeld und Endterminfeld  umzusetzen? Mit dieser Version sehe ich im Kalender die Anordnung der Termine an den Tagen nicht und das wäre für die Planung schon sehr wichtig.

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Markus, da ich nicht weiß, ob du den Termin direkt eintippst oder aus Datum und Uhrzeit generierst, habe ich letztere belassen und ein zusätzliches Terminfeld erstellt. Wobei ein Termin ja immer aus zwei datetime()-Werten für Anfang und Ende besteht. Als Dauer zur Berechnung des Ende-Werts habe ich deshalb jetzt einfach mal 30 Minuten eingesetzt (= 1.800.000 Millisekunden).

     

    https://www.dropbox.com/s/5mxye7uoztuxk67/Taxitermine2.ninox?dl=0

    • Markus_Weise
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Planox,

    ich habe heute festgestellt, dass die Serienterminerstellung auf einmal fehlerhaft ist, sowohl in meiner selbst konfigurierten Datenbank als auch in der, die du damals zur Verfügung gestellt hast. Wenn ich eine Terminserie generiere, startet diese immer einen Tag/Woche/Monat nach dem Starttermin und endet auch einen Tag/Woche/Monat nach dem Endtermin. Hat sich irgendwas an der Weise geändert, wie Ninox Daten berechnet? Denn funktioniert hat das definitiv schon mal...

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Markus Weise 

      Hallo Markus, mich wundert ehrlich gesagt, dass es vorher anders gewesen sein soll. Denn in dem ursprünglichen Script in 'Taxitermine2' wird zuerst das Start-Datum erhöht, dann die Fahrt angelegt. Weiß nicht, warum ich das damals so gemacht habe. Wenn das Datum 'Start' auch der erste Termin sein soll (was nahe liegt), müsste man die Reihenfolge innerhalb der while-Schleife umstellen. Also den create-Block vor den mit der switch-Abfrage setzen:

      [...]
      while myStart <= myEnde do
          let newF := (create Fahrten);
          newF.(
              Kunden := me;
              Datum := me.myStart;
              Uhrzeit := me.Uhrzeit;
              Ziel := me.Ziel;
              km := me.km
          );
          myStart := switch number(Turnus) do
              case 1:
                  date(year(myStart), month(myStart), day(myStart) + 1)
              case 2:
                  date(year(myStart), month(myStart), day(myStart) + 7)
              case 3:
                  date(year(myStart), month(myStart) + 1, day(myStart))
          end
      end
      [...]
      
    • Markus_Weise
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Vielen Dank planox. pro , das funktioniert. Ist aber auch komisch, dass das bisher bei der Nutzung nicht aufgefallen ist, falls das die ganze Zeit schon so war. Mysteriös... :D

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 7Antworten
  • 239Ansichten
  • 2 Folge bereits