2014-09-10 1 views
0

У меня есть цитата с полем many2one (x_delivery_periods) в openerp. Прежде чем писать в базу данных, я хочу вычислить зафиксированную дату, используя поле функции (commit_date). Поэтому я пишу следующий код.Как получить доступ к значению поля many2one из формы, представленной в openerp?

def _get_commitment_date(self, cr, uid, ids, name, arg, context=None): 
    res = {} 
    dates_list = [] 
    deliveryperiod_obj = self.pool.get('stock.deliveryperiods') 
    for order in self.browse(cr, uid, ids, context=context): 
     dates_list = [] 

     deliveryperiod_read_test = deliveryperiod_obj.read(cr, uid, 4, ['name'], context) #working 
     deliveryperiod_browse_test = deliveryperiod_obj.browse(cr,uid,4).name #working 
     print deliveryperiod_read_test #working displays 10.0 
     print deliveryperiod_browse_test #working displays {'name': 10.0, 'id': 4} 

     print order.x_deliveryperiod #working displays browse_record(stock.deliveryperiods, 4) 
     deliveryperiod_read = deliveryperiod_obj.read(cr, uid, order.x_deliveryperiod, ['name'], context) #not working TypeError: argument 2 to map() must support iteration 
     deliveryperiod_browse = deliveryperiod_obj.browse(cr,uid,order.x_deliveryperiod).name #not working TypeError: argument 2 to map() must support iteration 
     print deliveryperiod_read 
     print deliveryperiod_browse 

     dt = datetime.strptime(order.date_order, '%Y-%m-%d') + relativedelta(days=deliveryperiod_read or 0.0) 
     dt_s = dt.strftime('%Y-%m-%d') 
     dates_list.append(dt_s) 
     if dates_list: 
      res[order.id] = min(dates_list) 
    return res 

_columns = { 
    'commitment_date': fields.function(_get_commitment_date, store=True, type='date', string='Commitment Date', help="Committed date for delivery."), 
} 

Но при извлечении данных из self.browse oblect результаты вышеуказанных ошибок. Любая помощь будет высоко оценена. Заранее спасибо.

ответ

1

Это будет работать, попробуйте это,

def _get_commitment_date(self, cr, uid, ids, name, arg, context=None): 
    res = {} 
    dates_list = [] 
    deliveryperiod_obj = self.pool.get('stock.deliveryperiods') 
    for order in self.browse(cr, uid, ids, context=context): 
     dates_list = [] 

     deliveryperiod_read_test = deliveryperiod_obj.read(cr, uid, 4, ['name'], context) 
     deliveryperiod_browse_test = deliveryperiod_obj.browse(cr,uid,4).name 

     deliveryperiod_read = deliveryperiod_obj.read(cr, uid, [order.x_deliveryperiod.id], ['name'], context) 
     deliveryperiod_browse = deliveryperiod_obj.browse(cr,uid,[order.x_deliveryperiod.id]).name 

     dt = datetime.strptime(order.date_order, '%Y-%m-%d') + relativedelta(days=deliveryperiod_read or 0.0) 
     dt_s = dt.strftime('%Y-%m-%d') 
     dates_list.append(dt_s) 
     if dates_list: 
      res[order.id] = min(dates_list) 
    return res 
+0

спасибо большое Odedra. Его работа – manuthalasseril

+0

Можете ли вы проверить этот qtn, пожалуйста? Http: //stackoverflow.com/questions/25831240/how-to-create-a-custom-field-at-delivery-order-stock-picking-out-which-gets -Это – manuthalasseril

 Смежные вопросы

  • Нет связанных вопросов^_^