primeira versão
This commit is contained in:
43
models/report_parser.py
Normal file
43
models/report_parser.py
Normal 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,
|
||||
}
|
||||
Reference in New Issue
Block a user