Ir para conteúdo
  • Cadastre-se

softwareamigo

Membros
  • Total de ítens

    66
  • Registro em

  • Última visita

Tudo que softwareamigo postou

  1. deu certo. muito obrigado Juiomar
  2. softwareamigo

    Servidor SVN

    Olá pessoal ! Venho trabalhando de forma isolada. Assim mantenho um svn com tortoise no meu notebook para salvar minhas versões. Agora preciso trabalhar de forma compartilhada com outros dois programadores. Instalei o Visual svn server na rede. criei um repositorio . carreguei o projeto Consigo exportar o repositorio para o note. Mas as units não ficam checkoutadas. Alguem tem um passo a passo de como fazer isto ?
  3. softwareamigo

    Boleto Hibrido - Exemplo

    Olá pessoal ! O cliente deseja emitir boleto hibrido. Vi que o ACbrBoleto é capaz de gerar o registro no banco mas fiquei perdido com o fluxo de dados. Como o banco me retorna o código para o Qrcode? Existe algum código com um exemplo ? Ou alguém tem algum passo a passo ? Agradeço qualquer ajuda
  4. A mesma procedure funciona corretamente para notas modelo 55. Existe algum evento, notifier ou algo parecido que possa estar causando este efeito. Meu delphi é meio curto para entender esta parada
  5. Debugando descobri que a mágica ocorre na ACBrUtil.FilesIO. Do nada o comando SL.LoadFromFile(IniArquivoOuString) modifica a data que esta no arquivo texto (modelo ini). No texto temos dhEmi=29/12/2023 21:04:00 em SL.Text aparece 'dhEmi=29/12/2023 13:22:48' ===================================================================================== procedure LerIniArquivoOuString(const IniArquivoOuString: String; AMemIni: TMemIniFile); var SL: TStringList; begin SL := TStringList.Create; try if StringIsINI(IniArquivoOuString) then SL.Text := String(StringToBinaryString( IniArquivoOuString )) else begin if not StringIsAFile(IniArquivoOuString) then raise Exception.Create(ACBrStr('String INI informada não é válida.')) else begin if FileExists(IniArquivoOuString) then SL.LoadFromFile(IniArquivoOuString) else raise Exception.CreateFmt(ACBrStr('Arquivo: %s não encontrado.'), [IniArquivoOuString] ); end; end; AMemIni.SetStrings(SL); finally SL.Free; end; end;
  6. Oi Pessoal, quando envio o XML da NFCe recebo a mensagem de que a NF é válida mas que a data-hora esta muito atrasada e o XML não é transmitido. A hora em que o XML foi gerado e gravado na pasta do sistema foi 16:39 mas a data de emissão no XML esta nesta forma: <dhEmi>2023-12-29T13:22:48-03:00</dhEmi> o que poderia ser ? Data e Hora da maquina como configurado abaixo.
  7. Oi Daniel ! Obrigado pela resposta. Mas não, o Delphi é o Berlin. Tudo funciona bem quando o app roda no servidor standalone, inclusive rodando como serviço. o problema ocorre quando gero a aplicação como DLL Isapi. Daí , parece que a DLL não consegue receber respostas para os requests que ela faz a outros servidores. O mesmo problema do FIredac acontece quando uso um servidor HTTP. Ele recebe o request, processa, retorna com 200 mas a DLL parece que não recebe esta mensagem. Aff !
  8. Complementando a situação. Usando um servidor HTTP para obter os dados funciona perfeitamente no standalone mas na DLL acontece a mesma travada de quando trabalho cliente servidor e a conexão direta do Firedac não responde. Monitorando o servidor HTTP pude constatar que ele recebeu o request, processou, respondeu com 200. Tudo perfeito . Só que parece que a resposta não chega na dll.
  9. Oi Pessoal ! Estou com uma situação bem estranha. Estou fazendo os testes de conceito de uma aplicação INTRAWEB. Na UserSessionUnit tem uma conexão Firedac configurada a partir do FDefConnection.ini . Um serviço em modo standalone funciona direitinho. Mas quando gerei uma dll Isapi da mesma aplicação o IW não reconhece o alias. Parece que não acha o arquivo .ini . Configurei a conexão no braço. E aí não dá erro quando starto a aplicação mas o browser abre uma pagina em branco e fica carregando eternamente. Se retiro a conexão FIredac da unit a ela inicial aparece diretinho no browser. Alguem tem alguma idéia do que possa causar esta situação ?
  10. Oi Elias ! na ACBrPIXSchemasCob não temos esta propriedade. ELa só existe na cobV e na devolucao
  11. Opa! Muito obrigado pela dica
  12. O Diego, confundi os assuntos. No post anterior tratei do OFX. Sobre o PIX segue retorno do INTER 2023-10-15T01:40:11.308Z esta 3 horas à frente do real {"chave":"02658379000319","infoAdicionais":[],"pixCopiaECola":"00020101021226930014BR.GOV.BCB.PIX2571spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a02524846932159052040000530398654041.005802BR5901*6013BELO HORIZONT61083041147062070503***63043C02","loc":{"id":11837332,"location":"https://spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a025248469321590","tipoCob":"cob","criacao":"2023-10-15T01:40:11.308Z"},"location":"https://spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a025248469321590","status":"REMOVIDA_PELO_USUARIO_RECEBEDOR","valor":{"original":"1.00","modalidadeAlteracao":0},"calendario":{"expiracao":3600,"criacao":"2023-10-15T01:40:11.331Z"},"txid":"P020027834X000000100141023","revisao":1,"pix":[]} Como eu tratei no meu programa quando o PSP é o INTER function AplicaFuso: TDateTime; var Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo: word; Data:TDateTime; umDia:extended; const Fuso = 3; begin Data := ACBrPixCD1.PSP.epCob.CobGerada.calendario.criacao; DecodeDateTime(Data,Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo); if Hora <= Fuso then begin if Hora < 0 then begin if Dia = StartOfTheMonth(Data) then begin if Mes = 1 then begin Mes := 12; Ano := Ano -1; end else begin Mes := Mes - 1; end; umDia := EndOfTheMonth(Data); Dia := Trunc(umDia); end; end; end; Hora := 24 - Fuso + Hora; result := EncodeDateTime(Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo); end;
  13. Olá Diego! Eu tratei especificamente a data do SANTANDER. Creio que precisamos de uma classe que identifique todos os formatos UTC possíveis. Eu não conheço o assunto e não me senti seguro para subir nenhuma alteração. Esta situação também ocorre no tratamento de mensagens do PIX, como citei em outro post. ACBrOFX.pas Santander.ofx
  14. Em primeiro lugar não posso deixar de voltar a gradecer a todos que me ajudaram na implantação da rotina de envio de PIX no meu sistema. Nos teste que estou realizando notei que a data de confirmação retornada pelo Banco INTER, vem com um acréscimo de 3 horas. Questionei o suporte e eles informaram que trabalham com formato UTC e que eu devo atualizar o fuso horário em 3 horas. Resolvi a situação "no braço" testando se o PSP é o INTER e aplicando o fuso antes de registrar a data na base. Mas acho que seria interessante acrescentar uma propriedade UTC nas classes dos PSPs para que a conversão pudesse ser efetuada pelo componente. Esta questão do UTC também ocorre no componente ACBROfx. Um colega subiu um post reportando esta situação. ACBrOFX - Erro ao ler arquivo OFX exportado do Santander: "Invalid argument to date enconde" Sugeri uma solução especifica para o formato do Santander, mas acredito que existam vários formatos de UTC e não tenho conhecimento suficiente para arriscar uma alteração na classe. Fica a sugestão para os universitários da comunidade.
  15. 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.pas
  16. Parece ser uma data em formato UTF com fuso horario -3 Não sei como tratar no componente. Mas como pretendo utiliza-lo vou pesquisar
  17. Oi Pessoal, contornei o problema incluindo mais brancos (!!!!!!) na mensagem. Acrescentei no final do texto mais 100 espaços de modo que a janela da mensagem fica apresentando uma grande área vazia no final. Mando uma mensagem inicial tipo orientando a cópia e em seguida o texto acrescido dos brancos. "Voce esta recebendo a chave para efetuar o PIX referente a seu pedido 178453 no valor de R$ 1,00 . Esta chave expira em 60 minutos. Copie o texto da mensagem abaixo e cole em seu aplicativo bancário. ATENÇÃO: Certifique-se de que todo o texto seja selecionado ao fazer a cópia. Pressione a tela do celular na região limpa, sem letras, no final do texto." "00020101021226930014BR.GOV.BCB.PIX2571spi-qrcode.bancointer.com.br/spi/pj/v2/c1a78f4b78c347ad8710d45c6f3ae12952040000530398654041.005802BR5901*6013BELO HORIZONT61083041147062070503***63047740 "
  18. Se mudar a string o psp não reconhece o link
  19. Oi Alexandre obrigado pela sugestão. No momento estou testando enviar o qrcode junto com o texto para facilitar a copia da mensagem inteira. Parece que é mais fácil a copia. Vou compartilhando o andamento dos testes
  20. Oi Diego, não ficou funcional ter que abrir o anexo O usuário tem que escolher um aplicativo para abrir o texto
  21. Oi Diego Obrigado pela sugestão do anexo em txt Vou testar a usabilidade Na verdade não preciso do qrcode
  22. Oi Panda! Infelizmente não deu certo não. Puxa vida, será que ninguém do BACEN e dos PSPs notaram que os aplicativos de troca de mensagens não seriam capazes de tratar este link quebrado ? Custava gerar o link sem espaços? Bastava fazer como vc sugeriu trocar o espaço por um wildchar qualquer. E só desabafando tentei enviar por email com o qrcode inline. No outlook do cliente aparece lindão. O BMP bem visivel e o texto do copia e cola podendo ser copiado facilmente. Mas no nosso gmail é quase igual o WhatsApp, o BMP fica pequeninho e o bonitão inteligente identifica um link no texto e a copia não é tão intuitiva. Enfim, vamos seguir na luta. Obrigado pela força
×
×
  • 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.

The popup will be closed in 10 segundos...