Merge pull request #21 from JurunenseDevInterno/fix-tabela-sintetica-exportacao

Fix tabela sintetica exportacao
This commit is contained in:
Alessandro Gonçalves 2025-10-24 18:34:40 -03:00 committed by GitHub
commit 97d6e70c52
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 71 additions and 15 deletions

View File

@ -78,6 +78,8 @@ interface AnaliticoProps {
linhaSelecionada?: string; linhaSelecionada?: string;
excluirCentroCusto?: string; excluirCentroCusto?: string;
excluirCodigoConta?: string; excluirCodigoConta?: string;
codigosCentrosCustoSelecionados?: string;
codigosContasSelecionadas?: string;
}; };
} }
@ -379,6 +381,12 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
if (filtrosExternos.excluirCodigoConta) { if (filtrosExternos.excluirCodigoConta) {
params.append('excluirCodigoConta', filtrosExternos.excluirCodigoConta); params.append('excluirCodigoConta', filtrosExternos.excluirCodigoConta);
} }
if (filtrosExternos.codigosCentrosCustoSelecionados) {
params.append('codigosCentrosCustoSelecionados', filtrosExternos.codigosCentrosCustoSelecionados);
}
if (filtrosExternos.codigosContasSelecionadas) {
params.append('codigosContasSelecionadas', filtrosExternos.codigosContasSelecionadas);
}
const url = `/api/analitico-oracle?${params.toString()}`; const url = `/api/analitico-oracle?${params.toString()}`;
console.log('🌐 Fazendo requisição para:', url); console.log('🌐 Fazendo requisição para:', url);
@ -732,25 +740,25 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
if (sortedAndFilteredData.length === 0) return; if (sortedAndFilteredData.length === 0) return;
const exportData = sortedAndFilteredData.map((item) => ({ const exportData = sortedAndFilteredData.map((item) => ({
"Data Competência": item.data_competencia
? new Date(item.data_competencia).toLocaleDateString("pt-BR")
: "-",
"Data Vencimento": item.data_vencimento "Data Vencimento": item.data_vencimento
? new Date(item.data_vencimento).toLocaleDateString("pt-BR") ? new Date(item.data_vencimento).toLocaleDateString("pt-BR")
: "-", : "-",
"Data Caixa": item.data_caixa "Data Caixa": item.data_caixa
? new Date(item.data_caixa).toLocaleDateString("pt-BR") ? new Date(item.data_caixa).toLocaleDateString("pt-BR")
: "-", : "-",
"Código Fornecedor": item.codigo_fornecedor, "Entidade": item.entidade || "-",
Fornecedor: item.nome_fornecedor, "Código Fornecedor": item.codigo_fornecedor || "-",
"Código Centro Custo": item.codigo_centrocusto, "Fornecedor": item.nome_fornecedor || "-",
"Centro Custo": item.codigo_centrocusto, "Código Centro Custo": item.codigo_centrocusto || "-",
"Código Conta": item.codigo_conta, "Código Conta": item.codigo_conta || "-",
Conta: item.conta, "Conta": item.conta || "-",
Valor: typeof item.valor === "string" ? parseFloat(item.valor) : item.valor, "Valor Realizado": typeof item.valor === "string" ? parseFloat(item.valor) : (item.valor || 0),
Histórico: item.historico, "Valor Previsto": typeof item.valor_previsto === "string" ? parseFloat(item.valor_previsto) : (item.valor_previsto || 0),
"Histórico 2": item.historico2, "Valor Confirmado": typeof item.valor_confirmado === "string" ? parseFloat(item.valor_confirmado) : (item.valor_confirmado || 0),
Recnum: item.recnum, "Valor Pago": typeof item.valor_pago === "string" ? parseFloat(item.valor_pago) : (item.valor_pago || 0),
"Histórico": item.historico || "-",
"Histórico 2": item.historico2 || "-",
"Número Lançamento": item.numero_lancamento || "-",
})); }));
const wb = XLSX.utils.book_new(); const wb = XLSX.utils.book_new();

View File

