solidus
https://github.com/solidusio/solidus
Ruby
🛒 Solidus, the open-source eCommerce framework for industry trailblazers.
Spree::Promotion::Actions::CreateQuantityAdjustments#compute_amount
Computes the amount for the adjustment based on the line item and any other applicable items in the order. The rules for this specific adjustment are as follows: = Setup We have a quantity group promotion on t-shirts. If a user orders 3 t-shirts, they get $5 off of each. The shirts come in one size and three colours: red, blue, and white. == Scenario 1 User has 2 red shirts, 1 white shirt, and 1 blue shirt in their order. We want to compute the adjustment amount for the white shirt. *Result:* -$5 *Reasoning:* There are a total of 4 items that are eligible for the promotion. Since that is greater than 3, we can discount the items. The white shirt has a quantity of 1, therefore it will get discounted by +adjustment_amount * 1+ or $5. === Scenario 1-1 What about the blue shirt? How much does it get discounted? *Result:* $0 *Reasoning:* We have a total quantity of 4. However, we only apply the adjustment to groups of 3. Assuming the white and red shirts have already had their adjustment calculated, that means 3 units have been discounted. Leaving us with a lonely blue shirt that isn't part of a group of 3. Therefore, it does not receive the discount. == Scenario 2 User has 4 red shirts in their order. What is the amount? *Result:* -$15 *Reasoning:* The total quantity of eligible items is 4, so we the adjustment will be non-zero. However, we only apply it to groups of 3, therefore there is one extra item that is not eligible for the adjustment. +adjustment_amount * 3+ or $15.
Edit
git clone [email protected]:solidusio/solidus.git
cd solidus
open legacy_promotions/app/models/spree/promotion/actions/create_quantity_adjustments.rb
Contribute
# Make a new branchgit checkout -b -your-name--update-docs-Spree--Promotion--Actions--CreateQuantityAdjustments-compute_amount-for-pr
# Commit to gitgit add legacy_promotions/app/models/spree/promotion/actions/create_quantity_adjustments.rbgit commit -m "better docs for Spree::Promotion::Actions::CreateQuantityAdjustments#compute_amount"
# Open pull requestgem install hub # on a mac you can `brew install hub`
hub fork
git push <your name> -your-name--update-docs-Spree--Promotion--Actions--CreateQuantityAdjustments-compute_amount-for-pr
hub pull-request
# Celebrate!