Ir para conteúdo
  • Cadastre-se

Waldir Paim

Moderadores
  • Total de ítens

    620
  • Registro em

  • Última visita

  • Days Won

    4

Tudo que Waldir Paim postou

  1. O componente usava no campo codigo o tipo smalint e o mesmo tem tamanho limite de 32767, no entanto itens de tamanho 5 e 6 podem ter tamanho de 99999 a 999999 e nesse caso havia erro na geração do arquivo. Foi alterado o tipo do codigo para Integer que resolveu esse problema. Foram feitas outras pequenas alterções para melhor uso do componente. Segue anexo arquivo com alterações. Waldir Paim. ACBrCargaBal.pas
  2. Tirei a dependência do ClientDataSet no ACBrNFeDANFeRL. Segue em anexo as alterações; ACBrNFeDANFeRL.rar
  3. Aproveitando o tópico. procedure TACBrSPEDFiscal.SetCurMascara(const Value: ansistring); begin FCurMascara := Value; FACBrTXT.CurMascara := Value; <= falta passar a mascara para a classe base FBloco_0.CurMascara := Value; FBloco_1.CurMascara := Value; FBloco_C.CurMascara := Value; FBloco_D.CurMascara := Value; FBloco_E.CurMascara := Value; FBloco_G.CurMascara := Value; FBloco_H.CurMascara := Value; FBloco_9.CurMascara := Value; end; Abraço a todos. Waldir Paim
  4. viewtopic.php?f=6&t=2461 waldir paim
  5. Nessa correria de todos deve ter passado despercebido! Posta a correção ai novamente, se for em Fortes estou fazendo algumas mudanças e em breve posto aqui para o pessoal avaliar. Com certeza estamos num local bem democrático e suas alterações e as minhas serão adicionadas ao svn! Abraço! Waldir Paim
  6. veja se assim funciona procedure TfrlDANFeRLPaisagem.Itens; procedure TfrlDANFeRLPaisagem.Itens; var nItem : Integer ; sCST, sBCICMS, sALIQICMS, sVALORICMS, sALIQIPI, sVALORIPI : String ; begin ... cdsItens.FieldByName('QTDE').AsString := FormatFloat(format( sDisplayFormat ,[FCasasDecimaisqCom,0]),qCom); //cdsItens.FieldByName('QTDE').AsString := NotaUtil.FormatFloat(qCom, sDisplayFormat[FCasasDecimaisqCom]); cdsItens.FieldByName('VALOR').AsString := FormatFloat(format( sDisplayFormat ,FCasasDecimaisvUnCom,0]),vUnCom); //cdsItens.FieldByName('VALOR').AsString := NotaUtil.FormatFloat(vUnCom, sDisplayFormat[FCasasDecimaisvUnCom]); ... Qualquer coisa só avisar! Waldir Paim
  7. Passe pelo menos os valores dos campos; Waldir Paim
  8. Olá Felipe! Acho que podemos compatibilizar com a versão 3.23 tambem! Vou tentar abstrair um pouco mais o código!
  9. Olá Renato, pelo que sei não temos DANFE ainda para Lazarus! Essa semana ainda devo me dedicar um pouco mais em portar o DANFE em Fortes Report para Lazarus! Se tiver interesse veja nesse link Waldir Paim
  10. smtp.Sock.RaiseExcept := True;
  11. try... envio... showmessage('Enviado'); except on E : Exception do showmessage(e.message); end;
  12. Sérgio, eu pessoalmente prefiro usar com fontes! e como disse anteriormente Acredito que devemos fazer ser compatível com ambas as versões! Waldir Paim
  13. Adauri_jr, bom dia Passei a utilizar o DANFE em fortes a pouco tempo! por pretender mudar meu emissor de notas para o lazarus em breve! Não percebi a dificuldade, as alterações no DANFE foram sutis e de estruturas, acredito não ser esse o motivo do desconforto relatado! O Fortes pode ter sofrido alguma melhoria que resultou no relatado!. Qual versão está utilizando e qual utilizava?, aproveita e faz um teste pra gente, um projeto novo só com o fortes em varias paginas e veja se nota o esse tempo entre as copias! Waldir Paim
  14. joeldm, uso pelo svn: https://fortesreport.svn.sourceforge.ne ... rtesreport a versão 3.71B
  15. Olá pessoal, mais algumas alterações! Se valer a pena! Fiquem a vontade para mandar ao SVN! Waldir Paim DANFeRL.zip
  16. Sérgio! te respondi anteriormente! na Unit RLConsts.pas
  17. Sérgio, isso ai é uma verificação do Fortes! Eu fiz assim pra funcionar! na Unit RLConsts.pas procedure CheckVersion(Component: TComponent); begin (* if Assigned(Component) and (csDesigning in Component.ComponentState) then Exit; if (KnownCommercialVersion <> KnownCommercialVersion) or (KnownReleaseVersion <> ReleaseVersion) or (KnownCommentVersion <> CommentVersion) then if not ReportServiceMode then ShowMessage( 'Sistema não está de acordo com a versão do FortesReport.'#13 + #13 + 'Versão atual ' + IntToStr(CommercialVersion) + '.' + IntToStr(ReleaseVersion) + CommentVersion);*) end; na unit do DANFE eu tinha usado esse procedimento SetVersion( CommercialVersion, ReleaseVersion, CommentVersion); porem o mesmo foi comentado, acredito que versões mais antigas do Fortes não a utilização!
  18. Olá Peterson! Que bom conseguir ajudar! Fiz mais algumas! ve se vale a pena! Waldir Paim ps: O anexo foi adicionado no primeiro post! o forum não esta aceitando mais anexos neste post!
  19. Waldir Paim

    ACBrNFeDANFeRL

    Fiz algumas alterações no DANFE para o Fortes Reports! Segue units com as alterações! Pretendo portar para o Lazarus em breve! Poderiam avaliar as alterações e se possível enviar ao SVN. Waldir Paim danfe.zip
  20. Segue um pequeno ajuste na classe TACBrSPEDFiscal Em destaque abaixo! procedure TACBrSPEDFiscal.SetCurMascara(const Value: ansistring); begin FCurMascara := Value; FACBrTXT.CurMascara := Value; //faltando passar a mascara para o componente base FBloco_0.CurMascara := Value; FBloco_1.CurMascara := Value; FBloco_C.CurMascara := Value; FBloco_D.CurMascara := Value; FBloco_E.CurMascara := Value; FBloco_G.CurMascara := Value; FBloco_H.CurMascara := Value; FBloco_9.CurMascara := Value; end;
  21. Segue uma pequena correção abaixo em negrito! { Vende o Item } procedure TACBrECF.VendeItem(Codigo, Descricao: String; AliquotaICMS : String ; Qtd: Double; ValorUnitario: Double; ValorDescontoAcrescimo: Double; Unidade: String; TipoDescontoAcrescimo : String; DescontoAcrescimo : String); Var AliquotaECF : String ; Aliquota : TACBrECFAliquota ; Tratado : Boolean; {$IFNDEF CONSOLE} Linha, Buffer, StrQtd, StrPreco, StrDescAcre : String ; Total, PorcDesc, ValDesc : Double ; {$ENDIF} begin ... if Assigned( fOnAntesVendeItem ) then fOnAntesVendeItem( Codigo, Descricao, AliquotaECF, Qtd, ValorUnitario, ValorDescontoAcrescimo, Unidade, TipoDescontoAcrescimo, DescontoAcrescimo); try Tratado := False; fsECF.VendeItem( Codigo, Descricao, AliquotaECF, Qtd, ValorUnitario, ValorDescontoAcrescimo, Unidade, TipoDescontoAcrescimo, DescontoAcrescimo ); except if Assigned( FOnErrorVendeItem ) then FOnErrorAbreCupom(Tratado); //possivelmente errado FOnErrorVendeItem(Tratado); //corrigido if not Tratado then raise; end; end; ... end;
  22. Elton, como te disse foi apenas um exemplo, sei que as informações devem serem as mais consistentes possíveis! e sei tambêm que isso não seria uma simples inclusão de eventos e que causaria uma serie de alterações nas sub classes de cada ECF, pois o evento teria que agir diretamente na ação e capturar esses valores do retorno do ECF; Mais se a coisa for pensada assim acho que com o tempo os eventos consigam efetivamente esse objetivo final de minimizar os a comunicação direta com os ECF; Conte comigo se resolver seguir em frente nesse ponto de vista! Abraço. Waldir Paim
  23. Oi Elton, Acho que poderíamos por em alguns eventos OnAfert, como por exemplo o OnAfterAbreCupom, um parâmetro onde seja possível capturar as informações NumCupom, COO entre outros sem a necessidade de fazer uma nova requisição ao ECF Esse parâmetro poderia ser um tipo record, pensei num TACBrECF mais ele sempre faz um requisição ao ECF para obter os dados, Percebi que a maioria dos ECFs retornam um string com os dados e nesse caso o evento poderia obter os dados no ato do evento destas string e com isso otimizar a comunicação e reduzir requisições ao ECF! Waldir Paim
×
×
  • 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.