Gerar titulos de cobrança

Pessoal to tentando desenvolver uma rotina, onde ira verificar no banco de dados, os alunos que eu tenho cadastrado e que estão ativos para geração da mensalidade.
Vou colocar no formulario uma data de vencimento e um botão para geração dessas cobranças.
Como seria a melhor forma para eu fazer isso?

Vc pode fazer a rotina num botão PHP pegando a data de vencimento e gerar os registros de combrança.

Dai teria que criar o metodo PHP e fazwr a chamada pelo botão ?
Sou iniciante no scriptcase, dai to quebrando a cabeça um pouco.

Quando vc cria um botão PHP, vc pode escrever o método PHP. Quando clicar no botão, o código vai ser executado.

Blz, valeu, vou tentar criar um metodo aqui pra ver no que dá.
Obrigado.

Voces tem algum exemplo de uma rotina que faça isso para eu ver mais ou menos como é feito?

Criei um formulario onde devo digitar a data de vencimento dos pagamentos, com isso vou consultar todos os meus alunos que estão ativos e assim gerar a cobrança referente a data de vencimento que eu coloquei.
Alguem tem algum exemplo de como posso fazer isso ?

Faz isso com uma consulta. Usa o filtro na data e faz um botão RUN para gerar a cobrança dos registros filtrados.

iai antony, no exemplo que disponibilizei existe um a tabela contrato_parcelas, esse é o modelo de tabelas que eu utilizo para geração de valores por mes.
voce tem que utiliza funcao sc_exe_sql para inserir, utilizando uma sql que verifica quais alunos estao abilitados.
voce pode tambem gerar mensalidades a parti da data do contrato de cada aluno, utilizando essa funcao

Atenciosamente Arquimedes

Blz, mto obrigado, vou seguir aquele modelo entao e ve se da certo.

eu utilizo esse codigo para geracao de parcelas automaticas
$contrato_id={codigo};

sc_lookup(dataset,“SELECT data_contrato, date_format(data_contrato, ‘%m’), date_format(data_contrato, ‘%d’) FROM contrato WHERE
codigo = ‘$contrato_id’”);
if(!empty({dataset})){
$data_contrato = {dataset}[0][0];
$mes = {dataset}[0][1];
$dia = {dataset}[0][2];
}
if ($dia <=28)
{

if ($mes == 1)
{
$CondicaoPagto=“00/31/59/90/120/151/181/212/243/273/304/334”;
}
elseif ($mes == 2)
{
$CondicaoPagto=“00/28/59/89/120/150/181/212/242/273/303/334”;
}
elseif ($mes == 3)
{
$CondicaoPagto=“00/31/61/92/122/153/184/214/245/275/306/337”;
}

elseif ($mes == 4)
{
$CondicaoPagto=“00/30/61/91/122/153/183/214/244/275/305/336”;
}
elseif ($mes == 5)
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/276/305/337”;
}

elseif ($mes == 6)
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/245/275/306/336”;
}

elseif ($mes == 7)
{
$CondicaoPagto=“00/31/62/92/123/153/184/215/245/276/306/337”;
}

elseif ($mes == 8)
{
$CondicaoPagto=“00/31/61/92/122/153/184/214/245/275/306/336”;
}

elseif ($mes == 9)
{
$CondicaoPagto=“00/30/61/91/122/153/183/214/244/275/305/336”;
}

elseif ($mes == 10)
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/275/306/337”;
}

elseif ($mes == 11)
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/244/275/306/336”;
}

elseif ($mes == 12)
{
$CondicaoPagto=“00/31/62/92/123/153/184/214/245/276/306/337”;
}

}

elseif ($dia ==29)
{

if ($mes == 1)
{
$CondicaoPagto=“00/31/59/90/120/151/181/212/243/273/304/334”;
}
elseif ($mes == 2)
{
$CondicaoPagto=“00/28/59/89/120/150/181/212/242/273/303/334”;
}
elseif ($mes == 3)
{
$CondicaoPagto=“00/31/61/92/122/153/184/214/245/275/306/337”;
}

elseif ($mes == 4)
{
$CondicaoPagto=“00/30/61/91/122/153/183/214/244/275/306/336”;
}
elseif ($mes == 5)
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/276/305/337”;
}

elseif ($mes == 6)
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/245/275/306/336”;
}

elseif ($mes == 7)
{
$CondicaoPagto=“00/31/62/92/123/153/184/215/245/276/306/337”;
}

elseif ($mes == 8)
{
$CondicaoPagto=“00/31/61/92/122/153/184/214/245/275/306/336”;
}

elseif ($mes == 9)
{
$CondicaoPagto=“00/30/61/91/122/153/183/214/244/275/305/336”;
}

