Salta al contingut principal
Professional Services Automation (PSA)

Errors de PSA for Odoo: un cas d'exemple, missatge a missatge

Tret del genèric Access denied, cada missatge d'error de Professional Services Automation (PSA) for Odoo diu què falta: un perfil (com Operations Directors per importar tarifes), un requisit de la fita (adjunt, aprovació interna o acceptació del client) o un estat concret del contracte, l'ordre de canvi o la sol·licitud. Es resol complint aquesta condició, no tornant-ho a provar. Aquí sota ho veus amb una consultora inventada que recorre el flux i es troba cada missatge.

FlexigoTech · Responsable: Víctor Gómez · Actualitzat el 4 de novembre de 2026

L'essencial

Versions
Odoo 17, 18 i 19
Comprovat
al codi del mòdul, versió 19.0 · a les fonts enllaçades al final
Lectura
7 min

Una consultora inventada que posa en marxa PSA

Exemple Cas il·lustratiu: l'empresa i les seves dades són inventades per explicar el flux.

Estudi Ribera és una consultora inventada que acaba d'instal·lar Professional Services Automation (PSA) for Odoo. La Marta, la seva responsable d'operacions, vol carregar les tarifes, deixar a punt un contracte amb fites i començar a treballar amb un client. Pel camí li surten bona part dels missatges d'error del mòdul. Els repassem en l'ordre en què li apareixen: el text literal, què vol dir i què fa per continuar.

Abans de res, la Marta obre la configuració del mòdul. Allà no li surt cap error.

Configuració d'Odoo a la secció PSA amb el camp WIP Account buit i la casella de configuració sense marcar
La configuració de PSA tal com la troba la Marta, amb WIP Account buit.

Si vols repassar quins menús afegeix el mòdul i per on passa cada registre, ho tens a com funciona PSA per dins.

Tarifes: qui les pot importar i qui les pot canviar

El primer que intenta la Marta és importar la tarifa de la consultora. El mòdul l'atura amb Only Operations Directors can import rate cards. El missatge és clar: importar rate cards és cosa del perfil Operations Directors, i l'usuari de la Marta no el té. Té dues sortides: que la importi algú amb aquest perfil o que qui administra els usuaris del seu Odoo l'hi assigni, si li correspon.

Llista de Rate Cards del mòdul PSA amb un únic registre actiu, Standard Rate Card 2024 (Demo), en EUR
La llista de Rate Cards, amb dades de demostració: només hi apareix Standard Rate Card 2024 (Demo).

Amb la tarifa carregada, la Marta vol aplicar a un client una tarifa diferent. Li surt Only PSA Operations users can override billing rates.: canviar tarifes de facturació està reservat als usuaris de PSA Operations. Un company amb aquest perfil ho prova, deixa el motiu en blanc i rep A reason is mandatory for rate overrides. La solució és escriure el motiu del canvi i tornar a desar.

Si en algun moment veus Access denied sense res més, el missatge no diu quin permís falta. El més pràctic és apuntar què estaves fent en aquell moment i demanar a qui administra els permisos que ho revisi.

Llista Utilization del mòdul PSA amb columnes de data, empleat, projecte, hores, tarifa, import facturable, estat WIP i aprovació del client
La llista Utilization, amb la tarifa i l'import facturable en columnes.

Fites: què demana cadascuna abans de donar-se per assolida

El contracte d'Estudi Ribera té una primera fita, «Anàlisi». La Marta la marca com a assolida i el mòdul respon amb Milestone '%s' requires a deliverable attachment before it can be marked as reached. (a la pantalla, en lloc de %s hi surt el nom de la fita). Aquesta fita demana un lliurable adjunt abans de tancar-se: la Marta adjunta el document i la torna a marcar.

El segon intent dona Milestone '%s' requires internal approval before it can be marked as reached. Ara el que falta és l'aprovació interna de la fita. Fins que no la té, no es pot marcar com a assolida.

Un cop feta l'aprovació interna, surt Milestone '%s' requires client acceptance before it can be marked as reached. Current state: %s. Falta l'acceptació del client, i el missatge hi afegeix l'estat actual (Current state).

Quan la Marta intenta demanar aquesta aprovació al client, es troba amb The customer of milestone '%s' has no portal access: grant it first, the approval page needs a login. La pàgina d'aprovació necessita que el client iniciï sessió i aquest client no té accés al portal. Primer cal donar-li accés al portal i després repetir l'acció.

L'últim missatge de fites va al revés: Milestone '%s' does not wait for a client approval. Surt quan s'intenta registrar una aprovació del client en una fita que no l'espera. Revisa si t'has equivocat de fita.

Recorregut per la llista Milestones Roll-up, les categories no facturables, la configuració de PSA i la llista Utilization
Les pantalles del mòdul que recorre la Marta: fites amb la casella d'assolida, categories no facturables, configuració i Utilization.

Ordres de canvi: l'estat decideix què es pot fer

