Чек ККМ / Оплата платежными картами / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	ТаблицаОплатаПлатежнымиКартами = ПолучитьИзВременногоХранилища(Параметры.АдресВХранилище);
	ОплатаПлатежнымиКартами.Загрузить(ТаблицаОплатаПлатежнымиКартами);
	
	СуммаНеотмененныхОплатПлатежнымиКартами = 0;
	ОтборОплатПлатежнымиКартами = Новый Структура;
	ОтборОплатПлатежнымиКартами.Вставить("ВидОплаты", Перечисления.ТипыПлатежнойСистемыККТ.ПлатежнаяКарта);
	ОтборОплатПлатежнымиКартами.Вставить("ОплатаОтменена", Ложь);
	СтрокиНеотмененныхОплат = ОплатаПлатежнымиКартами.НайтиСтроки(ОтборОплатПлатежнымиКартами);
	КоличествоНеотмененныхОплат = СтрокиНеотмененныхОплат.Количество();
	Для Каждого СтрокаОплаты Из СтрокиНеотмененныхОплат Цикл
		СуммаНеотмененныхОплатПлатежнымиКартами = СуммаНеотмененныхОплатПлатежнымиКартами + СтрокаОплаты.Сумма;
	КонецЦикла;
	
	Если ОплатаПлатежнымиКартами.НайтиСтроки(Новый Структура("ОплатаОтменена", Ложь)).Количество() = 0 Тогда
		Элементы.ОтменитьОплату.Доступность = Ложь;
		Элементы.ФормаОтменитьОплатыПоследовательно.Доступность = Ложь;
	КонецЕсли;
	
	ПоказатьКнопкуОтменитьОплату = Неопределено;
	Если Параметры.Свойство("ПоказатьКнопкуОтменитьОплату", ПоказатьКнопкуОтменитьОплату) Тогда
		Элементы.ОтменитьОплату.Видимость = ПоказатьКнопкуОтменитьОплату;
	КонецЕсли;
	
	СуммаДокумента = 0;
	Если Параметры.Свойство("СуммаДокумента") Тогда
		СуммаДокумента = Параметры.СуммаДокумента;
	КонецЕсли;
		
	ПоказатьКнопкуОтменитьОплатыПоследовательно = Неопределено;
	Если Параметры.Свойство("ПоказатьКнопкуОтменитьОплатыПоследовательно", ПоказатьКнопкуОтменитьОплатыПоследовательно) Тогда
		Элементы.ФормаОтменитьОплатыПоследовательно.Видимость = ПоказатьКнопкуОтменитьОплатыПоследовательно;
	КонецЕсли;

	Если СуммаДокумента < СуммаНеотмененныхОплатПлатежнымиКартами 
		Или КоличествоНеотмененныхОплат <= 1 Тогда
		Элементы.ФормаОтменитьОплатыПоследовательно.Видимость = Ложь;
	КонецЕсли;
		
	ПоказатьКолонкуОплатаОтменена = Неопределено;
	Если Параметры.Свойство("ПоказатьКолонкуОплатаОтменена", ПоказатьКолонкуОплатаОтменена) Тогда
		Элементы.ОплатаПлатежнымиКартамиОплатаОтменена.Видимость = ПоказатьКолонкуОплатаОтменена;
	КонецЕсли;
	
	Элементы.ОплатаПлатежнымиКартами.ОтборСтрок = Неопределено;
	Если Параметры.Свойство("ПоказыватьТолькоОплатыПлатежнымиКартами") И Параметры.ПоказыватьТолькоОплатыПлатежнымиКартами = Истина Тогда
		ОтборСтрокПоВидуОплаты = Новый Структура;
		ОтборСтрокПоВидуОплаты.Вставить("ВидОплаты", Перечисления.ТипыПлатежнойСистемыККТ.ПлатежнаяКарта);
		Элементы.ОплатаПлатежнымиКартами.ОтборСтрок = Новый ФиксированнаяСтруктура(ОтборСтрокПоВидуОплаты);
	КонецЕсли;
	
	Если Параметры.Свойство("ЭтоВозврат", ЭтоВозврат) И ЭтоВозврат = Истина Тогда
		Заголовок = НСтр("ru = 'Оплаты платежными картами по чеку продажи'");

		ЭтоПолныйВозвратВСменуПродажи = (Параметры.Свойство("ЭтоПолныйВозвратВСменуПродажи") И Параметры.ЭтоПолныйВозвратВСменуПродажи = Истина);
		УстановитьЗаголовкиКнопок(ЭтоПолныйВозвратВСменуПродажи);
		
	Иначе
		ЭтоВозврат = Ложь;
	КонецЕсли;
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ОтменитьОплату(Команда)
	
	ТекущиеДанные = Элементы.ОплатаПлатежнымиКартами.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		
		ВозвращаемоеЗначение = Новый Структура;
		ВозвращаемоеЗначение.Вставить("Действие", "ОтменитьОплату");
		ВозвращаемоеЗначение.Вставить("ВыбраннаяСтрока", Элементы.ОплатаПлатежнымиКартами.ТекущиеДанные);
		
		Закрыть(ВозвращаемоеЗначение);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтменитьОплатыПоследовательно(Команда)
	
	ВозвращаемоеЗначение = Новый Структура;
	ВозвращаемоеЗначение.Вставить("Действие", "ОтменитьОплатыПоследовательно");
	ВыбранныеСтроки = ОплатаПлатежнымиКартами.НайтиСтроки(Новый Структура("ОплатаОтменена", Ложь));
	ВозвращаемоеЗначение.Вставить("ВыбранныеСтроки", ВыбранныеСтроки);
	
	Закрыть(ВозвращаемоеЗначение);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьФорму(Команда)
	
	Закрыть(Неопределено);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыОплатаПлатежнымиКартами

