首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Odoo 8:有从stock.picking到purchase.order的链接吗?

Odoo 8:有从stock.picking到purchase.order的链接吗?
EN

Stack Overflow用户
提问于 2020-02-25 12:15:09
回答 2查看 518关注 0票数 1

purchase.order中有这样的字段:

代码语言:javascript
复制
'picking_ids': fields.function(_get_picking_ids, method=True, type='one2many', relation='stock.picking', string='Picking List', help="This is the list of receipts that have been generated for this purchase order.")

它似乎是一个one2many字段,所以它在stock.picking中有计数器部分是逻辑的,但是不,它没有计数器部分。

_get_picking_ids方法中的代码如下所示:

代码语言:javascript
复制
def _get_picking_ids(self, cr, uid, ids, field_names, args, context=None):
    res = {}
    for po_id in ids:
        res[po_id] = []
    query = """
    SELECT picking_id, po.id FROM stock_picking p, stock_move m, purchase_order_line pol, purchase_order po
        WHERE po.id in %s and po.id = pol.order_id and pol.id = m.purchase_line_id and m.picking_id = p.id
        GROUP BY picking_id, po.id

    """
    cr.execute(query, (tuple(ids), ))
    picks = cr.fetchall()
    for pick_id, po_id in picks:
        res[po_id].append(pick_id)
    return res

有人能解释我为什么吗?以及如何在不添加额外字段的情况下链接purchase.order和stock.picking?(因为数据库从2K15开始就已经在prod中了)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-25 13:29:55

该字段是计算的,因此不需要像“实”one2many字段中的计数器部分。但是您可以尝试将字段picking_idspurchase.order on stock.picking中反转。

代码语言:javascript
复制
def _get_purchase_order_ids(self, cr, uid, ids, field_names, args, context=None):
    res = {}
    for pick_id in ids:
        res[pick_id] = []
    query = """
    SELECT picking_id, po.id FROM stock_picking p, stock_move m, purchase_order_line pol, purchase_order po
        WHERE p.id in %s and p.id = m.picking_id and m.purchase_line_id = pol.id and pol.order_id = po.id
        GROUP BY picking_id, po.id

    """
    cr.execute(query, (tuple(ids), ))
    picks = cr.fetchall()
    for pick_id, po_id in picks:
        res[pick_id].append(po_id)
    return res


'purchase_order_ids': fields.function(
    _get_purchase_order_ids, method=True, type='one2many',
    relation='purchase.order', string='Purchase Order List')

这只是一个快速的例子,没有经过测试。

票数 1
EN

Stack Overflow用户

发布于 2020-02-25 13:16:31

您可以在purchase_stock模块上搜索Odoo,并将其与"stock.picking“链接到"purchase.order”字段名purchase_id

谢谢

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60394440

复制
相关文章

相似问题

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