我们正在为客户设计工资单生成系统。
我们所针对的组织具有如下层次结构:公司 -> 集群 -> 业务部门 (BU) -> 部门 -> 员工
员工的工资由各种工资组成部分组成。每个工资组件都有 3 个与之关联的规则,一个计算规则(将组件计算为另一个组件的百分比,或一个固定数字或固定数字的百分比),一个资格规则(员工/部门是否有资格获得一个组件)和限制组件的最大值和最小值的约束规则。
这些规则是可编辑的,并且可以由用户最终用户进行编辑。这些规则也是自上而下继承的,但如果在较低级别定义,则较低级别的规则优先。
我们有一个包含出勤、休假、奖金表的数据库,这些规则也应该与这些表交互。
客户将为多个客户生成工资单,每个客户都托管一个单独的数据库实例。它们可能对每个组件都有不同的解释,并且可能具有不同的组件。
我们只希望支持 SQL Server,工资单生成将是一项离线活动。
我们对将使用这些规则生成各个税收组成部分(包括税收减免、税收核销、免税额等)的逻辑放在哪里存在分歧。
有些人提倡神奇的 SP,它将获取员工 ID 并生成当月的工资单。其他人希望将逻辑拆分为单独的组件,这些组件将在应用层获取员工的相关数据并在那里计算这些组件。
我们的优先顺序是: 1. 快速适应新客户变化的能力 2. 长期可维护性 3. 性能
1 和 2 在这里比 3 重要得多,因为这将是一个离线活动。
可维护性和快速可定制性非常重要,我们将为不同的客户部署应用程序。客户 A 的薪资构成规则可能为 ((0.3 * Basic) + 800),客户 B 可能有 (0.2 * Basic) + (0.1 * Atendance Bonus)
SP 是否会在这里造成混乱,因为上面建议的规则将由最终用户指定,并且需要通过 Web UI 进行自定义。我们将不得不从 SQL 中解析公式。会有多难或容易?与使用 SP 相比,在应用层 (C# .Net) 中执行此操作有什么优势?
对现有系统架构的建议和指示将非常有帮助。...是的,我们在系统的其他地方使用 LINQ to SQL。
亲切的问候, Ashish Sharma