Skip to main content

Финплатформа

Project description

Финплатформа

Финплатформа - готовое приложение для ведения бизнеса МФО, реализованная на фреймворке Django.

Изменения в версиях

v1.0.47

  • Доработан коннектор сервиса smsc. Исправлена отправка запросов к серверу через requests с таймаутами и обработка исключений.

v1.0.46

  • Доработана проверка прав для поиска сделок и приема платежа.

v1.0.45

  • Исправлен баг в запросе сделок в API 1С МФО (попадали сделки, не имеющие отношения к фильтру по датам).
  • Выдача результатов сделана постраничной. По умолчанию выводится по 30 сделок за запрос. Управлять количеством сделок на странице можно GET-параметром per_page. Переход по страницам осуществляется GET-параметром page.

v1.0.44

  • Доработано API 1C МФО. Теперь в выборку попадают не только сделки, у которых дата выдачи

    = dt_start, <= dt_end, а также сделки, по которым были произведены оплаты в период dt_start - dt_end.

v1.0.43

  • Исправлен баг с временными зонами при расчете графика работы офиса.

v1.0.42

  • Исправлен баг в расчете графика работы офиса.

v1.0.41

  • Исправлен баг в поиске графика работы офиса.

v1.0.40

  • Исправлен расчет времени открытия/закрытия офиса (метод Office.get_schedule()). Теперь метод учитывает временную зону при расчете времени.

v1.0.39

  • Добавлены графики работы офисов по дням недели и по конкретным датам.
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.38

  • Доработана сортировка списка переводов (добавлено уникальное поле для сортировки, id).
  • Внесены правки в шаблон templates/processes/transfers/deposit/process_data.html
  • Добавлен фильтр по ФИО контрагента в отчетах по выдаче займов.

v1.0.37

  • Изменен тип данных c integer на float полей для сумм в процессе "Контроль офиса".
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.36

  • Исправлена миграция по удалению старой модели в логах.

v1.0.35

  • Добавлен шаблон templates/smthwrong.html, который можно использовать для обработки ошибок в views, переопределяя метод render_to_response и указывая template_name = 'smthwrong.html'.
  • Доработана обработка незаполненных шагов анкеты контрагента с помощью нового шаблона (smthwrong.html).

v1.0.34

  • Доработано заполение анкеты контрагента (физлицо). Все последующие вкладки анкеты будут доступны при условии, что все предыдущие обязательные вкладки заполнены информацией.

v1.0.33

  • Добавлен метод get_doc_number() в модели сделки и оплаты. Возвращает номер РКО/ПКО соответственно.

v1.0.32

  • Добавлена возможность изменить сумму сделки в панели администрирования. При изменении суммы, изменяется сумма на счете офиса.
  • Доработано удаление сделки. При удалении сделки обновляется сумма на счете офиса, в котором была выдана сделка. Сумма на счете не обновляется, если статус сделки "Оформление" или "Отмена". При всех остальных статусах сделки, сумма обновляется. При удалении сделки с оплатами, выполняется явное удаление каждой оплаты, т.к. при удалении оплат также обновляется сумма на счете офиса.

v1.0.31

  • Добавлен метод получения номера сделки get_number() в модель сделки. Обратная совместимость соблюдена. К номеру сделки можно по-прежнему обратиться через deal.number

v1.0.30

  • Внесены правки в приложение logs. Добавлен просмотр лога всей системы (django).
  • Настройки логгера django включены в настройки финплатформы. Логгеры по-прежнему можно переопределять в настройках приложения.
  • Доработано формирование задач по сопровождению. Если по сделке есть активные (незавершенные) задачи по сопровождению, то новые задачи формироваться не будут. Исключение составляют задачи по автоматической отправке смс.
  • Исправлена отправка форм, в которых есть поле ввода даты с маской. При отправке формы, если поле не заполнено датой, то значение поля очищается.
    После обновления необходимо выполнить команду python manage.py collectstatic
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.28

  • Исправлена синтаксическая ошибка в расчете портфеля.

