/**
  * Retorna Documentos por Pessoa
  * @param PessoaValueObject $voPessoa
  * @throws PersistException
  */
 public function findByPessoa(PessoaValueObject $voPessoa)
 {
     try {
         /*
          * SELECT pe.sq_pessoa,
          *        do.tx_valor,
          *        ad.no_atributo_documento,
          *        td.no_tipo_documento
          * FROM   corporativo.pessoa AS pe
          * INNER JOIN corporativo.documento AS do ON do.sq_pessoa = pe.sq_pessoa
          * INNER JOIN corporativo.atributo_tipo_documento AS atd ON atd.sq_atributo_documento = do.sq_atributo_tipo_documento
          * INNER JOIN corporativo.atributo_documento AS ad ON ad.sq_atributo_documento = atd.sq_atributo_documento
          * INNER JOIN corporativo.tipo_documento AS td ON td.sq_tipo_documento = atd.sq_tipo_documento
          * WHERE (pe.sq_pessoa = :sq_pessoa);
          */
         # obtem a entidade com base na anotacao
         $eDocumento = $this->getEntity(array('doc' => $this->annotation()->load()->class));
         # cria entidade Pessoa
         $ePessoa = $this->getEntity(array('pes' => PessoaValueObject::factory()));
         # cria entidade AtributoTipoDocumento
         $eAtributoTipoDoc = $this->getEntity(array('atd' => AtributoTipoDocumentoValueObject::factory()));
         # cria entidade AtributoDocumento
         $eAtributoDocumento = $this->getEntity(array('ado' => AtributoDocumentoValueObject::factory()));
         # cria entidade TipoDocumento
         $eTipoDocumento = $this->getEntity(array('tdo' => TipoDocumentoValueObject::factory()));
         # cria objeto de consulta baseando-se em AttrTipoDoc
         $query = $this->getQuery($ePessoa)->join($eDocumento, $ePessoa->column('sqPessoa')->equals($eDocumento->column('sqPessoa')))->join($eAtributoTipoDoc, $eDocumento->column('sqAtributoTipoDocumento')->equals($eAtributoTipoDoc->column('sqAtributoTipoDocumento')))->join($eAtributoDocumento, $eAtributoTipoDoc->column('sqAtributoDocumento')->equals($eAtributoDocumento->column('sqAtributoDocumento')))->join($eTipoDocumento, $eAtributoTipoDoc->column('sqTipoDocumento')->equals($eTipoDocumento->column('sqTipoDocumento')))->where($ePessoa->column('sqPessoa')->equals($voPessoa->getSqPessoa()));
         return $this->execute($query);
     } catch (\Exception $excp) {
         throw new PersistException($excp->getMessage());
     }
 }
 public function findByTipo(AtributoTipoDocumentoValueObject $voAttrTipoDocumento)
 {
     try {
         /*
          * SELECT
          *     atd.sq_atributo_documento,
          *     AD.no_atributo_documento
          * FROM
          *      corporativo.atributo_tipo_documento ATD
          * JOIN corporativo.atributo_documento AD ON AD.sq_atributo_documento = ATD.sq_atributo_documento
          * WHERE ATD.sq_tipo_documento = :sq_tipo_documento;
          */
         # obtem a entidade com base na anotacao
         $eAttrTipoDoc = $this->getEntity(array('atd' => $this->annotation()->load()->class));
         # cria entidade bioma atributo documento
         $eAttrDocum = $this->getEntity(array('ad' => AtributoDocumentoValueObject::factory()));
         # cria objeto de consulta baseando-se em AttrTipoDoc
         $query = $this->getQuery($eAttrTipoDoc)->join($eAttrDocum, $eAttrTipoDoc->column('sqAtributoDocumento')->equals($eAttrDocum->column('sqAtributoDocumento')))->where($eAttrTipoDoc->column('sqAtributoDocumento')->equals($voAttrTipoDocumento->getSqAtributoTipoDocumento()));
         # executa query
         return $this->execute($query);
     } catch (\Exception $excp) {
         throw new PersistException($excp->getMessage());
     }
 }
function libCorpAtributoDocumentoByTipo($sqAtributoDocumento)
{
    try {
        $voAtributoTipoDoc = AtributoTipoDocumentoValueObject::factory()->setSqAtributoDocumento($sqAtributoDocumento);
        $tmpTxt = '<result>';
        $tmpResult = AtributoTipoDocumentoBusiness::factory()->findByParam($voAtributoTipoDoc);
        foreach ($tmpResult as $result) {
            $tmpTxt .= $result->toXml();
        }
        $tmpTxt .= '</result>';
        return $tmpTxt;
    } catch (\Exception $excp) {
        throw new IOException($excp->getMessage());
    }
}