from decimal import Decimal from django_ledger.models import EstimateModel from rich import print from inventory.models import VatRate def run(): estimate = EstimateModel.objects.first() vat = VatRate.objects.filter(is_active=True).first() data = estimate.get_itemtxs_data()[0].all() total = sum( [ Decimal(item.item_model.additional_info["car_finance"]["selling_price"]) * Decimal(item.ce_quantity or item.quantity) for item in data ] ) additional_services = [] for i in data: if i.item_model.additional_info["additional_services"]: additional_services.extend( [ {"name": x.name, "price": x.price} for x in i.item_model.additional_info["additional_services"] ] ) cars_info = { "cars": [ { "vin": x.item_model.additional_info["car_info"]["vin"], "make": x.item_model.additional_info["car_info"]["make"], "model": x.item_model.additional_info["car_info"]["model"], "year": x.item_model.additional_info["car_info"]["year"], "trim": x.item_model.additional_info["car_info"]["mileage"], "cost_price": x.item_model.additional_info["car_finance"]["cost_price"], "selling_price": x.item_model.additional_info["car_finance"][ "selling_price" ], "discount": x.item_model.additional_info["car_finance"][ "discount_amount" ], "total": x.item_model.additional_info["car_finance"]["total"], "additional_services": x.item_model.additional_info[ "additional_services" ], } for x in data ], "quantity": data.count(), "total_price": total, "total__vat": (total * vat.rate) + total, "total_discount": sum( Decimal(x.item_model.additional_info["car_finance"]["discount_amount"]) for x in data ), "grand_total": Decimal(total * vat.rate) + total - Decimal( sum( Decimal(x.item_model.additional_info["car_finance"]["discount_amount"]) for x in data ) ), "additionals": additional_services, } print(cars_info)