Merge branch 'main' of http://10.10.1.136:3000/ismail/haikal into main
This commit is contained in:
commit
ed7e9623f9
@ -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"}),
|
||||
}
|
||||
|
||||
Binary file not shown.
18
inventory/migrations/0002_alter_saleorder_payment_method.py
Normal file
18
inventory/migrations/0002_alter_saleorder_payment_method.py
Normal 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),
|
||||
),
|
||||
]
|
||||
@ -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):
|
||||
|
||||
@ -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"),
|
||||
|
||||
@ -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})
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">ضريبة القيمة المضافة</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 }} <span class="currency">{{ CURRENCY }}</span></span></td>
|
||||
<td class="text-center"><span class="fs-9">{{ data.grand_total|floatformat }} <span class="currency">{{ CURRENCY }}</span></span></td>
|
||||
<td class="text-end"><strong class="fs-9">الإجمالي</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user