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'
)