Биллинговая система Nodeny

Главная категория => Модули NodenyPlus => Тема начата: Efendy от 26 Июня 2019, 23:09:25



Название: Платежи из файла
Отправлено: Efendy от 26 Июня 2019, 23:09:25
Пока тестируется

http://nodeny.com.ua/wiki/index.php/%D0%9F%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%B8_%D0%B8%D0%B7_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0


Название: Re: Платежи из файла
Отправлено: WideAreaNetwork от 28 Июня 2019, 08:41:45
я правильно понимаю что это для импорта в биллинг выписки с банка?


Название: Re: Платежи из файла
Отправлено: Efendy от 28 Июня 2019, 13:30:30
я правильно понимаю что это для импорта в биллинг выписки с банка?
да


Название: Re: Платежи из файла
Отправлено: uaapollo от 22 Августа 2019, 10:27:56
Добрый день!

у меня была проблема, если в файле встречаются кавычки, то говорит что не корректная строка.

добавил $line =~ s/"//g;

проблема решена.


Название: Re: Платежи из файла
Отправлено: uaapollo от 22 Августа 2019, 10:35:57
И вот еще.
Это пофиксил так
$amount =~ s/\s+//g;


Truncated incorrect DOUBLE value: '1 000.00'

{
  'param' => [
    '1 000.00',
    '1 000.00',
    '1413'
  ],
  'sql' => 'UPDATE users SET state = IF(balance+(?) >= limit_balance, \'on\', state), balance=balance+(?) WHERE id=?'
};
 
 UPDATE users SET state = IF(balance+('1 000.00') >= limit_balance, 'on', state), balance=balance+('1 000.00') WHERE id='1413'


Название: Re: Платежи из файла
Отправлено: garik24 от 07 Сентября 2019, 00:20:30
Установил модуль "Платежи из файла"
Установил модуль перл "Text::CSV   2.00" согласно документации  
Код:
cd /usr/ports/textproc/p5-Text-CSV && make install clean

Debug выдает ошибку "Can't locate Text/CSV_XS.pm in @INC (you may need to install the Text::CSV_XS module)"

Проблема решена установкой соответствующего модуля:
Код:
cd /usr/ports/textproc/p5-Text-CSV_XS && make install clean


Прошу отразить в документации необходимость установки дополнительного модуля. Спасибо



Название: Re: Платежи из файла
Отправлено: garik24 от 21 Сентября 2019, 13:06:30
И вот еще.
Это пофиксил так
$amount =~ s/\s+//g;


Truncated incorrect DOUBLE value: '1 000.00'

{
  'param' => [
    '1 000.00',
    '1 000.00',
    '1413'
  ],
  'sql' => 'UPDATE users SET state = IF(balance+(?) >= limit_balance, \'on\', state), balance=balance+(?) WHERE id=?'
};
 
 UPDATE users SET state = IF(balance+('1 000.00') >= limit_balance, 'on', state), balance=balance+('1 000.00') WHERE id='1413'

Подтверждаю, символы " в выписке приводят к ошибке.

Кроме того, некоторые бюджетники любят злоупотреблять ; в назначении платежа.

Не разобрался какие именно строки править.

uaapollo, Вы могли бы поделиться diff'ом?


Название: Re: Платежи из файла
Отправлено: WideAreaNetwork от 22 Сентября 2019, 07:05:26
тут скорее не править нужно, а модуль доработать


Название: Re: Платежи из файла
Отправлено: Efendy от 22 Сентября 2019, 11:19:44
Ну попросите, может стандарт csv под вас изменят: http://www.rfc-editor.org/rfc/rfc4180.txt - написано, что двойные кавычки в тексте должны дублироваться. Парсит csv модуль не биллинга, а perl, протестированный тысячами людей


Название: Re: Платежи из файла
Отправлено: Efendy от 22 Сентября 2019, 11:24:39
добавил $line =~ s/"//g;
"исправив" таким образом ты породил другую проблему. Было, например:
Цитировать
"Привет;друг";10грн
Станет
Цитировать
Привет;друг;10грн
и во втором поле парсер вместо 10грн увидит "друг". Предлагаю просто давать входные данные по стандарту csv - почитайте википедию, там страница текста всего


Название: Re: Платежи из файла
Отправлено: dolphin.zp от 23 Декабря 2019, 10:14:21
как взять из другой таблицы имя поля в базе данных , в котором хранится идентификатор абонента (user_field_in_db) ? например нужен  users.name 


