TSDZakazScladVasilek/CommonModules/ОборудованиеПлатежныеСистемыКлиент/Ext/Module.bsl

289 lines
26 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#Область ПрограммныйИнтерфейс
// АПК: 142-выкл обратная совместимость
// Выполнить операции на эквайринговом терминале.
// Если эквайринговый терминал не поддерживает печать квитанций на терминале, для печати подключается печатающее устройство.
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
// ПараметрыОперации - Структура - параметры выполнения операции.
// ДополнительныеПараметры - Структура - дополнительные команды.
// ПечатающееУстройство - Неопределено - Печатающее устройство.
//
Процедура НачатьВыполнениеОперацииНаЭквайринговомТерминале(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства = Неопределено, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено, ПечатающееУстройство = Неопределено) Экспорт
ДанныеДляДополнения = МенеджерОборудованияКлиент.ПечатьСлипЧекаЭквайринговойОперации();
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
Для Каждого Элемент Из ДополнительныеПараметры Цикл
ДанныеДляДополнения.Вставить(Элемент.Ключ, Элемент.Значение);
КонецЦикла;
КонецЕсли;
КонтекстОперации = КонтекстОперацииНаЭквайринговомТерминале();
КонтекстОперации.ОповещениеПриЗавершении = ОповещениеПриЗавершении;
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
КонтекстОперации.ИдентификаторУстройства = ИдентификаторУстройства;
КонтекстОперации.ПечатающееУстройство = ПечатающееУстройство;
КонтекстОперации.ПараметрыОперации = ПараметрыОперации;
КонтекстОперации.ДополнительныеПараметры = ДополнительныеПараметры;
КонтекстОперации.ТипТранзакции = ПараметрыОперации.ТипТранзакции;
КонтекстОперации.ПодготовитьДанные = Истина;
КонтекстОперации.ОбработатьДанные = Истина;
КонтекстОперации.ОбработатьДанныеПриОшибке = Истина;
КонтекстОперации.ИспользоватьПечатающееУстройство = ПараметрыОперации.ИспользоватьПечатающееУстройство;
КонтекстОперации.ДополнительныеПараметры = ДанныеДляДополнения;
ПараметрыОперации.Вставить("ПолныйСлипЧек", КонтекстОперации.ДополнительныеПараметры.ПолныйСлипЧек);
ВыполнениеОперацииНаЭквайринговомТерминале(ИдентификаторУстройства, КонтекстОперации);
КонецПроцедуры
// Выполнить сверку итогов на эквайринговом терминале.
// Если эквайринговый терминал не поддерживает печать квитанций на терминале, для печати подключается печатающее устройство.
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
// ПараметрыОперации - Структура - параметры выполнения операции.
// ДополнительныеПараметры - Структура - дополнительные команды.
// ПечатающееУстройство - Неопределено - Печатающее устройство.
//
Процедура НачатьВыполнениеСверкиИтоговНаЭквайринговомТерминале(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства = Неопределено, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено, ПечатающееУстройство = Неопределено) Экспорт
КонтекстОперации = КонтекстОперацииНаЭквайринговомТерминале();
КонтекстОперации.ОповещениеПриЗавершении = ОповещениеПриЗавершении;
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
КонтекстОперации.ИдентификаторУстройства = ИдентификаторУстройства;
КонтекстОперации.ПечатающееУстройство = ПечатающееУстройство;
КонтекстОперации.ПараметрыОперации = ПараметрыОперации;
КонтекстОперации.ДополнительныеПараметры = ДополнительныеПараметры;
КонтекстОперации.ТипТранзакции = "Settlement";
КонтекстОперации.ПодготовитьДанные = Ложь;
КонтекстОперации.ОбработатьДанные = Истина;
КонтекстОперации.ИспользоватьПечатающееУстройство = Истина;
ВыполнениеОперацииНаЭквайринговомТерминале(ИдентификаторУстройства, КонтекстОперации);
КонецПроцедуры
// Начать получение операции по картам.
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
// ПараметрыОперации - Структура - параметры выполнения операции.
// ДополнительныеПараметры - Структура - дополнительные команды.
//
Процедура НачатьПолучениеОперацииПоКартам(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства = Неопределено, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
КонтекстОперации = КонтекстОперацииНаЭквайринговомТерминале();
КонтекстОперации.ОповещениеПриЗавершении = ОповещениеПриЗавершении;
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
КонтекстОперации.ИдентификаторУстройства = ИдентификаторУстройства;
КонтекстОперации.ПараметрыОперации = ПараметрыОперации;
КонтекстОперации.ДополнительныеПараметры = ДополнительныеПараметры;
КонтекстОперации.ТипТранзакции = "GetOperationByCards";
КонтекстОперации.ПодготовитьДанные = Ложь;
КонтекстОперации.ОбработатьДанные = Истина;
ВыполнениеОперацииНаЭквайринговомТерминале(ИдентификаторУстройства, КонтекстОперации);
КонецПроцедуры
// АПК: 142-вкл
// Начать получение параметров карты.
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
// ПараметрыОперации - Структура - параметры выполнения операции.
// ДополнительныеПараметры - Структура - дополнительные команды.
//
Процедура НачатьПолучениеПараметровКарты(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства = Неопределено, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
КонтекстОперации = КонтекстОперацииНаЭквайринговомТерминале();
КонтекстОперации.ОповещениеПриЗавершении = ОповещениеПриЗавершении;
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
КонтекстОперации.ИдентификаторУстройства = ИдентификаторУстройства;
КонтекстОперации.ПечатающееУстройство = Неопределено;
КонтекстОперации.ПараметрыОперации = ПараметрыОперации;
КонтекстОперации.ДополнительныеПараметры = ДополнительныеПараметры;
КонтекстОперации.ТипТранзакции = "GetCardParametrs";
КонтекстОперации.ПодготовитьДанные = Ложь;
КонтекстОперации.ОбработатьДанные = Ложь;
КонтекстОперации.ИспользоватьПечатающееУстройство = Ложь;
ВыполнениеОперацииНаЭквайринговомТерминале(ИдентификаторУстройства, КонтекстОперации);
КонецПроцедуры
// Начать выполнение аварийной отмена операции.
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
// ПараметрыОперации - Структура - параметры выполнения операции.
// ДополнительныеПараметры - Структура - дополнительные команды.
//
Процедура НачатьВыполнениеАварийнойОтменыОперации(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства = Неопределено, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
КонтекстОперации = КонтекстОперацииНаЭквайринговомТерминале();
КонтекстОперации.ОповещениеПриЗавершении = ОповещениеПриЗавершении;
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
КонтекстОперации.ИдентификаторУстройства = ИдентификаторУстройства;
КонтекстОперации.ПечатающееУстройство = Неопределено;
КонтекстОперации.ПараметрыОперации = ПараметрыОперации;
КонтекстОперации.ДополнительныеПараметры = ДополнительныеПараметры;
КонтекстОперации.ТипТранзакции = "EmergencyVoid";
КонтекстОперации.ПодготовитьДанные = Ложь;
КонтекстОперации.ОбработатьДанные = Ложь;
КонтекстОперации.ОбработатьДанныеПриОшибке = Ложь;
КонтекстОперации.ИспользоватьПечатающееУстройство = Ложь;
ВыполнениеОперацииНаЭквайринговомТерминале(ИдентификаторУстройства, КонтекстОперации);
КонецПроцедуры
// Возвращает строку последнего слип-чека
//
// Возвращаемое значение:
// Строка
Функция ПоследнийСлипЧек() Экспорт
ПодключаемоеОборудование = МенеджерОборудованияКлиент.ПодключаемоеОборудование();
Возврат ПодключаемоеОборудование.ПоследнийСлипЧек;
КонецФункции
// Возвращает возможные типы пакетной операции
//
// Возвращаемое значение:
// Соответствие
Функция ТипыПакетнойОперацииВОчередиЧеков() Экспорт
Соответствие = Новый Соответствие();
Соответствие.Вставить("НеПакетнаяОперация", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.НеПакетнаяОперация"));
Соответствие.Вставить("ФискализацияЧекаСОплатойКартой", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.ФискализацияЧекаСОплатойКартой"));
Соответствие.Вставить("ПродажаСВыдачейНаличных", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.ПродажаСВыдачейНаличных"));
Соответствие.Вставить("ПокупкаСЗачислением", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.ПокупкаСЗачислением"));
Возврат Соответствие;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Устанавливает строку последнего слип-чека
//
// Параметры:
// ТекстСлипЧека - Строка
Процедура УстановитьПоследнийСлипЧек(ТекстСлипЧека) Экспорт
ПодключаемоеОборудование = МенеджерОборудованияКлиент.ПодключаемоеОборудование();
ПодключаемоеОборудование.ПоследнийСлипЧек = ТекстСлипЧека;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция КонтекстОперацииНаЭквайринговомТерминале()
КонтекстОперации = Новый Структура();
КонтекстОперации.Вставить("ОповещениеПриЗавершении", Неопределено);
КонтекстОперации.Вставить("ИдентификаторКлиента" , Неопределено);
КонтекстОперации.Вставить("ИдентификаторУстройства", Неопределено);
КонтекстОперации.Вставить("ПечатающееУстройство" , Неопределено);
КонтекстОперации.Вставить("ПараметрыОперации" , Неопределено);
КонтекстОперации.Вставить("ДополнительныеПараметры", Неопределено);
КонтекстОперации.Вставить("ТипТранзакции" , Неопределено);
КонтекстОперации.Вставить("ПодготовитьДанные" , Ложь);
КонтекстОперации.Вставить("ОбработатьДанные" , Ложь);
КонтекстОперации.Вставить("ОбработатьДанныеПриОшибке", Ложь);
КонтекстОперации.Вставить("ИспользоватьПечатающееУстройство", Ложь);
КонтекстОперации.Вставить("Результат" , Истина);
Возврат КонтекстОперации;
КонецФункции
Процедура ВыполнениеОперацииНаЭквайринговомТерминале(ИдентификаторУстройства, КонтекстОперации)
Если ИдентификаторУстройства = Неопределено Или ПустаяСтрока(ИдентификаторУстройства) Тогда
ПоддерживаемыеТипы = МенеджерОборудованияКлиентСервер.ПараметрыТипыОборудования();
ПоддерживаемыеТипы.ЭквайринговыйТерминал = Истина;
Оповещение = Новый ОписаниеОповещения("ВыполнениеОперацииНаЭквайринговомТерминалеЗавершение", ЭтотОбъект, КонтекстОперации);
МенеджерОборудованияКлиент.ВыбратьУстройство(Оповещение, ПоддерживаемыеТипы,
НСтр("ru='Выберите эквайринговый терминал'"),
НСтр("ru='Эквайринговый терминал не подключен.'"),
НСтр("ru='Эквайринговый терминал не выбран.'"));
Иначе
ВыполнениеОперацииНаЭквайринговомТерминалеЗавершение(КонтекстОперации, КонтекстОперации);
КонецЕсли
КонецПроцедуры
Процедура ВыполнениеОперацииНаЭквайринговомТерминалеЗавершение(РезультатВыбора, КонтекстОперации) Экспорт
Если РезультатВыбора.Результат Тогда
КонтекстОперации.ИдентификаторУстройства = РезультатВыбора.ИдентификаторУстройства;
ПараметрыОперации = КонтекстОперации.ПараметрыОперации;
Если КонтекстОперации.ТипТранзакции = "ReturnElectronicCertificate" И ПустаяСтрока(ПараметрыОперации.СсылочныйНомер) Тогда
Оповещение = Новый ОписаниеОповещения("ВыполнениеОперацииНаЭквайринговомТерминалеПослеВводаRRN", ЭтотОбъект, КонтекстОперации);
Подсказка = НСтр("ru='Введите RRN операции cо слип-чека покупки ЭС'");
ПоказатьВводСтроки(Оповещение, "", Подсказка, 12);
Иначе
ВыполнениеОперацииНаЭквайринговомТерминалеКоманда(КонтекстОперации);
КонецЕсли;
Иначе
ВыполнитьОбработкуОповещения(КонтекстОперации.ОповещениеПриЗавершении, РезультатВыбора);
КонецЕсли;
КонецПроцедуры
Процедура ВыполнениеОперацииНаЭквайринговомТерминалеПослеВводаRRN(СтрокаRRN, КонтекстОперации) Экспорт
КонтекстОперации.ПараметрыОперации.СсылочныйНомер = СтрокаRRN;
ВыполнениеОперацииНаЭквайринговомТерминалеКоманда(КонтекстОперации);
КонецПроцедуры
Процедура ВыполнениеОперацииНаЭквайринговомТерминалеКоманда(КонтекстОперации) Экспорт
Если КонтекстОперации.ПараметрыОперации <> Неопределено Тогда
Если КонтекстОперации.ПараметрыОперации.Свойство("РеквизитыКартыQR") Тогда
РеквизитыКартыQR = КонтекстОперации.ПараметрыОперации.РеквизитыКартыQR;
Если Не ПустаяСтрока(РеквизитыКартыQR) Тогда
Если Не ОборудованиеПлатежныеСистемыКлиентСервер.ЭтоРеквизитыКартыQR(РеквизитыКартыQR) Тогда
ТекстСообщения = НСтр("ru='Операция по указанному QR-коду невозможна.'");
РезультатВыполнения = МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании(Ложь, ТекстСообщения);
ВыполнитьОбработкуОповещения(КонтекстОперации.ОповещениеПриЗавершении, РезультатВыполнения);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды(КонтекстОперации.ТипТранзакции, "ОборудованиеПлатежныеСистемы",
КонтекстОперации.ДополнительныеПараметры, КонтекстОперации.ПодготовитьДанные, КонтекстОперации.ОбработатьДанные,
КонтекстОперации.ИспользоватьПечатающееУстройство, КонтекстОперации.ОбработатьДанныеПриОшибке);
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(КонтекстОперации.ОповещениеПриЗавершении, КонтекстОперации.ИдентификаторКлиента,
КонтекстОперации.ИдентификаторУстройства, КонтекстОперации.ПараметрыОперации, ПараметрыВыполнениеКоманды, КонтекстОперации.ПечатающееУстройство);
КонецПроцедуры
#КонецОбласти