v1.0.27

  • Исправлен расчет портфеля.
  • Добавлена маска для всех полей ввода даты.
    После обновления необходимо выполнить команду python manage.py collectstatic

v1.0.26

  • Доработан шаблон истории оплат по сделке.

v1.0.25

  • Добавлено необязательное поле "Адрес судебного участка" в настройки офиса в панели администрирования.
  • К полям "Сделка", "Менеджер", "Офис" оплат применен виджет autocomplete при создании/редактировании оплаты в панели администрирования.
  • В истории платежей по сделке и в списке платежей в панели администрирования добавлена расшифровка по безналичным платежам.
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.24

  • Добавлена ссылка на печать анкеты в "Сделки" в панели администрирования.
  • Реализована возможность указать дробные числа в "Ставка по займу", "Ставка при просрочке" в настройках кредитного продукта.
  • Убран чекбокс "Сохранить как новый документ" в редактировании паспортных данных контрагента.
  • Произведен небольшой рефакторинг кода.
  • Добавлен процесс изменения ПД контрагентов (физлиц)
  • Добавлено необязательно поле "Адрес офиса" в настройки офиса в панели администрирования.
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.23

  • Добавлена обработка ответа от коннектора телеграм. При некорректном ответе производится запись уровня INFO в лог "Финплатформа".
  • Исправлено значение по умолчанию параметра "enabled" на False для коннекторов, требующих обязательный ввод настроек (api ключи, логины, пароли и т.д.). К таким коннекторам относятся dadata, fssp, sms, telegram и др.
  • Исправлена проверка на открытые сделки в процессе выдачи займа. Добавлены статусы STATUS_PENALTY (взыскание), STATUS_IRRETRIEVABLE (невозвратный долг), при которых также нельзя выдать новую сделку до закрытия предыдущей.
  • Исправлена ошибка в проверке при закрытии офиса.

v1.0.22

  • Добавлены штрафы в расчет дохода в приложении "Балансы".
  • Доработан вывод статуса проверки паспорта (сервис dadata) при одобрении займа. Выводятся статусы: "Сервис проверки паспорта недоступен или отключен", если сервис отключен в панели администрирования, "Паспорт среди недействительных не значится", "Неправильный формат серии или номера", "Недействительный паспорт", "Информация не найдена".

v1.0.21

  • Исправления в интерфейсе и расчетах баланса и портфеля.
  • Реализована возможность установить значение 0 в поле "Ставка при просрочке" в настройках кредитного продукта (ранее при вводе 0 копировалось значение поля "Ставка по займу").
  • Реализована возможность установить значение 0 в поле "Начисления при просрочке" в настройках кредитного продукта. Ранее такая возможность была, но при значении 0 в данном поле начисления продолжались до фактического закрытия сделки. После текущего исправления начисления начнутся после даты завершения сделки (расчетной даты: дата выдачи+срок), т.е. никогда.
  • Добавлена настройка "Уведомления телеграм" в настройки приложения "Процесс "Контроль офиса". С помощью данной настройки можно включать/отключать телеграм-уведомления только для данного приложения.

v1.0.20

  • Добавлен отчет Васильева А. по выдаче займа. Название отчета - "Выдача займа PDL (расширенный)".
  • Убраны ссылки генерации документам по безналичным платежам в панели администрирования.
  • Реализовано обновление счета/счета офиса при удалении платежей.
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.19

  • Убрана предыдущая правка из v1.0.18 на добавление проверки на chain в оплатах в панели администрирования. Chain должен генерироваться всегда.

