|
|
|
|
Ernsthaft, du zahlt 15 Euro und wirst damit hunderte Stunden spielen, so viel Zeitverschwendung gibt es kaum für das Geld!
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
Ich hab ja schonmal von meiner Pflege-PHP-"Software" berichtet.
Der Besitzer hat jetzt das Problem, dass Buchungen, die er selbst im Backend anlegt, einen "falschen" Endpreis haben. Damit ich das nachvollziehen kann, müsste ich natürlich wissen, was denn ein "richtiger" Preis ist. Also habe ich den Code mal durchwühlt. Insgesamt, wird der Basispreis für eine Reservierung an drei unterschiedlichen Stellen ermittelt. Jedes mal mit etwas anderem Code (da würde c&p gemacht und dann ein bischen verändert. Leider ist der Code ein kompletter Haufen Schrott und ich habe mir jetzt mal anhand von Datenbankschema und Code zusammengereimt, was das alles zu bedeuten hat und mit das zu Dokuzwecken mal aufgeschrieben:
|
Code: |
--------------------------------
|Datenbank Schema und Bedeutung|
--------------------------------
Allgemeines:
* Jeder Tarif gehört zu einen Haus und einer Tarif-Kategorie. Im Tarif ist gespeichert,
von wann bis wann der Tarif gilt, was ein Tag kostet und ein evtl. prozentualer Auf-
oder Abschlag pro Tag. Letzteres scheint nicht genutzt zu werden.
* Eine Tarif-Kategorie gilt immer für eine Haus und hat eine optionale Mindestdauer.
* Saisontermine gelten für ein Haus und für einen bestimmten Tarif und haben ein von/bis
Datum, sowie ein Geltungsjahr.
Basispreisermittlung wie ich sie verstehe (aus get_price()):
* Es werden alle Saisontermine geholt, für die die Tarifkategorie 'Vorsaison_1',
'Vorsaison_2', 'Hauptsaison_1', 'Hauptsaison_2' oder 'Zwischensaison_1' heißt, und die
im Buchungszeitraum gelten.
* Für jeden "Bereich" der Saisontermine die im Buchungszeitraum gelten, wird jetzt anhand
der Kategoriebezeichnung und der Wohnungs-ID der jeweilige Preis pro Tag geholt. Dieser
Preis wird dann mit der Anzahl der Tage in diesem Bereich multipliziert.
- Wenn es in diesem Bereich eine Tarif-Kategorie für diese Wohnung gibt, die den Titel
"Wochenende" oder "Spezial" trägt, wird für die entsprechenden Tage der prozentuale
Auf- bzw. Abschlag auf den bisherigen Preis addiert bzw. subtrahiert .
- Falls es in dem Bereich noch eine Weitere Tarifkategorie gibt, wird angenommen, dass
es sich um eine "Mindestdauer" Kategorie handelt. Dann wird die Buchungsdauer gegen
den entsprechende Mindestdauer geprüft und ggf. der prozentuale Auf- bzw. Abschlag
auf den bisheren Preis addiert bzw. subtrahiert.
[Anm.: Zumindest in der Test-Datenbank gibt es keine Tarife, die Auf- bzw. Abschläge
überhaupt verwenden.]
DESCRIBE tariff;
+---------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+----------------+
| id_tariff | int(11) | NO | PRI | NULL | auto_increment |
| id_tariff_cat | int(11) | NO | | NULL | |
| from_date | date | NO | | NULL | |
| until_date | date | NO | | NULL | |
| year | int(11) | NO | | NULL | |
| price | float | NO | | NULL | |
| plus_percent | int(11) | NO | | NULL | |
| minus_percent | int(11) | NO | | NULL | |
| id_flats | int(11) | NO | | NULL | |
+---------------+---------+------+-----+---------+----------------+
DESCRIBE tariff_cat;
+---------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+----------------+
| id_tariff_cat | int(11) | NO | PRI | NULL | auto_increment |
| id_flats | int(11) | NO | | NULL | |
| title | text | NO | | NULL | |
| min_duration | int(11) | NO | | NULL | |
+---------------+---------+------+-----+---------+----------------+
DESCRIBE seasons;
+---------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+----------------+
| id_seasons | int(11) | NO | PRI | NULL | auto_increment |
| id_flats | int(11) | NO | | NULL | |
| from_date | date | NO | | NULL | |
| until_date | date | NO | | NULL | |
| year | int(11) | NO | | NULL | |
| id_tariff_cat | int(11) | NO | | NULL | |
+---------------+---------+------+-----+---------+----------------+
|
|
Die Ursprungsautorin hatte absolut keinen Plan von Schema-Design und ein Teil der Informationen gibt es doppelt. Außerdem gibt es Tarifkategorien die gar keine Kategorien sind, weil sie nur für einen Tarif und eine Wohnung gelten und eigentlich nix machen, als zu dieser 1:1 Beziehung einen Namen beizusteuern und das Geltungsdatum nochmal redundant zu speichern.
Ahja, und die ute Frau war wohl der Ansicht "Tarif" hieße auf Englisch "tariff" - das ist durchgängig im Code so benannt, auch bei Funktionen u.ä.
Sehr hübsch auch folgender Bug: Wenn der Kunde eine Reservierung tätigt, wird im vorletzten Schritt (bevor er endgültig bestätigt) der Gesamtpreis ermittelt und angezeigt. Dieser wird in einem versteckten Formularfeld gespeichert und daraus an den letzten Schritt übertragen. Der übernimmt das natürlich treudoof und trägt es in die Datenbank ein. Mit Firebug o.ä. könnte der Kunde da jetzt also munter seinen Endbetrag ändern und niemand wüsste warum der da so steht.
Faszinierenderweise wird der möglicherweise falsche Endbetrag aber nicht zum erstellen der gemailten Kundenrechnung verwendet, sondern da wird er nochmal anhand der Buchungsdaten berechnet, stände also "richtig" drin. Würde der Kunde sich dann aber einloggen und sich seine Rechnung erneut runterladen, stände da der von ihm gefälschte Betrag, weil dort die Daten wieder direkt aus der Datenbank kommen.
Meine Stundenvorstellung wenn er es gefixt haben will: 60 Stunden, wenn er die Altbuchungen nicht übertragen haben will, sonst 90. Das sollte ihn abschrecken dies zu wollen, ich habe da nämlich gar keine Lust drauf
| |
Meine tolle Tage-berechne-query hattest gesehn vor nen paar seiten, ja?
|
|
|
|
|
|
|
Wie schwer ist Drupal zu lernen? Ich habe hier gerade ungefähr das ideale Lernprojekt, ein simples System für den Kartenvorverkauf für einen Zirkus, aber wäre interessant zu wissen wie viel Lernaufwand ich da vorher noch reinstecken muss.
|
|
|
|
|
|
|
|
|
|
|
narf, dachte ich bin fertig mit dem Programm, aber hab ne Funktion ueberlesen naja, fast fertig jetzt.
morgen gehts boarden \o/
|
|
|
|
|
|
|
Ich hasse warten /o\
Aber das wird sooooo toll
|
|
|
|
|
|
|
Bei mir warten 2 Pakete in der Packstation weil ich sie heute nicht abholen konnte
|
|
|
|
|
|
|
Dann fahr jetzt hin! die hat doch keine öffnungszeiten...
|
|
|
|
|
|
|
Jemand von euch ne Ahnung, ob man kontrollieren kann, wie laut man niest? Also ganz geräuschlos bekommt man das wohl nicht hin, aber ich kann mir nicht vorstellen, dass manche Leute wirklich nicht mal annähernd ein lautes Kreischen unterdrücken können?
Angeblich können meine Freundin und ihre Mutter das nicht und irgendwie will ich das nicht glauben.
|
|
|
|
|
|
|
Je nach Situation Niese ich mit voller Inbrunst oder halt nicht. Das ist schon ein deutlicher Unterschied in der Lautstärke. Wenn der Nieser überraschend kommt, kann man den aber auch nur schlecht kontrollieren...
|
|
|
|
|
|
|
| Zitat von Noch_ein_Kamel
Dann fahr jetzt hin! die hat doch keine öffnungszeiten...
| |
Keine Lust
|
|
|
|
|
|
|
| Zitat von Smoking
Je nach Situation Niese ich mit voller Inbrunst oder halt nicht. Das ist schon ein deutlicher Unterschied in der Lautstärke. Wenn der Nieser überraschend kommt, kann man den aber auch nur schlecht kontrollieren...
| |
Ja manchmal geht es nicht anders, aber immer?
|
|
|
|
|
|
|
| Zitat von cms
| Zitat von Achsel-des-Bösen
Ahja, und die ute Frau war wohl der Ansicht "Tarif" hieße auf Englisch "tariff" - das ist durchgängig im Code so benannt, auch bei Funktionen u.ä.
| | Damit hat die gute Frau allerdings Recht.
| |
Oh fuck
|
|
|
|
|
|
|
| Zitat von Noch_ein_Kamel
Meine tolle Tage-berechne-query hattest gesehn vor nen paar seiten, ja?
| |
Ja, hatte ich. Danke dafür.
Hätte mir aber auch nicht geholfen, weil es nämlich in einer anderen Spalte noch...äh..."Override" Termine gibt, die dann genommen werden müssen wenn sie gelten.
Aber egal, ich bin mit dem Onkel überein gekommen, dass wir das erstmal nicht anfassen und es vielleicht irgendwann mal neu machen
|
|
|
|
|
|
|
|
|
|
|
Bald mal wieder eine Runde Impera Online?
|
|
|
|
|
|
|
Gerne, wenn ich dann mehr Würfelglück habe
|
|
|
|
|
|
|
wieso soll das forum down sein?
e: ach irgendwann heut tagsüber... nein Martin W. wir brauchen keine mailingliste!
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Noch_ein_Kamel am 08.03.2011 22:51]
|
|
|
|
|
|
|
|
|
|
| Zitat von Danzelot
so viel Zeitverschwendung gibt es kaum für das Geld!
| |
|
|
|
|
|
|
|
So gut!
|
|
|
|
|
|
|
Morgen.
|
|
|
|
|
|
|
|
|
|
|
Son mist
Extra früher los weil ich noch zur Werkstatt wollte und dann machen die erst um 9 auf...
|
|
|
|
|
|
|
Morgen. Ich hoffe die 3 Minuten waren nicht zu schlimm für dich!
|
|
|
|
|
|
|
09.03.11 09:01 Uhr
Kritzmow
Die Sendung wurde in das Zustellfahrzeug geladen.
ZOMG
ES KANN UJEDEN MOMENT KOMMEN.
Ich verlass jetzt die Wohnung so lange nicht
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wie kann ich im IIS fuer ne bestimmte website eine Passwort abfrage a'la Apaches httpaccess einrichten?
|
|
|
|
|
|
|
schalt doch mal nen Proxy (z. b. Fiddler) dazwischen und schau dir an, was jeweils wirklich übertragen wird. Irgendein Unterschied muss ja da sein.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |