factory/apps/sam/services.py

29 lines
985 B
Python

from apps.sam.models import Order, OrderItem
from rest_framework.exceptions import ValidationError
from django.db.models import F
from apps.inm.models import MIO, MIOItem
class SamService:
def mio_saleout(mio: MIO):
"""
销售出库成功后的操作
"""
order = mio.order
for i in MIOItem.objects.filter(mio=mio):
orderitem = OrderItem.objects.get(order=order, product=i.material)
delivered_count = orderitem.delivered_count + i.count
if delivered_count > orderitem.count:
raise ValidationError((f'{i.material.name}-超出订单所需数量'))
orderitem.delivered_count = delivered_count
orderitem.save()
# 更新order的状态
qs = OrderItem.objects.filter(
order=order, count__lte=F('delivered_count'))
if qs.exists():
pass
else:
order.state = Order.ORDER_DELIVERED
order.save()