Merge branch 'main' of http://10.10.1.136:3000/ismail/haikal into frontend

This commit is contained in:
Faheed 2025-09-07 15:32:47 +03:00
commit 75f5874814
3 changed files with 25 additions and 24 deletions

View File

@ -21,8 +21,8 @@ def is_negative(value):
try: try:
return float(value) < 0 return float(value) < 0
except (ValueError, TypeError): except (ValueError, TypeError):
return False return False
@register.filter @register.filter
def get_percentage(value, total): def get_percentage(value, total):
try: try:
@ -498,7 +498,7 @@ def bill_item_formset_table(context, item_formset):
form.fields["item_model"].queryset = form.fields["item_model"].queryset.exclude( form.fields["item_model"].queryset = form.fields["item_model"].queryset.exclude(
item_role="product" item_role="product"
) )
for item in item_formset: for item in item_formset:
if item: if item:
print(item.fields["item_model"]) print(item.fields["item_model"])
item.initial["quantity"] = item.instance.po_quantity if item.instance.po_quantity else item.instance.quantity item.initial["quantity"] = item.instance.po_quantity if item.instance.po_quantity else item.instance.quantity
@ -710,3 +710,13 @@ def invoice_item_formset_table(context, itemtxs_formset):
"total_amount__sum": context["total_amount__sum"], "total_amount__sum": context["total_amount__sum"],
"itemtxs_formset": itemtxs_formset, "itemtxs_formset": itemtxs_formset,
} }
@register.filter
def filter_by_status(queryset, status):
if status == "active":
return queryset.filter(active=True)
elif status == "locked":
return queryset.filter(locked=True)
else:
return queryset

View File

