Innledning
I Odoo beskriver en modell hvordan informasjon lagres i databasen. Alle forretningselementer du jobber med — som tilbud, prosjekter eller oppgaver — er representert i modeller som definerer hvilke data som finnes og hvordan de henger sammen.
Å kjenne Odoos modeller er viktig både for utviklere og funksjonelle konsulenter. Modellene utgjør grunnmuren i datastrukturen: felttyper, relasjoner og forretningslogikk ligger her. Mønstrene er konsekvente på tvers av systemet, slik at du kan forutsi hvordan nye modeller oppfører seg.
Denne teksten går nærmere inn på modellen project.project — en av de mest brukte når du håndterer prosjekter i Odoo. Enten du bygger tilpasninger, kobler til eksterne systemer eller setter opp arbeidsflyter, vil du ofte arbeide mot denne modellen.
Hva er modellen project.project
project.project representerer selve prosjektet i Odoo. Tenk på det som prosjektets «katalogkort» hvor oppgaver, ansvarlige, tidsrammer og synlighet samles i én post.
Modellen ligger i Project-appen og er utgangspunktet når du oppretter nye prosjekter. Oppgaver får en kobling til prosjektet via feltet for oppgaver, og prosjektposten bestemmer hvilke stadier, teammedlemmer og tilgangsregler som gjelder.
Selve definisjonen ligger i prosjektmodulen, men andre moduler bygger på den gjennom Odoos arvemekanismer. Salg legger til fakturering knyttet til prosjekt, Timesheet tilfører timeregistrering, og planleggingsmoduler gir Gantt-funksjonalitet — alt uten å kopiere kjernen.
Forståelsen av forholdet mellom project.project og project.task er avgjørende: prosjektet inneholder fellesinnstillinger, mens oppgavene er de konkrete arbeidsenhetene. Samspillet mellom dem er kjernen i prosjektstyringen i Odoo.
Viktige felt i modellen
Nedenfor finner du de mest sentrale feltene i project.project. Kjennskapen til disse gjør det enklere å konfigurere, filtrere og integrere prosjekter.
1. name
Type: Char. Prosjektnavn som vises i lister og oversikter. Dette er ofte hovedidentifikatoren brukere kjenner igjen.
2. create_date
Type: Datetime. Tidspunkt for når prosjektet ble opprettet. Odoo setter dette automatisk og det er nyttig i rapporter og revisjon.
3. write_date
Type: Datetime. Tidspunkt for siste endring. Også automatisk. Brukes for å se når data sist ble oppdatert.
4. active
Type: Boolean. Myk arkivering — når denne er False skjules prosjektet i standardvisninger uten å slette data.
5. sequence
Type: Integer. Bestemmer sorteringsrekkefølge i lister og dropdowns. Lav verdi får ofte prioritet i visning.
6. color
Type: Integer. Fargeindeks brukt i kanban og andre visuelle oversikter for å skille prosjekter raskt.
7. user_id
Type: Many2one (res.users). Prosjektleder eller ansvarlig bruker — ofte standardverdien for oppgaveansvarlig.
8. company_id
Type: Many2one (res.company). Angir hvilken juridisk enhet i multi-selskap-oppsett prosjektet tilhører.
9. partner_id
Type: Many2one (res.partner). Kunde eller kontakt knyttet til prosjektet, sentralt for fakturering og kunderapportering.
10. description
Type: Html. Prosjektbeskrivelse hvor du kan bruke rik tekst for mål, krav og notater.
11. date_start
Type: Date. Startdato for prosjektet — nyttig når du planlegger ressurser og milepæler.
12. date
Type: Date. Sluttdato eller forfallsdato for prosjektet, brukt i rapportering og oppfølging.
13. task_ids
Type: One2many (project.task). Listen over oppgaver tilknyttet prosjektet — hovedrelasjonen mellom prosjekt og arbeidsposter.
14. task_count
Type: Integer. Antall oppgaver, beregnet fra task_ids, brukt i visninger og filterlogikk.
15. type_ids
Type: Many2many (project.task.type). Definerer prosjektets arbeidsflytsteg (for eksempel To Do, In Progress, Done).
16. tag_ids
Type: Many2many (project.tags). Kategorisering av prosjekter for enklere filtrering og organisering.
17. privacy_visibility
Type: Selection. Styrer tilgangsnivået: kun inviterte interne brukere (privat), alle interne brukere, eller inviterte portalbrukere + interne (offentlig).
18. collaborator_ids
Type: One2many (project.collaborator). Teammedlemmer knyttet til prosjektet — de som kan arbeide på oppgavene.
19. favorite_user_ids
Type: Many2many (res.users). Brukere som har markert prosjektet som favoritt for rask tilgang på dashbordet.
20. allow_task_dependencies
Type: Boolean. Aktiverer avhengigheter mellom oppgaver (forganger/etterfølgere) — nyttig ved planlegging.
21. allow_milestones
Type: Boolean. Tillatelse til å opprette milepæler i prosjektet — for å markere viktige leveranser.
22. milestone_ids
Type: One2many (project.milestone). Liste over prosjektets milepæler for sporing av nøkkelleveranser.
23. rating_active
Type: Boolean. Slår på mulighet for kunden å gi vurdering av prosjektet for tilbakemelding.
24. task_properties_definition
Type: Text (JSON). Struktur for egendefinerte oppgaveegenskaper som kan legges til på prosjektnivå.
25. access_url
Type: Char. Lenke kunder kan bruke for å få tilgang til prosjektet via portalen.
26. access_token
Type: Char. Sikkerhetstoken som beskytter portaltilgangen, slik at kun autoriserte kan se prosjektet.
27. alias_id
Type: Many2one (mail.alias). E-postalias for prosjektet — innkommende e-poster kan opprette oppgaver automatisk.
28. activity_ids
Type: One2many (mail.activity). Planlagte aktiviteter knyttet til prosjektet for oppfølging og påminnelser.
29. activity_state
Type: Selection. Oppsummering av aktivitetsstatus — for eksempel I dag, Forfalt eller Planlagt.
30. activity_date_deadline
Type: Date. Neste aktivitetens fristdato, nyttig i oppfølgingsoversikter.
31. message_ids
Type: One2many (mail.message). Meldinger i chatteren knyttet til prosjektet for intern kommunikasjon.
32. message_follower_ids
Type: One2many (mail.followers). Brukere som følger prosjektet og mottar varsler.
33. create_uid
Type: Many2one (res.users). Brukeren som opprettet posten — satt automatisk av Odoo.
34. write_uid
Type: Many2one (res.users). Brukeren som sist endret posten — også automatisk satt.
Hvordan modellen brukes i forretningsprosesser
1. Opprettelse og daglig drift av prosjekter
Når en selger eller prosjektleder oppretter et prosjekt, fyller de inn navn, ansvarlig, tidsrammer og tilgangsregler. Modellen lagrer disse innstillingene, og oppgaver legges inn og knyttes til prosjektet for videre utføring.
2. Oppgaveflyt
Oppgaver navigerer gjennom stadier som er definert i prosjektets type_ids. Prosjektlederen fordeler oppgaver til samarbeidspartnere, mens prosjektet styrer hvilke stadier og regler som gjelder for fremdriften.
3. Kundeportal
Hvis prosjektet er satt opp for portaltilgang, kan eksterne kunder se oppgaver og milepæler via en sikker lenke. Tokenet beskytter innsyn, og dette gjør samarbeid med kunder enklere og mer transparent.
4. Timeregistrering og fakturering
Med Timesheet kan timer knyttes til prosjektet, og i kombinasjon med Salg kan prosjekter kobles til ordre for prosjektbasert fakturering. partner_id sørger for sammenheng mellom prosjekt og kunde ved økonomisk oppfølging.
5. E-postintegrasjon
E-poster sendt til prosjektets alias kan automatisk opprette oppgaver. Dette effektiviserer innsamlingsprosessene for oppgaver og sikrer at henvendelser ikke går tapt.
Hvordan utviklere bygger videre på modellen
Utviklere bygger ut project.project ved å bruke Odoos arv og utvidelsesmønstre — dette gir fleksibilitet uten å endre kjernefilene.
Modellarv
Ved å sette _inherit = 'project.project' lager du en utvidelse av modellen. Du kan legge til felter, overstyre metoder eller legge inn valideringer i en separat modul, noe som gjør det enklere å vedlikeholde og oppgradere løsningen.
Legge til felt
I den arvede modellen definerer du nye felt med passende typer: Char, Many2one, Boolean, Integer, Text eller Selection. Tenk også på selskapsavhengige felt i multi-selskap-miljøer.
Utvidelser i Python
Overstyr create, write eller unlink for å tilføre egen logikk, men husk å kalle super() slik at grunnfunksjonaliteten beholdes. Vær spesielt oppmerksom på avhengigheter for beregnede felt.
Odoo Studio
Odoo Studio lar deg raskt legge til felt og skjemaendringer uten koding — praktisk for raske tilpasninger. For større, vedvarende endringer anbefales modulbaserte løsninger for bedre kontroll ved oppgraderinger.
Anbefalte fremgangsmåter
- Sett user_id riktig for å tydeliggjøre prosjektleder. Klar eierskap bidrar til bedre ansvarlighet og enklere oppfølging.
- Konfigurer type_ids per prosjekt slik at stadiene speiler den faktiske arbeidsflyten i teamet ditt.
- Bruk privacy_visibility med omhu. Feil innstilling kan enten blokkere nødvendig tilgang eller utilsiktet eksponere konfidensiell informasjon.
- Når du bygger API-integrasjoner, bruk XML-RPC eller JSON-RPC. project.project er tilgjengelig via API, så map ut eksterne ID-er og feltnøkler nøye for å unngå datainkonsekvenser.
- For egne felter: bruk x_ eller et modulprefiks for å unngå navnekonflikter med fremtidige Odoo-utgivelser.
Vanlige feil
- Opprettelse av oppgaver uten prosjektkobling. Hver oppgave bør ha project_id for å sikre riktig sammenheng og tilgangskontroll.
- Glemme å definere type_ids. Uten stadier vil oppgaver ikke kunne flytte seg gjennom en meningsfull arbeidsflyt.
- Sette privacy_visibility til offentlig når prosjektet burde være privat — dette kan føre til lekkasje av intern eller sensitiv informasjon.
- Overstyre kjernemetoder uten å kalle super(). Dette kan føre til uventet oppførsel eller problemer ved oppgraderinger.
- Legge til obligatoriske nye felter uten standardverdier. Eksisterende poster kan da feile validering ved migrasjon eller installasjon.
Oppsummering
project.project er selve ryggraden i Odoos prosjektstyring. Den definerer prosjektoppsettet, arbeidsflytsteg og teamstruktur. Å forstå feltene og hvordan andre moduler bygger på modellen gjør det enklere å konfigurere, tilpasse og integrere Odoo riktig.
Enten du er funksjonell konsulent som setter opp prosesser, eller utvikler som lager tilpasninger, vil god kjennskap til project.project spare tid og hindre feil.
Trenger du hjelp med Odoo-implementasjonen din?
Dasolo bistår bedrifter med implementering, tilpasning og optimalisering av Odoo. Vi har særlig erfaring med API-integrasjoner og utvikling rundt Odoos datamodeller, inkludert project.project.
Trenger du hjelp med implementasjon, tilpassede moduler eller integrasjoner i Odoo? Ta kontakt — vi hjelper gjerne. Book en demo for å diskutere prosjektet ditt.