This commit is contained in:
ismail 2025-03-18 00:24:30 +03:00
commit ed7e9623f9
10 changed files with 64 additions and 16 deletions

View File

@ -288,7 +288,7 @@ class CarFinanceForm(forms.ModelForm):
class CarLocationForm(forms.ModelForm):
class Meta:
model = CarLocation
fields = ["showroom", "description"]
fields = ["car", "showroom", "description"]
widgets = {
"description": forms.Textarea(attrs={"rows": 2, "class": "form-control"}),
}

View File

@ -0,0 +1,18 @@
# Generated by Django 5.1.7 on 2025-03-16 19:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('inventory', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='saleorder',
name='payment_method',
field=models.CharField(choices=[('cash', 'Cash'), ('finance', 'Finance'), ('lease', 'Lease'), ('credit_card', 'Credit Card'), ('bank_transfer', 'Bank Transfer'), ('SADAD', 'SADAD')], max_length=20),
),
]

View File

@ -53,8 +53,16 @@ class DealerUserManager(UserManager):
return user
# class DealerMakes(models.Model):
# car_make = models.ManyToManyField(CarMake, verbose_name=_("Car Make"), related_name="dealers")
class DealersMake(models.Model):
dealer = models.ForeignKey("Dealer", on_delete=models.CASCADE, related_name="dealer_makes")
car_make = models.ForeignKey("CarMake", on_delete=models.CASCADE, related_name="car_dealers")
added_at = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ("dealer", "car_make") # Prevents duplicate entries
def __str__(self):
return f"{self.dealer.name} - {self.car_make.name}"
class StaffUserManager(UserManager):

View File

