asset: query für update
This commit is contained in:
parent
a936d85043
commit
f8ba90d633
5 changed files with 211 additions and 117 deletions
153
asset.py
153
asset.py
|
@ -9,6 +9,8 @@ from trytond.pool import Pool
|
|||
from trytond.pyson import Eval, Bool, And
|
||||
from decimal import Decimal
|
||||
from datetime import time
|
||||
from sql.functions import CurrentTime
|
||||
from sql.conditionals import Case
|
||||
|
||||
|
||||
class Asset(ModelSQL, ModelView):
|
||||
|
@ -64,25 +66,13 @@ class Asset(ModelSQL, ModelView):
|
|||
updtsource = fields.Many2One(string='Update Source',
|
||||
help='Select a source for the course update.',
|
||||
ondelete='SET NULL', model_name='investment.source')
|
||||
updttime1 = fields.Time(string='Time 1',
|
||||
updttime = fields.Time(string='Time',
|
||||
states={
|
||||
'readonly': ~Bool(Eval('updtsource')),
|
||||
}, depends=['updtsource'])
|
||||
updttime2 = fields.Time(string='Time 2',
|
||||
states={
|
||||
'readonly': ~And(
|
||||
Bool(Eval('updtsource')),
|
||||
Bool(Eval('updttime1')),
|
||||
),
|
||||
}, depends=['updtsource', 'updttime1'])
|
||||
updttime3 = fields.Time(string='Time 3',
|
||||
states={
|
||||
'readonly': ~And(
|
||||
Bool(Eval('updtsource')),
|
||||
Bool(Eval('updttime1')),
|
||||
Bool(Eval('updttime2')),
|
||||
),
|
||||
}, depends=['updtsource', 'updttime1', 'updttime2'])
|
||||
updtneeded = fields.Function(fields.Boolean(string='Course update needed',
|
||||
readonly=True),
|
||||
'on_change_with_updtneeded', searcher='search_updtneeded')
|
||||
|
||||
@classmethod
|
||||
def default_currency(cls):
|
||||
|
@ -106,31 +96,14 @@ class Asset(ModelSQL, ModelView):
|
|||
"""
|
||||
return 4
|
||||
|
||||
@fields.depends('updtsource', 'updttime1', 'updttime2', 'updttime3')
|
||||
@fields.depends('updtsource', 'updttime')
|
||||
def on_change_updtsource(self):
|
||||
""" clear time-fields
|
||||
"""
|
||||
if self.updtsource is None:
|
||||
self.updttime1 = None
|
||||
self.updttime2 = None
|
||||
self.updttime3 = None
|
||||
self.updttime = None
|
||||
else :
|
||||
self.updttime1 = time(11, 30)
|
||||
|
||||
@fields.depends('updttime1', 'updttime2', 'updttime3')
|
||||
def on_change_updttime1(self):
|
||||
""" clear fiels
|
||||
"""
|
||||
if self.updttime1 is None:
|
||||
self.updttime2 = None
|
||||
self.updttime3 = None
|
||||
|
||||
@fields.depends('updttime2', 'updttime3')
|
||||
def on_change_updttime2(self):
|
||||
""" clear fiels
|
||||
"""
|
||||
if self.updttime2 is None:
|
||||
self.updttime3 = None
|
||||
self.updttime = time(11, 30)
|
||||
|
||||
@fields.depends('id', 'currency_digits')
|
||||
def on_change_with_rate(self, name=None):
|
||||
|
@ -165,6 +138,78 @@ class Asset(ModelSQL, ModelView):
|
|||
if self.currency:
|
||||
self.currency_digits = self.currency.digits
|
||||
|
||||
@fields.depends('product')
|
||||
def on_change_with_product_uom(self, name=None):
|
||||
""" get category of product-uom
|
||||
"""
|
||||
if self.product:
|
||||
return self.product.default_uom.category.id
|
||||
|
||||
@fields.depends('currency')
|
||||
def on_change_with_currency_digits(self, name=None):
|
||||
""" currency of cashbook
|
||||
"""
|
||||
if self.currency:
|
||||
return self.currency.digits
|
||||
else:
|
||||
return 2
|
||||
|
||||
@fields.depends('company', 'currency')
|
||||
def on_change_with_company_currency(self, name=None):
|
||||
""" get company-currency if its different from current
|
||||
asset-currency
|
||||
"""
|
||||
if self.company:
|
||||
if self.currency:
|
||||
if self.company.currency.id != self.currency.id:
|
||||
return self.company.currency.id
|
||||
|
||||
@fields.depends('id')
|
||||
def on_change_with_updtneeded(self, name=None):
|
||||
""" get state of update
|
||||
"""
|
||||
Asset2 = Pool().get('investment.asset')
|
||||
|
||||
if self.id:
|
||||
if Asset2.search_count([
|
||||
('updtneeded', '=', True),
|
||||
('id', '=', self.id)
|
||||
]) == 1:
|
||||
return True
|
||||
return False
|
||||
|
||||
@classmethod
|
||||
def search_updtneeded(cls, names, clause):
|
||||
""" search for assets to update
|
||||
"""
|
||||
pool = Pool()
|
||||
Asset2 = pool.get('investment.asset')
|
||||
Rate = pool.get('investment.rate')
|
||||
IrDate = pool.get('ir.date')
|
||||
tab_asset = Asset2.__table__()
|
||||
tab_rate = Rate.__table__()
|
||||
Operator = fields.SQL_OPERATORS[clause[1]]
|
||||
context = Transaction().context
|
||||
|
||||
query_date = context.get('qdate', IrDate.today())
|
||||
query_time = context.get('qtime', CurrentTime())
|
||||
|
||||
query = tab_asset.join(tab_rate,
|
||||
condition=(tab_asset.id==tab_rate.asset) & \
|
||||
(tab_rate.date == query_date),
|
||||
type_ = 'LEFT OUTER',
|
||||
).select(tab_asset.id,
|
||||
where=Operator(
|
||||
Case(
|
||||
((tab_rate.id == None) & \
|
||||
(tab_asset.updtsource != None) & \
|
||||
(tab_asset.updttime <= query_time), True),
|
||||
default_ = False,
|
||||
),
|
||||
clause[2]),
|
||||
)
|
||||
return [('id', '=', query)]
|
||||
|
||||
@classmethod
|
||||
def get_identifier_sql(cls, tab_asset):
|
||||
""" sql-query for identifiers
|
||||
|
@ -246,32 +291,6 @@ class Asset(ModelSQL, ModelView):
|
|||
|
||||
return result
|
||||
|
||||
@fields.depends('product')
|
||||
def on_change_with_product_uom(self, name=None):
|
||||
""" get category of product-uom
|
||||
"""
|
||||
if self.product:
|
||||
return self.product.default_uom.category.id
|
||||
|
||||
@fields.depends('currency')
|
||||
def on_change_with_currency_digits(self, name=None):
|
||||
""" currency of cashbook
|
||||
"""
|
||||
if self.currency:
|
||||
return self.currency.digits
|
||||
else:
|
||||
return 2
|
||||
|
||||
@fields.depends('company', 'currency')
|
||||
def on_change_with_company_currency(self, name=None):
|
||||
""" get company-currency if its different from current
|
||||
asset-currency
|
||||
"""
|
||||
if self.company:
|
||||
if self.currency:
|
||||
if self.company.currency.id != self.currency.id:
|
||||
return self.company.currency.id
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.product:
|
||||
return self.product.rec_name
|
||||
|
@ -290,13 +309,11 @@ class Asset(ModelSQL, ModelView):
|
|||
"""
|
||||
pool = Pool()
|
||||
Asset2 = pool.get('investment.asset')
|
||||
IrDate = pool.get('ir.date')
|
||||
|
||||
assets = Asset2.search([
|
||||
('updtsource', '!=', None),
|
||||
(),
|
||||
])
|
||||
print('\n## assets:', assets)
|
||||
for asset in Asset2.search([
|
||||
('updtneeded', '=', True),
|
||||
]):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue