-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
Extend PromotionRule with checkout_and_order_predicate
field
#14664
Merged
IKarbowiak
merged 1 commit into
feature/checkout-and-order-promotions
from
update-promotion-model
Nov 9, 2023
Merged
Extend PromotionRule with checkout_and_order_predicate
field
#14664
IKarbowiak
merged 1 commit into
feature/checkout-and-order-promotions
from
update-promotion-model
Nov 9, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Here is the report for 7f32835 (saleor:update-promotion-model) No differences were found.
# saleor.graphql.accountbenchmark account
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
addresses for federation query count 9 9 2
customers query 51 51 0
delete staff members 41 41 0
query staff user 22 22 3
staff create 23 23 3
staff update groups and permissions 36 36 5
users for federation query count 8 8 3
# saleor.graphql.accountbenchmark permission group
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
groups for federation query count 5 5 0
permission group create 25 25 0
permission group delete 30 30 3
permission group query 14 14 0
permission group update 44 44 2
permission group update remove users with manage staff 36 36 3
# saleor.graphql.appbenchmarks app extensions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
app extensions 15 15 0
app extensions with filter[filter0] 14 14 0
app extensions with filter[filter1] 10 10 0
app extensions with filter[filter2] 14 14 0
app extensions with filter[filter3] 10 10 0
# saleor.graphql.appbenchmarks apps
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
apps for federation query count 9 9 3
apps with tokens and webhooks 9 9 0
# saleor.graphql.attributebenchmark attribute
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
attribute translation 6 6 0
attribute value translation 27 27 0
query attribute 6 6 0
query attributes 8 8 0
# saleor.graphql.channelbenchmark channel
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
channels query 5 5 0
# saleor.graphql.channelmutations channel update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
channel update mutation remove warehouse 38 38 6
# saleor.graphql.checkoutbenchmark checkout mutations
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
add billing address to checkout 71 71 10
add checkout lines 74 74 11
add checkout lines with external shipping 178 178 74
add checkout lines with reservations 157 157 56
add delivery to checkout 72 72 12
add shipping to checkout 82 82 15
checkout email update 37 37 1
checkout payment charge 51 51 14
checkout shipping address update 76 76 9
checkout voucher code 94 94 16
complete checkout 230 230 78
complete checkout preorder 234 234 83
complete checkout with digital line 273 273 95
complete checkout with out of stock webhook 232 232 78
complete checkout with single line 232 232 78
create checkout 77 77 8
create checkout with reservations 136 136 23
customer complete checkout 246 246 84
customer complete checkout for cc 218 218 72
update checkout lines 67 67 11
update checkout lines with reservations 163 163 67
# saleor.graphql.checkoutbenchmark checkouts
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
staff multiple checkouts 6 6 0
# saleor.graphql.checkoutbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
user checkout details 57 57 5
user checkout details with tax app 51 51 2
# saleor.graphql.discountbenchmark promotion create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotion create 49 49 3
# saleor.graphql.discountbenchmark promotion delete
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotion delete 29 29 1
# saleor.graphql.discountbenchmark promotion rule create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotion rule create 38 38 0
# saleor.graphql.discountbenchmark promotion rule delete
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotion rule delete 19 19 0
# saleor.graphql.discountbenchmark promotion rule update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotion rule update 36 36 2
# saleor.graphql.discountbenchmark promotion update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotion update 33 33 1
# saleor.graphql.discountbenchmark promotions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
promotions querytest promotions query 9 9 0
# saleor.graphql.discountbenchmark sales
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
sales query with channel slug 9 9 0
sales query without channel slug 7 7 0
# saleor.graphql.discountbenchmark voucher code bulk delete
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
voucher code bulk delete queries 22 22 2
# saleor.graphql.discountbenchmark vouchers
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
vouchers query with channel slug 20 20 0
vouchers query withot channel slug 19 19 0
# saleor.graphql.giftcardbenchmark gift card mutations
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
create never expiry gift card 26 26 4
gift card bulk activate by staff 16 16 3
update gift card 36 36 4
# saleor.graphql.giftcardbenchmark gift card queries
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
filter gift cards by products 14 14 3
filter gift cards by tags 12 12 3
filter gift cards by used by user 13 13 3
query gift card details 14 14 3
query gift cards 12 12 3
# saleor.graphql.orderbenchmark fulfillment
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
fulfillment query 6 6 0
# saleor.graphql.orderbenchmark fulfillment refund and return products
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
fulfillment refund products order lines 60 60 2
fulfillment return products order lines 104 104 9
# saleor.graphql.orderbenchmark order
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
staff multiple draft orders 7 7 0
staff multiple orders 7 7 0
staff order details 57 57 8
user order details 55 55 9
# saleor.graphql.orderbenchmark order bulk create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
order bulk create 21 21 2
# saleor.graphql.orderbenchmark order fulfill
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
order fulfill 19 19 0
order fulfill with gift cards 19 19 0
# saleor.graphql.orderbenchmark order lines create
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
order lines create 94 94 17
order lines create variants on promotion 154 154 22
# saleor.graphql.pagebenchmark page type
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
page types for federation query count 3 3 0
query page type 18 18 6
query page types 25 25 12
# saleor.graphql.paymentbenchmark payment transactions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
payment transactions 54 54 20
# saleor.graphql.productbenchmark category
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
categories children 3 3 0
categories for federation query count 3 3 0
category delete 63 63 9
category view 28 28 1
# saleor.graphql.productbenchmark collection
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
collection add products 44 44 8
collection bulk delete 52 52 6
collection view 6 6 0
collections for federation query count 7 7 0
create collection 36 36 5
delete collection 48 48 9
remove products from collection 41 41 8
retrieve collection channel listings 5 5 0
# saleor.graphql.productbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
report product sales 10 10 3
retrieve product list 4 4 0
# saleor.graphql.productbenchmark product
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
filter products by attributes 9 9 0
filter products by boolean attributes 20 20 0
filter products by gift card 11 11 1
filter products by numeric attributes 19 19 0
product create 80 80 3
product details 42 42 1
product translations 5 5 0
products for federation query count 6 6 0
products media for federation query count 5 5 0
products types for federation query count 2 2 0
retrieve channel listings 19 19 0
retrieve product attributes 9 9 0
retrieve product images 4 4 0
retrieve product media 4 4 0
retrive products with product types and attributes 7 7 0
update product 58 58 5
# saleor.graphql.productbenchmark product variant channel listing update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
variant channel listing update 46 46 3
# saleor.graphql.productbenchmark variant
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
product variant bulk create 65 65 1
product variant create 69 69 3
products variants for federation query count 6 6 0
retrieve variant list 35 35 1
update product variant 67 67 5
# saleor.graphql.productbenchmark variant stocks
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
product variants stocks create 29 29 4
product variants stocks create with single webhook called 28 28 4
product variants stocks delete by id 30 30 4
product variants stocks delete by sku 30 30 4
product variants stocks delete with out of stock webhook many calls 26 26 3
product variants stocks update by sku 28 28 4
product variants stocks update byid 28 28 4
query product variants stocks 10 10 0
# saleor.graphql.producttest product sorting attributes
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
sort product not having attribute data 24 24 0
# saleor.graphql.shippingbenchmark shipping methods
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
vouchers query with channel slug 7 7 0
vouchers query without channel slug 7 7 0
# saleor.graphql.shippingbenchmark shipping zones
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
shipping zones query 6 6 0
# saleor.graphql.shopbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
retrieve shop 2 2 0
# saleor.graphql.warehousebenchmark stock bulk update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
stocks bulk update queries count 28 28 4
# saleor.graphql.warehousebenchmark stocks
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
stocks query 5 5 0
# saleor.graphql.webhookbenchmark webhook events
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
webhooks 6 6 0
|
Codecov Report
@@ Coverage Diff @@
## feature/checkout-and-order-promotions #14664 +/- ##
======================================================================
Coverage 93.70% 93.70%
======================================================================
Files 930 930
Lines 69318 69319 +1
Branches 7976 7976
======================================================================
+ Hits 64957 64958 +1
Misses 2833 2833
Partials 1528 1528
|
korycins
approved these changes
Nov 8, 2023
3262a71
to
7f32835
Compare
michal-macioszczyk
approved these changes
Nov 9, 2023
c923b13
into
feature/checkout-and-order-promotions
5 checks passed
IKarbowiak
added a commit
that referenced
this pull request
Dec 7, 2023
IKarbowiak
added a commit
that referenced
this pull request
Dec 15, 2023
IKarbowiak
added a commit
that referenced
this pull request
Dec 27, 2023
IKarbowiak
added a commit
that referenced
this pull request
Jan 12, 2024
yellowee
pushed a commit
that referenced
this pull request
Jan 17, 2024
IKarbowiak
added a commit
that referenced
this pull request
Feb 7, 2024
* Refactor fetching variants for predicates (#14670) * Refactor method for fetching variants for predicate * Limit querysets used for filtering * Fix failing tests * Extend PromotionRule with checkout_and_order_predicate field (#14664) * Fix migrations * Allow defining `checkoutAndOrderPredicate` in promotion mutations (#15054) * Add checkout_and_order_predicate field to promotion_rule graphql type. * Add reward_type field. * Add predicate types. * Temporarily turn checkoutAndOrderPredicate field into JSON. * Add input types. * Validate new input fields. * Cover validations with tests. * Remove stuff from previous approach. * Do not allow mixing predicates. * Fix promotion rule validation * Adjust clean_promotion_rule validator * Extend PromotionCreate validation * Unify promotion rule validations * Rename PredicateType ORDER field to CHECKOUT_AND_ORDER * Add more tests to PromotionRuleUpdate * Update promotion/validators.py file * Add docstrings to functions in promotion validators.py file * Add tests for promotion validators * Add validation for price based predicate and rule with mixed currencies * Add mising test for PromotionRuleCreate * Clear graphql/discount/utils.py * Fix migrations and removed not needed changes * Apply code review suggestions * Refactor get_predicate_type function. --------- Co-authored-by: IKarbowiak <iga.karbowiak@saleor.io> * Update changelog * Include promotion discounts in checkout calculations (#15052) * Add CheckoutDiscountedObjectWhere * Add fetch_promotion_rules_for_checkout method * Introduce PredicateObjectType * Add schema of including checkout and order discount * Extend discount models * Include checkout and order promotion discount in checkoucalculations * Adjust create or update checkout discount - remove CheckoutDiscount when the voucher is assigned and update CheckoutOrder if any exist * Adjust checkout discount creation for checkout and order promotions * Delete CheckoutDiscount when no rule applies anymore * Add tests for CheckoutLinesAdd * Fix failing tests * Add test for generate_checkout_payload_for_tax_calculation * Include checkout discounts in CheckoutInfo dataloader * Add tests for checkout base calculations * Add tests for webhooks * Add tests for recalculate_checkout_discount * Add tests for price_override * Add tests for avatax * Add test for calculate_checkout_total method for Avatax plugin * Add test for checkout calculation * Fix migrations * Apply code review suggestions * test_unable_to_have_promotion_rule_with_mixed_predicates_CORE_2125 (#15210) * Adjust voucher assignement (#15189) * Adjsut CheckoutAddPromoCode * Adjust checkoutRemovePromoCode * Update test for recalculate_checkout_discount * Rename checkoutAndOrder discount to order discount (#15207) * Rename checkoutAndOrder discount to order discount * Rename occurrences in comments. --------- Co-authored-by: zedzior <piotr.zabieglik@gmail.com> * Fix failing tests * Prevent race condition on `CheckoutDiscount` object creation. (#15212) * Add unique constrain on CheckoutDiscount model. * Use get_or_create when creating CheckoutDiscount. * Make it working. * Add test. * Add additional test. * Adjust checkout discounted object where filter (#15187) * Adjust total_price filtering in CheckoutDiscountedObjectWhere * Add filtering by subtotal_price in CheckoutDiscountedObjectWhere * Apply code review suggestiins and change DiscountedObjectPredicateInput to DiscountedObjectWhereInput * Fix failing CI * Fix failing test * Fix DiscountedObjectWhereInput - include AND, OR operators * Add rules limit for checkout and order promotions. (#15200) * Add CHECKOUT_AND_ORDER_RULES_LIMIT env variable * Add limit check to promotion validators * Add test for promotion_rule_create mutation. * Add validation to promotion_create mutation; cover with test. * Add TODO comment; fix linter. * Check the number of all checkout and order rules in database, instead of rules asocciated with given promotion. * Extend errors with rulesLimit and exceedBy fields. * Rename checkoutAndOrder; fix tests. * Add order promotions when populating db with dummy data. (#15232) * test_apply_promotion_with_order_predicate_eq_amount_on_checkout (#15222) * Get rid of total discount (#15229) * Get rid of total discount * Fix failing test * Adjust promotion rule type (#15213) * Add predicate_type to PromotionRule model * Add predicateType to PromotionRuleCreateInput * Update changelog * Make predicateType in PromotionRuleCreateInput optional, set the default value * Fix failing e2e * Adjust promotion validations * Fix setting default value for predicateType * Set predicateType on PromotionRule in sale mutations * Fix failing tests * Add type to Promotion * Get rif of MIXED_PROMOTION_PREDICATES error code * Update promotion rule validators * Replace promotion fixture with catalogue_promotion * Update update_products_discounted_prices_for_promotion_task * Drop commented line in PromotionCreate * Collapse migrations introduced for order predicate (#15252) * Do not re-calculate the promotions when catalogue predicate is empty (#15251) * Fix `OrderDiscount.type` when converting checkout to order. (#15248) * Create proper 'OrderDiscount' object, when converting checkout to order. * Add voucher and voucher code to 'OrderDiscount' when discount type is VOUCHER. * Add test. * Fix linter. * Simplify 'OrderDiscount' create. * Apply review changes. * Fix linter. * test_promotion_applied_on_checkout_with_specified_lte_gte_subtotal (#15261) * Checkout and order promotions adjustments (#15279) * Add missing labels * Add atomic block for setting voucher on checkout and deleting the discount * Get rid of list() on iterator() * Fix failing test * Fix filtering by order predicate (#15332) * Convert camel case to snake case. * Improve tests. * Correct predicates in tests. * Apply review comments. * Order promotions performance. (#15347) * Check if clear discounts is needed; call the function once * Update base_prices if needed only. * Fix tests. * Refactor. --------- Co-authored-by: Piotr Zabieglik <55899043+zedzior@users.noreply.github.com> Co-authored-by: Renata <renata.gajzlerowicz@gmail.com> Co-authored-by: zedzior <piotr.zabieglik@gmail.com> Co-authored-by: Maciej Korycinski <maciej.korycinski@saleor.io>
zedzior
added a commit
that referenced
this pull request
Apr 16, 2024
* Refactor fetching variants for predicates (#14670) * Refactor method for fetching variants for predicate * Limit querysets used for filtering * Fix failing tests * Extend PromotionRule with checkout_and_order_predicate field (#14664) * Fix migrations * Allow defining `checkoutAndOrderPredicate` in promotion mutations (#15054) * Add checkout_and_order_predicate field to promotion_rule graphql type. * Add reward_type field. * Add predicate types. * Temporarily turn checkoutAndOrderPredicate field into JSON. * Add input types. * Validate new input fields. * Cover validations with tests. * Remove stuff from previous approach. * Do not allow mixing predicates. * Fix promotion rule validation * Adjust clean_promotion_rule validator * Extend PromotionCreate validation * Unify promotion rule validations * Rename PredicateType ORDER field to CHECKOUT_AND_ORDER * Add more tests to PromotionRuleUpdate * Update promotion/validators.py file * Add docstrings to functions in promotion validators.py file * Add tests for promotion validators * Add validation for price based predicate and rule with mixed currencies * Add mising test for PromotionRuleCreate * Clear graphql/discount/utils.py * Fix migrations and removed not needed changes * Apply code review suggestions * Refactor get_predicate_type function. --------- Co-authored-by: IKarbowiak <iga.karbowiak@saleor.io> * Update changelog * Include promotion discounts in checkout calculations (#15052) * Add CheckoutDiscountedObjectWhere * Add fetch_promotion_rules_for_checkout method * Introduce PredicateObjectType * Add schema of including checkout and order discount * Extend discount models * Include checkout and order promotion discount in checkoucalculations * Adjust create or update checkout discount - remove CheckoutDiscount when the voucher is assigned and update CheckoutOrder if any exist * Adjust checkout discount creation for checkout and order promotions * Delete CheckoutDiscount when no rule applies anymore * Add tests for CheckoutLinesAdd * Fix failing tests * Add test for generate_checkout_payload_for_tax_calculation * Include checkout discounts in CheckoutInfo dataloader * Add tests for checkout base calculations * Add tests for webhooks * Add tests for recalculate_checkout_discount * Add tests for price_override * Add tests for avatax * Add test for calculate_checkout_total method for Avatax plugin * Add test for checkout calculation * Fix migrations * Apply code review suggestions * test_unable_to_have_promotion_rule_with_mixed_predicates_CORE_2125 (#15210) * Adjust voucher assignement (#15189) * Adjsut CheckoutAddPromoCode * Adjust checkoutRemovePromoCode * Update test for recalculate_checkout_discount * Rename checkoutAndOrder discount to order discount (#15207) * Rename checkoutAndOrder discount to order discount * Rename occurrences in comments. --------- Co-authored-by: zedzior <piotr.zabieglik@gmail.com> * Fix failing tests * Prevent race condition on `CheckoutDiscount` object creation. (#15212) * Add unique constrain on CheckoutDiscount model. * Use get_or_create when creating CheckoutDiscount. * Make it working. * Add test. * Add additional test. * Adjust checkout discounted object where filter (#15187) * Adjust total_price filtering in CheckoutDiscountedObjectWhere * Add filtering by subtotal_price in CheckoutDiscountedObjectWhere * Apply code review suggestiins and change DiscountedObjectPredicateInput to DiscountedObjectWhereInput * Fix failing CI * Fix failing test * Fix DiscountedObjectWhereInput - include AND, OR operators * Add rules limit for checkout and order promotions. (#15200) * Add CHECKOUT_AND_ORDER_RULES_LIMIT env variable * Add limit check to promotion validators * Add test for promotion_rule_create mutation. * Add validation to promotion_create mutation; cover with test. * Add TODO comment; fix linter. * Check the number of all checkout and order rules in database, instead of rules asocciated with given promotion. * Extend errors with rulesLimit and exceedBy fields. * Rename checkoutAndOrder; fix tests. * Add order promotions when populating db with dummy data. (#15232) * test_apply_promotion_with_order_predicate_eq_amount_on_checkout (#15222) * Get rid of total discount (#15229) * Get rid of total discount * Fix failing test * Adjust promotion rule type (#15213) * Add predicate_type to PromotionRule model * Add predicateType to PromotionRuleCreateInput * Update changelog * Make predicateType in PromotionRuleCreateInput optional, set the default value * Fix failing e2e * Adjust promotion validations * Fix setting default value for predicateType * Set predicateType on PromotionRule in sale mutations * Fix failing tests * Add type to Promotion * Get rif of MIXED_PROMOTION_PREDICATES error code * Update promotion rule validators * Replace promotion fixture with catalogue_promotion * Update update_products_discounted_prices_for_promotion_task * Drop commented line in PromotionCreate * Collapse migrations introduced for order predicate (#15252) * Do not re-calculate the promotions when catalogue predicate is empty (#15251) * Fix `OrderDiscount.type` when converting checkout to order. (#15248) * Create proper 'OrderDiscount' object, when converting checkout to order. * Add voucher and voucher code to 'OrderDiscount' when discount type is VOUCHER. * Add test. * Fix linter. * Simplify 'OrderDiscount' create. * Apply review changes. * Fix linter. * Apply database changes for gift promotion rule (#15254) * Extend PromotionRule with gifts field * Extend CheckoutLine and OrderLine with is_gift field * Add GIFT RewardType * Add gift_promotion_rule fixture * Fix migrations * Fix fixture * test_promotion_applied_on_checkout_with_specified_lte_gte_subtotal (#15261) * Checkout and order promotions adjustments (#15279) * Add missing labels * Add atomic block for setting voucher on checkout and deleting the discount * Gift promotions API. (#15274) * Add 'gifts' and 'giftsLimit' fields to 'PromotionRule' type. * Add 'is_gift' field to 'OrderLine' and 'CheckoutLine' types. * Add 'gifts' to promotion rule input; validate gift promotions. * Make it working. * Add tests to promotion rule create. * Adjust promotion create mutation. * Add test for promotion create mutation. * Add tests to promotion rule update. * Adjust validators. * Add more tests to promotion rule update. * Add dataloader. * Fix tests. * Test 'isGift' field. * Rename 'gifts' to 'giftIds'. * Adjust mutations after renaming. * Restore previous name in case of inputs. * Add PREVIEW_FEATURE flags. * Get rid of list() on iterator() * Fix failing test * Validate gift lines. (#15326) * Do not allow updating 'OrderLine.quantity' when line is a gift. * Do not allow updating 'CheckoutLine.quantity' when line is a gift. * Do not allow deleting gift from checkout. * Do not allow deleting gifts from checkout. * Extend error with line ids. * Do not allow deleting gifts from order. * Fix test. * Add missing test. * Fix flaky test. * Do not allow to update gift lines at all, not only its quantity; change error codes. * Simplify validation. * Refactor flaky tests. * Fix filtering by order predicate (#15332) * Convert camel case to snake case. * Improve tests. * Correct predicates in tests. * Apply review comments. * Include gift promotion in calculation (#15278) * Create discount object for gift reward * Create checkout line for gift reward * Update gift line creation * Handle race condition for gift line creation * Create CheckoutLineDiscount instead of CheckoutDiscount for gift reward * Gift reward calculation adjustment * Update complete_checkout for gift promotion * Add tests for checkout total calculations and CheckoutLinesAdd mutation * Add tests for webhooks * Add tests for checkout claculations * Add tests for avatax * Update create_discount_objects_for_catalogue_promotions * Update discount/utils.py * Add missing tests for _get_best_gift_reward * Clean duplicated isGift on CheckoutLine * Add more tests * Update gift line removal * Ensure that the gift line is created and returned when the gift reward is applicable during CheckoutCreate mutation * Rename invalidate_checkout_prices to invalidate_checkout * Ensure gift line is created in CheckoutCreateFromOrder mutation * Apply code review suggestions * Update giftreward calculations * Fix checkout calculations with catalogue and gift reward * Handle multiple gifts in _delete_gift_line * Move checkout creation logic to checkout mutation utils * Do not delete checkout line discounts obejcts in loop * Propagate order discount when using tax plugins * Adjust handling gift reward in calculations * Order promotions performance. (#15347) * Check if clear discounts is needed; call the function once * Update base_prices if needed only. * Fix tests. * Refactor. * Set gifts limit per promotion rule (#15353) * Set gifts limit per promotion rule * Apply code review suggestions * Optimize `fetch_promotion_rules_for_checkout` function. (#15352) * Optimize 'fetch_promotion_rules_for_checkout' function. * Fix tests. * Remove 'list(iterator)' pattern. * Clear gift line when not applicable (#15335) * Clear gift line in _clear_checkout_discount * Add tests for CheckoutAddPromoCode and CheckoutRemovePromoCode * Fix test * Adjust gift line removing * Apply code review suggestion * Add filter by promotion type (#15330) * Add filter by promotion type * Apply changes after review * Fix test to use correct promotion types * Apply changes after review * Sketch. * Add DradtOrderLineInfo class with fetch function. * Handle catalogue line discounts. * Refactor. * Further refcator. * Make it working. * Add CheckoutOrOrderModels class. * Apply helper class to order handler. * Merge checkout and order logic. * Cleanup. * Fix gift flow. * Preprae fixtures. * Add tests for create_or_update_discount_objects_from_promotion_for_order function. * More tests. * Cover fetch function. * More tests. * Test discounts update. * Make catalogue discounts working. * Make order discounts working. * Add more tests. * Fix discount reason. * Fix order.undiscounted_total_gross_amunt calculation. * Fix tests. * Add more tests; cleanup test files. * Move get_checkout_or_order_models function. * Merge from main. * Adjust tests. * Adjusts rest of tests. * Fet rid of redundant fields in DraftOrderLineInfo. * Get rid of Order.get_country function in favour of utils.get_order_country. * Move subtotal calculation. * Fill OrderLine's unit_discount fields. * Create separate test file: test_fetch_order_prices.py. * Cleanup after merge. * Self review. * Test draftOrderComplete. * Do not stack manual discounts and order promotion. * Test draftOrderCreate. * Test draftOrderUpdate. * Test orderLinesCreate. * Test orderLineUpdate. * Test avatax plugin. * Restore lazy recalculation. * Fix lint. * Fix tests. * Get rid of CheckoutOrOrderHelper. * Do not update prefetched objects; keep discount cache in line info only. * Further refactor. * Fix tests. * Test against manual discounts. * Test against vouchers. * Explain hardcoded values in test_order_create_from_checkout. * Test OrderDiscountedObjectWhere filter. * Explain hardcoded values in test_draft_order_complete. * Explain hardcoded values in test_draft_order_update. * Explain hardcoded values in test_order_line_update. * Explain hardcoded values in test_order_line_create. * Explain hardcoded values in test_fetch_order_prices.py. * Pull out clear cache logic. * Remove redundant save call. * Merge multiple discounts data for line unit discount fields. * Test against manual line discount. * Merge '_update_order_line_base_unit_prices' and _set_order_base_prices functions. * Save base_unit_price_amount in db. * Split set_base_price function again; fix some tests; clear line.discounts cache. * Update base_unit_price of affected lines only. * Fix _update_line_info_cached_discounts. * Create discount objects for manual line discounts. * Adjust orderLineDiscountRemove. * Update TODOs. * Explain numbers in test_draft_order_create. * Apply review suggestions. * Add more tests. * Refactor order.discounts resolver. * Refactor prefetch logic. * Delete gifts in transaction. * Save prices only if something has changed. * Fix resolver. * Correct clear_prefetched_discounts function. * Merge test queries * Use prefecthed data to get channel listings. * Test price filter with AND and OR operators. * Test manual line discount update. * Fix test. * Optimize fetch_draft_order_line_info function; delete redundant prefetches; test number of queries. * Remove potential duplicated order line discounts. * Extend the solution to handle checkout. * Fix tests. * Narrow duplicates handler to check for catalogue discounts only. * Remove wrong tests with stackable catalogue discounts. * Self-review. * Refactor order part. * Reafctor checkout part. * Adjust tests. * Correct lock. * Correct catalogue promotion discount update; fetch only best catalogue promotion to rules_info. * Add uniqe_type field and unique_together constraints to BaseDiscount models. * Adapt discount create logic. * Add tests. * Add dedicated enum for unique_type; correct migration. * Add more tests. * Fix performance issue. * Adjust query counts in checkout benchmark tests. * Alter unique_field to accept all strings. * Correct lock. * Adjust tests. * Remove UniqueDiscountType. * Remove redundant tests. * Add more comments. * Update comments. * Add choices for unique_type; add indexes concurrently. * Lock whole checkout instead of its lines. * Add back prefetch to fetching order lines. * Add benchmark test for fetching order prices. * Add more benchmar tests to checkout mutations. * Reduce db call number during fetch_draft_order_lines_info. * Add more benchmark tests. * Self review. * Fix failing test. * Fix test. * Update changelog. * Check if discount model has unique type; correct tests.. * Add falback for mismatch between discount_amount and rules_info. * Pass database_connection_name to create_or_update_discount_objects_from_promotion_for_order. * Add space between discount reasons. --------- Co-authored-by: Iga Karbowiak <40886528+IKarbowiak@users.noreply.github.com> Co-authored-by: IKarbowiak <iga.karbowiak@saleor.io> Co-authored-by: Renata <renata.gajzlerowicz@gmail.com> Co-authored-by: Maciej Korycinski <maciej.korycinski@saleor.io> Co-authored-by: Maciej Korycinski <korycinski.maciej@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Extend
Promotion
model withcheckout_and_order_predicate
fieldImpact
Docs
Pull Request Checklist