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