Оплата платежными (банковскими) картами и кредитами в 1С Бухгалтерия 2.0 (эквайринг)

Публикация № 571413

Программирование - Практика программирования

1
Столкнулся с задачей реализовать оплату платежными картами от покупателя в конфигурации 1C Бухгалтерия 2.0 (на примере одноименного документа в конфигурациях УТ 10 и 11). Необходимость возникла в связи с тем, что у заказчика не классическая розничная торговля в деньги (деньги взял - товар отдал), а вариант: "утром деньги - вечером стулья". Т.е. для отражения факта отгрузки товара используется документ "Реализация товаров и услуг", при этом оплата может быть от покупателей частичная наличными и по платежным картам, это может быть просто аванс без отгрузки или наоборот доплата.

Данная публикация будет интересна тем, кто ведет учет в 1С: Бухгалтерия 2.0 при этом торгует в розницу и использует документ "Реализация товаров и услуг".
На скриншотах видно, как заполняется документ и в результате формируются проводки по всем разделам учета (это основная цель всех заморочек).

Документ "Оплата платежными картами" формирует проводку:
Дт 57.03 (Банк эквайер, договр)  -  Кт 62 (Покупатель, договор)
Стандартным документом "Поступление на расчетный счет" с видом операции : поступление от продаж по платежным картам и банковским кредитам формирует проводку:
Дт 51 (Расчетный счет)  -  Кт 57.03 (Банк эквайер, договр)

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

Цели доработки:

- регистрировать оплату платежными картами с привязкой к конкретному покупателю;

- регистрировать оплату кредитами с привязкой к конкретному покупателю;

- формирование соответствующих проводок: Дт 57.03 (Банк эквайер, договр)  -  Кт 62 (Покупатель, договор);

- важным было формирование движений по дополнительным регистрам, для корректного отображения в книгах доходов/ расходов УСН и по Патенту;

- максимально уйти от ручного формирования проводок и движений;

- сохранить зачеты авансов по документам движения.

Из всего выше сказанного вариант с переброской долга документом "Корректировка взаиморасчетов" отброшен сразу, т.к. неотвечал ни одному из условий задачи.

Реализация задуманного:

1. И так, чтобы не выдумывать велосипед за основу был взят документ "Приходный кассовый ордер" - данный документ необходимо скопировать и переименовать, например "ОплатаПлатежнымиКартами". Далее в документ добавляем два реквизита: "БанкЭквайер" (тип СправочникСсылка.Контрагенты) и "ДоговорБанкаЭквайера" (тип СправочникСсылка.ДоговорыКонтрагентов). Размещаем реквизиты в форме документа и не забываем установить для договора связку по владельзу - для удобства выбора договора при работе.

Я так же удали кнопку "Чек" - чтобы не смущала (рядом ск нопкой "ОК").

Укажите что документ может вводиться на основании "Реализации товаров и услуг".

2. Доработки модуля формы документа "Оплата платежными картами":

Везде где есть строка Кнопки.Чек.Доступность = Истина  ( Кнопки.Чек.Доступность = Ложь) - закоментировать

например: //АА ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Чек.Доступность = Ложь;

Процедура ЗаполнитьСчетаКассы()
	
	МассивОтбора = Новый Массив;
	МассивОтбора.Добавить(ПланыСчетов.Хозрасчетный.Касса);

	......
	
	//АА Комментируем чтобы не выбирать стандартные счета кассы 50..
        //АА ЭлементыФормы.СчетКасса.СписокВыбора = РаботаСДиалогами.ЗаполнитьСписокВыбораСчетовДенежныхСредств(
	//АА МассивОтбора, ТолькоРубли, ПланыСчетов.Хозрасчетный.КассаОрганизации, МассивИсключений);
		
	//АА Добавляем в список выбора только нужный счет 50.03
	ЭлементыФормы.СчетКасса.СписокВыбора.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("57.03"), "57.03");
	
КонецПроцедуры

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

Процедура СчетКассаПриИзменении(Элемент)

      //АА  В этой процедуре удалите весь код
	
КонецПроцедуры

3. Доработки модуля документа "Оплата платежными картами":

Процедура ОбработкаПроведения(Отказ, Режим)
	
	...
	
	// Проверка ручной корректировки
	
        //АА Заблокировал, т.к. выдавало ошибку.. не стал разбираться.
        //АА НО ЕСЛИ КТОТ БУДЕТ КОРРЕКТИРОВАТЬ ПРОВОДКИ ВРУЧНУЮ - РАЗБЕРИТЕСЬ С ОШИБКОЙ
        // иначе ручные изменения будут слетать при перепроведении документа

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

       ...
   
	Если ЕстьРасчетыСКонтрагентами или ЕстьРасчетыПоКредитам Тогда

		СтруктураШапкиДокумента.Вставить("КоррСчет",СчетДт);
		
		ТаблицаДокумента = УправлениеДенежнымиСредствами.ПодготовитьТаблицуОплат(СтруктураШапкиДокумента);
		
		Если ЕстьРасчетыПоКредитам Тогда
			ТаблицаДокумента.ЗагрузитьКолонку(ТаблицаДокумента.ВыгрузитьКолонку("СчетОплаты"),"СчетАванса");
		КонецЕсли; 
		
		
		//АА Добавить наши субконто для счета 57.03
		ТаблицаДокумента.ЗаполнитьЗначения(БанкЭквайер, "КоррСубконто1");
		ТаблицаДокумента.ЗаполнитьЗначения(ДоговорБанкаЭквайера, "КоррСубконто2");
		//АА Конец
		

		ОпределятьСостояниеРасчетов = ЕстьРасчетыСКонтрагентами;
		
		ТаблицаРаспределенияОплат = УправлениеВзаиморасчетами.ПогаситьЗадолженностьКонтрагентов(
			СтруктураШапкиДокумента, ТаблицаДокумента, ЭтотОбъект, 
			Отказ, Заголовок, СодержаниеПроводки, ОпределятьСостояниеРасчетов);

         ...

КонецПроцедуры

4. Доработка общего модуля ОбщийМодуль.БухгалтерскийУчетРасчетовСКонтрагентами:

Функция ОпределениеНаправленияДвиженияДляДокументаДвиженияДенежныхСредств(Знач ВидДокумента,ВидОперации = неопределено) Экспорт

	ВидДействийДокумента = Новый Структура("Направление,РасчетыВозврат");
	ВидыДокументовДДС    = Новый Соответствие();

	ВидыДокументовДДС.Вставить("СписаниеСРасчетногоСчета", "Выбытие");
	ВидыДокументовДДС.Вставить("РасходныйКассовыйОрдер", "Выбытие");
	ВидыДокументовДДС.Вставить("ПоступлениеНаРасчетныйСчет", "Поступление");
	ВидыДокументовДДС.Вставить("ПриходныйКассовыйОрдер", "Поступление");
	
	//АА Добавить строку чтобы правильно формировал проводки Дт 57.03 Кт 62
	ВидыДокументовДДС.Вставить("ОплатаПлатежнымиКартами", "Поступление");

	ВидыДокументовДДС.Вставить("АвансовыйОтчет", "Выбытие");

5. Также для возможности просмотра движений документа по кнопк ДтКт необходимо добавить наш документ в тип реквизита "ДокументОбъект" обработки "КорректировкаДвижений"

В итоге получаем при проведении документов оплаты от покупателя и поступления этих денежных стредств из банка:

Движения при регистрации оплаты картой от покупателя: погашении долга покупателя, увеличение долга банка эвайера, движения по регистру для учета УСН/Патент

Движения при регистрации поступления денег от банка эквайера: погашении долга банка эквайера, списание коммисии банка на счет расходов, движения по регистру для учета УСН/Патент

- движения по регистру КУДиР: признание расходов ЕНВД (или УСН в ином случае)

- движения по регистру Книги учета доходов при Патенте (отсутствует в случае УСН)

1

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. drimer 60 21.07.17 20:13 Сейчас в теме
// Проверка ручной корректировки

//АА Заблокировал, т.к. выдавало ошибку.. не стал разбираться.
//АА НО ЕСЛИ КТОТ БУДЕТ КОРРЕКТИРОВАТЬ ПРОВОДКИ ВРУЧНУЮ - РАЗБЕРИТЕСЬ С ОШИБКОЙ
// иначе ручные изменения будут слетать при перепроведении документа

//АА Если ОбщегоНазначения.РучнаяКорректировкаОбработкаПроведения(РучнаяКорректировка,Отказ,Заголовок,ЭтотОбъект) Тогда
// Возврат
//КонецЕсли;
Отключение проверки ручной корректировки приведёт к добавлению строк проводок к ранее записанным.
Для исправления ошибки необходимо включить документ в Подписки на события - ПередЗаписьюДокументаДляУдаленияДвижений.
insurgut; +1 Ответить
2. insurgut 197 06.07.18 10:32 Сейчас в теме
А ведь ещё и чек при необходимости нужно выбить... жаль ничего нет тут на этот счет :-/
3. insurgut 197 08.07.18 12:05 Сейчас в теме
Чтобы корректно данные доработки работали с УСН/ЕНВД необходимо ещё немного доработок:

1. В общем модуле НалоговыйУчетУСН добавить:

Процедура ДвиженияУСН(...) Экспорт
...
ИначеЕсли
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет") ИЛИ
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СписаниеСРасчетногоСчета") ИЛИ
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") ИЛИ
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой") ИЛИ //<--доработка
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") ИЛИ
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РасходныйКассовыйОрдер") ИЛИ
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПоступлениеДенежныхДокументов") ИЛИ
ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ВыдачаДенежныхДокументов") Тогда

ОтразитьВУСН(ДокументСсылка, ,СтруктураШапкиДокумента, , СтруктураДопПараметров);
...
Показать


2. В тип измерения РегистрНакопления.РасходыПриУСН.Партия добавить наш документ
4. alex_gus 1 25.09.18 19:17 Сейчас в теме
Доброго дня! А можете прояснить момент, когда на следующий день придут выписки из банка и деньги упадут на расчетный счет, что в этом случае делать?
5. alexhline 84 25.09.18 23:18 Сейчас в теме
Смотрите скриншот выше: "Движения при регистрации поступления денег от банка эквайера: погашении долга банка эквайера, списание комиссии банка на счет расходов, движения по регистру для учета УСН/Патент".
Будет формирование проводок по закрытию долга Эквайера: Дт 51 (Расчетный счет) - Кт 57.03 (Банк эквайер, договр)
6. alex_gus 1 26.09.18 08:56 Сейчас в теме
(5)я так понимаю, данная доработка уже прошла "боевые" испытания, как показала себя в работе?
7. alexhline 84 26.09.18 20:02 Сейчас в теме
(6) Это доработка программы, а не обработка отдельная.
У одного заказчика работала два года назад, сейчас актуальность не могу сказать.
Данная тема (статья) ранее мной была переведена в архив, как вы ее находите...
8. alex_gus 1 27.09.18 08:59 Сейчас в теме
(7)я понимаю что это доработка конфигурации. поиском нашлась, очень полезная штука, как раз нужно что-то типа такого)
Оставьте свое сообщение