diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 008523364d..7e6660f737 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -12,7 +12,6 @@ from .serializers import PartSerializer from InvenTree.views import TreeSerializer - class PartCategoryTree(TreeSerializer): title = "Parts" diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 9740d1ccc3..6ae17df085 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -82,7 +82,7 @@ class Part(models.Model): """ Represents an abstract part Parts can be "stocked" in multiple warehouses, and can be combined to form other parts - """ + """ def get_absolute_url(self): return '/part/{id}/'.format(id=self.id) @@ -256,18 +256,19 @@ class Part(models.Model): self.allocated_build_count, ]) + + @property + def stock_entries(self): + return [loc for loc in self.locations.all() if loc.in_stock] + @property def total_stock(self): """ Return the total stock quantity for this part. Part may be stored in multiple locations """ - stocks = self.locations.all() - if len(stocks) == 0: - return 0 + return sum([loc.quantity for loc in self.stock_entries]) - result = stocks.aggregate(total=Sum('quantity')) - return result['total'] @property def has_bom(self): diff --git a/InvenTree/part/templates/part/stock.html b/InvenTree/part/templates/part/stock.html index e2176afaec..a3c6f79799 100644 --- a/InvenTree/part/templates/part/stock.html +++ b/InvenTree/part/templates/part/stock.html @@ -22,7 +22,7 @@ -{% for stock in part.locations.all %} +{% for stock in part.stock_entries %} Click diff --git a/InvenTree/stock/migrations/0002_auto_20180430_1218.py b/InvenTree/stock/migrations/0002_auto_20180430_1218.py new file mode 100644 index 0000000000..a3ed70090f --- /dev/null +++ b/InvenTree/stock/migrations/0002_auto_20180430_1218.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.12 on 2018-04-30 12:18 +from __future__ import unicode_literals + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='stockitem', + name='quantity', + field=models.PositiveIntegerField(default=1, validators=[django.core.validators.MinValueValidator(0)]), + ), + ] diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 8bec540b20..f15abf869c 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -130,7 +130,7 @@ class StockItem(models.Model): # build = models.ForeignKey('build.Build', on_delete=models.SET_NULL, blank=True, null=True) # Quantity of this stock item. Value may be overridden by other settings - quantity = models.PositiveIntegerField(validators=[MinValueValidator(0)]) + quantity = models.PositiveIntegerField(validators=[MinValueValidator(0)], default=1) # Last time this item was updated (set automagically) updated = models.DateField(auto_now=True)