Receipt amount and discount rules: Difference between revisions

No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
This is how the register calculates amounts:
=== These are the rules used to calculate amounts: ===
 
There are two functions, applyAmountRule(amount) and applyDiscountAmountRule(discountAmount).
There are two functions, applyAmountRule(amount) and applyDiscountAmountRule(discountAmount).


Line 10: Line 9:


This amount is multiplied by 0.01 and returned.
This amount is multiplied by 0.01 and returned.


'''The discount amount rule does this:'''
'''The discount amount rule does this:'''
Line 26: Line 23:
The discount rule always go down unless it is within 0.999 of a penny.
The discount rule always go down unless it is within 0.999 of a penny.


 
=== With a receipt this is when the rules are applied ===
Discounts are calculated with fractional amounts during the calculation of modifier amounts, line amounts and the subtotal.
Discounts are calculated with fractional amounts (no rounding) during the calculation of modifier amounts, line amounts and the subtotal. These discount amounts are summed together and subtracted from the subtotal.


The amount rule is applied to each modifier, each line in the receipt, the full price of the receipt, the subtotal, the tax, the alcohol tax, the credit card fee, and the service fee. All of these amounts go up unless they are within 0.001 of a penny.
The amount rule is applied to each modifier, each line in the receipt, the full price of the receipt, the subtotal, the tax, the alcohol tax, the credit card fee, and the service fee. All of these amounts go up unless they are within 0.001 of a penny.


The full amount does not have any discounts and the subtotal does have discounts applied.
The full amount does not have any discounts but the subtotal does have discounts applied.


The final discount is calculated as the full amount - subtotal and then the discount rule is applied to this result. The discounts always go down unless they are within 0.999 of a penny.
The final discount is calculated as the full amount - subtotal and then the discount rule is applied to this difference. The discount always goes down unless it is within 0.999 of a penny.




Line 39: Line 36:


==Cash Discounting Fee==
==Cash Discounting Fee==
Credit card fee from a given amount. You want to add the credit card to an amount. Do this:
Credit card fee from a given amount. If you want to add the credit card fee to an amount. Do this:
:fee = ( amount / ( 1.0 - percentage ) ) - amount
:fee = ( amount / ( 1.0 - percentage ) ) - amount
:fee = applyAmountRule(fee)
:fee = applyAmountRule(fee)
Credit card fee included in an amount. Given the total amount you want to know how much of it is the fee. Do this:
Credit card fee included in an amount. If you are given the total amount and you want to know how much of it is the fee. Do this:
:fee = amount * percentage
:fee = amount * percentage
:fee = applyAmountRule(fee)
:fee = applyAmountRule(fee)

Latest revision as of 11:23, 29 August 2024

These are the rules used to calculate amounts:

There are two functions, applyAmountRule(amount) and applyDiscountAmountRule(discountAmount).

The amount rule function does this:

Convert the amount to pennies by multiplying by 100.0

If the fractional part is less than 0.001 then take the floor amount else take the ceiling amount.

This amount is multiplied by 0.01 and returned.

The discount amount rule does this:

Convert the amount to pennies by multiplying by 100.0

If the fractional part is greater than 0.999 then take the ceiling amount else take the floor amount.

This amount is multiplied by 0.01 and returned.


So the amount rule always goes up unless it is within 0.001 of a penny.

The discount rule always go down unless it is within 0.999 of a penny.

With a receipt this is when the rules are applied

Discounts are calculated with fractional amounts (no rounding) during the calculation of modifier amounts, line amounts and the subtotal. These discount amounts are summed together and subtracted from the subtotal.

The amount rule is applied to each modifier, each line in the receipt, the full price of the receipt, the subtotal, the tax, the alcohol tax, the credit card fee, and the service fee. All of these amounts go up unless they are within 0.001 of a penny.

The full amount does not have any discounts but the subtotal does have discounts applied.

The final discount is calculated as the full amount - subtotal and then the discount rule is applied to this difference. The discount always goes down unless it is within 0.999 of a penny.


There is one exception to these rules. If the menu has tax included in the price then the discount rule is used in all calculations. This is so items for example set to $7.00 don't end up being $7.01

Cash Discounting Fee

Credit card fee from a given amount. If you want to add the credit card fee to an amount. Do this:

fee = ( amount / ( 1.0 - percentage ) ) - amount
fee = applyAmountRule(fee)

Credit card fee included in an amount. If you are given the total amount and you want to know how much of it is the fee. Do this:

fee = amount * percentage
fee = applyAmountRule(fee)