10.1. Envio de Lote de CT-e
10.1.2. EnviaLote [v3.00]
10.1.1.5. Busca lote de CT-e
« Anterior
10.1.3. BuscaLote [v3.00]
Próximo »

10.1.2. EnviaLote [v3.00]

Envia Lote de CT-e

Assinatura

int EnviaLote(string siglaWS, string siglaUF, int tipoAmbiente, string nomeCertificado, string versao, ref string msgDados, out string msgRetWS, out string msgResultado, string proxy, string usuario, string senha, string licenca)

Descrição:

Envia Lote de CT-e

PONTOS DE ATENÇÃO

Envio de um único CT-e

O WS recepciona lote de CT-e, assim mesmo que seja um único CT-e o envio deve ser realizado na estrutura de lote, a DLL oferece a funcionalidade MontaLoteCTe que ajuda gerar o lote de CT-e.

Assinatura do CT-e

A assinatura do CT-e deve ser realizada individualmente, antes de inseri-la no lote de CT-e.

Número do Lote

É um número de uso exclusivo do emissor, que pode atribuir o valor que entender conveniente.

Processo Assíncrono

A recepção do lote pela SEFAZ e a devolução do número do recibo do lote não significa que os CT-e foram autorizados. É necessário consultar o resultado do processamento do lote enviado através da funcionalidade BuscaLote, além de processar a mensagem do WS para verificar se o CT-e foi autorizado ou rejeitado.

Parâmetros:

nome tipo fluxo descrição
siglaWS string entrada informar a sigla do WS de envio, veja Tabela de siglaWS
siglaUF string entrada informar a sigla da UF do emissor.
tipoAmbiente inteiro entrada informar o código do ambiente desejado: 1- produção ou 2-homologação
nomeCertificado string entrada informar nome do titular do certificado a ser utilizado na assinatura e conexão SSL
versao string entrada informar a versão do Evento: 3.00 (o valor 2.00 pode ser informado até o fim da vigência da versão 2.00 previsto para 04/12/17).msgDados| string | entrada/saída | informar a string com o lote do CT-e neste parâmetro, retorna a mensagem XML enviada para o WS.
msgRetWS string saída retorna a mensagem XML de resposta do WS
msgResultado string saída retorna a literal do resultado da chamada do WS
proxy string entrada informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443'
usuario string entrada informar o usuário para autenticação no proxy se necessário
senha string entrada informar a senha de autenticação no proxy se necessário
licenca string entrada informar a chave da licenca de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as condições de uso

Retorno:

O resultado da chamada do EnviaLote é o código numérico com os seguintes significados:

