Add Orders and Order Status repositories with pagination and management features

- Implemented OrdersRepository for handling order data with pagination, filtering, and sorting capabilities.
- Added methods for retrieving order status options, quick stats, and detailed order information.
- Created OrderStatusRepository for managing order status groups and statuses, including CRUD operations and sorting.
- Introduced a bootstrap file for test environment setup and autoloading.
This commit is contained in:
2026-03-03 01:32:28 +01:00
parent d1576bc4ab
commit c489891d15
106 changed files with 11669 additions and 5091 deletions

View File

@@ -19,11 +19,15 @@ return [
'navigation' => [
'main_menu' => 'Menu glowne',
'users' => 'Uzytkownicy',
'database' => 'Baza danych',
'products' => 'Produkty',
'orders' => 'Zamowienia',
'orders_list' => 'Lista zamowien',
'marketplace' => 'Marketplace',
'cron' => 'Cron',
'dashboard' => 'Dashboard',
'settings' => 'Ustawienia',
'statuses' => 'Statusy',
],
'marketplace' => [
'title' => 'Marketplace',
@@ -90,6 +94,72 @@ return [
'description' => 'Szkielet panelu jest gotowy. Kolejny krok: lista zamowien.',
'active_user_label' => 'Aktywny uzytkownik:',
],
'orders' => [
'title' => 'Zamowienia',
'description' => 'Kompaktowa lista zamowien oparta o lokalna baze orderPRO.',
'empty' => 'Brak zamowien do wyswietlenia.',
'fields' => [
'order_ref' => 'Zamowienie',
'status' => 'Status',
'buyer' => 'Kupujacy',
'products' => 'Produkty',
'items' => 'Pozycje',
'totals' => 'Kwoty',
'shipping' => 'Wysylka',
'ordered_at' => 'Data zamowienia',
'source_updated_at' => 'Ostatnia zmiana',
],
'filters' => [
'search' => 'Szukaj (numer, ID, login, email, klient)',
'source' => 'Zrodlo',
'status' => 'Status',
'payment_status' => 'Platnosc',
'date_from' => 'Data od',
'date_to' => 'Data do',
'any' => 'Wszystkie',
],
'stats' => [
'all' => 'Wszystkie',
'paid' => 'Oplacone',
'shipped' => 'Wyslane',
],
'details' => [
'title' => 'Szczegoly zamowienia',
'tabs' => [
'details' => 'Szczegoly zamowienia',
'history' => 'Historia zmian',
'shipments' => 'Przesylki',
'payments' => 'Platnosci',
'documents' => 'Dokumenty powiazane',
],
'items_title' => 'Pozycje',
'item_name' => 'Nazwa',
'item_qty' => 'Ilosc',
'item_price' => 'Cena brutto',
'item_sum' => 'Suma',
'order_info' => 'Szczegoly zamowienia',
'payment_shipping' => 'Platnosc i wysylka',
'address_customer' => 'Dane zamawiajacego',
'address_invoice' => 'Dane do faktury',
'address_delivery' => 'Dane wysylki',
'notes_title' => 'Wiadomosci i zalaczniki',
'history_title' => 'Historia statusow',
'fields' => [
'status' => 'Status',
'source_order_id' => 'Numer zamowienia',
'external_order_id' => 'Numer zewnetrzny',
'ordered_at' => 'Data zamowienia',
'customer_login' => 'Login uzytkownika',
'currency' => 'Waluta',
'payment_status' => 'Status platnosci',
'total_with_tax' => 'Kwota brutto',
'total_paid' => 'Kwota oplacona',
'carrier' => 'Dostawa',
'send_date' => 'Data wysylki',
'shipments_count' => 'Liczba przesylek',
],
],
],
'users' => [
'title' => 'Zarzadzanie uzytkownikami',
'description' => 'Dodawaj konta dostepowe dla zespolu i zarzadzaj dostepem do panelu.',
@@ -362,7 +432,7 @@ return [
'description' => 'Konfiguracja i narzedzia administracyjne systemu.',
'submenu_label' => 'Sekcje ustawien',
'database' => [
'title' => 'Aktualizacja bazy danych',
'title' => 'Baza danych',
'state' => [
'needs_update' => 'Wykryto oczekujace migracje. Wymagana aktualizacja bazy.',
'up_to_date' => 'Baza danych jest aktualna.',
@@ -386,6 +456,82 @@ return [
'failed' => 'Nie udalo sie wykonac migracji. Sprawdz log i polaczenie bazy.',
],
],
'statuses' => [
'title' => 'Statusy',
'description' => 'Zarzadzaj grupami statusow i statusami wewnatrz grup. Kolor jest ustawiany na poziomie grupy.',
'tabs' => [
'label' => 'Zakladki statusow',
'statuses' => 'Statusy',
'groups' => 'Grupy statusow',
],
'fields' => [
'group' => 'Grupa',
'group_placeholder' => '-- wybierz grupe --',
'name' => 'Nazwa',
'code' => 'Kod',
'color' => 'Kolor grupy',
'is_active' => 'Aktywny',
'actions' => 'Akcje',
],
'hints' => [
'code_auto' => 'Kod techniczny generuje sie automatycznie z nazwy przy tworzeniu i nie jest edytowalny.',
'drag_statuses' => 'Przeciagnij i upusc, aby ustawic kolejnosc statusow.',
'drag_groups' => 'Przeciagnij i upusc, aby ustawic kolejnosc grup statusow.',
'auto_save_order' => 'Kolejnosc zapisuje sie automatycznie po upuszczeniu.',
'drag_handle' => 'Przeciagnij, aby zmienic kolejnosc',
],
'actions' => [
'add_group' => 'Dodaj grupe',
'add_status' => 'Dodaj status',
'save' => 'Zapisz',
'delete' => 'Usun',
],
'groups' => [
'create_title' => 'Nowa grupa statusow',
'list_title' => 'Grupy statusow',
'empty' => 'Brak zdefiniowanych grup statusow.',
],
'statuses' => [
'create_title' => 'Nowy status',
'list_title' => 'Statusy',
'empty' => 'Brak zdefiniowanych statusow.',
],
'confirm' => [
'title' => 'Potwierdzenie',
'confirm' => 'Usun',
'cancel' => 'Anuluj',
'delete_group' => 'Czy na pewno usunac grupe statusow? Usunie to rowniez statusy przypisane do tej grupy.',
'delete_status' => 'Czy na pewno usunac ten status?',
],
'flash' => [
'group_required' => 'Wybierz istniejaca grupe statusow.',
'group_not_found' => 'Nie znaleziono wskazanej grupy statusow.',
'group_name_invalid' => 'Nazwa grupy musi miec co najmniej 2 znaki.',
'group_code_invalid' => 'Kod grupy statusow jest niepoprawny.',
'group_code_taken' => 'Kod grupy statusow jest juz zajety.',
'group_created' => 'Grupa statusow zostala dodana.',
'group_updated' => 'Grupa statusow zostala zapisana.',
'group_deleted' => 'Grupa statusow zostala usunieta.',
'group_create_failed' => 'Nie udalo sie dodac grupy statusow.',
'group_update_failed' => 'Nie udalo sie zapisac grupy statusow.',
'group_delete_failed' => 'Nie udalo sie usunac grupy statusow.',
'status_not_found' => 'Nie znaleziono wskazanego statusu.',
'status_name_invalid' => 'Nazwa statusu musi miec co najmniej 2 znaki.',
'status_code_invalid' => 'Kod statusu jest niepoprawny.',
'status_code_taken' => 'Kod statusu jest juz zajety.',
'status_created' => 'Status zostal dodany.',
'status_updated' => 'Status zostal zapisany.',
'status_deleted' => 'Status zostal usuniety.',
'status_create_failed' => 'Nie udalo sie dodac statusu.',
'status_update_failed' => 'Nie udalo sie zapisac statusu.',
'status_delete_failed' => 'Nie udalo sie usunac statusu.',
'reorder_empty' => 'Nie przeslano kolejnosci do zapisu.',
'group_reordered' => 'Kolejnosc grup statusow zostala zapisana.',
'status_reordered' => 'Kolejnosc statusow zostala zapisana.',
'group_reorder_failed' => 'Nie udalo sie zapisac kolejnosci grup statusow.',
'status_reorder_failed' => 'Nie udalo sie zapisac kolejnosci statusow.',
],
],
'integrations' => [
'title' => 'Integracje shopPRO',
'list_title' => 'Integracje shopPRO',
@@ -397,6 +543,11 @@ return [
'base_url' => 'Base URL',
'api_key' => 'API Key',
'timeout_seconds' => 'Timeout (sekundy)',
'orders_fetch_start_date' => 'Data startu pobierania zamowien',
'orders_fetch_enabled_checkbox' => 'Pobieraj zamowienia',
'order_status_sync_direction' => 'Kierunek synchronizacji statusow',
'order_status_sync_direction_shoppro_to_orderpro' => 'shopPRO -> orderPRO',
'order_status_sync_direction_orderpro_to_shoppro' => 'orderPRO -> shopPRO',
'active' => 'Aktywna',
'active_checkbox' => 'Integracja aktywna',
'last_test' => 'Ostatni test',
@@ -434,6 +585,7 @@ return [
'validation' => [
'name_min' => 'Nazwa integracji musi miec co najmniej 2 znaki.',
'base_url_invalid' => 'Podaj poprawny adres URL (http lub https).',
'orders_fetch_start_date_invalid' => 'Podaj poprawna date startu pobierania zamowien (RRRR-MM-DD).',
'api_key_required' => 'Podaj klucz API dla integracji.',
'name_taken' => 'Integracja o tej nazwie juz istnieje.',
],
@@ -458,6 +610,40 @@ return [
'action' => 'Importuj 1 produkt',
],
],
'order_statuses' => [
'title' => 'Statusy zamowien',
'description' => 'Mapowanie statusow zamowien pomiedzy orderPRO i shopPRO.',
'integration' => 'Integracja shopPRO',
'no_integrations' => 'Brak aktywnych integracji shopPRO z kluczem API.',
'empty' => 'Brak statusow shopPRO do zmapowania.',
'fields' => [
'shoppro_code' => 'Kod statusu shopPRO',
'shoppro_name' => 'Nazwa statusu shopPRO',
'orderpro_status' => 'Status orderPRO',
'no_mapping' => '-- brak mapowania --',
],
'actions' => [
'save' => 'Zapisz mapowanie statusow',
],
'orderpro' => [
'new' => 'Nowe',
'confirmed' => 'Potwierdzone',
'processing' => 'W realizacji',
'ready_to_ship' => 'Gotowe do wysylki',
'shipped' => 'Wyslane',
'delivered' => 'Dostarczone',
'cancelled' => 'Anulowane',
'returned' => 'Zwrocone',
'on_hold' => 'Wstrzymane',
],
'flash' => [
'integration_required' => 'Wybierz integracje do mapowania statusow.',
'credentials_missing' => 'Wybrana integracja nie ma poprawnych danych API do pobrania statusow.',
'load_failed' => 'Nie udalo sie pobrac statusow shopPRO.',
'saved' => 'Mapowanie statusow zostalo zapisane.',
'save_failed' => 'Nie udalo sie zapisac mapowania statusow.',
],
],
'cron' => [
'title' => 'Cron',
'run_on_web_title' => 'Uruchamianie crona podczas nawigacji',