from decimal import Decimal from shop.models import OrderLine, Tax, Product, Order from django.db.models import QuerySet def create_order_line_for_product(product: Product, quantity: Decimal, tax: Tax): price = product.prices.last().price base_total = round(price * quantity, 2) taxes = round(base_total * (tax.value / Decimal("100")), 2) return OrderLine.objects.create( product=product, quantity=quantity, price=price, base_total=base_total, tax_value=tax.value, taxes=taxes, total=base_total + taxes, ) def create_order(lines: QuerySet): order = Order.objects.create() for line in lines.all(): order.lines.add(line) order.calculate_total_from_lines() return order