changes
This commit is contained in:
parent
28e051a061
commit
3608ee53d9
@ -29,16 +29,16 @@ class LogUserActivityMiddleware:
|
|||||||
return request.META.get('REMOTE_ADDR')
|
return request.META.get('REMOTE_ADDR')
|
||||||
|
|
||||||
|
|
||||||
class InjectParamsMiddleware:
|
# class InjectParamsMiddleware:
|
||||||
def __init__(self, get_response):
|
# def __init__(self, get_response):
|
||||||
self.get_response = get_response
|
# self.get_response = get_response
|
||||||
|
|
||||||
def __call__(self, request):
|
# def __call__(self, request):
|
||||||
try:
|
# try:
|
||||||
request.entity = request.user.dealer.entity
|
# request.entity = request.user.dealer.entity
|
||||||
except Exception as e:
|
# except Exception as e:
|
||||||
pass
|
# pass
|
||||||
|
|
||||||
response = self.get_response(request)
|
# response = self.get_response(request)
|
||||||
|
|
||||||
return response
|
# return response
|
||||||
@ -155,28 +155,6 @@ def create_ledger_entity(sender, instance, created, **kwargs):
|
|||||||
active=True,
|
active=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Inventory Account
|
|
||||||
asset_ca_inventory = entity.create_account(
|
|
||||||
coa_model=coa,
|
|
||||||
code="1106",
|
|
||||||
role=roles.ASSET_CA_INVENTORY,
|
|
||||||
name=_("Inventory"),
|
|
||||||
balance_type="debit",
|
|
||||||
active=True,
|
|
||||||
)
|
|
||||||
asset_ca_inventory.role_default = True
|
|
||||||
asset_ca_inventory.save()
|
|
||||||
|
|
||||||
# VAT Payable Account
|
|
||||||
liability_ltl_vat_receivable = entity.create_account(
|
|
||||||
coa_model=coa,
|
|
||||||
code="1107",
|
|
||||||
role=roles.ASSET_CA_RECEIVABLES,
|
|
||||||
name=_("VAT Receivable"),
|
|
||||||
balance_type="debit",
|
|
||||||
active=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Buildings Accumulated Depreciation Account
|
# Buildings Accumulated Depreciation Account
|
||||||
asset_ppe_buildings_accum_depreciation = entity.create_account(
|
asset_ppe_buildings_accum_depreciation = entity.create_account(
|
||||||
coa_model=coa,
|
coa_model=coa,
|
||||||
@ -251,7 +229,6 @@ def create_ledger_entity(sender, instance, created, **kwargs):
|
|||||||
asset_ppe_buildings.save()
|
asset_ppe_buildings.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Accounts Payable Account
|
# Accounts Payable Account
|
||||||
liability_cl_acc_payable = entity.create_account(
|
liability_cl_acc_payable = entity.create_account(
|
||||||
coa_model=coa,
|
coa_model=coa,
|
||||||
@ -336,7 +313,7 @@ def create_ledger_entity(sender, instance, created, **kwargs):
|
|||||||
# Mortgage Payable Account
|
# Mortgage Payable Account
|
||||||
liability_ltl_mortgage_payable = entity.create_account(
|
liability_ltl_mortgage_payable = entity.create_account(
|
||||||
coa_model=coa,
|
coa_model=coa,
|
||||||
code="2202",
|
code="2203",
|
||||||
role=roles.LIABILITY_LTL_MORTGAGE_PAYABLE,
|
role=roles.LIABILITY_LTL_MORTGAGE_PAYABLE,
|
||||||
name=_("Mortgage Payable"),
|
name=_("Mortgage Payable"),
|
||||||
balance_type="credit",
|
balance_type="credit",
|
||||||
|
|||||||
@ -2232,28 +2232,15 @@ class PaidInvoiceModelUpdateFormView(LoginRequiredMixin, UpdateView):
|
|||||||
@login_required
|
@login_required
|
||||||
def invoice_mark_as(request, pk):
|
def invoice_mark_as(request, pk):
|
||||||
invoice = get_object_or_404(InvoiceModel, pk=pk)
|
invoice = get_object_or_404(InvoiceModel, pk=pk)
|
||||||
entity = EntityModel.objects.first() # will change later
|
dealer = get_user_type(request)
|
||||||
user = entity.admin
|
|
||||||
mark = request.GET.get("mark")
|
mark = request.GET.get("mark")
|
||||||
if mark:
|
if mark and mark == "accept":
|
||||||
if mark == "accept":
|
if not invoice.can_approve():
|
||||||
if not invoice.can_approve():
|
messages.error(request, "invoice is not ready for approval")
|
||||||
messages.error(request, "invoice is not ready for approval")
|
|
||||||
return redirect("invoice_detail", pk=invoice.pk)
|
|
||||||
invoice.mark_as_approved(entity_slug=entity.slug, user_model=user)
|
|
||||||
# invoice.post_ledger()
|
|
||||||
invoice.save()
|
|
||||||
ledger = (
|
|
||||||
entity.get_ledgers().filter(name=f"Invoice {str(invoice.pk)}").first()
|
|
||||||
)
|
|
||||||
if not ledger:
|
|
||||||
ledger = entity.create_ledger(name=f"Invoice {str(invoice.pk)}")
|
|
||||||
ledger.invoicemodel = invoice
|
|
||||||
ledger.save()
|
|
||||||
# elif mark == "complete":
|
|
||||||
# if not invoice.can_complete():
|
|
||||||
# messages.error(request, "invoice is not ready for completion")
|
|
||||||
return redirect("invoice_detail", pk=invoice.pk)
|
return redirect("invoice_detail", pk=invoice.pk)
|
||||||
|
invoice.mark_as_approved(entity_slug=dealer.entity.slug, user_model=dealer.entity.admin)
|
||||||
|
invoice.save()
|
||||||
|
return redirect("invoice_detail", pk=invoice.pk)
|
||||||
|
|
||||||
|
|
||||||
def invoice_create(request, pk):
|
def invoice_create(request, pk):
|
||||||
@ -2280,7 +2267,7 @@ def invoice_create(request, pk):
|
|||||||
itemtxs.append(
|
itemtxs.append(
|
||||||
{
|
{
|
||||||
"item_number": item.item_model.item_number,
|
"item_number": item.item_model.item_number,
|
||||||
"unit_cost": car.finances.total_vat,
|
"unit_cost": car.finances.cost_price,
|
||||||
"unit_revenue": car.finances.total_vat,
|
"unit_revenue": car.finances.total_vat,
|
||||||
"quantity": item.ce_quantity,
|
"quantity": item.ce_quantity,
|
||||||
"total_amount": Decimal(car.finances.total_vat)
|
"total_amount": Decimal(car.finances.total_vat)
|
||||||
@ -2364,8 +2351,6 @@ def PaymentCreateView(request, pk=None):
|
|||||||
amount = form.cleaned_data.get("amount")
|
amount = form.cleaned_data.get("amount")
|
||||||
invoice = form.cleaned_data.get("invoice")
|
invoice = form.cleaned_data.get("invoice")
|
||||||
payment_method = form.cleaned_data.get("payment_method")
|
payment_method = form.cleaned_data.get("payment_method")
|
||||||
|
|
||||||
ledger = None
|
|
||||||
try:
|
try:
|
||||||
vat_amount = 0
|
vat_amount = 0
|
||||||
total_amount = 0
|
total_amount = 0
|
||||||
@ -2374,10 +2359,10 @@ def PaymentCreateView(request, pk=None):
|
|||||||
for x in invoice.get_itemtxs_data()[0].all():
|
for x in invoice.get_itemtxs_data()[0].all():
|
||||||
vat_amount += models.Car.objects.get(
|
vat_amount += models.Car.objects.get(
|
||||||
vin=x.item_model.name
|
vin=x.item_model.name
|
||||||
).finances.vat_amount
|
).finances.vat_amount * Decimal(x.quantity)
|
||||||
total_amount += models.Car.objects.get(
|
total_amount += models.Car.objects.get(
|
||||||
vin=x.item_model.name
|
vin=x.item_model.name
|
||||||
).finances.total_discount
|
).finances.total_discount * Decimal(x.quantity)
|
||||||
|
|
||||||
ledger = LedgerModel.objects.filter(
|
ledger = LedgerModel.objects.filter(
|
||||||
name=str(invoice.pk), entity=entity
|
name=str(invoice.pk), entity=entity
|
||||||
@ -2436,11 +2421,13 @@ def PaymentCreateView(request, pk=None):
|
|||||||
|
|
||||||
invoice.make_payment(amount)
|
invoice.make_payment(amount)
|
||||||
invoice.save()
|
invoice.save()
|
||||||
|
messages.success(request, "Payment created successfully!")
|
||||||
|
return redirect("invoice_detail", pk=invoice.pk)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
messages.error(request, f"Error creating payment: {str(e)}")
|
messages.error(request, f"Error creating payment: {str(e)}")
|
||||||
else:
|
else:
|
||||||
messages.error(request, f"Invalid form data: {str(form.errors)}")
|
messages.error(request, f"Invalid form data: {form.errors.as_text()}")
|
||||||
return redirect("invoice_detail", pk=invoice.pk)
|
|
||||||
form = forms.PaymentForm()
|
form = forms.PaymentForm()
|
||||||
form.initial["amount"] = invoice.amount_due
|
form.initial["amount"] = invoice.amount_due
|
||||||
|
|
||||||
|
|||||||
@ -203,7 +203,7 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{% url 'account_list' %}">
|
<a class="nav-link" href="{% url 'account_list' %}">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<span class="nav-link-icon"><span data-feather="users"></span></span><span class="nav-link-text">{% trans 'Accounts'|capfirst %}</span>
|
<span class="nav-link-icon"><span data-feather="users"></span></span><span class="nav-link-text">{% trans 'Chart of Accounts'|capfirst %}</span>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load i18n static %}
|
{% load i18n static %}
|
||||||
|
|
||||||
{% block title %}{{ _("Accounts") }}{% endblock title %}
|
{% block title %}{{ _("Chart of Accounts") }}{% endblock title %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row mt-4 mx-4">
|
<div class="row mt-4 mx-4">
|
||||||
<div class="d-flex justify-content-between mb-2 p-6">
|
<div class="d-flex justify-content-between mb-2 p-6">
|
||||||
<span></span>
|
<span></span>
|
||||||
<h3 class="text-center">{% trans "Accounts" %}</h3>
|
<h3 class="text-center">{% trans "Chart of Accounts" %}</h3>
|
||||||
<a href="{% url 'account_create' %}" class="btn btn-sm btn-success ">{% trans "Add Account" %}</a>
|
<a href="{% url 'account_create' %}" class="btn btn-sm btn-success ">{% trans "Add Account" %}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="mx-n4 px-4 mx-lg-n6 px-lg-6 bg-body-emphasis pt-7 border-y">
|
<div class="mx-n4 px-4 mx-lg-n6 px-lg-6 bg-body-emphasis pt-7 border-y">
|
||||||
|
|||||||
@ -14,9 +14,11 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Invoice Number" %}</th>
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Invoice Number" %}</th>
|
||||||
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Customer" %}</th>
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Customer" %}</th>
|
||||||
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Date" %}</th>
|
||||||
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Due Date" %}</th>
|
||||||
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Paid" %}</th>
|
||||||
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Due" %}</th>
|
||||||
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Status" %}</th>
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Status" %}</th>
|
||||||
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Status Date" %}</th>
|
|
||||||
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Created" %}</th>
|
|
||||||
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Actions" %}</th>
|
<th class="sort white-space-nowrap align-middle" scope="col">{% trans "Actions" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -25,6 +27,10 @@
|
|||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
<td class="align-middle product white-space-nowrap py-0">{{ invoice.invoice_number }}</td>
|
<td class="align-middle product white-space-nowrap py-0">{{ invoice.invoice_number }}</td>
|
||||||
<td class="align-middle product white-space-nowrap">{{ invoice.customer }}</td>
|
<td class="align-middle product white-space-nowrap">{{ invoice.customer }}</td>
|
||||||
|
<td class="align-middle product white-space-nowrap">{{ invoice.created }}</td>
|
||||||
|
<td class="align-middle product white-space-nowrap">{{ invoice.date_due }}</td>
|
||||||
|
<td class="align-middle product white-space-nowrap">{{ invoice.amount_paid }}</td>
|
||||||
|
<td class="align-middle product white-space-nowrap">{{ invoice.amount_due }}</td>
|
||||||
<td class="align-middle product white-space-nowrap text-success">
|
<td class="align-middle product white-space-nowrap text-success">
|
||||||
{% if invoice.is_past_due %}
|
{% if invoice.is_past_due %}
|
||||||
<span class="badge badge-phoenix badge-phoenix-danger">{% trans "Past Due" %}</span>
|
<span class="badge badge-phoenix badge-phoenix-danger">{% trans "Past Due" %}</span>
|
||||||
@ -40,20 +46,6 @@
|
|||||||
<span class="badge badge-phoenix badge-phoenix-success">{% trans "Paid" %}</span>
|
<span class="badge badge-phoenix badge-phoenix-success">{% trans "Paid" %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="align-middle product white-space-nowrap">
|
|
||||||
{% if invoice.invoice_status == "in_review" %}
|
|
||||||
{{ invoice.date_in_review }}
|
|
||||||
{% elif invoice.invoice_status == "approved" %}
|
|
||||||
{{ invoice.date_approved }}
|
|
||||||
{% elif invoice.invoice_status == "canceled" %}
|
|
||||||
{{ invoice.date_canceled }}
|
|
||||||
{% elif invoice.invoice_status == "draft" %}
|
|
||||||
{{ invoice.date_draft }}
|
|
||||||
{% elif invoice.invoice_status == "paid" %}
|
|
||||||
{{ invoice.date_paid }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td class="align-middle product white-space-nowrap">{{ invoice.created }}</td>
|
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a href="{% url 'invoice_detail' invoice.pk %}"
|
<a href="{% url 'invoice_detail' invoice.pk %}"
|
||||||
class="btn btn-sm btn-phoenix-success">
|
class="btn btn-sm btn-phoenix-success">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user