function libCorpUpdateDocumento($updDocumento, $userCredential = NULL)
{
    $xmlResult = '<result><status>%s</status><errocode>%s</errocode><response>%s</response></result>';
    try {
        Registry::factory()->setCredential($userCredential);
        $voDocumento = DocumentoValueObject::factory()->loadData($updDocumento);
        $voDocumento = DocumentoBusiness::factory()->updateDocumento($voDocumento);
        return sprintf($xmlResult, 'success', '00000', $voDocumento->toXml());
    } catch (\Exception $excp) {
        return sprintf($xmlResult, 'failure', $excp->getCode(), $excp->getMessage());
    }
}
 /**
  * recupera todos os atributos que compoem um determinado documento,
  * filtrando-o por uma das porpiedades do proprio documento.
  *
  * supondo que o documento seja composto pelos atributos: a,b,c e d,
  * este metodo recupera todos os atributos informando em deles
  *
  * @param integer $sqpessoa
  * @param integer $sqDocumento
  * @return ResultSet
  * */
 public function findAtributosDocumento(DocumentoValueObject $documento)
 {
     $query = 'SELECT tipDoc.sq_tipo_documento,
                      doc.sq_documento,
                      tipDoc.no_tipo_documento,
                      doc.tx_valor,
                      attr.no_atributo_documento
                 FROM corporativo.documento AS doc
           INNER JOIN corporativo.atributo_tipo_documento AS attrtipDoc ON doc.sq_atributo_tipo_documento = attrtipDoc.sq_atributo_tipo_documento
           INNER JOIN corporativo.tipo_documento          AS tipDoc     ON attrtipDoc.sq_tipo_documento = tipDoc.sq_tipo_documento
           INNER JOIN corporativo.atributo_documento      AS attr       ON attrtipDoc.sq_atributo_documento = attr.sq_atributo_documento
                WHERE tipDoc.sq_tipo_documento = (
                    SELECT sub_attr_tip_doc.sq_tipo_documento
                      FROM corporativo.documento AS sub_doc
                INNER JOIN corporativo.atributo_tipo_documento AS sub_attr_tip_doc ON sub_doc.sq_atributo_tipo_documento = sub_attr_tip_doc.sq_atributo_tipo_documento
                     WHERE sub_doc.sq_documento = :sqDocumento)
                 AND doc.sq_pessoa = :sqPessoa';
     # dono do documento
     $params['sqPessoa'] = new \stdClass();
     $params['sqPessoa']->type = 'integer';
     $params['sqPessoa']->value = $documento->getSqPessoa()->getSqPessoa();
     # id do documento
     $params['sqDocumento'] = new \stdClass();
     $params['sqDocumento']->type = 'integer';
     $params['sqDocumento']->value = $documento->getSqDocumento();
     return $this->execute($query, $params);
 }
 /**
  * Atualiza os dados de Documento
  *
  * @example DocumentoBusiness::updateDocumento
  * @code
  * <?php
  *     # cria filtro usado por agencia
  *     $voDocumento       = ValueObjectAbstract::factory('fullnamespace');
  *     # outra forma de utilizar
  *     # $voDocumento = EmailValueObject::factory();
  *     $voDocumento->setSqDocumento(1);
  *
  *     # efetua atualizacao
  *     $documentoBusiness = DocumentoBusiness::factory();
  *     $documentoBusiness->updateEmail($voDocumento);
  * ?>
  * @endcode
  *
  * @param DocumentoValueObject $voDocumento
  * @return DocumentoValueObject
  * @throws BusinessException
  * */
 public function updateDocumento(DocumentoValueObject $voDocumento)
 {
     try {
         $voDocumentoTmp = DocumentoBusiness::factory(NULL, 'libcorp')->find($voDocumento->getSqDocumento());
         $voDocumentoTmp->loadData($this->keepUpdateData($voDocumento));
         $this->getModelPersist('libcorp')->update($voDocumentoTmp);
         return $voDocumentoTmp;
     } catch (ModelException $mExcp) {
         throw new BusinessException($mExcp->getMessage(), $mExcp->getCode());
     }
 }