Merge branch 'new/12.0/product_variant_so_always' into 12.0-test

This commit is contained in:
Jared Kipe
2019-07-26 10:27:51 -07:00
7 changed files with 100 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -0,0 +1,22 @@
{
'name': 'Product Variant Always on SO',
'author': 'Hibou Corp. <hello@hibou.io>',
'category': 'Hidden',
'version': '12.0.1.0.0',
'description':
"""
Product Variant Always on SO
============================
The default limit in Odoo to 'always create variants' is 1000, but if you have a product
that needs to use 'always create variants' attributes AND you have too many attributes,
you may wish to have it behave as if it has attributes that
""",
'depends': [
'sale',
],
'auto_install': False,
'data': [
'views/product_views.xml',
],
}

View File

@@ -0,0 +1 @@
from . import product

View File

@@ -0,0 +1,13 @@
from odoo import fields, models
class ProductTemplate(models.Model):
_inherit = 'product.template'
always_variant_on_so = fields.Boolean(string='Always create variants on SO Lines')
def has_dynamic_attributes(self):
self.ensure_one()
if self.always_variant_on_so:
return True
return super(ProductTemplate, self).has_dynamic_attributes()

View File

@@ -0,0 +1 @@
from . import test_product_creation

View File

@@ -0,0 +1,45 @@
from odoo.tests import common
from odoo.exceptions import UserError
class TestProductCreation(common.TransactionCase):
def setUp(self):
super(TestProductCreation, self).setUp()
self.attrs = []
# Create 1000 combinations
for a in range(1, 4):
attribute = self.env['product.attribute'].create({
'name': 'Attr ' + str(a),
'type': 'radio',
'create_variant': 'always',
})
self.attrs.append(attribute)
for v in range(1, 11):
self.env['product.attribute.value'].create({
'name': 'Value ' + str(v),
'attribute_id': attribute.id,
})
# Create 1 more...
self.env['product.attribute.value'].create({
'name': 'Value 11',
'attribute_id': self.attrs[0].id,
})
def test_01_product_template(self):
product_tmpl = self.env['product.template'].create({
'name': 'Test Product',
'type': 'product',
})
attr_line_model = self.env['product.template.attribute.line']
for a in self.attrs:
attr_line_model.create({
'product_tmpl_id': product_tmpl.id,
'attribute_id': a.id,
'value_ids': [(6, 0, a.value_ids.ids)],
})
with self.assertRaises(UserError):
product_tmpl.create_variant_ids()
product_tmpl.always_variant_on_so = True
product_tmpl.create_variant_ids()

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="product_template_only_form_view_inherit" model="ir.ui.view">
<field name="name">product.template.product.form.inherit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='attribute_line_ids']" position="before">
<group>
<field name="always_variant_on_so"/>
</group>
</xpath>
</field>
</record>
</odoo>