wilker
Membros-
Total de ítens
24 -
Registro em
-
Última visita
Últimos Visitantes
1.174 visualizações
wilker's Achievements
-
Fiz o update e estou comparando as modificações, queria passar algumas dicas: TIPO DE RECOLHIMENTO Em: pnfsNFSeW.pas, está: sTipoRecolhimentoAssinaturaRPS := EnumeradoToStr( NFSe.Servico.Valores.IssRetido, ['N','S'], [stNormal, stRetencao]); Porém, eu mudei para o codigo abaixo: sTipoRecolhimentoAssinaturaRPS := EnumeradoToStr( NFSe.Servico.Valores.IssRetido, ['N','R'], [stNormal, stRetencao]); Motivo: embora a documentação diga que "07 - Tipo Recolhimento, se for “A” preenche com “N” senão “S”" , ao enviar para Belém ele não aceitou o valor S, só aceitou o valor R de retenção. ASSINATURA Onde tem: sAssinatura := LowerCase(sAssinatura); Eu usei: sAssinatura:=LowerCase(StrToHex(sAssinatura)); Pois no caso de Belém, segundo a documentação , a assinatura deve ser convertida para hexadecimal. Lembre-se que eu enviei para Belém, com um certificado válido, e eles identificaram corretamente o prestador. LEITOR XML, em ACBrNFSeWebServices.pas Onte tem: if (FProvedor = proEquiplano) then NFSeRetorno.LerXML_provedorEquiplano else NFSeRetorno.LerXml; Eu adicionei: else if (FProvedor = proIssDSF) then NFSeRetorno.LerXml_provedorIssDsf Motivo, como o retorno do WS do IssDsf é diferente, eu criei um novo leitor para interpretar o retorno. abraco
-
Blz Rafael, é isso mesmo. E como estão os testes ? Sucesso.
-
Pessoal, bom dia. Por favor, avaliem os fontes que eu enviei acima. Até onde eu fui: - consegui gerar e enviar para o webservice de producao , usando um certificado válido e em ambiente de producao - eu recebia mensagem de erro que o prestador não estava autorizado para emitir via lote. Onde parei: - meu cliente fez o pedido de alteração no seu credenciamento junto à prefeitura, para permitir o envio via lote. Infelizmente esta prefeitura demora entre 60 e 90 dias para fazer esta alteração. (OBS: Em Fortaleza fez em 3 dias). - Minha área fim é automação industrial, logo eu abandonei o desenvolvimento da NFSe, e fiz a integração com um sistema financeiro/contábil que faz a emissão da NFSe O que eu recomendo: - eu evolui muito, avaliem os fontes que eu anexei neste post. Ultimo retorno obtido: - <ns1:RetornoConsultaLote xmlns:ns1="http://localhost:8080/WsNFe2/lote" xmlns:tipos="http://localhost:8080/WsNFe2/tp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost:8080/WsNFe2/lote http://localhost:8080/WsNFe2/xsd/RetornoConsultaLote.xsd"> - <Cabecalho> <CodCidade>0427</CodCidade> <Sucesso>false</Sucesso> <NumeroLote>26124556</NumeroLote> <CPFCNPJRemetente>xxxxxxx</CPFCNPJRemetente> <RazaoSocialRemetente>xxxxxx</RazaoSocialRemetente> <DataEnvioLote>2014-04-15T11:15:00</DataEnvioLote> <QtdNotasProcessadas>0</QtdNotasProcessadas> <TempoProcessamento>0</TempoProcessamento> <ValorTotalServicos>1</ValorTotalServicos> <ValorTotalDeducoes>0</ValorTotalDeducoes> <Versao>1</Versao> </Cabecalho> <Alertas /> - <Erros> - <Erro> <Codigo>1433</Codigo> <Descricao>Contribuinte nao credenciado para o metodo de integracao com a NFSe utilizado. Contribuinte credenciado para emitir NFS-e pelo site, para possibilitar a entrega em Lote deve ser solicitado junto a prefeitura a alteracao no credenciamento para habilitar entrega em lote.</Descricao> - <ChaveRPS> <InscricaoPrestador>xxxx</InscricaoPrestador> <SerieRPS>NF</SerieRPS> <NumeroRPS>1</NumeroRPS> <DataEmissaoRPS>2014-04-15T12:00:00</DataEmissaoRPS> <RazaoSocialPrestador>xxxxxx</RazaoSocialPrestador> </ChaveRPS> </Erro> </Erros> <ListaNFSe /> </ns1:RetornoConsultaLote> abs a todos
-
Pessoal, bom dia. Estou refatorando o protocolo IssDsf para pode gerar NFSe para Belém. Consigo enviar a nota normalmente, mas estou com dúvidas na interpretação do retorno, vamos lá: * Pelo que tenho percebido, todos os demais provedores determinam o sucesso ou falha tratando a variávem PROTOCOLO no retorno. * Por exemplo, unit ACBrNFSeWebServices , método TNFSeEnviarLoteRPS.Executar , retorna VERDADEIRO somente se o PROTOCOLO for diferente de vazio. ( Result := (NFSeRetorno.InfRec.Protocolo<>''); ) Até ai , tudo bem. Meu problema é que o provedor IssDsf não retorna nenhum PROTOCOLO em seu retorno. Assim temos os seguintes impactos negativos: * TNFSeEnviarLoteRPS.Executar retorna negativo * Método TWebServices.Envia lança exception ( if Self.Enviar.Msg <> '' then raise Exception.Create(Self.Enviar.Msg)) * e com isso o processo de interpretacao é interrompido. PERGUNTAS: * Para fins de código, no caso do IssDsf, vcs se importam se eum tratar o Protocolo como sendo o NumeroLote ? Pois é este o dado retornado pelo IssDsf * Alguém conhecedor dos fontes, tem alguma sugestão de como lidar com esta diferenca de retorno ? abraco a todos Exemplo de arquivo de retorno: <ns1:RetornoEnvioLoteRPS xmlns:ns1="http://localhost:8080/WsNFe2/lote" xmlns:tipos="http://localhost:8080/WsNFe2/tp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost:8080/WsNFe2/lote http://localhost:8080/WsNFe2/xsd/RetornoEnvioLoteRPS.xsd "> <Cabecalho> <CodCidade>427</CodCidade> <Sucesso>true</Sucesso> <NumeroLote>26094673</NumeroLote> <CPFCNPJRemetente>04978805000165</CPFCNPJRemetente> <DataEnvioLote>2014-04-04T08:41:00.0Z</DataEnvioLote> <QtdNotasProcessadas>0</QtdNotasProcessadas> <TempoProcessamento>0</TempoProcessamento> <ValorTotalServicos>0</ValorTotalServicos> <ValorTotalDeducoes>0</ValorTotalDeducoes> <Versao>1</Versao> <Assincrono>S</Assincrono> </Cabecalho> <Alertas /> <Erros /> <ChavesNFSeRPS /> </ns1:RetornoEnvioLoteRPS>
-
Pessoal, bom dia. O componente ACBRNFSe possui uma implementação para ISSDSF,porém esta não funciona com Belém. Ao comparar as mensagens do ACBR com a DLL de Belém, percebi várias diferencas principalmente no envelopamento SOAP. Qual meu status atual: - Fiz muitas modificações, e estou conseguindo enviar uma Nota/Lote, porém não sei se a nota foi gerada com sucesso ou não. - Estou iniciando o desenvolvimento do método de consulta, mas com alguma dificuldade pois estou sem referência. - Referencia, digo, mensagens completas (com envelope SOAP) de XML válidos exemplo. Pois a parte da emissão eu fiz comparando com as mensagens geradas pelo Demo e DLL de Belém. Estou iniciando os outros métodos, quem desejar desenvolver em par, por favor me procura. atenciosamente
-
Bom dia Juliomar. Segue anexo. IMPORTANTE: - eu ainda não terminei o desenvolvimento, estou enviando as modificações pois gostaria de compartilhar com o projeto - no fonte existem comentários, códigos de debug e algumas modificações que talvez sejam removidas - mesmo assim, gostaria que desse uma olhada para validar o que eu fiz, quanto à estrutura geral das classes ACBr. abraço a todos Modificações.rar
-
Segue anexo. IMPORTANTE: - estou usando a revisão 6456, de 10/03, por Italo - amanha atualizo meu repositório com o oficial. ACBrNFSe.rar
-
Prezado Juliomar, obrigado pelo contato. SIM, eu fiz muitas modificações no IssDsf para que eu conseguisse fazer comunicação com o WS de Belém do Pará. Faço um resumo agora do que eu fiz, no post seguinte eu anexo os fontes. * pcnConversão.pas - adicionei função StrtoHex, para converter uma sequencia de caracteres à sua respectiva representação em Hexa. - usado na tag <assinatura> do RPS * pnfsNFSeW.pas - no XML deste provedor, os <Itens> são filhos da tag <Item> - tag <RPS> em maiusculo, exigencia do provedor - informação IdentificacaoRps não é usada na assinatura do RPS (manual Webservice.pdf, página 9 do pdf) - Na assinatura, TipoRecolhimento troca A por N (somente na assinatura do RPS) - NFSe.Tomador.IdentificacaoTomador.CpfCnpj é usado no cálculo da assinatura - Assinatura em letra minuscula, caracteres representados pelo seu Hexa - tag <Serie> trocada para <SerieRPS> - tag <DataEmissaoRPS> sem hora, apenas data - inclusao de algumas tags obrigatorias, mesmo quando vazias * ACBrProvedorISSDSF - varias mudancas no envelopamento SOAP - IMPORTANTE: coloquei vários StringReplace , temporários, apenas para validar o XML - o XML, enviado como campo string no Soap, envia < e > no lugar do < e > * ACBrNFSeWebServices - InternetSetOption deixou de ser chamado para este provedor, pois lançava uma exception - mudei o ContentType para text/xml , mas depois vou testar sem esta modificação - mudancas no namespace do XML * Arquivo ACBrNFSeUtil.pas: - método: AssinarMSXML , * Arquivos relacionados ao DANFE: - como não tenho o QR instalado, comentei para evitar erros de compilação. * IMPORTANTE: - Existem algumas modificações que talvez eu desfaça, fiz na intenção de fazer comunicar. Agora que está comunicando devo desfazer aos poucos - O envio é Assincrono, logo o fato de eu ter conseguido enviar um XML não significa dizer que ele vá ser de fato convertido em NFSe, meu próximo passo agora é testar o método de consulta. - Ao consultar a NFSe, é provável que eu encontre erros no RPS, que gerem novas modificações. espero ter contribuido para o projeto grande abraco a todos.
-
Pessoal, boa tarde. Fiz muitas modificações, e eu acredito ter vencido a 1a parte, enviei uma mensagem ao WS e tive um retorno, ou seja, venci a etapa da comunicação. Gostaria que algum administrador do ACBR me procurasse por email , pois gostaria de compartilhar o código que eu fiz nos componente. Situação atual: - comunicação: EnvioLoteRPS: comunicação WS efetuada com sucesso. - dados: trabalhando agora no conteúdo para que a NFSe seja de fato gerada atenciosamente Wilker
-
Prezado Pedro, obrigado pelo apoio. Voce, ou mais alguém, pode me ajudar DESENVOLVENDO ? Caso positivo, me mandem email ([email protected]) Em que ponto eu estou: - troquei todo o envelope SOAP, e já estou conseguindo alguma comunicação. - neste momento, estou trabalhando "contra" a validação do XSD, ou seja, envio um XML para a prefeitura mas o WS não aceita - neste exato momento, estou tentando consertar a tag ASSINATURA, do RPS. Como o componente está gerando: <Lote Id="lote:1"> <RPS Id="rps:1"> <Assinatura>K6o %U we"E TV</Assinatura> Só que, a ASSINATURA , uma sequencia de 20 caracteres, não deve ser enviada como uma STRING, é para ser enviada como uma sequencia de 20 caracteres em HEXADECIMAL, exemplo: <Assinatura>ddc88256d384180cbaceba676694208ea5750669</Assinatura> O pacote ABCR é muito completo, é muito provável que já existe alguma implementação que converta esta string de 20 caracteres para sua representação hexadecimal. Alguém do Forum mais experiente no pacotes ACBR, sabe me informar qual classe/método ? abraço a todos Wilker
-
No seu caso, está fazendo NFe, no meu é NFSe, componentes diferentes. De toda forma, eu acredito que nem a NFe nem a NFSe esteja pronta para o padrão atual de envelopamento e xml do ISSDsf. No caso de NFSe estou reprogramando o provedor nos fontes. Se vc tem uma DLL que está funcionando, então ÓTIMO, vc tem 2 opções de solução: - opção 1 - usar a DLL (no meu caso, preferi não seguir este caminho, preferi realmente reprogramar o componente AcbrNFSe) - opção 2 - reprogramar o componente (caminho que eu decidi seguir). Tá, mas , como reprogramar o componente ? Então vou te passar o passo a passo que eu estou seguindo - instalei uma ferramenta chamada Fiddler , conforme já comentei em links anteriores - usei o DEMO da prefeitura, onde a DLL consome o WS, e com isso capturei a mensagem de ida e de volta. - a partir dai, eu passei a reprogramar todo o componente utilizando a mensagem capturada como referencia. Esta é uma mensagem que eu capturei da DLL da prefeitura de Belém: <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <NS1:consultarSequencialRps xmlns:NS1="http://DefaultNamespace"> <mensagemXml xsi:type="xsd:string"> <?xml version="1.0" encoding="UTF-8"?> <ns1:ConsultaSeqRps xmlns:ns1="http://localhost:8080/WsNFe2/lote" xmlns:tipos="http://localhost:8080/WsNFe2/tp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost:8080/WsNFe2/lote http://localhost:8080/WsNFe2/xsd/ConsultaSeqRps.xsd"> <Cabecalho><CodCid>427</CodCid><IMPrestador>0317330</IMPrestador><CPFCNPJRemetente>28785966843</CPFCNPJRemetente><SeriePrestacao>99</SeriePrestacao><Versao>1</Versao></Cabecalho> </ns1:ConsultaSeqRps> </mensagemXml> </NS1:consultarSequencialRps> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Ao comparar com o gerado componente, percebi muitas diferencas: - as TAGs de envelopamento SOAP estavam diferentes - o nome do método no WS estava direrente - o conteudo da mensagem, que é o XML de comando, substituia < por < - e por ai vai. Sobre a NFSe para IssDsf de Belém: - eu já terminei o ajuste do envelopamento - o XML que eu estou gerando está quase identico ao do que capturei, estou fazendo pequenos ajustes para que o WS da prefeitura não dê mais erro de XSD. espero ter ajudado Wilker
-
Em que situação vc está ? Qual o erro ? Pq no IssDsf de Belém, eu comecei de um ponto que nem o envelope SOAP estava sendo aceito, depois não conseguia assinar. Estou num ponto onde eu envio o XML pelo SOAP, mas o WS da prefeitura não aceita, estou comparando tag a tag com o exemplo que eu obtive para tentar identificar no olho, o que estou enviando de errado. A imagem que eu postei acima tem uma mensagem válida e aceita pelo WS de BELÉM, que eu obtive atraves do DEMO da Prefeitura . É a partir deste XML exemplo que eu estou seguindo. espero ter ajudado Wilker
-
Segue anexo. atenciosamente 1-env-lot-c_anonimo.xml
-
Gostaria de compartilhar com a comunidade o método de desenvolvimento que segui: 1) Instalei o Fiddler Web Debugger 2) Baixei e rodei o DEMO da prefeitura de Belém, onde ele usa uma DLL (provida por esta prefeitura), sendo que esta DLL encapsula o uso do WS 3) Monitirei o uso do DEMO e com o Fiddler, capturei a comunicacação com o WS Deste ponto em diante, sempre que necessário, comparava a mensagem de IDA do demo, com a que eu estou gerando pelo componente ACBRNFSe. Com esta técnica, encontrei diversas diferenças, e às fui tratando no código. atenciosamente
-
Olá pessoal, bom dia. Fiz várias modificações no componente adequando ao formato IssDsf de Belém, estou na eminência de concluir. Monto o XML, assino, envelopo e envio ao WS, esbarrei no seguinte erro retornado pelo WS de Belém: "ERRO VALIDACAO XSD: (400)error: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ns1:ReqEnvioLoteRPS'. Linha : 1 Coluna: 314" Alguém tem alguma dica ? atenciosamente Em detalhes: <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:enviarResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://DefaultNamespace"> <enviarReturn xsi:type="xsd:string">ERRO VALIDACAO XSD: (400)error: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ns1:ReqEnvioLoteRPS'. Linha : 1 Coluna: 314</enviarReturn> </ns1:enviarResponse> </soapenv:Body> </soapenv:Envelope>