Autor Tópico: Acrescer Mês e ano em uma data  (Lida 2913 vezes)

aaguiar

  • Novato
  • *
  • Mensagens: 35
Acrescer Mês e ano em uma data
« Online: Maio 05, 2013, 01:46:10 am »
Prezados,

criei um método PHP para gerar parcelas de um determinado titulo automaticamente, o usuário deve informar a qtd de parcelas e o vencimento da primeira parcela.

sendo que o dia de vencimento do cliente é sempre dia 05.

Ex:
 
QTD Parcelas - 24
1º Vencimento - 05/06/2013


for ($x = 1; $x <= 24 ; $x++)

{

      preciso que
      $vencimento = '05/07/2013'  e assim por diante ('05/08/2013', '05/09/2013') até completar o numero de parcelas.




}


Para cada data que ele recebe, realizo o insert no banco com o numero da parcela e vencimento.

Valeu ai!



Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:Acrescer Mês e ano em uma data
« Responder #1 Online: Maio 05, 2013, 11:36:39 am »
Bom dia aaguiar
Veja se isso lhe ajuda:

<?php
function calcularParcelas($nParcelas, $dataPrimeiraParcela = null){
  if($dataPrimeiraParcela != null){
    $dataPrimeiraParcela = explode( "/",$dataPrimeiraParcela);
    $dia = $dataPrimeiraParcela[0];
    $mes = $dataPrimeiraParcela[1];
    $ano = $dataPrimeiraParcela[2];
  } else {
    $dia = date("d");
    $mes = date("m");
    $ano = date("Y");
  }
 
  for($x = 0; $x < $nParcelas; $x++){
    echo date("d/m/Y",strtotime("+".$x." month",mktime(0, 0, 0,$mes,$dia,$ano))),"<br/>";
  }
}
 
echo "Calcula as parcela a partir de hoje<br/>";
calcularParcelas(5);
echo "<br/><br/>";
echo "Calcula as parcela a partir de uma data qualquer<br/>";
calcularParcelas(5, "05/05/2013");
?>
Celso R.
________________________________
SC - V 8

aaguiar

  • Novato
  • *
  • Mensagens: 35
Re:Acrescer Mês e ano em uma data
« Responder #2 Online: Maio 05, 2013, 12:22:03 pm »
Olá Ticelso,

Foi exatamente o script que eu utilizei, porém ele da erro nas datas!


jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #3 Online: Maio 05, 2013, 12:33:35 pm »
Que erro?!
Jovito Melo
Maceió - Alagoas

Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:Acrescer Mês e ano em uma data
« Responder #4 Online: Maio 05, 2013, 12:38:29 pm »
O SCRIPT que você colocou foi esse:

Ex:
 
QTD Parcelas - 24
1º Vencimento - 05/06/2013


for ($x = 1; $x <= 24 ; $x++)

{

      preciso que
      $vencimento = '05/07/2013'  e assim por diante ('05/08/2013', '05/09/2013') até completar o numero de parcelas.




}


Para cada data que ele recebe, realizo o insert no banco com o numero da parcela e vencimento.

Bom  como nosso amigo Jovito já perguntou não vou perguntar novamente.
Celso R.
________________________________
SC - V 8

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #5 Online: Maio 05, 2013, 12:56:59 pm »
ticelso,

O script está correto, eu só acrescentaria mais um parâmetro... que identificasse se a data inexistente iria para o próximo mês ou ficaria no último dia do mês.

Exemplo: se você escolher uma data igual ao dia 31 (que só existe em alguns meses), no seu script ele está avançando para o mês subsequente - CORRETO - porém tem clientes que não aceitam duas datas no mesmo mês, então você poderia acrescentar um parâmetro que checasse isso e colocasse a última data válida do mês em questão.

Mas está tudo correto com seu script.

Forte abraço.
Jovito Melo
Maceió - Alagoas

Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:Acrescer Mês e ano em uma data
« Responder #6 Online: Maio 05, 2013, 01:08:25 pm »
Fica ai a dica do colega jovitomelo muito bom.
Celso R.
________________________________
SC - V 8

