2011-10-06 71 views
3

我正在编程一个简单的发票系统。在rails订购系统中建立销售税的最佳方式是什么?

产品具有通常的名称和成本,有许多行项目。
LineItem是发票内的产品(属于产品,属于发票)。
发票有许多行项目。
税收有:名称和费率(除8.25%)。

下面是困境:如何设置关于产品,行项目和发票的税?

产品可以有一个或多个税。
因此,订单项可以有一个或多个税。

我应该创建两个表:products_taxes和line_items_taxes并创建两个has_and_belongs_to_many_association吗?

+1

建议你改变问题的标题到一些具体的事情,比如“什么对在轨订货系统销售税模型的最佳途径” – tardate

回答

4

税收通常是针对特定地区的,因此税率应该是他们自己的事情。税收与​​产品之间没有直接关系,而是关于税率与物品运输/结算地点之间的关系。

所以,我不会在产品和税收之间建立任何关系。我将创建一个tax_rates表,然后在发票模型(或产品模型上,如果您需要执行每种产品税,很可能)定义方法来计算最终价格。喜欢的东西:

在产品型号...

def calculate_final_price(tax_rate) 
    price*(1+tax_rate.tax_percentage) 
end 
+0

嗯,我想该应用程序保持灵活性。大多数用户应该在本地销售产品,而不是发货。产品应该可以选择应用默认税收,也可以通过下拉选择菜单在订单项(新/编辑发票页面上)中对其进行更改。 – leonel

+1

即使是本地的,彼此相邻的不同城市的税率也不同。单一商店只有一种税率的唯一方法就是顾客来到他们身边(例如身体到达销售物品的地方),而且该商店绝不想在其他城市的网上销售。 如果确实如此,或者您现在想要使用“默认税率”,并且稍后担心更多细节,那么您应该没问题。 – jefflunt

相关问题