C# 改变程序逻辑以适应新的零售税法

C# 改变程序逻辑以适应新的零售税法,c#,.net,vb.net,specifications,C#,.net,Vb.net,Specifications,背景 我有一个项目,为加拿大安大略省实施了两项“经典”税收:5%的GST和8%的PST。2010年7月初,该省大部分地区改用13%的HST合并税。但这些并不是这个问题的重点 问题 什么是最佳做法和良好的解决方案,以适应未来零售税的变化?税收变化经常发生。我相信有很多用户都有很好的体验 因为我的编程是.NET,所以我将为解决方案设定环境。当它是一个简单的税率(如销售税)时,您将该税率设置为常量(即,只读十进制OntarioGST=0.05M),并根据税率变化向您的程序发送一个新常量的更新 对于更复

背景
我有一个项目,为加拿大安大略省实施了两项“经典”税收:5%的GST和8%的PST。2010年7月初,该省大部分地区改用13%的HST合并税。但这些并不是这个问题的重点

问题
什么是最佳做法和良好的解决方案,以适应未来零售税的变化?税收变化经常发生。我相信有很多用户都有很好的体验


因为我的编程是.NET,所以我将为解决方案设定环境。

当它是一个简单的税率(如销售税)时,您将该税率设置为常量(即,
只读十进制OntarioGST=0.05M
),并根据税率变化向您的程序发送一个新常量的更新

对于更复杂的税,您可以应用并替换算法作为响应


无论哪种方式,您都需要对软件进行更新。实际上,您不能期望客户能够处理“如果费率发生变化,您必须在配置文件中输入新的费率”之类的问题。我建议以下两种解决方案:

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