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