Обработка цен с более чем двумя знаками после запятой: разбор на примерах из файла

Рассмотрим примеры из файла (колбаса и шурупы) и разберём, как правильно обрабатывать цены с дробными значениями в соответствии с ФЗ‑54.

Пример 1. Весовой товар (колбаса)

Исходные данные:

  • цена за кг (P) = 321,00 руб./кг;

  • количество (Q) = 0,231 кг;

  • скидка (d) = 3% (0,03).

Расчёт по формуле:

S = round(321 × 0,231 × 0,97, 2) = 71,81 руб.

Анализ:

  1. Сначала вычисляем «сырую» стоимость без округления:
    321 × 0,231 = 74,151 руб.

  2. Применяем скидку 3%:
    74,151 × 0,97 = 71,92647 руб.

  3. Округляем до двух знаков после запятой:
    round(71,92647, 2) = 71,93 руб.

Проблема:
Если просто округлить и пробить в чеке 71,93 руб., это нарушит ФЗ‑54 — итоговая сумма не будет точно соответствовать произведению цены, количества и коэффициента скидки.

Правильное решение:
Нужно использовать корректирующую скидку или разбить позицию, чтобы соблюсти правило:
Цена × Кол-во × Скидка = Сумма позиции ± 1 копейка.

Вариант 1: корректирующая скидка

  • пробиваем в чеке цену 321,00 руб./кг;

  • указываем количество 0,231 кг;

  • применяем дополнительную корректирующую скидку, чтобы итоговая сумма стала 71,81 руб.;

  • в чеке не должно быть строки «округление» — только условия акции/скидки.

Вариант 2: разбиение позиции
Если корректирующая скидка неприменима, делим позицию на две строки:

  • строка 1: 0,23 кг по 321,00 руб./кг → 321 × 0,23 = 73,83 руб.;

  • строка 2: 0,001 кг по сниженной цене → рассчитываем так, чтобы общая сумма составила 71,81 руб.

Как пробить в чеке:

  • кол-во: 0,231 кг;

  • цена: 321,00 руб./кг;

  • сумма: 71,81 руб. (без строки «округление»);

  • если использована корректирующая скидка — отобразить её как условие акции.

Пример 2. Штучный товар (шурупы)

Исходные данные:

  • цена за шт. (P) = 0,30 руб./шт.;

  • количество (Q) = 1000 шт.;

  • скидка (d) = 3% (0,03).

Расчёт по формуле:

S = round(0,30 × 1000 × 0,97, 2) = 291,00 руб.

Анализ:

  1. «Сырая» стоимость:
    0,30 × 1000 = 300 руб.

  2. Применяем скидку 3%:
    300 × 0,97 = 291,00 руб.

  3. В этом случае округление не требуется — сумма уже с двумя знаками после запятой.

Особенность:
Хотя здесь округление не понадобилось, важно понимать, что при других значениях (например, цена 0,33 руб./шт.) итоговая сумма могла бы не совпасть с Цена × Кол-во × Скидка.

Пример с «проблемной» ценой:

  • P = 0,33 руб./шт.;

  • Q = 1000 шт.;

  • d = 3%.

  • Расчёт: 0,33 × 1000 × 0,97 = 320,01 руб. (не совпадает с округлённым до двух знаков).

Правильное решение (разбиение позиции):
Разбиваем на две строки:

  • строка 1: 999 шт. по 0,33 руб. → 999 × 0,33 = 329,67 руб.;

  • строка 2: 1 шт. по скорректированной цене → рассчитываем так, чтобы общая сумма соответствовала 320,01 руб. после скидки.

Как пробить в чеке:

  • создать две строки для одной позиции;

  • в первой строке: кол-во — 999 шт., цена — 0,33 руб./шт., сумма — 329,67 руб.;

  • во второй строке: кол-во — 1 шт., цена — скорректированная, сумма — оставшаяся часть;

  • итоговая сумма чека: 320,01 руб.;

  • не использовать строку «округление» — корректировки внутри позиций.

Итог

  1. Для весового товара (колбаса) используем корректирующую скидку или разбиение позиции, чтобы сумма в чеке точно соответствовала расчётам ±1 копейка.

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

  3. Ключевое правило: не округляем промежуточные расчёты — только итоговую сумму чека (в пользу покупателя). Все корректировки должны быть внутри позиций, а не через строку «округление».

  4. Фискальная дисциплина: соблюдение ФЗ‑54 гарантирует отсутствие претензий со стороны налоговых органов и прозрачность для покупателя.

Метаданные статьи

Идентификатор статьи:
38
Категория:
Дата добавления:
2026-02-07 19:05:57
Просмотры:
50
Рейтинг (Голоса):
(1)

Связанные статьи