This question has been flagged
2 Replies
24681 Views

Hi,

probably a novice question but here it is.

I need to create a relation on each invoice line to its corresponding sale order line creating a new field on the invoice line form. (Just the same way that delivery out lines are related to sale orders lines). Is it possible to do this easily?.

Thanks in advance.

Regards.

Avatar
Discard
Best Answer

hello,

You already have this:

Look on the sale.order.line model.

image description

  • invoice_lines: list of invoice lines linked to this sale.order.line
  • invoiced : if this sale.order.line has been invoiced

You need the reversed one from account.invoice.line ? Add this to your account.invoice.line model (not tested but should works):

'sale_order_lines': fields.many2many('sale.order.line', 'sale_order_line_invoice_rel', 'invoice_id', 'order_line_id', 'Sale Order  Lines', readonly=True)
Avatar
Discard
Author Best Answer

Hi Nicolas,

thank you very much for your kind response but this is not exactly what i needed.

I meant one to one relation for each object (invoice_line_id --> sale_order_line_id).

Regards.

EDITED:

This is what i did (works for me but it's not very neat):

On account_invoice.py (account)

Add column in account_invoice_line:

'sale_order_line_id': fields.many2one('sale.order.line', 'Sales Order Line', help='Sale Order Line'),

On sale.py (sale)

Add column on _prepare_order_line_invoice_line function:

‘sale_order_line_id’: line.id,

That's it.

Regards.

Avatar
Discard

That's what Nicolas posted. sale_order_line_invoice_rel is what relate them. Of course it's not a 1:1 relation. It's a N:N relation.

Yes the rel between sale.order.line and account.invoice.line is not 1:1 by default, but you have the same behaviour as you need. If it works for you ok ,but I think it should be a many2many field as it is.

I change a typo error on my response.. if you look on the first record ou sale_order_lines (sale_order_lines[0]) you will find your record.

Author

OK, thank you very much Nicolas.

No prob. Can you make your question as answered and check the good answer ?