Files
tryton/product.py
T
Cédric Krier 604118a802 Use context date as default pattern
issue11359
review417411003
(grafted from 3ca1623dd74c4c1a9aff760d2b43d5dabf82a1ee)

--HG--
branch : 6.0
2022-06-21 10:13:53 +02:00

90 lines
2.5 KiB
Python

# 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 ModelView, fields
from trytond.pool import PoolMeta, Pool
from trytond.pyson import Eval, If
from trytond.transaction import Transaction
class PriceList(metaclass=PoolMeta):
__name__ = 'product.price_list'
@classmethod
def __setup__(cls):
super(PriceList, cls).__setup__()
cls._buttons.update({
'open_lines': {},
})
@classmethod
@ModelView.button_action(
'product_price_list_dates.act_price_list_line_form')
def open_lines(cls, price_lists):
pass
def compute(
self, party, product, unit_price, quantity, uom, pattern=None):
context = Transaction().context
pattern = pattern.copy() if pattern is not None else {}
pattern.setdefault('date', context.get('date'))
return super().compute(
party, product, unit_price, quantity, uom, pattern=pattern)
class PriceListLine(metaclass=PoolMeta):
__name__ = 'product.price_list.line'
start_date = fields.Date(
"Start Date",
domain=[
If(Eval('start_date') & Eval('end_date'),
('start_date', '<=', Eval('end_date')),
()),
],
depends=['end_date'])
end_date = fields.Date(
"End Date",
domain=[
If(Eval('start_date') & Eval('end_date'),
('end_date', '>=', Eval('start_date')),
()),
],
depends=['start_date'])
def match(self, pattern):
pool = Pool()
Date = pool.get('ir.date')
pattern = pattern.copy()
date = pattern.pop('date', None) or Date.today()
if self.start_date and self.start_date > date:
return False
if self.end_date and self.end_date < date:
return False
return super(PriceListLine, self).match(pattern)
class PriceListLineContext(ModelView):
"Price List Line Context"
__name__ = 'product.price_list.line.context'
date = fields.Date("Date")
@classmethod
def default_date(cls):
pool = Pool()
Date = pool.get('ir.date')
return Date.today()
class SaleContext(metaclass=PoolMeta):
__name__ = 'product.sale.context'
date = fields.Function(
fields.Date("Date"),
'on_change_with_date')
@fields.depends('sale_date')
def on_change_with_date(self, name=None):
return self.sale_date