Een verzonnen adviesbureau dat PSA in gebruik neemt
Voorbeeld Fictief geval: het bedrijf en de cijfers zijn verzonnen om de werkwijze uit te leggen.
Estudio Ribera is een verzonnen adviesbureau dat net Professional Services Automation (PSA) for Odoo heeft geïnstalleerd. Marta, verantwoordelijk voor operations, wil de tarieven inladen, een contract met mijlpalen klaarzetten en aan de slag gaan voor een klant. Onderweg krijgt ze een flink deel van de foutmeldingen van de module te zien. We lopen ze door in de volgorde waarin ze verschijnen: de letterlijke tekst, wat die betekent en wat ze doet om verder te kunnen.
Als eerste opent Marta de instellingen van de module. Daar krijgt ze geen foutmelding.

WIP Account leeg.Wil je nalezen welke menu's de module toevoegt en welke stappen elk record doorloopt, kijk dan bij hoe PSA van binnen werkt.
Tarieven: wie ze mag importeren en wie ze mag wijzigen
Het eerste wat Marta probeert, is het tarief van het bureau importeren. De module houdt haar tegen met Only Operations Directors can import rate cards. De melding is duidelijk: rate cards importeren is voorbehouden aan de rol Operations Directors, en Marta's gebruiker heeft die niet. Ze heeft twee opties: iemand met die rol doet de import, of degene die de gebruikers in haar Odoo beheert kent haar de rol toe, als dat bij haar past.

Met het tarief ingeladen wil Marta een klant een ander tarief geven. Ze krijgt Only PSA Operations users can override billing rates.: factuurtarieven aanpassen is voorbehouden aan gebruikers van PSA Operations. Een collega met die rol probeert het, laat de reden leeg en krijgt A reason is mandatory for rate overrides. De oplossing: vul de reden van de wijziging in en sla opnieuw op.
Zie je ooit alleen Access denied, dan zegt de melding niet welk recht ontbreekt. Praktisch is het om te noteren waar je op dat moment mee bezig was en degene die de rechten beheert te vragen het na te kijken.

Mijlpalen: wat elke mijlpaal vraagt voordat hij als bereikt telt
Het contract van Estudio Ribera heeft een eerste mijlpaal, «Analyse». Marta markeert hem als bereikt en de module antwoordt met Milestone '%s' requires a deliverable attachment before it can be marked as reached. (op het scherm staat de naam van de mijlpaal op de plek van %s). Die mijlpaal vraagt om een bijgevoegd opleveringsdocument voordat hij gesloten kan worden: Marta voegt het document toe en markeert hem opnieuw.
De tweede poging geeft Milestone '%s' requires internal approval before it can be marked as reached. Nu ontbreekt de interne goedkeuring van de mijlpaal. Zolang die er niet is, kan hij niet als bereikt worden gemarkeerd.
Als de interne goedkeuring rond is, verschijnt Milestone '%s' requires client acceptance before it can be marked as reached. Current state: %s. De acceptatie door de klant ontbreekt, en de melding vermeldt ook de huidige status (Current state).
Als Marta die goedkeuring bij de klant wil aanvragen, stuit ze op The customer of milestone '%s' has no portal access: grant it first, the approval page needs a login. De goedkeuringspagina vereist dat de klant inlogt, en die klant heeft geen portaaltoegang. Geef eerst portaaltoegang en herhaal dan de actie.
De laatste melding over mijlpalen werkt andersom: Milestone '%s' does not wait for a client approval. Die verschijnt als iemand een goedkeuring van de klant probeert vast te leggen op een mijlpaal die daar niet op wacht. Controleer of je de verkeerde mijlpaal hebt gekozen.

