Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FW][FIX] pos_restaurant: Grant loyalty points for products only #165770

Conversation

fw-bot
Copy link
Contributor

@fw-bot fw-bot commented May 16, 2024

Steps to reproduce:

  • Install POS app.
  • Go to POS > Products > Discount & Loyalty
  • Create a New program with:
    • Program Type: Loyalty Cards
    • Conditional rules:
      • Minimum Quantity: 2
      • Grant: 1 Loyalty Points per unit paid
    • Rewards:
      • Reward Type: Discount
      • Discount: 100 % one Cheapest Product
      • In exchange of: 2 Loyalty Points
  • Start a new POS session
  • Select a Customer
  • Add two different products.
  • Notice the Loyalty Points of +2 shown. This is Correct
  • Click on the Reward button
  • Notice how the Loyalty Points are now +3 which is obviously wrong given we only have two products. Basically it's as if the reward line (100% discount) is taken into consideration as the cheapest product.

Investigation:

  • Inside _updatePrograms, pointsForPrograms() are calculated.
  • we sum the lines quantities regardless of whether it's a reward line or not
    totalProductQty += lineQty;
  • By doing so, the reward lines are taken into consideration and the rule is triggerd by skipping this if clause
    if (totalProductQty < rule.minimum_qty) {
    // Should also count the points from negative quantities.
    // For example, when refunding an ewallet payment. See TicketScreen override in this addon.
    continue;
    }

opw-3855323

Forward-Port-Of: #162268
Forward-Port-Of: #161503

@robodoo
Copy link
Contributor

robodoo commented May 16, 2024

@fw-bot
Copy link
Contributor Author

fw-bot commented May 16, 2024

@AH-Yussef @caburj cherrypicking of pull request #161503 failed.

stdout:

Auto-merging addons/pos_loyalty/static/src/js/Loyalty.js
Auto-merging addons/pos_loyalty/static/src/tours/PosLoyaltyLoyaltyProgramTour.js
CONFLICT (content): Merge conflict in addons/pos_loyalty/static/src/tours/PosLoyaltyLoyaltyProgramTour.js

stderr:

14:23:15.482614 git.c:463               trace: built-in: git cherry-pick dcfc022c5581549de1b2303f266244081b367fe0
error: could not apply dcfc022c5581... [FIX] pos_restaurant: Grant loyalty points for products only
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
----------
status:

Either perform the forward-port manually (and push to this branch, proceeding as usual) or close this PR (maybe?).

In the former case, you may want to edit this PR message as well.

⚠️ after resolving this conflict, you will need to merge it via @robodoo.

More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port

@robodoo robodoo added forwardport This PR was created by @fw-bot conflict There was an error while creating this forward-port PR labels May 16, 2024
Steps to reproduce:
- Install POS app.
- Go to POS > Products > Discount & Loyalty
- Create a New program with:
    - Program Type: Loyalty Cards
    - Conditional rules:
        - Minimum Quantity: 2
        - Grant: 1 Loyalty Points per unit paid
- Rewards:
    - Reward Type: Discount
    - Discount: 100 % one Cheapest Product
    - In exchange of 2 Loyalty Points
- Start a new POS session
- Select a Customer
- Add two different products.
- Notice the Loyalty Points of +2 shown. This is Correct
- Click on the Reward button
- Notice how the Loyalty Points are now +3 which is obviously wrong given we only have two products. Basically it's as if the reward line (100% discount) is taken into consideration as the cheapest product.

Investigation:
- Inside `_updatePrograms`, `pointsForPrograms()` are calculated.
- we sum the lines quantities regardless of whether it's a reward line or not https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L906
- By doing so, the reward lines are taken into consideration and the rule is triggerd by skipping this if clause https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L917-L921

opw-3855323

X-original-commit: 7b147e9
@AH-Yussef AH-Yussef force-pushed the saas-16.4-16.0-opw-3855323-grant_loyalty_points_for_products_only-alhy--wFK-fw branch from 8ffa9a0 to a78597e Compare May 16, 2024 12:47
@C3POdoo C3POdoo added the OE the report is linked to a support ticket (opw-...) label May 16, 2024
@C3POdoo C3POdoo requested review from a team and caburj and removed request for a team May 16, 2024 13:01
@AH-Yussef
Copy link
Contributor

@robodoo r+

robodoo pushed a commit that referenced this pull request May 16, 2024
Steps to reproduce:
- Install POS app.
- Go to POS > Products > Discount & Loyalty
- Create a New program with:
    - Program Type: Loyalty Cards
    - Conditional rules:
        - Minimum Quantity: 2
        - Grant: 1 Loyalty Points per unit paid
- Rewards:
    - Reward Type: Discount
    - Discount: 100 % one Cheapest Product
    - In exchange of 2 Loyalty Points
- Start a new POS session
- Select a Customer
- Add two different products.
- Notice the Loyalty Points of +2 shown. This is Correct
- Click on the Reward button
- Notice how the Loyalty Points are now +3 which is obviously wrong given we only have two products. Basically it's as if the reward line (100% discount) is taken into consideration as the cheapest product.

Investigation:
- Inside `_updatePrograms`, `pointsForPrograms()` are calculated.
- we sum the lines quantities regardless of whether it's a reward line or not https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L906
- By doing so, the reward lines are taken into consideration and the rule is triggerd by skipping this if clause https://github.com/odoo/odoo/blob/e5c3ba58964f47cfd41d337e39e1bf25eaa25379/addons/pos_loyalty/static/src/js/Loyalty.js#L917-L921

opw-3855323

closes #165770

X-original-commit: 7b147e9
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
Signed-off-by: Ali Hassan Youssef (alhy) <alhy@odoo.com>
@robodoo robodoo closed this May 16, 2024
@fw-bot fw-bot deleted the saas-16.4-16.0-opw-3855323-grant_loyalty_points_for_products_only-alhy--wFK-fw branch May 30, 2024 17:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
conflict There was an error while creating this forward-port PR forwardport This PR was created by @fw-bot OE the report is linked to a support ticket (opw-...)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants