NFSeCancelarNFSe

A função NFSeCancelarNFSe é responsável por solicitar o cancelamento de uma NFS-e já autorizada.

Tipo de Retorno

Boolean

Pacote

A função NFSeCancelarNFSe está definida dentro do pacote NFSeCancelarNFSe.pkg.

Sintaxe

Move (NFSeCancelarNFSe({iCdMunicipio},{sCertificado},{iTpAmbiente}, ;
      {sVersao},&{sXMLResposta},&{icResultado},&{sMsgResultado}, ;
      {sCNPJPrestador},{sIMPrestador},{sNrNFSe},{sCdMunicipioDSF}, ;
      {sCdCancelamento},{sMotivoCancelamento},&{sSucesso}, ;
      &{sDtHoraCancelamento},&{sListaMensagemRetorno},{sProxy}, ;
      {sUsuario},{sSenha},{sLicenca},{bExibeErro})) to {bRet}

Onde:

  • {iCdMunicipio} é o código do IBGE do município do prestador do serviço que está emitindo a NFS-e;
  • {sCertificado} é a string que representa o certificado digital que será usado na transmissão dos dados. Se não for informado, uma tela será exibida para o usuário escolher um dos certificados instalados. Você pode obter esta string e armazená-la em um campo de sua base de dados com a função NFSePegaNomeCertificado. No caso do provedor SIMPLISS, em vez de passar o nome do certificado deve-se passar uma string no formato "CNPJ|00000000000000|SENHA" (LITERAL CNPJ, PIPE, número do CNPJ, PIPE e senha);
  • {iTpAmbiente} é o código que indica o ambiente para onde o lote será enviado: 1-Produção e 2-Homologação. ATENÇÃO: verifique se existe o ambiente de homologação, pois algumas cidades/provedores não possuem, assim todos os RPS’s são enviados para o ambiente de produção sendo necessário o seu cancelamento;
  • {sVersao} é a versão do XML. Este parâmetro não é usado atualmente e pode ser passado em branco, mas foi mantido por questão de compatibilidade com versões anteriores para que o desenvolvedor não tenha que alterar seu código;
  • &{sXMLResposta} é o XML de retorno do WS. Normalmente será útil somente para propósitos de depuração e homologação de novas prefeituras. Por exemplo, se o XML de retorno não estiver no padrão correto a função pode não devolver o código de retorno no parâmetro icResultado e/ou em iSituacao, e neste caso o desenvolvedor poderá ler o retorno diretamente do XML devolvido;
  • &{icResultado} é uma variável do tipo Integer que precisa ser passada por referência e que após a execução da função receberá o código do resultado da execução. Um código igual a 5000 indica que a comunicação com o Web Service foi bem sucedida e qualquer outro código de retorno indica um erro. Para saber o retorno da consulta faz-se necessário analisar os demais retornos;
  • &{sMsgResultado} é uma variável do tipo String que precisa ser passada por referência e que após a execução da função receberá a mensagem literal do resultado da chamada do Web Service;
  • {sCNPJPrestador} é número do CNPJ do prestador, que deverá ser informado sem espaços e caracteres separadores;
  • {sIMPrestador} é número da inscrição municipal do prestador, que deverá ser informada sem espaços e caracteres separadores. ATENÇÃO: nos municípios atendidos pelo provedor Equiplano informe o idEntidade neste parâmetro;
  • {sNrNFSe} é número da NFS-e que se deseja cancelar;
  • {sCdMunicipioDSF} é o código do município do SIAFI, mas este parâmetro só precisa ser informado para prefeituras atendidas pelo provedor DSF;
  • {sCdCancelamento} é o código do cancelamento adotado pelo usuário ou pela prefeitura. Nas prefeituras atendidas pelo provedor DSF deve ser informado o código de verificação neste parâmetro. 
    • Tiplan:
      • 1-Erro na emissão
      • 2-Serviço não prestado
      • 3-Duplicidade de nota
      • 9-Outros;
    • Ábaco:
      • MC01-Serviço não realizado
      • MC02-Dados cadastrais incorretos
      • MC03-Divergência no preço do serviço
      • MC04-Outros dados incorretos;
    • Pública:
      • C001-Dados do tomador incorretos
      • C002-Erro na descrição do serviço
      • C003-Erro no valor do serviço
      • C004-Natureza da Operação e/ou Código do Item da Lista incorreto
      • C005-Informações de descontos/outros tributos incorretas
      • C999-Outros (descrever);
  • {sMotivoCancelamento} é motivo do cancelamento, necessário apenas nas prefeituras que adotam os provedores DSF e Equiplan; No caso da prefeitura de Bauru-SP, informar o seguinte conteúdo neste parâmetro: "<CancelarNota soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><DadosPrestador xsi:type="urn:tcDadosPrestador"><ccm xsi:type="xsd:int">12345</ccm><cnpj xsi:type="xsd:string">01234567890123</cnpj><senha xsi:type="xsd:string">12345</senha><nota xsi:type="xsd:int">123</nota><motivo xsi:type="xsd:string">Motivo do cancelamento</motivo><email xsi:type="xsd:string">cliente@dominio.com.br</email></DadosPrestador></CancelarNota>".
  • &{sSucesso} é uma variável do tipo String que precisa ser passada por referência e que após a execução da função receberá o sucesso ou não da solicitação de cancelamento. Se for bem sucedido, será retornado "true" em letras minúsculas. ATENÇÃO: este parâmetro não existe nos seguintes municípios ou provedores: Ábaco, Betha, Belo Horizonte, Curitiba, ISSIntel, Recife-PE, Rio de Janeiro-RJ, WebISS e em vários provedores que não aderiram ao padrão ABRASF. Nestes casos o retorno deste parâmetro será sempre em branco. Para saber se a solicitação foi bem sucedida, verifique o parâmetro sDtHoraCancelamento (se ele estiver em branco, então o cancelamento não foi bem sucedido). No caso do provedor DSF, além de testar se sSucesso="true" é necessário verificar também se não retornou nenhum erro ou advertência em sListaMensagemRetorno;
  • &{sDtHoraCancelamento} é uma variável do tipo String que precisa ser passada por referência e que após a execução da função receberá a data e hora da aprovação do cancelamento se foi bem sucedido. ATENÇÃO: não são todas as prefeituras/provedores que retornam esta informação, então é necessário verificar o schema de retorno de cancelamento da prefeitura onde está sendo implementando;
  • &{sListaMensagemRetorno} é uma variável do tipo String que precisa ser passada por referência e que após a execução da função receberá as mensagens de erro ou advertência do WS. Se o lote foi processado com erros o conteúdo desta variável é que indicará os erros que precisam ser corrigidos. ATENÇÃO: não são todas as prefeituras/provedores que retornam esta informação, então é necessário verificar o schema de retorno de cancelamento da prefeitura onde está sendo implementando;
  • {sProxy} é usado para informar o endereço do servidor proxy, se necesário. Por exemplo ’http://proxyserver:port’. Verificar com o cliente qual é o endereço do servidor proxy e a porta https, pois a porta padrão do https é 443, e sendo assim teríamos algo como ’http://192.168.15.1:443’;
  • {sUsuario} é usado para informar o usuário para autenticação no proxy, se necessário;
  • {sSenha} é usado informar a senha de autenticação no proxy, se necessário;
  • {sLicenca} é usado para informar a chave da licença de uso ou registro. O cancelamento pode ser utilizado sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro da DLL. Entre em contato para mais informações;
  • {bExibeErro} é usado para indicar se a função deve exibir ou não os erros que ocorrerem na execução;
  • {bRet} é uma  variável do tipo Integer que recebe o retorno da função, sendo 0 (zero) o retorno positivo, ou -1 caso ocorra algum erro. Este retorno não indica necessariamente se a NFS-e foi ou não cancelada, mas sim que a comunicação com o servidor foi bem sucedida.

Exemplo

Um exemplo de uso da função pode ser encontrado dentro da Workspace de Exemplo no DD cRpsDataDictioanry.dd procedimento CancelarNFSe. Abaixo em destaque a função citada e a chamada da função da Library na linha 42.

NFSeCancelarNFse - Exemplo