@ -45,8 +45,8 @@ urlpatterns = [
# ),
# Dashboards
# path("user/<int:pk>/settings/", views.UserSettingsView.as_view(), name="user_settings"),
path("dealer/<int:pk>/settings/", views.DealerSettingsView, name="dealer_settings"),
path("dealer/assign-car-makes/", views.assign_car_makes, name="assign_car_makes"),
path("dealers/<int:pk>/settings/", views.DealerSettingsView, name="dealer_settings"),
path("dealers/assign-car-makes/", views.assign_car_makes, name="assign_car_makes"),
path("dashboards/manager/", views.ManagerDashboard.as_view(), name="manager_dashboard"),
path("dashboards/sales/", views.SalesDashboard.as_view(), name="sales_dashboard"),
path("test/", views.TestView.as_view(), name="test"),

View File

@ -1029,6 +1029,24 @@ class CarLocationUpdateView(LoginRequiredMixin,UpdateView):
form_class = forms.CarLocationForm
template_name = "inventory/car_location_form.html"
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields["showroom"].queryset = models.Dealer.objects.all()
form.fields["car"].queryset = models.Car.objects.filter(pk=self.kwargs["car_pk"])
return form
def get_initial(self):
initial = super().get_initial()
initial["car"] = get_object_or_404(models.Car, pk=self.kwargs["car_pk"])
initial["showroom"] = get_object_or_404(models.CarLocation, pk=self.kwargs["pk"])
return initial
def form_valid(self, form):
form.instance.from_dealer = get_user_type(self.request)
form.instance.car.status = "transfer"
form.instance.car.save()
return super().form_valid(form)
def get_success_url(self):
return reverse_lazy("car_detail", kwargs={"pk": self.object.car.pk})

View File

@ -5,7 +5,7 @@
<style>
.car-makes-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-columns: repeat(7, 1fr);
gap: 16px;
}
.car-makes-grid label {

View File

@ -142,6 +142,7 @@
<h4 class="mb-3">{{ _("Makes you are selling") }}</h4>
<div class="d-flex justify-content-center ">
<div class="text-center me-3">
<div class="row">
{% for make in car_makes %}
<div class="col my-1">
@ -152,6 +153,9 @@
</div>
{% endfor %}
</div>
<div class="row">
<a class="btn btn-sm btn-phoenix-warning" href="{% url 'assign_car_makes' %}">{{ _("Select Makes")}}</a>
</div>
</div>
</div>

View File

@ -1,5 +1,5 @@
{% extends "base.html" %}
{% load i18n %}
{% load i18n custom_filters%}
{% block title %}{{ _("View Quotation") }}{% endblock title %}
@ -210,29 +210,29 @@
</tr>
{% endfor %}
<tr class="bg-body-secondary total-sum">
<td class="align-middle ps-4 fw-semibold text-body-highlight" colspan="7">{% trans "Vat" %} ({{data.vat}}%)</td>
<td class="align-middle ps-4 fw-semibold text-body-highlight" colspan="7">{% trans "Vat" %} ({{data.vat|percentage}})</td>
<td class="align-middle text-start fw-semibold">
<span id="grand-total">+ {{data.total_vat_amount}}</span>
<span id="grand-total">+ {{data.total_vat_amount|floatformat}}</span>
</td>
</tr>
<tr class="bg-body-secondary total-sum">
<td class="align-middle ps-4 fw-semibold text-body-highlight" colspan="7">{% trans "Discount Amount" %}</td>
<td class="align-middle text-start text-danger fw-semibold ">
<span id="grand-total">- {{data.total_discount}}</span>
<span id="grand-total">- {{data.total_discount|floatformat}}</span>
</td>
</tr>
<tr class="bg-body-secondary total-sum">
<td class="align-middle ps-4 fw-semibold text-body-highlight" colspan="7">{% trans "Additional Services" %}</td>
<td class="align-middle text-start fw-semibold">
{% for service in data.additionals %}
<small><span class="fw-semibold">+ {{service.name}} - {{service.price_}}</span></small><br>
<small><span class="fw-semibold">+ {{service.name}} - {{service.price_|floatformat}}</span></small><br>
{% endfor %}
</td>
</tr>
<tr class="bg-body-secondary total-sum">
<td class="align-middle ps-4 fw-bolder text-body-highlight" colspan="7">{% trans "Grand Total" %}</td>
<td class="align-middle text-start fw-bolder">
<span id="grand-total">{{data.grand_total}}</span>
<span id="grand-total">{{data.grand_total|floatformat}}</span>
</td>
</tr>
</tbody>

View File

@ -216,8 +216,8 @@
{% for item in data.additionals %}
<tr>
<td class="ps-1 text-start fs-10 align-content-center">{{ item.name }}</td>
<td class="ps-1 text-center fs-10 align-content-center">{{ item.price|floatformat:2 }}</td>
<td class="ps-1 text-center fs-10 align-content-center">{{ item.price_|floatformat:2 }}</td>
<td class="ps-1 text-center fs-10 align-content-center">{{ item.price|floatformat }}</td>
<td class="ps-1 text-center fs-10 align-content-center">{{ item.price_|floatformat }}</td>
</tr>
{% endfor %}
</tbody>
@ -229,12 +229,12 @@
<table class="table table-sm table-responsive">
<tr>
<td class="text-start ps-1"><strong class="fs-9">VAT</strong></td>
<td class="text-center"><span class="fs-9">{{ data.total_vat_amount|floatformat:2 }} <span class="currency">{{ CURRENCY }}</span></span></td>
<td class="text-center"><span class="fs-9">{{ data.total_vat_amount|floatformat }} <span class="currency">{{ CURRENCY }}</span></span></td>
<td class="text-end"><strong class="fs-9">ضريبة&nbsp;القيمة&nbsp;المضافة</strong></td>
</tr>
<tr>
<td class="text-start ps-1"><strong class="fs-9">Total</strong></td>
<td class="text-center"><span class="fs-9">{{ data.grand_total|floatformat:2 }}&nbsp;<span class="currency">{{ CURRENCY }}</span></span></td>
<td class="text-center"><span class="fs-9">{{ data.grand_total|floatformat }}&nbsp;<span class="currency">{{ CURRENCY }}</span></span></td>
<td class="text-end"><strong class="fs-9">الإجمالي</strong></td>
</tr>
<tr>