Мы разрабатываем систему генерации заработной платы для клиента.
Организация, на которую мы нацелены, имеет следующую иерархию:
Компания -> Кластер -> Бизнес-единица (БУ) -> Отдел -> Сотрудник
Заработная плата работника состоит из различных компонентов заработной платы.
У каждого компонента зарплаты есть 3 правила, связанные с ним, Правило расчета (рассчитать компонент как% от другого компонента, или% от фиксированного числа или фиксированного числа), Правило соответствия (имеет ли право сотрудник / отдел для компонента) и правило ограничения, ограничивающее максимальные и минимальные значения компонента.
Эти правила доступны для редактирования и могут редактироваться конечным пользователем . Также эти правила наследуются сверху вниз, но если они определены на более низком уровне, правило более низкого уровня имеет приоритет.
У нас есть база данных, в которой есть таблицы посещаемости, листьев, бонусов, и эти правила также должны взаимодействовать с этими таблицами.
Клиент будет генерировать платежную ведомость для нескольких клиентов, на каждом из которых будет размещен экземпляр отдельной базы данных. Каждый из них может иметь различную интерпретацию каждого компонента и может иметь разные компоненты.
Мы рассчитываем только на поддержку SQL Server, и создание платежной ведомости будет автономным действием.
Мы разделены на том, где разместить логику, которая использует эти правила для генерации отдельных компонентов налога (которые будут включать налоговые вычеты, налоговые списания, надбавки и т. Д.).
Некоторые люди защищают магических SP, которые берут идентификатор сотрудника и генерируют заработную плату за этот месяц.
Другие хотят, чтобы логика была разделена на отдельные компоненты, которые будут получать зависимые данные для сотрудника на прикладном уровне и вычислять эти компоненты там.
Порядок наших приоритетов:
1. Возможность быстро адаптировать изменения к новым клиентам
2. Долгосрочная ремонтопригодность
3. Производительность
1 и 2 перевешивают 3 здесь в значительной степени, так как это будет автономная деятельность.
Обслуживание и быстрая настройка очень важны, мы будем развертывать приложение для разных клиентов.
Клиент А может иметь Правило Компонента Зарплаты как ((0,3 * Базовый) + 800)
и клиент B как (0,2 * базовый) + (0,1 * бонус за посещение)
Будет ли SP вызывать здесь беспорядок, так как правила, предложенные выше, будут определены конечным пользователем и должны будут настраиваться через веб-интерфейс.
Придется разбирать формулы из SQL. Насколько это будет сложно или легко?
Какое преимущество будет иметь это на уровне приложений (C # .Net) по сравнению с использованием SP?
Предложения и ссылки на архитектуру существующих систем будут очень полезны.
... и да, мы используем LINQ to SQL в других местах системы.
С уважением,
Ашиш Шарма