Clipper On Line • Ver Tópico - NFS-e PMSP

NFS-e PMSP

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

NFS-e PMSP

Mensagempor JoséQuintas » 25 Ago 2017 16:06

Eu fiz um teste com o meu código do jeito que ta, e funcionou no A3 tbm ! na máquina do financeiro


E o que teve de diferente? alguma coisa que mencionei?

Nota: Eu apenas fui organizando, e na organização algumas coisas chamaram a atenção e postei.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

NFS-e PMSP

Mensagempor JoséQuintas » 25 Ago 2017 16:17

está bem mais bonito o código assim !


Aí que está, não é questão de estar bonito.
É que está claro aonde estão as coisas, e fica melhor de trabalhar no fonte.
Considerar apenas porque é bonito de ver, a gente acaba achando que se trata de "frescura", e acabamos não fazendo.

Na prática, organizado fica bom de trabalhar, de enxergar as coisas, e de resolver problemas.
Estar bonito acaba sendo só uma consequência, não o ponto principal.

Ah é... e também porque aí só trata a parte do governo, não os detalhes de criação do XML.
Separar em partes ajuda, porque não mistura "assuntos".
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

NFS-e PMSP

Mensagempor JoséQuintas » 25 Ago 2017 16:26

Só aproveitando... no caso da SefazClass

METHOD MDFeStatusServico( cUF, cCertificado, cAmbiente ) CLASS SefazClass

   ::Setup( cUF, cCertificado, cAmbiente, WS_MDFE_STATUSSERVICO )

   ::cSoapVersion := "1.00"
   ::cXmlEnvio    := [<consStatServMDFe versao="] + ::cSoapVersion + [" xmlns="http://www.portalfiscal.inf.br/mdfe">]
   ::cXmlEnvio    +=    XmlTag( "tpAmb", ::cAmbiente )
   ::cXmlEnvio    +=    XmlTag( "cUF", ::UFCodigo( ::cUF ) )
   ::cXmlEnvio    +=    XmlTag( "xServ", "STATUS" )
   ::cXmlEnvio    += [</consStatServMDFe>]
   ::XmlSoapPost()

   RETURN ::cXmlRetorno


Nesse caso cria o XML e já faz a comunicação.
Todos os parâmetros "diferentes" acabam sendo definidos em ::Setup()
A única coisa que resta pra conferir é mesmo o XML de consulta status.

É como eu disse antes: é relativamente simples, mas é chato e com detalhes.

É entregar o XML num endereço e acionar uma ação (SOAP ACTION).
Mas tem vários endereços diferentes, o envelope pode ter algum detalhe diferente, e SEMPRE depende do XML.
Boa parte do projeto NFE, CTE e MDFE é só pra escolher endereço, SOAP Action e Serviço.
A coisa em si, é simples: criar um XML, entregar num endereço, e pegar a resposta.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

NFS-e PMSP

Mensagempor eduardomc00 » 28 Ago 2017 13:22

Zé boa tarde.

Quando digo bonito, quero dizer fácil, legível, que da gosto de ver.

Sobre precisar do EXE da assinatura, tem uns procedimentos antes da assinatura que no Harbour eu não consegui fazer. inclusive, na época postei aqui no fórum e ninguém consegui me ajudar.

Simplesmente troquei de máquina no financeiro e funcionou. pode ser alguma coisa no certificado que foi instalado como novo drive. sei la
eduardomc00
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 43
Data de registro: 07 Out 2014 18:29
Cidade/Estado: São Paulo
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

NFS-e PMSP

Mensagempor Toledo » 17 Abr 2018 10:22


Este link está quebrado... teria como compartilhar um novo link para o arquivo?
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

NFS-e PMSP

Mensagempor JoséQuintas » 18 Abr 2018 10:03

Como era parcial, e ficou parado, acabei excluindo.
Mas ainda estava aqui na máquina.

