Jump to content
Fivewin Brasil

toya

Membros
  • Posts

    293
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by toya

  1. Aprendi e continuo aprendendo ao longo da caminhada que quase tudo é possível nesta nossa linguagem... O que pareça não ser possível, o Python ajuda resolver sem complicação... Na questão cotação do dollar, dê uma analisada aqui: https://dadosabertos.bcb.gov.br/dataset/dolar-americano-usd-todos-os-boletins-diarios/resource/ae69aa94-4194-45a6-8bae-12904af7e176 https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/documentacao Chame no meu e-mail/whatsapp que te envio um pequeno exe que retorna o proposto na API...
  2. Bom dia !!! Alguem teria um dica de como gerar o <dest> tendo como destinatário o Banco do Brasil S/A - no DF com o CNPJ 00000000000191. Retorna as Rejeições: 210 - IE do destinatario invalida 232 - IE do destinatario nao informada Dados consultados no CCC: Nome da Empresa: BANCO DO BRASIL S.A UF: DF - 53 CNPJ: 00.000.000/0001-91 Situação CNPJ: Sem restrição Inscrição Estadual (IE): 809427800174 Situação IE: Habilitado Tipo IE: IE Não Contribuinte (Canteiro de Obras, IE Virtual, outros) CNAE Principal 6432800 Data Situação na UF: 03/11/2021 UF do Emitente: PR Resultados das tentativas já efetuadas: -------------------------------------------------- </enderDest> <indIEDest>1</indIEDest> <IE>809427800174</IE> cStat = "210" xMotivo = "IE do destinatario invalida" -------------------------------------------------- <indIEDest>9</indIEDest> <IE>809427800174</IE> cStat = "210" xMotivo = "IE do destinatario invalida" -------------------------------------------------- </enderDest> <indIEDest>9</indIEDest> cStat = "232" xMotivo = "IE do destinatario nao informada" --------------------------------------------------
  3. Bom dia !!! Kapiaba, desculpe a pergunta mal formulada... Na verdade gostaria de saber quais colegas estão ou pretendem utilizar a nova DLL Unimake-DFe... Gostaria de trocar idéias com os mesmos...
  4. Bom dia !!! Alguém testando a nova DLL Unimake.DFe ?...
  5. Bom dia !!! Algum colega teria um modelo de um Txt do SPED Fiscal no qual contenha os Registros 1310 e 1320 (Posto de Gasolina)?... Caso seja possível, enviar-me para o e-mail toyasis@gmail.com Mui grato...
  6. Aos interessados, a solução que encontrei: cBase64 := alltrim( hDados["login"] ) + ":" + alltrim( hDados["senha"] ) cBasic := alltrim( HB_Base64Encode( cBase64, len( cBase64 ) ) ) cBasic := strtran( cBasic, CRLF, "" ) cXmlFile := memoread(cFile) oHTTP := CreateObject( "MSXML2.ServerXMLHTTP.6.0" ) oHttp:Open("POST", cUrl, .f. ) oHTTP:SetRequestHeader( "Authorization", "Basic " + cBasic ) oHTTP:SetRequestHeader( "Host", cHost ) oHTTP:SetRequestHeader( "Content-Type", "multipart/form-data; boundary=" + cBoundary ) cTexto := '--' cTexto += cBoundary cTexto += CRLF cTexto += 'Content-Disposition: form-data; name="XML"; filename="'+cFile+'"' cTexto += CRLF cTexto += 'Content-Type: application/xml' cTexto += CRLF cTexto += CRLF cTexto += cXmlFile cTexto += CRLF cTexto += CRLF cTexto += '--' cTexto += cBoundary cTexto += '--' oHttp:Send( cTexto ) cRet := oHttp:ResponseText
  7. https://flexdocs.net/guiaNFe/licenca.condicoes.html Veja este link: https://flexdocs.net/guiaNFe/licenca.uso.html
  8. Para quem utiliza e/ou integra vossa aplicação com uma DLL Delphi na qual é utilizada a função FormatDateTime('yymmddhhmm', Now), deve estar se deparando com um erro do tipo: <numero> is not a valid integer value. Adotei a seguinte solução, digo isto para quem tem acesso à recompilação da tal DLL,: Todo <idLote> que adota este controle sequencial via DLL será tratado como um parâmetro que será gerado pela minha aplicação. Isto é em razão do <idLote> ser "Número seqüencial autoincremental único para identificação do Lote." conforme reza nos MOC de alguns DFe. Podendo também, para quem achar util, utilizar a função abaixo para adotar como sequencial sem a exigência do "anterior + 1"... function BugAno2022Sequencial(dData, cTime) // #toya: 05/01/2022 - 07:00:00 - JOB#NFe - Projeto Mrb local Result := "" local n0 := 0 local n31122021 := 211231 local nDifBug := 0 local cDia := "" local cMes := "" local cAno := "" local cData := "" local cHora := "" local cMinutos := "" DEFAULT dData := date() DEFAULT cTime := time() cDia := strzero(day(dData), 2, 0) cMes := strzero(month(dData), 2, 0) cAno := strzero(year(dData), 4, 0) cData := substr(cAno, 3) + cMes + cDia cHora := left(cTime, 2) cMinutos := substr(cTime, 4, 2) if dData >= ctod("01/01/2022") n0 := val(cData) nDifBug := n0 - n31122021 Result := strzero(n31122021 + nDifBug - 8869, 6, 0) + cHora + cMinutos else Result := strzero(val(cData), 6, 0) + cHora + cMinutos endif return Result Com um pedido de desculpa aos colegas, estou alterando o PRG com os devidos ajustes. Segue abaixo a função para efetuar o retorno de um array contendo a Data e a Hora/Minuto a que se refere o Sequencial informado... function BugAno2022RestDataHora(pcSequencial) // #toya: 05/01/2022 - 07:00:00 - JOB#NFe - Projeto Mrb local Result := {ctod(""),"00:00:00"} local cAux := "" DEFAULT pcSequencial := "" pcSequencial := alltrim(pcSequencial) if len(pcSequencial) <> 10 msgstop("Sequencial invalido.", "AVISO") return Result endif cAux := left(pcSequencial, 6) if cAux <= "211231" Result := {ctod(substr(cAux, 5, 2) + "/" + substr(cAux, 3, 2) + "/" + "20" + left(cAux, 2)), substr(pcSequencial, 7, 2) + ":" + substr(pcSequencial, 9, 2) + ":00" } else Result := {ctod("31/12/2021") + val(cAux) - 211231, substr(pcSequencial, 7, 2) + ":" + substr(pcSequencial, 9, 2) + ":00" } endif return Result
  9. Mestre Vailton ... Este retorno é o do Postman... No meu caso não esta anexando o arquivo... Vide esta postgem onde testo tambem com cURL... http://forums.fivetechsupport.com/viewtopic.php?f=6&t=41157&p=246518&sid=501aecec24c2d4dc1692c6a289118f77#p246518 Mui grato...
  10. Consegui até aqui... Autentica, mas não envia o arquivo... #Include "FiveWin.ch" function NFSe() local cFile := "" local cUrl:= "" local cBasic := "" local cHost := "" local cRet := "" local cAux := "" local oHTTP := nil cUrl := "https://treinamento.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=migra_pinhais" cBasic := "MDkyNDczNDMwMDAxMjA6SXBtQDIwMjE=" cFile := "H:\NFSe\S_NS9_000000003-nfSe.xml" cHost := "treinamento.atende.net" oHTTP := CreateObject( "Msxml2.ServerXMLHTTP.6.0" ) oHTTP:Open( "POST" , cUrl, .f. ) oHTTP:SetRequestHeader( "Authorization", "Basic " + cBasic ) oHTTP:SetRequestHeader( "Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" ) oHTTP:SetRequestHeader( "Content-Disposition", chr(34)+"form-data; name=\"+chr(34)+"XML\"+chr(34)+"; filename="+cFile+chr(34)) oHTTP:SetRequestHeader( "Cookie", "PHPSESSID=ocqn90l0rfmovu1d8jrojju7s5; cidade=migra_pinhais" ) oHTTP:SetRequestHeader( "Content-Type", "text/xml" ) oHTTP:SetRequestHeader( "Host", cHost ) ohttp:Send( ) cRet := oHTTP:responseText cAux += memoread( "nfsetoya.prg" ) cAux += CRLF + CRLF + CRLF cAux += "//" + replicate( "-", 78 ) cAux += CRLF cAux += "Retorno:" cAux += CRLF + CRLF cAux += cRet cAux += CRLF + CRLF + CRLF cAux += "//" + replicate( "-", 78 ) cAux += CRLF + CRLF cAux += "no Postman:" cAux += CRLF + CRLF cAux += "Code e Retorno:" cAux += CRLF + CRLF cAux += memoread( "nfsetoya_postman.txt" ) cAux += CRLF + CRLF MemoWrit( "NFSetoya.txt", cAux ) cFile := cFilePath( GetModuleFileName( GetInstance() ) ) + "NFSetoya.txt" WinExec( "H:\Aplicativos\Notepad++\Notepad++.exe " + cFile ) return nil //------------------------------------------------------------------------------ Retorno: <?xml version="1.0" encoding="ISO-8859-1"?> <retorno> <mensagem> <codigo>9999 - Arquivo XML da Nota Fiscal de Servi?Eletr?a n?enviado!</codigo> </mensagem> </retorno> //------------------------------------------------------------------------------ no Postman: Code e Retorno: var client = new RestClient("https://treinamento.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=migra_pinhais"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Basic MDkyNDczNDMwMDAxMjA6SXBtQDIwMjE="); request.AddHeader("Cookie", "PHPSESSID=ocqn90l0rfmovu1d8jrojju7s5; cidade=migra_pinhais"); request.AddFile("XML", "/H:/NFSe/S_NS9_000000003-nfSe.xml"); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); <?xml version="1.0" encoding="ISO-8859-1"?> <retorno> <mensagem> <codigo>00209 - J� consta uma NFSe para o referido prestador de servi�o com o mesmo IDENTIFICADOR de arquivo </codigo></mensagem> </retorno>
  11. Já tentei das duas maneiras...
  12. Preciso de uma ajuda na transcrição HTTP (Postman) para o Harbour: ambiente Homologação POST /atende.php?pg=rest&service=WNERestServiceNFSe&cidade=migra_pinhais HTTP/1.1 Host: treinamento.atende.net Authorization: Basic MDkyNDczNDMwMDAxMjA6SXBtQDIwMjE= Cookie: PHPSESSID=7pf56uromi3p4vnrj64mi264a1; cidade=migra_pinhais Content-Length: 222 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="XML"; filename="/E:/JOBs/NFSe/xml_teste/S_NS9_000000001-nfSe.xml" Content-Type: text/xml (data) ----WebKitFormBoundary7MA4YWxkTrZu0gW cFile := "E:\JOBs\NFSe\xml_teste\S_NS9_000000001-nfSe.xml" doc := CreateObject( "MSXML2.DOMDocument" ) oHTTP := CreateObject( "MSXML2.XMLHTTP" ) oHTTP:Open( "POST" , cUrl, .f. ) oHTTP:SetRequestHeader( "Content-Type" , "text/xml" ) oHTTP:SetRequestHeader( "Authorization" , "Basic " + cBasic ) oHTTP:SetRequestHeader( "Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" ) oHTTP:SetRequestHeader( "Content-Disposition", 'form-data; name="XML"; filename=' + cFile ) http:Send() Estou tendo o seguinte retorno: <?xml version="1.0" encoding="ISO-8859-1"?> <retorno> <mensagem> <codigo>9999 - Arquivo XML da Nota Fiscal de Servi?Eletr?a n?enviado!</codigo> </mensagem> </retorno>
  13. Abre-se um novo espaço de oportunidades onde muitos de nós, profissionais "lapidadores de bits", poderemos nos encaixar... Acesse o edital e conheça mais sobre as atribuições, perfil desejado e informações para participação no processo https://www.gov.br/anpd/pt-br/assuntos/noticias/faca-parte-da-equipe-da-anpd-1/edital-final-1.pdf O prazo é até 31/08/2021. Confesso estar mui animado com este assunto LGPD... Vamos ter muiiiitas conversas e noites ralando para adequar nossos Sistemas...
  14. http://flexdocs.online/guiaNFe/historico.DLL.html?fbclid=IwAR3wvcTpvoKcxdA9y375SaQhPz8QBA-FKAflCvo_yK9n_HbZ1v6WzqnhUlo
  15. Liberado rotina exemplo para impressão do DANFE Simplificado - Etiqueta. http://www.toyanet.com.br/pontoxml.php#pontoxml017
  16. Segue... #include "toya2k20.ch" //------------------------------------------------------------------------------ // if NFe_validar_chave( "32191205570714000825550010062282521138571606" ) // msginfo( "Chave correta" ) // else // msginfo( "Chave incorreta" ) // endif //------------------------------------------------------------------------------ function NFe_validar_chave( pcChave ) // #toya: 17/09/2020 - 20:25:01 - mrb_dfe-2020 - Release .001.001 local Result := .t. local aChave[09] local cChave := "" local cData := dtoc( date() ) local cAAMM := "" local cAno := "" local cMes := "" local lRetorno := .f. local lOk := .t. local i := 0 DEFAULT pcChave := "" cChave := SoNumeros( pcChave ) if len( cChave ) <> 44 Result := .f. else cAAMM := substr( cData, 7, 2 ) + substr( cData, 3, 2 ) if substr( cChave, 5, 2 ) < substr( cAAMM, 1, 2 ) cMes := "\01\02\03\04\05\06\07\08\09\10\11\12\" elseif substr( cChave, 5, 2 ) == substr( cAAMM, 1, 2 ) cMes := "\" for i = 1 to val( substr( cAAMM, 3, 2 ) ) cMes += strzero( i, 2, 0 ) + "\" next else Result := .f. endif endif if Result Result := .f. cAno := "\" for i = 10 to val( substr( cAAMM, 1, 2 ) ) cAno += strzero( i, 2, 0 ) + "\" next if substr( cChave, 1, 2 ) $ "\12\27\16\13\29\23\53\32\52\21\51\50\31\15\25\41\26\22\33\24\43\11\14\42\35\28\17\" if substr( cChave, 3, 2 ) $ cAno .and. substr( cChave, 5, 2 ) $ cMes if ValidaCNPJ_CPF( "J", substr( cChave, 7, 14 ) ) if substr( cChave, 21, 2 ) == "55" if ( val( substr( cChave, 23, 3 ) ) >= 0 .and.; val( substr( cChave, 23, 3 ) ) <= 899 .and.; substr( cChave, 35, 1 ) == "1" ) .or.; ( val( substr( cChave, 23, 3 ) ) >= 900 .and.; val( substr( cChave, 23, 3 ) ) <= 999 .and.; substr( cChave, 35,1 ) $ "\2\3\4\5\" ) if val( substr( cChave, 26, 9 ) ) > 0 if substr( cChave, 35, 1 ) $ "\1\2\3\4\5\" if val( substr( cChave, 36, 8 ) ) > 0 if substr( cChave, 44, 1 ) == NFe_Modulo11( substr( cChave, 1, 43 ) ) Result:=.t. endif endif endif endif endif endif endif endif endif endif return Result //------------------------------------------------------------------------------ static function NFe_Modulo11( pcNumero, aSeq, nLen ) local Result := "%" local cNumero := "" local nTotal := 0 local i := 0 DEFAULT aSeq := { 4,3,2,9,8,7,6,5,4,3,2,9,8,7,6,5,4,3,2,9,8,7,6,5,4,3,2,9,8,7,6,5,4,3,2,9,8,7,6,5,4,3,2 } DEFAULT nLen := 43 cNumero := iif( valtype( pcNumero ) == "N", padl( alltrim( str( pcNumero, nLen ) ), nLen ), padl( pcNumero, nLen ) ) for i = 1 to nLen nTotal += val( substr( cNumero, i, 1 ) ) * aSeq[i] next Result := iif( nTotal % 11 < 2, "0", str( 11 - ( nTotal % 11 ), 1 ) ) return Result //------------------------------------------------------------------------------ static function Sonumeros( cString, cExcecao ) local Result := "" local i := 0 DEFAULT cExcecao := "" for i = 1 to len( cString ) if substr( cString, i, 1 ) $ "1234567890" .or. substr( cString, i, 1 ) $ cExcecao Result += substr( cString, i, 1 ) endif next return Result //------------------------------------------------------------------------------ static function ValidaCNPJ_CPF( cTipo, cDados, lMsg ) local Result := .f. DEFAULT cTipo := "J" DEFAULT lMsg := .t. if cTipo == "F" Result := ValidarCPF( cDados, lMsg ) else Result := ValidarCNPJ( cDados, lMsg ) endif return Result //------------------------------------------------------------------------------ static function ValidarCPF( cCPF, lMsg ) local Result := .t. local i local j local soma local controle local digito local num local wCPF := iif( ValType( cCPF ) == "U", "", cCPF ) DEFAULT lMsg := .t. wCPF := strtran( wCPF, ".", "" ) wCPF := strtran( wCPF, "-", "" ) if empty( wCPF ) Result := .t. else if len( wCPF ) < 11 Result := .f. else controle := "" num = 10 for j = 1 to 2 soma=0 for i = 1 to 9 soma += ( val( substr( wCPF, i, 1 ) ) * num ) num-- next if j = 2 soma += ( 2 * val( controle ) ) endif digito = soma - ( int( soma / 11 ) * 11 ) if digito == 0 .or. digito == 1 controle := controle + "0" else controle := controle + str( 11 - digito, 1 ) endif num := 11 next if controle <> substr( wCPF, 10, 2 ) Result := .f. endif endif if !Result if lMsg msginfo( "CPF Incorreto ou Digito Invalido...", "ATENCAO" ) endif endif endif return Result //------------------------------------------------------------------------------ static function ValidarCNPJ( cCNPJ, lMsg ) local Result := .t. local i local j local soma local controle local digito local num local wCNPJ := iif( valtype( cCNPJ ) == "U", "", cCNPJ ) DEFAULT lMsg := .t. wCNPJ := charrem( ".-/", wCNPJ ) if empty( wCNPJ ) Result := .t. else iF len( wCNPJ ) < 14 Result := .f. else controle := "" num := 5 for j = 1 to 2 soma := 0 for i = 1 to 12 soma += ( val( substr( wCNPJ, i, 1 ) ) * num ) num-- if num == 1 num := 9 endif next if j == 2 soma += ( 2 * val( controle ) ) endif digito := soma - ( int( soma / 11 ) * 11 ) if digito == 0 .or. digito == 1 controle := controle + "0" else controle := controle + str( 11 - digito, 1 ) endif num := 6 next if controle <> substr( wCNPJ,13,2) Result := .f. endif endif if !Result if lMsg msginfo( "CNPJ Incorreto ou Digito Invalido..." + " [" + controle + "]" ) endif endif endif return Result //------------------------------------------------------------------------------
  17. Mui grato a todos os colegas.... ... Consegui resolver de uma maneira simples e lusitana: Na montagem da tabela com os dados para impressão criei 6 campos (CORCOL01, CORCOL02, CORCOL03, CORCOL04, CORCOL05, CORCOL06), onde 1=cor azul ($FF0000), 2=cor vermelha ($0000FF) e 3=cor preta ($000000). Na aba "Código->Linguagem: PascalScript: begin if (<DBFFR3."CORCOL01"> = 1) then LinhaDetalhe072.Font.Color := $FF0000; if (<DBFFR3."CORCOL01"> = 2) then LinhaDetalhe072.Font.Color := $0000FF; if (<DBFFR3."CORCOL01"> = 3) then LinhaDetalhe072.Font.Color := $000000; if (<DBFFR3."CORCOL02"> = 3) then LinhaDetalhe082.Font.Color := $000000; if (<DBFFR3."CORCOL02"> = 2) then LinhaDetalhe082.Font.Color := $0000FF; if (<DBFFR3."CORCOL02"> = 1) then LinhaDetalhe082.Font.Color := $FF0000; if (<DBFFR3."CORCOL03"> = 1) then LinhaDetalhe092.Font.Color := $FF0000; if (<DBFFR3."CORCOL03"> = 2) then LinhaDetalhe092.Font.Color := $0000FF; if (<DBFFR3."CORCOL03"> = 3) then LinhaDetalhe092.Font.Color := $000000; if (<DBFFR3."CORCOL04"> = 1) then LinhaDetalhe102.Font.Color := $FF0000; if (<DBFFR3."CORCOL04"> = 2) then LinhaDetalhe102.Font.Color := $0000FF; if (<DBFFR3."CORCOL04"> = 3) then LinhaDetalhe102.Font.Color := $000000; if (<DBFFR3."CORCOL05"> = 1) then LinhaDetalhe112.Font.Color := $FF0000; if (<DBFFR3."CORCOL05"> = 2) then LinhaDetalhe112.Font.Color := $0000FF; if (<DBFFR3."CORCOL05"> = 3) then LinhaDetalhe112.Font.Color := $000000; if (<DBFFR3."CORCOL06"> = 1) then LinhaDetalhe122.Font.Color := $FF0000; if (<DBFFR3."CORCOL06"> = 2) then LinhaDetalhe122.Font.Color := $0000FF; if (<DBFFR3."CORCOL06"> = 3) then LinhaDetalhe122.Font.Color := $000000; end.
  18. Luiz, exatamente isto... Lembro-me que quando desenvolvia NFCe para o RJ me informaram basicamente o mesmo, que a FlexDocs não tinha intenções de atender a NFCe,,, ... Data: 31-08-2017 19:08:32 Nome: Equipe de Suporte Mensagem: Prezado Sr. Elcio Carlos, Não temos uma DLL para a NFC-e, o que acontece é que a DLL pode ser utilizada para consumir o WS da NFC-e no que for compatível com a NF-e, por conta e risco do usuário. ...
  19. Boa tarde Luiz !!! Fiquei um pouco assustado com o que reportastes sobre FlexDocs x MS... Terias como detalhar quais as dificuldades foram encontradas neste caso (MS) ?...
  20. toya

    HashCSRT

    ajustado: function NFe_CSRT() local Result := .t. local cIdCSRT := "" local cCSRT := "" local cChaveNFe := "" local cHashCSRT := "" local cBase64 := "" cIdCSRT := "01" cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" cChaveNFe := "41180678393592000146558900000006041028190697" cHashCSRT := hb_sha1( cCSRT + cChaveNFe ) msg_OK_titulo( 'cIdCSRT := "01"' + CRLF + 'cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO"' + CRLF + 'cChaveNFe := "41180678393592000146558900000006041028190697"' + CRLF + 'cHashCSRT := hb_sha1( cCSRT + cChaveNFe )', "Hash do Código de Segurança do Responsável Técnico (CSRT)" ) cBase64 := HB_Base64Encode( HexToSTr( cHashCSRT ), 20 ) msg_OK_titulo( "<idCSRT>01</idCSRT>" + CRLF + "<hashCSRT>" + cBase64 + "</hashCSRT>", "Hash do Código de Segurança do Responsável Técnico (CSRT)" ) return Result
  21. function NFe_CSRT() // #toya: 01/02/2019 - 15:23:23 - bnpx_gxn-2019 - Release .001.001 local Result := .t. local cIdCSRT := "" local cCSRT := "" local cChaveNFe := "" local cHashCSRT := "" // Identificador do CSRT utilizado para montar o hash do CSRT cIdCSRT := "01" // O CSRT será um código alfanumérico (de 16 a 36 bytes) de conhecimento apenas // da SEFAZ do emitente e da empresa responsável pelo sistema emissor de DFe. // O conceito é bastante similar ao código CSC da NFCe cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" // cChaveNFe := "41180678393592000146558900000006041028190697" // O hashCSRT é o resultado da função hash (SHA-1 – Base64) do CSRT fornecido pelo fisco mais a Chave de Acesso da NFe. cHashCSRT := hb_sha1( cCSRT + cChaveNFe ) return Result Atenção: dados acima ficticios...
  22. Novas Tabelas IBPT versão 18.2.c Vigência: 01/10/2018 31/01/2019 http://www.toyanet.com.br/pontoxml.php#pontoxml005
×
×
  • Create New...