Passa al contenuto

Campo Integer in Odoo: Guida Completa e Pratica

Guida pratica al campo Integer in Odoo: quando usarlo, come impostarlo e come personalizzarlo. In questa panoramica troverai consigli concreti per designers di processo e sviluppatori: esempi di casi d’uso aziendali, regole di validazione, limiti e considerazioni prestazionali, oltre alle modalità più comuni per estendere il comportamento nativo del campo tramite XML, Python e restrizioni a livello di database. Perfetto se devi modellare quantità, contatori, punteggi o qualsiasi valore numerico intero nelle tue app Odoo.
6 marzo 2026 di
Campo Integer in Odoo: Guida Completa e Pratica
Dasolo
| Ancora nessun commento

Introduzione


Se hai mai inserito la quantità in un ordine, segnato i giorni aperti di una attività o assegnato un punteggio di priorità a un lead, hai già usato un campo Integer in Odoo. È uno dei tipi di campo più diffusi nel modello dati eppure spesso viene dato per scontato.


Capire il comportamento del campo Integer è importante sia per chi costruisce moduli e maschere senza codice, sia per chi sviluppa moduli personalizzati, sia per i consulenti che progettano strutture dati adatte alle esigenze del cliente.


Questa guida spiega cosa conserva un campo Integer, come si comporta nell'interfaccia e nell'ORM di Odoo, come crearlo tramite Studio o codice Python, e presenta esempi pratici e avvertimenti da tenere a mente.

Cos'è il campo Integer in Odoo


Nel cuore dell'ORM Odoo, un campo Integer è pensato per numeri interi: niente decimali, niente frazioni. A livello database corrisponde a una colonna di tipo INTEGER in PostgreSQL, un intero a 4 byte che copre valori nell'ordine dei miliardi negativi e positivi.


Per l'utente si presenta come una casella numerica nei form e come una colonna numerica nelle viste elenco. È la scelta corretta quando il valore ha senso solo in unità intere: quantità, punteggi, giorni, numeri di sequenza o qualsiasi metrica che non ammette mezzi.


Esempio di definizione 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 definisce l'etichetta visibile nell'interfaccia; default imposta il valore automatico quando viene creato un nuovo record.


In Odoo Studio il tipo è semplicemente chiamato Integer. I campi creati tramite Studio ricevono automaticamente il prefisso x_studio_, mentre se lo definisci in Python o via API scegli tu il nome tecnico.

Come funziona il campo


Quando dichiari un campo Integer, Odoo crea la colonna corrispondente nel database al momento dell'installazione o dell'aggiornamento del modulo: non servono migrazioni SQL manuali.


A livello database la colonna è INTEGER. L'ORM di Odoo si occupa della conversione dei tipi: se l'utente non immette valore, il campo restituisce 0 anziché None o False. Questa caratteristica lo distingue da altri tipi come Float o Char, che possono restituire False se vuoti.


Attributi chiave del campo

Le proprietà principali che puoi configurare su un campo Integer sono le seguenti:

  • string: L'etichetta mostrata agli utenti nell'interfaccia.
  • default: Valore assegnato automaticamente ai nuovi record. Se non specificato, il valore predefinito è 0.
  • required: Rende il campo obbligatorio. Poiché il default è 0, serve soprattutto se vuoi impedire il salvataggio quando il valore è zero.
  • readonly: Impedisce agli utenti di modificare il valore dall'interfaccia.
  • index: Crea un indice PostgreSQL sulla colonna, accelerando filtri e ricerche su quel campo.
  • compute: Collega una funzione Python che calcola dinamicamente il valore del campo a partire da altri campi.
  • store: Usato con compute, decide se il valore calcolato viene memorizzato nel database o ricalcolato al volo.
  • copy: Definisce se il valore deve essere duplicato quando si duplica il record.
  • groups: Limita la visibilità del campo a determinati gruppi di utenti.

Come appare nelle viste

Nei form un campo Integer è una casella di input numerica. Per numeri grandi Odoo applica separatori delle migliaia per migliorarne la leggibilità.


