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
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
- <?php
- /**
- * PfuncList Listing
- * @author <your name here>
- */
- class PfuncList extends TStandardList
- {
- protected $form; // registration form
- protected $datagrid; // listing
- protected $pageNavigation;
- protected $formgrid;
- protected $deleteButton;
- protected $transformCallback;
-
- /**
- * Page constructor
- */
- 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::setCriteria($criteria) // define a standard filter
- parent::addFilterField('CHAPA', '=', 'CHAPA'); // filterField, operator, formField
- parent::addFilterField('NOME', 'like', 'NOME'); // filterField, operator, formField
-
- // creates the form
- $this->form = new TQuickForm('form_search_Pfunc');
- $this->form->class = 'tform'; // change CSS class
-
- $this->form->style = 'display: table;width:100%'; // change style
- $this->form->setFormTitle('Funcionários');
-
- // create the form fields
- $CHAPA = new TEntry('CHAPA');
- $NOME = new TEntry('NOME');
- // add the fields
- $this->form->addQuickField('Chapa', $CHAPA, '50%' );
- $this->form->addQuickField('Nome', $NOME, '50%' );
-
- // keep the form filled during navigation with session data
- $this->form->setData( TSession::getValue('Pfunc_filter_data') );
-
- // add the search form actions
- $btn = $this->form->addQuickAction(_t('Find'), new TAction(array($this, 'onSearch')), 'fa:search');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addQuickAction(_t('New'), new TAction(array('PfuncForm', 'onEdit')), 'bs:plus-sign green');
-
- // creates a DataGrid
- $this->datagrid = new TDataGrid;
-
- $this->datagrid->style = 'width: 100%';
- $this->datagrid->datatable = 'true';
- // $this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
-
- // creates the datagrid columns
- $column_check = new TDataGridColumn('check', '', 'center');
- $column_CHAPA = new TDataGridColumn('CHAPA', 'Chapa', 'right');
- $column_NOME = new TDataGridColumn('NOME', 'Nome', 'left');
- $column_SALARIO = new TDataGridColumn('SALARIO', 'Salario', 'left');
- $column_DATAADMISSAO = new TDataGridColumn('DATAADMISSAO', 'Admissão', 'left');
- $column_SITUACAO = new TDataGridColumn('pcodsituacao->DESCRICAO', 'Situação', 'left');
- $column_DATADEMISSAO = new TDataGridColumn('DATADEMISSAO', 'Demissão', 'left');
- $column_CODFUNCAO = new TDataGridColumn('pfuncao->NOME', 'Função', 'left');
- $column_CODSECAO = new TDataGridColumn('psecao->DESCRICAO', 'Seção', 'left');
-
-
-
- $column_SALARIO->setTransformer( function($value, $object, $row) {
- return 'R$ ' . number_format($value, 2, ',', '.');
- });
- // add the columns to the DataGrid
- $this->datagrid->addColumn($column_check);
- $this->datagrid->addColumn($column_CHAPA);
- $this->datagrid->addColumn($column_NOME);
- $this->datagrid->addColumn($column_SALARIO);
- $this->datagrid->addColumn($column_DATAADMISSAO);
- $this->datagrid->addColumn($column_SITUACAO);
- $this->datagrid->addColumn($column_DATADEMISSAO);
- $this->datagrid->addColumn($column_CODFUNCAO);
- $this->datagrid->addColumn($column_CODSECAO);
-
- // creates the datagrid column actions
- $order_CHAPA = new TAction(array($this, 'onReload'));
- $order_CHAPA->setParameter('order', 'CHAPA');
- $column_CHAPA->setAction($order_CHAPA);
-
- $order_NOME = new TAction(array($this, 'onReload'));
- $order_NOME->setParameter('order', 'NOME');
- $column_NOME->setAction($order_NOME);
-
- $order_SALARIO = new TAction(array($this, 'onReload'));
- $order_SALARIO->setParameter('order', 'SALARIO');
- $column_SALARIO->setAction($order_SALARIO);
-
- $order_DATAADMISSAO = new TAction(array($this, 'onReload'));
- $order_DATAADMISSAO->setParameter('order', 'DATAADMISSAO');
- $column_DATAADMISSAO->setAction($order_DATAADMISSAO);
-
- // inline editing
- $NOME_edit = new TDataGridAction(array($this, 'onInlineEdit'));
- $NOME_edit->setField('CHAPA');
- $column_NOME->setEditAction($NOME_edit);
-
- $SALARIO_edit = new TDataGridAction(array($this, 'onInlineEdit'));
- $SALARIO_edit->setField('CHAPA');
- $column_SALARIO->setEditAction($SALARIO_edit);
- // define the transformer method over image
- $column_DATAADMISSAO->setTransformer( function($value, $object, $row) {
- $date = new DateTime($value);
- return $date->format('d/m/Y');
- });
- // define the transformer method over image
- $column_DATADEMISSAO->setTransformer( function($value, $object, $row) {
- $date = new DateTime($value);
- return $date->format('d/m/Y');
- });
-
-
- // create EDIT action
- $action_edit = new TDataGridAction(array('PfuncFormView', 'onEdit'));
- //$action_edit->setUseButton(TRUE);
- //$action_edit->setButtonClass('btn btn-default');
- $action_edit->setLabel(_t('Edit'));
- $action_edit->setImage('fa:pencil-square-o blue fa-lg');
- $action_edit->setField('CHAPA');
- $this->datagrid->addAction($action_edit);
-
- // create DELETE action
- $action_del = new TDataGridAction(array($this, 'onDelete'));
- //$action_del->setUseButton(TRUE);
- //$action_del->setButtonClass('btn btn-default');
- $action_del->setLabel(_t('Delete'));
- $action_del->setImage('fa:trash-o red fa-lg');
- $action_del->setField('CHAPA');
- $this->datagrid->addAction($action_del);
-
- // create the datagrid model
- $this->datagrid->createModel();
-
- // create the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- $this->pageNavigation->setWidth($this->datagrid->getWidth());
-
- $this->datagrid->disableDefaultClick();
-
- // put datagrid inside a form
- $this->formgrid = new TForm;
- $this->formgrid->add($this->datagrid);
-
- // creates the delete collection button
- $this->deleteButton = new TButton('delete_collection');
- $this->deleteButton->setAction(new TAction(array($this, 'onDeleteCollection')), AdiantiCoreTranslator::translate('Delete selected'));
- $this->deleteButton->setImage('fa:remove red');
- $this->formgrid->addField($this->deleteButton);
-
- $gridpack = new TVBox;
- $gridpack->style = 'width: 100%';
- $gridpack->add($this->formgrid);
- $gridpack->add($this->deleteButton)->style = 'background:whiteSmoke;border:1px solid #cccccc; padding: 3px;padding: 5px;';
-
- $this->transformCallback = array($this, 'onBeforeLoad');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- $container->add($gridpack);
- $container->add($this->pageNavigation);
-
- parent::add($container);
- }
-
- /**
- * Transform datagrid objects
- * Create the checkbutton as datagrid element
- */
- public function onBeforeLoad($objects, $param)
- {
- // update the action parameters to pass the current page to action
- // without this, the action will only work for the first page
- $deleteAction = $this->deleteButton->getAction();
- $deleteAction->setParameters($param); // important!
-
- $gridfields = array( $this->deleteButton );
-
- foreach ($objects as $object)
- {
- $object->check = new TCheckButton('check' . $object->CHAPA);
- $object->check->setIndexValue('on');
- $gridfields[] = $object->check; // important
- }
-
- $this->formgrid->setFields($gridfields);
- }
- }
- Obrigado
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:
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-
Nataniel Rabaioli, eu preciso somente obter a DESCRIÇÃO que aparece no campo UNIDADE.