In Odoo 11 CE, I am trying to customise the Payslip object, "hr.payslip", which has a One2Many relation with the object "hr.payslip.lines" through the field "line_ids".
I have added a custom field to the object hr.payslip.
net_pay = fields.Float(string='Net Pay', related='line_ids.total', domain=[('line_ids.code', 'ilike', "NET")])
The aim of this field is to fetch the value from the field 'total' in the hr.payslip.line where the field 'code' is set to "NET". There is only one line per payslip with this code.
The problem I'm having is that the domain does not seem to be applied and the net_pay is just returning the 'total' value from the first line (which has the code "GROSS"), and not excluding lines that have a code different to "NET".
What am I doing wrong?
EDITED:
I thought I found the answer to my question thanks to this answer by Lan Pham at stackoverflow
https://stackoverflow.com/questions/59534725/odoo-domain-not-working-with-a-related-field
But the code below doesn't fetch the 'amount' from the payslip.line with code 'NET' for the relevant payslip. It seems to get the first possible value from the hr.payslip.line table.
net_pay = fields.Float(string='Net Pay', compute='_get_netpay')
@api.multi
def _get_netpay(self):
for line in self:
line.net_pay = self.env['hr.payslip.line'].search([('code', '=', "NET")], limit=1).amount
How can I make the "net_pay' field fetch from the line that belongs to the payslip?