Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 26-06-2024 em todas as áreas
-
Olá Pessoal, É com muita satisfação que venho informar a todos que o componente ACBrNFe ganhou novas units para Consultar a Situação de uma nota, solicitar a inutilização de um numero ou faixa de números, enviar eventos e para administrar o CSC (Código de Segurança do Contribuinte) usado na NFC-e, este ultimo não sei informa-los quais UF possuem um webservice para esse serviço. Foram criadas novas units para gerar o XML de pedido de consulta, de inutilização de envio de eventos, bem como as units que fazem a leitura do retorno foram reescritas. Elas se encontram em uma nova pasta: ...\Fontes\ACBrDFe\ACBrNFe\Base\Servicos O que muda na minha aplicação? Nada, pois essas units são utilizadas pelo próprio componente. Porque foram criadas essas novas units? As units antigas se utilizam das units pcnGerador e pcnLeitor para geração e leitura do XML respectivamente. As novas units se utilizam das units ACBrXmlWriter e ACBrXmlReader que tem a mesma função de geração e leitura. Não chegamos a realizar testes de velocidade nessas novas units criadas para o ACBrNFe, mas a um tempo atrás a unit responsável por ler o XML de um CT-e contendo aproximadamente 1.800 (mil e oitocentos) notas vinculadas demorava cerca de 6 minutos para realizar a leitura. Foi criada uma nova unit se utilizando o ACBrXmlReader para realizar a leitura do XML do CT-e, foi realizado um teste com o XML contendo 1.800 notas vinculadas e o mesmo foi lido em aproximadamente 6 segundos. Veja o ganho em velocidade na leitura do XML, de 6 minutos para 6 segundos. Por conta dessa performance resolvemos reescrever todas as units que utilizam as units pcnGerador e pcnLeitor visando a passar a utilizar as units ACBrXmlWriter e ACBrXmlReader. Não é um trabalho fácil e rápido. As novas units foram escritas, foi criado os testes unitários para cada uma delas, depois de testadas fizemos a migração, um trabalho que consumiu varias semanas. Em breve as units antigas vão ser removidas do SVN. Esse trabalho vai ser realizado em outros componentes? Sim, o próximo é o ACBrCTe, depois o ACBrMDFe. Estamos trabalhando para deixar os componentes mais velozes.6 pontos
-
Olá pessoal, Segue um tutorial de como configurar o ambiente de desenvolvimento de php para utilizar as bibliotecas do ACBr. Uma informação importante é que a comunicação com as bibliotecas é feita através da extensão FFI. Limitação: * A FFI foi implementado na versão 7.4.0, versões anteriores não possuem esse recurso. A seguir segue passo-a-passo para configuração do ambiente de desenvolvimento. 1. Início 1.1. IDE Você pode utilizar a IDE de sua preferência. Utilizaremos aqui o Visual Studio Code (VSCode). 1.2. Requisitos 1.2.1. Instalar o Visual c++redistributable package 2015, caso ainda não o tenha instalado em seu ambiente 2. Instalando o PHP 8 Baixar a última versão do php em: https://www.php.net/downloads Acesse o link Windows downloads Baixe o "zip" da última versão TS(Thread Safe) na mesma arquitetura do seu computador Exemplo para x64: VS16 x64 Thread Safe A diferença entre a versão e a TS(Thread Safe) e NTS(Non Thread Safe) é que a TS suporta servidores multithreaded. 2.1. Extrair o zip, copiar a pasta para c:\ e remeie para um caminho mais curto Neste caso, que está na versão 8, ficará C:\php8 2.2. Vamos utilizar o arquivo ini padrão de configurações: C:\php8\php.ini-development Renomeie para php.ini Abra o arquivo para as próximas configurações 2.3. Extensões 2.3.1. Localizar a chave extension_dir e descomentar essa chave para indicar de onde buscar as extensões, que serão localizadas na pasta "ext", dentro da pasta do php: C:\php8\ext extension_dir = "ext" Obs: Em um cenário de testes, foi necessário colocar o caminho completo da pasta para o php conseguir acessar as extensões Caso tenha problemas com alguma extensão, tente colocar o caminho completo extension_dir = "C:\php8\ext" 2.3.2. Localizar as chaves "extension" Para utilizar as extensões que deseja, remover os comentários (ponto e vírgula no início da linha) das extensões que precisar 2.3.2.1. Extensão ffi para consumo das dlls do ACBr extension=ffi 2.3.2.2. Manipulação de strings pelo php extension=mbstring 2.4. Outras configurações 2.4.1. Diretório temporário, descomentar a seguinte linha e preencher o caminho de arquivos temporários do Windows session.save_path = "C:/Windows/Temp" 2.4.2. Localizar a chave error_reporting = E_ALL e preencher conforme abaixo error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 2.4.3. Localizar ffi.enable e preencher com true ffi.enable = true 2.4.4. Caso não esteja habilitada, habilitar a exibição de erros display_errors = On 2.5. Debug A opção de debug não é obrigatória, mas facilita muito o desenvolvimento Verifique se sua IDE suporta a opção 2.5.1. XDebug Acessar https://xdebug.org/download/historical Baixe a versão de "Windows binaries" relacionada a versão do php que foi instalada Neste cenário de testes, vamos baixar a PHP 8.3 VS16 TS (64 bit), pois foi instalado o php TS(Thread Safe) Renomeie a dll baixada para php_xdebug.dll e salve em c:\php8\ext 2.5.1.1. Adicionar no final do arquivo a seção Xdebug com as linhas abaixo [Xdebug] zend_extension="C:\php8\ext\php_xdebug.dll" xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_host=127.0.0.1 xdebug.client_port=9003 xdebug.log=C:\php8\log\xdebug.log 2.5.2. VSCode Instalar a extesão: PHP Debug Origem: xdebug.org Selecione a extensão, e clique em "Install" à direita 2.5.2.1. Criar uma pasta ".vscode" dentro da pasta do projeto Exemplo: \Projeto\.vscode 2.5.2.1.1. Criar um arquivo "launch.json" dentro da pasta ".vscode" com o conteúdo abaixo: No nosso exemplo, que o projeto estará na raiz do Apache ficará: C:\Apache24\htdocs\.vscode\launch.json { "version": "0.2.0", "configurations": [ { "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9003 } ] } 2.5.2.2. Ao debugar, se ocorrer o erro: php executablenote found. Install PHP and add it to your PATH or set the php.debug.executablePath setting Configurar o php no PATH do windows Clique no Menu Iniciar e escreva Variáveis Clique em Editar as variáveis de ambiente do sistema Na aba Avançado, da tela de Propriedades do Sistema, clique no botão Variáveis de Ambiente No GroupBox de baixo Variáveis do sistema, selecione a Path e clique no botão Editar, abaixo do quadro Clique em Novo e preencha o caminho da pasta do php, seguindo nosso cenário: c:\php8 Clique em OK para confirmar e nas duas telas anteriores para fechar Reinicie o computador para garantir que a alteração no Path foi efetivada 3. Instalar o Apache Baixar o Apache em: https://www.apachelounge.com/download/ Baixe o zip da última versão, referente à arquitetura do seu computador 3.1. Extrair o zip, copiar a pasta Apache24 para c:\ Ficará c:\Apache24\ 3.2. Abra o arquivo de configurações: C:\Apache24\conf\httpd.conf 3.2.1. Localizar "Define SRVROOT" e confirmar se está apontando para onde salvou a pasta do Apache "c:/Apache24" Define SRVROOT "c:/Apache24" 3.2.2. Porta de acesso Localize a chave Listen Se a porta 80 estiver em uso indique qual porta será utilizada, senão mantenha a padrão Listen 80 Listen 80 3.2.3. Localize a chave ServerName Preencha com localhost e a porta que você configurou no item 3.2.2 ServerName localhost:80 3.3. Instalar o apache como serviço Pelo prompt, acessar a pasta C:\Apache24\bin\ Executar o comando: httpd.exe -k install Caso apareça tela do firewall do Windows, clicar em permitir 3.3.1. Para visualizar o serviço instalado, acesse os serviços do windows e procure por Apache2.4 Para acessar os serviços, abra a tela de Executar (teclas Windows + R), preencha services.msc e clique em OK Localize o Apache2.4, ele estará como inicialização automática, mas ainda não estará iniciado, clique com o botão direito e clique em Iniciar Para iniciar o serviço pelo prompt, acessar a pasta C:\Apache24\bin\, utilize o comando httpd -k start 3.3.2. Para verificar se o serviço está ok, acesse o navegador e navegue em localhost Caso nos passos 3.2.2 e 3.2.3 você tenha configurado uma porta diferente da 80, acesse localhost:sua porta. Ex: Para a porta 8080 acesse localhost:8080 Se aparecer "It works!", o Apache está funcionando 3.4. Configurar para acessar o php 3.4.1. Localize a chave LoadModule e adicione a nova linha para indicar o caminho da dll do php+apache LoadModule php_module "C:/php8/php8apache2_4.dll" 3.4.2. Localize DirectoryIndex que por padrão está aénas index.html, adicione index.php antes do index.html DirectoryIndex index.php index.html 3.4.3. Localize a chave AddType e adicione a linha para ele conhecer as extensões que irá processar AddType application/x-httpd-php .php .html 3.4.4. Um pouco mais abaixo, localize a chave AddHandler Adicionar o manipulador de cabeçalho AddHandler application/x-httpd-php .php Adicionar o caminho do arquivo php que vai processar Action application/x-httpd-php "C:/php8/php-cgi.exe" 3.4.5. No final do arquivo, configurar o caminho da pasta do php PHPIniDir "C:/php8" 3.4.6. Configurar também o Timeout Timeout 180 3.4.7. Testando o php no Apache Primeiro reinicie o serviço do Apache para as últimas configurações feitas relacionadas ao php Siga os passos do item 3.3.1 e clique na opção Reiniciar o Serviço ou pelo prompt, acessar a pasta C:\Apache24\bin\ e execute o comando httpd -k restart 3.4.7.1. Acesse a pasta C:\Apache24\htdocs\ e crie o arquivo index.php Adicione o conteúdo a seguir e salve o arquivo <?php phpinfo(); 3.4.7.2. Abra o navegador e acesse novamente localhost Deverá abrir uma página contendo as informações do php, iniciando pela versão instalada 3.4.7.3. Pesquise por XDebug Encontre o grupo de informações do XDebug para verificar se também foi configurado com sucesso 4. Testando o programa de exemplo do ACBr 4.1. Baixe os fontes do ACBr, seguindo as instruções do tópico a seguir: https://projetoacbr.com.br/fontes/ 4.2. Acesse os arquivos dos programas de exemplo para php da ACBrLib: ..\ACBr\Projetos\ACBrLib\Demos\PHP\ Copie o conteúdo da pasta ..\ACBr\Projetos\ACBrLib\Demos\PHP\ConsultaCNPJ para C:\Apache24\htdocs\ 4.3. Copiando as dlls da ACBrLib e suas dependências Veja o tópico a seguir para maiores detalhes, caso ainda não esteja familiarizado com o ambiente das bibliotecas ACBr 4.3.1. Download 4.3.1.1. Links para download das bibliotecas, versões PRO e Demo 4.3.1.1.1 Link Geral ACBr Pro: https://www.projetoacbr.com.br/forum/files/category/36-acbrlib-pro/ Link direto para a ACBrLibConsultaCNPJ 4.3.1.1.2. Link Geral ACBr Demo: https://www.projetoacbr.com.br/forum/files/category/63-acbrlib-demo/ Link direto para a ACBrLibConsultaCNPJ 4.3.2. Extraindo a dll da biblioteca Vamos tomar como exemplo a versão Demo Extraia o conteúdo do arquivo baixado e acesse a pasta bin Copie a versão da Lib equivalente à arquitetura da sua instalação do php para as respectivas pastas ST (Single Thread) e MT(Multi Thread) 4.3.2.1. Primeiro vamos pegar a biblioteca para o programa de exemplo ST Acesse a pasta ..\bin\Cdecl\ e copie a dll referente à arquitetura da sua instalação do php Para o nosso exemplo, que é a versão 64 bits, vamos copiar a dll ..\bin\Cdecl\ACBrConsultaCNPJ64.dll Copie a dll para C:\Apache24\htdocs\ST\ACBrLib\x64 4.3.2.2. Vamos agora copiar a versão MT Acesse a pasta ..\bin\MT\Cdecl\ e copie a dll referente à arquitetura da sua instalação do php Para o nosso exemplo, que é a versão 64 bits, vamos copiar a dll ..\bin\MT\Cdecl\ACBrConsultaCNPJ64.dll Copie a dll para C:\Apache24\htdocs\MT\ACBrLib\x64 4.3.3. Dependências 4.3.3.1. OpenSSL Seguindo o mesmo critério da arquitetura do php, vamos copiar as dlls da OpenSSL para ambas as pastas dos demos No nosso cenário de 64 bits, vamos copiar as dlls da pasta ..\dep\OpenSSL\x64 para as pastas C:\Apache24\htdocs\ST\ACBrLib\x64 e C:\Apache24\htdocs\MT\ACBrLib\x64 4.3.3.2. LibXML2 Para a ACBrConsultaCNPJ a LibXML2 não é necessária e não é distribuída no pacote, mas caso esteja seguindo este tutorial para outras bibliotecas, de DFes por exemplo, isso será necessário No nosso cenário de 64 bits, devemos copiar as dlls da pasta ..\dep\LibXml2\x64 para as pastas C:\Apache24\htdocs\ST\ACBrLib\x64 e C:\Apache24\htdocs\MT\ACBrLib\x64 5. Testando os programas de exemplo 5.1. Para testar as versões ST e MT, acesse respectivamente: http://localhost/ACBrConsultaCNPJST.php http://localhost/ACBrConsultaCNPJMT.php Lembrando que, caso tenha configurado uma porta diferente da 80 no Apache, ela deve ser adicionada na url Exemplos da porta 8080 http://localhost:8080/ACBrConsultaCNPJST.php http://localhost:8080/ACBrConsultaCNPJMT.php 6. Debugando com o VSCode 6.1. Para debugar os fontes php você pode colocar um ponto de parada posicionando na linha desejada e clicando em "F9" ou, com o mouse, clicar do lado esquerdo da numeração da linha O ponto será identificado com uma bolinha vermelha Para iniciar o debug, acesse o menu Run / Start Debugging ou pressione F5 O VSCode passará a escutar os retornos do XDebug e irá habilitar uma pequena barra para as interações Agora que o VSCode está com o debug ativo, acesse o programa de exemplo, acione o método que colocou o ponto de parada e utilize os botões da barra de debug ou as teclas de atalho que podem ser vistas ao passar o mouse sobre cada botão É isso pessoal, esperamos que esse novo conteúdo seja útil para a comunidade e caso tenham dúvidas, sugestões estaremos sempre prontos para atendê-los em nosso canais. Até mais!!!3 pontos
-
Olá pessoal, Ficamos felizes em informar que foram disponibilizados os programas de exemplo em php Singlethread e Multithread utilizando a ACBrLibConsultaCNPJ. Para a comunicação com a biblioteca foi utilizada a extensão FFI que foi implementada no php a partir da versão 7.4.0. Vejam o tópico a seguir, na nossa base de conhecimento, com um tutorial de como configurar o ambiente de desenvolvimento com Php8 e Apache. Esperamos que como sempre que essa novidade traga maior facilidade na utilização das nossas bibliotecas por toda a comunidade. Até mais!!!3 pontos
-
Bom dia, Só passando para informar que fiz novos testes, e parece que a ABase não retorna a lista de serviços conforme consta no padrão ABRASF: Questionei por e-mail, e responderam que devemos usar o ConsultarNfseRpsEnvio. Questionei novamente se é uma falha ou se eles não retornam conforme o manual. Assim que responderem, posto aqui. Mas acho que o caminho mesmo é usar o ConsultarNFSePorRps para esse provedor. Inclusive, encontrei um outro tópico com o mesmo problema:2 pontos
-
Bom dia @luisclaudio_jr, Vou lhe mostrar um fragmento de código de uma aplicação que fiz a uns quase 20 anos. Muito mal feita por sinal. A diferença é que o XML é lido do disco e não do banco de dados. procedure TfrmEmissorDFE.CarregaArquivo; var ArquivoXML: TStringList; Tamanho: Integer; PathEvento: String; begin ArquivoXML := TStringList.Create; ArquivoXML.LoadFromFile(edtArquivo.Text); TipoDFE := 0; if pos('<infNFe', ArquivoXML.Text) > 0 then TipoDFE := 1; if pos('<infCte', ArquivoXML.Text) > 0 then TipoDFE := 2; if pos('InfNfse', ArquivoXML.Text) > 0 then TipoDFE := 3; if pos('infMDFe', ArquivoXML.Text) > 0 then TipoDFE := 4; if pos('procEventoNFe', ArquivoXML.Text) > 0 then TipoDFE := 5; if pos('procEventoCTe', ArquivoXML.Text) > 0 then TipoDFE := 6; if pos('procEventoMDFe', ArquivoXML.Text) > 0 then TipoDFE := 7; ArquivoXML.Free; // **************************************************************************** // Nota Fiscal Eletrônica // **************************************************************************** if TipoDFE = 1 then begin // Carrega no Componente o NFe salvo em Arquivo XML NFe.NotasFiscais.Clear; NFe.NotasFiscais.LoadFromFile(edtArquivo.Text, False); (...) Note que no LoadFromFile estou informando o segundo parâmetro com o valor False, pois se não informar o XML vai ser gerado novamente. Devemos tomar cuidado também com o LoadFromString e LoadFromStream, eles também tem esse segundo parâmetro.2 pontos
-
O que é a Manifestação do Destinatário? Este conjunto de eventos, como o próprio nome já sugere, permite que o destinatário da NF-e possa se manifestar sobre a sua participação comercial descrita na NF-e, confirmando as informações prestadas pelo seu fornecedor e emissor do respectivo documento fiscal. Este processo é composto de quatro eventos: 1. Ciência da Emissão 2. Confirmação da Operação 3. Registro de Operação não Realizada 4. Desconhecimento da Operação Como funciona o evento Desconhecimento da Operação? Este evento tem como finalidade possibilitar ao destinatário se manifestar quando da utilização indevida de sua Inscrição Estadual, por parte do emitente da NF-e, para acobertar operações fraudulentas de remessas de mercadorias para destinatário diverso. Este evento protege o destinatário de passivos tributários envolvendo o uso indevido de sua Inscrição Estadual/CNPJ. Como funciona o evento Operação não Realizada? Este evento será informado pelo destinatário quando, por algum motivo, a operação legalmente acordada entre as partes não se realizou (devolução sem entrada física da mercadoria no estabelecimento do destinatário, sinistro da carga durante seu transporte, etc.). Como funciona o evento Confirmação da Operação? O evento será registrado após a realização da operação, e significa que a operação ocorreu conforme informado na NF-e. Quando a NF-e trata de uma circulação de mercadorias, o momento de registro do evento deve ser posterior à entrada física da mercadoria no estabelecimento do destinatário. Este evento também deve ser registrado para NF-e onde não existem movimentações de mercadorias, mas foram objeto de ciência por parte do destinatário, por isso é denominado de Confirmação da Operação e não Confirmação de Recebimento. Importante registrar, que após a Confirmação da Operação pelo destinatário, a empresa emitente fica impedida de cancelar a NF-e. Apenas o evento Ciência da Emissão não inibe a autorização para o pedido de cancelamento da NF-e, conforme o prazo definido na legislação vigente. Como funciona o evento Ciência da Emissão? O evento de "Ciência da Emissão" registra na NF-e a solicitação do destinatário para a obtenção do arquivo XML. Após o registro deste evento, é permitido que o destinatário efetue o download do arquivo XML. O Evento da "Ciência da Emissão" não representa a manifestação do destinatário sobre a operação, mas unicamente dá condições para que o destinatário obtenha o arquivo XML; este evento registra na NF-e que o destinatário da operação, constante nesta NF-e, tem conhecimento que o documento foi emitido, mas ainda não expressou uma manifestação conclusiva para a operação. Todas as operações com o evento de solicitação de "Ciência da Emissão" deverão ter na sequência o registro do evento com a manifestação conclusiva do destinatário sobre a operação (eventos descritos nos itens 5.2, ou 5.3, ou 5.4). É possível reconsiderar o registro de um destes eventos? O destinatário poderá enviar uma única mensagem de Confirmação da Operação, Desconhecimento da Operação ou Operação não Realizada, valendo apenas a última mensagem registrada. Exemplo: o destinatário pode desconhecer uma operação que havia confirmado inicialmente ou confirmar uma operação que havia desconhecido inicialmente. O evento de "Ciência da Emissão" não configura a manifestação final do destinatário, portanto não cabe o registro deste evento após a manifestação final do destinatário. O que fazer quando a operação se realizou de forma diferente do descrito na NF-e, porém a mercadoria já foi recebida pelo destinatário? Caso a operação tenha se realizado, mas o conteúdo da NF-e não descreva corretamente da operação, o destinatário deverá se manifestar utilizando o evento "Confirmação da Operação", e adotar os procedimentos fiscais cabíveis de acordo com a legislação da unidade federada onde estiver estabelecido. Os eventos "Registro de Operação não Realizada" e "Desconhecimento da Operação" não devem ser utilizados nesta hipótese. Onde podemos consultar os eventos de Manifestação do Destinatário? A consulta pública na Internet foi alterada para exibir os eventos registrados na NF-e e pode ser realizada diretamente no Portal da NF-e (www.nfe.fazenda.gov.br) ou portais das Secretarias de Fazenda da circunscrição do emitente, a partir da informação da chave de acesso da NF-e. Os arquivos XML dos eventos também serão disponibilizados para os emitentes/destinatários constantes no documento fiscal. Uma vez que o destinatário tomou Ciência da Emissão é obrigatória a sua manifestação? Sim. Toda nota informada ao contribuinte tem que ter registrada a sua respectiva manifestação até um prazo máximo de 180 dias, contados da data da ciência. Este prazo máximo será reduzido gradativamente, conforme o interesse das Administrações Tributárias. O destinatário deve apresentar uma manifestação conclusiva dentro de um prazo máximo definido, contados a partir da data de autorização da NF-e, conforme tabela abaixo: A distribuição ocorrerá para os atores que desempenham papéis de emitente, destinatário, transportador e terceiros (informado na tag autXML), e englobará os documentos que estiverem com “SIM” na linha correspondente, conforme tabela abaixo: A geração de NSU, a partir da versão 1.10 da Nota Técnica 2014.002, irá considerar somente os usuários do serviço nos últimos 60 dias. É importante ressaltar que: a) para os usuários do serviço dos últimos 60 dias, a geração de NSU continuará normalmente; b) no caso de novos usuários desse serviço (distNSU), a geração de NSU ocorrerá a partir do primeiro acesso. Não haverá geração de NSU retroativo; c) qualquer usuário que deixar de utilizar o serviço (distNSU) por mais de 60 dias, terá a geração de NSU interrompida e retomada a partir da próxima consulta com este método. Não haverá geração de NSU retroativo ao período de interrupção. OBS: A partir da versão 1.13 da Nota Técnica 2014.002, os eventos gerados pelo Fisco, que forem passíveis de distribuição conforme a tabela acima, serão distribuídos ao emitente independente de manifestação do destinatário, ainda que emitente e destinatário sejam iguais.2 pontos
-
UAU.. Que fantástico... Obrigado pelo feedback @Marcelo Calvi Belanga1 ponto
-
Opa, muito obrigado, eu vou dar uma olhada novamente nos exemplos, acho que deixei escapar algo, por que só vi exemplos de retorno do processamento, não encontrei a leitura dos retornos por arquivo na pasta. O que acontece é que tenho que ler esses retornos que estão em disco , muito obrigado!1 ponto
-
Quero compartilhar um feedback...... Tenho uma rotina para enviar as notas em massa para qualquer destinatário de e-mail. E alguns clientes querem ter a possibilidade de enviar XML e PDF. Ela gera os arquivos em um pasta temporária, compacta, anexa no e-mail, envia e apaga a pasta temporária. Com pouco mais de 100 notas e base de dados em nuvem, o procedimento que antes demorava em torno de 1minuto e 20 segundos, passou para 8 segundos. Isso apenas trocando o motor do gerador para ACBrNFeDANFeFPDF. Obrigado equipe ACBr que proporciona tudo isso para nós.1 ponto
-
Certo Ítalo, No caso estou usando da forma correta. Fiz um novo ajuste e vou aguardar o usuario testar a emissao, pra saber se o endereço vai puxar corretamente.1 ponto
-
Olá @Victor H. Gonzales - Panda, muito obrigado pelo ajuste. Está funcionando muito bem. Tive que fazer um pequeno ajuste no meu código para verificar se tem evento carregado antes de utilizar o ImprimirEventoPDF, pois, se não tiver evento causa um erro: Então acrescentei uma verificação antes: if sNotas.EventoNFe.Evento.Count > 0 then sNotas.ImprimirEventoPDF; Com o TACBrNFeDANFeRL esse problema não ocorria mesmo se não tivesse evento carregado.1 ponto
-
1 ponto
-
1 ponto
-
Sim, pode inutilizar em homologação. Lembrando que não tem como inutilizar número de nota que tenha sido recepcionada pela SEFAZ.1 ponto
-
Sim tem um exemplo na pasta de exemplos de como deve usar cada componente chegou a abrir ele e olhar?1 ponto
-
Oi, Eu consegui fazer a chamada e tratar a resposta. Os motivos que me levam a postar essa resposta são: 1- agradecer a ajuda 2- expressar minha admiração pelo projeto, porque esse treco é complicado pra caramba... eu processei a resposta e pelo que entendi, toda hora sai xsd novo... que doideira... tem que mudar os modelos a cada novo xsd... 3- dizer que mais pra frente, acho que vou entrar no "PRO", pq não vou dar conta de fazer tudo na unha. Bom, é isso. Grato pelo tempo dispendido.1 ponto
-
Interessante, assim que der um respiro aqui vamos fazer testes, valeu meu caro.1 ponto
-
Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.1 ponto
-
Bom dia Foi um processo e tanto, o primeiro problema era que, a API que geraram as credenciais não era para a cobrança PIX. Depois de explicar eles atualizarão as credenciais para o objetivo correto! Em seguida em testes, quando passei a obter o retorno 505 - Version Not Supprted, eles solicitaram o certificado em formato .cer, e no último teste utilizando as mesmas credenciais do inicio, consegui que fosse gerado o QRCode, porém, no momento do pagamento o QRCode não foi aceito. Vou passar abaixo a sequência da troca de mensagem, com o Bradesco! OBS: Utilizando a unit sem alterações adicionais e as duas DLLs fornecida aqui, neste tópico!1 ponto
-
Bom dia @colmanetti, Verifica se o nome do tomador, ou endereço ou discriminação do serviço não contem caracteres do tipo: &, <, > ou " (aspas). A presença desse caracteres invalida a assinatura.1 ponto
-
Por favor atualize seus fontes, pelo SVN do ACBr... Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico... Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido... Dúvidas, sobre o uso do SVN ? Clique aqui e veja um vídeo1 ponto
-
Bom dia! Veja que no conteúdo da resposta da Lib você tem: {"...<Protocolo>a406109f-47d5-4e30-bfdc-48b103e67161<\/Protocolo> <\/EnviarLoteRpsResposta>"} Isso é um indício de que o método de envio que este provedor usa é o assíncrono. Quando o envio é assíncrono, você: Envia o XML de RPS para o web service do provedor. Recebe de volta do Web Service, um número de protocolo que atesta que o seu XML foi recebido pelo web service. Consulta a Situação do Lote usando o número de protocolo com o método NFSe_ConsultarSituacao. Recebe no retorno da consulta de situação um número que indica qual é a situação atual do lote, os número geralmente* são: Número 1 que indica que o XML não foi recebido pelo web service do provedor. Número 2 que indica que o XML foi recebido, mas que ainda não foi processado. Número 3 que indica que o XML foi recebido e foi processado com erros. Número 4 que indica que o XML foi recebido e foi processado com sucesso. *Em alguns poucos provedores específicos, os números podem representar condições diferentes, mas pelo que pude conferir, não é o caso do Pronim. Se consultar a situação e receber 3 ou 4, você consulta o Lote com o método NFSE_ ConsultarLoteRps para receber os erros caso a situação seja 3 ou o XML da NFSe* caso a situação seja 4. *Alguns provedores não devolvem o XML completo, mas sim apenas algumas informações de que a nota foi aceita. Portando, agora você precisa consultar a situação com este protocolo que recebeu.1 ponto
-
Oi a todos excelente a idéia do Word eu apenas vou deixar registrado que também pesquisei muito kkk mas consegui com o RLDBRichText11 ponto
-
Boa noite Pessoal, Retomando este assunto, sobre a implementação para a prefeitura de Victor Graeff. Realizei a configuracão abaixo, para emissão das notas. As notas foram transmitidas, porém não obtemos o retorno do XML das mesmas. Segue retorno que obtenho do ACBR: {"chaace":"","codigo":200,"mensagem":"","xmlEnviado":"<EnviarLoteRpsResposta xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> <NumeroLote>2<\/NumeroLote> <DataRecebimento>2024-06-25T22:39:56<\/DataRecebimento> <Protocolo>a406109f-47d5-4e30-bfdc-48b103e67161<\/Protocolo> <\/EnviarLoteRpsResposta>"} Segue a configuração que realizei na biblioteca, para emissão: [4323200] Nome=Victor Graeff UF=RS Provedor=Pronim ProRecepcionar=http://victorgraeff.govbr.cloud/NFSe.Portal.Integracao/Services.svc Pelo que vi, seria o mesmo esquema de emissão de IJUÍ, mas gostaria de entender por qual motivo não retorna o XML no envio. Aguardo.1 ponto
-
Por favor desconsiderar o arquivo anterior corrigido a a ordem de retorno da bandeira. Inserido a opcao de retornar o nome do dono do cartao, os primeiros 6 digitos e os ultimos 4. ACBrTEFDClass.pas1 ponto
-
Ola, Ao iniciar o PDV voce obtem o VER_LAYOUT // cStatusSat=SAT_ConsultarStatusOperacional() LAN_MAC=b8:24:1a:00:02:39 STATUS_LAN=NAO_CONECTADO NIVEL_BATERIA=ALTO MT_TOTAL=1048576 Kbytes MT_USADA=254724 Kbytes DH_ATUAL=19/08/2015 08:37:58 VER_SB=01.00.02 // Para o pix por exmeplo if VER_LAYOUT=0.07 nCodigoMp=99 else / A partir do 0.08 já contempla MP 17 pelo menos no MFE nCodigoMp=17 endif Esse foi um exemplo a grosso modo1 ponto
-
Entendo perfeitamente, alguma sugestão pra validarmos se o XML pertence a um evento, cte, nfe.. talvez até mesmo quem sabe uma função do ACBR onde ele devolvesse algo nesse sentido? Nisso, ja Eliminariamos algumas validações nesse sentido antes da chamada. Referente a Serpro, eles tem acesso ao servidor do governo onde ficam os XMLS, mas não sei pq cargas, eles não liberam o XML original e meio que remontam e pra resolver temos que indicar umas tags que faltam na mão e concordo sobre o XML, mas em muitos casos que usamos aqui é pra facilitar dados, nada fiscalmente que seja obrigatório a assinatura fiscal correta, ou algo nesse sentido. Posso estar liberando uns xmls que consegui aqui pra vocês, mas fiz um teste e o validador da sefaz ja acusa erro. Sobre o metodo, sim, vou modificar aqui pra fazer por hora tanto a leitura pra validar caso dê certo eu subo direto, sem passar pelo xmlstring e após testes relato por aqui1 ponto
-
Boa noite, obrigado pela contribuição Analisando o Merge (ultimo zip enviado) : Referente ao Sicoob, na versão V3 não está condizente, verifique se realmente você está enviando as informações na versão V3, pois a implementação que foi contribuída está conforme era na V2; Referente as Propriedades de LinhaDigitavel e CódigoBarras, essas informações são calculadas conforme as informações carregadas no titulo, pois é necessário o calculo do campo livre e demais informações conforme da classe do banco, cada banco pode mudar a forma que o campo livre é calculado e a forma que os DV tambem são calculados, a forma proposta você está informando o campo diretamente sem nenhuma validação do componente, invalidado possíveis erros de digitação. Referente ao PenseBank as informações removidas é referente ao Banco do Brasil, cujo banco utiliza a informação, caso esteja tendo algum problema especifico na geração do PenseBank utilizando a classe é mais facil pontuar do que remover as regras do Banco do Brasil, visto que, eles utilizam a API para a geração do mesmo.1 ponto
-
1 ponto
-
Por favor atualize seus fontes, pelo SVN do ACBr... Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico... Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido... Dúvidas, sobre o uso do SVN ? Clique aqui e veja um vídeo1 ponto
-
Olá pessoal! Quando falamos de um Manifesto Eletrônico de Documentos Fiscais (MDF-e), uma dúvida recorrente que pode vir a surgir é a correta maneira de utilizar o evento de encerramento. O que diz o Manual? O Manual de Orientação do Contribuinte Visão Geral, traz a seguinte definição para o evento de encerramento: O que isso quer dizer? Na prática, isso quer dizer que quando terminado o trajeto e também toda vez que houver alteração de carga é necessário encerrar o MDF-e vigente e emitir um novo. Pode dar um exemplo? Vamos considerar como exemplo hipotético uma caminhão que saia de MT para entregar parte de sua carga em SP e o restante em MG. Neste cenário devemos: Emitir um MDF-e com carregamento em MT e descarregamento em SP (aqui toda a carga deve ser incluída) Emitir um segundo MDF-e com carregamento em MT e descarregamento em MG (só com a carga que vai para MG). Os 2 MDF-e podem ser emitidos um em seguida do outro antes mesmo de o caminhão partir de SP. Quando o motorista avisar que toda a carga referente a SP foi entregue, a empresa que esta em MT encerra o primeiro MDF-e. Quando ele avisar que o resto da carga destinada a MG foi entregue, a empresa encerra o segundo MDF-e. Vamos considerar outro exemplo em que um caminhão parte de SP ao RJ com um carga, mas no meio do trajeto, ocorre a quebra do veículo de tração ou de reboque e o mesmo precisa ser trocado. Neste exemplo, o MDF-e emitido originalmente deve ser encerrado e um novo MDF-e com a informação do novo veículo deve ser emitido. Por fim, em um cenário em que um caminhão parte de SP com destino a MG, quando chegar em seu destino e a carga for entregue o MDF-e correspondente deverá ser encerrado. Observações Importantes: Um MDF-e encerrado não pode ser cancelado. Um MDF-e só pode ser cancelado se o caminhão não saiu da empresa para realiza o transporte da carga. Todo MDF-e tem que ser encerrados (exceto os cancelados) quando a carga é descarregada ou quando ocorre alteração conforme já apresentado acima. Dica aos desenvolvedores: Ao treinar o usuário a usar a aplicação de emissão de MDF-e deixe bem claro o conceito de MDF-e Cancelado e MDF-e Encerrado.1 ponto
-
Tendo em vista o grande número de dúvidas(aqui no fórum e também no nosso canal do Discord) sobre como configurar os PSPs no componente ACBrPIXCD, estou criando esse tópico para auxiliar nesse procedimento. Irei utilizar como base nosso demo do componente, que está disponível no SVN, em: "...\trunk2\Exemplos\ACBrPIXCD\". 1. Configurando Recebedor e PSP Atual 1.1. Configurações utilizando o componente Para configurar o Recebedor e o PSP atual, utilizando o próprio componente ACBrPIXCD, preencha as seguintes propriedades: ACBrPixCD1.Recebedor.Nome := ''; ACBrPixCD1.Recebedor.CEP := ''; ACBrPixCD1.Recebedor.Cidade := ''; ACBrPixCD1.Recebedor.UF := ''; ACBrPixCD1.PSP := ; ACBrPixCD1.Ambiente := ; Além dessas configurações básicas, também é possível configurar o caminho do arquivo de log, o nível do log gerado e, caso sua rede utilize proxy, será necessário configurá-lo nas propriedades a seguir: ACBrPixCD1.Proxy.Host := ''; ACBrPixCD1.Proxy.Port := ''; ACBrPixCD1.Proxy.User := ''; ACBrPixCD1.Proxy.Pass := ''; ACBrPixCD1.ArqLOG := ''; ACBrPixCD1.NivelLog := 0; Obs: Níveis de log: 0 - Nenhum 1 - Baixo 2 - Normal 3 - Alto 4 - Muito Alto 1.2. Configurações utilizando o aplicativo de demonstração Na aba "Configurações > PIX" preencha os dados solicitados e selecione o PSP que irá utilizar, conforme imagem abaixo: 2. Solicitando as credenciais do PSP Esse procedimento é feito de diferentes formas para cada PSP. Selecione o PSP desejado:1 ponto
-
2.14. PSP Banrisul Ambiente de Homologação - Para efetuar testes é necessário ter um conta corrente junto ao Banrisul. - Para receber as credencias de homologação é necessário fazer a solicitação para homologar através do e-mail [email protected] Ambiente de Produção. - Atualmente a API está em etapa piloto, por isso deve se enviar para o e-mail [email protected]: Informações Básicas do Cliente: Nome completo ou Razão Social. CNPJ. Telefone de Contato. Nome do Administrador(a). CPF do(a) Administrador(a). E-mail do(a) Administrador(a). Responsável de TI: Nome do(a) responsável de TI. CPF. E-mail. Dados Bancários: Agência. Número da Conta Corrente. Arquivo CSR. Arquivo extraído conforme o PDF em anexo. - Enviadas estas informações, será feito o cadastro do cliente no Portal de Desenvolvedores do Banrisul para que o PIX possa ser utilizado. - Podem ser enviados as informações de até 3 clientes. - Após o envio dos dados, com o Cadastro no Portal do Desenvolvedor, é liberado o acesso ao CNPJ do cliente: - Com este acesso, deve se solicitar a liberação do Client Secret: - O status ficará como "Pendente". Solicitar a liberação no e-mail: [email protected] Passado a etapa piloto da API, o processo correto será pedir ao cliente do Banrisul que entre em contato com o a agência para solicitar a integração com a API PIX. Um agradecimento ao membro de nossa comunidade @Desenv. AT Info Sistemas por compartilhar o passo a passo de como homologar junto ao banco. Geração de Arquivo CSR (1).pdf1 ponto
-
Por favor atualize seus fontes, pelo SVN do ACBr... Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico... Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido... Dúvidas, sobre o uso do SVN ? Clique aqui e veja um vídeo1 ponto
-
No caso de Victor Graeff, não tive o mesmo sucesso de Quinze de Novembro. O INI deveria ser: [4323200] Nome=Victor Graeff UF=RS Provedor=Pronim Versao=2.02 ProRecepcionar=http://victorgraeff-portais.govcloud.com.br/NFSe.Portal.Integracao/services.svc Porém, ao emitir desta forma o provedor retorna: Erros Emissao: Versão do modelo ABRASF indicada não está vigente.; Ao testar a configuração INI sem o campo Versão, a prefeitura aceitou e emitiu a nota, mas o componente não retornou o XML. Consequentemente, não consegui recuperar o numero do documento da nota emitida. Podem verificar se tem algo por tras para o provedor não aceitar a versão informada? XML de envio rejeitado: <EnviarLoteRpsSincronoEnvio><LoteRps Id=\"Lote_30\" versao=\"2.02\"><NumeroLote>30</NumeroLote><CpfCnpj><Cnpj>21934713000100</Cnpj></CpfCnpj><InscricaoMunicipal>9504</InscricaoMunicipal><QuantidadeRps>1</QuantidadeRps><ListaRps><Rps><InfDeclaracaoPrestacaoServico Id=\"Dec_30001\"><Rps><IdentificacaoRps><Numero>30</Numero><Serie>001</Serie><Tipo>1</Tipo></IdentificacaoRps><DataEmissao>2024-02-27</DataEmissao><Status>1</Status></Rps><Competencia>2024-02-27</Competencia><Servico><Valores><ValorServicos>70</ValorServicos><Aliquota>2.5000</Aliquota></Valores><IssRetido>2</IssRetido><ItemListaServico>14.06</ItemListaServico><CodigoCnae>2539001</CodigoCnae><CodigoTributacaoMunicipio>2539001</CodigoTributacaoMunicipio><Discriminacao>PRESTACAO DE SERVICOS - MAO-DE-OBRA - R$ 70,00</Discriminacao><CodigoMunicipio>4323200</CodigoMunicipio><CodigoPais>1058</CodigoPais><ExigibilidadeISS>1</ExigibilidadeISS><MunicipioIncidencia>4323200</MunicipioIncidencia></Servico><Prestador><CpfCnpj><Cnpj>21934713000100</Cnpj></CpfCnpj><InscricaoMunicipal>9504</InscricaoMunicipal></Prestador><Tomador><IdentificacaoTomador><CpfCnpj><Cnpj>37686313000155</Cnpj></CpfCnpj></IdentificacaoTomador><RazaoSocial>SOLLUTION TECNOLOGIA CORPORATIVA LTDA</RazaoSocial><Endereco><Endereco>AV FLORES DA CUNHA</Endereco><Numero>2455</Numero><Bairro>CENTRO</Bairro><CodigoMunicipio>4304705</CodigoMunicipio><Uf>RS</Uf><Cep>99500000</Cep></Endereco></Tomador><OptanteSimplesNacional>1</OptanteSimplesNacional><IncentivoFiscal>2</IncentivoFiscal></InfDeclaracaoPrestacaoServico></Rps></ListaRps></LoteRps></EnviarLoteRpsSincronoEnvio> XML de envio aceito: <EnviarLoteRpsEnvio><LoteRps id=\"Lote_29\"><NumeroLote>29</NumeroLote><Cnpj>21934713000100</Cnpj><InscricaoMunicipal>9504</InscricaoMunicipal><QuantidadeRps>1</QuantidadeRps><ListaRps><Rps><InfRps id=\"Rps_29001\"><IdentificacaoRps><Numero>29</Numero><Serie>001</Serie><Tipo>1</Tipo></IdentificacaoRps><DataEmissao>2024-02-27T00:00:00</DataEmissao><NaturezaOperacao>1</NaturezaOperacao><OptanteSimplesNacional>1</OptanteSimplesNacional><IncentivadorCultural>2</IncentivadorCultural><Status>1</Status><Servico><Valores><ValorServicos>70.00</ValorServicos><ValorPis>0.00</ValorPis><ValorCofins>0.00</ValorCofins><ValorInss>0.00</ValorInss><ValorIr>0.00</ValorIr><ValorCsll>0.00</ValorCsll><IssRetido>2</IssRetido><ValorIss>0.00</ValorIss><OutrasRetencoes>0.00</OutrasRetencoes><BaseCalculo>70.00</BaseCalculo><Aliquota>2.5000</Aliquota><ValorLiquidoNfse>70.00</ValorLiquidoNfse></Valores><ItemListaServico>14.06</ItemListaServico><CodigoCnae>2539001</CodigoCnae><CodigoTributacaoMunicipio>2539001</CodigoTributacaoMunicipio><Discriminacao>PRESTACAO DE SERVICOS - MAO-DE-OBRA - R$ 70,00</Discriminacao><CodigoMunicipio>4323200</CodigoMunicipio></Servico><Prestador><Cnpj>21934713000100</Cnpj><InscricaoMunicipal>9504</InscricaoMunicipal></Prestador><Tomador><IdentificacaoTomador><CpfCnpj><Cnpj>37686313000155</Cnpj></CpfCnpj></IdentificacaoTomador><RazaoSocial>SOLLUTION TECNOLOGIA CORPORATIVA LTDA</RazaoSocial><Endereco><Endereco>AV FLORES DA CUNHA</Endereco><Numero>2455</Numero><Bairro>CENTRO</Bairro><CodigoMunicipio>4304705</CodigoMunicipio><Uf>RS</Uf><Cep>99500000</Cep></Endereco></Tomador></InfRps></Rps></ListaRps></LoteRps></EnviarLoteRpsEnvio> Podem verificar se tem algo específico no Provedor, para esse município/versão? Caso possa auxiliar: https://victorgraeff.rs.gov.br/nfse/1 ponto
-
A implementação aqui está sendo feita via "curl", então preciso mandar no "data" o JSON, acredito...1 ponto