Merge pull request 'translations' (#210) from frontend into main
Reviewed-on: #210
This commit is contained in:
commit
aa71410493
Binary file not shown.
|
After Width: | Height: | Size: 415 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 353 KiB |
@ -36,7 +36,7 @@
|
||||
{% if token_fail %}
|
||||
{% url 'account_reset_password' as passwd_reset_url %}
|
||||
<p>
|
||||
{% blocktrans %}The password reset link was invalid, possibly because it has already been used. Please request a <a href="{{ passwd_reset_url }}">new password reset</a>.{% endblocktrans %}
|
||||
{% trans "The password reset link was invalid, possibly because it has already been used. Please request a" %} <a href="{{ passwd_reset_url }}">{% trans "new password reset." %}</a>{% endblocktrans %}
|
||||
</p>
|
||||
{% else %}
|
||||
<form method="POST" action="{{ action_url }}" class="form">
|
||||
|
||||
@ -24,8 +24,8 @@
|
||||
</div>
|
||||
</a>
|
||||
<div class="text-center">
|
||||
<h3 class="text-body-highlight">Sign Up</h3>
|
||||
<p class="text-body-tertiary">Create your account today</p>
|
||||
<h3 class="text-body-highlight">{% trans "Sign Up" %}</h3>
|
||||
<p class="text-body-tertiary">{% trans "Create your account today" %}</p>
|
||||
</div>
|
||||
<!-- Passkey Signup -->
|
||||
{% if PASSKEY_SIGNUP_ENABLED %}
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
<div class="d-flex">{% include 'partials/pagination.html' with q='loginEvents' %}</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<p>No authentication audit events found.</p>
|
||||
<p>{% trans "No authentication audit events found." %}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
</div>
|
||||
<div class="card-body bg-light-subtle">
|
||||
<p class="lead text-center">
|
||||
Are you sure you want to delete this account "{{ obj.email }}"? This will delete all associated information for this user.
|
||||
{% blocktrans %}Are you sure you want to delete this account "{{ obj.email }}"? This will delete all associated information for this user.{% endblocktrans %}
|
||||
</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
@ -33,7 +33,7 @@
|
||||
<i class="fas fa-trash me-2"></i>{{ _("Delete Permenantly") }}
|
||||
</button>
|
||||
<a class="btn btn-lg btn-phoenix-secondary mx-2"
|
||||
href="{% url 'user_management' request.dealer.slug %}"><i class="fas fa-ban me-2"></i>Cancel</a>
|
||||
href="{% url 'user_management' request.dealer.slug %}"><i class="fas fa-ban me-2"></i>{{_("Cancel")}}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
<div class="d-flex">{% include 'partials/pagination.html' with q='userRequests' %}</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<p>No request audit events found.</p>
|
||||
<p>{% trans "No request audit events found." %}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -88,7 +88,7 @@
|
||||
</div>
|
||||
<div id="main_content"
|
||||
class="fade-me-in"
|
||||
hx-boost="true"
|
||||
hx-boost="false"
|
||||
hx-target="#main_content"
|
||||
hx-select="#main_content"
|
||||
hx-swap="outerHTML transition:true"
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
{% load static %}
|
||||
{% load django_ledger %}
|
||||
{% load custom_filters %}
|
||||
{% block title %}Bill Details{% endblock %}
|
||||
{% block title %}{% trans "Bill Details" %}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row mt-4">
|
||||
<div class="col-12 mb-3">
|
||||
|
||||
@ -42,9 +42,9 @@
|
||||
<div class="dropdown-menu" id="dropdown-menu-{{ bill.uuid }}" role="menu">
|
||||
<div class="dropdown-content">
|
||||
<a href="{% url 'django_ledger:bill-detail' entity_slug=entity_slug bill_pk=bill.uuid %}"
|
||||
class="dropdown-item has-text-success">Details</a>
|
||||
class="dropdown-item has-text-success">{% trans "Details" %}</a>
|
||||
<a href="{% url 'django_ledger:bill-update' entity_slug=entity_slug bill_pk=bill.uuid %}"
|
||||
class="dropdown-item has-text-warning-dark">Update</a>
|
||||
class="dropdown-item has-text-warning-dark">{% trans "Update" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<div id="emailModalBody" class="modal-body">
|
||||
<h1>hi</h1>
|
||||
<h1>{% trans "hi" %}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load i18n static crispy_forms_filters %}
|
||||
{% block content %}
|
||||
<h1>Add Activity to {{ lead.first_name }} {{ lead.last_name }}</h1>
|
||||
<h1>{% trans "Add Activity to" %} {{ lead.first_name }} {{ lead.last_name }}</h1>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
<button class="btn btn-phoenix-primary" type="submit">Add Activity</button>
|
||||
<button class="btn btn-phoenix-primary" type="submit">{% trans "Add Activity" %}</button>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@ -6,13 +6,13 @@
|
||||
<table class="table table-sm fs-9">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Customer</th>
|
||||
<th>Service</th>
|
||||
<th>Date</th>
|
||||
<th>Start Time</th>
|
||||
<th>End Time</th>
|
||||
<th>Staff</th>
|
||||
<th>Status</th>
|
||||
<th>{% trans "Customer" %}</th>
|
||||
<th>{% trans "Service" %}</th>
|
||||
<th>{% trans "Date" %}</th>
|
||||
<th>{% trans "Start Time" %}</th>
|
||||
<th>{% trans "End Time" %}</th>
|
||||
<th>{% trans "Staff" %}</th>
|
||||
<th>{% trans "Status" %}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -27,7 +27,7 @@
|
||||
<td>{{ appointment.get_staff_member_name }}</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="{% url 'appointment:display_appointment' appointment.id %}">view</a>
|
||||
<a href="{% url 'appointment:display_appointment' appointment.id %}">{%trans "view" %}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
{% endblock title %}
|
||||
{% block content %}
|
||||
<div class="card email-content">
|
||||
<h5 class="card-header">Send Mail</h5>
|
||||
<h5 class="card-header">{% trans "Send Mail" %}</h5>
|
||||
<div class="card-body">
|
||||
<form class="email-form d-flex flex-column h-100"
|
||||
hx-boost="true"
|
||||
@ -53,9 +53,9 @@
|
||||
hx-push-url='false'
|
||||
hx-include="#message,#subject,#to"
|
||||
href="{% url 'send_lead_email' request.dealer.slug lead.slug %}?status=draft"
|
||||
class="btn btn-phoenix-success">Save as Draft</a>
|
||||
class="btn btn-phoenix-success">{% trans "Save as Draft" %}</a>
|
||||
<button class="btn btn-phoenix-primary fs-10" type="submit">
|
||||
Send<span class="fa-solid fa-paper-plane ms-1"></span>
|
||||
{% trans "Send" %}<span class="fa-solid fa-paper-plane ms-1"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<div class="card position-relative border-0">
|
||||
<div class="card-header p-2">
|
||||
<div class="d-flex justify-content-between">
|
||||
<h5 class="text-body-emphasis mb-0">Notifications</h5>
|
||||
<h5 class="text-body-emphasis mb-0">{% trans "Notifications" %}</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
@ -30,7 +30,7 @@
|
||||
<span class="fas fa-ellipsis-h fs-10 text-body"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu py-2">
|
||||
<a class="dropdown-item">Mark as Read</a>
|
||||
<a class="dropdown-item">{% trans "Mark as Read" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -39,7 +39,7 @@
|
||||
</div>
|
||||
<div class="card-footer p-0 border-top border-translucent border-0">
|
||||
<div class="my-2 text-center fw-bold fs-10 text-body-tertiary text-opactity-85">
|
||||
<a class="fw-bolder" href="{% url 'notifications_history' %}">Notification history</a>
|
||||
<a class="fw-bolder" href="{% url 'notifications_history' %}">{% trans "Notification history" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -38,6 +38,6 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p>No notifications found.</p>
|
||||
<p>{% trans "No notifications found." %}</p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block content %}
|
||||
<h1>Delete Opportunity</h1>
|
||||
<p>Are you sure you want to delete "{{ object.deal_name }}"?</p>
|
||||
<h1>{% trans "Delete Opportunity" %}</h1>
|
||||
<p>{% trans "Are you sure you want to delete" %} "{{ object.deal_name }}"?</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<button type="submit">Yes, delete</button>
|
||||
<a href="{% url 'opportunity_list' request.dealer.slug %}">Cancel</a>
|
||||
<button type="submit">{% trans "Yes, delete" %}</button>
|
||||
<a href="{% url 'opportunity_list' request.dealer.slug %}">{% trans "Cancel" %}</a>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@ -37,18 +37,18 @@
|
||||
{% if perms.inventory.change_opportunity %}
|
||||
<li>
|
||||
<a class="dropdown-item"
|
||||
href="{% url 'update_opportunity' request.dealer.slug opportunity.slug %}">Update Opportunity</a>
|
||||
href="{% url 'update_opportunity' request.dealer.slug opportunity.slug %}">{% trans "Update Opportunity" %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item"
|
||||
type="button"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#updateStageModal">Update Stage</a>
|
||||
data-bs-target="#updateStageModal">{% trans "Update Stage" %}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if perms.inventory.delete_opportunity %}
|
||||
<li>
|
||||
<a class="dropdown-item text-danger" href="">Delete Opportunity</a>
|
||||
<a class="dropdown-item text-danger" href="">{% trans "Delete Opportunity" %}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
@ -73,7 +73,7 @@
|
||||
<div class="d-flex align-items-center mb-4">
|
||||
{% if opportunity.car.marked_price %}
|
||||
<h5 class="mb-0 me-4">
|
||||
{{ opportunity.car.total }} <span class="fw-light"><span class="icon-saudi_riyal"></span></span># TODO : check later
|
||||
{{ opportunity.car.total }} <span class="fw-light"><span class="icon-saudi_riyal"></span></span>
|
||||
</h5>
|
||||
{% endif %}
|
||||
</div>
|
||||
@ -91,20 +91,20 @@
|
||||
<h5>{{ opportunity.customer|capfirst }}</h5>
|
||||
<div class="">
|
||||
<div class="text-body-secondary text-decoration-none">
|
||||
Individual<span class="fa-solid text-body-secondary fs-9 ms-2"></span>
|
||||
{% trans "Individual" %}<span class="fa-solid text-body-secondary fs-9 ms-2"></span>
|
||||
</div>
|
||||
{% else %}
|
||||
<h5>{{ opportunity.organization|capfirst }}</h5>
|
||||
<div class="">
|
||||
<div class="text-body-secondary text-decoration-none">
|
||||
Organization<span class="fa-solid text-body-secondary fs-9 ms-2"></span>
|
||||
{% trans "Organization" %}<span class="fa-solid text-body-secondary fs-9 ms-2"></span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="badge badge-phoenix badge-phoenix-primary">STAGE</span> : <span class="badge badge-phoenix badge-phoenix-success me-2">{{ opportunity.get_stage_display }}</span><span class="badge badge-phoenix badge-phoenix-danger me-2">{{ opportunity.get_status_display }}</span>
|
||||
<span class="badge badge-phoenix badge-phoenix-primary">{% trans "STAGE" %}</span> : <span class="badge badge-phoenix badge-phoenix-success me-2">{{ opportunity.get_stage_display }}</span><span class="badge badge-phoenix badge-phoenix-danger me-2">{{ opportunity.get_status_display }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress mb-2" style="height:5px">
|
||||
@ -295,7 +295,7 @@
|
||||
style="width:16px;
|
||||
height:16px"></span>
|
||||
</div>
|
||||
<p class="fw-bold mb-0">Probability (%)</p>
|
||||
<p class="fw-bold mb-0">{% trans "Probability (%)" %}</p>
|
||||
</div>
|
||||
</td>
|
||||
<td class="py-2 d-none d-sm-block pe-sm-2">:</td>
|
||||
@ -421,7 +421,7 @@
|
||||
<td class="py-2 d-none d-sm-block pe-sm-2">:</td>
|
||||
<td class="py-2">
|
||||
{% if request.user.email == opportunity.staff.email %}
|
||||
<div class="ps-6 ps-sm-0 fw-semibold mb-0">You</div>
|
||||
<div class="ps-6 ps-sm-0 fw-semibold mb-0">{% trans "You" %}</div>
|
||||
{% else %}
|
||||
<div class="ps-6 ps-sm-0 fw-semibold mb-0">{{ opportunity.staff.get_local_name }}</div>
|
||||
{% endif %}
|
||||
@ -560,25 +560,25 @@
|
||||
scope="col"
|
||||
data-sort="subject"
|
||||
style="width:31%;
|
||||
min-width:350px">Title</th>
|
||||
min-width:350px">{% trans "Title" %}</th>
|
||||
<th class="sort white-space-nowrap align-middle pe-3 ps-0 text-uppercase"
|
||||
scope="col"
|
||||
data-sort="subject"
|
||||
style="width:31%;
|
||||
min-width:350px">Notes</th>
|
||||
min-width:350px">{% trans "Notes" %}</th>
|
||||
<th class="sort align-middle pe-3 text-uppercase"
|
||||
scope="col"
|
||||
data-sort="sent"
|
||||
style="width:15%;
|
||||
min-width:130px">Assigned to</th>
|
||||
min-width:130px">{% trans "Assigned to" %}</th>
|
||||
<th class="sort align-middle text-start text-uppercase"
|
||||
scope="col"
|
||||
data-sort="date"
|
||||
style="min-width:165px">Due Date</th>
|
||||
style="min-width:165px">{% trans "Due Date" %}</th>
|
||||
<th class="sort align-middle text-start text-uppercase"
|
||||
scope="col"
|
||||
data-sort="date"
|
||||
style="min-width:165px">Completed</th>
|
||||
style="min-width:165px">{% trans "Completed" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="list taskTable" id="all-tasks-table-body">
|
||||
@ -592,7 +592,7 @@
|
||||
<div class="col-auto d-flex">
|
||||
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body"
|
||||
data-list-info="data-list-info"></p>
|
||||
<a class="fw-semibold" href="" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||
<a class="fw-semibold" href="" data-list-view="*">{% trans "View all" %}<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||
</div>
|
||||
<div class="col-auto d-flex">
|
||||
<button class="page-link" data-list-pagination="prev">
|
||||
@ -678,143 +678,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% comment %} <div class="tab-pane fade" id="tab-notes" role="tabpanel" aria-labelledby="notes-tab">
|
||||
<h2 class="mb-4">Notes</h2>
|
||||
{%if perms.inventory.change_opportunity%}
|
||||
<form action="{% url 'add_note_to_opportunity' request.dealer.slug opportunity.slug %}" method="post">
|
||||
{% csrf_token %}
|
||||
<textarea class="form-control mb-3" id="notes" rows="4" name="notes" required> </textarea>
|
||||
<button type="submit" class="btn btn-phoenix-primary mb-3">Add Note</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
<div class="row gy-4 note-list">
|
||||
<div class="col-12 col-xl-auto flex-1">
|
||||
{% for note in opportunity.get_notes %}
|
||||
<div class="border-2 border-dashed mb-4 pb-4 border-bottom border-translucent">
|
||||
<p class="mb-1 text-body-highlight">{{ note.note }}</p>
|
||||
<div class="d-flex">
|
||||
<div class="fs-9 text-body-tertiary text-opacity-85"><span class="fa-solid fa-clock me-2"></span><span class="fw-semibold me-1">{{note.created|naturaltime|capfirst}}</span></div>
|
||||
<p class="fs-9 mb-0 text-body-tertiary text-opacity-85">by<a class="ms-1 fw-semibold" href="#!">{{note.created_by}}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div> {% endcomment %}
|
||||
{% comment %} <div class="tab-pane fade" id="tab-meeting" role="tabpanel" aria-labelledby="meeting-tab">
|
||||
<h2 class="mb-4">Meeting</h2>
|
||||
<div class="row align-items-center g-2 flex-wrap justify-content-start mb-3">
|
||||
<div class="col-12 col-sm-auto">
|
||||
<div class="search-box mb-2 mb-sm-0">
|
||||
<form class="position-relative">
|
||||
<input class="form-control search-input search" type="search" placeholder="Search meeting" aria-label="Search" />
|
||||
<span class="fas fa-search search-box-icon"></span>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto d-flex flex-md-grow-1">
|
||||
<p class="mb-0 fs-9 text-body-tertiary fw-bold"><span class="fas fa-filter me-1 fw-extra-bold fs-10"></span>23 tasks</p>
|
||||
<button class="btn btn-link p-0 ms-3 fs-9 text-primary fw-bold text-decoration-none"><span class="fas fa-sort me-1 fw-extra-bold fs-10"></span>Sorting</button>
|
||||
</div>
|
||||
{% if perms.inventory.change_opportunity%}
|
||||
<div class="col-auto">
|
||||
<a href="{% url 'schedule_lead' request.dealer.slug opportunity.lead.slug %}" class="btn btn-phoenix-primary"><span class="fa-solid fa-plus me-2"></span>Add Meeting </a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
{% for metting in opportunity.lead.get_meetings %}
|
||||
<div class="col-xxl-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start flex-wrap mb-4 gap-2">
|
||||
<div class="mb-3 mb-sm-0">
|
||||
<h4 class="line-clamp-1 mb-2 mb-sm-1">{{metting.purpose}}</h4>
|
||||
<div><span class="uil uil-calendar-alt text-primary me-2"></span><span class="fw-semibold text-body-secondary fs-9">{{metting.scheduled_at}}</span><span class="text-body-secondary fs-9"> - {{meeting.duration}}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div> {% endcomment %}
|
||||
{% comment %} <div class="tab-pane fade" id="tab-call" role="tabpanel" aria-labelledby="call-tab">
|
||||
<div class="row align-items-center gx-4 gy-3 flex-wrap mb-3">
|
||||
<div class="col-auto d-flex flex-1">
|
||||
<h2 class="mb-0">Call</h2>
|
||||
</div>
|
||||
{% if perms.inventory.change_opportunity%}
|
||||
<div class="col-auto">
|
||||
<a href="{% url 'schedule_lead' request.dealer.slug opportunity.lead.slug %}" class="btn btn-phoenix-primary"><span class="fa-solid fa-plus me-2"></span>Add Call</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<pre>{{opportunity.get_all_notes}}</pre>
|
||||
<div class="border-top border-bottom border-translucent"
|
||||
id="leadDetailsTable"
|
||||
data-list='{"valueNames":["name","description","create_date","create_by","last_activity"],"page":5,"pagination":true}'>
|
||||
<div class="table-responsive scrollbar mx-n1 px-1">
|
||||
<table class="table fs-9 mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="sort white-space-nowrap align-middle pe-3 ps-0 text-uppercase"
|
||||
scope="col"
|
||||
data-sort="name"
|
||||
style="width:20%;
|
||||
min-width:100px">Purpose</th>
|
||||
<th class="sort align-middle pe-6 text-uppercase"
|
||||
scope="col"
|
||||
data-sort="description"
|
||||
style="width:20%;
|
||||
max-width:60px">Scheduled By</th>
|
||||
<th class="sort align-middle text-start text-uppercase"
|
||||
scope="col"
|
||||
data-sort="create_date"
|
||||
style="width:20%;
|
||||
min-width:115px">Created at</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="list" id="lead-details-table-body">
|
||||
{% for call in opportunity.lead.get_calls %}
|
||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||
<td class="description align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2 pe-6">{{call.purpose}}</td>
|
||||
<td class="create_date text-end align-middle white-space-nowrap text-body py-2">{{call.scheduled_by}}</td>
|
||||
<td class="create_by align-middle white-space-nowrap fw-semibold text-body-highlight">{{call.created_at|naturaltime|capfirst}}</td>
|
||||
<td class="align-middle text-end white-space-nowrap pe-0 action py-2">
|
||||
<div class="btn-reveal-trigger position-static">
|
||||
<button class="btn btn-sm dropdown-toggle dropdown-caret-none transition-none btn-reveal"
|
||||
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"><a class="dropdown-item" href="#!">View</a><a class="dropdown-item" href="#!">Export</a>
|
||||
<div class="dropdown-divider"></div><a class="dropdown-item text-danger" href="#!">Remove</a>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row align-items-center justify-content-between py-2 pe-0 fs-9">
|
||||
<div class="col-auto d-flex">
|
||||
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body"
|
||||
data-list-info="data-list-info"></p><a class="fw-semibold" href="#!" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="#!" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||
</div>
|
||||
<div class="col-auto d-flex">
|
||||
<button class="page-link" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
|
||||
<ul class="mb-0 pagination"></ul>
|
||||
<button class="page-link pe-0" data-list-pagination="next"><span class="fas fa-chevron-right"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> {% endcomment %}
|
||||
|
||||
<div class="tab-pane fade"
|
||||
id="tab-emails"
|
||||
role="tabpanel"
|
||||
@ -822,12 +686,7 @@
|
||||
<h2 class="mb-4">Emails</h2>
|
||||
{% if perms.inventory.change_opportunity %}
|
||||
<div class="d-flex justify-content-end">
|
||||
{% comment %} <a href="{% url 'send_lead_email' request.dealer.slug opportunity.lead.slug %}">
|
||||
<button type="button" class="btn btn-sm btn-phoenix-primary">
|
||||
<span class="fas fa-plus me-1"></span>
|
||||
{% trans 'Send Email' %}
|
||||
</button>
|
||||
</a> {% endcomment %}
|
||||
|
||||
{% if opportunity.lead %}
|
||||
<button class="btn btn-phoenix-primary btn-sm"
|
||||
type="button"
|
||||
@ -874,21 +733,21 @@
|
||||
scope="col"
|
||||
data-sort="subject"
|
||||
style="width:31%;
|
||||
min-width:350px">Subject</th>
|
||||
min-width:350px">{% trans "Subject" %}</th>
|
||||
<th class="sort align-middle pe-3 text-uppercase"
|
||||
scope="col"
|
||||
data-sort="sent"
|
||||
style="width:15%;
|
||||
min-width:130px">Sent by</th>
|
||||
min-width:130px">{% trans "Sent by" %}</th>
|
||||
<th class="sort align-middle text-start text-uppercase"
|
||||
scope="col"
|
||||
data-sort="date"
|
||||
style="min-width:15px">Date</th>
|
||||
style="min-width:15px">{% trans "Date" %}</th>
|
||||
<th class="sort align-middle text-end text-uppercase"
|
||||
scope="col"
|
||||
data-sort="status"
|
||||
style="width:15%;
|
||||
min-width:100px">Status</th>
|
||||
min-width:100px">{% trans "Status" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="list" id="all-email-table-body">
|
||||
@ -901,7 +760,7 @@
|
||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">{{ email.from_email }}</td>
|
||||
<td class="date align-middle white-space-nowrap text-body py-2">{{ email.created }}</td>
|
||||
<td class="status align-middle fw-semibold text-end py-2">
|
||||
<span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span>
|
||||
<span class="badge badge-phoenix fs-10 badge-phoenix-success">{% trans "sent" %}</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
@ -912,7 +771,7 @@
|
||||
<div class="col-auto d-flex">
|
||||
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body"
|
||||
data-list-info="data-list-info"></p>
|
||||
<a class="fw-semibold" href="#!" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="#!" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||
<a class="fw-semibold" href="#!" data-list-view="*">{% trans "View all" %}<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="#!" data-list-view="less">{% trans "View Less" %}<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||
</div>
|
||||
<div class="col-auto d-flex">
|
||||
<button class="page-link" data-list-pagination="prev">
|
||||
@ -930,92 +789,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade"
|
||||
id="tab-attachments"
|
||||
role="tabpanel"
|
||||
aria-labelledby="attachments-tab">
|
||||
<h2 class="mb-3">Attachments</h2>
|
||||
<div class="border-top border-dashed pt-3 pb-4">
|
||||
<div class="d-flex flex-between-center">
|
||||
<div class="d-flex mb-1">
|
||||
<span class="fa-solid fa-image me-2 text-body-tertiary fs-9"></span>
|
||||
<p class="text-body-highlight mb-0 lh-1">Silly_sight_1.png</p>
|
||||
</div>
|
||||
<div class="btn-reveal-trigger">
|
||||
<button class="btn btn-sm dropdown-toggle dropdown-caret-none transition-none btn-reveal"
|
||||
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"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||
<a class="dropdown-item" href="#!">Edit</a><a class="dropdown-item text-danger" href="#!">Delete</a><a class="dropdown-item" href="#!">Download</a><a class="dropdown-item" href="#!">Report abuse</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="fs-9 text-body-tertiary mb-3">
|
||||
<span>768kB</span><span class="text-body-quaternary mx-1">|</span><a href="#!">Shantinan Mekalan</a><span class="text-body-quaternary mx-1">|</span><span class="text-nowrap">21st Dec, 12:56 PM</span>
|
||||
</p>
|
||||
<img class="rounded-2" src="{% static 'images/generic/40.png' %}" alt="" />
|
||||
</div>
|
||||
<div class="border-top border-dashed py-4">
|
||||
<div class="d-flex flex-between-center">
|
||||
<div>
|
||||
<div class="d-flex align-items-center mb-1">
|
||||
<span class="fa-solid fa-image me-2 fs-9 text-body-tertiary"></span>
|
||||
<p class="text-body-highlight mb-0 lh-1">All_images.zip</p>
|
||||
</div>
|
||||
<p class="fs-9 text-body-tertiary mb-0">
|
||||
<span>12.8 mB</span><span class="text-body-quaternary mx-1">|</span><a href="#!">Yves Tanguy</a><span class="text-body-quaternary mx-1">|</span><span class="text-nowrap">19th Dec, 08:56 PM</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="btn-reveal-trigger">
|
||||
<button class="btn btn-sm dropdown-toggle dropdown-caret-none transition-none btn-reveal"
|
||||
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"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||
<a class="dropdown-item" href="#!">Edit</a><a class="dropdown-item text-danger" href="#!">Delete</a><a class="dropdown-item" href="#!">Download</a><a class="dropdown-item" href="#!">Report abuse</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="border-top border-dashed py-4">
|
||||
<div class="d-flex flex-between-center">
|
||||
<div>
|
||||
<div class="d-flex align-items-center mb-1">
|
||||
<span class="fa-solid fa-file-lines me-2 fs-9 text-body-tertiary"></span>
|
||||
<p class="text-body-highlight mb-0 lh-1">Project.txt</p>
|
||||
</div>
|
||||
<p class="fs-9 text-body-tertiary mb-0">
|
||||
<span>123 kB</span><span class="text-body-quaternary mx-1">|</span><a href="#!">Shantinan Mekalan</a><span class="text-body-quaternary mx-1">|</span><span class="text-nowrap">12th Dec, 12:56 PM</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="btn-reveal-trigger">
|
||||
<button class="btn btn-sm dropdown-toggle dropdown-caret-none transition-none btn-reveal"
|
||||
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"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||
<a class="dropdown-item" href="#!">Edit</a><a class="dropdown-item text-danger" href="#!">Delete</a><a class="dropdown-item" href="#!">Download</a><a class="dropdown-item" href="#!">Report abuse</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade"
|
||||
id="tab-activity"
|
||||
hx-get="{% url 'opportunity_detail' request.dealer.slug opportunity.slug %}"
|
||||
@ -1025,7 +799,7 @@
|
||||
hx-swap="outerHTML"
|
||||
role="tabpanel"
|
||||
aria-labelledby="activity-tab">
|
||||
<h2 class="mb-4">Activity</h2>
|
||||
<h2 class="mb-4">{% trans "Activity" %}</h2>
|
||||
<div class="row align-items-center g-3 justify-content-between justify-content-start">
|
||||
<div class="col-12 col-sm-auto">
|
||||
<div class="search-box mb-2 mb-sm-0">
|
||||
|
||||
@ -108,7 +108,7 @@
|
||||
<td class="d-none d-sm-block pe-sm-2">:</td>
|
||||
<td class="py-1">
|
||||
<p class="ps-6 ps-sm-0 fw-semibold fs-9 mb-0 mb-0 pb-3 pb-sm-0 text-body-emphasis">
|
||||
{{ opportunity.car.total }}# TODO : check later
|
||||
{{ opportunity.car.total }}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block content %}
|
||||
<h1>Logs for {{ opportunity.deal_name }}</h1>
|
||||
<h1>{% trans "Logs for" %} {{ opportunity.deal_name }}</h1>
|
||||
<div class="table-list" id="opportunityTable"></div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Action</th>
|
||||
<th>User</th>
|
||||
<th>Old Status</th>
|
||||
<th>New Status</th>
|
||||
<th>Details</th>
|
||||
<th>Date</th>
|
||||
<th>{% trans "Action" %}</th>
|
||||
<th>{% trans "User" %}</th>
|
||||
<th>{%trans Old Status %}</th>
|
||||
<th>{% trans "New Status" %}</th>
|
||||
<th>{% trans "Details" %}</th>
|
||||
<th>{% trans "Date" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -25,7 +25,7 @@
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr>
|
||||
<td colspan="6">No logs found.</td>
|
||||
<td colspan="6">{% trans "No logs found." %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
@ -80,7 +80,7 @@
|
||||
<div class="d-flex justify-content-end">
|
||||
<a href="{% static 'sample/cars_sample.csv' %}"
|
||||
class="btn btn-phoenix-primary mt-4">
|
||||
<i class="fa-solid fa-file-csv me-2"></i>Download Sample CSV
|
||||
<i class="fa-solid fa-file-csv me-2"></i>{% trans "Download Sample CSV" %}
|
||||
</a>
|
||||
</div>
|
||||
{% if messages %}
|
||||
@ -163,7 +163,7 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if item %}
|
||||
<h3 class="mt-4">List of Items</h3>
|
||||
<h3 class="mt-4">{% trans "List of Items" %}</h3>
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item">
|
||||
<span class="badge bg-primary">{{ item.item_model }}</span>
|
||||
@ -171,7 +171,7 @@
|
||||
</ul>
|
||||
{% endif %}
|
||||
<div class="mb-3">
|
||||
<label for="csv_file" class="form-label">CSV File</label>
|
||||
<label for="csv_file" class="form-label">{% trans "CSV File" %}</label>
|
||||
<input type="file"
|
||||
class="form-control"
|
||||
id="csv_file"
|
||||
@ -180,9 +180,9 @@
|
||||
required>
|
||||
<div class="form-text">{{ _("CSV should include columns: vin") }}</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-phoenix-primary mb-2">Upload</button>
|
||||
<button type="submit" class="btn btn-phoenix-primary mb-2">{% trans "Upload" %}</button>
|
||||
<a href="{% url 'car_list' request.dealer.slug %}"
|
||||
class="btn btn-phoenix-secondary mb-2">Cancel</a>
|
||||
class="btn btn-phoenix-secondary mb-2">{% trans "Cancel" %}</a>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@ -91,7 +91,7 @@
|
||||
{{ car.id_car_make.name }} {{ car.id_car_model.name }} {{ car.id_car_serie.name }} {{ car.year }}
|
||||
</h5>
|
||||
<p class="card-text text-muted mb-2">
|
||||
<strong>{% trans "VIN:" %}</strong> {{ car.vin }}
|
||||
<strong>{% trans "VIN:" %}</strong> <a href="{% url 'car_detail' request.dealer.slug car.slug %}">{{ car.vin }}</a>
|
||||
</p>
|
||||
<p class="card-text mb-2">
|
||||
<strong>{% trans "Age:" %}</strong>
|
||||
|
||||
@ -46,8 +46,8 @@
|
||||
<input type="hidden" name="make_sold" value="{{ selected_make_sales }}">
|
||||
</form>
|
||||
</div>
|
||||
<div class="row g-4 mb-5">{% include 'dashboards/financial_data_cards.html' %}</div>
|
||||
<div class="row g-4 mb-5">{% include 'dashboards/chart.html' %}</div>
|
||||
<div class="row g-4 mb-5">{% include 'dashboards/partials//financial_data_cards.html' %}</div>
|
||||
<div class="row g-4 mb-5">{% include 'dashboards/partials/chart.html' %}</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
{% endblock content %}
|
||||
|
||||
@ -1,371 +0,0 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block content %}
|
||||
<div class="main-content flex-grow-1 container-fluid mt-4 mb-3">
|
||||
<div class="d-flex justify-content-between align-items-center mb-5 pb-3 border-bottom">
|
||||
<h2 class="h3 fw-bold mb-0">
|
||||
Manager Dashboard<i class="fas fa-chart-area text-primary ms-2"></i>
|
||||
</h2>
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-outline-secondary dropdown-toggle"
|
||||
type="button"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false">Last 30 Days</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end shadow">
|
||||
<li>
|
||||
<a class="dropdown-item" href="#">Today</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item" href="#">Last 7 Days</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item" href="#">Last 90 Days</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Total Revenue</p>
|
||||
<h4 class="fw-bolder text-primary mb-3">$1.25M</h4>
|
||||
</div>
|
||||
<span class="badge bg-success-subtle text-success fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
+8% from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Net Profit</p>
|
||||
<h4 class="fw-bolder text-success mb-3">$1.25M</h4>
|
||||
</div>
|
||||
<span class="badge bg-success-subtle text-success fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
+8% from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Total Expense</p>
|
||||
<h4 class="fw-bolder text-danger mb-3">$1.25M</h4>
|
||||
</div>
|
||||
<span class="badge bg-danger-subtle text-danger fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
+3% from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Total Cars Sold</p>
|
||||
<h4 class="fw-bolder text-success mb-3">{{ sold_cars }}</h4>
|
||||
</div>
|
||||
<span class="badge bg-success-subtle text-success fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
+5 units from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Avg. Time on Lot</p>
|
||||
<h4 class="fw-bolder text-warning mb-3">10 days</h4>
|
||||
</div>
|
||||
<span class="badge bg-danger-subtle text-danger fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
+2 days from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Inventory Value</p>
|
||||
<h4 class="fw-bolder text-primary mb-3">$5.8M</h4>
|
||||
</div>
|
||||
<span class="badge bg-danger-subtle text-danger fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
-2% from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Aging Inventory</p>
|
||||
<h4 class="fw-bolder text-danger mb-3">12 units</h4>
|
||||
</div>
|
||||
<span class="badge bg-success-subtle text-success fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
-4 cars from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-body d-flex flex-column justify-content-between p-4">
|
||||
<div>
|
||||
<p class="text-uppercase text-muted fw-bold small mb-1">Gross Profit</p>
|
||||
<h4 class="fw-bolder text-info mb-3">$1.25M</h4>
|
||||
</div>
|
||||
<span class="badge bg-success-subtle text-success fw-bold p-2 rounded-pill d-inline-flex align-self-start">
|
||||
+8% from last month
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-lg-8">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">Monthly Revenue & Profit</h5>
|
||||
</div>
|
||||
<div class="card-body" style="height: 400px;">
|
||||
<canvas id="revenueProfitChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">Monthly Cars Sold</h5>
|
||||
</div>
|
||||
<div class="card-body d-flex align-items-center justify-content-center"
|
||||
style="height: 400px">
|
||||
<canvas id="CarsSoldByMonthChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">Sales by Make</h5>
|
||||
</div>
|
||||
<div class="card-body d-flex align-items-center justify-content-center"
|
||||
style="height: 400px">
|
||||
<canvas id="salesByBrandChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">Top Salesperson Performance</h5>
|
||||
</div>
|
||||
<div class="card-body" style="height: 400px;">
|
||||
<canvas id="salespersonChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
{% endblock content %}
|
||||
{% block customJS %}
|
||||
<script>
|
||||
// Define a color palette that aligns with the Phoenix template
|
||||
const primaryColor = '#7249b6'; // A vibrant purple
|
||||
const secondaryColor = '#8193a6'; // A muted gray/blue
|
||||
const successColor = '#00d074'; // A bright green
|
||||
const warningColor = '#ffc107'; // A strong yellow
|
||||
const dangerColor = '#e63757'; // A deep red
|
||||
const chartColors = ['#00d27a', '#7249b6', '#32b9ff', '#e63757', '#ffc107'];
|
||||
|
||||
// Monthly Cars Sold (Bar Chart)
|
||||
const ctx1 = document.getElementById('CarsSoldByMonthChart').getContext('2d');
|
||||
new Chart(ctx1, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
||||
datasets: [{
|
||||
label: 'Total Cars Sold',
|
||||
data: [2, 3, 10, 4, 30, 12, 8, 9, 20, 12, 15, 35],
|
||||
backgroundColor: primaryColor,
|
||||
borderColor: primaryColor,
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: { display: false }
|
||||
},
|
||||
scales: {
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
grid: { color: 'rgba(0, 0, 0, 0.05)' },
|
||||
ticks: { color: secondaryColor }
|
||||
},
|
||||
x: {
|
||||
grid: { display: false },
|
||||
ticks: { color: secondaryColor }
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Monthly Revenue & Profit (Line Chart)
|
||||
const ctx2 = document.getElementById('revenueProfitChart').getContext('2d');
|
||||
new Chart(ctx2, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
||||
datasets: [
|
||||
{
|
||||
label: 'Monthly Revenue',
|
||||
data: [120000, 150000, 130000, 180000, 200000, 175000, 190000, 220000, 210000, 250000, 240000, 280000],
|
||||
borderColor: primaryColor,
|
||||
backgroundColor: 'rgba(114, 73, 182, 0.1)', // Using primaryColor with transparency
|
||||
tension: 0.4,
|
||||
fill: true,
|
||||
pointBackgroundColor: primaryColor,
|
||||
pointRadius: 5,
|
||||
pointHoverRadius: 8
|
||||
},
|
||||
{
|
||||
label: 'Monthly Net Profit',
|
||||
data: [25000, 35000, 28000, 40000, 45000, 38000, 42000, 50000, 48000, 55000, 52000, 60000],
|
||||
borderColor: successColor,
|
||||
backgroundColor: 'rgba(0, 208, 116, 0.1)', // Using successColor with transparency
|
||||
tension: 0.4,
|
||||
fill: true,
|
||||
pointBackgroundColor: successColor,
|
||||
pointRadius: 5,
|
||||
pointHoverRadius: 8
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: {
|
||||
display: true,
|
||||
labels: { color: '#495057', boxWidth: 20 }
|
||||
},
|
||||
tooltip: {
|
||||
backgroundColor: 'rgba(33, 37, 41, 0.9)',
|
||||
titleColor: 'white',
|
||||
bodyColor: 'white',
|
||||
padding: 10,
|
||||
callbacks: {
|
||||
label: function(context) {
|
||||
let label = context.dataset.label || '';
|
||||
if (label) {
|
||||
label += ': ';
|
||||
}
|
||||
if (context.parsed.y !== null) {
|
||||
label += new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(context.parsed.y);
|
||||
}
|
||||
return label;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
grid: { color: 'rgba(0, 0, 0, 0.05)' },
|
||||
ticks: { color: secondaryColor },
|
||||
border: { color: secondaryColor }
|
||||
},
|
||||
y: {
|
||||
grid: { color: 'rgba(0, 0, 0, 0.05)' },
|
||||
ticks: { color: secondaryColor },
|
||||
border: { color: secondaryColor }
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Sales by Make (Pie Chart)
|
||||
const ctx3 = document.getElementById('salesByBrandChart').getContext('2d');
|
||||
new Chart(ctx3, {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: ['Toyota', 'Ford', 'Honda', 'BMW', 'Other'],
|
||||
datasets: [{
|
||||
label: 'Car Count by Make',
|
||||
data: [45, 30, 25, 15, 10],
|
||||
backgroundColor: chartColors,
|
||||
hoverOffset: 15,
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: {
|
||||
position: 'right',
|
||||
labels: { color: '#343a40', font: { size: 14 } }
|
||||
},
|
||||
tooltip: {
|
||||
backgroundColor: 'rgba(33, 37, 41, 0.9)',
|
||||
titleColor: '#fff',
|
||||
bodyColor: '#fff',
|
||||
callbacks: {
|
||||
label: function(context) {
|
||||
const label = context.label || '';
|
||||
const value = context.parsed || 0;
|
||||
const total = context.dataset.data.reduce((a, b) => a + b, 0);
|
||||
const percentage = ((value / total) * 100).toFixed(2);
|
||||
return `${label}: ${value} cars (${percentage}%)`;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Salesperson Performance (Bar Chart)
|
||||
const ctx_salesperson = document.getElementById('salespersonChart').getContext('2d');
|
||||
new Chart(ctx_salesperson, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: ['John Doe', 'Jane Smith', 'Peter Jones', 'Mary Brown'],
|
||||
datasets: [{
|
||||
label: 'Cars Sold',
|
||||
data: [15, 22, 18, 25],
|
||||
backgroundColor: chartColors,
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: {
|
||||
legend: { display: false },
|
||||
title: { display: true, text: 'Top Salesperson Performance', font: { size: 16 } }
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
title: { display: true, text: 'Salesperson Name', color: secondaryColor },
|
||||
ticks: { color: secondaryColor }
|
||||
},
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
title: { display: true, text: 'Number of Cars Sold', color: secondaryColor },
|
||||
ticks: { color: secondaryColor }
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@ -6,7 +6,7 @@
|
||||
{% endblocktrans %}
|
||||
</h3>
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-12">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">{% trans "Monthly Revenue & Profit" %}</h5>
|
||||
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">{% trans "Monthly Cars Sold" %}</h5>
|
||||
@ -29,7 +29,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-lg-6 col-12">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">{% trans "Sales by Make" %}</h5>
|
||||
@ -40,15 +40,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-12">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0 d-flex justify-content-between align-items-center">
|
||||
<h5 class="fw-bold mb-0 text-dark">{% trans "Models Sold" %}</h5>
|
||||
<h5 class="fw-bold mb-0 text-dark">{% trans "Models Sold By Make" %}</h5>
|
||||
<form method="GET" class="d-flex align-items-center">
|
||||
<div class="form-group d-flex align-items-center me-2">
|
||||
<label for="carMakeSelectSales" class="form-label mb-0 me-2">{% trans "Select Make:" %}</label>
|
||||
<label for="carMakeSelectSales" class="form-label mb-0 me-2"></label>
|
||||
<select id="carMakeSelectSales" class="form-select" name="make_sold">
|
||||
<option value="">{% trans "All Makes" %}</option>
|
||||
<option value="">{% trans "Select Make" %}</option>
|
||||
{% for make_sold in all_makes_sold %}
|
||||
<option value="{{ make_sold }}"
|
||||
{% if make_sold == selected_make_sales %}selected{% endif %}>
|
||||
@ -62,9 +62,16 @@
|
||||
<input type="hidden" name="end_date" value="{{ end_date|date:'Y-m-d' }}">
|
||||
</form>
|
||||
</div>
|
||||
{%if selected_make_sales%}
|
||||
<div class="card-body" style="height: 400px;">
|
||||
<canvas id="salesChartByModel"></canvas>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="card-body" style="height: 400px;">
|
||||
<p class="ms-2">{% trans "Please Select a Make from above to see the Statistics" %}</p>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -72,7 +79,7 @@
|
||||
{% if request.is_dealer or request.is_manager or request.is_inventory %}
|
||||
<h3 class="fw-bold mb-3">{% trans "Inventory Trends" %}</h3>
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-lg-6 col-12">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0">
|
||||
<h5 class="fw-bold mb-0 text-dark">{% trans "Inventory by Make" %}</h5>
|
||||
@ -83,15 +90,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-12">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 shadow-sm border-0">
|
||||
<div class="card-header bg-white border-bottom-0 d-flex justify-content-between align-items-center">
|
||||
<h5 class="fw-bold mb-0 text-dark">{% trans "Models in Inventory" %}</h5>
|
||||
<form method="GET" class="d-flex align-items-center">
|
||||
<div class="form-group d-flex align-items-center me-2">
|
||||
<label for="carMakeSelectInventory" class="form-label mb-0 me-2">{% trans "Select Make:" %}</label>
|
||||
<label for="carMakeSelectInventory" class="form-label mb-0 me-2"></label>
|
||||
<select id="carMakeSelectInventory" class="form-select" name="make_inventory">
|
||||
<option value="">{% trans "All Makes" %}</option>
|
||||
<option value="">{% trans "Select Make" %}</option>
|
||||
{% for make_inv in all_makes_inventory %}
|
||||
<option value="{{ make_inv }}"
|
||||
{% if make_inv == selected_make_inventory %}selected{% endif %}>
|
||||
@ -103,9 +110,16 @@
|
||||
<button type="submit" class="btn btn-primary">{% trans "Go" %}</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body" style="height: 400px;">
|
||||
<canvas id="inventoryByModelChart"></canvas>
|
||||
</div>
|
||||
{%if selected_make_inventory%}
|
||||
<div class="card-body" style="height: 400px;">
|
||||
<canvas id="inventoryByModelChart"></canvas>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="card-body" style="height: 400px;">
|
||||
<p class="ms-2">{% trans "Please Select a Make from above to see the Statistics" %}</p>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -16,12 +16,12 @@
|
||||
<img class="img-fluid mb-6 w-50 w-lg-75 d-light-none"
|
||||
src="{% static '/images/spot-illustrations/dark_403.png' %}"
|
||||
alt="" />
|
||||
<h2 class="text-body-secondary fw-bolder mb-3">Access Forbidden!</h2>
|
||||
<h2 class="text-body-secondary fw-bolder mb-3">{% trans "Access Forbidden!" %}</h2>
|
||||
<p class="text-body mb-5">
|
||||
Halt! Thou art endeavouring to trespass upon a realm not granted unto thee.
|
||||
{% trans "Halt! Thou art endeavouring to trespass upon a realm not granted unto thee." %}
|
||||
<br class="d-none d-md-block d-lg-none" />
|
||||
granted unto thee.
|
||||
{% trans "granted unto thee." %}"
|
||||
</p>
|
||||
<a class="btn btn-lg btn-phoenix-primary" href="{% url 'home' %}">Go Home</a>
|
||||
<a class="btn btn-lg btn-phoenix-primary" href="{% url 'home' %}">{% trans "Go Home" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -79,9 +79,9 @@
|
||||
</div>
|
||||
<div class="table-responsive scrollbar mx-n1 px-1">
|
||||
<div class="card-header "></div>
|
||||
<h4 class="my-4">Permissions</h4>
|
||||
<h4 class="my-4">{% trans "Permissions" %}</h4>
|
||||
<a class="btn btn-sm btn-phoenix-primary mt-2 mb-4"
|
||||
href="{% url 'group_permission' request.dealer.slug group.id %}"><i class="fa-solid fa-unlock"></i> Manage Permissions</a>
|
||||
href="{% url 'group_permission' request.dealer.slug group.id %}"><i class="fa-solid fa-unlock"></i>{% trans "Manage Permissions" %}</a>
|
||||
<table class="table table-hover table-responsive-sm fs-9 mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
{{ _("Haikalbot") }}
|
||||
{% endblock title %}
|
||||
{% block description %}
|
||||
AI assistant
|
||||
{% trans "AI assistant" %}
|
||||
{% endblock description %}
|
||||
{% block customCSS %}
|
||||
<style>
|
||||
|
||||
@ -414,7 +414,7 @@
|
||||
</li>
|
||||
</ul>
|
||||
{# --- Support & Contact Section (New) --- #}
|
||||
<div class="mt-auto">
|
||||
{% comment %} <div class="mt-auto">
|
||||
<ul class="navbar-nav flex-column">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">
|
||||
@ -442,7 +442,7 @@
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div> {% endcomment %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
@ -451,7 +451,7 @@
|
||||
<div class="d-flex align-items-center">
|
||||
{% if user.is_authenticated%}
|
||||
|
||||
<span class="nav-link-icon"><span class="fa-solid fa-gear me-1 fs-5"></span></span>
|
||||
<span class="nav-link-icon"><span class="fa-solid fa-gear me-1 fs-7"></span></span>
|
||||
<span class="nav-link-text">{{ request.dealer.user.username }}</span>
|
||||
|
||||
{% endif %}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load i18n %}
|
||||
{% block title %}Delete Car{% endblock %}
|
||||
{% block title %}{% trans "Delete Car" %}{% endblock %}
|
||||
{% block content %}
|
||||
<main class="d-flex align-items-center justify-content-center min-vh-50 py-5">
|
||||
<div class="col-md-6 ">
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<h6 class="fs-10 fw-normal mb-3">
|
||||
by <a class="fw-semibold" href="#!">{{ activity.created_by }}</a>
|
||||
{% trans "by" %} <a class="fw-semibold" href="#!">{{ activity.created_by }}</a>
|
||||
</h6>
|
||||
<p class="fs-9 text-body-secondary w-sm-60 mb-5">{{ activity.notes }}.</p>
|
||||
</div>
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
<div class="col-4 col-sm-auto">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="spinner-border mx-3 htmx-indicator" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
<span class="visually-hidden">{% trans "Loading..." %}</span>
|
||||
</div>
|
||||
<div class="search-box me-3">
|
||||
<form class="position-relative">
|
||||
|
||||
@ -101,7 +101,7 @@
|
||||
{{ transfer.car.selling_price }} <span class="icon-saudi_riyal"></span>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{ transfer.car.vat_amount }} <span class="icon-saudi_riyal"></span># TODO : check later
|
||||
{{ transfer.car.vat_amount }} <span class="icon-saudi_riyal"></span>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{ transfer.total_price }} <span class="icon-saudi_riyal"></span>
|
||||
@ -113,7 +113,7 @@
|
||||
<!-- Total -->
|
||||
<div class="transfer-total">
|
||||
<p>
|
||||
<strong>{% trans "Total Amount" %}:</strong> <span class="text-danger-darker fw-bold fs-8">{{ transfer.total_price }} <<span class="icon-saudi_riyal"></span></span>
|
||||
<strong>{% trans "Total Amount" %}:</strong> <span class="text-danger-darker fw-bold fs-8">{{ transfer.total_price }} <span class="icon-saudi_riyal"></span></span>
|
||||
</p>
|
||||
<p>
|
||||
<strong>{% trans "Total Amount written" %}:</strong> <span>{{ transfer.total_price|num_to_words:"ar" }} <span class="icon-saudi_riyal"></span> {{ _("only") }}</span>
|
||||
|
||||
@ -161,9 +161,9 @@
|
||||
<img class="img-fluid mb-6 w-50 w-lg-75 d-light-none"
|
||||
src="../../assets/img/spot-illustrations/dark_404.png"
|
||||
alt="" />
|
||||
<h2 class="text-body-secondary fw-bolder mb-3">Page Missing!</h2>
|
||||
<h2 class="text-body-secondary fw-bolder mb-3">{% trans "Page Missing!" %}</h2>
|
||||
<p class="text-body mb-5">
|
||||
But no worries! Our ostrich is looking everywhere
|
||||
{% trans "But no worries! Our ostrich is looking everywhere" %}
|
||||
<br class="d-none d-sm-block" />
|
||||
</div>
|
||||
</div>
|
||||
@ -223,7 +223,7 @@
|
||||
class="btn btn-phoenix-secondary"
|
||||
data-bs-dismiss="modal">{% trans 'Cancel' %}</button>
|
||||
<a class="btn btn-phoenix-success"
|
||||
href="{% url 'transfer_accept_reject' transfer.car.pk transfer.pk %}?status=accepted">Confirm</a>
|
||||
href="{% url 'transfer_accept_reject' transfer.car.pk transfer.pk %}?status=accepted">{% trans "Confirm" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -249,7 +249,7 @@
|
||||
class="btn btn-phoenix-secondary"
|
||||
data-bs-dismiss="modal">{% trans 'Cancel' %}</button>
|
||||
<a class="btn btn-phoenix-success"
|
||||
href="{% url 'transfer_accept_reject' transfer.car.pk transfer.pk %}?status=rejected">Confirm</a>
|
||||
href="{% url 'transfer_accept_reject' transfer.car.pk transfer.pk %}?status=rejected">{% trans "Confirm" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
</svg>
|
||||
</div>
|
||||
<h5 class="mb-2">{% trans "Are you sure you want to delete this bank account?" %}</h5>
|
||||
<p class="text-secondary small">This action cannot be undone.</p>
|
||||
<p class="text-secondary small">{% trans "This action cannot be undone." %}</p>
|
||||
</div>
|
||||
<div class="modal-footer d-flex justify-content-center border-0 p-3 bg-200 rounded-bottom-4">
|
||||
<button type="button"
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
{{ form|crispy }}
|
||||
<div class="row mt-5">
|
||||
<div id="formrow">
|
||||
<h3 class="text-start">Unit Items</h3>
|
||||
<h3 class="text-start">{% trans "Unit Items" %}</h3>
|
||||
<div class="form-row row g-3 mb-3 mt-5">
|
||||
<div class="mb-2 col-sm-4">
|
||||
<select class="form-control item" name="item[]" required>
|
||||
@ -28,12 +28,12 @@
|
||||
required>
|
||||
</div>
|
||||
<div class="mb-2 col-sm-1">
|
||||
<button class="btn btn-phoenix-danger removeBtn">Remove</button>
|
||||
<button class="btn btn-phoenix-danger removeBtn">{% trans "Remove" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button id="addMoreBtn" class="btn btn-phoenix-primary">Add More</button>
|
||||
<button id="addMoreBtn" class="btn btn-phoenix-primary">{% trans "Add More" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -136,21 +136,20 @@
|
||||
{% if perms.django_ledger.change_chartofaccountmodel %}
|
||||
<a class="btn btn-sm btn-phoenix-primary me-1"
|
||||
href="{% url 'account_update' request.dealer.slug url_kwargs.coa_pk account.pk %}">
|
||||
<!-- <i class="bi bi-pencil-square"></i> -->
|
||||
<i class="fa-solid fa-pen-to-square"></i> {{ _("Edit") }}
|
||||
<i class="fa-solid fa-pen-to-square"></i> {{ _("Edit") }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if perms.django_ledger.delete_chartofaccountmodel %}
|
||||
<a class="btn btn-sm btn-phoenix-danger me-1"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#deleteModal">
|
||||
<!-- <i class="bi bi-trash-fill"></i> -->
|
||||
|
||||
<i class="fa-solid fa-trash"></i> {{ _("Delete") }}
|
||||
</a>
|
||||
{% endif %}
|
||||
<a class="btn btn-sm btn-phoenix-secondary"
|
||||
href="{% url 'account_list' request.dealer.slug url_kwargs.coa_pk %}">
|
||||
<!-- <i class="bi bi-arrow-left-square-fill"></i> -->
|
||||
|
||||
<i class="fa-regular fa-circle-left"></i> {% trans 'Back to COA List' %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@ -49,8 +49,7 @@
|
||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||
<a href="{% url 'account_detail' request.dealer.slug url_kwargs.coa_pk account.uuid %}"
|
||||
class="dropdown-item text-success-dark">{% trans "View Journal Entries" %}</a>
|
||||
{% comment %} <div class="dropdown-divider"></div> {% endcomment %}
|
||||
{% comment %} <button class="dropdown-item text-danger" data-bs-toggle="modal" data-bs-target="#deleteModal">{% trans "Delete" %}</button> {% endcomment %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
@ -13,20 +13,20 @@
|
||||
{% if not invoice.is_past_due %}
|
||||
<p class="h5 text-info">{% trans 'Due in' %}: {{ invoice.date_due | timeuntil }}</p>
|
||||
{% else %}
|
||||
<p class="text-danger fw-bold h5">Past Due: {{ invoice.date_due | timesince }} ago</p>
|
||||
<p class="text-danger fw-bold h5">{% trans "Past Due" %}: {{ invoice.date_due | timesince }} {% trans "ago" %}</p>
|
||||
{% endif %}
|
||||
{% if invoice.accrue %}
|
||||
<p>
|
||||
Accrue: <span class="text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
|
||||
{% trans "Accrue" %}: <span class="text-success">{% icon 'ant-design:check-circle-filled' 24 %}</span>
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
Accrue: <span class="text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
|
||||
{% trans "Accrue" %}: <span class="text-danger">{% icon 'maki:roadblock-11' 24 %}</span>
|
||||
</p>
|
||||
{% endif %}
|
||||
<p class="h5 text-success">Owed to You: {% currency_symbol %}{{ invoice.get_amount_open | currency_format }}</p>
|
||||
<p>Amount Paid: {% currency_symbol %}{{ invoice.amount_paid | currency_format }}</p>
|
||||
<p>Progressed: {{ invoice.get_progress | percentage }}</p>
|
||||
<p class="h5 text-success">{% trans "Owed to You" %}: {% currency_symbol %}{{ invoice.get_amount_open | currency_format }}</p>
|
||||
<p>{% trans "Amount Paid" %}: {% currency_symbol %}{{ invoice.amount_paid | currency_format }}</p>
|
||||
<p>{% trans "Progressed" %}: {{ invoice.get_progress | percentage }}</p>
|
||||
<div class="progress my-3">
|
||||
<div class="progress-bar bg-success"
|
||||
role="progressbar"
|
||||
@ -126,7 +126,7 @@
|
||||
</p>
|
||||
{% else %}
|
||||
<p class="h3">
|
||||
Invoice Amount: <span class="fw-bold">{% currency_symbol %}{{ invoice.amount_due | currency_format }}</span>
|
||||
{% trans "Invoice Amount" %}: <span class="fw-bold">{% currency_symbol %}{{ invoice.amount_due | currency_format }}</span>
|
||||
</p>
|
||||
<p class="h3 text-danger">{{ invoice.get_invoice_status_display | upper }}</p>
|
||||
{% endif %}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
{% csrf_token %}
|
||||
<div class="card">
|
||||
<div class="card-body text-center">
|
||||
<h5 class="card-title fw-light">Are you sure you want to delete?</h5>
|
||||
<h5 class="card-title fw-light">{% trans "Are you sure you want to delete?" %}</h5>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
<a href="{% url 'journalentry_list' request.dealer.slug journal_entry.ledger.pk %}"
|
||||
|
||||
@ -23,11 +23,11 @@
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Account</th>
|
||||
<th>TX Type</th>
|
||||
<th>Amount</th>
|
||||
<th>Description</th>
|
||||
{% if txs_formset.can_delete %}<th>Delete</th>{% endif %}
|
||||
<th>{% trans "Account" %}</th>
|
||||
<th>{% trans "TX Type" %}</th>
|
||||
<th>{% trans "Amount" %}</th>
|
||||
<th>{% trans "Description" %}</th>
|
||||
{% if txs_formset.can_delete %}<th>{% trans "Delete" %}</th>{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@ -42,12 +42,12 @@
|
||||
<p class="h4 text-danger">{% currency_symbol %}{{ invoice.get_amount_unearned | currency_format }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-muted">Accrued {{ invoice.get_progress_percent }}%</p>
|
||||
<p class="text-muted">{% trans "Accrued"%} {{ invoice.get_progress_percent }}%</p>
|
||||
<p class="h4">{% currency_symbol %}{{ invoice.get_amount_earned | currency_format }}</p>
|
||||
</div>
|
||||
{% else %}
|
||||
<div>
|
||||
<p class="text-muted">You Are Owed</p>
|
||||
<p class="text-muted">{% trans "You Are Owed" %}</p>
|
||||
<p class="h4 text-success">{% currency_symbol %}{{ invoice.get_amount_open | currency_format }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@ -45,7 +45,7 @@
|
||||
{% trans 'Fiscal Year' %} {{ year }}
|
||||
{% endif %}
|
||||
</h2>
|
||||
<p class="h5 fst-italic fw-light">As of {{ to_date | date:'m/d/Y' }}</p>
|
||||
<p class="h5 fst-italic fw-light">{% trans "As of" %} {{ to_date | date:'m/d/Y' }}</p>
|
||||
</div>
|
||||
<!-- Balance Sheet Statement -->
|
||||
<div class="table-responsive">{% balance_sheet_statement io_model=object %}</div>
|
||||
|
||||
@ -58,8 +58,7 @@
|
||||
<option value="">{% trans 'All Makes' %}</option>
|
||||
{% for make in makes %}
|
||||
<option value="{{ make }}" {% if make == selected_make %}selected{% endif %}>{{ make }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label for="model-select" class="form-label">{% trans 'Model' %}</label>
|
||||
@ -112,26 +111,7 @@
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<!---->
|
||||
{% comment %} 'cars_sold': cars_sold,
|
||||
'current_time': current_time,
|
||||
'dealer': dealer,
|
||||
'total_revenue_from_cars': total_revenue_from_cars,
|
||||
'total_revenue_from_additonals':total_revenue_from_additonals,
|
||||
'total_revenue_collected': total_revenue_collected,
|
||||
'total_vat_on_cars':total_vat_on_cars,
|
||||
'total_vat_from_additonals':total_vat_from_additonals,
|
||||
'total_vat_collected':total_vat_collected,
|
||||
'total_discount': total_discount,
|
||||
'makes': makes,
|
||||
'models': models_qs,
|
||||
'series': series,
|
||||
'years': years,
|
||||
'selected_make': selected_make,
|
||||
'selected_model': selected_model,
|
||||
'selected_serie': selected_serie,
|
||||
'selected_year': selected_year, {% endcomment %}
|
||||
<!---->
|
||||
|
||||
<section id="summary" class="mb-5">
|
||||
<h2 class="section-heading mb-4 border-start border-5 border-primary p-2">{% trans 'Report Summary' %}</h2>
|
||||
<div class="row g-4">
|
||||
@ -277,28 +257,28 @@
|
||||
<td class="fs-9">{{ car.stock_type|capfirst }}</td>
|
||||
<td class="fs-9">{{ car.created_at|date }}</td>
|
||||
<td class="fs-9">{{ car.invoice.date_paid|date|default_if_none:"-" }}</td>
|
||||
<td class="fs-9">
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span>{{ car.cost_price }}<span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span>{{ car.marked_price }} <span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span>{{ car.discount }} <span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
<span>{{ car.final_price }} <span class="icon-saudi_riyal"></span></span>
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span >{{ car.final_price }} <span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span>{{ car.vat_amount|floatformat:2 }} <span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
<span>{{ car.get_additional_services.total|floatformat:2 }} <span class="icon-saudi_riyal"></span></span>
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span >{{ car.get_additional_services.total|floatformat:2 }} <span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span>{{ car.get_additional_services.services_vat|floatformat:2 }}<span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
<td class="fs-9 text-nowrap">
|
||||
<span>{{ car.final_price_plus_services_plus_vat|floatformat:2 }}<span class="icon-saudi_riyal"></span></span>
|
||||
</td>
|
||||
<td class="fs-9">
|
||||
|
||||
@ -9,14 +9,14 @@
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="modalLabel">Modal title</h5>
|
||||
<h5 class="modal-title" id="modalLabel">{% trans "Modal title" %}</h5>
|
||||
<button type="button"
|
||||
class="btn-close"
|
||||
data-dismiss="modal"
|
||||
aria-label="{% trans 'Close' %}"
|
||||
onclick="closeConfirmModal()"></button>
|
||||
</div>
|
||||
<div class="modal-body" id="modalBody">Modal body text goes here.</div>
|
||||
<div class="modal-body" id="modalBody">{% trans "Modal body text goes here." %}</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-phoenix-secondary"
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
{% load i18n %}
|
||||
<style>
|
||||
.fade-out {
|
||||
animation: fadeOut 1s ease-out forwards;
|
||||
@ -69,7 +70,7 @@
|
||||
</div>
|
||||
<div class="card-footer p-0 border-top border-translucent border-0">
|
||||
<div class="my-3 text-center fw-bold fs-9 text-body-tertiary text-opactity-85">
|
||||
<a class="fw-bolder" href="{% url 'notifications_history' %}">Notification history<i class="fa-solid fa-history ms-1"></i></a>
|
||||
<a class="fw-bolder" href="{% url 'notifications_history' %}">{% trans "Notification history" %}<i class="fa-solid fa-history ms-1"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
{% include "plans/order_detail_table.html" %}
|
||||
{% endwith %}
|
||||
{% if object.get_all_invoices.count %}
|
||||
<h2 class="mt-3">{% trans "Printable documents" %}</h2>
|
||||
<h2 class="mt-4">{% trans "Printable documents" %}</h2>
|
||||
<ul id="order_printable_documents">
|
||||
{% for invoice in object.get_all_invoices %}
|
||||
<li>
|
||||
@ -31,7 +31,7 @@
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<h2 class="mt-3">{% trans "Payment" %}</h2>
|
||||
<h2 class="mt-4">{% trans "Payment" %}</h2>
|
||||
{% if object.completed %}
|
||||
<p class="alert alert-phoenix-success mt-2">
|
||||
{% blocktrans with object.completed as completed %}
|
||||
@ -48,7 +48,7 @@
|
||||
<a class="btn btn-phoenix-success"
|
||||
role="button"
|
||||
href="{% url "fake_payments" pk=object.id %}">Pay using
|
||||
FakePayments™ ;)</a>
|
||||
FakePayments™ ;</a>
|
||||
{# An example code snippet for accepting payments using django-getpaid #}
|
||||
{# <form action="{% url "getpaid-new-payment" currency=object.currency %}" method="post"#}
|
||||
{# class="standard_form payment_form">#}
|
||||
|
||||
@ -132,8 +132,8 @@
|
||||
<div class="alert alert-warning bg-warning-soft border-0 small mb-0">
|
||||
{% url 'upgrade_plan' as upgrade_url %}
|
||||
{% blocktrans %}
|
||||
<p class="mb-1">This plan is no longer available.</p>
|
||||
<a href="{{ upgrade_url }}" class="fw-bold text-warning">Upgrade to current plans →</a>
|
||||
<p class="mb-1">{% trans "This plan is no longer available." %}</p>
|
||||
<a href="{{ upgrade_url }}" class="fw-bold text-warning">{% trans "Upgrade to current plans →"%}</a>
|
||||
{% endblocktrans %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@ -9,19 +9,19 @@
|
||||
{% include "purchase_orders/partials/po-select.html" with name="serie" target="trim" data=serie_data pk=po_model.pk %}
|
||||
{% include "purchase_orders/partials/po-select.html" with name="trim" target="none" data=trim_data pk=po_model.pk %}
|
||||
<div class="form-group">
|
||||
<label for="account">Account</label>
|
||||
<label for="account">{% trans "Account" %}</label>
|
||||
<select class="form-control" name="account" id="account">
|
||||
{% for account in inventory_accounts %}<option value="{{ account.pk }}">{{ account }}"></option>{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="quantity">Quantity</label>
|
||||
<label for="quantity">{% trans "Quantity" %}</label>
|
||||
<input type="number"
|
||||
class="form-control"
|
||||
id="quantity"
|
||||
name="quantity"
|
||||
required>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-phoenix-primary">Add New Item To Inventory</button>
|
||||
<button type="submit" class="btn btn-phoenix-primary">{% trans "Add New Item To Inventory" %}</button>
|
||||
</form>
|
||||
{% endblock content %}
|
||||
|
||||
@ -4,12 +4,12 @@
|
||||
<table class="table is-fullwidth is-narrow is-striped is-bordered django-ledger-table-bottom-margin-75">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>PO Number</th>
|
||||
<th>Description</th>
|
||||
<th>Status Date</th>
|
||||
<th>PO Status</th>
|
||||
<th>PO Amount</th>
|
||||
<th>Actions</th>
|
||||
<th>{% trans "PO Number" %}</th>
|
||||
<th>{% trans "Description" %}</th>
|
||||
<th>{% trans "Status Date" %}</th>
|
||||
<th>{% trans "PO Status" %}</th>
|
||||
<th>{% trans "PO Amount" %}</th>
|
||||
<th>{% trans "Actions" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -37,7 +37,7 @@
|
||||
<div class="dropdown-menu" id="dropdown-menu-{{ po.uuid }}" role="menu">
|
||||
<div class="dropdown-content">
|
||||
<a href="{% url 'purchase_order_detail' po_pk=po.uuid %}"
|
||||
class="dropdown-item has-text-success">Details</a>
|
||||
class="dropdown-item has-text-success">{% trans "Details" %}</a>
|
||||
<a href="{% url 'po-delete' entity_slug=entity_slug po_pk=po.uuid %}"
|
||||
class="dropdown-item has-text-weight-bold has-text-danger">{% trans ' Delete' %}</a>
|
||||
</div>
|
||||
|
||||
@ -5,16 +5,16 @@
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<div class="form-group">
|
||||
<label for="account">Name</label>
|
||||
<label for="account">{% trans "Name" %}</label>
|
||||
<input type="text" class="form-control" id="name" name="name" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="account">Account</label>
|
||||
<label for="account">{% trans "Account" %}</label>
|
||||
<select class="form-control" name="account" id="account">
|
||||
{% for account in inventory_accounts %}<option value="{{ account.pk }}">{{ account }}</option>{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-phoenix-primary mt-2">Add New Item To Inventory</button>
|
||||
<button type="submit" class="btn btn-phoenix-primary mt-2">{% trans "Add New Item To Inventory" %}</button>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
<!-- templates/purchase_orders/po_confirm_delete.html -->
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Confirm Delete - {{ block.super }}{% endblock %}
|
||||
{% block title %}{% trans "Confirm Delete"%} - {{ block.super }}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="container mt-4">
|
||||
<h2>Confirm Deletion</h2>
|
||||
<h2>{% trans "Confirm Deletion" %}</h2>
|
||||
<p>
|
||||
Are you sure you want to delete the Purchase Order <strong>"{{ po.po_number }}"</strong>?
|
||||
{% trans "Are you sure you want to delete the Purchase Order" %} <strong>"{{ po.po_number }}"</strong>?
|
||||
</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<button type="submit" class="btn btn-phoenix-danger">Yes, Delete</button>
|
||||
<button type="submit" class="btn btn-phoenix-danger">{% trans "Yes, Delete" %}</button>
|
||||
<a href="{% url 'purchase_order_detail' po.id %}"
|
||||
class="btn btn-phoenix-secondary">Cancel</a>
|
||||
class="btn btn-phoenix-secondary">{% trans "Cancel" %}</a>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@ -11,13 +11,13 @@
|
||||
<div class="card shadow">
|
||||
<div class="card-body text-center py-4">
|
||||
<h2 class="card-title h3 fw-light mb-4">
|
||||
Are you sure you want to delete
|
||||
Purchase Order {{ po_model.po_number }}?
|
||||
{% blocktrans %}Are you sure you want to delete
|
||||
Purchase Order {{ po_model.po_number }}?{% endblocktrans %}
|
||||
</h2>
|
||||
<p class="card-text text-muted mb-4">
|
||||
All transactions associated with this Purchase Order will be deleted.
|
||||
If you want to void the PO instead, <a href="{% url 'purchase_order_detail' dealer_slug=request.dealer.slug pk=po_model.uuid %}"
|
||||
class="text-decoration-none">click here</a>
|
||||
{% trans "All transactions associated with this Purchase Order will be deleted.
|
||||
If you want to void the PO instead," %} <a href="{% url 'purchase_order_detail' dealer_slug=request.dealer.slug pk=po_model.uuid %}"
|
||||
class="text-decoration-none">{% trans "click here" %}</a>
|
||||
</p>
|
||||
<div class="d-flex justify-content-center gap-3 mt-4">
|
||||
<a href="{% url 'purchase_order_update' dealer_slug=request.dealer.slug entity_slug=view.kwargs.entity_slug po_pk=po_model.uuid %}"
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<button class="dropdown-item text-warning-dark" disabled>
|
||||
<span class="fas fa-exclamation-triangle me-1"></span> Fulfill the PO Before Viewing Inventory
|
||||
<span class="fas fa-exclamation-triangle me-1"></span>{% trans Fulfill the PO Before Viewing Inventory %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
@ -102,7 +102,7 @@
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="6" class="text-center">No purchase orders found.</td>
|
||||
<td colspan="6" class="text-center">{% trans "No purchase orders found." %}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
|
||||
@ -26,10 +26,10 @@
|
||||
<table class="table table-striped table-hover align-middle">
|
||||
<thead>
|
||||
<tr class="bg-body-highlight">
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Quatnity</th>
|
||||
<th scope="col">Unit Cost</th>
|
||||
<th scope="col">Is Data Uploaded ?</th>
|
||||
<th scope="col">{% trans "Name" %}</th>
|
||||
<th scope="col">{% trans "Quatnity" %}</th>
|
||||
<th scope="col">{% trans "Unit Cost" %}</th>
|
||||
<th scope="col">{% trans "Is Data Uploaded ?" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -44,7 +44,7 @@
|
||||
{% else %}
|
||||
<a href="{% url 'upload_cars' request.dealer.slug i.item.pk %}"
|
||||
class="btn btn-sm btn-phoenix-primary">
|
||||
<i data-feather="upload" class="me-2"></i>Upload Data
|
||||
<i data-feather="upload" class="me-2"></i>{% trans "Upload Data" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</th>
|
||||
|
||||
@ -27,8 +27,8 @@
|
||||
<td class="has-text-centered">
|
||||
{% if item.bill_model_id %}
|
||||
<a class="is-small is-info button"
|
||||
href="{% url 'bill-detail' dealer_slug=dealer_slug entity_slug=entity_slug bill_pk=item.bill_model_id %}">View
|
||||
Bill</a>
|
||||
href="{% url 'bill-detail' dealer_slug=dealer_slug entity_slug=entity_slug bill_pk=item.bill_model_id %}">
|
||||
{% trans "View Bill" %}</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
{% endblock title %}
|
||||
{% block content %}
|
||||
<div class="card email-content">
|
||||
<h5 class="card-header">Send Estimate</h5>
|
||||
<h5 class="card-header">{% trans "Send Estimate" %}</h5>
|
||||
<div class="card-body">
|
||||
<form class="d-flex flex-column h-100"
|
||||
action="{% url 'send_email' estimate.pk %}"
|
||||
|
||||
@ -134,7 +134,7 @@
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small mb-1">{{ _("Last Updated") }}</label>
|
||||
<p class="mb-0 fw-bold">
|
||||
{{ saleorder.updated_at|naturaltime|capfirst }} by
|
||||
{%blocktrans %} {{ saleorder.updated_at|naturaltime|capfirst }} by {% endblocktrans %}
|
||||
{{ saleorder.last_modified_by }}
|
||||
</p>
|
||||
</div>
|
||||
@ -354,17 +354,15 @@
|
||||
<div class="d-grid gap-2">
|
||||
{% if saleorder.status == 'pending_approval' %}
|
||||
<button class="btn btn-success" onclick="updateStatus('approved')">
|
||||
<i class="fas fa-check-circle me-2"></i> Approve Order
|
||||
<i class="fas fa-check-circle me-2"></i> {% trans "Approve Order" %}
|
||||
</button>
|
||||
{% endif %}
|
||||
{% comment %} <a href="{% url 'edit_sale_order' saleorder.pk %}"
|
||||
class="btn btn-primary"> {% endcomment %}
|
||||
|
||||
<a href="" class="btn btn-primary">
|
||||
<i class="fas fa-edit me-2"></i> {{ _("Edit Order") }}
|
||||
</a>
|
||||
{% if not saleorder.invoice %}
|
||||
{% comment %} <a href="{% url 'create_invoice_from_order' saleorder.pk %}"
|
||||
class="btn btn-info"> {% endcomment %}
|
||||
|
||||
<a href="" class="btn btn-info">
|
||||
<i class="fas fa-file-invoice-dollar me-2"></i> {{ _("Create Invoice") }}
|
||||
</a>
|
||||
@ -534,7 +532,7 @@
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"></button>
|
||||
</div>
|
||||
{% comment %} <form method="post" action="{% url 'cancel_sale_order' saleorder.pk %}"> {% endcomment %}
|
||||
|
||||
<form method="post" action="">
|
||||
{% csrf_token %}
|
||||
<div class="modal-body">
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
<td class="align-middle product white-space-nowrap py-0">{{ order.expected_delivery_date|naturalday|capfirst }}</td>
|
||||
<td class="align-middle product white-space-nowrap py-0">
|
||||
<a class="btn btn-sm btn-phoenix-success"
|
||||
href="{% url 'sale_order_details' order.estimate.pk order.pk %}">View</a>
|
||||
href="{% url 'sale_order_details' order.estimate.pk order.pk %}">{% trans "View" %}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
|
||||
@ -51,15 +51,15 @@
|
||||
<div class="mb-4">
|
||||
<strong>{{ estimate.customer.customer_name }}</strong>
|
||||
<br />
|
||||
Order ID #{{ estimate.sale_orders.first.formatted_order_id }}
|
||||
{% blocktrans%}Order ID #{{ estimate.sale_orders.first.formatted_order_id }}{%endblocktrans%}
|
||||
<br />
|
||||
{{ estimate.sale_orders.first.created|date }}
|
||||
</div>
|
||||
<table class="invoice-items table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Item</th>
|
||||
<th class="text-end">Price</th>
|
||||
<th>{% trans "Item" %}</th>
|
||||
<th class="text-end">{% trans "Price" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -71,7 +71,7 @@
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr class="b-top">
|
||||
<td>Additionals :</td>
|
||||
<td>{% trans "Additionals :" %}</td>
|
||||
</tr>
|
||||
{% for service in data.additionals %}
|
||||
<tr>
|
||||
@ -88,7 +88,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th class="text-end">Total</th>
|
||||
<th class="text-end">{%trans "Total" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
<div class="container mt-4">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Need help?</h5>
|
||||
<p class="card-text">Raise a ticket and we will get back to you as soon as possible.</p>
|
||||
<h5 class="card-title">{% trans "Need help?" %}</h5>
|
||||
<p class="card-text">{% trans "Raise a ticket and we will get back to you as soon as possible." %}</p>
|
||||
<a href="{% url 'create_ticket' request.dealer.slug %}"
|
||||
class="btn btn-phoenix-primary">Raise a Ticket</a>
|
||||
class="btn btn-phoenix-primary">{% trans "Raise a Ticket" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -54,12 +54,12 @@
|
||||
<thead class="bg-light">
|
||||
<tr>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold ps-4">ID</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">Subject</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">Status</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">Priority</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">Created</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">{% trans "Subject" %}</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">{% trans "Status" %}</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">{% trans "Priority" %}</th>
|
||||
<th scope="col" class="text-secondary text-uppercase fw-bold">{% trans "Created" %}</th>
|
||||
<th scope="col"
|
||||
class="text-secondary text-uppercase fw-bold text-end pe-4">Actions</th>
|
||||
class="text-secondary text-uppercase fw-bold text-end pe-4">{% trans "Actions" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@ -5,15 +5,15 @@
|
||||
{% block content %}
|
||||
<div class="card">
|
||||
<div class="card-header bg-primary text-white">
|
||||
<h2 class="h4 mb-0">Update Ticket</h2>
|
||||
<h2 class="h4 mb-0">{% trans "Update Ticket" %}</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
<button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
|
||||
<a href="{% url 'ticket_list' request.dealer.slug %}"
|
||||
class="btn btn-secondary">Cancel</a>
|
||||
class="btn btn-secondary">{% trans "Cancel" %}</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
<p class="lead">{{ tour.description }}</p>
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Ready to Start</h5>
|
||||
<p>This interactive guide will walk you through each step of the process.</p>
|
||||
<h5 class="card-title">{% trans "Ready to Start" %}</h5>
|
||||
<p>{% trans "This interactive guide will walk you through each step of the process." %}</p>
|
||||
<button class="btn btn-primary"
|
||||
onclick="window.tourManager.loadTour('{{ tour.slug }}')">Start Guide Now</button>
|
||||
onclick="window.tourManager.loadTour('{{ tour.slug }}')">{% trans "Start Guide Now" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
{% block title %}Interactive Guides{% endblock %}
|
||||
{% block content %}
|
||||
<div class="container my-4">
|
||||
<h1>Interactive Guides</h1>
|
||||
<p class="lead">Learn how to use the car inventory system with these interactive step-by-step guides.</p>
|
||||
<h1>{% trans "Interactive Guides" %}</h1>
|
||||
<p class="lead">{% trans "Learn how to use the car inventory system with these interactive step-by-step guides." %}</p>
|
||||
<div class="row mt-4">
|
||||
{% for tour in tours %}
|
||||
<div class="col-md-4 mb-4">
|
||||
@ -13,13 +13,13 @@
|
||||
<p class="card-text">{{ tour.description }}</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="{% url 'start_tour' tour.slug %}" class="btn btn-primary">Start Guide</a>
|
||||
<a href="{% url 'start_tour' tour.slug %}" class="btn btn-primary">{% trans "Start Guide" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% empty %}
|
||||
<div class="col-12">
|
||||
<div class="alert alert-info">No interactive guides available at this time.</div>
|
||||
<div class="alert alert-info">{% trans "No interactive guides available at this time." %}</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user