Add ir.message and use UserWarning

This commit is contained in:
?ngel ?lvarez 2019-01-04 16:50:30 +01:00
parent 98e6ca9157
commit 0ce525babd
3 changed files with 40 additions and 25 deletions

22
messages.xml Normal file
View file

@ -0,0 +1,22 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data group="1">
<record model="ir.message" id="product_lines_will_be_removed">
<field name="text">It will remove the existing Product Lines in this plan.</field>
</record>
<record model="ir.message" id="lacks_the_product">
<field name="text">The Cost Plan "%(cost_plan)s" lacks the product.</field>
</record>
<record model="ir.message" id="bom_already_exists">
<field name="text">A bom already exists for cost plan "%(cost_plan)s".</field>
</record>
<record model="ir.message" id="product_already_has_bom">
<field name="text">Product "%(product)s" already has a BOM assigned.</field>
</record>
<record model="ir.message" id="delete_system_cos">
<field name="text">You can not delete cost "%(cost)s" from plan "%(plan)s" because it\'s managed by system.</field>
</record>
</data>
</tryton>

42
plan.py
View file

@ -8,6 +8,8 @@ from trytond.pool import Pool
from trytond.pyson import Eval, Bool, If from trytond.pyson import Eval, Bool, If
from trytond.transaction import Transaction from trytond.transaction import Transaction
from trytond.wizard import Wizard, StateView, StateAction, Button from trytond.wizard import Wizard, StateView, StateAction, Button
from trytond.i18n import gettext
from trytond.exceptions import UserWarning
price_digits = (16, config.getint('product', 'price_decimal', default=4)) price_digits = (16, config.getint('product', 'price_decimal', default=4))
@ -86,15 +88,6 @@ class Plan(ModelSQL, ModelView):
'icon': 'tryton-refresh', 'icon': 'tryton-refresh',
}, },
}) })
cls._error_messages.update({
'product_lines_will_be_removed': (
'It will remove the existing Product Lines in this plan.'),
'lacks_the_product': 'The Cost Plan "%s" lacks the product.',
'bom_already_exists': (
'A bom already exists for cost plan "%s".'),
'product_already_has_bom': (
'Product "%s" already has a BOM assigned.'),
})
@staticmethod @staticmethod
def default_active(): def default_active():
@ -211,8 +204,8 @@ class Plan(ModelSQL, ModelView):
('plan', 'in', [p.id for p in plans]), ('plan', 'in', [p.id for p in plans]),
]) ])
if product_lines: if product_lines:
cls.raise_user_warning('remove_product_lines', UserWarning('remove_product_lines',
'product_lines_will_be_removed') gettext('product_cost_plan.product_lines_will_be_removed'))
ProductLine.delete(product_lines) ProductLine.delete(product_lines)
with Transaction().set_context(reset_costs=True): with Transaction().set_context(reset_costs=True):
@ -360,10 +353,13 @@ class Plan(ModelSQL, ModelView):
ProductBOM = pool.get('product.product-production.bom') ProductBOM = pool.get('product.product-production.bom')
if not self.product: if not self.product:
self.raise_user_error('lacks_the_product', self.rec_name) raise UserWarning('not_product',
gettext('product_cost_plan.lacks_the_product',
cost_plan=self.rec_name))
if self.bom: if self.bom:
self.raise_user_error('bom_already_exists%s' % self.id, raise UserWarning('bom_already_exists%s' % self.id,
'bom_already_exists', self.rec_name) gettext('product_cost_plan.bom_already_exists',
cost_plan=self.rec_name))
bom = BOM() bom = BOM()
bom.name = name bom.name = name
@ -377,9 +373,9 @@ class Plan(ModelSQL, ModelView):
# TODO: create new bom to allow diferent "versions"? # TODO: create new bom to allow diferent "versions"?
product_bom = self.product.boms[0] product_bom = self.product.boms[0]
if product_bom.bom: if product_bom.bom:
self.raise_user_warning('product_already_has_bom%s' % self.id, raise UserWarning('product_already_has_bom%s' % self.id,
'product_already_has_bom', gettext('product_cost_plan.product_already_has_bom',
self.product.rec_name) self.product.rec_name))
else: else:
product_bom = ProductBOM() product_bom = ProductBOM()
product_bom.product = self.product product_bom.product = self.product
@ -707,10 +703,6 @@ class PlanCost(ModelSQL, ModelView):
def __setup__(cls): def __setup__(cls):
super(PlanCost, cls).__setup__() super(PlanCost, cls).__setup__()
cls._order.insert(0, ('sequence', 'ASC')) cls._order.insert(0, ('sequence', 'ASC'))
cls._error_messages.update({
'delete_system_cost': ('You can not delete cost "%(cost)s" '
'from plan "%(plan)s" because it\'s managed by system.'),
})
@staticmethod @staticmethod
def order_sequence(tables): def order_sequence(tables):
@ -749,10 +741,10 @@ class PlanCost(ModelSQL, ModelView):
if not Transaction().context.get('reset_costs', False): if not Transaction().context.get('reset_costs', False):
for cost in costs: for cost in costs:
if cost.system: if cost.system:
cls.raise_user_error('delete_system_cost', { raise UserWarning('delete_system_cost',
'cost': cost.rec_name, gettext('product_cost_plan.delete_system_cost',
'plan': cost.plan.rec_name, cost=cost.rec_name,
}) plan=cost.plan.rec_name))
super(PlanCost, cls).delete(costs) super(PlanCost, cls).delete(costs)

View file

@ -8,3 +8,4 @@ extras_depend:
xml: xml:
plan.xml plan.xml
configuration.xml configuration.xml
messages.xml