diff --git a/chrome_extension/common/order.js b/chrome_extension/common/order.js index 7283df4..256ae70 100644 --- a/chrome_extension/common/order.js +++ b/chrome_extension/common/order.js @@ -4,6 +4,10 @@ class Order { } constructor(config = {tip: 0, tax: 0, untaxedFees: 0, taxedFees: 0, isTipPercentage: false, people: {}}) { + if (config.taxedFees) { + console.warn('Taxed fees have not been tested and probably don\'t work. I was contemplating removing this feature.'); + } + // validation { var defaults = { @@ -124,7 +128,12 @@ class Order { } get feesPerPerson() { - return this.fee/this.people.size; + if (!this.hasPeople) return {}; + var subtotal = Array.from(this.people.values()).reduce((a,b)=>a+b); + return Array.from(this.people.entries()).reduce((feesPerPerson, [name, price]) => { + feesPerPerson[name] = price/subtotal*this.untaxedFees; + return feesPerPerson; + }, {}); } get total() { @@ -149,7 +158,7 @@ class Order { let totalForPerson = price; totalForPerson += price * this.taxPercent; totalForPerson += price * this.tipPercent; - totalForPerson += this.feesPerPerson; + totalForPerson += this.feesPerPerson[name]; this.totals.set(name, totalForPerson); } let totalPrice = Array.from(this.totals.values()).reduce((acc, val) => acc+val); diff --git a/elements/order-split-results-table.html b/elements/order-split-results-table.html index 745554d..39f4c1b 100644 --- a/elements/order-split-results-table.html +++ b/elements/order-split-results-table.html @@ -44,7 +44,7 @@
Person | Item Costs | Tax | Tip | Fees Per Person | Person Total |
---|---|---|---|---|---|
' + person + ' | ' + - price + ' | + ' + // item costs - price + ' * ' + order.taxPercent + ' | + ' + // taxes - price + ' * ' + order.tipPercent + ' | + ' + // tip - order.feesPerPerson + ' | = ' + - this._prettifyNumber(order.totals.get(person)) + ' |