summaryrefslogtreecommitdiff
path: root/addons/sale/controllers/variant.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/sale/controllers/variant.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/sale/controllers/variant.py')
-rw-r--r--addons/sale/controllers/variant.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/addons/sale/controllers/variant.py b/addons/sale/controllers/variant.py
new file mode 100644
index 00000000..3afdc19b
--- /dev/null
+++ b/addons/sale/controllers/variant.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import http
+from odoo.http import request
+
+
+class VariantController(http.Controller):
+ @http.route(['/sale/get_combination_info'], type='json', auth="user", methods=['POST'])
+ def get_combination_info(self, product_template_id, product_id, combination, add_qty, pricelist_id, **kw):
+ combination = request.env['product.template.attribute.value'].browse(combination)
+ pricelist = self._get_pricelist(pricelist_id)
+ ProductTemplate = request.env['product.template']
+ if 'context' in kw:
+ ProductTemplate = ProductTemplate.with_context(**kw.get('context'))
+ product_template = ProductTemplate.browse(int(product_template_id))
+ res = product_template._get_combination_info(combination, int(product_id or 0), int(add_qty or 1), pricelist)
+ if 'parent_combination' in kw:
+ parent_combination = request.env['product.template.attribute.value'].browse(kw.get('parent_combination'))
+ if not combination.exists() and product_id:
+ product = request.env['product.product'].browse(int(product_id))
+ if product.exists():
+ combination = product.product_template_attribute_value_ids
+ res.update({
+ 'is_combination_possible': product_template._is_combination_possible(combination=combination, parent_combination=parent_combination),
+ })
+ return res
+
+ @http.route(['/sale/create_product_variant'], type='json', auth="user", methods=['POST'])
+ def create_product_variant(self, product_template_id, product_template_attribute_value_ids, **kwargs):
+ return request.env['product.template'].browse(int(product_template_id)).create_product_variant(product_template_attribute_value_ids)
+
+ def _get_pricelist(self, pricelist_id, pricelist_fallback=False):
+ return request.env['product.pricelist'].browse(int(pricelist_id or 0))