[IMP] Decouple the quantity for templates and variants

There are cases where we dot NOT want to simply sum the quantities of all the
variants. For example when dealing with manufacturing capacities, we may have
to chose between variants because we can't make ALL of them with the same
components.

So instead of a simple non-modular implementation, we'll let each module define
his own implementation of how to compute the product template's quantity
available for sale.

Conflicts:
	stock_available/__openerp__.py
	stock_available_immediately/__openerp__.py
This commit is contained in:
Lionel Sausin
2015-11-06 17:19:14 +01:00
committed by ps-tubtim
parent d6a7d580bb
commit d006917e0c
3 changed files with 16 additions and 8 deletions

View File

@@ -4,7 +4,7 @@
{
'name': 'Stock available to promise',
'version': '9.0.1.0.0',
'version': '9.0.1.0.1',
"author": "Numérigraphe, Sodexis, Odoo Community Association (OCA)",
'category': 'Warehouse',
'depends': ['stock'],

View File

@@ -21,8 +21,11 @@ class ProductProduct(models.Model):
By default, available to promise = forecasted quantity.
Must be overridden by another module that actually implement
computations."""
**Each** sub-module **must** override this method in **both**
`product.product` **and** `product.template`, because we can't
decide in advance how to compute the template's quantity from the
variants.
"""
for prod in self:
prod.immediately_usable_qty = prod.virtual_available

View File

@@ -12,12 +12,17 @@ class ProductTemplate(models.Model):
@api.multi
@api.depends('product_variant_ids.immediately_usable_qty')
def _immediately_usable_qty(self):
"""Compute the quantity using all the variants"""
"""No-op implementation of the stock available to promise.
By default, available to promise = forecasted quantity.
**Each** sub-module **must** override this method in **both**
`product.product` **and** `product.template`, because we can't
decide in advance how to compute the template's quantity from the
variants.
"""
for tmpl in self:
tmpl.immediately_usable_qty = sum(
v.immediately_usable_qty
for v in tmpl.product_variant_ids
)
tmpl.immediately_usable_qty = tmpl.virtual_available
immediately_usable_qty = fields.Float(
digits=dp.get_precision('Product Unit of Measure'),