commit
36ff3128c1
|
|
@ -210,6 +210,10 @@ export default function Teste() {
|
||||||
const [opcoesCentrosCusto, setOpcoesCentrosCusto] = useState<string[]>([]);
|
const [opcoesCentrosCusto, setOpcoesCentrosCusto] = useState<string[]>([]);
|
||||||
const [opcoesContas, setOpcoesContas] = useState<string[]>([]);
|
const [opcoesContas, setOpcoesContas] = useState<string[]>([]);
|
||||||
|
|
||||||
|
// Estados para filtros de busca nos campos de seleção
|
||||||
|
const [filtroCentroCusto, setFiltroCentroCusto] = useState<string>("");
|
||||||
|
const [filtroConta, setFiltroConta] = useState<string>("");
|
||||||
|
|
||||||
// Estados para analítico
|
// Estados para analítico
|
||||||
const [analiticoFiltros, setAnaliticoFiltros] = useState({
|
const [analiticoFiltros, setAnaliticoFiltros] = useState({
|
||||||
dataInicio: "",
|
dataInicio: "",
|
||||||
|
|
@ -771,63 +775,64 @@ export default function Teste() {
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "18": // Outras Receitas/Despesas = Grupo 14 + 15 + 16 + 17
|
case "19": // Resultado Não Operacional = Grupo 14 + 15 + 16 + 17 + 18
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor14 = obterValorGrupo("14", mes);
|
const valor14 = obterValorGrupo("14", mes);
|
||||||
const valor15 = obterValorGrupo("15", mes);
|
const valor15 = obterValorGrupo("15", mes);
|
||||||
const valor16 = obterValorGrupo("16", mes);
|
const valor16 = obterValorGrupo("16", mes);
|
||||||
const valor17 = obterValorGrupo("17", mes);
|
const valor17 = obterValorGrupo("17", mes);
|
||||||
valoresPorMes[mes] = valor14 + valor15 + valor16 + valor17;
|
const valor18 = obterValorGrupo("18", mes);
|
||||||
|
valoresPorMes[mes] = valor14 + valor15 + valor16 + valor17 + valor18;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "19": // LAIR = Grupo 10 + 13 + 18
|
case "20": // LAIR = Grupo 10 + 13 + 19
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor10 = obterValorGrupo("10", mes);
|
const valor10 = obterValorGrupo("10", mes);
|
||||||
const valor13 = obterValorGrupo("13", mes);
|
const valor13 = obterValorGrupo("13", mes);
|
||||||
const valor18 = obterValorGrupo("18", mes);
|
const valor19 = obterValorGrupo("19", mes);
|
||||||
valoresPorMes[mes] = valor10 + valor13 + valor18;
|
valoresPorMes[mes] = valor10 + valor13 + valor19;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "20": // IR = Se LAIR > 0 calcular 20% e resultado negativo (*-1), se não 0
|
case "21": // IR = Se LAIR > 0 calcular 20% e resultado negativo (*-1), se não 0
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
if (valor19 > 0) {
|
if (valor20 > 0) {
|
||||||
valoresPorMes[mes] = (valor19 * 0.20) * -1;
|
valoresPorMes[mes] = (valor20 * 0.20) * -1;
|
||||||
} else {
|
} else {
|
||||||
valoresPorMes[mes] = 0;
|
valoresPorMes[mes] = 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "21": // CSLL = Se LAIR > 0 calcular 9% e resultado negativo (*-1), se não 0
|
case "22": // CSLL = Se LAIR > 0 calcular 9% e resultado negativo (*-1), se não 0
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
if (valor19 > 0) {
|
if (valor20 > 0) {
|
||||||
valoresPorMes[mes] = (valor19 * 0.09) * -1;
|
valoresPorMes[mes] = (valor20 * 0.09) * -1;
|
||||||
} else {
|
} else {
|
||||||
valoresPorMes[mes] = 0;
|
valoresPorMes[mes] = 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "22": // Lucro Líquido = Grupo 19 + 20 + 21
|
case "23": // Lucro Líquido = Grupo 20 + 21 + 22
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
|
||||||
const valor20 = obterValorGrupo("20", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
const valor21 = obterValorGrupo("21", mes);
|
const valor21 = obterValorGrupo("21", mes);
|
||||||
valoresPorMes[mes] = valor19 + valor20 + valor21;
|
const valor22 = obterValorGrupo("22", mes);
|
||||||
|
valoresPorMes[mes] = valor20 + valor21 + valor22;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "24": // EBITDA = Grupo 19 - (13 + 18 + 23)
|
case "25": // EBITDA = Grupo 20 - (13 + 19 + 24)
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
const valor13 = obterValorGrupo("13", mes);
|
const valor13 = obterValorGrupo("13", mes);
|
||||||
const valor18 = obterValorGrupo("18", mes);
|
const valor19 = obterValorGrupo("19", mes);
|
||||||
const valor23 = obterValorGrupo("23", mes);
|
const valor24 = obterValorGrupo("24", mes);
|
||||||
valoresPorMes[mes] = valor19 - (valor13 + valor18 + valor23);
|
valoresPorMes[mes] = valor20 - (valor13 + valor19 + valor24);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -843,7 +848,7 @@ export default function Teste() {
|
||||||
|
|
||||||
// Verificar se é um grupo calculado
|
// Verificar se é um grupo calculado
|
||||||
const codigoGrupo = items[0]?.codgrupo || "";
|
const codigoGrupo = items[0]?.codgrupo || "";
|
||||||
const isCalculado = ["03", "05", "07", "10", "13", "18", "19", "20", "21", "22", "24"].includes(codigoGrupo);
|
const isCalculado = ["03", "05", "07", "10", "13", "19", "20", "21", "22", "23", "25"].includes(codigoGrupo);
|
||||||
|
|
||||||
let valoresGrupoPorMes;
|
let valoresGrupoPorMes;
|
||||||
if (isCalculado) {
|
if (isCalculado) {
|
||||||
|
|
@ -1080,6 +1085,10 @@ export default function Teste() {
|
||||||
setCentrosCustoSelecionados([]);
|
setCentrosCustoSelecionados([]);
|
||||||
setContasSelecionadas([]);
|
setContasSelecionadas([]);
|
||||||
|
|
||||||
|
// Limpar filtros de busca
|
||||||
|
setFiltroCentroCusto("");
|
||||||
|
setFiltroConta("");
|
||||||
|
|
||||||
// Limpar dados da tabela
|
// Limpar dados da tabela
|
||||||
setData([]);
|
setData([]);
|
||||||
setDadosFiltrados([]);
|
setDadosFiltrados([]);
|
||||||
|
|
@ -1088,6 +1097,9 @@ export default function Teste() {
|
||||||
setIsAllExpanded(false);
|
setIsAllExpanded(false);
|
||||||
setOrdemHierarquiaContasPrimeiro(false);
|
setOrdemHierarquiaContasPrimeiro(false);
|
||||||
|
|
||||||
|
// Fechar o sheet de filtros
|
||||||
|
setIsFilterOpen(false);
|
||||||
|
|
||||||
// Recarregar opções e selecionar todos novamente
|
// Recarregar opções e selecionar todos novamente
|
||||||
carregarPeriodosDisponiveis();
|
carregarPeriodosDisponiveis();
|
||||||
};
|
};
|
||||||
|
|
@ -1342,63 +1354,64 @@ export default function Teste() {
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "18": // Outras Receitas/Despesas = Grupo 14 + 15 + 16 + 17
|
case "19": // Resultado Não Operacional = Grupo 14 + 15 + 16 + 17 + 18
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor14 = obterValorGrupo("14", mes);
|
const valor14 = obterValorGrupo("14", mes);
|
||||||
const valor15 = obterValorGrupo("15", mes);
|
const valor15 = obterValorGrupo("15", mes);
|
||||||
const valor16 = obterValorGrupo("16", mes);
|
const valor16 = obterValorGrupo("16", mes);
|
||||||
const valor17 = obterValorGrupo("17", mes);
|
const valor17 = obterValorGrupo("17", mes);
|
||||||
valoresPorMes[mes] = valor14 + valor15 + valor16 + valor17;
|
const valor18 = obterValorGrupo("18", mes);
|
||||||
|
valoresPorMes[mes] = valor14 + valor15 + valor16 + valor17 + valor18;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "19": // LAIR = Grupo 10 + 13 + 18
|
case "20": // LAIR = Grupo 10 + 13 + 19
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor10 = obterValorGrupo("10", mes);
|
const valor10 = obterValorGrupo("10", mes);
|
||||||
const valor13 = obterValorGrupo("13", mes);
|
const valor13 = obterValorGrupo("13", mes);
|
||||||
const valor18 = obterValorGrupo("18", mes);
|
const valor19 = obterValorGrupo("19", mes);
|
||||||
valoresPorMes[mes] = valor10 + valor13 + valor18;
|
valoresPorMes[mes] = valor10 + valor13 + valor19;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "20": // IR = Se LAIR > 0 calcular 20% e resultado negativo (*-1), se não 0
|
case "21": // IR = Se LAIR > 0 calcular 20% e resultado negativo (*-1), se não 0
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
if (valor19 > 0) {
|
if (valor20 > 0) {
|
||||||
valoresPorMes[mes] = (valor19 * 0.20) * -1;
|
valoresPorMes[mes] = (valor20 * 0.20) * -1;
|
||||||
} else {
|
} else {
|
||||||
valoresPorMes[mes] = 0;
|
valoresPorMes[mes] = 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "21": // CSLL = Se LAIR > 0 calcular 9% e resultado negativo (*-1), se não 0
|
case "22": // CSLL = Se LAIR > 0 calcular 9% e resultado negativo (*-1), se não 0
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
if (valor19 > 0) {
|
if (valor20 > 0) {
|
||||||
valoresPorMes[mes] = (valor19 * 0.09) * -1;
|
valoresPorMes[mes] = (valor20 * 0.09) * -1;
|
||||||
} else {
|
} else {
|
||||||
valoresPorMes[mes] = 0;
|
valoresPorMes[mes] = 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "22": // Lucro Líquido = Grupo 19 + 20 + 21
|
case "23": // Lucro Líquido = Grupo 20 + 21 + 22
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
|
||||||
const valor20 = obterValorGrupo("20", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
const valor21 = obterValorGrupo("21", mes);
|
const valor21 = obterValorGrupo("21", mes);
|
||||||
valoresPorMes[mes] = valor19 + valor20 + valor21;
|
const valor22 = obterValorGrupo("22", mes);
|
||||||
|
valoresPorMes[mes] = valor20 + valor21 + valor22;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "24": // EBITDA = Grupo 19 - (13 + 18 + 23)
|
case "25": // EBITDA = Grupo 20 - (13 + 19 + 24)
|
||||||
mesesDisponiveis.forEach(mes => {
|
mesesDisponiveis.forEach(mes => {
|
||||||
const valor19 = obterValorGrupo("19", mes);
|
const valor20 = obterValorGrupo("20", mes);
|
||||||
const valor13 = obterValorGrupo("13", mes);
|
const valor13 = obterValorGrupo("13", mes);
|
||||||
const valor18 = obterValorGrupo("18", mes);
|
const valor19 = obterValorGrupo("19", mes);
|
||||||
const valor23 = obterValorGrupo("23", mes);
|
const valor24 = obterValorGrupo("24", mes);
|
||||||
valoresPorMes[mes] = valor19 - (valor13 + valor18 + valor23);
|
valoresPorMes[mes] = valor20 - (valor13 + valor19 + valor24);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1414,7 +1427,7 @@ export default function Teste() {
|
||||||
|
|
||||||
// Verificar se é um grupo calculado
|
// Verificar se é um grupo calculado
|
||||||
const codigoGrupo = items[0]?.codgrupo || "";
|
const codigoGrupo = items[0]?.codgrupo || "";
|
||||||
const isCalculado = ["03", "05", "07", "10", "13", "18", "19", "20", "21", "22", "24"].includes(codigoGrupo);
|
const isCalculado = ["03", "05", "07", "10", "13", "19", "20", "21", "22", "23", "25"].includes(codigoGrupo);
|
||||||
|
|
||||||
let valoresPorMes;
|
let valoresPorMes;
|
||||||
if (isCalculado) {
|
if (isCalculado) {
|
||||||
|
|
@ -1968,8 +1981,22 @@ export default function Teste() {
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{/* Input de filtro para Centro de Custo */}
|
||||||
|
<Input
|
||||||
|
placeholder="Filtrar centros de custo..."
|
||||||
|
value={filtroCentroCusto}
|
||||||
|
onChange={(e) => setFiltroCentroCusto(e.target.value)}
|
||||||
|
className="h-8 text-sm"
|
||||||
|
/>
|
||||||
<div className="max-h-32 overflow-y-auto border rounded-md p-1 space-y-1">
|
<div className="max-h-32 overflow-y-auto border rounded-md p-1 space-y-1">
|
||||||
{opcoesCentrosCusto.map(centro => (
|
{opcoesCentrosCusto
|
||||||
|
.filter(centro => {
|
||||||
|
if (!filtroCentroCusto) return true;
|
||||||
|
const termo = filtroCentroCusto.toLowerCase();
|
||||||
|
const nomeCompleto = `${centro}${codigosCentrosCusto[centro] ? ` - ${codigosCentrosCusto[centro]}` : ''}`;
|
||||||
|
return nomeCompleto.toLowerCase().includes(termo);
|
||||||
|
})
|
||||||
|
.map(centro => (
|
||||||
<div key={centro} className="flex items-center space-x-1">
|
<div key={centro} className="flex items-center space-x-1">
|
||||||
<Checkbox
|
<Checkbox
|
||||||
id={`centro-${centro}`}
|
id={`centro-${centro}`}
|
||||||
|
|
@ -2017,8 +2044,22 @@ export default function Teste() {
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{/* Input de filtro para Conta */}
|
||||||
|
<Input
|
||||||
|
placeholder="Filtrar contas..."
|
||||||
|
value={filtroConta}
|
||||||
|
onChange={(e) => setFiltroConta(e.target.value)}
|
||||||
|
className="h-8 text-sm"
|
||||||
|
/>
|
||||||
<div className="max-h-32 overflow-y-auto border rounded-md p-1 space-y-1">
|
<div className="max-h-32 overflow-y-auto border rounded-md p-1 space-y-1">
|
||||||
{opcoesContas.map(conta => (
|
{opcoesContas
|
||||||
|
.filter(conta => {
|
||||||
|
if (!filtroConta) return true;
|
||||||
|
const termo = filtroConta.toLowerCase();
|
||||||
|
const nomeCompleto = `${conta}${codigosContas[conta] ? ` - ${codigosContas[conta]}` : ''}`;
|
||||||
|
return nomeCompleto.toLowerCase().includes(termo);
|
||||||
|
})
|
||||||
|
.map(conta => (
|
||||||
<div key={conta} className="flex items-center space-x-1">
|
<div key={conta} className="flex items-center space-x-1">
|
||||||
<Checkbox
|
<Checkbox
|
||||||
id={`conta-${conta}`}
|
id={`conta-${conta}`}
|
||||||
|
|
@ -2108,9 +2149,9 @@ export default function Teste() {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<SheetFooter className="flex gap-2">
|
<SheetFooter className="flex gap-2">
|
||||||
{/* <Button variant="outline" onClick={limparFiltros} className="flex-1">
|
<Button variant="outline" onClick={limparFiltros} className="flex-1">
|
||||||
Limpar filtros
|
Limpar Filtros
|
||||||
</Button> */}
|
</Button>
|
||||||
<Button variant="outline" onClick={() => setIsFilterOpen(false)} className="flex-1">
|
<Button variant="outline" onClick={() => setIsFilterOpen(false)} className="flex-1">
|
||||||
Cancelar
|
Cancelar
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
||||||
|
|
@ -120,13 +120,13 @@ export async function GET(request: NextRequest) {
|
||||||
// Transformar os dados do Oracle para o formato esperado pelo componente
|
// Transformar os dados do Oracle para o formato esperado pelo componente
|
||||||
const transformedData = data.map((item: any) => {
|
const transformedData = data.map((item: any) => {
|
||||||
// Debug dos valores monetários
|
// Debug dos valores monetários
|
||||||
console.log('🔍 Item original:', {
|
// console.log('🔍 Item original:', {
|
||||||
VLREALIZADO: item.VLREALIZADO,
|
// VLREALIZADO: item.VLREALIZADO,
|
||||||
VLPREVISTO: item.VLPREVISTO,
|
// VLPREVISTO: item.VLPREVISTO,
|
||||||
VLCONFIRMADO: item.VLCONFIRMADO,
|
// VLCONFIRMADO: item.VLCONFIRMADO,
|
||||||
VLPAGO: item.VLPAGO,
|
// VLPAGO: item.VLPAGO,
|
||||||
tipo_VLREALIZADO: typeof item.VLREALIZADO
|
// tipo_VLREALIZADO: typeof item.VLREALIZADO
|
||||||
});
|
// });
|
||||||
|
|
||||||
return {
|
return {
|
||||||
codigo_grupo: item.CODGRUPO || "",
|
codigo_grupo: item.CODGRUPO || "",
|
||||||
|
|
|
||||||
|
|
@ -170,110 +170,111 @@ function criarGruposCalculados(dados: any[]) {
|
||||||
isCalculado: true
|
isCalculado: true
|
||||||
});
|
});
|
||||||
|
|
||||||
// 18 - Outras Receitas / Despesas (14 + 15 + 16 + 17)
|
// 19 - Resultado Não Operacional (14 + 15 + 16 + 17 + 18)
|
||||||
const prejuizosPerdas = valoresPorGrupo['14'] || 0;
|
const prejuizosPerdas = valoresPorGrupo['14'] || 0;
|
||||||
const inativas = valoresPorGrupo['15'] || 0;
|
const inativas = valoresPorGrupo['15'] || 0;
|
||||||
const diretoria = valoresPorGrupo['16'] || 0;
|
const diretoria = valoresPorGrupo['16'] || 0;
|
||||||
const lancamentosSemCC = valoresPorGrupo['17'] || 0;
|
const lancamentosSemCC = valoresPorGrupo['17'] || 0;
|
||||||
const outrasReceitasDespesas = prejuizosPerdas + inativas + diretoria + lancamentosSemCC;
|
const receitasDespesasNaoOperacional = valoresPorGrupo['18'] || 0;
|
||||||
|
const resultadoNaoOperacional = prejuizosPerdas + inativas + diretoria + lancamentosSemCC + receitasDespesasNaoOperacional;
|
||||||
|
|
||||||
gruposCalculados.push({
|
gruposCalculados.push({
|
||||||
codfilial: "001",
|
codfilial: "001",
|
||||||
data_competencia: mes,
|
data_competencia: mes,
|
||||||
data_cai: mes,
|
data_cai: mes,
|
||||||
grupo: "18 - OUTRAS RECEITAS / DESPESAS",
|
grupo: "19 - RESULTADO NÃO OPERACIONAL",
|
||||||
subgrupo: "CALCULADO",
|
subgrupo: "CALCULADO",
|
||||||
centro_custo: "CALCULADO",
|
centro_custo: "CALCULADO",
|
||||||
codigo_conta: 0,
|
codigo_conta: 0,
|
||||||
conta: "OUTRAS RECEITAS / DESPESAS",
|
conta: "RESULTADO NÃO OPERACIONAL",
|
||||||
valor: outrasReceitasDespesas.toString(),
|
valor: resultadoNaoOperacional.toString(),
|
||||||
codgrupo: "18",
|
codgrupo: "19",
|
||||||
isCalculado: true
|
isCalculado: true
|
||||||
});
|
});
|
||||||
|
|
||||||
// 19 - LAIR (10 + 13 + 18)
|
// 20 - LAIR (10 + 13 + 19)
|
||||||
const lair = resultadoOperacional + resultadoFinanceiro + outrasReceitasDespesas;
|
const lair = resultadoOperacional + resultadoFinanceiro + resultadoNaoOperacional;
|
||||||
|
|
||||||
gruposCalculados.push({
|
gruposCalculados.push({
|
||||||
codfilial: "001",
|
codfilial: "001",
|
||||||
data_competencia: mes,
|
data_competencia: mes,
|
||||||
data_cai: mes,
|
data_cai: mes,
|
||||||
grupo: "19 - LAIR",
|
grupo: "20 - LAIR",
|
||||||
subgrupo: "CALCULADO",
|
subgrupo: "CALCULADO",
|
||||||
centro_custo: "CALCULADO",
|
centro_custo: "CALCULADO",
|
||||||
codigo_conta: 0,
|
codigo_conta: 0,
|
||||||
conta: "LAIR",
|
conta: "LAIR",
|
||||||
valor: lair.toString(),
|
valor: lair.toString(),
|
||||||
codgrupo: "19",
|
codgrupo: "20",
|
||||||
isCalculado: true
|
isCalculado: true
|
||||||
});
|
});
|
||||||
|
|
||||||
// 20 - IR (se LAIR > 0 calcular 20% e resultado negativo, se não 0)
|
// 21 - IR (se LAIR > 0 calcular 20% e resultado negativo, se não 0)
|
||||||
const ir = lair > 0 ? -(lair * 0.20) : 0;
|
const ir = lair > 0 ? -(lair * 0.20) : 0;
|
||||||
|
|
||||||
gruposCalculados.push({
|
gruposCalculados.push({
|
||||||
codfilial: "001",
|
codfilial: "001",
|
||||||
data_competencia: mes,
|
data_competencia: mes,
|
||||||
data_cai: mes,
|
data_cai: mes,
|
||||||
grupo: "20 - IR",
|
grupo: "21 - IR",
|
||||||
subgrupo: "CALCULADO",
|
subgrupo: "CALCULADO",
|
||||||
centro_custo: "CALCULADO",
|
centro_custo: "CALCULADO",
|
||||||
codigo_conta: 0,
|
codigo_conta: 0,
|
||||||
conta: "IMPOSTO DE RENDA",
|
conta: "IMPOSTO DE RENDA",
|
||||||
valor: ir.toString(),
|
valor: ir.toString(),
|
||||||
codgrupo: "20",
|
codgrupo: "21",
|
||||||
isCalculado: true
|
isCalculado: true
|
||||||
});
|
});
|
||||||
|
|
||||||
// 21 - CSLL (se LAIR > 0 calcular 9% e resultado negativo, se não 0)
|
// 22 - CSLL (se LAIR > 0 calcular 9% e resultado negativo, se não 0)
|
||||||
const csll = lair > 0 ? -(lair * 0.09) : 0;
|
const csll = lair > 0 ? -(lair * 0.09) : 0;
|
||||||
|
|
||||||
gruposCalculados.push({
|
gruposCalculados.push({
|
||||||
codfilial: "001",
|
codfilial: "001",
|
||||||
data_competencia: mes,
|
data_competencia: mes,
|
||||||
data_cai: mes,
|
data_cai: mes,
|
||||||
grupo: "21 - CSLL",
|
grupo: "22 - CSLL",
|
||||||
subgrupo: "CALCULADO",
|
subgrupo: "CALCULADO",
|
||||||
centro_custo: "CALCULADO",
|
centro_custo: "CALCULADO",
|
||||||
codigo_conta: 0,
|
codigo_conta: 0,
|
||||||
conta: "CONTRIBUIÇÃO SOCIAL SOBRE LUCRO LÍQUIDO",
|
conta: "CONTRIBUIÇÃO SOCIAL SOBRE LUCRO LÍQUIDO",
|
||||||
valor: csll.toString(),
|
valor: csll.toString(),
|
||||||
codgrupo: "21",
|
codgrupo: "22",
|
||||||
isCalculado: true
|
isCalculado: true
|
||||||
});
|
});
|
||||||
|
|
||||||
// 22 - Lucro Líquido (19 + 20 + 21)
|
// 23 - Lucro Líquido (20 + 21 + 22)
|
||||||
const lucroLiquido = lair + ir + csll;
|
const lucroLiquido = lair + ir + csll;
|
||||||
|
|
||||||
gruposCalculados.push({
|
gruposCalculados.push({
|
||||||
codfilial: "001",
|
codfilial: "001",
|
||||||
data_competencia: mes,
|
data_competencia: mes,
|
||||||
data_cai: mes,
|
data_cai: mes,
|
||||||
grupo: "22 - LUCRO LÍQUIDO",
|
grupo: "23 - LUCRO LÍQUIDO",
|
||||||
subgrupo: "CALCULADO",
|
subgrupo: "CALCULADO",
|
||||||
centro_custo: "CALCULADO",
|
centro_custo: "CALCULADO",
|
||||||
codigo_conta: 0,
|
codigo_conta: 0,
|
||||||
conta: "LUCRO LÍQUIDO",
|
conta: "LUCRO LÍQUIDO",
|
||||||
valor: lucroLiquido.toString(),
|
valor: lucroLiquido.toString(),
|
||||||
codgrupo: "22",
|
codgrupo: "23",
|
||||||
isCalculado: true
|
isCalculado: true
|
||||||
});
|
});
|
||||||
|
|
||||||
// 24 - EBITDA (19 - (13 + 18 + 23))
|
// 25 - EBITDA (20 - (13 + 19 + 24))
|
||||||
const despesaTributaria = valoresPorGrupo['23'] || 0;
|
const despesaTributaria = valoresPorGrupo['24'] || 0;
|
||||||
const ebitda = lair - (resultadoFinanceiro + outrasReceitasDespesas + despesaTributaria);
|
const ebitda = lair - (resultadoFinanceiro + resultadoNaoOperacional + despesaTributaria);
|
||||||
|
|
||||||
gruposCalculados.push({
|
gruposCalculados.push({
|
||||||
codfilial: "001",
|
codfilial: "001",
|
||||||
data_competencia: mes,
|
data_competencia: mes,
|
||||||
data_cai: mes,
|
data_cai: mes,
|
||||||
grupo: "24 - EBITDA",
|
grupo: "25 - EBITDA",
|
||||||
subgrupo: "CALCULADO",
|
subgrupo: "CALCULADO",
|
||||||
centro_custo: "CALCULADO",
|
centro_custo: "CALCULADO",
|
||||||
codigo_conta: 0,
|
codigo_conta: 0,
|
||||||
conta: "EBITDA",
|
conta: "EBITDA",
|
||||||
valor: ebitda.toString(),
|
valor: ebitda.toString(),
|
||||||
codgrupo: "24",
|
codgrupo: "25",
|
||||||
isCalculado: true
|
isCalculado: true
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue