首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合和匹配折扣代码建议

问混合和匹配折扣代码建议
EN

Stack Overflow用户
提问于 2010-07-20 10:39:44
回答 2查看 579关注 0票数 0

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

代码应处理的情况

收银员可以扫描任何订单中的商品数量可以是任意数量的折扣只有在满足折扣对象要求的情况下,如果购买两次或任意多次,则折扣也会多次

我有以下代码,并且不知道从哪里开始

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2010-07-20 11:15:47

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

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

  1. 清除所有现有折扣。撤消将所有项目标记为折扣。receipt
  2. 将复查收据中的每个项目。在折扣中为项目提供折扣的条件,以及在客户的receipt:
  3. ......中满足条件的条件table.
  4. ...Check a discount.
  5. ...If receipt:
  6. ......
  7. ...Look将所有参与项目标记为折扣(这样您就不会将它们计算为twice)
  8. ......将折扣添加至收据。

由于您在流程开始时清除折扣,因此您可以在每次扫描项目时运行此流程。通过这种方式,它可以保持动态,但非常容易管理。

我也不会在项目中有一个DiscountID。这些项目应该是独立的。折扣应具有项目id。这样,您就可以随意添加和删除折扣方案,而无需触摸您的商品。

票数 0
EN

Stack Overflow用户

发布于 2010-07-20 11:34:55

谢谢!

我在检查情况时遇到了问题。折扣条件为

ItemId 1835购买2个ItemId 1515购买1个问题折扣1美元

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

我的代码为所有的1835发出折扣,即使有1- 1515的收据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3286604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档