Add Allegro shipment service and related components

- Implement AllegroShipmentService for managing shipment creation and status checks.
- Create ShipmentController to handle shipment preparation and label downloading.
- Introduce ShipmentPackageRepository for database interactions related to shipment packages.
- Add methods for retrieving delivery services, creating shipments, checking creation status, and downloading labels.
- Implement address validation and token management for Allegro API integration.
This commit is contained in:
2026-03-06 01:06:59 +01:00
parent 9df7a63244
commit 1b5e403c31
46 changed files with 6705 additions and 133 deletions

View File

@@ -29,6 +29,9 @@ return [
'settings' => 'Ustawienia',
'statuses' => 'Statusy',
'allegro' => 'Integracje Allegro',
'apaczka' => 'Integracja Apaczka',
'inpost' => 'Integracja InPost',
'company' => 'Dane firmy',
],
'marketplace' => [
'title' => 'Marketplace',
@@ -159,6 +162,37 @@ return [
'send_date' => 'Data wysylki',
'shipments_count' => 'Liczba przesylek',
],
'status_change' => [
'placeholder' => '-- zmien status --',
'save' => 'Zmien',
'success' => 'Status zamowienia zostal zmieniony.',
'failed' => 'Nie udalo sie zmienic statusu zamowienia.',
'status_required' => 'Wybierz nowy status zamowienia.',
],
'activity' => [
'date' => 'Data',
'type' => 'Typ zdarzenia',
'summary' => 'Opis',
'actor' => 'Wykonawca',
'empty' => 'Brak zarejestrowanych zdarzen.',
'types' => [
'status_change' => 'Zmiana statusu',
'payment' => 'Platnosc',
'invoice' => 'Faktura',
'shipment' => 'Przesylka',
'message' => 'Wiadomosc',
'document' => 'Dokument',
'import' => 'Import',
'note' => 'Notatka',
],
'actors' => [
'system' => 'System',
'user' => 'Uzytkownik',
'import' => 'Import',
'api' => 'API',
'sync' => 'Synchronizacja',
],
],
],
],
'users' => [
@@ -533,6 +567,76 @@ return [
'status_reorder_failed' => 'Nie udalo sie zapisac kolejnosci statusow.',
],
],
'apaczka' => [
'title' => 'Integracja Apaczka',
'description' => 'Konfiguracja polaczenia z API Apaczka do obslugi przesylek.',
'config' => [
'title' => 'Konfiguracja API',
],
'fields' => [
'api_key' => 'Klucz API',
],
'api_key' => [
'saved' => 'Klucz API jest zapisany. Pozostaw pole puste, aby nie zmieniac.',
'missing' => 'Brak zapisanego klucza API.',
],
'actions' => [
'save' => 'Zapisz ustawienia Apaczka',
],
'validation' => [
'api_key_required' => 'Podaj klucz API Apaczka.',
],
'flash' => [
'saved' => 'Ustawienia Apaczka zostaly zapisane.',
'save_failed' => 'Nie udalo sie zapisac ustawien Apaczka.',
],
],
'inpost' => [
'title' => 'Integracja InPost',
'description' => 'Konfiguracja polaczenia z API InPost ShipX do obslugi przesylek.',
'config' => [
'title' => 'Konfiguracja API',
],
'sections' => [
'dispatch' => 'Sposob nadania',
'locker' => 'Paczkomaty',
'courier' => 'Domyslne wymiary przesylek kurierskich',
'other' => 'Pozostale ustawienia',
],
'fields' => [
'api_token' => 'Klucz API (token)',
'organization_id' => 'Identyfikator organizacji',
'environment' => 'Srodowisko',
'default_dispatch_method' => 'Domyslny sposob nadania',
'default_dispatch_point' => 'Domyslny punkt nadania',
'default_insurance' => 'Domyslne ubezpieczenie',
'insurance_placeholder' => 'Brak (opcjonalne)',
'default_locker_size' => 'Domyslny rozmiar paczki',
'courier_length' => 'Dlugosc',
'courier_width' => 'Szerokosc',
'courier_height' => 'Wysokosc',
'label_format' => 'Typ etykiety',
'weekend_delivery' => 'Paczka weekendowa',
'auto_insurance_value' => 'Automatycznie uzupelniaj wartosc ubezpieczenia',
'multi_parcel' => 'Obsluga multi-paczek',
],
'dispatch_methods' => [
'pop' => 'Punkt nadania (POP)',
'parcel_locker' => 'Paczkomat',
'courier' => 'Kurier',
],
'api_token' => [
'saved' => 'Klucz API jest zapisany. Pozostaw pole puste, aby nie zmieniac.',
'missing' => 'Brak zapisanego klucza API.',
],
'actions' => [
'save' => 'Zapisz ustawienia InPost',
],
'flash' => [
'saved' => 'Ustawienia InPost zostaly zapisane.',
'save_failed' => 'Nie udalo sie zapisac ustawien InPost.',
],
],
'allegro' => [
'title' => 'Integracja Allegro',
'description' => 'Konfiguracja OAuth2 i pobierania zamowien z Allegro.',
@@ -541,6 +645,7 @@ return [
'integration' => 'Integracja',
'statuses' => 'Statusy',
'settings' => 'Ustawienia',
'delivery' => 'Formy dostawy',
],
'callback' => [
'title' => 'Redirect URI do Allegro',
@@ -551,6 +656,7 @@ return [
],
'fields' => [
'environment' => 'Srodowisko',
'environment_hint' => 'Zmiana srodowiska przelacza na osobne dane logowania (Client ID, Secret, tokeny).',
'client_id' => 'Client ID',
'client_secret' => 'Client Secret',
'redirect_uri' => 'Redirect URI',
@@ -636,6 +742,27 @@ return [
'sync_failed' => 'Nie udalo sie pobrac statusow z Allegro.',
],
],
'delivery' => [
'title' => 'Mapowanie form dostawy',
'description' => 'Powiaz formy dostawy z zamowien z uslugami przewoznikow (Allegro, InPost). Mapowanie uzyje sie automatycznie przy tworzeniu przesylki.',
'not_connected' => 'Polacz konto Allegro, aby pobrac uslugi dostawy.',
'empty_orders' => 'Brak zamowien z forma dostawy. Zaimportuj zamowienia, aby zobaczyc dostepne formy.',
'fields' => [
'order_method' => 'Forma dostawy z zamowienia',
'carrier' => 'Przewoznik',
'allegro_service' => 'Usluga dostawy',
'search_placeholder' => 'Szukaj uslugi...',
'no_mapping' => 'Brak mapowania',
'select_carrier_first' => 'Wybierz przewoznika',
],
'actions' => [
'save' => 'Zapisz mapowania',
],
'flash' => [
'saved' => 'Mapowania form dostawy zostaly zapisane.',
'save_failed' => 'Nie udalo sie zapisac mapowan form dostawy.',
],
],
'actions' => [
'save' => 'Zapisz ustawienia Allegro',
'connect' => 'Polacz konto Allegro',
@@ -836,6 +963,38 @@ return [
'save_failed' => 'Nie udalo sie zapisac ustawien GS1.',
],
],
'company' => [
'title' => 'Dane firmy',
'description' => 'Adres nadawcy, dane bankowe i domyslne wymiary paczek.',
'section_address' => 'Adres nadawcy',
'section_bank' => 'Dane bankowe',
'section_defaults' => 'Domyslne wymiary paczki',
'fields' => [
'company_name' => 'Nazwa firmy',
'person_name' => 'Imie i nazwisko',
'street' => 'Ulica',
'postal_code' => 'Kod pocztowy',
'city' => 'Miasto',
'country_code' => 'Kod kraju',
'phone' => 'Telefon',
'email' => 'E-mail',
'tax_number' => 'NIP',
'bank_account' => 'Numer konta',
'bank_owner_name' => 'Wlasciciel konta',
'length_cm' => 'Dlugosc (cm)',
'width_cm' => 'Szerokosc (cm)',
'height_cm' => 'Wysokosc (cm)',
'weight_kg' => 'Waga (kg)',
'label_format' => 'Format etykiety',
],
'actions' => [
'save' => 'Zapisz dane firmy',
],
'flash' => [
'saved' => 'Dane firmy zostaly zapisane.',
'save_failed' => 'Nie udalo sie zapisac danych firmy.',
],
],
'products' => [
'title' => 'Produkty',
'description' => 'Ustawienia generatora SKU dla produktow.',
@@ -854,6 +1013,9 @@ return [
],
],
],
'shipments' => [
'prepare' => [
'title' => 'Przygotuj przesylke',
],
],
];