Passa al contenuto

Campo Intero in Odoo: Guida Completa

Tutto ciò che devi sapere sul campo Integer nel modello di dati Odoo, dall'uso aziendale alla personalizzazione tecnica
6 marzo 2026 di
Campo Intero in Odoo: Guida Completa
Dasolo
| Ancora nessun commento

Introduzione


Se hai mai impostato una quantità su un ordine di vendita, tracciato quanti giorni un'attività è rimasta aperta, o configurato un punteggio di priorità su un lead, hai utilizzato un campo Intero in Odoo. È uno dei tipi di campo più comuni nel modello di dati di Odoo, eppure è spesso sottovalutato.


Comprendere come funziona il campo Intero è importante per gli utenti aziendali che configurano moduli, per gli sviluppatori che scrivono moduli personalizzati e per i consulenti che progettano modelli di dati per i loro clienti.


Questa guida copre cosa memorizza il campo Intero, come si comporta nel framework e nell'interfaccia di Odoo, come crearlo o personalizzarlo con Odoo Studio o Python, insieme a casi d'uso pratici e cose da tenere d'occhio.

Cos'è il Campo Intero in Odoo


Nell'ORM di Odoo, il campo Intero è progettato per memorizzare numeri interi. Nessun decimale, nessuna frazione. Si mappa direttamente a una colonna INTEGER in PostgreSQL, che è un intero firmato di 4 byte che supporta valori da circa -2 miliardi a +2 miliardi.


Dal punto di vista dell'utente, un campo Intero appare come un semplice input numerico nei moduli e come una colonna numerica nelle viste elenco. È la scelta giusta per qualsiasi cosa debba essere conteggiata in unità intere: quantità, punteggi, durate in giorni, numeri di sequenza o qualsiasi metrica in cui metà unità non abbia senso.


Ecco una definizione tipica in un modulo Python:

from odoo import fields, models

class ProjectTask(models.Model):
    _inherit = 'project.task'

    estimated_hours = fields.Integer(
        string='Estimated Hours',
        default=0,
    )

Il parametro string controlla l'etichetta mostrata nell'interfaccia. Il parametro default imposta automaticamente il valore quando viene creato un nuovo record.


In Odoo Studio, questo tipo di campo è elencato semplicemente come Integer. Quando creato tramite Studio, ottiene un prefisso x_studio_. Quando creato tramite Python o l'API XML-RPC, scegli tu stesso il nome tecnico.

Come Funziona il Campo


Quando definisci un campo Intero in Odoo, il framework crea automaticamente la corrispondente colonna del database durante l'installazione o l'aggiornamento del modulo. Non è necessario scrivere manualmente le migrazioni SQL.


A livello di database, la colonna è tipizzata come INTEGER in PostgreSQL. L'ORM di Odoo si occupa della coercizione dei tipi, quindi se l'utente non inserisce nulla, il campo restituisce 0 piuttosto che None o False. Questa è una distinzione importante rispetto ad altri tipi di campo come Float o Char, che possono restituire False quando vuoti.


Attributi Chiave del Campo

Ecco le proprietà più importanti che puoi configurare su un campo Intero:

  • string: L'etichetta mostrata agli utenti nell'interfaccia.
  • default: Il valore assegnato automaticamente ai nuovi record. Di default è 0 se non specificato.
  • obbligatorio: Rende il campo obbligatorio. Poiché il valore predefinito è già 0, questo è particolarmente utile quando si desidera bloccare il salvataggio con un valore zero.
  • sola lettura: Impedisce agli utenti di modificare il valore direttamente nell'interfaccia.
  • indice: Crea un indice PostgreSQL sulla colonna, accelerando i filtri e le ricerche su quel campo.
  • calcola: Collega un metodo Python che calcola dinamicamente il valore del campo da altri campi.
  • memorizza: Combinato con calcola, controlla se il valore calcolato viene salvato nel database o ricalcolato al volo.
  • copia: Controlla se il valore viene trasferito quando si duplica un record.
  • gruppi: Limita la visibilità del campo a specifici gruppi di utenti.

Come appare nelle viste

Nelle viste modulo, un campo Intero si presenta come una casella di input numerico. Odoo aggiunge automaticamente i separatori delle migliaia per una migliore leggibilità quando visualizza numeri più grandi.


