[IMP] {,website_}sale_product_configurator: add hooks
This commit adds hooks to improve inheritability capabilities. task-2382027
This commit is contained in:
@@ -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";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user