DEVCRAFTED.PL
Case study

System CRM w Laravelu: płatności, prowizje agentów i kody rabatowe w jednym miejscu

System CRM do rozliczeń płatności, prowizji agentów i kodów rabatowych

Projekt objęty NDA

O projekcie

CRM, który na bazie istniejącego systemu rezerwacji rozlicza raty, wyciągi bankowe, zwroty i nadpłaty, sam liczy prowizje agentów i prowadzi kody rabatowe. Klienci i agenci mają własne panele, a powiadomienia e-mail wysyła kolejka z ponowieniami.

Wyzwanie

Firma sprzedaje swoje usługi bezpośrednio i przez sieć agentów, a rezerwacje i harmonogramy rat prowadzi w istniejącym systemie rezerwacyjnym. Celem był system CRM działający na tej samej bazie danych, bez przepisywania systemu rezerwacji: rozliczenie każdej wpłaty z konkretną ratą, obsługa zwrotów i nadpłat, przypomnienia o płatnościach, a w kolejnych etapach własne panele dla klientów i agentów – z podglądem rezerwacji, kodami rabatowymi i prowizjami liczonymi automatycznie.

Moja rola

  • Backend Developer
  • Frontend Developer
  • Architektura aplikacji
  • Wdrożenie produkcyjne

Projekt objęty NDA: bez nazwy klienta, zrzutów ekranu i kodu.

Zakres funkcjonalny

  • Rozliczenia płatności
    Wpłaty i zwroty przypisane do rat z harmonogramu, saldo, dziewięć statusów płatności i historia zmian.
  • Import wyciągów bankowych
    Import transakcji z pliku wyciągu z rozpoznaniem numerów rezerwacji, pominięciem duplikatów i podglądem przed zapisem.
  • System prowizyjny
    Automatyczne przeliczanie prowizji agentów według planów prowizyjnych, faktury agentów oraz statusy weryfikacji i wypłaty.
  • Panel agenta
    Rejestracja firmy z danymi z GUS, oddziały, klienci agenta i prowizje z dodawaniem faktur.
  • Panel klienta
    Podgląd rezerwacji, harmonogramu rat i wpłat, dane do przelewu oraz kody rabatowe klienta.
  • Kody rabatowe
    Kody procentowe lub kwotowe, jednorazowe albo z limitem użyć, z okresem ważności i przypomnieniem o wygaśnięciu.
  • Konta i bezpieczeństwo
    Weryfikacja kont, tokeny API, role, rejestr urządzeń logowania i czasowy link do logowania na konto klienta.

Rozwiązanie

Rozliczanie wpłat względem harmonogramu rat

Każda rezerwacja ma harmonogram rat z historią wersji. System przypisuje wpłaty i zwroty do konkretnej raty, liczy saldo i nadaje jeden z dziewięciu statusów płatności – od opłaconej i częściowo opłaconej, przez zaległą, po oczekującą na zwrot i zwróconą. Lista płatności ma filtry, podsumowania kwot, historię zmian i wysyłkę wiadomości e-mail do klienta.

Import wyciągów bankowych z dopasowaniem do rezerwacji

Transakcje trafiają do systemu z pliku wyciągu bankowego. Import pomija operacje już zapisane, rozpoznaje numery rezerwacji w tytule przelewu, dzieli wpłatę obejmującą kilka rezerwacji i odróżnia przelewy od płatności przez Stripe. Przed zapisem zespół widzi podgląd i może poprawić przypisanie do rezerwacji, uczestnika i raty.

Nadpłaty, zwroty i korekty

Gdy wpłata przekracza kwotę raty, system pokazuje różnicę i daje wybór: zostawić nadwyżkę jako saldo, zwrócić ją, przenieść na inną ratę albo wstrzymać zapis. O nadpłacie biuro dostaje e-mail z podsumowaniem. Zwroty, korekty i rezerwacje anulowane z kosztami lub bez mają osobne statusy.

System prowizyjny dla agentów

