diff --git a/inventory/migrations/0013_merge_20241211_1847.py b/inventory/migrations/0013_merge_20241211_1847.py new file mode 100644 index 00000000..07ee968c --- /dev/null +++ b/inventory/migrations/0013_merge_20241211_1847.py @@ -0,0 +1,14 @@ +# Generated by Django 5.1.4 on 2024-12-11 15:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0005_alter_carfinance_options_remove_carfinance_total'), + ('inventory', '0012_remove_salequotationcar_price'), + ] + + operations = [ + ] diff --git a/inventory/migrations/0014_alter_carfinance_options_and_more.py b/inventory/migrations/0014_alter_carfinance_options_and_more.py new file mode 100644 index 00000000..8bbe1c3d --- /dev/null +++ b/inventory/migrations/0014_alter_carfinance_options_and_more.py @@ -0,0 +1,70 @@ +# Generated by Django 5.1.4 on 2024-12-11 15:50 + +import django.db.models.deletion +from decimal import Decimal +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0013_merge_20241211_1847'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AlterModelOptions( + name='carfinance', + options={'verbose_name': 'Car Financial Details', 'verbose_name_plural': 'Car Financial Details'}, + ), + migrations.AlterModelOptions( + name='carreservation', + options={'ordering': ['-reserved_at'], 'verbose_name': 'Car Reservation', 'verbose_name_plural': 'Car Reservations'}, + ), + migrations.RemoveField( + model_name='carfinance', + name='vat_rate', + ), + migrations.AddField( + model_name='carfinance', + name='total', + field=models.DecimalField(blank=True, decimal_places=2, default=Decimal('0.00'), max_digits=14, null=True), + ), + migrations.AlterField( + model_name='carreservation', + name='car', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reservations', to='inventory.car', verbose_name='Car'), + ), + migrations.AlterField( + model_name='carreservation', + name='reserved_at', + field=models.DateTimeField(auto_now_add=True, verbose_name='Reserved At'), + ), + migrations.AlterField( + model_name='carreservation', + name='reserved_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reservations', to=settings.AUTH_USER_MODEL, verbose_name='Reserved By'), + ), + migrations.AlterField( + model_name='carreservation', + name='reserved_until', + field=models.DateTimeField(verbose_name='Reserved Until'), + ), + migrations.CreateModel( + name='CarShowroom', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('description', models.TextField(blank=True, null=True, verbose_name='Description')), + ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), + ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Last Updated')), + ('car', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='showroom', to='inventory.car', verbose_name='Car')), + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_cars', to='inventory.dealer', verbose_name='Owner')), + ('showroom', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='showroom_cars', to='inventory.dealer', verbose_name='Showroom')), + ], + options={ + 'verbose_name': 'Car Showroom', + 'verbose_name_plural': 'Car Showrooms', + }, + ), + ] diff --git a/inventory/migrations/0015_carlocation_delete_carshowroom.py b/inventory/migrations/0015_carlocation_delete_carshowroom.py new file mode 100644 index 00000000..7d0777e9 --- /dev/null +++ b/inventory/migrations/0015_carlocation_delete_carshowroom.py @@ -0,0 +1,33 @@ +# Generated by Django 5.1.4 on 2024-12-11 16:05 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0014_alter_carfinance_options_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='CarLocation', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('description', models.TextField(blank=True, help_text='Optional description about the showroom placement.', null=True, verbose_name='Description')), + ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), + ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Last Updated')), + ('car', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='location', to='inventory.car', verbose_name='Car')), + ('owner', models.ForeignKey(help_text='Dealer who owns the car.', on_delete=django.db.models.deletion.CASCADE, related_name='owned_cars', to='inventory.dealer', verbose_name='Owner')), + ('showroom', models.ForeignKey(help_text='Dealer where the car is displayed (can be the owner).', on_delete=django.db.models.deletion.CASCADE, related_name='showroom_cars', to='inventory.dealer', verbose_name='Showroom')), + ], + options={ + 'verbose_name': 'Car Location', + 'verbose_name_plural': 'Car Locations', + }, + ), + migrations.DeleteModel( + name='CarShowroom', + ), + ] diff --git a/inventory/migrations/0016_alter_carfinance_car_alter_customcard_car.py b/inventory/migrations/0016_alter_carfinance_car_alter_customcard_car.py new file mode 100644 index 00000000..24d6449d --- /dev/null +++ b/inventory/migrations/0016_alter_carfinance_car_alter_customcard_car.py @@ -0,0 +1,24 @@ +# Generated by Django 5.1.4 on 2024-12-11 17:02 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0015_carlocation_delete_carshowroom'), + ] + + operations = [ + migrations.AlterField( + model_name='carfinance', + name='car', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='finances', to='inventory.car'), + ), + migrations.AlterField( + model_name='customcard', + name='car', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='custom_cards', to='inventory.car', verbose_name='Car'), + ), + ] diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 7eac67fc..bebe4a22 100644 Binary files a/locale/ar/LC_MESSAGES/django.mo and b/locale/ar/LC_MESSAGES/django.mo differ diff --git a/templates/inventory/car_location_form.html b/templates/inventory/car_location_form.html new file mode 100644 index 00000000..4bdcfcb8 --- /dev/null +++ b/templates/inventory/car_location_form.html @@ -0,0 +1,10 @@ + + +
+ +