Compare commits

2 Commits
2 changed files with 211 additions and 64 deletions
+61
View File
@@ -99,6 +99,26 @@ include '../../header-invoice.php';
<span class="text-muted fw-bold">Przeciągnij fakturę tutaj lub kliknij</span>
<span class="small text-muted">(PDF, JPG, PNG)</span>
</div>
<!-- Wgrany plik / Podgląd (Początkowo ukryty, pokazywany w symulacji OCR) -->
<div class="d-flex align-items-center p-3 mb-3 border rounded bg-lighter d-none" id="ocr-preview-container">
<div class="me-3 cursor-pointer" data-bs-toggle="modal" data-bs-target="#invoicePreviewModal" title="Kliknij, aby powiększyć">
<img src="https://via.placeholder.com/150x200.png?text=Faktura+OCR" alt="Faktura" class="rounded border shadow-sm" style="width: 50px; height: 70px; object-fit: cover; opacity: 0.9; transition: 0.3s;" onmouseover="this.style.opacity='1'; this.style.transform='scale(1.05)';" onmouseout="this.style.opacity='0.9'; this.style.transform='scale(1)';">
</div>
<div class="flex-grow-1">
<h6 class="mb-1 text-truncate" style="max-width: 180px;">skan_faktury_02_2026.png</h6>
<small class="text-muted">Odczytano dane z pliku</small>
</div>
<div>
<button type="button" class="btn btn-sm btn-icon btn-outline-primary me-1" data-bs-toggle="modal" data-bs-target="#invoicePreviewModal" title="Pełny podgląd">
<i class="bx bx-fullscreen"></i>
</button>
<button type="button" class="btn btn-sm btn-icon btn-outline-danger" title="Usuń plik" onclick="document.getElementById('ocr-preview-container').classList.add('d-none');">
<i class="bx bx-trash"></i>
</button>
</div>
</div>
<button type="button" class="btn btn-label-primary w-100 mb-4" id="btn-ocr-read-page">
<i class="bx bx-scan me-1"></i> Odczytaj dane z pliku (OCR)
</button>
@@ -316,6 +336,20 @@ include '../../header-invoice.php';
<textarea class="form-control bg-lighter" rows="3"
placeholder="Wpisz uwagi widoczne tylko dla nas..."></textarea>
<div class="mt-3 mb-2">
<label class="form-label d-flex align-items-center fw-bold">
Numer konta bankowego (IBAN)
<i class="bx bx-info-circle ms-1 fs-6 text-muted" data-bs-toggle="tooltip"
data-bs-placement="top"
title="Numer konta sprzedawcy, na który zostanie wykonany przelew.">
</i>
</label>
<div class="input-group input-group-merge">
<span class="input-group-text"><i class="bx bx-credit-card"></i></span>
<input type="text" class="form-control" placeholder="PL 00 0000 0000 0000 0000 0000 0000">
</div>
</div>
<div class="row g-2 mb-3 mt-3">
<div class="col-md-4">
<label class="form-label d-flex align-items-center">
@@ -536,6 +570,12 @@ include '../../header-invoice.php';
const totalEl = document.getElementById('finalTotal');
if (totalEl) totalEl.innerText = '553,50 zł';
// Pokazanie podglądu pliku z OCR
const previewContainer = document.getElementById('ocr-preview-container');
if (previewContainer) {
previewContainer.classList.remove('d-none');
}
// 4. Restore Button
btn.disabled = false;
btn.innerHTML = '<i class="bx bx-check me-1"></i> Dane odczytane poprawnie';
@@ -562,6 +602,27 @@ include '../../header-invoice.php';
});
</script>
<!-- Modal: Podgląd Faktury -->
<div class="modal fade" id="invoicePreviewModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header border-bottom">
<h5 class="modal-title d-flex align-items-center">
<i class="bx bx-image me-2"></i> Podgląd dokumentu: skan_faktury_02_2026.png
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Zamknij"></button>
</div>
<div class="modal-body p-0 bg-lighter d-flex justify-content-center align-items-center" style="min-height: 70vh;">
<!-- Placeholder obrazka, docelowo pełen skan lub PDF w iframe -->
<img src="https://via.placeholder.com/800x1131.png?text=Faktura+Powi%C4%99kszona" alt="Podgląd Faktury" class="img-fluid" style="max-height: 80vh; object-fit: contain; box-shadow: 0 0 10px rgba(0,0,0,0.1);">
</div>
<div class="modal-footer border-top">
<button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Zamknij</button>
</div>
</div>
</div>
</div>
</body>
</html>
+150 -64
View File
@@ -15,7 +15,8 @@ include '../../header-travel.php';
<div class="d-flex flex-column flex-md-row gap-3 w-100" style="max-width: 600px;">
<div class="input-group input-group-merge w-100">
<span class="input-group-text" id="search-addon"><i class="bx bx-search"></i></span>
<input type="text" class="form-control" placeholder="Szukaj wycieczki..." aria-label="Szukaj" aria-describedby="search-addon">
<input type="text" class="form-control" placeholder="Szukaj wycieczki..." aria-label="Szukaj"
aria-describedby="search-addon">
</div>
<select class="form-select w-100" style="max-width: 250px;">
<option value="all" selected>Wszystkie</option>
@@ -24,7 +25,8 @@ include '../../header-travel.php';
</select>
</div>
<div class="btn-group" role="group" aria-label="Status wycieczek">
<input type="radio" class="btn-check" name="statusFilter" id="btnRadioAktualne" autocomplete="off" checked>
<input type="radio" class="btn-check" name="statusFilter" id="btnRadioAktualne" autocomplete="off"
checked>
<label class="btn btn-outline-primary" for="btnRadioAktualne">Aktualne</label>
<input type="radio" class="btn-check" name="statusFilter" id="btnRadioArchiwalne" autocomplete="off">
@@ -37,15 +39,20 @@ include '../../header-travel.php';
<div class="card mb-4">
<div class="card-header border-bottom d-flex justify-content-between align-items-center py-3">
<div>
<h5 class="mb-2"><i class="bx bx-map-alt text-primary me-2"></i>Wycieczka #1024 - Włochy Klasyczne</h5>
<div class="d-flex align-items-center">
<span class="badge bg-label-secondary me-3"><i class="bx bx-group me-1"></i> 45 osób</span>
<div class="d-flex align-items-center">
<div class="avatar avatar-sm me-2">
<img src="assets/logo-sloneczko.png" alt="Logo" class="rounded-circle border">
</div>
<span class="fw-bold text-body">Biuro Podróży "Słoneczko"</span>
<div class="d-flex align-items-center mb-1">
<div class="avatar avatar-xs me-2" style="cursor: default;">
<img src="assets/logo-sloneczko.png" alt="Logo" class="rounded-circle border">
</div>
<span class="fw-semibold text-secondary small">Biuro Podróży "Słoneczko"</span>
</div>
<div class="d-flex align-items-center flex-wrap gap-2">
<h5 class="mb-0 fw-bold">
<i class="bx bx-map-alt text-primary me-1"></i>Włochy Klasyczne (3 dni)
</h5>
<span class="badge bg-label-secondary d-inline-flex align-items-center"><i
class="bx bx-tag-alt me-1"></i>ID #1024</span>
<span class="badge bg-label-info d-inline-flex align-items-center"><i
class="bx bx-group me-1"></i>40+3</span>
</div>
</div>
<div>
@@ -56,19 +63,21 @@ include '../../header-travel.php';
<table class="table table-hover">
<thead>
<tr>
<th>Data Od</th>
<th>Data Do</th>
<th>Zlecenie od</th>
<th>Zlecenie do</th>
<th>Status</th>
<th>Pliki</th>
<th>Akcje</th>
</tr>
</thead>
<tbody class="table-border-bottom-0">
<tr>
<td>2024-05-10 08:00</td>
<td>2024-05-12 18:00</td>
<td>2024-05-10</td>
<td>2024-05-12</td>
<td>
<div class="dropdown">
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button"
data-bs-toggle="dropdown" aria-expanded="false">
Nowe
</button>
<ul class="dropdown-menu">
@@ -79,17 +88,23 @@ include '../../header-travel.php';
</div>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#orderDetailsModal">
<span class="badge bg-label-secondary" title="3 załączniki (do pobrania w szczegółach)"><i
class="bx bx-paperclip me-1"></i>3</span>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal"
data-bs-target="#orderDetailsModal">
<i class="bx bx-search-alt-2 me-1"></i> Szczegóły
</button>
</td>
</tr>
<tr>
<td>2024-05-15 09:00</td>
<td>2024-05-17 20:00</td>
<td>2024-05-15</td>
<td>2024-05-17</td>
<td>
<div class="dropdown">
<button class="btn btn-sm btn-outline-warning dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<button class="btn btn-sm btn-outline-warning dropdown-toggle" type="button"
data-bs-toggle="dropdown" aria-expanded="false">
W realizacji
</button>
<ul class="dropdown-menu">
@@ -100,7 +115,12 @@ include '../../header-travel.php';
</div>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#orderDetailsModal">
<span class="badge bg-label-secondary" title="2 załączniki (do pobrania w szczegółach)"><i
class="bx bx-paperclip me-1"></i>2</span>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal"
data-bs-target="#orderDetailsModal">
<i class="bx bx-search-alt-2 me-1"></i> Szczegóły
</button>
</td>
@@ -114,15 +134,20 @@ include '../../header-travel.php';
<div class="card mb-4">
<div class="card-header border-bottom d-flex justify-content-between align-items-center py-3">
<div>
<h5 class="mb-2"><i class="bx bx-map-alt text-primary me-2"></i>Wycieczka #1080 - Złota Praga</h5>
<div class="d-flex align-items-center">
<span class="badge bg-label-secondary me-3"><i class="bx bx-group me-1"></i> 30 osób</span>
<div class="d-flex align-items-center">
<div class="avatar avatar-sm me-2">
<img src="assets/logo-adventure.png" alt="Logo" class="rounded-circle border">
</div>
<span class="fw-bold text-body">Biuro Podróży "Adventure"</span>
<div class="d-flex align-items-center mb-1">
<div class="avatar avatar-xs me-2" style="cursor: default;">
<img src="assets/logo-adventure.png" alt="Logo" class="rounded-circle border">
</div>
<span class="fw-semibold text-secondary small">Biuro Podróży "Adventure"</span>
</div>
<div class="d-flex align-items-center flex-wrap gap-2">
<h5 class="mb-0 fw-bold">
<i class="bx bx-map-alt text-primary me-1"></i>Złota Praga (3 dni)
</h5>
<span class="badge bg-label-secondary d-inline-flex align-items-center"><i
class="bx bx-tag-alt me-1"></i>ID #1080</span>
<span class="badge bg-label-info d-inline-flex align-items-center"><i
class="bx bx-group me-1"></i>30+2</span>
</div>
</div>
<div>
@@ -133,19 +158,21 @@ include '../../header-travel.php';
<table class="table table-hover">
<thead>
<tr>
<th>Data Od</th>
<th>Data Do</th>
<th>Zlecenie od</th>
<th>Zlecenie do</th>
<th>Status</th>
<th>Pliki</th>
<th>Akcje</th>
</tr>
</thead>
<tbody class="table-border-bottom-0">
<tr>
<td>2024-06-01 06:00</td>
<td>2024-06-03 22:00</td>
<td>2024-06-01</td>
<td>2024-06-03</td>
<td>
<div class="dropdown">
<button class="btn btn-sm btn-outline-success dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<button class="btn btn-sm btn-outline-success dropdown-toggle" type="button"
data-bs-toggle="dropdown" aria-expanded="false">
Zakończone
</button>
<ul class="dropdown-menu">
@@ -156,7 +183,12 @@ include '../../header-travel.php';
</div>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#orderDetailsModal">
<span class="badge bg-label-secondary" title="1 załącznik (do pobrania w szczegółach)"><i
class="bx bx-paperclip me-1"></i>1</span>
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal"
data-bs-target="#orderDetailsModal">
<i class="bx bx-search-alt-2 me-1"></i> Szczegóły
</button>
</td>
@@ -173,48 +205,76 @@ include '../../header-travel.php';
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="orderDetailsModalLabel">Szczegóły zlecenia</h5>
<h5 class="modal-title" id="orderDetailsModalLabel">Szczegóły zlecenia | Wycieczka #1234</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Zamknij"></button>
</div>
<div class="modal-body">
<div class="row mb-3">
<div class="col-12">
<h6 class="fw-bold mb-2">Szczegóły wycieczki</h6>
<h6 class="fw-bold mb-2">Szczegóły zlecenia</h6>
<div class="p-3 bg-lighter rounded">
<div class="row">
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Wycieczka</small>
<span class="fw-medium">KADR w Bieszczady</span><br>
<span class="text-muted small">2026-04-25 &ndash; 2026-04-26</span>
<div class="col-md-3 col-6 mb-3">
<small class="text-muted d-block">Zlecenie od</small>
<span class="fw-medium">2024-05-10</span>
</div>
<div class="col-md-3 col-6 mb-3">
<small class="text-muted d-block">Zlecenie do</small>
<span class="fw-medium">2024-05-12</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Data wycieczki</small>
<span>2026-04-25 &ndash; 2026-04-25</span>
<small class="text-muted d-block">Wycieczka</small>
<span class="fw-medium">Włochy Klasyczne (3 dni)</span><br>
<span class="text-muted small">24.08.2024 - 26.08.2024</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Liczba osób</small>
<span>40+3</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Status</small>
<span>Brak statusu</span>
<span class="badge bg-label-primary">Nowe</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Operator</small>
<span>Biuro Podróży Adventure</span>
<small class="text-muted d-block">Zleceniodawca</small>
<span>Biuro Podróży "Słoneczko"</span>
</div>
<div class="col-md-6 mb-3 mb-md-0">
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Organizacja</small>
<span>Szkoła Podstawowa nr 1 w Warszawie, Związek Turystyki Młodzieżowej</span>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block">Klient</small>
<span>Bartłomiej Banaczyk</span>
<small class="text-muted d-block">Przedstawiciel zleceniodawcy</small>
<span class="fw-medium text-body">Bartłomiej Banaczyk</span>
<div class="small d-flex flex-wrap gap-3 mt-1">
<a href="tel:+48600100200"
class="text-decoration-none text-secondary d-inline-flex align-items-center">
<i class="bi bi-telephone text-primary me-1"></i>+48 600 100 200
</a>
<a href="mailto:b.banaczyk@sloneczko.pl"
class="text-decoration-none text-secondary d-inline-flex align-items-center">
<i class="bi bi-envelope text-primary me-1"></i>b.banaczyk@sloneczko.pl
</a>
</div>
</div>
<div class="col-12 mb-3">
<small class="text-muted d-block mb-1">Miejsce podstawienia autokaru</small>
<a href="https://maps.google.com/?q=Warszawa,+Plac+Defilad+1" target="_blank" class="fw-medium text-primary text-decoration-none" style="display:inline-flex; align-items:center;">
<i class="bx bx-map me-1"></i>Warszawa, Plac Defilad 1 (Parking pod PKiN), godz. 07:30 <i class="bx bx-link-external ms-2"></i>
<div class="col-md-6 mb-3">
<small class="text-muted d-block mb-1">Miejsce podstawienia</small>
<a href="https://maps.google.com/?q=Warszawa,+Plac+Defilad+1" target="_blank"
class="fw-medium text-primary text-decoration-none"
style="display:inline-flex; align-items:center;">
<i class="bx bx-map me-1"></i>Warszawa, Plac Defilad 1 (Parking pod PKiN) <i
class="bx bx-link-external ms-2"></i>
</a>
</div>
<div class="col-md-6 mb-3">
<small class="text-muted d-block mb-1">Data i godzina podstawienia</small>
<span class="fw-medium text-body d-inline-flex align-items-center">
<i class="bx bx-time-five text-primary me-1"></i>2024-05-10, godz. 07:30
</span>
</div>
<div class="col-12">
<small class="text-muted d-block mb-2">Załączniki od organizatora</small>
<small class="text-muted d-block mb-2"><i
class="bx bx-paperclip me-1"></i>Załączniki od organizatora (3)</small>
<div class="d-flex flex-wrap gap-2">
<a href="javascript:void(0);" class="btn btn-sm btn-outline-secondary">
<i class="bx bx-download me-1"></i> Karta wycieczki
@@ -231,24 +291,34 @@ include '../../header-travel.php';
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<h6 class="fw-bold mb-3">Dane realizacyjne transportu</h6>
<p class="text-muted small mb-4">Prosimy o uzupełnienie danych wymaganych do realizacji zlecenia oraz aktualizację statusu.</p>
<p class="text-muted small mb-4">Prosimy o uzupełnienie danych wymaganych do realizacji zlecenia
oraz aktualizację statusu.</p>
</div>
<div class="col-md-12 mb-4">
<label class="form-label fw-bold text-primary d-block">Status zlecenia</label>
<div class="dropdown">
<button class="btn btn-outline-primary dropdown-toggle w-100 text-start d-flex justify-content-between align-items-center" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<span><span class="badge bg-label-primary me-2">Nowe</span> Oczekuje na realizację</span>
<button
class="btn btn-outline-primary dropdown-toggle w-100 text-start d-flex justify-content-between align-items-center"
type="button" data-bs-toggle="dropdown" aria-expanded="false">
<span><span class="badge bg-label-primary me-2">Nowe</span> Oczekuje na
realizację</span>
</button>
<ul class="dropdown-menu w-100">
<li><a class="dropdown-item" href="javascript:void(0);"><span class="badge bg-label-primary me-2">Nowe</span> Oczekuje na realizację</a></li>
<li><a class="dropdown-item" href="javascript:void(0);"><span class="badge bg-label-warning me-2">W realizacji</span> Przejazd w trakcie</a></li>
<li><a class="dropdown-item" href="javascript:void(0);"><span class="badge bg-label-success me-2">Zakończone</span> Przejazd zrealizowany</a></li>
<li><a class="dropdown-item" href="javascript:void(0);"><span
class="badge bg-label-primary me-2">Nowe</span> Oczekuje na realizację</a>
</li>
<li><a class="dropdown-item" href="javascript:void(0);"><span
class="badge bg-label-warning me-2">W realizacji</span> Przejazd w
trakcie</a></li>
<li><a class="dropdown-item" href="javascript:void(0);"><span
class="badge bg-label-success me-2">Zakończone</span> Przejazd
zrealizowany</a></li>
</ul>
</div>
</div>
@@ -268,6 +338,20 @@ include '../../header-travel.php';
<label for="driverPhone" class="form-label">Telefon do kierowcy</label>
<input type="text" id="driverPhone" class="form-control" placeholder="+48...">
</div>
<div class="col-12 mb-3">
<label class="form-label">Notatka do zlecenia</label>
<div class="p-3 bg-lighter rounded border">
<div class="d-flex align-items-start gap-2">
<i class="bx bx-message-square-detail text-primary fs-5 mt-1"></i>
<div>
<small class="text-muted d-block mb-1">Komunikat od zleceniodawcy:</small>
<div class="text-body">
Prosimy o podstawienie autokaru minimum 15 minut przed czasem. Sprawny mikrofon dla przewodnika oraz klimatyzacja są wymagane. Kierowca proszony o kontakt z pilotem po dotarciu na parking.
</div>
</div>
</div>
</div>
</div>
</div>
<hr>
@@ -299,9 +383,11 @@ include '../../header-travel.php';
<small class="text-muted">Wyliczane automatycznie</small>
</div>
<div class="col-md-12 mb-3">
<label for="parkingCosts" class="form-label text-warning fw-bold">Opłaty drogowe (Edytowalne)</label>
<label for="parkingCosts" class="form-label text-warning fw-bold">Opłaty drogowe
(Edytowalne)</label>
<div class="input-group">
<input type="number" id="parkingCosts" class="form-control border-warning" placeholder="0.00" step="0.01">
<input type="number" id="parkingCosts" class="form-control border-warning"
placeholder="0.00" step="0.01">
<span class="input-group-text border-warning">PLN</span>
</div>
</div>
@@ -319,4 +405,4 @@ include '../../header-travel.php';
</body>
</html>
</html>