需要调整的原生代码:
# fixme 在获取stock.move时需要做判断。采购退货时不能使用先进先出规则。
candidates = move.product_id._get_fifo_candidates_in_move_with_company(move.company_id.id)
需要调整的逻辑:
判断作业类型是否是采购退货,如果是采购退货则想办法将入库的stock_move抓出来,要注意判断remaining_value 的值。
或者改写该方法:
但是考虑到传参数的麻烦,还是直接新建方法
def _get_fifo_candidates_in_move_with_company(self, move_company_id=False):
self.ensure_one()
domain = [('product_id', '=', self.id), ('remaining_qty', '>', 0.0)] + self.env['stock.move']._get_in_base_domain(move_company_id)
candidates = self.env['stock.move'].search(domain, order='date, id')
return candidates