Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
10588 Lượt xem

hello odoo community

in purchase_requstion.py file there is a function that use one2many(purchase_ids) to extract the value of connected field(purchase_ids->state)

def tender_cancel(self, cr, uid, ids, context=None):
    purchase_order_obj = self.pool.get('purchase.order')
    for purchase in self.browse(cr, uid, ids, context=context):
        for purchase_id in purchase.purchase_ids:
            if str(purchase_id.state) in('draft','wait'):
                purchase_order_obj.action_cancel(cr,uid,[purchase_id.id])
    self.write(cr, uid, ids, {'state': 'cancel', 'cancel_uid' : uid, 'cancel_date':time.strftime('%Y-%m-%d %H:%M:%S')})
    return True

I add function field and use the same function logic in line_ids field but it is not return anything, why?

def _compute_lin(self, cr, uid, ids, prop, unknow_none, context=None):
    res = {}
    for record in self.browse(cr, uid, ids, context=context):
        for rec in record.line_ids:
            if rec.product_id:
                res[rec.id] = 'yes'
            else:
                res[rec.id] = 'no'
    return res

'lin' : fields.function(_compute_lin ,string='Lin' , size=128 ,store=True ,type='char'),

oprnerp v6

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

In the res dictionary, it should not be the res[rec.id] but should be res[record.id]. Because rec.id will give you the ID of the o2m field which is wrong. You have to pass the ID of the current record which is record.id

 res[record.id] = 'yes'



Ảnh đại diện
Huỷ bỏ
Tác giả

thanks, that's work

Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 10 20
3174
1
thg 3 15
4740
1
thg 5 25
987
1
thg 1 25
1724
2
thg 9 22
9455