Dealer and staff detail and dashboard #178

Merged
ismail merged 11 commits from frontend into main 2025-08-11 13:03:13 +03:00
6 changed files with 91 additions and 37 deletions
Showing only changes of commit c239bf4a7f - Show all commits

View File

@ -2945,7 +2945,7 @@ class CustomGroup(models.Model):
"customgroup",
"saleorder",
"payment",
"staff",
# "staff",
"schedule",
"activity",
"opportunity",
@ -3028,7 +3028,7 @@ class CustomGroup(models.Model):
allowed_models=[
"saleorder",
# "payment",
"staff",
# "staff",
"schedule",
"activity",
"lead",

View File

@ -2198,7 +2198,7 @@ class DealerUpdateView(
def get_success_url(self):
return reverse("dealer_detail", kwargs={"slug": self.object.slug})
class StaffDetailView(LoginRequiredMixin, DetailView):
class StaffDetailView(LoginRequiredMixin,DetailView):
"""
Represents a detailed view for a Dealer model.
@ -2645,9 +2645,14 @@ def vendorDetailView(request, dealer_slug, slug):
:return: An HttpResponse object containing the rendered vendor detail page.
:rtype: HttpResponse
"""
vendor = get_object_or_404(models.Vendor, slug=slug)
dealer = get_object_or_404(models.Dealer, slug=dealer_slug)
vendor = get_object_or_404(models.Vendor, slug=slug,dealer=dealer)
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}
request, template_name="vendors/view_vendor.html", context={"vendor": vendor,"vendor_bills":page_obj}
)

View File

@ -260,7 +260,7 @@
</button>
{% modal_action_v2 bill bill.get_mark_as_canceled_url bill.get_mark_as_canceled_message bill.get_mark_as_canceled_html_id %}
{% endif %}
{% endif %}
{% endif %}
</div>
</div>

View File

@ -11,12 +11,8 @@
</div>
<div class="col-auto">
<div class="row g-2 g-sm-3">
<div class="col-auto">
<a class="btn btn-phoenix-primary"
href="{% url 'user_update' request.dealer.slug request.staff.slug %}"><span class="fas fa-edit me-2 text-primary"></span>{{ _("Edit") }} </a>
</div>
<div class="col-auto">
<a href="{% url 'staff_password_reset' request.dealer.slug staff.user.pk %}" 'staff_password_reset' request.dealer.slug user_.pk
<a href="{% url 'staff_password_reset' request.dealer.slug staff.pk %}"
class="btn btn-phoenix-danger"><span class="fas fa-key me-2"></span>{{ _("Change Password") }}</a>
</div>
</div>
@ -49,9 +45,14 @@
<div class="col-12 col-sm-auto flex-1">
<h3>{{ staff.get_local_name }}</h3>
<p class="text-body-secondary">{{staff.user.groups.name}}</p>
<p>
{% trans 'Role' %}:
{% for group in staff.groups%}
<span class="text-body-secondary me-2">&nbsp;{{group}}</span>
{% endfor %}
</p>
<p class="text-body-secondary">{% trans 'Joined' %} {{ staff.created|timesince }} {% trans 'ago' %}</p>
<div></div>
</div>
</div>
</div>

View File

@ -98,7 +98,7 @@
<i class="fa-regular fa-circle-left"></i>
</a>
<a class="btn btn-sm btn-phoenix-secondary"
href="{% url 'staff_password_reset' request.dealer.slug %}">
href="{% url 'staff_password_reset' request.dealer.slug user_.pk %}">
{{ _("Reset Password") }}
<i class="fa-solid fa-key"></i>
</a>

View File

@ -9,15 +9,38 @@
<div class="card shadow rounded">
<p class="card-header mb-0 fs-5">{% trans "Vendor Details" %}</p>
<div class="card-body">
<div class="col-12 col-sm-auto mb-sm-2">
<div class="row justify-content-start">
<div class="col-6 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>
<div class="card-footer d-flex">
{% if perms.django_ledger.change_vendormodel %}
<a class="btn btn-sm btn-phoenix-primary me-3"
href="{% url 'vendor_update' request.dealer.slug vendor.slug %}">
<i class="fa fa-pencil me-1"></i>
{% trans "Edit" %}
</a>
{% endif %}
{% if perms.django_ledger.delete_vendormodel %}
<button class="btn btn-phoenix-danger btn-sm delete-btn"
data-url="{% url 'vendor_delete' request.dealer.slug vendor.slug %}"
data-message="{{ _("Are you sure you want to delete this vendor") }}?"
data-bs-toggle="modal"
data-bs-target="#deleteModal">
<i class="fas fa-trash me-1"></i>
{{ _("Delete") }}
</button>
{% endif %}
</div>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">
<strong>{% trans "Name" %}:</strong> {{ vendor.get_local_name }}
</li>
<div class="col-6 col-sm-auto mb-sm-2">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<strong>{% trans "Name" %}:</strong> {{ vendor.get_local_name }} </li>
<li class="list-group-item">
<strong>{% trans "Contact Person" %}:</strong> {{ vendor.contact_person }}
</li>
@ -31,28 +54,53 @@
<strong>{% trans "Address" %}:</strong> {{ vendor.address }}
</li>
</ul>
</div>
</div>
<div class="card-footer d-flex">
{% if perms.django_ledger.change_vendormodel %}
<a class="btn btn-sm btn-phoenix-primary me-1"
href="{% url 'vendor_update' request.dealer.slug vendor.slug %}">
{% trans "Edit" %}
<i class="fa fa-pencil"></i>
</a>
{% endif %}
{% if perms.django_ledger.delete_vendormodel %}
<button class="btn btn-phoenix-danger btn-sm delete-btn"
data-url="{% url 'vendor_delete' request.dealer.slug vendor.slug %}"
data-message="{{ _("Are you sure you want to delete this vendor") }}?"
data-bs-toggle="modal"
data-bs-target="#deleteModal">
{{ _("Delete") }}
<i class="fas fa-trash"></i>
</button>
{% endif %}
</div>
</div>
<div class="table-responsive px-1 scrollbar mt-3">
<table class= "table align-items-center table-flush table-hover">
<thead>
<tr class="bg-body-highlight">
<th class="sort white-space-nowrap align-middle" scope="col">{{ _("Bill") |capfirst }}</th>
<th class="sort white-space-nowrap align-middle" scope="col">{{ _("Bill Status") |capfirst }}</th>
<th class="sort white-space-nowrap align-middle" scope="col">{{ _("Bill Amount Paid") |capfirst }}</th>
<th class="sort white-space-nowrap align-middle" scope="col">{{ _("Bill Amount Due") |capfirst }}</th>
</tr>
</thead>
<tbody class="list">
{% for bill in vendor_bills%}
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
<td class="align-middle product white-space-nowrap ps-1">
<a class="text-body-highlight" href="{% url 'bill-detail' request.dealer.slug request.dealer.entity.slug bill.pk%}">{{ bill.bill_number }}</a>
</td>
<td class="align-middle product white-space-nowrap">{{ bill.bill_status }}</td>
<td class="align-middle product white-space-nowrap">{{ bill.amount_paid}}</td>
<td class="align-middle product white-space-nowrap">{{ bill.amount_due}}</td>
</tr>
{% empty %}
<tr>
<td colspan="6" class="text-center text-muted">{% trans "No Bills Found For the Vendor: {vendor.get_local_name}" %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="d-flex justify-content-end mt-3">
<div class="d-flex">
{% if is_paginated %}
{% include 'partials/pagination.html' %}
{% endif %}
</div>
</div>
</div>
{% include 'modal/delete_modal.html' %}
{% endblock %}