You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo17中获取quantity_done与reserved_availability字段

Odoo17中获取原quantity_done和reserved_availability字段的替代方案

在Odoo17的库存模块重构中,原stock.move模型的quantity_done和reserved_availability字段已被调整,替代方案如下:

1. 替代quantity_done字段

原stock.move的quantity_done字段已迁移至stock.move.line(库存移动明细行)模型中,每个明细行对应单独的已完成数量。若需获取整笔移动的已完成总量,可通过关联的明细行汇总计算,或在stock.move中自定义计算字段:

自定义计算字段示例:

from odoo import fields, models

class StockMove(models.Model):
    _inherit = 'stock.move'

    quantity_done = fields.Float(
        'Quantity Done',
        compute='_compute_quantity_done',
        digits='Product Unit of Measure'
    )

    def _compute_quantity_done(self):
        for move in self:
            move.quantity_done = sum(move.move_line_ids.mapped('quantity_done'))

直接访问stock.move.line的quantity_done字段,即可获取单条明细的已完成数量。

2. 替代reserved_availability字段

原reserved_availability字段已被替换为stock.move模型中的reserved_quantity字段,功能与原字段完全一致,用于标识该移动已预留的库存数量。

字段定义示例(与原字段逻辑对齐):

reserved_quantity = fields.Float(
    'Quantity Reserved',
    compute='_compute_reserved_quantity',
    digits='Product Unit of Measure',
    readonly=True,
    help='Quantity that has already been reserved for this move'
)

原Odoo16中的字段定义:

quantity_done = fields.Float(
    'Quantity Done', compute='_quantity_done_compute', digits='Product Unit of Measure',
reserved_availability = fields.Float(
    'Quantity Reserved', compute='_compute_reserved_availability',
    digits='Product Unit of Measure',
    readonly=True, help='Quantity that has already been reserved for this move')
    inverse='_quantity_done_set', store=True)

内容的提问来源于stack exchange,提问作者Sary Abobaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:27:43