search for sales order list

This commit is contained in:
Faheedkhan 2025-07-22 15:00:50 +03:00
parent c4f5f7e8cb
commit 993ba46dbc
5 changed files with 51 additions and 48 deletions

View File

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

View File

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

View File

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

View File

@ -22,7 +22,7 @@
<i class="fa-solid fa-book"></i> {{ _("Edit Account") }}
{% else %}
<i class="fa-solid fa-book"></i> {{ _("Add Account") }}
<i class="fa-solid fa-book"></i> {{ _("Add Account") }}
{% endif %}
<i class="fa-solid fa-book ms-2 text-primary"></i>
</h3>

View File

@ -37,7 +37,7 @@
{% for tx in txs %}
<tr class="position-static">
<td class="align-middle white-space-nowrap customer_name px-1">
<p class="mb-0 fs-9 text-body">{{tx}}</p>
<p class="mb-0 fs-9 text-body">{{tx.customer.first_name}} {{tx.customer.last_name}}</p>
</td>
<td class="align-middle white-space-nowrap customer_address">
<p class="mb-0 fs-9 text-body">{{tx.customer.address}}</p>