elseif ($mes == 10)
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/275/306/337”;
}

elseif ($mes == 11)
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/244/275/306/336”;
}

elseif ($mes == 12)
{
$CondicaoPagto=“00/31/62/92/123/153/184/214/245/276/306/337”;
}

}
//dia=30------------------------------------------------------

elseif ($dia ==30)
{

if ($mes == 1)
{
$CondicaoPagto=“00/30/59/90/120/151/181/212/243/273/304/334”;
}
elseif ($mes == 2)
{
$CondicaoPagto=“00/28/58/89/120/150/181/212/242/273/303/334”;
}
elseif ($mes == 3)
{
$CondicaoPagto=“00/31/61/92/122/153/184/214/245/275/306/336”;
}

elseif ($mes == 4)
{
$CondicaoPagto=“00/30/61/91/122/153/183/214/244/275/305/336”;
}
elseif ($mes == 5)
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/275/305/337”;
}

elseif ($mes == 6)
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/244/275/306/336”;
}

elseif ($mes == 7)
{
$CondicaoPagto=“00/31/62/92/123/153/184/214/245/276/306/337”;
}

elseif ($mes == 8)
{
$CondicaoPagto=“00/31/61/92/122/153/183/214/245/275/306/336”;
}

elseif ($mes == 9)
{
$CondicaoPagto=“00/30/61/91/122/152/183/214/244/275/305/336”;
}

elseif ($mes == 10)//falta consertar calculo
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/275/306/337”;
}

elseif ($mes == 11)//falta consertar calculo
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/244/275/306/336”; //falta consertar calculo
}

elseif ($mes == 12)//falta consertar calculo
{
$CondicaoPagto=“00/31/62/92/123/153/184/214/245/276/306/337”; //falta consertar calculo
}
}

elseif ($dia ==31)//falta consertar calculo
{

if ($mes == 1)
{
$CondicaoPagto=“00/30/59/90/120/151/181/212/243/273/304/334”;
}
elseif ($mes == 2)
{
$CondicaoPagto=“00/28/58/89/120/150/181/212/242/273/303/334”;
}
elseif ($mes == 3)
{
$CondicaoPagto=“00/31/61/92/122/153/184/214/245/275/306/336”;
}

elseif ($mes == 4)
{
$CondicaoPagto=“00/30/61/91/122/153/183/214/244/275/305/336”;
}
elseif ($mes == 5)
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/275/305/337”;
}

elseif ($mes == 6)
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/244/275/306/336”;
}

elseif ($mes == 7)
{
$CondicaoPagto=“00/31/62/92/123/153/184/214/245/276/306/337”;
}

elseif ($mes == 8)
{
$CondicaoPagto=“00/31/61/92/122/153/183/214/245/275/306/336”;
}

elseif ($mes == 9)
{
$CondicaoPagto=“00/30/61/91/122/152/183/214/244/275/305/336”;
}

elseif ($mes == 10)
{
$CondicaoPagto=“00/31/61/92/123/153/184/214/245/275/306/337”;
}

elseif ($mes == 11)
{
$CondicaoPagto=“00/30/61/92/122/153/183/214/244/275/306/336”;
}

elseif ($mes == 12)
{
$CondicaoPagto=“00/31/62/92/123/153/184/214/245/276/306/337”;
}
}

sc_lookup(dataset,“SELECT data_contrato, date_format(data_contrato, ‘%m’), date_format(data_contrato, ‘%d’) FROM contrato WHERE
codigo = ‘$contrato_id’”);
if(!empty({dataset})){
$data_contrato = {dataset}[0][0];
$mes = {dataset}[0][1];
$dia = {dataset}[0][2];
}

$NumeroNF = {codigo};

$valor_dividido=({resta_pagar}/60)*12;
$ValorPedido=$valor_dividido;

//*************************************

$PARCELAS=explode("/",$CondicaoPagto);

$ICOUNT=count($PARCELAS);

//$HOJE=date(“Y-m-d”);
//$data_contrato={data_contrato};

//$numero_contrato=‘Contrato -’;
$numero_contrato=$contrato_id;

$ICOUNT=$ICOUNT==0?1:$ICOUNT;

$VLRPARCS=round($ValorPedido/$ICOUNT,2);

$VLRPARC1=round($VLRPARCS+$ValorPedido-($VLRPARCS*$ICOUNT),2);

