2025-08-27 13:04:41 +03:00

98 lines
3.6 KiB
Python

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()