From ddb517d1f8cc99a28e50820aa95769e8c62c46be Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 18 Dec 2024 14:53:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20material=E5=A2=9E=E5=8A=A0tracking?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mtm/migrations/0048_auto_20241218_1431.py | 23 +++++++++++++++++++ apps/mtm/models.py | 8 ++++++- apps/mtm/serializers.py | 5 +++- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 apps/mtm/migrations/0048_auto_20241218_1431.py diff --git a/apps/mtm/migrations/0048_auto_20241218_1431.py b/apps/mtm/migrations/0048_auto_20241218_1431.py new file mode 100644 index 00000000..e9e39946 --- /dev/null +++ b/apps/mtm/migrations/0048_auto_20241218_1431.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.12 on 2024-12-18 06:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mtm', '0047_route_div_number'), + ] + + operations = [ + migrations.AddField( + model_name='material', + name='tracking', + field=models.PositiveSmallIntegerField(choices=[(10, '批次'), (20, '单件')], default=10, verbose_name='追踪方式'), + ), + migrations.AlterField( + model_name='material', + name='sort', + field=models.FloatField(default=1, verbose_name='排序'), + ), + ] diff --git a/apps/mtm/models.py b/apps/mtm/models.py index 193888c3..31756949 100644 --- a/apps/mtm/models.py +++ b/apps/mtm/models.py @@ -55,6 +55,9 @@ class Material(CommonAModel): (MA_TYPE_OFFICE, '办公用品') ) + MA_TRACKING_BATCH = 10 + MA_TRACKING_SINGLE = 20 + name = models.CharField('名称', max_length=50) cate = models.CharField('大类', max_length=20, default='', blank=True) number = models.CharField('编号', max_length=100, null=True, blank=True) @@ -66,8 +69,11 @@ class Material(CommonAModel): type = models.PositiveSmallIntegerField( '物料类型', choices=type_choices, default=1, help_text=str(type_choices)) testitems = models.JSONField('检测项目', default=list, blank=True) - sort = models.PositiveSmallIntegerField('排序', default=1) + sort = models.FloatField('排序', default=1) unit = models.CharField('基准计量单位', default='个', max_length=10) + tracking = models.PositiveSmallIntegerField("追踪方式", default=10, + choices=((MA_TRACKING_BATCH, '批次'), + (MA_TRACKING_SINGLE, '单件'))) count = models.DecimalField('总库存', max_digits=14, decimal_places=3, default=0) count_mb = models.DecimalField('仓库库存', max_digits=14, decimal_places=3, default=0) count_wm = models.DecimalField('车间库存', max_digits=14, decimal_places=3, default=0) diff --git a/apps/mtm/serializers.py b/apps/mtm/serializers.py index cf41fa79..61cd2495 100644 --- a/apps/mtm/serializers.py +++ b/apps/mtm/serializers.py @@ -183,7 +183,7 @@ class RouteSerializer(CustomModelSerializer): """ material = instance.material process = instance.process - material_out = Material.objects.get_queryset(all=True).filter(type=Material.MA_TYPE_HALFGOOD, parent=material, process=process).first() + material_out: Material = Material.objects.get_queryset(all=True).filter(type=Material.MA_TYPE_HALFGOOD, parent=material, process=process).first() if material_out: material_out.is_deleted = False if material_out.parent == material: @@ -191,6 +191,7 @@ class RouteSerializer(CustomModelSerializer): material_out.model = material.model material_out.specification = material.specification material_out.cate = material.cate + material_out.tracking = material.tracking material_out.save() instance.material_out = material_out instance.save() @@ -201,6 +202,7 @@ class RouteSerializer(CustomModelSerializer): if material_out.parent is None: material_out.parent = material material_out.cate = material.cate + material_out.tracking = material.tracking material_out.save() instance.material_out = material_out instance.save() @@ -212,6 +214,7 @@ class RouteSerializer(CustomModelSerializer): 'model': material.model, 'type': Material.MA_TYPE_HALFGOOD, 'cate': material.cate, + 'tracking': material.tracking, 'create_by': self.request.user, 'update_by': self.request.user, })