diff --git a/apps/inm/migrations/0020_materialbatch_supplier.py b/apps/inm/migrations/0020_materialbatch_supplier.py new file mode 100644 index 00000000..0ebaa8d9 --- /dev/null +++ b/apps/inm/migrations/0020_materialbatch_supplier.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2024-10-11 04:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('pum', '0008_auto_20240731_1829'), + ('inm', '0019_mio_mgroup'), + ] + + operations = [ + migrations.AddField( + model_name='materialbatch', + name='supplier', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pum.supplier', verbose_name='供应商'), + ), + ] diff --git a/apps/inm/models.py b/apps/inm/models.py index c14b6afc..e0ac4ba3 100644 --- a/apps/inm/models.py +++ b/apps/inm/models.py @@ -28,6 +28,8 @@ class MaterialBatch(BaseModel): count = models.DecimalField('存量', max_digits=12, decimal_places=3, default=0) production_dept = models.ForeignKey('system.dept', verbose_name='生产车间', on_delete=models.CASCADE, null=True, blank=True) expiration_date = models.DateField('有效期', null=True, blank=True) + supplier = models.ForeignKey( + Supplier, verbose_name='供应商', on_delete=models.SET_NULL, null=True, blank=True) class Meta: unique_together = ('material', 'batch', 'warehouse') diff --git a/apps/inm/serializers.py b/apps/inm/serializers.py index 866c337b..b4d6f957 100644 --- a/apps/inm/serializers.py +++ b/apps/inm/serializers.py @@ -33,6 +33,8 @@ class MaterialBatchSerializer(CustomModelSerializer): source='warehouse.name', read_only=True) material_name = serializers.StringRelatedField( source='material', read_only=True) + supplier_name = serializers.StringRelatedField( + source='supplier', read_only=True) material_ = MaterialSerializer(source='material', read_only=True) class Meta: @@ -49,6 +51,8 @@ class MaterialBatchDetailSerializer(CustomModelSerializer): material_ = MaterialSerializer(source='material', read_only=True) assemb = MaterialBatchAListSerializer( source='a_mb', read_only=True, many=True) + supplier_name = serializers.StringRelatedField( + source='supplier', read_only=True) class Meta: model = MaterialBatch diff --git a/apps/inm/services.py b/apps/inm/services.py index 78c5e672..e561f58f 100644 --- a/apps/inm/services.py +++ b/apps/inm/services.py @@ -90,7 +90,7 @@ class InmService: material=material, warehouse=warehouse, batch=i.batch, - defaults={"material": material, "warehouse": warehouse, "count": 0, "batch": i.batch} + defaults={"count": 0, "supplier": i.mio.supplier} ) if in_or_out == 1: mb.count = mb.count + getattr(i, field) diff --git a/apps/inm/views.py b/apps/inm/views.py index 5e879f1c..4c6cdbc8 100644 --- a/apps/inm/views.py +++ b/apps/inm/views.py @@ -48,7 +48,7 @@ class MaterialBatchViewSet(ListModelMixin, CustomGenericViewSet): queryset = MaterialBatch.objects.filter(count__gt=0) serializer_class = MaterialBatchSerializer retrieve_serializer_class = MaterialBatchDetailSerializer - select_related_fields = ['warehouse', 'material'] + select_related_fields = ['warehouse', 'material', 'supplier'] filterset_class = MaterialBatchFilter search_fields = ['material__name', 'material__number', 'material__model', 'material__specification', 'batch']