- 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:
- 2011-12-16 - v1.0- Versão preliminar.
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