При оформлении торговых операций по требованиям 54-ФЗ нередко возникает ситуация, когда покупатель частично оплачивает заказ или накладную, содержащую номенклатурные позиции с различными ставками НДС (например, 10% и 20%). В конфигурациях нового поколения (таких как 1С:Управление торговлей 11 или 1С:ERP) механизмы фискализации автоматически рассчитывают суммы предоплат, кредитов и зачетов с разбивкой по товарным позициям и ставкам налога. Однако в конфигурации 1С:Управление торговлей 10.3 типовая архитектура документов расчетов и интеграции с ККТ имеет свои особенности. Разберем методологию работы по формату фискальных данных (ФФД) 1.05 и варианты решения этой задачи.
Прежде чем приступать к настройке или программным доработкам, проанализируем, как законодательство и стандарты фискализации требуют отражать частичные платежи в кассовых чеках в зависимости от момента передачи товара.
Если товар уже фактически передан клиенту по документу Реализация товаров и услуг, фискальный чек на отгрузку должен содержать полный перечень позиций с их реальными ставками НДС, а также признак способа расчета «Частичный расчет и кредит» (значение 5) или «Передача в кредит» (значение 6). Неоплаченная сумма фиксируется как постоплата (тег 1081 «в кредит»).
Когда покупатель вносит последующий платеж (например, через документ Приходный кассовый ордер), в кассовом чеке указывается признак способа расчета «Оплата кредита» (значение 7) и признак предмета расчета «Платеж» (значение 10). В этом чеке ставка НДС передается со значением «Без НДС», поскольку налоговая база и обязательства по начислению НДС по конкретным ставкам уже были зарегистрированы в момент отгрузки.
Если покупатель вносит часть средств за конкретный перечень товаров до их отгрузки, формируется чек с признаком «Предоплата» (значение 3). В этом случае сумма внесенных денег и расчетный НДС (10/110, 20/120) должны быть распределены пропорционально доле оплаты по каждой товарной строке.
Если же точный перечень позиций на момент оплаты не определен, чек пробивается с признаком «Аванс» (значение 4). При наличии товаров с разными ставками налога сумма аванса должна разбиваться на отдельные строки по соответствующим расчетным ставкам НДС.
Выясним причину сложностей при работе в 1С:УТ 10.3. В отличие от конфигураций на управляемых формах, документ Приходный кассовый ордер в УТ 10.3 не содержит товарной табличной части с номенклатурой и ставками налога, а оперирует только общей суммой взаиморасчетов и договором контрагента.
Типовой алгоритм формирования XML-пакета данных для драйвера ККТ при печати чека из ПКО не выполняет автоматический пропорциональный пересчет позиций из связанного документа-основания. Если попытаться передать строки накладной целиком при частичной сумме ордера, драйвер кассового аппарата вернет ошибку несовпадения итоговой суммы чека и суммы принятых денежных средств.
Рассмотрим порядок действий, который позволяет работать в рамках законодательства без внесения изменений в конфигурацию:
Реализация товаров и услуг на весь объем отгружаемых товаров со ставками 10% и 20%.Приходный кассовый ордер с признаком «Оплата кредита». Чек пробивается одной строкой на сумму платежа со ставкой «Без НДС», что полностью соответствует требованиям ФФД для постоплаты.Разберем ситуацию, когда клиенту требуется пробивать именно чек частичной предоплаты с детализацией по номенклатуре из документа Заказ покупателя или Реализация товаров и услуг. В этом случае необходимо доработать модуль формирования фискальных данных.
Посмотрим на пример алгоритма пропорционального распределения суммы частичной оплаты и ставок НДС по строкам документа-основания:
КоэффициентОплаты = ПКО_СуммаДокумента / ДокументОснование_СуммаДокумента;
НакопленнаяСумма = 0;
ВсегоСтрок = ТаблицаТоваров.Количество();
Для НомерСтроки = 1 По ВсегоСтрок Цикл
СтрокаТовара = ТаблицаТоваров[НомерСтроки - 1];
Если НомерСтроки = ВсегоСтрок Тогда
// Округляем остаток на последнюю позицию для избежания копеечных расхождений
СуммаПоЧеку = ПКО_СуммаДокумента - НакопленнаяСумма;
Иначе
СуммаПоЧеку = Окр(СтрокаТовара.Сумма * КоэффициентОплаты, 2);
НакопленнаяСумма = НакопленнаяСумма + СуммаПоЧеку;
КонецЕсли;
// Рассчитываем сумму НДС по расчетной ставке для предоплаты
Если СтрокаТовара.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
СуммаНДСПоЧеку = Окр(СуммаПоЧеку * 20 / 120, 2);
ИначеЕсли СтрокаТовара.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
СуммаНДСПоЧеку = Окр(СуммаПоЧеку * 10 / 110, 2);
Иначе
СуммаНДСПоЧеку = 0;
КонецЕсли;
// Передаем рассчитанные параметры в структуру фискального чека
ДобавитьПозициюВЧек(СтрокаТовара.Номенклатура, СуммаПоЧеку, СуммаНДСПоЧеку, Перечисления.ПризнакиСпособаРасчета.Предоплата);
КонецЦикла;
При реализации данного алгоритма обязательно следим за округлением: разница между суммой распределенных строк и суммой самого ПКО должна корректироваться на последней строке, иначе кассовый аппарат отклонит фискализацию чека из-за расхождения итогов.