Банковская выгрузка
Банковская выгрузка используется для загрузки фактических оплат из клиент-банка или 1С. После загрузки система разбирает файл, создает платежи по счетам, пытается автоматически привязать их к счетам на оплату и обновляет статусы счетов.
Страница актуальна для пользовательской работы в интерфейсе и для фиксации договоренностей по реализации.
Где открыть
Основная страница находится в меню Банк и открывает список банковских выгрузок.
Связанные места работы:
- Банк - загрузка новой выгрузки и просмотр уже загруженных файлов;
- Платежи по счетам внутри конкретной выгрузки - список платежей, которые были созданы из выбранного файла;
- основное меню Платежи по счетам - общий список фактических платежей;
- План оплат и карточки заказов или контрагентов - просмотр платежей, связанных с конкретными счетами на оплату.
Типовой сценарий
- Бухгалтер выгружает из банка файл в формате txt.
- Открывает в системе меню Банк.
- Нажимает Добавить.
- В диалоге Добавить выгрузку выбирает файл.
- Нажимает Сохранить.
- Система создает банковскую выгрузку и платежи по счетам.
- Бухгалтер открывает Просмотр платежей по строке выгрузки.
- Если в таблице есть ошибки, бухгалтер проверяет платежи и вручную меняет привязку к счетам.
Если файл успешно загружен, система показывает сообщение Банковская выгрузка успешно создана! и обновляет таблицу.
Требования к файлу
Загружается только файл с расширением .txt. Интерфейс проверяет расширение файла до отправки на сервер.
Файл должен быть в формате обмена 1CClientBankExchange и кодировке Windows-1251. Система читает:
- дату создания выгрузки из поля
ДатаСоздания; - отдельные платежные документы между строками
СекцияДокументиКонецДокумента; - номер платежа из поля
Номер; - дату платежа из поля
Дата; - сумму из поля
Сумма; - счет плательщика из поля
ПлательщикСчет; - ИНН плательщика из поля
ПлательщикИНН; - счет получателя из поля
ПолучательСчет; - назначение платежа из поля
НазначениеПлатежа.
Если дата создания выгрузки не заполнена или не распознана в формате dd.MM.yyyy, система записывает текущую дату. Если файл пустой или в нем нет платежных документов, загрузка завершается ошибкой.
Таблица банковских выгрузок
В таблице отображаются:
| Колонка | Что означает |
|---|---|
| Дата начальная | минимальная дата платежа внутри выгрузки |
| Дата финальная | максимальная дата платежа внутри выгрузки |
| Дата выгрузки | дата создания выгрузки из файла или текущая дата, если дата в файле не распознана |
| Требуется корректировка | признак, что в платежах есть ошибка или привязанный счет находится в статусе Переплачен |
| Действия | открытие платежей по выбранной выгрузке |
По двойному клику на строку или через действие Просмотр платежей открывается вкладка с платежами этой выгрузки. В таблице доступны стандартные возможности: фильтры, сортировка, пагинация, настройка колонок и сброс настроек.
Что происходит при загрузке
Система выполняет несколько шагов:
- Читает файл и создает внутренние платежи по каждому документу.
- Отбрасывает платежи, которые уже есть в базе.
- Для новых платежей пытается найти счет на оплату.
- Создает связи между платежами и найденными счетами.
- Обновляет статусы счетов на оплату.
- Если счет стал Оплачен или Переплачен, уведомляет сервис задач, чтобы закрыть задачу подписания спецификации там, где это применимо.
- Сохраняет банковскую выгрузку, автора загрузки и платежи.
Повторная загрузка того же файла не создает дубли. Дубликат определяется по сочетанию трех полей: номер платежа, дата платежа и счет плательщика. Если после проверки в файле не осталось новых платежей, система покажет ошибку Данная выгрузка уже добавлена.
Автоматическая привязка к счету
Автоматическая привязка строится на данных покупателя и назначении платежа.
Система ищет:
- покупателя по ИНН плательщика из файла;
- номер счета на оплату в назначении платежа;
- счет на оплату с найденным номером у найденного покупателя;
- совпадение счета получателя из платежа с банковскими реквизитами нашей организации в счете.
Номер счета ищется в назначении платежа в формате yy-n, например 25-1.
Если покупатель и счет найдены, платеж привязывается к счету. Если счет получателя не совпадает с банковскими реквизитами счета на оплату, связь все равно создается, но платеж получает ошибку. Так пользователь видит предполагаемую привязку и может проверить ее вручную.
Если счет находится в статусе Отменен, связь тоже создается, но платеж получает ошибку Привязана к отмененному счету.
Ошибки сопоставления
В платеж может попасть одна или несколько ошибок:
| Ошибка | Когда возникает | Что сделать пользователю |
|---|---|---|
| Покупатель с ИНН плательщика не найден | в системе нет покупателя с ИНН из файла | проверить ИНН в контрагенте или оставить платеж без привязки до уточнения |
| В НазначениеПлатежа не найден номер счета на оплату | назначение платежа не содержит номер счета в ожидаемом формате | открыть платеж и выбрать счет вручную |
| Счет на оплату для указанного покупателя не найден | номер счета найден, но он не относится к найденному покупателю | проверить покупателя, счет и назначение платежа |
| Банковский счет получателя в платеже и счете на оплату различаются | в файле указан другой счет получателя | проверить банковские реквизиты и при необходимости изменить привязку |
| Привязана к отмененному счету | платеж связан со счетом в статусе Отменен | выбрать другой счет или оставить платеж без привязки |
| К платежу не привязано ни одного счета на оплату | после ручной корректировки платеж остался без счета | выбрать счет или подтвердить, что платеж пока не нужно привязывать |
| К платежу привязано несколько счетов на оплату | в данных есть несколько связей для одного платежа | оставить одну корректную связь |
| Сумма платежей превышает сумму в счете | по счету получилась переплата | проверить сумму платежей и счет |
Признак Требуется корректировка на банковской выгрузке включается, если хотя бы один платеж имеет ошибку или связан со счетом в статусе Переплачен.
Платежи по выгрузке
После открытия выгрузки пользователь видит таблицу платежей по счетам.
Основные колонки:
- номер;
- дата;
- сумма;
- ИНН плательщика;
- ошибка;
- счет на оплату;
- заказ покупателя;
- покупатель;
- комментарий.
Если один платеж связан с несколькими счетами, таблица показывает платеж несколькими строками: по одной строке на каждый связанный счет. Если счет не привязан, платеж отображается отдельной строкой без счета.
По двойному клику открывается просмотр платежа. В действиях строки доступны:
- Просмотр платежа;
- Редактировать платеж.
Просмотр платежа
В окне просмотра две части.
Информация по платежу показывает данные, прочитанные из банковского файла:
- тип документа;
- номер;
- дату;
- сумму;
- назначение платежа;
- счет плательщика;
- плательщика, ИНН и КПП;
- банк и БИК плательщика;
- счет получателя;
- получателя, ИНН и КПП;
- банк и БИК получателя;
- дополнительные поля платежного документа.
Информация по счету показывает текущий привязанный счет на оплату:
- номер счета;
- статус;
- дату выставления;
- покупателя и ИНН/КПП;
- нашу организацию;
- банковские реквизиты нашей организации;
- заказ покупателя;
- основание;
- сумму;
- НДС;
- процент оплаты;
- валюту;
- срок оплаты;
- договор;
- этап оплаты;
- примечание.
Если счет не привязан, пользователь видит сообщение Привязанный счет отсутствует и может перейти к выбору счета.
Ручная корректировка платежа
Корректировка нужна, когда система не смогла уверенно сопоставить платеж или нашла потенциальную проблему.
Порядок работы:
- Откройте платеж двойным кликом или действием Просмотр платежа.
- Нажмите Привязать счет или Изменить привязанный счет.
- Выберите счет из списка или вариант Не привязан.
- Нажмите Привязать.
Также можно открыть отдельное действие Редактировать платеж. Оно показывает таблицу счетов, подходящих для привязки платежа. В таблице доступны номер, сумма счета, дата выставления, оплачено, ИНН плательщика, заказ, покупатель и банковские реквизиты нашей организации. Выбор выполняется радиокнопкой или кликом по строке. Повторный выбор той же строки снимает привязку.
После изменения привязки система:
- убирает влияние платежа со старого счета;
- добавляет влияние платежа на новый счет, если он выбран;
- пересчитывает ошибки платежа;
- пересчитывает статусы затронутых счетов;
- обновляет таблицу.
Статусы счетов после оплаты
Для сравнения с оплатами система берет ожидаемую сумму счета:
- если в счете указан процент оплаты, ожидаемая сумма равна сумме счета, умноженной на этот процент;
- если процент оплаты не указан, ожидается 100 процентов суммы счета.
Статусы меняются так:
| Условие | Статус счета |
|---|---|
| привязанных платежей нет | Не оплачен |
| оплачено меньше ожидаемой суммы | Частично оплачен |
| оплачено ровно ожидаемую сумму | Оплачен |
| оплачено больше ожидаемой суммы | Переплачен |
При первичной загрузке выгрузки система меняет статусы для счетов, по которым появились новые платежи. При ручном изменении привязки статус пересчитывается и для старого, и для нового счета.
Тестовая выгрузка
Для тестирования в API есть генерация фейковой банковской выгрузки по счету на оплату. Она доступна ролям тестировщик и администратор.
Система формирует txt-файл в кодировке Windows-1251, подставляет покупателя, банковские реквизиты покупателя и нашей организации, сумму к оплате и назначение платежа с номером счета. Это служебная функция для проверки импорта и не является обычным рабочим сценарием бухгалтера.
Права доступа
| Действие | Роли |
|---|---|
| Открыть страницу Банк и смотреть банковские выгрузки | бухгалтер; API также разрешает администратору |
| Загрузить банковскую выгрузку | бухгалтер |
| Смотреть платежи внутри банковской выгрузки | бухгалтер; API также разрешает администратору |
| Смотреть общий список Платежи по счетам | бухгалтер, начальник менеджеров по продажам; API также разрешает администратору |
| Смотреть платежи по конкретному счету на оплату | начальник менеджеров по продажам, менеджер по продажам, помощник менеджера по продажам, менеджер производства; API также разрешает администратору |
| Смотреть подробности платежа | начальник менеджеров по продажам, менеджер по продажам, помощник менеджера по продажам, менеджер производства, бухгалтер; API также разрешает администратору |
| Менять привязку платежа к счету | начальник менеджеров по продажам, менеджер по продажам, помощник менеджера по продажам, менеджер производства, бухгалтер |
| Сформировать тестовую банковскую выгрузку | тестировщик; API также разрешает администратору |
Есть несоответствие, которое важно учитывать при разработке: в маршрутах интерфейса общий список Платежи по счетам также открыт для роли менеджер производства, но API общего списка платежей не включает эту роль. Для пользователя это может выглядеть как доступная страница, которая возвращает ошибку доступа при загрузке данных.
Данные
Банковская выгрузка хранит:
- идентификатор;
- дату создания записи;
- дату выгрузки;
- ссылку на документ;
- автора загрузки;
- список платежей по счетам.
Платеж по счету хранит:
- номер;
- дату;
- сумму;
- банковскую выгрузку;
- счет плательщика;
- ИНН плательщика;
- полный текст документа из файла;
- ошибку сопоставления;
- комментарий;
- связи со счетами на оплату.
Связь платежа со счетом хранит сумму платежа, отнесенную на конкретный счет.
API
Основные операции:
| Метод | Адрес | Назначение |
|---|---|---|
| GET | /Order/BankStatement/table | получить банковские выгрузки для таблицы |
| POST | /Order/BankStatement | загрузить и разобрать файл банковской выгрузки |
| GET | /BankStatement/:bankStatementId/InvoicePayment/table | получить платежи выбранной банковской выгрузки |
| GET | /Order/InvoicePayment/table | получить общий список платежей по счетам |
| GET | /PaymentInvoice/:paymentInvoiceId/InvoicePayment/table | получить платежи конкретного счета на оплату |
| GET | /Order/InvoicePayment/:invoicePaymentId | получить подробную информацию по платежу |
| PATCH | /Order/InvoicePayment/:invoicePaymentId | изменить привязку платежа к счету |
| GET | /Order/InvoicePayment/:invoicePaymentId/PaymentInvoice/table | получить счета для таблицы выбора при корректировке платежа |
| GET | /Order/InvoicePayment/:invoicePaymentId/PaymentInvoices | получить счета для выпадающего списка в просмотре платежа |
| GET | /Order/PaymentInvoice/:paymentInvoiceId/fakeBankStatement | сформировать тестовую банковскую выгрузку |
| GET | /Order/InvoicePayment/xlsx | выгрузить платежи по счетам в xlsx |