FM
Simulação de Financiamento
Fechado
Salve comunidade do Adianti Framework. Venho aqui dar minha primeira contribuição para a comunidade. Para quem quiser uma idéia de como criar uma tela de simulação de financiamentos, que gere vencimentos e parcelas de acordo com informações dadas pelo usuário, que somadas retornem o valor total exato, basta copiar e colar esse código para ver como fazer:
Não esqueça de comentar se funcionou para você !!!
Não esqueça de comentar se funcionou para você !!!
- <?php
- class geradorFinaciamentos extends TPage {
- protected $form;
- private $datagrid;
- function __construct() {
- parent::__construct();
- $this->form = new TForm('form_Vencimentos');
- $table = new TTable;
- $this->form->add($table);
- $texto = new TEntry('texto');
- $venci = new TDate('venci');
- $total = new TEntry('total');
- $titulo = new TLabel('<font color = red><h3>Fomulário para criação de parcelas</h3></font');
- $this->label = new TLabel();
- $this->vtotal = new TLabel();
- $botao = TButton::create('testar', array($this, 'onTeste'), 'Simular parcelamento', 'fa:eye green');
- $this->datagrid = new TQuickGrid;
- $this->datagrid->setHeight(320);
- $this->datagrid->addQuickColumn('Parcela', 'parcela', 'center', 50);
- $this->datagrid->addQuickColumn('Vencimento', 'vencimento', 'center', 100);
- $this->datagrid->addQuickColumn('Valor', 'valor', 'right', 80);
- $this->datagrid->createModel();
- $botao->popover = 'true';
- $botao->poptitle = '<font color = red /><b>SIMULAR PARCELAMENTO</b>';
- $botao->popcontent = '<font color = blue>Simula o parcelamento, deixando parcelas com valor exato e calculando vencimentos.</font>';
- $venci->setMask('dd/mm/yyyy');
- $table->addRowSet(new TLabel('Data da compra: '),$venci);
- $table->addRowSet(new TLabel('Parcelas:'),$texto);
- $table->addRowSet(new TLabel('Valor: '), $total);
- $table->addRowSet($botao);
- $this->form->setFields(array($this->label,$texto, $venci, $botao,$total));
- $container = new TVBox;
- $container->add($titulo);
- $container->add($this->form);
- $container->add($this->label);
- $container->add($this->datagrid);
- $container->add($this->vtotal);
- parent::add($container);
- }
- function onTeste() {
- $data = $this->form->getData();
- $date = TDate::date2us(date($data->venci));
- $date = new DateTime( $date );
- $vezes = $data->texto;
- $total = $data->total;
- $valor = ($total / $vezes);
- $this->datagrid->clear();
- for ($n=1; $n<=$vezes; $n++)
- {
- $date->add(new DateInterval('P1M'));
- //echo $date->format('Y-m-d');
- //echo "n";
- $nueba = $nueba . $date->format('Y-m-d').';';
- //echo $nueba;
- }
- $binda = explode(';', $nueba);
- $NumerodeParcelas = $data->texto;
- if(substr($data->total, -3, 1) == ',') {
- $data->total = substr_replace($data->total, '.', -3, 1);
- }
- // joga o valor total informado na var $ValordaCompra
- $ValordaCompra = $data->total;
- //desta forma se obtem o valor das parcelas desprezando os centavos
- $Parcelas = floor($ValordaCompra/$NumerodeParcelas);
- //obtendo o valor da primeira parcela
- $PrimeiraParcela = $ValordaCompra-($Parcelas*($NumerodeParcelas-1));
- echo "<br/><br/>";
- for ($y = 1; $y<=$vezes; $y++)
- {
- $x = $y;
- $x -= 1;
- // while($y <= $vezes) {
- // cria a classe standard para armazenar os resultados
- $item = new StdClass;
- $item->vencimento = TDate::date2br($binda[$x]);
- $item->parcela = $y."º";
- // se for a primeira parcela exibe a var $PrimeiraParcela
- if($y == 1){
- $item->valor = number_format($PrimeiraParcela,2,",",".");
- } else { // se não for a 1º parcela exibe o valor de $Parcelas
- $item->valor = number_format($Parcelas,2,",",".");
- }
- $this->datagrid->addItem($item);
- // }
- }
- // soma as parcelas alteradas
- $totala = ($Parcelas*($NumerodeParcelas-1)) + $PrimeiraParcela;
- $cacaca = number_format($totala,2,",",".");
- $item->vencimento = '<b>TOTAL:</b>';
- $item->parcela = '-----';
- $item->valor = "<font color = red><b>$cacaca</b></font>";
- $this->datagrid->addItem($item);
- //$data->texto = 'texto para o label';
- //$this->label->setValue('<br/>Dividido em '.$data->texto.' vezes de R$ '.number_format($valor,2,",",".") . '<br/>');
- $this->form->setData($data);
- // exibe as parcelas
- /*$this->vtotal->setValue('<br/>
- R$<b> '.number_format($totala,2,",",".").'</b>');
- */
- // libera as variáveis da memória
- unset($totala);
- unset($cacaca);
- unset($valor);
- unset($data);
- unset($date);
- unset($item);
- unset($ValordaCompra);
- }
- }
- ?>
parabéns pela rotina! em uma divisão de 99,00 em 24 parcelas ele cria a primeira com 7,00 e as demais como 4,00.
Boa Noite amigo, aqui pra mim caiu como uma luva. Perfeito, agora gostaria de pegar o resultado e colocar no banco de dados. Poderia me ajudar?
Desde já muito obrigado.
Olá Jurandir, me manda uma mensagem no meu email que eu te ajudo sim ,sem problemas, a noite estarei com mais tempo e te respondo, só me manda um e-mail para eu te mandar a solução na resposta. meu email é flaviocwbpr@gmail.com
Também gostaria de saber como manipular esse código com o banco de de dados!