Это поле для покупки.
'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, так что логика c состоит в том, что у него есть контрагент в stock.picking, но нет, он не имеет контрагента. Код в методе _get_picking_ids выглядит следующим образом:
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
Кто-то может объяснить мне, почему? А как связать buy.order и stock.picking без добавления дополнительного поля? (потому что база данных уже в prod начиная с 2k15).