From 400941c10fb4a3e0fb640799a77cb7fcd5847679 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 19 Nov 2019 08:49:54 +1100 Subject: [PATCH] Change item quantity field from PositiveInteger to Decimal - Allow 'partial' quantity e.g. '0.45kg' - Need to change some maths functions as Decimal type is pernickity --- .../migrations/0024_auto_20191118_2139.py | 19 +++++++++++++++++++ InvenTree/part/models.py | 4 ++-- .../migrations/0016_auto_20191118_2146.py | 19 +++++++++++++++++++ InvenTree/stock/models.py | 2 +- 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 InvenTree/part/migrations/0024_auto_20191118_2139.py create mode 100644 InvenTree/stock/migrations/0016_auto_20191118_2146.py diff --git a/InvenTree/part/migrations/0024_auto_20191118_2139.py b/InvenTree/part/migrations/0024_auto_20191118_2139.py new file mode 100644 index 0000000000..95892993b2 --- /dev/null +++ b/InvenTree/part/migrations/0024_auto_20191118_2139.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.5 on 2019-11-18 21:39 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0023_auto_20190913_1401'), + ] + + operations = [ + migrations.AlterField( + model_name='bomitem', + name='quantity', + field=models.DecimalField(decimal_places=5, default=1.0, help_text='BOM quantity for this BOM item', max_digits=15, validators=[django.core.validators.MinValueValidator(0)]), + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 18d66ebdda..768f509c47 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -517,7 +517,7 @@ class Part(models.Model): # Calculate the minimum number of parts that can be built using each sub-part for item in self.bom_items.all().prefetch_related('sub_part__stock_items'): stock = item.sub_part.available_stock - n = int(1.0 * stock / item.quantity) + n = int(stock / item.quantity) if total is None or n < total: total = n @@ -1064,7 +1064,7 @@ class BomItem(models.Model): }) # Quantity required - quantity = models.PositiveIntegerField(default=1, validators=[MinValueValidator(0)], help_text='BOM quantity for this BOM item') + quantity = models.DecimalField(default=1.0, max_digits=15, decimal_places=5, validators=[MinValueValidator(0)], help_text=_('BOM quantity for this BOM item')) overage = models.CharField(max_length=24, blank=True, validators=[validators.validate_overage], help_text=_('Estimated build wastage quantity (absolute or percentage)') diff --git a/InvenTree/stock/migrations/0016_auto_20191118_2146.py b/InvenTree/stock/migrations/0016_auto_20191118_2146.py new file mode 100644 index 0000000000..d3dbe957ed --- /dev/null +++ b/InvenTree/stock/migrations/0016_auto_20191118_2146.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.5 on 2019-11-18 21:46 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0015_auto_20190913_1407'), + ] + + operations = [ + migrations.AlterField( + model_name='stockitem', + name='quantity', + field=models.DecimalField(decimal_places=5, default=1, max_digits=15, validators=[django.core.validators.MinValueValidator(0)]), + ), + ] diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 2c1d290d36..dd8e545355 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -323,7 +323,7 @@ class StockItem(models.Model): batch = models.CharField(max_length=100, blank=True, null=True, help_text=_('Batch code for this stock item')) - quantity = models.PositiveIntegerField(validators=[MinValueValidator(0)], default=1) + quantity = models.DecimalField(max_digits=15, decimal_places=5, validators=[MinValueValidator(0)], default=1) updated = models.DateField(auto_now=True, null=True)