/** * Configura a lista com os campos a apresentar na grid * @return array */ public function getConfigList() { $configArray = array(); $configArray['columns'][0]['alias'] = 'p.noPessoa'; $configArray['columns'][1]['alias'] = 'pf.nuCpf'; $configArray['columns'][2]['alias'] = 'pf.dtNascimento'; $configArray['columns'][3]['alias'] = 'pf.sgSexo'; $configArray['columns'][4]['alias'] = 'p.sqPessoa'; $configArray['columns'][5]['alias'] = 'p.stRegistroAtivo'; if ($this->_getParam('sqTipoPessoa') == \Core_Configuration::getCorpTipoPessoaJuridica()) { $configArray = array(); $configArray['columns'][0]['alias'] = 'pj.noFantasia'; $configArray['columns'][1]['alias'] = 'pj.nuCnpj'; $configArray['columns'][2]['alias'] = 'p.noPessoa'; $configArray['columns'][3]['alias'] = 'p.sqPessoa'; $configArray['columns'][4]['alias'] = 'p.stRegistroAtivo'; } return $configArray; }
/** * Metódo que recupera a pessoa * @return json */ public function searchPessoaAction() { $this->_helper->layout->disableLayout(); $params = $this->_getAllParams(); $dtoSearch = \Core_Dto::factoryFromData($params, 'search'); $result = $this->getService('VwPessoa')->autocomplete($dtoSearch, 30); #30 é o limit if (0 === count($result) && isset($params['save'])) { $msg = ''; switch ($params['extraParam']) { case \Core_Configuration::getCorpTipoPessoaFisica(): $msg = 'MN132F'; break; case \Core_Configuration::getCorpTipoPessoaJuridica(): $msg = 'MN132J'; break; } if ($msg) { $result = array('__NO_CLICK__' => Core_Registry::getMessage()->_($msg)); } } $this->_helper->json($result); }
/** * Método responsável por realizar a busca dos dados para o autocomplete de pessoa * * @param array $params * @return array $out */ public function autocomplete($dtoSearch, $limit) { $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('sq_pessoa', 'sqPessoa', 'integer'); $rsm->addScalarResult('no_pessoa', 'noPessoa', 'string'); $sqTipoPessoa = $dtoSearch->getExtraParam(); switch ($sqTipoPessoa) { case \Core_Configuration::getCorpTipoPessoaFisica(): $sql = " SELECT\n p.sq_pessoa,\n coalesce(p.no_pessoa) as no_pessoa\n FROM corporativo.vw_pessoa p\n JOIN corporativo.vw_pessoa_fisica pf on pf.sq_pessoa = p.sq_pessoa\n WHERE (corporativo.fn_normaliza_string(p.no_pessoa) like '%' || corporativo.fn_normaliza_string(:noPessoa) || '%')\n ORDER BY no_pessoa asc\n LIMIT :limit"; break; case \Core_Configuration::getCorporativoTipoPessoaUnidadeOrganizacional(): $sql = " SELECT sq_pessoa, no_pessoa\n FROM\n (\n SELECT\n p.sq_pessoa,\n coalesce(uo.sg_unidade_org || ' - ', '') || coalesce(p.no_pessoa, '') as no_pessoa,\n corporativo.fn_normaliza_string(p.no_pessoa) AS column_aux\n FROM corporativo.vw_pessoa p\n JOIN corporativo.vw_unidade_org uo on uo.sq_pessoa = p.sq_pessoa\n WHERE (corporativo.fn_normaliza_string(p.no_pessoa) like '%' || corporativo.fn_normaliza_string(:noPessoa) || '%')\n\n UNION\n\n SELECT\n p.sq_pessoa,\n coalesce(uo.sg_unidade_org || ' - ', '') || coalesce(p.no_pessoa, '') as no_pessoa,\n corporativo.fn_normaliza_string(uo.sg_unidade_org) AS column_aux\n FROM corporativo.vw_pessoa p\n JOIN corporativo.vw_unidade_org uo on uo.sq_pessoa = p.sq_pessoa\n WHERE (corporativo.fn_normaliza_string(uo.sg_unidade_org) like '%' || corporativo.fn_normaliza_string(:noPessoa) || '%')\n ) tb_auxiliar\n ORDER BY column_aux asc\n LIMIT :limit"; break; case \Core_Configuration::getCorpTipoPessoaJuridica(): $sql = " SELECT\n p.sq_pessoa,\n coalesce(p.no_pessoa) as no_pessoa\n FROM corporativo.vw_pessoa p\n JOIN corporativo.vw_pessoa_juridica pj on pj.sq_pessoa = p.sq_pessoa\n WHERE (corporativo.fn_normaliza_string(p.no_pessoa) like '%' || corporativo.fn_normaliza_string(:noPessoa) || '%')\n ORDER BY no_pessoa asc\n LIMIT :limit"; break; case \Core_Configuration::getCorporativoTipoPessoaUnidadeOrgExterna(): $sql = " SELECT\n uoe.sq_pessoa,\n coalesce(uoe.sg_pai || ' - ', '') || coalesce(uoe.no_pessoa, '') as no_pessoa\n FROM corporativo.vw_unidade_org_externa uoe\n WHERE (corporativo.fn_normaliza_string(uoe.no_pessoa) like '%' || corporativo.fn_normaliza_string(:noPessoa) || '%') OR\n (corporativo.fn_normaliza_string(uoe.sg_unidade_org) like '%' || corporativo.fn_normaliza_string(:noPessoa) || '%')\n\n UNION\n\n SELECT rppn.sq_pessoa,\n rppn.sg_rppn as no_pessoa\n FROM corporativo.vw_rppn rppn\n WHERE (corporativo.fn_normaliza_string(rppn.sg_rppn) like '%' || corporativo.fn_normaliza_string(:noPessoa) || '%')\n\n ORDER BY no_pessoa asc\n LIMIT :limit"; break; } $result = $this->_em->createNativeQuery($sql, $rsm)->setParameter('noPessoa', str_replace(' ', '%', $dtoSearch->getQuery()), 'string')->setParameter('limit', $limit, 'integer')->getResult(); $out = array(); foreach ($result as $item) { $out[$item['sqPessoa']] = $item['noPessoa']; } return $out; }