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
|
codigosContasSelecionadas
|
||||||
});
|
});
|
||||||
|
|
||||||
// Construir query SQL com filtros
|
// Construir query SQL com filtros usando a view DESPESA_ENTIDADE_ANALITICO
|
||||||
let sql = `SELECT * FROM DRE_RESULTADO_ANALITICO WHERE 1=1`;
|
let sql = `SELECT * FROM DESPESA_ENTIDADE_ANALITICO WHERE 1=1`;
|
||||||
const params: any[] = [];
|
const params: any[] = [];
|
||||||
let paramIndex = 1;
|
let paramIndex = 1;
|
||||||
|
|
||||||
// Filtro por período
|
// Filtro por período (usando ANOMESCOMP)
|
||||||
if (dataInicio && dataFim) {
|
if (dataInicio && dataFim) {
|
||||||
sql += ` AND ANOMESCOMP >= :${paramIndex} AND ANOMESCOMP <= :${paramIndex + 1}`;
|
sql += ` AND ANOMESCOMP >= :${paramIndex} AND ANOMESCOMP <= :${paramIndex + 1}`;
|
||||||
params.push(dataInicio, dataFim);
|
params.push(dataInicio, dataFim);
|
||||||
|
|
@ -119,10 +119,11 @@ export async function GET(request: NextRequest) {
|
||||||
console.log('📝 Primeiros 3 registros:', data.slice(0, 3));
|
console.log('📝 Primeiros 3 registros:', data.slice(0, 3));
|
||||||
|
|
||||||
// Transformar os dados do Oracle para o formato esperado pelo componente
|
// Transformar os dados do Oracle para o formato esperado pelo componente
|
||||||
|
// Usando a view DESPESA_ENTIDADE_ANALITICO
|
||||||
const transformedData = data.map((item: any) => {
|
const transformedData = data.map((item: any) => {
|
||||||
return {
|
return {
|
||||||
codigo_grupo: item.CODGRUPO || "",
|
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 || "",
|
codigo_fornecedor: item.CODFORNEC || "",
|
||||||
nome_fornecedor: item.FORNECEDOR || "",
|
nome_fornecedor: item.FORNECEDOR || "",
|
||||||
id: item.NUMLANC || 0,
|
id: item.NUMLANC || 0,
|
||||||
|
|
|
||||||
|
|
@ -484,6 +484,7 @@ export default function Teste() {
|
||||||
// Determinar filtros baseado na nova hierarquia [entidade, direto/indireto, cc, conta]
|
// Determinar filtros baseado na nova hierarquia [entidade, direto/indireto, cc, conta]
|
||||||
let centroCustoFiltro = "";
|
let centroCustoFiltro = "";
|
||||||
let codigoContaFiltro = "";
|
let codigoContaFiltro = "";
|
||||||
|
let codigoGrupoFiltro = "";
|
||||||
let entidadeFiltro = "";
|
let entidadeFiltro = "";
|
||||||
let diretoIndiretoFiltro = "";
|
let diretoIndiretoFiltro = "";
|
||||||
|
|
||||||
|
|
@ -493,6 +494,63 @@ export default function Teste() {
|
||||||
// Filtrar por direto/indireto se disponível
|
// Filtrar por direto/indireto se disponível
|
||||||
diretoIndiretoFiltro = row.direto_indireto || "";
|
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
|
// Filtrar por centro de custo se for nível centro_custo ou conta
|
||||||
if (row.type === "centro_custo" || row.type === "conta") {
|
if (row.type === "centro_custo" || row.type === "conta") {
|
||||||
centroCustoFiltro = row.codigo_centro_custo || "";
|
centroCustoFiltro = row.codigo_centro_custo || "";
|
||||||
|
|
@ -506,6 +564,7 @@ export default function Teste() {
|
||||||
console.log('🎯 Filtros determinados (nova hierarquia):', {
|
console.log('🎯 Filtros determinados (nova hierarquia):', {
|
||||||
entidadeFiltro,
|
entidadeFiltro,
|
||||||
diretoIndiretoFiltro,
|
diretoIndiretoFiltro,
|
||||||
|
codigoGrupoFiltro,
|
||||||
centroCustoFiltro,
|
centroCustoFiltro,
|
||||||
codigoContaFiltro,
|
codigoContaFiltro,
|
||||||
tipoLinha: row.type,
|
tipoLinha: row.type,
|
||||||
|
|
@ -577,7 +636,7 @@ export default function Teste() {
|
||||||
dataInicio: dataInicioFiltro,
|
dataInicio: dataInicioFiltro,
|
||||||
dataFim: dataFimFiltro,
|
dataFim: dataFimFiltro,
|
||||||
centroCusto: centroCustoFiltro,
|
centroCusto: centroCustoFiltro,
|
||||||
codigoGrupo: "", // Não usado na nova hierarquia
|
codigoGrupo: codigoGrupoFiltro, // CODGRUPO da entidade/linha selecionada
|
||||||
codigoSubgrupo: diretoIndiretoFiltro, // Usar direto/indireto como subgrupo
|
codigoSubgrupo: diretoIndiretoFiltro, // Usar direto/indireto como subgrupo
|
||||||
codigoConta: codigoContaFiltro,
|
codigoConta: codigoContaFiltro,
|
||||||
linhaSelecionada: row.entidade || row.direto_indireto || row.centro_custo || row.conta || "",
|
linhaSelecionada: row.entidade || row.direto_indireto || row.centro_custo || row.conta || "",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue