diff --git a/inventory/models.py b/inventory/models.py index 1408803e..0a2a7829 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -782,7 +782,6 @@ class Car(Base): "remarks": self.remarks, "mileage": self.mileage, "receiving_date": self.receiving_date.strftime("%Y-%m-%d %H:%M:%S"), - "sold_date":self.sold_date.strftime("%Y-%m-%d %H:%M:%S"), "hash": self.get_hash, "id": str(self.id), } @@ -3325,13 +3324,17 @@ class ExtraInfo(models.Model): related_object_id=staff.pk, ) # qs = qs.select_related("customer","estimate","invoice") - return [ - x.content_object.sale_orders.select_related( - "customer", "estimate", "invoice" - ).first() - for x in qs - if x.content_object.sale_orders.first() - ] + data = SaleOrder.objects.filter(pk__in=[x.content_object.sale_orders.select_related("customer","estimate","invoice").first().pk for x in qs if x.content_object.sale_orders.first()]) + + return data + + # return [ + # x.content_object.sale_orders.select_related( + # "customer", "estimate", "invoice" + # ).first() + # for x in qs + # if x.content_object.sale_orders.first() + # ] @classmethod def get_invoices(cls, staff=None, is_dealer=False): diff --git a/inventory/utils.py b/inventory/utils.py index 5d4b8c00..3209c529 100644 --- a/inventory/utils.py +++ b/inventory/utils.py @@ -27,9 +27,7 @@ from django_ledger.models.transactions import TransactionModel from django_ledger.models.journal_entry import JournalEntryModel import logging - -logger = logging.getLogger(__name__) - +logger=logging.getLogger(__name__) def make_random_password( length=10, allowed_chars="abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789" @@ -65,12 +63,15 @@ def get_jwt_token(): try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() - # logging for success + #logging for success logger.info("Successfully fetched JWT token.") return response.text except requests.exceptions.RequestException as e: - # logging for error - logger.error(f"HTTP error fetching JWT token from {url}: ", exc_info=True) + #logging for error + logger.error( + f"HTTP error fetching JWT token from {url}: ", + exc_info=True + ) print(f"Error obtaining JWT token: {e}") return None @@ -158,7 +159,7 @@ def send_email(from_, to_, subject, message): message = message from_email = from_ recipient_list = [to_] - async_task(send_mail, subject, message, from_email, recipient_list) + async_task(send_mail,subject, message, from_email, recipient_list) def get_user_type(request): @@ -224,7 +225,7 @@ def reserve_car(car, request): ) car.status = models.CarStatusChoices.RESERVED car.save() - # --- Logging for Success --- + # --- Logging for Success --- logger.info( f"Car {car.pk} ('{car.id_car_make} {car.id_car_model}') reserved successfully " f"by user {request.user}. " @@ -238,7 +239,7 @@ def reserve_car(car, request): f"Error reserving car {car.pk} ('{car.id_car_make} {car.id_car_model}') " f"for user {request.user} . " f"Error: {e}", - exc_info=True, + exc_info=True ) messages.error(request, f"Error reserving car: {e}") @@ -1001,14 +1002,10 @@ class CarFinanceCalculator: self.vat_rate = self._get_vat_rate() self.item_transactions = self._get_item_transactions() self.additional_services = self._get_additional_services() - self.extra_info = models.ExtraInfo.objects.get( - dealer=self.dealer, - content_type=ContentType.objects.get_for_model(model), - object_id=model.pk, - ) + self.extra_info = models.ExtraInfo.objects.get(dealer=self.dealer,content_type=ContentType.objects.get_for_model(model),object_id=model.pk) def _get_vat_rate(self): - vat = models.VatRate.objects.filter(dealer=self.dealer, is_active=True).first() + vat = models.VatRate.objects.filter(dealer=self.dealer,is_active=True).first() if not vat: raise ObjectDoesNotExist("No active VAT rate found") return vat.rate @@ -1076,7 +1073,7 @@ class CarFinanceCalculator: Decimal(x.get("price_")) for x in self._get_additional_services() ) - total_discount = self.extra_info.data.get("discount", 0) + total_discount = self.extra_info.data.get("discount",0) # total_discount = sum( # Decimal( @@ -1296,11 +1293,12 @@ def handle_account_process(invoice, amount, finance_data): logger.debug(f"Set item_model.for_inventory to False for car {car.vin}.") except Exception as e: logger.error( - f"Error updating item_model.for_inventory for car {car.vin} (Invoice {invoice.invoice_number}): {e}", - exc_info=True, - ) + f"Error updating item_model.for_inventory for car {car.vin} (Invoice {invoice.invoice_number}): {e}", + exc_info=True + ) - car.finances.is_sold = True + + # car.finances.is_sold = True car.finances.save() car.item_model.save() @@ -1374,7 +1372,6 @@ def create_make_accounts(dealer): active=True, ) - def handle_payment(request, order): url = "https://api.moyasar.com/v1/payments" callback_url = request.build_absolute_uri( diff --git a/inventory/views.py b/inventory/views.py index 877b86b2..4ed115d4 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -4337,17 +4337,16 @@ def sales_list_view(request, dealer_slug): qs = models.ExtraInfo.get_sale_orders(staff=staff) except Exception as e: print(e) - print(qs[0]) - # query = request.GET.get('q') - # # if query: - # # qs = qs.filter( - # # Q(order_number__icontains=query) | - # # Q(customer__name__icontains=query) | - # # Q(item_details__icontains=query) - - # # ).distinct() - # for so in qs: - # if query in so.customer_customer + query = request.GET.get('q','').strip() + if query: + qs = qs.filter( + Q(customer__first_name__icontains=query)| + Q(customer__last_name__icontains=query)| + Q(customer__address__icontains=query)| + Q(customer__phone_number__icontains=query)| + Q(estimate__estimate_number__icontains=query)| + Q(invoice__invoice_number__icontains=query)).distinct() + paginator = Paginator(qs, 30) page_number = request.GET.get("page") @@ -4453,15 +4452,19 @@ class EstimateListView(LoginRequiredMixin, PermissionRequiredMixin, ListView): entity = dealer.entity status = self.request.GET.get("status") queryset = entity.get_estimates() + type(queryset) if status: queryset = queryset.filter(status=status) - # search_query = self.request.GET.get('q', '').strip() - # if search_query: - # queryset = queryset.filter( - # Q(quotation_number__icontains=search_query) | - # Q(customer__name__icontains=search_query) + for f in queryset.first()._meta.get_fields(): + print(f) + search_query = self.request.GET.get('q', '').strip() + print(search_query) + if search_query: + print("inside") + queryset = queryset.filter( + Q(estimate_number__icontains=search_query) - # ).distinct() # + ).distinct() return queryset diff --git a/templates/ledger/coa_accounts/account_form.html b/templates/ledger/coa_accounts/account_form.html index 631afa47..0e838d1b 100644 --- a/templates/ledger/coa_accounts/account_form.html +++ b/templates/ledger/coa_accounts/account_form.html @@ -22,7 +22,7 @@ {{ _("Edit Account") }} {% else %} - {{ _("Add Account") }} + {{ _("Add Account") }} {% endif %} diff --git a/templates/sales/sales_list.html b/templates/sales/sales_list.html index 96ed8900..23f2da09 100644 --- a/templates/sales/sales_list.html +++ b/templates/sales/sales_list.html @@ -37,7 +37,7 @@ {% for tx in txs %} -

{{tx}}

+

{{tx.customer.first_name}} {{tx.customer.last_name}}

{{tx.customer.address}}