This commit is contained in:
gitea 2025-01-06 07:57:23 +00:00
parent febfb03b56
commit 0b2eb83bf6
7 changed files with 80 additions and 29 deletions

View File

@ -367,6 +367,18 @@ class CarSelectionTable(tables.Table):
class WizardForm1(forms.Form):
username = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control",
"placeholder": "Username",
"required": "required",
}
),
error_messages={
"required": _("You must add a username."),
},
)
email = forms.EmailField(
widget=forms.EmailInput(
attrs={

View File

@ -64,20 +64,20 @@ def create_car_location(sender, instance, created, **kwargs):
print(f"Failed to create CarLocation for car {instance.vin}: {e}")
@receiver(post_save, sender=models.CarReservation)
def update_car_status_on_reservation(sender, instance, created, **kwargs):
if created:
car = instance.car
car.status = models.CarStatusChoices.RESERVED
car.save()
# @receiver(post_save, sender=models.CarReservation)
# def update_car_status_on_reservation(sender, instance, created, **kwargs):
# if created:
# car = instance.car
# car.status = models.CarStatusChoices.RESERVED
# car.save()
@receiver(post_delete, sender=models.CarReservation)
def update_car_status_on_reservation_delete(sender, instance, **kwargs):
car = instance.car
if not car.is_reserved():
car.status = models.CarStatusChoices.AVAILABLE
car.save()
# @receiver(post_delete, sender=models.CarReservation)
# def update_car_status_on_reservation_delete(sender, instance, **kwargs):
# car = instance.car
# if not car.is_reserved():
# car.status = models.CarStatusChoices.AVAILABLE
# car.save()
# Create Entity
@ -103,17 +103,18 @@ def create_ledger_entity(sender, instance, created, **kwargs):
print(f"Ledger entity created for Dealer: {instance.name}")
# Create Cash Account
entity.create_account(
asset_ca_cash = entity.create_account(
coa_model=coa,
code="1101",
code="1010",
role=roles.ASSET_CA_CASH,
name=_("Cash"),
balance_type="debit",
active=True,
)
asset_ca_cash.role_default = True
asset_ca_cash.save()
# Create Accounts Receivable Account
entity.create_account(
asset_ca_receivables = entity.create_account(
coa_model=coa,
code="1102",
role=roles.ASSET_CA_RECEIVABLES,
@ -121,9 +122,11 @@ def create_ledger_entity(sender, instance, created, **kwargs):
balance_type="debit",
active=True,
)
asset_ca_receivables.role_default = True
asset_ca_receivables.save()
# Create Inventory Account
entity.create_account(
asset_ca_inventory = entity.create_account(
coa_model=coa,
code="1103",
role=roles.ASSET_CA_INVENTORY,
@ -132,8 +135,10 @@ def create_ledger_entity(sender, instance, created, **kwargs):
active=True,
)
asset_ca_inventory.role_default = True
asset_ca_inventory.save()
# Create Accounts Payable Account
entity.create_account(
asset_ca_accounts_payable = entity.create_account(
coa_model=coa,
code="2101",
role=roles.LIABILITY_CL_ACC_PAYABLE,
@ -141,8 +146,10 @@ def create_ledger_entity(sender, instance, created, **kwargs):
balance_type="credit",
active=True,
)
asset_ca_accounts_payable.role_default = True
asset_ca_accounts_payable.save()
# Create Equity Account
entity.create_account(
asset_ca_equity = entity.create_account(
coa_model=coa,
code="3101",
role=roles.EQUITY_CAPITAL,
@ -150,9 +157,11 @@ def create_ledger_entity(sender, instance, created, **kwargs):
balance_type="credit",
active=True,
)
asset_ca_equity.role_default = True
asset_ca_equity.save()
# Create Sales Revenue Account
entity.create_account(
asset_ca_revenue = entity.create_account(
coa_model=coa,
code="4101",
role=roles.INCOME_OPERATIONAL,
@ -160,9 +169,11 @@ def create_ledger_entity(sender, instance, created, **kwargs):
balance_type="credit",
active=True,
)
asset_ca_revenue.role_default = True
asset_ca_revenue.save()
# Create Cost of Goods Sold Account
entity.create_account(
asset_ca_cogs = entity.create_account(
coa_model=coa,
code="5101",
role=roles.COGS,
@ -170,9 +181,11 @@ def create_ledger_entity(sender, instance, created, **kwargs):
balance_type="debit",
active=True,
)
asset_ca_cogs.role_default = True
asset_ca_cogs.save()
# Create Rent Expense Account
entity.create_account(
expense = entity.create_account(
coa_model=coa,
code="6101",
role=roles.EXPENSE_OPERATIONAL,
@ -180,6 +193,8 @@ def create_ledger_entity(sender, instance, created, **kwargs):
balance_type="debit",
active=True,
)
expense.role_default = True
expense.save()
# Create Utilities Expense Account
entity.create_account(
@ -257,11 +272,12 @@ def create_item_model(sender, instance, created, **kwargs):
# print(f"UOM created: {uom_name}")
# else:
# print(f"Using existing UOM: {uom_name}")
entity = EntityModel.objects.first()
name = instance.dealer.name
entity = EntityModel.objects.filter(name=name).first()
uom = entity.get_uom_all().first()
coa = entity.get_default_coa()
entity.get_items_all().filter(item_id=instance.vin)
entity.create_item_product(
name=f"{instance.vin}",
item_type=ItemModel.ITEM_TYPE_OTHER,

View File

@ -70,6 +70,8 @@ from .utils import get_calculations, send_email, get_user_type
from django.contrib.auth.models import User
from allauth.account import views
from django.db.models import Count, F, Value
from django.contrib.auth import authenticate
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
@ -117,6 +119,7 @@ def dealer_signup(request, *args, **kwargs):
wf1 = data.get("wizardValidationForm1")
wf2 = data.get("wizardValidationForm2")
wf3 = data.get("wizardValidationForm3")
username = wf1.get("username")
email = wf1.get("email")
password = wf1.get("password")
password_confirm = wf1.get("confirm_password")
@ -132,7 +135,9 @@ def dealer_signup(request, *args, **kwargs):
try:
with transaction.atomic():
user = User.objects.create(email=email, password=password)
user = User.objects.create(username=username, email=email)
user.set_password(password)
user.save()
models.Dealer.objects.create(
user=user,
@ -143,7 +148,12 @@ def dealer_signup(request, *args, **kwargs):
phone_number=phone,
address=address,
)
return JsonResponse({"message": "User created successfully."}, status=200)
user = authenticate(request, username=username, password=password)
if user is not None:
return JsonResponse({"message": "User created successfully."}, status=200)
else:
return JsonResponse({"error": "User creation failed."}, status=400)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
@ -475,7 +485,7 @@ def inventory_stats_view(request):
]["total_cars"] += 1
except Exception as e:
print(e)
result = {
result = {
"total_cars": cars.count(),
"makes": [
{
@ -653,7 +663,10 @@ def manage_reservation(request, reservation_id):
return redirect("car_detail", pk=reservation.car.pk)
elif action == "cancel":
car = reservation.car
reservation.delete()
car.status = models.CarStatusChoices.AVAILABLE
car.save()
messages.success(request, _("Reservation canceled successfully."))
return redirect("car_detail", pk=reservation.car.pk)
@ -1685,6 +1698,9 @@ class EstimateListView(LoginRequiredMixin, ListView):
template_name = "sales/estimates/estimate_list.html"
context_object_name = "estimates"
def get_queryset(self):
entity = self.request.user.dealer.entity
return entity.get_estimates()
# class EstimateCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
# model = EstimateModel
@ -1810,9 +1826,10 @@ def create_estimate(request):
)
form = EstimateModelCreateForm(entity_slug=entity.slug, user_model=entity.admin)
car_list = models.Car.objects.filter(dealer=dealer,finances__selling_price__gt=0).exclude(status='reserved').values_list("vin", flat=True)
context = {
"form": form,
"items": entity.get_items_all().filter(item_role=ItemModel.ITEM_ROLE_PRODUCT),
"items": entity.get_items_all().filter(item_role=ItemModel.ITEM_ROLE_PRODUCT,name__in=[car_list]),
}
return render(request, "sales/estimates/estimate_form.html", context)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View File

@ -117,6 +117,9 @@ const url = "{% url 'account_signup' %}";
const data = await response.json();
if (response.ok) {
notify("success","Account created successfully");
setTimeout(() => {
window.location.href = "{% url 'account_login' %}";
}, 1000);
} else {
notify("error",data.error);
}

View File

@ -212,6 +212,7 @@
<label for="{{ form.receiving_date.id_for_label }}" class="form-label">
{% trans 'Receiving Date' %}:
</label>
{{ form.receiving_date }}
<input
class="form-control form-control-sm datetimepicker flatpickr-input"
id="{{ form.receiving_date.id_for_label }}"

View File

@ -29,7 +29,9 @@
<div class="row align-items-center g-3 g-sm-5 text-start text-sm-start">
<div class="col-12 col-sm-auto ">
<div class="avatar avatar-3xl avatar-bordered mb-3">
<img class="rounded-circle" src="{{ cars.first.id_car_make.logo.url }}" alt="">
{% if cars.first.id_car_make.logo %}
<img class="rounded-circle" src="{{ cars.first.id_car_make.logo.url }}" alt="">
{% endif %}
</div>
</div>
<div class="col-12 col-sm-auto flex-1">