Merge pull request #62 from JurunenseDevInterno/dev

Dev
This commit is contained in:
Alessandro Gonçalves 2025-12-10 09:46:18 -03:00 committed by GitHub
commit 40279a8b18
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 20 additions and 24 deletions

View File

@ -602,12 +602,8 @@ export default function Teste() {
const calcularValoresPorMesPorFilial = React.useCallback((items: DREItem[]): Record<string, Record<string, number>> => { const calcularValoresPorMesPorFilial = React.useCallback((items: DREItem[]): Record<string, Record<string, number>> => {
const valoresPorMesPorFilial: Record<string, Record<string, number>> = {}; const valoresPorMesPorFilial: Record<string, Record<string, number>> = {};
// Usar filiais selecionadas se houver filtros aplicados, senão usar todas as opções disponíveis // Extrair filiais únicas dos próprios items para evitar dependência de arrays externos
const filiaisDisponiveis = (filtrosAplicados && filiaisSelecionadas.length > 0) const filiaisDisponiveis = [...new Set(items.map(item => item.filial || item.codfilial).filter(Boolean))] as string[];
? filiaisSelecionadas
: (opcoesFiliais.length > 0
? opcoesFiliais
: [...new Set(items.map(item => item.filial || item.codfilial).filter(Boolean))] as string[]);
mesesDisponiveis.forEach(mes => { mesesDisponiveis.forEach(mes => {
valoresPorMesPorFilial[mes] = {}; valoresPorMesPorFilial[mes] = {};
@ -619,7 +615,7 @@ export default function Teste() {
items.forEach((item) => { items.forEach((item) => {
const anoMes = item.data_competencia; const anoMes = item.data_competencia;
const filial = item.filial || item.codfilial || ""; const filial = item.filial || item.codfilial || "";
if (anoMes && valoresPorMesPorFilial[anoMes] && filial && filiaisDisponiveis.includes(filial)) { if (anoMes && valoresPorMesPorFilial[anoMes] && filial) {
if (!valoresPorMesPorFilial[anoMes][filial]) { if (!valoresPorMesPorFilial[anoMes][filial]) {
valoresPorMesPorFilial[anoMes][filial] = 0; valoresPorMesPorFilial[anoMes][filial] = 0;
} }
@ -628,7 +624,7 @@ export default function Teste() {
}); });
return valoresPorMesPorFilial; return valoresPorMesPorFilial;
}, [mesesDisponiveis, opcoesFiliais, filtrosAplicados, filiaisSelecionadas]); }, [mesesDisponiveis]);
// Memoizar valores do grupo 01 por mês para evitar recálculos repetidos // Memoizar valores do grupo 01 por mês para evitar recálculos repetidos
const valoresGrupo01PorMesMemo = React.useMemo(() => { const valoresGrupo01PorMesMemo = React.useMemo(() => {
@ -647,12 +643,8 @@ export default function Teste() {
// Memoizar valores do grupo 01 por mês e por filial // Memoizar valores do grupo 01 por mês e por filial
const valoresGrupo01PorMesPorFilialMemo = React.useMemo(() => { const valoresGrupo01PorMesPorFilialMemo = React.useMemo(() => {
const valores: Record<string, Record<string, number>> = {}; const valores: Record<string, Record<string, number>> = {};
// Usar filiais selecionadas se houver filtros aplicados, senão usar todas as opções disponíveis // Extrair filiais únicas dos próprios dados para evitar dependência de arrays externos
const filiaisDisponiveis = (filtrosAplicados && filiaisSelecionadas.length > 0) const filiaisDisponiveis = [...new Set(data.map(item => item.filial || item.codfilial).filter(Boolean))] as string[];
? filiaisSelecionadas
: (opcoesFiliais.length > 0
? opcoesFiliais
: [...new Set(data.map(item => item.filial || item.codfilial).filter(Boolean))] as string[]);
mesesDisponiveis.forEach(mes => { mesesDisponiveis.forEach(mes => {
valores[mes] = {}; valores[mes] = {};
@ -667,7 +659,7 @@ export default function Teste() {
}); });
}); });
return valores; return valores;
}, [data, mesesDisponiveis, opcoesFiliais, filtrosAplicados, filiaisSelecionadas]); }, [data, mesesDisponiveis]);
// Função para calcular percentuais baseado no CODGRUPO 01 (FATURAMENTO LÍQUIDO) // Função para calcular percentuais baseado no CODGRUPO 01 (FATURAMENTO LÍQUIDO)
const calcularPercentuaisPorMes = React.useCallback(( const calcularPercentuaisPorMes = React.useCallback((
@ -706,12 +698,9 @@ export default function Teste() {
): Record<string, Record<string, number>> => { ): Record<string, Record<string, number>> => {
const percentuaisPorMesPorFilial: Record<string, Record<string, number>> = {}; const percentuaisPorMesPorFilial: Record<string, Record<string, number>> = {};
// Usar filiais selecionadas se houver filtros aplicados, senão usar todas as opções disponíveis // Extrair filiais únicas dos próprios valoresPorMesPorFilial para evitar dependência de arrays externos
const filiaisDisponiveis = (filtrosAplicados && filiaisSelecionadas.length > 0) const primeiroMes = mesesDisponiveis[0] || "";
? filiaisSelecionadas const filiaisDisponiveis = Object.keys(valoresPorMesPorFilial[primeiroMes] || {});
: (opcoesFiliais.length > 0
? opcoesFiliais
: Object.keys(valoresPorMesPorFilial[mesesDisponiveis[0] || ""] || {}));
// Se for CODGRUPO 01, sempre retornar 100% para todas as filiais // Se for CODGRUPO 01, sempre retornar 100% para todas as filiais
if (codigoGrupo === "01") { if (codigoGrupo === "01") {
@ -740,7 +729,7 @@ export default function Teste() {
}); });
return percentuaisPorMesPorFilial; return percentuaisPorMesPorFilial;
}, [mesesDisponiveis, opcoesFiliais, valoresGrupo01PorMesPorFilialMemo, filtrosAplicados, filiaisSelecionadas]); }, [mesesDisponiveis, valoresGrupo01PorMesPorFilialMemo]);
// Memoizar total do grupo 01 // Memoizar total do grupo 01
const totalGrupo01Memo = React.useMemo(() => { const totalGrupo01Memo = React.useMemo(() => {
@ -896,9 +885,16 @@ export default function Teste() {
const valoresGrupo01PorFilial = gruposPorCodigo["01"] ? calcularValoresPorMesPorFilial(gruposPorCodigo["01"]) : {}; const valoresGrupo01PorFilial = gruposPorCodigo["01"] ? calcularValoresPorMesPorFilial(gruposPorCodigo["01"]) : {};
const valoresGrupo02PorFilial = gruposPorCodigo["02"] ? calcularValoresPorMesPorFilial(gruposPorCodigo["02"]) : {}; const valoresGrupo02PorFilial = gruposPorCodigo["02"] ? calcularValoresPorMesPorFilial(gruposPorCodigo["02"]) : {};
// Extrair filiais únicas dos valores calculados
const primeiroMes = mesesDisponiveis[0] || "";
const filiaisDisponiveis = [...new Set([
...Object.keys(valoresGrupo01PorFilial[primeiroMes] || {}),
...Object.keys(valoresGrupo02PorFilial[primeiroMes] || {})
])];
mesesDisponiveis.forEach(mes => { mesesDisponiveis.forEach(mes => {
valoresMargemPorMesPorFilial[mes] = {}; valoresMargemPorMesPorFilial[mes] = {};
opcoesFiliais.forEach(filial => { filiaisDisponiveis.forEach(filial => {
const valor01 = valoresGrupo01PorFilial[mes]?.[filial] || 0; const valor01 = valoresGrupo01PorFilial[mes]?.[filial] || 0;
const valor02 = valoresGrupo02PorFilial[mes]?.[filial] || 0; const valor02 = valoresGrupo02PorFilial[mes]?.[filial] || 0;
valoresMargemPorMesPorFilial[mes][filial] = valor01 - valor02; valoresMargemPorMesPorFilial[mes][filial] = valor01 - valor02;
@ -927,7 +923,7 @@ export default function Teste() {
}); });
return rows; return rows;
}, [data, mesesDisponiveis, expandedGrupos, opcoesFiliais, filtrosAplicados, filiaisSelecionadas, calcularValoresPorMes, calcularValoresPorMesPorFilial, calcularPercentuaisPorMes, calcularPercentuaisPorMesPorFilial, calcularPercentualTotal]); }, [data, mesesDisponiveis, expandedGrupos, calcularValoresPorMes, calcularValoresPorMesPorFilial, calcularPercentuaisPorMes, calcularPercentuaisPorMesPorFilial, calcularPercentualTotal]);
const getRowStyle = React.useCallback((row: HierarchicalRow) => { const getRowStyle = React.useCallback((row: HierarchicalRow) => {
const baseStyle = const baseStyle =