-
Total de ítens
58 -
Registro em
-
Última visita
Últimos Visitantes
1.419 visualizações
Francis Silva's Achievements
-
[ACBR-9498] DANFSe 2.0 - FastReport - Grupo IBS/CBS (NT 008/2026)
Francis Silva replied to Francis Silva's tópico in ACBrNFSe
Olá, bom dia. Vou ficar com o meu FR3 mesmo, que já está 100% ajustado e em produção. Quanto a ter sido modificado e estar totalmente diferente do repositório, com certeza está, quando atualizei o meu repositório no dia 21/06, na época em que postei esse ticket, o fr3 estava quase todo diferente do layout oficial da NT 008, então tive que arrumar praticamente todo, ajustar texto dos labels, incluir seções inexistentes, excluir campos que não faziam mais parte do DANFSe, e por aí vai. Por isso virei a madrugada realizando esses ajustes para disponibilizar o mais rápido possível para vocês analisarem, antes de atualizarem o repositório novamente. O que ficou faltando na época, foi apenas as informações do IBS/CBS que não existiam ainda nos datasets do ACBr, mas até isso eu implementei 2 dias depois, nem cheguei a divulgar aqui por falta de tempo. Hoje, só o que preciso, é da versão oficial do ACBr dessas informações de IBS/CBS, para que eu possa validar as minhas porque, como mencionei anteriormente, não tenho muito conhecimento fiscal nessa área, então eu tratei apenas das informações relacionadas a nossa atividade, mas com certeza devem ter outras situações que devem ser levadas em conta, mas na época o ACBr estava zerado dessas informações (pelo menos do que diz respeito ao FastReport). Quanto ao uso do FastScript dentro do FastReport, o FastScript é nativo do FastReport desde o seu lançamento, e totalmente compatível com todas as versões a partir da 3.0. Tenho um gerador de relatórios que criei a mais de 15 anos atrás, em FastReport, onde crio relatórios nele que rodam desde o Delphi 7 até o Delphi 12 que é a última versão que utilizei (estou tentando abandonar o Delphi). O único que não testei foi o FastReport para Lazarus, por ser muito inicial e difícil de conseguir, mas ninguém que conheço utiliza o FastReport no Lazarus, por não ser uma ferramenta gratuita, usam mais o Fortes Report. Então não vejo problema algum em simplificar algumas coisas através do FastScript. Obrigado. Francis Lay L. Silva. -
Isso só funciona para você, porque você está setando a mesma quebra de linha padrão do provedor (\n). Então na verdade o que está acontecendo é que, você seta a quebra de linha para "\n", e quando o provedor vai ser utilizado, ele é destruído e recriado novamente, com a quebra de linha padrão dele (\n), por isso você não percebe o problema. Agora tente informar uma quebra de linha diferente de \n, para ver o que acontece. Sempre vai acontecer isso com o provedor, quando ele for utilizado:
-
[ACBR-9498] DANFSe 2.0 - FastReport - Grupo IBS/CBS (NT 008/2026)
um tópico no fórum postou Francis Silva ACBrNFSe
Olá. Realizei diversos ajustes no modelo oficial da DANFSe 2.0, conforme a NT 008/2026. Até a revisão 46785 do ACBr, muita coisa ainda estava faltando. Eu implementei: 100% do leiaute da DANFSe 2.0, no FastReport (com estilos padronizados para cabeçalhos de grupos, cabeçalhos de campos, valores de campos, etc) Os grupos e campos da DANFSe estão organizados exatamente igual ao modelo da DANFSe, no Anexo I, da documentação da NT 008/2026 Versão 1.0 (com exceção do canhoto, que coloquei na parte de cima, pois não é possível alinhá-lo na parte de baixo da tela, dentro do FastReport) Implementei, no ACBrNFSeXDANFSeFR.pas, o ClientDataSet (cdsDestinatario) com os dados do destinatário da operação, que não existia. Implementei também algumas regras de controle de tamanho de alguns campos (conforme o manual), acrescentando "..." ao final do valor do campo, quando o mesmo ultrapassa o valor limite informado no manual. Modifiquei também, nos ClientDataSets existentes, o tamanho de alguns campos, para adequá-los ao tamanho informado no manual Acrescentei diversos campos aos ClientDataSets existentes, que eram necessários na nova DANFSe, mas não estavam disponíveis. Cito: cdsIdentificacao -> tpAmb, xtpAmb, tpEmit, xtpEmit, xsitNFSe, xfinNFSe, xambGer cdsServicos -> xNomePais, xSiglaPais, xtpBM, xtpImunidade cdsParametros -> xMunicipioIncidencia Ajuste do campo "Competência", que exibia apenas "MM/YYYY", agora exibe "DD/MM/YYYY" conforme consta no manual Ajuste na marca d'água do relatório para: Remover a mensagem de ambiente de homologação, pois tem um campo próprio para isso no cabeçalho da nota (além do que ela estava sobrepondo o status da nota) Informar a marca d'água CANCELADA para as notas fiscais com a situação de cancelamento Informar a marca d'água SUBSTITUÍDA para as notas fiscais com a situação de substituição No frxReportBeforePrint, implementei a ativação/desativação da impressão do canhoto de entrega na nota fiscal Ajustei a exibição das bandas contendo as informações do Intermediário e Destinatário, alternando entre a exibição do cadastro completo e as mensagens: O DESTINATÁRIO É O PRÓPRIO TOMADOR/ADQUIRENTE DA OPERAÇÃO DESTINATÁRIO DA OPERAÇÃO NÃO IDENTIFICADO NA NFS-e INTERMEDIÁRIO DA OPERAÇÃO NÃO IDENTIFICADO NA NFS-e O que ainda falta fazer: Apesar de eu já ter criado todo o grupo das informações de IBS/CBS no modelo do FastReport, ele ainda não possui um ClientDataSet de onde obter as informações, não existe atualmente no ACBr. Estou receoso de criar, porque é um tanto complexo a regra desses campos, e não me sinto confiante em fazê-lo sozinho, por isso gostaria de solicitar a ajuda de vocês, na criação do ClientDataSet para que eu possa atribuir aos campos dentro do FastReport. Em anexo estão os arquivos fontes que realizei as modificações. As modificações podem ser localizadas pesquisando pelo texto "// Francis.Silva em". Também incluí o arquivo .fr3 atualizado, e um pdf com uma nota gerada, como exemplo. ArquivosAlterados.7z -
Opa, desculpa, esqueci totalmente desse problema. Não, não resolve, porque é como eu lhe falei, o provedor é destruído e recriado todas as vezes que vai ser utilizado, então não adianta parametrizar nada no provedor, porque quando ele for recriado, ele vem que os parâmetros default dele. Eu fiz isso no início, expliquei mais acima, e sugeri a a criação do evento OnProvedorCreate justamente para poder configurar o provedor todas as vezes que ele for instanciado. Aqui está funcionando 100%, trabalhando desta forma, por isso não tive mais problemas com essa questão, até eu precisar atualizar o repositório novamente, aí vou ter que fazer a compatibilização interna aqui, mesclar os fontes. Atenciosamente, Francis Lay L. Silva.
-
Bom dia. Segue o patch com o ajuste para criação de um evento OnCreateProvedor, no componente TACBrNFSeX, para permitir configurar o provedor assim que ele for instanciado. As modificações foram realizadas em cima da revisão 46533, e as units alteradas foram as seguintes: ACBrNFSeX.pas -> Criado o tipo TACBrNFSeXOnCreateProvedor = procedure (const Provedor: IACBrNFSeXProvider) of object; Criada a property OnCreateProvedor: TACBrNFSeXOnCreateProvedor; ACBrNFSeXProviderManager.pas -> Corrigido o método TACBrNFSeXProviderManager.GetProvider para invocar o evento OnCreateProvedor, do objeto ACBrNFSe. Já realizei os testes com o patch, e consegui parametrizar com sucesso o caractere de quebra de linha do provedor, e resolveu o problema da substituição da quebra de linha padrão "|" pelo "\n" padrão do provedor. Você pode comitar no repositório, por favor? Obrigado. Patch_OnCreateProvedor_ACBrNFSeX.7z
-
Não consigo resolver esse problema, sem mexer no fonte do PadraoNacional.GravaXml.pas, e não quero fazer isso, não porque é certeza de problemas na próxima atualização repositório. Eu já tentei de toda forma: ACBr.Configuracoes.WebServices.QuebradeLinha := ACBR_SEPARADOR_LINHAS; // '|' ACBr.SetProvedor(ACBr.Configuracoes.Geral.Provedor, ACBr.Configuracoes.Geral.Versao); ACBr.Provider.ConfigGeral.QuebradeLinha := ACBr.Configuracoes.WebServices.QuebradeLinha; ANTES desta atribuição ACBr.Provider.ConfigGeral.QuebradeLinha := ACBr.Configuracoes.WebServices.QuebradeLinha; o valor de ACBr.Provider.ConfigGeral.QuebradeLinha é igual a '\n'. Depois da atribuição, ele fica igual a '|'. Só que, quando ele cria o XML, continua usando o '\n' como quebra de linha, eu tenho a impressão de que ele deve estar recriando o provider em algum momento, e aí volta para o valor default da quebra de linha. Alguém pode me ajudar a resolver esse problema, por favor? Obrigado. Atenciosamente, Francis Lay L. Silva. PS: É exatamente como eu imaginei. Se o provider existe, ele descarta e cria outro, então não tenho como configurar o provider sem mexer no fonte do ACBr.
-
E aparentemente, o problema está no PadraoNacional.GravaXml.pas, nesse ponto aí: Quem é esse FpAOwner.ConfigGeral.QuebradeLinha pelo qual ele está substituindo a quebra de linha que informamos? Para o MEU PROBLEMA, essa simples linha no código do meu aplicativo deve resolver, mas preciso saber o motivo da troca, se tem impacto em mais alguma coisa dentro do componente. Vai dar problema se eu parametrizar da forma abaixo? ACBr.Configuracoes.WebServices.QuebradeLinha := '|'; ACBr.Provider.ConfigGeral.QuebradeLinha := ACBr.Configuracoes.WebServices.QuebradeLinha; Atenciosamente, Francis Lay L. Silva.
-
Olá. Recentemente recebemos algumas reclamações de clientes que notaram que a descrição dos serviços nas nossas notas fiscais, estavam vindo com caracteres estranhos, e queriam saber do que se trata. Os caracteres em questão são os "\n". Esses caracteres passaram a aparecer no lugar do caractere "|" que é o que utilizamos na discriminação do serviço, para identificar uma quebra de linha: ACBr.Configuracoes.WebServices.QuebradeLinha := '|'; Entretanto, quando o ACBr gera o XML com o RPS para envio para autorização, ele está substituindo, nos XML`s, todos os caracteres "|" por "\n" automaticamente. Por que isso agora? EXEMPLO: <xDescServ>Produto: JORNAL A CRITICA\n1 publicacao(oes) do anúncio "CONCORRENCIA 90050/2026 - CONFORME FATURA 21895SDF", no(s) dia(s):\n18/03/2026 - Quarta-feira -> 3 Col. X 8 Cm, Caderno "CLASSIFICADOS" (R$ 1.345,20)\n(-) DESCONTO PADRAO AGENCIA (LEI 12.232/2010) (R$ 269,04)\nConforme P.I. No. 4558/2026.\nVencto(s): C/Apresentacao</xDescServ> Quando enviamos a discriminação do serviço para o componente do ACBRNFseX, ela vai da seguinte maneira: <xDescServ>Produto: JORNAL A CRITICA|1 publicacao(oes) do anúncio "CONCORRENCIA 90050/2026 - CONFORME FATURA 21895SDF", no(s) dia(s):|18/03/2026 - Quarta-feira -> 3 Col. X 8 Cm, Caderno "CLASSIFICADOS" (R$ 1.345,20)|(-) DESCONTO PADRAO AGENCIA (LEI 12.232/2010) (R$ 269,04)|Conforme P.I. No. 4558/2026.|Vencto(s): C/Apresentacao</xDescServ> E era da forma acima que aparecia no DANFNSe do portal (porque eles não tratam quebras de linhas, vem tudo como um texto corrido, então o "|" ajudava a leitura nesse caso). Na DANFNSe local, tratamos isso e discriminação sai com as respectivas quebras de linha. É assim que está aparecendo para os clientes na DANFNSe, já tem algum tempo, e não havíamos percebido: ISSO SÓ ESTÁ ACONTECENDO COM A TAG <xDescServ>, na <xInfComp>, que utiliza o mesmo caractere delimitador, ele aparece corretamente, não é substituído. Não sei quando isso começou a acontecer, pois só tomamos conhecimento do fato agora, mas já fiz o teste e realmente está havendo essa substituição dentro da tag <xDescServ>. Estou utilizando os fontes da Revisão 46134 de 08/05/2026. Grato.
-
Dados do Intermediário na NFS-e na DANFE
Francis Silva replied to Francis Silva's tópico in ACBrNFSe
Mas é bem estranho fazer esses ajustes específicos via código né? Porque a unit ACBrNFSeXDANFSeFR.pas atende a TODOS os tipos de modelo do FastReport, independente do provedor, em algum momento o nome dos campos referenciados lá nessa unit, vão conflitar com campos de mesmo nome em outros arquivos fr3. Eu trataria essas particularidades de cada modelo dentro do próprio arquivo fr3, ficaria encapsulado com mais segurança, sem risco de interferir com outros modelos existentes ou futuros, além de não precisar recompilar todo o repositório cada vez que precisar fazer um ajuste simples no arquivo fr3, mudaria apenas ele. Mas é apenas a minha opinião, ok ? Abraços. -
Dados do Intermediário na NFS-e na DANFE
Francis Silva replied to Francis Silva's tópico in ACBrNFSe
Olá. Pronto, removi o script de ativação/desativação da banda de impressão das informações do intermediário, de dentro do .fr3, e coloquei no ACBrNFSeXDANFSeFR.pas, dentro do BeforePrint do frxReport. Agora não temos nada dentro do fr3, além do layout do relatório. Atenciosamente, Francis Lay L. Silva. ACBrNFSeXDANFSeFR.pas DANFSEPadraoNacional.fr3 -
Dados do Intermediário na NFS-e na DANFE
Francis Silva replied to Francis Silva's tópico in ACBrNFSe
Eu coloquei, apenas para ativar/desativar a seção com as informações do intermediário. Se não utilizasse esse pequeno código no script, dentro do próprio FastReport, eu teria que localizar e fazer isso dentro da unit que chama esse relatório, e eu não sei se é a ACBrNFSeXDANFSeFR.pas ou tem mais alguma. Mas o FastScript é nativo do FastReport, qualquer edição do Delphi com o FastReport, já vai ter o FastScript automaticamente. Mas vou ver se consigo localizar onde fazer esse ajuste via código também. -
Dados do Intermediário na NFS-e na DANFE
Francis Silva replied to Francis Silva's tópico in ACBrNFSe
Boa noite. Conclui todos os meus testes, e atualização do nosso sistema para o modelo de DANFENFSe que será o padrão nacional. Para tanto, precisei realizar mais alguns pequenos ajustes na unit ACBrNFSeXDANFSeFR.pas, além das informações do Intermediário da nota. No PDF em anexo, demonstro, através de comparação entre o DANFENFSe oficial do portal nacional, o DANFNFSe original do ACBr e o DANFNFSe com as minhas correções, e submeto tudo a análise de vocês. Acredito que essas alterações venham a contribuir um pouco com o projeto. O DANFENFSeNacional.fr3 agora alterna corretamente entre a impressão das informações do intermediário do serviço, e a mensagem "INTERMEDIÁRIO DO SERVIÇO NÃO IDENTIFICADO NA NFS-e". Para localizar os pontos onde alterei a unit ACBrNFSeXDANFSeFR.pas, basta pesquisar por // Francis.Silva em 09/05/2026. Grato. ACBrNFSeXDANFSeFR.pas DANFENFSeNacional.fr3 Mudanças DANFENFSe_FR.pdf -
Dados do Intermediário na NFS-e na DANFE
Francis Silva replied to Francis Silva's tópico in ACBrNFSe
Eu estava usando o release 44948, atualizei o repositório hoje e houveram muitas modificações na unit ACBrNFSeXDANFSeFR.pas desde o release que eu estava. Essa unit é a BASE PARA QUALQUER MODELO do FastReport, independente de padrão ou não, é ela que mapeia todas as informações do XML para datasets, para que possam ser utilizados em relatórios do FastReport. Mesmo no release que baixei agora a tarde, o 46134, ainda não estão tratando as informações do intermediário nessa unit. Foram acrescentadas muitas outras informações, principalmente relacionadas a tributação, mas nada referente ao intermediário da nota, sendo que é uma informação que sai na DANFESe do portal nacional e que, pelo que entendi, em 07/2026 a API que gera essa DANFSe vai ser descontinuada, então precisaremos gerar exclusivamente pelo ACBr. Em vista disso, atualizei a unit ACBrNFSeXDANFSeFR.pas mais recente, baixada do repositório, para que ela forneça as informações do intermediário, e estou disponibilizando agora em anexo, nessa mensagem. Mexi EXCLUSIVAMENTE na parte de definição e atualização do cdsIntermediario, mais nada. Atenciosamente, Francis Lay L. Silva. ACBrNFSeXDANFSeFR.pas
