实体也可以做加减?

09-06-11 willem
业务:一笔订单,有种商品,且该笔订单已发货。如果顾客不满意,可退货。而且业务上允许对一笔订单进行多次退货。假设该订单有十种商品,每种数量为“1”,那么就可以退十次。

数据库设计:销售订单和退货订单存一起,退货订单有一字段指向原订单。

如果顾客要退货,原订单的行项目要跟它已经产生的退货单的行项目进行"减"操作。才能知道此时还有哪些商品可退。

“订单”是个实体,不是“值对象”。但好像有这种要求:

可退货行项目 = 原单行项目 - 所以已退货行项目

[该贴被admin于2009-07-21 16:21修改过]

         

willem
2009-06-11 11:25
模型应该是:

可退货订单 = 原单 - 退货单

这三个都是同一个实体

freebox
2009-06-11 15:08
个人认为好像是指对特定的订单项的退货作业。

class Order{

Set<Item> items;

}

class Item{

boolean back;

}

这样应该能够计数并列举出哪些可以退货哪些不能了,如果需求还有要求生成退货单的,也可以由这些item重组生成。

[该贴被freebox于2009-06-11 15:09修改过]

willem
2009-06-11 23:08
boolean back;

不能解决问题,如果该行项目的数量是10,我只要退2两个,

back就成了尴尬的属性。

willem
2009-06-11 23:10
我提到过,一笔订单的退货单是有记录的,退货单跟其它订单都在一张,结构一样的。

猜你喜欢
3Go 1 2 3 下一页