我需要有关如何实施的建议。我有两个对象ReceiptLine和Discount。收银员扫描物品并添加收据行对象。如果添加的ReceiptLine对象具有折扣ID,则必须在Discount对象中查找并在验证后发出折扣。我在验证方面有问题。这是情况,收银员扫描项目如下
ReceiptLine对象
line1 ItemId 1835 qty 2 DiscountId 23 line2 ItemId 1515数量2 DiscountId 23 line3 ItemId 1835 qty 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
答案 0 :(得分:0)
我建议在一个过程中应用所有折扣。如果客户决定他们不想要第二项,会发生什么?
如果我这样做,我会有一个 ApplyDiscounts 方法:
由于您在流程开始时清除了折扣,因此您可以在每次扫描项目时运行此流程。这样它就会保持动态,但很容易管理。
我也没有物品中的DiscountID。这些物品应该是独立的。折扣应该有一个项目ID。这样,您可以根据需要添加和删除折扣方案,而无需触摸您的商品。
答案 1 :(得分:0)
谢谢!
检查病情时遇到问题。折扣条件是
ItemId 1835买2 ItemId 1515买1 发行折扣$ 1.00
正如你所说,当我循环收据时,我将检查折扣对象,然后我将验证有2 - 1835和1 - 1515并发行折扣$ 1.00。
即使收据中有1 - 1515,我的代码也会对所有1835年发放折扣。