Wijzigingsopdrachten: de status bepaalt wat je kunt doen
Halverwege het project vraagt de klant om een grotere scope en Marta maakt een wijzigingsopdracht aan. Ze dient hem in en doet dat ongemerkt nog een keer: Only draft change orders can be submitted. Alleen opdrachten in concept kunnen worden ingediend, en deze was dat niet meer.
Daarna probeert een collega hem goed te keuren en krijgt User %(name)s has no pending approval step on this change order. De melding noemt de naam van de gebruiker en zegt dat die geen openstaande goedkeuringsstap heeft op deze opdracht. De goedkeuring moet komen van degene die die stap wel open heeft staan.
Tot slot wil Marta de opdracht doorvoeren voordat de klant heeft gereageerd: Only client-accepted change orders can be implemented. Alleen opdrachten die de klant al heeft geaccepteerd, kunnen worden doorgevoerd, dus ze moet op die acceptatie wachten.
Drie logs die je niet kunt wijzigen
Marta ziet een regel in een van de logs van de module en probeert die te corrigeren. Er zijn drie meldingen van dit type:
NTE audit log is immutable.Portal action log is immutable.Rate override log is immutable.
De melding zegt het al: die log is onveranderlijk. Het is geen rechtenprobleem dat je met een andere rol oplost.
Contracten en exports: de statussen die de module controleert
Aan het eind van het jaar wil Marta het ene contract beëindigen en een ander archiveren. Het eerste geeft Only active or suspended contracts can be terminated.: alleen actieve of opgeschorte contracten kunnen worden beëindigd. Het tweede Only terminated or suspended contracts can be archived.: alleen beëindigde of opgeschorte contracten kunnen worden gearchiveerd. Het contract dat ze wilde archiveren was nog actief, dus ze beëindigt het eerst en archiveert het daarna.
Er is nog één melding: Export can only be generated for pending or processing requests. De export wordt alleen gegenereerd voor verzoeken die openstaan of in behandeling zijn. Staat het verzoek niet in een van die statussen, dan genereert de module hem niet.
Wat je leert van het geval Estudio Ribera
Elk struikelblok van Marta was op te lossen door het eind van de melding te lezen: daar staat de ontbrekende rol, de vereiste van de mijlpaal of de benodigde status. Dit is het overzicht:
| Melding | Wanneer verschijnt hij | Wat doe je |
|---|---|---|
Only Operations Directors can import rate cards | Bij het importeren van rate cards zonder die rol | Laat een Operations Director het doen of vraag de rol aan |
Only PSA Operations users can override billing rates. | Bij het wijzigen van een factuurtarief zonder die rol | Laat een gebruiker van PSA Operations het doen |
A reason is mandatory for rate overrides. | Bij het wijzigen van een tarief zonder reden | Vul de reden in |
Milestone '%s' requires a deliverable attachment... | Bij het markeren van een mijlpaal als bereikt zonder oplevering | Voeg de oplevering toe |
Milestone '%s' requires internal approval... | Bij het markeren van een mijlpaal als bereikt zonder interne goedkeuring | Regel de interne goedkeuring |
Milestone '%s' requires client acceptance... | Bij het markeren van een mijlpaal als bereikt zonder acceptatie door de klant | Wacht op de acceptatie; de melding toont de huidige status |
The customer of milestone '%s' has no portal access... | De klant van de mijlpaal heeft geen portaaltoegang | Geef portaaltoegang en herhaal |
Only draft change orders can be submitted. | Bij het indienen van een opdracht die niet in concept staat | Controleer de status van de opdracht |
Only client-accepted change orders can be implemented. | Bij het doorvoeren van een opdracht zonder acceptatie door de klant | Wacht tot de klant hem accepteert |
Only active or suspended contracts can be terminated. | Bij het beëindigen van een contract in een andere status | Controleer de status van het contract |
Only terminated or suspended contracts can be archived. | Bij het archiveren van een actief contract | Beëindig het eerst |
Wil je rollen, mijlpalen en contracten goed voorbereiden voordat deze meldingen opduiken, kijk dan bij het in gebruik nemen van de module.
Hoe FlexigoTech je helpt
Bij FlexigoTech implementeren we Odoo 17, 18, 19 en 20 en ontwikkelen we connectoren en integraties op maat, dus we kunnen je helpen rollen te verdelen, mijlpalen voor te bereiden en de meldingen te bekijken die je in jouw situatie krijgt. De module staat in Odoo Apps voor 17, 18 en 19, voor € 9 per Odoo-versie, eenmalige betaling, excl. btw; de lokale dienst van FlexigoTech Cloud kost € 29 per maand of € 290 per jaar excl. btw (Pro: € 58 per maand of € 580 per jaar). Alle details vind je op de pagina van de module en op de pagina in Odoo Apps.
Lees verder
Gecontroleerd in de broncode van de module (versie 19.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): controllers/portal.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): controllers/rate_card_import.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/account_analytic_line_ext.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/project_milestone_ext.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/psa_change_order.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/psa_dsar_request.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/psa_nte_audit_log.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/psa_portal_action_log.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/psa_rate_override_log.py
- Broncode van de module: flexigo_psa_premium 19.0 (9670343f): models/psa_retainer_contract.py
- apps.odoo.com/apps/modules/19.0/flexigo_psa_premium
- apps.odoo.com/apps/modules/17.0/flexigo_psa_premium
- apps.odoo.com/apps/modules/18.0/flexigo_psa_premium
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
