Introduktion
I Odoo definierar modeller hur data struktureras och lagras i databasen. Varje del av affärsdata du arbetar med, från försäljningsorder till projekt till uppgifter, finns i en modell.
Att förstå Odoo-modeller är avgörande för både utvecklare och funktionella konsulter. Modeller är grunden för Odoos dataarkitektur. De definierar Odoo-fält, relationer och affärslogik. Varje modell i Odoo följer samma mönster.
Denna artikel fokuserar på en av de viktigaste modellerna i Odoo: project.project. Oavsett om du bygger anpassade moduler, integrerar externa system eller konfigurerar projektarbetsflöden, kommer du att arbeta med denna modell.
Vad är projekt.project-modellen
Projekt.project-modellen representerar ett projekt i Odoo. Det är behållaren för uppgifter, milstolpar och team-samarbete. Varje projekt är en post i denna modell.
Denna modell i Odoo används av Projekt-appen. När du skapar ett projekt i Odoo, skapar du en projekt.project-post. Uppgifter är kopplade till det projektet genom task_ids-fältet. Projektet definierar arbetsflödessteg, teammedlemmar och synlighetsregler.
Modellen definieras i projektmodulen. Andra moduler utökar den genom Odoo-modelarv. Försäljning lägger till projektbaserad fakturering. Tidsrapportering lägger till tidsuppföljning. Projektplanering lägger till Gantt-schemaläggning. Varje modul lägger till vad den behöver utan att duplicera kärnstrukturen.
Att förstå relationen mellan projekt.project och projekt.task är nyckeln. Projektet håller gemensamma inställningar. Uppgiften håller individuella arbetsobjekt. Båda är centrala för Odoo:s projektledningsarbetsflöde.
Nyckelfält i modellen
Här är de viktigaste Odoo-fälten i projekt.project-modellen. Att förstå dessa kommer att hjälpa dig att arbeta effektivt med projekt.
1. namn
Typ: Char. Detta fält lagrar namnet på projektet. Det visas i många Odoo-vyer och är den primära identifieraren för projektposten.
2. create_date
Typ: Datetime. Lagrar datum och tid när posten skapades. Hanteras automatiskt av Odoo. Användbart för rapportering och granskning.
3. write_date
Typ: Datetime. Lagrar datum och tid för den senaste ändringen. Också automatiskt hanterad. Hjälper till att spåra när data senast uppdaterades.
4. aktiv
Typ: Boolean. Mjuk raderingsflagga. När False arkiveras projektet och döljs från standardvyer. Poster raderas inte fysiskt.
5. sekvens
Typ: Heltal. Visningsordning för sortering. Används i projektlistor och rullgardinsmenyer. Lägsta värden visas först.
6. färg
Typ: Heltal. Färgindex för projektet. Används i vyer och kanban-tavlor för att visuellt särskilja projekt.
7. användar_id
Typ: Many2one (res.users). Projektledaren. Denna användare ansvarar för projektet och visas ofta som standardtilldelad.
8. företag_id
Typ: Many2one (res.company). I flerföretagsinställningar anger detta vilken Odoo-företag projektet tillhör.
9. partner_id
Typ: Many2one (res.partner). Kunden eller klienten kopplad till projektet. Används för fakturering och rapportering.
10. beskrivning
Typ: Html. Projektbeskrivning. Kan inkludera HTML för formatering. Används för projektbeskrivningar och anteckningar.
11. startdatum
Typ: Datum. Projektets startdatum. Används för planering och rapportering.
12. datum
Typ: Datum. Projektets deadline eller slutdatum. Används för spårning och rapportering.
13. uppgifts_ids
Typ: One2many (project.task). Listan över uppgifter i projektet. Detta är den huvudsakliga relationen mellan projekt och uppgifter.
14. uppgiftsantal
Typ: Heltal. Antal uppgifter. Beräknas från uppgifts_ids. Används för visning och filtrering.
15. typ_ids
Typ: Many2many (project.task.type). Uppgiftsstadier eller typer för projektet. Definierar arbetsflödet (t.ex. Att Göra, Pågående, Klar).
16. tag_ids
Typ: Many2many (project.tags). Projektetiketter för kategorisering. Används för att filtrera och organisera projekt.
17. privacy_visibility
Typ: Val. Kontrollerar vem som kan få tillgång till projektet. Alternativ: Inbjudna interna användare (privat), Alla interna användare, eller Inbjudna portal-användare och alla interna användare (offentlig).
18. collaborator_ids
Typ: One2many (project.collaborator). Teammedlemmar som tilldelats projektet. Definierar vem som kan arbeta med projektet.
19. favorite_user_ids
Typ: Many2many (res.users). Användare som har markerat projektet som favorit. Används för snabb åtkomst i instrumentpanelen.
20. allow_task_dependencies
Typ: Boolean. När sant kan uppgifter kopplas till andra uppgifter som föregångare eller efterföljare. Används för projektplanering.
21. allow_milestones
Typ: Boolean. När sant kan milstolpar skapas i projektet. Milstolpar markerar viktiga leveranser.
22. milestone_ids
Typ: One2many (project.milestone). Milstolparna i projektet. Används för att spåra viktiga leveranser.
23. rating_active
Typ: Boolean. När sant, kan kunder betygsätta projektet. Används för kundfeedback.
24. task_properties_definition
Typ: Text (JSON). Anpassade uppgiftsattribut för projektet. Definierar extra fält som kan läggas till uppgifter.
25. access_url
Typ: Char. URL:en för kunder att få tillgång till projektet via portalen. Används för kundsamarbete.
26. access_token
Typ: Char. Säkerhetstoken för portalåtkomst. Säkerställer att endast auktoriserade användare kan se projektet.
27. alias_id
Typ: Many2one (mail.alias). E-postalias för projektet. Inkommande e-post skapar automatiskt uppgifter.
28. activity_ids
Typ: One2many (mail.activity). Schemalagda aktiviteter på projektet. Används för uppföljningar och påminnelser.
29. activity_state
Typ: Val. Sammanfattning av aktivitetsstatus: Idag, Förfallen eller Planerad. Beräknas från activity_ids.
30. activity_date_deadline
Typ: Datum. Datum för nästa schemalagda aktivitet. Används för aktivitetsplanering.
31. message_ids
Typ: One2many (mail.message). Chatter-meddelanden på projektet. Används för intern kommunikation.
32. message_follower_ids
Typ: One2many (mail.followers). Användare som följer projektet. De får meddelanden.
33. create_uid
Typ: Many2one (res.users). Användaren som skapade posten. Ställs in automatiskt av Odoo.
34. write_uid
Typ: Many2one (res.users). Användaren som senast ändrade posten. Ställs in automatiskt av Odoo.
Hur denna modell används i affärsarbetsflöden
1. Projekt skapande och hantering
När en säljare eller projektledare skapar ett projekt, ställer de in namn, chef, datum och synlighet. Modellen project.project lagrar allt detta. Uppgifter läggs sedan till och kopplas till projektet.
2. Arbetsflöde för uppgifter
Uppgifter rör sig genom faser definierade av type_ids. Projektledaren tilldelar uppgifter till samarbetspartners. Projektet innehåller arbetsflödeskonfigurationen och teamstrukturen.
3. Kundportal
När privacy_visibility tillåter portalåtkomst kan kunder se uppgifter och milstolpar via access_url. access_token säkrar länken. Detta är användbart för kundprojekt.
4. Tidsrapportering och fakturering
Med modulen Tidsrapportering kopplas project.project till tidsrapporter. Med Försäljning kan projekt kopplas till försäljningsorder för projektbaserad fakturering. Fältet partner_id kopplar projektet till kunden.
5. E-postintegration
Inkommande e-post till projektaliaset skapar automatiskt uppgifter. Fältet alias_id kopplar projektet till dess e-postalias. Detta strömlinjeformar skapandet av uppgifter från e-post.
Hur utvecklare utökar denna modell
Utvecklare utökar project.project med flera mönster. Odoo-modellärv är den huvudsakliga mekanismen.
Modellarv
Använd _inherit = 'project.project' för att utöka modellen. Detta är Odoo-modellarv i arbete. Lägg till nya Odoo-fält, åsidosätt metoder eller lägg till begränsningar. Den ärvda modellen i Odoo håller dina ändringar i en separat modul för enkla uppgraderingar. När du ärver en modell i Odoo, utökar du den utan att modifiera originalet.
Lägga till fält
Definiera nya Odoo-fält i din ärvda modell. Använd rätt fälttyp: Char, Many2one, Boolean, Integer, Text, Selection. Tänk på företagsberoende fält för flera företag.
Python-tillägg
Åsidosätt create, write eller unlink för att lägga till logik. Använd super() för att anropa originalet. Var försiktig med beräknade fält och deras beroenden.
Odoo Studio
Odoo Studio låter dig lägga till fält utan kod. Bra för snabba anpassningar. För komplex logik eller uppgraderingar är anpassade moduler mer underhållbara.
Bästa praxis
- Ställ in user_id för projektledartilldelning. Tydligt ägarskap förbättrar ansvarstagande.
- Konfigurera type_ids för varje projekt. Definiera steg som matchar ditt arbetsflöde.
- Använd privacy_visibility korrekt. Privata projekt begränsar åtkomst för följare och administratörer.
- När du bygger API-integrationer, använd XML-RPC eller JSON-RPC API. Modellen project.project är fullt exponerad som en API-modell i Odoo. Karta externa ID:n noggrant.
- För anpassade fält, använd
x_prefixet eller ett modulprefix för att undvika konflikter med framtida Odoo-versioner.
Vanliga misstag
- Skapa uppgifter utan att koppla dem till ett projekt. Varje uppgift måste ha ett project_id.
- Att glömma att ställa in type_ids. Nya projekt kan ha inga faser, så uppgifter kan inte röra sig genom arbetsflödet.
- Att ställa in privacy_visibility till offentlig när det borde vara privat. Detta kan exponera känslig information.
- Att åsidosätta kärnmetoder utan att kalla super(). Detta kan bryta andra moduler eller framtida uppgraderingar.
- Att lägga till obligatoriska anpassade fält utan standardvärden. Befintliga poster kommer att misslyckas med validering vid uppgradering.
Slutsats
Modellen project.project är central för Odoo projektledning. Den lagrar projektdefinitioner, arbetsflödesfaser och teamstruktur. Att förstå dess fält och hur moduler utökar den kommer att hjälpa dig att konfigurera, anpassa och integrera Odoo effektivt.
Oavsett om du är en funktionell konsult som sätter upp projekt eller en utvecklare som bygger anpassade moduler, kommer en solid förståelse av project.project att spara tid och förhindra fel.
Behöver du hjälp med din Odoo-implementering?
Dasolo hjälper företag att implementera, anpassa och optimera Odoo. Vi specialiserar oss på API-integrationer och Odoo-utveckling. Vårt team har djup erfarenhet av Odoo:s dataarkitektur och modeller som project.project.
Om du behöver hjälp med din Odoo-implementering, anpassade moduler eller integrationer, är vi här för att hjälpa till. Boka en demo för att diskutera ditt projekt.