Fikcyjna firma doradcza wdraża PSA
Przykład Przypadek poglądowy: firma i jej dane są zmyślone, żeby pokazać przebieg.
Estudio Ribera to fikcyjna firma doradcza, która właśnie zainstalowała Professional Services Automation (PSA) for Odoo. Marta, kierowniczka operacyjna, chce wczytać stawki, przygotować umowę z kamieniami milowymi i zacząć pracę dla klienta. Po drodze trafia na sporą część komunikatów błędów modułu. Omawiamy je w kolejności, w jakiej się jej pojawiają: dosłowny tekst, co oznacza i co Marta robi, żeby iść dalej.
Na początek Marta otwiera ustawienia modułu. Tam nie pojawia się żaden błąd.

WIP Account.Jeśli chcesz przejrzeć, jakie menu dodaje moduł i przez co przechodzi każdy rekord, zajrzyj do artykułu jak PSA działa od środka.
Stawki: kto może je importować, a kto zmieniać
Najpierw Marta próbuje zaimportować cennik stawek firmy. Moduł zatrzymuje ją komunikatem Only Operations Directors can import rate cards. Sprawa jest jasna: import rate cards należy do roli Operations Directors, a użytkownik Marty jej nie ma. Są dwa wyjścia: import wykonuje ktoś z tą rolą albo osoba zarządzająca użytkownikami w Odoo nadaje jej tę rolę, jeśli jest to uzasadnione.

Po wczytaniu stawek Marta chce zastosować dla jednego klienta inną stawkę. Dostaje Only PSA Operations users can override billing rates.: zmiana stawek rozliczeniowych jest zarezerwowana dla użytkowników PSA Operations. Współpracownik z tą rolą próbuje, zostawia pusty powód i dostaje A reason is mandatory for rate overrides. Rozwiązanie: wpisać powód zmiany i zapisać ponownie.
Jeśli kiedyś zobaczysz samo Access denied, komunikat nie mówi, którego uprawnienia brakuje. W praktyce warto zanotować, co wtedy robiłeś, i poprosić osobę zarządzającą uprawnieniami o sprawdzenie.

Kamienie milowe: czego wymaga każdy z nich, zanim zostanie osiągnięty
Umowa Estudio Ribera ma pierwszy kamień milowy, «Analiza». Marta oznacza go jako osiągnięty, a moduł odpowiada Milestone '%s' requires a deliverable attachment before it can be marked as reached. (na ekranie zamiast %s widać nazwę kamienia milowego). Ten kamień milowy wymaga załączonego produktu prac przed zamknięciem: Marta dołącza dokument i oznacza go ponownie.
Druga próba daje Milestone '%s' requires internal approval before it can be marked as reached. Teraz brakuje akceptacji wewnętrznej. Dopóki jej nie ma, kamienia milowego nie można oznaczyć jako osiągniętego.
Po akceptacji wewnętrznej pojawia się Milestone '%s' requires client acceptance before it can be marked as reached. Current state: %s. Brakuje akceptacji klienta, a komunikat podaje bieżący stan (Current state).
Gdy Marta próbuje poprosić klienta o tę akceptację, trafia na The customer of milestone '%s' has no portal access: grant it first, the approval page needs a login. Strona akceptacji wymaga zalogowania się klienta, a ten klient nie ma dostępu do portalu. Najpierw trzeba nadać mu dostęp do portalu i powtórzyć czynność.
Ostatni komunikat dotyczący kamieni milowych działa odwrotnie: Milestone '%s' does not wait for a client approval. Pojawia się przy próbie zarejestrowania akceptacji klienta dla kamienia milowego, który jej nie oczekuje. Sprawdź, czy nie wybrałeś złego kamienia milowego.

