Files
tradon/modules/sale_point/product.py
2025-12-26 13:11:43 +00:00

54 lines
1.8 KiB
Python
Executable File

# 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.model import ModelSQL, fields
from trytond.modules.company.model import CompanyValueMixin
from trytond.modules.product import price_digits, round_price
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
class Template(metaclass=PoolMeta):
__name__ = 'product.template'
gross_price = fields.MultiValue(fields.Numeric(
"Gross Price", digits=price_digits,
states={
'invisible': ~Eval('salable', False),
},
help="The price with default tax included."))
gross_prices = fields.One2Many(
'product.gross_price', 'template', "Gross Prices")
@classmethod
def multivalue_model(cls, field):
pool = Pool()
if field == 'gross_price':
return pool.get('product.gross_price')
return super(Template, cls).multivalue_model(field)
@fields.depends(
'gross_price', 'account_category', methods=['customer_taxes_used'])
def on_change_gross_price(self):
pool = Pool()
Date = pool.get('ir.date')
Tax = pool.get('account.tax')
if self.gross_price is None or not self.account_category:
return
today = Date.today()
self.list_price = round_price(Tax.reverse_compute(
self.gross_price,
self.customer_taxes_used,
today))
class Product(metaclass=PoolMeta):
__name__ = 'product.product'
class GrossPrice(ModelSQL, CompanyValueMixin):
"Product Gross Price"
__name__ = 'product.gross_price'
template = fields.Many2One(
'product.template', "Template", ondelete='CASCADE')
gross_price = fields.Numeric("Gross Price", digits=price_digits)