/**
  * @example PessoaFisicaBusiness::updatePessoaFisica
  * @code
  * <?php
  *     # cria filtro usado pelo Pessoa Fisica
  *     $pessoaVO       = ValueObjectAbstract::factory('fullnamespace');
  *     $pessoaFisicaVO = ValueObjectAbstract::factory('fullnamespace');
  *     # outra forma de utilizar
  *     # $pessoaVO = PessoaValueObject::factory();
  *     # $pessoaFisicaVO = PessoaFisicaValueObject::factory();
  *     $pessoaFisicaVO->setNuCpf('12345678909');
  *
  *     # efetua pesquisa
  *     $pessoaBusiness = PessoaFisicaBusiness::factory();
  *     $pessoaBusiness->updatePessoaFisica($pessoaVO, $pessoaFisicaVO);
  * ?>
  * @endcode
  *
  * @param PessoaValueObject $voPessoa
  * @param PessoaFisicaValueObject $voPessoaFisica
  * @throws BusinessException
  */
 public function updatePessoaFisica(PessoaValueObject $voPessoa, PessoaFisicaValueObject $voPessoaFisica)
 {
     try {
         $voPessoaFisicaClone = clone $voPessoaFisica;
         # retira a máscara do CPF
         $voPessoaFisica->setNuCpf(preg_replace("/\\D+/", "", $voPessoaFisica->getNuCpf()));
         # efetua validação
         $this->_validatePessoaFisica($voPessoa, $voPessoaFisica);
         $sqPessoa = $voPessoa->getSqPessoa();
         BusinessException::throwsExceptionIfParamIsNull($sqPessoa, self::REQUIRED_SQ_PESSOA);
         $voTmp = PessoaBusiness::factory(NULL, 'libcorp')->find($voPessoa->getSqPessoa());
         $voPessoa->copySaveObjectData($voTmp);
         PessoaBusiness::factory(NULL, 'libcorp')->update($voPessoa);
         # Salva PessoaFisica
         $voPessoaTmp = self::factory(NULL, 'libcorp')->find($voPessoa->getSqPessoa());
         $voPessoaFisica->copySaveObjectData($voPessoaTmp);
         # anula nacionalidade
         if (0 === $voPessoaFisicaClone->getSqNacionalidade()) {
             $voPessoaFisica->setSqNacionalidade(NULL);
         }
         # anula naturalidade
         if (0 === $voPessoaFisicaClone->getSqNaturalidade()) {
             $voPessoaFisica->setSqNaturalidade(NULL);
         }
         $this->getModelPersist('libcorp')->update($voPessoaFisica);
         return $voPessoaFisica;
     } catch (ModelException $mExcp) {
         throw new BusinessException($mExcp->getMessage(), $mExcp->getCode());
     }
 }