&НаКлиенте
Процедура ОплатаПлатежнымиКартамиПриАктивизацииСтроки(Элемент)
	
	Если ЭтоВозврат Тогда
		ТекущаяСтрока = Элементы.ОплатаПлатежнымиКартами.ТекущиеДанные;
		Если Не ТекущаяСтрока = Неопределено Тогда
			МожноОтменитьОплату = (ТекущаяСтрока.ВидОплаты = ПредопределенноеЗначение("Перечисление.ТипыПлатежнойСистемыККТ.ПлатежнаяКарта") 
									И ТекущаяСтрока.ОплатаОтменена = Ложь 
									И СуммаДокумента >= ТекущаяСтрока.Сумма);
			Элементы.ОтменитьОплату.Доступность = МожноОтменитьОплату;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура УстановитьЗаголовкиКнопок(ЭтоПолныйВозвратВСменуПродажи)
	
	ТекстПодсказкиОтменитьОплату = НСтр("ru = 'Вернуть выделенную оплату на платежную карту'");
	ТекстЗаголовкаОтменитьОплату = НСтр("ru = 'Вернуть оплату'");
	ТекстПодсказкиОтменитьОплатуПоследовательно = НСтр("ru = 'Вернуть все оплаты на платежные карты последовательно'");
	ТекстЗаголовкаОтменитьОплатуПоследовательно = НСтр("ru = 'Вернуть оплаты последовательно'");
	
	Если Не ЭтоВозврат Или ЭтоПолныйВозвратВСменуПродажи Тогда
		ТекстПодсказкиОтменитьОплату = НСтр("ru = 'Отменить выделенную оплату платежной картой'");
		ТекстЗаголовкаОтменитьОплату = НСтр("ru = 'Отменить оплату'");
		ТекстПодсказкиОтменитьОплатуПоследовательно = НСтр("ru = 'Отменить все оплаты платежной картой последовательно'");
		ТекстЗаголовкаОтменитьОплатуПоследовательно = НСтр("ru = 'Отменить оплаты последовательно'");
	КонецЕсли;
	
	Команды.ОтменитьОплату.Заголовок = ТекстЗаголовкаОтменитьОплату;
	Команды.ОтменитьОплату.Подсказка = ТекстПодсказкиОтменитьОплату;
	Команды.ОтменитьОплатыПоследовательно.Заголовок = ТекстЗаголовкаОтменитьОплатуПоследовательно;
	Команды.ОтменитьОплатыПоследовательно.Подсказка = ТекстПодсказкиОтменитьОплатуПоследовательно;
	
КонецПроцедуры

#КонецОбласти

Связанные материалы