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

Odoo 10中无需创建DC或发票且完成库存操作后关闭销售订单可行吗?

在Odoo 10中不创建交货单/发票关闭销售订单并完成库存操作的解决方案

嘿,我刚好在Odoo 10里处理过类似的需求,直接改销售订单状态为done失败是因为系统默认会校验关联的库存交货和发票状态,咱们可以分两种场景来解决:

一、非开发手动操作方案(适合少量订单)

如果只是处理个别订单,不想动代码,按这个步骤来:

  1. 先搞定库存出库
    • 找到该销售订单关联的待处理库存调拨单(Stock Picking),如果没自动生成,就手动新建一个「客户交货」类型的调拨单,把订单里的商品加进去,确认库存数量足够后点击「验证」,完成出库操作(确保调拨单状态变成完成)。
  2. 调整销售订单的发票策略
    • 打开销售订单进入编辑模式,找到「发票策略」字段,改成「无」(Odoo 10里这个选项会让系统不再强制要求生成发票)。
  3. 强制修改订单状态为完成
    • 开启开发者模式(设置→开发者工具→开启开发者模式),回到销售订单编辑界面,找到「状态」字段,直接选择完成后保存即可。

二、开发自定义方案(适合批量或自动化需求)

如果需要批量处理或者想做个一键操作的按钮,可以写个简单的自定义模块来跳过系统校验:

核心代码示例(Python)

from odoo import models, api

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    @api.multi
    def action_mark_done_without_delivery_invoice(self):
        for order in self:
            # 自动完成所有未处理的关联库存调拨单
            pending_pickings = order.picking_ids.filtered(lambda p: p.state not in ['done', 'cancel'])
            if pending_pickings:
                pending_pickings.action_done()
            
            # 标记订单为完成,并跳过发票校验
            order.write({
                'state': 'done',
                'invoice_status': 'invoiced'  # 让系统认为已开票,避免状态冲突
            })

然后在销售订单的视图里添加一个自定义按钮,绑定这个方法,以后点击按钮就能一键完成所有操作。

重要提醒

  • 不管用哪种方法,一定要确保实际库存和系统库存一致,避免账实不符;
  • 如果业务流程要求必须保留交货单或发票记录,建议还是走标准流程,不然后续统计或审计容易出问题;
  • 修改状态前最好备份数据,以防误操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:36:07