Forum

Benvenuto!

Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.

0

Validazione campi account invoice odoo 12

Avatar
Luigi Massa

Buongiorno

sul mio vecchio odoo sto provando ad effettuare una validazione del paese del partner in fase di creazione fattura fornitore

Ho creato un piccolo modulo che ho anche installato. Qui sotto c'è il codice del file model. Il modulo si installa ma non vedo il log da nessuna parte. Forse non funziona? 
Qualche sviluppatore può darmi un suggerimento?
Grazie in anticipo

from odoo import models, api

class AccountInvoicePartnerMixin(models.AbstractModel):
    _inherit = 'account.invoice'
    @api.model_create_multi
    def create(self, vals_list):
        invoices = super().create(vals_list)
        for invoice in invoices:
            if invoice.partner_id:
                allowed_countries = ['IT', 'FR', 'ES']
                if invoice.partner_id.country_id.code not in allowed_countries:
                    invoice.journal_id = False
                    # Aggiungi un'istruzione per il log
                    self.env['ir.logging'].info(
                        "La country_id del partner non è consentita: %s", invoice.partner_id.country_id.code)
        return invoices


Avatar
Abbandona
1 risposta
0
Avatar
Alex Comba
Migliore risposta

Se usi ir.logging devi avviare Odoo utilizzando le seg. opzioni:

  --log-db=LOG_DB Logging database

  --log-db-level=LOG_DB_LEVEL

  Logging database level

Così facendo vedrai le varie righe del log direttamente in Odoo tramite una vista dedicata.

Se invece il tuo obiettivo è semplicemente aggiungere tali info al log di Odoo puoi usare:

import logging

logger = logging.getLogger(__name__)



Avatar
Abbandona
0
Avatar
Luigi Massa
Migliore risposta

Grazie della veloce risposta.
Ho impostato il log come hai detto in quanto mi interessa veder solo sulla shell se il modulo è richiamatao....

class AccountInvoicePartnerMixin(models.AbstractModel):
_inherit = 'account.invoice'
    @api.model_create_multi
    def create(self, vals_list):
        invoices = super().create(vals_list)
        logger.info("controllo le fatture in creazione")
        ......

Ho provato anche a disinstallare e reinstallare il modulo ma il logo non compare. Sto provando a creare una nuova fattura fornitore, senza validarla. Inserisco il nome del fornitore e poi cambio focus al campo ma il log non compare. Salvo, senza validare ma il log non compare.

E' abbastanza snervante entrare nella logica di odoo..

 

Avatar
Abbandona
0
Avatar
Alex Comba
Migliore risposta

Non compare il messaggio che aggiungi o non riesci proprio a visualizzare il log di Odoo?

Guarda nel file di configurazione log_handler e log_level come sono impostati.

Avatar
Abbandona
0
Avatar
Luigi Massa
Migliore risposta

Log handler e level sono impostati a info e non compare il messaggio che aggiungo. Sulla shell ho tutto il log che man mano compare mentre si naviga su odoo

log_db = False
log_db_level = warning
log_handler = :INFO
log_level = info
logfile = False
logrotate = False
Avatar
Abbandona
0
Avatar
Alex Comba
Migliore risposta

Guardando meglio la definizione del tuo model Mixin, non mi pare corretta: prova ad aggiungere anche l'attributo  _name.

Avatar
Abbandona