TBootstrapFormBuilder - Add TDropDown Boas, A algum tempo precisei adicionar num projeto um botão TDropDown, e notei que o mesmo não existia na barra Footer do formulário, resolvi então acrescentar e agora estou repartindo com os senhores. Neste caso foi apenas acrescentado na classe BootstrapFormBuilder. Obs: nesta classe em especifico existe também uma alteração onde Add na linha (71), uma nova Grade ...
MC
TBootstrapFormBuilder - Add TDropDown  
Boas,

A algum tempo precisei adicionar num projeto um botão TDropDown, e notei que o mesmo não existia na barra Footer do formulário,
resolvi então acrescentar e agora estou repartindo com os senhores.

Neste caso foi apenas acrescentado na classe BootstrapFormBuilder.

Obs: nesta classe em especifico existe também uma alteração onde Add na linha (71), uma nova Grade

 
  1. <?php
  2. $this->column_classes[5] = ['col-sm-2', 'col-sm-3','col-sm-2', 'col-sm-3', 'col-sm-2']; // by MarcoARCampos
  3. ?>



Entre as linhas 390 e 399 onde foi acrescentado o TDropDown, somente isso.

 
  1. <?php
  2. //---- BY MarcoARCampos --------------------------------------------------------
  3. public function addDropDown( $DropDown )
  4. {
  5. $this->actions[] = $DropDown;
  6. return $DropDown;
  7. }
  8. //------------------------------------------------------------------------------
  9. ?>



Uso, muito simples:

 
  1. <?php
  2. // DropDown
  3. $drop_act = new TDropDown(_t('Print'), 'bs:print brown');
  4. $drop_act->addAction( 'Gera Arquivo CSV', new TAction( array( $this, 'onExportCSV' )), 'fa:file-excel-o fa-lg green' );
  5. $drop_act->addSeparator();
  6. $drop_act->addAction( 'Gera Arquivo PDF', new TAction( array( $this, 'onRelatorio' )), 'fa:list-alt fa-lg red' );
  7. // add the search form actions
  8. $this->form->addAction( _t('Find'), new TAction( array( $this, 'onSearch' )), 'fa:search' );
  9. $this->form->addAction( _t('New'), new TAction( array( 'Form_Abc', 'onReload' )), 'bs:plus-sign green' );
  10. $this->form->addAction( _t('Clear'), new TAction( array( $this, 'onClear' )), 'bs:retweet blue' );
  11. $this->form->addDropDown( $drop_act );
  12. ?>


Como aqui não permite uma imagem vou criar um post para demonstrar a imagem:


Espero ter contribuido

Abraços;

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (10)


MG

Funcionou perfeitamente.
Obrigado por compartilhar.
HE

Boa noite!

Seguindo e exemplo apresentado, o TDropDown foi criado com sucesso.

Porém o TAction ligado diretamente ao form busca informações através do getData.

 
  1. <?php
  2. $this->form->addAction( _t('Clear'), new TAction( array( $this, 'onSearch' )), 'bs:retweet blue' );
  3. ?>


Diferente do TAction vinculado ao DropDown que retorna o getData vazio.

 
  1. <?php
  2. $drop_act->addAction( 'Gera Arquivo PDF', new TAction( array( $this, 'onSearch' )), 'fa:list-alt fa-lg red' );
  3. ?>


Como faço para utilizar o getData dentro de um chamada para buscar as informações do formulário através de um botão vinculado ao DropDown .

Desde já obrigado.
HL

Boa tarde!

Marcelo como você soluciono a passagem de parâmetros para os botões do DropDown?
MG

Hellton, não entendi sua dúvida!
HE

Marcelo, quando clico sobre o botão do DropDown quero buscar algumas valores do formulário ou pegar o id ou key passada, para poder realizar a emissão de relatórios e processo daquele determinado registro.

Um exemplo é que ao clicar no botão que foi adicionado no formulário eu posso buscar o $param['id'] ou $object->id

MG

Existe um método no TButton chamado setProperty

$btn->setProperty('id',$id);
MG

