Gerar Parcelas em Formulário (Resolvido)

// está enviando as parcelas, mas não esta incrementando o campo “vencimento parcela”(20/01/2022 => 20/02/2022 => 20/03/2022 etc…)

// já li todos os topicos do forum e não consegui resolver . Sou novato em php

$codigo_venda = {codigo_venda};
$data = sc_date_conv({data}, “db_format”, “aaaammdd”);
$quantidade_parcelas = {quantidade_parcelas};
$total = {total};
$valor_parcela = $total / $quantidade_parcelas;

$vencimento_parcela = sc_date ($data, “aaaammdd”, “+”, 0, $quantidade_parcelas, 0);

for ($i = 1; $i <= $quantidade_parcelas ; $i++)

{

sc_exec_sql(“INSERT INTO parcelas (codigo_venda, vencimento_parcela, valor_parcela) VALUES ($codigo_venda, $vencimento_parcela, $valor_parcela)”);

}
;

Tenta assim

for ($i = 1; $i <= $quantidade_parcelas ; $i++)

{

$vencimento_parcela = sc_date ($data, “aaaammdd”, “+”, 0, $i, 0);

sc_exec_sql(“INSERT INTO parcelas (codigo_venda, vencimento_parcela, valor_parcela) VALUES ($codigo_venda, $vencimento_parcela, $valor_parcela)”);

}

Estuda esse modelo que uso:

sc_lookup ( dataset,“SELECT idcontas, Nome1, vencimento, valor, obs, login, forma_pagamento, conta_contabil, ccusto, seq, cod_cli FROM contas_receber WHERE (idcontas = ‘[conta]’)”);

$conta = {dataset[0][0]};
$cliente = {dataset[0][1]};
$vence = {dataset[0][2]};
$valor = {dataset[0][3]};
$obs = {dataset[0][4]};
$login = {dataset[0][5]};
$forma = {dataset[0][6]};
$conta = {dataset[0][7]};
$_ccusto = {dataset[0][8]};
$_seq = {dataset[0][9]};
$_codcli = {dataset[0][10]};

$datalanca = Date(‘Y-m-d’);

$numero = {prazo};

$x=1;
while($x <= $numero)
{

$vencimento = sc_date($vence,“aaaa-mm-dd”, “+”, 0,$x-1,0);
$valorparcela = $valor/$numero;
$_num_parcela = $x;

$insert_table = ‘contas_receber’;
$insert_fields = array (
‘Nome1’ => “’$cliente’”,
‘data_lancamento’ => “’$datalanca’”,
‘vencimento’ => “’$vencimento’”,
‘valor’ => “’$valorparcela’”,
‘obs’ => “’$obs’”,
‘login’ => “’[usr_login]’”,
‘parcial’ => “‘0’”,
‘status’ => “‘1’”,
‘parcela’ => “’$_num_parcela’”,
‘forma_pagamento’ => “’$forma’”,
‘conta_contabil’ => “’$conta’”,
‘ccusto’ => “’$_ccusto’”,
‘seq’ => “’$_seq’”,
‘cod_cli’ => “’$_codcli’”,
);

// Insert record

$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;
sc_exec_sql($insert_sql);
$x++;
}

Desta forma ajuda?

$codigo_venda = {codigo_venda};
$data = sc_date_conv({data}, “db_format”, “aaaammdd”);
$quantidade_parcelas = {quantidade_parcelas};
$total = {total};
$valor_parcela = $total / $quantidade_parcelas;

for ($i = 1; $i <= $quantidade_parcelas ; $i++)

{

```
$numero_parcela = $i;
$vencimento_parcela = sc_date ($data, "aaaammdd", "+", 0, $i, 0);
```

sc_exec_sql(“INSERT INTO parcelas (codigo_venda, numero_parcela, vencimento_parcela, valor_parcela) VALUES ($codigo_venda, $numero_parcela, $vencimento_parcela, $valor_parcela)”);

}
;

Ou poderia usar o próprio $i para o campo numero_parcela.

Outro exemplo com residual:

Esse exemplo já é antigo no fórum, sempre é bom pesquisar antes de postar a dúvida.

E sempre fique ligado nas sugestões boas e principalmente nas ruins.

lembrando que $numero_parcela não é a quantidade de parcelas

a quantidade de parcelas é: $quantidade_parcelas

Meu exemplo trabalha com condição de pagamento.e não tem if.
Deturpou um pouco o código que sugeri.
De um echo no $valor_residual e no $total, se forem diferentes tem que cair no else.

Esse exemplo meu é antigo, ele joga o residual na primeira parcela e se sensibiliza quanto ao último dia do mês (exemplo: primeiro vencimento: 31/01/2022



Download do exemplo:https://bit.ly/35fW0a9 (atualizado)

Aqui segue uma série de demos de exemplos diversos:

TAGS: HAROLDO, PARCELAS, RESIDUAL, CONTROLE, RECEBIMENTO



1 Curtida

$ICOUNT=count($quantidade_parcelas);

$quantidades_parcelas é um array?
Como disse, deturpou o código sugerido originalmente.

Veja o outro exemplo, faça download da app e importe como aplicação em seu projeto e estude como foi feito

$quantidade_parcelas não é array, é um campo no meu form

Eu sei que não é um array. Então porque passar o count nessa variável?

Complicado hein colega?
Erros básicos de PHP.

Cadê a abertura da chaves em if ($valor_residual == $total)

E seu código não está identado, não está marcado como código no editor aqui, o que dificulta a leitura do código.

Veja e diferença de um código identado e marcado como código aqui:

Boa tarde Haroldo, agora entendi, realmente eu não tinha entendido o código com residual

agora eu vou adaptar

Oi, Haroldo

Eu consegui fazer de acordo com o seu exemplo, o código gera parcelas com vencimentos corretos de acordo com o calendário e acrescenta valor residual em parcela

Muito Obrigado :grinning:

2 Curtidas