> Двіженія.ДвіженіяСертіфікатов.Очістіть ();
Якщо Сертіфікати.Колічество () gt; 0 Тоді
//Обналічиваніє сертифіката. Пишемо зі статусом ВМагазіне
Для кожного стрСерт з Сертифікати цикл
Рух=Двіженія.ДвіженіяСертіфікатов.Добавіть ();
Двіженіе.Період=Дата;
Двіженіе.Сертіфікат=стрСерт.Сертіфікат;
Двіженіе.Статус=Перечісленія.СтатусДвіженіяСертіфікатов.ВМагазіне;
Двіженіе.Колічество=1;
Двіженіе.Стоімость=стрСерт.Сумма;
фБылаОплатаНал=(Оплата.Найти(Справочники.ВидыОплатЧекаККМ.Наличные,laquo;ВидОплатыraquo;)lt;gt;Неопределено);
Двіженіе.ТіпОплати =? (фБилаОплатаНал=істина, Перечисления.ТипыОплатЧекаККМ.Наличные,Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта);
КонецЦікла;
Інакше//Перевіряємо, чи є серед товарів Сертифікати, якщо є, то пишемо їх зі статусом наруку
Для кожного стор з Товари цикл
Карта=Справочники.ИнформационныеКарты.НайтиПоРеквизиту(laquo;КодКартыraquo;, стр.Штріхкод);
Якщо карта lt; gt; Справочнікі.ІнформаціонниеКарти.ПустаяСсилка () тоді
Рух=Двіженія.ДвіженіяСертіфікатов.Добавіть ();
Двіженіе.Період=Дата;
Двіженіе.Сертіфікат=Карта;
Двіженіе.Статус=Перечісленія.СтатусДвіженіяСертіфікатов.НаРуках;
Двіженіе.Колічество=стр.Колічество;
Двіженіе.Стоімость=стр.Цена * стр.Колічество;
фБылаОплатаНал=(Оплата.Найти(Справочники.ВидыОплатЧекаККМ.Наличные,laquo;ВидОплатыraquo;)lt;gt;Неопределено);
Двіженіе.ТіпОплати =? (фБилаОплатаНал=істина, Перечисления.ТипыОплатЧекаККМ.Наличные,Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта);
КонецЕсли;
КонецЦікла;
КонецЕсли;
КонецПроцедури//ДвіженіяПоРегістрам ()
//Процедура викликається при виборі пункту ДействіеОк командній панелі
//форми. Процедура відпрацьовує вибір друкарської форми.
//
Процедура ДействіяФормиДействіеОк (Кнопка)
Здача=Оплата.Ітог ( Сума ) - Сертификаты.Итог(laquo;Суммаraquo;)-СуммаИтогоПослеПерерасчета;//Товары.Итог(laquo;Суммаraquo;);
ОпісаніеОшібкі= raquo ;;
//AG
...
Якщо ПереключательОплатаПростая Тоді
Якщо Чи не ЗначеніеЗаполнено (ВідОплати) Тоді
ОпісаніеОшібкі= Не вказаний тип оплати! raquo ;;
ІначеЕслі Оплата.Итог(laquo;Суммаraquo;)-Сертификаты.Итог(laquo;Суммаraquo;) lt; СуммаІтогоПослеПерерасчета і не фОплатаБонусом Тоді
ОпісаніеОшібкі= Суми недостатньо для оплати чека! raquo ;;
ІначеЕслі суммаОплати lt; СуммаІтогоПослеПерерасчета/100 * 1 і фОплатаБонусом тоді
ОпісаніеОшібкі= Суми недостатньо для оплати чека! raquo ;;
КонецЕсли;
Інакше
Для Кожного СтрокаОплат З Оплата Цикл
Якщо Чи не ЗначеніеЗаполнено (СтрокаОплат.ВідОплати) Тоді
ОпісаніеОшібкі= Не вказаний тип оплати! raquo ;;
Перервати;
КонецЕсли;
КонецЦікла;
//AG
Якщо ПустаяСтрока (ОпісаніеОшібкі)
І Оплата.Итог(laquo;Суммаraquo;)-Сертификаты.Итог(laquo;Суммаraquo;) lt; СуммаІтогоПослеПерерасчета і не фОплатаБонусом Тоді
ОпісаніеОшібкі= Суми недостатньо для оплати чека! raquo ;;
Інакше
повідомити (СуммаОплати);
повідомити (СуммаІтогоПослеПерерасчета/100 * 1);
Якщо фОплатаБонусом І СуммаОплати lt; СуммаІтогоПослеПерерасчета/100 * 1 тоді
ОпісаніеОшібкі= Суми недостатньо для оплати чека! raquo ;;
КонецЕсли
КонецЕсли;
КонецЕсли;
...
Закрити ( Закрити чек );
КонецПроцедури//ДействіяФормиДействіеОк ()
Процедура ПересчетТовариСумма (вид)
...
СуммаОплати=0;
Для кожного стор з Товари цикл