From 5161d0f9798e88b92edb68b133fa85d72976135e Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Fri, 6 Feb 2026 21:32:11 +0100 Subject: [PATCH] Refactor work time management and billing summary - Introduced a new `TasksController` to handle work time logic, moving it from the factory layer to the domain layer. - Created `WorkTimeRepository` to encapsulate data access for work time tasks, including methods to retrieve clients with unsettled tasks and calculate task times. - Updated the work time view to display a consolidated billing summary with improved UI elements and AJAX functionality for closing tasks. - Added new styles for the billing summary section in `style.scss`. - Implemented tests for the `TasksController` and `WorkTimeRepository` to ensure functionality and correctness. - Established a refactoring plan for future improvements and migrations within the CRM system. --- REFACTORING_PLAN.md | 65 +++ .../Controllers/class.TasksController.php | 25 + .../Domain/Tasks/class.WorkTimeRepository.php | 125 +++++ autoload/controls/class.Tasks.php | 10 +- autoload/factory/class.Tasks.php | 36 +- layout/style.css | 2 +- layout/style.css.map | 2 +- layout/style.scss | 42 ++ templates/tasks/work-time.php | 458 ++++++++++++------ tests/Controllers/TasksControllerTest.php | 24 + tests/Domain/Tasks/WorkTimeRepositoryTest.php | 40 ++ tests/run.php | 33 ++ 12 files changed, 677 insertions(+), 185 deletions(-) create mode 100644 REFACTORING_PLAN.md create mode 100644 autoload/Controllers/class.TasksController.php create mode 100644 autoload/Domain/Tasks/class.WorkTimeRepository.php create mode 100644 tests/Controllers/TasksControllerTest.php create mode 100644 tests/Domain/Tasks/WorkTimeRepositoryTest.php create mode 100644 tests/run.php diff --git a/REFACTORING_PLAN.md b/REFACTORING_PLAN.md new file mode 100644 index 0000000..4d9fca4 --- /dev/null +++ b/REFACTORING_PLAN.md @@ -0,0 +1,65 @@ +# Plan Refaktoryzacji CRM PRO + +## Cel +- Przenieść logikę biznesową i dostęp do danych z warstwy `factory` do `autoload/Domain/*`. +- Zachować kompatybilność wsteczną przez warstwy adapterów/fasad (`controls`, `factory`) podczas migracji. +- Kończyć każdy etap migracji testami regresyjnymi. + +## Aktualny status +- Ostatnia aktualizacja: 2026-02-06 +- Etap: 2 w toku (standaryzacja kontrolerów) +- Obszar Czas pracy: zmigrowany i ustabilizowany + +## Etap 1: Tasks / Czas pracy (ZROBIONE) +- Dodano `autoload/Domain/Tasks/class.WorkTimeRepository.php`. +- `factory\Tasks::work_time_clients()` deleguje teraz do repozytorium Domain. +- Usunięto limit 3 miesięcy: repozytorium zwraca wszystkie istotne miesiące. +- Uwzględniono statusy zadań: + - `do rozliczenia` (`3`) + - `do sprawdzenia` (`1`) +- Usunięto zależność `\factory\Projects` z `WorkTimeRepository` (czas liczony bezpośrednio w repozytorium Domain). +- Dodano testy: + - `tests/Domain/Tasks/WorkTimeRepositoryTest.php` + - `tests/run.php` + +## Etap 2: Standaryzacja kontrolerów (W TOKU) +- [x] Dodano `autoload/Controllers/class.TasksController.php`. +- [x] Przeniesiono akcję czasu pracy do nowego kontrolera: `TasksController::workTime()`. +- [x] Zostawiono adapter kompatybilności w `autoload/controls/class.Tasks.php`. +- [x] Oznaczono starą metodę `controls\Tasks::work_time()` jako deprecated. +- [x] Nowy kontroler korzysta bezpośrednio z Domain (`WorkTimeRepository`) zamiast factory. +- [x] Dodano test kontrolera: + - `tests/Controllers/TasksControllerTest.php` +- [ ] Zmigrować kolejne metody z `controls\Tasks`: + - `main_view()` + - `main_view_by_ajax()` + +## Etap 3: Porządki w UI Czasu pracy (ZROBIONE) +- Nowy zbiorczy widok rozliczeń jest aktywny. +- Usunięto zduplikowany/stary blok z `templates/tasks/work-time.php`. +- Akcja „zamknij zadanie” działa przez AJAX bez pełnego przeładowania strony. +- Dodano ładniejsze potwierdzenie (`jquery-confirm`) z fallbackiem. +- Poprawiono hierarchię wizualną (Bootstrap + style pomocnicze). +- Przeniesiono style widoku z inline `