search for sales order list
This commit is contained in:
parent
c4f5f7e8cb
commit
993ba46dbc
@ -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):
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user