Cotas em Ofertas
<script> jQuery(document).ready(function($) { function formatCurrency(value) { return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value); } function renderCotas(cotas) { cotas.forEach(function(cota) { var $areaCotasOfertas = $('.areaCotasOfertas'); var $itemCota = $('#itemCota').clone().removeAttr('id'); $itemCota.find('.logoBank').css('background-image', 'url(' + cota.bancourl + ')'); $itemCota.find('.nameBank').text(cota.banco); $itemCota.find('.idCota').text(cota._ID); var $categoria = $itemCota.find('.categoria'); $categoria.text(cota.categoria); $categoria.removeClass('hidden'); // Remove a classe .hidden da categoria $itemCota.find('.creditoCota').text(formatCurrency(cota.credito)); $itemCota.find('.entradaCota').text(formatCurrency(cota.entrada)); $itemCota.find('.valorParcelas').text(cota.qtd_parcela + 'x ' + formatCurrency(cota.valor_parcela)); $areaCotasOfertas.append($itemCota); }); } function loadAndRenderCotas() { $.post(window.location.href, { acao: 'get_cotas_vendedor' }, function(response, status, xhr) { if (xhr.status === 202) { // Save the response in sessionStorage sessionStorage.setItem('cotasGeraisOfertas', JSON.stringify(response)); if (response && response.length > 0) { renderCotas(response); } else { $('#cotasOfertas').addClass('hidden'); } } else { $('#cotasOfertas').addClass('hidden'); } }); } loadAndRenderCotas(); }); </script>
jQuery(document).ready(function($) { function formatCurrency(value) { return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value); } function renderCotas(cotas, $targetArea) { $targetArea.empty(); // Clear only the target area cotas.forEach(function(cota) { var $itemCota = $('#itemCota').clone().removeAttr('id'); $itemCota.find('.logoBank').css('background-image', 'url(' + cota.bancourl + ')'); $itemCota.find('.nameBank').text(cota.banco); $itemCota.find('.iconcat').css('background-image', 'url(' + cota.iconcat + ')'); $itemCota.find('.idCota').text(cota._ID); $itemCota.find('.creditoCota').text(formatCurrency(cota.credito)); $itemCota.find('.entradaCota').text(formatCurrency(cota.entrada)); $itemCota.find('.valorParcelas').text(cota.qtd_parcela + 'x ' + formatCurrency(cota.valor_parcela)); $targetArea.append($itemCota); }); } function sortCotas(cotas, key, asc) { return cotas.sort(function(a, b) { return asc ? a[key] - b[key] : b[key] - a[key]; }); } function loadAndRenderCotas() { $.post(window.location.href, { acao: 'get_cotas_selecao' }, function(response, status, xhr) { if (xhr.status === 202 && response.length > 0) { // Save the response in sessionStorage sessionStorage.setItem('cotasGerais', JSON.stringify(response)); $('.areaCotas').each(function() { var categoria = $(this).data('categoria'); var cotasCategoria = response.filter(cota => cota.categoria === categoria); renderCotas(cotasCategoria, $(this)); }); } else { console.warn('Não foi possível carregar as cotas.'); } }); } loadAndRenderCotas(); // Event handler for sorting $('.areaCotacoes').on('click', '.credito, .entrada', function() { var $sortButton = $(this); var $areaCotas = $sortButton.closest('.areaCotacoes').find('.areaCotas'); var categoria = $areaCotas.data('categoria'); var key = $sortButton.hasClass('credito') ? 'credito' : 'entrada'; var ascending = $sortButton.find('i').hasClass('ion-ios-arrow-down'); var allCotas = JSON.parse(sessionStorage.getItem('cotasGerais')); if (!allCotas) { console.warn('Cotas not found in sessionStorage.'); return; } var cotasCategoria = allCotas.filter(cota => cota.categoria === categoria); var sortedCotas = sortCotas(cotasCategoria, key, ascending); renderCotas(sortedCotas, $areaCotas); $sortButton.find('i').toggleClass('ion-ios-arrow-down ion-ios-arrow-up'); }); });
Cotas contempladas de automóveis
Cotas contempladas de imóveis
Cotas contempladas de pesados
Junções de Cotas
Resultado das junções
Informe seu nome para ir para o WhatsApp
Data Aquisição: {je_cct_cotas_data_aquisicao}
Saldo Devedor: {echo:mask_money({je_cct_cotas_saldo_devedor})}

MD SOLUÇÕES FINANCEIRAS | SUA MELHOR OPÇÃO PARA CONQUISTAR BENS
A MD Soluções Financeiras nasceu com o propósito de oferecer soluções financeiras personalizadas para pessoas físicas e jurídicas, buscando sempre a segurança, a qualidade e a eficiência em cada projeto. Com uma equipe de profissionais qualificados, experientes e comprometidos, nos destacamos no mercado por nossa transparência, dinamismo e inovação.
Nosso CEO, Marcos, é um profissional atuante no segmento empresarial de consultoria e também como planejador financeiro pessoal e empresarial. Ele possui sólidos conhecimentos em gestão de equipes nas áreas comercial e novos negócios, e sua principal característica sempre foi o foco na melhor solução para resolver o problema do cliente.
A MD Soluções Financeiras está sempre atenta às tendências e oportunidades do mercado, buscando se adaptar, propor, ouvir e inovar em soluções que gerem valor e satisfação para os seus clientes. Nossa empresa foi criada com o intuito de prestar serviços especializados dentro do segmento financeiro, sendo referência na área de créditos imobiliários, autos e pesados. Com experiência, trazemos inovação, agilidade e transparência nos negócios para nossos clientes e parceiros.
Possuímos um atendimento personalizado e nosso compromisso é apresentar aos nossos clientes e parceiros as melhores condições que o mercado financeiro pode oferecer. Somos uma empresa independente, não sendo extensão de nenhuma administradora quando se trata de negociação de cotas de consórcios contemplados. O que negociamos são os direitos e deveres de um participante de um grupo de consórcio administrado por uma determinada administradora, onde, conforme o contrato de negociação, há consentimento e permissão para que a cota de consórcio seja transferida para outra pessoa (cessionário), desde que atendidas as exigências impostas pela administradora. Isso torna nossa prática legal e reconhecida pelo Banco Central, que regulamenta este segmento.
Quer vender seu consórcio?
Obtenha uma avaliação justa!
Dados do Consorciado
Administradora
Dados Cota
Negociação
Sucesso!
Nossa equipe recebeu sua proposta, em até 48 horas receberá um retorno..swal2-title { color: #000000!important; font-size: 3em!important; }
$(document).on('click', '.itemCota', function (event) { if ($(event.target).closest('.areaBotoes').length) return; const icone = $(this).find('i.brxe-icon').not('.areaBotoes i'); $(this).toggleClass('ativo'); icone.toggleClass('ion-md-square-outline ion-md-checkbox-outline'); if ($('.itemCota.ativo').length) { $('#areaMultiplaAcao').removeClass('hidden'); } else { $('#areaMultiplaAcao').addClass('hidden'); } }); function parseBrazilianNumber(numberString) { numberString = numberString.replace(/\.(?=\d{3}(,|$))/g, ''); numberString = numberString.replace(',', '.'); return parseFloat(numberString); } jQuery(document).ready(function($) { $('#somarCotas').on('click', function() { let cotasSelecionadas = []; let totalCredito = 0, totalEntrada = 0; $('#parcelasList').empty(); $('#cotasSelecionadas').empty(); const cotas = JSON.parse(sessionStorage.getItem('cotasGerais')) || []; let categoriasSelecionadas = new Set(); $('.itemCota.ativo').each(function() { const categoria = $(this).closest('.areaCotacoes').data('categoria'); categoriasSelecionadas.add(categoria); }); if (categoriasSelecionadas.size > 1) { Swal.fire({ icon: 'error', title: 'Erro de Seleção', html: '<p style="font-size: 2em; color: #555;">Por favor, verifique a sua seleção.<br>Não é possível somar cotas de categorias diferentes.</p>', background: '#ffffff', color: '#333', confirmButtonColor: '#3085d6', confirmButtonText: 'Entendi', customClass: { popup: 'swal2-modal-large', title: 'swal2-title' }, width: '600px', padding: '2em' }); return; } $('.itemCota.ativo').each(function() { const idCota = $(this).find('.idCota').text().trim(); const cota = cotas.find(item => item._ID === idCota); if (cota) { const credito = parseBrazilianNumber(cota.credito); const entrada = parseBrazilianNumber(cota.entrada); const valorParcela = parseBrazilianNumber(cota.valor_parcela); const quantidadeParcela = parseInt(cota.qtd_parcela); totalCredito += credito; totalEntrada += entrada; const parcelaInfo = { quantidade: quantidadeParcela, valor: valorParcela }; cotasSelecionadas.push(parcelaInfo); $('#cotasSelecionadas').append( `<div>Código: ${cota._ID} - ${cota.banco} - ${formatCurrency(credito)}</div>` ); } else { Swal.fire({ icon: 'warning', title: 'Cota Não Encontrada', text: `A cota com ID ${idCota} não foi encontrada.`, background: '#ffffff', color: '#333', confirmButtonColor: '#3085d6', confirmButtonText: 'Ok' }); } }); if (cotasSelecionadas.length === 0) { $('#parcelasList').append('<div>Nenhuma parcela disponível.</div>'); return; } cotasSelecionadas.sort((a, b) => b.quantidade - a.quantidade); const maiorParcelaQtd = cotasSelecionadas[0]?.quantidade || 0; let somaParcelas = new Array(maiorParcelaQtd).fill(0); cotasSelecionadas.forEach(parcela => { for (let i = 0; i < parcela.quantidade; i++) { somaParcelas[i] += parcela.valor; } }); let parcelasAgrupadas = []; let qtdAtual = 1; let valorAtual = somaParcelas[0]; for (let i = 1; i <= maiorParcelaQtd; i++) { if (i < maiorParcelaQtd && somaParcelas[i] === valorAtual) { qtdAtual++; } else { parcelasAgrupadas.push({ quantidade: qtdAtual, valor: valorAtual }); qtdAtual = 1; valorAtual = somaParcelas[i]; } } let parcelasTexto = parcelasAgrupadas.map(p => `${p.quantidade} x ${formatCurrency(p.valor)}` ).join(' + '); $('#parcelasList').append(`<div><b>Total de Parcelas: ${maiorParcelaQtd}</b></div>`); $('#parcelasList').append(`<div>${parcelasTexto}</div>`); $('#pcredito').text(formatCurrency(totalCredito)); $('#pentrada').text(formatCurrency(totalEntrada)); let cotasInfo = ''; $('#cotasSelecionadas div').each(function() { cotasInfo += $(this).text() + '\n'; }); const mensagem = ` Crédito: *${formatCurrency(totalCredito)}* Entrada: *${formatCurrency(totalEntrada)}* Total de Parcelas: *${maiorParcelaQtd}* ${parcelasTexto} Cotas Selecionadas ${cotasInfo}`.trim(); const mensagemEncoded = encodeURIComponent(mensagem); $('#btnZapDireto').off('click').on('click', function() { const whatsappUrl = `https://wa.me/?text=${mensagemEncoded}`; window.open(whatsappUrl, '_blank'); }); window.togglePopup('Soma', true); }); function formatCurrency(value) { return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value); } });
.swal2-popup { font-size: 15px; }
jQuery(document).ready(function($) { // Função para formatar valores monetários function formatCurrency(value) { return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value); } // Função para analisar números no formato brasileiro function parseBrazilianNumber(numberString) { numberString = numberString.replace(/\.(?=\d{3}(,|$))/g, ''); numberString = numberString.replace(',', '.'); return parseFloat(numberString); } // Função para obter os dados das cotas do sessionStorage function getCotasDataFromSession(storageKey) { const cotasData = JSON.parse(sessionStorage.getItem(storageKey)); return cotasData || []; } // Função para renderizar cotas em uma área específica function renderCotas(cotas, $targetArea) { $targetArea.empty(); // Limpa a área antes de renderizar if (cotas.length === 0) { // Loga no console se não houver cotas para essa área console.log('Nenhuma cota encontrada para a área:', $targetArea.attr('class')); $targetArea.text('Nenhuma cota disponível.'); return; } cotas.forEach(function(cota) { var $itemCota = $('#itemCota').clone().removeAttr('id'); // Se o clone será inserido em "#cotasOfertas .areaCotasOfertas", // atualiza a categoria e remove a classe .hidden if ($targetArea.closest('#cotasOfertas').length > 0 && $targetArea.hasClass('areaCotasOfertas')) { console.log("Atualizando categoria para cota " + cota._ID + ": " + cota.categoria); $itemCota.find('.categoria').text(cota.categoria).removeClass('hidden'); } $itemCota.find('.logoBank').css('background-image', 'url(' + cota.bancourl + ')'); $itemCota.find('.nameBank').text(cota.banco); $itemCota.find('.idCota').text(cota._ID); $itemCota.find('.creditoCota').text(formatCurrency(cota.credito)); $itemCota.find('.entradaCota').text(formatCurrency(cota.entrada)); $itemCota.find('.valorParcelas').text(cota.qtd_parcela + 'x ' + formatCurrency(cota.valor_parcela)); $targetArea.append($itemCota); }); } // Função para carregar e renderizar cotas a partir da sessão function loadAndRenderCotas() { // Função genérica para carregar cotas function loadCotas(acao, storageKey, areaClass, areaCotasClass, groupByCategory = true) { const cotasData = getCotasDataFromSession(storageKey); if (cotasData.length > 0) { // Renderiza as cotas a partir do sessionStorage console.log('Renderizando cotas do sessionStorage para:', storageKey); if (groupByCategory) { $('.' + areaCotasClass).each(function() { var categoria = $(this).data('categoria'); var cotasCategoria = cotasData.filter(cota => cota.categoria === categoria); renderCotas(cotasCategoria, $(this)); }); } else { // Renderiza todas as cotas sem agrupar por categoria const $area = $('.' + areaCotasClass); renderCotas(cotasData, $area); } } else { // Faz a chamada AJAX para obter as cotas $.post(window.location.href, { acao: acao }, function(response, status, xhr) { if (xhr.status === 202 && response.length > 0) { // Salva a resposta no sessionStorage sessionStorage.setItem(storageKey, JSON.stringify(response)); if (groupByCategory) { $('.' + areaCotasClass).each(function() { var categoria = $(this).data('categoria'); var cotasCategoria = response.filter(cota => cota.categoria === categoria); renderCotas(cotasCategoria, $(this)); }); } else { // Renderiza todas as cotas sem agrupar por categoria const $area = $('.' + areaCotasClass); renderCotas(response, $area); } } else { console.warn('Não foi possível carregar as cotas:', storageKey, 'e não existem dados no sessionStorage.'); // Exibe mensagem nas áreas correspondentes $('.' + areaClass + '.areaCotacoes .' + areaCotasClass).text('Nenhuma cota disponível.'); } }).fail(function(jqXHR, textStatus, errorThrown) { console.error('Erro na chamada AJAX para carregar cotas:', storageKey, 'Erro:', textStatus, errorThrown); // Exibe mensagem de erro $('.' + areaClass + '.areaCotacoes .' + areaCotasClass).text('Erro ao carregar cotas.'); }); } } // Carrega cotas gerais (agrupadas por categoria) loadCotas('get_cotas_selecao', 'cotasGerais', 'cotasGerais', 'areaCotas', true); // Carrega cotas de ofertas (sem agrupar por categoria) loadCotas('get_cotas_vendedor', 'cotasGeraisOfertas', 'cotasGeraisOfertas', 'areaCotasOfertas', false); } loadAndRenderCotas(); // Função para obter os dados de uma cota específica function getCotaData($itemCota) { const $areaCotacoes = $itemCota.closest('.areaCotacoes'); let cotasKey; if ($areaCotacoes.hasClass('cotasGerais')) { cotasKey = 'cotasGerais'; } else if ($areaCotacoes.hasClass('cotasGeraisOfertas')) { cotasKey = 'cotasGeraisOfertas'; } else { console.warn('Tipo de cota desconhecido para o item:', $itemCota); return null; } const cotasArray = getCotasDataFromSession(cotasKey); const idCota = $itemCota.find('.idCota').text().trim(); const cota = cotasArray.find(item => item._ID === idCota); return cota; } // Função para verificar se todas as cotas selecionadas são da mesma categoria // Função para verificar se todas as cotas selecionadas são do mesmo banco e categoria function checkSingleCategoryAndBank() { let categoriasSelecionadas = new Set(); let bancosSelecionados = new Set(); $('.itemCota.ativo').each(function() { const $itemCota = $(this); const $areaCotacoes = $itemCota.closest('.areaCotacoes'); const categoria = $areaCotacoes.data('categoria'); const cotaData = getCotaData($itemCota); // Obtém os dados da cota if (cotaData) { categoriasSelecionadas.add(categoria); bancosSelecionados.add(cotaData.banco); // Assumindo que "banco" é a propriedade correta } }); if (categoriasSelecionadas.size > 1) { Swal.fire({ icon: 'error', title: 'Erro de Seleção', html: '<p style="font-size: 2em; color: #555;">Por favor, verifique a sua seleção.<br>Não é possível somar cotas de categorias diferentes.</p>', background: '#ffffff', color: '#333', confirmButtonColor: '#3085d6', confirmButtonText: 'Entendi', customClass: { popup: 'swal2-modal-large', title: 'swal2-title' }, width: '600px', padding: '2em' }); return false; } if (bancosSelecionados.size > 1) { Swal.fire({ icon: 'error', title: 'Erro de Seleção', html: '<p style="font-size: 2em; color: #555;">Por favor, verifique a sua seleção.<br>Não é possível somar cotas de bancos diferentes.</p>', background: '#ffffff', color: '#333', confirmButtonColor: '#3085d6', confirmButtonText: 'Entendi', customClass: { popup: 'swal2-modal-large', title: 'swal2-title' }, width: '600px', padding: '2em' }); return false; } return true; } // Modifica a função do botão #somarCotas para chamar a nova função de verificação $('#somarCotas').on('click', function() { if (!checkSingleCategoryAndBank()) { return; } const { cotasSelecionadas, totalCredito, totalEntrada } = processSelectedCotas(); const { maiorParcelaQtd, parcelasTexto } = calculateParcelas(cotasSelecionadas); $('#pcredito').text(formatCurrency(totalCredito)); $('#pentrada').text(formatCurrency(totalEntrada)); prepareMessage(totalCredito, totalEntrada, maiorParcelaQtd, parcelasTexto); // Exibe o popup com os resultados window.togglePopup('Soma', true); }); // Função para processar as cotas selecionadas function processSelectedCotas() { let cotasSelecionadas = []; let totalCredito = 0, totalEntrada = 0; $('#parcelasList').empty(); $('#cotasSelecionadas').empty(); $('.itemCota.ativo').each(function() { const $itemCota = $(this); const cota = getCotaData($itemCota); if (cota) { const credito = parseBrazilianNumber(cota.credito); const entrada = parseBrazilianNumber(cota.entrada); const valorParcela = parseBrazilianNumber(cota.valor_parcela); const quantidadeParcela = parseInt(cota.qtd_parcela); totalCredito += credito; totalEntrada += entrada; const parcelaInfo = { quantidade: quantidadeParcela, valor: valorParcela }; cotasSelecionadas.push(parcelaInfo); $('#cotasSelecionadas').append( `<div>Código: ${cota._ID} - ${cota.banco} - ${formatCurrency(credito)}</div>` ); } else { const idCota = $itemCota.find('.idCota').text().trim(); Swal.fire({ icon: 'warning', title: 'Cota Não Encontrada', text: `A cota com ID ${idCota} não foi encontrada.`, background: '#ffffff', color: '#333', confirmButtonColor: '#3085d6', confirmButtonText: 'Ok' }); } }); return { cotasSelecionadas, totalCredito, totalEntrada }; } // Função para calcular as parcelas agrupadas function calculateParcelas(cotasSelecionadas) { if (cotasSelecionadas.length === 0) { $('#parcelasList').append('<div>Nenhuma parcela disponível.</div>'); return; } cotasSelecionadas.sort((a, b) => b.quantidade - a.quantidade); const maiorParcelaQtd = cotasSelecionadas[0]?.quantidade || 0; let somaParcelas = new Array(maiorParcelaQtd).fill(0); cotasSelecionadas.forEach(parcela => { for (let i = 0; i < parcela.quantidade; i++) { somaParcelas[i] += parcela.valor; } }); let parcelasAgrupadas = []; let qtdAtual = 1; let valorAtual = somaParcelas[0]; for (let i = 1; i <= maiorParcelaQtd; i++) { if (i < maiorParcelaQtd && somaParcelas[i] === valorAtual) { qtdAtual++; } else { parcelasAgrupadas.push({ quantidade: qtdAtual, valor: valorAtual }); qtdAtual = 1; valorAtual = somaParcelas[i]; } } let parcelasTexto = parcelasAgrupadas.map(p => `${p.quantidade} x ${formatCurrency(p.valor)}` ).join(' + '); $('#parcelasList').append(`<div><b>Total de Parcelas: ${maiorParcelaQtd}</b></div>`); $('#parcelasList').append(`<div>${parcelasTexto}</div>`); return { maiorParcelaQtd, parcelasTexto }; } // Função para preparar a mensagem do WhatsApp function prepareMessage(totalCredito, totalEntrada, maiorParcelaQtd, parcelasTexto) { let cotasInfo = ''; $('#cotasSelecionadas div').each(function() { cotasInfo += $(this).text() + '\n'; }); const mensagem = ` Crédito: *${formatCurrency(totalCredito)}* Entrada: *${formatCurrency(totalEntrada)}* Total de Parcelas: *${maiorParcelaQtd}* ${parcelasTexto} Cotas Selecionadas ${cotasInfo}`.trim(); const mensagemEncoded = encodeURIComponent(mensagem); $('#btnZapDireto').off('click').on('click', function() { const whatsappUrl = `https://wa.me/?text=${mensagemEncoded}`; window.open(whatsappUrl, '_blank'); }); return mensagem; } // Evento ao clicar no botão #somarCotas $('#somarCotas').on('click', function() { if (!checkSingleCategory()) { return; } const { cotasSelecionadas, totalCredito, totalEntrada } = processSelectedCotas(); const { maiorParcelaQtd, parcelasTexto } = calculateParcelas(cotasSelecionadas); $('#pcredito').text(formatCurrency(totalCredito)); $('#pentrada').text(formatCurrency(totalEntrada)); prepareMessage(totalCredito, totalEntrada, maiorParcelaQtd, parcelasTexto); // Exibe o popup com os resultados window.togglePopup('Soma', true); }); // Evento de clique nos itens de cota para seleção $(document).on('click', '.itemCota', function(event) { if ($(event.target).closest('.areaBotoes').length) return; const icone = $(this).find('i.brxe-icon').not('.areaBotoes i'); $(this).toggleClass('ativo'); icone.toggleClass('ion-md-square-outline ion-md-checkbox-outline'); if ($('.itemCota.ativo').length) { $('#areaMultiplaAcao').removeClass('hidden'); } else { $('#areaMultiplaAcao').addClass('hidden'); } }); $(document).on('click', '.credito', function() { handleSortClick($(this), 'credito'); }); $(document).on('click', '.entrada', function() { handleSortClick($(this), 'entrada'); }); function handleSortClick($element, sortKey) { // Alterna o ícone var $icon = $element.find('i'); var isDescending = $icon.hasClass('ion-ios-arrow-down'); // Resetar o ícone da outra coluna if (sortKey === 'credito') { resetSortIcon($('.entrada')); } else { resetSortIcon($('.credito')); } // Alterna o ícone atual $icon.toggleClass('ion-ios-arrow-down ion-ios-arrow-up'); // Ordena os itens sortCotas(sortKey, isDescending); } function resetSortIcon($element) { var $icon = $element.find('i'); $icon.removeClass('ion-ios-arrow-up').addClass('ion-ios-arrow-down'); } function sortCotas(sortKey, isDescending) { // Obter todas as áreas de cotas $('.areaCotas').each(function() { var $areaCotas = $(this); var cotas = []; // Obter todos os itens de cota $areaCotas.find('.itemCota').each(function() { var $itemCota = $(this); var cotaData = getCotaData($itemCota); if (cotaData) { cotaData.$element = $itemCota; cotas.push(cotaData); } }); // Ordenar as cotas cotas.sort(function(a, b) { var aValue = parseBrazilianNumber(a[sortKey]); var bValue = parseBrazilianNumber(b[sortKey]); if (isDescending) { return bValue - aValue; } else { return aValue - bValue; } }); // Renderizar as cotas ordenadas $areaCotas.empty(); cotas.forEach(function(cota) { $areaCotas.append(cota.$element); }); }); } }); jQuery(document).ready(function($) { var ordenacao = { campo: 'credito', // valor inicial padrão, pode ser o que quiser direcao: 'desc' // 'asc' ou 'desc' }; function formatCurrency(value) { return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value); } function limparCotas() { $('.areaCotasOfertas').empty(); } function renderCotas(cotas) { var $areaCotasOfertas = $('.areaCotasOfertas'); limparCotas(); cotas.forEach(function(cota) { var $itemCota = $('#itemCota').clone().removeAttr('id').show(); $itemCota.find('.logoBank').css('background-image', 'url(' + cota.bancourl + ')'); $itemCota.find('.nameBank').text(cota.banco); $itemCota.find('.idCota').text(cota._ID); var $categoria = $itemCota.find('.categoria'); $categoria.text(cota.categoria); $categoria.removeClass('hidden'); $itemCota.find('.creditoCota').text(formatCurrency(cota.credito)); $itemCota.find('.entradaCota').text(formatCurrency(cota.entrada)); $itemCota.find('.valorParcelas').text(cota.qtd_parcela + 'x ' + formatCurrency(cota.valor_parcela)); $areaCotasOfertas.append($itemCota); }); } function ordenarCotas(campo, direcao, cotas) { return cotas.slice().sort(function(a, b) { var vA = parseFloat(a[campo]); var vB = parseFloat(b[campo]); if (direcao === 'asc') return vA - vB; return vB - vA; }); } function atualizarIcones() { var setaCredito = $('.filtroCredito .icon i'); var setaEntrada = $('.filtroEntrada .icon i'); if (ordenacao.campo === 'credito') { setaCredito.attr('class', ordenacao.direcao === 'desc' ? 'ion-ios-arrow-down' : 'ion-ios-arrow-up'); setaEntrada.attr('class', 'ion-ios-arrow-up'); // padrão dela } else { setaCredito.attr('class', 'ion-ios-arrow-down'); // padrão dela setaEntrada.attr('class', ordenacao.direcao === 'desc' ? 'ion-ios-arrow-down' : 'ion-ios-arrow-up'); } } function toggleDirecao(campo) { if (ordenacao.campo === campo) { ordenacao.direcao = ordenacao.direcao === 'asc' ? 'desc' : 'asc'; } else { ordenacao.campo = campo; // Pode escolher direção padrão ao trocar de campo: ordenacao.direcao = campo === 'credito' ? 'desc' : 'asc'; } } $('.filtroCredito').on('click', function(e) { e.preventDefault(); var cotas = JSON.parse(sessionStorage.getItem('cotasGeraisOfertas') || '[]'); if (!cotas.length) return; // Nada a ordenar toggleDirecao('credito'); var cotasOrdenadas = ordenarCotas('credito', ordenacao.direcao, cotas); renderCotas(cotasOrdenadas); atualizarIcones(); }); $('.filtroEntrada').on('click', function(e) { e.preventDefault(); var cotas = JSON.parse(sessionStorage.getItem('cotasGeraisOfertas') || '[]'); if (!cotas.length) return; // Nada a ordenar toggleDirecao('entrada'); var cotasOrdenadas = ordenarCotas('entrada', ordenacao.direcao, cotas); renderCotas(cotasOrdenadas); atualizarIcones(); }); // Opcional: ao carregar a página já pode fazer a renderização com a ordenação default: (function initRender() { var cotas = JSON.parse(sessionStorage.getItem('cotasGeraisOfertas') || '[]'); if (!cotas.length) return; var cotasOrdenadas = ordenarCotas(ordenacao.campo, ordenacao.direcao, cotas); renderCotas(cotasOrdenadas); atualizarIcones(); })(); });