def sale_biscuit_to_client_update(instance, validated_data):
    ware_biscuit = get_warehouse_biscuit(instance.biscuit)
    ware_biscuit.add_quantity(instance.quantity)
    ware_biscuit.set_total_price()
    ware_biscuit.set_average_price()
    ware_biscuit.save()
    if instance.delivery_status[2][0] == 'delivered':
        biscuit_income(instance)
    sale_biscuit_to_client(validated_data)
Exemple #2
0
def sale_biscuit(instance):
    ware_biscuit = get_warehouse_biscuit(instance.biscuit)
    if check_warehouse_biscuit_quantity(ware_biscuit, instance.quantity):
        ware_biscuit.subtract_quantity(instance.quantity)
        ware_biscuit.set_total_price()
        ware_biscuit.set_average_price()
        ware_biscuit.save()
        return True
    else:
        return False
Exemple #3
0
def change_sale_biscuit(instance):
    obj = BuyingBiscuitLog.objects.get(sale_id=instance.id)
    ware_biscuit = get_warehouse_biscuit(instance.biscuit)
    if check_warehouse_biscuit_quantity(ware_biscuit, instance.quantity):
        ware_biscuit.add_quantity(obj.quantity)
        ware_biscuit.subtract_quantity(instance.quantity)
        ware_biscuit.set_total_price()
        ware_biscuit.set_average_price()
        ware_biscuit.save()
        obj.quantity = instance.quantity
        obj.biscuit = instance.biscuit
        obj.save()
def subtract_product(validated_data):
    biscuit = validated_data.get('biscuit')
    ware_biscuit = get_warehouse_biscuit(biscuit)
    recipe = get_biscuit_recipe(biscuit)
    for i in recipe:
        product = i.product
        value = i.value
        warehouse = get_warehouse_product(product)
        price = get_product_price(product)
        quantity_value = validated_data.get('quantity') * value
        new_total_price = price * quantity_value
        warehouse.quantity -= quantity_value
        warehouse.total_price -= new_total_price
        warehouse.save()
    ware_biscuit.add_quantity(validated_data.get('quantity'))
    ware_biscuit.set_total_price()
    ware_biscuit.save()
def subtract_product_update(instance, validated_data):
    biscuit = instance.biscuit
    old_recipe = get_biscuit_recipe(biscuit)
    ware_biscuit = get_warehouse_biscuit(biscuit)
    ware_biscuit.subtract_quantity(instance.quantity)
    ware_biscuit.set_total_price()
    ware_biscuit.save()
    for i in old_recipe:
        product = i.product
        value = i.value
        warehouse = get_warehouse_product(product)
        price = get_product_price(product)
        quantity_value = instance.quantity * value
        warehouse.quantity += quantity_value
        new_total_price = price * quantity_value
        warehouse.total_price += new_total_price
        warehouse.save()
    subtract_product(validated_data)
    def validate(self, attrs):
        from apps.biscuit.utils.sale import check_warehouse_biscuit_quantity
        from apps.biscuit.utils.biscuit import get_warehouse_biscuit
        if not attrs.get('biscuit'):
            raise ValidationError({'error': 'Biscuit not found'})
        if not attrs.get('quantity'):
            raise ValidationError({'error': 'quantity not found'})
        if not attrs.get('comment'):
            raise ValidationError({'error': 'comment not found'})
        if not attrs.get('payment_type'):
            raise ValidationError({'error': 'payment_type not found'})
        if not attrs.get('client'):
            raise ValidationError({'error': 'client not found'})
        ware_biscuit = get_warehouse_biscuit(attrs.get('biscuit'))
        quantity = attrs.get('quantity')

        if check_warehouse_biscuit_quantity(ware_biscuit, quantity) == False:
            raise ValidationError('Mahsulot yetarli emas!')
        return attrs
def sale_biscuit_to_client(validated_data):
    ware_biscuit = get_warehouse_biscuit(validated_data.get('biscuit'))
    ware_biscuit.subtract_quantity(validated_data.get('quantity'))
    ware_biscuit.set_total_price()
    ware_biscuit.set_average_price()
    ware_biscuit.save()