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
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
- <?php
- use Adianti\Control\TAction;
- use Adianti\Control\TPage;
- use Adianti\Control\TWindow;
- use Adianti\Core\AdiantiCoreApplication;
- use Adianti\Core\AdiantiCoreTranslator;
- use Adianti\Database\TCriteria;
- use Adianti\Database\TFilter;
- use Adianti\Database\TRepository;
- use Adianti\Database\TTransaction;
- use Adianti\Registry\TSession;
- use Adianti\Validator\TRequiredValidator;
- use Adianti\Widget\Base\TElement;
- use Adianti\Widget\Base\TScript;
- use Adianti\Widget\Container\TPanelGroup;
- use Adianti\Widget\Container\TVBox;
- use Adianti\Widget\Datagrid\TDataGrid;
- use Adianti\Widget\Datagrid\TDataGridAction;
- use Adianti\Widget\Datagrid\TDataGridColumn;
- use Adianti\Widget\Datagrid\TPageNavigation;
- use Adianti\Widget\Dialog\TMessage;
- use Adianti\Widget\Dialog\TQuestion;
- use Adianti\Widget\Form\TButton;
- use Adianti\Widget\Form\TCheckGroup;
- use Adianti\Widget\Form\TDate;
- use Adianti\Widget\Form\TEntry;
- use Adianti\Widget\Form\THtmlEditor;
- use Adianti\Widget\Form\TLabel;
- use Adianti\Widget\Form\TRadioGroup;
- use Adianti\Widget\Form\TSpinner;
- use Adianti\Widget\Util\TXMLBreadCrumb;
- use Adianti\Widget\Wrapper\TDBCombo;
- use Adianti\Wrapper\BootstrapDatagridWrapper;
- use Adianti\Wrapper\BootstrapFormBuilder;
- /**
- * ClienteList
- * @author Eriton Soares
- */
- class TarefaList extends TPage
- {
- function __construct()
- {
- parent::__construct();
- $this->form = new BootstrapFormBuilder('form_TarefaList');
- $this->form->setFormTitle('Tarefa');
- $this->form->setClientValidation(true);
- $this->dbgTarefa = new BootstrapDatagridWrapper(new TDataGrid);
- $this->dbgTarefa->style = 'width: 100%';
- $this->dbgTarefa->datatable = 'true';
- $colId = new TDataGridColumn('id', 'Código', 'center', '5%');
- $colTipoTarefa = new TDataGridColumn('tipotarefa->descricao', 'Tipo', 'left', '15%');
- $colDescricao = new TDataGridColumn('descricao', 'Descrição', 'left', '40%');
- $colDataTarefa = new TDataGridColumn('datatarefa', 'Data', 'left', '10%');
- $colCliente = new TDataGridColumn('cliente->nome', 'Cliente', 'left', '10%');
- $colAnimal = new TDataGridColumn('animal->nome', 'Pet', 'left', '10%');
- $colStatus = new TDataGridColumn('status', 'Status', 'left', '10%');
- $colDataTarefa->setTransformer(['TMinhasFuncoes', 'formataDataGrid']);
- $colStatus->setTransformer(function ($value, $object, $row) {
- return TMinhasFuncoes::statusTarefa($object->tipotarefa_id);
- });
- $this->dbgTarefa->addColumn($colId);
- $this->dbgTarefa->addColumn($colTipoTarefa);
- $this->dbgTarefa->addColumn($colDescricao);
- $this->dbgTarefa->addColumn($colDataTarefa);
- $this->dbgTarefa->addColumn($colCliente);
- $this->dbgTarefa->addColumn($colAnimal);
- $this->dbgTarefa->addColumn($colStatus);
- //$actEditar = new TDataGridAction(['TarefaForm', 'onEdit'], ['cpf' => '{cpfcnpj}']);
- $actConsultar = new TDataGridAction(['TarefaList', 'onConsultar'], ['tarefa_id' => '{id}', 'tipotarefa_id' => '{tipotarefa_id}']);
- //$actApagar = new TDataGridAction([$this, 'onDelete'], ['id' => '{id}']);
- $this->dbgTarefa->addAction($actConsultar, 'Consultar', 'fa:search green');
- //$this->dbgTarefa->addAction($actEditar, _t('Edit'), 'far:edit blue');
- //$this->dbgTarefa->addAction($actApagar, _t('Delete'), 'far:trash-alt red');
- // create the datagrid model
- $this->dbgTarefa->createModel();
- // creates the page navigation
- $this->pgnTarefa = new TPageNavigation;
- $this->pgnTarefa->setAction(new TAction([$this, 'onReload']));
- $pandbgTarefa = new TPanelGroup('Tarefa', 'white');
- $pandbgTarefa->add($this->dbgTarefa);
- $pandbgTarefa->addFooter($this->pgnTarefa);
- // vertical box container
- $conTarefa = new TVBox;
- $conTarefa->style = 'width: 100%';
- //$conTarefa->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- //$conTarefa->add($this->form);
- $conTarefa->add($pandbgTarefa);
- parent::add($conTarefa);
- }
- public function onConsultar($param = NULL)
- {
- try {
- // open a transaction with database 'pet'
- TTransaction::open('pet');
- if ($param['tipotarefa_id'] == 1) {
- $Tarefa = new Tarefa($param['tarefa_id']);
- $FichaAtendimento = new FichaAtendimento($Tarefa->fichaatendimento_id);
- $Cliente = new Cliente($Tarefa->cliente_id);
- $Animal = new Animal($Tarefa->animal_id);
- $conn = TTransaction::get();
- $sql = $conn->prepare(
- "select * " .
- "from pet.pet999hta " .
- "where tarefa_id = " . $Tarefa->id . " " .
- "order by created_at desc "
- );
- $sql->execute();
- $resultTarefa = $sql->fetchAll();
- if (isset($resultTarefa[0]['id'])) {
- $txtHistoricoTarefa = '';
- foreach ($resultTarefa as $historicoTarefa) {
- $HistoricoTarefa = new HistoricoTarefa($historicoTarefa['id']);
- $txtHistoricoTarefa = $txtHistoricoTarefa . 'Data ' . Date('d-m-Y H:i:s', strtotime($HistoricoTarefa->created_at)) . ' Usuário: ' . $HistoricoTarefa->systemuser->name . '<br>';
- $txtHistoricoTarefa = $txtHistoricoTarefa . $HistoricoTarefa->descricao;
- //$txtHistoricoTarefa = $txtHistoricoTarefa . '------------------------------------------------------<br>';
- }
- }
- $janelaArquivo = TWindow::create('Tarefa - Vacina', 0.50, 0.50);
- //$janelaArquivo->setPosition(750, 240);
- $formVacina = new BootstrapFormBuilder('form_Vacina');
- $formVacina->setFieldSizes('100%');
- $lblTutor = new TLabel('Tutor');
- $lblTutor->setSize('100%');
- $tutor = new TEntry('tutor');
- $tutor->setSize('100%');
- $tutor->setValue($Cliente->nome);
- $tutor->setEditable(FALSE);
- $lblAnimal = new TLabel('Pet');
- $lblAnimal->setSize('100%');
- $animal = new TEntry('animal');
- $animal->setValue($Animal->nome);
- $animal->setSize('100%');
- $animal->setEditable(FALSE);
- $lblCelular = new TLabel('Celular');
- $lblCelular->setSize('100%');
- $celular = new TEntry('ceclular');
- $celular->setValue($Cliente->celular);
- $celular->setSize('100%');
- $celular->setEditable(FALSE);
- $lblEmail = new TLabel('Email');
- $lblEmail->setSize('100%');
- $email = new TEntry('email');
- $email->setValue($Cliente->email);
- $email->setSize('100%');
- $email->setEditable(FALSE);
- $linha = $formVacina->addFields([$lblTutor, $tutor], [$lblAnimal, $animal]);
- $linha->layout = ['col-sm-8', 'col-sm-4'];
- $linha = $formVacina->addFields([$lblCelular, $celular], [$lblEmail, $email]);
- $linha->layout = ['col-sm-4', 'col-sm-8'];
- $this->dbgCarteiraVacinacao = new BootstrapDatagridWrapper(new TDataGrid);
- $this->dbgCarteiraVacinacao->style = 'width: 100%';
- $this->dbgCarteiraVacinacao->datatable = 'true';
- $colVacina = new TDataGridColumn('procedimento->descricao', 'Vacina', 'left', '30%');
- $colTipoVacina = new TDataGridColumn('tipovacina->descricao', 'Tipo', 'left', '15%');
- $colAplicacao = new TDataGridColumn('dataaplicacao', 'Aplicação', 'left', '10%');
- $colAplicacao->setTransformer(['TMinhasFuncoes', 'formataDataGrid']);
- $colProximaAplicacao = new TDataGridColumn('proximaaplicacao', 'Prox. Aplicação', 'left', '10%');
- $colProximaAplicacao->setTransformer(['TMinhasFuncoes', 'formataDataGrid']);
- $this->dbgCarteiraVacinacao->addColumn($colVacina);
- $this->dbgCarteiraVacinacao->addColumn($colTipoVacina);
- $this->dbgCarteiraVacinacao->addColumn($colAplicacao);
- $this->dbgCarteiraVacinacao->addColumn($colProximaAplicacao);
- $this->dbgCarteiraVacinacao->createModel();
- $formVacina->addFields([$this->dbgCarteiraVacinacao]);
- $lblObservacao = new TLabel('Observação');
- $txtObservacao = new THtmlEditor('observacao');
- $txtObservacao->setSize('100%', 100);
- $txtObservacao->setOption('placeholder', 'digite aqui...');
- $txtObservacao->disableToolbar(TRUE);
- $linha = $formVacina->addFields([$lblObservacao, $txtObservacao]);
- $linha->layout = ['col-sm-12'];
- if (!empty($historicoTarefa)) {
- $lblHistoricoObservacao = new TLabel('Hitórico');
- $txtHistoricoObservacao = new THtmlEditor('historico');
- $txtHistoricoObservacao->setValue($txtHistoricoTarefa);
- $txtHistoricoObservacao->setSize('100%', 100);
- $txtHistoricoObservacao->setEditable(FALSE);
- $txtHistoricoObservacao->setOption('placeholder', 'digite aqui...');
- $txtHistoricoObservacao->disableToolbar(TRUE);
- $linha = $formVacina->addFields([$lblHistoricoObservacao, $txtHistoricoObservacao]);
- $linha->layout = ['col-sm-12'];
- }
- $formVacina->addAction('Finalizar Tarefa', new TAction(['TarefaList', 'finalizarTarefa'], ['tarefa_id' => $Tarefa->id, 'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
- $formVacina->addAction('Salvar Histórico', new TAction(['TarefaList', 'salvarHistorico'], ['tarefa_id' => $Tarefa->id, 'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
- $this->onReloadCarteiraVacinacao(array('agendamento_id' => $FichaAtendimento->agendamento_id, 'animal_id' => $Animal->id));
- $janelaArquivo->add($formVacina);
- $janelaArquivo->show();
- TTransaction::close();
- } else if ($param['tipotarefa_id'] == 2) {
- $Tarefa = new Tarefa($param['tarefa_id']);
- $FichaAtendimento = new FichaAtendimento($Tarefa->fichaatendimento_id);
- $Cliente = new Cliente($Tarefa->cliente_id);
- $Animal = new Animal($Tarefa->animal_id);
- /*
- $conn = TTransaction::get();
- $sql = $conn->prepare(
- "select * " .
- "from pet.pet999hta " .
- "where tarefa_id = " . $Tarefa->id . " " .
- "order by created_at desc "
- );
- $sql->execute();
- $resultTarefa = $sql->fetchAll();
- if (isset($resultTarefa[0]['id'])) {
- $txtHistoricoTarefa = '';
- foreach ($resultTarefa as $historicoTarefa) {
- $HistoricoTarefa = new HistoricoTarefa($historicoTarefa['id']);
- $txtHistoricoTarefa = $txtHistoricoTarefa . 'Data ' . Date('d-m-Y H:i:s', strtotime($HistoricoTarefa->created_at)) . ' Usuário: '.$HistoricoTarefa->systemuser->name.'<br>';
- $txtHistoricoTarefa = $txtHistoricoTarefa . $HistoricoTarefa->descricao;
- //$txtHistoricoTarefa = $txtHistoricoTarefa . '------------------------------------------------------<br>';
- }
- }
- */
- $janelaArquivo = TWindow::create('Tarefa - Carteira Vacinação', 0.50, 0.50);
- //$janelaArquivo->setPosition(750, 240);
- $formCarteiraVacinacao = new BootstrapFormBuilder('form_CarteiraVacinacao');
- $formCarteiraVacinacao->setFieldSizes('100%');
- $lblTutor = new TLabel('Tutor');
- $lblTutor->setSize('100%');
- $tutor = new TEntry('tutor');
- $tutor->setSize('100%');
- $tutor->setValue($Cliente->nome);
- $tutor->setEditable(FALSE);
- $lblAnimal = new TLabel('Pet');
- $lblAnimal->setSize('100%');
- $animal = new TEntry('animal');
- $animal->setValue($Animal->nome);
- $animal->setSize('100%');
- $animal->setEditable(FALSE);
- $lblVacina = new TLabel('Vacina');
- $lblVacina->setSize('100%');
- $condicao = new TCriteria();
- $condicao->add(new TFilter('tipoespecie_id', '=', $Animal->tipoespecie_id));
- $condicao->add(new TFilter('tipocategoriaprocedimento_id', '=', 5));
- $vacina = new TDBCombo('vacina_id', 'pet', 'ProcedimentoCategoria', 'procedimento_id', '{procedimento->descricao}', '(select descricao from pet.pet002pro where id = procedimento_id)', $condicao);
- $vacina->setSize('100%');
- $vacina->setChangeAction(new TAction(array($this, 'onChangeVacina')));
- $condicao = new TCriteria();
- $condicao->add(new TFilter('id', '=', 0));
- $lblTipoVacina = new TLabel('Tipo Vacina');
- $lblTipoVacina->setSize('100%');
- $tipoVacina = new TDBCombo('tipovacina_id', 'pet', 'TipoVacina', 'id', 'descricao', 'descricao', $condicao);
- $tipoVacina->setSize('100%');
- $lblDataVacina = new TLabel('Data Vacina');
- $lblDataVacina->setSize('100%');
- $dataVacina = new TDate('dataaplicacao');
- $dataVacina->setMask('dd/mm/yyyy');
- $dataVacina->setDatabaseMask('yyyy-mm-dd');
- $lblBotao = new TLabel('Botão', 'white');
- $lblBotao->setSize('100%');
- $btnAdiocinarVacina = TButton::create('adicionarCacina', [$this, 'onAdicionarVacina'], 'Adicionar', 'fa:cart-plus');
- $btnAdiocinarVacina->getAction()->setParameter('static', '1');
- $btnAdiocinarVacina->getAction()->setParameter('tarefa_id', $Tarefa->id);
- $btnAdiocinarVacina->setSize('100%');
- $btnAdiocinarVacina->class = 'btn btn-sm btn-primary';
- $linha = $formCarteiraVacinacao->addFields([$lblTutor, $tutor], [$lblAnimal, $animal]);
- $linha->layout = ['col-sm-8', 'col-sm-4'];
- $linha = $formCarteiraVacinacao->addFields([$lblVacina, $vacina], [$lblTipoVacina, $tipoVacina], [$lblDataVacina, $dataVacina], [$lblBotao, $btnAdiocinarVacina]);
- $linha->layout = ['col-sm-3', 'col-sm-3', 'col-sm-3', 'col-sm-3'];
- $this->dbgListaVacina = new BootstrapDatagridWrapper(new TDataGrid);
- //$this->dbgListaVacina->width = '100%';
- $this->dbgListaVacina->setId('listaVacina');
- //$this->dbgListaVacina->setHeight(150);
- //$this->dbgListaVacina->makeScrollable();
- $this->dbgListaVacina->generateHiddenFields();
- //$this->dbgListaVacina->datatable = 'true';
- $this->dbgListaVacina->style = "min-width: 10px; margin-bottom: 10px;";
- $colUniqId = new TDataGridColumn('uniq_id', 'Código', 'center', '0%');
- $colProcedimentoId = new TDataGridColumn('procedimento_id', 'Procedimento', 'center', '0%');
- $colTipoVacinaId = new TDataGridColumn('tipovacina_id', 'Tipo Vacina', 'center', '0%');
- $colVacina = new TDataGridColumn('vacina', 'Vacina', 'left', '15%');
- $colTipoVacina = new TDataGridColumn('tipovacina', 'Tipo', 'left', '15%');
- $colDataAplicacao = new TDataGridColumn('dataaplicacao', 'Data', 'left', '10%');
- $colDataAplicacao->setTransformer(['TMinhasFuncoes', 'formataDataGrid']);
- $this->dbgListaVacina->addColumn($colUniqId);
- $colUniqId->setVisibility(FALSE);
- $this->dbgListaVacina->addColumn($colProcedimentoId);
- $colProcedimentoId->setVisibility(FALSE);
- $this->dbgListaVacina->addColumn($colTipoVacinaId);
- $colTipoVacinaId->setVisibility(FALSE);
- $this->dbgListaVacina->addColumn($colVacina);
- $this->dbgListaVacina->addColumn($colTipoVacina);
- $this->dbgListaVacina->addColumn($colDataAplicacao);
- $this->dbgListaVacina->createModel();
- $formCarteiraVacinacao->addFields([$this->dbgListaVacina]);
- $formCarteiraVacinacao->addAction('Salvar Dados', new TAction(['TarefaList', 'finalizarTarefa'], ['tarefa_id' => $Tarefa->id, 'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
- //$formCarteiraVacinacao->addAction('Salvar Histórico', new TAction(['TarefaList', 'salvarHistorico'], ['tarefa_id' => $Tarefa->id, 'id_janelaArquivo' => $janelaArquivo->get(0)->getId()]), 'fa:save blue');
- //$this->onReloadCarteiraVacinacao(array('agendamento_id' => $FichaAtendimento->agendamento_id, 'animal_id' => $Animal->id));
- $janelaArquivo->add($formCarteiraVacinacao);
- $janelaArquivo->show();
- TTransaction::close();
- }
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public function onAdicionarVacina($param)
- {
- TTransaction::open('pet');
- if (empty($param['vacina_id'])) {
- new TMessage('info', 'Por favor selecione a Vacina.');
- } else if (empty($param['tipovacina_id'])) {
- new TMessage('info', 'Por favor selecione o Tipo da Vacina.');
- } else {
- $Tarefa = new Tarefa($param['tarefa_id']);
- $Animal = new Animal($Tarefa->animal_id);
- $Procedimento = new Procedimento($param['vacina_id']);
- $TipoVacina = new TipoVacina($param['tipovacina_id']);
- $uniqid = uniqid();
- $grid_data = [
- 'uniq_id' => $uniqid,
- 'procedimento_id' => $param['vacina_id'],
- 'tipovacina_id' => $param['tipovacina_id'],
- 'vacina' => $Procedimento->descricao,
- 'tipovacina' => $TipoVacina->descricao,
- 'dataaplicacao' => $param['dataaplicacao']
- ];
- // insert row dynamically
- $row = $this->dbgListaVacina->addItem((object) $grid_data);
- $row->id = $uniqid;
- TDataGrid::replaceRowById('listaVacina', $uniqid, $row);
- }
- TTransaction::close();
- }
- public static function onChangeVacina($param = NULL)
- {
- try {
- TTransaction::open('pet');
- if (!empty($param['vacina_id'])) {
- $condicao = new TCriteria();
- $condicao->add(new TFilter('procedimento_id', ' = ', $param['vacina_id']));
- TDBCombo::reloadFromModel(
- 'form_CarteiraVacinacao',
- 'tipovacina_id',
- 'pet',
- 'TipoVacina',
- 'id',
- 'descricao',
- 'descricao',
- $condicao,
- TRUE
- );
- } else {
- $condicao = new TCriteria();
- $condicao->add(new TFilter('id', ' = ', '0'));
- TDBCombo::reloadFromModel(
- 'form_CarteiraVacinacao',
- 'tipovacina_id',
- 'pet',
- 'TipoVacina',
- 'id',
- 'descricao',
- 'descricao',
- $condicao,
- TRUE
- );
- }
- TTransaction::close();
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public static function finalizarTarefa($param = NULL)
- {
- try {
- if (empty($param['observacao'])) {
- new TMessage('info', 'Por favor informar a Observação.');
- return;
- }
- // open a transaction with database 'pet'
- TTransaction::open('pet');
- $Tarefa = new Tarefa($param['tarefa_id']);
- $Tarefa->system_user_id_finalizado = TSession::getValue('system_unit_id');
- $Tarefa->datafinalizado = date('Y-m-d H:i:s');
- $Tarefa->store();
- $HistoricoTarefa = new HistoricoTarefa();
- $HistoricoTarefa->tarefa_id = $Tarefa->id;
- $HistoricoTarefa->descricao = $param['observacao'];
- $HistoricoTarefa->system_user_id = TSession::getValue('system_unit_id');
- $HistoricoTarefa->store();
- //$this->onReload();
- AdiantiCoreApplication::loadPage('TarefaList', 'onReload');
- TScript::create("$('#{$param['id_janelaArquivo']}').remove();");
- new TMessage('info', 'Tarefa Finalizada.');
- TTransaction::close();
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public static function salvarHistorico($param = NULL)
- {
- try {
- if (empty($param['observacao'])) {
- new TMessage('info', 'Por favor informar a Observação.');
- return;
- }
- // open a transaction with database 'pet'
- TTransaction::open('pet');
- $Tarefa = new Tarefa($param['tarefa_id']);
- $HistoricoTarefa = new HistoricoTarefa();
- $HistoricoTarefa->tarefa_id = $Tarefa->id;
- $HistoricoTarefa->descricao = $param['observacao'];
- $HistoricoTarefa->system_user_id = TSession::getValue('system_unit_id');
- $HistoricoTarefa->store();
- TTransaction::close();
- //$this->onReload();
- AdiantiCoreApplication::loadPage('TarefaList', 'onReload');
- TScript::create("$('#{$param['id_janelaArquivo']}').remove();");
- new TMessage('info', 'Histórico Salvo.');
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public function onReloadCarteiraVacinacao($param = NULL)
- {
- try {
- // open a transaction with database 'pet'
- TTransaction::open('pet');
- // creates a repository for BairroCidade
- $repository = new TRepository('CarteiraVacinacao');
- $limit = 10;
- // creates a criteria
- $criteria = new TCriteria;
- // default order
- if (empty($param['order'])) {
- $param['order'] = '(select descricao from pet.pet002pro where id = procedimento_id)';
- $param['direction'] = 'asc';
- }
- $criteria->setProperties($param); // order, offset
- $criteria->setProperty('limit', $limit);
- $filter = new TFilter('agendamento_id', '=', '' . $param['agendamento_id'] . ''); // create the filter
- $criteria->add($filter);
- $filter = new TFilter('animal_id', '=', $param['animal_id']); // create the filter
- $criteria->add($filter);
- // load the objects according to criteria
- $objects = $repository->load($criteria, FALSE);
- if (is_callable($this->transformCallback)) {
- call_user_func($this->transformCallback, $objects, $param);
- }
- $this->dbgCarteiraVacinacao->clear();
- if ($objects) {
- // iterate the collection of active records
- foreach ($objects as $object) {
- // add the object inside the datagrid
- $this->dbgCarteiraVacinacao->addItem($object);
- }
- }
- // reset the criteria for record count
- $criteria->resetProperties();
- // close the transaction
- TTransaction::close();
- $this->loaded = true;
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- /**
- * Load the datagrid with data
- */
- public function onReload($param = NULL)
- {
- try {
- // open a transaction with database 'pet'
- TTransaction::open('pet');
- // creates a repository for BairroCidade
- $repository = new TRepository('Tarefa');
- $limit = 10;
- // creates a criteria
- $criteria = new TCriteria;
- // default order
- if (empty($param['order'])) {
- $param['order'] = 'datatarefa';
- $param['direction'] = 'desc';
- }
- $criteria->setProperties($param); // order, offset
- $criteria->setProperty('limit', $limit);
- //$hoje = date('Y-m-d');
- //$filter = new TFilter('datatarefa', '<=', '' . $hoje . ''); // create the filter
- //$criteria->add($filter);
- $hoje = date('Y-m-d');
- $filter = new TFilter('cast(datatarefa as date) - diasalarme', '<=', '' . $hoje . ''); // create the filter
- $criteria->add($filter);
- $hoje = date('Y-m-d');
- $filter = new TFilter('datafinalizado', 'is', NULL); // create the filter
- $criteria->add($filter);
- // load the objects according to criteria
- $objects = $repository->load($criteria, FALSE);
- if (is_callable($this->transformCallback)) {
- call_user_func($this->transformCallback, $objects, $param);
- }
- $this->dbgTarefa->clear();
- if ($objects) {
- // iterate the collection of active records
- foreach ($objects as $object) {
- // add the object inside the datagrid
- $this->dbgTarefa->addItem($object);
- }
- }
- // reset the criteria for record count
- $criteria->resetProperties();
- $count = $repository->count($criteria);
- $this->pgnTarefa->setCount($count); // count of records
- $this->pgnTarefa->setProperties($param); // order, page
- $this->pgnTarefa->setLimit($limit); // limit
- // close the transaction
- TTransaction::close();
- $this->loaded = true;
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- /**
- * method show()
- * Shows the page
- */
- public function show()
- {
- // check if the datagrid is already loaded
- if (!$this->loaded and (!isset($_GET['method']) or !(in_array($_GET['method'], array('onReload', 'onSearch'))))) {
- if (func_num_args() > 0) {
- $this->onReload(func_get_arg(0));
- } else {
- $this->onReload();
- }
- }
- parent::show();
- }
- }
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.