38 lines
1.3 KiB
Python
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()
|