diff --git a/inventory/forms.py b/inventory/forms.py index 6cd912b5..d795922a 100644 --- a/inventory/forms.py +++ b/inventory/forms.py @@ -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"}), } diff --git a/inventory/management/__pycache__/__init__.cpython-311.pyc b/inventory/management/__pycache__/__init__.cpython-311.pyc index f8712ed7..98179969 100644 Binary files a/inventory/management/__pycache__/__init__.cpython-311.pyc and b/inventory/management/__pycache__/__init__.cpython-311.pyc differ diff --git a/inventory/migrations/0002_alter_saleorder_payment_method.py b/inventory/migrations/0002_alter_saleorder_payment_method.py new file mode 100644 index 00000000..dc6c31ca --- /dev/null +++ b/inventory/migrations/0002_alter_saleorder_payment_method.py @@ -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), + ), + ] diff --git a/inventory/models.py b/inventory/models.py index 7610ac98..55d06bb1 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -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): diff --git a/inventory/views.py b/inventory/views.py index 4f02f134..17ea8896 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -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})