首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个模型- Odoo stock.picking创建stock.picking

从另一个模型- Odoo stock.picking创建stock.picking
EN

Stack Overflow用户
提问于 2017-11-10 15:17:05
回答 1查看 804关注 0票数 1

我有这样的方法:

代码语言:javascript
复制
@api.multi
def create_printy(self):
    copy_record = self.env['stock.picking'] # now you call the method directly
    for record in self:

        order_lines = []
        for rec in record.order_lines:
            order_lines.append(
            (0,0,
            {
                'product_id': rec.isbn.id,
                'product_qty': rec.qty,
                }
            ))
        copy_record.create({
            'origin': order.name,
            'picking_type_id.id': 'outgoing',
            'move_lines': order_lines, 
            'move_type': 'direct',
            'priority': '1',
            'company_id': record.company_id.id,
        })

这是一个按钮,应该从我的模型中创建一个新的stock.picking

我尝试过使用picking_type_id.id,但它似乎不起作用,在标准加载项中的每个示例中,您都看到了picking_type_id,而且,我在模型中没有任何定义,但是我想我可以传递一个可用的类型,即outgoing (我需要的那个)。

现在,它把我扔到:

代码语言:javascript
复制
Integrity Error

The operation cannot be completed, probably due to the following:
- deletion: you may be trying to delete a record while other records still reference it
- creation/update: a mandatory field is not correctly set

[object with reference: picking_type_id - picking.type.id]

那么,如何将这个picking_type_id传递到stock.picking,是否应该在模型中定义这个字段,即使不是必需的呢?但是,stock.picking模型对此有一定的要求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-10 15:21:27

字段picking_type_idstock.picking模型中是强制性的,而不是在create方法中指定它,而是为picking_type_id.id指定一个值,它不是一个字段(并且Odoo并不表示您知道这个事实)。必须找到选股类型对象的ID,并将其传递给create方法。当您想要输出类型时,请使用此代码选择类型。如果您有几个仓库,那么搜索方法肯定会返回几条记录,这就是为什么我要获得第一个记录的原因。但是,如果需要另一个参数,则必须向search方法传递更多参数才能更简洁。所以试试这个:

代码语言:javascript
复制
@api.multi
def create_printy(self):
    copy_record = self.env['stock.picking'] # now you call the method directly
    for record in self:
        order_lines = []
        for rec in record.order_lines:
            order_lines.append(
            (0,0,
            {
                'product_id': rec.isbn.id,
                'product_qty': rec.qty,
                }
            ))

        sp_types = self.env['stock.picking.type'].search([
            ('code', '=', 'outgoing')
        ])
        if len(sp_types) > 0:
            copy_record.create({
                'origin': order.name,
                'picking_type_id': sp_types[0].id,
                'move_lines': order_lines, 
                'move_type': 'direct',
                'priority': '1',
                'company_id': record.company_id.id,
            })
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47225945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档