fix: ajuste no calculo totalizador

This commit is contained in:
Alessandro Gonçaalves 2025-12-10 09:34:49 -03:00
parent 900fad9707
commit 0ea85582fa
2 changed files with 45 additions and 11 deletions

View File

@ -52,11 +52,14 @@ export async function GET(request: NextRequest) {
let sql = ''; let sql = '';
const params: any[] = []; const params: any[] = [];
let paramIndex = 1; 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 const prefixo = temJoin ? 'VB.' : ''; // Usar prefixo apenas quando há JOIN
// Se houver filtro por filial, fazer JOIN com FILIAL_CC // Se houver filtro por filial, fazer JOIN com FILIAL_CC
if (codFilial) { if (temJoin) {
sql = `SELECT FC.CODFILIAL, VB.* sql = `SELECT FC.CODFILIAL, VB.*
FROM VB_DRE_FILIAL_DESPESA_ANALITICO VB FROM VB_DRE_FILIAL_DESPESA_ANALITICO VB
INNER JOIN FILIAL_CC FC ON FC.CC = VB.CODIGOCENTROCUSTO 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) // Filtro por filial (usando JOIN com FILIAL_CC)
if (codFilial) { // Se houver múltiplas filiais, usar IN; caso contrário, usar =
sql += ` AND FC.CODFILIAL = :${paramIndex}`; if (temJoin) {
params.push(codFilial); if (filiaisArray.length === 1) {
paramIndex++; // Uma única filial - usar =
console.log('🏢 Adicionando filtro de filial (CODFILIAL):', codFilial); 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) // Filtro por período (usando ANOMESCOMP)

View File

@ -485,7 +485,7 @@ export default function Teste() {
} }
// Determinar CODFILIAL baseado na filial selecionada // 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 = ""; let codFilialFiltro = "";
if (filialSelecionada) { if (filialSelecionada) {
// Se a filial selecionada já é um código numérico, usar diretamente // Se a filial selecionada já é um código numérico, usar diretamente
@ -505,9 +505,30 @@ export default function Teste() {
codFilialFiltro = filialSelecionada; 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 = { const novosFiltros = {
dataInicio: dataInicioFiltro, dataInicio: dataInicioFiltro,
@ -527,7 +548,7 @@ export default function Teste() {
console.log('🎯 Novos filtros para analítico:', novosFiltros); console.log('🎯 Novos filtros para analítico:', novosFiltros);
console.log('📊 É totalizador?', mesSelecionado && !filialSelecionada ? 'SIM' : 'NÃO'); console.log('📊 É totalizador?', mesSelecionado && !filialSelecionada ? 'SIM' : 'NÃO');
setAnaliticoFiltros(novosFiltros); setAnaliticoFiltros(novosFiltros);
}, [data]); }, [data, filiaisSelecionadas, opcoesFiliais]);
const toggleGrupo = useCallback((codigoGrupo: string) => { const toggleGrupo = useCallback((codigoGrupo: string) => {
setExpandedGrupos(prev => { setExpandedGrupos(prev => {