Здесь, в Южной Африке, у нас есть налог на добавленную стоимость (НДС), который в значительной степени идентичен налогу с продаж и в настоящее время установлен на уровне 14%, но может измениться в любое время.
Мне нужно включить НДС всчета (которые являются неизменяемыми), состоящие из нескольких строк счетов .Каждая строка ссылается на Product
с логическим свойством IsTaxable
, и почти все продукты облагаются налогом.
Я не хочу хранить цены до вычета налогов в базе данных, потому что это только усложняет задачуЧтобы прочитать реальную цену, которую покупатель собирается заплатить, и везде, где я показываю эти цены, я должен не забыть добавить налог.И когда ставка НДС действительно меняется, для этого конкретного бизнеса нежелательно, чтобы все цены изменялись автоматически.
Поэтому я считаю, что обратный расчет налога - это путь, который, вероятно, не редкость.Общая сумма счета-фактуры представляет собой сумму всех итоговых строк строки счета-фактуры, которая включает любые скидки по строке и должна включать налоги.Следовательно, сама сумма счета-фактуры не включает налоги:
TaxTotal = InvoiceTotal / (1 + TaxRate),
, где InvoiceTotal
не включает налоги и TaxRate == 0.14
Поскольку счета-фактуры не могут быть изменены после их выдачи (они являются неизменяемыми),Должен ли я:
- Хранить одну сумму
Tax
в моей таблице Invoices
, которая не изменяется?Или ... - Сохранять сумму налога для каждой строки счета-фактуры и рассчитывать общую сумму налога-фактуры при каждом отображении счета-фактуры?
Вариант 2 кажется более безопасным с точки зрения администратора баз данных-после того, как если счет-фактура когда-либо изменяется вручную, то налог будет рассчитан правильно, , но , если счет-фактура уже был выставлен, это по-прежнему вызывает проблему несоответствия.Если я остановлюсь на варианте 1, то не смогу отобразить налог для отдельной позиции, но это упростит управление суммой налога и проведение совокупных вычислений, хотя при этом когда-либо изменится несоответствие.
Я не могусделайте и то и другое, поскольку это будет дублировать данные.
- Какой правильный путь?Или обратный расчет налогов - действительно плохая идея?