diff --git a/inventory/signals.py b/inventory/signals.py index 01a46e49..a2fd44e8 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -971,7 +971,7 @@ def sale_order_created_notification(sender, instance, created, **kwargs): user=recipient, message=f""" New Sale Order has been added for estimate:{instance.estimate}. - View + View """, ) @receiver(post_save, sender=models.Lead) diff --git a/inventory/utils.py b/inventory/utils.py index 5790f2f4..7f9f64e7 100644 --- a/inventory/utils.py +++ b/inventory/utils.py @@ -1005,6 +1005,7 @@ class CarFinanceCalculator: car_finance = self._get_nested_value(item, self.CAR_FINANCE_KEY) car_info = self._get_nested_value(item, self.CAR_INFO_KEY) unit_price = Decimal(car_finance.get("selling_price", 0)) + print(item.item_model.car.finances) return { "item_number": item.item_model.item_number, "vin": car_info.get("vin"), diff --git a/inventory/views.py b/inventory/views.py index 50eb1f48..3275f7a5 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -27,7 +27,7 @@ from django.views.decorators.http import require_http_methods from django.db.models.deletion import RestrictedError from django.http.response import StreamingHttpResponse from django.core.exceptions import ImproperlyConfigured, ValidationError - +from django.core.exceptions import PermissionDenied # Django from django.db.models import Q from django.conf import settings @@ -3636,7 +3636,7 @@ class BankAccountListView(LoginRequiredMixin, PermissionRequiredMixin, ListView) template_name = "ledger/bank_accounts/bank_account_list.html" context_object_name = "bank_accounts" paginate_by = 30 - permission_required = ["inventory.view_carfinance"] + permission_required = ["django_ledger.view_bankaccountmodel"] def get_queryset(self): query = self.request.GET.get("q") @@ -4275,7 +4275,12 @@ def create_estimate(request, dealer_slug, slug=None): # } # ) car_instance = models.Car.objects.filter( - hash=item.get("item_id"), finances__is_sold=False + hash=item.get("item_id"), + finances__is_sold=False, + colors__isnull=False, + finances__isnull=False, + finances__selling_price__gt=1, + status="available", ).all() for i in car_instance[: int(quantities[0])]: @@ -4372,7 +4377,7 @@ def create_estimate(request, dealer_slug, slug=None): dealer=dealer, colors__isnull=False, finances__isnull=False, - finances__selling_price__gt=0, + finances__selling_price__gt=1, status="available", ) .annotate( @@ -4443,6 +4448,7 @@ class EstimateDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView if estimate.get_itemtxs_data(): calculator = CarFinanceCalculator(estimate) finance_data = calculator.get_finance_data() + print(finance_data) invoice_obj = InvoiceModel.objects.all().filter(ce_model=estimate).first() kwargs["data"] = finance_data kwargs["invoice"] = invoice_obj @@ -4643,7 +4649,6 @@ class EstimatePreviewView(LoginRequiredMixin, PermissionRequiredMixin, DetailVie @login_required -@permission_required("django_ledger.change_estimatemodel", raise_exception=True) def estimate_mark_as(request, dealer_slug, pk): """ Marks an estimate with a specified status based on the requested action and @@ -4660,6 +4665,11 @@ def estimate_mark_as(request, dealer_slug, pk): :return: A redirect response to the estimate detail view. :rtype: HttpResponseRedirect """ + if not ( + request.user.has_perm("django_ledger.can_approve_estimatemodel") or + request.user.has_perm("django_ledger.change_estimatemodel") + ): + raise PermissionDenied dealer = get_object_or_404(models.Dealer, slug=dealer_slug) estimate = get_object_or_404(EstimateModel, pk=pk) mark = request.GET.get("mark") @@ -4680,6 +4690,9 @@ def estimate_mark_as(request, dealer_slug, pk): ) estimate.mark_as_approved() messages.success(request, _("Quotation approved successfully")) + return redirect( + "estimate_list", dealer_slug=dealer.slug + ) elif mark == "rejected": if not estimate.can_cancel(): messages.error(request, _("Quotation is not ready for rejection")) @@ -5518,8 +5531,10 @@ def lead_create(request,dealer_slug): is_sa_import=True, pk__in=dealer_make_list ) form.fields["staff"].queryset = form.fields["staff"].queryset.filter( - dealer=dealer - ) + dealer=dealer,staff_member__user__groups__name__contains="Sales") + # form.fields["staff"].queryset = form.fields["staff"].queryset.filter( + # dealer=dealer + # ) if hasattr(request.user.staffmember, "staff"): form.initial["staff"] = request.user.staffmember.staff diff --git a/templates/sales/estimates/estimate_detail.html b/templates/sales/estimates/estimate_detail.html index 4a185a5f..bf5e894c 100644 --- a/templates/sales/estimates/estimate_detail.html +++ b/templates/sales/estimates/estimate_detail.html @@ -76,14 +76,16 @@