Имя: Пароль:
1C
 
Вики Принт 80 Плюс Ф
0 Kondarat
 
17.03.17
15:01
Конфигурация Управление торговлей 10.3 (мало, что осталось от типовой).
Устройство подключили, чеки печатаем, смены открываем (закрываем). Казалось бы все хорошо. Но. Есть проблема со скидками.
Пример:

           Количество       Цена          Скидка (%)       Сумма
Товар         12            2,50             5             28,50

К оплате - 28,50

Если передать все как есть - чек будет аннулирован, т.к. 12*2,50=30
Пытаемся сделать следующее:

Цена со скидкой = 28,50/12=2,375, округляем до 2,38.
Получается в итоге 2,38*12=28,56.
К оплате - 28,50

И опять из-за этих 6 копеек аннулируется чек.

Может есть победители данной ситуации?
1 Kondarat
 
17.03.17
15:51
Никто не работает с этим г-ном (зачеркнуто) оборудованием?
2 Mihenius
 
17.03.17
15:56
3 Kondarat
 
17.03.17
16:08
Не нашел в этих темах решения проблемы. Причем такая ситуация возникает только тогда, когда при расчете цены с учетом скидки попадаем на ошибку округления. Видимо драйвер считает построчно Количество*Цена, а потом складывает и сравнивает с суммой оплаты. Можно конечно эту погрешность отнести на какую-нибудь строку чека. Но правильно ли это?
4 Kondarat
 
20.03.17
11:13
+3 Решение таки не найдено. В первой ветке из (2) все формируется непосредственно методами драйвера:
// Destination - Назначение скидки:
//     0 - на чек

//     1 - на позицию (недоступно)
driver.Destination = 0;
driver.Summ = 0.70;
driver.SummDiscount();

Я же заполняю только структуру, полученную методом
СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыФискальнойСтрокиЧека();

Куда записать это чертово округление, чтобы драйвер меня правильно понял?
Или в этом случае (при наличии скидки) указать количество = 1, а цена = сумма, но тогда как указать реальное количество товара?
5 Kondarat
 
20.03.17
11:46
Апну последний разок...
Основная теорема систематики: Новые системы плодят новые проблемы.