- 11.5. CriaProc
11.5.1. CriaProcCTe - 11.5. CriaProc
« Anterior - 12. Gerar XML do CT-e - modelo 57
Próximo »
11.5.1. CriaProcCTe
Cria o procCTe - estrutura de distribuição de CT-e composto pelo CT-e e respectivo protocolo de autorização de uso.
CT-e cancelado
Não é possível montar o proCTe de um CT-e com situação cancelado, pois o WS de Consulta protocolo do CT-e utilizado para pegar os dados da autorização de uso não devolve as informações da data e hora de autorização de uso do CT-e.
Assinatura
string CriaProcCTe(string siglaWS, ref string CTeAssinado, out string protocolo, out string retCancCTe, out int resultado, string nomeCertificado, out string msgResultado, string proxy, string usuario, string senha)
Descrição:
A funcionalidade é útil para criar o procCTe quando o CT-e teve o uso autorizado pela SEFAZ, mas não houve retorno do Web Service ou houve uma falha na gravação do procCTe.
A identificação do WS de acessado deverá ser informada no parâmetro siglaWS, veja Tabela de siglaWS
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, veja Tabela de siglaWS |
CTeAssinado | string | entrada/saída | informar o CT-e assinado |
Protocolo | string | saída | retorna o número do protocolo de autorização de uso |
retCancCTe | string | saída | retorna o XML da homologação de cancelamento se o CT-e estiver cancelado |
resultado | inteiro | saída | retorna o código do resultado da chamada do WS |
nomeCertificado | string | entrada | informar o Nome do titular (campo Assunto) do certificado digital a ser utlizado 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" |
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 |
Retorno:
O resultado da chamada do CriaProcCTe é a mensagem XML composta pelo CT-e e respectivo protocolo de autorização de uso do CT-e gerado de acordo com o leiaute de distribuição do CT-e previsto no Manual de Integração do Contribuinte
O parâmetro resultado retorna um código numérico com os seguintes significados:
código | Mensagem |
---|---|
6201 | cteProc do CT-e (situação Autorizado) montado com sucesso |
6202 | Erro: Conteúdo do XML informado como CT-e no parâmetro de entrada (CTeAssinado) mal formado [Erro Windows] |
6203 | Erro: tag tpAmb inexistente no XML informado como CT-e no parâmetro de entrada(CTeAssinado) [Erro Windows] |
6204 | Erro: tag UF do emitente inexistente no XML informado como CT-e no parâmetro de entrada(CTeAssinado) [Erro Windows] |
6205 | Erro: tag infCte não localizada no XML informado como CT-e no parâmetro de entrada(CTeAssinado) |
6206 | Erro: tag infCte não localizada no arquivo de entrada [Erro Windows] |
6207 | Erro: tag cStat não localizada na mensagem de retorno [Erro Windows] |
6208 | Erro: tag xMotivo não localizada na mensagem de retorno [Erro Windows] |
6209 | Erro: tag tpAmb não localizada na mensagem de retorno [Erro Windows] |
6210 | Erro: tag verAplic não localizada na mensagem de retorno [Erro Windows] |
6211 | Erro: tag dhRecbto não localizada na mensagem de retorno [Erro Windows] |
6212 | Erro: tag nProt não localizada na mensagem de retorno [Erro Windows] |
6213 | Erro: tag digVal não localizada na mensagem de retorno [Erro Windows] |
6214 | Erro: |
6215 | Erro inesperado ao tratar o XML do retorno do WS[Erro Windows] |
6216 | Erro: Impossível montar o cteProc da CT-e, pois o CT-e se encontra Cancelado [31-03-13] |
6217 | cteProc da CT-e (situação Denegado) montado com sucesso |
6218 | Erro: O parâmetro siglaWS deve ser informado |
6219 | Erro: Falha no acesso ao protCTe do XML da resposta do WS [Erro Windows] |
Histórico de atualização:
- 2011-12-30 - v1.0 - Versão preliminar.
- 2013-03-31 - v1.2f - correção do tratamento do CT-e com situação cancelada.
XML:
Exemplo de XML de Proc criado pela funcionalidade
<?xml version="1.0" encoding="UTF-8"?> <cteProc xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04"> <CTe xmlns="http://www.portalfiscal.inf.br/cte"> <infCte versao="1.04" Id="CTe35110899999999000191570010000001011000001018"> <ide> <cUF>35</cUF> <cCT>00000101</cCT> <CFOP>5353</CFOP> <natOp>PRESTACAO DE SERVICO</natOp> <forPag>0</forPag> <mod>57</mod> <serie>1</serie> <nCT>101</nCT> <dhEmi>2011-08-20T18:24:19</dhEmi> <tpImp>1</tpImp> <tpEmis>1</tpEmis> <cDV>8</cDV> <tpAmb>2</tpAmb> <tpCTe>0</tpCTe> <procEmi>0</procEmi> <verProc>4.0</verProc> <cMunEnv>3503208</cMunEnv> <xMunEnv>ARARAQUARA</xMunEnv> <UFEnv>SP</UFEnv> <modal>01</modal> <tpServ>0</tpServ> <cMunIni>3505708</cMunIni> <xMunIni>BARUERI</xMunIni> <UFIni>SP</UFIni> <cMunFim>3503208</cMunFim> <xMunFim>ARARAQUARA</xMunFim> <UFFim>SP</UFFim> <retira>0</retira> <toma03> <toma>0</toma> </toma03> </ide> <compl> <xEmi>ITALO</xEmi> <Entrega> <semData> <tpPer>0</tpPer> </semData> <semHora> <tpHor>0</tpHor> </semHora> </Entrega> <origCalc>BARUERI</origCalc> <destCalc>ARARAQUARA</destCalc> <xObs>;Documento emitido por ME ou EPP optante pelo Simples Nacional;Nao gera direito a credito fiscal de ICMS</xObs> </compl> <emit> <CNPJ>99999999000191</CNPJ> <IE>181288960178</IE> <xNome>TESTANDO TESTANDO LTDA-ME</xNome> <xFant>GMP</xFant> <enderEmit> <xLgr>RUA EXPEDICIONARIO</xLgr> <nro>123</nro> <xBairro>VILA YAMADA</xBairro> <cMun>3503208</cMun> <xMun>ARARAQUARA</xMun> <CEP>14802150</CEP> <UF>SP</UF> <fone>1234567891</fone> </enderEmit> </emit> <rem> <CNPJ>61365284015136</CNPJ> <IE>206274823111</IE> <xNome>TESTANDO TESTANDO LTDA-ME</xNome> <xFant>TESTANDO TESTANDO LTDA-ME</xFant> <fone>1234567891</fone> <enderReme> <xLgr>AV. PROJETADA</xLgr> <nro>751</nro> <xBairro>NOVA ALVORADA</xBairro> <cMun>3505708</cMun> <xMun>BARUERI</xMun> <CEP>06463400</CEP> <UF>SP</UF> <cPais>1058</cPais> <xPais>BRASIL</xPais> </enderReme> <infNFe> <chave>35110561375284015136550140028647541589947329</chave> </infNFe> </rem> <dest> <CPF>06760213874</CPF> <IE>ISENTO</IE> <xNome>TESTANDO TESTANDO LTDA-ME</xNome> <fone>1633312039</fone> <enderDest> <xLgr>AL. FERRAZ</xLgr> <nro>106</nro> <xBairro>FONTE</xBairro> <cMun>3503208</cMun> <xMun>ARARAQUARA</xMun> <CEP>14802428</CEP> <UF>SP</UF> <cPais>1058</cPais> <xPais>BRASIL</xPais> </enderDest> </dest> <vPrest> <vTPrest>2.00</vTPrest> <vRec>2.00</vRec> <Comp> <xNome>FRETE PESO</xNome> <vComp>2.00</vComp> </Comp> </vPrest> <imp> <ICMS> <ICMS45> <CST>41</CST> </ICMS45> </ICMS> </imp> <infCTeNorm> <infCarga> <vCarga>88.30</vCarga> <proPred>CAIXA</proPred> <xOutCat>DVD</xOutCat> <infQ> <cUnid>01</cUnid> <tpMed>Kg</tpMed> <qCarga>2.0000</qCarga> </infQ> <infQ> <cUnid>03</cUnid> <tpMed>CAIXA</tpMed> <qCarga>1.0000</qCarga> </infQ> </infCarga> <infModal versaoModal="1.04"> <rodo> <RNTRC>06013631</RNTRC> <dPrev>2011-08-14</dPrev> <lota>0</lota> </rodo> </infModal> </infCTeNorm> </infCte> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="#CTe35110899999999000191570010000001011000001018"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>cGkh9p2OT/dDA3jTw/4DuLfzdCd=</DigestValue> </Reference> </SignedInfo> <SignatureValue>jfGyueaAABym1GmPMn6IGKRj99fMKwu39BtaxtUruL6ssEcaKQfo8t3qbpB9rnM8sh3iaTaf0DBP5bMjotL/2wsUXtot7vWZi+hzJIMX0Gq0d179xVK85Ey1ohkvEYt3NYSO7GygpMqTJdKvKG1uKuvlnERSjlI5aEd/9V0yZ00=</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIFtDCCBJygAwIBAgIIG1mv0XRoWy4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxIDAeBgNVBAsMF0NhaXhhIEVjb25vbWljYSBGZWRlcmFsMRkwFwYDVQQDDBBBQyBDQUlYQSBQSi0xIHYxMB4XDTExMTExMTA2MDg0NloXDTEyMTExMDA2MDg0NlowgY4xCzAJBgNVBAYTAkJSMRMwEQYDVQQKDApJQ1AtQnJhc2lsMSAwHgYDVQQLDBdDYWl4YSBFY29ub21pY2EgRmVkZXJhbDEZMBcGA1UECwwQQUMgQ0FJWEEgUEotMSBWMTEtMCsGA1UEAwwkTSBSIE0gS0FUTyBBU0FLVVJBIC0gRVBQOjY5NjIxMTg3OTE1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0751AtgqX3lAPZpQTIQWWSpXuoEN+JYiJrA99Toz2oLfRPjPPINj8J7IFHQ0sT3KzhNIykVxYAL22tpX9dvnUMs1mm0C/O+ImEzGr7xqSFVd7sp9qsdrc/JWEUaRVqKUwZSd38HWBEAwPNFBa3/UN1EhXgjev+pH4oKsu1msthwIDAQABo4ICxjCCAsIwDgYDVR0PAQH/BAQDAgXgMCkGA1UdJQQiMCAGCCsGAQUFBwMCBggrBgEFBQcDBAYKKwYBBAGCNxQCAjAdBgNVHQ4EFgQU22ocgo1bv7EO0N4T6wMl9l+cCV0wHwYDVR0jBBgwFoAUF8RVhQ+bjMcBI4CdEbNH3LOT1qswgcQGA1UdEQSBvDCBuYEWbXJlZ2luYS5rYXRvQGdtYWlsLmNvbaAXBgVgTAEDB6AOBAwwMDAwMDAwMDAwMDCgPQYFYEwBAwSgNAQyMTQwOTE5NzI2OTYyMTE4NzkxNTE2ODY1MDA4MjEwMDAwMDAwMDAwMDAwMDAwU1NQU1CgGQYFYEwBAwOgEAQOMTAxNDI3ODUwMDAxOTCgLAYFYEwBAwKgIwQhTUFSQ0lBIFJFR0lOQSBNSVlVS0kgS0FUTyBBU0FLVVJBMGYGA1UdIARfMF0wWwYGYEwBAgEJMFEwTwYIKwYBBQUHAgEWQ2h0dHA6Ly9jZXJ0aWZpY2Fkb2RpZ2l0YWwuY2FpeGEuZ292LmJyL2RvY3VtZW50b3MvZHBjYWMtY2FpeGFwai5wZGYwgbwGA1UdHwSBtDCBsTAuoCygKoYoaHR0cDovL2xjci5jYWl4YS5nb3YuYnIvYWNjYWl4YXBqMXYxLmNybDAvoC2gK4YpaHR0cDovL2xjcjIuY2FpeGEuZ292LmJyL2FjY2FpeGFwajF2MS5jcmwwTqBMoEqGSGh0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9DQUlYQS9BQ0NBSVhBUEovYWNjYWl4YXBqMXYxLmNybDBXBggrBgEFBQcBAQRLMEkwRwYIKwYBBQUHMAKGO2h0dHA6Ly9jZXJ0aWZpY2Fkb2RpZ2l0YWwuY2FpeGEuZ292LmJyL2FpYS9hY2NhaXhhcGoxdjEucDdiMA0GCSqGSIb3DQEBBQUAA4IBAQB7lxQ/YPm3Tl4CqTVuPmo/ipWlM7mqMUIh4if2shlXXlZwzotNLdacsr1nh9wFLETVSn6T4gllo42aSgOgaYmzhzeITKsEw4NdMq4RkCKytuxbIqAPmTD8gZEV144AK6aB8sThv8LpZ+D002LTRG9t013C3DbiGeYD3Cdu1gxRDHOW1lWula+9e5tPZ8Bbh/BDR5cSFUWBzt3ellQ4BJY+xh2a2iteM9+KAHsZChIPrHPRV/LG5HSlpxlAtkGSxZDK5EIEYJ7SVpWovV1oUnz8PvKO2nQQKflTLVSE9C+NbfjXfD6f5GtED6q4AxkHNUQBimd6HAhA0oDjO/oaDeEC</X509Certificate> </X509Data> </KeyInfo> </Signature> </CTe> <protCTe versao="1.04" xmlns="http://www.portalfiscal.inf.br/cte"> <infProt> <tpAmb>2</tpAmb> <verAplic>SP_PL_CTe_104</verAplic> <chCTe>35110899999999000191570010000001011000001018</chCTe> <dhRecbto>2011-08-20T18:24:22</dhRecbto> <nProt>135110002038337</nProt> <digVal>nBkh9p2OT/dDA3jTw/4DuLfzdZM=</digVal> <cStat>100</cStat> <xMotivo>Autorizado o uso do CT-e</xMotivo> </infProt> </protCTe> </cteProc>
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 sendo 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 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 msgResultado As String ' retorna a literal do resultado da chamada do WS Dim CTeAssinado As String ' informar o CT-e assinado Dim retCancCTe As String ' retorna o XML da homologação de cancelamento se o CT-e estiver cancelado Dim nomeCertificado As String ' informar o Nome do titular (campo Assunto) do certificado digital a ser utlizado 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 protocolo As String ' retorna o número do protocolo de autorização de uso 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 resultado As Long ' retorna o código do resultado da chamada do WS Dim procCTe As String ' retorna o procCTe gerado pela funcionalidade Dim nomeArquivo As String ' nome do arquivo assinado para gerar o proc ' 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 CTeAssinado ' Open nomeArquivo For Input As #1 CTeAssinado = Input$(LOF(1), 1) Close #1 ' 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 WS retCancCTe = "" ' retorna o XML da homologação de cancelamento se o CT-e estiver cancelado proxy = "" ' preencher estes campos somente em caso de existência de proxy na rede usuario = "" senha = "" protocolo = "" ' número do protocolo + dd/mm/aa HH:MM:SS msgResultado = "" ' literal da mensagem de resultado da chamada da função procCTe = "" ' retorna o procCTe gerado pela funcionalidade resultado = 0 ' retorna o código do resultado da chamada do WS ' ' referenciando a DLL em late binding ' não é necessário fazer o reference da DLL ' o intelisense não funciona ' Dim objCTeUtil As Object Set objCTeUtil = CreateObject("CTe_Util.Util") ' Screen.MousePointer = vbHourglass ' ponteiro ampulheta ' ' procCTe = objCTeUtil.CriaProcCTe(siglaWS, CTeAssinado, protocolo, retCancCTe, resultado, nomeCertificado, msgResultado, proxy, usuario, senha) ' ' Screen.MousePointer = vbDefault ' ponteiro normal ' ' tratar retorno ' If (resultado = 6201 Or Or resultado = 6217) Then ' ' grava Proc CT-e ' nomeArquivo = "procCTe.xml" Open nomeArquivo For Output As #1 Print #1, procCTe Close #1 MsgBox msgResultado + Chr(13) + Chr(13) + procCTe, vbInformation, "Informação" Else MsgBox "Processo de montagem procCTe falhou..." & vbCrLf & msgResultado, vbExclamation, "Atenção" End If ' ' liberar DLL ' Set objCTeUtil = Nothing
- 11.5.1. CriaProcCTe
11.5. CriaProc - « Anterior
11.5. CriaProc - Próximo »
12. Gerar XML do CT-e - modelo 57