Prowizje przeliczają się automatycznie co kilka minut: stawka za uczestnika, osobna stawka przy rezygnacji oraz plany prowizyjne z różnymi stawkami. Kwot ustalonych ręcznie system nie nadpisuje. Agent dodaje fakturę w panelu, biuro ją weryfikuje, a wypłata lub potrącenie prowizji zmienia jej status i wysyła powiadomienie do agenta.

Panel agenta i panel klienta

Agent rejestruje firmę z danymi pobranymi z GUS po numerze NIP, a konto przechodzi weryfikację, umowę i aktywację. W panelu widzi oddziały, swoich klientów i prowizje. Klient sprawdza rezerwacje, harmonogram rat, wpłaty, dane do przelewu i kody rabatowe. Obsługa może wejść na konto klienta przez jednorazowy link ważny kilka minut.

Kody rabatowe i powiadomienia e-mail

Kody procentowe lub kwotowe, jednorazowe albo z limitem użyć, z minimalną wartością rezerwacji i okresem ważności, przypisywane klientom lub agentom. System wysyła kod e-mailem i przypomina o jego wygaśnięciu. Przypomnienia o ratach mają reguły (dni przed lub po terminie, treść ze zmiennymi), a wysyłka idzie przez kolejkę z ponowieniami i historią.

Architektura

  • Modularny monolit w Laravelu: osobne moduły płatności, panelu agenta, panelu klienta, powiadomień, plików i integracji.
  • CRM korzysta z bazy istniejącego systemu rezerwacyjnego – modele na jego tabelach i relacje po kluczach złożonych – a własne dane trzyma w osobnych tabelach, bez migracji danych.
  • Serwisy za interfejsami, repozytoria, walidacja w Form Requests i stałe domenowe dla statusów płatności, prowizji i kont.
  • Trzy panele w jednej aplikacji, rozdzielone subdomenami: administracyjny z dostępem przez token sesji istniejącego systemu oraz panele klienta i agenta z tokenami API, rolami i rejestrem urządzeń.
  • Zadania cykliczne w schedulerze (prowizje, powiadomienia, rabaty, sesje) i własna kolejka wiadomości e-mail w bazie z ponowieniami – działa bez stałych workerów na serwerze.
  • Frontend w Blade i JavaScript z tabelami ładowanymi z serwera, dokumentacja techniczna generowana z kodu i powiadomienia o błędach aplikacji na komunikator.

Mój wkład

  • Zbudowałem system od podstaw – backend i frontend: od szkieletu aplikacji, przez rozliczenia płatności i import wyciągów, po panel klienta, panel agenta i system prowizyjny.
  • Zaprojektowałem warstwę CRM nad bazą istniejącego systemu rezerwacyjnego: własne tabele transakcji, przypomnień, kont, rabatów i prowizji, bez przebudowy systemu źródłowego.
  • Wydzieliłem dwie biblioteki PHP do użycia poza CRM: klienta XML API cen i dostępności od dostawcy systemu rezerwacji oraz obsługę weryfikacji i wykorzystania kodów rabatowych.
  • Odpowiadałem za rozwój i utrzymanie: kolejne wersje algorytmu rozliczeń, integrację z GUS, konfigurację zadań cyklicznych na serwerze i dokumentację techniczną generowaną z kodu.

Technologie

  • Laravel
  • PHP
  • MySQL
  • Laravel Modules
  • Laravel Passport
  • REST API
  • XML API
  • Scheduler
  • Blade
  • JavaScript
  • jQuery
  • DataTables
  • Excel
  • GUS API
  • E-mail

Rozliczasz raty albo prowizje w arkuszu? Napisz, jak to dziś liczysz. Odpowiem w ciągu 24 godzin.

Napisz do mnie
Autopromocja

Nabyto.pl – e-booki i workbooki PDF po polsku

Konkretne materiały w PDF: pobierasz od razu po zakupie, drukujesz albo wypełniasz na ekranie. Bez DRM, bez subskrypcji i bez zakładania konta.

Odwiedź Nabyto.pl
Kontakt

Masz projekt albo problem z aplikacją? Napisz, odpowiem w ciągu 24 godzin.

Napisz do mnie
Telefon