#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
РозничныеПродажи.ПодписатьГорячиеКлавишиНаКнопках(ЭтотОбъект);
Дисплеи.ЗагрузитьЗначения(МенеджерОборудованияВызовСервера.ОборудованиеПоПараметрам("ДисплейПокупателя"));
АвтоматическиСоздаватьПартнеров = Константы.АвтоматическиСоздаватьПартнеровПриОтправкеЭлектронногоЧекаПокупателю.Получить();
АвтоматическиОбновлятьКонтактыПартнеров = Константы.ОбновлятьКонтактнуюИнформациюПартнеровПриОтправкеЭлектронныхЧеков.Получить();
ОтправкаЭлектронныхЧековПослеПробитияЧека = Константы.ОтправкаЭлектронныхЧековПослеПробитияЧека.Получить();
КоличествоСимволовПослеЗапятой = 2;
РазделительЦелойИДробнойЧасти = Сред(Формат(1.1, "ЧЦ=2; ЧДЦ=1"),2,1);
ПолученоНаличнымиФорматПредставленияЦелыхЧисел = "ЧН=0; ЧГ=3,0";
ИнформацияОбОплате = Параметры.ИнформацияОбОплате;
Документ = ИнформацияОбОплате.Документ;
Если ТипЗнч(Документ) = Тип("ДокументСсылка.ЧекККМВозврат")
ИЛИ ТипЗнч(Документ) = Тип("ДокументСсылка.ВозвратПодарочныхСертификатов") Тогда
Заголовок = НСтр("ru = 'Возврат оплаты наличными'");
Элементы.КОплате.Заголовок = НСтр("ru = 'К возврату'");
Элементы.СуммаСдачи.Заголовок = НСтр("ru = 'Получить сдачу'");
Элементы.СуммаДоплаты.Заголовок = НСтр("ru = 'Осталось вернуть'");
КонецЕсли;
КОплате = ИнформацияОбОплате.СуммаКОплате;
ПолученоНаличными = Формат(ИнформацияОбОплате.Наличные, ПолученоНаличнымиФорматПредставленияЦелыхЧисел);
Элементы.ГруппаОтправкаЭлектронногоЧека.Видимость = Истина;
ЦветФонаВыделенияПоля = ЦветаСтиля.ЦветФонаВыделения;
Партнер = Параметры.Партнер;
РозничныеПродажи.ЗаполнитьПараметрыОтправкиЭлектронногоЧекаПоПартнеру(ЭтотОбъект);
РозничныеПродажиКлиентСервер.УстановитьАктивныйЭлемент(ЭтотОбъект, Элементы.ПолеПолученоНаличными);
Телефон = РозничныеПродажиКлиентСервер.ОтформатироватьНомерТелефона(Телефон10Знаков);
РассчитатьИтоги(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("ВывестиИнформациюНаДисплейПокупателя", 1, Истина);
ПодключитьОбработчикОжидания("УстановитьАктивностьЭлементов", 1, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если РезультатОплаты = Неопределено Тогда
РезультатОплаты = "Отмена";
КонецЕсли;
Закрыть(РезультатОплаты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ТелефонПриИзменении(Элемент)
Телефон10Знаков = РозничныеПродажиКлиентСервер.НомерТелефонаВФормате10Знаков(Телефон);
КонецПроцедуры
&НаКлиенте
Процедура EmailПриИзменении(Элемент)
РозничныеПродажиКлиентСервер.УстановитьВариантОтправкиЭлектронногоЧека(
ЭтотОбъект,
ПредопределенноеЗначение("Перечисление.ВариантыОтправкиЭлектронногоЧекаПокупателю.ОтправитьEmail"));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Команда0(Команда)
ДобавитьЦифру("0")
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
ДобавитьЦифру("1")
КонецПроцедуры
&НаКлиенте
Процедура Команда2(Команда)
ДобавитьЦифру("2")
КонецПроцедуры
&НаКлиенте
Процедура Команда3(Команда)
ДобавитьЦифру("3")
КонецПроцедуры
&НаКлиенте
Процедура Команда4(Команда)
ДобавитьЦифру("4")
КонецПроцедуры
&НаКлиенте
Процедура Команда5(Команда)
ДобавитьЦифру("5")
КонецПроцедуры
&НаКлиенте
Процедура Команда6(Команда)
ДобавитьЦифру("6")
КонецПроцедуры
&НаКлиенте
Процедура Команда7(Команда)
ДобавитьЦифру("7")
КонецПроцедуры
&НаКлиенте
Процедура Команда8(Команда)
ДобавитьЦифру("8")
КонецПроцедуры
&НаКлиенте
Процедура Команда9(Команда)
ДобавитьЦифру("9")
КонецПроцедуры
&НаКлиенте
Процедура Команда0ПраваяКлавиатура(Команда)
ДобавитьЦифру("0")
КонецПроцедуры
&НаКлиенте
Процедура Команда1ПраваяКлавиатура(Команда)
ДобавитьЦифру("1")
КонецПроцедуры
&НаКлиенте
Процедура Команда2ПраваяКлавиатура(Команда)
ДобавитьЦифру("2")
КонецПроцедуры
&НаКлиенте
Процедура Команда3ПраваяКлавиатура(Команда)
ДобавитьЦифру("3")
КонецПроцедуры
&НаКлиенте
Процедура Команда4ПраваяКлавиатура(Команда)
ДобавитьЦифру("4")
КонецПроцедуры
&НаКлиенте
Процедура Команда5ПраваяКлавиатура(Команда)
ДобавитьЦифру("5")
КонецПроцедуры
&НаКлиенте
Процедура Команда6ПраваяКлавиатура(Команда)
ДобавитьЦифру("6")
КонецПроцедуры
&НаКлиенте
Процедура Команда7ПраваяКлавиатура(Команда)
ДобавитьЦифру("7")
КонецПроцедуры
&НаКлиенте
Процедура Команда8ПраваяКлавиатура(Команда)
ДобавитьЦифру("8")
КонецПроцедуры
&НаКлиенте
Процедура Команда9ПраваяКлавиатура(Команда)
ДобавитьЦифру("9")
КонецПроцедуры
&НаКлиенте
Процедура КомандаТочка(Команда)
Если ПолученоНаличными = "" Тогда
ПолученоНаличными = "0";
КонецЕсли;
Если Не ПолученоНаличнымиЭтоДробноеЧисло Тогда
ПолученоНаличнымиЭтоДробноеЧисло = Истина;
ПолученоНаличными = ПолученоНаличными + РазделительЦелойИДробнойЧасти;
КонецЕсли;
РассчитатьИтоги(ЭтотОбъект);
ПодключитьОбработчикОжидания("ВывестиИнформациюНаДисплейПокупателя", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура КомандаСтереть(Команда)
Если АктивноеПоле = Элементы.ПолеПолученоНаличными.Имя Тогда
ПолученоНаличными = "0";
ПолученоНаличнымиЭтоДробноеЧисло = Ложь;
РассчитатьИтоги(ЭтотОбъект);
ПодключитьОбработчикОжидания("ВывестиИнформациюНаДисплейПокупателя", 0.1, Истина);
ИначеЕсли АктивноеПоле = Элементы.Телефон.Имя Тогда
Телефон10Знаков = "";
Телефон = РозничныеПродажиКлиентСервер.ОтформатироватьНомерТелефона(Телефон10Знаков);
ИначеЕсли АктивноеПоле = Элементы.Email.Имя Тогда
Email = "";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КомандаПробитьЧек(Команда)
СуммаОплатыЧисло = РозничныеПродажиКлиентСервер.ПривестиСтрокуКЧислу(ПолученоНаличными);
ДанныеЭлектронногоЧека = РозничныеПродажиКлиентСервер.ДанныеЭлектронногоЧека(ЭтотОбъект);
НеобходимостьОбработкиДанных = РозничныеПродажиКлиентСервер.ПроверитьНеобходимостьОбработкиДанныхЭлектронногоЧека(ЭтотОбъект);
Если НеобходимостьОбработкиДанных.ТребуетсяОбновитьКонтактнуюИнформацию
Или НеобходимостьОбработкиДанных.ТребуетсяСоздатьПартнера
Или НеобходимостьОбработкиДанных.ТребуетсяОбновитьВариантОтправкиЭлектронногоЧекаПартнера Тогда
ДанныеЭлектронногоЧека = ОбработатьДанныеЭлектронногоЧека();
КонецЕсли;
Если ДанныеЭлектронногоЧека = Неопределено Тогда
Возврат;
КонецЕсли;
РозничныеПродажиКлиент.ЗаблокироватьФорму(ЭтотОбъект);
РезультатОплаты = РозничныеПродажиКлиентСервер.СтруктураРезультатаОплаты();
РезультатОплаты.ПолученоНаличными = СуммаОплатыЧисло;
РезультатОплаты.ДанныеЭлектронногоЧека = ДанныеЭлектронногоЧека;
Закрыть(РезультатОплаты);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура КомандаОтправитьSMS(Команда)
РозничныеПродажиКлиентСервер.УстановитьАктивныйЭлемент(ЭтотОбъект, Элементы.Телефон);
РозничныеПродажиКлиентСервер.УстановитьВариантОтправкиЭлектронногоЧека(
ЭтотОбъект,
ПредопределенноеЗначение("Перечисление.ВариантыОтправкиЭлектронногоЧекаПокупателю.ОтправитьSMS"));
КонецПроцедуры
&НаКлиенте
Процедура КомандаОтправитьEmail(Команда)
РозничныеПродажиКлиентСервер.УстановитьАктивныйЭлемент(ЭтотОбъект, Элементы.Email);
РозничныеПродажиКлиентСервер.УстановитьВариантОтправкиЭлектронногоЧека(
ЭтотОбъект,
ПредопределенноеЗначение("Перечисление.ВариантыОтправкиЭлектронногоЧекаПокупателю.ОтправитьEmail"));
КонецПроцедуры
&НаКлиенте
Процедура КомандаОтправкаНеТребуется(Команда)
РозничныеПродажиКлиентСервер.УстановитьВариантОтправкиЭлектронногоЧека(
ЭтотОбъект,
ПредопределенноеЗначение("Перечисление.ВариантыОтправкиЭлектронногоЧекаПокупателю.НеОтправлять"));
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоги(Форма)
Форма.СуммаОплаты = РозничныеПродажиКлиентСервер.ПривестиСтрокуКЧислу(Форма.ПолученоНаличными);
Если Форма.СуммаОплаты >= Форма.КОплате Тогда
Форма.СуммаСдачи = Форма.СуммаОплаты - Форма.КОплате;
Форма.СуммаДоплаты = 0;
Форма.Элементы.ГруппаИтого.ТекущаяСтраница = Форма.Элементы.ГруппаСдача;
Форма.Элементы.КомандаПробитьЧек.Доступность = Истина;
Форма.ТекущийЭлемент = Форма.Элементы.КомандаПробитьЧек;
Иначе
Форма.СуммаСдачи = 0;
Форма.СуммаДоплаты = Форма.КОплате - Форма.СуммаОплаты;
Форма.Элементы.ГруппаИтого.ТекущаяСтраница = Форма.Элементы.ГруппаДоплата;
Форма.Элементы.КомандаПробитьЧек.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьЦифру(ВведеннаяЦифраСтрокой)
Если АктивноеПоле = Элементы.ПолеПолученоНаличными.Имя Тогда
Запятая = Сред(ПолученоНаличными, СтрДлина(ПолученоНаличными) - КоличествоСимволовПослеЗапятой, 1);
ЗапятаяВКонцеСтроки = Прав(ПолученоНаличными,1) = РазделительЦелойИДробнойЧасти;
ПолученоНаличнымиЦелаяЧастьЧислом = Цел(РозничныеПродажиКлиентСервер.ПривестиСтрокуКЧислу(ПолученоНаличными));
ПолученоНаличнымиЦелаяЧасть = Формат(ПолученоНаличнымиЦелаяЧастьЧислом, "ЧН=0; ЧГ=0");
ПолученоНаличнымиДробнаяЧасть = Прав(ПолученоНаличными, СтрДлина(ПолученоНаличными) - СтрДлина(Формат(ПолученоНаличнымиЦелаяЧастьЧислом, ПолученоНаличнымиФорматПредставленияЦелыхЧисел)));
Если ПолученоНаличнымиЭтоДробноеЧисло Тогда
Если Не Запятая = РазделительЦелойИДробнойЧасти Тогда
ПолученоНаличнымиДробнаяЧасть = ПолученоНаличнымиДробнаяЧасть + ВведеннаяЦифраСтрокой;
Иначе
Возврат;
КонецЕсли;
Иначе
ПолученоНаличнымиЦелаяЧасть = ПолученоНаличнымиЦелаяЧасть + ВведеннаяЦифраСтрокой;
КонецЕсли;
ПолученоНаличными = Формат(Число(ПолученоНаличнымиЦелаяЧасть), ПолученоНаличнымиФорматПредставленияЦелыхЧисел) + ПолученоНаличнымиДробнаяЧасть;
РассчитатьИтоги(ЭтотОбъект);
ПодключитьОбработчикОжидания("ВывестиИнформациюНаДисплейПокупателя", 0.1, Истина);
ИначеЕсли АктивноеПоле = Элементы.Телефон.Имя Тогда
Телефон10Знаков = Телефон10Знаков + ВведеннаяЦифраСтрокой;
Телефон = РозничныеПродажиКлиентСервер.ОтформатироватьНомерТелефона(Телефон10Знаков);
Если СтрДлина(Телефон10Знаков) = 10 Тогда
ТекущийЭлемент = Элементы.КомандаПробитьЧек;
КонецЕсли;
РозничныеПродажиКлиентСервер.УстановитьВариантОтправкиЭлектронногоЧека(
ЭтотОбъект,
ПредопределенноеЗначение("Перечисление.ВариантыОтправкиЭлектронногоЧекаПокупателю.ОтправитьSMS"));
ИначеЕсли АктивноеПоле = Элементы.Email.Имя Тогда
Email = СокрЛП(Email) + ВведеннаяЦифраСтрокой;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиИнформациюНаДисплейПокупателя()
Если Не ВводДоступен() Тогда
Возврат;
КонецЕсли;
Дисплей = Неопределено;
Если ТипЗнч(Документ) = Тип("ДокументСсылка.ЧекККМ")
ИЛИ ТипЗнч(Документ) = Тип("ДокументСсылка.РеализацияПодарочныхСертификатов") Тогда
ТекстКОплате = НСтр("ru = 'К оплате'") + ":";
ТекстСдача = НСтр("ru = 'Сдача'") + ":";
ТекстДоплата = НСтр("ru = 'Доплатить'") + ":";
Иначе
ТекстКОплате = НСтр("ru = 'К возврату'") + ":";
ТекстСдача = НСтр("ru = 'Сдача'") + ":";
ТекстДоплата = НСтр("ru = 'Вернуть'") + ":";
КонецЕсли;
ДПТекст1 = РозничныеПродажиКлиент.ПодготовитьСтрокуКВыводуНаДисплейПокупателя(ТекстКОплате, КОплате);
Если СуммаДоплаты > 0 Тогда
ДПТекст2 = РозничныеПродажиКлиент.ПодготовитьСтрокуКВыводуНаДисплейПокупателя(ТекстДоплата, СуммаДоплаты);
ИначеЕсли СуммаСдачи > 0 Тогда
ДПТекст2 = РозничныеПродажиКлиент.ПодготовитьСтрокуКВыводуНаДисплейПокупателя(ТекстСдача, СуммаСдачи);
Иначе
ДПТекст2 = "";
КонецЕсли;
РозничныеПродажиКлиент.ВывестиТекстНаДисплеиПокупателя(
ВладелецФормы,
Дисплеи,
ДПТекст1 + Символы.ПС + ДПТекст2);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьАктивностьЭлементов()
РозничныеПродажиКлиентСервер.УстановитьАктивностьЭлементов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ОбработатьДанныеЭлектронногоЧека()
Возврат РозничныеПродажи.ОбработатьДанныеЭлектронногоЧека(ЭтотОбъект);
КонецФункции
#КонецОбласти