Доработка ПО (С# + MS SQL) для групп лиц и бенефициаров
Есть самописное ПО по архитектуре "клиент – сервер" (С# + MS SQL).
Цель существующего ПО: на основании связей между физическими и юридическими лицами по определенным критериям, регламентированным законодательством, определить группы лиц.
Цель новых доработок: на основании связей между физическими и юридическими лицами по определенным критериям, регламентированным законодательством, определить кто является бенефициарами (взаимозависимыми лицами) для конкретной организации.
Структура БД очень простая (см. рис. 1). Фактически существует 2 основные таблицы: физические и юридические лица и ряд вспомогательных таблиц (различные категории, параметры и классификаторы) и связующих таблиц, характеризующих связи между основными таблицами. Физические лица могут быть связаны между собой по признаку родства. Юридические лица могут быть связаны между собой по признаку владения. Юридические и физические лица связаны между собой по признакам владения и трудовых договорных отношений.
В Статье 9 ФЗ №401 заложены четких критерии, которые определяют, кто относится к группе лиц. Эти критерии заложены в программу. Результатом работы программы является граф, который характеризует группу лиц.
Граф может быть представлен в древовидной форме (см. рис. 2).
Граф может быть выгружен в Visio и представлен в графической форме в виде модели взаимосвязей (см. рис. 3).
Есть разработанное ТЗ на реализацию нового функционала.
Главная цель нового функционала – на основании связей между юридическими и физическими лицами определить, кто является бенефициаром для конкретной организации. Правила определения бенефициаров определены законодательством.
Требования к новому функционалу (программа должна иметь следующие возможности):
1. Возможность регистрации/корректировки информации, влияющей на определения бенефициаров;
2. Возможность просмотра информации о бенефициарах в различных формах (на форме пользовательского интерфейса, в виде журнала (таблицы), в форме печатного документа, в древовидной форме, в форме графической модели);
3. Обязательная поддержка актуальности информации в режиме онлайн (т.е. изменение взаимосвязей между сущностями, может последовательно привести к изменению информации в других сущностях).
4. Необходимо разработать функционал для хранения информации о том, кому, когда и какую информацию о бенефициарах представляли.
Задачи для разработки нового функционала:
1. Создать структуры БД для определения и хранения информации о бенефициарах (поля, галочки, столбцы);
2. Создать (доработать существующие) необходимые интерфейсные компоненты для отображения информации о бенефиацарах (поля, формы, журналы, печатные формы);
3. Разработать алгоритмы для определения бенефициаров и поддержания информации в актуальном состоянии (хранимые процедуры, триггеры);
4. Разработать средства представления информации в графическом виде: в виде графа и модели взаимосвязей.
Помимо основных задач для нового функционала, существуют второстепенные, которые также требуют доработки (см.ТЗ),
например:
1. Убрать обязательность заполнения поля
2. Добавить новое значение в список существующих (если нет интерфейса);
3. Скорректировать форму отчета
На данный момент требуется определить ориентировочные сроки и стоимость реализации данного ТЗ.