Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Disable quantity selector and remove item link if item is a synced force sell #5745

Closed
wants to merge 1 commit into from

Conversation

alexflorisca
Copy link
Member

This solves an integration issue with the WooCommerce Force Sells plugin. When a product is forced to sync to another product, the user should not be able to change the quantity or remove the linked product. This PR disables those options for a sync forced product.

Fixes 57-gh-woocommerce/woocommerce-force-sells

Screenshots

Before After
Screenshot 2022-02-08 at 17 22 23 Screenshot 2022-02-08 at 17 21 54

Testing

Automated Tests

  • Changes in this PR are covered by Automated Tests.
    • Unit tests
    • E2E tests

Manual Testing

How to test the changes in this Pull Request:

  1. Add the WooCommerce Blocks plugin.
  2. Create a test page with the cart block.
  3. Go to product A and add product B as Synced Force Sells product.
  4. Go to the frontend and add product A to the cart.
  5. Go to the test page with the cart block.
  6. You should not be able to adjust the quantity or remove product B

User Facing Testing

These are steps for user testing (where "user" is someone interacting with this change that is not editing any code).

  • Same as above

Changelog

Fix an integration issue with WooCommerce Force Sells plugin where a user could modify a sync forced product in the Cart block.

@alexflorisca alexflorisca added type: bug The issue/PR concerns a confirmed bug. focus: blocks Specific work involving or impacting how blocks behave. block: cart Issues related to the cart block. labels Feb 8, 2022
@alexflorisca alexflorisca self-assigned this Feb 8, 2022
@rubikuserbot rubikuserbot requested review from a team and tarunvijwani and removed request for a team February 8, 2022 17:27
@github-actions
Copy link
Contributor

github-actions bot commented Feb 8, 2022

Size Change: +57 B (0%)

Total Size: 813 kB

Filename Size Change
build/cart-blocks/line-items-frontend.js 5.52 kB +31 B (+1%)
build/cart-frontend.js 45.5 kB -2 B (0%)
build/cart.js 43.7 kB +28 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 6.37 kB
build/active-filters.js 7.05 kB
build/all-products-frontend.js 18.7 kB
build/all-products.js 33.8 kB
build/all-reviews.js 8.06 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---8f355022.js 255 B
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---a7e2bb9b.js 2.67 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button.js 1.48 kB
build/atomic-block-components/add-to-cart-frontend.js 6.89 kB
build/atomic-block-components/add-to-cart.js 6.46 kB
build/atomic-block-components/button-frontend.js 1.48 kB
build/atomic-block-components/button.js 853 B
build/atomic-block-components/category-list-frontend.js 457 B
build/atomic-block-components/category-list.js 459 B
build/atomic-block-components/image-frontend.js 1.37 kB
build/atomic-block-components/image.js 1.05 kB
build/atomic-block-components/price-frontend.js 1.74 kB
build/atomic-block-components/price.js 1.7 kB
build/atomic-block-components/rating-frontend.js 703 B
build/atomic-block-components/rating.js 700 B
build/atomic-block-components/sale-badge-frontend.js 625 B
build/atomic-block-components/sale-badge.js 624 B
build/atomic-block-components/sku-frontend.js 386 B
build/atomic-block-components/sku.js 386 B
build/atomic-block-components/stock-indicator--atomic-block-components/summary--atomic-block-components/title.js 468 B
build/atomic-block-components/stock-indicator-frontend.js 939 B
build/atomic-block-components/stock-indicator.js 623 B
build/atomic-block-components/summary-frontend.js 1.24 kB
build/atomic-block-components/summary.js 926 B
build/atomic-block-components/tag-list-frontend.js 460 B
build/atomic-block-components/tag-list.js 459 B
build/atomic-block-components/title-frontend.js 1.21 kB
build/atomic-block-components/title.js 935 B
build/attribute-filter-frontend.js 16.8 kB
build/attribute-filter.js 13.1 kB
build/blocks-checkout.js 17.6 kB
build/cart-blocks/accepted-payment-methods-frontend.js 1.14 kB
build/cart-blocks/checkout-button-frontend.js 1.14 kB
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/express-payment-frontend.js 5.18 kB
build/cart-blocks/filled-cart-frontend.js 766 B
build/cart-blocks/items-frontend.js 299 B
build/cart-blocks/order-summary-frontend.js 8.94 kB
build/cart-blocks/totals-frontend.js 320 B
build/checkout-blocks/actions-frontend.js 1.39 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.23 kB
build/checkout-blocks/billing-address-frontend.js 887 B
build/checkout-blocks/contact-information-frontend.js 2.95 kB
build/checkout-blocks/express-payment-frontend.js 5.46 kB
build/checkout-blocks/fields-frontend.js 344 B
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/order-summary-frontend.js 11.4 kB
build/checkout-blocks/payment-frontend.js 7.71 kB
build/checkout-blocks/shipping-address-frontend.js 975 B
build/checkout-blocks/shipping-methods-frontend.js 4.92 kB
build/checkout-blocks/terms-frontend.js 1.22 kB
build/checkout-blocks/totals-frontend.js 324 B
build/checkout-frontend.js 47.6 kB
build/checkout.js 45.2 kB
build/featured-category.js 8.61 kB
build/featured-product.js 9.62 kB
build/handpicked-products.js 7.09 kB
build/legacy-template.js 2.18 kB
build/mini-cart-component-frontend.js 14.3 kB
build/mini-cart-contents.js 3.82 kB
build/mini-cart-frontend.js 1.78 kB
build/mini-cart.js 6.39 kB
build/price-filter-frontend.js 12.6 kB
build/price-filter.js 8.51 kB
build/price-format.js 1.18 kB
build/product-best-sellers.js 7.37 kB
build/product-categories.js 3.17 kB
build/product-category.js 8.49 kB
build/product-new.js 7.66 kB
build/product-on-sale.js 7.99 kB
build/product-search.js 2.18 kB
build/product-tag.js 7.8 kB
build/product-top-rated.js 7.9 kB
build/products-by-attribute.js 8.39 kB
build/reviews-by-category.js 11.5 kB
build/reviews-by-product.js 12.6 kB
build/reviews-frontend.js 7.35 kB
build/single-product-frontend.js 22.2 kB
build/single-product.js 10 kB
build/stock-filter-frontend.js 6.61 kB
build/stock-filter.js 6.68 kB
build/vendors--atomic-block-components/add-to-cart--cart-blocks/order-summary--checkout-blocks/billing-ad--c5eb4dcd-frontend.js 19 kB
build/vendors--atomic-block-components/add-to-cart-frontend.js 7.51 kB
build/vendors--atomic-block-components/price--cart-blocks/line-items--cart-blocks/order-summary--checkout--8a3571de-frontend.js 5.71 kB
build/vendors--cart-blocks/line-items--checkout-blocks/order-summary-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 4.74 kB
build/wc-blocks-data.js 8.84 kB
build/wc-blocks-editor-style-rtl.css 4.79 kB
build/wc-blocks-editor-style.css 4.79 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 949 B
build/wc-blocks-registry.js 2.7 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-style-rtl.css 21.9 kB
build/wc-blocks-style.css 21.9 kB
build/wc-blocks-vendors-style-rtl.css 1.28 kB
build/wc-blocks-vendors-style.css 1.28 kB
build/wc-blocks-vendors.js 69.7 kB
build/wc-blocks.js 2.62 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.61 kB

