Hello,
Let say I have a list with 4 records with having field name is A, B, C, D in model_a.py .
model_a.py :
name_a = fields.Many2one('hr.employee', 'Employee')
time_a = fields.Date('Time A', default=fields.Date.today)
In model_b.py I have two one2many fields that connect to model_c.py and model_d.py
model_b.py :
time_b = fields.Date('Time B', default=fields.Date.today)
o_2_m_c = fields.One2many('model.c', 'connect_c')
o_2_m_d = fields.One2many('model.d', 'connect_d')
In model_c.py , I have already a list with 2 records having field name is A, E
model_c.py :
name_c = fields.Many2one('hr.employee', 'Employee')
connect_c = fields.Many2one('model.b')
model_d.py:
name_d = fields.Many2one('hr.employee', 'Employee')
connect_d = fields.Many2one('model.b')
In the model_b.py , I create a wizard button with a function to compare the name of model_a.py and in o_2_m_c in the form view of model_b.py at the same time.
If their name matches together (==) then the name should be written in o_2_m_d.
I'd done to do it.
The code of button in model_b.py like this:
def compare(self):
for rec in self:
list_a = self.env['model.a'].search([('time_a', '=', rec.time_b)])
for a in list_a:
list_vals_a = []
for c in rec.o_2_m_c:
if a.name_a == c.name_c:
name_match = {
'name_d': c.name_c.id,
}
list_vals_a.append([0, 0, name_match])
rec.write({'o_2_m_d': list_vals_a})
With this, the name: A has done to write into o_2_m_d.
So with the remaining name E in model_c.py , and the name B, C, D in model_a.py. I also want to show all of it out in o_2_m_d field with the message state like:
Message state for these name of model_a.py : "This name is not matched with name in o_2_m_c field"
Message state for these name in o_2_m_c of model_b.py : "This name is not matched with these name of model A"
I'd tried to use the ELSE condition but I got the wrong results with duplicated records in o_2_m_d field.
I think I got the problem with FOR loop.
So how to show (write) all the remaining records which do not satisfy the condition in o_2_m_d without duplicated?
Please help!
Thank you!