for ($i = 0; $i <= ($ICOUNT-1); $i++) {

//$VENCIMENTO=sc_date($HOJE,“AAAA-MM-DD”,"+",$PARCELAS[$i],0,0);
$VENCIMENTO=sc_date($data_contrato,“AAAA-MM-DD”,"+",$PARCELAS[$i],0,0);

$VLR=$i==0?$VLRPARC1:$VLRPARCS;

IF ($ICOUNT>1) $NRODOC=$numero_contrato.$NumeroNF."-".substr(“ABCDFGHIJLMNOPQRSTUVXZ”,$i,1);
ELSE $NRODOC=$NumeroNF;

sc_exec_sql(“INSERT INTO contrato_parcelas
(contrato_id, data_conta, data_vencimento, descricao, numero_documento, valor_parcela, hoje, n_parcela)
VALUES ($contrato_id, CURRENT_DATE,’$VENCIMENTO’, ‘Faturamento’,’$NRODOC’,$VLR,$dia,$i )”);

}

essa função você utiliza em um form ou em uma grid?

// GERA PARCAELAS
$laco = 1;
{vencimento} = sc_date (date(‘Ymd’), “aaaammdd”, “+”, 5, 0, 0);
if({mensal_contratar} == ‘*’){
while($laco <= 12)
{
sc_exec_sql(“insert into adm_parcelas
values(’$id’,’{vencimento}’,’$valor’,Null,0)”);
$laco++;
$id++;
{vencimento} = sc_date ({vencimento}, “aaaammdd”, "+ ", 0, 1, 0);
}
}

Adeque a rotina acima a sua necessidade, ela gera parcelas vencendo todo o dia x.

Segue mais um exemplo, este com a preocupação de residual.
$CondicaoPagto=“00/30/60/90”;
$ValorPedido=1000.00;
$NumeroNF=12345;
//*************************************

$PARCELAS=explode("/",$CondicaoPagto);

$ICOUNT=count($PARCELAS);

$HOJE=date(“Y-m-d”);

$ICOUNT=$ICOUNT==0?1:$ICOUNT;

$VLRPARCS=round($ValorPedido/$ICOUNT,2);

$VLRPARC1=round($VLRPARCS+$ValorPedido-($VLRPARCS*$ICOUNT),2);

for ($i = 0; $i <= ($ICOUNT-1); $i++) {

$VENCIMENTO=sc_date($HOJE,“AAAA-MM-DD”,"+",$PARCELAS[$i],0,0);

$VLR=$i==0?$VLRPARC1:$VLRPARCS;

IF ($ICOUNT>1) $NRODOC=$NumeroNF."-".substr(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”,$i,1);
ELSE $NRODOC=$NumeroNF;

sc_exec_sql(“INSERT INTO contas_receber
(data_conta, data_vencimento, descricao, numero_documento, valor)
VALUES (CURRENT_DATE,’$VENCIMENTO’, ‘Faturamento’,’$NRODOC’, $VLR)”);

}

Postado em no portal da Associação em 17 Junho 2009.

Utilizei essa função que o Haroldo colocou e funcionou perfeitamente, só estou tentando fazer com que gere somente uma parcela, em vez de ser com a data atual, seria com a data que eu iria digitar de vencimento:
Ex. Data = 10/09/2011, deveria gravar a data de vencimento com essa data e nao com a data atual.

ola amigo eu tambem utilizei o codigo do haroldo e fiz essas pequenas modificacoes, para fica funcional, é o mesmo que eu postei adaptado para 12 parcelas a parti de uma data cadastrada

$CondicaoPagto=“00/30”; //para apenas um mes, porem voce tem que verificar e que existem meses com mais e menos que 30 dias, conforme codigo postado por mim acima,

sc_lookup(dataset,“SELECT data_vencimento FROM contrato WHERE
codigo = ‘$cadastro’”);
if(!empty({dataset})){
$data_vencimento = {dataset}[0][0];

}
// aqui voce faz a verificacao para data do vencimento do aluno

$VENCIMENTO=sc_date( $data_vencimento,“AAAA-MM-DD”,"+",$PARCELAS[$i],0,0);

//voce faz a chamada da data do vencimento neste local

O que eu estou tentando fazer, é eu digitar a data de vencimento e o valor, e ele gravar com a data de vencimento que eu estou digitando. O valor ele esta gravando certinho, só a data que eu nao consegui uma maneira de gravar com a data que eu digito ainda.

nao entendir? voce nao esta conseguindo cadastrar a data de vencimento ou gera a data pela funcao de gera data?

Eu to querendo que grave com a data que eu estou digitando:
Em vez de utilizar:

$CondicaoPagto=“00/30/60/90”;
$ValorPedido={valor};
$NumeroNF={nota};

Quero que eu mesmo digito a data de vencimento, para gravar a data que eu digitar e não para pegar a partir da data atual.

entao nesse caso para que voce nescessitaria de uma geracao automatica de parcelas?