Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
1 Răspunde
2219 Vizualizări

I have a custom module and I have created a model and its view. I have an excel sheet that contains employees' work phones. I want when I import this excel sheet to get data of employees by matching the work phone in the sheet and the work phone in the hr.employee model. when I create a record manually by entering a work phone I get the data after I click on the save button, but when I import it I get nothing. I have created on change method for that here is my code: 

class BillBill(models.Model):
_name = "bill.bill"
_inherit = ['mail.thread', 'mail.activity.mixin']


employee_id = fields.Many2one('hr.employee', string='Employee', help="Employee")

work_phone = fields.Char(string='work_phone')

@api.onchange('work_phone')
def _onchange_work_phone(self):
    employee_rec = self.env['hr.employee']
    if self.work_phone:
        employee = employee_rec.search([('work_phone', '=', self.work_phone)])
        if not employee:
            raise UserError(_("No Employee by this Phone."))
        else:
            self.employee_id = employee.id


Imagine profil
Abandonează
Autor

thank you very much you made my day


Cel mai bun răspuns

You are using the onchange decorator which work only on form view so it will not be triggered when you import data as you can read below.

ORM API — Odoo 15.0 documentation

What you can do is to override the create method and write method (if needed).  

How to override Create method:

    
@api.model
def create(self, vals):
employee_rec = self.env['hr.employee']
if 'work_phone' in vals and vals.get('work_phone'):
employee = employee_rec.search([('work_phone', '=', vals.get('work_phone'))])
if not employee:
raise UserError(_("No Employee by this Phone."))
else:
vals['employee_id'] = employee.id
return super(BillBill, self).create(vals)


Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
1
iun. 23
3095
1
ian. 23
2861
0
sept. 22
2558
1
aug. 22
3565
0
aug. 22
2704