Search code examples
odoo-10

copying custom field value from sale order line to stock.move in odoo


Copying value from sale order line to stock move it shows only second row value in both rows. code: [enter image description here][1]

from odoo import models, fields, api

class StockMove(models.Model):

@api.multi
    def get_data(self):
        data = self.env['sale.order.line'].search([])
        print("Get Data Function")
        for rec in data:
            print(rec.x_serialnumber)
            for record in self:
                record.x_serialnumber = rec.x_serialnumber

    _inherit = 'stock.move'
    x_serialnumber = fields.Text(string="Serial Number", compute='get_data')"

On Sale order line it shows like this:

Serial Number: in both lines

112233

445566

But in stock move:

Serial Number: in both lines

445566

445566


Solution

  • Aurangzaib
    Update your code:

    @api.multi
    def get_data(self):
        for move in self:
            if not (move.picking_id and move.picking_id.group_id):
                continue
            picking = move.picking_id
            sale_order = self.env['sale.order'].sudo().search([
                ('procurement_group_id', '=', picking.group_id.id)], limit=1)
            for line in sale_order.order_line:
                if line.product_id.id != move.product_id.id:
                    continue
                move.update({
                    'x_serialnumber': line.x_serialnumber,
                })