2

我需要一种优雅的方式来为在线商店实施基于信用的购买,该在线商店的产品种类很少,可以使用虚拟信用真实货币购买。或者,产品只能以积分定价。

之前的工作

在使用不同的产品类型(例如或)之前Credit,我已经实施了基于信用的购买,通过后订单处理将购买的信用以真实货币的形式分配给用户,随后可用于折扣未来订单的费用总额。VoucherMusic

这作为一种临时解决方案效果很好,但没有成功地将虚拟货币与真实货币断开,这正是我想做的,因为从心理上来说,消费积分对客户来说比消费真实货币更容易。

设计

我需要有关正确设计数据库的指导,并支持以折扣价同时批量购买积分以及真实货币产品。或者,是否应该所有产品都以积分定价,并且只有积分才具有实际货币价值?

现有的数据库设计

Products表:

  • 产品编号
  • 标题
  • 类型
  • 单价
  • 销售价格

Orders表:

  • 订单编号
  • UserId(与Users表相关,未显示)
  • 地位
  • 价值
  • 全部的

OrderItems表(类似于CartItems表):

  • 订单项 ID
  • OrderId(与Orders表相关)
  • ProductId(与Products表相关)
  • 数量
  • 单价
  • 销售价格

预期UserCredits表:

  • 信用ID
  • UserId(与Users表相关,未显示)
  • 价值(+/- 值。随着时间的推移求和以确定萨尔多。)
  • 日期

我在 SQL Server 数据库上使用 ASP.NET MVC 和 LINQ-to-SQL。

4

2 回答 2

4

您不会以 Credits 向供应商付款,因此从内部会计的角度来看,最好只对您的产品持有现金价值(美元、UKP 等)。

在向您网站的用户展示时,您需要一个将硬性价格转换为代金券的货币换算表。将数据模型与前端显示分离是一个关键的设计策略。无论您决定同时显示实际现金价格和虚拟信用价格,还是只显示信用估值,都应该与数据在数据库中的存储方式无关。

于 2010-03-30T12:20:57.703 回答
1

与您的会计/财务人员交谈。信用一旦给出,就如同双重会计中的任何金钱一样真实,确实,您没有以信用支付您的供应商,但您承诺为您必须以现金支付的信用交付货物。它应该始终保持平衡,并且要查看您的完整财务状况,您应该能够在资产负债表中获得这些信用。

尝试从一开始就对帐户和交易进行建模 - 稍后连接到财务/会计软件会更容易,如果您可以在双方都运行报告以进行对账,那总是很好的。

于 2010-03-30T12:30:28.600 回答