fix: integração da view analitica DESPESA_ENTIDADE_ANALITICO
This commit is contained in:
parent
51c4b2efbd
commit
5234066d98
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 || "",
|
||||
|
|
|
|||
Loading…
Reference in New Issue