From f2cfd9c33341765f6d29db8b1c7af1a12f624452 Mon Sep 17 00:00:00 2001 From: sosokker Date: Sat, 18 Nov 2023 19:06:40 +0700 Subject: [PATCH] Add Transaction related model --- .../0002_alter_inventory_options.py | 17 +++++ inventory/models.py | 3 + transaction/migrations/0001_initial.py | 64 ++++++++++++++++ transaction/models.py | 75 ++++++++++++++++++- 4 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 inventory/migrations/0002_alter_inventory_options.py create mode 100644 transaction/migrations/0001_initial.py diff --git a/inventory/migrations/0002_alter_inventory_options.py b/inventory/migrations/0002_alter_inventory_options.py new file mode 100644 index 0000000..a921e4f --- /dev/null +++ b/inventory/migrations/0002_alter_inventory_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.7 on 2023-11-18 12:03 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='inventory', + options={'verbose_name_plural': 'Inventories'}, + ), + ] diff --git a/inventory/models.py b/inventory/models.py index 8caf469..57c4eac 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -28,6 +28,9 @@ class Inventory(models.Model): min_stock = models.IntegerField() current_stock = models.IntegerField() + class Meta: + verbose_name_plural = 'Inventories' + class Item(models.Model): """ diff --git a/transaction/migrations/0001_initial.py b/transaction/migrations/0001_initial.py new file mode 100644 index 0000000..7da002a --- /dev/null +++ b/transaction/migrations/0001_initial.py @@ -0,0 +1,64 @@ +# Generated by Django 4.2.7 on 2023-11-18 12:03 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('inventory', '0002_alter_inventory_options'), + ] + + operations = [ + migrations.CreateModel( + name='Customer', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('address', models.TextField()), + ], + ), + migrations.CreateModel( + name='Supplier', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('address', models.TextField()), + ], + ), + migrations.CreateModel( + name='Transfer', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('quantity', models.IntegerField()), + ('from_date_timestamp', models.DateTimeField()), + ('to_date_timestamp', models.DateTimeField()), + ('from_warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfer_from', to='inventory.warehouse')), + ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.item')), + ('to_warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfer_to', to='inventory.warehouse')), + ], + ), + migrations.CreateModel( + name='Supply', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('quantity', models.IntegerField()), + ('arrive_date', models.DateField()), + ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.item')), + ('supplier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='transaction.supplier')), + ], + ), + migrations.CreateModel( + name='Order', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('order_date', models.DateField()), + ('quantity', models.IntegerField()), + ('customer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='transaction.customer')), + ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.item')), + ], + ), + ] diff --git a/transaction/models.py b/transaction/models.py index 71a8362..6c7ffc5 100644 --- a/transaction/models.py +++ b/transaction/models.py @@ -1,3 +1,76 @@ from django.db import models -# Create your models here. +from inventory.models import Warehouse, Item + +class Supplier(models.Model): + """ + The one who supply the item to the warehouse + + :param name: Name of the supplier + :param address: Address of the supplier + """ + name = models.CharField(max_length=255) + address = models.TextField() + + +class Supply(models.Model): + """ + Supply is a transaction that the supplier supply the item to the warehouse + + :param supplier: Supplier that supply the item + :param item: Item that is supplied + :param quantity: Quantity of the item + :param arrive_date: Date that the item arrive the warehouse + """ + supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE) + item = models.ForeignKey(Item, on_delete=models.CASCADE) + quantity = models.IntegerField() + arrive_date = models.DateField() + + class Meta: + verbose_name_plural = 'Supplies' + + +class Customer(models.Model): + """ + Customer is the one who buy the item from the warehouse + + :param name: Name of the customer + :param address: Address of the customer + """ + name = models.CharField(max_length=255) + address = models.TextField() + + +class Order(models.Model): + """ + Order is a transaction that the customer buy the item from the warehouse + + :param customer: Customer that buy the item + :param item: Item that is bought + :param order_date: Date that the item is bought + :param quantity: Quantity of the item + """ + customer = models.ForeignKey(Customer, on_delete=models.CASCADE) + item = models.ForeignKey(Item, on_delete=models.CASCADE) + order_date = models.DateField() + quantity = models.IntegerField() + + +class Transfer(models.Model): + """ + Transfer is a transaction that the item is transfered from one warehouse to another + + :param from_warehouse: Warehouse that the item is transfered from + :param to_warehouse: Warehouse that the item is transfered to + :param item: Item that is transfered + :param quantity: Quantity of the item + :param from_date_timestamp: Date that the item is transfered from the warehouse + :param to_date_timestamp: Date that the item arrive new warehouse + """ + from_warehouse = models.ForeignKey(Warehouse, related_name='transfer_from', on_delete=models.CASCADE) + to_warehouse = models.ForeignKey(Warehouse, related_name='transfer_to', on_delete=models.CASCADE) + item = models.ForeignKey(Item, on_delete=models.CASCADE) + quantity = models.IntegerField() + from_date_timestamp = models.DateTimeField() + to_date_timestamp = models.DateTimeField() \ No newline at end of file