Zlecenia zmiany: o tym, co możesz zrobić, decyduje stan
W połowie projektu klient prosi o rozszerzenie zakresu i Marta tworzy zlecenie zmiany. Wysyła je, a potem nieświadomie wysyła ponownie: Only draft change orders can be submitted. Wysłać można tylko zlecenia w wersji roboczej, a to już nią nie było.
Następnie współpracownik próbuje je zaakceptować i dostaje User %(name)s has no pending approval step on this change order. Komunikat podaje nazwę użytkownika i informuje, że nie ma on żadnego oczekującego kroku akceptacji w tym zleceniu. Zaakceptować musi osoba, która ma ten krok oczekujący.
Na koniec Marta chce wprowadzić zlecenie, zanim klient odpowie: Only client-accepted change orders can be implemented. Wprowadzić można tylko zlecenia zaakceptowane już przez klienta, więc trzeba poczekać na tę akceptację.
Trzy logi, których nie można zmieniać
Marta zauważa wpis w jednym z logów modułu i próbuje go poprawić. Są trzy komunikaty tego typu:
NTE audit log is immutable.Portal action log is immutable.Rate override log is immutable.
Komunikat mówi wszystko: ten log jest niezmienny. To nie problem z uprawnieniami, który rozwiąże inna rola.
Umowy i eksporty: stany, które sprawdza moduł
Na koniec roku Marta chce rozwiązać jedną umowę i zarchiwizować drugą. Pierwsza daje Only active or suspended contracts can be terminated.: rozwiązać można tylko umowy aktywne lub zawieszone. Druga Only terminated or suspended contracts can be archived.: zarchiwizować można tylko rozwiązane lub zawieszone. Umowa, którą chciała zarchiwizować, była nadal aktywna, więc najpierw ją rozwiązuje, a potem archiwizuje.
Zostaje jeszcze jeden komunikat: Export can only be generated for pending or processing requests. Eksport generuje się tylko dla wniosków oczekujących lub w trakcie przetwarzania. Jeśli wniosek nie jest w jednym z tych stanów, moduł go nie wygeneruje.
Czego uczy przypadek Estudio Ribera
Każde potknięcie Marty rozwiązało się po przeczytaniu końcówki komunikatu: tam jest brakująca rola, wymóg kamienia milowego lub wymagany stan. Oto podsumowanie:
| Komunikat | Kiedy się pojawia | Co zrobić |
|---|---|---|
Only Operations Directors can import rate cards | Przy imporcie rate cards bez tej roli | Zlecić to Operations Director lub poprosić o rolę |
Only PSA Operations users can override billing rates. | Przy zmianie stawki rozliczeniowej bez tej roli | Zlecić to użytkownikowi PSA Operations |
A reason is mandatory for rate overrides. | Przy zmianie stawki bez powodu | Wpisać powód |
Milestone '%s' requires a deliverable attachment... | Przy oznaczaniu kamienia milowego bez produktu prac | Dołączyć produkt prac |
Milestone '%s' requires internal approval... | Przy oznaczaniu kamienia milowego bez akceptacji wewnętrznej | Uzyskać akceptację wewnętrzną |
Milestone '%s' requires client acceptance... | Przy oznaczaniu kamienia milowego bez akceptacji klienta | Poczekać na akceptację; komunikat podaje bieżący stan |
The customer of milestone '%s' has no portal access... | Klient kamienia milowego nie ma dostępu do portalu | Nadać dostęp do portalu i powtórzyć |
Only draft change orders can be submitted. | Przy wysyłaniu zlecenia, które nie jest w wersji roboczej | Sprawdzić stan zlecenia |
Only client-accepted change orders can be implemented. | Przy wprowadzaniu zlecenia bez akceptacji klienta | Poczekać, aż klient je zaakceptuje |
Only active or suspended contracts can be terminated. | Przy rozwiązywaniu umowy w innym stanie | Sprawdzić stan umowy |
Only terminated or suspended contracts can be archived. | Przy archiwizacji aktywnej umowy | Najpierw ją rozwiązać |
Aby przygotować role, kamienie milowe i umowy, zanim pojawią się te komunikaty, zajrzyj do artykułu o wdrożeniu modułu.
Jak pomoże Ci FlexigoTech
W FlexigoTech wdrażamy Odoo 17, 18, 19 i 20 oraz tworzymy konektory i integracje na zamówienie, więc możemy pomóc Ci rozdzielić role, przygotować kamienie milowe i przeanalizować komunikaty, które pojawiają się w Twojej instalacji. Moduł jest dostępny w Odoo Apps dla wersji 17, 18 i 19 w cenie 9 € za wersję Odoo, jednorazowo, netto (bez VAT); lokalna usługa FlexigoTech Cloud kosztuje 29 €/mies. lub 290 €/rok netto (bez VAT) (Pro: 58 €/mies. lub 580 €/rok). Wszystkie szczegóły znajdziesz na stronie modułu i na jego karcie w Odoo Apps.
Czytaj dalej
Sprawdzone w kodzie źródłowym modułu (wersja 19.0) i w podlinkowanych źródłach
Źródła
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): controllers/portal.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): controllers/rate_card_import.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): models/account_analytic_line_ext.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): models/project_milestone_ext.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): models/psa_change_order.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): models/psa_dsar_request.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): models/psa_nte_audit_log.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): models/psa_portal_action_log.py
- Kod modułu: flexigo_psa_premium 19.0 (9670343f): models/psa_rate_override_log.py
- Kod modułu: 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
