from decimal import Decimal import random from django.core.management.base import BaseCommand from inventory.models import Car from django_ledger.models import EntityModel,InvoiceModel,ItemModel from inventory.utils import CarFinanceCalculator from rich import print class Command(BaseCommand): help = "" def handle(self, *args, **options): e = EntityModel.objects.first() customer = e.get_customers().first() admin = e.admin # estimate = e.get_estimates().first() # e.create_invoice(coa_model=e.get_default_coa(), customer_model=customer, terms="net_30") i=InvoiceModel.objects.first() calc = CarFinanceCalculator(i) data = calc.get_finance_data() for car_data in data['cars']: car = i.get_itemtxs_data()[0].filter( item_model__car__vin=car_data['vin'] ).first().item_model.car print("car", car) qty = Decimal(car_data['quantity']) print("qty", qty) # amounts from calculator net_car_price = Decimal(car_data['total']) # after discount net_add_price = Decimal(data['total_additionals']) # per car or split however you want vat_amount = Decimal(data['total_vat_amount']) * qty # prorate if multi-qty # grand_total = net_car_price + net_add_price + vat_amount grand_total = Decimal(data['grand_total']) cost_total = Decimal(car_data['cost_price']) * qty print("net_car_price", net_car_price, "net_add_price", net_add_price, "vat_amount", vat_amount, "grand_total", grand_total, "cost_total", cost_total) # acc_cars = e.get_coa_accounts().get(name="Inventory (Cars)") # acc_sales = e.get_coa_accounts().get(name="Car Sales") # acc_tax = e.get_coa_accounts().get(name="Tax-Payable") # acc_service = e.get_coa_accounts().get(name="After-Sales Services") # uom = e.get_uom_all().get(name="Unit") # car_item = e.get_items_products().get(name='2025 Ford Mustang GT') # car_item = e.create_item_product( # name='2025 Ford Mustang GT', # item_type=ItemModel.ITEM_TYPE_MATERIAL, # uom_model=uom, # coa_model=e.get_default_coa(), # ) # car_item.earnings_account=acc_sales # car_item.save() # service_item = e.get_items_services().get(name='Extended Warranty 5yr/60k') # service_item = e.create_item_service( # name='Extended Warranty 5yr/60k', # uom_model=uom, # coa_model=e.get_default_coa(), # ) # service_item.earnings_account=acc_service # service_item.save() # i.invoice_items.add(car_item) # i.invoice_items.add(service_item) # invoices_item_models = i.invoice_items.all() # invoice_itemtxs = { # im.item_number: { # 'unit_cost': Decimal(1500), # 'unit_revenue': Decimal(1500), # 'quantity': 1, # 'total_amount': Decimal(1500), # } for im in invoices_item_models # } # print(invoice_itemtxs) # invoice_itemtxs = i.migrate_itemtxs(itemtxs=invoice_itemtxs, # commit=True, # operation=InvoiceModel.ITEMIZE_APPEND) # print(i.amount_due) # i.save()