Ops,
Não é isso, eu confundi. Desculpe.
Você pode passar um parametro no TAction que são os parametros, por exemp.o:

 
  1. <?php
  2. $dropdown = new TDropDown('Export', 'fa:list');
  3. $dropdown->setButtonClass('btn btn-default waves-effect dropdown-toggle');
  4. $dropdown->addAction( 'Save as CSV', new TAction([$this, 'onExportCSV'],
  5. ['register_state' => 'false', 'static'=>'1',<b>'id' => $id]</b>), 'fa:table blue' );
  6. public static function onExportCSV($param)
  7. {
  8. $id = $oaram['id'];
  9. .....
  10. }
  11. ?>
HL

Marcelo segui o modelo, mas não consegui obter exito, o valor retorna vazio da mesma forma, tem como dar uma olhada.

Segue o código abaixo.


 
  1. <?php
  2. /**
  3. * SystemAlvaraAlvaraView
  4. *
  5. * @version 2.0
  6. * @package control
  7. * @subpackage alvara
  8. * @author Hellton Lacerda
  9. */
  10. class SystemAlvaraAlvaraView extends TPage
  11. {
  12. private $form;
  13. private $datagridExercicio;
  14. private $datagridLog;
  15. private $teste;
  16. public function __construct()
  17. {
  18. if(in_array(5, TSession::getValue('usermoduloids'))){
  19. TTransaction::open('permission');
  20. $SystemGlobalModulo = new SystemGlobalModulo(5);
  21. TTransaction::close();
  22. // Verifica se o módulo foi adquirido pelo cliente
  23. if($SystemGlobalModulo->situacao == 0){
  24. new TMessage('error', 'Esse módulo não foi adquirido!');
  25. AdiantiCoreApplication::loadPage('SystemError');
  26. }
  27. }else{
  28. new TMessage('error', 'Você não possui permissão de acessar esse módulo!');
  29. AdiantiCoreApplication::loadPage('SystemError');
  30. }
  31. // Verifica se alterar senha está ativo
  32. if(TSession::getValue('userchangepassword') == 'Y'){
  33. AdiantiCoreApplication::loadPage('SystemAlterarSenha');
  34. }
  35. parent::__construct();
  36. $this->form = new BootstrapFormBuilder('form_SystemAlvaraAlvaraView');
  37. $this->form->setFormTitle('Alvará');
  38. $this->form->setFieldSizes('100%');
  39. $id = new THidden('id');
  40. $system_unit_id = new THidden('system_unit_id');
  41. $system_alvara_tipo_id = new THidden('system_alvara_tipo_id');
  42. $system_alvara_contribuinte_id = new THidden('system_alvara_contribuinte_id');
  43. $system_alvara_veiculo_id = new THidden('system_alvara_veiculo_id');
  44. $system_alvara_categoria_id = new THidden('system_alvara_categoria_id');
  45. $system_alvara_ponto_veiculo_id = new THidden('system_alvara_ponto_veiculo_id');
  46. $situacao_anterior = new THidden('situacao_anterior');
  47. $tipo_pessoa = new THidden('tipo_pessoa');
  48. $numero_registro = new TEntry('numero_registro');
  49. $contribuinte = new TEntry('contribuinte');
  50. $cpf_cnpj = new TEntry('cpf_cnpj');
  51. $tipo = new TEntry('tipo');
  52. $unidade = new TEntry('unidade');
  53. $exercicio = new TEntry('exercicio');
  54. $veiculo = new TEntry('veiculo');
  55. $categoria = new TEntry('categoria');
  56. $ponto = new TEntry('ponto');
  57. $dtabertura = new TEntry('dtabertura');
  58. $dtvencimento = new TEntry('dtvencimento');
  59. $dtencerramento = new TEntry('dtencerramento');
  60. $system_alvara_situacao_id = new TDBCombo('system_alvara_situacao_id', 'permission', 'SystemAlvaraSituacao', 'id', 'nome', 'nome asc');
  61. $Criteria = new TCriteria();
  62. $Criteria->add(new TFilter('id', '<>', '1'));
  63. $system_alvara_justificativa_alteracao_id = new TDBCombo('system_alvara_justificativa_alteracao_id', 'permission', 'SystemAlvaraJustificativa', 'id', 'nome', 'nome asc', $Criteria);
  64. $numero_registro->setEditable(false);
  65. $cpf_cnpj->setEditable(false);
  66. $contribuinte->setEditable(false);
  67. $unidade->setEditable(false);
  68. $tipo->setEditable(false);
  69. $exercicio->setEditable(false);
  70. $veiculo->setEditable(false);
  71. $categoria->setEditable(false);
  72. $ponto->setEditable(false);
  73. $dtabertura->setEditable(false);
  74. $dtvencimento->setEditable(false);
  75. $dtabertura->setMask('99/99/9999', false);
  76. $dtvencimento->setMask('99/99/9999', false);
  77. $dtencerramento->setMask('99/99/9999', false);
  78. $row = $this->form->addFields(
  79. [ $id ],
  80. [ $system_unit_id ],
  81. [ $system_alvara_tipo_id ],
  82. [ $system_alvara_contribuinte_id ],
  83. [ $system_alvara_veiculo_id ],
  84. [ $system_alvara_categoria_id ],
  85. [ $system_alvara_ponto_veiculo_id ],
  86. [ $situacao_anterior ],
  87. [ $tipo_pessoa ]);
  88. $row->layout = ['col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1', 'col-sm-1'];
  89. $row = $this->form->addFields(
  90. [ new TLabel('Registro'), $numero_registro ]);
  91. $row->layout = ['col-sm-4'];
  92. $row = $this->form->addFields(
  93. [ new TLabel('Unidade'), $unidade ],
  94. [ new TLabel('Tipo de Alvará'), $tipo ]);
  95. $row->layout = ['col-sm-6', 'col-sm-6'];
  96. $row = $this->form->addFields(
  97. [ new TLabel('CPF/CNPJ'), $cpf_cnpj ],
  98. [ new TLabel('Contribuinte'), $contribuinte ]);
  99. $row->layout = ['col-sm-4', 'col-sm-8'];
  100. $row = $this->form->addFields(
  101. [ new TLabel('Objeto'), $veiculo ],
  102. [ new TLabel('Categoria'), $categoria ],
  103. [ new TLabel('Ponto'), $ponto ]);
  104. $row->layout = ['col-sm-4', 'col-sm-4', 'col-sm-4'];
  105. $row = $this->form->addFields(
  106. [ new TLabel('Data da Abertura'), $dtabertura ],
  107. [ new TLabel('Data do Vencimento'), $dtvencimento ],
  108. [ new TLabel('Data do Encerramento'), $dtencerramento ]);
  109. $row->layout = ['col-sm-4', 'col-sm-4', 'col-sm-4'];
  110. $row = $this->form->addFields(
  111. [ new TLabel('Justificativa de Alteração'), $system_alvara_justificativa_alteracao_id ],
  112. [ new TLabel('Situação do Alvará'), $system_alvara_situacao_id ]);
  113. $row->layout = ['col-sm-6', 'col-sm-6'];
  114. $dropdown = new TDropDown('Export', 'fa:list');
  115. $dropdown->setButtonClass('btn btn-default waves-effect dropdown-toggle');
  116. $dropdown->addAction( 'Save as CSV', new TAction([$this, 'onExportCSV'],['register_state' => 'false', 'static'=>'1','id' => $id]), 'fa:table blue' );
  117. $this->form->addDropDown( $dropdown );
  118. $btnAvancar = $this->form->addAction('Salvar', new TAction(array($this, 'onAvancar')), 'bs:ok');
  119. $btnAvancar->class = 'btn btn-success btn-sm-12';
  120. $btnIncluir = $this->form->addHeaderAction('Atualizar', new TAction(array('SystemAlvaraAtualizarExercicioWindow', 'onLoad')), 'fa:repeat');
  121. $btnIncluir->class = 'btn btn-sm-light-gray btn-sm-12';
  122. $buttonVoltar = $this->form->addHeaderAction('Voltar', new TAction(array('SystemAlvaraAlvaraList', 'onReload')), 'fa:chevron-left');
  123. $buttonVoltar->class = 'btn btn-sm-12';
  124. $this->form->setData( TSession::getValue('SystemAlvaraAlvaraView_filter_data') );
  125. $this->datagridExercicio = new BootstrapDatagridWrapper(new TDataGrid);
  126. $this->datagridExercicio->datatable = 'true';
  127. $this->datagridExercicio->width = '100%';
  128. $this->datagridExercicio->setHeight(320);
  129. $system_alvara_exercicio_id = new TDataGridColumn('exercicio->periodo', 'Exercício', 'center', null);
  130. $tipo = new TDataGridColumn('tipo', 'Tipo', 'center', null);
  131. $dtinicial = new TDataGridColumn('dtinicial', 'Data de Abertura/Renovação', 'center', null);
  132. $dtvencimento = new TDataGridColumn('dtvencimento', 'Data de Vencimento', 'center', null);
  133. $this->datagridExercicio->addColumn($system_alvara_exercicio_id);
  134. $this->datagridExercicio->addColumn($tipo);
  135. $this->datagridExercicio->addColumn($dtinicial);
  136. $this->datagridExercicio->addColumn($dtvencimento);
  137. $action1 = new TDataGridAction(array('SystemAlvaraAlvaraView', 'onDeleteExercicio'));
  138. $action1->setLabel('Excluir');
  139. $action1->setImage('fa:trash-o red fa-lg');
  140. $action1->setField('id');
  141. $this->datagridExercicio->addAction($action1);
  142. $this->datagridExercicio->createModel();
  143. $this->datagridLog = new BootstrapDatagridWrapper(new TDataGrid);
  144. $this->datagridLog->datatable = 'true';
  145. $this->datagridLog->width = '100%';
  146. $this->datagridLog->setHeight(320);
  147. $situacao_id = new TDataGridColumn('situacaoes->nome', 'Situação', 'center', null);
  148. $situacao_anterior_id = new TDataGridColumn('situacaoes_anterior->nome', 'Situação Anterior', 'center', null);
  149. $system_alvara_justificativa_alteracao_id = new TDataGridColumn('justificativas->nome', 'Justificativa', 'center', null);
  150. $alterado_por = new TDataGridColumn('users->name', 'Alterado por', 'center', null);
  151. $alterado_quando = new TDataGridColumn('alterado_quando', 'Alterado quando', 'center', null);
  152. $this->datagridLog->addColumn($situacao_id);
  153. $this->datagridLog->addColumn($situacao_anterior_id);
  154. $this->datagridLog->addColumn($system_alvara_justificativa_alteracao_id);
  155. $this->datagridLog->addColumn($alterado_por);
  156. $this->datagridLog->addColumn($alterado_quando);
  157. $this->datagridLog->createModel();
  158. $vbox = new TVBox;
  159. $vbox->style = 'width: 100%';
  160. $vbox->add(new TXMLBreadCrumb('menu.xml','SystemAlvaraAlvaraList'));
  161. $vbox->add($this->form);
  162. $vbox->add(TPanelGroup::pack('Exercícios', $this->datagridExercicio));
  163. $vbox->add(TPanelGroup::pack('Logs', $this->datagridLog));
  164. parent::add($vbox);
  165. }
  166. public static function onExportCSV($param)
  167. {
  168. try{
  169. $id = $param['id'];
  170. var_dump($id);
  171. }catch (Exception $e) {
  172. new TMessage('error', $e->getMessage());
  173. }
  174. }
  175. public static function onAvancar($param)
  176. {
  177. try
  178. {
  179. $hoje = new DateTime();
  180. $data = $hoje->format('Y-m-d');
  181. $datahora = $hoje->format('Y-m-d H:i:s');
  182. if(empty($param['system_alvara_justificativa_alteracao_id'])){
  183. throw new Exception('O campo Justificativa de Alteração é obrigatório.');
  184. }
  185. if(empty($param['system_alvara_situacao_id'])){
  186. throw new Exception('O campo Situação é obrigatório.');
  187. }
  188. if($param['system_alvara_situacao_id'] == $param['situacao_anterior']){
  189. throw new Exception('A situação atual não pode ser igual a situação anterior.');
  190. }
  191. if(!empty($param['dtencerramento'])){
  192. $param['dtencerramento'] = str_replace('/', '-', $param['dtencerramento']);
  193. $date = new DateTime($param['dtencerramento']);
  194. $param['dtencerramento'] = $date->format('Y-m-d');
  195. $param['dtabertura'] = str_replace('/', '-', $param['dtabertura']);
  196. $date = new DateTime($param['dtabertura']);
  197. $param['dtabertura'] = $date->format('Y-m-d');
  198. if($param['dtabertura'] > $param['dtencerramento']){
  199. throw new Exception('A Data de Abertura não pode ser maior que a Data de Encerramento.');
  200. }
  201. if($param['dtencerramento'] > $data){
  202. throw new Exception('A Data de Encerramento não pode ser maior que a Data de Atual.');
  203. }
  204. }
  205. TTransaction::open('permission');
  206. $SystemAlvaraSituacao = new SystemAlvaraSituacao($param['system_alvara_situacao_id']);
  207. if($SystemAlvaraSituacao->situacaofinal == 'S' AND empty($param['dtencerramento'])){
  208. throw new Exception('O campo Data do Encerramento é obrigatório.');
  209. }
  210. if($SystemAlvaraSituacao->situacaofinal == 'N' AND !empty($param['dtencerramento'])){
  211. throw new Exception('O campo Data do Encerramento não pode ser preenchido.');
  212. }
  213. $SystemAlvaraAlvara = new SystemAlvaraAlvara($param['id']);
  214. $SystemAlvaraAlvara->system_alvara_situacao_id = $param['system_alvara_situacao_id'];
  215. if(!empty($param['dtencerramento'])){
  216. $SystemAlvaraAlvara->dtencerramento = $param['dtencerramento'];
  217. }else{
  218. $SystemAlvaraAlvara->dtencerramento = NULL;
  219. }
  220. $SystemAlvaraAlvara->modificado_por = TSession::getValue('userid');
  221. $SystemAlvaraAlvara->modificado_quando = $datahora;
  222. $SystemAlvaraAlvara->store();
  223. $SystemAlvaraLogAlvara = new SystemAlvaraLogAlvara();
  224. $SystemAlvaraLogAlvara->system_alvara_alvara_id = $param['id'];
  225. $SystemAlvaraLogAlvara->situacao_id = $param['system_alvara_situacao_id'];
  226. $SystemAlvaraLogAlvara->situacao_anterior_id = $param['situacao_anterior'];
  227. $SystemAlvaraLogAlvara->system_alvara_justificativa_alteracao_id = $param['system_alvara_justificativa_alteracao_id'];
  228. $SystemAlvaraLogAlvara->alterado_por = TSession::getValue('userid');
  229. $SystemAlvaraLogAlvara->alterado_quando = $datahora;
  230. $SystemAlvaraLogAlvara->criado_por = TSession::getValue('userid');
  231. $SystemAlvaraLogAlvara->modificado_por = TSession::getValue('userid');
  232. $SystemAlvaraLogAlvara->store();
  233. TTransaction::close();
  234. }
  235. catch (Exception $e)
  236. {
  237. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  238. TTransaction::rollback();
  239. }
  240. }
  241. public function onView($param){
  242. try{
  243. if(isset($param['key'])){
  244. $key = $param['key'];
  245. TTransaction::open('permission');
  246. $SystemAlvaraAlvaraExercicioView = new SystemAlvaraAlvaraExercicioView($key);
  247. if(in_array($SystemAlvaraAlvaraExercicioView->system_unit_id, TSession::getValue('userunitids'))){
  248. $SystemAlvaraAlvaraExercicioView->cpf_cnpj = $SystemAlvaraAlvaraExercicioView->contribuintes->cpf_cnpj;
  249. $SystemAlvaraAlvaraExercicioView->contribuinte = $SystemAlvaraAlvaraExercicioView->contribuintes->nome;
  250. $SystemAlvaraAlvaraExercicioView->tipo_pessoa = $SystemAlvaraAlvaraExercicioView->contribuintes->tipo;
  251. $SystemAlvaraAlvaraExercicioView->unidade = $SystemAlvaraAlvaraExercicioView->unit->name;
  252. $SystemAlvaraAlvaraExercicioView->tipo = $SystemAlvaraAlvaraExercicioView->tipo->nome;
  253. $SystemAlvaraAlvaraExercicioView->veiculo = $SystemAlvaraAlvaraExercicioView->veiculos->marca .' - '. $SystemAlvaraAlvaraExercicioView->veiculos->modelo .' - '. $SystemAlvaraAlvaraExercicioView->veiculos->motorizacao.' - '. $SystemAlvaraAlvaraExercicioView->veiculos->placa;
  254. $SystemAlvaraAlvaraExercicioView->categoria = $SystemAlvaraAlvaraExercicioView->categorias->nome;
  255. $SystemAlvaraAlvaraExercicioView->ponto = $SystemAlvaraAlvaraExercicioView->pontos->nome;
  256. $SystemAlvaraAlvaraExercicioView->situacao_anterior = $SystemAlvaraAlvaraExercicioView->system_alvara_situacao_id;
  257. if(!empty($SystemAlvaraAlvaraExercicioView->dtabertura)){
  258. $data = new DateTime($SystemAlvaraAlvaraExercicioView->dtabertura);
  259. $SystemAlvaraAlvaraExercicioView->dtabertura = $data->format('d/m/Y');
  260. }
  261. if(!empty($SystemAlvaraAlvaraExercicioView->dtvencimento)){
  262. $data = new DateTime($SystemAlvaraAlvaraExercicioView->dtvencimento);
  263. $SystemAlvaraAlvaraExercicioView->dtvencimento = $data->format('d/m/Y');
  264. }
  265. if(!empty($SystemAlvaraAlvaraExercicioView->dtencerramento)){
  266. $data = new DateTime($SystemAlvaraAlvaraExercicioView->dtencerramento);
  267. $SystemAlvaraAlvaraExercicioView->dtencerramento = $data->format('d/m/Y');
  268. }
  269. $script = new TElement('script');
  270. $script->type = 'text/javascript';
  271. $javascript = "
  272. var tipo_pessoa
  273. tipo_pessoa = document.form_SystemAlvaraAlvaraView.tipo_pessoa.value;
  274. if(tipo_pessoa == 'F'){
  275. $('input[name=\"cpf_cnpj\"]').mask(\"999.999.999-99\");
  276. }
  277. if(tipo_pessoa == 'J'){
  278. $('input[name=\"cpf_cnpj\"]').mask(\"99.999.999/9999-99\");
  279. }
  280. ";
  281. $script->add($javascript);
  282. parent::add($script);
  283. $this->form->setData($SystemAlvaraAlvaraExercicioView);
  284. $this->onReload($key);
  285. }else{
  286. AdiantiCoreApplication::loadPage('SystemAlvaraGerarAlvara1');
  287. }
  288. TTransaction::close();
  289. }else{
  290. AdiantiCoreApplication::loadPage('SystemAlvaraGerarAlvara1');
  291. }
  292. }
  293. catch (Exception $e)
  294. {
  295. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  296. TTransaction::rollback();
  297. }
  298. }
  299. function onReload($param)
  300. {
  301. try
  302. {
  303. $Criteria = new TCriteria();
  304. $Criteria->add(new TFilter('system_alvara_alvara_id', '=', $param));
  305. $Criteria->setProperty('order', 'dtinicial ASC');
  306. $SystemAlvaraAlvaraExercicio = new TRepository('SystemAlvaraAlvaraExercicio');
  307. $AlvaraExercicios = $SystemAlvaraAlvaraExercicio->load($Criteria);
  308. if($AlvaraExercicios){
  309. foreach ($AlvaraExercicios as $AlvaraExercicio) {
  310. if($AlvaraExercicio->tipo == 'A'){
  311. $AlvaraExercicio->tipo = 'ABERTURA';
  312. }else{
  313. if($AlvaraExercicio->tipo == 'R'){
  314. $AlvaraExercicio->tipo = 'RENOVAÇÃO';
  315. }
  316. }
  317. $data = new DateTime($AlvaraExercicio->dtinicial);
  318. $AlvaraExercicio->dtinicial = $data->format('d/m/Y');
  319. if($AlvaraExercicio->dtvencimento){
  320. $data = new DateTime($AlvaraExercicio->dtvencimento);
  321. $AlvaraExercicio->dtvencimento = $data->format('d/m/Y');
  322. }
  323. $this->datagridExercicio->addItem($AlvaraExercicio);
  324. }
  325. }
  326. $Criteria = new TCriteria();
  327. $Criteria->add(new TFilter('system_alvara_alvara_id', '=', $param));
  328. $Criteria->setProperty('order', 'alterado_quando ASC');
  329. $SystemAlvaraLogAlvara = new TRepository('SystemAlvaraLogAlvara');
  330. $AlvaraLogs = $SystemAlvaraLogAlvara->load($Criteria);
  331. if($AlvaraLogs){
  332. foreach ($AlvaraLogs as $AlvaraLog) {
  333. $data = new DateTime($AlvaraLog->alterado_quando);
  334. $AlvaraLog->alterado_quando = $data->format('d/m/Y');
  335. $this->datagridLog->addItem($AlvaraLog);
  336. }
  337. }
  338. }catch (Exception $e)
  339. {
  340. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  341. TTransaction::rollback();
  342. }
  343. }
  344. public static function onDeleteExercicio($param)
  345. {
  346. $key = $param['key'];
  347. $action = new TAction(['SystemAlvaraAlvaraView', 'DeleteExercicio']);
  348. $action->setParameter('key', $key);
  349. new TQuestion('Deseja excluir o registro?', $action);
  350. }
  351. public static function DeleteExercicio($param)
  352. {
  353. try
  354. {
  355. if (isset($param['key']))
  356. {
  357. $key = $param['key'];
  358. TTransaction::open('permission');
  359. $Criteria = new TCriteria();
  360. $Criteria->add(new TFilter('id', '=', $key));
  361. $SystemAlvaraAlvaraExercicio = new SystemAlvaraAlvaraExercicio($key);
  362. if($SystemAlvaraAlvaraExercicio->tipo == 'A'){
  363. throw new Exception('Não é possível excluir o exercício de abertura do alvará.');
  364. }
  365. $system_alvara_alvara_id = $SystemAlvaraAlvaraExercicio->system_alvara_alvara_id;
  366. $SystemAlvaraAlvaraExercicio = new TRepository('SystemAlvaraAlvaraExercicio');
  367. $SystemAlvaraAlvaraExercicio->delete($Criteria);
  368. TTransaction::close();
  369. $pos_action = new TAction(['SystemAlvaraAlvaraView', 'onView']);
  370. $pos_action->setParameter('key', $system_alvara_alvara_id);
  371. new TMessage('info', 'Registro excluído.', $pos_action);
  372. }
  373. }
  374. catch (Exception $e)
  375. {
  376. new TMessage('error', $e->getMessage());
  377. TTransaction::rollback();
  378. }
  379. }
  380. public function onCarregarVoltar(){
  381. $data = TSession::getValue('SystemRequerimentoForm_data');
  382. $this->form->setData($data);
  383. }
  384. public function onIniciar(){
  385. }
  386. public static function onSim(){
  387. AdiantiCoreApplication::loadPage('SystemRequerenteForm', 'onEdit');
  388. }
  389. }
  390. ?>
MG

Está vario pelo fato de no momento que está montando o botão o $id ainda não está preenchido.
Como o __construct é chamado sempre em primeiro lugar é preciso certificar que o $id existe.
Caso o botão seja pressionado ante de carregar os dados em tela, vai estar nulo.

inspecione ou use var_dump($id) antes de criar o botão e veja qual o valor que está em $id.
Caso o valor ainda não exista, eu sugiro criar um regra para não exibir o botão até que a tela esteja com dados....
HL

Marcelo, seguindo sua dica alterei o local da passagem de parâmetro, e deu certo.

Muito obrigado.