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

i have code like this

def _picking_assign(self,cr, uid, move_ids, procurement_group, location_from, location_to, context=None):
pick_obj = self.pool.get("stock.picking")
    move = self.browse(cr,uid,move_ids[0])
    obj_model = self.pool.get('ir.model')
    obj_model_id = obj_model.search(cr,uid,[ ('model','=',move.procurement_id.sale_line_id.order_id.__class__.__name__) ])
    if move.cabang:
    values = {
            'origin': move.origin,
            'company_id': move.company_id and move.company_id.id or False,
            'move_type': move.group_id and move.group_id.move_type or 'direct',
            'partner_id': move.partner_id.id or False,
            'picking_type_id': move.picking_type_id and move.picking_type_id.id or False,
            'group_id': procurement_group,
            'location_id':location_from,
            'location_dest_id': location_to,
            'cabang': move.cabang.id,
            'state': 'draft',
            'transaction_id': move.procurement_id.sale_line_id.order_id.id,
            'model_id': obj_model_id[0]
            }
        pick = pick_obj.create(cr, uid, values, context=context)
        self.write(cr, uid, move_ids, {'picking_id': pick}, context=context)
    res = super(stock,self)._picking_assign(cr, uid, move_ids, procurement_group, location_from, location_to, context=context)
    pick_obj.force_assign(cr,uid,pick)
    return res

but i getting error like this

File "/home/susi/odoo/addons/SAVIRA/mcs_sale_order/mcs_procurement_order.py", line 28, in_picking_assign    pick_obj.force_assign(cr,uid,pick)ValueError: "local variable 'pick' referenced before assignment" while evaluatingu'action_ship_create()'


anyone can help me what its mean? and how i fix it. Thanks before

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

dear Susi

you need to define pick=False variable out of if statement.

and you must check it before call it as parameter on pick_obj.force_assign(cr,uid,pick)

like this

if pick:
                pick_obj.force_assign(cr,uid,pick)


I hope I helped you...

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

dear ayman, thanks before for your answer. i have try your solution its not getting error again. but the value field that i want get its still empty. do you know why?

Câu trả lời hay nhất

Hai Susi,.
  You assigned pick variable "pick = pick_obj.create(cr, uid, values, context=context)"  inside a if block in this function[ if move.cabang:]. In case this if condition fails, the pick will not assign. It will arise error message while you use pick variable in any other function or block. So you have to set a dummy value to pick outside of if block  

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

Hello Susi,

Local variable is accessible within a block only.

Here you have declare pick variable that is storing the result return by a create method.

that pick variable is accessible within a if block only.

if you need to access it then you must declare the same variable outside of block.


I Hope this will help you.

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 12 22
14796
1
thg 11 21
4918
0
thg 1 21
2276
8
thg 5 20
7804
0
thg 12 23
2927