Nelle viste elenco, i campi Interi appaiono come numeri semplici, allineati a destra per convenzione. Nelle viste di ricerca, supportano filtri di uguaglianza, maggiore di e minore di.


Puoi abbinare un campo Intero a widget specifici nelle viste per cambiare il suo aspetto. Il widget priorità, ad esempio, trasforma un campo Intero in stelle cliccabili. Il widget barra di progresso può visualizzare un valore Intero come una barra di progresso quando combinato con un valore massimo.


Interazione con l'ORM di Odoo

Dal punto di vista di uno sviluppatore, leggere e scrivere campi Integer è semplice. Il valore è sempre un int di Python. I campi Integer vuoti restituiscono 0, il che significa che dovresti fare attenzione quando scrivi condizioni che controllano l'assenza di un valore. Uno zero e un campo vuoto sembrano uguali a meno che tu non progetti attorno a questo.


I campi Integer funzionano anche naturalmente nei campi calcolati e nei filtri di dominio utilizzati da viste, azioni del server e azioni automatizzate in tutto il framework Odoo.

Casi d'Uso Aziendali


Il campo Integer appare in quasi ogni modulo di Odoo. Ecco cinque scenari pratici in cui gioca un ruolo centrale.


1. CRM: Punteggio dei Lead

I team di vendita spesso vogliono dare priorità ai lead in base a un punteggio. Puoi aggiungere un campo Integer personalizzato chiamato Punteggio Lead nel modello di opportunità CRM. I rappresentanti di vendita aggiornano manualmente il punteggio, oppure un'azione automatizzata lo calcola in base a criteri come dimensione dell'azienda, budget o livello di coinvolgimento.

Questo rende facile ordinare il tuo pipeline per punteggio e concentrarsi sulle opportunità più promettenti.


2. Vendite: Quantità Minime d'Ordine

Nei moduli Vendite e Inventario, i campi Integer controllano le quantità minime d'ordine su prodotti o listini. Impostare un minimo di 10 unità su un prodotto garantisce che il sistema blocchi ordini al di sotto di quella soglia, risparmiando scambi di messaggi con i clienti in seguito.


3. Inventario: Regole di Riordino

Le regole di riordino in Odoo si basano interamente su campi Integer per le soglie di quantità minima e massima. Quando le scorte scendono al di sotto del minimo, Odoo attiva automaticamente un ordine di rifornimento fino al massimo definito. Ottenere questi valori corretti è fondamentale per evitare sia esaurimenti di scorte che situazioni di sovraccarico.


4. Gestione Progetti: Punti Storia e Stime di Sforzo

I team che utilizzano Odoo Project per flussi di lavoro agili spesso aggiungono un campo Integer personalizzato per i punti storia o le ore stimate. Questo campo appare sui compiti nella vista kanban o lista e aiuta il team a monitorare la capacità e la velocità attraverso gli sprint.


5. Contabilità: Termini di Pagamento in Giorni

I termini di pagamento nella Contabilità di Odoo utilizzano campi Interi per definire il numero di giorni consentiti per il pagamento. Net 30, Net 60 o termini personalizzati sono tutti configurati tramite valori Interi. Questi valori alimentano direttamente i calcoli delle date di scadenza delle fatture, il che rende importante l'accuratezza qui per la gestione del flusso di cassa.

Creare o Personalizzare il Campo Intero


Ci sono due modi principali per aggiungere un campo Intero a un modello Odoo: utilizzando Odoo Studio senza scrivere codice, o definendolo direttamente in Python per avere maggiore controllo.


Utilizzando Odoo Studio

Odoo Studio è lo strumento senza codice e a basso codice integrato in Odoo per personalizzare campi e viste. Per aggiungere un campo Intero tramite Studio:

  1. Apri il modulo in cui desideri aggiungere il campo.
  2. Attiva Studio dal menu in alto a destra.
  3. Nell'elenco dei campi a sinistra, trascina il tipo di campo Intero sul tuo modulo.
  4. Imposta l'etichetta del campo, scegli se è obbligatorio e configura il valore predefinito.
  5. Salva e esci da Studio.

