Jump to content
WagnerFilho

Calcular Juros com parcela - PHP

Recommended Posts

Olá!

Estou tentando adicionar taxa de juros em cada parcela, seguindo a mesma regra do exemplo neste link:

Podem me ajudar com isto ?

O Código que tenho até o momento é este:

 

<?php

function calculo_negociacao($valor_total, $parcelas, $dt_vencimento, $valor_entrada, $taxa = 0) {  
    $parcelado = [];
    $inicio = 0;
		
	$JUROS = $taxa / 100.00;		 

    if ($valor_entrada > 0) {
        $inicio = 1;
        $valor_total = $valor_total - $valor_entrada;
    }

    $valor = $valor_total / ($parcelas - $inicio); // reduzimos 1 parcela se houver entrada ou 0 se nao
	
	$valor = $valor + $valor_total * $JUROS * pow((1 + $JUROS), $parcelas - $inicio);
	
	print_r($valor);
	
    $valor = number_format((float)$valor, 2, '.', '');

    $parcelado = array_fill($inicio, $parcelas - $inicio, ['valor' => $valor]); // $parcelas - 1 pois será menos 1 com a entrada ou 0 se nao houver

    // só depois de calcularmos todos é que podemos adicionar a entrada no inicio
    if ($valor_entrada > 0) {
        array_unshift($parcelado, ['valor' => number_format((float)$valor_entrada, 2, '.', '')]);
    }

    $dt_vencimento = explode( '-', $dt_vencimento);
    $dia = $dt_vencimento[0];
    $mes = $dt_vencimento[1];
    $ano = $dt_vencimento[2];

    for($x = 0; $x < $parcelas; $x++){
        $parcelado[$x]['parcela'] = $x + 1; 
        $parcelado[$x]['dt_vencimento'] = date("Y-m-d",strtotime("+".$x." month",mktime(0, 0, 0, $mes, $dia, $ano)));
    }

    return $parcelado;
}

$valor = 150.00;
$taxa  = 1.00;
$valor_entrada= 50.00;
$parcela = 4;
$dt_vencimento = '09-09-2019';
$negociacao = calculo_negociacao($valor, $parcela, $dt_vencimento, $valor_entrada, $taxa);
//var_dump($negociacao);

echo '<pre>';
echo var_dump($negociacao);

Código em funcionamento

Share this post


Link to post
Share on other sites

Consegui resolver:

 

<?php

function calculo_negociacao($valor_total, $numero_parcelas, $dt_vencimento, $valor_entrada, $taxa = 0) {  
    $parcelado = [];
    $inicio = 0;
		
	$JUROS = $taxa / 100.00;
	
    if ($valor_entrada > 0) {
        $inicio = 1;
        $valor_total = $valor_total - $valor_entrada;
    }
	
	$numero_parcelas = $numero_parcelas - $inicio;
	
	$valor_parcela = $valor_total * $JUROS * pow((1 + $JUROS), $numero_parcelas) / (pow((1 + $JUROS), $numero_parcelas) - 1);
		
    $valor_parcela = number_format((float)$valor_parcela, 2, '.', '');
	
	print_r($valor_total);

    $parcelado = array_fill($inicio, $numero_parcelas, ['valor_parcela' => $valor_parcela]); // $numero_parcelas - 1 pois será menos 1 com a entrada ou 0 se nao houver
	
    // só depois de calcularmos todos é que podemos adicionar a entrada no inicio
    if ($valor_entrada > 0) {
        array_unshift($parcelado, ['valor_parcela' => number_format((float)$valor_entrada, 2, '.', '')]);
    }

    $dt_vencimento = explode( '-', $dt_vencimento);
    $dia = $dt_vencimento[0];
    $mes = $dt_vencimento[1];
    $ano = $dt_vencimento[2];
	
    for($x = 0; $x < $numero_parcelas; $x++){
		$parcelado[$x]['parcela'] = $x + 1; 
        $parcelado[$x]['dt_vencimento'] = date('Y-m-d', strtotime('+'.$x.' month', mktime(0, 0, 0, $mes, $dia, $ano)));
    }

    return $parcelado;
}

$valor_total     = 150.00;
$numero_parcelas = 10;
$valor_entrada   = 0.00;
$dt_vencimento   = '09-09-2019';
$taxa            = 1.00;
$negociacao      = calculo_negociacao($valor_total, $numero_parcelas, $dt_vencimento, $valor_entrada, $taxa);

echo '<pre>';
echo var_dump($negociacao);

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By tii3030
      Olá, gostaria de saber qual a melhor maneira de selecionar e verificar a senha hash(senha) em um banco de dados e comparar com a senha inserida pelo usuário em um formulário de login. É mais adequado armazenar no BD o salt ? No exemplo abaixo eu criei o hash da senha antes de selecionar no banco:
      <?php include('conf.php'); $email = 'lala@123.com'; $senha = 'lala.123'; $custo = '08'; $salt = 'Cf1f11ePArKlBJomM0F6aJ'; $hash = crypt($senha, '$2a$' . $custo . '$' . $salt . '$'); $query_select = "SELECT email, password FROM usuarios WHERE email = '$email' AND password = '$hash'"; $select = mysqli_query($conexao,$query_select); if (mysqli_num_rows($select) == 1) { echo "Login Permitido"; } else { echo "Login ou senha invalidos"; } ?> Já neste exemplo eu selecionei o hash no banco para depois comparar com a senha inserida no formulário utilizando o password_verify():
      <?php #----------------- INCLUDING FILE --> "conf.php" include('conf.php'); if (isset($_POST['submit'])) { $email = mysqli_real_escape_string($conexao, $_POST['email']); $password = mysqli_real_escape_string($conexao, $_POST['password']); $query_select_email = "SELECT email FROM usuarios WHERE email = '$email'"; $select_email = mysqli_query($conexao,$query_select_email); $query_select_password = "SELECT password FROM usuarios"; $select_password = mysqli_query($conexao,$query_select_password); while($array = mysqli_fetch_array($select_password)) { $logarray = $array['password']; if (password_verify($password, $logarray) && mysqli_num_rows($select_email) == 1) { echo "Login permitido"; } } } ?> Aceito qualquer dica relacionado a segurança e para melhorar o código, desde já agradeço.
    • By tii3030
      Olá pessoal, desenvolvi um pequeno código em PHP com a função de verificar e validar usuário e senha de um formulário, juntamente com o meu banco de dados MySql.
      Gostaria de saber como aprimorar o meu código para torna-lo mais seguro e mais próximo de algo "profissional". Lembrando que minha senha no banco está criptografada (PASSWORD_BCRYPT).
       
      <?php
          #----------------- INCLUDING FILE --> "conf.php"
          include('conf.php');
              if (isset($_POST['submit'])) {
             
      #--------------------------------INPUTS ---------------------------------------------#
                  $email = mysqli_real_escape_string($conexao, $_POST['email']);
                  $password = mysqli_real_escape_string($conexao, $_POST['password']);
      #-----------------------#----------------------#-----------------_#-------------------#
                  $query_select_email = "SELECT email FROM usuarios WHERE email = '$email'";
                  $select_email = mysqli_query($conexao,$query_select_email);
                  $query_select_password = "SELECT password FROM usuarios";
                  $select_password = mysqli_query($conexao,$query_select_password);
                  while($array = mysqli_fetch_array($select_password)) {
                  $logarray = $array['password'];
                  
                      if (password_verify($password, $logarray)) {
                          if (mysqli_num_rows($select_email) == 1) {
                              
                          $_SESSION['email'] = $email;
                          header('location: XXX.html');
                          exit();
                          }
                      }
                      else {
                          echo "Loguin ou senha incorretos";
                      }
                  $logarray = '0';
                  }
              }
      ?>
    • By michelmir
      Olá!
       
      Recentemente fiz uma postagem aqui no fórum a respeito de se carregar valores em um input text baseando-se na opção selecionada em uma select box, onde obtive uma solução. Por conta disso resolvi adicionar um complemento neste  meu código onde o mesmo deve carregar valores corretamente dentro de uma input text utilizando o plugin TypeAhead.js e o evento onchange do Jquery.
       
      Como forma de demonstrar a minha dúvida em funcionamento, criei uma página como forma de testar a solução. O que ocorre é que quando seleciona uma opção no select box  "Categorias", o Ajax manda um request para o php script onde o mesmo retorna os valores corretamente em JSON conforme a imagem do console do navegador Chrome abaixo:
       
       
       
      Até aqui os valores relacionados com a opção selecionada no select box "Categorias" são carregados corretamente porém se eu não atualizar a página "F5" e ao mesmo tempo eu selecionar alguma outra opção dentro do select box, o input text carrega além dos valores relacionados, todos os valores não relacionados com a opção selecionada ou seja, o input text somente carrega os valores corretamente se eu atualizar a página em questão.
       
      Abaixo uma imagem demonstrando os valores carregados em uma input text quando seleciono uma outra opçao no select box quando não se atualiza a página. Todos os valores não relacionados também são carregados:
       

       
      Abaixo publico o html e os scripts Ajax, Typeahead e PHP que estou utilizando neste projeto:
       
      HTML
      <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> <!-- jQuery library --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- jQuery UI library --> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script> </head> <body> <div class="container"> <br> <h1>DYNAMIC TWITTER TYPEAHEAD</h1> <br> <div class="row"> <?php // Include the database config file include_once 'dbConfig.php'; // Fetch all the country data $query = "SELECT * FROM categorias ORDER BY categoria ASC"; $result = $db->query($query); ?> <!-- categoria dropdown --> <div class="col-md-4"> <select id="categoriaFK" name="categoriaFK" class="form-control"> <option value="">seleciona categoria</option> <?php if($result->num_rows > 0){ while($row = $result->fetch_assoc()){ echo '<option value="'.$row['categoriaID'].'">'.$row['categoria'].'</option>'; } }else{ echo '<option value="">Categoria não encontrada</option>'; } ?> </select> </div> <div class="col-md-4" id="prod"> <div ><input type="text" name="produtos" id="produtos" class="form-control input-lg typeahead" autocomplete="off" placeholder="" /></div> </div> <div class="col-md-4"> <div id="imagem" name="imagem"></div> </div> </div> </div> </body> </html>  
      No script abaixo, o Ajax envia um request para o script PHP que por sua vez retorna os valores em JSON para o Ajax que envia para o TypeAhead e carrega o input text com valores relacionados. Após selecionar uma opção no input text, o Jquery envia um valor relacionado para a div "#imagem" :
       
      $(document).ready(function(){ var produtos; var nomes = []; // array var lista = {}; // objeto $('#categoriaFK').on('change', function(){ var queryID = $(this).val(); $.ajax({ url:"fetch.php", method:"POST", data:{categoria:queryID}, dataType:"json", success:function(data){ console.log(data); $.each(data, function(i, optionHtml){ $('#produtos').append(optionHtml); }); $("#imagem").empty(''); $(".typeahead").val(''); produtos = data; } }); $('.typeahead').typeahead({ source: function(query, result) { $.each(produtos, function(idx, item){ if(!~nomes.indexOf(item.nomeProduto)) nomes.push(item.nomeProduto); lista[item.nomeProduto] = item.imagem; }); return result(nomes); }, afterSelect: function (data) { var img = lista[data]; $('#imagem').html(img); }, }); }); });  
      Abaixo, o php script que seleciona os valores baseando-se no valor selecionado do select box e os envia em formato JSON para o Ajax:
       
      <?php require_once 'dbConfig.php'; if(!empty($_POST["categoria"])){ $query = " SELECT * FROM produtos WHERE categoriaFK = ".$_POST['categoria']." "; $result = $db->query($query); $data = array (); if ( $result->num_rows > 0 ) { while($row = $result->fetch_assoc ()) { $data[] = $row; } header("Content-type: application/json; charset=utf-8 cache-control: no-cache, no-store, must-revalidate"); echo json_encode($data); exit(); } } ?> No caso como mencionado acima, nesta página que criei demonstra o funcionamento de todo o código acima, porém acredito que devo modificar o script para que o mesmo carregue valores corretamente quando seleciono alguma opção no select box "Categorias" sem precisar atualizar a página para que o mesmo carregue corretamente. 
       
      Como posso proceder? Desde já agradeço a atenção de todos.
    • By noxer
      Boa tarde, Preciso atribuir o valor de uma textarea para uma var e a exibir em um p. Fiz bem simples usando js/jquery mas agora preciso fazer em php.
       
      Ja tentei $variavel = $_POST['nomedocampo']; mas não obtive resultado
       
       
      Segue o trecho em js
      <textarea class="wapf-input" ></textarea> <button class="sendPDF">PDF</button> <p class="geratedPDF"></p>  
      $('.sendPDF').on('click', toPDF) function toPDF() { var textareaValue = $('.wapf-input').val() $('.geratedPDF').text(textareaValue) }
    • By Deivid Santos
      Salve galera, estou quebrando a cabeça aqui, já pesquisei mas não achei nada sobre.
      Eu tenho alguns dados que busco no banco de dados e mostro em um datagrid, além do CRUD que implantei eu preciso ter a opção de mudar as posições no banco. Preciso fazer isso pois elas são informações que vão para um telão. e ele segue uma ordem na mostragem dos dados.
      Teria alguma forma de arrastar a linha do grid e assim ele mudar o ID do mesmo conforme a posição que ficaria e assim os outros também seriam atualizados?
      Como exemplo segue uma imagem de como ele funciona. por exemplo eu movimento o ID 1 na posição abaixo do ID 3, assim o ID 2 e 3 se tornariam 1 e 2 com essa movimentação e o que era 1 se torna 3.

       
      Agradeço qualquer ajuda que puder.
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.