OBIETTIVO DI PROGETTO
Registrare su ogni opportunità tutti i professionisti coinvolti con il loro ruolo, e misurare a trattativa chiusa su quali relazioni conviene investire, restando il più vicino possibile allo standard Odoo, per non compromettere aggiornabilità e manutenzione.
L’Analisi
Il vincolo di partenza: crm.lead ammette un solo partner_id. L’unico riferimento nativo a chi ha portato la trattativa è il campo testuale Referral: a valore singolo, non collegato all’anagrafica, non aggregabile.
La prassi che non regge: i professionisti finivano tra i follower del record. Un uso improprio, perché i follower servono alle notifiche, non prevedono un ruolo e non si prestano a reportistica. La domanda «quali contatti ci hanno aiutato di più a vincere» restava senza risposta.
La metrica scelta: la presenza, cioè quante opportunità vinte vedono coinvolto un dato contatto. Oggettiva, ricavabile dai dati, senza valutazioni soggettive. L’attribuzione ponderata del merito è stata esclusa per scelta e messa fuori ambito.
Requisiti tracciati: 11 requisiti (8 Must, 2 Should, 1 Could) in una matrice che lega ciascuno al modello, alla vista, alla copertura standard o custom e alle ore.
La Soluzione
Un modello-ponte, non un campo in più: crm.lead.contact collega opportunità, contatto e ruolo. È il modello su cui si costruisce tutto il reporting; un vincolo SQL impedisce lo stesso contatto due volte sulla stessa opportunità.
Ruoli configurabili dal cliente: crm.contact.role, anagrafica ordinabile e archiviabile (Architetto, Ingegnere, Geometra, Progettista, Impresa esecutrice), gestita da backend senza intervento tecnico.
Campi derivati e memorizzati: esito, fase e stato di archiviazione vengono calcolati dall’opportunità e salvati con store=True, così pivot e filtri possono raggruppare senza query custom. Sull’opportunità, una scheda «Contatti coinvolti» a compilazione progressiva: nessun campo obbligatorio blocca il salvataggio.
Reporting interamente nativo: vista pivot e grafico su crm.lead.contact, contatti in riga ed esito in colonna, azione già aperta sulle vinte e raggruppata per contatto. Nessun report QWeb.
Sicurezza dichiarativa: ACL agganciate ai gruppi standard delle vendite e record rule multi-azienda; viste ereditate dagli xmlid standard del CRM.
Risultati Ottenuti
Classifica delle relazioni: quali professionisti ricorrono sulle trattative vinte, leggibile anche per categoria.
Zero report custom: pivot, grafici e filtri sono nativi; l’unico codice è il modello-ponte.
Stima difendibile: WBS per layer con ore ottimistiche, realistiche e pessimistiche, più un buffer del 20%.
Aggiornabilità intatta: pattern ORM, viste XML ereditate e sicurezza dichiarativa. Nessun debito tecnico.
Scheda progetto
Piattaforma: Odoo sh 18, modulo CRM standard più modulo custom.
Deliverable: BRD con RTM e stima, più formazione per il team di 30 commerciali.



