264 lines
21 KiB
HTML
264 lines
21 KiB
HTML
{% extends 'base.html' %}
|
|
{% load i18n static humanize %}
|
|
{% block title %}
|
|
{{ _("Leads") |capfirst }}
|
|
{% endblock title %}
|
|
{% block content %}
|
|
{% if page_obj.object_list or request.GET.q %}
|
|
<div class="row g-3 mt-4 mb-4">
|
|
<h2 class="mb-2">
|
|
{{ _("Leads") |capfirst }}
|
|
<li class="fas fa-bullhorn text-primary ms-2"></li>
|
|
</h2>
|
|
<!-- Action Tracking Modal -->
|
|
{% comment %} {% include "crm/leads/partials/update_action.html" %} {% endcomment %}
|
|
<div class="row g-3 justify-content-between mb-4">
|
|
<div class="col-auto">
|
|
<div class="d-md-flex justify-content-between">
|
|
{% if perms.inventory.add_lead %}
|
|
<div>
|
|
<a href="{% url 'lead_create' request.dealer.slug %}"
|
|
class="btn btn-sm btn-phoenix-primary"><span class="fas fa-plus me-2"></span>{{ _("Add Lead") }}</a>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="col-auto">
|
|
<div class="d-flex">{% include 'partials/search_box.html' %}</div>
|
|
</div>
|
|
</div>
|
|
<div class="row g-3">
|
|
<div class="col-12">
|
|
{% if page_obj.object_list or request.GET.q %}
|
|
<div class="table-responsive scrollbar mx-n1 px-1">
|
|
<table class="table align-items-center table-flush table-hover">
|
|
<thead>
|
|
<tr class="bg-body-highlight">
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 20%">{{ _("Lead Name") |capfirst }}</th>
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 15%">
|
|
<div class="d-inline-flex flex-center">
|
|
<div class="d-flex align-items-center px-1 py-1 bg-success-subtle rounded me-2">
|
|
<i class="text-success-dark fas fa-car"></i>
|
|
</div>
|
|
<span>{{ _("Car") |capfirst }}</span>
|
|
</div>
|
|
</th>
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 15%">
|
|
<div class="d-inline-flex flex-center">
|
|
<div class="d-flex align-items-center px-1 py-1 bg-success-subtle rounded me-2">
|
|
<span class="text-success-dark" data-feather="mail"></span>
|
|
</div>
|
|
<span>{{ _("email") |capfirst }}</span>
|
|
</div>
|
|
</th>
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 15%">
|
|
<div class="d-inline-flex flex-center">
|
|
<div class="d-flex align-items-center px-1 py-1 bg-primary-subtle rounded me-2">
|
|
<span class="text-primary-dark" data-feather="phone"></span>
|
|
</div>
|
|
<div class="" dir="ltr">{{ _("Phone Number") }}</div>
|
|
</div>
|
|
</th>
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 10%">
|
|
<div class="d-inline-flex flex-center">
|
|
<div class="d-flex align-items-center bg-warning-subtle rounded me-2">
|
|
<span class="text-warning-dark" data-feather="zap"></span>
|
|
</div>
|
|
<span>{{ _("Next Action") |capfirst }}</span>
|
|
</div>
|
|
</th>
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 15%">
|
|
<div class="d-inline-flex flex-center">
|
|
<div class="d-flex align-items-center px-1 py-1 bg-primary-subtle rounded me-2">
|
|
<span class="far fa-calendar-alt"></span>
|
|
</div>
|
|
<span>{{ _("Scheduled at") }}</span>
|
|
</div>
|
|
</th>
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 10%">
|
|
<div class="d-inline-flex flex-center">
|
|
<div class="d-flex align-items-center bg-success-subtle rounded me-2">
|
|
<span class="text-success-dark" data-feather="user-check"></span>
|
|
</div>
|
|
<span>{{ _("Assigned To") |capfirst }}</span>
|
|
</div>
|
|
</th>
|
|
{% comment %} <th class="align-middle white-space-nowrap text-uppercase" scope="col" style="width: 10%;">
|
|
<div class="d-inline-flex flex-center">
|
|
<div class="d-flex align-items-center bg-warning-subtle rounded me-2"><span class="text-warning-dark" data-feather="grid"></span></div>
|
|
<span>{{ _("Opportunity")|capfirst }}</span>
|
|
</div>
|
|
</th> {% endcomment %}
|
|
<th class="align-middle white-space-nowrap text-uppercase"
|
|
scope="col"
|
|
style="width: 15%">{{ _("Action") }}</th>
|
|
<th class="text-end white-space-nowrap align-middle" scope="col"></th>
|
|
</tr>
|
|
{% for lead in leads %}
|
|
<!-- Delete Modal -->
|
|
<div class="modal fade"
|
|
id="deleteModal"
|
|
data-bs-backdrop="static"
|
|
data-bs-keyboard="false"
|
|
tabindex="-1"
|
|
aria-labelledby="deleteModalLabel"
|
|
aria-hidden="true">
|
|
<div class="modal-dialog modal-sm">
|
|
<div class="modal-content">
|
|
<div class="modal-header justify-content-between align-items-start gap-5 px-4 pt-4 pb-3 border-0">
|
|
<h4 class="mb-0 me-2 text-danger">
|
|
{{ _("Delete") }}<i class="fas fa-exclamation-circle text-danger ms-2"></i>
|
|
</h4>
|
|
<button class="btn p-0 text-body-quaternary fs-6"
|
|
data-bs-dismiss="modal"
|
|
aria-label="Close">
|
|
<span class="fas fa-times"></span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body p-4">
|
|
<p>{% trans "Are you sure you want to delete this lead?" %}</p>
|
|
</div>
|
|
<div class="modal-footer flex justify-content-center border-top-0">
|
|
<a type="button"
|
|
class="btn btn-sm btn-phoenix-danger w-100"
|
|
href="{% url 'lead_delete' request.dealer.slug lead.slug %}">
|
|
{% trans "Yes" %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<tbody>
|
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
|
<td class="name align-middle white-space-nowrap ps-1">
|
|
<div class="d-flex align-items-center">
|
|
<div>
|
|
<a class="fs-8 fw-bold"
|
|
href="{% url 'lead_detail' request.dealer.slug lead.slug %}">{{ lead.full_name|capfirst }}</a>
|
|
<div class="d-flex align-items-center">
|
|
<p class="mb-0 text-body-highlight fw-semibold fs-9 me-2"></p>
|
|
{% if lead.status == "new" %}
|
|
<span class="badge badge-phoenix badge-phoenix-primary"><span class="badge-label">{{ _("New") }}</span><span class="fa fa-bell ms-1"></span></span>
|
|
{% elif lead.status == "pending" %}
|
|
<span class="badge badge-phoenix badge-phoenix-warning"><span class="badge-label">{{ _("Pending") }}</span><span class="fa fa-clock-o ms-1"></span></span>
|
|
{% elif lead.status == "in_progress" %}
|
|
<span class="badge badge-phoenix badge-phoenix-info"><span class="badge-label">{{ _("In Progress") }}</span><span class="fa fa-wrench ms-1"></span></span>
|
|
{% elif lead.status == "qualified" %}
|
|
<span class="badge badge-phoenix badge-phoenix-success"><span class="badge-label">{{ _("Qualified") }}</span><span class="fa fa-check ms-1"></span></span>
|
|
{% elif lead.status == "contacted" %}
|
|
<span class="badge badge-phoenix badge-phoenix-info"><span class="badge-label">{{ _("Contacted") }}</span><span class="fa fa-times ms-1"></span></span>
|
|
{% elif lead.status == "canceled" %}
|
|
<span class="badge badge-phoenix badge-phoenix-danger"><span class="badge-label">{{ _("Canceled") }}</span><span class="fa fa-times ms-1"></span></span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td class="align-middle white-space-nowrap fw-semibold">
|
|
<a class="text-body-highlight" href="">{{ lead.id_car_make.get_local_name }} - {{ lead.id_car_model.get_local_name }} {{ lead.year }}</a>
|
|
</td>
|
|
<td class="align-middle white-space-nowrap fw-semibold">
|
|
<a class="text-body-highlight" href="">{{ lead.email }}</a>
|
|
</td>
|
|
<td class="align-middle white-space-nowrap fw-semibold">
|
|
<a class="text-body-highlight" href="tel:{{ lead.phone_number }}">{{ lead.phone_number }}</a>
|
|
</td>
|
|
<td class="align-middle white-space-nowrap text-body-tertiary text-opacity-85 fw-semibold text-body-highlight">
|
|
{{ lead.next_action|upper }}
|
|
</td>
|
|
<td class="align-middle white-space-nowrap fw-semibold">{{ lead.next_action_date|upper }}</td>
|
|
<td class="align-middle white-space-nowrap text-body-tertiary text-opacity-85 fw-semibold text-body-highlight">
|
|
<div class="d-flex align-items-center">
|
|
<div class="avatar avatar-tiny me-2">
|
|
{% if lead.staff.logo %}
|
|
<img class="avatar-img rounded-circle"
|
|
src="{{ lead.staff.thumbnail.url }}"
|
|
onerror="this.src='/static/img/brand/brand-logo.png'"
|
|
alt="Logo">
|
|
{% endif %}
|
|
</div>
|
|
<small>
|
|
{% if lead.staff == request.staff %}
|
|
{{ _("Me") }}
|
|
{% elif LANGUAGE_CODE == "en" %}
|
|
{{ lead.staff.fullname|capfirst }}
|
|
{% else %}
|
|
{{ lead.staff.arabic_name }}
|
|
{% endif %}
|
|
</small>
|
|
</div>
|
|
</td>
|
|
<td class="align-middle white-space-nowrap text-end">
|
|
{% if user == lead.staff.user or request.is_dealer %}
|
|
<div class="btn-reveal-trigger position-static">
|
|
<button class="btn btn-sm dropdown-toggle dropdown-caret-none transition-none btn-reveal fs-10"
|
|
type="button"
|
|
data-bs-toggle="dropdown"
|
|
data-boundary="window"
|
|
aria-haspopup="true"
|
|
aria-expanded="false"
|
|
data-bs-reference="parent">
|
|
<span class="fas fa-ellipsis-h fs-10"></span>
|
|
</button>
|
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
|
{% if perms.inventory.change_lead %}
|
|
<a href="{% url 'lead_update' request.dealer.slug lead.slug %}"
|
|
class="dropdown-item text-success-dark">{% trans "Edit" %}</a>
|
|
{% endif %}
|
|
{% if perms.inventory.change_lead %}{% endif %}
|
|
{% if not lead.opportunity %}
|
|
{% if perms.inventory.add_opportunity %}
|
|
<a href="{% url 'lead_opportunity_create' request.dealer.slug lead.slug %}"
|
|
class="dropdown-item text-success-dark">{% trans "Convert to Opportunity" %}</a>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if perms.inventory.delete_lead %}
|
|
<div class="dropdown-divider"></div>
|
|
<button class="dropdown-item text-danger"
|
|
data-bs-toggle="modal"
|
|
data-bs-target="#deleteModal">
|
|
{% trans "Delete" %}
|
|
</button>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr>
|
|
<td colspan="6" class="text-center">{% trans "No Leads found." %}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% if page_obj.paginator.num_pages > 1 %}
|
|
<div class="d-flex justify-content-end mt-3">
|
|
<div class="d-flex">{% include 'partials/pagination.html' %}</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
{% url 'lead_create' request.dealer.slug as create_lead_url %}
|
|
{% include "empty-illustration-page.html" with value=empty_state_value url=create_lead_url %}
|
|
{% endif %}
|
|
{% endblock %}
|