|
УТ - расчет чека от суммы, а в ККМ - от цены | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
07.06.17
✎
15:26
|
В чеке
4 штуки по 290,00 рублей предоставлена скидка 70,18% итого 345,91 в ККМ рисует цену 86.48 умножает на 4 сумма = 345.92 в итоге итог по чеку на 2 копейки больше, чем получено наличных это нормально? |
|||
1
h-sp
07.06.17
✎
16:09
|
(0) по закону теперь скидка на каждую строку идет. поэтому поменяйте в ут, чтобы было правильно.
|
|||
2
yzimin
07.06.17
✎
16:34
|
(0) согласно "Требования к разработке драйверов подключаемого оборудования." и описанию структуры CheckPackage
https://its.1c.ru/db/metod8dev#content:4829:hdoc:chapter270 твоя строка в XML должна выглядеть так <FiscalString Name="Макароны" Quantity="4" Price="290" Amount="345,91" Tax="none"/> Price - Цена единицы товара без учета скидок/наценок Amount - Конечная сумма по позиции чека (с учетом всех скидок/наценок) Если строка в XML выглядит по-другому, отлаживай. Какой релиз УТ? |
|||
3
RomaH
naïve
08.06.17
✎
07:17
|
(2) тогда такой вопрос - если строка выглядит не так
чем это черевато? |
|||
4
Злопчинский
08.06.17
✎
07:28
|
(3) если вместо 220 включил в 380 - чем чревато? Отлупом...
|
|||
5
RomaH
naïve
08.06.17
✎
07:37
|
(4) как это "отлуп" проявляется? - где смотреть?
|
|||
6
RomaH
naïve
08.06.17
✎
07:38
|
ибо - клиент деньги заплатил, фискальник чек напечатал
что делать... что делать? |
|||
7
yzimin
08.06.17
✎
07:46
|
(6) отлаживай.
Если строка выглядит по-другому, отлаживай УТ. Какой релиз? Если совпадает, пиши в поддержку этого оборудования. Вероятно не соблюдается стандарт. Какой модели ККТ? |
|||
8
RomaH
naïve
08.06.17
✎
08:06
|
(7) да поотлаживаю ... УТ 11.3.3.145
мне интересно - а какие последствия? - где смотреть что у нас все плохо - где флаг кторый показывает, что с кассой что-то не то творится |
|||
9
RomaH
naïve
09.06.17
✎
11:02
|
в чеке скидки напечатаны
4х86.48=345.92 скидка 814.09 возврат (делал чек для примера) 4х86.48=345.92 скидка 0.01 на ОФД чеки эти есть проблема в том, что итог по чеку в ККМ на две копейки больше, чем посчитала УТ - денег взяли с пациента на две копейки меньше соответственно у кассира недостача переписывать алгоритм расчета итога? или? т.е. сейчас в УТ берем сумму, делим на количество - получаем цену - все а надо получить цену, округлить её до копеек, и пересчитать сумму еще раз - цена * количество ? |
|||
10
RomaH
naïve
09.06.17
✎
11:08
|
||||
11
Храбрый
09.06.17
✎
11:12
|
(0) Я тожк сталкивался с такой проблемой и решил ее так.
Все строки в чеке передаю обычным текстом. И в конце посылаю количество = 1 и общую сумму документа. В результате ККМ ничего не вычисляет. Данные все идут. |
|||
12
Храбрый
09.06.17
✎
11:14
|
(11) Примерно так
ПечатьСтроки("Хлеб 2 х 50, Скидка 10%", Сумма = 90); ПечатьСтроки("Схара 1 х 300 = 300"); ПечатьЧека(1,390); |
|||
13
Масянька
09.06.17
✎
11:15
|
(11) О, как вывернулся... Молодец!
|
|||
14
RomaH
naïve
20.06.17
✎
08:41
|
так всё-таки
(2) - я не думаю, что УТ выдает что-то не так, поэтому - пока не смотрел что она там в ККМ шлет но вот то, что УТ считает от суммы, а ККМ пересчитывает от цены - это вроде как факт никто не сталкивался с таким ? у всех всегда чек по суммам сходится? |
|||
15
Звездец
20.06.17
✎
08:46
|
(12) и что у тебя в ОФД после этого?
|
|||
16
RomaH
naïve
20.06.17
✎
08:50
|
9561.80
|
|||
17
RomaH
naïve
20.06.17
✎
08:52
|
самое интересное - нет отказа по тому, что сумма оплаты меньше суммы чека
|
|||
18
RomaH
naïve
20.06.17
✎
09:02
|
(17) - а, нет, ошибаюсь
если кассир берет деньги копейка в копейку - то вываливается отказ от ККМ как раз по этой причине |
|||
19
yzimin
20.06.17
✎
09:11
|
(18) тоже на днях описывал свою проблему
ККТ РИТЕЙЛ-01Ф,УТ 11.3,45h, Сумма всех типов оплаты меньше итога чека возникает ошибка, когда сумма со скидкой нацело не делит на количество. У вас похоже что-то подобное, только ККТ у вас сама принимает решение))) |
|||
20
RomaH
naïve
20.06.17
✎
09:27
|
(19) вопрос - как правильно исправить
переписывать УТ - сделать расчет от цены? |
|||
21
yzimin
20.06.17
✎
09:30
|
(20) Мы пока в ККТ считаем скидку о суммы, а не от цены.
|
|||
22
yzimin
20.06.17
✎
09:31
|
(21) + для розницы там обход этой ситуации в ответе 9
|
|||
23
assasu
20.06.17
✎
09:42
|
(0) эта эбота от фирмы 1С. во всех конфах так сикдка считается и не правильность этого алгоритма проявилась с появлением фз 54
|
|||
24
assasu
20.06.17
✎
09:43
|
(12)а в этой последней строке как номенклатура называется? а то как бы это обязательный теперь реквизит
|
|||
25
assasu
20.06.17
✎
09:46
|
(14) да не сходится конечно.. изворачиваемся.
|
|||
26
RomaH
naïve
20.06.17
✎
10:22
|
как то так:
Процедура НазначитьРучнуюСкидку ... СтрокаТЧ.Сумма = СуммаБезСкидки - ?(СуммаСкидки > СуммаБезСкидки, СуммаБезСкидки, СуммаСкидки); //Пересчитаем "цену" лЦенаСоСкидкой = Окр(СтрокаТЧ.Сумма / СтрокаТЧ.Количество,2); //Окр(СтрокаТЧ.Сумма / СтрокаТЧ.Количество,2) * СтрокаТЧ.Количество лСуммаСоСкидкой = лЦенаСоСкидкой * СтрокаТЧ.Количество; лРазницаВычислений = СтрокаТЧ.Сумма - лСуммаСоСкидкой; СтрокаТЧ.СуммаРучнойСкидки = СтрокаТЧ.СуммаРучнойСкидки + лРазницаВычислений; СуммаСкидки = СуммаСкидки + лРазницаВычислений; СтрокаТЧ.Сумма = СуммаБезСкидки - ?(СуммаСкидки > СуммаБезСкидки, СуммаБезСкидки, СуммаСкидки); ? |
|||
27
RomaH
naïve
20.06.17
✎
10:25
|
вопрос еще - как отловить программно такие чеки
ибо на пользователей надеяться ... "все врут" по сути вроде как есть электронный чек который должен/может хранится в базе для последующей отправки покупателю |
|||
28
h-sp
20.06.17
✎
10:30
|
(27) по идее офд должен отправлять чеки покупателю. Если вы сами будете отправлять, то это будет туфта.
|
|||
29
yzimin
20.06.17
✎
10:42
|
(26) а я не за пересчёт скидки от цены, а за деление товара на 2 строки: 1) 50.02 руб, 2) 50.03
|
|||
30
RomaH
naïve
20.06.17
✎
10:46
|
(29) так сложнее
|
|||
31
assasu
20.06.17
✎
10:48
|
(29) это не сработает если весовой товар.
|
|||
32
yzimin
20.06.17
✎
11:05
|
(30) это как посмотреть. Я бы на первое время вставил костыль в момент формирования XML CheckPackage, чем разбираться в механизме автоматических, ручных скидок и их пересечении.
|
|||
33
Naf2017
20.06.17
✎
11:08
|
||||
34
yzimin
20.06.17
✎
11:15
|
(31) хотите сказать CheckPackage невозможно скорректировать под весовой товар?
|
|||
35
assasu
20.06.17
✎
11:20
|
(34)нет , все можно.
когда товар штучный сразу понятно как разбивать и алгоритм простой. а если ты продаешь окорочок весом 134 грамма. как разбить на две строки ? |
|||
36
RomaH
naïve
20.06.17
✎
11:24
|
(32) и куда там костыль вставлять?
Если ТекущаяПозиция.Свойство("ФискальнаяСтрока") Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString"); ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование)); ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество)); ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена)); ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(ТекущаяПозиция.Сумма)); ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ТекущаяПозиция.НомерСекции)); Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда ЗаписьXML.ЗаписатьАтрибут("Tax" , XMLСтрока(ТекущаяПозиция.СтавкаНДС)); Иначе ЗаписьXML.ЗаписатьАтрибут("Tax" , "none"); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма; |
|||
37
yzimin
20.06.17
✎
11:30
|
(36) я бы как-то заранее преобразовал массив
ОбщиеПараметры.ПозицииЧека. Процедура ПолучитьXMLПакетДляФискализацияЧека оставил без изменения. (35) судя моей логики, надо разбивать на 133 и 1 грамм с разными ценами - похоже больше на бред))) |
|||
38
assasu
20.06.17
✎
11:35
|
(37) в (22) вы писали про ответ 9. это мой ответ.
так вот в нашей столовой есть эти самые окорочка и весят они как правило меньше кг. но ошибки не было еще ни разу с ними связанными. есть подозрение что тут высокая математика кроется, для дробных количеств меньше 1 как раз не бывает этой ошибки в 1 копейку. |
|||
39
RomaH
naïve
20.06.17
✎
11:37
|
ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество));
ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена)); ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(ТекущаяПозиция.Сумма)); в цене вроде как передается цена без скидки сейчас т.е. фискальник сам высчитывает "значения реквизита «цена за единицу предмета расчета с учетом скидок и наценок» (тег 1079)," потом округляет и считает "Значение реквизита «стоимость предмета расчета с учетом скидок и наценок» (тег 1043)" т.е. что передать фискальнику что бы было правильно? |
|||
40
assasu
20.06.17
✎
11:39
|
(39) передать надо так что бы сумма деленная на количество давала число с (ровно) 2-я знаками.
|
|||
41
RomaH
naïve
20.06.17
✎
11:43
|
(40) тогда у меня в базе будет другая сумма в чеке ... или делить на две строки?
мне проще переписать алгоритм расчета итоговой суммы в строке путем корректировки ручной скидки |
|||
42
yzimin
20.06.17
✎
11:46
|
(39) посмотри тут
https://its.1c.ru/db/metod8dev#content:4829:hdoc:chapter270 цена передаётся без скидки, всё верно |
|||
43
assasu
20.06.17
✎
11:46
|
(41) если сумма другая будет это и значит что нужно переписать алгоритм расчета суммы итого.
ну или разбивать на строки . зависит от конкретной ситуации в торговой точке. |
|||
44
yzimin
20.06.17
✎
11:50
|
(41) Учитывай ещё автоматические скидки. Сегодня их нет, завтра появились.
Реализуя правку на уровне пакета CheckPackage получится универсальное решение, которое подойдёт для всех конфигураций этой версии БПО. |
|||
45
RomaH
naïve
20.06.17
✎
11:54
|
(44) правка на уровне пакета - получается только путем разбиения на две строки
|
|||
46
yzimin
20.06.17
✎
12:02
|
(45) само собой, только для штучных товаров.
|
|||
47
RomaH
naïve
20.06.17
✎
12:12
|
ну да
и изменение суммы в драйвер фискальника внесли, чтобы не выдавать ошибку по условию расхождения суммы от произведения на больше чем 1 копейку вместо отказа, фискальник просто исправляет "Значение реквизита «стоимость предмета расчета с учетом скидок и наценок» " как бы правильное решение - нет остановки кассы просто чек не сходится с внешним калькулирующим устройством и да - наверное проверка и корректировка путем разбиения на две строки именно внутри этого условия будет более правильной Если ТекущаяПозиция.Свойство("ФискальнаяСтрока") Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString"); ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование)); ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество)); |
|||
48
h-sp
20.06.17
✎
12:12
|
(40) а разве не наоборот, чтобы количество * цена и округлить до 2х знаков равнялось бы сумме?
|
|||
49
RomaH
naïve
20.06.17
✎
12:13
|
но у нас есть и дробное количество - будет ли оно попадать в ошибки? - как его корректировать?
|
|||
50
yzimin
20.06.17
✎
12:18
|
(49) вот поэтому мы откатили на версию драйвера, при которой скидка считается от суммы, а не от цены. Да, с некоторого времени так будет делать нельзя, но ждём реализации на уровне 1С или ПО ККТ
|
|||
51
RomaH
naïve
20.06.17
✎
12:57
|
типа так?
лЦенаСоСкидкой = Окр(ТекущаяПозиция.Сумма / ТекущаяПозиция.Количество,2); лРазница = ТекущаяПозиция.Сумма - лЦенаСоСкидкой * ТекущаяПозиция.Количество; Если лРазница <> 0 Тогда Если ТекущаяПозиция.Количество > 1 Тогда лСуммаСоСкидкой = лЦенаСоСкидкой * (ТекущаяПозиция.Количество - 1); ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString"); ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование)); ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество - 1)); ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена)); ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(лСуммаСоСкидкой)); ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ТекущаяПозиция.НомерСекции)); Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда ЗаписьXML.ЗаписатьАтрибут("Tax" , XMLСтрока(ТекущаяПозиция.СтавкаНДС)); Иначе ЗаписьXML.ЗаписатьАтрибут("Tax" , "none"); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); СуммаЧека = СуммаЧека + лСуммаСоСкидкой; ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString"); ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование)); ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(1)); ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена)); ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(ТекущаяПозиция.Сумма - лСуммаСоСкидкой)); ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ТекущаяПозиция.НомерСекции)); Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда ЗаписьXML.ЗаписатьАтрибут("Tax" , XMLСтрока(ТекущаяПозиция.СтавкаНДС)); Иначе ЗаписьXML.ЗаписатьАтрибут("Tax" , "none"); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма - лСуммаСоСкидкой; Иначе //Пока непонятно ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString"); ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование)); ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество)); ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена)); ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(ТекущаяПозиция.Сумма)); ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ТекущаяПозиция.НомерСекции)); Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда ЗаписьXML.ЗаписатьАтрибут("Tax" , XMLСтрока(ТекущаяПозиция.СтавкаНДС)); Иначе ЗаписьXML.ЗаписатьАтрибут("Tax" , "none"); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма; КонецЕсли; Иначе ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString"); ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование)); ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество)); ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена)); ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(ТекущаяПозиция.Сумма)); ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ТекущаяПозиция.НомерСекции)); Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда ЗаписьXML.ЗаписатьАтрибут("Tax" , XMLСтрока(ТекущаяПозиция.СтавкаНДС)); Иначе ЗаписьXML.ЗаписатьАтрибут("Tax" , "none"); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма; КонецЕсли; |
|||
52
yzimin
20.06.17
✎
13:05
|
(51) не уж-то вам хочется ломать функцию ПолучитьXMLПакетДляФискализацияЧека? Ну создайте отдельный модуль, передавайте параметром всю структуру ОбщиеПараметры и там уже обрабатывайте массив структур ОбщиеПараметры.ПозицииЧека
по реализации ничего не скажу, тестируйте, отлаживайте) |
|||
53
yzimin
01.07.17
✎
02:07
|
Пофиксили, описал тут ККТ РИТЕЙЛ-01Ф,УТ 11.3,45h, Сумма всех типов оплаты меньше итога чека
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |