Filtro por Variavel Sessão em uma listagem Como filtrar uma listagem por variável de sessão? E está sessão seria para o adiante 4 multiempresa. Quando o gestor da coligada 1, entrar no sistema vir apenas a listagens de sua unidade. E assim gestor de uma unidade fica bloqueado para ver os dados de outra. Exemplo: CodColigada = 1 ; //unidade 1 da empresa CodColigada = 2; // unidade 2 da empresa Assim esta meu código ...
RV
Filtro por Variavel Sessão em uma listagem  
Como filtrar uma listagem por variável de sessão?
E está sessão seria para o adiante 4 multiempresa. Quando o gestor da coligada 1, entrar no sistema vir apenas a listagens de sua unidade.
E assim gestor de uma unidade fica bloqueado para ver os dados de outra.
Exemplo:

CodColigada = 1 ; //unidade 1 da empresa
CodColigada = 2; // unidade 2 da empresa

Assim esta meu código

 
  1. <?php
  2. /**
  3. * PfuncList Listing
  4. * @author <your name here>
  5. */
  6. class PfuncList extends TStandardList
  7. {
  8. protected $form; // registration form
  9. protected $datagrid; // listing
  10. protected $pageNavigation;
  11. protected $formgrid;
  12. protected $deleteButton;
  13. protected $transformCallback;
  14. /**
  15. * Page constructor
  16. */
  17. public function __construct()
  18. {
  19. parent::__construct();
  20. parent::setDatabase('bluemob'); // defines the database
  21. parent::setActiveRecord('Pfunc'); // defines the active record
  22. parent::setDefaultOrder('CHAPA', 'asc'); // defines the default order
  23. // parent::setCriteria($criteria) // define a standard filter
  24. parent::addFilterField('CHAPA', '=', 'CHAPA'); // filterField, operator, formField
  25. parent::addFilterField('NOME', 'like', 'NOME'); // filterField, operator, formField
  26. // creates the form
  27. $this->form = new TQuickForm('form_search_Pfunc');
  28. $this->form->class = 'tform'; // change CSS class
  29. $this->form->style = 'display: table;width:100%'; // change style
  30. $this->form->setFormTitle('Funcionários');
  31. // create the form fields
  32. $CHAPA = new TEntry('CHAPA');
  33. $NOME = new TEntry('NOME');
  34. // add the fields
  35. $this->form->addQuickField('Chapa', $CHAPA, '50%' );
  36. $this->form->addQuickField('Nome', $NOME, '50%' );
  37. // keep the form filled during navigation with session data
  38. $this->form->setData( TSession::getValue('Pfunc_filter_data') );
  39. // add the search form actions
  40. $btn = $this->form->addQuickAction(_t('Find'), new TAction(array($this, 'onSearch')), 'fa:search');
  41. $btn->class = 'btn btn-sm btn-primary';
  42. $this->form->addQuickAction(_t('New'), new TAction(array('PfuncForm', 'onEdit')), 'bs:plus-sign green');
  43. // creates a DataGrid
  44. $this->datagrid = new TDataGrid;
  45. $this->datagrid->style = 'width: 100%';
  46. $this->datagrid->datatable = 'true';
  47. // $this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
  48. // creates the datagrid columns
  49. $column_check = new TDataGridColumn('check', '', 'center');
  50. $column_CHAPA = new TDataGridColumn('CHAPA', 'Chapa', 'right');
  51. $column_NOME = new TDataGridColumn('NOME', 'Nome', 'left');
  52. $column_SALARIO = new TDataGridColumn('SALARIO', 'Salario', 'left');
  53. $column_DATAADMISSAO = new TDataGridColumn('DATAADMISSAO', 'Admissão', 'left');
  54. $column_SITUACAO = new TDataGridColumn('pcodsituacao->DESCRICAO', 'Situação', 'left');
  55. $column_DATADEMISSAO = new TDataGridColumn('DATADEMISSAO', 'Demissão', 'left');
  56. $column_CODFUNCAO = new TDataGridColumn('pfuncao->NOME', 'Função', 'left');
  57. $column_CODSECAO = new TDataGridColumn('psecao->DESCRICAO', 'Seção', 'left');
  58. $column_SALARIO->setTransformer( function($value, $object, $row) {
  59. return 'R$ ' . number_format($value, 2, ',', '.');
  60. });
  61. // add the columns to the DataGrid
  62. $this->datagrid->addColumn($column_check);
  63. $this->datagrid->addColumn($column_CHAPA);
  64. $this->datagrid->addColumn($column_NOME);
  65. $this->datagrid->addColumn($column_SALARIO);
  66. $this->datagrid->addColumn($column_DATAADMISSAO);
  67. $this->datagrid->addColumn($column_SITUACAO);
  68. $this->datagrid->addColumn($column_DATADEMISSAO);
  69. $this->datagrid->addColumn($column_CODFUNCAO);
  70. $this->datagrid->addColumn($column_CODSECAO);
  71. // creates the datagrid column actions
  72. $order_CHAPA = new TAction(array($this, 'onReload'));
  73. $order_CHAPA->setParameter('order', 'CHAPA');
  74. $column_CHAPA->setAction($order_CHAPA);
  75. $order_NOME = new TAction(array($this, 'onReload'));
  76. $order_NOME->setParameter('order', 'NOME');
  77. $column_NOME->setAction($order_NOME);
  78. $order_SALARIO = new TAction(array($this, 'onReload'));
  79. $order_SALARIO->setParameter('order', 'SALARIO');
  80. $column_SALARIO->setAction($order_SALARIO);
  81. $order_DATAADMISSAO = new TAction(array($this, 'onReload'));
  82. $order_DATAADMISSAO->setParameter('order', 'DATAADMISSAO');
  83. $column_DATAADMISSAO->setAction($order_DATAADMISSAO);
  84. // inline editing
  85. $NOME_edit = new TDataGridAction(array($this, 'onInlineEdit'));
  86. $NOME_edit->setField('CHAPA');
  87. $column_NOME->setEditAction($NOME_edit);
  88. $SALARIO_edit = new TDataGridAction(array($this, 'onInlineEdit'));
  89. $SALARIO_edit->setField('CHAPA');
  90. $column_SALARIO->setEditAction($SALARIO_edit);
  91. // define the transformer method over image
  92. $column_DATAADMISSAO->setTransformer( function($value, $object, $row) {
  93. $date = new DateTime($value);
  94. return $date->format('d/m/Y');
  95. });
  96. // define the transformer method over image
  97. $column_DATADEMISSAO->setTransformer( function($value, $object, $row) {
  98. $date = new DateTime($value);
  99. return $date->format('d/m/Y');
  100. });
  101. // create EDIT action
  102. $action_edit = new TDataGridAction(array('PfuncFormView', 'onEdit'));
  103. //$action_edit->setUseButton(TRUE);
  104. //$action_edit->setButtonClass('btn btn-default');
  105. $action_edit->setLabel(_t('Edit'));
  106. $action_edit->setImage('fa:pencil-square-o blue fa-lg');
  107. $action_edit->setField('CHAPA');
  108. $this->datagrid->addAction($action_edit);
  109. // create DELETE action
  110. $action_del = new TDataGridAction(array($this, 'onDelete'));
  111. //$action_del->setUseButton(TRUE);
  112. //$action_del->setButtonClass('btn btn-default');
  113. $action_del->setLabel(_t('Delete'));
  114. $action_del->setImage('fa:trash-o red fa-lg');
  115. $action_del->setField('CHAPA');
  116. $this->datagrid->addAction($action_del);
  117. // create the datagrid model
  118. $this->datagrid->createModel();
  119. // create the page navigation
  120. $this->pageNavigation = new TPageNavigation;
  121. $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
  122. $this->pageNavigation->setWidth($this->datagrid->getWidth());
  123. $this->datagrid->disableDefaultClick();
  124. // put datagrid inside a form
  125. $this->formgrid = new TForm;
  126. $this->formgrid->add($this->datagrid);
  127. // creates the delete collection button
  128. $this->deleteButton = new TButton('delete_collection');
  129. $this->deleteButton->setAction(new TAction(array($this, 'onDeleteCollection')), AdiantiCoreTranslator::translate('Delete selected'));
  130. $this->deleteButton->setImage('fa:remove red');
  131. $this->formgrid->addField($this->deleteButton);
  132. $gridpack = new TVBox;
  133. $gridpack->style = 'width: 100%';
  134. $gridpack->add($this->formgrid);
  135. $gridpack->add($this->deleteButton)->style = 'background:whiteSmoke;border:1px solid #cccccc; padding: 3px;padding: 5px;';
  136. $this->transformCallback = array($this, 'onBeforeLoad');
  137. // vertical box container
  138. $container = new TVBox;
  139. $container->style = 'width: 90%';
  140. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  141. $container->add($this->form);
  142. $container->add($gridpack);
  143. $container->add($this->pageNavigation);
  144. parent::add($container);
  145. }
  146. /**
  147. * Transform datagrid objects
  148. * Create the checkbutton as datagrid element
  149. */
  150. public function onBeforeLoad($objects, $param)
  151. {
  152. // update the action parameters to pass the current page to action
  153. // without this, the action will only work for the first page
  154. $deleteAction = $this->deleteButton->getAction();
  155. $deleteAction->setParameters($param); // important!
  156. $gridfields = array( $this->deleteButton );
  157. foreach ($objects as $object)
  158. {
  159. $object->check = new TCheckButton('check' . $object->CHAPA);
  160. $object->check->setIndexValue('on');
  161. $gridfields[] = $object->check; // important
  162. }
  163. $this->formgrid->setFields($gridfields);
  164. }
  165. }
  166. Obrigado

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


AM

Olá Riverson,

Use o TCriteria com a variavel de Sessão userunitids.

Lembrando que vc deve ter esse campo em sua tabela de funcionarios, com o valor correspondente a unidade que ele pertence.

Exemplo:

public function __construct() { parent::__construct(); parent::setDatabase('bluemob'); // defines the database parent::setActiveRecord('Pfunc'); // defines the active record parent::setDefaultOrder('CHAPA', 'asc'); // defines the default order parent::addFilterField('CHAPA', '=', 'CHAPA'); // filterField, operator, formField parent::addFilterField('NOME', 'like', 'NOME'); // filterField, operator, formField // AQUI VC DEFINE O CRITERIA $criteria = new TCriteria; $criteria->add(new TFilter('unidade', '=', TSession::getValue('userunitids') )); parent::setCriteria($criteria);

NR

Pessoal, a maioria das dúvidas é recorrente. Usem a busca do fórum:
https://www.adianti.com.br/forum/pt/view_2395?filtrar-datagrid-com-dado-da-sessa
https://www.adianti.com.br/forum/pt/view_2230?datagrid-somente-com-registros-do-
CN

Nataniel Rabaioli, eu preciso somente obter a DESCRIÇÃO que aparece no campo UNIDADE.