【发布时间】:2010-09-17 14:37:15
【问题描述】:
我们正在为客户设计工资单生成系统。
我们所针对的组织具有如下层次结构: 公司 -> 集群 -> 业务部门 (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) 中执行此操作有什么优势?
原帖在这里: Design Hints, Payroll System...repost ...但没有一个问题得到正确回答。
对现有系统架构的建议和指示将非常有帮助。 ...是的,我们在系统的其他地方使用 LINQ to SQL。
亲切的问候, 阿什·夏尔马
【问题讨论】:
-
TLDR。你能简化你的问题吗?
标签: c# database oop web-applications n-tier-architecture