v1.0.18

  • Убран ошибочный атрибут unique=True поля type модели crprods.models.Template
  • Добавлена проверка на chain в оплатах в панели администрирования. Если chain отсутствует, то ссылка на генерацию платежа целиком не выводится.
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.17

  • Исправлены некоторые ошибки, возникающие при разворачивании дистрибутива с нуля
  • Изменен параметр auto_now=True полей dt_orig в моделях Deal, Payment на auto_now_add=True, убрано ненужное переопределение метода save() этих моделей
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.16

  • Реализовано удаление сделок из панели администрирования.
    • если удалить оплату по сделке, то будет удалена только оплата;
    • если удалить процесс по сделке, то будет удален только процесс, сделка и оплаты не будут удалены;
    • если удалить сделку, то будет удален процесс по сделке и оплаты.
  • Убрана проверка на несуществующее разрешение managers.can_view_modules в templates/_includes/menu/modules.html
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.15

  • Поправлен метод Manager.get_managers() в managers/models.py. Добавлена проверка на state=1 в персональных данных, что позволило избежать дублирующихся записей одного и того же менеджера.
  • Доработана панель администирования менеджеров. Добавлены некоторые информационные поля на странице со списком менеджеров. Добавлен поиск по фамилии менеджера и названию офиса.
  • Создан CustomFormsetMixin в extensions/mixins/forms.py для проверки формсетов, вложенных в некую "основную" форму.
  • Исправлена ошибка пагинатора. При переходе на последнюю страницу набора, данная страница дублировалась в пагинаторе.
  • Добавлена библиотека Chart.min.js для построения различных графиков.
  • Добавлен метод генерации случайного цвета в static/base/js/finplatform.js
    После обновления необходимо выполнить команду python manage.py collectstatic

v1.0.14

  • Рефакторинг работы с коннекторами. Проверки на "активность" коннекторов перенесены в методы самих коннекторов и убраны из мест их использования в приложениях

v1.0.13

  • Добавлены ссылки на генерацию документов по сделке из панели администрирования. Поиск сделок осуществляется по номеру сделки, фамилии контрагента, названию офиса.
  • Добавлены оплаты по сделкам и генерация документов по ним в панель администрирования. Поиск оплат осуществляется по номеру сделки, номеру ПКО, фамилии менеджера, названию офиса.
  • Доработан коннектор телеграм: теперь можно отправлять сообщения в разные чаты. По умолчанию указывается id чата в настройках коннектора и, если в методе отправки сообщения не указан иной чат, то сообщение будет отправлено в чат по умолчанию. Настройка чата отличного от умолчания добавлена в настройки приложения "Контроль офиса"
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.12

  • Увеличен шрифт комментариев к телефонам на странице выполнения задания по сопровождению
  • Добавлен css для таймлайнов
  • Добавлена возможность добавлять экстра контент в левую часть шаблона задачи по процессу (viewflow/flow/base_task.html)
    После обновления необходимо выполнить команду python manage.py collectstatic

v1.0.11

  • Исправлен баг при обновлении информации о сделке через панель администрирования: при сохранении обновлялась дата выдачи (dt_orig) на текущую

v1.0.10

  • Внесены измненения в описание полей сделки и их отображение в панели администирования
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.9

  • Создано поле get_dt_closed в deals_deal, содержащее дату закрытия сделки
  • Добавлен статус сделки "невозвратный долг" (irretrievable)
  • Убрано автоматическое заполнение суммы долга при приеме платежа
    После обновления необходимо выполнить команду python manage.py migrate

v1.0.8

  • Исправлена рассылка писем из приложения "Балансы"
  • Добавлена возможность указывать получателей рассылки приложения "Балансы" из панели администрирования "Настройки приложений"

v1.0.7

  • Исправлен расчет сумм в офисе в процессе "Закрытие смены"
  • Добавлен templatetag addf, который позволяет складывать числа с плавающей точкой (стандартный фильтр django add преобразовывает числа в int)
  • Breadcrumbs в сопровождении
  • Определен шаблон для страницы с 500-й ошибкой сервера

v1.0.6

  • Исправлен баг отображения телефонов контрагентов при редактировании данных. (Баг: при наличии нескольких мобильных номеров мог отображаться несколько раз один и тот же номер)
  • Доработан прием оплаты: при полном погашении сделки автоматически закрываются активные задачи по сопровождению данной сделки