compressed-size-action

@manospsyx
Copy link

Might be a good idea to address these issues in an integration on the Force Sells side.

In addition to helping keep concerns separated, doing so will also help surface extensibility needs, which need to be served using publicly accessible APIs.

@alexflorisca
Copy link
Member Author

Yeah you might be right there, it's not the neatest solution. I couldn't see a solution on the Force Sells side so I'd love to hear your thoughts on how we can make that work

@manospsyx
Copy link

manospsyx commented Feb 17, 2022

Hey @alexflorisca 👋

Check out our work here. One of the extensibility themes we have identified as part of that work is:

Cart/Checkout Item Grouping and Syncing

Force Sells relies primarily on the second part (the syncing side of things), but there are many similarities between the two products (Force Sells / Product Bundles) that make it possible to borrow a lot from here (WIP).

I'd be happy to help with integrating Force Sells once we're done with the integrations lined up ahead of us now! The 3 integrations we have prioritized (Bundles, Gift Cards, Conditional Shipping and Payments) have a very large surface area that can help inform other integrations (both internal and by 3PDs).

@alexflorisca
Copy link
Member Author

Nice one, I'll check out your work soon and make a decision on where to take this PR. Thanks for sharing!

Copy link
Contributor

@opr opr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey Alex, thanks for working on this, seems like a simple fix, but I don't think we should be adding plugin-specific code to our repository, instead we should create extensibility points to allow other plugins to decide the behaviour.

I think we should maybe look into adding a filter like allowCartItemQuantityChange or something, or allowCartItemRemoval. What do you think?

@ralucaStan
Copy link
Contributor

ralucaStan commented Feb 21, 2022

I agree this should be fixed on the plugin's side. There is an open PR for Box office fixing a similar issue, where the quantity selector is disabled using the woocommerce_store_api_product_quantity_editable PHP filter.

This filter was introduced by this PR and it could also be used by WC Force Sells

@alexflorisca
Copy link
Member Author

Thanks for all your points everyone - nice work on the integration work @manospsyx, look forward to diving deeper into that and applying those principles here. I'll close this PR and will open a new PR on the Force Sells side with the integration work. At the very least, it looks like we can disable the quantity selectors, even if we might not be able to remove the "Remove product" button

@nielslange nielslange deleted the fix/woocommerce-force-sells-57 branch April 19, 2023 23:46
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: cart Issues related to the cart block. focus: blocks Specific work involving or impacting how blocks behave. type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants