feat: miodetail
This commit is contained in:
parent
cbc43fdb65
commit
35052699da
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.2.12 on 2023-10-26 08:24
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('inm', '0006_alter_mio_number'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='mioitem',
|
||||||
|
name='mio',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='item_mio', to='inm.mio', verbose_name='关联出入库'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -94,7 +94,7 @@ class MIOItem(BaseModel):
|
||||||
出入库明细
|
出入库明细
|
||||||
"""
|
"""
|
||||||
mio = models.ForeignKey(MIO, verbose_name='关联出入库',
|
mio = models.ForeignKey(MIO, verbose_name='关联出入库',
|
||||||
on_delete=models.CASCADE)
|
on_delete=models.CASCADE, related_name='item_mio')
|
||||||
warehouse = models.ForeignKey(
|
warehouse = models.ForeignKey(
|
||||||
WareHouse, on_delete=models.CASCADE, verbose_name='仓库')
|
WareHouse, on_delete=models.CASCADE, verbose_name='仓库')
|
||||||
material = models.ForeignKey(
|
material = models.ForeignKey(
|
||||||
|
|
|
@ -77,29 +77,6 @@ class MIOListSerializer(CustomModelSerializer):
|
||||||
read_only_fields = EXCLUDE_FIELDS + \
|
read_only_fields = EXCLUDE_FIELDS + \
|
||||||
['state', 'submit_time', 'submit_user']
|
['state', 'submit_time', 'submit_user']
|
||||||
|
|
||||||
# def validate(self, attrs):
|
|
||||||
# if 'pu_order' in attrs and attrs['pu_order']:
|
|
||||||
# attrs['supplier'] = attrs['pu_order'].supplier
|
|
||||||
# if attrs['pu_order'].belong_dept:
|
|
||||||
# attrs['belong_dept'] = attrs['pu_order'].belong_dept
|
|
||||||
# elif 'order' in attrs and attrs['order']:
|
|
||||||
# attrs['customer'] = attrs['order'].customer
|
|
||||||
# return super().validate(attrs)
|
|
||||||
|
|
||||||
# def create(self, validated_data):
|
|
||||||
# type = validated_data['type']
|
|
||||||
# if type == MIO.MIO_TYPE_PUR_IN:
|
|
||||||
# pu_order = validated_data.get('pu_order', None)
|
|
||||||
# if pu_order and pu_order.state in [PuOrder.PUORDER_SUBMITED, PuOrder.PUORDER_SHIP]:
|
|
||||||
# pass
|
|
||||||
# else:
|
|
||||||
# raise ValidationError('该采购订单不可选')
|
|
||||||
# return super().create(validated_data)
|
|
||||||
|
|
||||||
# def update(self, instance, validated_data):
|
|
||||||
# validated_data.pop('type')
|
|
||||||
# return super().update(instance, validated_data)
|
|
||||||
|
|
||||||
|
|
||||||
class MIOItemACreateSerializer(CustomModelSerializer):
|
class MIOItemACreateSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -244,3 +221,7 @@ class MIOOtherSerializer(CustomModelSerializer):
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
validated_data.pop('type')
|
validated_data.pop('type')
|
||||||
return super().update(instance, validated_data)
|
return super().update(instance, validated_data)
|
||||||
|
|
||||||
|
|
||||||
|
class MIODetailSerializer(MIOListSerializer):
|
||||||
|
items = MIOItemSerializer(source='item_mio', many=True, read_only=True)
|
||||||
|
|
|
@ -10,7 +10,7 @@ from rest_framework.response import Response
|
||||||
from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem
|
from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem
|
||||||
from apps.inm.serializers import (
|
from apps.inm.serializers import (
|
||||||
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer,
|
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer,
|
||||||
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer, MaterialBatchDetailSerializer)
|
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer, MaterialBatchDetailSerializer, MIODetailSerializer)
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from apps.inm.services import InmService
|
from apps.inm.services import InmService
|
||||||
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, BulkUpdateModelMixin
|
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, BulkUpdateModelMixin
|
||||||
|
@ -121,6 +121,7 @@ class MIOViewSet(CustomModelViewSet):
|
||||||
select_related_fields = ['create_by', 'belong_dept', 'do_user',
|
select_related_fields = ['create_by', 'belong_dept', 'do_user',
|
||||||
'submit_user', 'supplier', 'order', 'customer', 'pu_order']
|
'submit_user', 'supplier', 'order', 'customer', 'pu_order']
|
||||||
serializer_class = MIOListSerializer
|
serializer_class = MIOListSerializer
|
||||||
|
retrieve_serializer_class = MIODetailSerializer
|
||||||
filterset_fields = ['state', 'type', 'pu_order', 'order']
|
filterset_fields = ['state', 'type', 'pu_order', 'order']
|
||||||
search_fields = ['number']
|
search_fields = ['number']
|
||||||
data_filter = True
|
data_filter = True
|
||||||
|
@ -145,7 +146,7 @@ class MIOViewSet(CustomModelViewSet):
|
||||||
if not has_perm(user, ['mio.pur']):
|
if not has_perm(user, ['mio.pur']):
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
return MIOPurSerializer
|
return MIOPurSerializer
|
||||||
return self.serializer_class
|
return super().get_serializer_class()
|
||||||
|
|
||||||
def perform_destroy(self, instance):
|
def perform_destroy(self, instance):
|
||||||
if instance.state != MIO.MIO_CREATE:
|
if instance.state != MIO.MIO_CREATE:
|
||||||
|
|
Loading…
Reference in New Issue