2017-04-17 2 views
1

ich diesen Assistenten Methode haben:Methode nicht tun Abfragen auf Odoo v10 Community

@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', 
    } 

Dies ist ein Assistent, der für eine bestimmte vat überprüfen sollten, und zeigen Sie mir die Ergebnisse davon, sonst zeigt es diese Meldung The requested contributor does not exist

Wie auch immer, das ist eine Migration, die ich von v8 zu v10 Community mache.

Also in diesem Moment gibt es nichts zurück, scheint, als ob es nicht den Tisch oder etwas überprüft.

Diese Methode ruft check_vat_ve und _dom_giver Methoden, die wie folgt sind:

@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 

Alle diese Methoden ursprünglich sah wie folgt aus:

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 

Es arbeitet als auf Odoo v8 natürlich erwartet.

Irgendwelche Ideen?

Ich denke, es hat etwas mit diesen Erklärungen auf _dom_giver zu tun:

Aber ich bin nicht wirklich sicher.

Antwort

1

In Ihrem alten Versionscode schreiben Sie den Assistentensatz.

self.write (cr, uid, ids, res)

In neuer Version Code Schreibleitung ist in Kommentar.

# self.write (res)

In neue Version Code vals bereiten aber sie verwenden nicht.

Sie sollten den Kommentar in der Schreibmethode & löschen, überprüfen Sie es.

Dies kann Ihnen helfen.

Verwandte Themen