fix: ajuste no calculo totalizador
This commit is contained in:
parent
900fad9707
commit
0ea85582fa
|
|
@ -52,11 +52,14 @@ export async function GET(request: NextRequest) {
|
|||
let sql = '';
|
||||
const params: any[] = [];
|
||||
let paramIndex = 1;
|
||||
const temJoin = !!codFilial;
|
||||
|
||||
// Verificar se há múltiplas filiais (separadas por vírgula)
|
||||
const filiaisArray = codFilial ? codFilial.split(',').map(f => f.trim()).filter(f => f !== '') : [];
|
||||
const temJoin = filiaisArray.length > 0;
|
||||
const prefixo = temJoin ? 'VB.' : ''; // Usar prefixo apenas quando há JOIN
|
||||
|
||||
// Se houver filtro por filial, fazer JOIN com FILIAL_CC
|
||||
if (codFilial) {
|
||||
if (temJoin) {
|
||||
sql = `SELECT FC.CODFILIAL, VB.*
|
||||
FROM VB_DRE_FILIAL_DESPESA_ANALITICO VB
|
||||
INNER JOIN FILIAL_CC FC ON FC.CC = VB.CODIGOCENTROCUSTO
|
||||
|
|
@ -66,11 +69,21 @@ WHERE 1=1`;
|
|||
}
|
||||
|
||||
// Filtro por filial (usando JOIN com FILIAL_CC)
|
||||
if (codFilial) {
|
||||
sql += ` AND FC.CODFILIAL = :${paramIndex}`;
|
||||
params.push(codFilial);
|
||||
paramIndex++;
|
||||
console.log('🏢 Adicionando filtro de filial (CODFILIAL):', codFilial);
|
||||
// Se houver múltiplas filiais, usar IN; caso contrário, usar =
|
||||
if (temJoin) {
|
||||
if (filiaisArray.length === 1) {
|
||||
// Uma única filial - usar =
|
||||
sql += ` AND FC.CODFILIAL = :${paramIndex}`;
|
||||
params.push(filiaisArray[0]);
|
||||
paramIndex++;
|
||||
console.log('🏢 Adicionando filtro de filial única (CODFILIAL):', filiaisArray[0]);
|
||||
} else {
|
||||
// Múltiplas filiais - usar IN
|
||||
const placeholders = filiaisArray.map(() => `:${paramIndex++}`).join(',');
|
||||
sql += ` AND FC.CODFILIAL IN (${placeholders})`;
|
||||
params.push(...filiaisArray);
|
||||
console.log('🏢 Adicionando filtro de múltiplas filiais (CODFILIAL IN):', filiaisArray);
|
||||
}
|
||||
}
|
||||
|
||||
// Filtro por período (usando ANOMESCOMP)
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ export default function Teste() {
|
|||
}
|
||||
|
||||
// Determinar CODFILIAL baseado na filial selecionada
|
||||
// Se é um totalizador (mesSelecionado presente mas filialSelecionada não), deixar vazio para incluir todas as filiais
|
||||
// Se é um totalizador (mesSelecionado presente mas filialSelecionada não), incluir todas as filiais selecionadas
|
||||
let codFilialFiltro = "";
|
||||
if (filialSelecionada) {
|
||||
// Se a filial selecionada já é um código numérico, usar diretamente
|
||||
|
|
@ -505,9 +505,30 @@ export default function Teste() {
|
|||
codFilialFiltro = filialSelecionada;
|
||||
}
|
||||
}
|
||||
} else if (mesSelecionado) {
|
||||
// Se mesSelecionado está presente mas filialSelecionada não, é um totalizador
|
||||
// Incluir todas as filiais selecionadas (ou todas disponíveis se nenhuma estiver selecionada)
|
||||
const filiaisParaTotalizador = filiaisSelecionadas.length > 0
|
||||
? filiaisSelecionadas
|
||||
: opcoesFiliais;
|
||||
|
||||
// Converter nomes de filiais para códigos CODFILIAL
|
||||
const codigosFiliais = filiaisParaTotalizador.map(filial => {
|
||||
if (/^\d+$/.test(filial)) {
|
||||
return filial;
|
||||
} else {
|
||||
const itemComFilial = data.find((item: DREItem) => {
|
||||
const itemFilial = item.filial || item.codfilial || "";
|
||||
return itemFilial === filial;
|
||||
});
|
||||
return itemComFilial?.codfilial || filial;
|
||||
}
|
||||
}).filter(Boolean);
|
||||
|
||||
// Passar como string separada por vírgula para a API processar com IN
|
||||
codFilialFiltro = codigosFiliais.join(',');
|
||||
console.log('📊 Totalizador: incluindo todas as filiais selecionadas:', codigosFiliais);
|
||||
}
|
||||
// Se mesSelecionado está presente mas filialSelecionada não, é um totalizador
|
||||
// Deixar codFilialFiltro vazio para incluir todas as filiais daquele mês
|
||||
|
||||
const novosFiltros = {
|
||||
dataInicio: dataInicioFiltro,
|
||||
|
|
@ -527,7 +548,7 @@ export default function Teste() {
|
|||
console.log('🎯 Novos filtros para analítico:', novosFiltros);
|
||||
console.log('📊 É totalizador?', mesSelecionado && !filialSelecionada ? 'SIM' : 'NÃO');
|
||||
setAnaliticoFiltros(novosFiltros);
|
||||
}, [data]);
|
||||
}, [data, filiaisSelecionadas, opcoesFiliais]);
|
||||
|
||||
const toggleGrupo = useCallback((codigoGrupo: string) => {
|
||||
setExpandedGrupos(prev => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue