Skip to content

Instantly share code, notes, and snippets.

@adrianobrito
Last active August 25, 2023 22:29
Show Gist options
  • Save adrianobrito/ae4a07dad03677e2547c039ccb5c73dc to your computer and use it in GitHub Desktop.
Save adrianobrito/ae4a07dad03677e2547c039ccb5c73dc to your computer and use it in GitHub Desktop.
Parcelometro
const valorDoProduto = 1000000;
//quantidade de parcelas
const quantidadeDoParcelamento = 10;
//valor pago
const valorPago = 7500;
function humanizarValorDoProduto() {
return valorDoProduto / 100
}
// Vamos fazer o bagulho dum jeito que nos calcula as parcelas fixas e a parcela final variavel caso tenha
function renderParcela(valorDoProduto, quantidadeDoParcelamento, valorPago) {
const valorRestante = humanizarValorDoProduto() - valorPago
const parcelaFixa = humanizarValorDoProduto() / quantidadeDoParcelamento
// Aqui a gente calcula o resto(operacao matematica) do restante com o valor da parcela
// tipo se tu tem 550 e tu quer saber o resto em relacao a 100, o resultado vai ser 50
// Isso pode ser feito com operador % (Remainder)
const parcelaVariavel = valorRestante % parcelaFixa
// Aqui calculamos o valor piso(floor) da quantiade de parcelas restantes
// Isso serve pra gente arredondar 4.5 pra 4 caso aconteca
const qtdParcelasFixasPendentes = Math.floor(valorRestante / parcelaFixa)
// Aqui vamo ver de caso a caso
// Primeiro vemos se existe parcela fixa pendente mas sem excedente variavel
if(qtdParcelasFixasPendentes > 0 && parcelaVariavel == 0) {
return `Restam ${qtdParcelasFixasPendentes} parcelas de R$ ${parcelaFixa.toFixed(2)}`
} else if(qtdParcelasFixasPendentes > 0 && parcelaVariavel > 0) {
// aqui nos calcula as parcelas pendentes fixas e variavel
return `Restam ${qtdParcelasFixasPendentes} parcelas de R$ ${parcelaFixa.toFixed(2)} e mais 1 parcela de R$ ${parcelaVariavel.toFixed(2)}`
} else {
// Aqui ja eh o caso mais excepcional onde temos somente uma unica parcela variavel
return `Resta 1 parcela de R$ ${parcelaVariavel.toFixed(2)}`
}
}
console.log(renderParcela(valorDoProduto, quantidadeDoParcelamento, valorPago))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment