+7 499 990-10-21

И снова не верные скидки

И снова не верные скидки

Сообщение Бродяга_Джон » 16 июл 2019, 10:18

Релизы: .583 .595 .6хх

И снова вылезла проблема по начислению скидок. Подтверждено и на релизах .6хх

Ситуация такая, при применении процентной скидки на позицию, если кол-во товара = 1 считает правильно и в поля №№ 12 и 13 транзакции №17 заносится правильное значение.
Если же кол-во товара больше 1 - то в поля №№ 12 и 13 заноситься значение скидки ОДНОЙ единицы товара, а не набранного кол-ва. Т.е. например набито 10 штук по 100 со скидкой 10%, в поля №№ 12 и 13 попадёт не "100", а всего лишь "10", за одну штуку.

При этом сумма скидки считается и печатается на чеке нормально.

Сумма по полям 12/13 и сумма скидок в отчёте по кассирам - совпадают, так что визуально это не заметишь сразу, не разбирая подетально.

И загрузка в ПО идёт из полей транзакций 17/37 (ну и 15/35, но там нормально).
Просто прошли учёты, и вышли "плюсы" на магазинах, стали разбираться и вот такое вышло.

На 6хх релизах проверял просто.
Создал в пустой базе с настройками три товара по 100 рублей.
Сделал два чека:
1) в чеке все три позиции с количеством 1, 2 и 3, начислил 10% на чек. Всё посчитано и напечатано верно и правильно
2) те же три позиции с таким же количеством (идентичен первому), но начислял 10% на позиции отдельно. Посчитано и напечатано верно, но в поля 12/13 , там где количество больше одного, занеслись сумму скидок с одной штуки позиции.
Бродяга_Джон
 
Постов: 1263
Зарегистрирован: 12 окт 2010, 22:07
Откуда: Россия, Омск

Re: И снова не верные скидки

Сообщение Troglodit » 16 июл 2019, 11:54

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

Re: И снова не верные скидки

Сообщение Бродяга_Джон » 16 июл 2019, 13:39

Troglodit писал(а):Крайне не советую использовать транзакции со скидками для загрузки отчета.
...


Когда давно писалось это под имеющуюся 1С, да и с учётом протокола Атол (использовались ФР Меркурий) иного выбора тогда не было по учёту скидок.
Всё было нормально до недавних пор. Недавний затык был при комбинировании в чеке скидок на позицию и скидок на чек, хотя по отдельности было нормально. Поле №13 не описано в документации на протокол по транзакциям скидок/надбавок (с 15 по 38), там только поле №12.

PS
У нас так же есть и фиксированные и автоскидки (акции понедельные), но позиции со скидка исключаются из скидок на чек. Применяется максимальная.
При загрузке отчёта спокойно можно отобрать нужную, максимальную, скидку :-)
Просто проверяется что больше :-)))
Бродяга_Джон
 
Постов: 1263
Зарегистрирован: 12 окт 2010, 22:07
Откуда: Россия, Омск

Re: И снова не верные скидки

Сообщение Troglodit » 16 июл 2019, 13:51

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

Re: И снова не верные скидки

Сообщение Бродяга_Джон » 16 июл 2019, 15:17

Troglodit писал(а):Я говорил про формат ДЭНСИ. Они вроде давно его рекомендуют и обновляют, атол я в самом начале использовал, а потом перешел на ДЭНСИ.

Когда внедрялось - формата Дэнси ещё не было, на Атоле жили до 1 июля 2018, до онлайн касс, ибо были Меркурии, которые сменились на RR (Штрих). К тому времени и правилась обработка на смену протокола.

Troglodit писал(а):В вашем случае прибить гвоздями разбор по скидкам-это хорошо до первого сбоя или когда приоритет скидок измените, а про тонкости загрузки забудите.
Только недавно напоролся в 600 релизе, когда приоритет сбросился, и как итог несколько чеков успело уйти с приоритетом суммируется.

до обновления тестирую на копиях баз из магазинов.

Troglodit писал(а):В вашем случае вы еще получаете геморрой в расхождении загружаемой суммы в КИС и ленты ФР в этом случае.

фишка в том что в отчёте по кассирам , где можно увидеть скидки (ибо нет их в Z-отчёте), и в загруженных данных не было расхождений :-)

просто сейчас вот по магазинам месяц с лишним были учёты, вот и вылезло, что типа у всех "плюс", чего быть не может
Бродяга_Джон
 
Постов: 1263
Зарегистрирован: 12 окт 2010, 22:07
Откуда: Россия, Омск

Re: И снова не верные скидки

Сообщение Alexander » 16 июл 2019, 15:56

Бродяга_Джон писал(а):На 6хх релизах проверял просто.
Создал в пустой базе с настройками три товара по 100 рублей.
Сделал два чека:
1) в чеке все три позиции с количеством 1, 2 и 3, начислил 10% на чек. Всё посчитано и напечатано верно и правильно
2) те же три позиции с таким же количеством (идентичен первому), но начислял 10% на позиции отдельно. Посчитано и напечатано верно, но в поля 12/13 , там где количество больше одного, занеслись сумму скидок с одной штуки позиции.

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

Re: И снова не верные скидки

Сообщение Alexander » 16 июл 2019, 16:15

Библиотека для 32bit ОС (i386)
Распаковать с заменой в /usr/lib/
Вложения
libdncinserttransaction.zip
(32.39 КБ) Скачиваний: 230
Alexander
 
Постов: 4992
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: И снова не верные скидки

Сообщение Alexander » 23 июл 2019, 12:43

Исправление вошло в сборку 2.0.6_605
Alexander
 
Постов: 4992
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: И снова не верные скидки

Сообщение Бродяга_Джон » 24 июл 2019, 10:21

Может кому то пригодится для перезагрузки данных отчётов продаж по этой ошибке

код на 7.7, на форме только две кнопки, Сформировать и Закрыть.
Названия загружаемого и записываемого фалов просто для примера, ведь у каждого свои.
Обработка просто открывает файл отчёта продаж и проходит его построчно.
Если встречена транзакция №11, то просматривается следующая строка в файле и если там транзакция №17 - то происходит обработка строки с транзакцией №17.
Находит в через "СтрЗаменить" фрагмент с полями 12 и 13 и заменяет в них значения на значения умноженные на кол-во ед. товара из строки с транзакцией №11.

Обращаю внимание на подстроки для поиска и замены!!
";номерККТ;17;" тут "номерККТ" это заводской номер ФР, прописать надо ваш номер.

На оригинальность не претендует, но работу свою сделала.
С одной кассы почти за 3 месяца перезагружать пришлось, разница по скидкам была под 20 000.
Файл отчётов продаж был сформирован заново, с даты проявления ошибки.
Из ИБ прежние данные о продажах были удалены, отчёт обработан данным кодом и повторно загружены данные о продажах

Код: Выделить всё
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   
   ФайлВыгрузки = СоздатьОбъект("Текст");
   
   КолвоСтрок = 0;
   
   ФайлТовара = СоздатьОбъект("Текст");
   ФайлТовара.Открыть("C:\007\report_fail.txt");
   Строчек=Число(ФайлТовара.ПолучитьСтроку(13));
   Строчек0=Число(ФайлТовара.ПолучитьСтроку(Строчек));
   Сообщить ("В конце строчек = "+Строчек0);
   
   Для Ном=1 по Строчек+14 Цикл
   //Для Ном=1 по 300 Цикл
      
      Стр=ФайлТовара.ПолучитьСтроку(Ном);
      
      СтрХ = СтрЗаменить( ФайлТовара.ПолучитьСтроку(Ном), ";", РазделительСтрок );
      ТипТранзакцииХ = Число( СтрПолучитьСтроку( СтрХ, 9 ) );
      Если ТипТранзакцииХ=11 Тогда
         СтрХ0 = СтрЗаменить( ФайлТовара.ПолучитьСтроку(Ном+1), ";", РазделительСтрок );
         КолвоТовараХ   = Число( СтрПолучитьСтроку( СтрХ, 12 ) );
         СуммаСкидкиПозиции = ( СтрПолучитьСтроку( СтрХ0, 12 ) );
         ТипСкидкиПозиции = ( СтрПолучитьСтроку( СтрХ0, 10 ) );
         СтавкаСкидкиПозиции = ( СтрПолучитьСтроку( СтрХ0, 11 ) );
         ТипТранзакцииХ0   = Число( СтрПолучитьСтроку( СтрХ0, 9 ) );
         Если ТипТранзакцииХ0=17 Тогда
            
            Стр0=ФайлТовара.ПолучитьСтроку(Ном+1);
            
// Вместо "номерККТ" прописать своё значение!!!            Подстрока1=";номерККТ;17;"+ТипСкидкиПозиции+";"+СтавкаСкидкиПозиции+";"+СуммаСкидкиПозиции+";"+СуммаСкидкиПозиции+";";
            Подстрока2=";номерККТ;17;"+ТипСкидкиПозиции+";"+СтавкаСкидкиПозиции+";"+Число(СуммаСкидкиПозиции)*Число(КолвоТовараХ)+";"+Число(СуммаСкидкиПозиции)*Число(КолвоТовараХ)+";";
            
            Стр1 = СтрЗаменить(Стр0,Подстрока1,Подстрока2);
            
            ФайлВыгрузки.ДобавитьСтроку(Стр);
            ФайлВыгрузки.ДобавитьСтроку(Стр1);
            Ном=Ном+1;
         Иначе
            ФайлВыгрузки.ДобавитьСтроку(Стр);
         КонецЕсли;
         Продолжить;
      КонецЕсли;
      ФайлВыгрузки.ДобавитьСтроку(Стр);
   КонецЦикла;
   ФайлВыгрузки.ДобавитьСтроку("");        // заполнить информацию об окончании файла
   
   ФайлВыгрузки.Записать("C:\007\report_true.txt");
   Сообщить("    - Изменение ЗАВЕРШЕНО !!!");
   
КонецПроцедуры
Бродяга_Джон
 
Постов: 1263
Зарегистрирован: 12 окт 2010, 22:07
Откуда: Россия, Омск


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

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

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


cron

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

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

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