primeira versão

This commit is contained in:
2026-02-17 23:47:16 +01:00
commit d76d610955
32 changed files with 2304 additions and 0 deletions

43
models/report_parser.py Normal file
View File

@@ -0,0 +1,43 @@
from odoo import models, api
class RelatorioFinanceiroParser(models.AbstractModel):
_name = 'report.plugin_recre.template_financeiro_mensal'
_description = 'Lógica do Relatório Financeiro'
@api.model
def _get_report_values(self, docids, data=None):
# 1. Recupera o Wizard para poder usar "docs" no template
# Isso corrige o erro KeyError: 'docs'
docs = self.env['recreacao.financeiro.wizard'].browse(docids)
# Se os dados não vierem no 'data', pega do wizard (docs)
start = data.get('data_inicio') or docs.data_inicio
end = data.get('data_fim') or docs.data_fim
# 2. Busca os movimentos no banco de dados
movimentos = self.env['recreacao.financeiro'].search([
('data_vencimento', '>=', start),
('data_vencimento', '<=', end),
('status', '!=', 'cancelado') # Ignora cancelados
], order='data_vencimento asc')
# 3. Separa e Calcula
entradas = movimentos.filtered(lambda r: r.tipo == 'receita')
saidas = movimentos.filtered(lambda r: r.tipo == 'despesa')
total_entradas = sum(entradas.mapped('valor'))
total_saidas = sum(saidas.mapped('valor'))
# 4. Retorna o dicionário completo para o XML
return {
'doc_ids': docids,
'doc_model': 'recreacao.financeiro.wizard',
'docs': docs, # <--- AQUI ESTAVA FALTANDO!
'data_inicio': start,
'data_fim': end,
'entradas': entradas,
'saidas': saidas,
'total_entradas': total_entradas,
'total_saidas': total_saidas,
'saldo_final': total_entradas - total_saidas,
}