Ir para conteúdo
  • Cadastre-se

Roberto Rocha_11114

Membros
  • Total de ítens

    18
  • Registro em

  • Última visita

Contact Methods

  • Website URL
    http://www.rdr.inf.br

Últimos Visitantes

991 visualizações

Roberto Rocha_11114's Achievements

Apprentice

Apprentice (3/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

3

Reputação

  1. OI Mauro. Eu implementei essa solução e vi que se completar com espaços não funciona. E eu achei que completando com pontos fica feio também (e o problema todo é justamente a estética da NF). Daí que abandonei essa solução. O Ideal era que a prefeitura do RJ aceitasse um caracter para simular o #13#10 no XML. Mas parece não haver.
  2. Não. Não funciona. Depois que eu coloquei a mensagem anterior (agora cedo) eu fui gerar uma NFse RJ (para exemplificar para o Mauro) eu percebi que eu havia me atrapalhado no teste. Enviar | ou || não funciona. Voltei com os fontes como estavam. Precisa enviar #13#10 no XML , na parte descriminação e precisa tirar os #13#10 da assinatura. É uma quebra de padrão do XML, mas é assim que a prefeitura do RJ funciona!
  3. OI Mauro Bom dia. Eu descobri que precisa colocar 2x o |. Ou seja, | não funciona. || funciona. Não sei pq.
  4. Oi. Pois é. Fui dar uma olhada então no site da prefeitura com mais detalhes e olha o que achei no manual em https://notacarioca.rio.gov.br/files/manuais/NFSe_layout_rps.pdf: Descritivo dos serviços. Texto contínuo. O conjunto de caracteres correspondentes ao código ASC 13 e ASC 10 (Chr(13) + Chr(10)) deverá ser substituído pelo caracter | (pipe ou barra vertical. ASC 124). Ou seja: Basta mandar || no lugar do #13#10 que a prefeitura troca. Já testei inclusive. Por mim, tópico resolvido (e vou voltar os fontes como estavam) Em tempo: Obrigado pelo esforço de me ajudarem.
  5. OI . "O problema pode estar na verdade no lado da Prefeitura... talvez ela indique algum carácter que possa ser exibido como quebra de linha na exibição da descrição do seu site." O site da prefeitura do RJ diz que para quebrar linha tem que enviar o #13#10, nenhum outro caracter faz isso. O problema é que a rotina de remover as quebras de linha da assinatura (que tem que ser feito) também as remove de todo o XML que é gerado. A mudança que fiz no fonte (que mandei em anexo no início) faz exatamente o serviço de apenas tirar as quebras de linha da assinatura, deixando as que estejam no conteúdo intactas. Não entendi porque - pois estou bem ocupado implementando a NF4.0 e sem tempo para pesquisar (prometo ajudar mais tarde) - mas com essa alteração Danfes não foram aceitas (De outra forma, ao mudar a rotina resolveu para a prefeitura do RJ, mas estragou para a SEFAZ) porque na geração do xml da Sefaz em algum lugar tem #13#10. Minha conclusão: Se acertarmos a rotina para tirar o #13#10 somente da assinatura resolve a NFCarioca, mas estraga a Danfe. Precisaríamos entender qual processo na geração da Danfe está incluindo quebras de linha no XML gerado. Se resolvermos esse último problema e acertarmos para a retirada de quebras de linha afetar apenas a assinatura, ficamos bem.
  6. OK. Até aí foi. O problema mesmo vai ser na parte da assinatura. Pois é uma rotina que não se conecta diretamente com a geração do XML. Eu fiz uma variável booleana EMITINDONFSRIODEJANEIRO e se for true, não exclui os #13#10 do XML. Mas ficou feio do ponto de vista de qualidade de fonte. Tem que setar TRUE nela ANTES DE EMITIR a NF e false Depois. Fica ruim.
  7. OI Italo. Boa tarde. Se não me engano, sua primeira aproximação não funcionará. O texto (depois do StringReplace) conterá #13#10 (6 caracteres) e não os 2 caracteres ascii nº 13 e nº 10. #13#10 só viram quebra de linha se constarem no código fonte do Delphi. A rotina que lê os caracteres do INI e salva na variável FQuebradeLinha vai salvar nela uma String com 6 caracteres Essa parte no entanto é fácil de resolver: basta criar a regra que no ini, se QuebradeLinha=ENTER então no final da rotina que le o Ini , acrescenta-se o código: If QuebradeLinha='ENTER' Then QuebradeLinha=#13#10 (sem aspas, pois aí o Delphi converte) O problema começa na rotina wCampoNFSe que chama uma outra dentro dela wcampo, que chama FiltrarTextoXML que vai retirar as quebras de linha Ou seja, mesmo que a sua aproximação funcionasse, quando o texto passa por wCampoNFSe a quebra de linha já é retirada.
  8. OI Ítalo. A Nota fiscal de serviços da prefeitura do RJ , obtida no site após ter sido gerada, mostra a discriminação do serviços com quebras de linha se elas forem incluidas no campo Descrição. A intensão de ter no XML os caracteres #13#10 é para que ao abrir o XML através de um navegador o conteúdo das tags: Discriminacao e Descricao sejam apresentados com quebra de linha? NAO! A intenção é para que ao enviar o XML para a prefeitura do RJ, ela emita a NF com estas quebras de linha na descrição e então, na impressão da NF , a descrição fique mais bem formatada. Ou se não fizer isso na impressão do DANFSE não sai com a quebra de linha? Eu não uso a impressão do sistema, eu uso a impressão do site da prefeitura. Imagine que eu queira colocar na NF um texto descritivo do serviço com mais de uma linha para descreve-lo, Por exemplo: "Reparo do micro computador Ajustes no acesso a internet Reconfiguração da impressora" Mas é tudo um único serviço com um único valor (Logo, não é o caso de usar o Servico.ItemServico.Add três vezes) Do jeito que o Projeto acbr está vai ficar uma única linha: "Reparo do micro computador Ajustes no acesso a internet Reconfiguração da impressora" Em resumo: Se na descrição do serviços eu mandar (e o ACBR não retirar esses caracteres) "SERVICO TAL"#13#10"OUTRO SERVICO TAL" na NF da prefeitura sairá em duas linhas. Se retirar , sai tudo junto. Repito, apenas questão estética Veja uma nota fiscal que ficou sem o #13#10 ( ANTES DEU ADAPTAR O FONTE) : https://notacarioca.rio.gov.br/contribuinte/notaprint.aspx?ccm=10194954&nf=000000338&cod=IFSGBI9L e outra com ( DEPOIS DEU ADAPTAR O FONTE) : https://notacarioca.rio.gov.br/contribuinte/notaprint.aspx?ccm=10194954&nf=000000342&cod=D26L4EGK nas duas eu mando na discriminação o conteudo com #13#10#13#10 logo antes do texto "Valor Aproximado dos serviços" Abs
  9. Olá Italo Bom dia. Estou respondendo com atraso de dois anos. Me desculpe. Mas naquele momento eu estava com o Trunk desatualizado e não queria atualizar e me ver forçado a refazer as alterações que eram necessárias todas de novo. Daí que não lhe respondi. Agora atualizei o Trunk , refiz os ajustes que preciso fazer para que a NF do Rio de Janeiro fique com quebras de linha (mais estético, simplesmente isso) e vou indicar o que tenho tido que fazer para ter esse recurso. Em pnfsNFSeW_ABRASFv1; // Inclui essas 4 linha abaixo em procedure TNFSeW_ABRASFv1.GerarServicoValores; (para que os #13#10 não sejam excluídos em WCAmpoNFSe if FProvedor in [proRJ] Then Begin Gerador.wCampoNFSe(tcStr, '#32', 'Discriminacao', 01, 2000, 1, StringReplace( FNFSe.Servico.Discriminacao, #13#10,'||', [rfReplaceAll, rfIgnoreCase] ), DSC_DISCR); Gerador.ArquivoFormatoXML := StringReplace(Gerador.ArquivoFormatoXML,'||',#13#10,[rfReplaceAll, rfIgnoreCase] ); End Else ///////////////////////////////////////////////////////////////////// Gerador.wCampoNFSe(tcStr, '#32', 'Discriminacao', 01, 2000, 1,StringReplace(FNFSe.Servico.Discriminacao, ';', FQuebradeLinha, [rfReplaceAll, rfIgnoreCase] ), DSC_DISCR); // Essa linha é a original Depois // Inclui essas 4 linha abaixo em procedure TNFSeW_ABRASFv1.GerarListaServicos; (para que os #13#10 não sejam excluídos em WCAmpoNFSe if FProvedor in [proRJ] Then Begin Gerador.wCampoNFSe(tcStr, '#32', 'Discriminacao', 01, 2000, 1, StringReplace( NFSe.Servico.ItemServico.Discriminacao, #13#10,'||', [rfReplaceAll, rfIgnoreCase] ), DSC_DISCR); Gerador.ArquivoFormatoXML := StringReplace(Gerador.ArquivoFormatoXML,'||',#13#10,[rfReplaceAll, rfIgnoreCase] ); End Else ///////////////////////////////////////////////////////////////////// Gerador.wCampoNFSe(tcStr, '#32', 'Discriminacao', 01, 2000, 1, StringReplace( NFSe.Servico.ItemServico.Discriminacao, ';', FQuebradeLinha, [rfReplaceAll, rfIgnoreCase] ), DSC_DISCR); Em ACBrDFeSSL; function TDFeSSLXmlSignClass.AjustarXMLAssinado(const ConteudoXML: String; X509DER: String): String; var XmlAss: String; PosSig, PosIni, PosFim: Integer; function RemoveEspacos( const AXML, TagIni, TagFim : String): String; begin Result := ''; PosIni := PosLast(TagIni, AXML); if PosIni > 0 then begin PosFim := PosEx(TagFim, AXML, PosIni + 1); if PosFim > 0 then Result := copy(AXML, 1, PosIni - 1) + StringReplace(copy(AXML, PosIni, PosFim-PosIni), ' ', '', [rfReplaceAll])+ copy(AXML, PosFim, Length(AXML)); // Inclui essas duas linhas para excluir as quebras de linha da assinatura ///////////////////// Result := copy(AXML, 1, PosIni - 1) +StringReplace(copy(AXML, PosIni, PosFim-PosIni), #13, '', [rfReplaceAll])+copy(AXML, PosFim, Length(AXML)); Result := copy(AXML, 1, PosIni - 1) +StringReplace(copy(AXML, PosIni, PosFim-PosIni), #10, '', [rfReplaceAll])+copy(AXML, PosFim, Length(AXML)); ////////////////////////////////////////////////////////////////// end; E tive que cancelar a remoção de quebras de linha que vinha por padrão, (no original elas não estão como comentário) // Removendo quebras de linha // // XmlAss := StringReplace(XmlAss, #10, '', [rfReplaceAll]); // XmlAss := StringReplace(XmlAss, #13, '', [rfReplaceAll]); Não sei que efeitos colaterais essa alteração acima gera, mas para mim, que só gero NF no Rio de Janeiro, não vi nenhum efeito colateral indesejado. Depois disso, quando preencho os dados da NF para emissão, coloco #13#10 dentro do campo Servico.Discriminacao e no campo Servico.ItemServico.Descricao e eles saem na nota fiscal com quebras de linha como eu queria. ACBrDFeSSL.pas pnfsNFSeW_ABRASFv1.pas
  10. Oi Bom dia. Então.... Como a RPS é campo obrigatório, apesar de eu não emitir nenhuma RPS nos softwares nos meus clientes, internamente o que faço é: No cadastro de NOTAFISCAL tem um campo RSP que é inteiro e acrescenta 1 (em relação ao último) sempre que uma nova NF será emitida e envio esse número como se a NF tivesse tido antes uma RPS. Até aí tudo certo. O que fica estranho é que na NF saí a informação que "esta NF substitui a RPS xxxx" que o cliente nunca recebeu. E se ele perguntar ? Enfim, até agora ninguém se importou com isso. Abs
  11. Desde que uso o ACBR tenho um incômodo puramente estético que é de poder gerar NFSe (Rio de Janeiro) com quebras de linha na descrição dos serviços. O problema ocorre porque para o RIo de Janeiro, a quebra de linha deve ser enviada mesmo com #13#10 e não com qualquer outra sequencia de caracteres que simule a quebra de linha Dei uma olhada nos fontes do ACBR, e estou sugerindo uma mudança para que a quebra de linha possa ser implementada no ACBR. Comigo aqui testou e deu certo. 1º) Em pnfsNFSeW_ABRASFv2 onde tem Gerador.wCampoNFSe(tcStr, '#32', 'Discriminacao', 01, 2000, 1, StringReplace( NFSe.Servico.ItemServico.Discriminacao, ';', FQuebradeLinha, [rfReplaceAll, rfIgnoreCase] ), DSC_DISCR); substituir por if FProvedor=proRJ Then Gerador.wCampoNFSe(tcStr, '#32', 'Discriminacao', 01, 2000, 1, StringReplace( NFSe.Servico.ItemServico.Discriminacao, ';', #13#10, [rfReplaceAll, rfIgnoreCase] ), DSC_DISCR) Else Gerador.wCampoNFSe(tcStr, '#32', 'Discriminacao', 01, 2000, 1, StringReplace( NFSe.Servico.ItemServico.Discriminacao, ';', FQuebradeLinha, [rfReplaceAll, rfIgnoreCase] ), DSC_DISCR) 2º) Em ACBrDFeSSL Tirar as linhas // Removendo quebras de linha // XmlAss := StringReplace(XmlAss, #10, '', [rfReplaceAll]); XmlAss := StringReplace(XmlAss, #13, '', [rfReplaceAll]); 3º) Em ACBrDFeSSL Logo depois de if PosSig > 0 then begin Acrescentar XmlAss := copy(XmlAss, 1, PosSig - 1) + StringReplace(copy(XmlAss, PosSig, length(XmlAss)),#13, '', [rfReplaceAll]); XmlAss := copy(XmlAss, 1, PosSig - 1) + StringReplace(copy(XmlAss, PosSig, length(XmlAss)),#10, '', [rfReplaceAll]); Assim, o comando de tirar #13 #10 fica restrito somente a tirar estes caracteres da assinatura e não de todo o XML gerado. Abs
  12. Olá. Uso o ACBR com sucesso para emissão de NF´s junto à prefeitura do Rio de Janeiro. Obrigado à equipe por esta ferramenta Minha dúvida é a seguinte: O RPS é um documento emitido para o cliente quando o fornecedor de serviços vai deixar para emitir a NFSe em momento posterior ao contato com o cliente. Por exemplo, na saída dos estacionamentos geralmente recebemos RPS e depois, via email a NF emitida de fato. Tenho clientes que emitem para os seus clientes a NFSe na hora. Não precisando emitir um RPS para depois emitir a NFSe. Porém, quando preencho o XML, parece que não posso deixar em branco os campos IdentificacaoRps.Numero , IdentificacaoRps.Serie e IdentificacaoRps.Tipo . Daí que para gerar as NFSe sou obrigado a gerar uma RPS ( no meu sistema - fictícia porque o cliente nem a recebe) para depois gerar a NFSe informando esta RPS Mas na NFSe sai dizendo "Nota fiscal Substitui a RPS nnnnn", o que leva o cliente a perguntar que RPS é essa que ele nem recebeu. Assim a pergunta é: Tem como emitir a NFSe eletronicamente sem informar uma RPS ?
  13. OI Italo. Então, foi o que eu pensei. Até alguma versão anterior funcionava. Parou de funcionar recentemente. Deve ter sido quando este DigestValue foi acrescentado..... (Se ele já existia ha muito, ou não era conferido pela Prefeitura do Rio de Janeiro, ou não sei porque, mas funcionava) Enfim, mas ainda preciso que o texto da descrição siga para a prefeitura do Rio de Janeiro com #13#10 pois é o caracter que eles aceitam para quebra de linha. As vezes meus clientes geram NF's com descrição de diversos serviços e querem que cada serviço apareça numa linha separada e não um seguido do outro, separado por ';' ou qualquer outro caracter. Tentei usar #9 para ver se dava tabulação e não dá. Tentei colocar 20 espaços, e eles somem. Já tentei alterar os fontes de diversas formas e não consegui sucesso. Dá para colocar esta questão na lista de coisas a resolver ? Obrigado, Abs Ps. O erro não é 311, 311 era o número do lote.....
  14. Olá italo. Já estou conseguindo emitir a NF para o Rio de Janeiro sem problemas. Obrigado No entanto prossegue a questão da quebra de linha. Segundo vi na internet, para ter quebra de linha na NF Carioca, a descrição tem que conter #13#10, que é tirado em ACBrDFeCapicom , TDFeCapicom.Assinar(. Então minhas NF´s emitidas estão saindo sem quebra de linha. Antes no meu fonte e fazia assim: Descricao := Strtran(TRPSDescricaoServicos.AsString,#13#10,'|||||'); (trocava #13#10 por 5 |) Depois em ACBrDFeCapicom , TDFeCapicom.Assinar(. eu trocava : Result := XmlAss; finally CoUninitialize; Que está no final por XmlAss := StringReplace( XmlAss, '|||||', #13#10, [rfReplaceAll] ); //ACRESCENTAVA ESTA LINHA Result := XmlAss; finally CoUninitialize; e funcionava. Mas agora, com a atualização do trunk que fiz ontem, parou de funcionar, dando erro 311 na assinatura. Teria como ver isso ? Abraços Obrigado.
  15. E quando ao retorno do lote, quando o sistema envia o arquivo solicitando o retorno, dá erro como se a mensagem estivesse vazia. Seguem os arquivos. 37327515-con-lot-soap.xml 37327515-lista-nfse-soap.xml
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.