ui changes

This commit is contained in:
Faheedkhan 2025-08-20 20:23:03 +03:00
parent ce644d9d33
commit dcd30b0bb2
12 changed files with 130 additions and 68 deletions

View File

@ -2813,12 +2813,15 @@ def vendorDetailView(request, dealer_slug, slug):
"""
dealer = get_object_or_404(models.Dealer, slug=dealer_slug)
vendor = get_object_or_404(models.Vendor, slug=slug,dealer=dealer)
cars=vendor.cars.all()
total_cars_from_vendor=cars.count()
vendor_makes=cars.values('id_car_make__name').annotate(make_count=Count('id_car_make__name'))
vendor_bills=BillModel.objects.filter(vendor=vendor.vendor_model)
paginator=Paginator(vendor_bills,20)
page_number = request.GET.get("page")
page_obj=paginator.get_page(page_number)
return render(
request, template_name="vendors/view_vendor.html", context={"vendor": vendor,"vendor_bills":page_obj}
request, template_name="vendors/view_vendor.html", context={"vendor": vendor,"vendor_bills":page_obj,"total_cars_from_vendor":total_cars_from_vendor,"vendor_makes":vendor_makes}
)

View File

@ -20,8 +20,12 @@
<h6 class="text-uppercase text-xs text-muted mb-2">
{% trans 'Cash Account' %}:
<a href="{% url 'account_detail' request.dealer.slug bill.cash_account.uuid %}"
{% if bill.cash_account %}
<a href="{% url 'account_detail' request.dealer.slug bill.cash_account.coa_model.pk bill.cash_account.uuid %}"
class="text-decoration-none ms-1">{{ bill.cash_account.code }}</a>
{% else %}
{{ bill.cash_account.code }}
{% endif %}
</h6>
<h4 class="mb-0" id="djl-bill-detail-amount-paid">
{% currency_symbol %}{{ bill.get_amount_cash | absolute | currency_format }}
@ -33,10 +37,14 @@
<h6 class="text-uppercase text-xs text-muted mb-2">
{% trans 'Prepaid Account' %}:
<a href="{% url 'account_detail' request.dealer.slug bill.prepaid_account.uuid %}"
{% if bill.prepaid_account %}
<a href="{% url 'account_detail' request.dealer.slug bill.prepaid_account.coa_model.pk bill.prepaid_account.uuid %}"
class="text-decoration-none ms-1">
{{ bill.prepaid_account.code }}
</a>
{% else %}
{{ bill.prepaid_account.code }}
{% endif %}
</h6>
<h4 class="text-success mb-0" id="djl-bill-detail-amount-prepaid">
{% currency_symbol %}{{ bill.get_amount_prepaid | currency_format }}
@ -47,10 +55,14 @@
<h6 class="text-uppercase text-xs text-muted mb-2">
{% trans 'Accounts Payable' %}:
<a href="{% url 'account_detail' request.dealer.slug bill.unearned_account.uuid %}"
class="text-decoration-none ms-1">
{{ bill.unearned_account.code }}
</a>
{% if bill.unearned_account %}
<a href="{% url 'account_detail' request.dealer.slug bill.unearned_account.coa_model.pk bill.unearned_account.uuid %}"
class="text-decoration-none ms-1">
{{ bill.unearned_account.code }}
</a>
{% else %}
{{ bill.unearned_account.code }}
{% endif %}
</h6>
<h4 class="text-danger mb-0" id="djl-bill-detail-amount-unearned">
{% currency_symbol %}{{ bill.get_amount_unearned | currency_format }}

View File

@ -39,9 +39,9 @@
</div>
<div class="d-grid gap-2 mt-4">
<button type="submit" class="btn btn-primary btn-lg">Submit</button>
<a href="{% url 'coa-list' request.dealer.slug request.entity.slug %}" class="btn btn-outline-dark">
<div class="d-flex justify-content-center gap-2 mt-4">
<button type="submit" class="btn btn-phoenix-primary">Submit</button>
<a href="{% url 'coa-list' request.dealer.slug request.entity.slug %}" class="btn btn-phoenix-secondary">
{% trans 'Back' %}
</a>
</div>

View File

@ -9,18 +9,18 @@
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="display-4 mb-0">Chart of Accounts</h1>
<a href="{% url 'coa-create' request.dealer.slug request.entity.slug %}" class="btn btn-success btn-lg">
{% icon 'carbon:add-alt' 24 %} Add New
<h1 class="display-4 mb-0">{% trans "Chart of Accounts" %}</h1>
<a href="{% url 'coa-create' request.dealer.slug request.entity.slug %}" class="btn btn-phoenix-primary">
<i class="fa-solid fa-plus"></i> {% trans "Add New" %}
</a>
</div>
{% if not inactive %}
<a class="btn btn-warning mb-4" href="{% url 'coa-list-inactive' request.dealer.slug request.entity.slug %}">
<a class="btn btn-phoenix-warning mb-4" href="{% url 'coa-list-inactive' request.dealer.slug request.entity.slug %}">
{% trans 'Show Inactive' %}
</a>
{% else %}
<a class="btn btn-warning mb-4" href="{% url 'coa-list' request.dealer.slug request.entity.slug %}">
<a class="btn btn-phoenix-warning mb-4" href="{% url 'coa-list' request.dealer.slug request.entity.slug %}">
{% trans 'Show Active' %}
</a>
{% endif %}

View File

@ -32,13 +32,13 @@
</div>
<div class="d-grid gap-2 mt-4">
<button class="btn btn-primary" type="submit">
Update
<div class="d-flex justify-content-center gap-2 mt-4">
<button class="btn btn-phoenix-primary" type="submit">
{% trans 'Update'%}
</button>
<a class="btn btn-outline-secondary"
<a class="btn btn-phoenix-secondary"
href="{% url 'coa-list' request.dealer.slug request.entity.slug %}">
Back
{% trans 'Back'%}
</a>
</div>
</form>

View File

@ -3,33 +3,37 @@
{% now "Y" as current_year %}
<div class="card shadow-sm border-0 mb-4">
<div class="card-header {% if coa_model.is_default %}bg-success text-white{% elif not coa_model.is_active %}bg-danger text-white{% endif %} py-3">
<div class="d-flex align-items-center">
<div class="me-3">
<i class="fas fa-building fa-2x"></i>
</div>
<div class="fw-bold fs-5">
<div class="card-header {% if coa_model.is_default %}bg-gray-100{% elif not coa_model.is_active %}bg-danger text-white{% endif %} py-3 d-flex align-items-center">
<div class="me-3">
<i class="fas fa-building fa-2x"></i>
</div>
<div class="flex-grow-1">
<h5 class="fw-bold mb-0">
{{ coa_model.name }}
{% if coa_model.is_default %}
<span class="badge bg-light text-dark ms-2">{% trans 'DEFAULT' %}</span>
<span class="badge bg-light text-primary ms-2 d-none d-sm-inline">{% trans 'DEFAULT' %}</span>
{% endif %}
</div>
</h5>
{% if coa_model.is_default %}
<span class="badge bg-light text-primary mt-1 d-sm-none">{% trans 'DEFAULT' %}</span>
{% endif %}
</div>
<div class="ms-auto d-flex flex-column align-items-end">
{% if coa_model.is_active %}
<span class="badge bg-success"><i class="fas fa-check-circle"></i> {% trans 'Active' %}</span>
{% else %}
<span class="badge bg-danger"><i class="fas fa-times-circle"></i> {% trans 'Inactive' %}</span>
{% endif %}
{% if coa_model.is_default %}
<span class="badge bg-primary-subtle text-primary mt-1">{% trans 'Entity Default' %}</span>
{% endif %}
</div>
</div>
<div class="card-body">
<div class="row g-3">
<div class="col-md-6">
<div class="d-flex align-items-center mb-2">
<span class="fw-bold me-2">{% trans 'Entity Default' %}:</span>
{% if coa_model.is_default %}
<span class="badge bg-success"><i class="fas fa-check-circle"></i></span>
{% else %}
<span class="badge bg-danger"><i class="fas fa-times-circle"></i></span>
{% endif %}
</div>
<div class="d-flex align-items-center mb-2">
<div class="col-sm-6">
<div class="d-flex flex-wrap align-items-center mb-2">
<span class="fw-bold me-2">{% trans 'Is Active' %}:</span>
{% if coa_model.is_active %}
<span class="badge bg-success"><i class="fas fa-check-circle"></i></span>
@ -37,14 +41,13 @@
<span class="badge bg-danger"><i class="fas fa-times-circle"></i></span>
{% endif %}
</div>
<div class="mb-2">
<span class="fw-bold">CoA ID:</span>
<span class="text-muted ms-2">{{ coa_model.slug }}</span>
</div>
</div>
<div class="col-md-6">
<div class="col-sm-6">
<div class="mb-2">
<span class="fw-bold"><i class="fas fa-list-alt me-1"></i> {% trans 'Total Accounts' %}:</span>
<span class="ms-2">{{ coa_model.accountmodel_total__count }}</span>
@ -64,50 +67,50 @@
<hr class="my-3">
<div class="row">
<div class="col-md-6">
<small class="text-muted">
<div class="row g-2">
<div class="col-sm-6">
<small class="text-muted d-block">
<i class="far fa-calendar-plus me-1"></i>
<span class="fw-bold">{% trans 'Created' %}:</span>
{{ coa_model.created|date }}
<span class="d-block d-md-inline-block">{{ coa_model.created|date }}</span>
</small>
</div>
<div class="col-md-6">
<small class="text-muted">
<div class="col-sm-6">
<small class="text-muted d-block">
<i class="far fa-clock me-1"></i>
<span class="fw-bold">{% trans 'Updated' %}:</span>
{{ coa_model.created|timesince }} {% trans 'ago' %}
<span class="d-block d-md-inline-block">{{ coa_model.created|timesince }} {% trans 'ago' %}</span>
</small>
</div>
</div>
</div>
<div class="card-footer bg-transparent border-top-0">
<div class="card-footer bg-transparent border-top-0 pt-0 pt-sm-3">
<div class="d-flex flex-wrap gap-2">
<a href="{% url 'coa-update' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-outline-warning fw-bold">
<a href="{% url 'coa-update' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-phoenix-warning fw-bold flex-grow-1 flex-sm-grow-0">
<i class="fas fa-edit me-1"></i> {% trans 'Update' %}
</a>
<a href="{% url 'account_list' request.dealer.slug coa_model.pk %}" class="btn btn-sm btn-outline-success fw-bold">
<a href="{% url 'account_list' request.dealer.slug coa_model.pk %}" class="btn btn-sm btn-phoenix-success fw-bold flex-grow-1 flex-sm-grow-0">
<i class="fas fa-book me-1"></i> {% trans 'Accounts' %}
</a>
<a href="{% url 'account_create' request.dealer.slug coa_model.pk %}" class="btn btn-sm btn-outline-info fw-bold">
<a href="{% url 'account_create' request.dealer.slug coa_model.pk %}" class="btn btn-sm btn-phoenix-info fw-bold flex-grow-1 flex-sm-grow-0">
<i class="fas fa-plus-circle me-1"></i> {% trans 'Add Account' %}
</a>
{% if coa_model.can_mark_as_default %}
<a href="{% url 'coa-action-mark-as-default' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-outline-danger fw-bold">
<a href="{% url 'coa-action-mark-as-default' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-phoenix-danger fw-bold flex-grow-1 flex-sm-grow-0">
<i class="fas fa-star me-1"></i> {% trans 'Mark as Default' %}
</a>
{% endif %}
{% if coa_model.can_deactivate %}
<a href="{% url 'coa-action-mark-as-inactive' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-outline-warning fw-bold">
<a href="{% url 'coa-action-mark-as-inactive' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-phoenix-warning fw-bold flex-grow-1 flex-sm-grow-0">
<i class="fas fa-toggle-off me-1"></i> {% trans 'Mark as Inactive' %}
</a>
{% elif coa_model.can_activate %}
<a href="{% url 'coa-action-mark-as-active' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-outline-success fw-bold">
<a href="{% url 'coa-action-mark-as-active' request.dealer.slug request.entity.slug coa_model.slug %}" class="btn btn-sm btn-phoenix-success fw-bold flex-grow-1 flex-sm-grow-0">
<i class="fas fa-toggle-on me-1"></i> {% trans 'Mark as Active' %}
</a>
{% endif %}

View File

@ -73,9 +73,9 @@
<td class="text-center">
{% if f.instance.bill_model %}
{% if f.instance.bill_model.is_paid %}
<span class="text-success">{% icon 'bi:check-circle-fill' 24 %}</span>
<span class="text-success">{% trans 'Yes' %}</span>
{% else %}
<span class="text-danger">{% icon 'clarity:no-access-solid' 24 %}</span>
<span class="text-danger">{% trans 'No' %}</span>
{% endif %}
{% endif %}
</td>

View File

@ -10,7 +10,7 @@
</div>
<div class="col-auto">
<a href="{% url 'staff_password_reset' request.dealer.slug staff.pk %}"
class="btn btn-phoenix-primary btn-lg shadow-sm">
class="btn btn-phoenix-danger btn-lg shadow-sm">
<i class="fas fa-key me-2"></i>{{ _("Change Password") }}
</a>
</div>

View File

@ -5,11 +5,12 @@
{{ user_.name }}
{% endblock title %}
{% block content %}
<div class="container py-4">
<div class="d-flex flex-wrap justify-content-between align-items-center mb-4">
<div class="d-flex align-items-center mb-3 mb-md-0">
<a href="{% url 'user_list' request.dealer.slug %}" class="btn btn-phoenix-secondary btn-sm me-3">
<i class="fa-regular fa-circle-left me-2"></i>{% trans "Back to Staff" %}
<i class="fa-regular fa-circle-left me-2"></i>{% trans "Back to Staffs" %}
</a>
<h1 class="h4 fw-bold mb-0">{% trans "Staff Profile" %}</h1>
</div>
@ -22,6 +23,10 @@
data-bs-toggle="modal" data-bs-target="#deleteModal">
<i class="fas fa-trash-alt me-2"></i>{% trans "Delete" %}
</button>
<a href="{% url 'staff_password_reset' request.dealer.slug user_.pk %}"
class="btn btn-phoenix-danger">
<i class="fas fa-key me-2"></i>{{ _("Change Password") }}
</a>
</div>
</div>
@ -32,12 +37,12 @@
<div class="position-relative d-inline-block mb-3">
{% if user_.logo %}
<img class="rounded-circle border border-4 border-body-tertiary"
src="{{ user_.logo.url }}" alt="{{ user_.name }}"
src="{{ user_.logo.url }}" alt="{{ user_.fullname }}"
style="object-fit: cover; width: 120px; height: 120px;">
{% else %}
<div class="rounded-circle d-inline-flex align-items-center justify-content-center bg-primary text-white border border-4 border-body-tertiary"
style="width: 120px; height: 120px; font-size: 3rem;">
{{ user_.name|first|upper }}
{{ user_.fullname|first|upper }}
</div>
{% endif %}
</div>

View File

@ -32,7 +32,6 @@
{{ redirect_field }}
{{ form.first_name|as_crispy_field }}
{{ form.last_name|as_crispy_field }}
{{ form.name|as_crispy_field }}
{{ form.arabic_name|as_crispy_field }}
{{ form.email|as_crispy_field }}
{{ form.phone_number|as_crispy_field }}

View File

@ -49,16 +49,16 @@
<img class="avatar-img rounded-circle"
src="{{ user.thumbnail.url }}"
onerror="this.src='/static/user-logo.jpg'"
alt="{{ user.name }}'s logo">
alt="{{ user.fullname }}'s logo">
{% else %}
<div class="rounded-circle bg-light d-flex justify-content-center align-items-center text-secondary" style="width: 2.5rem; height: 2.5rem; font-size: 1rem;">
{{ user.name|first|upper }}
{{ user.fullname|first|upper }}
</div>
{% endif %}
</div>
<a class="fw-bold text-decoration-none text-dark"
href="{% url 'user_detail' request.dealer.slug user.slug %}">
{{ user.name }}
{{ user.fullname }}
</a>
</div>
</td>

View File

@ -3,14 +3,17 @@
{% block title %}
{% trans "View Vendor" %}
{% endblock title %}
{% block customCSS %}
{% endblock %}
{% block content %}
<!-- Vendor Details -->
<div class="row mt-4">
<div class="card shadow rounded">
<p class="card-header mb-0 fs-5">{% trans "Vendor Details" %}</p>
<div class="card-body">
<div class="row justify-content-start">
<div class="col-6 col-sm-auto mb-sm-2">
<div class="col-md-4 col-sm-auto mb-sm-2">
<div class="avatar avatar-5xl">
{% if vendor.logo%}<img class="rounded-circle" src="{{ vendor.logo.url }}" alt="" />{% endif %}
</div>
@ -37,7 +40,7 @@
</div>
</div>
<div class="col-6 col-sm-auto mb-sm-2">
<div class="col-md-4 col-sm-auto mb-2">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<strong>{% trans "Name" %}:</strong> {{ vendor.get_local_name }} </li>
@ -55,6 +58,43 @@
</li>
</ul>
</div>
<div class="col-md-4 col-sm-auto mb-sm-2">
<div class="table-responsive overflow-auto" style="max-height:250px;">
<table class="table">
<thead>
<tr>
<th scope="col">{% trans "Make" %}</th>
<th scope="col">{% trans "Total Cars Purchased" %}</th>
</tr>
</thead>
<tbody>
{% for make in vendor_makes%}
<tr>
<td class="align-middle">{{ make.id_car_make__name }}</td>
<td class="align-middle ">{{make.make_count}}</td>
</tr>
{% empty %}
<tr>
<td colspan="2" class="text-center text-muted">{% trans "There is no Purchase from this vendor yet" %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
@ -86,7 +126,7 @@
</tr>
{% empty %}
<tr>
<td colspan="6" class="text-center text-muted">{% trans "No Bills Found For the Vendor: {vendor.get_local_name}" %}</td>
<td colspan="6" class="text-center text-muted">{% trans "No Bills Found For the Vendor : " %}{{vendor.get_local_name}}</td>
</tr>
{% endfor %}
</tbody>