first commit

This commit is contained in:
2026-01-02 09:19:43 -03:00
parent 63cf724aaf
commit cc44b7ef4f
187 changed files with 2484 additions and 686 deletions

View File

@@ -3,29 +3,51 @@ from Movement.models import Calendar
# from django.utils import timezone
from django.db.models import Sum
def metric(Day):
professionals = Professional.objects.all()
services = ServiceList.objects.all()
service_movement = Calendar.objects.filter(date=Day).values()
# Importante: removi o .values() aqui para podermos acessar os objetos relacionados (como cliente)
service_movement = Calendar.objects.filter(date=Day)
professionals_report = {}
for professional in professionals:
professionals_report[professional.name] = {}
for service in services:
# Filtramos os agendamentos específicos deste profissional e serviço
service_sum = service_movement.filter(
professional__name=professional.name,
service__name=service.name,
professional=professional,
service=service,
)
servSum =service_sum.aggregate(Sum('gross_value'))['gross_value__sum'] or 0
# Cálculo dos totais
servSum = service_sum.aggregate(Sum('gross_value'))['gross_value__sum'] or 0
servCont = service_sum.count()
# --- NOVA PARTE: Detalhamento dos clientes ---
# Criamos uma lista com o nome completo de cada cliente atendido
clients_list = []
for appointment in service_sum:
client_name = f"{appointment.client.first_name} {appointment.client.last_name}"
clients_list.append({
'name': client_name,
'time': appointment.time.strftime('%H:%M'), # Opcional: mostra o horário
'value': appointment.gross_value
})
# ---------------------------------------------
professionals_report[professional.name][service.name] = {
'servSum':servSum,
'servCont':servCont,
'servSum': servSum,
'servCont': servCont,
'clients': clients_list, # Aqui estão os detalhes que você pediu
}
sum_of_prof = sum(
sum(service['servSum'] for service in services.values())
for services in professionals_report.values()
)
# Cálculo do total geral simplificado
sum_of_prof = service_movement.aggregate(Sum('gross_value'))['gross_value__sum'] or 0
return {
'professionals_report':professionals_report,
'sum_of_prof':sum_of_prof,
'professionals_report': professionals_report,
'sum_of_prof': sum_of_prof,
}