GERADOR DE PROPOSTA
PROPOSTA COMERCIAL
Sistema de Energia Solar com BESS
Geração Solar +
Armazenamento
Cliente
Endereço
Proposta
Data
Potência instalada
kWp
Armazenamento
kWh
Painéis
un
Inversores
un
Solução Proposta
Item Descrição Qtd Valor Unit. Total
Investimento Total

Obs.: Para utilização do benefício de mitigação de risco de falta de energia, faz-se necessário instalar quadro de transferência automática e adequação da infraestrutura elétrica, a ser orçado à parte.

Benefícios do Sistema
💡
Redução de Custos
Redução de consumo na ponta, encargos de demanda e ultrapassagem de reativos.
🔋
Backup Energético
Resposta automática em até 20 ms. Evita perdas em falhas da concessionária.
📈
Peak Shaving
Uso da energia armazenada nos horários de ponta, evitando tarifas mais altas.
♻️
ESG & Sustentabilidade
Redução de emissões de CO₂ e fortalecimento da imagem corporativa.
Aumento de Carga
Possibilidade de expansão de carga sem alteração do contrato de demanda.
🏆
Competitividade
Liderança de mercado com custo operacional de energia significativamente menor.
Especificações do BESS — Huawei LUNA2000
Sistema de Armazenamento
Capacidade nominal215 kWh
Eficiência de ciclo (RTE)91,3%
Profund. de descarga0 — 100%
Temperatura operação-30°C a 55°C
Altitude máxima4.000 m
Tecnologia de célulaLFP
PCS e Garantias
Potência PCS108 kW
Tensão AC380/400/415 V 3F
Grau de proteçãoIP55
Supressão de incêndioAerosol + exaustão
Garantia do produto5 anos
Ciclos garantidos7.300 ciclos
Análise de Investimento
Retorno anual estimado
% ao ano
Payback estimado
anos
Economia anual estimada
R$ / ano
VPL (25 anos)
R$
TIR estimada
% ao ano
Retorno total (25 anos)
R$
Fluxo de Caixa Acumulado
Fluxo de caixa acumulado do projeto — horizonte de 25 anos
Premissas Consideradas
  • Consumidor cativo com modalidade tarifária verde
  • Retorno financeiro calculado com base no consumo no horário de ponta
  • Distâncias de cabeamento para instalação do BESS de 10 m
  • Simultaneidade de geração em relação ao consumo considerada
  • Custos de O&M de 1,5% do CAPEX ao ano incluídos no fluxo
  • Reajuste tarifário anual de 5% ao ano projetado
  • Sujeito a visita técnica para validação das premissas
Condições Comerciais
  • Pagamento conforme eventograma de medição acordado entre as partes
  • Prazo de entrega estabelecido em cronograma acordado entre as partes
  • Validade da proposta: 10 dias úteis
  • Projeto e homologação perante a CEMIG incluídos no escopo
  • Garantia de produto: 5 anos para BESS, 25 anos de performance para módulos
const kwp = (p * 610 / 1000).toFixed(1); const kwh = b * 215; const total = totalInvestimento(); const roi = ((econAnual / total) * 100).toFixed(1); const payback = (total / econAnual).toFixed(1); const cashflows = computeCashflow(); const irr = calcIRR(cashflows) * 100; const npv = calcNPV(cashflows, 0.08); const totalReturn = cashflows[anos] + total; // Cover document.getElementById('cv-client').textContent = getStr('clientName'); document.getElementById('cv-addr').textContent = getStr('clientAddr'); document.getElementById('cv-ptc').textContent = getStr('ptcCode'); document.getElementById('cv-date').textContent = new Date().toLocaleDateString('pt-BR'); document.getElementById('footer-ptc').textContent = getStr('ptcCode'); // KPIs document.getElementById('kpi-kwp').textContent = kwp; document.getElementById('kpi-kwh').textContent = kwh; document.getElementById('kpi-paineis').textContent = p; document.getElementById('kpi-inv').textContent = inv; // Spec document.getElementById('spec-cap').textContent = kwh + ' kWh'; document.getElementById('spec-pcs').textContent = (108 * b) + ' kW'; // Equipment table const rows = [ ['01', `Módulo FV Bifacial Dual-Glass Astronergy 610W`, p, getVal('precoPainel')], ['02', `Inversor Huawei SUN2000-25KTL-M3`, inv, getVal('precoInversor')], ['03', `SmartLogger3000C01 Huawei`, 1, 0], ['04', `BESS Huawei LUNA2000-215kWh`, b, getVal('precoBESS')], ['05', `Material Elétrico`, 1, getVal('precoEletrico')], ['06', `Estrutura Metálica`, p, getVal('precoEstrutura')], ['07', `Projeto e Homologação na CEMIG`, 1, getVal('precoProj')], ['08', `Instalação do Sistema`, 1, getVal('precoInstalacao')], ]; document.getElementById('eq-tbody').innerHTML = rows.map(([n, d, q, u]) => { const t = q * u; return ` ${n} ${d} ${q} ${u > 0 ? 'R$ ' + fmt(u) : '—'} ${t > 0 ? 'R$ ' + fmt(t) : '—'} `; }).join(''); document.getElementById('total-investimento').textContent = 'R$ ' + fmt(total); // Financial document.getElementById('fin-roi').textContent = roi + '%'; document.getElementById('fin-payback').textContent = payback; document.getElementById('fin-econ').textContent = fmtInt(econAnual); document.getElementById('fin-vpl').textContent = 'R$ ' + fmtInt(npv); document.getElementById('fin-tir').textContent = irr.toFixed(1) + '%'; document.getElementById('fin-total').textContent = 'R$ ' + fmtInt(totalReturn); // Premissas document.getElementById('prem-om').textContent = om + '%'; document.getElementById('prem-reajuste').textContent = reajuste + '%'; document.getElementById('chart-anos').textContent = anos; // Chart const labels = cashflows.map((_, i) => i === 0 ? 'Ano 0' : 'Ano ' + i); const colors = cashflows.map(v => v >= 0 ? '#00c896' : '#e24b4a'); if (fluxoChart) fluxoChart.destroy(); const ctx = document.getElementById('fluxoChart').getContext('2d'); // zero line annotation const zeroPlugin = { id: 'zeroLine', afterDraw(chart) { const { ctx, scales: { y } } = chart; if (y.min < 0 && y.max > 0) { const yZero = y.getPixelForValue(0); ctx.save(); ctx.strokeStyle = '#e24b4a'; ctx.lineWidth = 1.5; ctx.setLineDash([6, 4]); ctx.beginPath(); ctx.moveTo(chart.chartArea.left, yZero); ctx.lineTo(chart.chartArea.right, yZero); ctx.stroke(); ctx.restore(); } } }; fluxoChart = new Chart(ctx, { type: 'line', plugins: [zeroPlugin], data: { labels, datasets: [{ label: 'Fluxo acumulado (R$)', data: cashflows, borderColor: '#00c896', backgroundColor: 'rgba(0,200,150,0.08)', borderWidth: 2.5, pointRadius: anos <= 15 ? 4 : 2, pointBackgroundColor: colors, fill: true, tension: 0.3, }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false }, tooltip: { callbacks: { label: ctx => ' R$ ' + fmtInt(ctx.parsed.y) } } }, scales: { x: { ticks: { maxTicksLimit: 10, font: { size: 11 }, color: '#6b7a9b', autoSkip: true, }, grid: { color: 'rgba(0,0,0,0.05)' } }, y: { ticks: { font: { size: 11 }, color: '#6b7a9b