# -*- coding: utf-8 -*- from odoo import models class StockMove(models.Model): _inherit = 'stock.move' def write(self, vals): if 'quantity' in vals and any(move.state == 'cancel' for move in self): non_cancelled_moves = self.filtered(lambda m: m.state != 'cancel') cancelled_moves = self - non_cancelled_moves res = True if non_cancelled_moves: res = super(StockMove, non_cancelled_moves).write(vals) if cancelled_moves and len(vals) > 1: vals_no_qty = {k: v for k, v in vals.items() if k != 'quantity'} super(StockMove, cancelled_moves).write(vals_no_qty) return res return super(StockMove, self).write(vals)