gifts2017

Перечисление НДФЛ в бюджет: Зачет излишне перечисленных взносов по методу ФИФО

Опубликовал Александр (Aleksandr) в раздел Обработки - Обработка документов

Доработка конфигурации ЗУП для зачета излишне перечисленного в бюджет НДФЛ

Как известно, типовое заполнение документа "Перечисление НДФЛ в бюджет" никак не учитывает суммы излишне перечисленные. Однако некоторые организации (особенно крупные) перечисляют в бюджет суммы немного превышающие сумму исчисленного НДФЛ. Для таких предприятий будет полезна следующая доработка: Излишне уплаченная сумма "падает"  на пустое физлицо. При заполнении в следующих документах сначала списывается эта лишняя сумма с пустого физлица, а потом распределяется новая перечисленная сумма. Таким образом получается некое подобие ФИФО.

Для реализации необходимо:

1) Добавить возможность сохранять незаполненное значение в регистре     РасчетыНалоговыхАгентовСБюджетомПоНДФЛ 

2) Модуль формы документа Перечисление НДФЛ в бюджет: заменить типовую процедуру

Процедура КоманднаяПанельСотрудникиОрганизацииДействиеЗаполнить(Кнопка)
	//ВСТАВКА
	Если ДокументОбъект.Проведен Тогда
		ТекстВопроса = "Заполнить документ можно только после отмены проведения. Отменить проведение?";
		Если РаботаСДиалогами.ЗадатьВопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
			ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
		Иначе  			
			Возврат;
		КонецЕсли;
	КонецЕсли;
    //ВСТАВКА КОНЕЦ

	Если СотрудникиОрганизации.Количество() > 0 Тогда
		ТекстВопроса = "Существующий список сотрудников будет очищен. Продолжить?";
		Если РаботаСДиалогами.ЗадатьВопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Да Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;
		
	СотрудникиОрганизации.Очистить();
	
	//ЗАМЕНА
	//Автозаполнение();
	нов_Автозаполнение();
	//КОНЕЦ
	
	Если СотрудникиОрганизации.Количество() = 0 Тогда
		Сообщить("Не обнаружены данные для записи в документ.", СтатусСообщения.Важное )
	Иначе
		ЭлементыФормы.СотрудникиОрганизации.ТекущаяСтрока = СотрудникиОрганизации[0]
	КонецЕсли;
	
КонецПроцедуры

 3. Модуль документа перечисление НДФЛ в бюджет

