commit
40279a8b18
|
|
@ -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 =
|
||||
|
|
|
|||
Loading…
Reference in New Issue