javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

sql server-发票,发票行和修订的数据库设计

我正在为一家特许经营的CRM设计一个关系数据库的第二次主要迭代(需要大量重构),我需要有关最佳数据库设计实践的帮助,以存储作业发票和发票行,并对每项所做的任何更改都具有很强的审计追踪能力 发票。

当前模式

InvoiceRevisions桌子

InvoiceId (int) // Primary key
JobId (int)
StatusId (tinyint) // Pending, Paid or Deleted
UserId (int) // auditing user
Reference (nvarchar(256)) // unique natural string key with invoice number
Date (datetime)
Comments (nvarchar(MAX))

InvoiceRevisions Table

LineId (int) // Primary key
InvoiceId (int) // related to Invoices above
Quantity (decimal(9,4))
Title (nvarchar(512))
Comment (nvarchar(512))
UnitPrice (smallmoney)

修订架构

InvoiceRevisions桌子

RevisionId (int) // Primary key
InvoiceId (int)
JobId (int)
StatusId (tinyint) // Pending, Paid or Deleted
UserId (int) // auditing user
Reference (nvarchar(256)) // unique natural string key with invoice number
Date (datetime)
Total (smallmoney)

模式设计注意事项

1.存储发票的“已付款”或“待处理”状态是否明智?

收到的所有发票付款都存储在InvoiceRevisions表中(例如现金,信用卡,支票,银行存款)。 如果可以从Payments表中推断出与给定工作发票相关的所有收入,则在Invoices表中存储“已付款”状态是否有意义?

2.如何跟踪发票行项目修订?

我可以通过将状态更改以及发票总额和审核用户存储在发票修订表中(请参见上面的InvoiceRevisions)来跟踪发票的修订,但是很难维护发票行修订表。 有什么想法吗? 编辑:订单项应该是不变的。 这适用于“草稿”发票。

3.税收

存储发票数据时,应如何计入营业税(或SA中的14%增值税)?


编辑:好的反馈,伙计们。 根据定义,发票和发票行是不可变的,因此跟踪更改是不明智的。 但是,“草稿”发票必须由多个人编辑(例如,经理在技术员创建发票后应用折扣),然后才能发行...

4.定义和跟踪发票状态的最佳方法?

  1. 草案
  2. 发行
  3. 虚空

...必须朝一个方向改变?

trans by 2020-08-11T21:34:39Z

1 共1页