Lançado Adianti Framework 7.6!
Clique aqui para saber mais
setExitAction sendo acionado 2x no campo TDate? Olá! Tenho 2 campos de data no formulário um de data de inicio e outro de data fim. No campo de data início eu tenho um método no setExitAction que pega a data que está ali e soma 35 dias e retorna a soma para o campo de data fim do formulário! O problema é que se eu aperto no primeiro dia do mês a soma acontece numa boa.. então se eu resolvo trocar a data para o dia 2.. eu percebo ...
CG
setExitAction sendo acionado 2x no campo TDate?  
Olá!

Tenho 2 campos de data no formulário um de data de inicio e outro de data fim. No campo de data início eu tenho um método no setExitAction que pega a data que está ali e soma 35 dias e retorna a soma para o campo de data fim do formulário!

O problema é que se eu aperto no primeiro dia do mês a soma acontece numa boa.. então se eu resolvo trocar a data para o dia 2.. eu percebo que ele em vez de somar sobre o dia 2.. ele acaba sempre aumentando os dias para o mês seguinte.. e se eu selecionar outra data ele fica aumento os meses sem parar até bugar a data e ficar em 1969 algo assim.
Percebi também que cada vez que eu clico no campo de data ele já executa o setExitAction, e depois que seleciono a data ele executa novamente, somando assim 70 dias, ou seja, me parece que na primeira vez que clico ele aumenta corretamente, mas depois ele começa a incrementar.

Alguém tem ideia do pode estar acontecendo?
É normal executar a setExitAction duas vezes?
Obrigado!

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (6)


NR

Poste a função responsável por calcular e preencher a data final.

Testei aqui e não tive problemas. O exitAction até foi disparado 2 vezes, mas o cálculo retornou certinho.
CG

Como disse.. se você clicar na data do dia 1 ele soma os 35 dias.. depois se você clicar no dia 2 do mesmo mês.. ele aumenta em um mês a data.. e cada dia que você clica até o 13 do mês de fevereiro.. ele vai aumentando um mês.. quando você clica no dia 14.. ele vai pra 1970!
Olha.. eu fiz de várias maneiras.. essa foi a última que tentei.. tentei com DateTime também e a mesma coisa! Tentei quebrar a data num vetor e somar os dias.. funciona também.. mas acontece o mesmo problema descrito acima!

  1. <?php
  2.  public static function adicionar30Dias($param)
  3.     {
  4.         
  5.         $data_inicio date('d/m/Y'strtotime("+35 days",strtotime($param['data_inicio'])));
  6.         $obj = new stdClass();
  7.         $obj->data_fim $data_inicio;
  8.         TForm::sendData('form_admin_sindico'$obj);
  9.         
  10.     }
  11. ?>


Obrigado!
NR

Use o padrão americano de datas(yyyy-mm-dd) para realizar os cálculos.
CG

A minha data que vem do formulário já está em d/m/Y , o que tentei agora sem sucesso foi converter para Y-m-d e adicionar em cima disso e devolver d/m/Y.. estava acontecendo os mesmos problemas!

Porém fiz deste jeito aqui e está funcionando... mas tem um detalhe..

  1. <?php
  2. public static function adicionar30Dias($param)
  3.     {
  4.        
  5.         $data DateTime::createFromFormat('d/m/Y'$param['data_inicio']);
  6.         $data->add(new DateInterval('P35D')); // 2 dias
  7.         $obj = new stdClass();       
  8.         $obj->data_fim $data->format('d/m/Y');
  9.        
  10.        TForm::sendData('form_admin_sindico'$obj);
  11.         
  12.     }
  13. ?>


Ele está somando os dias certos sem pular meses.. mas estão dando um erro no PHP:

Fatal error: Call to a member function add() on boolean in C:wamp64wwwgecon6appcontrolgeconadminsindicoAdminSindicoForm.class.php on line 145

Não instanciei um objeto DateTime, porém quando instancio o objeto e passo os parâmetros os mesmos erros ocorrem!
NR

$data_inicio = date('d/m/Y', strtotime("+35 days",strtotime(TDate::date2us($param['data_inicio']))));
CG

Obrigado! Desta maneira funcionou!
Não me liguei de usar a classe TDate, mas de todas as maneiras que tentei.. com DateTime, quebrando em vetor e somando.. continuava o problema.
Mas usarei esta solução agora!
Obrigado!