Ir para conteúdo
  • Cadastre-se

Daniel Simoes

Fundadores
  • Total de ítens

    26.258
  • Registro em

  • Última visita

  • Days Won

    749

Posts postados por Daniel Simoes

  1. Oi JMC,

    Sim, ela existe :)

    Entre em contato diretamente com o pessoal da V&SPague - http://www.vespague.com.br/

    Acredito que sejam necessários pequenos ajustes no ACBrTEFD para homologar com o V&SPague... Eu estava pretendendo realizar minha homologação com eles, mas acabei adiando por ter assuntos mais urgentes (sempre tem algo que fura a fila)

    Se precisar de alguma ajuda com os ajustes no ACBrTEFD é só postar aqui no forum

  2. Por esse motivo, que eu acabei optando por "bufferizar" todas as formas de pagamento em Cartão de Crédito (TEF), e deixo a cargo do componente ACBerTEFD imprimir a somatória delas em uma única forma de pagamento, e na sequencia, abre-se um vinculado e imprime todos os comprovantes, de todas as transações pendentes, dentro do mesmo vinculado... Assim o cancelamento de cupom sempre funciona...

  3. Lucio,

    SIM, basta substituir o .EXE... mas gerar o instalador é bem simples... vc precisará compilar o programa ECFTeste da pasta: \ACBr\trunk\Exemplos\ACBrECF\Lazarus e copia-lo para a mesma pasta do ACBrMonitor... depois disso, Use o InnoSetup para compilar o script ACBrMonitor.iss

    Cada pasta de conjunto de componentes tem um arquivo ACBr***-Change-Log.txt (embora em tenha esquecido de atualizar o change-log do ACBrSerial :( )

  4. Oi Elton,

    Acho que seria bom anexar uma mini explicação sobre a finalidade de cada um desses registradores novos... Pois alguns manuais de ECF podem chama-los de outras siglas..

  5. Eu nunca fui reprovado... mas sempre precisei ajustar algo no momento da homologação :)... Mas notei nas vezes que estive lá, que a média de aprovação é de apenas 50%

    Basta você aplicar com bastante atenção os testes do roteiro de pre-teste, que tudo vai bem... e sempre que ficar uma "duvidazinha" é importante ligar nos homologadores ou solicitar ajuda no forum...

    Não há custo para homologar o TEF discado... (apenas despesas de viagem/hospedagem)

    Para o dedicado, vc tb pode se isentar de custos, se homologar junto a um parceiro como por exemplo a DataRegis ou SkyTEF

  6. Bom... demorou um pouco mais, mas finalmente consegui fazer um Merge das alterações propostas pelo Franklin e modificadas pelo Elton...

    Modifiquei alguns poucos detalhes como:

    - Todas as variáveis de parâmetros do evento são declaradas como "const"

    - todos eventos começam com TACBrECF (e não epenas TACBr)

    - Removi alguns eventos repetidos

    Achei a modificação significativa o suficiente para promover o ACBrECF para a versão 1.0.0 :)

    Será bem mais simples implementar rotinas para gravar tudo que o ECF faz, usando os eventos... e com isso atender aos requisitos do PAF-ECF

    (Elton, por favor edite o Change-Log.txt com as modificações que vc fez, (com as novas propriedades e métodos))

  7. SIM... devo lançar a 0.9.2 em breve...

    Mas vamos lá... qual foi a dificuldade que você teve com o Lazarus ?

    Seria bom você mesmo conseguir compilar o ACBrMonitor... com isso vc poderá se beneficiar das melhorias implementadas no SVN

  8. Finalmente consegui um tempo para me dedicar a essa questão...

    Apliquei uma modificação no ACBrECF.pas, que verifica se o Gerencial foi fechado, caso a impressão da Linha do Gerencial falhe... e se for o caso, Abre um novo gerencial e continua com a Impressão...

    o método ficou:


    procedure TACBrECF.LinhaRelatorioGerencial(const Linha: AnsiString;
    const IndiceBMP: Integer);
    Var
    Texto, Buffer : String ;
    Lin : Integer ;
    SL : TStringList ;

    Procedure TentaImprimirLinhas( Texto: AnsiString; IndiceBMP: Integer ) ;
    var
    Est : TACBrECFEstado ;
    OldTimeOut : LongInt ;
    begin
    ComandoLOG := 'LinhaRelatorioGerencial( "'+Texto+'", '+IntToStr(IndiceBMP)+' )';
    try
    fsECF.LinhaRelatorioGerencial( Texto, IndiceBMP ) ;
    except
    // Não conseguiu imprimir ? Verifique se o relatório foi fechado pelo ECF //
    OldTimeOut := TimeOut;
    TimeOut := max(TimeOut,5); // Tenta ler o Estado por 5 seg ou mais
    try
    Est := Estado; // Lendo o estado do ECF

    if Est = estLivre then
    begin
    // Está Livre, provavelmente foi fechado por longo tempo de
    // impressao... (O ECF é obrigado a fechar o Gerencial após 2
    // minutos de Impressão). Vamos abrir um Novo Gerencial e Tentar
    // novamente
    AbreRelatorioGerencial(fsIndiceGerencial);
    fsECF.LinhaRelatorioGerencial( Texto, IndiceBMP );
    end ;
    finally
    TimeOut := OldTimeOut;
    end ;
    end ;
    end ;

    begin
    if MaxLinhasBuffer begin
    ComandoLOG := 'LinhaRelatorioGerencial( "'+Texto+'", '+IntToStr(IndiceBMP)+' )';
    fsECF.LinhaRelatorioGerencial( Texto, IndiceBMP ) ;
    end
    else
    begin
    Texto := '' ;
    Buffer := AjustaLinhas(Linha, Colunas) ;
    SL := TStringList.Create ;
    try
    SL.Text := Buffer ;

    For Lin := 0 to SL.Count - 1 do
    begin
    Texto := Texto + SL[Lin] + sLineBreak;

    if (Lin mod MaxLinhasBuffer) = 0 then
    begin
    TentaImprimirLinhas( Texto, IndiceBMP ) ;
    Texto := '' ;
    end ;
    end ;

    if Texto '' then
    TentaImprimirLinhas( Texto, IndiceBMP ) ;
    finally
    SL.Free ;
    end ;
    end ;

    {$IFNDEF CONSOLE}
    if MemoAssigned then
    begin
    fsMemoOperacao := 'linharelatoriogerencial' ;
    Buffer := AjustaLinhas( Linha, fsMemoColunas) ;
    MemoAdicionaLinha( Buffer );
    end ;
    {$ENDIF}
    end;
    [/code]

    Já está "comitado" no SVN

  9. Vc não pode vincular uma forma de pagamento a uma bandeira específica... os homologadores vão pedir para vc mudar isso... e ainda tem outra questão...

    - E se os 2 clientes tiverem VISA ?

    - E se o estabelecimento aceitar mais cartoes que o limite das formas de pagamento (O SiTEF aceita mais de 100 tipos de cartões)

    A forma de pagamento dever ser genérica... algo como:

    CARTAO

    TEF

  10. Oi Andrews,

    Me desculpe pela demora na resposta...

    Acho que seria traumático mudar isso novamente... a não ser que na PPLB seja necessário o uso de Strings...

    Achei melhor mudar para Integer, para garantir que a passagem de parâmetros seja facilmente mais acertada...

    Em relação a PPLA... inseri a seguinte rotina:


    function TACBrETQPpla.ConverteMultiplicador(Multiplicador : Integer) : String ;
    begin
    if (Multiplicador >= 0) and (Multiplicador Result := IntToStr(Multiplicador)
    else if Multiplicador Result := chr(Multiplicador+55) //Ex: 10 + 55 = 65 = A
    else
    Raise Exception.Create(ACBrStr('Informe um valor entre 0 e 24 para Multiplicador'));
    end ;
    [/code]

  11. É comum usar PChar em DLLs, pois devemos informar o início do Buffer onde a DLL irá ler/escrever, ou seja, um ponteiro para o inicio da String, e a String deve ter o tamanho suficiente (já alocado) para que a DLL possa escrever em sua área de memória com segurança....

    No D2010 a tradução natural de PChar seria PAnsiChar... portanto para mim parece estar correto...

  12. Olá pessoal,

    Alguem está tendo problemas nos métodos ArquivoMFD_DLL e EspelhoMFD_DLL com a Daruma ?

    Recebi o seguinte e-mail... mas não apliquei por achar que poderia causar problemas nos usuários de D2010

    Caro Daniel, eu estava tendo uns problemas aqui no acbrecfDaruma para gerar o arquivo daruma dll pois estava alterando o registro da daruma mas passando o path através do PANSICHAR nisso o Path só recebia a primeira letra do diretório, alterei para PANSISTRING, agora passando o caminho completo do diretório salvo.

    Criei uma função para apagar arquivos onde podemos apagar arquivos com conteúdo coringa (*.*) o qual é utilizado para apagar os arquivos *.mfd no diretório e também coloquei para apagar através do deletefile o arquivo RETORNO.bin.

    Segue em anexo o arquivo modificado pelo Rómulo

    ACBrECFDaruma.zip

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