from django_ledger.forms.account import AccountModelUpdateForm,AccountModelCreateForm import requests import os from dotenv import load_dotenv from django.contrib.auth.models import Permission from django.contrib.auth.models import Group from django_ledger.models.invoice import InvoiceModel from django_ledger.utils import accruable_net_summary from decimal import Decimal from django_ledger.models import EstimateModel,EntityModel,ItemModel,ItemTransactionModel,AccountModel,CustomerModel,EntityManagementModel # from rich import print from datetime import date from inventory.models import Car, Dealer, VatRate,Lead,CarMake,CarModel,Schedule,CustomGroup from inventory.utils import CarFinanceCalculator from appointment.models import Appointment,AppointmentRequest,Service,StaffMember from django.contrib.auth import get_user_model from django_ledger.io.io_core import get_localdate from datetime import datetime, timedelta from django.utils import timezone import hashlib from django_ledger.io import roles User = get_user_model() load_dotenv(".env") def run(): car_makes = CarMake.objects.all()[:10] # Fetch the entity and COGS account entity = EntityModel.objects.get(admin__email="ismail.mosa.ibrahim@gmail.com") coa = entity.get_default_coa() cogs = entity.get_default_coa_accounts().filter(role=roles.COGS).first() last_account = entity.get_all_accounts().filter(role=roles.LIABILITY_CL_ACC_PAYABLE).order_by('-created').first() if len(last_account.code) == 4: code = f"{int(last_account.code)}{1:03d}" elif len(last_account.code) > 4: code = f"{int(last_account.code)+1}" print(code) # # Loop through car makes and create accounts # for make in range(len(car_makes)): # Start from 0 to include all items # # Generate a unique code # code = f"{cogs.code}{make + 1:03d}" # Example: "COGS-001", "COGS-002", etc. # account = entity.create_account( # name=car_makes[make].name, # code=code, # role=roles.COGS, # coa_model=coa, # balance_type="debit", # active=True # ) # try: # account = cogs.add_child(instance=account) # account.move(cogs, pos="sorted-sibling") # account.refresh_from_db() # account.save() # except Exception as e: # print(e) # form_data = { # 'name': car_makes[make].name, # 'code': code, # 'role': roles.COGS, # 'balance_type': 'debit', # 'active': True, # 'coa_model': coa # Ensure the COA model is included # }