Files
tryton/service.py
T

59 lines
1.9 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.
"Service"
from trytond.osv import fields, OSV
class Service(OSV):
'Service'
_name = 'project_revenue.service'
_description = __doc__
employee = fields.Many2One('company.employee', 'Employee', required=True)
product = fields.Many2One('product.product', 'Product', required=True,
domain=[('type', '=', 'service')])
sequence = fields.Integer('Sequence', help="Use to order Services")
def __init__(self):
super(Service, self).__init__()
self._sql_constraints += [
('employee_product_uniq', 'UNIQUE(employee, product)',
'You can have only once the same product by employee!'),
]
self._constraints += [
('check_product_uom', 'uom_time'),
]
self._error_messages.update({
'uom_time': 'You must use a product with UOM of time!',
})
self._order.insert(0, ('sequence', 'ASC'))
def check_product_uom(self, cursor, user, ids):
'''
Check if products have an UOM of time.
'''
model_data_obj = self.pool.get('ir.model.data')
model_data_ids = model_data_obj.search(cursor, user, [
('fs_id', '=', 'uom_cat_time'),
('module', '=', 'product'),
('inherit', '=', False),
], limit=1)
model_data = model_data_obj.browse(cursor, user, model_data_ids[0])
category_id = model_data.db_id
for service in self.browse(cursor, user, ids):
if service.product.default_uom.category.id != category_id:
return False
return True
Service()
class Employee(OSV):
_name = 'company.employee'
services = fields.One2Many('project_revenue.service',
'employee', 'Services',
help="Services allowed to use in timesheets.")
Employee()