fix some stuff

This commit is contained in:
ismail 2025-07-02 14:53:31 +03:00
parent b22ef36524
commit a7d09e60e3
4 changed files with 36 additions and 18 deletions

View File

@ -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}.
<a href="{reverse('estimate_detail',kwargs={'dealer_slug':instance.dealer.slug,'pk':instance.pk})}" target="_blank">View</a>
<a href="{reverse('estimate_detail',kwargs={'dealer_slug':instance.dealer.slug,'pk':instance.estimate.pk})}" target="_blank">View</a>
""",
)
@receiver(post_save, sender=models.Lead)

View File

@ -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"),

View File

@ -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

View File

@ -76,14 +76,16 @@
</div>
<div class="d-flex align-items-center gap-2">
{% if estimate.status == 'draft' %}
<a href="{% url 'send_email' request.dealer.slug estimate.pk %}" class="btn btn-phoenix-primary me-2"><span class="fa-regular fa-paper-plane me-sm-2"></span><span class="d-none d-sm-inline-block">{% trans 'Send Quotation' %}</span></a>
<button id="mark_as_sent_estimate" class="btn btn-phoenix-secondary" onclick="setFormAction('review')" data-bs-toggle="modal" data-bs-target="#confirmModal"><span class="d-none d-sm-inline-block"><i class="fa-solid fa-check-double"></i> {% trans 'Mark As Sent' %}</span></button>
{% elif estimate.status == 'in_review' %}
{% if perms.django_ledger.can_approve_estimatemodel %}
<button id="accept_estimate" onclick="setFormAction('approved')" class="btn btn-phoenix-secondary" data-bs-toggle="modal" data-bs-target="#confirmModal"><span class="d-none d-sm-inline-block"><i class="fa-solid fa-check-double"></i> {% trans 'Mark As Accept' %}</span></button>
{% endif %}
{% if estimate.status == 'draft' %}
{% if perms.django_ledger.change_estimatemodel %}
<button id="mark_as_sent_estimate" class="btn btn-phoenix-secondary" onclick="setFormAction('review')" data-bs-toggle="modal" data-bs-target="#confirmModal"><span class="d-none d-sm-inline-block"><i class="fa-solid fa-check-double"></i> {% trans 'Mark As Review' %}</span></button>
{% endif %}
{% elif estimate.status == 'in_review' %}
{% if perms.django_ledger.can_approve_estimatemodel %}
<button id="accept_estimate" onclick="setFormAction('approved')" class="btn btn-phoenix-secondary" data-bs-toggle="modal" data-bs-target="#confirmModal"><span class="d-none d-sm-inline-block"><i class="fa-solid fa-check-double"></i> {% trans 'Mark As Accept' %}</span></button>
{% endif %}
{% elif estimate.status == 'approved' %}
<a href="{% url 'send_email' request.dealer.slug estimate.pk %}" class="btn btn-phoenix-primary me-2"><span class="fa-regular fa-paper-plane me-sm-2"></span><span class="d-none d-sm-inline-block">{% trans 'Send Quotation' %}</span></a>
{% if estimate.sale_orders.first %}
<!--if sale order exist-->
@ -99,9 +101,9 @@
{% elif estimate.status == 'completed' %}
<a href="{% url 'order_detail' request.dealer.slug estimate.sale_orders.first.pk %}" class="btn btn-phoenix-primary"><span class="d-none d-sm-inline-block">{{ _("Preview Sale Order") }}</span></a>
<a href="{% url 'invoice_detail' request.dealer.slug estimate.invoicemodel_set.first.pk %}" class="btn btn-phoenix-primary btn-sm" type="button"><i class="fa-solid fa-receipt"></i>
{{ _("View Invoice")}}</a>
<a href="{% url 'order_detail' request.dealer.slug estimate.sale_orders.first.pk %}" class="btn btn-phoenix-primary"><span class="d-none d-sm-inline-block">{{ _("Preview Sale Order") }}</span></a>
<a href="{% url 'invoice_detail' request.dealer.slug estimate.invoicemodel_set.first.pk %}" class="btn btn-phoenix-primary btn-sm" type="button"><i class="fa-solid fa-receipt"></i>
{{ _("View Invoice")}}</a>
{% endif %}
{% if estimate.can_cancel %}