fix: 采购入库逻辑的bug

This commit is contained in:
caoqianming 2023-10-19 14:04:41 +08:00
parent 0965e6c68e
commit 80b2685417
3 changed files with 27 additions and 11 deletions

View File

@ -23,6 +23,7 @@ class MaterialBatchSerializer(CustomModelSerializer):
source='warehouse.name', read_only=True)
material_name = serializers.CharField(
source='material.name', read_only=True)
material_ = MaterialSerializer(source='material', read_only=True)
class Meta:
model = MaterialBatch
@ -97,6 +98,8 @@ class MIODoSerializer(CustomModelSerializer):
label="车间", queryset=Dept.objects.all(), required=True)
do_user = serializers.PrimaryKeyRelatedField(
label="执行人", queryset=User.objects.all(), required=True)
note = serializers.CharField(
required=False, allow_blank=True)
class Meta:
model = MIO
@ -116,6 +119,8 @@ class MIODoSerializer(CustomModelSerializer):
class MIOSaleSerializer(CustomModelSerializer):
order = serializers.PrimaryKeyRelatedField(
label="订单", queryset=Order.objects.all(), required=True)
note = serializers.CharField(
required=False, allow_blank=True)
class Meta:
model = MIO
@ -129,10 +134,16 @@ class MIOSaleSerializer(CustomModelSerializer):
validated_data['belong_dept'] = order.belong_dept
return super().create(validated_data)
def update(self, instance, validated_data):
validated_data.pop('type')
return super().update(instance, validated_data)
class MIOPurSerializer(CustomModelSerializer):
pu_order = serializers.PrimaryKeyRelatedField(
label="采购订单", queryset=PuOrder.objects.all(), required=True)
note = serializers.CharField(
required=False, allow_blank=True)
class Meta:
model = MIO
@ -146,8 +157,14 @@ class MIOPurSerializer(CustomModelSerializer):
validated_data['belong_dept'] = pu_order.belong_dept
return super().create(validated_data)
def update(self, instance, validated_data):
validated_data.pop('type')
return super().update(instance, validated_data)
class MIOOtherSerializer(CustomModelSerializer):
note = serializers.CharField(
required=False, allow_blank=True)
class Meta:
model = MIO

View File

@ -39,8 +39,8 @@ class InmService:
defaults={'material': material, 'warehouse': warehouse, 'count': 0, 'batch': i.batch})
if in_or_out == 1:
mb.count = mb.count + i.count
if mb.expiration_date is None:
mb.expiration_date = i.expiration_date
# if mb.expiration_date is None:
# mb.expiration_date = i.expiration_date
mb.save()
elif in_or_out == -1:
mb.count = mb.count - i.count

View File

@ -45,6 +45,7 @@ class MaterialBatchViewSet(ListModelMixin, CustomGenericViewSet):
serializer_class = MaterialBatchSerializer
select_related_fields = ['warehouse', 'material']
filterset_fields = ['warehouse', 'material']
search_fields = ['material__name']
class MioDoViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomGenericViewSet):
@ -107,14 +108,12 @@ class MioOtherViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomGenericV
return super().create(request, *args, **kwargs)
class MIOViewSet(ListModelMixin, BulkCreateModelMixin, BulkUpdateModelMixin, DestroyModelMixin, CustomGenericViewSet):
class MIOViewSet(CustomModelViewSet):
"""
list: 出入库记录
出入库记录
"""
perms_map = {'get': '*', 'post': 'mio.create',
'put': 'mio.update', 'delete': 'mio.delete'}
queryset = MIO.objects.all()
select_related_fields = ['create_by', 'belong_dept', 'do_user',
'submit_user', 'supplier', 'order', 'customer', 'pu_order']
@ -122,18 +121,18 @@ class MIOViewSet(ListModelMixin, BulkCreateModelMixin, BulkUpdateModelMixin, Des
filterset_fields = ['state', 'type', 'pu_order', 'order']
data_filter = True
def get_serializer(self, *args, **kwargs):
def get_serializer_class(self):
if self.action in ['create', 'update', 'partial_update']:
type = self.request.data.get('type')
if type in [MIO.MIO_TYPE_DO_IN, MIO.MIO_TYPE_DO_OUT]:
return MIODoSerializer(*args, **kwargs)
return MIODoSerializer
elif type in [MIO.MIO_TYPE_OTHER_IN, MIO.MIO_TYPE_OTHER_OUT]:
return MIOOtherSerializer(*args, **kwargs)
return MIOOtherSerializer
elif type == MIO.MIO_TYPE_SALE_OUT:
return MIOSaleSerializer(*args, **kwargs)
return MIOSaleSerializer
elif type == MIO.MIO_TYPE_PUR_IN:
return MIOPurSerializer(*args, **kwargs)
return super().get_serializer(*args, **kwargs)
return MIOPurSerializer
return self.serializer_class
def perform_destroy(self, instance):
if instance.state != MIO.MIO_CREATE: