Files

75 lines
2.6 KiB
Python
Raw Permalink Normal View History

2021-04-04 15:50:01 +02:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.i18n import gettext
from trytond.model import fields
2021-12-11 17:58:43 +01:00
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval, If
from trytond.transaction import Transaction
2021-04-04 15:50:01 +02:00
from .exceptions import GiftCardValidationError
class Template(metaclass=PoolMeta):
__name__ = 'product.template'
gift_card = fields.Boolean(
"Gift Card",
domain=[
If(~Eval('type').in_(['service', 'goods']),
('gift_card', '=', False),
()),
],
2021-04-04 15:50:01 +02:00
states={
'invisible': ~Eval('type').in_(['service', 'goods']),
})
2021-04-04 15:50:01 +02:00
@fields.depends('gift_card')
def on_change_gift_card(self):
pool = Pool()
ModelData = pool.get('ir.model.data')
if self.gift_card:
self.default_uom = ModelData.get_id('product', 'uom_unit')
@classmethod
2022-04-11 23:24:21 +02:00
def validate_fields(cls, templates, field_names):
2021-04-04 15:50:01 +02:00
pool = Pool()
ModelData = pool.get('ir.model.data')
UoM = pool.get('product.uom')
2022-04-11 23:24:21 +02:00
super().validate_fields(templates, field_names)
if field_names & {'gift_card', 'default_uom'}:
unit = UoM(ModelData.get_id('product', 'uom_unit'))
for template in templates:
if template.gift_card and template.default_uom != unit:
raise GiftCardValidationError(
gettext('sale_gift_card.msg_gift_card_invalid_uom',
template=template.rec_name,
unit=unit.rec_name))
2021-04-04 15:50:01 +02:00
@property
def account_expense_used(self):
pool = Pool()
Config = pool.get('account.configuration')
if self.gift_card:
transaction = Transaction()
with transaction.reset_context(), \
transaction.set_context(self._context):
config = Config(1)
2021-04-04 15:50:01 +02:00
return config.gift_card_account_expense
return super().account_expense_used
@property
def account_revenue_used(self):
pool = Pool()
Config = pool.get('account.configuration')
if self.gift_card:
transaction = Transaction()
with transaction.reset_context(), \
transaction.set_context(self._context):
config = Config(1)
2021-04-04 15:50:01 +02:00
return config.gift_card_account_revenue
return super().account_revenue_used
class Product(metaclass=PoolMeta):
__name__ = 'product.product'