Einführung
In Odoo definieren Modelle, wie Daten strukturiert und in der Datenbank gespeichert werden. Jedes Stück Geschäftsdaten, mit dem Sie arbeiten, von Verkaufsaufträgen über Projekte bis hin zu Aufgaben, lebt in einem Modell.
Das Verständnis von Odoo-Modellen ist sowohl für Entwickler als auch für funktionale Berater unerlässlich. Modelle sind die Grundlage der Odoo-Datenarchitektur. Sie definieren Odoo-Felder, Beziehungen und Geschäftslogik. Jedes Modell in Odoo folgt denselben Mustern.
Dieser Artikel konzentriert sich auf eines der wichtigsten Modelle in Odoo: project.project. Egal, ob Sie benutzerdefinierte Module erstellen, externe Systeme integrieren oder Projektabläufe konfigurieren, Sie werden mit diesem Modell arbeiten.
Was ist das project.project Modell
Das project.project-Modell repräsentiert ein Projekt in Odoo. Es ist der Container für Aufgaben, Meilensteine und Teamzusammenarbeit. Jedes Projekt ist ein Datensatz in diesem Modell.
Dieses Modell in Odoo wird von der Projekt-App verwendet. Wenn Sie ein Projekt in Odoo erstellen, erstellen Sie einen project.project-Datensatz. Aufgaben sind über das Feld task_ids mit diesem Projekt verknüpft. Das Projekt definiert die Workflow-Stufen, Teammitglieder und Sichtbarkeitsregeln.
Das Modell ist im Projektmodul definiert. Andere Module erweitern es durch die Odoo-Modellerbschaft. Der Verkauf fügt projektbasierte Abrechnung hinzu. Die Zeiterfassung fügt die Zeitverfolgung hinzu. Die Projektplanung fügt Gantt-Planung hinzu. Jedes Modul fügt hinzu, was es benötigt, ohne die Kernstruktur zu duplizieren.
Das Verständnis der Beziehung zwischen project.project und project.task ist entscheidend. Das Projekt hält gemeinsame Einstellungen. Die Aufgabe hält individuelle Arbeitselemente. Beide sind zentral für den Odoo-Projektmanagement-Workflow.
Wichtige Felder im Modell
Hier sind die wichtigsten Odoo-Felder im project.project-Modell. Das Verständnis dieser wird Ihnen helfen, effektiv mit Projekten zu arbeiten.
1. name
Typ: Char. Dieses Feld speichert den Namen des Projekts. Es wird in vielen Odoo-Ansichten angezeigt und ist der primäre Identifikator für den Projekt-Datensatz.
2. create_date
Typ: Datetime. Speichert das Datum und die Uhrzeit, wann der Datensatz erstellt wurde. Wird automatisch von Odoo verwaltet. Nützlich für Berichterstattung und Audits.
3. write_date
Typ: Datetime. Speichert das Datum und die Uhrzeit der letzten Änderung. Wird ebenfalls automatisch verwaltet. Hilft dabei, nachzuvollziehen, wann die Daten zuletzt aktualisiert wurden.
4. active
Typ: Boolean. Soft-Delete-Flag. Wenn False, wird das Projekt archiviert und in den Standardansichten ausgeblendet. Datensätze werden nicht physisch gelöscht.
5. Reihenfolge
Typ: Integer. Anzeige-Reihenfolge für die Sortierung. Wird in Projektlisten und Dropdowns verwendet. Niedrigere Werte erscheinen zuerst.
6. Farbe
Typ: Integer. Farbindex für das Projekt. Wird in Ansichten und Kanban-Boards verwendet, um Projekte visuell zu unterscheiden.
7. benutzer_id
Typ: Many2one (res.users). Der Projektmanager. Dieser Benutzer ist für das Projekt verantwortlich und wird oft als Standardzugewiesener angezeigt.
8. unternehmens_id
Typ: Many2one (res.company). In Multi-Company-Setups zeigt dies an, zu welchem Odoo-Unternehmen das Projekt gehört.
9. partner_id
Typ: Many2one (res.partner). Der Kunde oder Klient, der mit dem Projekt verbunden ist. Wird für Abrechnung und Berichterstattung verwendet.
10. Beschreibung
Typ: Html. Projektbeschreibung. Kann HTML zur Formatierung enthalten. Wird für Projektbriefe und Notizen verwendet.
11. datum_start
Typ: Datum. Das Startdatum des Projekts. Wird für Planung und Berichterstattung verwendet.
12. datum
Typ: Datum. Die Frist oder das Enddatum des Projekts. Wird für Nachverfolgung und Berichterstattung verwendet.
13. aufgaben_ids
Typ: One2many (projekt.aufgabe). Die Liste der Aufgaben im Projekt. Dies ist die Hauptbeziehung zwischen Projekten und Aufgaben.
14. aufgabenanzahl
Typ: Ganzzahl. Anzahl der Aufgaben. Berechnet aus aufgaben_ids. Wird zur Anzeige und Filterung verwendet.
15. typ_ids
Typ: Many2many (projekt.aufgabe.typ). Aufgabenstufen oder -typen für das Projekt. Definiert den Workflow (z. B. To Do, In Progress, Done).
16. tag_ids
Typ: Many2many (project.tags). Projekttags zur Kategorisierung. Wird zum Filtern und Organisieren von Projekten verwendet.
17. privacy_visibility
Typ: Auswahl. Steuert, wer auf das Projekt zugreifen kann. Optionen: Eingeladene interne Benutzer (privat), Alle internen Benutzer oder Eingeladene Portalbenutzer und alle internen Benutzer (öffentlich).
18. collaborator_ids
Typ: One2many (project.collaborator). Teammitglieder, die dem Projekt zugewiesen sind. Definiert, wer am Projekt arbeiten kann.
19. favorite_user_ids
Typ: Many2many (res.users). Benutzer, die das Projekt als Favorit markiert haben. Wird für den schnellen Zugriff im Dashboard verwendet.
20. allow_task_dependencies
Typ: Boolean. Wenn wahr, können Aufgaben mit anderen Aufgaben als Vorgänger oder Nachfolger verknüpft werden. Wird für die Projektplanung verwendet.
21. allow_milestones
Typ: Boolean. Wenn wahr, können Meilensteine im Projekt erstellt werden. Meilensteine markieren wichtige Lieferungen.
22. milestone_ids
Typ: One2many (project.milestone). Die Meilensteine im Projekt. Wird zur Verfolgung wichtiger Lieferungen verwendet.
23. rating_active
Typ: Boolean. Wenn wahr, können Kunden das Projekt bewerten. Wird für Kundenfeedback verwendet.
24. task_properties_definition
Typ: Text (JSON). Benutzerdefinierte Aufgabenattribute für das Projekt. Definiert zusätzliche Felder, die zu Aufgaben hinzugefügt werden können.
25. access_url
Typ: Char. Die URL, über die Kunden auf das Projekt über das Portal zugreifen können. Wird für die Zusammenarbeit mit Kunden verwendet.
26. access_token
Typ: Char. Sicherheitstoken für den Portalzugang. Stellt sicher, dass nur autorisierte Benutzer das Projekt einsehen können.
27. alias_id
Typ: Many2one (mail.alias). E-Mail-Alias für das Projekt. Eingehende E-Mails erstellen automatisch Aufgaben.
28. activity_ids
Typ: One2many (mail.activity). Geplante Aktivitäten im Projekt. Wird für Nachverfolgungen und Erinnerungen verwendet.
29. activity_state
Typ: Auswahl. Zusammenfassung des Aktivitätsstatus: Heute, Überfällig oder Geplant. Berechnet aus activity_ids.
30. activity_date_deadline
Typ: Datum. Das Datum der nächsten geplanten Aktivität. Wird für die Aktivitätsplanung verwendet.
31. message_ids
Typ: One2many (mail.message). Chatter-Nachrichten im Projekt. Wird für die interne Kommunikation verwendet.
32. message_follower_ids
Typ: One2many (mail.followers). Benutzer, die dem Projekt folgen. Sie erhalten Benachrichtigungen.
33. create_uid
Typ: Many2one (res.users). Der Benutzer, der den Datensatz erstellt hat. Automatisch von Odoo gesetzt.
34. write_uid
Typ: Many2one (res.users). Der Benutzer, der den Datensatz zuletzt geändert hat. Wird automatisch von Odoo gesetzt.
Wie dieses Modell in Geschäftsabläufen verwendet wird
1. Projekt Erstellung und Verwaltung
Wenn ein Verkäufer oder Projektmanager ein Projekt erstellt, legt er den Namen, den Manager, die Daten und die Sichtbarkeit fest. Das Modell project.project speichert all dies. Aufgaben werden dann hinzugefügt und mit dem Projekt verknüpft.
2. Aufgabenworkflow
Aufgaben bewegen sich durch die von type_ids definierten Phasen. Der Projektmanager weist Aufgaben den Mitarbeitern zu. Das Projekt enthält die Workflow-Konfiguration und die Teamstruktur.
3. Kundenportal
Wenn die privacy_visibility den Portalzugang erlaubt, können Kunden Aufgaben und Meilensteine über die access_url einsehen. Das access_token sichert den Link. Dies ist nützlich für Kundenprojekte.
4. Stundenerfassung und Abrechnung
Mit dem Modul Stundenerfassung verknüpft project.project die Stundeneinträge. Mit Sale können Projekte mit Verkaufsaufträgen für projektbasierte Abrechnung verknüpft werden. Das Feld partner_id verbindet das Projekt mit dem Kunden.
5. E-Mail-Integration
Eingehende E-Mails an das Projektalias erstellen automatisch Aufgaben. Das Feld alias_id verbindet das Projekt mit seinem E-Mail-Alias. Dies vereinfacht die Erstellung von Aufgaben aus E-Mails.
Wie Entwickler dieses Modell erweitern
Entwickler erweitern project.project mit mehreren Mustern. Die Vererbung von Odoo-Modellen ist der Hauptmechanismus.
Modellvererbung
Verwenden Sie _inherit = 'project.project', um das Modell zu erweitern. Dies ist die Modellvererbung von Odoo in Aktion. Fügen Sie neue Odoo-Felder hinzu, überschreiben Sie Methoden oder fügen Sie Einschränkungen hinzu. Das vererbte Modell in Odoo hält Ihre Änderungen in einem separaten Modul für einfache Upgrades. Wenn Sie ein Modell in Odoo erben, erweitern Sie es, ohne das Original zu ändern.
Felder hinzufügen
Definieren Sie neue Odoo-Felder in Ihrem vererbten Modell. Verwenden Sie den richtigen Feldtyp: Char, Many2one, Boolean, Integer, Text, Auswahl. Berücksichtigen Sie unternehmensabhängige Felder für mehrere Unternehmen.
Python-Erweiterungen
Überschreiben Sie create, write oder unlink, um Logik hinzuzufügen. Verwenden Sie super(), um das Original aufzurufen. Seien Sie vorsichtig mit berechneten Feldern und deren Abhängigkeiten.
Odoo Studio
Odoo Studio ermöglicht es Ihnen, Felder ohne Code hinzuzufügen. Gut für schnelle Anpassungen. Für komplexe Logik oder Upgrades sind benutzerdefinierte Module wartungsfreundlicher.
Best Practices
- Setzen Sie user_id für die Zuweisung des Projektmanagers. Klare Eigentümerschaft verbessert die Verantwortlichkeit.
- Konfigurieren Sie type_ids für jedes Projekt. Definieren Sie Phasen, die Ihrem Workflow entsprechen.
- Verwenden Sie privacy_visibility korrekt. Private Projekte schränken den Zugriff auf Follower und Administratoren ein.
- Beim Erstellen von API-Integrationen verwenden Sie die XML-RPC- oder JSON-RPC-API. Das Modell project.project ist vollständig als API-Modell in Odoo verfügbar. Ordnen Sie externe IDs sorgfältig zu.
- Für benutzerdefinierte Felder verwenden Sie das
x_-Präfix oder ein Modulpräfix, um Konflikte mit zukünftigen Odoo-Versionen zu vermeiden.
Häufige Fehler
- Aufgaben erstellen, ohne sie mit einem Projekt zu verknüpfen. Jede Aufgabe muss eine project_id haben.
- Vergessen, type_ids festzulegen. Neue Projekte können keine Phasen haben, sodass Aufgaben nicht durch den Workflow bewegt werden können.
- Die privacy_visibility auf öffentlich setzen, wenn sie privat sein sollte. Dies kann sensible Daten offenlegen.
- Kernmethoden überschreiben, ohne super() aufzurufen. Dies kann andere Module oder zukünftige Upgrades beeinträchtigen.
- Erforderliche benutzerdefinierte Felder ohne Standardwerte hinzufügen. Bestehende Datensätze werden bei einem Upgrade die Validierung nicht bestehen.
Fazit
Das Modell project.project ist zentral für das Projektmanagement in Odoo. Es speichert Projektdefinitionen, Workflow-Phasen und Teamstrukturen. Das Verständnis seiner Felder und wie Module es erweitern, wird Ihnen helfen, Odoo effektiv zu konfigurieren, anzupassen und zu integrieren.
Ob Sie nun ein funktionaler Berater sind, der Projekte einrichtet, oder ein Entwickler, der benutzerdefinierte Module erstellt, ein solides Verständnis von project.project wird Zeit sparen und Fehler verhindern.
Brauchen Sie Hilfe bei Ihrer Odoo-Implementierung?
Dasolo hilft Unternehmen bei der Implementierung, Anpassung und Optimierung von Odoo. Wir sind auf API-Integrationen und Odoo-Entwicklung spezialisiert. Unser Team hat umfassende Erfahrung mit der Odoo-Datenarchitektur und Modellen wie project.project.
Wenn Sie Hilfe bei Ihrer Odoo-Implementierung, benutzerdefinierten Modulen oder Integrationen benötigen, sind wir hier, um zu helfen. Buchen Sie eine Demo um Ihr Projekt zu besprechen.