Изменение НДС - как изменить НДС, а затем округлить цену - PullRequest
1 голос
/ 30 ноября 2010

В связи с изменением ставки НДС в Великобритании в новом году нескольким клиентам потребуется обновить свои сайты до новой ставки НДС.Поскольку все цены хранятся в таблице MySQL (без учета НДС), изменение фактической ставки НДС является простым флагом в бэкэнде большинства сайтов, но это оставляет «уродливые» цены £ 10,87, а не £ 10,99.

Я хотел бы выполнить запрос к ценам, чтобы изменить цены, чтобы все новые цены (при добавлении новой ставки НДС) были «приятными», а не уродливыми.

Например,:

Текущая цена (без НДС): £ 8,50

Текущая цена (НДС @ 17,5%): £ 9,99

Новая цена (НДС @ 20%): £ 10,20

Желаемая цена (НДС @ 20%): £ 10.99

Ответы [ 3 ]

3 голосов
/ 30 ноября 2010
UPDATE products SET price = (CEIL(price*1.20)-0.01)/1.20 WHERE product_id = 123
1 голос
/ 30 ноября 2010

Хотя ваши клиенты нечестно пытаются скрыть повышение цены под повышением НДС, вы можете использовать что-то вроде CEIL (округляющее десятичное число до ближайшего целого числа), затем - 0,01.

1 голос
/ 30 ноября 2010

, если вы всегда хотите цены с 0,99, это должно быть довольно легко сделать:

update articles set price = round((ceil(8.50 * 1.2) - 0.01) / 1.2, 2);

доказательство:

mysql> select round((ceil(8.50 * 1.2) - 0.01) / 1.2, 2) as price;
+-------+
| price |
+-------+
|  9.16 |
+-------+
1 row in set (0.00 sec)

в пользу конкурентных цен, вы также можете рассмотреть floor (x) вместо ceil (x) хотя;)

...