2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-20 13:56:30 +00:00

Fix BOM table rendering

- Price was not being sent in the PartBriefSerializer!
This commit is contained in:
Oliver Walters
2020-04-28 23:17:15 +10:00
parent df218a5193
commit 087001f29d
5 changed files with 39 additions and 23 deletions

View File

@ -468,15 +468,15 @@ class BomList(generics.ListCreateAPIView):
# Do we wish to include extra detail?
try:
part_detail = str2bool(self.request.GET.get('part_detail', None))
sub_part_detail = str2bool(self.request.GET.get('sub_part_detail', None))
kwargs['part_detail'] = str2bool(self.request.GET.get('part_detail', None))
except AttributeError:
part_detail = None
sub_part_detail = None
kwargs['part_detail'] = part_detail
kwargs['sub_part_detail'] = sub_part_detail
pass
try:
kwargs['sub_part_detail'] = str2bool(self.request.GET.get('sub_part_detail', None))
except AttributeError:
pass
# Ensure the request context is passed through!
kwargs['context'] = self.get_serializer_context()
@ -486,6 +486,12 @@ class BomList(generics.ListCreateAPIView):
queryset = BomItem.objects.all()
queryset = self.get_serializer_class().setup_eager_loading(queryset)
return queryset
def filter_queryset(self, queryset):
query = super().filter_queryset(queryset)
# Filter by part?
part = self.request.query_params.get('part', None)

View File

@ -1242,6 +1242,17 @@ class BomItem(models.Model):
child=self.sub_part.full_name,
n=helpers.decimal2string(self.quantity))
def available_stock(self):
"""
Return the available stock items for the referenced sub_part
"""
query = self.sub_part.stock_items.filter(StockModels.StockItem.IN_STOCK_FILTER).aggregate(
available=Coalesce(Sum('quantity'), 0)
)
return query['available']
def get_overage_quantity(self, quantity):
""" Calculate overage quantity
"""

View File

@ -54,6 +54,8 @@ class PartBriefSerializer(InvenTreeModelSerializer):
thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True)
stock = serializers.FloatField(source='total_stock')
class Meta:
model = Part
fields = [
@ -65,6 +67,7 @@ class PartBriefSerializer(InvenTreeModelSerializer):
'assembly',
'purchaseable',
'salable',
'stock',
'virtual',
]
@ -236,6 +239,8 @@ class BomItemSerializer(InvenTreeModelSerializer):
price_range = serializers.CharField(read_only=True)
quantity = serializers.FloatField()
available = serializers.FloatField(source='available_stock')
part_detail = PartBriefSerializer(source='part', many=False, read_only=True)
sub_part_detail = PartBriefSerializer(source='sub_part', many=False, read_only=True)
@ -277,6 +282,7 @@ class BomItemSerializer(InvenTreeModelSerializer):
'sub_part',
'sub_part_detail',
'quantity',
'available',
'reference',
'price_range',
'overage',