Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 24-10-2023 em todas as áreas
-
Ajustamos os fontes do ACBr, para que eles fiquem compatíveis com o OpenSSL 3.x... Os ajustes já estão no SVN Como essas mudanças são feitas no núcleo de comunicação segura do ACBr, agradecemos a ajuda nos testes, e por favor reportem se notarem algo estranho, mesmo no uso de versões mais antigas, como o OpenSSL 1.1.1 O que é o OpenSSL ? O OpenSSL é uma famosa biblioteca usada para comunicação segura e criptografia... no ACBr, usamos ela para vários de nossos componentes que usam HTTPS, como por exemplo, o ACBrPIXCD... Página do OpenSSL https://www.openssl.org/ Você pode encontrar as DLLs do OpenSSL, em nosso SVN: http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/ Porque fizemos essa mudança ? Recentemente o OpenSSL passou por um processo de refatoração, o que gerou a série 3.x... e as versões anteriores, estão sendo descontinuadas, e deixarão de receber correções de segurança e novas melhorias Suporte a protocolos mais Seguros, como TLS 1.3 Em ambientes Linux, o OpenSSL 3.x já é instalado por padrão, e é difícil fazer o downgrade, para a versão 1.1.x O que muda nos meus fontes ? Esperamos que nenhuma modificação seja necessária nos seus fontes. Nossa implementação é compatível com OpenSSL 0.9.x a 3.x, ou seja, os fontes do ACBr, tentam detectar a DLL mais nova do OpenSSL de forma automática.... Geralmente a biblioteca será procurada primeiro, na mesma pasta da Aplicação ou no Path do Sistema Operacional, dando sempre preferência as DLLs das versões mais novas... Ou seja, ele primeiro procurará pela DLL da versão 3.x, e depois da versão 1.1.x, 1.0.x, 0.9.x e assim por diante Como posso saber, qual DLL do OpenSSL o ACBr carregou ? Use as linhas abaixo, para ver a Versão e o Path completo, das DLLs carregadas na memória mResp.Lines.Add('Versão OpenSSL'); mResp.Lines.Add( OpenSSLExt.OpenSSLVersion(0) ); mResp.Lines.Add( ACBrOpenSSLUtils.OpenSSLFullVersion ); mResp.Lines.Add( OpenSSLExt.SSLUtilFile ); mResp.Lines.Add( OpenSSLExt.SSLLibFile ); mResp.Lines.Add('------------------------------'); Como atualizo a DLL para a versão 3.x ? Basta copiar as novas DLLs, para a mesma pasta do seu .exe... Se você compila seu sistema em 32 bits, aqui estão as DLLs: http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/3.1.3/x86/ Nota: mesmo que o Windows seja 64 bits, a DLL precisa acompanhar a arquitetura em que seu .EXE é compilado Eu preciso atualizar ? Não necessariamente, mas recomendamos que você use no mínimo a versão 1.1.x, por motivos de segurança Não creio que a atualização, gere mais performance, no uso da biblioteca...15 pontos
-
Fiz o ajuste do TimeOut para 15000 e até 20000, e o erro persiste. Irei verificar a questão com a prefeitura.2 pontos
-
Oi Jhoni ! Eu disse UTF mas queria dizer UTC. Me parece que a data vem com AAAAMMxxxxxx onde xxxxxx são minutos divide por 3600 e depois por 24 subtrai a diferença do uso e voce tem o dia. Alterei o ACBROfx.pas e testei com o seu arquivo. Parece que funcionou bem voltou a data do de 03/10/2023 inclui a função abaixo no metodo Import para converter as datas Não subi a unit porque não tenho certeza da minha análise sobre xxxxxx serem minutos. ======================== function TACBrOFX.Import: Boolean; var .............. function GetData(Texto:string): string; var Ano,Mes,Dia: word; UTCDia,Fuso:extended; umDia: TdateTime; function IsUTC(var Fuso:extended): boolean; var inicio,fim: integer; begin result := Pos('GMT',InfLine(sLine)) > 0; if result then begin inicio := Pos('[',InfLine(sLine)); fim := Pos(':',InfLine(sLine)); Fuso := StrToInt(Copy(InfLine(sLine), inicio + 1, length(InfLine(sLine)) - (fim +1) -1 )); end else Fuso := 0; end; begin Ano := StrToInt(Copy(InfLine(sLine), 1, 4)); Mes := StrToInt(Copy(InfLine(sLine), 5, 2)); if IsUTC(Fuso) then Dia := Trunc(((StrToInt(Copy(InfLine(sLine), 7, 6)) div 3600) div 24 ) + Fuso) else Dia := StrToInt(Copy(InfLine(sLine), 7, 2)); UmDia := EncodeDate(Ano,Mes,Dia); result := DateToStr(UmDia); end; begin; ............. ............. // Date Start if FindString('<DTSTART>', sLine) then begin if Trim(sLine) <> '' then DateStart := GetData(sLine); end; // Date End if FindString('<DTEND>', sLine) then begin if Trim(sLine) <> '' then DateEnd := GetData(sLine); end; ACBrOFX.pas2 pontos
-
1 ponto
-
1 ponto
-
Boa tarde, No tópico abaixo tem uma orientação de como fazer. Mas o primeiro passo é identificar o provedor (que você já fez!) e os links dos webservices. Depois posta aqui no tópico as modificações. Obrigado!1 ponto
-
Boa tarde, Em primeiro lugar obrigado pela contribuição. Antes de realizar as alterações você atualizou seus fontes e reinstalou os componentes? Temos atualizações quase diárias nesse componente. Se possível anexe aqui no tópico os arquivos alterados, facilita muito para realizarmos a avaliação e aprovar as mudanças. Obrigado!1 ponto
-
ACBrNFSeX1.Configuracoes.WebServices.TimeOut := 15000; O timeout é o tempo (em milisegundos) que o componente espera uma resposta. Se mesmo aumentando continuar com o mesmo erro pode ser um problema no provedor ou até mesmo a troca como você sugeriu. Aí o ideal é verificar na prefeitura se houver algum problema ou mudança.1 ponto
-
Bom dia Diego, Consegui realizar a impressão e o cancelamento da nota. Obrigado pela ajuda e paciência.1 ponto
-
Bom dia Antonio, Muito obrigado pela colaboração, já inclui na minha lista de tarefas para analise. TK-46421 ponto
-
Bom dia Diego, Já esta no SVN.1 ponto
-
Olá @softwareamigo O componente ACBrPIXCD já possui um campo para armazenar a informação de Timezone, é o campo '...calendario.criacao_Bias' Nesse comentário eu explico melhor como funciona essa propriedade: https://www.projetoacbr.com.br/forum/topic/68009-fuso-horário-timezone-do-acbrpixcd/?do=findComment&comment=4607231 ponto
-
Bom dia pessoal! Foi publicado no Diário Oficial da União no dia 09/10/2023 o Ajuste SINIEF Nº20 com o cuja redação é: Na prática a nova redação adiciona a possibilidade de substituir o impresso por consulta online em portal disponibilizado pela unidade federativa desde que atenda as condições impostas. Reforçando que se o consumidor optar pela não impressão, a empresa envia o cupom por meio eletrônico. As alterações se aplicam somente ao modo normal, em contingência continua a impressão em duas vias conforme orientação sobre contingência.1 ponto
-
A integração é feita pelo banco, ele realiza o vínculo do boleto com o PIX, então quando é pago via codigo de barras do boleto é dado baixa no pix, quando é pago pelo pix e dado baixa no boleto. Esta operação toda é realizada pelo banco. Qualquer outra implementação diferente disso teria que ser gerenciada por você, para fazer a administração da baixa do pix e do boleto, o que poderia gerar sérios problemas caso o controle não seja feito corretamente. Todas as implementações do ACBr são realizadas através dos bancos. Quando a implementação é feita via CNAB o processo sempre é esse, o banco precisa processar os boletos para retornar o EMV (codigo do pix) de cada um deles. Caso precise de algo mais dinânico a alternativa normalmente é o uso via API, onde normalmente no retorno da criação já se tem o boleto com o pix "de imediato". Porém cada tipo de implementação (CNAB ou API) depende da disponibilidade dos bancos.1 ponto
-
@Italo Giurizzato Junior Achei o bug de cortar o pdf veja na imagem, acha parte do xml, que faz parte do pdf, o retorno nao vem em tag, mas vem direto o pdf. A falha é na função: TACBrNFSeXWebservice.SalvarRetornoWebService, onde chama RemoverDeclaracaoXML TACBrNFSeXWebservice.SalvarRetornoDadosMsg quando faz isso ADadosMsg := RemoverDeclaracaoXML(ADadosMsg); TACBrNFSeProviderPadraoNacional.TratarRetornoConsultaNFSeporChave: Response.ArquivoRetorno := RemoverDeclaracaoXML(Response.ArquivoRetorno); // comentei isso, quando é pdf para testar. Acho que o legal é testar de outra forma, já que nao tem tag xml abrindo de fechando nesse retorno, é um pdf só,. Como chamei para pegar o pdf: FuncNFSeX.ACBrNFse.ObterDANFSE(IBDSPai.FieldByName('NFE_CHAVE_NF').AsString); ConsultaNFSe := FuncNFSeX.ACBrNFse.WebService.ConsultaNFSe; ... os fontes alterados, é apenas para vc ver como veio o retorno, com o que eu mexi, nao suba para o seu fonte. Eu não sei como mexer nesse componente ainda, é novo para eu. PadraoNacional.Provider.pas ACBrNFSeXWebserviceBase.pas1 ponto
-
Esse erro é de DNS. Tente trocar na configuração da rede da máquina.1 ponto
-
@mgmobile Pelo que vi no manual CNAB Seu cliente deve cadastrar a chave pix no banco. Configure a chave no monitor é opcional enviar o TXID, então no INI fica assim: QrCode.txid= ;;opcional (se nao preencher o banco gera)1 ponto
-
Bom dia @Alexandre Felippeto Henzen, Procure sempre fazer o seguinte: Você tem fontes com alterações locais? Verifica se não tem nenhuma unit do ACBr com uma bolinha vermelha em seu ícone, caso afirmativo delete a unit. Atualize todos os fontes de todas as pastas. Reinstale o ACBr com a opção de apagar arquivos antigos marcada. Compile a aplicação com a opção Build.1 ponto
-
tu tem que ter a versão completa do fast report para instalar ela no lazarus senão é fortes report1 ponto
-
Olá @marcelosantos, Na realidade o Bias = 0(zero) deve ser considerado como o horário UTC. O valor da propriedade Bias será a diferença em minutos entre o horário local e o horário UTC. Por exemplo, os seguintes valores correspondem ao mesmo horário: "criacao":"2023-02-24T17:30:00.00Z" "criacao":"2023-02-24T14:30:00.00-03:00" Nas propriedades, os valores ficariam respectivamente: calendario.criacao = '24/02/2023 17:30:00' calendario.criacaoBias = 0 calendario.criacao = '24/02/2023 14:30:00' calendario.criacaoBias = 180 O 180 é positivo, pois é necessário acrescentar 180 minutos ao horário local, para se chegar no horário zero. ...esse seria o funcionamento correto da propriedade, porém já vi casos de PSPs retornando valores incorretos, sem considerar o timezone.1 ponto