【问题标题】:Invoice from multiple orders?来自多个订单的发票?
【发布时间】:2011-09-10 19:21:59
【问题描述】:

我需要一种方法来从每个月的多个订单创建发票?

在 tbl_order 表中,我有一个来自客户的订单列表。

tbl_order table

OrderID (PK)
ShopID (FK)
CustomerID (FK)
Statu
Total
OrderDate

假设我要创建一张发票,期间为:5 月 1 日至 31 日,tbl_order.ShopID = 2

(从那里,我可以将发票报告给他们欠我的商店/公司等。当我从他们那里收到佣金时 - 我需要一种更新发票状态的方法)

发票应该有Invoice Number和Invoice Date,发票中会有多个OrderID。

是否需要创建发票表,如果需要,表的设计应该是什么?

【问题讨论】:

    标签: php mysql database database-design data-structures


    【解决方案1】:

    您需要 2 张桌子。

    发票表。

    InvoiceID (PK)
    InvoiceDate
    InvoicePrice
    InvoiceBtw
    ect. etc.
    

    订单和发票之间的链接表。 这样您就可以跟踪在哪个发票中处理了哪个订单。

    InvoiceID (FK to tbl_invoices.InvoiceID)
    OrderID (FK to tbl_orders.OrderID)
    

    【讨论】:

    • 发票表中应该有OrderID(K)字段?那么发票表中可以有多行相同发票号的OrderID?
    • 发票表中不应包含订单信息,因为发票与订单是一对多的关系。 tbl_invoiceorders 用于此目的,即第二个表。
    • @user622378:第二张表中的OrderId 就足够了。也不需要将它放在Invoice 表中。
    • 不,没有,信息已经在 tbl_invoiceorders 表中可用,因此将其存储在 order 表中也将是数据库中的双重数据。
    • 是的 - 这将是一个很好的选择。例如,您可以在每个月的第一个星期一生成最近几个月的发票。
    【解决方案2】:

    是的,您需要发票表。

    结构可以是:

    InvId (Autonumber) 
    InvNumber (varchar (10))
    InvOrderId (int(11))
    InvStatus (int(11))
    InvDateCreated (DateTime)
    InvDateModified (DateTime)
    

    希望对你有帮助

    【讨论】:

    • 谢谢。因此,例如,InvNumber 将是具有不同 InvOrderId 编号的多行的相同编号? (1, 123, 4, 0, DATE, DATE) (2, 123, 5, 0, DATE, DATE) (3, 123, 6, 0, DATE, DATE)
    • 可以,但不要只受发票上的数字的限制。
    • 我看不出InvOrderId 有什么帮助。发票将引用多个订单。可以添加的是Year-Month(将存储2011-05)或ReferenceDateStartReferencesDateEnd,其中将存储2011-05-012011-05-31
    • 还需要一个字段ShopId,以便我们知道开具发票的是哪家商店。
    • 假设发票已支付(或已完成),所以我必须使用相同的 InvNumber 编号更新 InvStatus 的每一行?
    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多