Nelle liste gli Integer sono mostrati come numeri semplici, allineati a destra per convenzione. Nelle ricerche supportano filtri come uguale, maggiore o minore.


È possibile abbinare widget per modificarne la resa: il widget priority trasforma il numero in stelle cliccabili, mentre progressbar visualizza il valore come barra di avanzamento quando è presente un limite massimo.


Interazione con l'ORM di Odoo

Per chi sviluppa leggere e scrivere campi Integer è diretto: il valore è sempre un int Python. Poiché i campi vuoti tornano 0, attenzione alle condizioni che vogliono distinguere "assenza" da "zero": senza una logica aggiuntiva i due casi sono indistinguibili.


Gli Integer funzionano bene nelle computed fields e nei domini usati in viste, azioni server e automazioni nell'intero ecosistema Odoo.

Casi d'uso aziendali


Il campo Integer ricorre in quasi tutti i moduli Odoo. Di seguito cinque scenari pratici dove è centrale.


1. CRM: punteggio lead

Le vendite spesso assegnano un punteggio ai lead per priorizzarli. Puoi aggiungere un campo Integer chiamato "Lead Score" sul modello opportunità: può essere compilato manualmente dai venditori o calcolato automaticamente in base a criteri come dimensione aziendale, budget o interazioni.

Così è semplice ordinare la pipeline per punteggio e concentrarsi sulle opportunità più promettenti.


2. Vendite: quantità minima d'ordine

Nei moduli Vendite e Magazzino gli Integer servono a definire quantità minime d'ordine su prodotti o listini. Impostare un minimo di 10 unità evita ordini inferiori a soglia, riducendo il lavoro di gestione con i clienti.


3. Magazzino: regole di riordino

Le regole di riordino si basano su campi Integer per soglie minime e massime. Quando lo stock scende sotto il minimo, Odoo genera automaticamente un ordine di rifornimento fino al massimo impostato. Valori corretti sono fondamentali per prevenire sia stockout sia accumulo eccessivo.


4. Project Management: story points e stime

Nei progetti agili spesso si aggiungono Integer personalizzati per story points o ore stimate. Il campo compare nelle schede attività e aiuta a monitorare capacità e velocità del team durante gli sprint.


5. Contabilità: giorni di pagamento

I termini di pagamento in contabilità utilizzano Integer per definire i giorni concessi. Net 30 o Net 60 sono semplicemente valori interi che influiscono sul calcolo delle scadenze delle fatture, quindi è importante impostarli correttamente per gestire il cash flow.

Creare o personalizzare un campo Integer


Aggiungere un campo Integer a un modello può avvenire in due modi principali: con Odoo Studio senza scrivere codice, o tramite definizione Python per personalizzazioni più avanzate.


Con Odoo Studio

Odoo Studio è lo strumento low-code integrato per personalizzare campi e viste. Per aggiungere un Integer con Studio:

  1. Apri il form dove vuoi inserire il campo.
  2. Attiva Studio dal menu in alto a destra.
  3. Dalla lista dei campi a sinistra trascina il tipo Integer sulla form.
  4. Configura etichetta, obbligatorietà e valore predefinito.
  5. Salva ed esci da Studio.

Studio crea il campo con prefisso x_studio_ e registra la definizione in ir.model.fields. Il campo è subito disponibile in form e viste elenco.


Con Python (customizzazione tecnica)

Per sviluppatori che costruiscono moduli personalizzati, il campo Integer si dichiara nella classe del 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='Score from 0 to 100 used to prioritize opportunities',
    )

Dopo aver definito il campo in codice, esegui odoo-bin -u your_module per applicare le modifiche: la colonna viene creata automaticamente.


Via XML-RPC API

È possibile anche creare un campo Integer da remoto con l'API XML-RPC di Odoo: utile per deployment automatizzati o quando non si ha 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 ttype per Integer è 'integer' e lo state deve essere 'manual' per indicare che si tratta di un campo creato dall'utente.


Campi Integer computati

