Aplikacja do obsługi zleceń B2B: role, uprawnienia i wyceny
Jak zaprojektować aplikację do obsługi zleceń B2B na przykładzie Service Quotes. Opisujemy role, przydział pracowników i wycenę z materiałów i czasu pracy.
Aplikacja do obsługi zleceń B2B musi przede wszystkim jasno rozdzielić, kto co robi. Klient zgłasza zlecenie i płaci. Menedżer przydziela ludzi i pilnuje rozliczeń, a pracownik wykonuje usługę i zapisuje jej przebieg. Z tego podziału wynikają uprawnienia, statusy zlecenia i sposób liczenia wyceny.
Pokazujemy to na przykładzie Service Quotes. To aplikacja, którą zbudowaliśmy dla firmy usługowej obsługującej klientów na kontraktach B2B. Opis funkcji znajdziesz w realizacji Service Quotes. W tym wpisie skupiamy się na decyzjach projektowych, które trzeba podjąć w każdym systemie tego typu.
Jakie role potrzebuje system zleceń B2B?
W Service Quotes są trzy rodzaje kont i każde ma inne uprawnienia:
| Rola | Co robi w systemie | Czego nie widzi albo nie może zmienić |
|---|---|---|
| Klient | Tworzy zlecenie wykonania usługi pod wskazanym adresem, przegląda swoje zlecenia, wyceny i płatności, płaci online | Zleceń innych klientów, danych pracowników, ustawień firmy |
| Pracownik | Realizuje zlecenia, do których przydzielił go menedżer, rejestruje przebieg pracy: materiały, ilość, cenę, czas i stawkę za typ pracy | Zarządzania kontami i klientami, listy wycen i płatności |
| Menedżer | Zarządza kontami, pracownikami, ich specjalizacjami i klientami, przydziela pracowników do zleceń, przegląda wyceny i płatności | Brak ograniczeń (pełny dostęp w ramach firmy) |
Na etapie projektu pierwsze pytanie brzmi: czy wystarczą role, czy potrzebne są uprawnienia nadawane każdej osobie osobno. Przy trzech wyraźnie różnych grupach użytkowników role łatwiej zrozumieć i przetestować. Łatwiej też wyjaśnić je klientowi. Uprawnienia „per osoba” warto rozważać dopiero wtedy, gdy w jednej roli pojawiają się wyjątki, np. menedżer, który nie powinien widzieć płatności.
Drugie pytanie: czy klient B2B to jedna osoba, czy firma z wieloma pracownikami. Jeśli po stronie klienta zlecenia zgłasza kilka osób, trzeba zdecydować, czy widzą nawzajem swoje zlecenia. Trzeba też ustalić, kto u klienta może płacić. Tę decyzję najlepiej podjąć przed budową bazy danych, bo zmiana później dotyka niemal każdego ekranu.
Jak przydzielać pracowników do zleceń?
W Service Quotes menedżer czyta opis zlecenia i przydziela do niego pracowników, którzy mają wymagane specjalizacje. Specjalizacje są osobnym słownikiem, którym zarządza menedżer.
Takie rozwiązanie ma dwie zalety. Po pierwsze, menedżer nie musi pamiętać, kto ma jakie uprawnienia zawodowe. System pokazuje tylko pasujące osoby. Po drugie, słownik specjalizacji można później wykorzystać w raportach (np. które usługi są najczęściej zamawiane).
W Service Quotes decyzję o przydziale podejmuje menedżer. Automatyczny przydział brzmi atrakcyjnie, ale wymaga danych, których na starcie zwykle nie ma: dostępności pracowników, czasu dojazdu, priorytetów klientów. Dobrą praktyką jest zacząć od ręcznego przydziału z podpowiedziami. Automatyzację warto dodać, gdy wiadomo, według jakich reguł menedżer faktycznie decyduje.
Jak system liczy wycenę?
W Service Quotes wycena powstaje dopiero po wykonaniu zlecenia. W trakcie pracy pracownik rejestruje w systemie wykorzystane materiały, ich ilość i cenę. Zapisuje też czas pracy i stawkę godzinową za konkretny typ pracy. Po zakończeniu zlecenia system sam podlicza koszty pracy i materiałów i tworzy dla klienta szczegółową wycenę. Na jej podstawie klient płaci online, a płatność zamyka proces.
Ten model pasuje do usług, w których zakres pracy wychodzi dopiero na miejscu. Zasady rozliczeń (stawki za typy prac) są wtedy uzgodnione wcześniej w kontrakcie. Klient nie akceptuje oferty przed każdym zleceniem. Dostaje rozliczenie zgodne z umową.
Przy projektowaniu wyceny trzeba odpowiedzieć na kilka pytań:
- Skąd pochodzą stawki? Czy pracownik wpisuje je ręcznie, wybiera z cennika, czy cennik jest inny dla każdego klienta B2B?
- Kto może poprawić pozycje? Pomyłka pracownika w ilości materiału nie powinna trafić do klienta bez kontroli.
- Co się dzieje po zmianie ceny materiału? Wycena wystawiona wcześniej musi pokazywać cenę z dnia wykonania, nawet gdy cennik już się zmienił. Dlatego cenę warto zapisywać przy pozycji wyceny. Samo odwołanie do cennika nie wystarczy.
- Jak wygląda wycena dla klienta? Klient B2B zwykle przekazuje ją dalej (do księgowości, do przełożonego), więc musi być czytelna bez logowania się do systemu.
Statusy zlecenia
Statusy zlecenia to umowa między rolami. Każdy status mówi, kto teraz odpowiada za kolejny krok. Przykładowy układ dla procesu takiego jak w Service Quotes:
| Status | Kto odpowiada za kolejny krok |
|---|---|
| Zgłoszone | Menedżer: zapoznaje się z opisem i przydziela pracowników |
| Przydzielone | Pracownik: jedzie pod wskazany adres i rozpoczyna pracę |
| W realizacji | Pracownik: rejestruje materiały i czas pracy |
| Wycenione | Klient: przegląda wycenę i płaci |
| Opłacone | Nikt, zlecenie jest zamknięte |
Każde przejście między statusami warto zapisywać z datą i autorem. W sporze z klientem B2B historia zlecenia („kto, co i kiedy zmienił”) jest często ważniejsza niż sam stan końcowy.
Płatności online w aplikacji B2B
Klient Service Quotes płaci online za wycenę, a lista płatności jest widoczna dla klienta i menedżera. Przy płatnościach w systemie B2B trzeba kilka spraw ustalić z księgowością firmy. Co jest dokumentem rozliczeniowym: wycena, faktura czy oba? Jak oznaczyć płatność częściową lub zwrot? Czy płatność ma automatycznie zmieniać status zlecenia?
Status powinien zmieniać się dopiero po potwierdzeniu płatności przez operatora. Samo kliknięcie przycisku przez klienta nie wystarcza. Szerzej o płatnościach i subskrypcjach piszemy we wpisie płatności i subskrypcje w aplikacji SaaS. Przykładem jest tam platforma Offer Exchange.
Technologie w Service Quotes
Aplikacja działa na Next.js i React z TypeScript po stronie interfejsu, .NET Core po stronie serwera i bazie PostgreSQL. Interfejs korzysta z Tailwind CSS, a całość uruchamiamy w kontenerach Docker za serwerem Nginx. Ten sam zestaw wykorzystaliśmy w platformie Offer Exchange.
Interfejs jest oddzielony od API (warstwy, przez którą interfejs komunikuje się z serwerem). To ma praktyczną zaletę: logika rozliczeń jest w jednym module na serwerze. Kolejny interfejs, np. aplikacja dla pracowników w terenie, nie wymaga jej przepisywania.
Kiedy własny system zleceń ma sens
Gotowe programy do obsługi zleceń dobrze sprawdzają się w typowych procesach. Własny system ma sens, gdy rozliczenia wynikają z indywidualnych kontraktów B2B. Także wtedy, gdy klient ma sam zgłaszać zlecenia i płacić w tej samej aplikacji. Trzeci powód to przydział zależny od specjalizacji, których gotowy program nie przewiduje. Szersze porównanie znajdziesz we wpisie oprogramowanie dedykowane czy gotowe. Jak budujemy takie systemy, opisujemy na stronie aplikacji webowych dla firm.
Jeśli Twoja firma obsługuje zlecenia mailem i arkuszem, zacznij od przygotowania do pierwszej rozmowy o nowym systemie. Potem napisz do nas. Pomożemy ustalić role, statusy i zasady wyceny, zanim powstanie pierwszy ekran.