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 RPSs 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.