NFSEClass.prg
(6.12 KiB) Baixado 100 vezes


Talvez interessante eu deixar na pasta de rascunhos (drafts) da Sefazclass, assim como já tem esocial, e outros mais.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

NFS-e PMSP

Mensagempor JoséQuintas » 18 Abr 2018 10:19

Pronto.
Na dúvida sobre o .XXX, porque nem lembrava mais disso.
Provavelmente é depois das alterações do post.

https://github.com/JoseQuintas/sefazclass/blob/master/drafts/NFSEClass.prg
https://github.com/JoseQuintas/sefazclass/blob/master/drafts/nfsesp.xxx

Emito as minhas via TXT, sem certificado, opção disponível pra empresas do simples.
Não sei se fica disponível pra quem usa certificado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

NFS-e PMSP

Mensagempor luiz augusto » 15 Ago 2019 22:10

Boa Noite,

Baixei o exe que o Eduardomc00 disponibilizou pra assinar a TAG assinatura da NFSe paulistana, consegui montar o xml, criar a assinatura da TAG e assinar o o arquivo, mas ao enviar recebo a seguinte mensagem de erro:

<Erro xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS incorreta - String verificada (56663072A 00000003803720190815TNN00000000000010000000000000000008494300000000000000)
Já fiz e refiz varias vezes e dá sempre o mesmo erro. Algum colega que tenha finalizado a rotina de nota paulistana poderia dar alguma dica do que está faltando pra resolver o problema?

Agradeço,
Luiz Augusto
luiz augusto
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 9
Data de registro: 22 Jul 2019 11:37
Cidade/Estado: Penha/SC
Curtiu: 0 vez
Mens.Curtidas: 0 vez

NFS-e PMSP

Mensagempor JoséQuintas » 15 Ago 2019 22:28

Já pesquisou por caracteres especiais?
Eles dão diferença de codepage e acabam causando diferença na assinatura.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

NFS-e PMSP

Mensagempor Nascimento » 15 Ago 2019 23:54

acompanhando ... :)Pos
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

NFS-e PMSP

Mensagempor luiz augusto » 16 Ago 2019 23:13

Boa noite Quintas,

Obrigado por responder,

O arquivo StringParaAssinar.txt que eu crio com os dados necessarios para criar a assinatura, tem duas linhas, a primeira é o Serial do Certificado e a segunda, a string com as informações do rps, conforme abaixo:

A tag assinatura é composta pelo seguinte conteúdo:

************************COLOCAR AQUI A CHAVE PARA COMPARAR PARA VER SE ESTÁ CERTO*********************

+-------+----+-----------+-------++++--------------+--------------+----++-------------++-------------+
123456781234512345678901212345678111123456789012345123456789012345123451123456789012341123456789012341
+-------+----+-----------+-------++++--------------+--------------+----++-------------++-------------+
| | | | |||| | | || || |
A B C D EFGH I J KL MN O
+------------------------------------------+-------------+
| A-Inscrição Municipal do Prestador | 8 dígitos |
| B-Série do RPS | 5 diditos |
| C-Número do RPS | 12 dígitos |
| D-Data de Emissão do RPS | 8 dígitos |
| E-Tipo de Tributação do RPS | 1 dígito |
| F-Status do RPS | 1 dígito |
| G-ISS Retido | 1 dígito |
| H-Valor dos Serviços | 15 dígitos |
| I-Valor das deduções | 15 dígitos |
| J-Código do Serviço Prestado | 5 dígitos |
| K-Indicador de CPF/CNPJ do tomador | 1 dígito |
| L-CPF/CNPJ do tomador | 14 dígitos |
| M-Indicador de CPF/CNPJ do Intermediário | 1 dígito |
| N-CPF/CNPJ do Intermediário | 14 dígitos |
| O-ISS Retido Intermediário | 1 dígito |
+------------------------------------------+-------------+
| TOTAL DE DÍGITOS | 102 dígitos |
+------------------------------------------+-------------+

