Я создал свой собственный класс корзины покупок, и в настоящее время я работаю над тем, как рассчитываются налоги, скидки и итоги.
Проблема, которая у меня возникла, основана на теории, а не на реальном коде.
Настройка
В корзину можно добавлять товары с разными ставками налога за товар.
Поскольку ставки налога на товары могут варьироваться, общую сумму налога на корзину нельзя просто рассчитать, например, выполнив:
Ставка налога составляет 20%, поэтому, если промежуточный итог составляет 100 долларов США, а мы добавляем налог в размере 20%, общая сумма налога составляет 20 долларов США.
Вместо этого переменная налоговая ставка для каждого товара рассчитывается по цене товара и добавляется к итоговой сумме налога.
Пока все работает нормально.
Проблема
Проблема возникает, если пользователь применяет купон на скидку, например - 10 долларов США от общей суммы.
Если общая сумма составляет 100 долларов, а я скидываю 10 долларов, общая сумма теперь составляет 90 долларов.
Тем не менее, каким должен быть общий налог?
Я не могу взять 10 долларов с общей суммы налога, поскольку это просто неверно, и я не могу взять процентную ставку глобального налога с 10 долларов, а затем убрать ее из общей суммы налога, поскольку у товаров в корзине могут быть переменные налоговые ставки.
Каково решение этого сценария?