código Mensagem origem regra
1 código do ambiente inválido DLL -
2 sigla da UF inválida DLL -
3 a UF não oferece o serviço DLL -
4 Arquivo com a URL do WS não localizado DLL -
5 Erro não tratado DLL -
6 Erro de validação de Schema DLL -
7 Nenhum Certificado Selecionado DLL -
8 Nenhum certificado válido foi encontrado com o nome informado DLL -
9 Erro Inesperado: ex.Message DLL -
10 Erro: Time-out ao chamar o WS DLL -
11 Erro: exceção da biblioteca criptográfica DLL -
12 Erro: conexão DLL -
14 Erro: [mensagem] (Causa provável da falha na conexão: o certificado cliente: 1.não é ICP-Brasil; 2.fora do prazo de validade; 3.revogado; 4.certificado cliente não confiável para o Web Service acessado, contatar a SEFAZ) DLL -
15 Erro: [mensagem] (Causa provável da falha na conexão: a cadeia de certificação do Web Service acessado ou do certificado cliente inexistente no repositório de certificados do usuário corrente do Windows) DLL -
16 Erro: [mensagem] (Causa provável do erro: serviço inexistente, verifique se o nome do serviço da url acessada está correto no arquivo wsCTE.xml) DLL -
17 Erro: [mensagem] (Causa provável da falha na conexão: método não permitido) DLL -
18 Erro: [mensagem] (Causa provável da falha na conexão: a url não encontrada, verifique se o nome do domínio da url acessada está correto no arquivo wsCTE.xml) DLL -
19 Erro: [mensagem] (Causa provável da falha na conexão: Time-Out, o WS não recebeu a solicitação no tempo permitido) DLL -
20 Erro: [mensagem] (Causa provável da falha na conexão: mensagem maior que a permitida) DLL -
21 Erro: [mensagem] (Causa provável da falha na conexão: Servidor com problemas) DLL -
22 Erro: [mensagem] (Causa provável da falha na conexão: Serviço não implementado) DLL -
23 Erro: [mensagem] (Causa provável da falha na conexão: Serviço temporariamente indisponível, servidor sem recursos para atender a solicitação) DLL -
24 Erro: [mensagem] (Causa provável da falha na conexão: Rede indisponível) DLL -
26 Erro: [mensagem] (Causa provável da falha na conexão: versão do SOAP incompatível) DLL -
27 CNPJ do emissor inválido DLL -
28 tamanho da chave da licença inválido DLL -
28 Erro: [mensagem] (WS não consumido, o WS não devolveu nenhuma mensagem de retorno....) DLL -
29 Aplicação não registrada DLL -
30 Versao informada é inválida DLL -
103 lote recebido com sucesso WS -
108 Serviço Paralisado Momentaneamente (curto prazo) WS B03
109 Serviço Paralisado sem Previsão WS B04
2xx [mensagem do motivo da rejeição do lote pelo WS] WS -

Em alguns casos, pode ter havido duplicidade de código numérico, dessa forma, queira analisar a mensagem retornada pelo parâmetro msgRetWS para obter o diagnóstico do problema.

Finalidade do número do recibo do lote

O número do recibo do lote não é o protocolo de autorização. É um número que a SEFAZ atribui ao lote recebido, sendo necessário para consultar o resultado do pocessamento do lote.

Número do Recibo do Lote é número de 15 dígitos com o seguinte significado:

posição Descrição
1 a 2 código da UF do IBGE
3 órgão do tipo autorizador (0 ou 1=SEFAZ normal, 3=SEFAZ VIRTUAL-RS, 5=SEFAZ VIRTUAL-SP, 7 = SVC-RS, 8 = SVC-SP))
4 a 15 sequencial

Histórico de atualização:

XML:

Exemplo de XML de retorno do Envio de Lote

<retEnviCte versao="1.04" xmlns="http://www.portalfiscal.inf.br/cte">
    <tpAmb>2</tpAmb>
    <cUF>35</cUF>
    <verAplic>SP_PL_CTe_104a</verAplic>
    <cStat>103</cStat>
    <xMotivo>Lote recebido com sucesso</xMotivo>
    <infRec>
        <nRec>351100001888691</nRec>
        <dhRecbto>2011-12-17T12:12:09</dhRecbto>
        <tMed>1</tMed>
    </infRec>
</retEnviCte>

Importante

O trecho do XML foi formatado para uma melhor visualização, a mensagem original não tem formatação.

Vale observar que a formatação pode corromper a assinatura digital, além de ocupar espaço e ser desnecessária, pois os browser exibem formatado.

Exemplos de uso:

Visual Basic 6.0

'
'  declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL
'
Dim msgDados As String           ' informar a string com o lote do CT-e neste parâmetro, retorna a mensagem XML enviada para o WS
Dim msgRetWS As String           ' retorna a mensagem XML de resposta do WS
Dim msgResultado As String       ' retorna a literal do resultado da chamada do WS
Dim siglaUF As String            ' informar a sigla da UF do emissor
Dim siglaWS As String            ' informar a sigla do WS de envio:
                                 ' . sigla da UF, caso a UF tenha aplicação própria (MG, MS, MT, PR, RS e SP).
                                 ' . RS, caso a UF seja usuária da SVRS - SEFAZ Virtual do RS (AM, BA, CE, DF, ES,
                                 '       GO, MA, RJ, RN, RO, SC, SE, e TO);
                                 ' . SP, caso a UF seja usuária da SVSP - SEFAZ Virtual de SP (AP, PE e RR);
                                 ' . RS quando desejar acessar a SVC-RS (AP, MT, MS, PE, RR e SP);
                                 ' . SP quando desejar acessar a SVC-SP (AM, BA, CE, DF, ES, GO, MA, MG, PA, RJ, 
                                 '       RN, RO, RS, SC, SE, e TO);
