Gerar titulos de cobrança

(antony.ferreira) #1

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?

(Cleyton Euler) #2

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

(antony.ferreira) #3

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.

(Cleyton Euler) #4

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.

(antony.ferreira) #5

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

(antony.ferreira) #6

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

(antony.ferreira) #7

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 ?

(Cleyton Euler) #8

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

(Arquimedes) #9

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

(antony.ferreira) #10

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

(Arquimedes) #11

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 )”);

}

(antony.ferreira) #12

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

(George Carvalho) #13

// 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.

(Haroldo) #14

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.

(antony.ferreira) #15

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.

(Arquimedes) #16

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

(antony.ferreira) #17

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.

(Arquimedes) #18

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

(antony.ferreira) #19

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.

(Arquimedes) #20

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