o que eu reparei, é que tanto na primeira linha, como na segunda, tem o CR + LF, mas se eu tirar isso da primeira linha, o arquivo passa a ter somente uma linha e dai o executavel não vai ler corretamente o arquivo, pois o mesmo só vai ter uma linha após retirar o CR + LF. Na segunda linha, não dá problema se retirar os caracteres.

Após assinar, dai retiro estes caracteres da string assinada, conforme abaixo:

cRET := MEMOREAD( "StringAssinada.txt" )
cRET := STRTRAN( cRET, CHR(13), "" )
cRET := STRTRAN( cRET, CHR(10), "" )

O fato é que ainda não consegui resolver está pendencia, agradeço quem puder ajudar,

Luiz
luiz augusto
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 9
Data de registro: 22 Jul 2019 11:37
Cidade/Estado: Penha/SC
Curtiu: 0 vez
Mens.Curtidas: 0 vez

NFS-e PMSP

Mensagempor JoséQuintas » 17 Ago 2019 00:48

Agora não entendi mais nada.
XML é tudo numa linha só.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

NFS-e PMSP

Mensagempor luiz augusto » 17 Ago 2019 10:48

Bom dia,

hehe, eu explico:
está é a string pra assinar

7B4A1C1D8CD520A7394E5446394B44F7
56663072A 00000003803720190815TNN00000000000010000000000000000084942300000000000000
que é gravada em um arquivo txt que o exe assinarps vai ler gravado com este comando

nHandle := FCREATE( "StringParaAssinar.txt" )
FWRITE( nHandle, cSerialCert + CHR(13) + CHR(10) + cCHA )
FCLOSE( nHandle )

ok?

Ao assinar, o assinarps.exe cria um arquivo chamado StringAssinada.txt com este conteudo:

Xbv4k4G75Zc4+1zemN54pWal6ky2Zm+xw1WJ8gR9FKngTNAwAM2CDsdkvB/7KmiIaRtTJDzVASAH3UcMK7xWqAVruUjBj9d+EWnZIzloePkO7gUYpt+KuG9InTuq6Uu/ylM+t95clGH+oggpYEkeTtA6nL5an7tIW4o+rsnefZpHAaA56/ofqmQC3Ov4ZL2XVe0IwOMViQjObyFGKmKlIjkxDVMMWeqgFm2cfQ786ck7/QD4E2tprufd1Pta17wbDIYAqL1igVVOUQ5392VVHYrKdpGl7EWRIRa9cDIZPVhHpe9dxNzwQtMysh0HfuR3i8/1WaPfX9AElEEQE+cJkw==

que vou ler com este comando

cRET := MEMOREAD( "StringAssinada.txt" )
cRET := STRTRAN( cRET, CHR(13), "" )
cRET := STRTRAN( cRET, CHR(10), "" )

incluindo na TAG assinatura.

Ao enviar para webservice, recebo este retorno:

<Erro xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS incorreta - String verificada (56663072A 00000003803720190815TNN00000000000010000000000000000008494300000000000000)</Descricao><ChaveRPS><InscricaoPrestador>56663072</InscricaoPrestador><SerieRPS>A</SerieRPS><NumeroRPS>38037</NumeroRPS></ChaveRPS></Erro>

É isso.

Luiz
luiz augusto
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 9
Data de registro: 22 Jul 2019 11:37
Cidade/Estado: Penha/SC
Curtiu: 0 vez
Mens.Curtidas: 0 vez

NFS-e PMSP

Mensagempor malcarli » 31 Ago 2022 08:13

Bom dia, preciso implementar nfse para sp. A classe do Mestre Quintas, falta a assinatura e portanto infelizmente não dá para usar e não sei implementar a mesma. Alguém teria os arquivos mais atualizados da versão do colega Eduardo e que esteja funcionando para compartilhar para todos nós?