Процедура нов_Автозаполнение(ФизическиеЛица = Неопределено) Экспорт

	Если Сумма = 0 Тогда
		Возврат 
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РасчетыНалоговыхАгентовСБюджетомПоНДФЛОстатки.ФизЛицо,
	|	РасчетыНалоговыхАгентовСБюджетомПоНДФЛОстатки.СуммаОстаток КАК Сумма
	|ПОМЕСТИТЬ ВТОстатки
	|ИЗ
	|	РегистрНакопления.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.Остатки(
	|			&ДатаОперации,
	|			Организация = &Организация
	|				И Ставка = &Ставка
	|				И (ФизЛицо В (&ФизическиеЛица)
	|					ИЛИ &НеОтбирать)
	|				И МесяцНалоговогоПериода = &МесяцНалоговогоПериода
	|				И ОКАТО_КПП = &ОКАТО_КПП) КАК РасчетыНалоговыхАгентовСБюджетомПоНДФЛОстатки
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.ФизЛицо,
	|	РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.Сумма
	|ИЗ
	|	РегистрНакопления.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ КАК РасчетыНалоговыхАгентовСБюджетомПоНДФЛ
	|ГДЕ
	|	&УчитыватьДвиженияРегистратора
	|	И РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.Регистратор = &Регистратор
	|	И (РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.ФизЛицо В (&ФизическиеЛица)
	|			ИЛИ &НеОтбирать)
	|	И РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.Организация = &Организация
	|	И РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.Ставка = &Ставка
	|	И РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.МесяцНалоговогоПериода = &МесяцНалоговогоПериода
	|	И РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.ОКАТО_КПП = &ОКАТО_КПП
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	РасчетыНалоговыхАгентовСБюджетомПоНДФЛОстатки.СуммаОстаток КАК НераспределенныйОстаток
	|ИЗ
	|	РегистрНакопления.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.Остатки(
	|			&ДатаОперации,
	|			ФизЛицо = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
	|				И Организация = &Организация
	|				И Ставка = &Ставка 
	|				И ОКАТО_КПП = &ОКАТО_КПП) КАК РасчетыНалоговыхАгентовСБюджетомПоНДФЛОстатки
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Остатки.ФизЛицо,
	|	СУММА(Остатки.Сумма) КАК Сумма
	|ИЗ
	|	ВТОстатки КАК Остатки
	|
	|СГРУППИРОВАТЬ ПО
	|	Остатки.ФизЛицо
	|
	|ИМЕЮЩИЕ
	|	СУММА(Остатки.Сумма) > 0";
	Запрос.УстановитьПараметр("Регистратор", Ссылка);
	Запрос.УстановитьПараметр("Организация", Организация);
	Запрос.УстановитьПараметр("ДатаОперации", КонецМесяца(МесяцНалоговогоПериода)+1);
	Запрос.УстановитьПараметр("МесяцНалоговогоПериода", МесяцНалоговогоПериода);
	Запрос.УстановитьПараметр("Ставка", Ставка);
	Запрос.УстановитьПараметр("ОКАТО_КПП", ОКАТО_КПП);
	Запрос.УстановитьПараметр("НеОтбирать", Не ЗначениеЗаполнено(ФизическиеЛица));
	Запрос.УстановитьПараметр("ФизическиеЛица", ФизическиеЛица);
	Запрос.УстановитьПараметр("УчитыватьДвиженияРегистратора", Проведен И Модифицированность() И ДатаПлатежа > ОбщегоНазначенияЗК.ПолучитьЗначениеРеквизита(Ссылка,"ДатаПлатежа"));
	Результаты = Запрос.ВыполнитьПакет();
	Результат = Результаты[Результаты.Количество()-1].Выгрузить();
	//проверим остаток на пустом ФЛ, чтобы распределить его
	Выборка = Результаты[Результаты.Количество()-2].Выбрать();
	НераспределенныйОстаток = 0;
	Если Выборка.Следующий() Тогда
		НераспределенныйОстаток = ?(Выборка.НераспределенныйОстаток<0, -Выборка.НераспределенныйОстаток, 0);
	КонецЕсли;
	Сообщить("Нераспределенная сумма с предыдущих платежей: "+НераспределенныйОстаток);
	ВсегоНужноПеречислить = Результат.Итог("Сумма");
	СуммаКРаспределению = Сумма+НераспределенныйОстаток;
	Если СуммаКРаспределению>ВсегоНужноПеречислить Тогда //разницу отнесем на пустое ФЛ
		НовыйОстаток = СуммаКРаспределению-ВсегоНужноПеречислить;
		СуммаКРаспределению = ВсегоНужноПеречислить;
		Сообщить("Остаток нераспределенной суммы: "+НовыйОстаток);
	Иначе 
		НовыйОстаток = 0;
	КонецЕсли;


			
	КоэффициентыРаспределения = ПроведениеРасчетов.ВыделитьКоэффициентыРаспределенияИзКоллекцииСтрок(Результат,"Сумма");
	РезультатРаспределения = ОбщегоНазначенияЗК.РаспределитьПропорционально(СуммаКРаспределению, КоэффициентыРаспределения, 0);
	Если РезультатРаспределения = Неопределено Тогда
		Для каждого СтрокаТЧ Из СотрудникиОрганизации Цикл
			СтрокаТЧ.Сумма = 0
		КонецЦикла;
		Возврат 
	Иначе
		Если ЗначениеЗаполнено(ФизическиеЛица) Тогда
			Для каждого СтрокаТЧ Из СотрудникиОрганизации Цикл
				СтрокаТЧ.Сумма = 0
			КонецЦикла;
			Индекс = 0;
			Для каждого СтрокаТЗ Из Результат Цикл
				НоваяСтрока = СотрудникиОрганизации.Найти(СтрокаТЗ.ФизЛицо,"ФизЛицо");
				Если НоваяСтрока <> Неопределено Тогда
					НоваяСтрока.Сумма = РезультатРаспределения[Индекс];
				КонецЕсли;
				Индекс = Индекс + 1;
			КонецЦикла;
		Иначе
			Индекс = 0;
			Для каждого СтрокаТЗ Из Результат Цикл
				НоваяСтрока = СотрудникиОрганизации.Добавить();
				НоваяСтрока.ФизЛицо = СтрокаТЗ.ФизЛицо;
				НоваяСтрока.Сумма = РезультатРаспределения[Индекс];
				Индекс = Индекс + 1;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
	
	ОстатокИтог = НовыйОстаток - НераспределенныйОстаток; 
	Если ОстатокИтог<>0 Тогда 
		НоваяСтрока = СотрудникиОрганизации.Добавить();
		НоваяСтрока.Сумма = ОстатокИтог;
	КонецЕсли;
	
КонецПроцедуры
 

 4. Модуль документа перечисление НДФЛ в бюджет, уберем проверку пустого физлица

//ЗАКОММЕНТИРОВАНО								
		//Если Не ЗначениеЗаполнено(СтрокаТЧ.ФизЛицо) Тогда
		//	ОбщегоНазначенияЗК.ВывестиИнформациюОбОшибке(НачалоСообщения + "не указано физическое лицо!", Отказ, Заголовок);
		//КонецЕсли;

 5. Недостатком такой доработки может явиться то, что в отчетах о налогах и взносах может появиться строка с пустым физлицом. Там где это будет мешать легко исправить соответствующим условием

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Ден (den_valley) 16.09.13 10:30
В качестве замечаний.

1. Предлагаю относить не на пустое физ лицо, а использовать служебный элемент справочника "Физические лица".

2. Необходимо проверить, как данная операция отразится в справке 2-НДФЛ.
2. Ден (den_valley) 16.09.13 10:38
И поправьте ошибку в коде. Несолидно как то.

Если Выборка.Следующий() Тогда
НераспределенныйОстаток = ?(Выборка.НераспределенныйОстатокВсегоНужноПеречислить Тогда //разницу отнесем на пустое ФЛ
3. Александр (Aleksandr) 18.09.13 10:07
den_valley, ошибка исправлена, спасибо.

Желающие могут сделать на служебное физлицо. В справке 2-НДФЛ перечисленный налог будет равен исчисленному.
4. Сергей Докторов (doctorov_s) 31.01.16 13:10
А в связи с изменившемся законодательством, никто не пробовал изменять обработку??
5. Сергей Докторов (doctorov_s) 31.01.16 13:10
Соответственно и изменились записи в регистре!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа