Автоматическая выгрузка платежей из CSV

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (22)

просмотр истории страницы
{toc:maxLevel=3}

h2. Описание

!Автоматическая выгрузка платежей из CSV.png|border=0,width=700!

h3. Где этот интерфейс и как им пользоваться?

* Вносить платежи нужно на вкладке "Сервис".
* Подойдёт *любая* папка. На картинке выше "Абоненты" - просто пример. Платежи всё равно будут зачислены всем абонентам, которые есть в выгрузке, а не только из этой папки.
* Вносить платежи из CSV могут только администраторы [из группы root|CarbonBilling:Права доступа. Настройка прав доступа к биллингу. Настройка прав доступа к веб-интерфейсу].
* Загрузив файл с платежами, биллинга напишет об этом сообщение
!Загрузка платежей из CSV, сообщение что файл загружен.png|border=0,width=600!

h3. Как биллинг определит кому занести платёж?

*По-умолчанию* поиск абонента происходит *по номеру договора*. Параметр в конфигурационном файле:
{code}
contract_number: 0 # Параметр поиска абонента
{code}
*Но можно иначе*: по одному из [реквизитов|Реквизиты], например по ИНН. Для этого в конфигурационном файле нужно задать два параметра:
{code}
contract_number: 0 # Параметр поиска абонента
special_search_param: 'attr 4' # Специальный параметр поиска, например 'attr 4' = реквизит 4, то есть ИНН
{code}

h3. Как избежать дублей платежей?

При загрузке биллинг проверяет уникальность платежа, чтобы при повторной загрузке платежи не дублировались. Полезно, если:
* Вы повторно загружаете тот же файл, например с исправленными ошибками;
* При загрузке платежей уже поступивших в биллинг из платёжной системы для сверки и исправления ошибок.

Проверка проходит по паре параметров *pay_id_str* и *pay_operator*. Поиск по *pay_operator* регистронезависимый, то есть значения *Sberbank* и *SBERBANK* \- идентичны.

h2. 54-ФЗ, онлайн-чеки

h3. Как отправлять чеки в онлайн-кассу по платежам физлиц 54-ФЗ?

В конфигурационном файле платёжной системы должна быть включена опция:
{code}prevent_submit_check: 0{code}

h3. Как не отправлять чеки по платежам физлиц?

В конфигурационном файле платёжной системы должна быть включена опция:
{code}prevent_submit_check: 1{code}

h3. Нужны ли чеки по платежам юрлиц?

Биллинг не отправляет чеки по любым платежам юрлиц.

Чтобы отдавать налоговой данные по платежам юрлиц, [интегрируйте биллинг с 1С|CarbonBilling:Интеграция с 1С].

h2. Настройка

Для того, чтобы платежи выгрузить из CSV автоматически нужно:
# Зайти в chroot /app/asr_billing
{code}
chroot /app/asr_billing
{code}
# Создать папку /cfg/autocsv с правами chmod 755 /cfg/autocsv
{code}
mkdir /cfg/autocsv/
chmod 755 /cfg/autocsv/
{code}
# В этой папке создаются конфигурации для автоматической выгрузки. Они должны иметь расширение \*.autocsv и права chmod 755 /cfg/autocsv/*.autocsv прав 755:
{code}
chmod 755 /cfg/autocsv/*.autocsv
{code}
# Например, pochtarf.autocsv, содержание которого, может быть следующим
{code}
{code}# # Обязательные параметры
csv_path: '/var/autocsv/pochtarf/'
contract_number: 0 # Параметр поиска абонента
special_pay_id_param_list: [30, 31, 33] # Специальный список параметров для создания номера платежа, если нет уникального поля
prevent_submit_check: 0 # параметр, отвечающий за отправку чеков в налоговую: 0 - отправлять чеки, 1 - не отправлять чеки, по умолчанию - 0
incoming_sign: {id: 27, value: C} # Специальный параметр признака поступления, будут загружаться только те платежи, у которых в колонке под номером 27 установлено значение "C"{code}где числа от 0 до 3 - это номера колонок в CSV-файле.
{code}
Где числа от 0 до 3 - это номера колонок в CSV-файле.
Колонки 0, 1, 2 обязательны.
Если колонки 3 не существует, то и в конфигурации её быть не должно.

Поддерживаемые форматы даты:
{code:title=Поддерживаемые форматы даты}
%Y.%m.%d %H:%M:%S (2016.10.26 10:01:32)
%Y%m%d%H%M%S (20161026100132)
{code}
{code:title=Пример файла}
BILL0005;500;ABC015;20161026100132
BILL0006;1000;AVC014;2016.10.26 10:01:32
{code}
# Выйдите из контейнера биллинг:
{code}
exit
{code}
# Для вступления изменений в силу перезапустите контейнер биллинга командой:
{code}
/app/asr_billing/service restart
{code}

* %Y.%m.%d %H:%M:%S (2016.10.26 10:01:32)

* %Y%m%d%H%M%S (20161026100132)


{code}BILL0005;500;ABC015;20161026100132
BILL0006;1000;AVC014;2016.10.26 10:01:32{code}
Выгружать файлы можно следующими способами:
# По протоколу SSH в путь, который был указан в csv_path

{info}
\*Разделитель "табуляция" следует заводить так:
{code}csv_delimiter: '\t'{code}
{info}

h2. Диагностика ошибок
h2. Решение проблем

# Ошибки импорта пишутся в лог воркера. Просмотрите лог:
{code}# grep csv_loading /app/asr_billing/var/log/worker.log
{code:title=Команда для просмотра лога}
fgrep csv_loading /app/asr_billing/var/log/worker.log
{code}
{code:title=Пример ошибки}
2019-01-09 21:25:38,559 - worker - csv_loading - ERROR - Абонент с номером договора 123456 не существует или удалён - пропускаем
{code}
# Посмотрите список платежей, которые не были загружены. Неверные данные помещаются в файл: *incomings.csv.error*.
{code:title=Дынные отброшенные обработчиком}
/app/asr_billing/var/autocsv/pochtarf/bad/incomings.csv.error
{code}
В каталоге может содержаться несколько файлов, по одному на каждую попытку загрузки с ошибками.

h2. Возможные ошибки

При попытке загрузить данные зафиксирована ошибка в логе *worker*

{code:title= Лог службы worker /app/asr_billing/var/log/worker.log} 2020-08-15 10:20:35,502 - worker - csv_loading - ERROR - Ошибка при обработке выгрузки csv: file_name=/var/autocsv/sber/SB_3000_01082020.csv
2020-08-15 10:20:35,503 - worker - csv_loading - ERROR - 'utf8' codec can't decode byte 0xc4 in position 49: invalid continuation byte
{code}

Необходимо проверить, в какой кодировке на данный момент загружается файл csv и выставить соответствующие настройки в обработчике */app/asr_billing/cfg/autocsv/name.autocsv*