I campi Integer calcolati sono utili per ottenere valori automaticamente, ad esempio contare le attività aperte di 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 utilizzabile per filtri e ordinamenti senza ricalcolo continuo.

Buone pratiche


Consigli pratici per sfruttare al meglio i campi Integer in Odoo.


Usa Integer per conteggi e quantità intere

Scegli Integer quando il valore deve essere sempre intero. Per valori frazionari o monetari usa rispettivamente Float o Monetary: usare Integer al posto giusto evita perdita di precisione e comportamenti inattesi.


Imposta un default sensato

Il default è 0, ma valuta se lo zero ha senso nella tua logica di business. Se zero indica "non impostato", potresti voler aggiungere un Boolean di controllo o prevedere una gestione specifica in fase di validazione.


Aggiungi un indice se filtri spesso quel campo

Se prevedi di filtrare, ordinare o raggruppare per quel campo, aggiungi index=True. L'indice migliora le performance su grandi volumi a fronte di un piccolo costo in spazio e scritture.


Usa store=True per campi computed che servono nei filtri

Se una computed field deve essere filtrabile o raggruppabile, imposta sempre store=True. Senza di esso Odoo non può usarla nei domini o nei group-by.


Documenta i range

Quando il campo ha un range significativo (es. punteggio 0–100), aggiungi spiegazioni con il parametro help. La tooltip evita ambiguità e riduce errori di inserimento.


Non usare Integer per riferimenti a record

Per referenziare altri record usa Many2one invece di inserire manualmente un ID in un Integer. La Many2one offre navigazione, regole di cancellazione a cascata e integrazione con l'ORM; un ID grezzo è fragile.

Errori comuni


Errori che si incontrano più spesso con Integer in Odoo.


Confondere Integer con Float

Errore comune: scegliere Integer quando servirebbe Float. Se sono possibili valori come 1.5 o 0.25, Integer tronca i decimali causando perdita di dati. Usa Float o Monetary a seconda del contesto.


Dare per scontato che zero sia valore vuoto

Poiché un campo Integer vuoto restituisce 0, non puoi distinguere tra "mai compilato" e "inserito zero". Se la distinzione è importante, affianca una Boolean come has_score o scegli un tipo che ammetta False.


Non aggiungere l'indice su campi usati spesso nei filtri

Se dimentichi index=True su un campo che poi usi per filtrare, le viste possono diventare lente con molti record. Meglio prevederlo fin dall'inizio.


Usare Integer per percentuali con decimali

Salvare percentuali come interi (es. 75 = 75%) funziona fino a quando non servono decimali. Se è possibile avere 72.5% usa Float fin da subito.


Dimenticare store=True su computed usate nei filtri

Uno degli errori più comuni: una computed Integer senza store=True non è disponibile per domini, azioni automatiche o group-by. Pensa all'uso prima di decidere.

Conclusione


Il campo Integer è un mattone fondamentale del modello dati Odoo. Sembra semplice e spesso lo è, ma caratteristiche come il ritorno di 0 per i campi vuoti o la necessità di store=True per i filtri sono dettagli che evitano bug difficili da risolvere.


Che tu stia configurando Odoo per la forza vendita, sviluppando un modulo su misura o impostando regole di riordino per un magazzino, i campi Integer salteranno fuori in molte decisioni. Conoscerne il corretto impiego rispetto a Float o Monetary rende l'implementazione più robusta e mantenibile.


Se stai progettando personalizzazioni Odoo e vuoi che il modello dati sia solido fin dall'inizio, questa conoscenza di base ripaga durante tutta la vita del progetto.

Collabora con un esperto Odoo


Da Dasolo supportiamo aziende nell'implementazione, personalizzazione e ottimizzazione di Odoo in tutti i moduli e i settori. Progettiamo modelli dati puliti, costruiamo campi e workflow su misura e integriamo Odoo con sistemi esterni tramite API.


Se hai dubbi sulla tua configurazione Odoo o vuoi parlare di un progetto, contatta il nostro team. Saremo felici di aiutarti.

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