Hello, i'm using odoo11 with lot traceability activated.
I wrote a custom method so that the lot number of a received product is automatically valorized in the stock.picking model, as soon as the user validates the purchase order, something like this:
class CustomPicking(models.Model): _inherit = 'stock.picking' _name = 'stock.picking' @api.multi def button_validate(self): for picking in self: for line in picking.move_line_ids: #omitted code that calculates a new lot number
line.lot_name = generated_lot_number
return super(CustomPicking, self).button_validate()
When the user creates a new Vendor Bill from the purchase order, i'd like the lot number to be automatically valorized with the generated value that was set up in the line of the stock.picking model.
After a bit of research i found that I have to override the method _prepare_invoice_line_from_po_line
class CustomInvoice(models.Model): _inherit = 'account.invoice' _name = 'account.invoice'
@api.multi def _prepare_invoice_line_from_po_line(self, line): data = super(CustomInvoice,self)._prepare_invoice_line_from_po_line(line) #do something with data
return data
The problem is that the "line" object in this method refers to the purchase_order_line model, and in that model my custom lot_id is still not valorized.
So i'd need to access the respective puchase_order_line instance from the stock_picking_line, but i cannot find a way to do so... (i'd have expected to find some relational field in one of the two models/tables, but unless i missed something i could not find it).
Do you have some suggestions about how could I achieve that?
Thanks!