|
v7: АТОЛ30Ф - пересчитывает суммы ? | ☑ | ||
---|---|---|---|---|
0
zenon46
04.07.18
✎
14:58
|
Доброго дня! Столкнулся с такой ситуацией, в документе реализация делается процедура, "распределение суммы по суммам" - обычно это делает когда надо убрать копейки и выровнять до круглой суммы, далее делается ПКО, а вот уже из ККМ чек выходит не с теми суммами что в документе, ХОТЯ список формируется четко по документу и передается в ККМ, для примера, напишу на примере двух позиций. Можно это как то выключить ?
Документ: Товар1 50*20.03=1001.64 Товар2 20*20.03=400.66 ККМ Товар1 50*20.03=100.50 Товар2 20*20.03=400.60 |
|||
1
sanyaka
04.07.18
✎
15:01
|
Видимо улетает цена и количество. А нужно отправлять сумму и цену вычислять как сумма делённая на количество и значение округлить.
|
|||
2
zenon46
04.07.18
✎
15:07
|
(1) в ККМ уходит, Цена / Количество / Сумма
|
|||
3
spectre1978
04.07.18
✎
15:15
|
расчеты где-то неправильные, проверяйте. "Гуляет" слишком много, 60 и 66 это дофига, обычным округлением не объяснить
|
|||
4
piter3
04.07.18
✎
15:16
|
а уверен,что уходит два знака,а не больше?
|
|||
5
zenon46
04.07.18
✎
15:19
|
(3) еще раз уточняю, делается "распределение суммы по суммам".
Если в документе 1001.64/50=20.0328 Если в ККМ 1001.50/50=20.03 В том и вопрос зачем ККМ там что-то считает и можно ли это выключить ? |
|||
6
Масянька
04.07.18
✎
15:19
|
(0) Если на калькуляторе (фигня такая) сделать: 20.03 умножить на 20, получится 400.6 (ровно, больше ничего).
Откуда такие цифры в эске? |
|||
7
sanyaka
04.07.18
✎
15:20
|
(2) если в первом случае сумму поделить на количество и округлить в большую сторону то цена будет 50.01 эта цена должна уходить на кассу.
|
|||
8
Масянька
04.07.18
✎
15:20
|
(5) Во... Я понял...
Открой обработку и посмотри, где пересчитывает. |
|||
9
zenon46
04.07.18
✎
15:20
|
(4) уверен что два, в отладчике смотрел.
|
|||
10
zenon46
04.07.18
✎
15:21
|
(7) 50 - количество, 20.3 - цена
|
|||
11
Масянька
04.07.18
✎
15:21
|
(7) А вот тут поддержу. Со скидками долбалась - цена должна быть уже со скидкой.
|
|||
12
piter3
04.07.18
✎
15:21
|
(8) не в этом дело.лезть надо в настройки касс
|
|||
13
zenon46
04.07.18
✎
15:23
|
(8) В обработке тоже ничего не пересчитывается.
Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл Объект.Name = СписокТоваров.ТовНаим; Объект.Price = СписокТоваров.Цена; Объект.Quantity = СписокТоваров.Количество; Если СписокТоваров.СтавкаНДС = "none" Тогда Объект.TaxTypeNumber = 4; ИначеЕсли СписокТоваров.СтавкаНДС = "18" Тогда Объект.TaxTypeNumber = 3; ИначеЕсли СписокТоваров.СтавкаНДС = "10" Тогда Объект.TaxTypeNumber = 2; ИначеЕсли СписокТоваров.СтавкаНДС = "0" Тогда Объект.TaxTypeNumber = 1; КонецЕсли; Если ПризнВозврата = 0 Тогда Если Объект.Registration() <> 0 тогда ОписаниеРезультата = Объект.ResultDescription; Возврат Рез; КонецЕсли; Иначе Если Объект.Return() <> 0 тогда ОписаниеРезультата = Объект.ResultDescription; Возврат Рез; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
14
Масянька
04.07.18
✎
15:24
|
(13) А Суммы где?
|
|||
15
zenon46
04.07.18
✎
15:24
|
Хотя вот я заметил что суммы по строке там нет, только наименование / цена / количество - получается потому она сумму и сама считает ?
|
|||
16
piter3
04.07.18
✎
15:24
|
(15)так передай
|
|||
17
Масянька
04.07.18
✎
15:25
|
(15) Это точно всё?
|
|||
18
Масянька
04.07.18
✎
15:25
|
У меня есть такое (штрих правда):
Если (Получено > 0) И (Получено > СуммаЧека) Тогда Объект.Password = Пароль; Объект.Summ1 = Окр(Получено, 2, 1); иначе Объект.Password = Пароль; Объект.Summ1 = итогсумма; КонецЕсли; |
|||
19
zenon46
04.07.18
✎
15:26
|
(18) такого нет
|
|||
20
zenon46
04.07.18
✎
15:28
|
(16) Как правильно нахывается реквизит суммы по строке ? Summ - ?
|
|||
21
Масянька
04.07.18
✎
15:29
|
(19) Если (Получено > 0) И (Получено > СуммаЧека) Тогда
Объект.Summ = Окр(Получено, 2, 1); Объект.ОплатаСоСдачей(); Иначе Объект.ЗакрытьЧек(); КонецЕсли; |
|||
22
piter3
04.07.18
✎
15:30
|
(20) вроде он
|
|||
23
zenon46
04.07.18
✎
15:32
|
(17) как у вас суммы по строке передаются ? А то мне кажется что Summ = СуммаЧека
|
|||
24
zenon46
04.07.18
✎
15:33
|
Вот нашел вот так - Amount
|
|||
25
Kigo_Kigo
04.07.18
✎
15:35
|
(18) Не путай человека, это сумма полученных денег
машинка сумму считает сама из цена*количество, суммы по строке у нее нет, так что цена = сумма/количество |
|||
26
Kigo_Kigo
04.07.18
✎
15:36
|
точнее так
цена = суммаСУчетомвсехскидоНадбавок/количество, и передавайте без округления |
|||
27
zenon46
04.07.18
✎
15:37
|
(25) как это нет ?
FiscalString Name Да string Наименование товара Регистрирует фискальную строку с переданными реквизитами. При печати длинных фискальных строк необходимо делать перенос на следующую строку. Quantity Да double Количество товара Price Да double Цена единицы товара без учета скидок/наценок Amount Да double Конечная сумма по позиции чека (с учетом всех скидок/наценок) Department Нет long Отдел, по которому ведется продажа Tax Да string Ставка НДС. Список значений: "18" - НДС 18 "10" - НДС 10 "0" - НДС 0 "none" - БЕЗ НДС |
|||
28
Масянька
04.07.18
✎
15:37
|
(24) У меня в руководстве написано:
Drv.Summ1Enabled := True;// Указываем, что // сами рассчитываем цену |
|||
29
Масянька
04.07.18
✎
15:39
|
(27) Не, не... Он прав - это сумма чека.
Чтобы работало, как сумма по позиции - нужно до StringForPrinting втыкать. |
|||
30
zenon46
04.07.18
✎
15:41
|
Вот что получилось. Может кто, поправит если не так :
СписокТоваров.ВыбратьСтроки(); Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл Объект.Name = СписокТоваров.ТовНаим; Объект.Price = СписокТоваров.Цена; Объект.Quantity = СписокТоваров.Количество; Объект.Amount = СписокТоваров.Сумма; Если СписокТоваров.СтавкаНДС = "none" Тогда Объект.TaxTypeNumber = 4; ИначеЕсли СписокТоваров.СтавкаНДС = "18" Тогда Объект.TaxTypeNumber = 3; ИначеЕсли СписокТоваров.СтавкаНДС = "10" Тогда Объект.TaxTypeNumber = 2; ИначеЕсли СписокТоваров.СтавкаНДС = "0" Тогда Объект.TaxTypeNumber = 1; КонецЕсли; Если ПризнВозврата = 0 Тогда Если Объект.Registration() <> 0 тогда ОписаниеРезультата = Объект.ResultDescription; Возврат Рез; КонецЕсли; Иначе Если Объект.Return() <> 0 тогда ОписаниеРезультата = Объект.ResultDescription; Возврат Рез; КонецЕсли; КонецЕсли; КонецЦикла; Объект.Summ = СуммаЧека; |
|||
31
Kigo_Kigo
04.07.18
✎
15:42
|
(27) Это работало до ФЗ-53, также как и скидка процентом, скидка суммой, сейчас это не работает, нате вам ссылочку на атол и примеры
http://partner.atol.ru/files/163/1039/h_cc8f768595f75e88985cba5882fa3e5f |
|||
32
Kigo_Kigo
04.07.18
✎
15:43
|
(30) это работать не будет
|
|||
33
zenon46
04.07.18
✎
15:48
|
(31) не понял, получается касса все равно будет сама рассчитывать сумму по строке ?
|
|||
34
spectre1978
04.07.18
✎
15:50
|
(33) да. Там сумму вообще можно не задавать, если работаешь методами драйвера. Цену, количество. Сумму оно считает. Я вообще делал так - перед выводом последней строки получал накопленную по чеку сумму и последней строкой чека корректировал ее чтобы она сошлась с документом.
|
|||
35
spectre1978
04.07.18
✎
15:51
|
(31) скидка в отдельных случаях работает
|
|||
36
zenon46
04.07.18
✎
15:52
|
(34) что-то жесть какая-то и что никак нельзя выключить расчет суммы по строке ?
|
|||
37
spectre1978
04.07.18
✎
15:53
|
(36) я не нашел, каким образом.
|
|||
38
spectre1978
04.07.18
✎
15:56
|
в ККМ есть регистр, где хранится уже накопленная по чеку сумма. Поэтому в принципе можно понимать, чего она там насчитала, и корректироваться. Если бы не это - тогда бы был пипец.
|
|||
39
Kigo_Kigo
04.07.18
✎
15:58
|
(35) Вот именно, что в отдельных, а что бы не гадать, сработает или нет, ее надо игнорировать вообще, у меня именно на атоле 30ф магаз встал, там скидку применили, и машинка не выплелвывала чек, и другие чеки не выплевывала, потому как повисла на открытой продаже, короче нуегонафиг эти скидки
|
|||
40
zenon46
04.07.18
✎
16:00
|
(39) скидки да, ими не занимаемся. А вот почему сумму по строке передать нельзя, непонятно. В любом случае подкину обработку сейчас в магаз посмотрим что будет.
|
|||
41
Kigo_Kigo
04.07.18
✎
16:00
|
(38) Какая команда ее получить, эту сумму?
|
|||
42
spectre1978
04.07.18
✎
16:01
|
(39) насколько я знаю, скидка на всю сумму отрабатывает в случае, если требуется отбросить копейки в пользу покупателя. В остальных не отрабатывает.
|
|||
43
Kigo_Kigo
04.07.18
✎
16:05
|
И кстати ТС как это у тебя такие суммы то получаются?
Документ: Товар1 50*20.03=1001.64 ? Товар2 20*20.03=400.66 ? ККМ Товар1 50*20.03=100.50 Товар2 20*20.03=400.60 тогда цену передавай в формате 000.000, то есть до тысячной,тогда и аппарат будет бить как надо |
|||
44
zenon46
04.07.18
✎
16:06
|
Да хрен там, выдало
"Поле агрегатного объекта не обнаружено (Amount)" |
|||
45
spectre1978
04.07.18
✎
16:09
|
(41) Для Атол 11Ф работает вот так
Функция ПолучитьТекущуюСуммуЧека (Объект) Объект.RegisterNumber = 20; Объект.GetRegister (); Возврат Объект.Summ; КонецФункции |
|||
46
Kigo_Kigo
04.07.18
✎
16:10
|
(44) Да что же вы "Фома" не верующий какой то? я вам это уже в 32 сказал
|
|||
47
zenon46
04.07.18
✎
16:13
|
(46) вот так болт, нахрена это было делать.
|
|||
48
Масянька
04.07.18
✎
16:15
|
(47) Жираф большой! Ему видней! (С)
|
|||
49
spectre1978
04.07.18
✎
16:16
|
(43) тогда цену передавай в формате 000.000, то есть до тысячной,тогда и аппарат будет бить как надо -- а вы пробовали? Может, конечно, от прошивки зависит, но у меня дробных копеек не понимало.
|
|||
50
zenon46
04.07.18
✎
16:19
|
а если цена 20.03 - что туда передавать ???
|
|||
51
zenon46
04.07.18
✎
16:22
|
Если передать туда 20.032, как машинка посчитает тогда сумму по строке ?
|
|||
52
Kigo_Kigo
04.07.18
✎
16:22
|
короче, надо сделать так
расчитать суу с учетом всех скидок, бонусов, сертификатов далее Если количество > 1 тогда ЦенаОкругленная = Окр(цену/количество,2); СуммаОкругленая = ЦенаОкругленная * количество; Если Сумма = СуммаОкругленая тогда СписокТоваров.Цена = ЦенаОкругленная; Иначе СписокТоваров.Цена = Окр(СуммаОкругленая/количество); Списоктоваров.НоваяСтрока() СписокТоваров.ТовНаим = Номенклатура.Наименование; ЦенаНовая = Окр(СуммаОкругленая/количество); СписокТоваров.Цена = СуммаОкругленная - (ЦенаНовая*(Количество - 1)) |
|||
53
spectre1978
04.07.18
✎
16:25
|
(51) в моем случае не фискализировало строку, выдавало ошибку. Какую уже не вспомню.
|
|||
54
Kigo_Kigo
04.07.18
✎
16:25
|
то есть если не удается разделить сумму и количество так, чтобы обратно получилось тоже число, мы продаем товар количество - 1, и количество = 1 с ценой которая откорректирует копейки
|
|||
55
spectre1978
04.07.18
✎
16:26
|
(54) да, так я тоже делал
|
|||
56
Kigo_Kigo
04.07.18
✎
16:35
|
ЦенаОкругленная = Окр(цену/количество,2);
читать как ЦенаОкругленная = Окр(Сумма/количество,2); |
|||
57
zenon46
04.07.18
✎
16:38
|
Ужас короче устроили, одно не понятно элементарные вещи зачем отобрали?
|
|||
58
spectre1978
04.07.18
✎
16:39
|
вопрос не к нам, а к законодателям и разработчикам ККМ. Мы можем только придрочиться к тому, что дают...
|
|||
59
Масянька
04.07.18
✎
16:42
|
(56) ИМХО, самое правильное решение. От суммы.
(57) См. (48). |
|||
60
Kigo_Kigo
05.07.18
✎
13:13
|
Пример кода
driver.Mode = 1; driver.SetMode(); driver.NewDocument(); driver.AttrNumber = 1021; driver.AttrValue = "Старший кассир Иванов И.И."; driver.WriteAttribute(); driver.OpenSession(); |
|||
61
Kigo_Kigo
05.07.18
✎
13:13
|
Тьфу, не сюда
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |