Startseite / Blog / Geld
GeldRechnung aufteilen, wenn ein Gericht nicht geteilt wurde
Ein Abendessen über 525 € gleichmäßig zu teilen belastet eine Person mit 70 € für ein Gericht, das sie nie anrührte, und die Lösung ist eine Ausgabe mit zwei Regeln.
Teilen Sie ein Abendessen über 525 € gleichmäßig, und eine Person zahlt 70 € zu viel. Zwei der drei aßen die Meeresfrüchteplatte für 200 €, die dritte nicht, dennoch belastet eine gleichmäßige Teilung alle drei mit 175 €. Dimesum behandelt diese Rechnung als eine Ausgabe: gleichmäßig auf oberster Ebene, wobei die Position über 200 € nur von den beiden getragen wird, die sie bestellt haben.
Weitgehend gleichmäßige Rechnungen mit einer einzigen nicht geteilten Position sind das Häufigste, worum eine App zum Aufteilen gebeten wird, und das erste Datenmodell von Dimesum konnte so etwas nicht abbilden. Der frühere Entwurf machte ITEMIZED zu einem Teilungstyp, der sich mit EQUAL, PERCENT und SHARES gegenseitig ausschließt. Eine echte Restaurantrechnung ist beides zugleich.
Positionen sind ein Detail einer Ausgabe, kein anderer Teilungstyp
Eine Ausgabe mit Positionen ist in Dimesum eine gewöhnliche Ausgabe, die zufällig ihre Positionen mitführt. Die Ausgabe behält alles, was Ausgaben ohnehin haben: eine Summe, Teilnehmer, einen Teilungstyp, einen oder mehrere Zahler. Hinzu kommen Positionen, die Zeilen der Rechnung, sowie Zuschläge, also Steuer, Trinkgeld, Gebühren und Rabatte, die darunter aufgedruckt sind.
Zwei Ebenen entscheiden dann über jeden Cent. Der Teilungstyp der Ausgabe teilt jede Zeile, auf der niemand genannt ist. Eine Zeile mit zugewiesenen Personen wird von genau diesen Personen getragen und von niemandem sonst.
| Ebene | Was sie entscheidet | Gilt für |
|---|---|---|
| Teilungstyp der Ausgabe | Wie sich geteilte Kosten aufteilen: gleichmäßig, nach Prozent oder nach gewichteten Anteilen | Jede Position, auf der niemand zugewiesen ist |
| Zugewiesene Personen der Position | Wer diese Zeile verbraucht hat und in welchem Verhältnis | Nur diese Zeile |
Ein Abendessen über 525 €, bei dem die Person, die am wenigsten aß, 105 € zahlt
Asha, Bhavna und Chetan essen zu Abend, auf oberster Ebene gleichmäßig geteilt. Geteilte Teller kommen auf 300 €. Ein Meeresfrüchtegericht kommt auf 200 €, und nur Asha und Bhavna aßen es. Der Service beträgt 5 %, und Chetan zahlte die gesamten 525 €.
| Zeile | Betrag | Asha | Bhavna | Chetan |
|---|---|---|---|---|
| Geteilte Teller, keine Zuweisung | 300 € | 100 € | 100 € | 100 € |
| Meeresfrüchteplatte, Asha und Bhavna | 200 € | 100 € | 100 € | 0 € |
| Zwischensumme | 500 € | 200 € | 200 € | 100 € |
| Service 5 %, nach Zwischensumme | 25 € | 10 € | 10 € | 5 € |
| Summe | 525 € | 210 € | 210 € | 105 € |
Chetan zahlte 525 € und schuldet 105 €, also stehen ihm 420 € zu: 210 € von Asha und 210 € von Bhavna. Wer gezahlt hat, ist unabhängig davon, wer schuldet. Dass der Zahler die Person ist, die kaum aß, ändert keinen der Anteile, weshalb Dimesum Zahler auf Ausgabenebene und zugewiesene Personen auf Zeilenebene führt.
Die Steuer folgt dem, was Sie aßen, nicht Ihrer Anzahl
Chetans Anteil am Service von 25 € beträgt 5 €, nicht 8,33 €. Jeder Zuschlag verteilt sich im Verhältnis zur Positionszwischensumme jeder Person, sodass die Aufteilung des Essens von 200:200:100 auch die Aufteilung des Service bestimmt. Eine Verteilung nach Kopfzahl würde Chetan stillschweigend Steuer für ein Gericht berechnen, das er nie anrührte.
Wer nichts bestellte, zahlt daher keine Steuer und erhält keinen Rabatt. Die Gewichte sind die Zwischensummen vor den Zuschlägen und nicht die laufende Summe, was auch verhindert, dass sich die Rundung eines Zuschlags in die Gewichte des nächsten fortpflanzt.
Zuschläge gelten in ihrer Reihenfolge, also verschiebt ein Rabatt die Bemessungsgrundlage der GST
Eine Rechnung mit „1.000 €, minus 10 %, plus 5 % GST“ berechnet die GST auf 900 €, und die GST-Zeile beträgt 45 €. Dreht man die beiden um, wird die GST auf 1.000 € berechnet, was 50 € ergibt. Zuschläge sind eine geordnete Liste, und ein Prozentsatz gilt für die laufende Summe an seiner eigenen Position. Beide Reihenfolgen sind echte Rechnungen, daher ist die Liste geordnet und keine Menge.
Jeder Zuschlag trägt seine eigene position. Eine Reihenfolge, die auf der Einfügereihenfolge beruhte oder darauf, dass ein ID-Generator monoton bleibt, würde stillschweigend ändern, was alle schulden, nachdem eine Datenbank wiederhergestellt wurde.
Drei Prüfungen stehen zwischen einem Tippfehler und der Arithmetik. Ein Pool nennt entweder einen Pauschalbetrag oder einen Satz in Basispunkten, nie beides, denn beides zu speichern speichert eine Zahl und ihre eigene Herleitung. Ein negativer Betrag wird abgelehnt, mit einem Fehler, der DISCOUNT als den Weg nennt, eine Minderung zu schreiben. Ein Satz über 100.000 Basispunkten wird ebenfalls abgelehnt, eine Grenze weit über den 10.000 Basispunkten, die 100 % bedeuten, denn hundert Prozent Rabatt ist ein echter Rabatt.
| Art | Wirkung auf die laufende Summe | Warum sie eine eigene Art ist |
|---|---|---|
TAX | Fügt hinzu | Nur Formulierung; rechnerisch identisch |
TIP | Fügt hinzu | Nur Formulierung; rechnerisch identisch |
FEE | Fügt hinzu | Nur Formulierung; rechnerisch identisch |
DISCOUNT | Zieht ab | Die einzige Art, die die Arithmetik ändert, daher kommt die Richtung aus der Art und nie aus einem Vorzeichen |
Die Summe ergibt sich aus den Zeilen, und eine eingegebene Summe ist nur eine Prüfsumme
Eine Summe mit Positionen wird abgeleitet: die Summe der Positionen plus die Summe der Zuschläge. Die Zeilen sagen bereits, was die Rechnung kostet, daher wäre eine getrennt angegebene Summe eine zweite Quelle der Wahrheit, die der ersten widersprechen kann. Wer eine Rechnung falsch eingibt, korrigiert eine Zeile, wo der Fehler tatsächlich liegt, und die Summe folgt. Eine bereits gebuchte Rechnung wird über eine Änderung korrigiert, die ihre Teilung neu festlegt, sodass die Korrektur als neue Version landet und nicht als Überschreibung.
Ein Client kann dennoch amount_minor senden, und Dimesum behandelt es dann als Prüfsumme und nicht als die Antwort. Übereinstimmung bedeutet, dass der Client dieselbe Rechnung gelesen hat. Abweichung stoppt die Ausgabe, bevor Geld fließt.
Eine frühere Version fügte automatisch eine Zeile „Sonstiges“ für alles hinzu, was eine angegebene Summe nicht abdeckte, und entfernte die Zeile, wenn sich die Lücke schloss. Diese Zeile funktionierte, und sie ist weg. Das Ableiten der Summe löste das Problem auf, das die Zeile „Sonstiges“ verwalten sollte und das nur entstand, weil die Summe zweimal angegeben wurde.
Warum EXACT und Positionen zusammen abgelehnt werden
EXACT nennt den Endbetrag jedes Mitglieds. Positionen leiten den Betrag jedes Mitglieds ab. Beides zugleich ist überbestimmt: entweder sie stimmen überein, dann ist eines überflüssig, oder sie widersprechen sich, dann hat die Ausgabe zwei Antworten und keine Regel sagt, welche gewinnt. Dimesum lehnt die Kombination von vornherein ab, statt sie mit einer Vorrangregel zu klären, die sich niemand merken würde.
EQUAL, PERCENT und SHARES lassen sich alle mit Positionen kombinieren, denn jede ist eine Regel zum Teilen geteilter Kosten und keine Menge von Endbeträgen.
Wo ein Rabatt früher einen Cent verlor
Jede Verteilung nutzt die Methode des größten Rests, und jede erhält ihre eigene Summe genau. Gleichstände bei dieser Methode gingen früher an die niedrigste Mitglieds-ID, was dem ältesten Mitglied der Gruppe bei jeder gleichmäßig geteilten Ausgabe den zusätzlichen Cent gab; der Gleichstand rotiert nun über einen Hash der Ausgaben-ID. Geteilte Zeilen werden zusammengefasst und einmal geteilt statt Zeile für Zeile, sodass der überzählige Cent nicht bei jeder Zeile der Rechnung auf dasselbe Mitglied fällt.
Unsere Funktion apportion hatte hier einen echten Fehler. Die Ganzzahldivision in Go schneidet gegen null ab, sodass eine negative Summe in die falsche Richtung gerundet wurde und der Rest nie verteilt wurde: −10,00 € über Gewichte von 100, 200 und 300 kamen als −9,99 € zurück. Ein verschwundener Cent hätte eine korrekte rabattierte Rechnung ihre eigene Summenprüfung nicht bestehen lassen, und dem Nutzer wäre gesagt worden, seine Arithmetik sei falsch. Negative Summen werden nun nach Betrag verteilt und zurück negiert.
Geben Sie die Rechnung so ein, wie sie gedruckt ist
Tippen Sie die Zeilen, die Sie sehen, nennen Sie die Personen, die die nicht geteilten aßen, und fügen Sie Steuer, Trinkgeld, Gebühr und Rabatt in der Reihenfolge hinzu, in der der Beleg sie druckt. Dimesum leitet die Summe ab, verteilt jeden Zuschlag nach dem, was jede Person verbrauchte, und lässt den Zahler außen vor. Wenn das nächste Mal ein Gericht doppelt so viel kostet wie alles andere, fügen Sie es als eigene Zeile mit zwei Namen darauf hinzu.
Häufige Fragen
Restaurantrechnung teilen, wenn einer etwas Teures bestellt hat?
Setzen Sie dieses Gericht auf eine eigene Zeile und nennen Sie die Personen, die es aßen. In Dimesum teilt sich der Rest der Rechnung weiter nach der eigenen Regel der Ausgabe, meist gleichmäßig, während die genannte Zeile nur von ihren zugewiesenen Personen getragen wird. Steuer und Service verteilen sich dann nach der Zwischensumme jeder Person, sodass, wer das Gericht ausließ, von beidem weniger zahlt.
Steuer und Trinkgeld gleichmäßig teilen oder nach Bestellung?
Nach dem, was jede Person bestellte. Dimesum verteilt jeden Zuschlag im Verhältnis zur Positionszwischensumme jeder Person und nicht nach Kopfzahl. Bei einem Abendessen über 525 €, bei dem eine Person für 100 € aß, trägt diese Person 5 € eines Service von 25 € statt 8,33 €. Wer nichts bestellte, zahlt gar keine Steuer.
Ändert die Reihenfolge von Rabatt und Steuer den Rechnungsbetrag?
Ja. Zuschläge gelten in ihrer Reihenfolge gegen eine laufende Summe, sodass eine Rechnung mit „1.000 €, minus 10 %, plus 5 % GST“ die GST auf 900 € berechnet und die GST-Zeile 45 € beträgt. Stellt man die GST voran, wird sie auf 1.000 € berechnet, was 50 € ergibt. Bei einem pauschalen Rabatt von 100 € unterscheiden sich die Summen ebenfalls, 945 € gegenüber 950 €.
Warum kann man auf einer Rechnung mit Positionen keine genauen Beträge verwenden?
EXACT nennt den Endbetrag jeder Person, und Positionen leiten ihn ab, sodass beide zusammen einer Ausgabe zwei Antworten geben. Dimesum lehnt die Kombination ab, statt mit einer Vorrangregel, die sich niemand merken würde, einen Sieger zu wählen. EQUAL, PERCENT und SHARES funktionieren alle neben Positionen, denn jede ist eine Regel zum Teilen geteilter Zeilen und keine Menge von Endbeträgen.
Muss man die Summe einer Rechnung mit Positionen eingeben?
Nein. Dimesum leitet eine Summe mit Positionen als die Summe der Positionen plus die Summe der Zuschläge ab, denn die Zeilen sagen bereits, was die Rechnung kostet. Eine von einem Client gesendete Summe wird als Prüfsumme geprüft, und eine Abweichung stoppt die Ausgabe, bevor Geld fließt. Eine falsche Zahl zu korrigieren bedeutet, die Zeile zu korrigieren, aus der sie stammt.
Beliebte Beiträge
- Append-only-Ledger für geteilte Ausgaben8 Min. Lesezeit
- Warum das Ändern einer Ausgabe die Aufteilung neu setzt8 Min. Lesezeit
- Sechs Geldfehler bei Ausgaben in mehreren Währungen8 Min. Lesezeit
- Abrechnen: Gruppenausgaben mit wenigen Überweisungen5 Min. Lesezeit
- Miete fair mit Mitbewohnern teilen6 Min. Lesezeit