Studio crea automaticamente il campo con un prefisso x_studio_ e memorizza la definizione in ir.model.fields. Il campo è immediatamente disponibile nei moduli e nelle viste elenco.


Utilizzando Python (Personalizzazione Tecnica)

Per gli sviluppatori che costruiscono moduli personalizzati o eseguono sviluppo Odoo con maggiore controllo, il campo Integer è definito direttamente in una classe modello Python:


from odoo import fields, models

class CrmLead(models.Model):
    _inherit = 'crm.lead'

    x_lead_score = fields.Integer(
        string='Lead Score',
        default=0,
        index=True,
        help='Punteggio da 0 a 100 utilizzato per dare priorità alle opportunità',
    )

Dopo aver definito il campo nel codice, eseguire odoo-bin -u your_module per applicare le modifiche al database. La colonna viene creata automaticamente.


Utilizzando l'API XML-RPC

È possibile creare un campo Integer anche da remoto utilizzando l'API XML-RPC di Odoo. Questo è utile per distribuzioni automatiche o quando si lavora senza accesso diretto al server:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_lead_score',
        'field_description': 'Lead Score',
        'model_id': crm_lead_model_id,
        'ttype': 'integer',
        'state': 'manual',
    }]
)

Il valore ttype per i campi Integer è semplicemente 'integer'. Lo state deve essere 'manual' per indicare un campo personalizzato piuttosto che uno definito dal modulo.


Aggiungere un Campo Integer Calcolato

I campi Integer calcolati sono potenti per derivare valori automaticamente. Ad esempio, contare il numero di attività collegate a un progetto:


class Project(models.Model):
    _inherit = 'project.project'

    open_task_count = fields.Integer(
        string='Open Tasks',
        compute='_compute_open_task_count',
        store=True,
    )

    def _compute_open_task_count(self):
        for project in self:
            project.open_task_count = self.env['project.task'].search_count([
                ('project_id', '=', project.id),
                ('stage_id.fold', '=', False),
            ])

Impostare store=True salva il valore nel database, rendendolo disponibile per il filtraggio e l'ordinamento nelle viste elenco senza ricalcolarlo ogni volta.

Migliori Pratiche


Ecco alcuni suggerimenti pratici per ottenere il massimo dai campi Integer nel tuo modello di dati Odoo.


Usa Integer per conteggi e quantità intere

Scegli Integer quando il valore deve sempre essere un numero intero e i decimali non avrebbero senso. Per qualsiasi cosa che coinvolga denaro, misurazioni o quantità che possono essere frazionarie, usa invece il tipo di campo Float o Monetario.


Imposta un valore predefinito sensato

I campi Integer hanno come valore predefinito 0 in Odoo. In molti casi va bene, ma rifletti se zero è un valore significativo per il tuo caso d'uso. Se zero significa qualcosa di specifico (come nessun punteggio assegnato ancora), potresti voler gestire esplicitamente ciò nella tua logica aziendale o aggiungere un campo Booleano di supporto per tenere traccia se il valore è stato impostato.


Aggiungi un indice quando filtri sul campo

Se prevedi di filtrare, ordinare o raggruppare frequentemente per un campo Integer, aggiungi index=True nella definizione del campo. Questo crea un indice nel database e può velocizzare significativamente le query su grandi dataset. Il compromesso è un piccolo aumento nello spazio di archiviazione e nel tempo di scrittura, che è quasi sempre giustificato per i campi utilizzati nelle condizioni di ricerca.


Usa store=True per i campi Integer calcolati

Se definisci un campo Integer calcolato su cui gli utenti devono filtrare o ordinare nelle viste elenco, imposta sempre store=True. Senza di esso, Odoo non può utilizzare il campo nei filtri di dominio, e il raggruppamento per esso non funzionerà come previsto.


Documenta i tuoi intervalli

Quando un campo Integer ha un intervallo significativo, come un punteggio da 0 a 100, documentalo nel parametro help. Questo testo appare come un tooltip nell'interfaccia e salva gli utenti dal dover indovinare quali valori sono validi.


Pensa due volte prima di usare Integer per ID o riferimenti

