如何使用Python XMLRPC在Odoo中创建Backorder(欠单)?
Odoo XMLRPC调用调拨单校验生成欠单解决方案
你调用button_validate返回的字典是Odoo的前端向导触发信号,说明当前调拨单未完成,需要确认是否生成欠单,XMLRPC场景下只需按以下步骤操作即可自动完成欠单创建:
- 第一步:调用调拨单的
button_validate方法,捕获返回的向导动作参数 - 第二步:根据返回的向导模型
stock.backorder.confirmation和上下文参数,创建向导实例 - 第三步:调用向导的
process方法完成校验和欠单生成
以下是可直接使用的Python代码示例:
import xmlrpc.client # Odoo连接配置 url = "你的Odoo服务地址" db = "你的数据库名称" username = "你的登录账号" password = "你的登录密码" # 建立XMLRPC连接 common = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common') uid = common.authenticate(db, username, password, {}) models = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/object') # 待校验的出库调拨单ID picking_id = 27 # 调用调拨单校验方法 validate_res = models.execute_kw(db, uid, password, 'stock.picking', 'button_validate', [[picking_id]]) # 判断是否触发欠单确认向导 if validate_res.get('res_model') == 'stock.backorder.confirmation': # 创建欠单确认向导记录,默认值从返回的context中自动获取 wizard_id = models.execute_kw( db, uid, password, 'stock.backorder.confirmation', 'create', [{}], {'context': validate_res['context']} ) # 调用向导方法生成欠单,完成当前调拨单校验 models.execute_kw( db, uid, password, 'stock.backorder.confirmation', 'process', [[wizard_id]] )
补充说明:如果不需要生成欠单,希望把未完成的数量标记为无需处理,只需将最后一步调用的process方法替换为process_cancel_backorder即可。
内容的提问来源于stack exchange,提问作者xixo222
相关产品推荐
相关产品推荐