@ -4360,7 +4360,7 @@ class AccountListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
def get_queryset(self): def get_queryset(self):
query = self.request.GET.get("q") query = self.request.GET.get("q")
dealer = get_user_type(self.request) dealer = get_user_type(self.request)
coa = ChartOfAccountModel.objects.get(entity=dealer.entity,pk=self.kwargs["coa_pk"]) or self.request.entity.get_default_coa() coa = ChartOfAccountModel.objects.get(entity=dealer.entity,pk=self.kwargs["coa_pk"]) or self.request.entity.get_default_coa()
accounts = coa.get_coa_accounts() accounts = coa.get_coa_accounts()
return apply_search_filters(accounts, query) return apply_search_filters(accounts, query)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -4411,18 +4411,8 @@ class AccountCreateView(
permission_required = ["django_ledger.add_accountmodel"] permission_required = ["django_ledger.add_accountmodel"]
def form_valid(self, form): def form_valid(self, form):
dealer = get_user_type(self.request) dealer = get_user_type(self.request)
instance = form.save(commit=False)
coa = ChartOfAccountModel.objects.get(entity=dealer.entity,pk=self.kwargs["coa_pk"]) or self.request.entity.get_default_coa() coa = ChartOfAccountModel.objects.get(entity=dealer.entity,pk=self.kwargs["coa_pk"]) or self.request.entity.get_default_coa()
# coa.insert_account(account_model=instance)
account = coa.entity.create_account(
coa_model=coa,
code=instance.code,
name=instance.name,
role=instance.role,
balance_type=_(instance.balance_type),
active=True,
)
form.instance.entity_model = dealer.entity form.instance.entity_model = dealer.entity
form.instance.coa_model = coa form.instance.coa_model = coa
form.instance.depth = 0 form.instance.depth = 0
@ -4450,13 +4440,13 @@ class AccountCreateView(
def get_context_data(self,**kwargs): def get_context_data(self,**kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context["url_kwargs"] = self.kwargs context["url_kwargs"] = self.kwargs
coa_pk = context["url_kwargs"]["coa_pk"] coa_pk = context["url_kwargs"]["coa_pk"]
try: try:
context["coa_model"] = ChartOfAccountModel.objects.get(entity=self.request.entity,pk=coa_pk) context["coa_model"] = ChartOfAccountModel.objects.get(entity=self.request.entity,pk=coa_pk)
except Exception: except Exception:
context["coa_model"] = self.request.entity.get_default_coa() context["coa_model"] = self.request.entity.get_default_coa()
return context return context
class AccountDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView): class AccountDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
""" """
Represents the detailed view for an account with additional context data related to account Represents the detailed view for an account with additional context data related to account
@ -4555,11 +4545,11 @@ class AccountUpdateView(
form.fields["_ref_node_id"].widget = HiddenInput() form.fields["_ref_node_id"].widget = HiddenInput()
form.fields["_position"].widget = HiddenInput() form.fields["_position"].widget = HiddenInput()
return form return form
def form_valid(self, form): def form_valid(self, form):
form.instance.coa_model = ChartOfAccountModel.objects.get(pk=self.kwargs['coa_pk']) or self.request.entity.get_default_coa() form.instance.coa_model = ChartOfAccountModel.objects.get(pk=self.kwargs['coa_pk']) or self.request.entity.get_default_coa()
return super().form_valid(form) return super().form_valid(form)
def get_success_url(self): def get_success_url(self):
return reverse_lazy( return reverse_lazy(
"account_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"],"coa_pk":self.kwargs["coa_pk"]} "account_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"],"coa_pk":self.kwargs["coa_pk"]}
@ -11454,7 +11444,7 @@ def staff_password_reset_view(request, dealer_slug, user_pk):
if request.method == 'POST': if request.method == 'POST':
form = forms.CustomSetPasswordForm(staff.user, request.POST) form = forms.CustomSetPasswordForm(staff.user, request.POST)
if form.is_valid(): if form.is_valid():
print(form.cleaned_data['new_password1']) print(form.cleaned_data['new_password1'])
print(form.cleaned_data['new_password2']) print(form.cleaned_data['new_password2'])
@ -11703,7 +11693,7 @@ def ticket_update(request, ticket_id):
# permission_required = 'django_ledger.view_chartofaccountmodel' # permission_required = 'django_ledger.view_chartofaccountmodel'
class ChartOfAccountModelCreateView(ChartOfAccountModelCreateViewBase): class ChartOfAccountModelCreateView(ChartOfAccountModelCreateViewBase):
template_name = 'chart_of_accounts/coa_create.html' template_name = 'chart_of_accounts/coa_create.html'
permission_required = 'django_ledger.add_chartofaccountmodel' permission_required = 'django_ledger.add_chartofaccountmodel'
class ChartOfAccountModelListView(ChartOfAccountModelListViewBase): class ChartOfAccountModelListView(ChartOfAccountModelListViewBase):
template_name = 'chart_of_accounts/coa_list.html' template_name = 'chart_of_accounts/coa_list.html'
permission_required = 'django_ledger.view_chartofaccountmodel' permission_required = 'django_ledger.view_chartofaccountmodel'

View File

@ -1,4 +1,5 @@
{% load django_ledger %} {% load django_ledger %}
{% load custom_filters %}
{% load i18n %} {% load i18n %}
{% now "Y" as current_year %} {% now "Y" as current_year %}
<div class="card shadow-sm border-0 mb-4"> <div class="card shadow-sm border-0 mb-4">
@ -47,15 +48,15 @@
<div class="col-sm-6"> <div class="col-sm-6">
<div class="mb-2"> <div class="mb-2">
<span class="fw-bold"><i class="fas fa-list-alt me-1"></i> {% trans 'Total Accounts' %}:</span> <span class="fw-bold"><i class="fas fa-list-alt me-1"></i> {% trans 'Total Accounts' %}:</span>
<span class="ms-2">{{ coa_model.accountmodel_total__count }}</span> <span class="ms-2">{{ coa_model.accountmodel_set.all|length }}</span>
</div> </div>
<div class="mb-2"> <div class="mb-2">
<span class="fw-bold text-info"><i class="fas fa-check-circle me-1"></i> {% trans 'Active Accounts' %}:</span> <span class="fw-bold text-info"><i class="fas fa-check-circle me-1"></i> {% trans 'Active Accounts' %}:</span>
<span class="ms-2">{{ coa_model.accountmodel_active__count }}</span> <span class="ms-2">{{ coa_model.accountmodel_set|filter_by_status:'active'|length }}</span>
</div> </div>
<div class="mb-2"> <div class="mb-2">
<span class="fw-bold text-danger"><i class="fas fa-lock me-1"></i> {% trans 'Locked Accounts' %}:</span> <span class="fw-bold text-danger"><i class="fas fa-lock me-1"></i> {% trans 'Locked Accounts' %}:</span>
<span class="ms-2">{{ coa_model.accountmodel_locked__count }}</span> <span class="ms-2">{{ coa_model.accountmodel_set|filter_by_status:'locked'|length }}</span>
</div> </div>
</div> </div>
</div> </div>