/** * Obtem pessoa por CNPJ * @param PessoaJuridicaValueObject $voPessoaJuridica */ public function findByCnpj(PessoaJuridicaValueObject $voPessoaJuridica) { try { /* * SELECT * PJ.sq_pessoa, * PJ.nu_cnpj, * PJ.no_fantasia, * PJ.sg_empresa, * PJ.dt_abertura, * P.no_pessoa, * P.sq_tipo_pessoa * FROM * corporativo.pessoa_juridica PJ * JOIN * corporativo.pessoa P ON P.sq_pessoa = PJ.sq_pessoa * WHERE PJ.nu_cnpj = :nu_cnpj **/ # obtem a entidade com base na anotacao $ePessoa = $this->getEntity(array('pes' => $this->annotation()->load()->class)); $ePessoaJuridica = $this->getEntity(array('pej' => PessoaJuridicaValueObject::factory())); # cria objeto de consulta baseando-se em email $query = $this->getQuery($ePessoa)->join($ePessoaJuridica, $ePessoa->column('sqPessoa')->equals($ePessoaJuridica->column('sqPessoa')))->where($ePessoaJuridica->column('nuCnpj')->equals($voPessoaJuridica->getNuCnpj())); # executa query return $this->execute($query); } catch (IllegalArgumentException $iae) { throw new PersistException(self::INVALID_PARAMETER); } catch (\Exception $exp) { throw new PersistException(self::UNEXPECTED_EXCEPTION); } }
/** * Efetua a validação * @param PessoaValueObject $voPessoa * @param PessoaJuridicaValueObject $voPessoaJuridica * @throws BusinessException */ private function _validatePessoaJuridica(PessoaValueObject $voPessoa, PessoaJuridicaValueObject $voPessoaJuridica) { if (trim($voPessoaJuridica->getNuCnpj())) { BusinessException::throwsExceptionIfParamIsNull(Validate::isCnpj($voPessoaJuridica->getNuCnpj()), self::INVALID_CNPJ); } if (trim($voPessoaJuridica->getDtAbertura())) { # Efetua sanitizacao de datas $dateAbertura = $voPessoaJuridica->getDtAbertura(); $voPessoaJuridica->setDtAbertura(Date::factory($dateAbertura, 'd/m/Y')->output()); } }