Зачет аванса в чеках ККТ из РТУ

1. user868488 28.09.22 19:21 Сейчас в теме
Доброго времени суток, друзья!

Может кто-то подскажет что внести в данный код.

Дано: продажи в УТ(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
Показать
По теме из базы знаний
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот