+7 499 990-10-21

Округление чека

Округление чека

Сообщение Troglodit » 03 дек 2019, 18:10

ДЭНСИ 2.0.6.605
При округлении чека, в транзакциях 11 сумма по позиции с учетом скидки не учитывает округление чека. И получается следующая картина:
сумма чека из ФР-100.00, сумма по позициям 100.75к.
Можно ли сделать, чтобы округленная сумма размазывалась по позиционно?
12 лицензий ДЭНСИ
Troglodit
 
Постов: 122
Зарегистрирован: 16 июн 2014, 15:02

Re: Округление чека

Сообщение Alexander » 03 дек 2019, 18:15

Согласно ФФД, утвержденному ФНС РФ, допускается отброс копеек в сумме чека.
При этом цена (стоимость) товаров в чеке не меняется.
Наши типовые обработки для 1С умеют раскидывать сумму округления по позициям.
Со стороны кассы особого смысла в этом нет.
Alexander
 
Постов: 4992
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Округление чека

Сообщение Troglodit » 03 дек 2019, 18:56

У меня просто сумма за день по кассам разъезжается с лентой,
в цена продаж позиций неактуальная цена,бухгалтеры не в восторге.
Да и для внутренней аналитике в отчетах эти копейки вылезут со временем в тысячи рублей.
А можете словесно алгоритм описать. У нас не 1С.
Или кусок кода с обработки выложить,я бы его адаптировал?
12 лицензий ДЭНСИ
Troglodit
 
Постов: 122
Зарегистрирован: 16 июн 2014, 15:02

Re: Округление чека

Сообщение Alexander » 04 дек 2019, 13:15

Вариант с распределением по позициям пропорционально суммам:
Код: Выделить всё
Если Округление <> 0 Тогда
   ПроцентСкидки = Окр((Округление/СуммаЧека) * 100, 5);
   СуммаСкидки = Округление;
                                             
   СтруктураПоиска           = Новый Структура("НомерЧека, Смена, ДатаВремяТранзакции");
   СтруктураПоиска.НомерЧека = НомерЧека;
   СтруктураПоиска.Смена     = Смена;
   СтруктураПоиска.ДатаВремяТранзакции  = ДатаВремяТранзакции;
   Товар                     = Чеки.НайтиСтроки(СтруктураПоиска);
   ПромИтог = 0;
   ПромИтогБС = 0;
   Для Каждого Врем Из Товар Цикл
      ПромИтог = ПромИтог + Врем.Сумма;
      Если Врем.СкидкаПозиции = 0 Тогда
         ПромИтогБС = ПромИтогБС + Врем.Сумма;
      КонецЕсли;   
   КонецЦикла;
   Если ПроцентСкидки = 0 тогда
      ПроцентСкидки = Окр((СуммаСкидки/ПромИтог) * 100,5);
   КонецЕсли;   
   СкидкаРасчет = ПромИтог * ПроцентСкидки / 100;
   СкидкаРасчет = Окр(СкидкаРасчет, 2);
   Если ТипЧека = 1 Тогда
      СуммаСкидки = -СуммаСкидки;
   КонецЕсли;
   Если МодульЧисла(СкидкаРасчет - СуммаСкидки) < 1 Тогда
      МаксПоз = 0;
      Итог = 0;
      Для Каждого Врем Из Товар Цикл
         Врем.Сумма = Окр(Врем.Сумма * (100 - ПроцентСкидки) / 100, 2);
         Итог = Итог + Врем.Сумма;
         Если МодульЧисла(Врем.Сумма) > МодульЧисла(МаксПоз) Тогда
            МаксПоз = Врем.Сумма;
         КонецЕсли;   
      КонецЦикла;
      Разн = Окр(Итог,2) - (ПромИтог - СуммаСкидки);
                Если Разн <> 0 Тогда
         Для Каждого Врем Из Товар Цикл
            Если Врем.Сумма = МаксПоз Тогда
               Врем.Сумма = Врем.Сумма - Разн;
               Прервать;
            КонецЕсли;   
         КонецЦикла;
      КонецЕсли;   
   ИначеЕсли Окр(ПромИтогБС * ПроцентСкидки / 100,2) = СуммаСкидки Тогда
      Для Каждого Врем Из Товар Цикл
         Если Врем.СкидкаПозиции = 0 Тогда
            Врем.Сумма = Врем.Сумма * (100 - ПроцентСкидки) / 100;
         КонецЕсли;   
      КонецЦикла;
   Иначе   
      Результат = -1;
      Прервать;
   КонецЕсли;
