Сохранить цены с или без VAT?

Мне любопытно, какова лучшая практика. Например, у нас есть объект продукта, он имеет два поля: Price и VAT. Что сохранить в значении Price? Базисная цена, и затем вычисляет цену результата на основе базисной цены и кода НДС. Или сохраните вычисленную цену и сохраните VAT только в информационных целях.

7
задан Ben 3 May 2012 в 19:40
поделиться

7 ответов

Без НДС, так как он может меняться независимо от цен.

Редактировать : кстати, а почему вы храните НДС для каждого продукта? Не лучше ли распределить товары по категориям (если у вас разные типы НДС)?

4
ответ дан 7 December 2019 в 07:38
поделиться

Поскольку НДС может измениться, я рекомендую сохранить базовую цену и процент НДС на момент продажи. Затем вы можете отобразить рассчитанную цену и процент НДС в зависимости от того, о чем вам нужно сообщить.

2
ответ дан 7 December 2019 в 07:38
поделиться

Если вы храните цену + НДС, целостность вашей базы данных может быть нарушена, если вы обновите НДС и забудете обновить цену + НДС. Этого не произойдет, если вы сохраните исходную цену. Короче говоря, лучше не хранить значения, которые можно получить вычислением по столбцам строки.

0
ответ дан 7 December 2019 в 07:38
поделиться

В ситуациях, когда в базе данных нужно хранить три значения, причем так, что, зная любые два, можно вычислить третье, я иногда предпочитаю хранить все три значения вместе с индикатором того, какие из них "настоящие", а какие вычисляемые. Эти три значения всегда должны быть равны; если это не так, следует разобраться, что происходит, и выяснить причину.

Например, может быть полезно хранить временные метки в виде часового пояса, UTC и местного времени, а также индикатор "что известно". Например, если обнаружится, что некоторые временные метки были записаны с использованием неправильного часового пояса, индикатор "что известно" может быть использован для определения того, следует ли корректировать UTC или местное время.

Что касается перспективной, а не исторической информации о ценах, я думаю, что было бы полезно хранить цену без НДС, ожидаемый НДС и цену с НДС, а также флаг режима, указывающий на различные сценарии, например

  1. Цена с НДС (VIP) должна точно отслеживать VEP+НДС с точностью до пенса.
  2. Цена с учетом НДС (VIP) должна точно отслеживать VEP+НДС с точностью до 5 пенсов
  3. Цена с учетом НДС (VIP) должна точно отслеживать VEP+VAT с точностью до 20 пенсов 1 пенс
  4. Цена с учетом НДС (VIP) должна точно отслеживать НДС+НДС с точностью до 50 пенсов-1
  5. Цена с учетом НДС (VIP) должна точно отслеживать VEP+VAT с точностью до 100 пенсов-1
  6. Цена с НДС должна оставаться фиксированной, если НДС меняется, но если обновление НДС приводит к тому, что VEP+VAT превышает VIP, запись должна быть отмечена, чтобы предложить кому-то рассмотреть возможность увеличения VIP.

В общем, выясните, что должно произойти, если НДС изменится, и настройте все соответствующим образом.

0
ответ дан 7 December 2019 в 07:38
поделиться

Цены на продукты лучше всего сохранять без НДС, так как уже упоминалось, что ставка НДС может меняться независимо от цен, во многих базах данных, с которыми я работаю, ставка(и) НДС хранятся в отдельной таблице, цена + НДС затем рассчитывается путем выбора ставки НДС из таблицы НДС.

Изменения также легче реализовать таким образом, например, если ставка НДС изменилась с 17,5% до 20%, вам нужно изменить только одну строку, чтобы все ваши цены обновились соответствующим образом, а не менять каждую отдельную цену.

0
ответ дан 7 December 2019 в 07:38
поделиться

Помимо : стандартная ставка НДС в Великобритании должна измениться в начале января 2011 года с 17,5% до 20%, любое решение должно учитывать такие изменения.

Решение, которое я использовал ранее, должно иметь следующее:

Продукт :
NetPrice (ДЕНЬГИ, НЕ NULL)
VATRateId (ЦЕЛОЕ, НЕ NULL, FK -> VATRate.VATRateID)

VATRate
VATRateId (INT, PK NOT NULL)
Описание (ТЕКСТ НЕ NULL)

VATRateValue
VATRateValueId (INT, PK NOT NULL)
VATRate (MONEY NOT NULL)
EffectiveToDate (DATETIME NULLABLE)

Таким образом я могу сохранить, что Продукт X имеет чистую цену 1,00 со ставкой НДС {1, Standard Rate VAT}, которая будет применять следующие ставки {17,5 % до 31 декабря 2010 г., 20% после этого}

Единственное, чего не позволяет это решение, - это изменение цены продукта, чтобы гарантировать, что, независимо от текущей ставки НДС, цена всегда будет оставаться на уровне определенная "цена", например 4,99. Что вы можете сделать здесь для максимальной гибкости (с повышенной сложностью), так это переместить поле NetPrice из сущности Product в сущность ProductPrice :

ProductPrice
ProductPriceId (INT , PK NOT NULL)
ProductId (INT, NOT NULL, FK -> Product.ProductId)
Цена (ДЕНЬГИ, НЕ NULL)
EffectiveToDate (DATETIME NULLABLE)

1
ответ дан 7 December 2019 в 07:38
поделиться

НДС в Великобритании менялся несколько раз за последний год или около того. Я бы сохранил базовую цену отдельно от переменного НДС.

0
ответ дан 7 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: