2010-07-23 35 views
0

背景
我有一个已经实施了加拿大安大略省的两个“经典”税的程序:5%的消费税和8%的PST。在2010年7月初,该省大部分地区转而缴纳了13%的HST税。 Effects and changes here但这些都不是这个问题的要点...更改程序逻辑以适应新的零售税法

问题
什么是零售税轻松适应未来变化的最佳做法和好的解决办法?税收变化经常发生。我确信有很多SO用户有很好的经验。

因为我的程序设计是.NET,所以我会为这个环境寻求解决方案。

+1

是千里眼吗? – txwikinger 2010-07-23 00:10:53

回答

2

我会建议这两种解决方案:

  • 定义计税作为插件系统,使未来的变化将插件库中进行本地化。将来的更改可能涉及更新插件库或更改配置文件。这对于您的应用程序适应不同省份税收计算的变化也很有用。您可以构建一个简单的插件代码或在CodePlex中查看MEF
  • 引入税表,您可以在其中定义有关税收和计算字段/公式的元数据信息。你可以更进一步,定义一个简单的领域特定语言(如脚本),然后映射到您的代码字段/逻辑/解释以导出计算量。您的主系统将加载税表并使用它来驱动所有的税务计算。未来的更新将希望涉及更新税表文件。
0

当它是一个简单的税率,例如销售税时,您将费率设置为常数(即readonly decimal OntarioGST = 0.05M),并使用新常数向您的程序发送更新以响应费率变化。

对于更复杂的税收,您可以应用strategy pattern并替换算法作为回应。

无论哪种方式,您都需要推出更新软件。您不能切实地期望您的客户能够处理类似“如果速率发生变化,您必须在配置文件中输入新速率”的内容。