Ga naar hoofdinhoud
Versie: Volgende 🚧

Projecten Module Technische Referentie

De Projectenmodule beheert projectmetagegevens op hoog niveau, subprojecthiërarchieën, fasegebaseerde mapping en Favorietenstatus.

Codebase-kaart

LaagPadDoel
Frontend-UIqml/features/projects/Aanzichten en gedetailleerde componenten voor projecten
State & Logicamodels/project.jsJS-helpermodules, fasequery's en favoriete status
Backend-servicesrc/sync_from_odoo.pySynchroniseer werker die projecten en fasen ophaalt
D-Bus-interfacesrc/backend.pyD-Bus-methoden die projectlijsten blootleggen

Databaseschema

Projecten en fasen worden lokaal opgeslagen in de volgende SQLite-tabellen:

project_project_app

  • id (INTEGER, primaire sleutel): unieke project-ID (Odoo externe ID).
  • name (TEXT): Projecttitel.
  • parent_id (INTEGER): Verwijzingen naar het bovenliggende project (zelfrelatie voor subprojecten).
  • date_start (TEXT): Startdatum van het project.
  • date (TEXT): Einddatum/deadline van het project.
  • description (TEXT): Gedetailleerde beschrijving van de projectomvang.
  • user_id (INTEGER): Toegewezen eigenaar/beheerder.
  • allocated_hours (REAL): Gebudgetteerde urentoewijzing.
  • color (INTEGER): Accentkleurindex.
  • favorite (INTEGER): Favoriete statusvlag (0 = Nee, 1 = Ja).
  • stage_id (INTEGER): Verwijst naar de huidige projectfase.

project_project_stage_app

  • id (INTEGER, primaire sleutel): Fase-ID.
  • name (TEXT): Fasenaam (bijvoorbeeld In uitvoering, Geannuleerd, In de wacht, Klaar).
  • sequence (INTEGER): Bestelvolgorde.

Synchronisatiemechanisme en netwerkprotocol

Odoo XML-RPC-modeltoewijzing

  • Extern model: project.project (projectentiteit), project.project.stage (fasen)
  • Synchronisatierichting: Pull-georiënteerd (alleen-lezen mapping voor structuur, schakelen tussen lokale favorieten).

De frontend vraagt projecten rechtstreeks op en werkt deze bij in de lokale SQLite-database met behulp van functies die zijn gedefinieerd in:

Pad: models/project.js

Waar de logica is gedefinieerd:

  • getProjectsForAccount(accountId): Retourneert projecten die zijn gekoppeld aan een bepaald account.
  • getProjectsForAccountPaginated(accountId, limit, offset): Gepagineerde versie voor oneindig scrollen.
  • getProjectsFilteredPaginated(options): Wordt gebruikt om projecten in de UI te zoeken en te filteren.