Ir para conteúdo
  • Cadastre-se

everson.turossi

Membros
  • Total de ítens

    206
  • Registro em

  • Última visita

Tudo que everson.turossi postou

  1. Para pcnNFe explicação no segundo tópico
  2. Da uma olhada nesses 2 tópicos se te ajuda
  3. Note que na NT esses campos não estão taxados em verde, o que significa que não foram adicionados naquela versão da NT, conferi aqui e esse evento foi adicionado na versão 1.10 da NT. O que consta nessa última versão da NT é apenas uma alteração de descrição (em verde na 1.30) e em amarelo nessa versão porque significa que foi uma inclusão/alteração em relação a versão anterior.
  4. opa @Cristiano Martins Alves dá uma conferida no meu post, fiz diversas implementações lá, incluindo para esse evento
  5. Bom, li seu post mais atentamente agora com tempo vou dar uma resposta melhor. Depois de 15 anos lidando com emissão de nota, diversas experiencias negativas com algumas implementações dos Sefaze´s e também experiencias negativas em C# em relação a "implementações genéricas", eu aplicaria uma boa orientação a objetos nas classes, usando herança para agrupar propriedades em comum de cada classe dos eventos, mas para cada evento, uma classe com sua responsabilidade bem definida. Esse negócio de implementação genérica uma hora a conta sempre chega e em se tratando de emissão de documentos fiscais, é sempre uma caixinha de surpresa. É minha opinião claro.
  6. Segura na mão do Claude Code e vai, passa os XSD pra ele e manda gerar as classes pra ti. Vai te poupar um tempo grandioso. Claro que, nem tudo são flores, obrigatoriamente a validação final do código é sua. Apesar de eu trabalhar muito mais com C# do que com Delphi, a parte de emissão de documentos é gerada em uma aplicação Delphi aqui onde trabalho, então não cheguei muito perto das classes em C# no ACBr.
  7. ACBrNFeWebServices.pas pcnConversao.pas ACBrDFe.Conversao.pas pcnConversaoNFe.pas ACBrNFe.Conversao.pas ACBrNFe.EventoClass.pas ACBrNFe.EnvEvento.pas ACBrNFeWebServices.pas pcnConversao.pas ACBrDFe.Conversao.pas pcnConversaoNFe.pas ACBrNFe.Conversao.pas ACBrNFe.EventoClass.pas ACBrNFe.EnvEvento.pas Estou anexando implementações para os eventos 112130 Perecimento, perda, roubo ou furto durante o transporte contratado pelo fornecedor 112140 Fornecimento não realizado com pagamento antecipado Essas implementações contém o que já foi implementados nos tópicos abaixo e também leitura de alguns eventos em Json. Os 4 eventos implementados foram gerados e transmitidos com sucesso para o Sefaz. Para as implementações de leitura dos dados através de Json em eventos já implementados, também foram homologados no Sefaz (implementação seguindo ao padrão do XSD). https://www.projetoacbr.com.br/forum/topic/87185-implementação-do-evento-112150-atualização-da-data-de-previsão-de-entrega/ https://www.projetoacbr.com.br/forum/topic/87048-cancelamento-de-evento-110001-divergência-entre-nt-e-schema-na-descrição-do-evento/ Segue lista de alterações por unit aplicadas nos 3 tópicos aberto ACBrNFe.EnvEvento.pas e ACBrNFe.WebServices.pas Implementado geração de XML para os tipos: teAtualizacaoDataPrevisaoEntrega tePerecPerdaRouboFurtoTranspContratFornec teFornecNaoRealizPagAntec teAceiteDebitoApuracaoNotaCredito ACBrNFe.EnvEvento.pas Implementado leitura para Json para os tipos: teCancGenerico tePagIntegLibCredPresAdq teDestItemConsPessoal teAceiteDebitoApuracaoNotaCredito teAtualizacaoDataPrevisaoEntrega tePerecPerdaRouboFurtoTranspContratFornec teFornecNaoRealizPagAntec teSolicApropCredPres tePerecPerdaRouboFurtoTranspContratAqu teImobilizacaoItem teSolicApropCredBensServicos ACBrDFe.Conversao.pas TACBrTipoEvento adicionado teAtualizacaoDataPrevisaoEntrega TACBrTipoEventoArrayStrings adicionado 112150 TACBrTipoEventoDescricaoArrayStrings AtualizacaoDataPrevisaoEntrega TryStrTocCredPres ajustado para adicionar zero a esquerda se tiver apenas 1 digito (adicionado uses ACBrUtil.Strings) ACBrNFe.Conversao.pas TSchemaNFe adicionado schAtualizacaoDataPrevisaoEntrega TSchemaNFeArrayStrings adicionado AtualizacaoDataPrevisaoEntrega TEventoArrayStrings adicionado e212120 TIndAceitacao e TIndAceitacaoArrayStrings novo Enum e seus valores utilizados nos eventos 211128, 212110 e 212120 IndAceitacaoToStr e StrToIndAceitacao conversão para TIndAceitacao StrToTpEventoNFe adicionado 110001, 212120, teCancGenerico, teAtualizacaoDataPrevisaoEntrega SchemaEventoToStr adicionado e110001, e112150, schCancGenerico, schAtualizacaoDataPrevisaoEntrega pcnConversao.pas adicionado teAtualizacaoDataPrevisaoEntrega nas constantes TpcnTpEventoString adicionado 112150 TpEventoToDescStr adicionado AtualizacaoDataPrevisaoEntrega e teAtualizacaoDataPrevisaoEntrega pcnConversaoNFe.pas TSchemaNFe adicionado schAtualizacaoDataPrevisaoEntrega TSchemaNFeArrayStrings adicionado AtualizacaoDataPrevisaoEntrega TEventoArrayStrings adicionado e212110 e212120 adicionado TIndAceitacao e TIndAceitacaoArrayStrings adicionado IndAceitacaoToStr e StrToIndAceitacao StrToTpEventoNFe 110001, 112150, teCancGenerico, teAtualizacaoDataPrevisaoEntrega, SchemaEventoToStr e110001, e112150, schCancGenerico, schAtualizacaoDataPrevisaoEntrega ACBr.EventoClass.pas Adicionado classe TgItemNaoFornecidoCollectionItem adicionado classe TgItemNaoFornecidoCollection TgControleEstoquePerecimento adicionado FvIBS e FvCBS TDetEvento adicionado gItemNaoFornecido indAceitacao dPrevEntrega getDescEvento/DescricaoTipoEvento ajuste descrição teCancGenerico e adicionado descrição para teAtualizacaoDataPrevisaoEntrega Usei o recurso de arrastar e soltar, acabou invertendo a ordem entre o post e os arquivos
  8. Devido a urgência acabei reimplementando aqui, uma vez que necessitava de outras alterações. Esse em especifico já homologuei junto ao Sefaz. Se precisar implementar mais algum, estou subindo em breve: teFornecNaoRealizPagAntec e teAceiteDebitoApuracaoNotaCredito
  9. Atualizei a mensagem, estava colando a segunda imagem e postou por engano
  10. No ACBrInstall marca os que te interessam No Delphi procura por PDF que vai listar aqueles que selecionou
  11. Correção, uma Danfe em Fast costuma ter pelo menos 300KB para uma Danfe simples. Acabei de fazer um teste imprimindo a mesma Danfe, com Fast 311KB, enquanto com FPDF 8KB (impressão sem logotipo)
  12. E por que não usar o componente que gera Danfe em PDF nativo? Uma Danfe no Fast que costuma ter pelo menos uns 3MB, com o FPDF fica na faixa dos 20KB
  13. Juntamente com o evento 112150 acabou indo uma implementação que estava fazendo par ao evento 211128 - Aceite de débito na apuração por emissão de nota de crédito o qual ainda não estava homologado. Segue arquivos atualizados para evento 211128 também homologado. ACBrNFe.EnvEvento.pas ACBrNFeWebServices.pas
  14. Estou submetendo a implementação do evento 112150 - Atualização da Data de Previsão de Entrega adicionado através da NT2025_002 v1.30. Para esse evento não existia um tipo Enum criado. O Evento já foi homologado junto ao SVRS. Toda via, em minhas alterações constam também as alterações feitas no post abaixo e o inicio da implementação da leitura dos dados atrávez de JSON pcnConversao.pas pcnConversaoNFe.pas ACBrNFe.EventoClass.pas ACBrNFe.EnvEvento.pas ACBrNFe.Conversao.pas ACBrNFeWebServices.pas ACBrDFe.Conversao.pas
  15. Se está usando também o Sefaz Virtual do Rio Grande do Sul, acredito ser erro interno pois já vi um Post de alguém que disse que conseguiu fazer o Cancelamento de Evento pelo Sefaz de São Paulo. Em relação ao Cancelamento de Evento no SVRS, fiz testes modificando o nSeqEvento apesar da NT falar que deve "Informar o número de sequência do Evento a ser cancelado" mas continuo recebendo a rejeição 459
  16. Analisando melhor os fontes, percebi que se faz necessário adicionar já na function StrToTpEventoNFe da ACBrNFe.Conversao também o evento de cancelamento genérico, uma vez que a ACBrNFe.Conversao vai substituir um dia a pcnConversaoNFe.pas. De momento como estou usando a funcionalidade ACBrNFe.EventoNFe.LerFromJSON(...) e acabou passando somente com as alterações na pcnConversaoNFe. Segue unit atualizada. ACBrNFe.Conversao.pas
  17. Em relação ao cancelamento de evento em específico criei um tópico, toda via precisei fazer mais alterações inclusive na pcnConversaoNFe.pas uma vez que estou lendo os dados pare emissão de evento através da procedure ACBrNFe.EventoNFe.LerFromJSON(...) De momento não consegui fazer emissão para esse tipo de evento mesmo que a NT fale que deveria ser implementado até 29/10/2025. De momento acredito que no meu caso seja problema interno no WebService do SV-RS o qual estou utilizando. Para qual Sefaz você está emitindo? Obteve sucesso no cancelamento de evento?
  18. Estou iniciando a implementação dos Eventos da NT2025_002 v1.30 e encontrei uma divergência entre a NT e o Schema onde a descrição do Evento de Cancelamento (Genérico) está divergindo. Na NT: No Schema: De momento não consegui fazer o cancelamento do evento pois estou recebendo a rejeição: Rejeitado 459 - Rejeicao: Cancelamento de evento inexistente. Então por desencargo, fiz alteração localmente no schema para que a descrição seja a mesma da NT e ao enviar o evento recebi então a Rejeicao: Evento nao atende o Schema XML específico (Elemento: envEvento/evento[1]/infEvento/detEvento/descEvento) Estou submetendo as units com a alteração na rotina onde retorna a descrição do evento e também fiz a implementação para leitura do Schema para esse evento em específico. As alterações foram aplicadas na última versão disponível dos fontes no SVN. ACBrNFe.Conversao.pas ACBrNFe.EventoClass.pas pcnConversaoNFe.pas
  19. @Dyego Noé Tentativas deixa como 0, porque essa configuração se refere a quantas "tentativas" vai tentar novamente após receber um erro na conexão. Em relação ao digito verificador não deveria mudar caso o cNF não fosse alterado em relação a tentativa de emissão anterior, então garanta que ele seja gerado e gravado antes de qualquer tentativa de envio ao Sefaz. Ai vai aquela sugestão perigosa, garanta que a chave de acesso por documento nunca seja alterada, seja gravando o cNF ou a própria Chave e após receber um erro que não seja uma Rejeição, efetuar uma consulta pela chave, atualizando os dados da Nota caso a consulta retorne que a nota está emitida. Tomar muito cuidado pra não ficar repetindo esse processo de consulta após um erro para não cair na rejeição de Consumo Indevido.
  20. Vou deixar aqui minha Sugestão baseado na minha opinião, sem entrar no mérito do que é certo ou errado. Primeiramente o ACBrNFe1.NotasFiscais.LoadFromStream(StringStreamIn); poderia ser substituído por ACBrNFe1.NotasFiscais.LoadFromFile('D:\A.xml'); simplificando o processo. Em segundo lugar, nunca usar componentes que fazem processos complexos não visuais adicionados em formulário. Criar tais componentes somente no inicio do processo e garantindo que sejam destruídos ao final do processo, isso evita de ficar algum lixo ou configuração alterada em relação a emissão anterior. Em terceiro lugar, porque não usar RTTI para clonar dados de uma Nota para outra.
  21. Nos primórdios do MDF-e enfrentei uma situação semelhante no uso do modo Síncrono. O que acontecia é que por erro interno de comunicação no próprio Sefaz, me era retornado um erro como se estivesse sem conectividade, toda via, o Sefaz havia recebido o MDF-e e processado, apenas não me dava o retorno correto. Quando tentava enviar novamente, dava como duplicidade. Agora pude perceber que a propriedade Tentativas está definida como 5 e se o que aconteceu comigo aquela vez no MDF-e possa estar acontecendo em situações esporádicas e há de esperar que o ACBrNFe tente retransmitir se a resposta que teve foi uma negativa de conexão, mas pode o Sefaz ter recebido sim a NFe e a processou.
  22. Bom dia, sei que o tópico está parado a um bom tempo, mas também tenho interesse nessa melhoria. O que posso fazer em relação ao Fortes para que seja possível compilar também as units do ACBr para 64?
  23. Não entendi, mas vou procurar um exemplo que fiz a alguns anos onde abria um arquivo, tratava as informações e salvava o arquivo tratado e anexo os fontes. Esse componente é um pouco complexo de trabalhar, lembro que tive algumas dificuldades.
×
×
  • 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.