mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
This improves the performance greatly in ecommerce if you have MANY combinations and an exclusion on a high up attribute (as it will 'fail' potentially millions of combinations before coming to something that 'is_default' would have given you already).
36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
from odoo import http, fields
|
|
from odoo.addons.sale.controllers import product_configurator
|
|
from odoo.http import request
|
|
|
|
|
|
class ProductConfiguratorController(product_configurator.ProductConfiguratorController):
|
|
@http.route(['/product_configurator/configure'], type='json', auth="user", methods=['POST'])
|
|
def configure(self, product_id, pricelist_id, sale_line_id=None, **kw):
|
|
add_qty = int(kw.get('add_qty', 1))
|
|
product_template = request.env['product.template'].browse(int(product_id))
|
|
|
|
to_currency = product_template.currency_id
|
|
pricelist = self._get_pricelist(pricelist_id)
|
|
if pricelist:
|
|
product_template = product_template.with_context(pricelist=pricelist.id, partner=request.env.user.partner_id)
|
|
to_currency = pricelist.currency_id
|
|
|
|
sale_line = None
|
|
if sale_line_id:
|
|
sale_line = request.env['sale.order.line'].browse(int(sale_line_id))
|
|
|
|
return request.env['ir.ui.view'].render_template("sale.product_configurator_configure", {
|
|
'add_qty': add_qty,
|
|
'product': product_template,
|
|
'to_currency': to_currency,
|
|
'pricelist': pricelist,
|
|
'sale_line': sale_line,
|
|
# get_attribute_exclusions deprecated, use product method
|
|
'get_attribute_exclusions': self._get_attribute_exclusions,
|
|
# get_attribute_value_defaults deprecated due to ecommerce templates
|
|
'get_attribute_value_defaults': self._get_attribute_value_defaults,
|
|
})
|
|
|
|
def _get_attribute_value_defaults(self, product, sale_line, **kw):
|
|
return product.get_default_attribute_values(sale_line)
|