1

我正在为大型商业建设项目的项目管理订购系统设计表格。输入客户订单时,客户拥有其原始采购订单。未来,客户将通过添加到订单或进行更改来更改原始 PO。我需要将这些更改标记/跟踪并编号为客户订单上的更改订单,但原始订单需要在订单顶部保持完整,并带有小计(以保留原始报价/订单),以及任何更改将在下面列出作为其相关定价的变化。然后将在底部有一个新的总数,该总数将说明原始订单和变更订单。

关于如何设计表格以跟踪与原始订单项目/总数分开的这些更改有什么想法?

到目前为止,我有以下表格:客户、订单、订单详情、产品等。

编辑:希望澄清:

  • 客户下订单(订单表:OrderID、PO#、OrderDate 等)
  • 订单有一对多行项目(OrderDetail 表:LineID、Qty、Description 等)
  • 一个订单可以有一对多的订单更改。
  • 订单更改只是将订单项添加到订单中,每个订单更改(一个或多个订单项)都需要记录(例如“更改订单 #1”、“更改订单 #2”等),以便它们可以在客户和我的客户之间很容易引用。

下订单后,如果客户想稍后添加到订单中,我会看到将添加行项目添加到 OrderDetail 表中。

所以我的客户需要能够查找:

  • 原始订单上有哪些商品,原始订单总额是多少。
  • 对订单做了什么“变更单”,每个变更单都有自己的日期和价格。
  • 新订单总额是多少

我的问题是,我可以将变更单行项目放在同一个表中还是不同的表中?如何显示原始订单的一部分?我如何显示哪些项目是每个变更单的一部分?

最好使用另一张或两张桌子吗?

编辑:可能的解决方案
@Darklantern - 如果我理解你的想法,请告诉我,它看起来像这样

初始订单:
Order Header:
- Version = 1

Order Detail:
- Version = 1 Part = A
- Version = 1 Part = B

添加变更单后的订单:
Order Header:
- Version = 2

Order Detail:
- Version = 1 Part = A
- Version = 1 Part = B
- Version = 2 Part = A
- Version = 2 Part = B
- Version = 2 Part = C

这会很棒,但是我要跟踪原始订单的一部分,版本 1 的一部分等等。你的想法看起来不错,但如果没有比较,将无法清楚地显示“版本 2 B 部分”是否被编辑它到“版本1 B部分”。

我把你的想法更进一步了。它会起作用吗,或者我没有看到什么缺陷:

初始订单:
Order Header:
- Date, etc

Order Detail:
- Version = 0 Part = A
- Version = 0 Part = B

多次订单更改后的订单:
Order Header:
- Date, etc

Order Detail:
- Version = 0 Part = A
- Version = 0 Part = B
- Version = 1 Part = C
- Version = 1 Part = B Upgraded to D (price is the difference between B and D
- Version = 2 Part = A removed (price is a negative amount)

那么问题来了,报告有多简单?打印采购订单或发票时,我可以列出每个“版本”及其自己的组标题和小计吗?因为很多时候每个“版本”都会有自己的批次定价。

我是在正确的轨道上,还是在兔子小径上?

4

3 回答 3

0

你的第一个例子正是我的想法。我看到您的第二个样本是一个很好的变化,但报告起来更复杂。客户是否看到发票/订单中的所有内容,包括所有更改?或者你只是为了管理而把它分组,一个管理报告工具?您是想为每个版本创建模拟发票,还是想以分类帐样式格式展示整个订单。从报告(您没有说报告使用哪个工具)的角度考虑,第一个“版本”更简单,您可以按订单详细信息/产品列出,以便快速比较。您可以为每个版本创建小计。您当然可以创建按版本分组的发票/报告,但是如何在每个组中混合来自不同版本的项目,这对于脚本来说可能很复杂。我会更多地考虑这一点。当然,如果您熟悉脚本,那么版本 2 可能会更好。

于 2012-08-18T06:49:42.133 回答
0

嗯...我应该戴新眼镜。我的建议是将行项目留在一个表格中。将 VersionNumber 添加到 Order 和 Line 项目,当项目被取代时,将所有项目(包括新项目)增加到新版本(将被取代项目保留在其原始版本)。最终订单的标题版本 = 匹配的订单项版本。这更容易报告。

您可以通过使用 (Ident,Orderid,VersionNumber) 的 tblOrderVersion 来规范这一点,其中该行将使用当前版本号进行更新。这将允许您跟踪订单的每次迭代。如果表变得太大,将冗余数据删除到另一个表中会很简单,您可以合并以获取所需的报告。我希望我能帮上一点忙。我也认为在没有解释的情况下对某人投反对票是不礼貌的。(顺便说一句,我不赞成你)。

于 2012-08-17T00:16:44.630 回答
0

您的问题太宽泛了,您可能想要准确地指定您想要实现的目标。例如,您是否要为修改的项目输入一个新行,然后请求最新的行版本,或者您只希望该项目的 1 行(根据需要修改此行)然后将更改信息放入审计表(前端编码)。在网上寻找可以帮助您设计的 ERD,我相信这个概念并不新鲜。检查 Northwind/Pubs 示例数据库以获取一些想法。

于 2012-08-15T02:47:45.013 回答