Files
CenterPes/Base/Metrics/DashboardAdmin/get_total_prof.py
2026-01-02 09:19:43 -03:00

59 lines
1.9 KiB
Python

from django.db.models import Sum
from django.utils import timezone
from Base.models import Professional
from Movement.models import Calendar, ExpenseOrCredit
def metric():
Professionals = Professional.objects.all()
current_month = timezone.localtime(timezone.now()).month
current_year = timezone.localtime(timezone.now()).year
sum_expense_prof = {}
for Prof in Professionals:
sum_ = Calendar.objects.filter(
# active=True,
professional__id=Prof.id,
date__month= current_month,
date__year= current_year
).aggregate(Sum('prof_money'))['prof_money__sum'] or 0
sum_expense_prof[Prof.name] = sum_
sum_serv_prof_credit = {}
for Prof in Professionals:
sum_ = ExpenseOrCredit.objects.filter(
# active=True,
firm=False,
debit=False,
credit=True,
professional__id=Prof.id,
date__month= current_month,
date__year= current_year
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
sum_serv_prof_credit[Prof.name] = sum_
sum_serv_prof_debit = {}
for Prof in Professionals:
sum_ = ExpenseOrCredit.objects.filter(
# active=True,
firm=False,
debit=True,
credit=False,
professional__id=Prof.id,
date__month= current_month,
date__year= current_year
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
sum_serv_prof_debit[Prof.name] = sum_
sum_total = {}
for total in Professionals:
sum1 = sum_expense_prof.get(str(total.name))
sum2 = sum_serv_prof_credit.get(str(total.name))
sum3 = sum_serv_prof_debit.get(str(total.name))
sum_total[total.name] = ( sum1 + sum2 - sum3 )
sum_all = sum(sum_total.values()) or 0
return {
'sum_total':sum_total,
'sum_all':sum_all,
}