Описание
Поиск абонента в биллинге
Поиск абонента происходит по номеру договора. Параметр в конфигурационном файле:
contract_number: 0 # Параметр поиска абонента
При необходимости можно производить поиск абонента в биллинге по одному из реквизитов, например по ИНН. Для этого в конфигурационном файле нужно задать два параметра:
contract_number: 0 # Параметр поиска абонента special_search_param: 'attr 4' # Специальный параметр поиска, например 'attr 4' = реквизит 4, то есть ИНН
Проверка платежа на уникальность
При загрузке биллинг проверяет уникальность платежа. Это нужно, чтобы при повторной загрузке платежи не дублировались. Полезно, если:
- Вы повторно загружаете тот же файл, например с исправленными ошибками;
- При загрузке платежей уже поступивших в биллинг из платёжной системы для сверки и исправления ошибок.
Проверка проходит по паре параметров pay_id_str и pay_operator. Поиск по pay_operator регистронезависимый, то есть значения Sberbank и SBERBANK - идентичны.
Настройка
Для того чтобы платежи выгрузить из CSV автоматически нужно:
- Зайти в chroot /app/asr_billing
chroot /app/asr_billing
- Создать папку /cfg/autocsv с правами chmod 755 /cfg/autocsv
mkdir /cfg/autocsv/ chmod 755 /cfg/autocsv/
- В этой папке создаются конфигурации для автоматической выгрузки. Они должны иметь расширение *.autocsv и права chmod 755 /cfg/autocsv/*.autocsv
- Например pochtarf.autocsv, содержание которого, может быть следующим
# Обязательные параметры csv_path: '/var/autocsv/pochtarf/' contract_number: 0 # Параметр поиска абонента sum_in: 1 # Сумма платежа pay_id_str: 2 # Уникальный номер платежа # Необязательные параметры operator_date_in: 3 # Дата платежа operator_datetime_date_in: 31 # Дата платежа состоит из двух столбцов, столбец с датой operator_datetime_time_in: 32 # Дата платежа состоит из двух столбцов, столбец со временем # Столбцы даты и времени соединяются пробелом и заменяют operator_date_in date_format: '%Y.%m.%d %H:%M:%S' # Формат даты и времени платежа csv_comment: '#' # Символ комментария (в начале строки для пропуска) csv_delimiter: ';' # Разделитель CSV-файла, по умолчанию - ; pay_operator: 'Почта РФ' # Название оператора, по умолчанию - Загрузка из CSV skip: 2 # Количество строк, которые нужно пропустить, по умолчанию - 0 encoding: 'windows-1251' # Входная кодировка, по умолчанию - utf-8 special_search_param: 'attr 4' # Специальный параметр поиска, например 'attr 4' = реквизит 4, то есть ИНН special_pay_id_param_list: [30, 31, 33] # Специальный список параметров для создания номера платежа, если нет уникального поля prevent_submit_check: 0 # параметр, отвечающий за отправку чеков в налоговую: 0 - отправлять чеки, 1 - не отправлять чеки, по умолчанию - 0 incoming_sign: {id: 27, value: C} # Специальный параметр признака поступления, будут загружаться только те платежи, у которых в колонке под номером 27 установлено значение "C"
где числа от 0 до 3 - это номера колонок в CSV-файле.
Колонки 0, 1, 2 обязательны.
Если колонки 3 не существует, то и в конфигурации её быть не должно.
Поддерживаемые форматы даты:
- %Y.%m.%d %H:%M:%S (2016.10.26 10:01:32)
- %Y%m%d%H%M%S (20161026100132)
BILL0005;500;ABC015;20161026100132 BILL0006;1000;AVC014;2016.10.26 10:01:32
Выгружать файлы можно следующими способами:
- По протоколу SSH в путь, который был указан в csv_path
- Через web-интерфейс вкладка операции у любой группы абонентов (Для этого способа так же необходимо создать конфигурационный файл, по примеру, который указан выше)
*Разделитель "табуляция" следует заводить так:
csv_delimiter: '\t' |
Решение проблем
- Ошибки импорта пишутся в лог воркера. Просмотрите лог:
Команда для просмотра лога
fgrep csv_loading /app/asr_billing/var/log/worker.log
Пример ошибки2019-01-09 21:25:38,559 - worker - csv_loading - ERROR - Абонент с номером договора 123456 не существует или удалён - пропускаем
- Посмотрите список платежей, которые не были загружены. Неверные данные помещаются в файл: incomings.csv.error.
Дынные отброшенные обработчиком
/app/asr_billing/var/autocsv/pochtarf/bad/incomings.csv.error
В каталоге может содержаться несколько файлов, по одному на каждую попытку загрузки с ошибками.
Возможные ошибки
При попытке загрузить данные зафиксирована ошибка в логе worker
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
Необходимо проверить, в какой кодировке на данный момент загружается файл csv и выставить соответствующие настройки в обработчике /app/asr_billing/cfg/autocsv/sber.autocsv.