From a09ef862488f1f431c059d0e70848f4093905fb9 Mon Sep 17 00:00:00 2001 From: ismail Date: Thu, 18 Sep 2025 16:31:20 +0300 Subject: [PATCH] update the default bill account settings --- inventory/views.py | 73 ++++++++++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/inventory/views.py b/inventory/views.py index 99532ed3..bc801b06 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -4218,7 +4218,7 @@ class BankAccountCreateView( def get_form(self, form_class=None): dealer = get_object_or_404(models.Dealer, slug=self.kwargs["dealer_slug"]) form = super().get_form(form_class) - account_qs = dealer.entity.get_get_default_coa_accounts().filter( + account_qs = dealer.entity.get_default_coa_accounts().filter( role__in=[ roles.ASSET_CA_CASH, roles.LIABILITY_CL_ACC_PAYABLE, @@ -5122,9 +5122,9 @@ class EstimatePrintView(EstimateDetailView): It reuses the data-fetching logic from EstimateDetailView but uses a dedicated, stripped-down print template. """ - - + + def get(self, request, *args, **kwargs): self.object = self.get_object() @@ -5132,20 +5132,20 @@ class EstimatePrintView(EstimateDetailView): # lang = request.GET.get('lang', 'ar') - - + + if request.GET.get('lang')=='en': - template_path = "sales/estimates/estimate_preview_en.html" + template_path = "sales/estimates/estimate_preview_en.html" else: template_path = "sales/estimates/estimate_preview_ar.html" - - + + html_string = render_to_string(template_path, context) - + base_url = request.build_absolute_uri('/') pdf_file = HTML(string=html_string, base_url=base_url).write_pdf() - - + + response = HttpResponse(pdf_file, content_type='application/pdf') response['Content-Disposition'] = f'attachment; filename="estimate_{self.object.estimate_number}.pdf"' @@ -5891,32 +5891,32 @@ class InvoicePreviewView(LoginRequiredMixin, PermissionRequiredMixin, DetailView kwargs["customer_obj"]=invoice.customer.customer_set.first() return super().get_context_data(**kwargs) def get(self, request, *args, **kwargs): - + self.object = self.get_object() context = self.get_context_data(object=self.object) - - + + # lang = request.GET.get('lang', 'ar') - - + + if request.GET.get('lang')=='en': - template_path = "sales/invoices/invoice_preview_en.html" + template_path = "sales/invoices/invoice_preview_en.html" elif request.GET.get('lang')=='ar': template_path = "sales/invoices/invoice_preview_ar.html" else: # just for preview not for download return render(request,'sales/invoices/invoice_preview.html',context) - - + + html_string = render_to_string(template_path, context) - + base_url = request.build_absolute_uri('/') pdf_file = HTML(string=html_string, base_url=base_url).write_pdf() - - + + response = HttpResponse(pdf_file, content_type='application/pdf') response['Content-Disposition'] = f'attachment; filename="invoice_{self.object.invoice_number}.pdf"' - + return response @@ -8177,8 +8177,13 @@ class BillModelCreateView(LoginRequiredMixin, PermissionRequiredMixin,SuccessMes return {"date_draft": get_localdate()} def get_form(self, form_class=None): + # form = super().get_form(form_class) dealer = get_object_or_404(models.Dealer, slug=self.kwargs["dealer_slug"]) - return BillModelCreateForm(entity_model=dealer.entity, **self.get_form_kwargs()) + form = BillModelCreateForm(entity_model=dealer.entity, **self.get_form_kwargs()) + form.initial['prepaid_account'] = models.DealerSettings.objects.filter(dealer=dealer).first().bill_prepaid_account or None + form.initial['unearned_account'] = models.DealerSettings.objects.filter(dealer=dealer).first().bill_unearned_account or None + form.initial['cash_account'] = models.DealerSettings.objects.filter(dealer=dealer).first().bill_cash_account or None + return form def form_valid(self, form): dealer = get_object_or_404(models.Dealer, slug=self.kwargs["dealer_slug"]) @@ -8281,7 +8286,19 @@ class BillModelCreateView(LoginRequiredMixin, PermissionRequiredMixin,SuccessMes "bill_pk": bill_model.uuid, }, ) - + def get_queryset(self): + qs = super().get_queryset() + return qs.select_related( + "ledger", + "ledger__entity", + "vendor", + "cash_account", + "prepaid_account", + "unearned_account", + "cash_account__coa_model", + "prepaid_account__coa_model", + "unearned_account__coa_model", + ) class BillModelDetailView(BillModelDetailViewBase): template_name = "bill/bill_detail.html" @@ -11086,11 +11103,11 @@ class PurchaseOrderDetailView(LoginRequiredMixin, PermissionRequiredMixin, Detai "purchase_orders/po_detail_ar_pdf.html", context ) - - + + base_url = request.build_absolute_uri('/') pdf = HTML(string=html_string, base_url=base_url).write_pdf() - + response = HttpResponse(pdf, content_type="application/pdf") response["Content-Disposition"] = f'attachment; filename="PO_{self.object.po_number}.pdf"' return response