106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
from django.db.models import Sum
|
|
from django.utils import timezone
|
|
from Base.models import (
|
|
PayMethod,
|
|
BankAccount,
|
|
)
|
|
from Movement.models import (
|
|
Calendar,
|
|
Product,
|
|
ExpenseOrCredit,
|
|
Stock,
|
|
Transition
|
|
)
|
|
|
|
def metric():
|
|
# Lista de Bancos
|
|
banks = BankAccount.objects.all()
|
|
|
|
# pegando total de Serviços
|
|
sum_mov_serv = {}
|
|
for bank in banks:
|
|
sum_bank = Calendar.objects.filter(
|
|
# active = True,
|
|
pay_method__bank__name = bank.name,
|
|
).aggregate(Sum('net_value'))['net_value__sum'] or 0
|
|
sum_mov_serv[bank.name] = sum_bank
|
|
|
|
# pegando total de Produtos
|
|
sum_mov_prod = {}
|
|
for bank in banks:
|
|
sum_bank = Product.objects.filter(
|
|
# active=True,
|
|
pay_method__bank__name=bank.name,
|
|
).aggregate(Sum('net_value'))['net_value__sum'] or 0
|
|
sum_mov_prod[bank.name] = sum_bank
|
|
|
|
# pegando total de Desspesas
|
|
sum_expense = {}
|
|
for bank in banks:
|
|
sum_bank = ExpenseOrCredit.objects.filter(
|
|
# active=True,
|
|
# firm=True,
|
|
debit=True,
|
|
credit=False,
|
|
bank__name=bank.name,
|
|
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
|
sum_expense[bank.name] = sum_bank
|
|
|
|
# pegando total de Desspesas Profissinal
|
|
sum_expense_credit = {}
|
|
for bank in banks:
|
|
sum_bank = ExpenseOrCredit.objects.filter(
|
|
# active=True,
|
|
# firm=True,
|
|
debit=False,
|
|
credit=True,
|
|
bank__name=bank.name,
|
|
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
|
sum_expense_credit[bank.name] = sum_bank
|
|
|
|
# Valores trans. de entrada
|
|
sum_transition_credit = {}
|
|
for bank in banks:
|
|
sum_bank = Transition.objects.filter(
|
|
# active=True,
|
|
bank_credit__name=bank.name,
|
|
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
|
sum_transition_credit[bank.name] = sum_bank
|
|
|
|
|
|
# Valores trans. de saida
|
|
sum_transition_debit = {}
|
|
for bank in banks:
|
|
sum_bank = Transition.objects.filter(
|
|
# active=True,
|
|
bank_debit__name=bank.name,
|
|
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
|
sum_transition_debit[bank.name] = sum_bank
|
|
|
|
|
|
# saldo total de tudo
|
|
sum_total = {}
|
|
for bank in banks:
|
|
sum_mov_serv_get = sum_mov_serv.get(str(bank.name))
|
|
sum_mov_prod_get = sum_mov_prod.get(str(bank.name))
|
|
sum_expense_get = sum_expense.get(str(bank.name))
|
|
sum_expense_credit_get = sum_expense_credit.get(str(bank.name))
|
|
sum_sum_transition_credit = sum_transition_credit.get(str(bank.name))
|
|
sum_sum_transition_debit = sum_transition_debit.get(str(bank.name))
|
|
|
|
sum_total[bank.name] = (
|
|
sum_mov_serv_get +
|
|
sum_mov_prod_get +
|
|
sum_expense_credit_get +
|
|
sum_sum_transition_credit -
|
|
sum_sum_transition_debit -
|
|
sum_expense_get
|
|
|
|
)
|
|
|
|
sum_all = sum(sum_total.values()) or 0
|
|
|
|
return {
|
|
'sum_total':sum_total,
|
|
'sum_all':sum_all,
|
|
} |