feat: mio_purin

This commit is contained in:
caoqianming 2023-09-21 10:20:47 +08:00
parent c6af3f7f62
commit a4a96ce59e
2 changed files with 56 additions and 1 deletions

View File

@ -1,4 +1,7 @@
from rest_framework.exceptions import ValidationError
from apps.pum.models import PuOrderItem, PuPlan, PuPlanItem, PuOrder
from django.db.models import F
from apps.inm.models import MIO, MIOItem
class PumService:
@ -14,6 +17,33 @@ class PumService:
puplan.state = state
puplan.save()
def mio_purin(mio: MIO):
"""
采购入库成功后的操作
"""
pu_order = mio.pu_order
for i in MIOItem.objects.filter(mio=mio):
pu_orderitem = PuOrderItem.objects.get(material=i.material, pu_order=pu_order)
delivered_count = pu_orderitem.delivered_count + i.count
if delivered_count > pu_orderitem.count:
raise ValidationError(f'{i.material.name}-超出采购订单所需数量')
pu_orderitem.delivered_count = delivered_count
pu_orderitem.save()
pu_order_state = PuOrder.PUORDER_SHIP
qs = PuOrderItem.objects.filter(pu_order=pu_order, count__lte=F('delivered_count'))
if qs.exists():
pass
else:
pu_order_state = PuOrder.PUORDER_DONE
pu_order.state = pu_order_state
pu_order.save()
# 查看计划进度
qs2 = PuPlanItem.objects.filter(pu_order=pu_order).values_list('pu_plan', flat=True).distinct()
for puplan in qs2:
qs3 = PuPlanItem.objects.filter(pu_plan=puplan).values_list('pu_order__state', flat=True)
states = set(list(qs3))
if len(states) == 1 and states[0] == PuOrder.PUORDER_DONE:
puplan.state = PuPlan.PUPLAN_DONE
puplan.save()

View File

@ -15,6 +15,11 @@ from apps.pum.services import PumService
class SupplierViewSet(CustomModelViewSet):
"""
list: 供应商
供应商
"""
queryset = Supplier.objects.all()
serializer_class = SupplierSerializer
search_fields = ['name', 'contact']
@ -26,6 +31,11 @@ class SupplierViewSet(CustomModelViewSet):
class PuPlanViewSet(CustomModelViewSet):
"""
list: 采购计划
采购计划
"""
queryset = PuPlan.objects.all()
serializer_class = PuPlanSerializer
search_fields = ['name', 'number']
@ -54,6 +64,11 @@ class PuPlanViewSet(CustomModelViewSet):
return Response()
class PuPlanItemViewSet(CustomModelViewSet):
"""
list: 采购计划明细
采购计划明细
"""
queryset = PuPlanItem.objects.all()
serializer_class = PuPlanItemSerializer
filterset_class = PuPlanItemFilter
@ -71,6 +86,11 @@ class PuPlanItemViewSet(CustomModelViewSet):
class PuOrderViewSet(CustomModelViewSet):
"""
list: 采购订单
采购订单
"""
queryset = PuOrder.objects.all()
serializer_class = PuOrderSerializer
filterset_fields = ['state', 'supplier']
@ -105,6 +125,11 @@ class PuOrderViewSet(CustomModelViewSet):
class PuOrderItemViewSet(CustomModelViewSet):
"""
list: 采购订单明细
采购订单明细
"""
queryset = PuOrderItem.objects.all()
serializer_class = PuOrderItemSerializer
filterset_fields = ['material', 'pu_order']