mirror of
https://github.com/NaN-tic/trytond-agronomics.git
synced 2023-12-14 05:33:01 +01:00
Add wine_history_material/duration fields
This commit is contained in:
parent
d05e465c0f
commit
c77a84c056
4 changed files with 63 additions and 11 deletions
11
history.py
11
history.py
|
@ -29,16 +29,7 @@ class WineAgingHistory(ModelSQL, ModelView):
|
|||
],
|
||||
],
|
||||
depends=['date_start'])
|
||||
duration = fields.Function(fields.Integer("Duration"),
|
||||
'get_duration')
|
||||
|
||||
@classmethod
|
||||
def get_duration(cls, records, name):
|
||||
res = dict((x.id, None) for x in records)
|
||||
for record in records:
|
||||
if record.date_end:
|
||||
res[record.id] = (record.date_end - record.date_start).days
|
||||
return res
|
||||
duration = fields.Integer("Duration")
|
||||
|
||||
@classmethod
|
||||
def delete(cls, records):
|
||||
|
|
50
product.py
50
product.py
|
@ -2,6 +2,8 @@
|
|||
# this repository contains the full copyright notices and license terms.
|
||||
from decimal import Decimal
|
||||
from datetime import datetime
|
||||
from sql.operators import (Less, Greater, LessEqual,
|
||||
GreaterEqual, Equal, NotEqual)
|
||||
from trytond.model import ModelSQL, ModelView, fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
|
@ -120,6 +122,10 @@ class Product(WineMixin, metaclass=PoolMeta):
|
|||
context={
|
||||
'product': Eval('id'),
|
||||
}, depends=['id'])
|
||||
wine_history_material = fields.Function(fields.Text("History Material"),
|
||||
'get_wine_history', searcher='search_wine_history')
|
||||
wine_history_duration = fields.Function(fields.Text("History Duration"),
|
||||
'get_wine_history', searcher='search_wine_history')
|
||||
|
||||
@classmethod
|
||||
def deactivate_no_stock_variants_cron(cls):
|
||||
|
@ -171,6 +177,50 @@ class Product(WineMixin, metaclass=PoolMeta):
|
|||
/ 100).quantize(
|
||||
Decimal(str(10 ** -self.__class__.alcohol_volume.digits[1])))
|
||||
|
||||
def get_wine_history(self, name):
|
||||
# not implemented
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def search_wine_history(cls, name, clause):
|
||||
pool = Pool()
|
||||
WineAgingHistory = pool.get('wine.wine_aging.history')
|
||||
Material = pool.get('stock.location.material')
|
||||
|
||||
wineaginghistory = WineAgingHistory.__table__()
|
||||
material = Material.__table__()
|
||||
|
||||
Operator = fields.SQL_OPERATORS[clause[1]]
|
||||
value = clause[2]
|
||||
|
||||
join1 = wineaginghistory.join(material,
|
||||
condition=wineaginghistory.material == material.id)
|
||||
query = join1.select(wineaginghistory.product)
|
||||
|
||||
if name == 'wine_history_material':
|
||||
query.where = (Operator(material.name, clause[2]))
|
||||
elif name == 'wine_history_duration':
|
||||
operator = clause[1]
|
||||
try:
|
||||
value = int(value)
|
||||
except ValueError:
|
||||
value = None
|
||||
if value:
|
||||
if operator == '=':
|
||||
query.where = Equal(wineaginghistory.duration, value)
|
||||
elif operator == '!=':
|
||||
query.where = NotEqual(wineaginghistory.duration, value)
|
||||
elif operator == '>':
|
||||
query.where = Greater(wineaginghistory.duration, value)
|
||||
elif operator == '>=':
|
||||
query.where = GreaterEqual(wineaginghistory.duration, value)
|
||||
elif operator == '<':
|
||||
query.where = Less(wineaginghistory.duration, value)
|
||||
elif operator == '<=':
|
||||
query.where = LessEqual(wineaginghistory.duration, value)
|
||||
|
||||
return [('id', 'in', query)]
|
||||
|
||||
|
||||
class Cron(metaclass=PoolMeta):
|
||||
__name__ = 'ir.cron'
|
||||
|
|
|
@ -464,7 +464,15 @@ class Production(metaclass=PoolMeta):
|
|||
('product', '=', input.product),
|
||||
('date_end', '=', None),
|
||||
])
|
||||
WineAgingHistory.write(histories, {'date_end': effective_date})
|
||||
if histories:
|
||||
to_write = []
|
||||
for history in histories:
|
||||
to_write.extend(([history], {
|
||||
'date_end': effective_date,
|
||||
'duration': (effective_date - history.date_start).days,
|
||||
}))
|
||||
WineAgingHistory.write(*to_write)
|
||||
|
||||
new_histories = []
|
||||
for output in outputs:
|
||||
new_histories += WineAgingHistory.create([{
|
||||
|
|
|
@ -124,5 +124,8 @@
|
|||
<field name="wine_tasting_phase_comment" tree_invisible="1"/>
|
||||
<field name="wine_tasting_phase_confirm" tree_invisible="1"/>
|
||||
<field name="wine_tasting_phase_success" tree_invisible="1"/>
|
||||
|
||||
<field name="wine_history_material" tree_invisible="1"/>
|
||||
<field name="wine_history_duration" tree_invisible="1"/>
|
||||
</xpath>
|
||||
</data>
|
||||
|
|
Loading…
Reference in a new issue