Travel: Init + widok index faktur
This commit is contained in:
321
prototype/travel/app-invoice.php
Normal file
321
prototype/travel/app-invoice.php
Normal file
@@ -0,0 +1,321 @@
|
||||
<?php
|
||||
$enablePrototypeComments = true;
|
||||
include '../../header-travel.php';
|
||||
?>
|
||||
|
||||
<div class="container-xxl flex-grow-1 container-p-y" style="padding-top: 1rem!important">
|
||||
|
||||
<div class="d-flex flex-column flex-md-row justify-content-between align-items-start align-items-md-center mb-4 gap-3">
|
||||
<div>
|
||||
<h4 class="fw-bold mb-1">
|
||||
<span class="text-muted fw-light">Koszty /</span> Faktury Zakupowe
|
||||
</h4>
|
||||
<p class="text-muted small mb-0">Zarządzaj fakturami od dostawców i przypisuj je do wycieczek.</p>
|
||||
</div>
|
||||
<div class="d-flex gap-2">
|
||||
<button class="btn btn-label-secondary btn-icon" data-bs-toggle="tooltip" title="Ustawienia integracji">
|
||||
<i class="bx bx-cog"></i>
|
||||
</button>
|
||||
<button class="btn btn-primary">
|
||||
<i class="bx bx-plus me-1"></i> Wgraj fakturę
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-primary d-flex align-items-center" role="alert">
|
||||
<i class="bx bx-move-vertical fs-4 me-2"></i>
|
||||
<div>
|
||||
<strong>Wskazówka:</strong> Możesz przypisywać faktury do zleceń korzystając z metody "Przeciągnij i upuść" (Drag & Drop) pomiędzy oknami, lub używając przycisków akcji w tabeli.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-align-top mb-4">
|
||||
<ul class="nav nav-tabs nav-fill" role="tablist">
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link active" role="tab" data-bs-toggle="tab" data-bs-target="#navs-zlecenia">
|
||||
<i class="bx bx-list-check me-1"></i> Zlecenia do ofakturowania
|
||||
<span class="badge rounded-pill badge-center h-px-20 w-px-20 bg-danger ms-1">3</span>
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link" role="tab" data-bs-toggle="tab" data-bs-target="#navs-faktury">
|
||||
<i class="bx bx-file me-1"></i> Baza faktur
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content px-0 pb-0 shadow-none border-0">
|
||||
|
||||
<div class="tab-pane fade show active" id="navs-zlecenia" role="tabpanel">
|
||||
|
||||
<div class="card mb-4 border-0 shadow-sm">
|
||||
<div class="card-body p-3">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label small text-muted mb-1">Dostawca</label>
|
||||
<select class="form-select form-select-sm">
|
||||
<option value="">Wszyscy dostawcy</option>
|
||||
<option value="1">Hotel Colosseum (Włochy)</option>
|
||||
<option value="2">Flixbus Polska</option>
|
||||
<option value="3">Przewodnik Jan Kowalski</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label small text-muted mb-1">Data realizacji (Od - Do)</label>
|
||||
<input type="text" class="form-control form-control-sm" placeholder="Wybierz zakres dat">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label small text-muted mb-1">Wycieczka</label>
|
||||
<input type="text" class="form-control form-control-sm" placeholder="Szukaj po ID / Nazwie">
|
||||
</div>
|
||||
<div class="col-md-1 d-flex align-items-end">
|
||||
<button class="btn btn-sm btn-primary w-100"><i class="bx bx-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm">
|
||||
<div class="table-responsive text-nowrap">
|
||||
<table class="table table-hover">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>Zlecenie / Wycieczka</th>
|
||||
<th>Dostawca</th>
|
||||
<th>Data realizacji</th>
|
||||
<th class="text-end">Kwota zlecenia</th>
|
||||
<th class="text-center">Status faktury</th>
|
||||
<th class="text-end">Akcje</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-border-bottom-0">
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex flex-column">
|
||||
<span class="fw-semibold text-primary">ZL/2026/05/142</span>
|
||||
<small class="text-muted">#WYC-102 (Rzym na Weekend)</small>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="avatar avatar-xs me-2"><span class="avatar-initial rounded-circle bg-label-primary">HC</span></div>
|
||||
<span>Hotel Colosseum</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="text-muted">12.05.2026</span></td>
|
||||
<td class="text-end fw-semibold">12 500,00 PLN</td>
|
||||
<td class="text-center">
|
||||
<span class="badge bg-label-danger" data-bs-toggle="tooltip" title="Zlecenie nie ma przypiętej żadnej faktury">Brak faktury</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-outline-primary dropdown-toggle" data-bs-toggle="dropdown">Podepnij</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item" href="javascript:void(0);"><i class="bx bx-link me-1"></i> Wybierz z bazy</a></li>
|
||||
<li><a class="dropdown-item" href="javascript:void(0);"><i class="bx bx-upload me-1"></i> Wgraj nową</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex flex-column">
|
||||
<span class="fw-semibold text-primary">ZL/2026/05/089</span>
|
||||
<small class="text-muted">#WYC-098 (Tatry)</small>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="avatar avatar-xs me-2"><span class="avatar-initial rounded-circle bg-label-info">FL</span></div>
|
||||
<span>Flixbus Polska</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="text-muted">05.05.2026</span></td>
|
||||
<td class="text-end fw-semibold">4 200,00 PLN</td>
|
||||
<td class="text-center">
|
||||
<span class="badge bg-label-warning" data-bs-toggle="tooltip" title="Podpięta faktura zaliczkowa. Brakuje końcowej.">Brakuje 2 000 PLN</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-outline-primary dropdown-toggle" data-bs-toggle="dropdown">Podepnij</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item" href="javascript:void(0);"><i class="bx bx-link me-1"></i> Wybierz z bazy</a></li>
|
||||
<li><a class="dropdown-item" href="javascript:void(0);"><i class="bx bx-upload me-1"></i> Wgraj nową</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item text-muted" href="javascript:void(0);"><i class="bx bx-show me-1"></i> Zobacz zaliczkę</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="bg-lighter">
|
||||
<td>
|
||||
<div class="d-flex flex-column">
|
||||
<span class="fw-semibold text-primary">ZL/2026/05/112</span>
|
||||
<small class="text-muted">#WYC-102 (Rzym na Weekend)</small>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="avatar avatar-xs me-2"><span class="avatar-initial rounded-circle bg-label-secondary">M</span></div>
|
||||
<span>Muzeum Watykańskie</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="text-muted">14.05.2026</span></td>
|
||||
<td class="text-end fw-semibold">850,00 EUR</td>
|
||||
<td class="text-center">
|
||||
<span class="badge bg-label-info"><i class="bx bx-user me-1"></i> Płatne przez Pilota</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-icon btn-text-secondary" data-bs-toggle="tooltip" title="Pilot ma obowiązek wgrać fakturę przez aplikację">
|
||||
<i class="bx bx-time"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="navs-faktury" role="tabpanel">
|
||||
|
||||
<div class="card mb-4 border-0 shadow-sm">
|
||||
<div class="card-body p-3">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-3">
|
||||
<label class="form-label small text-muted mb-1">Dostawca / NIP</label>
|
||||
<input type="text" class="form-control form-control-sm" placeholder="Szukaj...">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label small text-muted mb-1">Numer faktury</label>
|
||||
<input type="text" class="form-control form-control-sm" placeholder="Wpisz numer">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label small text-muted mb-1">Status powiązania</label>
|
||||
<select class="form-select form-select-sm">
|
||||
<option value="">Wszystkie</option>
|
||||
<option value="unassigned">Nieprzypisane</option>
|
||||
<option value="assigned">Przypisane (1:1)</option>
|
||||
<option value="split">Rozksięgowane (1:N)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label class="form-label small text-muted mb-1">Źródło</label>
|
||||
<select class="form-select form-select-sm">
|
||||
<option value="">Wszystkie</option>
|
||||
<option value="fakturownia">Fakturownia</option>
|
||||
<option value="invoice">Invoice.Travel</option>
|
||||
<option value="pilot">Aplikacja Pilota</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-1 d-flex align-items-end">
|
||||
<button class="btn btn-sm btn-primary w-100"><i class="bx bx-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm">
|
||||
<div class="table-responsive text-nowrap">
|
||||
<table class="table table-hover">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>Numer Faktury</th>
|
||||
<th>Dostawca (Triada)</th>
|
||||
<th>Data wyst.</th>
|
||||
<th class="text-end">Kwota Brutto</th>
|
||||
<th class="text-center">Status powiązania</th>
|
||||
<th class="text-end">Akcje</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-border-bottom-0">
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="bx bxs-file-pdf text-danger fs-4 me-2"></i>
|
||||
<span class="fw-semibold text-dark">FV/2026/05/1234</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex flex-column">
|
||||
<span>Flixbus Polska</span>
|
||||
<small class="text-muted">NIP: 1234567890</small>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="text-muted">04.05.2026</span></td>
|
||||
<td class="text-end fw-bold">4 200,00 PLN</td>
|
||||
<td class="text-center">
|
||||
<span class="badge bg-label-danger">Nieprzypisana</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-icon btn-text-secondary" data-bs-toggle="tooltip" title="Podgląd dokumentu"><i class="bx bx-show"></i></button>
|
||||
<button class="btn btn-sm btn-primary ms-1">Połącz ze zleceniem</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="bx bx-receipt text-success fs-4 me-2"></i>
|
||||
<span class="fw-semibold text-dark">F-2026-999</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex flex-column">
|
||||
<span>Przewodnik Jan Kowalski</span>
|
||||
<small class="text-muted">NIP: 0987654321</small>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="text-muted">10.05.2026</span></td>
|
||||
<td class="text-end fw-bold">3 000,00 PLN</td>
|
||||
<td class="text-center">
|
||||
<span class="badge bg-label-info" data-bs-toggle="tooltip" title="Przypisano do 3 różnych zleceń/wycieczek">Rozksięgowana (1:N)</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-icon btn-text-secondary" data-bs-toggle="tooltip" title="Szczegóły rozksięgowania"><i class="bx bx-list-ul"></i></button>
|
||||
<button class="btn btn-sm btn-icon btn-text-secondary"><i class="bx bx-show"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="bx bx-image text-warning fs-4 me-2" data-bs-toggle="tooltip" title="Skan z aplikacji pilota"></i>
|
||||
<span class="fw-semibold text-dark">Paragon/FV 12</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex flex-column">
|
||||
<span>Muzeum Watykańskie</span>
|
||||
<small class="text-muted">Pilot: Tomasz S.</small>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="text-muted">14.05.2026</span></td>
|
||||
<td class="text-end fw-bold">850,00 EUR</td>
|
||||
<td class="text-center">
|
||||
<span class="badge bg-label-success">Przypisana (1:1)</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<button class="btn btn-sm btn-icon btn-text-secondary" data-bs-toggle="tooltip" title="Podgląd skanu"><i class="bx bx-show"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<?php include '../../footer.php'; ?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
25
prototype/travel/empty.php
Normal file
25
prototype/travel/empty.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
$enablePrototypeComments = true;
|
||||
include '../../header-travel.php';
|
||||
?>
|
||||
|
||||
<div class="container-xxl flex-grow-1 container-p-y" style="padding-top: 1rem!important">
|
||||
|
||||
<h4 class="fw-bold py-3 mb-4">
|
||||
Travel Manager <span class="text-muted fw-light">/ Faktury</span>
|
||||
</h4>
|
||||
|
||||
<!-- CONTENT -->
|
||||
<div class="row mb-4">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<?php include '../../footer.php'; ?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
25
prototype/travel/index.php
Normal file
25
prototype/travel/index.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
$enablePrototypeComments = true;
|
||||
include '../../header-travel.php';
|
||||
?>
|
||||
|
||||
<div class="container-xxl flex-grow-1 container-p-y" style="padding-top: 1rem!important">
|
||||
|
||||
<h4 class="fw-bold py-3 mb-4">
|
||||
Travel Manager <span class="text-muted fw-light">/ Kokpit</span>
|
||||
</h4>
|
||||
|
||||
<!-- Baner Informacyjny -->
|
||||
<div class="row mb-4">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<?php include '../../footer.php'; ?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
91
prototype/travel/menu.php
Normal file
91
prototype/travel/menu.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
$currentPage = basename($_SERVER['PHP_SELF']);
|
||||
|
||||
$clientsPages = ['app-organization.php', 'app-client.php'];
|
||||
$systemPages = ['app-dictionary.php', 'app-template.php', 'app-employee.php', 'app-settings.php'];
|
||||
?>
|
||||
<aside id="layout-menu" class="layout-menu-horizontal menu-horizontal menu bg-menu-theme flex-grow-0" style="position: relative; top: 0px; padding-top: 0px;">
|
||||
<div class="container-xxl d-flex h-100">
|
||||
<ul class="menu-inner py-1">
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-task-kanban.php') ? 'active' : ''; ?>">
|
||||
<a href="app-task-kanban.php" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-task"></i>
|
||||
<div data-i18n="Zadania">Zadania</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-inquiry-kanban.php') ? 'active' : ''; ?>">
|
||||
<a href="app-inquiry-kanban.php" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-paper-plane"></i>
|
||||
<div data-i18n="Zapytania">Zapytania</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item <?php echo ($currentPage == 'index.php' || $currentPage == 'app-trip.php') ? 'active' : ''; ?>">
|
||||
<a href="index.php" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-calendar-check"></i>
|
||||
<div data-i18n="Wycieczki">Wycieczki</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-supplier.php') ? 'active' : ''; ?>">
|
||||
<a href="app-supplier.php" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-home"></i>
|
||||
<div data-i18n="Dostawcy usług">Dostawcy usług</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="menu-item <?php echo in_array($currentPage, $clientsPages, true) ? 'active open' : ''; ?>">
|
||||
<a href="javascript:void(0);" class="menu-link menu-toggle">
|
||||
<i class="menu-icon tf-icons bx bx-user"></i>
|
||||
<div data-i18n="Klienci">Klienci</div>
|
||||
</a>
|
||||
<ul class="menu-sub">
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-organization.php') ? 'active' : ''; ?>">
|
||||
<a href="app-organization.php" class="menu-link">
|
||||
<div data-i18n="Organizacje">Organizacje</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-client.php') ? 'active' : ''; ?>">
|
||||
<a href="app-client.php" class="menu-link">
|
||||
<div data-i18n="Przedstawiciele">Przedstawiciele</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-invoice.php') ? 'active' : ''; ?>">
|
||||
<a href="app-invoice.php" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-coin"></i>
|
||||
<div data-i18n="Faktury">Faktury</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="menu-item <?php echo in_array($currentPage, $systemPages, true) ? 'active open' : ''; ?>">
|
||||
<a href="javascript:void(0);" class="menu-link menu-toggle">
|
||||
<i class="menu-icon tf-icons bx bx-cog"></i>
|
||||
<div data-i18n="System">System</div>
|
||||
</a>
|
||||
<ul class="menu-sub">
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-dictionary.php') ? 'active' : ''; ?>">
|
||||
<a href="app-dictionary.php" class="menu-link">
|
||||
<div data-i18n="Słowniki">Słowniki</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-template.php') ? 'active' : ''; ?>">
|
||||
<a href="app-template.php" class="menu-link">
|
||||
<div data-i18n="Szablony">Szablony</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-employee.php') ? 'active' : ''; ?>">
|
||||
<a href="app-employee.php" class="menu-link">
|
||||
<div data-i18n="Pracownicy">Pracownicy</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item <?php echo ($currentPage == 'app-settings.php') ? 'active' : ''; ?>">
|
||||
<a href="app-settings.php" class="menu-link">
|
||||
<div data-i18n="Ustawienia">Ustawienia</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</aside>
|
||||
Reference in New Issue
Block a user