v1.0.5

  • Доработано отображение списка страниц при их большом количестве
  • Доработаны breadcrumbs в процессах (список процессов, просмотр процесса)
  • Исправлена ошибка при приеме платежа с копейками
  • Выведена более подробная информация о предыдущих сделках в списке сделок при оформлении сделки

v1.0.4

  • Добавлен поиск сделки по ее номеру в панели администрирования
  • Исправлены логи "Финаплатформа" в панели администрирования
  • Добавлена возможность принять платеж по сделкам со статусом "Взыскание"

v1.0.3

  • Правка js функционала копирования в буфер обмена

v1.0.2

  • Добавлен javascript функционал для копирования текста в буфер обмена
    Пример использования:
html
<p>
    <span class="clipboard-target">Текст для копирования</span>
    <a class="clipboard-button" href="javascript:void(0);" title="Скопировать в буфер обмена">
        <i class="material-icons v-middle">content_copy</i>
    </a>
</p>

Заключите элемент с текстом, который нужно скопировать и саму кнопку в любой контейнер (в примере выше, это <p>).

v1.0.1

  • Обновлены зависимости при установке дистрибутива
  • В отчет по процессу "Выдача займа" добавлен фильтр по дате создания процесса

Установка

  • Разверните виртуальную среду virtualenv имя-директории-виртуальной-среды (например, venv)
  • Активируйте виртуальную среду source venv/bin/activate
  • Установите дистрибутив finplatform: pip install finplatform
    Если дистрибутив уже установлен, обновить его можно командой pip install --upgrade finplatform
    Если по каким-либо причинам при обновлении дистрибутива используется кешированная версия, то выполните обновление следующей командой pip install --upgrade finplatform --no-cache
  • Создайте директорию Вашего будущего приложения и перейдите в нее. (например, myapp)
  • Находясь внутри директории myapp создайте точку входа в Ваше приложение django-admin startproject myapp . (точка в конце команды обязательна, иначе будет создана директория myapp, а в ней еще одна myapp)
    Django создаст весь необходимый каркас, который необходимо немного настроить.
  • Откройте файл myapp/settings.py любым текстовым реадктором.
    Внесите следующие изменения:
    • После строки import os добавьте from finplatform.settings import *
    • Если Вы не планируете выполнять разработку Вашего проекта, установите переменную DEBUG = False
    • Переменную INSTALLED_APPS приведите к следующему виду
      INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] + FINPLATFORM_APPS
      Другими словами, необходимо удалить строку django.contrib.admin и добавить к списку приложений FINPLATFORM_APPS.
      django.contrib.admin необходимо убрать, т.к. он уже включен в FINPLATFORM_APPS по причине переопределения некоторых шаблонов панели администрирования.
      • Переменную TEMPLATES приведите к следующему виду
        TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ] + FINPLATFORM_CONTEXT_PROCESSORS, }, }, ]
        Т.е. необходимо добавить FINPLATFORM_CONTEXT_PROCESSORS к контекст процессорам.
      • Добавьте настройки хранения/чтения статических файлов (css, js, images и пр.)
        STATIC_URL = '/assets/' STATIC_ROOT = 'assets'
        По умолчанию Django создает STATIC_URL = '/static/'. Рекомендуем изменить это имя на любое другое, например, assets, как в примере выше. Имя директории и URL могут отличаться друг от друга.
      • Определение директории, где система будет хранить файлы, загруженные пользователями системы
        MEDIA_ROOT = 'media' MEDIA_URL = '/media/'
        Имя директории и URL могут быть любыми и могут отличаться друг от друга.
      • При входе/выходе из системы выполняется редирект на главную страницу панели администрирования или на ее страницу авторизации соответственно. Если вы хотите изменить данное поведение, то добавьте следующие строки
        LOGIN_REDIRECT_URL = '/' LOGOUT_REDIRECT_URL = '/'
        При такой настройке редирект будет выполняться на главную страницу frontend'a системы. Вы можете указать любой необходимый Вам URL.
      • По умолчанию авторизация в Django выполняется по логину и паролю. Если Вы хотите изменить это поведение для возможности авторизации по email и паролю, добавьте следующий код
        AUTHENTICATION_BACKENDS = [ 'finplatform.auth.UserEmailBackend', ]
        Если вы хотите оставить возможность авторизации по логину и добавить возможность авторизации по email, то ваш код будет выглядеть следующим образом
        AUTHENTICATION_BACKENDS = [ 'finplatform.auth.UserEmailBackend', 'django.contrib.auth.backends.ModelBackend' ]
      • Логгирование. Пакет Финплатформа включает в себя настроенный логгер для собственного функционала. При необходимости, Вы можете расширить или полностью переопределить переменную LOGGING в Ваших настройках.
      • Дополнительно Вы можете задать любые настройки Django приложения. Все настройки и их описание можно прочитать по адресу: https://docs.djangoproject.com/en/2.0/ref/settings/
  • Выполните команду в консоли pyton manage.py migrate для инициализации базы данных системы.
  • Загрузите первоначальные данные в БД. Для этого необходимо выполнить команду в консоли py manage.py loaddata initial_data.json. Файл initial_data.json находится в каталоге finplatform вашей виртуальной среды. Вы можете скопировать этот файл в корневой каталог вашего проекта и выполнить команду выше либо прописать полный путь к файлу при выполнении команды.
  • Откройте файл myapp/urls.py любым текстовым редактором и внесите следующие изменения
    • После строки from django.urls import path добавьте from finplatform.urls import urlpatterns as fp_urlpatterns
    • Приведите переменную urlpatterns к следующему виду
      urlpatterns = [ url(r'^admin/', admin.site.urls), ] + fp_urlpatterns
  • Выполните команду в консоли python manage.py collectstatic

