2015-02-13 2 views
1

Как получить поле, которое присутствует в sales.order в отчете о счете. Таким образом, отчет счета-фактуры использует модель account.invoice, если я добавляю функцию в report.py, она разрешает только self.cr, self.uid, потому что мы не используем osv.memory. Итак, как получить значение cust_ref_value из sales.order в счет-фактуру.RML report openerp 7

ответ

0

Мы можем проследить из Source Document

В report.py нам нужно создать функцию и передать происхождение в нем.

def __init__(self, cr, uid, name, context): 
    super(your_report_calss_name, self).__init__(cr, uid, name, context) 
    self.localcontext.update({ 
     'time': time, 
     'get_cust_ref_val': self._get_cust_ref_val, 
    }) 

Этот метод будет проверять, как происхождения является SO или PO или OUT/###: ### SO или в/###: ### PO так следующий случай здесь

def _get_cust_ref_val(self, origin) 
    if 'SO' in origin: 
     if 'OUT/' in origin: 
      so_name = str(origin).split(':')[1] 
      sale_id = self.pool.get('sale.order').search(self.cr, self.uid, [('name', '=', so_name)] 
      if sale_id: 
       sale = self.pool.get('sale.order').browse(self.cr, self.uid, sale_id) 
       return sale.cust_ref_value 
     else: 
      sale_id = self.pool.get('sale.order').search(self.cr, self.uid, [('name', '=', origin)] 
      if sale_id: 
       sale = self.pool.get('sale.order').browse(self.cr, self.uid, sale_id) 
       return sale.cust_ref_value 
    else: 
     return '' 

и со стороны rml

[[ get_cust_ref_val(inv.origin) ]]