update
This commit is contained in:
parent
a266c99028
commit
f3cd624851
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -9,7 +9,7 @@ from import_export.resources import ModelResource
|
||||
|
||||
from .models import Car
|
||||
|
||||
# Define resource class
|
||||
# # Define resource class
|
||||
# class CarSerieResource(ModelResource):
|
||||
# class Meta:
|
||||
# model = models.CarSerie
|
||||
@ -19,6 +19,7 @@ from .models import Car
|
||||
# class CarSeriesAdmin(ExportMixin, admin.ModelAdmin):
|
||||
# resource_class = CarSerieResource
|
||||
|
||||
|
||||
admin.site.register(models.Dealer)
|
||||
admin.site.register(models.Staff)
|
||||
admin.site.register(models.Vendor)
|
||||
|
||||
@ -2,51 +2,8 @@ from django.core.management.base import BaseCommand
|
||||
from inventory.models import CarSerie
|
||||
|
||||
TRANSLATIONS = {
|
||||
"Sedan": "سيدان",
|
||||
"Coupe": "كوبيه",
|
||||
"SUV 5 doors": "إس يو في - خمسة أبواب",
|
||||
"Minivan": "ميني فان",
|
||||
"Hatchback": "هاتشباك",
|
||||
"Cabriolet": "سطح قابل للطي",
|
||||
"Hatchback 5-doors": "هاتشباك - خمسة أبواب",
|
||||
"Hatchback 5 doors": "هاتشباك - خمسة أبواب",
|
||||
"Hatchback 3-doors": "هاتشباك - ثلاثة أبواب",
|
||||
"Crossover": "كروس أوفر",
|
||||
"Wagon": "واغن",
|
||||
"SUV": "إس يو في",
|
||||
"Wagon 5 doors": "واغن - خمسة أبواب",
|
||||
"Roadster": "رودستر",
|
||||
"SUV 5-doors": "إس يو في - خمسة أبواب",
|
||||
"Wagon 5-doors": "واغن - خمسة أبواب",
|
||||
"Sedan 4-doors": "سيدان - أربعة أبواب",
|
||||
"Hatchback 3 doors": "هاتشباك - ثلاثة أبواب",
|
||||
"Van": "فان",
|
||||
"Pickup Double cabin": "بيك أب - غمارتين",
|
||||
"Compactvan": "كومباكت فان",
|
||||
"Pickup": "بيك أب",
|
||||
"Microvan": "ميكروفان",
|
||||
"Liftback": "ليفت باك",
|
||||
"SUV 3-doors": "إس يو في - ثلاثة أبواب",
|
||||
"Coupe 2-doors": "كوبيه - بابين",
|
||||
"Pickup Single cabin": "بيك أب - غمارة واحدة",
|
||||
"Crossover 5-doors": "كروس أوفر - خمسة أبواب",
|
||||
"Coupe-Hardtop": "كوبيه هاردتوب",
|
||||
"SUV 3 doors": "إس يو في - ثلاثة أبواب",
|
||||
"Hardtop": "هاردتوب",
|
||||
"Sedan 2-doors": "سيدان - بابين",
|
||||
"Minivan 5-doors": "ميني فان - خمسة أبواب",
|
||||
"Targa": "تارغا",
|
||||
"SUV opened": "إس يو في مكشوف",
|
||||
"Pickup One-and-a-half cabin": "بيك أب - غمارة ونصف",
|
||||
"Sedan 2 doors": "سيدان - بابين",
|
||||
"AMG Sedan 4-doors": "أي إم جي سيدان - أربعة أبواب",
|
||||
"Cabriolet 2-doors": "سطح قابل للطي - بابين",
|
||||
"Fastback": "فاست باك",
|
||||
"Sedan-Hardtop": "سيدان هاردتوب",
|
||||
"Regular Cab pickup 2-doors": "بيك أب كابينة عادية - بابين",
|
||||
"Grand minivan 5-doors": "ميني فان كبير - خمسة أبواب",
|
||||
"Sedan Long": "سيدان طويل",
|
||||
"Speedster": "سبيدستر",
|
||||
"Liftback 5-doors": "ليفت باك - خمسة أبواب",
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
22
inventory/migrations/0049_carreservation_reserved_for.py
Normal file
22
inventory/migrations/0049_carreservation_reserved_for.py
Normal file
@ -0,0 +1,22 @@
|
||||
# Generated by Django 5.1.6 on 2025-02-24 17:25
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0048_remove_dealersettings_bill_payable_account_and_more'),
|
||||
migrations.swappable_dependency(settings.DJANGO_LEDGER_CUSTOMER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='carreservation',
|
||||
name='reserved_for',
|
||||
field=models.ForeignKey(default='dd747dc3-39bc-411f-a17d-c930a50220fe', on_delete=django.db.models.deletion.CASCADE, related_name='reservations', to=settings.DJANGO_LEDGER_CUSTOMER_MODEL, verbose_name='Reserved For'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.1.6 on 2025-02-25 01:05
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0049_carreservation_reserved_for'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='carreservation',
|
||||
name='reserved_for',
|
||||
),
|
||||
]
|
||||
@ -535,9 +535,16 @@ class CarReservation(models.Model):
|
||||
related_name="reservations",
|
||||
verbose_name=_("Reserved By"),
|
||||
)
|
||||
# reserved_for = models.ForeignKey(
|
||||
# CustomerModel,
|
||||
# on_delete=models.CASCADE,
|
||||
# related_name="reservations",
|
||||
# verbose_name=_("Reserved For"),
|
||||
# )
|
||||
reserved_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Reserved At"))
|
||||
reserved_until = models.DateTimeField(verbose_name=_("Reserved Until"))
|
||||
|
||||
|
||||
@property
|
||||
def is_active(self):
|
||||
return self.reserved_until > now()
|
||||
|
||||
@ -355,7 +355,7 @@ class ManagerDashboard(LoginRequiredMixin, TemplateView):
|
||||
sold_percentage = sold_cars / total_cars * 100
|
||||
qs = models.Car.objects.values('id_car_make__name').annotate(count=Count('id')).order_by('id_car_make__name')
|
||||
car_by_make = list(qs)
|
||||
print(qs)
|
||||
|
||||
context["dealer"] = dealer
|
||||
context["total_cars"] = total_cars
|
||||
context["total_reservations"] = total_reservations
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -52,7 +52,14 @@
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"
|
||||
integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
|
||||
<!--<style>
|
||||
.btn{
|
||||
padding-top: 4px;
|
||||
padding-right: 16px;
|
||||
padding-left: 16px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
</style>-->
|
||||
{% block customCSS %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
@ -72,7 +79,7 @@
|
||||
{% block body %}
|
||||
{% endblock body%}
|
||||
|
||||
|
||||
<div class="my-3"></div>
|
||||
{% include 'footer.html' %}
|
||||
</div>
|
||||
|
||||
|
||||
@ -111,45 +111,54 @@
|
||||
<table class="table table-sm fs-9 mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="sort white-space-nowrap align-middle ps-0 pe-3" scope="col" data-sort="order" style="width:30%;">{% trans 'Type'|upper %}</th>
|
||||
<th class="sort align-middle text-end pe-7" scope="col" data-sort="total" style="width:10%;">{% trans 'Total'|upper %}</th>
|
||||
<th class="sort align-middle white-space-nowrap pe-3" scope="col" data-sort="payment_status" style="width:20%;">{% trans 'Payment Status'|upper %}</th>
|
||||
<th class="sort align-middle white-space-nowrap text-start pe-3" scope="col" data-sort="fulfilment_status" style="width:20%;">{% trans 'Fulfilment Status'|upper %}</th>
|
||||
<th class="sort white-space-nowrap align-middle ps-0 pe-3" scope="col" data-sort="order">{% trans 'Type'|upper %}</th>
|
||||
<th class="sort align-middle text-end pe-7" scope="col" data-sort="total">{% trans 'Total'|upper %}</th>
|
||||
<th class="sort align-middle white-space-nowrap pe-3" scope="col" data-sort="payment_status">{% trans 'Payment Status'|upper %}</th>
|
||||
<th class="sort align-middle text-end pe-0" scope="col" data-sort="date">{% trans 'Date'|upper %}</th>
|
||||
<th class="sort text-end align-middle pe-0 ps-5" scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="list" id="customer-order-table-body">
|
||||
{% for estimate in estimates %}
|
||||
{% for estimate in estimates %}
|
||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||
<td class="order align-middle white-space-nowrap ps-0">
|
||||
<p class="fw-semibold mb-0" >{{ estimate.estimate_number }}</p>
|
||||
|
||||
<p class="fw-semibold mb-0" >{{ _("Quotation") }}-<span class="fs-10 fw-medium">{{ estimate.estimate_number }}</span></p>
|
||||
</td>
|
||||
<td class="total align-middle text-end fw-semibold pe-7 text-body-highlight">{{ estimate.revenue_estimate|currency_format }}</td>
|
||||
<td class="payment_status align-middle white-space-nowrap text-start fw-bold text-body-tertiary">
|
||||
|
||||
</td>
|
||||
|
||||
<td class="date align-middle white-space-nowrap text-body-tertiary fs-9 ps-4 text-end">{{ estimate.created }}</td>
|
||||
<td class="align-middle white-space-nowrap text-end pe-0 ps-5">
|
||||
<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"><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 %}
|
||||
{% for invoice in invoices %}
|
||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||
<td class="order align-middle white-space-nowrap ps-0">
|
||||
|
||||
<p class="fw-semibold mb-0" >{{ _("Invoice") }}-<span class="fs-10 fw-medium">{{ invoice.invoice_number }}</span></p>
|
||||
</td>
|
||||
<td class="total align-middle text-end fw-semibold pe-7 text-body-highlight">{{ invoice.amount_paid|currency_format }}</td>
|
||||
<td class="payment_status align-middle white-space-nowrap text-start fw-bold text-body-tertiary">
|
||||
{% if invoice.is_paid %}
|
||||
<span class="badge badge-phoenix fs-10 badge-phoenix-success">
|
||||
<span class="badge-label">Paid</span>
|
||||
<span class="badge-label">{{ _("Paid") }}</span>
|
||||
<span class="ms-1" data-feather="check" style="height:12.8px;width:12.8px;"></span>
|
||||
</span>
|
||||
|
||||
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="fulfilment_status align-middle white-space-nowrap text-start fw-bold text-body-tertiary">
|
||||
{% if estimate.status == 'draft' %}
|
||||
<span class="badge badge-phoenix badge-phoenix-warning">{% trans "Draft" %}</span>
|
||||
{% elif estimate.status == 'in_review' %}
|
||||
<span class="badge badge-phoenix badge-phoenix-info">{% trans "In Review" %}</span>
|
||||
{% elif estimate.status == 'approved' %}
|
||||
<span class="badge badge-phoenix badge-phoenix-success">{% trans "Approved" %}</span>
|
||||
{% elif estimate.status == 'declined' %}
|
||||
<span class="badge badge-phoenix badge-phoenix-danger">{% trans "Declined" %}</span>
|
||||
{% elif estimate.status == 'canceled' %}
|
||||
<span class="badge badge-phoenix badge-phoenix-danger">{% trans "Canceled" %}</span>
|
||||
{% elif estimate.status == 'completed' %}
|
||||
<span class="badge badge-phoenix badge-phoenix-success">{% trans "Completed" %}</span>
|
||||
{% elif estimate.status == 'void' %}
|
||||
<span class="badge badge-phoenix badge-phoenix-secondary">{% trans "Void" %}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="date align-middle white-space-nowrap text-body-tertiary fs-9 ps-4 text-end">{{ estimate.created }}</td>
|
||||
<td class="date align-middle white-space-nowrap text-body-tertiary fs-9 ps-4 text-end">{{ invoice.created }}</td>
|
||||
<td class="align-middle white-space-nowrap text-end pe-0 ps-5">
|
||||
<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>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load i18n static custom_filters %}
|
||||
{% load i18n static custom_filters django_ledger%}
|
||||
{% block content %}
|
||||
<script src="{% static 'js/echarts.js' %}"></script>
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<div class="text-danger">{{ error }}</div>
|
||||
{% endfor %}
|
||||
<div class="d-flex mb-3">
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "cancel"|capfirst %}</a>
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "Cancel"|capfirst %}</a>
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
{{ _("Save") }}
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<div class="text-danger">{{ error }}</div>
|
||||
{% endfor %}
|
||||
<div class="d-flex mb-3">
|
||||
<a href="{% url 'group_detail' group.pk %}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "cancel"|capfirst %}</a>
|
||||
<a href="{% url 'group_detail' group.pk %}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "Cancel"|capfirst %}</a>
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
{{ _("Save") }}
|
||||
|
||||
@ -306,15 +306,17 @@
|
||||
{% if reservation.is_active %}
|
||||
<form method="post" action="{% url 'reservations' reservation.id %}">
|
||||
{% csrf_token %}
|
||||
<button type="submit" name="action" value="renew" class="btn btn-sm btn-phoenix-success">
|
||||
{% trans "Renew" %}
|
||||
</button>
|
||||
<button type="submit" name="action" value="cancel" class="btn btn-sm btn-phoenix-secondary">
|
||||
{% trans "Cancel" %}
|
||||
</button>
|
||||
<div class="btn-group">
|
||||
<button type="submit" name="action" value="renew" class="btn btn-sm btn-phoenix-success px-3 py-1">
|
||||
{% trans "Renew" %}
|
||||
</button>
|
||||
<button type="submit" name="action" value="cancel" class="btn btn-sm btn-phoenix-secondary px-3 py-1">
|
||||
{% trans "Cancel" %}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<span class="badge bg-danger" style="width: 120px;">
|
||||
<span class="badge badge-phoenix badge-phoenix-danger fs-10">
|
||||
{% trans "Expired" %}
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
@ -12,11 +12,11 @@
|
||||
<script src="https://unpkg.com/@zxing/library@latest"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/tesseract.js@5/dist/tesseract.min.js"></script>
|
||||
|
||||
<div class="row">
|
||||
<div class=" container-fluid m-0">
|
||||
<form method="post" id="carForm" class="form needs-validation" novalidate>
|
||||
{% csrf_token %}
|
||||
{% include 'partials/form_errors.html' %}
|
||||
<div class="d-flex flex-column min-vh-100">
|
||||
<div class="d-flex flex-column">
|
||||
<div class="d-flex flex-column flex-sm-grow-1 p-0">
|
||||
|
||||
<div class="row g-4">
|
||||
@ -34,13 +34,13 @@
|
||||
</div>
|
||||
<div class="input-group input-group-sm my-2">
|
||||
<button type="button"
|
||||
class="btn btn-warning rounded-start"
|
||||
class="btn btn-phoenix-warning rounded-start"
|
||||
id="scan-vin-btn"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#scannerModal">
|
||||
<span class="fas fa-camera fs-9"></span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-primary rounded-end ms-1" id="decodeVinBtn">
|
||||
<button type="button" class="btn btn-sm btn-phoenix-primary rounded-end ms-1" id="decodeVinBtn">
|
||||
<span class="fas fa-search fs-9 fw-bolder"></span>
|
||||
</button>
|
||||
</div>
|
||||
@ -190,8 +190,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--Specifications Buttons-->
|
||||
<div class="btn-group mt-3">
|
||||
<!--Save Buttons-->
|
||||
<div class="btn-group">
|
||||
<button type="submit" name="add_another" value="true" class="btn btn-sm btn-phoenix-success me-1">
|
||||
{% trans "Save and Add Another" %}
|
||||
</button>
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
<div class="row justify-content-between">
|
||||
<div class="col-6 col-md-4 col-xxl-2 text-center border-translucent border-start-xxl border-end-xxl-0 border-bottom-xxl-0 border-end border-bottom pb-4 pb-xxl-0 "><i class="fa-solid fa-landmark-dome fs-5 lh-1 text-primary"></i>
|
||||
<h1 class="fs-5 pt-3">{% currency_symbol %}{{ tx_digest.group_balance.GROUP_ASSETS | currency_format }}</h1>
|
||||
<p class="fs-9 mb-0">{{ _("Assets") }}</p>
|
||||
<p class="fs-9 mb-0">{{ _("Assets") }}nmnmnmnmnmnm</p>
|
||||
</div>
|
||||
<div class="col-6 col-md-4 col-xxl-2 text-center border-translucent border-start-xxl border-end-xxl-0 border-bottom-xxl-0 border-end-md border-bottom pb-4 pb-xxl-0"><i class="fa-solid fa-weight-hanging fs-5 lh-1 text-primary"></i>
|
||||
<h1 class="fs-5 pt-3">{% currency_symbol %}{{ tx_digest.group_balance.GROUP_LIABILITIES | currency_format }}</h1>
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
{{ form|crispy }}
|
||||
|
||||
<div class="d-flex mb-3">
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6">{% trans "cancel"|capfirst %}</a>
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6">{% trans "Cancel"|capfirst %}</a>
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<!--<i class="bi bi-save"></i> -->
|
||||
{{ _("Save") }}
|
||||
|
||||
@ -135,9 +135,9 @@
|
||||
{% elif estimate.status == 'approved' %}
|
||||
<span class="badge text-bg-success">{% trans "Approved" %}</span>
|
||||
{% elif estimate.status == 'completed' %}
|
||||
<span class="badge text-bg-success">{% trans "completed" %}</span>
|
||||
<span class="badge text-bg-success">{% trans "Completed" %}</span>
|
||||
{% elif estimate.status == 'canceled' %}
|
||||
<span class="badge text-bg-danger">{% trans "canceled" %}</span>
|
||||
<span class="badge text-bg-danger">{% trans "Canceled" %}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -81,7 +81,7 @@
|
||||
<div class="d-flex bg-success-subtle rounded flex-center me-3 mb-sm-3 mb-md-0 mb-xl-3 mb-xxl-0" style="width:32px; height:32px"><span class="text-success-dark" data-feather="dollar-sign" style="width:24px; height:24px"></span></div>
|
||||
<div>
|
||||
<p class="fw-bold mb-1">{% trans 'Paid Amount' %}</p>
|
||||
<h4 class="fw-bolder text-nowrap {% if invoice.is_paid %}text-success{% endif %}">{{invoice.amount_paid}} {{ _("SAR") }}</h4>
|
||||
<h4 class="fw-bolder text-nowrap {% if invoice.is_paid %}text-success{% endif %}">{{invoice.amount_paid}} {{ CURRENCY }}</h4>
|
||||
<h6 class="fw-bolder text-nowrap">{{ _("Owned") }} <span class="fw-semibold text-nowrap text-success">{{invoice.get_amount_open|floatformat}} {{ _("SAR") }}</span></h6>
|
||||
<div class="progress" style="height:17px">
|
||||
<div class="progress-bar fw-semibold bg-{% if invoice.get_progress_percent < 100 %}secondary{% else %}success{% endif %} rounded-2" role="progressbar" style="width: {{invoice.get_progress_percent}}%" aria-valuenow="{{invoice.get_progress_percent}}" aria-valuemin="0" aria-valuemax="100">{{invoice.get_progress_percent}}%</div>
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
<div class="text-danger">{{ error }}</div>
|
||||
{% endfor %}
|
||||
<div class="d-flex mb-3">
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "cancel"|capfirst %}</a>
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "Cancel"|capfirst %}</a>
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
{{ _("Save") }}
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
<div class="text-danger">{{ error }}</div>
|
||||
{% endfor %}
|
||||
<div class="d-flex mb-3">
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "cancel"|capfirst %}</a>
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6"><i class="fa-solid fa-ban"></i> {% trans "Cancel" %}</a>
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
{{ _("Save") }}
|
||||
|
||||
2
templates/vendors/vendor_form.html
vendored
2
templates/vendors/vendor_form.html
vendored
@ -35,7 +35,7 @@
|
||||
<div class="text-danger">{{ error }}</div>
|
||||
{% endfor %}
|
||||
<div class="d-flex mb-3">
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6">{% trans "cancel"|capfirst %}</a>
|
||||
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-phoenix-primary me-2 px-6">{% trans "Cancel"|capfirst %}</a>
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<!--<i class="bi bi-save"></i> -->
|
||||
{{ _("Save") }}
|
||||
|
||||
187
test.txt
187
test.txt
@ -64,4 +64,189 @@ send_mail(
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
"Sedan": "سيدان",
|
||||
"Coupe": "كوبيه",
|
||||
"SUV 5 doors": "إس يو في - خمسة أبواب",
|
||||
"Minivan": "ميني فان",
|
||||
"Hatchback": "هاتشباك",
|
||||
"Cabriolet": "سطح قابل للطي",
|
||||
"Hatchback 5-doors": "هاتشباك - خمسة أبواب",
|
||||
"Hatchback 5 doors": "هاتشباك - خمسة أبواب",
|
||||
"Hatchback 3-doors": "هاتشباك - ثلاثة أبواب",
|
||||
"Crossover": "كروس أوفر",
|
||||
"Wagon": "واغن",
|
||||
"SUV": "إس يو في",
|
||||
"Wagon 5 doors": "واغن - خمسة أبواب",
|
||||
"Roadster": "رودستر",
|
||||
"SUV 5-doors": "إس يو في - خمسة أبواب",
|
||||
"Wagon 5-doors": "واغن - خمسة أبواب",
|
||||
"Sedan 4-doors": "سيدان - أربعة أبواب",
|
||||
"Hatchback 3 doors": "هاتشباك - ثلاثة أبواب",
|
||||
"Van": "فان",
|
||||
"Pickup Double cabin": "بيك أب - غمارتين",
|
||||
"Compactvan": "كومباكت فان",
|
||||
"Pickup": "بيك أب",
|
||||
"Microvan": "ميكروفان",
|
||||
"Liftback": "ليفت باك",
|
||||
"SUV 3-doors": "إس يو في - ثلاثة أبواب",
|
||||
"Coupe 2-doors": "كوبيه - بابين",
|
||||
"Pickup Single cabin": "بيك أب - غمارة واحدة",
|
||||
"Crossover 5-doors": "كروس أوفر - خمسة أبواب",
|
||||
"Coupe-Hardtop": "كوبيه هاردتوب",
|
||||
"SUV 3 doors": "إس يو في - ثلاثة أبواب",
|
||||
"Hardtop": "هاردتوب",
|
||||
"Sedan 2-doors": "سيدان - بابين",
|
||||
"Minivan 5-doors": "ميني فان - خمسة أبواب",
|
||||
"Targa": "تارغا",
|
||||
"SUV opened": "إس يو في مكشوف",
|
||||
"Pickup One-and-a-half cabin": "بيك أب - غمارة ونصف",
|
||||
"Sedan 2 doors": "سيدان - بابين",
|
||||
"AMG Sedan 4-doors": "أي إم جي سيدان - أربعة أبواب",
|
||||
"Cabriolet 2-doors": "سطح قابل للطي - بابين",
|
||||
"Fastback": "فاست باك",
|
||||
"Sedan-Hardtop": "سيدان هاردتوب",
|
||||
"Regular Cab pickup 2-doors": "بيك أب كابينة عادية - بابين",
|
||||
"Grand minivan 5-doors": "ميني فان كبير - خمسة أبواب",
|
||||
"Sedan Long": "سيدان طويل",
|
||||
"Speedster": "سبيدستر",
|
||||
|
||||
|
||||
|
||||
"Liftback 5-doors": "ليفت باك - خمسة أبواب",
|
||||
"AMG roadster 2-doors": "أي إم جي رودستر - بابين",
|
||||
"SUV 2-doors": "إس يو في - بابين",
|
||||
"Hybrid Sedan 4-doors": "سيدان هجينة - أربعة أبواب",
|
||||
"JDM Sedan 4-doors": "جي دي إم سيدان - أربعة أبواب",
|
||||
"wagon 3-doors": "واغن - ثلاثة أبواب",
|
||||
"wagon (5 doors)": "واغن - خمسة أبواب",
|
||||
"AMG crossover 5-doors": "أي إم جي كروس أوفر - خمسة أبواب",
|
||||
"Kingswood Estate wagon": "عربة كينجسوود إستيت",
|
||||
"SUV 5 doors L": "سيارات الدفع الرباعي 5 أبواب L",
|
||||
"Limousine Sedan": "ليموزين سيدان",
|
||||
"Z28 Coupe 2-doors": "Z28 كوبيه 2 أبواب",
|
||||
"S Coupe 2-doors": "S كوبيه 2 أبواب",
|
||||
"Combi wagon 5-doors": "كومبي واجن 5 أبواب",
|
||||
"Sportback hatchback 5-doors": "سبورتباك هاتشباك 5 أبواب",
|
||||
"RS hatchback 3-doors": "RS هاتشباك 3 أبواب",
|
||||
"Pickup 4-doors": "بيك أب 4 أبواب",
|
||||
"Trans Am Coupe 2-doors": "ترانس آم كوبيه 2 أبواب",
|
||||
"Break wagon": "كسر عربة",
|
||||
"Pickup Double cabin Crew Cab": "بيك أب كابينة طاقم المقصورة المزدوجة",
|
||||
"Allroad quattro wagon 5-doors": "أولرود كواترو واجن 5 أبواب",
|
||||
"GTI hatchback 5-doors": "GTI هاتشباك 5 أبواب",
|
||||
"WRX STI Sedan 4-doors": "WRX STI سيدان 4 أبواب",
|
||||
"Combi wagon": "عربة كومبي",
|
||||
"GT hatchback 5-doors": "GT هاتشباك 5 أبواب",
|
||||
"RS Coupe 2-doors": "RS كوبيه 2 أبواب",
|
||||
"Sport Sedan Hardtop": "الرياضة سيدان السقف الصلب",
|
||||
"Xtracab pickup 2-doors": "بيك اب إكستراكاب 2 أبواب",
|
||||
"CC cabriolet": "CC كابريوليه",
|
||||
"Sport Sedan Hardtop 4-doors": "سبورت سيدان هاردتوب 4 أبواب",
|
||||
"Phaeton": "فايتون",
|
||||
"Hatchback 5 doors Sportback": "هاتشباك 5 أبواب سبورتباك",
|
||||
"Minivan Grand": "ميني فان جراند",
|
||||
"Cross hatchback 5-doors": "عبر هاتشباك 5 أبواب",
|
||||
"Volante cabriolet": "فولانتي كابريوليه",
|
||||
"Turbo Coupe 2-doors": "توربو كوبيه 2 أبواب",
|
||||
"Sport Coupe Coupe": "سبورت كوبيه كوبيه",
|
||||
"Classic pickup 2-doors": "بيك أب كلاسيكي 2 أبواب",
|
||||
"GT hatchback 3-doors": "GT هاتشباك 3 أبواب",
|
||||
"Spyder cabriolet": "سبايدر كابريوليه",
|
||||
"ST hatchback 3-doors": "ST هاتشباك 3 أبواب",
|
||||
"SUV 5 doors X": "سيارات الدفع الرباعي 5 أبواب X",
|
||||
"Pickup Single cabin Regular Cab": "بيك أب كابينة واحدة الكابينة العادية",
|
||||
"Single Cab pickup 2-doors": "بيك اب كابينة واحدة 2 أبواب",
|
||||
"Cabrio cabriolet": "كابريو كابريوليه",
|
||||
"Sportback hatchback": "سبورت باك هاتشباك",
|
||||
"Wagon minivan": "عربة ميني فان",
|
||||
"WRX Sedan 4-doors": "WRX سيدان 4 أبواب",
|
||||
"Convertible cabriolet": "كابريوليه قابلة للتحويل",
|
||||
"OPC hatchback 3-doors": "OPC هاتشباك 3 أبواب",
|
||||
"Grand minivan": "الميني فان الكبرى",
|
||||
"Spider cabriolet": "العنكبوت كابريوليه",
|
||||
"Athlete Sedan 4-doors": "رياضي سيدان 4 أبواب",
|
||||
"Combi RS wagon 5-doors": "كومبي RS واجن 5 أبواب",
|
||||
"V8 Coupe 2-doors": "V8 كوبيه 2 أبواب",
|
||||
"Sportvan minivan": "ميني فان سبورت فان",
|
||||
"Coupe Coupe": "كوبيه كوبيه",
|
||||
"Hybrid hatchback 5-doors": "هاتشباك هجينة 5 أبواب",
|
||||
"Extended Cab pickup 2-doors": "بيك أب كابينة ممتدة 2 أبواب",
|
||||
"Hybrid crossover 5-doors": "كروس أوفر هجين 5 أبواب",
|
||||
"JDM Hardtop": "JDM Hardtop",
|
||||
"US-Spec. Sedan 4-doors": "مواصفات الولايات المتحدة. سيدان 4 أبواب",
|
||||
"Sport hatchback 3-doors": "هاتشباك رياضية 3 أبواب",
|
||||
"Combi Scout wagon 5-doors": "كومبي سكاوت واجن 5 أبواب",
|
||||
"Formula Coupe 2-doors": "فورمولا كوبيه 2 أبواب",
|
||||
"Stingray roadster": "ستينغراي رودستر",
|
||||
"wagon 5-doors Shooting Brake": "عربة 5 أبواب اطلاق النار الفرامل",
|
||||
"Minivan SWB": "ميني فان SWB",
|
||||
"Roadster Spider": "رودستر سبايدر",
|
||||
"Sedan L": "سيدان L",
|
||||
"SUV 5 doors Long": "سيارات الدفع الرباعي 5 أبواب طويلة",
|
||||
"Coupe RS": "كوبيه RS",
|
||||
"Extended Cab pickup 4-doors": "بيك أب كابينة ممتدة 4 أبواب",
|
||||
"Gran Coupe Sedan": "غران كوبيه سيدان",
|
||||
"Van wagon": "فان واغن",
|
||||
"Double Cab pickup": "بيك أب مزدوج الكابينة",
|
||||
"Stepway hatchback 5-doors": "ستيبوي هاتشباك 5 أبواب",
|
||||
"US-spec Coupe": "كوبيه ذات مواصفات أمريكية",
|
||||
"RS liftback 5-doors": "RS Liftback 5 أبواب",
|
||||
"Carrera Coupe 2-doors": "كاريرا كوبيه 2 أبواب",
|
||||
"Van 4-doors": "فان 4 أبواب",
|
||||
"F-150 RegularCab pickup 2-doors": "F-150 RegularCab بيك اب 2 أبواب",
|
||||
"F-150 SuperCab pickup 4-doors": "F-150 SuperCab بيك أب 4 أبواب",
|
||||
"Classic Coupe 2-doors": "كلاسيك كوبيه 2 أبواب",
|
||||
"Royal Sedan 4-doors": "رويال سيدان 4 أبواب",
|
||||
"Grandtour wagon": "عربة جراندتور",
|
||||
"Esprit Coupe 2-doors": "إسبريت كوبيه 2 أبواب",
|
||||
"XKR cabriolet 2-doors": "XKR كابريوليه 2 أبواب",
|
||||
"XKR Coupe 2-doors": "XKR كوبيه 2 أبواب",
|
||||
"Soft top SUV 3-doors": "سيارات الدفع الرباعي ذات السقف الناعم 3 أبواب",
|
||||
"US-spec minivan 5-doors": "ميني فان 5 أبواب بمواصفات أمريكية",
|
||||
"Absolute minivan 5-doors": "ميني فان مطلق 5 أبواب",
|
||||
"Si Sedan 4-doors": "سي سيدان 4 أبواب",
|
||||
"Sport SUV 3-doors": "سبورت SUV 3 أبواب",
|
||||
"Hard top SUV": "سيارات الدفع الرباعي ذات السقف الصلب",
|
||||
"Station Wagon wagon": "عربة ستيشن واغن",
|
||||
"Custom Coupe Hardtop 2-doors": "مخصص كوبيه Hardtop 2 أبواب",
|
||||
"Limousine Pullman": "ليموزين بولمان",
|
||||
"Hatchback 4 doors": "هاتشباك 4 أبواب",
|
||||
"Hatchback 5 doors GT": "هاتشباك 5 أبواب جي تي",
|
||||
"SUV 5 doors EV": "سيارات الدفع الرباعي 5 أبواب EV",
|
||||
"Cabriolet Volante": "كابريوليه فولانتي",
|
||||
"Cabriolet Spider": "كابريوليه العنكبوت",
|
||||
"Pickup Double cabin Double Cab": "بيك أب كابينة مزدوجة الكابينة",
|
||||
"Compactvan Stepway": "كومباكت فان ستيبواي",
|
||||
"wagon 5 doors Scout": "عربة 5 أبواب الكشافة",
|
||||
"Axio Sedan 4-doors": "أكسيو سيدان 4 أبواب",
|
||||
"hatchback": "هاتشباك",
|
||||
"R Coupe 2-doors": "R كوبيه 2 أبواب",
|
||||
"SC Cupra hatchback 3-doors": "SC كوبرا هاتشباك 3 أبواب",
|
||||
"GT hatchback": "جي تي هاتشباك",
|
||||
"King Cab pickup 2-doors": "كينج كاب بيك أب 2 أبواب",
|
||||
"R hatchback 3-doors": "R هاتشباك 3 أبواب",
|
||||
"Sport Sedan 4-doors": "سبورت سيدان 4 أبواب",
|
||||
"Caravan wagon 5-doors": "كارافان واجن 5 أبواب",
|
||||
"Kombi minivan 4-doors": "ميني فان كومبي 4 أبواب",
|
||||
"Variant wagon 5-doors": "عربة متغيرة 5 أبواب",
|
||||
"Sports Tourer wagon 5-doors": "عربة رياضية سياحية 5 أبواب",
|
||||
"Gran Turismo liftback": "ارتداد Gran Turismo",
|
||||
"Shooting Brake wagon 5-doors": "عربة فرامل الرماية 5 أبواب",
|
||||
"AMG Shooting Brake wagon 5-doors": "AMG عربة الفرامل الرماية 5 أبواب",
|
||||
"F-100 RegularCab pickup 2-doors": "F-100 RegularCab بيك أب 2 أبواب",
|
||||
"Grand minivan 4-doors": "ميني فان جراند 4 أبواب",
|
||||
"Regular pickup 2-doors": "بيك أب عادي 2 أبواب",
|
||||
"Combi minivan": "ميني فان كومبي",
|
||||
"Classic Sedan": "سيارة سيدان كلاسيكية",
|
||||
"Turbo hatchback 3-doors": "توربو هاتشباك 3 أبواب",
|
||||
"Spyder roadster 2-doors": "سبايدر رودستر 2 أبواب",
|
||||
"Turbo cabriolet 2-doors": "توربو كابريوليه 2 أبواب",
|
||||
"GT3 Coupe 2-doors": "GT3 كوبيه 2 أبواب",
|
||||
"Trans Am T-Roof targa 2-doors": "ترانس آم تي روف تارجا 2 أبواب",
|
||||
"OPC minivan 5-doors": "ميني فان OPC 5 أبواب",
|
||||
"Hardtop 2-doors": "Hardtop 2 أبواب",
|
||||
"JP-spec Sedan 4-doors": "جي بي مواصفات سيدان 4 أبواب",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user