11.4. Utilidadades
11.4.7. Monta lote CT-e
11.4.6. LeArquivoANSI
« Anterior
11.4.8. Pega ProtCTe
Próximo »

11.4.7. Monta lote CT-e


Assinatura:

string MontaLoteCTe(string versao, string idLote, string CTe, out long quantidadeCTe, out long cResultado, out string msgResultado);

Descrição:

Funcionalidade para montar o lote de CT-e.

DICA

O envio de CT-e em lote é a forma mais eficiente e rápida para transmissão do CT-e, sendo o processo recomendado para usuários que emitem uma grande quantidade de CT-e em um curto período de tempo.

Parâmetros:

nome tipo fluxo descrição
versao string entrada informar a versão do lote, deve ser a mesma versão do CT-e, ex.: "1.04"
idLote string entrada informar o idLote, o idLote é um número compreendido entre 1 a 999999999999999 que o emissor pode utilizar como desejar, a SEFAZ não faz nenhum controle desta numeração.
CTe string entrada informar os CT-e que deseja incluir no lote, os CT-e serão informados em uma variável string, utilizar o CR/LF (quebra de linha) para separação dos CT-e, a quantidade máxima de CT-e permitida é de 50 CT-e por lote.
O CT-e deve estar assinado individualmente
quantidadeCTe long saída retorno a quantidade CT-e existentes no lote
cResultado long saída retorna o resultado da chamada da dll
msgResultado string saída retorna a literal do resultado da chamada da dll

Retorno:

O resultado da chamada é uma string com o lote de CT-e.

O cResultado retorna um dos seguintes códigos:

código Mensagem origem regra
7500 Lote com [qtde] CT-e criado com sucesso. DLL -
7501 Erro: Parâmetro versao não informado DLL -
7502 Erro: Parâmetro versao informado:[valor informado] inválido DLL -
7503 Erro: Parâmetro idLote informado:[valor informado] não informado DLL -
7504 Erro: Parâmetro idLote informado:[valor informado] não é numérico DLL -
7505 Erro: Parâmetro idLote informado:[valor informado] deve ser diferente de zero DLL -
7506 Erro: Parâmetro idLote informado:[valor informado] deve ser menor que 1000000000000000 DLL -
7507 Erro: Falha no processamento: [Erro do Windows] do conteúdo informado no Parâmetro CTe: [{1}] DLL -
7508 Erro: Conteúdo informado no Parâmetro CTe: [valor informado] não é um XML válido: [Erro do Windows] DLL -
7509 Erro: Quantidade de CTe informadas: [qtde] maior que quantidade permitida por lote 50 DLL -
7510 Erro: O Tamanho do lote: [tamanho] maior que quantidade permitida por lote 512.000 bytes DLL -

Histórico de atualização:

XML:

Exemplo de arquivo TXT ou XML para montar o lote

< ?xml version="1.0" encoding="UTF-8"?>
< CTe xmlns="http://www.portalfiscal.inf.br/cte"><infCTe Id="CTe35080599999090910270570010000000015180051273" versao="1.04"> (...) </CTe>
< ?xml version="1.0" encoding="UTF-8"?>
< CTe xmlns="http://www.portalfiscal.inf.br/cte">
<infCTe Id="CTe35080599999090910270570010000000016180051273" versao="1.04"> (...) </CTe>
< ?xml version="1.0" encoding="UTF-8"?>
< CTe xmlns="http://www.portalfiscal.inf.br/cte">
<infCTe Id="CTe35080599999090910270570010000000017180051273" versao="1.04"> (...) </CTe>
< ?xml version="1.0" encoding="UTF-8"?>
< CTe xmlns="http://www.portalfiscal.inf.br/cte"><infCTe Id="CTe35080599999090910270570010000000018180051273" versao="1.04"> (...) </CTe>

Exemplo de Lote Montado

