Permitiendo números decimales para la cantidad de productos en las compras #5 #6
@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					# Generated by Django 5.0.6 on 2025-04-06 20:59
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('don_confiao', '0037_admincode'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='saleline',
 | 
				
			||||||
 | 
					            name='quantity',
 | 
				
			||||||
 | 
					            field=models.DecimalField(decimal_places=2, max_digits=10, null=True),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
@@ -128,7 +128,7 @@ class SaleLine(models.Model):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    sale = models.ForeignKey(Sale, on_delete=models.CASCADE)
 | 
					    sale = models.ForeignKey(Sale, on_delete=models.CASCADE)
 | 
				
			||||||
    product = models.ForeignKey(Product, null=False, blank=False, on_delete=models.CASCADE)
 | 
					    product = models.ForeignKey(Product, null=False, blank=False, on_delete=models.CASCADE)
 | 
				
			||||||
    quantity = models.IntegerField(null=True)
 | 
					    quantity = models.DecimalField(max_digits=10, decimal_places=2, null=True)
 | 
				
			||||||
    unit_price = models.DecimalField(max_digits=9, decimal_places=2)
 | 
					    unit_price = models.DecimalField(max_digits=9, decimal_places=2)
 | 
				
			||||||
    description = models.CharField(max_length=255, null=True, blank=True)
 | 
					    description = models.CharField(max_length=255, null=True, blank=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,25 @@ class TestAPI(APITestCase):
 | 
				
			|||||||
            content['id']
 | 
					            content['id']
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_create_sale_with_decimal(self):
 | 
				
			||||||
 | 
					        response = self._create_sale_with_decimal()
 | 
				
			||||||
 | 
					        content = json.loads(response.content.decode('utf-8'))
 | 
				
			||||||
 | 
					        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
 | 
				
			||||||
 | 
					        self.assertEqual(Sale.objects.count(), 1)
 | 
				
			||||||
 | 
					        sale = Sale.objects.all()[0]
 | 
				
			||||||
 | 
					        self.assertEqual(
 | 
				
			||||||
 | 
					            sale.customer.name,
 | 
				
			||||||
 | 
					            self.customer.name
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        self.assertEqual(
 | 
				
			||||||
 | 
					            sale.id,
 | 
				
			||||||
 | 
					            content['id']
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        self.assertEqual(
 | 
				
			||||||
 | 
					            sale.get_total(),
 | 
				
			||||||
 | 
					            16500.00
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_get_products(self):
 | 
					    def test_get_products(self):
 | 
				
			||||||
        url = '/don_confiao/api/products/'
 | 
					        url = '/don_confiao/api/products/'
 | 
				
			||||||
        response = self.client.get(url)
 | 
					        response = self.client.get(url)
 | 
				
			||||||
@@ -90,10 +109,10 @@ class TestAPI(APITestCase):
 | 
				
			|||||||
        expected_rows = [
 | 
					        expected_rows = [
 | 
				
			||||||
            [self.customer.name, self.customer.name, self.customer.name, "",
 | 
					            [self.customer.name, self.customer.name, self.customer.name, "",
 | 
				
			||||||
             "", "2024-09-02 00:00:00+00:00", "Contado", "Almacén",
 | 
					             "", "2024-09-02 00:00:00+00:00", "Contado", "Almacén",
 | 
				
			||||||
             "Peso colombiano", self.product.name, "2", "3000.00", "Unidad",
 | 
					             "Peso colombiano", self.product.name, "2.00", "3000.00", "Unidad",
 | 
				
			||||||
             "TIENDA LA ILUSIÓN", "Tienda La Ilusion", "La Ilusion", "True", ""
 | 
					             "TIENDA LA ILUSIÓN", "Tienda La Ilusion", "La Ilusion", "True", ""
 | 
				
			||||||
             ],
 | 
					             ],
 | 
				
			||||||
            ["", "", "", "", "", "", "", "", "", self.product.name, "3",
 | 
					            ["", "", "", "", "", "", "", "", "", self.product.name, "3.00",
 | 
				
			||||||
             "5000.00", "Unidad", "", "", "", "", ""
 | 
					             "5000.00", "Unidad", "", "", "", "", ""
 | 
				
			||||||
             ],
 | 
					             ],
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
@@ -112,3 +131,24 @@ class TestAPI(APITestCase):
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return self.client.post(url, data, format='json')
 | 
					        return self.client.post(url, data, format='json')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _create_sale_with_decimal(self):
 | 
				
			||||||
 | 
					        url = '/don_confiao/api/sales/'
 | 
				
			||||||
 | 
					        data = {
 | 
				
			||||||
 | 
					            'customer': self.customer.id,
 | 
				
			||||||
 | 
					            'date': '2024-09-02',
 | 
				
			||||||
 | 
					            'payment_method': 'CASH',
 | 
				
			||||||
 | 
					            'saleline_set': [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    'product': self.product.id,
 | 
				
			||||||
 | 
					                    'quantity': 0.5,
 | 
				
			||||||
 | 
					                    'unit_price': 3000
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    'product': self.product.id,
 | 
				
			||||||
 | 
					                    'quantity': 3,
 | 
				
			||||||
 | 
					                    'unit_price': 5000
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return self.client.post(url, data, format='json')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,8 +65,8 @@ class TestExportarVentasParaTryton(TestCase):
 | 
				
			|||||||
        self.assertEqual(next(csv_reader), expected_header)
 | 
					        self.assertEqual(next(csv_reader), expected_header)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        expected_rows = [
 | 
					        expected_rows = [
 | 
				
			||||||
            ["Camilo", "Camilo", "Camilo", "", "", "2024-09-02 00:00:00+00:00", "Contado", "Almacén", "Peso colombiano", "Panela", "2", "3000.00", "Unidad", "TIENDA LA ILUSIÓN", "Tienda La Ilusion", "La Ilusion", "True", ""],
 | 
					            ["Camilo", "Camilo", "Camilo", "", "", "2024-09-02 00:00:00+00:00", "Contado", "Almacén", "Peso colombiano", "Panela", "2.00", "3000.00", "Unidad", "TIENDA LA ILUSIÓN", "Tienda La Ilusion", "La Ilusion", "True", ""],
 | 
				
			||||||
            ["", "", "", "", "", "", "", "", "", "Panela", "3", "5000.00", "Unidad", "", "", "", "", ""],
 | 
					            ["", "", "", "", "", "", "", "", "", "Panela", "3.00", "5000.00", "Unidad", "", "", "", "", ""],
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
        csv_rows = list(csv_reader)
 | 
					        csv_rows = list(csv_reader)
 | 
				
			||||||
        self.assertEqual(csv_rows[0], expected_rows[0])
 | 
					        self.assertEqual(csv_rows[0], expected_rows[0])
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user