Если все прошло успешно, то установка дистрибутива завершена успешно. Вы можете запустить ваш сервер и пользоваться приложением.
Логин администратора: admin
Пароль администратора: start123
Логин и пароль можно изменить в панели администрирования: http://адрес-вашего-сервера/admin/

Периодические задания

В дистрибутив Финлатформы включены некоторые периодические задачи, такие как сопровождение клиентов, парсинг органов УФМС и другие. Для обеспечения работы периодических задач, создайте файл celery.py, например, в каталоге "точки входа в ваше приложение", по примерам выше, это myapp/myapp/
Вставьте следующий код в файл, замените YOUR_APP_NAME на имя вашего проекта (по примеру выше myapp) и сохраните его.
Данный код вы также сможете найти в finplatorm/celery.py вашей виртуальной среды. При обновлении версии дистрибутива данный файл также будет обновляться, при условии появления новых периодических задач. Файл находится в дистрибутиве для примера, не используйте его для реального исполнения.

import os
from celery import Celery
from celery.schedules import crontab
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'YOUR_APP_NAME.settings')

app = Celery('YOUR_APP_NAME')

app.config_from_object('django.conf:settings')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks(settings.INSTALLED_APPS)

app.conf.beat_schedule = {
    'create-balance': {
        'task': 'finplatform.balances.tasks.auto_save_balance',
        'schedule': crontab(minute=1, hour=19),  # change to `crontab(minute=0, hour=0)` if you want it to run daily at midnight
    },
    'loans-management': {
        'task': 'finplatform.deals.management.tasks.do_management',
        'schedule': crontab(minute=1, hour=1), 
    },
    'ufms-parser': {
        'task': 'finplatform.services.ufms.tasks.parse',
        'schedule': crontab(minute=0, hour=0, day_of_month=1),
    }
}

Далее необходимо настроить исполнение этого файла на вашем сервере.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
finplatform-1.0.47-py3-none-any.whl (4.3 MB) Copy SHA256 hash SHA256 Wheel py3
finplatform-1.0.47.tar.gz (3.7 MB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page