Closed igorpooh1978 closed 3 years ago
Рис с овощами стоимостью 14,15 у него есть поля Price = 14,15, Sum = 14,15, Amount = 1, ResultSum = 14,14 (это было сделано для правильного расчета округления!)
Что за округление 15,15 в 15,14? Хотелось бы посмотреть пример целиком, имея доступ к БД с номенклатурой, настройками и всем прочим. Можете показать копию папки CashServer? Если в общий доступ выкладывать нельзя, отправьте на api@iiko.ru со ссылкой на эту страницу.
Итак в ChequeTask есть куча прекрасных полей, которые позволяют получить данные по продукту для печати на ФР.
И дополнительный вопрос: вы смотрели, какое значение приходит в поле ChequeTask.RoundSum?
Добрый день. Про БД несколько сложно . Про RoundSum - да такое поле известно, но в полях налоговой таких полей как округление - нет и они ждут финальной суммы со всеми скидками и надбавками. (ещё раз замечу, что это не РФ).
Заполнение тех или иных полей зависит в том числе от настроек ФР в iikoOffice. Если случайным образом выбрана поддержка ФФД, то сумма округления (настройка "Округлять стоимость заказа до целого в пользу гостя") уйдет как раз в ChequeTask.RoundSum
. Но вы правы, вне РФ это не используется. Так что рассмотрим без поддержки ОФД.
В CheqeTask
много полей, и всех их достаточно для оплаты заказа на ФР. Т.е. все скидки/надбавки и округления там есть, если они есть в заказе.
Например, если в ФР включена печать НДС, то вся информация о скидках/надбавках хранится исключительно в ChequeSale
: ChequeSale.DiscountSum
и ChequeSale.IncreaseSum
. Поле ChequeSale.Sum
ВСЕГДА хранит в себе итоговую стоимость позиции заказа (с учетом скидок/надбавок и округлений).
Если же в ФР не включена печать НДС, а в заказе есть не только категориальные скидки/надбавки на блюда, но и общие скидки/надбавки на заказ, а также округления, то категориальные скидки/надбавки будут храниться в ChequeSale.DiscountSum
или ChequeSale.IncreaseSum
соответственно, а скидки/надбавки, действующие целиком на весь заказ (сюда же входят округления), в BillTask.DiscountSum
и BillTask.IncreaseSum
.
В котором не подается значение суммы после всех округлений, а только полная сумма, т.е. если товар стоил 1,5 и их 3, то там будет 4,5. Но к примеру после всех округлений Сумма д.б. стать 4
Попробовала воспроизвести ситуацию. В настройках валюты включена настройка "Округлять стоимость заказа до целого в пользу гостя". Добавляю 3 блюда по 1.5. Итоговая стоимость заказа: 4, сумма скидки-округления: 0.5.
1. В настройках ФР выключена настройка "Печать НДС".
В ChequeTask
:
BillTask.DiscountSum
= 0.5
ChequeSale.DiscountSum
= 0
ChequeSale.Sum
= 4
ChequeSale.Price
= 1.5
ChequeSale.Amount
= 3
2. Включаю в настройках ФР "Печать НДС" и оплачиваю такой же заказ.
В ChequeTask
:
BillTask.DiscountSum
= 0
ChequeSale.DiscountSum
= 0.5
ChequeSale.Sum
= 4
ChequeSale.Price
= 1.5
ChequeSale.Amount
= 3
Да спасибо
Добрый день
Делаем интеграцию с НС Итак есть налоговая (не РФ), данные в неё буду отдавать через API ФР Итак в ChequeTask есть куча прекрасных полей, которые позволяют получить данные по продукту для печати на ФР. https://iiko.github.io/front.api.sdk/v6/html/T_Resto_Front_Api_Data_Device_Tasks_ChequeTask.htm
Используется API V6
Там есть поле ResultSum, в котором подается значение «После оформления всех скидок и надбавок» Но к сожалению есть ещё и List< ChequeSale> В котором не подается значение суммы после всех округлений, а только полная сумма, т.е. если товар стоил 1,5 и их 3, то там будет 4,5. Но к примеру после всех округлений Сумма д.б. стать 4, все. Сделать ничего не могу будет в конце расхождение Т.е. Там есть и скидки и надбавки и прочее, но нет суммы после округлений К примеру
В IOrder.Items заказа есть продукт Рис с овощами стоимостью 14,15 у него есть поля Price = 14,15, Sum = 14,15, Amount = 1, ResultSum = 14,14 (это было сделано для правильного расчета округления!)
В ChequeTask.Sales Рис с овощами стоимостью 14,15 у него есть поля Price = 14,15, Sum = 14,15, Amount = 1, (т.е. поля с округленными данными нет), таким образом при передаче данных в систему
Я подам к примеру сумму 200 рублей, но система посчитает все позиции и скажет, что вы не верно отдали сумму, т.к. расчет д.б к примеру 200,88 копеек, что приведет к ошибке
Мой вопрос, можно ли как-то выдернуть Order.Items.ResultSum в ChequeTask.Sales.Result чтобы они были равны и с минимальными извращениями, т.к. у вас очень много разных скидок и надбавок. Тоже касается и модификаторов
Сейчас мне видится только путь собирания всех модификаторов в отдельный список и тоже самое для продуктов и потом проходится выборкой (сложно и боюсь скидки и надбавки мне где-нибудь аукнутся).
Да и IncreaseSum и DiscountSum везде 0.
Может это можно как-то отрулить настройками, чтобы в ChequeTask.Sales.ResultSum был равен В IOrder.Items.ResultSum?
Кусок кода для формирования