/* Site DTF — Cart totals and the order summary. Extracted verbatim from the single inline script in web/index.html. Loaded as classic scripts in the order listed there: they share one global scope and run top to bottom, exactly as the original did. */ // ── carrinho let itemAtual=null; function limpaPaineis(){ ['qual','prev'].forEach(id=>$(id).classList.remove('on')); if(!pedido.length){ $('carr').classList.remove('on'); } } // O carrinho junta itens de produtos diferentes e cobra uma vez só. function pintaPedido(){ $('itens').innerHTML = pedido.map((it,i)=> '
'+escapeHTML(it.tit)+''+escapeHTML(it.desc)+'
'+ '
'+rs(it.total)+'
'+ '
').join(''); $('itens').querySelectorAll('[data-rmi]').forEach(b=>b.addEventListener('click',()=>{ pedido.splice(+b.dataset.rmi,1); pintaPedido(); })); const itens = pedido.reduce((t,it)=>t+it.total,0) + (itemAtual? itemAtual.total : 0); const frete = entrega.tipo==='frete' && entrega.cotado ? entrega.valor : 0; const soma = itens + frete; const n = pedido.length + (itemAtual?1:0); const eco = [...pedido, ...(itemAtual?[itemAtual]:[])] .reduce((t,it)=>t+(TABELA[it.modo]-it.unit)*it.cob, 0); $('resLin').innerHTML = '
'+n+(n===1?' item':' itens')+''+rs(itens+eco)+'
'+ (eco>0.01? '
Desconto pela nota'+ '− '+rs(eco)+'
' : '')+ '
Frete'+ (entrega.tipo==='retira' ? 'Grátis' : entrega.cotado ? rs(frete) : 'a cotar')+'
'+ '
Revisão e reencaixe'+ 'Grátis
'; $('carrTot').textContent=rs(soma); $('bPagar').textContent = (pedido.length + (itemAtual?1:0))>1 ? 'Pagar os '+(pedido.length+(itemAtual?1:0))+' itens de uma vez' : 'Ir para o pagamento'; if(pedido.length || itemAtual) $('carr').classList.add('on'); if($('cartLink')) $('cartLink').textContent='Carrinho ('+n+')'; window.dispatchEvent(new Event('dtf-cart-changed')); } function carrinho(){ const base=precoBase(nota), cob=cobrar(metros); const unit=base, tot=cob*unit, sobra=+(cob-metros).toFixed(2); $('carr').classList.add('on'); let l='
'+MODOS[modo].tit+''+rs(base)+'/m
'; { const teto=TABELA[modo], eco=(teto-base)*cob; l = '
'+MODOS[modo].tit+' · tabela'+rs(teto)+'/m
'; l += eco>0.01 ? '
Desconto pela nota '+nota+'−'+rs(eco)+'
' : '
Nota '+nota+' · sem desconto—
'; } if(!ehFolha()) l += '
Montagem da folha'+ 'inclusa · '+rs(MONTAGEM[modo])+'/m
'; l += '
Metragem'+(sobra>0.001?' · arredondada para 10 cm':'')+ ''+fmtM(cob)+' m
'; l += '
Preço final do metro'+rs(unit)+'
'+ '
Revisão e reencaixegrátis
'; $('carrLin').innerHTML=l; $('atual').style.display=''; itemAtual={modo, tit:MODOS[modo].tit, nota, metros, cob, unit, total:tot, localFiles:(ehFolha()?folhas:artes).map(x=>x.f), desc:fmtM(cob)+' m · '+rs(unit)+'/m · nota '+nota}; pintaPedido(); previa(); if(nota<90){ const piso=pisoEscada(), ganho=(base-piso)*cob; if(ganho>0.5) qm('Dá para chegar ao melhor preço. Corrigindo os pontos e chegando a 90, '+ 'o metro cai para '+rs(piso)+' — são '+rs(ganho)+' a menos neste pedido.','var(--verde)'); } } function qm(t,c){ const m=$('qmsg'); m.style.display='block'; m.style.color=c||'var(--verde)'; m.innerHTML=t; }