Introduksjon
I Odoo definerer modeller hvordan data er strukturert og lagret i databasen. Hver bit av forretningsdata du jobber med, fra salgsordrer til prosjekter til oppgaver, lever i en modell.
Å forstå Odoo-modeller er essensielt for både utviklere og funksjonelle konsulenter. Modeller er grunnlaget for Odoo-databasearkitekturen. De definerer Odoo-felt, relasjoner og forretningslogikk. Hver modell i Odoo følger de samme mønstrene.
Denne artikkelen fokuserer på en av de viktigste modellene i Odoo: prosjekt.project. Enten du bygger tilpassede moduler, integrerer eksterne systemer eller konfigurerer prosjektarbeidsflyter, vil du jobbe med denne modellen.
Hva er prosjekt.project-modellen
Modellen project.project representerer et prosjekt i Odoo. Det er beholderen for oppgaver, milepæler og team samarbeid. Hvert prosjekt er en post i denne modellen.
Denne modellen i Odoo brukes av Project-appen. Når du oppretter et prosjekt i Odoo, oppretter du en post i project.project. Oppgaver er knyttet til det prosjektet gjennom feltet task_ids. Prosjektet definerer arbeidsflytstadier, teammedlemmer og synlighetsregler.
Modellen er definert i prosjektmodulen. Andre moduler utvider den gjennom Odoo-modellarv. Salg legger til prosjektbasert fakturering. Tidsregistrering legger til tidsoppfølging. Prosjektplanlegging legger til Gantt-planlegging. Hver modul legger til det den trenger uten å duplisere den grunnleggende strukturen.
Å forstå forholdet mellom project.project og project.task er nøkkelen. Prosjektet holder delte innstillinger. Oppgaven holder individuelle arbeidsoppgaver. Begge er sentrale i Odoo prosjektledelsesarbeidsflyten.
Nøkkelfelt i modellen
Her er de viktigste Odoo-feltene i modellen project.project. Å forstå disse vil hjelpe deg å jobbe effektivt med prosjekter.
1. navn
Type: Char. Dette feltet lagrer navnet på prosjektet. Det vises i mange Odoo-visninger og er den primære identifikatoren for prosjektposten.
2. opprettelsesdato
Type: Datetime. Lagrer dato og tid når posten ble opprettet. Administreres automatisk av Odoo. Nyttig for rapportering og revisjon.
3. endringsdato
Type: Datetime. Lagrer dato og tid for den siste modifikasjonen. Også administrert automatisk. Hjelper med å spore når data sist ble oppdatert.
4. aktiv
Type: Boolean. Soft delete flag. When False, the project is archived and hidden from default views. Records are not physically deleted.
5. sekvens
Type: Integer. Visningsrekkefølge for sortering. Brukes i prosjektlister og nedtrekksmenyer. Lavere verdier vises først.
6. farge
Type: Integer. Fargeindeks for prosjektet. Brukes i visninger og kanban-tavler for å visuelt skille prosjekter.
7. bruker_id
Type: Many2one (res.users). Prosjektlederen. Denne brukeren er ansvarlig for prosjektet og vises ofte som standard tildelt.
8. selskap_id
Type: Many2one (res.company). I fler-selskapsoppsett indikerer dette hvilken Odoo-bedrift prosjektet tilhører.
9. partner_id
Type: Many2one (res.partner). Kunden eller klienten knyttet til prosjektet. Brukes for fakturering og rapportering.
10. beskrivelse
Type: Html. Prosjektbeskrivelse. Kan inkludere HTML for formatering. Brukt for prosjektbeskrivelser og notater.
11. date_start
Type: Dato. Prosjektets startdato. Brukt for planlegging og rapportering.
12. date
Type: Dato. Prosjektets frist eller sluttdato. Brukt for sporing og rapportering.
13. task_ids
Type: One2many (project.task). Listen over oppgaver i prosjektet. Dette er den viktigste relasjonen mellom prosjekter og oppgaver.
14. task_count
Type: Heltall. Antall oppgaver. Beregnet fra task_ids. Brukt for visning og filtrering.
15. type_ids
Type: Many2many (project.task.type). Oppgavestadier eller typer for prosjektet. Definerer arbeidsflyten (f.eks. Til å gjøre, I gang, Ferdig).
16. tag_ids
Type: Many2many (project.tags). Prosjektmerker for kategorisering. Brukes til filtrering og organisering av prosjekter.
17. privacy_visibility
Type: Selection. Kontrollerer hvem som kan få tilgang til prosjektet. Alternativer: Inviterte interne brukere (privat), Alle interne brukere, eller Inviterte portalbrukere og alle interne brukere (offentlig).
18. collaborator_ids
Type: One2many (project.collaborator). Teammedlemmer tildelt prosjektet. Definerer hvem som kan jobbe med prosjektet.
19. favorite_user_ids
Type: Many2many (res.users). Brukere som har merket prosjektet som favoritt. Brukes for rask tilgang i dashbordet.
20. allow_task_dependencies
Type: Boolean. Når True, kan oppgaver knyttes til andre oppgaver som forgjengere eller etterfølgere. Brukes til prosjektplanlegging.
21. allow_milestones
Type: Boolean. Når True, kan milepæler opprettes i prosjektet. Milepæler markerer viktige leveranser.
22. milestone_ids
Type: One2many (project.milestone). Milepælene i prosjektet. Brukes for å spore viktige leveranser.
23. rating_active
Type: Boolean. Når True, kan kundene vurdere prosjektet. Brukes for kundetilbakemelding.
24. task_properties_definition
Type: Text (JSON). Egne oppgaveegenskaper for prosjektet. Definerer ekstra felt som kan legges til oppgaver.
25. access_url
Type: Char. URL-en for kundene til å få tilgang til prosjektet via portalen. Brukes for kundesamarbeid.
26. access_token
Type: Char. Sikkerhetstoken for portaltilgang. Sikrer at kun autoriserte brukere kan se prosjektet.
27. alias_id
Type: Many2one (mail.alias). E-postalias for prosjektet. Innkommende e-poster oppretter oppgaver automatisk.
28. activity_ids
Type: One2many (mail.activity). Planlagte aktiviteter på prosjektet. Brukes for oppfølginger og påminnelser.
29. activity_state
Type: Selection. Sammendrag av aktivitetsstatus: I dag, Forsinket, eller Planlagt. Beregnet fra activity_ids.
30. activity_date_deadline
Type: Date. Datoen for den neste planlagte aktiviteten. Brukes for aktivitetsplanlegging.
31. message_ids
Type: One2many (mail.message). Chatter-meldinger på prosjektet. Brukes for intern kommunikasjon.
32. message_follower_ids
Type: One2many (mail.followers). Brukere som følger prosjektet. De mottar varsler.
33. create_uid
Type: Many2one (res.users). Brukeren som opprettet posten. Automatisk satt av Odoo.
34. write_uid
Type: Many2one (res.users). Brukeren som sist endret posten. Automatisk satt av Odoo.
Hvordan denne modellen brukes i forretningsarbeidsflyter
1. Prosjektopprettelse og -administrasjon
Når en selger eller prosjektleder oppretter et prosjekt, setter de navnet, lederen, datoene og synligheten. Modellen project.project lagrer alt dette. Oppgaver legges deretter til og knyttes til prosjektet.
2. Oppgaveflyt
Oppgaver beveger seg gjennom faser definert av type_ids. Prosjektlederen tildeler oppgaver til samarbeidspartnere. Prosjektet inneholder arbeidsflytkonfigurasjonen og teamstrukturen.
3. Kunderportal
Når privacy_visibility tillater portaltilgang, kan kunder se oppgaver og milepæler via access_url. access_token sikrer lenken. Dette er nyttig for kundeprosjekter.
4. Tidsregistrering og fakturering
Med Timesheet-modulen kobles project.project til tidsregistreringer. Med Salg kan prosjekter knyttes til salgsordrer for prosjektbasert fakturering. partner_id-feltet kobler prosjektet til kunden.
5. E-postintegrasjon
Innkommende e-poster til prosjektaliaset oppretter automatisk oppgaver. alias_id-feltet kobler prosjektet til dets e-postalias. Dette strømlinjeformer opprettelsen av oppgaver fra e-poster.
Hvordan utviklere utvider denne modellen
Utviklere utvider project.project ved å bruke flere mønstre. Odoo-modellarv er hovedmekanismen.
Modellarv
Bruk _inherit = 'project.project' for å utvide modellen. Dette er Odoo-modellarv i aksjon. Legg til nye Odoo-felt, overstyr metoder, eller legg til begrensninger. Den arvede modellen i Odoo holder endringene dine i en egen modul for enkle oppgraderinger. Når du arver en modell i Odoo, utvider du den uten å endre den originale.
Legge til felt
Definer nye Odoo-felt i din arvede modell. Bruk riktig felttype: Char, Many2one, Boolean, Integer, Text, Selection. Vurder selskapsavhengige felt for flere selskaper.
Python-utvidelser
Overstyr create, write, eller unlink for å legge til logikk. Bruk super() for å kalle den originale. Vær forsiktig med beregnede felt og deres avhengigheter.
Odoo Studio
Odoo Studio lar deg legge til felt uten kode. Bra for raske tilpasninger. For kompleks logikk eller oppgraderinger er tilpassede moduler mer vedlikeholdbare.
Beste praksis
- Sett user_id for prosjektlederoppgave. Klar eierskap forbedrer ansvarlighet.
- Konfigurer type_ids for hvert prosjekt. Definer faser som samsvarer med arbeidsflyten din.
- Bruk privacy_visibility riktig. Private prosjekter begrenser tilgang til følgere og administratorer.
- Når du bygger API-integrasjoner, bruk XML-RPC eller JSON-RPC API. project.project-modellen er fullt eksponert som en API-modell i Odoo. Kartlegg eksterne ID-er nøye.
- For tilpassede felt, bruk
x_prefikset eller et modulprefiks for å unngå konflikter med fremtidige Odoo-versjoner.
Vanlige feil
- Opprette oppgaver uten å knytte dem til et prosjekt. Hver oppgave må ha et project_id.
- Glemme å sette type_ids. Nye prosjekter kan ha ingen faser, så oppgaver kan ikke bevege seg gjennom arbeidsflyten.
- Sette privacy_visibility til offentlig når det burde være privat. Dette kan eksponere sensitiv data.
- Overstyre kjerne metoder uten å kalle super(). Dette kan bryte andre moduler eller fremtidige oppgraderinger.
- Legge til nødvendige tilpassede felt uten standardverdier. Eksisterende poster vil feile validering ved oppgradering.
Konklusjon
Modellen project.project er sentral for Odoo prosjektledelse. Den lagrer prosjektdefinisjoner, arbeidsflytfaser og teamstruktur. Å forstå feltene dens og hvordan moduler utvider den vil hjelpe deg med å konfigurere, tilpasse og integrere Odoo effektivt.
Enten du er en funksjonell konsulent som setter opp prosjekter eller en utvikler som bygger tilpassede moduler, vil en solid forståelse av project.project spare tid og forhindre feil.
Trenger du hjelp med din Odoo-implementering?
Dasolo hjelper selskaper med å implementere, tilpasse og optimalisere Odoo. Vi spesialiserer oss på API-integrasjoner og Odoo-utvikling. Vårt team har dyp erfaring med Odoo dataarkitektur og modeller som project.project.
Hvis du trenger hjelp med din Odoo-implementering, tilpassede moduler eller integrasjoner, er vi her for å hjelpe. Bestill en demo for å diskutere prosjektet ditt.