A mig projecte, el client demana ampliar l'abast i la Marta crea una ordre de canvi. L'envia i, sense adonar-se'n, la torna a enviar: Only draft change orders can be submitted. Només s'envien les ordres en esborrany, i aquesta ja no ho era.

Després, un company intenta aprovar-la i rep User %(name)s has no pending approval step on this change order. El missatge indica el nom de l'usuari i diu que no té cap pas d'aprovació pendent en aquesta ordre. L'ha d'aprovar qui sí que tingui aquest pas pendent.

Finalment, la Marta vol aplicar l'ordre abans que el client contesti: Only client-accepted change orders can be implemented. Només s'implementen les ordres que el client ja ha acceptat, així que toca esperar aquesta acceptació.

Tres logs que no admeten canvis

La Marta veu una entrada en un dels logs del mòdul i intenta corregir-la. Hi ha tres missatges d'aquest tipus:

  • NTE audit log is immutable.
  • Portal action log is immutable.
  • Rate override log is immutable.

El missatge ho diu: aquest log és immutable. No és una fallada de permisos que es resolgui amb un altre perfil.

Contractes i exportacions: els estats que mira el mòdul

En tancar l'any, la Marta vol finalitzar un contracte i arxivar-ne un altre. El primer li dona Only active or suspended contracts can be terminated.: només es finalitzen contractes actius o suspesos. El segon, Only terminated or suspended contracts can be archived.: només s'arxiven els finalitzats o suspesos. El contracte que volia arxivar encara era actiu, així que primer el finalitza i després l'arxiva.

Queda un missatge més: Export can only be generated for pending or processing requests. L'exportació només es genera per a sol·licituds pendents o en procés. Si la sol·licitud no està en un d'aquests estats, el mòdul no la genera.

Què n'aprenem del cas d'Estudi Ribera

Cada entrebanc de la Marta es va resoldre llegint el final del missatge: allà hi ha el perfil que falta, el requisit de la fita o l'estat necessari. Aquest és el resum:

MissatgeQuan surtQuè cal fer
Only Operations Directors can import rate cardsEn importar rate cards sense aquest perfilQue ho faci un Operations Director o demanar el perfil
Only PSA Operations users can override billing rates.En canviar una tarifa de facturació sense aquest perfilQue ho faci un usuari de PSA Operations
A reason is mandatory for rate overrides.En canviar una tarifa sense motiuEscriure el motiu
Milestone '%s' requires a deliverable attachment...En marcar com a assolida una fita sense lliurableAdjuntar el lliurable
Milestone '%s' requires internal approval...En marcar com a assolida una fita sense aprovació internaAconseguir l'aprovació interna
Milestone '%s' requires client acceptance...En marcar com a assolida una fita sense acceptació del clientEsperar l'acceptació; el missatge dona l'estat actual
The customer of milestone '%s' has no portal access...El client de la fita no té accés al portalDonar-li accés al portal i repetir
Only draft change orders can be submitted.En enviar una ordre que no està en esborranyComprovar l'estat de l'ordre
Only client-accepted change orders can be implemented.En implementar una ordre sense acceptació del clientEsperar que el client l'accepti
Only active or suspended contracts can be terminated.En finalitzar un contracte en un altre estatRevisar l'estat del contracte
Only terminated or suspended contracts can be archived.En arxivar un contracte actiuFinalitzar-lo abans

Per deixar ben preparats els perfils, les fites i els contractes abans que surtin aquests missatges, mira la posada en marxa del mòdul.

Com t'ajuda FlexigoTech

A FlexigoTech implantem Odoo 17, 18, 19 i 20 i desenvolupem connectors i integracions a mida, així que et podem ajudar a repartir perfils, preparar fites i revisar els missatges que et surtin en el teu cas. El mòdul és a Odoo Apps per a 17, 18 i 19, a 9 € per versió d'Odoo, pagament únic i sense IVA; el servei local de FlexigoTech Cloud costa 29 €/mes o 290 €/any sense IVA (Pro: 58 €/mes o 580 €/any). Tens tots els detalls a la pàgina del mòdul i a la seva fitxa d'Odoo Apps.

Continua llegint

Com funciona Professional Services Automation (PSA) for Odoo per dinsMenús, tasques programades i servei extern de Professional Services Automation (PSA) for Odoo, explicats terme a terme per a qui ja fa servir Odoo.Posada en marxa de PSA for Odoo: configuració, camps del projecte i la primera setmanaGuia per posar en marxa Professional Services Automation (PSA) a Odoo 17, 18 i 19: configuració, camps del projecte i què revisar la primera setmana.Professional Services Automation (PSA) for Odoo: com saber si encaixa a la teva empresaQuè cobreix i què no Professional Services Automation (PSA) for Odoo segons la fitxa, què cal comprovar abans d'instal·lar-lo i en quines versions d'Odoo està publicat.
Comprovat al codi del mòdul (versió 19.0) i a les fonts enllaçades

Fonts