aaguiar

  • Novato
  • *
  • Mensagens: 35
Re:Acrescer Mês e ano em uma data
« Responder #7 Online: Maio 05, 2013, 05:25:05 pm »
Consegui resolver Pessoal, valeu pela força!

Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:Acrescer Mês e ano em uma data
« Responder #8 Online: Maio 05, 2013, 05:26:57 pm »
Legal, parabéns.
Seria de bom senso que você disponibiliza-se o código para ajudar os outros colegas.
Claro se for do seu interesse.
Celso R.
________________________________
SC - V 8

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #9 Online: Maio 06, 2013, 02:01:39 am »
Poxa bacana aaguiar, como você implementou no SC ? Pena que esse código conta apenas os meses e não dos dias, estou estudando-o para ver se o usuário indique a data e o intervalo de cada! Quando descobrir eu posto aqui!

Abração!
F. A.
Analista de Sistemas

Caroline

  • Iniciante
  • **
  • Mensagens: 77
Plugins Scriptcase:
Gerador de etiquetas: http://infinitusweb.net.br/pluginsc/6/etiquetaspdf/

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #11 Online: Maio 06, 2013, 10:07:47 am »
Caroline me tira uma dúvida, você colocou em qual evento?
F. A.
Analista de Sistemas

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #12 Online: Maio 06, 2013, 10:47:59 am »
Em linhas gerais...


$CondicaoPagto="00/30/60/90";
$ValorPedido=1000.00;
$NumeroNF=12345;
//*************************************

$PARCELAS=explode("/",$CondicaoPagto);  // Cria um array pra saber QUANTAS parcelas e QUAL O PERÍODO

$ICOUNT=count($PARCELAS);   // DEFINE A QUANTIDADE DE PARCELAS

$HOJE=date("Y-m-d");  // BUSCA A DATA ATUAL

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

$VLRPARCS=round($ValorPedido/$ICOUNT,2);  // CALCULA O VALOR DE CADA PARCELA

$VLRPARC1=round($VLRPARCS+$ValorPedido-($VLRPARCS*$ICOUNT),2);  // CALCULA O VALOR DA ÚLTIMA PARCELA TIRANDO OS ARREDONDAMENTOS MENSAIS

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

  $VENCIMENTO=sc_date($HOJE,"AAAA-MM-DD","+",$PARCELAS[$i],0,0); // ESTABELECE O VENCIMENTO DA PARCELA RELATIVAMENTE A CADA PERÍODO INDEPENDENTEMENTE DE QUAL SEJA

  $VLR=$i==0?$VLRPARC1:$VLRPARCS; // ESTABELECE A VARIÁVEL DO VALOR PARA INCLUSÃO NO BANCO

  IF ($ICOUNT>1) $NRODOC=$NumeroNF."-".substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",$i,1);
  ELSE           $NRODOC=$NumeroNF; // CRIA UM NÚMERO AUTOMÁTICO PARA CADA PARCELA, RELATIVAMENTE A NF E UMA LETRA DO ALFABETO
 
   sc_exec_sql("INSERT INTO contas_receber
               (data_conta,      data_vencimento, descricao,      numero_documento,  valor)
   VALUES  (CURRENT_DATE,'$VENCIMENTO',   'Faturamento','$NRODOC',              $VLR)");

}


Mais ou menos isso.
Jovito Melo
Maceió - Alagoas

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #13 Online: Maio 06, 2013, 10:50:01 am »
Caroline me tira uma dúvida, você colocou em qual evento?

Sugiro você criar uma Biblioteca Pública que poderá ser chamado em Eventos onAfterInsert de qualquer aplicação.

Jovito Melo
Maceió - Alagoas

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #14 Online: Maio 06, 2013, 11:22:16 am »
Jovito, quer dizer que se eu quiser dividir em 12x  terei que escrever "30/40/60/90/120/150/180/210/240/270/300/330"  ?
F. A.
Analista de Sistemas