< ?xml version="1.0" encoding="UTF-8"?>
< enviCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04">
< idLote>Número do Lote informado pelo usuário</idLote>
< CTe xmlns="http://www.portalfiscal.inf.br/cte">
<infCTe Id="CTe35080599999090910270570010000000015180051273" versao="1.04"> (...)
</CTe>
< CTe xmlns="http://www.portalfiscal.inf.br/cte">
<infCTe Id="CTe35080599999090910270570010000000016180051273" versao="1.04"> (...) 
</CTe>
< CTe xmlns="http://www.portalfiscal.inf.br/cte">
<infCTe Id="CTe35080599999090910270570010000000017180051273" versao="1.04"> (...) 
</CTe>
< CTe xmlns="http://www.portalfiscal.inf.br/cte">
<infCTe Id="CTe35080599999090910270570010000000018180051273" versao="1.04"> (...) 
</CTe>
< /enviCTe>

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 idLote As String        ' informar o idLote, o idLote é um número compreendido entre 1 a 999999999999999 que o emissor pode utilizar como desejar, a SEFAZ não faz nenhum controle desta numeração
Dim CTe As String       ' informar os CT-e que deseja incluir no lote, os CT-e serão informados em uma variável string, utilizar o CR/LF (quebra de linha) para separação dos CT-e, a quantidade máxima de CT-e permitida é de 50 CT-e por lote.<BR> O CT-e deve estar assinado individualmente
Dim quantidadeCTe As Long   ' retorno a quantidade CT-e existentes no lote
Dim cResultado As Long      ' retorna o resultado da chamada da dll
Dim msgResultado As String  ' retorna a literal do resultado da chamada da dll
Dim versao As String        ' informar a versão do lote, deve ser a mesma versão do CT-e, "1.03" / "1.04"
Dim LoteCTe As String       ' retorna o XML do lote montado

idLote = "123"      ' Número do Lote
msgResultado = ""   ' retorna a literal do resultado da chamada da dll
quantidadeCTe = 0   ' retorno a quantidade CT-e existentes no lote
cResultado = 0          ' retorna o resultado da chamada da dll
versao = "1.04"     ' informar a versão do lote
LoteCTe = ""            ' retorna o XML do lote montado

'  carregar arquivo XML na string CTe

' Exemplo do arquivo contendo 4 CT-e's introduzidos em um arquivo txt ou xml a ser carregado pelo usuário para a formação do Lote CTe:

'< ?xml version="1.0" encoding="UTF-8"?>< CTe xmlns="http://www.portalfiscal.inf.br/cte"><infCTe Id="CTe35080599999090910270570010000000015180051273" versao="1.04"> (...) </CTe>
'< ?xml version="1.0" encoding="UTF-8"?>< CTe xmlns="http://www.portalfiscal.inf.br/cte"><infCTe Id="CTe35080599999090910270570010000000016180051273" versao="1.04"> (...) </CTe>
'< ?xml version="1.0" encoding="UTF-8"?>< CTe xmlns="http://www.portalfiscal.inf.br/cte"><infCTe Id="CTe35080599999090910270570010000000017180051273" versao="1.04"> (...) </CTe>
'< ?xml version="1.0" encoding="UTF-8"?>< CTe xmlns="http://www.portalfiscal.inf.br/cte"><infCTe Id="CTe35080599999090910270570010000000018180051273" versao="1.04"> (...) </CTe>
'
'
Dim nomeArquivo As String   ' nome do arquivo que será utilizado para a montagem do lote CTe
'
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 CTe
'
Open nomeArquivo For Input As #1
CTe = Input$(LOF(1), 1)
Close #1
'
' A dll gerará o lote com as seguintes tags:
'< ?xml version="1.0" encoding="UTF-8"?>
'< enviCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04">
'< idLote>Número do Lote informado pelo usuário</idLote>

' ... Arquivo txt ou XML informado pelo usuário (CT-e's que compõe o lote)
'
'< /enviCTe>
'
'
'
Dim objCTeUtil As Object
 
Set objCTeUtil = CreateObject("CTe_Util.Util")
'

Screen.MousePointer = vbHourglass    ' ampulheta
'
'
'
 LoteCTe = objCTeUtil.MontaLoteCTe(versao, idLote, CTe, quantidadeCTe, cResultado, msgResultado)
 
'
'
Screen.MousePointer = vbDefault ' normal
'
'
If cResultado = 7500 Then
   '
   '  grava Lote CT-e
   '
   nomeArquivo = "LoteCTe.xml"
   Open nomeArquivo For Output As #1
   Print #1, LoteCTe
   Close #1
 
MsgBox msgResultado + Chr(13) + Chr(13) + LoteCTe, vbInformation, "Informação"
 
Else
 
 
MsgBox cResultado + Chr(13) + Chr(13) + msgResultado, vbInformation, "Falha na Montagem do Lote"
 
End If
'
'
' libera classe
'
'
Set objCTeUtil = Nothing
11.4.7. Monta lote CT-e
11.4. Utilidadades
« Anterior
11.4.6. LeArquivoANSI
Próximo »
11.4.8. Pega ProtCTe