[IMP] sale_timehseet: bring improvements in project invoice notebook
In project.project form view invoicing notebook > employee/SOL mapping
- set the project's default Sol
- selecting existing employees should not be possible
- allow for on-the-fly employee creation
task-2947578
Part-of: odoo/odoo#119771
This commit is contained in:
@@ -9,7 +9,8 @@ class ProjectProductEmployeeMap(models.Model):
|
||||
_description = 'Project Sales line, employee mapping'
|
||||
|
||||
project_id = fields.Many2one('project.project', "Project", required=True)
|
||||
employee_id = fields.Many2one('hr.employee', "Employee", required=True)
|
||||
employee_id = fields.Many2one('hr.employee', "Employee", required=True, domain="[('id', 'not in', existing_employee_ids)]")
|
||||
existing_employee_ids = fields.Many2many('hr.employee', compute="_compute_existing_employee_ids")
|
||||
sale_line_id = fields.Many2one(
|
||||
'sale.order.line', "Sales Order Item",
|
||||
compute="_compute_sale_line_id", store=True, readonly=False,
|
||||
@@ -34,6 +35,15 @@ class ProjectProductEmployeeMap(models.Model):
|
||||
('uniqueness_employee', 'UNIQUE(project_id,employee_id)', 'An employee cannot be selected more than once in the mapping. Please remove duplicate(s) and try again.'),
|
||||
]
|
||||
|
||||
@api.depends('employee_id', 'project_id.sale_line_employee_ids.employee_id')
|
||||
def _compute_existing_employee_ids(self):
|
||||
project = self.project_id
|
||||
if len(project) == 1:
|
||||
self.existing_employee_ids = project.sale_line_employee_ids.employee_id
|
||||
return
|
||||
for map_entry in self:
|
||||
map_entry.existing_employee_ids = map_entry.project_id.sale_line_employee_ids.employee_id
|
||||
|
||||
@api.depends('partner_id')
|
||||
def _compute_sale_line_id(self):
|
||||
self.filtered(
|
||||
|
||||
@@ -12,12 +12,13 @@
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='settings']" position="after">
|
||||
<page name="billing_employee_rate" string="Invoicing" attrs="{'invisible': ['|', ('allow_billable', '=', False), ('partner_id', '=', False)]}">
|
||||
<field name="sale_line_employee_ids">
|
||||
<field name="sale_line_employee_ids" context="{'default_sale_line_id': sale_line_id}">
|
||||
<tree editable="bottom">
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="partner_id" invisible="1"/>
|
||||
<field name="sale_order_id" invisible="1"/>
|
||||
<field name="employee_id" options="{'no_create': True}" widget="many2one_avatar_user"/>
|
||||
<field name="employee_id" widget="many2one_avatar_user"/>
|
||||
<field name="existing_employee_ids" invisible="1"/>
|
||||
<field name="sale_line_id" attrs="{'required': True}" options="{'no_create': True}" context="{'search_default_order_id': sale_order_id}"/>
|
||||
<field name="price_unit" widget="monetary" force_save="1" options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="display_cost" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
||||
|
||||
Reference in New Issue
Block a user