


+ Page Missing!
+But no worries! Our ostrich is looking everywhere
+
diff --git a/inventory/migrations/0005_merge_20250119_1555.py b/inventory/migrations/0005_merge_20250119_1555.py new file mode 100644 index 00000000..1ea37506 --- /dev/null +++ b/inventory/migrations/0005_merge_20250119_1555.py @@ -0,0 +1,14 @@ +# Generated by Django 4.2.17 on 2025-01-19 12:55 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0004_invoicemodelbase'), + ('inventory', '0004_rename_assigned_lead_staff_remove_customer_city_and_more'), + ] + + operations = [ + ] diff --git a/inventory/migrations/0006_cartransferlog_delete_invoicemodelbase.py b/inventory/migrations/0006_cartransferlog_delete_invoicemodelbase.py new file mode 100644 index 00000000..e61ddb8f --- /dev/null +++ b/inventory/migrations/0006_cartransferlog_delete_invoicemodelbase.py @@ -0,0 +1,32 @@ +# Generated by Django 4.2.17 on 2025-01-19 14:01 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0005_merge_20250119_1555'), + ] + + operations = [ + migrations.CreateModel( + name='CarTransferLog', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('transfer_date', models.DateTimeField(auto_now_add=True, verbose_name='Transfer Date')), + ('remarks', models.TextField(blank=True, null=True, verbose_name='Remarks')), + ('cars', models.ManyToManyField(related_name='transfer_logs', to='inventory.car', verbose_name='Cars')), + ('from_dealer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_out', to='inventory.dealer', verbose_name='From Dealer')), + ('to_dealer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_in', to='inventory.dealer', verbose_name='To Dealer')), + ], + options={ + 'verbose_name': 'Car Transfer Log', + 'verbose_name_plural': 'Car Transfer Logs', + }, + ), + migrations.DeleteModel( + name='InvoiceModelBase', + ), + ] diff --git a/inventory/migrations/0007_remove_cartransferlog_cars_cartransferlog_car.py b/inventory/migrations/0007_remove_cartransferlog_cars_cartransferlog_car.py new file mode 100644 index 00000000..5c5ddb0e --- /dev/null +++ b/inventory/migrations/0007_remove_cartransferlog_cars_cartransferlog_car.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.17 on 2025-01-19 14:15 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0006_cartransferlog_delete_invoicemodelbase'), + ] + + operations = [ + migrations.RemoveField( + model_name='cartransferlog', + name='cars', + ), + migrations.AddField( + model_name='cartransferlog', + name='car', + field=models.ForeignKey(default=4, on_delete=django.db.models.deletion.CASCADE, related_name='transfer_logs', to='inventory.car', verbose_name='Car'), + preserve_default=False, + ), + ] diff --git a/inventory/migrations/0008_cartransferlog_created_at_cartransferlog_is_approved_and_more.py b/inventory/migrations/0008_cartransferlog_created_at_cartransferlog_is_approved_and_more.py new file mode 100644 index 00000000..6f16a3ea --- /dev/null +++ b/inventory/migrations/0008_cartransferlog_created_at_cartransferlog_is_approved_and_more.py @@ -0,0 +1,35 @@ +# Generated by Django 4.2.17 on 2025-01-19 14:29 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0007_remove_cartransferlog_cars_cartransferlog_car'), + ] + + operations = [ + migrations.AddField( + model_name='cartransferlog', + name='created_at', + field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2025, 1, 19, 14, 29, 29, 771881, tzinfo=datetime.timezone.utc), verbose_name='Created At'), + preserve_default=False, + ), + migrations.AddField( + model_name='cartransferlog', + name='is_approved', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='cartransferlog', + name='status', + field=models.CharField(default='pending', max_length=10, verbose_name=[('draft', 'Draft'), ('approved', 'Approved'), ('pending', 'Pending'), ('success', 'Success'), ('failure', 'Failure')]), + ), + migrations.AddField( + model_name='cartransferlog', + name='updated_at', + field=models.DateTimeField(auto_now=True, verbose_name='Updated At'), + ), + ] diff --git a/inventory/migrations/0009_cartransfer_delete_cartransferlog.py b/inventory/migrations/0009_cartransfer_delete_cartransferlog.py new file mode 100644 index 00000000..17a1981a --- /dev/null +++ b/inventory/migrations/0009_cartransfer_delete_cartransferlog.py @@ -0,0 +1,36 @@ +# Generated by Django 4.2.17 on 2025-01-19 14:31 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0008_cartransferlog_created_at_cartransferlog_is_approved_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='CarTransfer', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('transfer_date', models.DateTimeField(auto_now_add=True, verbose_name='Transfer Date')), + ('remarks', models.TextField(blank=True, null=True, verbose_name='Remarks')), + ('status', models.CharField(default='draft', max_length=10, verbose_name=[('draft', 'Draft'), ('approved', 'Approved'), ('pending', 'Pending'), ('success', 'Success'), ('failure', 'Failure')])), + ('is_approved', models.BooleanField(default=False)), + ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), + ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), + ('car', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfer_logs', to='inventory.car', verbose_name='Car')), + ('from_dealer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_out', to='inventory.dealer', verbose_name='From Dealer')), + ('to_dealer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_in', to='inventory.dealer', verbose_name='To Dealer')), + ], + options={ + 'verbose_name': 'Car Transfer Log', + 'verbose_name_plural': 'Car Transfer Logs', + }, + ), + migrations.DeleteModel( + name='CarTransferLog', + ), + ] diff --git a/inventory/migrations/0010_cartransfer_active_alter_car_status.py b/inventory/migrations/0010_cartransfer_active_alter_car_status.py new file mode 100644 index 00000000..ca3eff35 --- /dev/null +++ b/inventory/migrations/0010_cartransfer_active_alter_car_status.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.17 on 2025-01-19 15:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0009_cartransfer_delete_cartransferlog'), + ] + + operations = [ + migrations.AddField( + model_name='cartransfer', + name='active', + field=models.BooleanField(default=True), + ), + migrations.AlterField( + model_name='car', + name='status', + field=models.CharField(choices=[('available', 'Available'), ('sold', 'Sold'), ('hold', 'Hold'), ('damaged', 'Damaged'), ('reserved', 'Reserved'), ('transfer', 'Transfer')], default='available', max_length=10, verbose_name='Status'), + ), + ] diff --git a/inventory/migrations/0011_alter_cartransfer_status.py b/inventory/migrations/0011_alter_cartransfer_status.py new file mode 100644 index 00000000..46056559 --- /dev/null +++ b/inventory/migrations/0011_alter_cartransfer_status.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.17 on 2025-01-20 08:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0010_cartransfer_active_alter_car_status'), + ] + + operations = [ + migrations.AlterField( + model_name='cartransfer', + name='status', + field=models.CharField(default='draft', max_length=10, verbose_name=[('draft', 'Draft'), ('approved', 'Approved'), ('pending', 'Pending'), ('accept', 'Accept'), ('success', 'Success'), ('failure', 'Failure')]), + ), + ] diff --git a/inventory/migrations/0012_cartransfer_quantity.py b/inventory/migrations/0012_cartransfer_quantity.py new file mode 100644 index 00000000..a459a94a --- /dev/null +++ b/inventory/migrations/0012_cartransfer_quantity.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.17 on 2025-01-20 08:21 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0011_alter_cartransfer_status'), + ] + + operations = [ + migrations.AddField( + model_name='cartransfer', + name='quantity', + field=models.IntegerField(default=1, verbose_name='Quantity'), + ), + ] diff --git a/inventory/migrations/0013_alter_cartransfer_status.py b/inventory/migrations/0013_alter_cartransfer_status.py new file mode 100644 index 00000000..c48106a3 --- /dev/null +++ b/inventory/migrations/0013_alter_cartransfer_status.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.17 on 2025-01-20 09:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0012_cartransfer_quantity'), + ] + + operations = [ + migrations.AlterField( + model_name='cartransfer', + name='status', + field=models.CharField(default='draft', max_length=10, verbose_name=[('draft', 'Draft'), ('approved', 'Approved'), ('pending', 'Pending'), ('accept', 'Accept'), ('success', 'Success'), ('reject', 'Reject')]), + ), + ] diff --git a/templates/inventory/transfer_details.html b/templates/inventory/transfer_details.html new file mode 100644 index 00000000..9dadec25 --- /dev/null +++ b/templates/inventory/transfer_details.html @@ -0,0 +1,47 @@ +{% extends 'base.html' %} +{% load crispy_forms_filters %} +{% load i18n %} +{% load custom_filters %} + +{% block title %} + {% trans 'Car Transfer Details' %} +{% endblock %} + +{% block content %} +
+ +


+ But no worries! Our ostrich is looking everywhere
+
{% trans "Thank you for choosing us. We appreciate your business" %}
+{% trans "Date" %} : {{transfer.created_at}}
+{% trans "From" %} : {{transfer.from_dealer}}
+{% trans "To" %} : {{transfer.to_dealer}}
+| {% trans "Item" %} | +{% trans "Quantity" %} | +{% trans "Unit Price" %} | +{% trans "Total" %} | +
|---|---|---|---|
| {{ transfer.car }} | +{{ transfer.quantity }} | +{{ transfer.car.finances.cost_price }} | +{{ transfer.total_price }} | +
{%trans "Total Amount" %}: ${{transfer.total_price}}
+