![]() |
![]() |
![]() |
|
Три ячейки оплаты чека, как взаимосвязать? | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
04.12.20
✎
11:15
|
Есть три ячейки оплаты - нал, на карту, эквайринг.
Нужно, чтобы все три суммы давали в итоге сумму товара, набитого в чек. Как описать взаимосвязь трех колонок. Я попробовал, но в итоге забил, это не так то просто. Тем более в ТЗ не входило. Но все же хочу сделать хорошо, есть идеи? |
|||
1
Галахад
гуру
04.12.20
✎
11:24
|
Ну можно последовательно.
Сначала вид оплаты1. Потом вид оплаты2. Потом вид оплаты3. Например: Товар1 - 100 Товар2 - 30 Товар3 - 50 Итого - 180 ВидОплаты1 = 120 ВидОплаты2 = 60 Товар1 - ВидОплаты1 - 100 Товар2 - ВидОплаты1 - 20, ВидОплаты2 - 10 Товар3 - ВидОплтаы2 - 50 |
|||
2
Гений 1С
гуру
04.12.20
✎
11:27
|
Ну в 90% случае работает нал.
Но вот как быть в случае сложных оплат. например 1000 рублей она по умолчанию идет в нал я ввожу в эквайринг 100, из нала вычитаеся 100, становится нал 900. но смешанная оплата - еще и на карту 200, я ввожу на карту 200, она по идее из нала должна еще 200 вычесть. гм... а если я потом корректирую сумму, ну ошибся, например, хочу эквайринг не 100, а 150, нал станет уже не 700, а 650... Как то это все запутанно. |
|||
3
Вафель
04.12.20
✎
11:29
|
(2) а как должно быть?
|
|||
4
Галахад
гуру
04.12.20
✎
11:29
|
(2) В чем проблема?
Нал = Итого - Безнал.Итог("Сумма"); |
|||
5
Гений 1С
гуру
04.12.20
✎
11:40
|
(4) третий вид оплаты есть.
Я вот счас написал замыкание сумм, так не могу ввести нужную разбивку Например: 6500, 0, 0 Ввожу 300: 6200, 0, 300 ОК, ввожу 200 в середину: 6200, 200, 100. А хотелось: 6000, 200, 300. Похоже, пользователь не сможет скорректировать нужные ему суммы, хотя если начнет с нала: Есть: 6200, 200, 100 Ввожу нал 6000: 6000, 400, 100 Далее ввожу эквайринг: 300 Получаю: 6000, 200, 300. Гм, можно приноровиться и к такому порядку, ок. Код такой: &НаКлиенте Процедура КонтрольСумм(СтартовоеПоле) //Возврат; //Не контролируем СуммаВидовОплат = СуммаНаКарту + СуммаНал + СуммаЭквайринг; СуммаПродажи = СуммаПродажи(); Если ЭтаФорма[СтартовоеПоле] > СуммаПродажи Тогда ЭтаФорма[СтартовоеПоле] = СуммаПродажи; КонецЕсли; Баланс = ЭтаФорма[СтартовоеПоле]; КонтрольСумм2("СуммаНал", СтартовоеПоле, Баланс); КонтрольСумм2("СуммаНаКарту", СтартовоеПоле, Баланс); КонтрольСумм2("СуммаЭквайринг", СтартовоеПоле, Баланс); КонецПроцедуры &НаКлиенте Процедура КонтрольСумм2(Поле, СтартовоеПоле, Баланс) Если Поле = СтартовоеПоле Тогда Возврат; КонецЕсли; СуммаПродажи = СуммаПродажи(); СуммаВидовОплат = СуммаНаКарту + СуммаНал + СуммаЭквайринг; Если ЭтаФорма[Поле] + Баланс > СуммаПродажи Тогда ЭтаФорма[Поле] = Макс(СуммаПродажи - Баланс, 0); ИначеЕсли СуммаВидовОплат < СуммаПродажи Тогда ЭтаФорма[Поле] = ЭтаФорма[Поле] + (СуммаПродажи - СуммаВидовОплат); КонецЕсли; Баланс = Баланс + ЭтаФорма[Поле]; КонецПроцедуры |
|||
6
Галахад
гуру
04.12.20
✎
11:43
|
(5) Все не читал. Вопрос, зачем вообще вводить Нал? Нал вычисляется в (4). Ну или примерно так.
|
|||
7
Гений 1С
гуру
04.12.20
✎
11:59
|
(6) ну если хотят свое распределение оплат.
|
|||
8
Гений 1С
гуру
06.12.20
✎
17:41
|
Сукко, не прокатило...
Клиент таки заметил, хотя изначально в ТЗ не входило. Договорились что будем соблюдать порядок. Сперва нал, потом на карту, потом эквайринг. А то получается мини-квест, чтобы добиться нужной суммы. |
|||
9
Гений 1С
гуру
06.12.20
✎
17:41
|
Счас напишу код, выложу
|
|||
10
Garykom
гуру
06.12.20
✎
17:45
|
(0) В типовой рознице несколько видов оплат, включая кредит и зачет аванса
|
|||
11
Гений 1С
гуру
06.12.20
✎
18:01
|
(10) у меня нетленка.
|
|||
12
ДедМорроз
06.12.20
✎
18:53
|
В новых кассах пять типов оплаты
Наличная - это реальные деньги Безналичная - это оплата через банк,по карте или иным способом,когда идёт перечисление по счетам. Постоплата - это когда мы отгрузили в кредит,и нам потом обещают заплатить Зачёт предоплаты - это когда была оплата ранее,и в данном случае мы ее засчитываем. Иная форма оплаты - это когда расчет идёт в процессе и для данного расчета нам важно указать только сумму оплаты. Реально,используется когда делается возврат и снова продажа,чтобы не гонять сумму туда обратно. Наличные,кроме всего прочего,подразумевают наличие сдачи. |
|||
13
Гений 1С
гуру
06.12.20
✎
19:21
|
Короче сделал так, более логично для пользователя работает:
Процедура КонтрольСумм(СтартовоеПоле) СуммаПродажиСоСкидкой = СуммаПродажиСоСкидкой(); СуммаВидовОплат = СуммаНал + СуммаНаКарту + СуммаЭквайринг; Если СтартовоеПоле = "СуммаНал" Тогда Если СуммаНал > СуммаПродажиСоСкидкой Тогда ЭтаФорма.СуммаНал = СуммаПродажиСоСкидкой; КонецЕсли; СуммаНаКарту = СуммаПродажиСоСкидкой - СуммаНал; СуммаЭквайринг = 0; КонецЕсли; Если СтартовоеПоле = "СуммаНаКарту" Тогда Если СуммаНаКарту > СуммаПродажиСоСкидкой Тогда СуммаНаКарту = СуммаПродажиСоСкидкой; КонецЕсли; Если СуммаНал + СуммаНаКарту > СуммаПродажиСоСкидкой Тогда СуммаНаКарту = СуммаПродажиСоСкидкой - СуммаНал; КонецЕсли; СуммаЭквайринг = СуммаПродажиСоСкидкой - СуммаНал - СуммаНаКарту; КонецЕсли; Если СтартовоеПоле = "СуммаЭквайринг" Тогда Если СуммаЭквайринг > СуммаПродажиСоСкидкой Тогда СуммаЭквайринг = СуммаПродажиСоСкидкой; КонецЕсли; Если СуммаНал + СуммаЭквайринг > СуммаПродажиСоСкидкой Тогда СуммаЭквайринг = СуммаПродажиСоСкидкой - СуммаНал; КонецЕсли; СуммаНаКарту = СуммаПродажиСоСкидкой - СуммаНал - СуммаЭквайринг; КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |