29 lines
		
	
	
		
			986 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			986 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, material=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()
 |