fix: integração da view analitica DESPESA_ENTIDADE_ANALITICO

This commit is contained in:
Alessandro Gonçaalves 2025-11-20 23:29:07 -03:00
parent 51c4b2efbd
commit 5234066d98
2 changed files with 65 additions and 5 deletions

View File

@ -36,12 +36,12 @@ export async function GET(request: NextRequest) {
codigosContasSelecionadas
});
// Construir query SQL com filtros
let sql = `SELECT * FROM DRE_RESULTADO_ANALITICO WHERE 1=1`;
// Construir query SQL com filtros usando a view DESPESA_ENTIDADE_ANALITICO
let sql = `SELECT * FROM DESPESA_ENTIDADE_ANALITICO WHERE 1=1`;
const params: any[] = [];
let paramIndex = 1;
// Filtro por período
// Filtro por período (usando ANOMESCOMP)
if (dataInicio && dataFim) {
sql += ` AND ANOMESCOMP >= :${paramIndex} AND ANOMESCOMP <= :${paramIndex + 1}`;
params.push(dataInicio, dataFim);
@ -119,10 +119,11 @@ export async function GET(request: NextRequest) {
console.log('📝 Primeiros 3 registros:', data.slice(0, 3));
// Transformar os dados do Oracle para o formato esperado pelo componente
// Usando a view DESPESA_ENTIDADE_ANALITICO
const transformedData = data.map((item: any) => {
return {
codigo_grupo: item.CODGRUPO || "",
codigo_subgrupo: "", // Não existe na tabela Oracle
codigo_subgrupo: item.SUBGRUPO || "", // SUBGRUPO existe na nova view
codigo_fornecedor: item.CODFORNEC || "",
nome_fornecedor: item.FORNECEDOR || "",
id: item.NUMLANC || 0,

View File

@ -484,6 +484,7 @@ export default function Teste() {
// Determinar filtros baseado na nova hierarquia [entidade, direto/indireto, cc, conta]
let centroCustoFiltro = "";
let codigoContaFiltro = "";
let codigoGrupoFiltro = "";
let entidadeFiltro = "";
let diretoIndiretoFiltro = "";
@ -493,6 +494,63 @@ export default function Teste() {
// Filtrar por direto/indireto se disponível
diretoIndiretoFiltro = row.direto_indireto || "";
// Buscar CODGRUPO dos dados originais baseado na hierarquia selecionada
// Quando clicar em qualquer nível (entidade, direto/indireto, centro de custo ou conta), deve filtrar por CODGRUPO
if (row.type === "entidade" || row.type === "direto_indireto" || row.type === "centro_custo" || row.type === "conta") {
// Buscar o CODGRUPO dos dados originais que correspondem a esta linha
// Filtrar também pelo período selecionado se houver
const itemsCorrespondentes = data.filter((item: DREItem) => {
// Filtrar por período se um mês específico foi selecionado
if (mesSelecionado && item.data_competencia !== mesSelecionado) {
return false;
}
if (row.type === "entidade") {
return item.entidades === row.entidade;
} else if (row.type === "direto_indireto") {
return item.entidades === row.entidade && item.subgrupo === row.direto_indireto;
} else if (row.type === "centro_custo") {
return item.entidades === row.entidade &&
item.subgrupo === row.direto_indireto &&
item.codigo_centro_custo === row.codigo_centro_custo;
} else if (row.type === "conta") {
return item.entidades === row.entidade &&
item.subgrupo === row.direto_indireto &&
item.codigo_centro_custo === row.codigo_centro_custo &&
item.codigo_conta === row.codigo_conta;
}
return false;
});
// Pegar o CODGRUPO do primeiro item encontrado (todos devem ter o mesmo CODGRUPO)
if (itemsCorrespondentes.length > 0) {
const primeiroItem = itemsCorrespondentes[0];
// Priorizar codgrupo direto, depois tentar extrair do campo grupo
codigoGrupoFiltro = primeiroItem.codgrupo ||
(primeiroItem.grupo ? primeiroItem.grupo.split(' ')[0]?.trim() : "") ||
"";
console.log('📊 CODGRUPO encontrado para a linha:', {
codigoGrupoFiltro,
codgrupo: primeiroItem.codgrupo,
grupo: primeiroItem.grupo,
itemsEncontrados: itemsCorrespondentes.length,
tipoLinha: row.type,
mesSelecionado: mesSelecionado
});
} else {
console.warn('⚠️ Nenhum item correspondente encontrado para extrair CODGRUPO:', {
tipoLinha: row.type,
entidade: row.entidade,
direto_indireto: row.direto_indireto,
centro_custo: row.centro_custo,
codigo_centro_custo: row.codigo_centro_custo,
codigo_conta: row.codigo_conta,
mesSelecionado: mesSelecionado
});
}
}
// Filtrar por centro de custo se for nível centro_custo ou conta
if (row.type === "centro_custo" || row.type === "conta") {
centroCustoFiltro = row.codigo_centro_custo || "";
@ -506,6 +564,7 @@ export default function Teste() {
console.log('🎯 Filtros determinados (nova hierarquia):', {
entidadeFiltro,
diretoIndiretoFiltro,
codigoGrupoFiltro,
centroCustoFiltro,
codigoContaFiltro,
tipoLinha: row.type,
@ -577,7 +636,7 @@ export default function Teste() {
dataInicio: dataInicioFiltro,
dataFim: dataFimFiltro,
centroCusto: centroCustoFiltro,
codigoGrupo: "", // Não usado na nova hierarquia
codigoGrupo: codigoGrupoFiltro, // CODGRUPO da entidade/linha selecionada
codigoSubgrupo: diretoIndiretoFiltro, // Usar direto/indireto como subgrupo
codigoConta: codigoContaFiltro,
linhaSelecionada: row.entidade || row.direto_indireto || row.centro_custo || row.conta || "",