如何在Odoo中从python创建延期交货?

问题描述

我是odoo新手。我的目标是在 python 中创建一个方法,该方法将从未完成的交货订单创建延期交货,并允许我跳过向导中的用户输入。

基本上它应该具有与用户点击验证按钮然后在向导中选择创建延期交货相同的功能,但没有用户在向导中输入。

enter image description here

解决方法

stock.picking

里面的方法很容易使用

试试这个:

backorders = your_picking_id._create_backorder()

它将生成并返回当前交货订单中剩余数量的延期交货订单。

,

您可以继承 stock.picking 并覆盖 _pre_action_done_hook 方法来创建延期交货,而不是返回确认向导。

class StockPicking(models.Model):
_inherit = 'stock.picking'

def _pre_action_done_hook(self):
    vals = super(StockPicking,self)._pre_action_done_hook()
    if isinstance(vals,dict):
        if (
            vals.get('type') == 'ir.actions.act_window' and
            vals.get('res_model') == 'stock.backorder.confirmation'
        ):
            pickings_to_validate = self.env.context.get(
                'button_validate_picking_ids')
            if pickings_to_validate:
                pickings_to_validate = self.env['stock.picking'].browse(
                    pickings_to_validate).with_context(skip_backorder=True)
                return pickings_to_validate.button_validate()
    return vals

上面 if 语句中的代码块取自 processstock.backorder.confirmation 方法,该方法链接到向导上的 Create Backorder 按钮。您可以在 stock/wizard/stock_backorder_confirmation.py 中阅读该方法。