混合搭配折扣码建议

时间:2010-07-20 02:39:44

标签: vb.net

我需要有关如何实施的建议。我有两个对象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

2 个答案:

答案 0 :(得分:0)

我建议在一个过程中应用所有折扣。如果客户决定他们不想要第二项,会发生什么?

如果我这样做,我会有一个 ApplyDiscounts 方法:

  1. 清除所有现有折扣。取消标记打折的所有商品。
  2. 浏览收据中的每个项目。
  3. ...在折扣表中查找该商品的折扣。
  4. ...检查条件是否有折扣。
  5. ...如果客户的收据中满足条件:
  6. ......将所有参赛项目标记为已打折(以便您不计算两次)
  7. ......将折扣添加到收据中。
  8. 由于您在流程开始时清除了折扣,因此您可以在每次扫描项目时运行此流程。这样它就会保持动态,但很容易管理。

    我也没有物品中的DiscountID。这些物品应该是独立的。折扣应该有一个项目ID。这样,您可以根据需要添加和删除折扣方案,而无需触摸您的商品。

答案 1 :(得分:0)

谢谢!

检查病情时遇到问题。折扣条件是

ItemId 1835买2 ItemId 1515买1 发行折扣$ 1.00

正如你所说,当我循环收据时,我将检查折扣对象,然后我将验证有2 - 1835和1 - 1515并发行折扣$ 1.00。

即使收据中有1 - 1515,我的代码也会对所有1835年发放折扣。