Доброго времени суток, друзья!
Может кто-то подскажет что внести в данный код.
Дано: продажи в УТ(10.3 72релиз) через опт, чтобы не делать несколько доков-был написан такой код, который дает возможность сократить количество фискальных чеков-т.е. на основании реализации товаров и услуг принимаем оплату-по ПКО или карте-и печатаем чек (при условии наличия на складе)
А вот когда товар под заказ-тут как обычно, на основании счета-принимаем предоплату, а по приходу товара делаем чек в реализации.
Так вот все это работает только при "ВестипоДокументамРасчетовсКонтрагентом", если просто по договору в целом-чеки из реализации печатаются как кредит.
Что в коде поменять, для корректной печати чеков ККТ из реализации(ЗАчет предоплаты)-при ведении учета по договору в целом?
Процедура ЗаполнитьОплатыДляТоварногоДокумента(Ссылка, ОбщиеПараметры, КурсОплаты)
ДокументыРасчетов = Ссылка.ДокументыРасчетовСКонтрагентом;
Если ДокументыРасчетов.Количество() = 0 Тогда
//28.09.2022
//ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПередачаБезОплаты);
//28.09.2022
////ШВВ 21.06.2019
//Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// СуммаЭлектронными = 0;
// СуммаНаличными = 0;
// СуммаДругое = 0;
// СуммаЭлектроннымиВДеньРеализации = 0;
// СуммаНаличнымиВДеньРеализации = 0;
// СуммаДругоеВДеньРеализации = 0;
//
// СписокСвязанныхДокументов = ПолучитьПодчиненныеДокументы(Ссылка.Сделка,,,Ссылка);
//
// Для Каждого СтрокаРасчетныйДокумент Из СписокСвязанныхДокументов Цикл
// Если ТипЗнч(СтрокаРасчетныйДокумент.Значение) = Тип("ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой") И СтрокаРасчетныйДокумент.Значение.ВидОперации = Перечисления.ВидыОперацийОплатаОтПокупателяПлатежнойКартой.ОплатаПокупателя Тогда
// Если КонецДня(СтрокаРасчетныйДокумент.Значение.Дата) = КонецДня(Ссылка.Дата) Тогда
// СуммаЭлектроннымиВДеньРеализации = СуммаЭлектроннымиВДеньРеализации + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// Иначе
// СуммаЭлектронными = СуммаЭлектронными + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// КонецЕсли;
// ИначеЕсли ТипЗнч(СтрокаРасчетныйДокумент.Значение) = Тип("ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой") И СтрокаРасчетныйДокумент.Значение.ВидОперации = Перечисления.ВидыОперацийОплатаОтПокупателяПлатежнойКартой.ВозвратДенежныхСредствПокупателю Тогда
// Если КонецДня(СтрокаРасчетныйДокумент.Значение.Дата) = КонецДня(Ссылка.Дата) Тогда
// СуммаЭлектроннымиВДеньРеализации = СуммаЭлектроннымиВДеньРеализации + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// Иначе
// СуммаЭлектронными = СуммаЭлектронными + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// КонецЕсли;
// ИначеЕсли ТипЗнч(СтрокаРасчетныйДокумент.Значение) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда
// Если КонецДня(СтрокаРасчетныйДокумент.Значение.Дата) = КонецДня(Ссылка.Дата) Тогда
// СуммаНаличнымиВДеньРеализации = СуммаНаличнымиВДеньРеализации + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// Иначе
// СуммаНаличными = СуммаНаличными + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// КонецЕсли;
// ИначеЕсли ТипЗнч(СтрокаРасчетныйДокумент.Значение) = Тип("ДокументСсылка.РасходныйКассовыйОрдер") Тогда
// Если КонецДня(СтрокаРасчетныйДокумент.Значение.Дата) = КонецДня(Ссылка.Дата) Тогда
// СуммаНаличнымиВДеньРеализации = СуммаНаличнымиВДеньРеализации + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// Иначе
// СуммаНаличными = СуммаНаличными + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// КонецЕсли;
// ИначеЕсли ТипЗнч(СтрокаРасчетныйДокумент.Значение) = Тип("ДокументСсылка.ВозвратТоваровОтПокупателя") Тогда
// СуммаДругое = СуммаДругое + СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// ИначеЕсли ТипЗнч(СтрокаРасчетныйДокумент.Значение) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// СуммаДругое = СуммаДругое - СтрокаРасчетныйДокумент.Значение.СуммаДокумента * КурсОплаты;
// КонецЕсли;
// КонецЦикла;
//
// СуммаОплаты = СуммаЭлектронными + СуммаНаличными + СуммаДругое;
// СуммаОплатыВДеньРеализации = СуммаЭлектроннымиВДеньРеализации + СуммаНаличнымиВДеньРеализации + СуммаДругое;
// Если (СуммаОплатыВДеньРеализации >= Ссылка.СуммаДокумента) Или (СуммаОплаты >= Ссылка.СуммаДокумента) Тогда
//
// ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПередачаСПолнойОплатой);
//
// СтрокаОплаты = Новый Структура();
// СтрокаОплаты.Вставить("ТипОплаты", Перечисления.ТипыОплатыККТ.Предоплата);
// СтрокаОплаты.Вставить("Наименование", НСтр("ru = 'Зачет аванса'"));
// СтрокаОплаты.Вставить("Сумма", Ссылка.СуммаДокумента);
// ОбщиеПараметры.ТаблицаОплат.Добавить(СтрокаОплаты);
//
// Иначе
//
// ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПередачаСЧастичнойОплатой);
//
// СтрокаОплаты = Новый Структура();
// СтрокаОплаты.Вставить("ТипОплаты", Перечисления.ТипыОплатыККТ.Предоплата);
// СтрокаОплаты.Вставить("Наименование", НСтр("ru = 'Зачет аванса'"));
// СтрокаОплаты.Вставить("Сумма", СуммаОплаты);
// ОбщиеПараметры.ТаблицаОплат.Добавить(СтрокаОплаты);
//
// СтрокаОплаты = Новый Структура();
// СтрокаОплаты.Вставить("ТипОплаты", Перечисления.ТипыОплатыККТ.Постоплата);
// СтрокаОплаты.Вставить("Наименование", НСтр("ru = 'Постоплата'"));
// СтрокаОплаты.Вставить("Сумма", Ссылка.СуммаДокумента - СуммаОплаты);
// ОбщиеПараметры.ТаблицаОплат.Добавить(СтрокаОплаты);
//
// КонецЕсли;
//Иначе
// ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПередачаБезОплаты);
//
// СтрокаОплаты = Новый Структура();
// СтрокаОплаты.Вставить("ТипОплаты", Перечисления.ТипыОплатыККТ.Постоплата);
// СтрокаОплаты.Вставить("Наименование", НСтр("ru = 'Постоплата'"));
// СтрокаОплаты.Вставить("Сумма", Ссылка.СуммаДокумента);
// ОбщиеПараметры.ТаблицаОплат.Добавить(СтрокаОплаты);
//КонецЕсли;
////ШВВ 21.06.2019
Показать
Процедура ЗаполнитьОплатыДляПлатежногоДокумента(Ссылка, ОбщиеПараметры)
СуммаОплаты = Ссылка.СуммаДокумента;
Если СуммаОплаты <> 0 И СуммаОплаты <> Неопределено Тогда
//ШВВ 21.06.2019
Если Не ЗначениеЗаполнено(Ссылка.РасшифровкаПлатежа[0].Сделка) Тогда
ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.Аванс);
Иначе
Если Не ЗначениеЗаполнено(Ссылка.РасшифровкаПлатежа[0].ДокументРасчетовСКонтрагентом) Тогда
Если СуммаОплаты < Ссылка.РасшифровкаПлатежа[0].Сделка.СуммаДокумента Тогда
ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПредоплатаЧастичная);
Иначе
ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПредоплатаПолная);
КонецЕсли;
Иначе
Если КонецДня(Ссылка.Дата) > КонецДня(Ссылка.РасшифровкаПлатежа[0].ДокументРасчетовСКонтрагентом.Дата) Тогда
ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ОплатаКредита);
Иначе
Если СуммаОплаты < Ссылка.РасшифровкаПлатежа[0].ДокументРасчетовСКонтрагентом.СуммаДокумента Тогда
ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПередачаСЧастичнойОплатой);
Иначе
ОбщиеПараметры.Вставить("ПризнакСпособаРасчета", Перечисления.ПризнакиСпособаРасчета.ПередачаСПолнойОплатой);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//ШВВ 21.06.2019
Показать