@ -221,6 +221,8 @@ export default function Teste() {
linhaSelecionada: "", // Adicionar informação da linha selecionada linhaSelecionada: "", // Adicionar informação da linha selecionada
excluirCentroCusto: "", // Para excluir centro de custo específico quando desmarcado excluirCentroCusto: "", // Para excluir centro de custo específico quando desmarcado
excluirCodigoConta: "", // Para excluir código de conta específico quando desmarcado excluirCodigoConta: "", // Para excluir código de conta específico quando desmarcado
codigosCentrosCustoSelecionados: "", // Códigos dos centros de custo selecionados no filtro
codigosContasSelecionadas: "", // Códigos das contas selecionadas no filtro
}); });
const [linhaSelecionada, setLinhaSelecionada] = useState<string | null>(null); const [linhaSelecionada, setLinhaSelecionada] = useState<string | null>(null);
const [isAllExpanded, setIsAllExpanded] = useState(false); const [isAllExpanded, setIsAllExpanded] = useState(false);
@ -463,6 +465,24 @@ export default function Teste() {
excluirCodigoConta = "100050"; excluirCodigoConta = "100050";
} }
// Obter códigos dos centros de custo selecionados no filtro
const codigosCentrosCustoSelecionados = centrosCustoSelecionados
.map(centro => {
const item = data.find((d: DREItem) => d.centro_custo === centro);
return item?.codigo_centro_custo;
})
.filter(codigo => codigo) // Remover undefined
.join(',');
// Obter códigos das contas selecionadas no filtro
const codigosContasSelecionadas = contasSelecionadas
.map(conta => {
const item = data.find((d: DREItem) => d.conta === conta);
return item?.codigo_conta?.toString();
})
.filter(codigo => codigo) // Remover undefined
.join(',');
const novosFiltros = { const novosFiltros = {
dataInicio: dataInicioFiltro, dataInicio: dataInicioFiltro,
dataFim: dataFimFiltro, dataFim: dataFimFiltro,
@ -473,6 +493,8 @@ export default function Teste() {
linhaSelecionada: row.grupo || row.subgrupo || row.centro_custo || row.conta || "", // Incluir informação da linha selecionada linhaSelecionada: row.grupo || row.subgrupo || row.centro_custo || row.conta || "", // Incluir informação da linha selecionada
excluirCentroCusto, excluirCentroCusto,
excluirCodigoConta, excluirCodigoConta,
codigosCentrosCustoSelecionados,
codigosContasSelecionadas,
}; };
console.log('🎯 Novos filtros para analítico:', novosFiltros); console.log('🎯 Novos filtros para analítico:', novosFiltros);
@ -480,7 +502,9 @@ export default function Teste() {
centroCusto: novosFiltros.centroCusto, centroCusto: novosFiltros.centroCusto,
codigoConta: novosFiltros.codigoConta, codigoConta: novosFiltros.codigoConta,
codigoContaType: typeof novosFiltros.codigoConta, codigoContaType: typeof novosFiltros.codigoConta,
codigoContaLength: novosFiltros.codigoConta?.length codigoContaLength: novosFiltros.codigoConta?.length,
codigosCentrosCustoSelecionados: novosFiltros.codigosCentrosCustoSelecionados,
codigosContasSelecionadas: novosFiltros.codigosContasSelecionadas
}); });
setAnaliticoFiltros(novosFiltros); setAnaliticoFiltros(novosFiltros);
}; };

View File

@ -20,6 +20,10 @@ export async function GET(request: NextRequest) {
const excluirCentroCusto = searchParams.get('excluirCentroCusto'); const excluirCentroCusto = searchParams.get('excluirCentroCusto');
const excluirCodigoConta = searchParams.get('excluirCodigoConta'); const excluirCodigoConta = searchParams.get('excluirCodigoConta');
// Novos parâmetros para códigos selecionados no filtro
const codigosCentrosCustoSelecionados = searchParams.get('codigosCentrosCustoSelecionados');
const codigosContasSelecionadas = searchParams.get('codigosContasSelecionadas');
console.log('🎯 Filtros recebidos:', { console.log('🎯 Filtros recebidos:', {
dataInicio, dataInicio,
dataFim, dataFim,
@ -27,7 +31,9 @@ export async function GET(request: NextRequest) {
codigoGrupo, codigoGrupo,
codigoConta, codigoConta,
excluirCentroCusto, excluirCentroCusto,
excluirCodigoConta excluirCodigoConta,
codigosCentrosCustoSelecionados,
codigosContasSelecionadas
}); });
// Construir query SQL com filtros // Construir query SQL com filtros
@ -83,6 +89,24 @@ export async function GET(request: NextRequest) {
console.log('🚫 Excluindo código de conta:', excluirCodigoConta); console.log('🚫 Excluindo código de conta:', excluirCodigoConta);
} }
// Filtro por códigos de centros de custo selecionados no filtro
if (codigosCentrosCustoSelecionados) {
const codigosArray = codigosCentrosCustoSelecionados.split(',');
const placeholders = codigosArray.map(() => `:${paramIndex++}`).join(',');
sql += ` AND CODIGOCENTROCUSTO IN (${placeholders})`;
params.push(...codigosArray);
console.log('🏢 Filtrando por códigos de centros de custo:', codigosArray);
}
// Filtro por códigos de contas selecionadas no filtro
if (codigosContasSelecionadas) {
const codigosArray = codigosContasSelecionadas.split(',');
const placeholders = codigosArray.map(() => `:${paramIndex++}`).join(',');
sql += ` AND CODCONTA IN (${placeholders})`;
params.push(...codigosArray);
console.log('💰 Filtrando por códigos de contas:', codigosArray);
}
sql += ` ORDER BY DTVENC, CODFORNEC, CODCONTA`; sql += ` ORDER BY DTVENC, CODFORNEC, CODCONTA`;
console.log('🗄️ Query SQL final:', sql); console.log('🗄️ Query SQL final:', sql);