first commit
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
36
Base/Metrics/DashboardAdmin/get_sum_of_stone.py
Normal file
36
Base/Metrics/DashboardAdmin/get_sum_of_stone.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from Base.models import ProductList
|
||||
from Movement.models import Stock , Product
|
||||
from django.db.models import Avg, Sum
|
||||
|
||||
def metric():
|
||||
products_list = ProductList.objects.all()
|
||||
stones = Stock.objects.all()
|
||||
vendas = Product.objects.all()
|
||||
stones_report = []
|
||||
|
||||
for prod in products_list:
|
||||
# --- QUANTIDADES ---
|
||||
total_comprado = stones.filter(product__id=prod.id).aggregate(Sum('quantity'))['quantity__sum'] or 0
|
||||
total_vendido = vendas.filter(product__id=prod.id).aggregate(Sum('quantity'))['quantity__sum'] or 0
|
||||
estoque_atual = total_comprado - total_vendido
|
||||
|
||||
# Média dos valores de gross_value vezes o estoque_atual
|
||||
media_gross = stones.filter(product__id=prod.id).aggregate(Avg('unit_value'))['unit_value__avg'] or 0
|
||||
custo_total_estoque = media_gross * estoque_atual
|
||||
|
||||
# Média dos valores de net_value vezes o estoque_atual
|
||||
media_net = vendas.filter(product__id=prod.id).aggregate(Avg('net_value'))['net_value__avg'] or 0
|
||||
valor_liquido_vendas_estoque = media_net * estoque_atual
|
||||
|
||||
if total_comprado > 0 or total_vendido > 0:
|
||||
stones_report.append({
|
||||
'produto': prod.name,
|
||||
'quantidade_estoque': estoque_atual,
|
||||
'valor_total_estoque_bruto': valor_liquido_vendas_estoque,
|
||||
'valor_total_estoque_liquido': custo_total_estoque,
|
||||
'valor_unitario_compra_medio': media_gross, # Alterado para refletir que é uma média
|
||||
})
|
||||
|
||||
return {
|
||||
'Stone': stones_report,
|
||||
}
|
||||
@@ -7,8 +7,9 @@ from Base.models import (
|
||||
from Movement.models import (
|
||||
Calendar,
|
||||
Product,
|
||||
Expense,
|
||||
Stock
|
||||
ExpenseOrCredit,
|
||||
Stock,
|
||||
Transition
|
||||
)
|
||||
|
||||
def metric():
|
||||
@@ -36,31 +37,46 @@ def metric():
|
||||
# pegando total de Desspesas
|
||||
sum_expense = {}
|
||||
for bank in banks:
|
||||
sum_bank = Expense.objects.filter(
|
||||
sum_bank = ExpenseOrCredit.objects.filter(
|
||||
# active=True,
|
||||
firm=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_prof = {}
|
||||
# pegando total de Desspesas Profissinal
|
||||
sum_expense_credit = {}
|
||||
for bank in banks:
|
||||
sum_bank = Expense.objects.filter(
|
||||
sum_bank = ExpenseOrCredit.objects.filter(
|
||||
# active=True,
|
||||
firm=False,
|
||||
# firm=True,
|
||||
debit=False,
|
||||
credit=True,
|
||||
bank__name=bank.name,
|
||||
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
||||
sum_expense_prof[bank.name] = sum_bank
|
||||
sum_expense_credit[bank.name] = sum_bank
|
||||
|
||||
# Valores de entrada do estoque
|
||||
sum_stock = {}
|
||||
# Valores trans. de entrada
|
||||
sum_transition_credit = {}
|
||||
for bank in banks:
|
||||
sum_bank = Stock.objects.filter(
|
||||
sum_bank = Transition.objects.filter(
|
||||
# active=True,
|
||||
bank__name=bank.name,
|
||||
bank_credit__name=bank.name,
|
||||
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
||||
sum_stock[bank.name] = sum_bank
|
||||
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 = {}
|
||||
@@ -68,15 +84,23 @@ def metric():
|
||||
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_prof_get = sum_expense_prof.get(str(bank.name))
|
||||
sum_sum_stock = sum_stock.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_get -
|
||||
sum_expense_prof_get -
|
||||
sum_sum_stock
|
||||
sum_mov_prod_get +
|
||||
sum_expense_credit_get +
|
||||
sum_sum_transition_credit -
|
||||
sum_sum_transition_debit -
|
||||
sum_expense_get
|
||||
|
||||
)
|
||||
|
||||
return sum_total
|
||||
sum_all = sum(sum_total.values()) or 0
|
||||
|
||||
return {
|
||||
'sum_total':sum_total,
|
||||
'sum_all':sum_all,
|
||||
}
|
||||
46
Base/Metrics/DashboardAdmin/get_total_credit_prof.py
Normal file
46
Base/Metrics/DashboardAdmin/get_total_credit_prof.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from django.db.models import Sum
|
||||
from django.utils import timezone
|
||||
from Base.models import (
|
||||
BankAccount,
|
||||
ChartOfAccount
|
||||
)
|
||||
from Movement.models import (
|
||||
ExpenseOrCredit,
|
||||
)
|
||||
|
||||
def metric():
|
||||
# Lista de Bancos
|
||||
current_month = timezone.localtime(timezone.now()).month
|
||||
current_year = timezone.localtime(timezone.now()).year
|
||||
banks = ChartOfAccount.objects.filter(
|
||||
debit=False,
|
||||
credit=True,
|
||||
firm=False,
|
||||
)
|
||||
|
||||
# pegando total de Desspesas Profissinal
|
||||
sum_expense_prof = {}
|
||||
for bank in banks:
|
||||
sum_bank = ExpenseOrCredit.objects.filter(
|
||||
# active=True,
|
||||
date__month=current_month,
|
||||
date__year=current_year,
|
||||
firm=False,
|
||||
debit=False,
|
||||
credit=True,
|
||||
chart_of_account__name=bank.name,
|
||||
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
||||
if sum_bank > 0:
|
||||
sum_expense_prof[bank.name] = sum_bank
|
||||
|
||||
# saldo total de tudo
|
||||
sum_total = {}
|
||||
for bank in sum_expense_prof:
|
||||
sum_expense_get = sum_expense_prof.get(str(bank))
|
||||
sum_total[bank] = sum_expense_get
|
||||
sum_all = sum(sum_total.values()) or 0
|
||||
|
||||
return {
|
||||
'sum_total':sum_total,
|
||||
'sum_all':sum_all,
|
||||
}
|
||||
45
Base/Metrics/DashboardAdmin/get_total_expense.py
Normal file
45
Base/Metrics/DashboardAdmin/get_total_expense.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from django.db.models import Sum
|
||||
from django.utils import timezone
|
||||
from collections import defaultdict
|
||||
from datetime import date
|
||||
from Base.models import (
|
||||
BankAccount,
|
||||
ChartOfAccount
|
||||
)
|
||||
from Movement.models import (
|
||||
ExpenseOrCredit,
|
||||
)
|
||||
|
||||
def metric():
|
||||
today = date.today()
|
||||
|
||||
expenses = ExpenseOrCredit.objects.filter(
|
||||
firm=True,
|
||||
debit=True,
|
||||
date__month=today.month,
|
||||
date__year=today.year
|
||||
).select_related('bank', 'chart_of_account').order_by('bank', 'date')
|
||||
|
||||
# Estrutura: { 'Nome do Banco': {'registros': [...], 'total_banco': 0} }
|
||||
grouped_data = {}
|
||||
total_geral = 0
|
||||
|
||||
for expense in expenses:
|
||||
bank_name = expense.bank.name
|
||||
|
||||
if bank_name not in grouped_data:
|
||||
grouped_data[bank_name] = {'registros': [], 'total_banco': 0}
|
||||
|
||||
grouped_data[bank_name]['registros'].append(expense)
|
||||
|
||||
# Soma os valores
|
||||
valor = float(expense.gross_value)
|
||||
grouped_data[bank_name]['total_banco'] += valor
|
||||
total_geral += valor
|
||||
|
||||
return {
|
||||
'grouped_data': grouped_data,
|
||||
'total_geral': total_geral,
|
||||
}
|
||||
|
||||
|
||||
46
Base/Metrics/DashboardAdmin/get_total_expense_prof.py
Normal file
46
Base/Metrics/DashboardAdmin/get_total_expense_prof.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from django.db.models import Sum
|
||||
from django.utils import timezone
|
||||
from Base.models import (
|
||||
BankAccount,
|
||||
ChartOfAccount
|
||||
)
|
||||
from Movement.models import (
|
||||
ExpenseOrCredit,
|
||||
)
|
||||
|
||||
def metric():
|
||||
# Lista de Bancos
|
||||
current_month = timezone.localtime(timezone.now()).month
|
||||
current_year = timezone.localtime(timezone.now()).year
|
||||
banks = ChartOfAccount.objects.filter(
|
||||
debit=True,
|
||||
credit=False,
|
||||
firm=False,
|
||||
)
|
||||
|
||||
# pegando total de Desspesas Profissinal
|
||||
sum_expense_prof = {}
|
||||
for bank in banks:
|
||||
sum_bank = ExpenseOrCredit.objects.filter(
|
||||
# active=True,
|
||||
date__month=current_month,
|
||||
date__year=current_year,
|
||||
firm=False,
|
||||
debit=True,
|
||||
credit=False,
|
||||
chart_of_account__name=bank.name,
|
||||
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
||||
if sum_bank > 0:
|
||||
sum_expense_prof[bank.name] = sum_bank
|
||||
|
||||
# saldo total de tudo
|
||||
sum_total = {}
|
||||
for bank in sum_expense_prof:
|
||||
sum_expense_get = sum_expense_prof.get(str(bank))
|
||||
sum_total[bank] = sum_expense_get
|
||||
sum_all = sum(sum_total.values()) or 0
|
||||
|
||||
return {
|
||||
'sum_total':sum_total,
|
||||
'sum_all':sum_all,
|
||||
}
|
||||
36
Base/Metrics/DashboardAdmin/get_total_firm.py
Normal file
36
Base/Metrics/DashboardAdmin/get_total_firm.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from django.db.models import Sum,Count
|
||||
from django.utils import timezone
|
||||
from Base.models import (
|
||||
ServiceList,
|
||||
)
|
||||
from Movement.models import (
|
||||
Calendar,
|
||||
)
|
||||
|
||||
def metric():
|
||||
now = timezone.localtime(timezone.now())
|
||||
current_month = now.month
|
||||
current_year = now.year
|
||||
|
||||
# Criamos um queryset base para evitar repetição de filtros
|
||||
base_queryset = Calendar.objects.filter(
|
||||
date__month=current_month,
|
||||
date__year=current_year
|
||||
)
|
||||
|
||||
# Breakdown (Agrupado por profissional e serviço)
|
||||
services_breakdown = base_queryset.values(
|
||||
'professional__name',
|
||||
'service__name'
|
||||
).annotate(
|
||||
quantidade_feitas=Count('id'),
|
||||
lucro_liquido=Sum('value_cash')
|
||||
).order_by('professional__name', 'service__name')
|
||||
|
||||
# Total geral de lucro no mês
|
||||
total_geral = base_queryset.aggregate(total=Sum('value_cash'))['total'] or 0
|
||||
|
||||
return {
|
||||
'services': services_breakdown,
|
||||
'total': total_geral
|
||||
}
|
||||
@@ -1,39 +1,59 @@
|
||||
from django.db.models import Sum
|
||||
from django.utils import timezone
|
||||
from Base.models import Professional
|
||||
from Movement.models import Calendar, Expense
|
||||
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
|
||||
current_month = timezone.localtime(timezone.now()).month
|
||||
current_year = timezone.localtime(timezone.now()).year
|
||||
|
||||
sum_expense_prof = {}
|
||||
for Prof in Professionals:
|
||||
sum_ = Expense.objects.filter(
|
||||
# active=True,
|
||||
firm=False,
|
||||
professional__name=Prof.name,
|
||||
# date__month=current_month,
|
||||
# date__year=current_year
|
||||
).aggregate(Sum('gross_value'))['gross_value__sum'] or 0
|
||||
sum_expense_prof[Prof.name] = sum_
|
||||
|
||||
|
||||
sum_serv_prof = {}
|
||||
for Prof in Professionals:
|
||||
sum_ = Calendar.objects.filter(
|
||||
# active=True,
|
||||
professional__name=Prof.name,
|
||||
# date__month=current_month,
|
||||
# date__year=current_year
|
||||
professional__id=Prof.id,
|
||||
date__month= current_month,
|
||||
date__year= current_year
|
||||
).aggregate(Sum('prof_money'))['prof_money__sum'] or 0
|
||||
sum_serv_prof[Prof.name] = sum_
|
||||
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_serv_prof.get(str(total.name))
|
||||
sum2 = sum_expense_prof.get(str(total.name))
|
||||
sum_total[total.name] = ( sum1 - sum2 )
|
||||
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 )
|
||||
|
||||
return sum_total
|
||||
sum_all = sum(sum_total.values()) or 0
|
||||
|
||||
return {
|
||||
'sum_total':sum_total,
|
||||
'sum_all':sum_all,
|
||||
}
|
||||
Reference in New Issue
Block a user