diff --git a/inventory/__pycache__/services.cpython-311.pyc b/inventory/__pycache__/services.cpython-311.pyc index 6d167297..7451acb6 100644 Binary files a/inventory/__pycache__/services.cpython-311.pyc and b/inventory/__pycache__/services.cpython-311.pyc differ diff --git a/inventory/__pycache__/views.cpython-311.pyc b/inventory/__pycache__/views.cpython-311.pyc index a1f04797..6f6f4da3 100644 Binary files a/inventory/__pycache__/views.cpython-311.pyc and b/inventory/__pycache__/views.cpython-311.pyc differ diff --git a/inventory/services.py b/inventory/services.py index f4e90bf9..cc782106 100644 --- a/inventory/services.py +++ b/inventory/services.py @@ -36,11 +36,10 @@ def decodevin(vin): if result:=decode_vin(vin): return result - elif result:=decode_vin_haikalna(vin): - return result elif result:=elm(vin): return result - + elif result:=decode_vin_haikalna(vin): + return result else: return None diff --git a/inventory/views.py b/inventory/views.py index bbdca039..f4c1a98e 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -1814,15 +1814,14 @@ class AccountCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView): success_message = "Account created successfully." def form_valid(self, form): - form.instance.entity_model = self.request.user.dealer.entity + dealer = get_user_type(self.request) + form.instance.entity_model = dealer.entity form.instance.depth = 0 return super().form_valid(form) def get_form_kwargs(self): - """ - Override this method to pass additional keyword arguments to the form. - """ - entity = self.request.user.dealer.entity + dealer = get_user_type(self.request) + entity = dealer.entity kwargs = super().get_form_kwargs() kwargs["coa_model"] = entity.get_default_coa() @@ -1833,6 +1832,28 @@ class AccountDetailView(LoginRequiredMixin, DetailView): model = AccountModel template_name = "ledger/coa_accounts/account_detail.html" context_object_name = "account" + slug_field = 'uuid' + DEFAULT_TXS_DAYS = 30 + extra_context = { + 'DEFAULT_TXS_DAYS': DEFAULT_TXS_DAYS, + 'header_subtitle_icon': 'ic:round-account-tree' + } + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + account_model: AccountModel = context['object'] + context['header_title'] = f'Account {account_model.code} - {account_model.name}' + context['page_title'] = f'Account {account_model.code} - {account_model.name}' + txs_qs = account_model.transactionmodel_set.all().posted().order_by( + 'journal_entry__timestamp' + ).select_related( + 'journal_entry', + 'journal_entry__entity_unit', + 'journal_entry__ledger__billmodel', + 'journal_entry__ledger__invoicemodel', + ) + + return context class AccountUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): @@ -1862,7 +1883,8 @@ class EstimateListView(LoginRequiredMixin, ListView): context_object_name = "estimates" def get_queryset(self): - entity = self.request.user.dealer.entity + dealer = get_user_type(self.request) + entity = dealer.entity return entity.get_estimates() @@ -2160,7 +2182,7 @@ class DraftInvoiceModelUpdateFormView(LoginRequiredMixin, UpdateView): def get_form_kwargs(self): kwargs = super().get_form_kwargs() - dealer = get_user_type(self.request.user.dealer) + dealer = get_user_type(self.request) kwargs["entity_slug"] = dealer.entity kwargs["user_model"] = dealer.entity.admin return kwargs @@ -2174,7 +2196,7 @@ class ApprovedInvoiceModelUpdateFormView(LoginRequiredMixin, UpdateView): def get_form_kwargs(self): kwargs = super().get_form_kwargs() - dealer = get_user_type(self.request.user.dealer) + dealer = get_user_type(self.request) kwargs["entity_slug"] = dealer.entity kwargs["user_model"] = dealer.entity.admin return kwargs @@ -2191,7 +2213,7 @@ class PaidInvoiceModelUpdateFormView(LoginRequiredMixin, UpdateView): def get_form_kwargs(self): kwargs = super().get_form_kwargs() - dealer = get_user_type(self.request.user.dealer) + dealer = get_user_type(self.request) kwargs["entity_slug"] = dealer.entity kwargs["user_model"] = dealer.entity.admin return kwargs @@ -2240,7 +2262,8 @@ def invoice_mark_as(request, pk): def invoice_create(request, pk): estimate = get_object_or_404(EstimateModel, pk=pk) - entity = request.user.dealer.entity + dealer = get_user_type(request) + entity = dealer.entity form = InvoiceModelCreateForm(entity_slug=entity.slug, user_model=entity.admin) if request.method == "POST": @@ -2323,7 +2346,8 @@ class InvoicePreviewView(LoginRequiredMixin, DetailView): def PaymentCreateView(request, pk=None): invoice = InvoiceModel.objects.filter(pk=pk).first() - entity = request.user.dealer.entity + dealer = get_user_type(request) + entity = dealer.entity form = forms.PaymentForm() if request.method == "POST": form = forms.PaymentForm(request.POST) @@ -2658,14 +2682,14 @@ class ItemExpenseCreateView(CreateView): success_url = reverse_lazy("item_expense_list") def get_form_kwargs(self): - dealer = get_user_type(self.request.user.dealer) + dealer = get_user_type(self.request) kwargs = super().get_form_kwargs() kwargs["entity_slug"] = dealer.entity.slug kwargs["user_model"] = dealer.entity.admin return kwargs def form_valid(self, form): - dealer = get_user_type(self.request.user.dealer) + dealer = get_user_type(self.request) form.instance.entity = dealer.entity return super().form_valid(form) @@ -2677,14 +2701,14 @@ class ItemExpenseUpdateView(UpdateView): success_url = reverse_lazy("item_expense_list") def get_form_kwargs(self): - dealer = get_user_type(self.request.user.dealer) + dealer = get_user_type(self.request) kwargs = super().get_form_kwargs() kwargs["entity_slug"] = dealer.entity.slug kwargs["user_model"] = dealer.entity.admin return kwargs def form_valid(self, form): - dealer = get_user_type(self.request.user.dealer) + dealer = get_user_type(self.request) form.instance.entity = dealer.entity return super().form_valid(form) diff --git a/templates/inventory/car_form.html b/templates/inventory/car_form.html index 609a647a..2dbaf02e 100644 --- a/templates/inventory/car_form.html +++ b/templates/inventory/car_form.html @@ -346,7 +346,7 @@ } document.addEventListener("DOMContentLoaded", function () { - const csrfToken = getCookie("token"); + const csrfToken = getCookie("csrftoken"); const vinInput = document.getElementById("{{ form.vin.id_for_label }}"); const decodeVinBtn = document.getElementById("decodeVinBtn"); diff --git a/templates/inventory/inventory_stats.html b/templates/inventory/inventory_stats.html index 650032bf..b7d98f06 100644 --- a/templates/inventory/inventory_stats.html +++ b/templates/inventory/inventory_stats.html @@ -12,9 +12,9 @@

{{ inventory.total_cars }}

{% trans "Total Cars in Inventory" %}

-
-

1,866

-

Emails Sent

+
+

2

+

{{ _("Reserved")}}

1,366

diff --git a/templates/ledger/coa_accounts/account_detail.html b/templates/ledger/coa_accounts/account_detail.html index 8ba5814c..48674f76 100644 --- a/templates/ledger/coa_accounts/account_detail.html +++ b/templates/ledger/coa_accounts/account_detail.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% load i18n %} -{% block title %}{{ _("View Account") }}{% endblock title %} +{% block title %}{{ page_title }}{% endblock title %} {% block content %} @@ -40,8 +40,8 @@
-
-

{{ _("Bank Account Details") }}

+
+

{{ header_title|upper }}

@@ -54,6 +54,66 @@

{{ _("Active") }}: {{ account.active }}

+
+
+ + + + + + + + + + + {% for tx in transactions %} + + + + + + + + + + {% endfor %} + + + + + + + + + +
{{ _("JE Number")}}{{ _("Date") }}{{ _("Debit") }}{{ _("Credit") }}{{ _("Description") }}{{ _("Unit") }}{{ _("Actions") }}
{{ tx.journal_entry.je_number }}{{ tx.journal_entry.timestamp }}{% if tx.tx_type == 'debit' %}${{ tx.amount }}{% endif %}{% if tx.tx_type == 'credit' %}${{ tx.amount }}{% endif %}{{ tx.description }}{{ tx.journal_entry.entity_unit.name }} + +
Total${{ total_credits }}${{ total_debits }}
+
+
- {{ account.name }} - {{ account.code }} - + {{ account.name }} + {{ account.code }} + {% if account.balance_type == 'debit' %}
{{ _("Debit") }}
@@ -101,16 +101,18 @@
{{ _("Credit") }}
{% endif %} - {% if account.is_active %} - + + {% if account.active %} + {% else %} - + {% endif %} +
- {% if is_paginated %} - +{% include 'partials/pagination.html' %} {% endif %}
{% endblock %} \ No newline at end of file