Название: Re: Платежи из файла
Отправлено: Efendy от 23 Декабря 2019, 12:15:49
Пока никак. Усовершенствую модуль. Сообщу


Название: Re: Платежи из файла
Отправлено: Efendy от 23 Декабря 2019, 14:41:43
Скачай модуль заново. Документацию обновил


Название: Re: Платежи из файла
Отправлено: dolphin.zp от 23 Декабря 2019, 15:44:19
Скачай модуль заново. Документацию обновил
спасибо


Название: Re: Платежи из файла
Отправлено: Maks от 01 Июня 2021, 14:04:16
Подскажите, а где можно проверить работу модуля. Посмотреть как он парсит.

Попробовал в демке, но там Загрузить из файла не работает.

Или кто уже пользуется подскажите как парсит модуль.

Я так понимают выполняется поиск по номеру договора ?
А как быть если договор написан не полностью.

К примеру есть договор 1234 как будет распознан если в номере договора (варианты):
- 1234
- 1234.20
- №1234
- 12345


И что будет с теми что парсер не нашел, можно ли сразу их отметить верным номером договора


Название: Re: Платежи из файла
Отправлено: Efendy от 02 Июня 2021, 21:18:29
Сделал чтоб в демке работало, также обновил доку  (http://nodeny.com.ua/wiki/index.php/%D0%9F%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%B8_%D0%B8%D0%B7_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0#.D0.9E.D1.88.D0.B8.D0.B1.D0.BA.D0.B8_.D0.B2_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85)
а также сделал фичу чтоб можно было подгонять идентификаторы под нужный формат (в доке описано)


Название: Re: Платежи из файла
Отправлено: Maks от 03 Июня 2021, 10:32:22
Спасибо, что починили демку.

Но, что-то беда с кодировкой.

Для файла кодировка точно cp1251, но вот после импорта вижу крякозаблы. Подскажите в чем причина.

P.S А группы в телеграмме случаем нет, где владельцы биллинга могли бы общаться на такие вопросы и помогать друг другу.


Название: Re: Платежи из файла
Отправлено: Efendy от 05 Июня 2021, 12:50:58
прикрепи файл. я пробую на ср1251 и у меня все ок


Название: Re: Платежи из файла
Отправлено: Maks от 07 Июня 2021, 14:15:16
Прикрепил


Название: Re: Платежи из файла
Отправлено: Efendy от 07 Июня 2021, 21:19:03
Прикольно, ты закинул в обработку файл с совершенно иной структурой чем задана в конфиге. Система выудила текст вместо суммы денег. Нарисовало ошибку, но саму ошибку вывело в цп1251. Я это исправил. Но я надеюсь, что после этого ты в документах настроишь правильный конфиг чтоб он соответствовал твоей структуре?


Название: Re: Платежи из файла
Отправлено: Maks от 08 Июня 2021, 12:29:55
Подправил шаблон под мой документ, но вот ситуация с крякозяблами осталась.
Индификатор клиента находится в поле комментария платежа.

К примеру Плата за комунальнi послуги, о/р 7118,
7118 это номер договора.

В Демке такой договор создал, но при импорте парсер пишет что такого договора нет.

Также подскажите как узнать user_field_in_db
Хотел найти его тут: Настройки - дополнительные поля, но его там нет.


Название: Re: Платежи из файла
Отправлено: Efendy от 09 Июня 2021, 08:23:46
Благодаря тому, что ты не хочешь согласно документации указать, что первая строка в файле не является данными (skip_first_line = 1), а является заголовком, я исправляю проблемы с цп1251. Норм.

Код:
user_regexp_in = .*?(\d{3,10}).*
user_regexp_out = $1
этот шаблон выудит первое число длинной от 3 до 10 цифр


Название: Re: Платежи из файла
Отправлено: Maks от 10 Июня 2021, 14:53:38
Спасибо. Теперь работает.

Может кому пригодится, рабочие настройки для парсера Привата.

Код:
file_format = csv
file_encoding = cp1251
csv_delimiter = ;
skip_first_line = 1
user_column_number = 13
user_field_in_db = contract
action_when_many_users = ignore
amount_column_number = 12
only_positive_amount = 1
div100_amount = 0
comment_column_number = 13
date_column_number = 6
date_column_format = %d.%m.%Y %H:%M
unique_columns = 5,9
user_db = users
user_id_in_db = id
user_regexp_in = .*?(\d{3,10}).*
user_regexp_out = $1


А дальнейшее развитие модуля ожидается ?
Выписки по API можно получать и полностью автоматизировать этот процесс аналогично как в других билингах.


Название: Re: Платежи из файла
Отправлено: Efendy от 10 Июня 2021, 15:01:45
А дальнейшее развитие модуля ожидается ?
Предлагай что добавить


Название: Re: Платежи из файла
Отправлено: Maks от 10 Июня 2021, 16:47:42
В Приват 24 для бизнеса в разделе Автоклиент можно настроить периодическое автоматическое получение выписок / остатков.
Как следующий шаг я вижу это автоматический автоклиент - парсер выписок.
Чтоб бугалтер не занимался глупой работой ежедневно. Автоматизация так сказать.

Вот детальное описание автоклиент
https://docs.google.com/document/d/e/2PACX-1vS8rx2WKg69o6JvG5L4AhSXcU6vxXcJph6WK84qJcAYDBvsNYEob57jDMQhbosjc9gRS5bOTqTXf0vb/pub
API
https://docs.google.com/document/d/e/2PACX-1vTtKvGa3P4E-lDqLg3bHRF6Wi9S7GIjSMFEFxII5qQZBGxuTXs25hQNiUU1hMZQhOyx6BNvIZ1bVKSr/pub


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


Название: Re: Платежи из файла
Отправлено: NodenY45 от 31 Июля 2021, 15:01:10
перестал работать модуль...
при пополнении оставляет только коментарий о том что пополнило, и не пополняет баланс. выдает ошибку платежа.
но в коментарии он то есть... и если ты его удаляешь - баланс уводит в минус.
при проверке биллинга perl nokernel.pl -m=system_check -v выдает "Есть расхождения суммы платежей и баланса клиента. Важность проблемы: 3"
Подскажите куда смотреть? и почему могло не пополнить?


Название: Re: Платежи из файла
Отправлено: NodenY45 от 01 Августа 2021, 18:38:21
перестал работать модуль...
при пополнении оставляет только коментарий о том что пополнило, и не пополняет баланс. выдает ошибку платежа.
но в коментарии он то есть... и если ты его удаляешь - баланс уводит в минус.
при проверке биллинга perl nokernel.pl -m=system_check -v выдает "Есть расхождения суммы платежей и баланса клиента. Важность проблемы: 3"
Подскажите куда смотреть? и почему могло не пополнить?

и как можно исправить это несоответствие(HAVING u.balance<>chk_balance)?
как удалить платежи которые не пополнили баланс учеток?

Код:
+------+---------+-------------+
| id   | balance | chk_balance |
+------+---------+-------------+
|   98 |    7.41 |      237.41 |
|  190 |   22.76 |      232.76 |
|  295 |   57.63 |      307.63 |
|  402 |  345.17 |      845.17 |
|  412 |    0.26 |      252.26 |
|  421 | -228.21 |        3.79 |
|  456 |  101.75 |      341.75 |
|  534 |    0.64 |      252.64 |
|  587 |   31.83 |      281.83 |
|  646 |   35.13 |      195.13 |
|  802 |    0.86 |      232.86 |
|  817 |    0.63 |      154.63 |
|  821 |    0.09 |      252.09 |


Название: Re: Платежи из файла
Отправлено: jack_frost от 17 Сентября 2021, 15:35:17
Добрый день. Установили этот модуль. Сейчас занимаюсь настройкой. И сразу вонзник вопрос.

Часто абоненты при оплате не указывают свой лицевой счет, но указывают номер договора.
Или просто указаны ФИО.

Можно искать не по одному полю идентификатору (из базы)?
Например:
user_field_in_db = _os_rah, _contract, _fio


Название: Re: Платежи из файла
Отправлено: Warlock от 18 Сентября 2021, 13:50:57
Вообще код оплаты это уникальный номер. ФИО может быть одинаковое у абонентов. Проще их переучить.


Название: Re: Платежи из файла
Отправлено: jack_frost от 20 Сентября 2021, 07:44:30
Значит искать по номеру договора (у нас он тоже индивидуальній) и по лицевому счету.
Вообще, есть возможность искать по нескольким ключемвым полям?


Название: Re: Платежи из файла
Отправлено: Efendy от 20 Сентября 2021, 23:46:22
нет