Dim nomeCertificado As String    ' informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL. Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS"
Dim proxy As String              ' informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443'
Dim usuario As String            ' informar o usuário para autenticação no proxy se necessário
Dim senha As String              ' informar a senha de autenticação no proxy se necessário
Dim licenca As String            ' informar a chave da licenca de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as condições de uso
Dim tipoAmbiente As long         ' informar o código do ambiente desejado: 1- produção ou 2-homologação
Dim versao As String             ' informar a versão da mensagem do WS - 1.03 / 1.04
Dim cStat As Long        ' retorna o código do resultado da chamada do WS
' 
proxy = ""                       ' informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443'
usuario = ""                     ' informar o usuário para autenticação no proxy se necessário
senha = ""                       ' informar a senha de autenticação no proxy se necessário
msgDados = ""                    ' informar a string com o lote do CT-e neste parâmetro, retorna a mensagem XML enviada para o WS
msgRetWS = ""                    ' retorna a mensagem XML de resposta do WS
msgResultado = ""                ' retorna a literal do resultado da chamada do WS
licenca = ""                     ' informar a chave da licenca de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as condições de uso
'
'  prepara variáveis
'
nomeCertificado = "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS"
siglaWS = "RS"                   ' SEFAZ/RS
siglaUF = "RS"                   ' informar a sigla da UF do emissor.
versao = "1.04"                  ' informar a versão da mensagem do WS - 1.03 / 1.04
tipoAmbiente = 2                 ' informar o código do ambiente desejado: 1- produção ou 2-homologação
cStat = 0                    ' retorna o código do resultado da chamada do WS
'
'
Dim nomeArquivo As String  ' nome do arquivo que contem o Lote
'
'
nomeArquivo = "c:\exemplo.xml"
'
'  importante: verificar a existência do arquivo solicitado na pasta do VB e indicar o caminho correto para ele
'  Carrega o conteúdo do nome do arquivo em msgDados
'
Open nomeArquivo For Input As #1
msgDados = Input$(LOF(1), 1)
Close #1
 
 
Dim objCTeUtil As Object
 
Set objCTeUtil = CreateObject("CTe_Util.Util")
 
'
'
Screen.MousePointer = vbHourglass    ' ampulheta
'
'
'
 cStat = objCTeUtil.EnviaLote(siglaWS, siglaUF, tipoAmbiente, nomeCertificado, versao, msgDados, msgRetWS, msgResultado, proxy, usuario, senha, licenca)
'
'
 Screen.MousePointer = vbDefault ' normal
'
If cStat = 103 Then
 
   '
   '  grava Retorno do envio do CTe
   '
   nomeArquivo = "retEnviCte.xml"
   Open nomeArquivo For Output As #1
   Print #1, msgRetWS 
   Close #1
 
'
 MsgBox Str(cStat) & " - " & msgResultado & vbCrLf & vbCrLf & "Faça a busca do resultado do processamento do lote.", vbInformation, "Informação"
 
'
'

Else
 
 MsgBox Str(cStat) & " - " & msgResultado & vbCrLf & vbCrLf & msgRetWS, vbError, "Atenção: Falha no envio..."
 
End If
'
' libera classe
'
Set objCTeUtil = Nothing
10.1.2. EnviaLote [v3.00]
10.1. Envio de Lote de CT-e
« Anterior
10.1.1.5. Busca lote de CT-e
Próximo »
10.1.3. BuscaLote [v3.00]