Introduktion
I Odoo beskriver en modell hur information organiseras och sparas i databasen. All affärsdata — från kundorder till uppgifter och projekt — lever i en modell och får där sina fält, relationer och affärsregler.
Att förstå Odoo-modeller är nödvändigt både för utvecklare och funktionella konsulter. Modeller är stomme i Odoos datalandskap: de bestämmer vilka fält som finns, hur poster hänger ihop och var affärslogiken sitter. De följer konsekventa mönster som gör det lättare att förutsäga beteenden i systemet.
Den här texten koncentrerar sig på en särskilt viktig modell: project.project. Oavsett om du skapar egna moduler, kopplar ihop Odoo med andra system eller ställer in projektprocesser i företaget kommer du att möta den här modellen ofta.
Vad är modellen project.project?
Modellen project.project är Odoos representation av ett projekt — själva behållaren som rymmer uppgifter, milstolpar och teamets inställningar. Varje projekt i systemet är en rad i denna modell och fungerar som navet för projektarbete.
Project-appen använder project.project som sin grundstruktur. När du lägger upp ett nytt projekt skapas en project.project-post; uppgifter kopplas till den via relationen till uppgiftsfältet. Projektet bestämmer också vilka steg som används, vilka som ingår i teamet och vilka synlighetsregler som gäller.
Modellen definieras i projektmodulen, och resten av Odoo kan bygga vidare på den genom arv. Försäljning lägger till funktioner för projektfakturering, tidrapportering kopplas in via Timesheet och planeringstillägg ger Gantt-scheman — alla bygger ovanpå samma kärnstruktur utan att duplicera den.
Relationen mellan project.project och project.task är central: projektet innehåller gemensamma inställningar och struktur, medan varje task representerar ett enskilt arbetsobjekt. Tillsammans bildar de kärnan i Odoos projektflöde.
Viktiga fält i modellen
Nedan följer de viktigaste fälten i project.project — känna till dem gör det lättare att administrera, rapportera och utveckla mot projekt i Odoo.
1. name
Typ: Char. Projektets titel. Visas i listor och vyer och fungerar som huvudidentifierare för posten.
2. create_date
Typ: Datetime. Tidpunkten när posten skapades. Hanteras automatiskt och är värdefull vid rapportering och revision.
3. write_date
Typ: Datetime. Tidpunkt för senaste ändring. Automatiskt uppdaterad och viktig för spårbarhet.
4. active
Typ: Boolean. Indikerar om projektet är aktivt eller arkiverat. Arkiverade poster dödas inte fysiskt utan göms i standardvyer.
5. sequence
Typ: Integer. Bestämmer sorteringsordningen i listor och dropdown-menyer — lägre tal visas först.
6. color
Typ: Integer. Färgindex som används i kanban- och översiktsvyer för visuell distinktion mellan projekt.
7. user_id
Typ: Many2one (res.users). Projektledaren eller ansvarig användare. Ofta förvalt som uppgiftsansvarig.
8. company_id
Typ: Many2one (res.company). Visar vilken koncern/enhet projektet hör till vid multi-företagsuppsättningar.
9. partner_id
Typ: Many2one (res.partner). Kunden eller externa parten kopplad till projektet — viktig för fakturering och kundrapportering.
10. description
Typ: Html. Beskrivning av projektet, fri text med enkel formatering som används för projektbriefar och anteckningar.
11. date_start
Typ: Date. Projektets startdatum — används i planering och rapporter.
12. date
Typ: Date. Projektets slutdatum eller deadline — viktigt för uppföljning.
13. task_ids
Typ: One2many (project.task). Listan över uppgifter i projektet — huvudrelationen mellan projekt och uppgifter.
14. task_count
Typ: Integer. Antal uppgifter, vanligtvis beräknat från task_ids; används i vyer och filter.
15. type_ids
Typ: Many2many (project.task.type). De steg eller stadier som gäller för projektets uppgifter — exempelvis att-göra, pågår, klart.
16. tag_ids
Typ: Many2many (project.tags). Taggar för kategorisering och filtrering av projekt.
17. privacy_visibility
Typ: Selection. Styrs vem som får se projektet: endast inbjudna internanvändare, alla internanvändare, eller portal-användare plus intern användare (publikt).
18. collaborator_ids
Typ: One2many (project.collaborator). Teammedlemmar kopplade till projektet — de som får arbeta med uppgifterna.
19. favorite_user_ids
Typ: Many2many (res.users). Användare som markerat projektet som favorit för snabb åtkomst i instrumentpaneler.
20. allow_task_dependencies
Typ: Boolean. Tillåter att uppgifter länkas som föregångare/efterföljare — användbart för planering och beroenden.
21. allow_milestones
Typ: Boolean. Aktiverar möjligheten att skapa milstolpar i projektet — för att markera viktiga leveranser.
22. milestone_ids
Typ: One2many (project.milestone). Projektets milstolpar, som underlättar uppföljning av kritiska datum.
23. rating_active
Typ: Boolean. Tillåter kunder att betygsätta projektet — nyttigt för kundfeedback.
24. task_properties_definition
Typ: Text (JSON). Möjlighet att definiera egna uppgiftsegenskaper för projektet — extra fält eller metadata.
25. access_url
Typ: Char. Länk för kundåtkomst via portal — underlättar samarbete med externa parter.
26. access_token
Typ: Char. Säkerhets-token för portalåtkomst så att endast behöriga når projektets vyer.
27. alias_id
Typ: Many2one (mail.alias). E-postalias för projektet — inkommande mejl kan automatiskt skapa uppgifter.
28. activity_ids
Typ: One2many (mail.activity). Schemalagda aktiviteter kopplade till projektet för uppföljning och påminnelser.
29. activity_state
Typ: Selection. Beräknat fält som summerar aktivitetsstatus: Idag, Försenat eller Planerat, baserat på activity_ids.
30. activity_date_deadline
Typ: Date. Datum för nästa planerade aktivitet — hjälper till att prioritera åtgärder.
31. message_ids
Typ: One2many (mail.message). Chatter-meddelanden och diskussioner kopplade till projektet för internkommunikation.
32. message_follower_ids
Typ: One2many (mail.followers). Användare som följer projektet och får notifieringar.
33. create_uid
Typ: Many2one (res.users). Användaren som skapade posten, sätts automatiskt av systemet.
34. write_uid
Typ: Many2one (res.users). Användaren som senast ändrade posten, också automatiskt satt av Odoo.
Hur modellen används i affärsprocesser
1. Skapa och hantera projekt
När en projektansvarig eller säljare skapar ett projekt fyller de i namn, ansvarig, datum och synlighet. All denna information lagras i project.project, varefter uppgifter skapas och länkas till projektet för att genomföra arbetet.
2. Uppgiftsflöde
Uppgifter rör sig genom de steg som definierats i type_ids. Projektledaren fördelar uppgifter till medarbetare och projektet håller reda på både arbetsflöde och teamstruktur.
3. Kundportal
Om projektet tillåter portalåtkomst kan kundens kontaktpersoner följa uppgifter och milstolpar via access_url. Access_token säkerställer att bara behöriga kan se projektsidan — praktiskt för kundprojekt och samarbete.
4. Tidsrapportering och fakturering
Med Timesheet kopplat registreras tid mot projektet. I kombination med försäljning kan projekt knytas till order för projektbaserad fakturering. partner_id länkar projektet till rätt kund.
5. E-postintegration
Genom alias_id kan inkommande mejl omvandlas till uppgifter automatiskt — smidigt för att ta hand om supportärenden och inkommande uppdrag utan manuellt arbete.
Hur utvecklare bygger ut modellen
Utvecklare bygger ut project.project med Odoos arvsmekanismer och några beprövade mönster för att behålla kompatibilitet och uppgraderingsmöjligheter.
Modellarv
Använd _inherit = 'project.project' i din modul för att bygga vidare på modellen. Så lägger du till fält, skriver om metoder eller lägger till begränsningar utan att ändra originalkoden — vilket gör det enklare att underhålla och uppgradera.
Lägga till fält
I den ärvda modellen deklarerar du nya fält av rätt typ: Char, Many2one, Boolean, Integer, Text eller Selection. Tänk på företagsspecifika fält (company-dependent) vid multi-company-installationer.
Python-utvidgningar
Skriv om create, write eller unlink för att infoga egen logik, men anropa alltid super() där det behövs. Var särskilt försiktig med beräknade fält och deras beroenden så att de uppdateras korrekt.
Odoo Studio
Studio är smidigt för snabba ändringar och mindre anpassningar utan kod. För mer komplexa behov eller långsiktig underhållbarhet rekommenderas dock egen modulutveckling.
Bästa praxis
- Sätt user_id för tydligt ansvar och ägarskap — det förenklar kommunikation och uppföljning.
- Konfigurera type_ids så att varje projekt har rätt steg för ert arbetssätt — annars kan uppgifter fastna utan tydliga övergångar.
- Använd privacy_visibility med omsorg så att känslig information inte blir synlig för fel användargrupper.
- När du bygger API-integrationer, använd XML-RPC eller JSON-RPC. Modeln project.project exponeras fullt i Odoos API — matcha externa ID:n noggrant för konsistens mellan system.
- För egna fält, använd x_ eller ett modulprefix i fältnamnet för att undvika namnkonflikter vid framtida Odoo-uppgraderingar.
Vanliga misstag
- Att skapa uppgifter utan att koppla dem till ett projekt görs ibland av misstag — varje task bör ha project_id satt.
- Glöm inte att definiera type_ids. Ett nytt projekt utan steg innebär att uppgifter saknar workflow att röra sig genom.
- Felaktigt satt privacy_visibility till publikt när information borde vara privat kan leda till dataläckage — kontrollera detta noggrant.
- Att skriva om kärnmetoder utan att anropa super() kan skada kompatibilitet med andra moduler och framtida Odoo-uppgraderingar.
- Lägga till obligatoriska egna fält utan att ge befintliga poster värden kan göra att systemet bryter vid uppgradering — hantera migrationsvärden och default noggrant.
Sammanfattning
Sammanfattningsvis är project.project navet i Odoos projektfunktionalitet. Den lagrar projektdefinitioner, arbetsflöden och teamstruktur. Kännedom om modellens fält och hur andra moduler bygger vidare på den gör det enklare att både konfigurera och utveckla Odoo-lösningar.
Oavsett om du arbetar som systemadministratör som sätter upp projekt eller som utvecklare som skapar moduler, sparar en god förståelse för project.project tid och minskar risken för fel.
Behöver du hjälp med din Odoo-implementering?
Dasolo hjälper företag att införa, anpassa och optimera Odoo-lösningar. Vi har särskild erfarenhet av API-integrationer och skräddarsydd utveckling kring Odoo:s datamodeller som project.project.
Behöver du stöd med Odoo-implementeringar, anpassade moduler eller integrationer kan vi hjälpa till hela vägen. Boka en demo för att diskutera ditt projekt.