98 lines
3.6 KiB
Python
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()
|