59 lines
1.9 KiB
Python
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,
|
|
} |