Files
fuel_track/app/templates/admin_companies.html
T
Mateusz Gruszczyński bd562b3da6 first commit
2026-07-13 13:19:26 +02:00

64 lines
9.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends 'base.html' %}
{% block title %}Firmy i karty{% endblock %}
{% block content %}
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-center gap-3 mb-3">
<div><h1 class="h2 mb-1">Administracja</h1><p class="text-body-secondary mb-0">Firmy, karty paliwowe i firmowe ulubione stacje.</p></div>
{% if current_user.role == 'admin' %}<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#createCompanyModal">Dodaj firmę</button>{% endif %}
</div>
{% include '_admin_nav.html' %}
<div class="row g-4">
<div class="col-xl-4 col-xxl-3">
<div class="card h-100">
<div class="card-header"><strong>Firmy</strong></div>
<div class="card-body border-bottom">
<form method="get" action="{{ url_for('main.admin_companies') }}" class="ajax-nav-form">
<div class="input-group"><input class="form-control" name="q" value="{{ q }}" placeholder="Szukaj firmy"><button class="btn btn-secondary">Szukaj</button></div>
</form>
</div>
<div class="list-group list-group-flush">
{% for c in companies_page.items %}
<a href="{{ url_for('main.admin_companies', company_id=c.id, q=q, page=companies_page.page) }}" class="list-group-item list-group-item-action ajax-nav-link {% if selected_company and selected_company.id == c.id %}active{% endif %}">
<div class="d-flex justify-content-between gap-2"><strong class="text-truncate">{{ c.name }}</strong><span class="badge {% if c.active %}text-bg-success{% else %}text-bg-secondary{% endif %}">{{ 'aktywna' if c.active else 'wyłączona' }}</span></div>
<div class="small {% if selected_company and selected_company.id == c.id %}text-white-50{% else %}text-body-secondary{% endif %}">{{ c.entity_type }} · {{ c.region }} · {{ c.users|length }} użytk.</div>
</a>
{% else %}<div class="p-4 text-center text-body-secondary">Brak firm.</div>{% endfor %}
</div>
{% if companies_page.pages > 1 %}
<div class="card-footer"><nav><ul class="pagination pagination-sm mb-0 justify-content-center">
{% for p in companies_page.iter_pages() %}{% if p %}<li class="page-item {% if p == companies_page.page %}active{% endif %}"><a class="page-link ajax-nav-link" href="{{ url_for('main.admin_companies', page=p, q=q, company_id=selected_company.id if selected_company else none) }}">{{ p }}</a></li>{% else %}<li class="page-item disabled"><span class="page-link"></span></li>{% endif %}{% endfor %}
</ul></nav></div>{% endif %}
</div>
</div>
<div class="col-xl-8 col-xxl-9">
{% if selected_company %}
<div class="card mb-4"><div class="card-header d-flex justify-content-between align-items-center"><div><strong>{{ selected_company.name }}</strong><div class="small text-body-secondary">Ustawienia firmy</div></div><span class="badge text-bg-secondary">ID {{ selected_company.id }}</span></div>
<div class="card-body">
<form action="/api/companies/{{ selected_company.id }}" data-method="PUT" class="ajax-form row g-3">
<div class="col-lg-5"><label class="form-label">Nazwa firmy</label><input class="form-control" name="name" value="{{ selected_company.name }}" required></div>
<div class="col-md-4 col-lg-3"><label class="form-label">Forma prawna</label><select class="form-select" name="entity_type"><option {% if selected_company.entity_type=='JDG' %}selected{% endif %}>JDG</option><option {% if selected_company.entity_type=='Sp. z o.o.' %}selected{% endif %}>Sp. z o.o.</option><option {% if selected_company.entity_type=='Inna' %}selected{% endif %}>Inna</option></select></div>
<div class="col-md-8 col-lg-4"><label class="form-label">Województwo</label><select class="form-select" name="region">{% for r in regions %}<option value="{{r}}" {% if selected_company.region==r %}selected{% endif %}>{{r}}</option>{% endfor %}</select></div>
<div class="col-md-4"><label class="form-label">Stawka VAT (%)</label><input class="form-control" type="number" min="0" step="0.01" name="vat_rate" value="{{ selected_company.vat_rate }}"></div>
<div class="col-md-4"><label class="form-label">Odliczenie VAT (%)</label><input class="form-control" type="number" min="0" max="100" step="0.01" name="vat_deduction_percent" value="{{ selected_company.vat_deduction_percent }}"></div>
<div class="col-md-4"><label class="form-label">Podział faktury po dniu</label><input class="form-control" type="number" min="1" max="28" name="invoice_split_day" value="{{ selected_company.invoice_split_day }}"></div>
<div class="col-12 d-flex justify-content-between align-items-center"><div class="form-check"><input class="form-check-input" name="active" type="checkbox" id="company-active" {% if selected_company.active %}checked{% endif %}><label class="form-check-label" for="company-active">Firma aktywna</label></div><button class="btn btn-primary">Zapisz ustawienia</button></div>
</form>
</div>
</div>
<div class="card mb-4"><div class="card-header"><strong>Karty paliwowe</strong></div><div class="card-body">
<form action="/api/fuel-cards" method="post" class="ajax-form row g-3 mb-4"><input type="hidden" name="company_id" value="{{selected_company.id}}"><div class="col-md-4"><label class="form-label">Nazwa karty</label><input class="form-control" name="name" placeholder="Np. UTA flota główna" required></div><div class="col-md-3"><label class="form-label">Operator karty</label><input class="form-control" name="provider" placeholder="UTA, DKV, Orlen" required></div><div class="col-md-3"><label class="form-label">Opis</label><input class="form-control" name="description" placeholder="Opcjonalnie"></div><div class="col-md-2 d-flex align-items-end"><button class="btn btn-primary w-100">Dodaj kartę</button></div></form>
<div class="table-responsive"><table class="table table-hover align-middle mb-0"><thead><tr><th>Karta</th><th>Operator karty</th><th>Opis</th><th>Status</th></tr></thead><tbody>{% for card in fuel_cards %}<tr><td><strong>{{card.name}}</strong></td><td>{{card.provider}}</td><td>{{card.description or '—'}}</td><td><span class="badge {% if card.active %}text-bg-success{% else %}text-bg-secondary{% endif %}">{{'aktywna' if card.active else 'wyłączona'}}</span></td></tr>{% else %}<tr><td colspan="4" class="text-center text-body-secondary py-4">Brak kart paliwowych.</td></tr>{% endfor %}</tbody></table></div>
</div></div>
<div class="card"><div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-md-center gap-3"><div><h2 class="h5 mb-1">Ulubione stacje firmy</h2><p class="text-body-secondary mb-0">Do 25 stacji. Pusta lista oznacza 10 największych sieci w Polsce.</p></div><button class="btn btn-secondary" data-bs-toggle="modal" data-bs-target="#companyFavoritesModal">Edytuj ulubione</button></div></div>
<div class="modal fade" id="companyFavoritesModal" tabindex="-1"><div class="modal-dialog modal-lg modal-dialog-scrollable"><div class="modal-content"><form action="/api/companies/{{selected_company.id}}/favorite-stations" data-method="PUT" class="ajax-form favorite-station-form" data-max-favorites="25"><div class="modal-header"><h2 class="modal-title fs-5">Ulubione stacje: {{selected_company.name}}</h2><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><input class="form-control mb-3 station-modal-search" placeholder="Szukaj po nazwie sieci, firmy lub punktu"><div class="table-responsive"><table class="table table-hover align-middle"><thead><tr><th></th><th>Nazwa</th><th class="text-end">Punkty</th></tr></thead><tbody>{% for s in stations %}<tr data-station-name="{{(s.display_name ~ ' ' ~ s.company_name ~ ' ' ~ (s.station_name_list|join(' ')))|lower}}"><td><input class="form-check-input" type="checkbox" name="station_ids" value="{{s.id}}" {% if s in selected_company.favorite_stations %}checked{% endif %}></td><td><strong>{{s.display_name}}</strong>{% if s.company_name != s.display_name %}<div class="small text-body-secondary">{{s.company_name}}</div>{% endif %}</td><td class="text-end">{{s.station_count}}</td></tr>{% endfor %}</tbody></table></div></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Anuluj</button><button class="btn btn-primary">Zapisz</button></div></form></div></div></div>
{% else %}<div class="card"><div class="card-body text-center text-body-secondary py-5">Dodaj lub wybierz firmę.</div></div>{% endif %}
</div>
</div>
{% if current_user.role == 'admin' %}<div class="modal fade" id="createCompanyModal" tabindex="-1"><div class="modal-dialog"><div class="modal-content"><form action="/api/companies" method="post" class="ajax-form"><div class="modal-header"><h2 class="modal-title fs-5">Dodaj firmę</h2><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><div class="mb-3"><label class="form-label">Nazwa firmy</label><input class="form-control" name="name" required></div><div class="row g-3"><div class="col-md-6"><label class="form-label">Forma prawna</label><select class="form-select" name="entity_type"><option>JDG</option><option>Sp. z o.o.</option><option>Inna</option></select></div><div class="col-md-6"><label class="form-label">Województwo</label><select class="form-select" name="region">{% for r in regions %}<option value="{{r}}">{{r}}</option>{% endfor %}</select></div><div class="col-md-6"><label class="form-label">Stawka VAT (%)</label><input class="form-control" type="number" name="vat_rate" value="23" step="0.01"></div><div class="col-md-6"><label class="form-label">Odliczenie VAT (%)</label><input class="form-control" type="number" name="vat_deduction_percent" value="50" step="0.01"></div></div></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Anuluj</button><button class="btn btn-primary">Dodaj firmę</button></div></form></div></div></div>{% endif %}
{% endblock %}