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

10.1.2. EnviaLote

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

A identificação do WS de envio deverá ser informada no parâmetro siglaWS.

Os emissores localizados em UF usuárias da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO) devem informar a sigla RS; caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF.

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.


Preenchimento da siglaWS

  • a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO);

  • a sigla da UF, caso a UF tenha aplicação própria (MG, MS, MT, RS e SP).

Preenchimento do nomeCertificado

Informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL.

Parâmetros:

nome tipo fluxo descrição
siglaWS string entrada informar a sigla do WS de envio, informar a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO); caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF.
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 da mensagem do WS - 1.03 / 1.04
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 (1 – Secretaria de Fazenda Estadual, 2 – Receita Federal, 3 – SEFAZ Virtual RS e 4 – SEFAZ Virtual RFB)
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, informar a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO); caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF
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"                   ' informar a sigla do WS de envio, informar a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO); caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF   
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
10.1. Envio de Lote de CT-e
« Anterior
10.1.1.5. Busca lote de CT-e
Próximo »
10.1.3. BuscaLote