From 9d847c8d87255c6d83c746654a7aaeee279c33bf Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 1 Dec 2023 13:51:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=87=E8=B4=AD=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E5=92=8C=E8=AE=A2=E5=8D=95=E9=83=BD=E5=A2=9E=E5=8A=A0=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pum/migrations/0004_auto_20231201_1350.py | 26 +++++++++++++++++++ apps/pum/models.py | 4 +++ apps/pum/views.py | 6 +++-- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 apps/pum/migrations/0004_auto_20231201_1350.py diff --git a/apps/pum/migrations/0004_auto_20231201_1350.py b/apps/pum/migrations/0004_auto_20231201_1350.py new file mode 100644 index 00000000..dad3a593 --- /dev/null +++ b/apps/pum/migrations/0004_auto_20231201_1350.py @@ -0,0 +1,26 @@ +# Generated by Django 3.2.12 on 2023-12-01 05:50 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('pum', '0003_puorder_materials'), + ] + + operations = [ + migrations.AddField( + model_name='puorder', + name='submit_user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submit_user_puorder', to=settings.AUTH_USER_MODEL, verbose_name='提交人'), + ), + migrations.AddField( + model_name='puplan', + name='submit_user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submit_user_puplan', to=settings.AUTH_USER_MODEL, verbose_name='提交人'), + ), + ] diff --git a/apps/pum/models.py b/apps/pum/models.py index ec009c5c..7d6886e7 100644 --- a/apps/pum/models.py +++ b/apps/pum/models.py @@ -35,6 +35,8 @@ class PuPlan(CommonBModel): number = models.CharField('编号', max_length=20) name = models.CharField('名称', max_length=50, null=True, blank=True) submit_time = models.DateTimeField('提交时间', null=True, blank=True) + submit_user = models.ForeignKey( + 'system.user', verbose_name='提交人', related_name='submit_user_puplan', on_delete=models.CASCADE, null=True, blank=True) class PuOrder(CommonBModel): @@ -58,6 +60,8 @@ class PuOrder(CommonBModel): Supplier, verbose_name='供应商', on_delete=models.CASCADE) delivery_date = models.DateField('截止到货日期', null=True, blank=True) submit_time = models.DateTimeField('提交时间', null=True, blank=True) + submit_user = models.ForeignKey( + 'system.user', verbose_name='提交人', related_name='submit_user_puorder', on_delete=models.CASCADE, null=True, blank=True) materials = models.ManyToManyField( Material, verbose_name='多个物料', blank=True, through='pum.puorderitem', related_name='pu_order_materials') diff --git a/apps/pum/views.py b/apps/pum/views.py index fb479e69..4eaec077 100644 --- a/apps/pum/views.py +++ b/apps/pum/views.py @@ -46,7 +46,7 @@ class PuPlanViewSet(CustomModelViewSet): raise ParseError('该计划存在明细不可删除') return super().perform_destroy(instance) - @action(methods=['post'], detail=True, perms_map={'post': 'pu_plan.update'}, serializer_class=serializers.Serializer) + @action(methods=['post'], detail=True, perms_map={'post': 'pu_plan.submit'}, serializer_class=serializers.Serializer) def submit(self, request, *args, **kwargs): """提交采购计划 @@ -59,6 +59,7 @@ class PuPlanViewSet(CustomModelViewSet): if puplan.state != PuPlan.PUPLAN_CREATE: raise ParseError('采购计划状态异常') puplan.submit_time = timezone.now() + puplan.submit_user = user puplan.state = PuPlan.PUPLAN_SUBMITED puplan.save() return Response() @@ -106,7 +107,7 @@ class PuOrderViewSet(CustomModelViewSet): raise ParseError('采购订单非创建中不可删除') instance.delete(soft=False) - @action(methods=['post'], detail=True, perms_map={'post': 'pu_order.update'}, serializer_class=serializers.Serializer) + @action(methods=['post'], detail=True, perms_map={'post': 'pu_order.submit'}, serializer_class=serializers.Serializer) @transaction.atomic def submit(self, request, *args, **kwargs): """提交采购订单 @@ -122,6 +123,7 @@ class PuOrderViewSet(CustomModelViewSet): if puorder.state != PuOrder.PUORDER_CREATE: raise ParseError('采购计划状态异常') puorder.submit_time = timezone.now() + puorder.submit_user = user puorder.state = PuOrder.PUORDER_SUBMITED puorder.save() PumService.change_puplan_state_when_puorder_sumbit(puorder)