diff --git a/hb_server/apps/pm/views.py b/hb_server/apps/pm/views.py index f77a5a6..81093ac 100644 --- a/hb_server/apps/pm/views.py +++ b/hb_server/apps/pm/views.py @@ -66,15 +66,20 @@ class ResourceViewSet(GenericViewSet): rdata = request.data serializer = self.get_serializer(data=rdata) serializer.is_valid(raise_exception=True) + res_d_list = [] res = [] for i in rdata: materials = InputMaterial.objects.filter(subproduction__product__id=i['id'], - subproduction__is_deleted=False, is_deleted=False, material__type__in=[3,4]).order_by('material__number') - for m in materials: - for x in res: - if x['id'] == m.material.id: - x['count'] = x['count'] + m.count*i['count'] - break + subproduction__is_deleted=False, is_deleted=False, material__type__in=[3,4]).order_by('material__number')\ + .values('material__id', 'material__name', 'material__number', 'material__type', 'count', 'material__count') + l_m = list(materials) + for m in l_m: + if m['material__id'] in res_d_list: + index = res_d_list.index(m['material__id']) + res[index]['count'] = res[index]['count'] + m['count']*i['count'] else: - res.append({'id':m.material.id, 'name':m.material.name, 'type':m.material.type, 'number':m.material.number, 'count':m.count*i['count']}) + res_d_list.append(m['material__id']) + res.append({'id':m['material__id'], 'name':m['material__name'], + 'type':m['material__type'], 'number':m['material__number'], + 'count':m['count']*i['count'], 'inv_count':m['material__count']}) return Response(res)