Fix: Campo product a Many2One
This commit is contained in:
		| @@ -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'), | ||||
|         ), | ||||
|     ] | ||||
| @@ -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 = [ | ||||
|     ] | ||||
| @@ -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), | ||||
|         ), | ||||
|     ] | ||||
| @@ -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( | ||||
|   | ||||
| @@ -2,6 +2,7 @@ from django.test import Client, TestCase | ||||
|  | ||||
| from ..models import Payment, Sale | ||||
|  | ||||
|  | ||||
| class TestPurchaseWithPayment(TestCase): | ||||
|     def setUp(self): | ||||
|         self.client = Client() | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user