diff --git a/inventory/models.py b/inventory/models.py index 33c4b206..87330e1b 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -886,11 +886,11 @@ class Car(Base): @property def get_additional_services_vat(self): vat = VatRate.objects.filter(dealer=self.dealer,is_active=True).first() - return sum([Decimal((x.price)*(vat.rate)) for x in self.additional_services.all()]) + return sum([Decimal((x.price)*(vat.rate)) for x in self.additional_services.filter(taxable=True)]) def get_additional_services(self): vat = VatRate.objects.filter(dealer=self.dealer,is_active=True).first() - return {"services": [[x,(x.price)*(vat.rate)] for x in self.additional_services.all()], + return {"services": [[x,((x.price)*(vat.rate) if x.taxable else 0)] for x in self.additional_services.all()], "total_":self.get_additional_services_amount_, "total":self.get_additional_services_amount, "services_vat":self.get_additional_services_vat} diff --git a/inventory/utils.py b/inventory/utils.py index 687ffaf5..cabfb161 100644 --- a/inventory/utils.py +++ b/inventory/utils.py @@ -1306,7 +1306,7 @@ def get_finance_data(estimate,dealer): additional_services = car.get_additional_services() discounted_price=(Decimal(car.marked_price) - discount) vat_amount = discounted_price * vat.rate - total_services_vat=sum([ x[1] for x in additional_services.get("services")]) + total_services_vat=sum([x[1] for x in additional_services.get("services")]) total_vat=vat_amount+total_services_vat return { "car": car, @@ -1316,7 +1316,7 @@ def get_finance_data(estimate,dealer): "vat_rate": vat.rate, "discount_amount": discount, "additional_services": additional_services, - "final_price": discounted_price+ vat_amount, + "final_price": discounted_price + vat_amount, "total_services_vat":total_services_vat, "total_vat":total_vat, "grand_total": discounted_price + total_vat + additional_services.get("total") @@ -2417,9 +2417,9 @@ def force_regenerate_car_image(car): class CarImageAPIClient: """Simple client to handle authenticated requests to the car image API""" - BASE_URL = "http://127.0.0.1:8888" - USERNAME = "ismail.mosa.ibrahim@gmail.com" - PASSWORD = "Supremk4!" + BASE_URL = "http://10.10.1.111:8888" + USERNAME = "faheed" + PASSWORD = "Tenhal@123" def __init__(self): self.session = None diff --git a/inventory/views.py b/inventory/views.py index 3808cddc..294fda00 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -4979,6 +4979,7 @@ def create_estimate(request, dealer_slug, slug=None): .annotate(hash_count=Count("hash")) .distinct() ) + context = { "form": form, "items": [ @@ -6328,6 +6329,7 @@ def lead_create(request, dealer_slug): qs = form.fields["id_car_make"].queryset.filter( is_sa_import=True, pk__in=dealer_make_list ) + # print(qs) form.fields["staff"].queryset = ( form.fields["staff"] .queryset.select_related("user") @@ -6346,10 +6348,12 @@ def lead_create(request, dealer_slug): form.fields["staff"].queryset = models.Staff.objects.filter( dealer=dealer, pk=request.staff.pk ) + qs = qs.order_by("name") form.fields["id_car_make"].queryset = qs form.fields["id_car_make"].choices = [ (obj.id_car_make, obj.get_local_name()) for obj in qs - ] + ] + if first_make := qs.first(): form.fields["id_car_model"].queryset = first_make.carmodel_set.all() @@ -8435,7 +8439,7 @@ class FiscalYearIncomeStatementViewBase( """ template_name = "ledger/reports/income_statement.html" - permission_required = ["inventory.view_carfinance"] + permission_required = ["django_ledger.view_ledgermodel"] def get_login_url(self): return reverse("account_login") @@ -8574,7 +8578,7 @@ class FiscalYearCashFlowStatementViewBase( """ template_name = "ledger/reports/cash_flow_statement.html" - permission_required = ["inventory.view_carfinance"] + permission_required = ["django_ledger.view_ledgermodel"] def get_login_url(self): return reverse("account_login") @@ -8763,7 +8767,7 @@ class FiscalYearEntityModelDashboardView( :type permission_required: list """ - permission_required = ["inventory.view_carfinance"] + permission_required = ["django_ledger.view_ledgermodel"] def get_login_url(self): return reverse("account_login") @@ -11433,6 +11437,10 @@ def create_ticket(request,dealer_slug): def ticket_list(request,dealer_slug): dealer= get_object_or_404(models.Dealer, slug=dealer_slug) tickets = models.Ticket.objects.filter(dealer=dealer).order_by('-created_at') + query=request.GET.get('q') + if query: + tickets=tickets.filter(Q(id__icontains=query)| Q(subject__icontains=query)) + return render(request, 'support/ticket_list.html', {'tickets': tickets}) @login_required diff --git a/static/images/car_images/009e22d9248cbe248ebdeec5a9eca611685a010e7231b9d8ff3eed7ef69578c1.png b/static/images/car_images/009e22d9248cbe248ebdeec5a9eca611685a010e7231b9d8ff3eed7ef69578c1.png new file mode 100644 index 00000000..91612667 Binary files /dev/null and b/static/images/car_images/009e22d9248cbe248ebdeec5a9eca611685a010e7231b9d8ff3eed7ef69578c1.png differ diff --git a/static/images/car_images/26ed2a3da637ef1d2311b7d9669ac114e6fb0e3bb6a95ca869ddfbef25d276a8.png b/static/images/car_images/26ed2a3da637ef1d2311b7d9669ac114e6fb0e3bb6a95ca869ddfbef25d276a8.png new file mode 100644 index 00000000..f2027520 Binary files /dev/null and b/static/images/car_images/26ed2a3da637ef1d2311b7d9669ac114e6fb0e3bb6a95ca869ddfbef25d276a8.png differ diff --git a/static/images/car_images/48ddd3296f1d67086048962de55ac90c1d9947366a18043174310b159a0ccdda.png b/static/images/car_images/48ddd3296f1d67086048962de55ac90c1d9947366a18043174310b159a0ccdda.png new file mode 100644 index 00000000..19f4ce00 Binary files /dev/null and b/static/images/car_images/48ddd3296f1d67086048962de55ac90c1d9947366a18043174310b159a0ccdda.png differ diff --git a/static/images/car_images/534ccd6b97e583b70543209caaf576527c919392e734930c122e85abacbd0342.png b/static/images/car_images/534ccd6b97e583b70543209caaf576527c919392e734930c122e85abacbd0342.png new file mode 100644 index 00000000..71b7ad54 Binary files /dev/null and b/static/images/car_images/534ccd6b97e583b70543209caaf576527c919392e734930c122e85abacbd0342.png differ diff --git a/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5.png b/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5.png new file mode 100644 index 00000000..775fce04 Binary files /dev/null and b/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5.png differ diff --git a/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5_8INzwoS.png b/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5_8INzwoS.png new file mode 100644 index 00000000..1dca9f3b Binary files /dev/null and b/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5_8INzwoS.png differ diff --git a/static/images/logos/users/Gemini_Generated_Image_wf3w0uwf3w0uwf3w_pGlJONy.png b/static/images/logos/users/Gemini_Generated_Image_wf3w0uwf3w0uwf3w_pGlJONy.png new file mode 100644 index 00000000..0b4f99a9 Binary files /dev/null and b/static/images/logos/users/Gemini_Generated_Image_wf3w0uwf3w0uwf3w_pGlJONy.png differ diff --git a/templates/account/user_settings.html b/templates/account/user_settings.html index 2ca24266..0700d665 100644 --- a/templates/account/user_settings.html +++ b/templates/account/user_settings.html @@ -3,52 +3,45 @@ {% load i18n static %} {% load allauth account %} {% block title %} - {% trans 'User Settings' %} + {% trans 'Dealer Settings' %} {% endblock %} {% block content %} - - -