我需要关于如何实现的建议。我有两个对象ReceiptLine和Discount。收银员扫描项目,并添加一个receiptline对象。如果添加的ReceiptLine对象具有折扣Id,则必须在折扣对象中查找,并在验证后发出折扣。我在验证方面有问题。这里的情况是,收银员扫描物品如下
ReceiptLine对象
line1 ItemId 1835个DiscountId 23个line2 ItemId 1515个DiscountId 23个line3 ItemId 1835个2个DiscountId 23
折扣对象Id 23
ItemId 1835购买2 ItemId 1515购买1
发行折扣$1.00
代码应处理的情况
收银员可以扫描任何订单中的商品数量可以是任意数量的折扣只有在满足折扣对象要求的情况下,如果购买两次或任意多次,则折扣也会多次
我有以下代码,并且不知道从哪里开始
Public Sub GetDiscount(ByVal newReceiptLine As ReceiptLine)
Dim discountId As Integer = newReceiptLine.DiscountId
Dim discountLine As ReceiptLine = Me.Find(Function(l As ReceiptLine) l.DiscountId = discountId)
If discountLine IsNot Nothing AndAlso discountLine.Discount IsNot Nothing Then
newReceiptLine.Discount = discountLine.Discount
Else
newReceiptLine.Discount = New Discount(discountId)
End If
newReceiptLine.Discount.IssueDiscount(Me)
End Sub
Public Sub IssueDiscount(ByVal receiptLines As ReceiptLines)
Dim discountLines As List(Of ReceiptLine) = receiptLines.FindAll(Function(l As ReceiptLine) l.DiscountId = _id)
For Each line As ReceiptLine In discountLines
Dim styleId As Integer = line.StyleId
Dim item As DiscountItem = _discountItems.Find(Function(i As DiscountItem) i.StyleId = styleId)
??????
Next
End Sub发布于 2010-07-20 11:15:47
我建议在一个流程中应用所有折扣。如果客户决定他们根本不想要第二件商品,会发生什么?
如果我这样做,我会有一个ApplyDiscounts方法:
由于您在流程开始时清除折扣,因此您可以在每次扫描项目时运行此流程。通过这种方式,它可以保持动态,但非常容易管理。
我也不会在项目中有一个DiscountID。这些项目应该是独立的。折扣应具有项目id。这样,您就可以随意添加和删除折扣方案,而无需触摸您的商品。
发布于 2010-07-20 11:34:55
谢谢!
我在检查情况时遇到了问题。折扣条件为
ItemId 1835购买2个ItemId 1515购买1个问题折扣1美元
正如您所说,当我循环接收行时,我将检查折扣对象,然后我将验证是否有2- 1835和1- 1515,并发出折扣$1.00。
我的代码为所有的1835发出折扣,即使有1- 1515的收据。
https://stackoverflow.com/questions/3286604
复制相似问题