Имеем фискальный регистратор АТОЛ FPrint 22-ПТК и конфигурацию без БПО.
Генеральная задача: округлять суммы чеков, например, до 50 копеек.
Проблема: после округления НДС не пересчитывается.
Пример:
1) сумма чека составила 1.18 руб., из них НДС 0.18 руб.
2) округляем до 1.00 руб. и ожидаем, что НДС будет равен 0.15 руб.
3) по факту видим в чеке итог 1.00 руб., из них НДС 0.18 руб. (вместо 0.15 руб. ожидаемых).
Пробовал выполнять метод ОтменаНалога() на сумму 0.03 руб. - не сработало.
Пробовал включать в драйвере флажок "Пересчет суммы налогов после скидки на итог" - тоже не сработало.
Допускаю, что мог упустить что-то при вышеперечисленных экспериментах.
Генеральная задача: округлять суммы чеков, например, до 50 копеек.
Проблема: после округления НДС не пересчитывается.
Проблема может возникнуть, даже если добиться пересчета.
Только это уже будет налоговая проблема, а не программистская. И заключается она в том, что не всегда можно корректно рассчитать налог, когда "сумма включает НДС".
Например, какие числа вы хотите увидеть в чеке, если его сумма после округления составила 360 руб. при ставке НДС 18%?
Допустим. Но тогда стоимость товара без НДС получается 360-54.92=305.08 руб. Так?
Проблема в том, что НДС с 305.08 равен 54.91, а общая сумма чека получается 359.99 - "генеральная задача" не выполнена!
Если же стоимость товара без НДС увеличить на 1 копейку - 305.09 руб., то НДС с нее равен 54.92 руб., общая сумма чека - 360.01, про генеральную задачу см.выше.
И таких чисел не одно и не два.
Насчет возможного: "да там всего-то копейка!" замечу: баловаться же с исчислением НДС налоговая вам просто так не позволит.
(13) Цена решения - 18% от суммы округления. Это раз.
Если не решить проблему с уменьшением НДС, могут достаточно сильно не сойтись суммы продажи с суммой НДС в Книге продаж, что увеличивает наши шансы на неприятное общение с налоговой. Это два.
И ещё, бонусом, нужно будет тогда получать в 1С фактический НДС из фискальных данных вместо того НДС, что считается по вышеприведённой формуле.
(2) Тут вопрос не о настройках. В конфигурации в принципе не было никакого округления, допиливал сам.
Поясню подробнее. Перед выполнением команд на драйвере мы уже знаем все позиции чека, цены и итоговую сумму чека (равно и сумму оплаты) с учетом всех скидок и округления (и сумму этих скидок и округления). На выходе имеем примерно такое общение с драйвером:
<...>
// Регистрация
Драйвер.Наименование = "Наш товар";
Драйвер.Цена = 118.00;
Драйвер.Количество = 0.010;
Драйвер.Регистрация();
// Скидка
Драйвер.Сумма = 0.18;
Драйвер.ОбластьДействия = 0; // область действия скидки/надбавки: 0 - на чек, 1 - на позицию
Драйвер.ДенежнаяСкидка();
// Оплата
Драйвер.Сумма = 1.00;
Драйвер.Оплата();
<...>
А может так получится, что в программе 1С одни цифры по продажам, а у ОФД - другие т.е. округленные?
Т.е. вы округляете перед печатью чека. Может нужно это делать раньше?
Может в Регистрации указать Налог ?
Драйвер.TaxTypeNumber = 2 // НДС 10%
б.0 «Наименование налога 0» = «Нет налогов - Налоги НДС запрещены»
б.1 «Наименование налога 1» = «1 Номер налога» - «18» – «НДС 18%»
б.2 «Наименование налога 2» = «2 Номер налога» - «10» – «НДС 10%»
б.3 «Наименование налога 3» = «3 Номер налога» - «18\118»
б.4 «Наименование налога 4» = «4 Номер налога» - «10\110»
б.5 «Наименование налога 5» = «5 Номер налога» - «0» – слово в позиции чека «НДС 0%»
б.6 «Наименование налога 6» = «6 Номер налога» - слово в позиции чеке «Без НДС»
А может так получится, что в программе 1С одни цифры по продажам, а у ОФД - другие т.е. округленные?
Какой ОФД? Про ОФД мы сейчас вообще не говорим.
Я в отладчике просмотрел какие суммы в какой метод драйвера уходят. Там всё сходится. Нет понимания, как должны работать ОтменаНалога() и "Пересчет суммы налогов после скидки на итог".
Может в Регистрации указать Налог ?
Налог указан, я просто не стал абсолютно весь код сюда пихать.