diff --git a/hb_server/apps/inm/serializers.py b/hb_server/apps/inm/serializers.py index b0945ef..191a2dd 100644 --- a/hb_server/apps/inm/serializers.py +++ b/hb_server/apps/inm/serializers.py @@ -79,6 +79,17 @@ class FIFOInPurSerializer(serializers.ModelSerializer): pass else: raise serializers.ValidationError('没有入库内容') + + for i in details: + # 校验批次 + try: + obj = MaterialBatch.objects.get(batch=i['batch']) + if obj.warehouse != validated_data['warehouse']: + raise serializers.ValidationError('批次号{}在其他仓库已存在'.format(i['batch'])) + except: + pass + + # 创建采购入库 validated_data['type'] = 3 obj = FIFO(**validated_data) obj.save() diff --git a/hb_server/apps/inm/views.py b/hb_server/apps/inm/views.py index cae03de..927e0ee 100644 --- a/hb_server/apps/inm/views.py +++ b/hb_server/apps/inm/views.py @@ -50,15 +50,16 @@ class MaterialBatchViewSet(ListModelMixin, GenericViewSet): ordering_fields = ['create_time'] ordering = ['-create_time'] - # @action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=MaterialBatchQuerySerializer) - # def query(self, request, pk=None): - # """ - # 复杂查询 - # """ - # serializer = MaterialBatchQuerySerializer(data=request.data) - # serializer.is_valid(raise_exception=True) - # queryset = self.queryset.filter() - # return Response() + @action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=MaterialBatchQuerySerializer) + def query(self, request, pk=None): + """ + 复杂查询 + """ + data = request.data + serializer = MaterialBatchQuerySerializer(data=data) + serializer.is_valid(raise_exception=True) + queryset = self.queryset.filter(warehouse__id=data['warehouse'], material__id__in=data['materials']) + return Response(MaterialBatchSerializer(instance=queryset, many=True).data) class FIFODetailViewSet(ListModelMixin, GenericViewSet): """ diff --git a/hb_server/apps/pm/views.py b/hb_server/apps/pm/views.py index 429115e..b7dfacb 100644 --- a/hb_server/apps/pm/views.py +++ b/hb_server/apps/pm/views.py @@ -148,6 +148,16 @@ class SubProductionPlanViewSet(CreateUpdateModelAMixin, ListModelMixin, UpdateMo return Response() raise APIException('计划状态有误') + @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=serializers.Serializer) + def pick_need_(self, request, pk=None): + """ + 领料需求清单 + """ + obj = self.get_object() + instance = SubProductionProgress.objects.filter(subproduction_plan=obj, type=1) + serializer = SubProductionProgressSerializer(instance=instance, many=True) + return Response(serializer.data) + @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=PickNeedSerializer) def pick_need(self, request, pk=None): """