Files
lottery_ycms/lottery/webapp/views.py
2025-06-13 21:10:20 +09:00

61 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.http import JsonResponse
from django.views.decorators.http import require_GET
from .models import Invoice
import datetime
@require_GET
def filtered_invoices(request):
"""
Фильтрует счета по начальной/конечной дате и имени клиента,
возвращает JSON с полем "member" как список счетов со всеми полями.
"""
start_date = request.GET.get('start_date')
end_date = request.GET.get('end_date')
client = request.GET.get('client')
qs = Invoice.objects.all()
if start_date:
try:
start_date_obj = datetime.datetime.strptime(start_date, "%Y-%m-%d")
qs = qs.filter(created_at__gte=start_date_obj)
except ValueError:
pass
if end_date:
try:
end_date_obj = datetime.datetime.strptime(end_date, "%Y-%m-%d")
qs = qs.filter(created_at__lte=end_date_obj)
except ValueError:
pass
if client:
qs = qs.filter(client_name__icontains=client)
invoices = []
for invoice in qs:
invoices.append({
'api_id': invoice.api_id, # Номер счета (API ID)
'invoice_type': invoice.invoice_type,
'created_at': invoice.created_at.strftime('%Y-%m-%d %H:%M:%S') if invoice.created_at else '',
'closed_at': invoice.closed_at.strftime('%Y-%m-%d %H:%M:%S') if invoice.closed_at else 'Не закрыт!',
'ext_id': invoice.ext_id,
'ext_type': invoice.ext_type,
'client': {
'name': invoice.client_name,
'club_card_num': invoice.client_club_card_number,
},
'sum': str(invoice.sum),
'company_number': invoice.company_number,
'bonus': str(invoice.bonus) if invoice.bonus is not None else '',
'start_bonus': str(invoice.start_bonus) if invoice.start_bonus is not None else '',
'deposit_sum': str(invoice.deposit_sum),
'notes': invoice.notes,
})
data = {
"member": invoices,
"totalItems": qs.count(),
}
return JsonResponse(data)