54 lines
1.8 KiB
Python
Executable File
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)
|