Ir para conteúdo
  • Cadastre-se

Fernando Rodrigo

Membros
  • Total de ítens

    487
  • Registro em

  • Última visita

  • Days Won

    3

Posts postados por Fernando Rodrigo

  1. 11 horas atrás, Juliomar Marchetti disse:

    Então ambos erramos pois veja que a Juliana fala do Fast Report.

    para Fortes Report precisa ser implementado isso no filtro para PDF que não tem hoje no caso

    isso mesmo, no FastReport eu mandei uma unit para ela subir para o repositório com essas modificações, agora no FortesReport  não tem e uso ele para fazer alguns relatorios 

  2. Bom dia a todos,

    Tenho alguns relatórios de etiquetas utilizando o FastReport e a opção de DialogPage do relatorio para fazer alguns filtros diretamente dentro do próprio relatorios.

    Esses relatorios são customizados para cada cliente, então não vai dentro do sistema, so gero o arquivo fr3 e dentro do meu sistema ele abre esse arquivo customizado.

    Quando é feito a abertura do arquivo conforme abaixo, o usuario faz o filtro e faz a impressão do relatorio. So que quando o usuario fecha o relatorio para fazer outro filtro, ele fecha o relatorio inteiro e gostaria de saber como faço para voltar a tela Dialog para o usuario fazer outros tipos de filtros, sem fechar a tela e ter que entrar novamente. O print é somente um exemplo

    Quando fechar o relatorio voltar para o Dialog

    Vejam o print em anexo

    frxReport1.LoadFromFile(Caminho do arquivo fr3);
    frxReport1.ShowReport;
     

     

    photo_2019-06-16_22-43-42.jpg

    photo_2019-06-16_22-43-53.jpg

  3. @BigWings o problema esta na função abaixo que esta pegando 10 digitos na conta corrente e no arquivo de remessa pega 13, dai os campos ficam diferente

    Aqui o componente ja traz 10 digitos, veja a imagem e teria que ver 13 digitos, ja que na hora de processar a remessa vão os 13, dai o componente compara e da errado

    procedure TACBrCedente.SetConta(const AValue: String);
    var
      aConta: Integer;
    begin
       if fConta = AValue then
          exit;

       fConta:= AValue;
       aConta:= StrToIntDef(trim(AValue),0);

       if aConta = 0 then
          exit;

       fConta:= IntToStrZero(aConta, ACBrBoleto.Banco.TamanhoConta );
    end;

    SICCOB1.png

    SICCOB2.png

    SICCOB3.png

  4. 13 minutos atrás, BigWings disse:

    Pelo manual anexado a coluna 58 contém o dígito da agência e não o número da conta...

    realmente @BigWings, começa na 59 mesmo, olhei o layout incorreto, mas o problema de pegar somente, mas o numero da conta vindo com 10 digitos dai fica errado mesmo, segue anexo o arquivo de retorno para dar uma olhada da forma que esta, 

    75600000         223216110000190                    03064000000001188500JWA ROLAMENTOS E ACESSORIOS INSICOOB  

    2 - o campo numero da conta esta vindo formatado padrão com 10 digitos, sendo que no layout possui 13 digitos e quando vai comparar o que foi informado no preenchimento do componente e com o que esta vindo no arquivo de retorno esta ficando diferente ocasionando mensagem de erro conforme abaixo.

     

    if ( (not LeCedenteRetorno) and (rConta + rDigitoConta <> OnlyNumber(  Cedente.Conta + Cedente.ContaDigito ) then
           raise Exception.CreateFMT('Conta do arquivo %s inválida, config %s',[rConta,OnlyNumber(Cedente.Conta + Cedente.ContaDigito)]);

    3064_00203530_20190531_C240_00.ret

  5. 1 - no arquivo de retorno o campo numero da conta começa conforme layout na coluna 58 e o componente esta começando na coluna 59

    2 - o campo numero da conta esta vindo formatado padrão com 10 digitos, sendo que no layout possui 13 digitos e quando vai comparar o que foi informado no preenchimento do componente e com o que esta vindo no arquivo de retorno esta ficando diferente ocasionando mensagem de erro conforme abaixo.

     

    if ( (not LeCedenteRetorno) and (rConta + rDigitoConta <> OnlyNumber(  Cedente.Conta + Cedente.ContaDigito ) then
           raise Exception.CreateFMT('Conta do arquivo %s inválida, config %s',[rConta,OnlyNumber(Cedente.Conta + Cedente.ContaDigito)]);

    Existe no componente a opção de informar o tamanho da conta corrente, mas não esta acessivel para informar, o que resolveria o problema.

    Fiz a alteração passando a conta informada no componente para inteiro e o campo lido no arquivo de remessa tambem para inteiro, com isso os valores ficarão todos iguais não ocasionando o erro

         rCedente     := trim(Copy(ARetorno[0],73,30));
         rAgencia     := trim(Copy(ARetorno[0],53,5));
         rConta       := IntToStr ( StrToInt (   trim(Copy(ARetorno[0],58,13)) ) );
         rDigitoConta := Copy(ARetorno[0],71,1);

       if ( (not LeCedenteRetorno) and (rConta + rDigitoConta <> OnlyNumber( IntToStr ( StrToInt (  Cedente.Conta ) ) + Cedente.ContaDigito)) ) then
           raise Exception.CreateFMT('Conta do arquivo %s inválida, config %s',[rConta,OnlyNumber(Cedente.Conta + Cedente.ContaDigito)]);

      

    Com isso o problema foi resolvido

    Segue arquivo modificado

    ACBrBancoBancoob.pas

    segue arquivo de retorno para checagem

    3064_00203530_20190531_C240_00.ret

  6. Outra alteração feita tambem no retorno que estava tambem pegando em campo errado

    Antes na leitura do retorna estava dessa forma

            NumeroDocumento      := Trim(Copy(SegT,59,15));
            SeuNumero                  := NumeroDocumento;

            Carteira             := Copy(SegT,58,1);
            NossoNumero          := Trim(Copy(SegT,38,8));
            Vencimento           := StringToDateTimeDef( Copy(SegT,74,2) +'/'+
                                                         Copy(SegT,76,2) +'/'+
                                                         Copy(SegT,78,4),
     

    Tem que ficar dessa forma porque é o campo correto no layout

            NumeroDocumento      := Trim(Copy(SegT,59,15));
           SeuNumero            := Trim(Copy(SegT,106,25));
            Carteira             := Copy(SegT,58,1);
            NossoNumero          := Trim(Copy(SegT,38,8));
            Vencimento           := StringToDateTimeDef( Copy(SegT,74,2) +'/'+
                                                         Copy(SegT,76,2) +'/'+
                                                         Copy(SegT,78,4),
                                                         0, 'dd/mm/yyyy' );
     

    ACBrBancoSicredi.pas

    • Obrigado 1
  7. No segmento P para CNAB 240, na coluna 196/220 esta sendo informado o campo NumeroDocumento, conforme abaixo, so que esse campo ja esta sendo informado na coluna 63/77, o campo da coluna 196/220 no layout é um campo livre que é retornado no arquivo de retorno e não é processado pelo banco, é um campo livre, conforme layout do Sicredi, foi alterado para ser informado o campo SeuNumero, conforme todos os bancos que utilizam esse campo.

    O campo SeuNumero é um campo livre não sendo processado pelo banco e é retornado no arquivo de remessa, nele qualquer informação que será passado, será retornado no arquivo de retorno

     

    Antes

              ATipoBoleto                                                      + // 061 a 062 - Identificação de emissão do bloqueto + 062 a 062 - Identificação da distribuição
                 PadRight(NumeroDocumento, 15)                                    + // 063 a 077 - Nº do documento de cobrança
                 FormatDateTime('ddmmyyyy', Vencimento)                           + // 078 a 085 - Data de vencimento do título
                 IntToStrZero(Round(ValorDocumento * 100), 15)                    + // 086 a 100 - Valor nominal do título
                 '00000'                                                          + // 101 a 105 - Coop./Ag. encarregada da cobrança
                 Space(1)                                                         + // 106 a 106 - Dígito verificador da coop./agência
                 PadLeft(Especie, 2, '0')                                         + // 107 a 108 - Espécie do título
                 AceiteStr                                                        + // 109 a 109 - Identificação de título aceito/não aceito
                 FormatDateTime('ddmmyyyy', DataDocumento)                        + // 110 a 117 - Data da emissão do título
                 IfThen(ValorMoraJuros = 0, '3', '1')                             + // 118 a 118 - Código do juro de mora
                 '00000000'                                                       + // 119 a 126 - Data do juro de mora
                 IntToStrZero(Round(ValorMoraJuros * 100), 15)                    + // 127 a 141 - Juros de mora por dia/taxa
                 TipoDescontoToString(ACBrTitulo.TipoDesconto)                    + // 142 a 142 - Código do desconto 1
                 IfThen(ValorDesconto = 0, '00000000', FormatDateTime('ddmmyyyy', Vencimento))                         + // 143 a 150 - Data do desconto 1
                 IntToStrZero(Round(ValorDesconto * 100), 15)                     + // 151 a 165 - Valor percentual a ser concedido
                 IntToStrZero(Round(ValorIOF * 100), 15)                          + // 166 a 180 - Valor do IOF a ser recolhido
                 IntToStrZero(Round(ValorAbatimento * 100), 15)                   + // 181 a 195 - Valor do abatimento
                 PadRight(NumeroDocumento, 25)                                    + // 196 a 220 - Identificação do título na empresa
                 CodProtesto                                                      + // 221 a 221 - Código para protesto
          

    Depois

                ATipoBoleto                                                      + // 061 a 062 - Identificação de emissão do bloqueto + 062 a 062 - Identificação da distribuição
                 PadRight(NumeroDocumento, 15)                                    + // 063 a 077 - Nº do documento de cobrança
                 FormatDateTime('ddmmyyyy', Vencimento)                           + // 078 a 085 - Data de vencimento do título
                 IntToStrZero(Round(ValorDocumento * 100), 15)                    + // 086 a 100 - Valor nominal do título
                 '00000'                                                          + // 101 a 105 - Coop./Ag. encarregada da cobrança
                 Space(1)                                                         + // 106 a 106 - Dígito verificador da coop./agência
                 PadLeft(Especie, 2, '0')                                         + // 107 a 108 - Espécie do título
                 AceiteStr                                                        + // 109 a 109 - Identificação de título aceito/não aceito
                 FormatDateTime('ddmmyyyy', DataDocumento)                        + // 110 a 117 - Data da emissão do título
                 IfThen( (ValorMoraJuros > 0) and (CodigoMora= ''), '1', PadRight(CodigoMora, 1, '3') )   + // 118 a 118 - Código do juro de mora
                 IfThen((DataMoraJuros > 0),
                         FormatDateTime('ddmmyyyy', DataMoraJuros),
                                        '00000000')                               + // 119 a 126 - Data do juro de mora
                 IntToStrZero(Round(ValorMoraJuros * 100), 15)                    + // 127 a 141 - Juros de mora por dia/taxa
                 TipoDescontoToString(ACBrTitulo.TipoDesconto)                    + // 142 a 142 - Código do desconto 1
                 IfThen(ValorDesconto = 0, '00000000', FormatDateTime('ddmmyyyy', Vencimento))                         + // 143 a 150 - Data do desconto 1
                 IntToStrZero(Round(ValorDesconto * 100), 15)                     + // 151 a 165 - Valor percentual a ser concedido
                 IntToStrZero(Round(ValorIOF * 100), 15)                          + // 166 a 180 - Valor do IOF a ser recolhido
                 IntToStrZero(Round(ValorAbatimento * 100), 15)                   + // 181 a 195 - Valor do abatimento
                 PadRight(SeuNumero, 25)                                          + // 196 a 220 - Identificação do título na empresa
                 CodProtesto                                                      + // 221 a 221 - Código para protesto
     

    ACBrBancoSicredi.pas

  8. Alguma opção na hora de exportação para PDF no FortesReport colocar uma senha para que o usuário so consiga abrir o pdf se digitar essa senha

     uso ele para criar alguns relatórios e não achei essa opção no componente, alguém ja fez ou teria outra forma de usar com senha ?

    Ex: Fatura de Cartão estão vindos com senha no pdf e preciso fazer o mesmo em alguns relatórios feito em FortesReport

  9. 9 minutos atrás, Juliana Tamizou disse:

    Bom dia,

    Veja neste tópico que já foi enviada uma contribuição para este caso, porém precisava uma análise mais detalhada, de modo a ser funcional para todos os geradores.

     

    Att.

    blz Juliana, mas tem 2 meses que foi enviado para análise, e ate agora não foi implementado no componente, como são poucas alterações e ja foi bastante testado, acho que não teria problema em adicionar essa alteração no componente

  10. @goyazsistemas fez uma implementação no boleto para exportação via PDF e com senha para ter acesso ao boleto.

    Isso é usado muito em fatura de cartão de crédito, uma maior segurança para os nossos clientes.

    Fiz uma alteração nela e já fiz vários testes e esta funcionando normal.

    Segue as unit que foram alteradas

    Campo que foi adicionado

    Unit AcbrBoleto 

    FPdfSenha       : String;

    procedure SetPdfSenha(const Value: string);

    property PdfSenha        : string          read fPdfSenha         write SetPdfSenha;

    procedure TACBrBoletoFCClass.SetPdfSenha(const Value: string);
    begin
      FPdfSenha := Value;
    end;
     

    Unit ACBrBoletoFCFR

              fiPDF:
                begin
                  if FModoThread then
                  begin
                    frxPDFExport.ShowDialog := False;
                    frxPDFExport.ShowProgress := False;
                  end
                  else
                  begin
                    frxPDFExport.ShowDialog := MostrarSetup;
                    frxPDFExport.ShowProgress := MostrarProgresso;
                  end;
                  frxPDFExport.FileName := NomeArquivo;
                  frxPDFExport.Author := SoftwareHouse;
                  frxPDFExport.Creator := SoftwareHouse;
                  frxPDFExport.Producer := SoftwareHouse;
                  frxPDFExport.Title := 'Boleto';
                  frxPDFExport.Subject := frxPDFExport.Title;
                  frxPDFExport.Keywords := frxPDFExport.Title;
                  frxPDFExport.Background := IncorporarBackgroundPdf;//False diminui 70% do tamanho do pdf
                  frxPDFExport.EmbeddedFonts := IncorporarFontesPdf;

                  if PdfSenha <> '' then
                    begin
                       frxPDFExport.UserPassword    := PdfSenha;
                       frxPDFExport.ProtectionFlags := [ePrint];
                    end;


                  frxReport.Export(FdmBoleto.frxPDFExport);

                  if frxPDFExport.FileName <> NomeArquivo then
                    NomeArquivo := frxPDFExport.FileName;
                end;

     

     

    ACBrBoleto.pas ACBrBoletoFCFR.pas

  11. caros amigos, quando faço a exportação do boleto para pdf, teria como colocar uma senha no arquivo PDF.

    Recebo a fatura do cartão dessa forma, sempre que vou abrir o pdf eles pedem a senha para abrir.

     

  12. 4 horas atrás, raosistemas disse:

    Aparentemente teremos que vincular a nota de entrada com a nota de venda, já que esses valores vem dessa nota.

    A questão é, o cliente, de posse de desses valores, fazendo uma conta invertida terá o custo da empresa que está efetuando a venda... cruel.

    Alguém já está preenchendo essas informações? ou só estão mandando com as tags zeradas???

    vou enviar zeradas, pq ate agora ta uma bagunça terrível, ninguém sabe ao certo o que fazer com isso, ja vi em fóruns que o emitente não tinha a compra da peça e estava dando erro 938 e ninguém sabia o que iria fazer

    vamos aguardar próximos capítulos

    • Curtir 1
    • Obrigado 1
  13. Vendo fontes feitos em tokyo para auditoria de banco de dados, poderá usar em outros delphi ja que não usa componentes de terceiros

    Gera os log de alteração, exclusão, cadastro em banco separado ou na sua própria base de dados, vc quem configura.

    Poderá gerar log de toda sua base de dados ou poderá escolher quais tabelas serão auditadas.

    Os log's serão gerados em tabelas conde consta os seguintes dados

    1-   Usuário quem fez o cadastro, alteração ou exclusão

    2 - IP da maquina que fez

    3 - Data/Hora

    4 - Valor alterado

    5 - Valor após alteração

    6 - Qual coluna foi alterado

    7 - Qual tipo de operação (Update, Delete, Insert)

    8 - Caminho de onde esta o banco de dados

    9 - Protocolo de Rede

    Qualquer dúvida entrar em contato via PV

     

     

      

     

     

×
×
  • 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.