fix: correção da ordenação por CODGRUPO

This commit is contained in:
Alessandro Gonçaalves 2025-11-19 17:31:54 -03:00
parent 6ce426222e
commit 64d4397847
1 changed files with 146 additions and 108 deletions

View File

@ -775,18 +775,36 @@ export default function Teste() {
const rows: HierarchicalRow[] = [];
// Nova hierarquia: [entidade, direto/indireto, cc, conta]
// Agrupar por entidade
const entidades = data.reduce((acc, item) => {
// Agrupar primeiro por CODGRUPO, depois por entidade
const gruposPorCodigo = data.reduce((acc, item) => {
const codgrupo = item.codgrupo || "";
if (!codgrupo) return acc;
if (!acc[codgrupo]) {
acc[codgrupo] = {};
}
const entidade = item.entidades || "";
if (!entidade) return acc;
if (!acc[entidade]) {
acc[entidade] = [];
if (!acc[codgrupo][entidade]) {
acc[codgrupo][entidade] = [];
}
acc[entidade].push(item);
acc[codgrupo][entidade].push(item);
return acc;
}, {} as Record<string, DREItem[]>);
}, {} as Record<string, Record<string, DREItem[]>>);
// Ordenar entidades alfabeticamente
// Ordenar por CODGRUPO (numericamente), depois por entidade (alfabeticamente)
const sortedGrupos = Object.entries(gruposPorCodigo).sort(([codA], [codB]) => {
// Ordenar numericamente por CODGRUPO
const numA = parseInt(codA) || 0;
const numB = parseInt(codB) || 0;
if (numA !== numB) {
return numA - numB;
}
// Se não for numérico, ordenar alfabeticamente
return codA.localeCompare(codB);
});
sortedGrupos.forEach(([codgrupo, entidades]) => {
// Ordenar entidades dentro do grupo alfabeticamente
const sortedEntidades = Object.entries(entidades).sort(([entA], [entB]) =>
entA.localeCompare(entB)
);
@ -957,6 +975,7 @@ export default function Teste() {
});
});
});
});
return rows;
};
@ -1577,18 +1596,36 @@ export default function Teste() {
const rows: HierarchicalRow[] = [];
// Nova hierarquia: [entidade, direto/indireto, cc, conta]
// Agrupar por entidade
const entidades = data.reduce((acc, item) => {
// Agrupar primeiro por CODGRUPO, depois por entidade
const gruposPorCodigo = data.reduce((acc, item) => {
const codgrupo = item.codgrupo || "";
if (!codgrupo) return acc;
if (!acc[codgrupo]) {
acc[codgrupo] = {};
}
const entidade = item.entidades || "";
if (!entidade) return acc;
if (!acc[entidade]) {
acc[entidade] = [];
if (!acc[codgrupo][entidade]) {
acc[codgrupo][entidade] = [];
}
acc[entidade].push(item);
acc[codgrupo][entidade].push(item);
return acc;
}, {} as Record<string, DREItem[]>);
}, {} as Record<string, Record<string, DREItem[]>>);
// Ordenar entidades alfabeticamente
// Ordenar por CODGRUPO (numericamente), depois por entidade (alfabeticamente)
const sortedGrupos = Object.entries(gruposPorCodigo).sort(([codA], [codB]) => {
// Ordenar numericamente por CODGRUPO
const numA = parseInt(codA) || 0;
const numB = parseInt(codB) || 0;
if (numA !== numB) {
return numA - numB;
}
// Se não for numérico, ordenar alfabeticamente
return codA.localeCompare(codB);
});
sortedGrupos.forEach(([codgrupo, entidades]) => {
// Ordenar entidades dentro do grupo alfabeticamente
const sortedEntidades = Object.entries(entidades).sort(([entA], [entB]) =>
entA.localeCompare(entB)
);
@ -1777,6 +1814,7 @@ export default function Teste() {
});
}
});
});
return rows;
};