23 lines
796 B
Python
23 lines
796 B
Python
# -*- 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)
|