Obrigado

Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: malcarli@life.com.br
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 181
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 81 vezes
Mens.Curtidas: 4 vezes

NFS-e PMSP

Mensagempor JoséQuintas » 31 Ago 2022 11:37

Eu dei uma idéia de como assinar usando a sefazclass.
Primeiro é assinar a nota, e depois o lote.
Na assinatura da nota, é direto, normal.

Dentro de ze_sefazassina:
STATIC FUNCTION AssinaAjustaInformacao( cTxtXml, cXmlTagInicial, cXmlTagFinal, cRetorno, lComURI )

   LOCAL aDelimitadores, nPos, nPosIni, nPosFim, cURI

   aDelimitadores := { ;
      { "<enviMDFe",              "</MDFe></enviMDFe>" }, ;
      { "<eventoMDFe",            "</eventoMDFe>" }, ;
      { "<eventoCTe",             "</eventoCTe>" }, ;
      { "<infMDFe",               "</MDFe>" }, ;
      { "<infCte",                "</CTe>" }, ;
      { "<infNFe",                "</NFe>" }, ;
      { "<infDPEC",               "</envDPEC>" }, ;
      { "<infInut",               "<inutNFe>" }, ;
      { "<infCanc",               "</cancNFe>" }, ;
      { "<infInut",               "</inutNFe>" }, ;
      { "<infInut",               "</inutCTe>" }, ;
      { "<infEvento",             "</evento>" }, ;
      { "<evtInfoEmpregador",     "</eSocial>" }, ;
      { "<PedidoEnvioLoteRPS",    "</RPS>" }, ;
      { "<PedidoEnvioRPS",        "</RPS>" }, ;
      { "<infPedidoCancelamento", "</Pedido>" }, ;               // NFSE ABRASF Cancelamento
      { "<LoteRps",               "</EnviarLoteRpsEnvio>" }, ;   // NFSE ABRASF Lote
      { "<infRps",                "</Rps>" } }                   // NFSE ABRASF RPS


Acima é referência do que deve existir no XML.

FUNCTION CapicomAssinaXml( cTxtXml, cCertCN, lRemoveAnterior, cPassword, lComURI )


Não tem muito o que mexer, talvez confunda quem não está acostumado com XML.
cTxtXml -> o arquivo XML
cCertCN -> o nome do certificado
lRemoveAnterior - Se remove assinatura(s) anterior(es)
cPassword -> senha do certificado
lComURI -> se o bloco de assinatura vai indicar a URI, que é o nome do bloco a ser assinado

Na assinatura normal, o lRemoveAnterior é verdadeiro, no caso da prefeitura é a nota individual
Na assinatura de lote, o lRemoveAnterior é falso, pra não remover a assinatura da(s) nota(s)
Acho que no lote esse lComURI é falso, talvez possa confirmar em alguma nota exemplo.

STATIC FUNCTION AssinaBlocoAssinatura( cURI, lComURI )

   LOCAL cSignatureNode := ""

   IF lComURI
      cURI := "#" + cURI
   ENDIF


A diferença entre com e sem URI é a acima, dá pra confirmar olhando um lote assinado, ou, na tentativa/erro, ao assinar o lote.

olhando novamente a função:
FUNCTION CapicomAssinaXml( cTxtXml, cCertCN, lRemoveAnterior, cPassword, lComURI )


Não lembro mais, mas numa primeira tentativa, a mais provável

cXmlNota := "xxxxxx"
cXmlAssinado := ze_assinaXml( cXmlNota, "nomecertificado", .T.,"senha se precisar" )
cXmlLote := "xxxx" + cXmlAssinado + "xxxx"
cXmlTransmite := ze_AssinaXml( cXmlNota, "nomecertificado", .F.,  "senha se precisar", .F. )


Como deve estar olhando o manual, pra gerar o XML, deve ter o esquema do lote no manual pra ajustar a linha que cria cXmlLote.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro