property registration php mysql

Asked

Viewed 1,887 times

1

Good morning, I’m doing a system of promising and would like to know how to register the plots in the comics with the information. I would like to insert the information as follows:

in the registration form when I put the value R $ 300,00 and put in 3 installments he insert in the MOVEMENT table and in the INSTALLMENTS table, already with the parcels at the correct value and the quantity of the Index it is necessary for the quantity of the parcel requests that as in the case will be 3 100,00

follows structure of my BD

CREATE TABLE IF NOT EXISTS cad_movimento (
  id_movimento int(11) NOT NULL AUTO_INCREMENT,
  id_tipomovimento int(11) DEFAULT NULL,
  id_cliente int(11) DEFAULT NULL,
  data_movimento int(11) DEFAULT NULL,
  descricao_movimento longtext,
  valor_movimento float DEFAULT NULL,
  PRIMARY KEY (id_movimento)
);
CREATE TABLE IF NOT EXISTS cad_parcelas (
  id_parcela int(11) NOT NULL AUTO_INCREMENT,
  id_movimento int(11) DEFAULT NULL,
  id_cliente int(11) DEFAULT NULL,
  data_movimento int(11) DEFAULT NULL,
  vencimento_movimento int(11) DEFAULT NULL,
  pagamento_movimento int(11) DEFAULT NULL,
  valor_movimento float DEFAULT NULL,
  PRIMARY KEY (id_movimento)
);

I have no idea how to start!

2 answers

1


To make this implementation is relatively simple, but has something that needs to be taken into account, which is when the sum of the installments does not result in the total as in the case of a value like R $ 100,00 in 3 installments of R $ 33,33. I prepared the code simulating this situation. Note: The code was commented explaining each step.

Code

<?php

// ID do cliente
$idCliente = 1;

// Função round arredonda para duas casas decimais
$valor = round(100, 2);  // R$ 100,00

// Número de parcelas
$parcelas = 3;

// A compra tem entrada?
$entrada = false;


// Insira a movimentação no banco
$sql  = "INSERT INTO cad_movimento (
            id_tipomovimento,
            id_cliente,
            data_movimento,
            descricao_movimento,
            valor_movimento
         ) VALUES (
            1,
            '{$idCliente}',
            NOW(),
            'Moinho de Vento (windmill)',
            '{$valor}'
         )";

   //$con->query($sql);
   echo $sql;
   echo '<br>'.PHP_EOL;

// Pegue do banco o último ID inserido da movimentação
$idMovimento = 1; 


// Calcula o valor da parcela dividindo o total pelo número de parcelas
$valorParcela = round($valor / $parcelas, 2);

// Se tiver entrada diminui o número de parcelas
$qtd = $entrada ? $parcelas - 1 : $parcelas;


// Faz um loop com a quantidade de parcelas
for ($i=($entrada ? 0 : 1); $i <= $qtd; $i++) { 

   // Se for última parcela e a soma das parcelas for diferente do valor da compra
   // ex: 100 / 3 == 33.33 logo 3 * 33.33 == 99.99
   // Então acrescenta a diferença na parcela, assim última parcela será 33.34
   if ($qtd == $i && round($valorParcela * $parcelas, 2) != $valor){ 
      $valorParcela += $valor - ($valorParcela * $parcelas);
   }

   // Caso a variavel $entrada seja true
   // o valor $i na primeira parcela será 0
   // então 30 * 0 == 0
   // será adicionado 0 dias a data, ou seja, a primeira parcela
   // será a data atual
   $dias = 30 * $i;

   // Hoje mais X dias
   // Parcela 1: 30 dias
   // Parcela 2: 60 dias
   // Parcela 3: 90 dias...
   $data = date('Y-m-d', strtotime("+{$dias} days"));

   $sql  = "INSERT INTO cad_parcelas (
               id_movimento,
               id_cliente,
               data_movimento,
               vencimento_movimento,
               pagamento_movimento,
               valor_movimento
            ) VALUES (
               '{$idMovimento}',
               '{$idCliente}',
               NOW(),
               '{$data}',
               NULL,
               '$valorParcela'
            )";

   //$con->query($sql);
   echo $sql;

   echo '<br><br>'.PHP_EOL.PHP_EOL;
}

Upshot:

INSERT INTO cad_movimento (
   id_tipomovimento,
   id_cliente,
   data_movimento,
   descricao_movimento,
   valor_movimento
) VALUES (
   1,
   '1',
   NOW(),
   'Moinho de Vento (windmill)',
   '100'
)

INSERT INTO cad_parcelas (
   id_movimento,
   id_cliente,
   data_movimento,
   vencimento_movimento,
   pagamento_movimento,
   valor_movimento
) VALUES (
   '1',
   '1',
   NOW(),
   '2015-10-02',
   NULL,
   '33.33'
)

INSERT INTO cad_parcelas (
   id_movimento,
   id_cliente,
   data_movimento,
   vencimento_movimento,
   pagamento_movimento,
   valor_movimento
) VALUES (
   '1',
   '1',
   NOW(),
   '2015-11-01',
   NULL,
   '33.33'
)
INSERT INTO cad_parcelas (
   id_movimento,
   id_cliente,
   data_movimento,
   vencimento_movimento,
   pagamento_movimento,
   valor_movimento
) VALUES (
   '1',
   '1',
   NOW(),
   '2015-12-01',
   NULL,
   '33.34'
)
  • in his code when game to save in the comic he does not save the dates as shown in echo and yes the current date

  • My mistake, my field was not as DATE

  • good night @kaduAmaral how do i save tbm the parcel number and type the correct date because here as we put the day of purchase as 01/01/2015 for example the maturity of the first falls on 31/01/2015

  • @Cristianocardososilva to save the portion number is only save the variable $i. About the dates you have to calculate. There I calculated 30 days, but you can also calculate the month, so the date always falls on the same day next month.

0

$qtdParc = 3;
$varlorTotal = 300;
$calculoParc = ($valorTotal/$qtdParc);
$data = explode('/','20/11/2015');

for($i=1; $i<=$qtdParc; $i++){
    $retorno = mktime(0, 0, 0, $data[0], $data[1]+$i, $data[2]);
    $dataParc = date('d/m/Y',$retorno).'<br>';
    $sqlInsere = "INSERT INTO tabela (valor, valor_total, parcela, data) VALUES ('$calculoParc', '$valorTotal', '$i', '$dataParc')";
}
  • and to calculate the dates?

  • type the maturity of the instalments every 30 days after the registration

  • Then you assemble a basic formula of calculating date of installments.. I will assemble and put for you

  • OK I’ll be in the sharp

  • I already changed the answer.

  • 1

    your answer could not save in the comic, I made an echo with the sql copied and applied in the comic and saved more did not take the value of benefits

  • You have to customize, but ok! If you need to call

Show 2 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.