2017-04-17 179 views
1

我有此嚮導方法查詢:方法沒有做對Odoo V10社區

@api.multi 
def search_partner_seniat(self): 
    """ Check vat of the partner and update iva rate 
    """ 
    self.ensure_one() 
    vat = self.vat.upper() 
    res = { 
     'name': _('The requested contributor does not exist'), 
     'vat_subjected': False, 
     'vat': vat, 
     'wh_iva_agent': False, 
     'wh_iva_rate': 0.0 
    } 

    if 'VE' in vat: 
     vat = vat[2:] 

    # assumption: both methods in new api style 
    if self.env['res.partner'].check_vat_ve(vat): 
     update_vals = self.env['seniat.url']._dom_giver(vat) 
     if update_vals: 
      res.update(update_vals) #self.write(res) 

    return { 
     'type': 'ir.actions.act_window', 
     'res_model': 'search.info.partner.seniat', 
     'view_mode': 'form', 
     'view_type': 'form', 
     'res_id': self.id, 
     'views': [(False, 'form')], 
     'target': 'new', 
    } 

這是應該檢查特定vat給我看它的結果的嚮導,否則就會顯示此消息The requested contributor does not exist

無論如何,這是從v8到v10社區的遷移。

所以在這個時候,它沒有返回任何東西,好像它沒有檢查表或其他東西。

此方法調用check_vat_ve_dom_giver方法,它們是這樣的:最初看起來

@api.multi 
def _dom_giver(self, vat): 
    """ Check and validates that the vat is a passport, 
    id or rif, to send information to SENIAT and returns the 
    partner info that provides. 
    """ 
    name = '' 
    url_seniat = '' 

    url_obj = self.search([], limit=1) 
    if url_obj.name: 
     name = url_obj.name 

    if url_obj.url_seniat: 
     url_seniat = url_obj.url_seniat 
    url1 = name + '%s' 
    url2 = url_seniat + '%s' 
    vat = self._validate_rif(vat) 
    if vat: 
     return self._get_rif(vat, url1, url2) 
    else: 
     return False 

@api.model 
def check_vat_ve(self, vat): #, context=None 
    """ Check Venezuelan VAT number, locally called RIF. 
    RIF: JXXXXXXXXX RIF VENEZOLAN 
     IDENTIFICATION CARD: VXXXXXXXXX 
     FOREIGN IDENTIFICATION CARD: EXXXXXXXXX 
    """ 

    #if context is None: 
     #context = {} 
    if re.search(r'^[VJEGP][0-9]{9}$', vat): 
     return True 
    if re.search(r'^([VE][0-9]{1,8}|[D][0-9]{9})$', vat): 
     return True 
    return False 

所有這些方法是這樣的:

def search_partner_seniat(self, cr, uid, ids, context=None): 
    """ Check vat of the partner and update iva rate 
    """ 
    if context is None: 
     context = {} 
    this = self.browse(cr, uid, ids)[0] 
    su_obj = self.pool.get('seniat.url') 
    rp_obj = self.pool.get('res.partner') 
    vat = this.vat.upper() 
    res = {'name': _('The requested contributor does not exist'), 
      'vat_subjected': False, 'vat': vat, 'wh_iva_agent': False, 
      'wh_iva_rate': 0.0} 

    if 'VE' in vat: 
     vat = vat[2:] 

    if rp_obj.check_vat_ve(vat, context=context): 
     res = su_obj._dom_giver(cr, uid, vat, context) 
    self.write(cr, uid, ids, res) 

    return { 
     'type': 'ir.actions.act_window', 
     'res_model': 'search.info.partner.seniat', 
     'view_mode': 'form', 
     'view_type': 'form', 
     'res_id': this.id, 
     'views': [(False, 'form')], 
     'target': 'new', 
    } 

def check_vat_ve(self, vat, context=None): 
    """ Check Venezuelan VAT number, locally called RIF. 
    RIF: JXXXXXXXXX RIF VENEZOLAN 
     IDENTIFICATION CARD: VXXXXXXXXX 
     FOREIGN IDENTIFICATION CARD: EXXXXXXXXX 
    """ 

    if context is None: 
     context = {} 
    if re.search(r'^[VJEGP][0-9]{9}$', vat): 
     return True 
    if re.search(r'^([VE][0-9]{1,8}|[D][0-9]{9})$', vat): 
     return True 
    return False 

def _dom_giver(self, cr, uid, vat, context=None): 
    """ Check and validates that the vat is a passport, 
    id or rif, to send information to SENIAT and returns the 
    partner info that provides. 
    """ 
    if context is None: 
     context = {} 

    url_obj = self.browse(cr, uid, self.search(cr, uid, []))[0] 
    url1 = url_obj.name + '%s' 
    url2 = url_obj.url_seniat + '%s' 
    vat = self._validate_rif(cr, uid, vat, context=None) 
    if vat: 
     return self._get_rif(cr, uid, vat, url1, url2, context=context) 
    else: 
     return False 

它正在當然Odoo V8預期。

任何想法?

我認爲這是與這些聲明在_dom_giver

但我真的不知道。

回答

1

在您的舊版本代碼中,您正在編寫嚮導記錄。

self.write(CR,UID,IDS,RES)

在新版本的代碼寫行是註釋。

#self.write(RES)

在新版本的代碼瓦爾斯正在準備但不使用。

您應該刪除註釋寫入方法&檢查它。

這可能對你有幫助。

相關問題