КонецЕсли;


Второй вариант - применить округление к позиции с наибольшей суммой.
Alexander
 
Постов: 4992
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Округление чека

Сообщение Troglodit » 04 дек 2019, 14:06

Спасибо.
Наверное будем использовать 2-й вариант.
1-й вариант какой-то монструозный.
Я смотрел обработку dnc_kassa_v4.epf и вообще запутался.
там берется значение 13-го поля транзакции 11, в котором сумма позиции уже со скидкой, затем если есть скидка по позиции зачем то прибавляется скидка, хотя она уже есть в этой сумме.

Вопрос а как решается при возврате товара по номеру чека,
там сумма позиций без учета округления?
12 лицензий ДЭНСИ
Troglodit
 
Постов: 122
Зарегистрирован: 16 июн 2014, 15:02

Re: Округление чека

Сообщение Alexander » 04 дек 2019, 15:15

Troglodit писал(а):Я смотрел обработку dnc_kassa_v4.epf и вообще запутался.

Там, скорее всего, в обработчиках транзакций 17/37 заглушка стоит - код остался старый, но он не работает. По крайней мере скидки повторно точн оне применяются. Только округление суммы чека в конце добавляется (при анализе 55-й транзакции).
Troglodit писал(а):Вопрос а как решается при возврате товара по номеру чека,
там сумма позиций без учета округления?

В возврате все идентично продаже, за исключением типа чека.
Alexander
 
Постов: 4992
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Округление чека

Сообщение Troglodit » 04 дек 2019, 16:26

Я видимо плохо описал проблему.
Я имел ввиду, что цена возврата в чеке возврата будет без учета округления в момент печати чека,т.е. больше чем нужно вернуть покупателю мы вынуждены отдавать, т.к. не учитывается округление чека продаж.
С одной позицией вряд ли мы переплатим больше, но при нескольких позициях, реально по учету будут теряться. Т.е. по факту округление будет происходить 3 раза. 1-при продаже,2-й раз при расчете цены возврата без учета округления, 3-й при округлении чека возврата.
12 лицензий ДЭНСИ
Troglodit
 
Постов: 122
Зарегистрирован: 16 июн 2014, 15:02

Re: Округление чека

Сообщение Alexander » 04 дек 2019, 22:54

В свежих версиях Д:К цена при возврате не рассчитывается, а подгружается из того же самого 13-го поля (при возврате по номеру чека, конечно).
По поводу округления суммы чека возврата завтра посмотрю исходники.
Тут еще надо делить полный возврат и частичный.
Alexander
 
Постов: 4992
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Округление чека

Сообщение Alexander » 05 дек 2019, 17:19

Вот что происходит на текущей версии Д:К при включенном округлении.
Продажа:
1. 1*590 = 590
Скидка 31.45
2. 1*245 = 245
Скидка 13.06
--------------
Всего скидка 44.51
Округление 0.49
Итого скидка 45
--------------
Итого к оплате 790

Полный возврат:
1. 1*558,55
2. 1*231,94
Округление 0,49
Итого к возврату 790

Частичный возврат 1 товара:
1. 1*558,55
Округление 0,55
Итого к возврату 558

Частичный возврат 2 товара:
1. 1*231,94
Округление 0,94
Итого к возврату 231

Итого сумма по двум частичным возвратам: 789
Alexander
 
Постов: 4992
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Округление чека

Сообщение Troglodit » 06 дек 2019, 17:33

Просто сама постановка, что нужна постобработка несколько спорна.
Обычно по факту что отдала сторонняя система, так и надо записать без корректировок.
Т.е. сумма по позиции в дэнси и в КИС не совпадают и в случае спорных ситуаций, а они к сожалению бывают, нет возможности в рукопашную все сравнить, не понятно на чьей стороне проблема без долгого погружения в проблему.
Мне казалось в момент записи чека гораздо проще и правильнее сделать все правки, зафиксировать все округления, скидки и пр. до передачи во вне.
Я, например храню все скидки, по чеку, даже если они не все были применены.
В случае спорных ситуаций очень помогает.
12 лицензий ДЭНСИ
Troglodit
 
Постов: 122
Зарегистрирован: 16 июн 2014, 15:02

След.

Вернуться в Техподдержка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


cron

Кто сейчас на конференции

Сейчас посетителей на конференции: 20, из них зарегистрированных: 0, скрытых: 0 и гостей: 20 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (180) здесь было 29 апр 2024, 13:15

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20