factory/apps/sam/services.py

38 lines
1.3 KiB
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, is_reverse: bool = False):
"""
销售出库成功后的操作
"""
order = mio.order
if order is None:
return
for i in MIOItem.objects.filter(mio=mio):
orderitem = OrderItem.objects.get(order=order, material=i.material)
if is_reverse:
delivered_count = orderitem.delivered_count - i.count
else:
delivered_count = orderitem.delivered_count + i.count
if delivered_count > orderitem.count:
raise ValidationError((f'{i.material.name}-超出订单所需数量'))
elif delivered_count < 0:
raise ValidationError((f'{i.material.name}-数量小于0'))
orderitem.delivered_count = delivered_count
orderitem.save()
# 更新order的状态
qs = OrderItem.objects.filter(
order=order, count__gte=F('delivered_count'))
order_state = Order.ORDER_DOING
if qs.exists():
pass
else:
order_state = Order.ORDER_DELIVERED
order.state = order_state
order.save()