Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Inserir item DataGrid em uma TWindows Bom dia, No código abaixo tenho um formulário que tem um DataGrid que carrego os itens de uma tabela. Ao clicar no item abro um TWindow com alguns dados e uns campos para inserir algumas opções em um outro DataGrid dentro do TWindows. Porem quando clico em Adicinar retorna o erro abaixo. Como posso resolver? Fatal error: Uncaught Error: Call to a member function addItem() on null in C:...
ES
Inserir item DataGrid em uma TWindows  
Bom dia,

No código abaixo tenho um formulário que tem um DataGrid que carrego os itens de uma tabela. Ao clicar no item abro um TWindow com alguns dados e uns campos para inserir algumas opções em um outro DataGrid dentro do TWindows. Porem quando clico em Adicinar retorna o erro abaixo. Como posso resolver?

Fatal error: Uncaught Error: Call to a member function addItem() on null in C:xampphtdocspetappcontrolTarefaTarefaList.class.php:378
Stack trace:
#0 [internal function]: TarefaList->onAdicionarVacina(Array)
#1 C:xampphtdocspetlibadianticoreAdiantiCoreApplication.php(73): call_user_func(Array, Array)
#2 C:xampphtdocspetengine.php(27): AdiantiCoreAdiantiCoreApplication::run('1')
#3 C:xampphtdocspetengine.php(64): TApplication::run()
#4 {main}
thrown in C:xampphtdocspetappcontrolTarefaTarefaList.class.php on line 378



  1. <?php
  2. use Adianti\Control\TAction;
  3. use Adianti\Control\TPage;
  4. use Adianti\Control\TWindow;
  5. use Adianti\Core\AdiantiCoreApplication;
  6. use Adianti\Core\AdiantiCoreTranslator;
  7. use Adianti\Database\TCriteria;
  8. use Adianti\Database\TFilter;
  9. use Adianti\Database\TRepository;
  10. use Adianti\Database\TTransaction;
  11. use Adianti\Registry\TSession;
  12. use Adianti\Validator\TRequiredValidator;
  13. use Adianti\Widget\Base\TElement;
  14. use Adianti\Widget\Base\TScript;
  15. use Adianti\Widget\Container\TPanelGroup;
  16. use Adianti\Widget\Container\TVBox;
  17. use Adianti\Widget\Datagrid\TDataGrid;
  18. use Adianti\Widget\Datagrid\TDataGridAction;
  19. use Adianti\Widget\Datagrid\TDataGridColumn;
  20. use Adianti\Widget\Datagrid\TPageNavigation;
  21. use Adianti\Widget\Dialog\TMessage;
  22. use Adianti\Widget\Dialog\TQuestion;
  23. use Adianti\Widget\Form\TButton;
  24. use Adianti\Widget\Form\TCheckGroup;
  25. use Adianti\Widget\Form\TDate;
  26. use Adianti\Widget\Form\TEntry;
  27. use Adianti\Widget\Form\THtmlEditor;
  28. use Adianti\Widget\Form\TLabel;
  29. use Adianti\Widget\Form\TRadioGroup;
  30. use Adianti\Widget\Form\TSpinner;
  31. use Adianti\Widget\Util\TXMLBreadCrumb;
  32. use Adianti\Widget\Wrapper\TDBCombo;
  33. use Adianti\Wrapper\BootstrapDatagridWrapper;
  34. use Adianti\Wrapper\BootstrapFormBuilder;
  35. /**
  36.  * ClienteList
  37.  * @author  Eriton Soares
  38.  */
  39. class TarefaList extends TPage
  40. {
  41.     function __construct()
  42.     {
  43.         parent::__construct();
  44.         $this->form = new BootstrapFormBuilder('form_TarefaList');
  45.         $this->form->setFormTitle('Tarefa');
  46.         $this->form->setClientValidation(true);
  47.         $this->dbgTarefa = new BootstrapDatagridWrapper(new TDataGrid);
  48.         $this->dbgTarefa->style 'width: 100%';
  49.         $this->dbgTarefa->datatable 'true';
  50.         $colId = new TDataGridColumn('id''Código''center''5%');
  51.         $colTipoTarefa = new TDataGridColumn('tipotarefa->descricao''Tipo''left''15%');
  52.         $colDescricao = new TDataGridColumn('descricao''Descrição''left''40%');
  53.         $colDataTarefa = new TDataGridColumn('datatarefa''Data''left''10%');
  54.         $colCliente = new TDataGridColumn('cliente->nome''Cliente''left''10%');
  55.         $colAnimal = new TDataGridColumn('animal->nome''Pet''left''10%');
  56.         $colStatus = new TDataGridColumn('status''Status''left''10%');
  57.         $colDataTarefa->setTransformer(['TMinhasFuncoes''formataDataGrid']);
  58.         $colStatus->setTransformer(function ($value$object$row) {
  59.             return TMinhasFuncoes::statusTarefa($object->tipotarefa_id);
  60.         });
  61.         $this->dbgTarefa->addColumn($colId);
  62.         $this->dbgTarefa->addColumn($colTipoTarefa);
  63.         $this->dbgTarefa->addColumn($colDescricao);
  64.         $this->dbgTarefa->addColumn($colDataTarefa);
  65.         $this->dbgTarefa->addColumn($colCliente);
  66.         $this->dbgTarefa->addColumn($colAnimal);
  67.         $this->dbgTarefa->addColumn($colStatus);
  68.         //$actEditar = new TDataGridAction(['TarefaForm', 'onEdit'], ['cpf' => '{cpfcnpj}']);
  69.         $actConsultar = new TDataGridAction(['TarefaList''onConsultar'], ['tarefa_id' => '{id}''tipotarefa_id' => '{tipotarefa_id}']);
  70.         //$actApagar = new TDataGridAction([$this, 'onDelete'], ['id' => '{id}']);
  71.         $this->dbgTarefa->addAction($actConsultar'Consultar',   'fa:search green');
  72.         //$this->dbgTarefa->addAction($actEditar, _t('Edit'),   'far:edit blue');
  73.         //$this->dbgTarefa->addAction($actApagar, _t('Delete'), 'far:trash-alt red');
  74.         // create the datagrid model
  75.         $this->dbgTarefa->createModel();
  76.         // creates the page navigation
  77.         $this->pgnTarefa = new TPageNavigation;
  78.         $this->pgnTarefa->setAction(new TAction([$this'onReload']));
  79.         $pandbgTarefa = new TPanelGroup('Tarefa''white');
  80.         $pandbgTarefa->add($this->dbgTarefa);
  81.         $pandbgTarefa->addFooter($this->pgnTarefa);
  82.         // vertical box container
  83.         $conTarefa = new TVBox;
  84.         $conTarefa->style 'width: 100%';
  85.         //$conTarefa->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  86.         //$conTarefa->add($this->form);
  87.         $conTarefa->add($pandbgTarefa);
  88.         parent::add($conTarefa);
  89.     }
  90.     public function onConsultar($param NULL)
  91.     {
  92.         try {
  93.             // open a transaction with database 'pet'
  94.             TTransaction::open('pet');
  95.             if ($param['tipotarefa_id'] == 1) {
  96.                 $Tarefa = new Tarefa($param['tarefa_id']);
  97.                 $FichaAtendimento = new FichaAtendimento($Tarefa->fichaatendimento_id);
  98.                 $Cliente = new Cliente($Tarefa->cliente_id);
  99.                 $Animal = new Animal($Tarefa->animal_id);
  100.                 $conn TTransaction::get();
  101.                 $sql $conn->prepare(
  102.                     "select * " .
  103.                         "from pet.pet999hta " .
  104.                         "where tarefa_id = " $Tarefa->id "  " .
  105.                         "order by created_at desc "
  106.                 );
  107.                 $sql->execute();
  108.                 $resultTarefa $sql->fetchAll();
  109.                 if (isset($resultTarefa[0]['id'])) {
  110.                     $txtHistoricoTarefa '';
  111.                     foreach ($resultTarefa as $historicoTarefa) {
  112.                         $HistoricoTarefa = new HistoricoTarefa($historicoTarefa['id']);
  113.                         $txtHistoricoTarefa $txtHistoricoTarefa 'Data ' Date('d-m-Y H:i:s'strtotime($HistoricoTarefa->created_at)) . ' Usuário: ' $HistoricoTarefa->systemuser->name '<br>';
  114.                         $txtHistoricoTarefa $txtHistoricoTarefa $HistoricoTarefa->descricao;
  115.                         //$txtHistoricoTarefa = $txtHistoricoTarefa . '------------------------------------------------------<br>';    
  116.                     }
  117.                 }
  118.                 $janelaArquivo TWindow::create('Tarefa - Vacina'0.500.50);
  119.                 //$janelaArquivo->setPosition(750, 240);
  120.                 $formVacina = new BootstrapFormBuilder('form_Vacina');
  121.                 $formVacina->setFieldSizes('100%');
  122.                 $lblTutor = new TLabel('Tutor');
  123.                 $lblTutor->setSize('100%');
  124.                 $tutor = new TEntry('tutor');
  125.                 $tutor->setSize('100%');
  126.                 $tutor->setValue($Cliente->nome);
  127.                 $tutor->setEditable(FALSE);
  128.                 $lblAnimal = new TLabel('Pet');
  129.                 $lblAnimal->setSize('100%');
  130.                 $animal = new TEntry('animal');
  131.                 $animal->setValue($Animal->nome);
  132.                 $animal->setSize('100%');
  133.                 $animal->setEditable(FALSE);
  134.                 $lblCelular = new TLabel('Celular');
  135.                 $lblCelular->setSize('100%');
  136.                 $celular = new TEntry('ceclular');
  137.                 $celular->setValue($Cliente->celular);
  138.                 $celular->setSize('100%');
  139.                 $celular->setEditable(FALSE);
  140.                 $lblEmail = new TLabel('Email');
  141.                 $lblEmail->setSize('100%');
  142.                 $email = new TEntry('email');
  143.                 $email->setValue($Cliente->email);
  144.                 $email->setSize('100%');
  145.                 $email->setEditable(FALSE);
  146.                 $linha $formVacina->addFields([$lblTutor$tutor], [$lblAnimal$animal]);
  147.                 $linha->layout = ['col-sm-8''col-sm-4'];
  148.                 $linha $formVacina->addFields([$lblCelular$celular], [$lblEmail$email]);
  149.                 $linha->layout = ['col-sm-4''col-sm-8'];
  150.                 $this->dbgCarteiraVacinacao = new BootstrapDatagridWrapper(new TDataGrid);
  151.                 $this->dbgCarteiraVacinacao->style 'width: 100%';
  152.                 $this->dbgCarteiraVacinacao->datatable 'true';
  153.                 $colVacina = new TDataGridColumn('procedimento->descricao''Vacina''left''30%');
  154.                 $colTipoVacina = new TDataGridColumn('tipovacina->descricao''Tipo''left''15%');
  155.                 $colAplicacao = new TDataGridColumn('dataaplicacao''Aplicação''left''10%');
  156.                 $colAplicacao->setTransformer(['TMinhasFuncoes''formataDataGrid']);
  157.                 $colProximaAplicacao = new TDataGridColumn('proximaaplicacao''Prox. Aplicação''left''10%');
  158.                 $colProximaAplicacao->setTransformer(['TMinhasFuncoes''formataDataGrid']);
  159.                 $this->dbgCarteiraVacinacao->addColumn($colVacina);
  160.                 $this->dbgCarteiraVacinacao->addColumn($colTipoVacina);
  161.                 $this->dbgCarteiraVacinacao->addColumn($colAplicacao);
  162.                 $this->dbgCarteiraVacinacao->addColumn($colProximaAplicacao);
  163.                 $this->dbgCarteiraVacinacao->createModel();
  164.                 $formVacina->addFields([$this->dbgCarteiraVacinacao]);
  165.                 $lblObservacao = new TLabel('Observação');
  166.                 $txtObservacao = new THtmlEditor('observacao');
  167.                 $txtObservacao->setSize('100%'100);
  168.                 $txtObservacao->setOption('placeholder''digite aqui...');
  169.                 $txtObservacao->disableToolbar(TRUE);
  170.                 $linha $formVacina->addFields([$lblObservacao$txtObservacao]);
  171.                 $linha->layout = ['col-sm-12'];
  172.                 if (!empty($historicoTarefa)) {
  173.                     $lblHistoricoObservacao = new TLabel('Hitórico');
  174.                     $txtHistoricoObservacao = new THtmlEditor('historico');
  175.                     $txtHistoricoObservacao->setValue($txtHistoricoTarefa);
  176.                     $txtHistoricoObservacao->setSize('100%'100);
  177.                     $txtHistoricoObservacao->setEditable(FALSE);
  178.                     $txtHistoricoObservacao->setOption('placeholder''digite aqui...');
  179.                     $txtHistoricoObservacao->disableToolbar(TRUE);
  180.                     $linha $formVacina->addFields([$lblHistoricoObservacao$txtHistoricoObservacao]);
  181.                     $linha->layout = ['col-sm-12'];
  182.                 }
  183.                 $formVacina->addAction('Finalizar Tarefa', new TAction(['TarefaList''finalizarTarefa'], ['tarefa_id' => $Tarefa->id'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
  184.                 $formVacina->addAction('Salvar Histórico', new TAction(['TarefaList''salvarHistorico'], ['tarefa_id' => $Tarefa->id'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
  185.                 $this->onReloadCarteiraVacinacao(array('agendamento_id' => $FichaAtendimento->agendamento_id'animal_id' => $Animal->id));
  186.                 $janelaArquivo->add($formVacina);
  187.                 $janelaArquivo->show();
  188.                 TTransaction::close();
  189.             } else if ($param['tipotarefa_id'] == 2) {
  190.                 $Tarefa = new Tarefa($param['tarefa_id']);
  191.                 $FichaAtendimento = new FichaAtendimento($Tarefa->fichaatendimento_id);
  192.                 $Cliente = new Cliente($Tarefa->cliente_id);
  193.                 $Animal = new Animal($Tarefa->animal_id);
  194.                 /*
  195.                 $conn = TTransaction::get();
  196.                 $sql = $conn->prepare(
  197.                     "select * " .
  198.                         "from pet.pet999hta " .
  199.                         "where tarefa_id = " . $Tarefa->id . "  " .
  200.                         "order by created_at desc "
  201.                 );
  202.                 $sql->execute();
  203.                 $resultTarefa = $sql->fetchAll();
  204.                 if (isset($resultTarefa[0]['id'])) {
  205.                     $txtHistoricoTarefa = '';
  206.                     foreach ($resultTarefa as $historicoTarefa) {
  207.                         $HistoricoTarefa = new HistoricoTarefa($historicoTarefa['id']);
  208.                         $txtHistoricoTarefa = $txtHistoricoTarefa . 'Data ' . Date('d-m-Y H:i:s', strtotime($HistoricoTarefa->created_at)) . ' Usuário: '.$HistoricoTarefa->systemuser->name.'<br>';
  209.                         $txtHistoricoTarefa = $txtHistoricoTarefa . $HistoricoTarefa->descricao;
  210.                         //$txtHistoricoTarefa = $txtHistoricoTarefa . '------------------------------------------------------<br>';    
  211.                     }
  212.                 }
  213.                 */
  214.                 $janelaArquivo TWindow::create('Tarefa - Carteira Vacinação'0.500.50);
  215.                 //$janelaArquivo->setPosition(750, 240);
  216.                 $formCarteiraVacinacao = new BootstrapFormBuilder('form_CarteiraVacinacao');
  217.                 $formCarteiraVacinacao->setFieldSizes('100%');
  218.                 $lblTutor = new TLabel('Tutor');
  219.                 $lblTutor->setSize('100%');
  220.                 $tutor = new TEntry('tutor');
  221.                 $tutor->setSize('100%');
  222.                 $tutor->setValue($Cliente->nome);
  223.                 $tutor->setEditable(FALSE);
  224.                 $lblAnimal = new TLabel('Pet');
  225.                 $lblAnimal->setSize('100%');
  226.                 $animal = new TEntry('animal');
  227.                 $animal->setValue($Animal->nome);
  228.                 $animal->setSize('100%');
  229.                 $animal->setEditable(FALSE);
  230.                 $lblVacina = new TLabel('Vacina');
  231.                 $lblVacina->setSize('100%');
  232.                 $condicao = new TCriteria();
  233.                 $condicao->add(new TFilter('tipoespecie_id''='$Animal->tipoespecie_id));
  234.                 $condicao->add(new TFilter('tipocategoriaprocedimento_id''='5));
  235.                 $vacina = new TDBCombo('vacina_id''pet''ProcedimentoCategoria''procedimento_id''{procedimento->descricao}''(select descricao from pet.pet002pro where id = procedimento_id)'$condicao);
  236.                 $vacina->setSize('100%');
  237.                 $vacina->setChangeAction(new TAction(array($this'onChangeVacina')));
  238.                 $condicao = new TCriteria();
  239.                 $condicao->add(new TFilter('id''='0));
  240.                 $lblTipoVacina = new TLabel('Tipo Vacina');
  241.                 $lblTipoVacina->setSize('100%');
  242.                 $tipoVacina = new TDBCombo('tipovacina_id''pet''TipoVacina''id''descricao''descricao'$condicao);
  243.                 $tipoVacina->setSize('100%');
  244.                 $lblDataVacina = new TLabel('Data Vacina');
  245.                 $lblDataVacina->setSize('100%');
  246.                 $dataVacina = new TDate('dataaplicacao');
  247.                 $dataVacina->setMask('dd/mm/yyyy');
  248.                 $dataVacina->setDatabaseMask('yyyy-mm-dd');
  249.                 $lblBotao = new TLabel('Botão''white');
  250.                 $lblBotao->setSize('100%');
  251.                 $btnAdiocinarVacina TButton::create('adicionarCacina', [$this'onAdicionarVacina'], 'Adicionar''fa:cart-plus');
  252.                 $btnAdiocinarVacina->getAction()->setParameter('static''1');
  253.                 $btnAdiocinarVacina->getAction()->setParameter('tarefa_id'$Tarefa->id);
  254.                 $btnAdiocinarVacina->setSize('100%');
  255.                 $btnAdiocinarVacina->class 'btn btn-sm btn-primary';
  256.                 $linha $formCarteiraVacinacao->addFields([$lblTutor$tutor], [$lblAnimal$animal]);
  257.                 $linha->layout = ['col-sm-8''col-sm-4'];
  258.                 $linha $formCarteiraVacinacao->addFields([$lblVacina$vacina], [$lblTipoVacina$tipoVacina], [$lblDataVacina$dataVacina], [$lblBotao$btnAdiocinarVacina]);
  259.                 $linha->layout = ['col-sm-3''col-sm-3''col-sm-3''col-sm-3'];
  260.                 $this->dbgListaVacina = new BootstrapDatagridWrapper(new TDataGrid);
  261.                 //$this->dbgListaVacina->width = '100%';
  262.                 $this->dbgListaVacina->setId('listaVacina');
  263.                 //$this->dbgListaVacina->setHeight(150);
  264.                 //$this->dbgListaVacina->makeScrollable();
  265.                 $this->dbgListaVacina->generateHiddenFields();
  266.                 //$this->dbgListaVacina->datatable = 'true';
  267.                 $this->dbgListaVacina->style "min-width: 10px; margin-bottom: 10px;";
  268.                 $colUniqId = new TDataGridColumn('uniq_id''Código''center''0%');
  269.                 $colProcedimentoId = new TDataGridColumn('procedimento_id''Procedimento''center''0%');
  270.                 $colTipoVacinaId = new TDataGridColumn('tipovacina_id''Tipo Vacina''center''0%');
  271.                 $colVacina = new TDataGridColumn('vacina''Vacina''left''15%');
  272.                 $colTipoVacina = new TDataGridColumn('tipovacina''Tipo''left''15%');
  273.                 $colDataAplicacao = new TDataGridColumn('dataaplicacao''Data''left''10%');
  274.                 $colDataAplicacao->setTransformer(['TMinhasFuncoes''formataDataGrid']);
  275.                 $this->dbgListaVacina->addColumn($colUniqId);
  276.                 $colUniqId->setVisibility(FALSE);
  277.                 $this->dbgListaVacina->addColumn($colProcedimentoId);
  278.                 $colProcedimentoId->setVisibility(FALSE);
  279.                 $this->dbgListaVacina->addColumn($colTipoVacinaId);
  280.                 $colTipoVacinaId->setVisibility(FALSE);
  281.                 $this->dbgListaVacina->addColumn($colVacina);
  282.                 $this->dbgListaVacina->addColumn($colTipoVacina);
  283.                 $this->dbgListaVacina->addColumn($colDataAplicacao);
  284.                 $this->dbgListaVacina->createModel();
  285.                 $formCarteiraVacinacao->addFields([$this->dbgListaVacina]);
  286.                 $formCarteiraVacinacao->addAction('Salvar Dados', new TAction(['TarefaList''finalizarTarefa'], ['tarefa_id' => $Tarefa->id'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
  287.                 //$formCarteiraVacinacao->addAction('Salvar Histórico', new TAction(['TarefaList', 'salvarHistorico'], ['tarefa_id' => $Tarefa->id, 'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
  288.                 //$this->onReloadCarteiraVacinacao(array('agendamento_id' => $FichaAtendimento->agendamento_id, 'animal_id' => $Animal->id));
  289.                 $janelaArquivo->add($formCarteiraVacinacao);
  290.                 $janelaArquivo->show();
  291.                 TTransaction::close();
  292.             }
  293.         } catch (Exception $e) {
  294.             new TMessage('error'$e->getMessage());
  295.             TTransaction::rollback();
  296.         }
  297.     }
  298.     public function onAdicionarVacina($param)
  299.     {
  300.         TTransaction::open('pet');
  301.         if (empty($param['vacina_id'])) {
  302.             new TMessage('info''Por favor selecione a Vacina.');
  303.         } else if (empty($param['tipovacina_id'])) {
  304.             new TMessage('info''Por favor selecione o Tipo da Vacina.');
  305.         } else {
  306.             $Tarefa = new Tarefa($param['tarefa_id']);
  307.             $Animal = new Animal($Tarefa->animal_id);
  308.             $Procedimento = new Procedimento($param['vacina_id']);
  309.             $TipoVacina = new TipoVacina($param['tipovacina_id']);
  310.             $uniqid uniqid();
  311.             $grid_data = [
  312.                 'uniq_id'          => $uniqid,
  313.                 'procedimento_id'          => $param['vacina_id'],
  314.                 'tipovacina_id'          => $param['tipovacina_id'],
  315.                 'vacina'  => $Procedimento->descricao,
  316.                 'tipovacina'  => $TipoVacina->descricao,
  317.                 'dataaplicacao'  => $param['dataaplicacao']
  318.             ];
  319.             // insert row dynamically
  320.             $row $this->dbgListaVacina->addItem((object) $grid_data);
  321.             $row->id $uniqid;
  322.             TDataGrid::replaceRowById('listaVacina'$uniqid$row);
  323.         }
  324.         TTransaction::close();
  325.     }
  326.     public static function onChangeVacina($param NULL)
  327.     {
  328.         try {
  329.             TTransaction::open('pet');
  330.             if (!empty($param['vacina_id'])) {
  331.                 $condicao = new TCriteria();
  332.                 $condicao->add(new TFilter('procedimento_id'' = '$param['vacina_id']));
  333.                 TDBCombo::reloadFromModel(
  334.                     'form_CarteiraVacinacao',
  335.                     'tipovacina_id',
  336.                     'pet',
  337.                     'TipoVacina',
  338.                     'id',
  339.                     'descricao',
  340.                     'descricao',
  341.                     $condicao,
  342.                     TRUE
  343.                 );
  344.             } else {
  345.                 $condicao = new TCriteria();
  346.                 $condicao->add(new TFilter('id'' = ''0'));
  347.                 TDBCombo::reloadFromModel(
  348.                     'form_CarteiraVacinacao',
  349.                     'tipovacina_id',
  350.                     'pet',
  351.                     'TipoVacina',
  352.                     'id',
  353.                     'descricao',
  354.                     'descricao',
  355.                     $condicao,
  356.                     TRUE
  357.                 );
  358.             }
  359.             TTransaction::close();
  360.         } catch (Exception $e) {
  361.             new TMessage('error'$e->getMessage());
  362.             TTransaction::rollback();
  363.         }
  364.     }
  365.     public static function finalizarTarefa($param NULL)
  366.     {
  367.         try {
  368.             if (empty($param['observacao'])) {
  369.                 new TMessage('info''Por favor informar a Observação.');
  370.                 return;
  371.             }
  372.             // open a transaction with database 'pet'
  373.             TTransaction::open('pet');
  374.             $Tarefa = new Tarefa($param['tarefa_id']);
  375.             $Tarefa->system_user_id_finalizado TSession::getValue('system_unit_id');
  376.             $Tarefa->datafinalizado date('Y-m-d H:i:s');
  377.             $Tarefa->store();
  378.             $HistoricoTarefa = new HistoricoTarefa();
  379.             $HistoricoTarefa->tarefa_id $Tarefa->id;
  380.             $HistoricoTarefa->descricao $param['observacao'];
  381.             $HistoricoTarefa->system_user_id TSession::getValue('system_unit_id');
  382.             $HistoricoTarefa->store();
  383.             //$this->onReload();
  384.             AdiantiCoreApplication::loadPage('TarefaList''onReload');
  385.             TScript::create("$('#{$param['id_janelaArquivo']}').remove();");
  386.             new TMessage('info''Tarefa Finalizada.');
  387.             TTransaction::close();
  388.         } catch (Exception $e) {
  389.             new TMessage('error'$e->getMessage());
  390.             TTransaction::rollback();
  391.         }
  392.     }
  393.     public static function salvarHistorico($param NULL)
  394.     {
  395.         try {
  396.             if (empty($param['observacao'])) {
  397.                 new TMessage('info''Por favor informar a Observação.');
  398.                 return;
  399.             }
  400.             // open a transaction with database 'pet'
  401.             TTransaction::open('pet');
  402.             $Tarefa = new Tarefa($param['tarefa_id']);
  403.             $HistoricoTarefa = new HistoricoTarefa();
  404.             $HistoricoTarefa->tarefa_id $Tarefa->id;
  405.             $HistoricoTarefa->descricao $param['observacao'];
  406.             $HistoricoTarefa->system_user_id TSession::getValue('system_unit_id');
  407.             $HistoricoTarefa->store();
  408.             TTransaction::close();
  409.             //$this->onReload();
  410.             AdiantiCoreApplication::loadPage('TarefaList''onReload');
  411.             TScript::create("$('#{$param['id_janelaArquivo']}').remove();");
  412.             new TMessage('info''Histórico Salvo.');
  413.         } catch (Exception $e) {
  414.             new TMessage('error'$e->getMessage());
  415.             TTransaction::rollback();
  416.         }
  417.     }
  418.     public function onReloadCarteiraVacinacao($param NULL)
  419.     {
  420.         try {
  421.             // open a transaction with database 'pet'
  422.             TTransaction::open('pet');
  423.             // creates a repository for BairroCidade
  424.             $repository = new TRepository('CarteiraVacinacao');
  425.             $limit 10;
  426.             // creates a criteria
  427.             $criteria = new TCriteria;
  428.             // default order
  429.             if (empty($param['order'])) {
  430.                 $param['order'] = '(select descricao from pet.pet002pro where id = procedimento_id)';
  431.                 $param['direction'] = 'asc';
  432.             }
  433.             $criteria->setProperties($param); // order, offset
  434.             $criteria->setProperty('limit'$limit);
  435.             $filter = new TFilter('agendamento_id''=''' $param['agendamento_id'] . ''); // create the filter
  436.             $criteria->add($filter);
  437.             $filter = new TFilter('animal_id''='$param['animal_id']); // create the filter
  438.             $criteria->add($filter);
  439.             // load the objects according to criteria
  440.             $objects $repository->load($criteriaFALSE);
  441.             if (is_callable($this->transformCallback)) {
  442.                 call_user_func($this->transformCallback$objects$param);
  443.             }
  444.             $this->dbgCarteiraVacinacao->clear();
  445.             if ($objects) {
  446.                 // iterate the collection of active records
  447.                 foreach ($objects as $object) {
  448.                     // add the object inside the datagrid
  449.                     $this->dbgCarteiraVacinacao->addItem($object);
  450.                 }
  451.             }
  452.             // reset the criteria for record count
  453.             $criteria->resetProperties();
  454.             // close the transaction
  455.             TTransaction::close();
  456.             $this->loaded true;
  457.         } catch (Exception $e) {
  458.             new TMessage('error'$e->getMessage());
  459.             TTransaction::rollback();
  460.         }
  461.     }
  462.     /**
  463.      * Load the datagrid with data
  464.      */
  465.     public function onReload($param NULL)
  466.     {
  467.         try {
  468.             // open a transaction with database 'pet'
  469.             TTransaction::open('pet');
  470.             // creates a repository for BairroCidade
  471.             $repository = new TRepository('Tarefa');
  472.             $limit 10;
  473.             // creates a criteria
  474.             $criteria = new TCriteria;
  475.             // default order
  476.             if (empty($param['order'])) {
  477.                 $param['order'] = 'datatarefa';
  478.                 $param['direction'] = 'desc';
  479.             }
  480.             $criteria->setProperties($param); // order, offset
  481.             $criteria->setProperty('limit'$limit);
  482.             //$hoje = date('Y-m-d');
  483.             //$filter = new TFilter('datatarefa', '<=', '' . $hoje . ''); // create the filter
  484.             //$criteria->add($filter);
  485.             $hoje date('Y-m-d');
  486.             $filter = new TFilter('cast(datatarefa as date) - diasalarme''<=''' $hoje ''); // create the filter
  487.             $criteria->add($filter);
  488.             $hoje date('Y-m-d');
  489.             $filter = new TFilter('datafinalizado''is'NULL); // create the filter
  490.             $criteria->add($filter);
  491.             // load the objects according to criteria
  492.             $objects $repository->load($criteriaFALSE);
  493.             if (is_callable($this->transformCallback)) {
  494.                 call_user_func($this->transformCallback$objects$param);
  495.             }
  496.             $this->dbgTarefa->clear();
  497.             if ($objects) {
  498.                 // iterate the collection of active records
  499.                 foreach ($objects as $object) {
  500.                     // add the object inside the datagrid
  501.                     $this->dbgTarefa->addItem($object);
  502.                 }
  503.             }
  504.             // reset the criteria for record count
  505.             $criteria->resetProperties();
  506.             $count $repository->count($criteria);
  507.             $this->pgnTarefa->setCount($count); // count of records
  508.             $this->pgnTarefa->setProperties($param); // order, page
  509.             $this->pgnTarefa->setLimit($limit); // limit
  510.             // close the transaction
  511.             TTransaction::close();
  512.             $this->loaded true;
  513.         } catch (Exception $e) {
  514.             new TMessage('error'$e->getMessage());
  515.             TTransaction::rollback();
  516.         }
  517.     }
  518.     /**
  519.      * method show()
  520.      * Shows the page
  521.      */
  522.     public function show()
  523.     {
  524.         // check if the datagrid is already loaded
  525.         if (!$this->loaded and (!isset($_GET['method']) or !(in_array($_GET['method'],  array('onReload''onSearch'))))) {
  526.             if (func_num_args() > 0) {
  527.                 $this->onReload(func_get_arg(0));
  528.             } else {
  529.                 $this->onReload();
  530.             }
  531.         }
  532.         parent::show();
  533.     }
  534. }

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 (1)


NR

A variável $this->dbgListaVacina é instanciada dentro da função onConsultar.
Quando você clica no Adicionar, é feita uma nova requisição para o servidor e toda a classe é reprocessada. Nesse caso a função chamada é onAdicionarVacina e, como a função onConsultar não foi chamada, essa variável não existe.

Ao invés de fazer tudo dentro da mesma classe, sugiro criar uma nova classe filha de TWindow.