Se hai bisogno di fare riferimento a un altro record, usa un campo Many2one invece di memorizzare un ID manualmente in un campo Integer. I campi Many2one ti offrono navigazione integrata, regole a cascata e una corretta integrazione ORM. Un Integer che contiene un ID grezzo è fragile e bypassa il framework Odoo.

Trappole Comuni


Questi sono gli errori che si presentano più spesso quando si lavora con campi Integer in Odoo.


Confondere Integer con Float

Un errore comune è utilizzare un campo Integer dove sarebbe più appropriato un campo Float. Se i tuoi utenti dovranno mai inserire 1.5, 0.25 o qualsiasi valore frazionario, Integer è la scelta sbagliata. Odoo troncherà silenziosamente l'input decimale, il che porta a perdita di dati e confusione per l'utente. Usa Float per quantità che possono essere frazionarie e Monetary per valori di valuta.


Assumere che Zero Significhi Vuoto

Poiché i campi Integer restituiscono sempre 0 quando non impostati, non c'è modo di distinguere tra un record in cui il campo non è mai stato compilato e uno in cui qualcuno ha intenzionalmente inserito zero. Se questa distinzione è importante per il tuo flusso di lavoro, aggiungi un campo Booleano come has_score accanto all'Integer, oppure usa un campo Float con un valore predefinito False.


Non Aggiungere un Indice ai Campi Filtrati Frequentemente

Se aggiungi un campo Integer e successivamente lo usi come filtro in viste o azioni automatizzate, dimenticare di aggiungere index=True può rallentare notevolmente le viste elenco su database più grandi. È più facile aggiungere l'indice fin dall'inizio piuttosto che ottimizzare in seguito.


Usare Integer per Memorizzare Rapporti Basati su Decimali

A volte gli sviluppatori memorizzano le percentuali come campi Integer, scrivendo 75 per significare 75%. Questo funziona fino a quando qualcuno ha bisogno del 72.5%, momento in cui il campo non soddisfa più il requisito. Se c'è qualche possibilità che una percentuale o un rapporto necessiti di precisione decimale, usa Float fin dall'inizio.


Dimenticare store=True sui Campi Calcolati Usati nei Filtri

Questo è uno degli errori più comuni nello sviluppo di Odoo. Un campo Integer calcolato senza store=True non può essere utilizzato nei filtri di dominio, nelle azioni automatizzate o nelle operazioni di raggruppamento delle viste elenco. Pensa sempre a dove verrà utilizzato il campo prima di decidere se memorizzarlo.

Conclusione


Il campo Integer è un elemento fondamentale nel modello di dati di Odoo. Sembra semplice, e nella maggior parte dei casi lo è. Ma conoscere i suoi comportamenti specifici, come il fatto che i campi vuoti restituiscono 0 e che i campi calcolati necessitano di store=True per funzionare nei filtri, ti aiuta a evitare i tipi di bug e problemi di design che sono facili da introdurre e più difficili da risolvere in seguito.


Che tu stia configurando Odoo per un team di vendita, costruendo un modulo personalizzato o progettando regole di riordino per un magazzino, i campi Integer appariranno in ogni fase. Comprendere come funzionano nell'ORM di Odoo, come crearli con Studio o Python e quando usarli rispetto a Float o Monetary è parte di ciò che rende un'implementazione Odoo solida e manutenibile.


Se stai lavorando a una personalizzazione di Odoo e vuoi assicurarti che il tuo modello di dati sia costruito nel modo giusto fin dall'inizio, questo tipo di conoscenza fondamentale ripaga per l'intera durata del progetto.

Lavora con un Esperto di Odoo


Presso Dasolo, aiutiamo le aziende a implementare, personalizzare e ottimizzare Odoo in tutti i moduli e settori. Che tu abbia bisogno di progettare un modello di dati pulito, costruire campi e flussi di lavoro personalizzati, o collegare Odoo a sistemi esterni tramite l'API, portiamo l'esperienza per farlo nel modo giusto.


Se hai domande sulla tua configurazione Odoo o vuoi discutere di un progetto, contatta il nostro team. Siamo felici di aiutarti.

Campo Intero in Odoo: Guida Completa
Dasolo 6 marzo 2026
Condividi articolo
Accedi per lasciare un commento