diff --git a/tienda_ilusion/don_confiao/migrations/0002_alter_saleline_product.py b/tienda_ilusion/don_confiao/migrations/0002_alter_saleline_product.py new file mode 100644 index 0000000..0fca591 --- /dev/null +++ b/tienda_ilusion/don_confiao/migrations/0002_alter_saleline_product.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0.7 on 2024-08-03 15:01 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('don_confiao', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='saleline', + name='product', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='don_confiao.product'), + ), + ] diff --git a/tienda_ilusion/don_confiao/migrations/0023_merge_20240803_1504.py b/tienda_ilusion/don_confiao/migrations/0023_merge_20240803_1504.py new file mode 100644 index 0000000..21cf79f --- /dev/null +++ b/tienda_ilusion/don_confiao/migrations/0023_merge_20240803_1504.py @@ -0,0 +1,14 @@ +# Generated by Django 5.0.7 on 2024-08-03 15:04 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('don_confiao', '0002_alter_saleline_product'), + ('don_confiao', '0022_alter_payment_reconciliation_jar'), + ] + + operations = [ + ] diff --git a/tienda_ilusion/don_confiao/migrations/0024_alter_product_name.py b/tienda_ilusion/don_confiao/migrations/0024_alter_product_name.py new file mode 100644 index 0000000..152a9f0 --- /dev/null +++ b/tienda_ilusion/don_confiao/migrations/0024_alter_product_name.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.7 on 2024-08-03 15:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('don_confiao', '0023_merge_20240803_1504'), + ] + + operations = [ + migrations.AlterField( + model_name='product', + name='name', + field=models.CharField(max_length=100), + ), + ] diff --git a/tienda_ilusion/don_confiao/models.py b/tienda_ilusion/don_confiao/models.py index ba69ea1..ec3782c 100644 --- a/tienda_ilusion/don_confiao/models.py +++ b/tienda_ilusion/don_confiao/models.py @@ -5,6 +5,30 @@ from django.core.exceptions import ValidationError from decimal import Decimal +class MeasuringUnits(models.TextChoices): + UNIT = 'UNIT', _('Unit') + + +class ProductCategory(models.Model): + name = models.CharField(max_length=100, unique=True) + + def __str__(self): + return self.name + + +class Product(models.Model): + name = models.CharField(max_length=100, unique=False) + price = models.DecimalField(max_digits=9, decimal_places=2) + measuring_unit = models.CharField( + max_length=20, + choices=MeasuringUnits.choices, + default=MeasuringUnits.UNIT + ) + categories = models.ManyToManyField(ProductCategory) + + def __str__(self): + return self.name + class Sale(models.Model): @@ -20,7 +44,7 @@ class Sale(models.Model): class SaleLine(models.Model): sale = models.ForeignKey(Sale, on_delete=models.CASCADE) - product = models.CharField(max_length=100) + product = models.ForeignKey(Product, on_delete=models.CASCADE) quantity = models.IntegerField(null=True) unit_price = models.DecimalField(max_digits=9, decimal_places=2) description = models.CharField(max_length=255, null=True, blank=True) @@ -29,31 +53,6 @@ class SaleLine(models.Model): return f"{self.sale} - {self.product}" -class MeasuringUnits(models.TextChoices): - UNIT = 'UNIT', _('Unit') - - -class ProductCategory(models.Model): - name = models.CharField(max_length=100, unique=True) - - def __str__(self): - return self.name - - -class Product(models.Model): - name = models.CharField(max_length=100, unique=True) - price = models.DecimalField(max_digits=9, decimal_places=2) - measuring_unit = models.CharField( - max_length=20, - choices=MeasuringUnits.choices, - default=MeasuringUnits.UNIT - ) - categories = models.ManyToManyField(ProductCategory) - - def __str__(self): - return self.name - - class PaymentMethods(models.TextChoices): CASH = 'CASH', _('Cash') CONFIAR = 'CONFIAR', _('Confiar') @@ -108,6 +107,7 @@ class ReconciliationJar(models.Model): self.payment_set.add(payment) self.is_valid = True + class Payment(models.Model): date_time = models.DateTimeField() type_payment = models.CharField( diff --git a/tienda_ilusion/don_confiao/tests/test_purchase_with_payment.py b/tienda_ilusion/don_confiao/tests/test_purchase_with_payment.py index e9d6d36..a27904c 100644 --- a/tienda_ilusion/don_confiao/tests/test_purchase_with_payment.py +++ b/tienda_ilusion/don_confiao/tests/test_purchase_with_payment.py @@ -2,6 +2,7 @@ from django.test import Client, TestCase from ..models import Payment, Sale + class TestPurchaseWithPayment(TestCase): def setUp(self): self.client = Client() diff --git a/tienda_ilusion/don_confiao/tests/tests.py b/tienda_ilusion/don_confiao/tests/tests.py index 771ec89..5691710 100644 --- a/tienda_ilusion/don_confiao/tests/tests.py +++ b/tienda_ilusion/don_confiao/tests/tests.py @@ -1,8 +1,13 @@ from django.test import TestCase -from ..models import Sale, SaleLine +from ..models import Product, Sale, SaleLine class ConfiaoTest(TestCase): + def setUp(self): + self.product = Product() + self.product.name = "Pepino" + self.product.price = 5000 + self.product.save() def test_create_sale(self): sale = Sale() @@ -23,7 +28,7 @@ class ConfiaoTest(TestCase): line = SaleLine() line.sale = sale - line.product = 'papaya' + line.product = self.product line.quantity = 2 line.unit_price = 2500 line.amount = 5000 @@ -40,14 +45,14 @@ class ConfiaoTest(TestCase): line1 = SaleLine() line1.sale = sale - line1.product = 'papaya' + line1.product = self.product line1.quantity = 2 line1.unit_price = 2500 line1.amount = 5000 line2 = SaleLine() line2.sale = sale - line2.product = 'papaya' + line2.product = self.product line2.quantity = 2 line2.unit_price = 2500 line2.amount = 5000