Доработка ПО (С# + MS SQL) для групп лиц и бенефициаров

Денис8 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
20.07.2017

Есть самописное ПО по архитектуре "клиент – сервер" (С# + MS SQL). 

Цель существующего ПО: на основании связей между физическими и юридическими лицами по определенным критериям, регламентированным законодательством, определить группы лиц. 

Цель новых доработок: на основании связей между физическими и юридическими лицами по определенным критериям, регламентированным законодательством, определить кто является бенефициарами (взаимозависимыми лицами) для конкретной организации. 

Структура БД очень простая (см. рис. 1). Фактически существует 2 основные таблицы: физические и юридические лица и ряд вспомогательных таблиц (различные категории, параметры и классификаторы) и связующих таблиц, характеризующих связи между основными таблицами. Физические лица могут быть связаны между собой по признаку родства. Юридические лица могут быть связаны между собой по признаку владения. Юридические и физические лица связаны между собой по признакам владения и трудовых договорных отношений. 

В Статье 9 ФЗ №401 заложены четких критерии, которые определяют, кто относится к группе лиц. Эти критерии заложены в программу. Результатом работы программы является граф, который характеризует группу лиц. 

Граф может быть представлен в древовидной форме (см. рис. 2). 

Граф может быть выгружен в Visio и представлен в графической форме в виде модели взаимосвязей (см. рис. 3). 

Есть разработанное ТЗ на реализацию нового функционала. 

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

Требования к новому функционалу (программа должна иметь следующие возможности): 

1. Возможность регистрации/корректировки информации, влияющей на определения бенефициаров; 

2. Возможность просмотра информации о бенефициарах в различных формах (на форме пользовательского интерфейса, в виде журнала (таблицы),  в форме печатного документа, в древовидной форме, в форме графической модели); 

3. Обязательная поддержка актуальности информации в режиме онлайн (т.е. изменение взаимосвязей между сущностями, может последовательно привести к изменению информации в других сущностях). 

4. Необходимо разработать функционал для хранения информации о том, кому, когда и какую информацию о бенефициарах представляли. 

Задачи для разработки нового функционала: 

1. Создать структуры БД для определения и хранения информации о бенефициарах (поля, галочки, столбцы); 

2. Создать (доработать существующие) необходимые интерфейсные компоненты для отображения информации о бенефиацарах (поля, формы, журналы, печатные формы); 

3. Разработать алгоритмы для определения бенефициаров и поддержания информации в актуальном состоянии (хранимые процедуры, триггеры); 

4. Разработать средства представления информации в графическом виде: в виде графа и модели взаимосвязей. 

Помимо основных задач для нового функционала, существуют второстепенные, которые также требуют доработки (см.ТЗ), 

например: 

1. Убрать обязательность заполнения поля 

2. Добавить новое значение в список существующих (если нет интерфейса); 

3. Скорректировать форму отчета 

На данный момент требуется определить ориентировочные сроки и стоимость реализации данного ТЗ.