register plots php mysql

1

Good morning, I'm doing a promissory system and would like to know how to register the parcels in the bd with the information. wanted to enter the information as follows

in the registration form when I put the value $ 300.00 and put in 3 parcels it insert in the table MOVEMENT and in the PLOTS table, already with the parcels in the correct value and the amount of insert needed for the parcel quantity requests that as in the example it will be 3 insert of 100.00

follows my DB structure

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 get started!

    
asked by anonymous 02.09.2015 / 15:49

2 answers

1

To do this implementation is relatively simple, but there is 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 elaborated 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;
}

Result:

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'
)
    
02.09.2015 / 20:41
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')";
}
    
02.09.2015 / 16:08