[IMP] {,website_}sale_product_configurator: add hooks

This commit adds hooks to improve inheritability capabilities.

task-2382027
This commit is contained in:
Thibault Libioulle
2022-04-14 14:33:23 +02:00
parent c1ddbe2704
commit 3880bee744
3 changed files with 22 additions and 14 deletions
@@ -61,6 +61,9 @@ class ProductConfiguratorController(http.Controller):
combination = request.env['product.template.attribute.value'].browse(variant_values)
add_qty = int(kw.get('add_qty', 1))
if 'kwargs' in kw and 'context' in kw['kwargs']:
product = product.with_context(**kw['kwargs']['context'])
no_variant_attribute_values = combination.filtered(
lambda product_template_attribute_value: product_template_attribute_value.attribute_id.create_variant == 'no_variant'
)
@@ -78,19 +78,22 @@ class WebsiteSale(main.WebsiteSale):
add_qty=main_product['quantity'],
product_custom_attribute_values=main_product['product_custom_attribute_values'],
no_variant_attribute_values=main_product['no_variant_attribute_values'],
**kwargs
)
# Link option with its parent.
option_parent = {main_product['unique_id']: value['line_id']}
for option in product_and_options[1:]:
parent_unique_id = option['parent_unique_id']
option_value = order._cart_update(
product_id=option['product_id'],
set_qty=option['quantity'],
linked_line_id=option_parent[parent_unique_id],
product_custom_attribute_values=option['product_custom_attribute_values'],
no_variant_attribute_values=option['no_variant_attribute_values'],
)
option_parent[option['unique_id']] = option_value['line_id']
if value['line_id']:
# Link option with its parent iff line has been created.
option_parent = {main_product['unique_id']: value['line_id']}
for option in product_and_options[1:]:
parent_unique_id = option['parent_unique_id']
option_value = order._cart_update(
product_id=option['product_id'],
set_qty=option['quantity'],
linked_line_id=option_parent[parent_unique_id],
product_custom_attribute_values=option['product_custom_attribute_values'],
no_variant_attribute_values=option['no_variant_attribute_values'],
**kwargs
)
option_parent[option['unique_id']] = option_value['line_id']
return str(order.cart_quantity)
@@ -106,8 +106,10 @@ publicWidget.registry.WebsiteSale.include({
this.optionalProductsModal.getAndCreateSelectedProducts()
.then((products) => {
const productAndOptions = JSON.stringify(products);
ajax.post('/shop/cart/update_option', {product_and_options: productAndOptions})
.then(function (quantity) {
ajax.post('/shop/cart/update_option', {
product_and_options: productAndOptions,
...this._getOptionalCombinationInfoParam()
}).then(function (quantity) {
if (goToShop) {
window.location.pathname = "/shop/cart";
}