Ir para conteúdo
  • Cadastre-se

izaiasavila

Membros
  • Total de ítens

    4
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

izaiasavila's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputação

  1. Desculpa qq colocação absurda que tenha falado sobre CNF, pois não sabia que podia abrir um cupom não fiscal (rsrsrs ) Fiz o seguinte teste: Utilizando o TAcbrECF e o TAcbrTefD ACBrTEF.MultiplosCartoes := False; ACBrTEF.AutoEfetuarPagamento := False; ACBrTEF.AutoFinalizarCupom := False; ACBrECF.AbreNaoFiscal; ACBrECF.RegistraItemNaoFiscal('03', 5, ''); // 03 indice cnf (recebimento da minha ecf) -- 5 é o valor ACBrECF.SubtotalizaNaoFiscal; // chama o pagamento via cartao do tef na moeda 04 no valor de 5 reais if ACBrTEF.CRT( 5, '04', dmECF.ACBrECF.NumCOO ) then begin ACBrECF.EfetuaPagamentoNaoFiscal('04', 5); // efetua o pagamento nao fiscal com moeda 04 no valor de 5 reais ACBrECF.FechaNaoFiscal; // fecha o cupom nao fiscal ACBrTEF.ImprimirTransacoesPendentes; // imprimi as transacoes tef no vinculado end else dmECF.ACBrECF.CancelaNaoFiscal; // cancela o cnf caso nao consiga fazer a transacao tef!! agora tive que fazer uma modificação na parte do componente TAcbrTefD pois ele não conta com essa questão de recebimento não fiscal, fiz uma modificação simples (pode ser que precise fazer uma modicacao mais profunda para funcionar esses parametros MultiplosCartoes,AutoEfetuarPagamento,AutoFinalizarCupom, pois testei sem eles!!) Unit: ACBrTEFD function TACBrTEFD.EstadoECF : AnsiChar; Var Retorno : String ; begin Retorno := ' ' ; try OnInfoEcf( ineEstadoECF, Retorno ) ; except On E : Exception do raise EACBrTEFDECF.Create(E.Message); end; Result := upcase( padL(Retorno,1)[1] ); if not (Result in ['L','V','P','C','G','R','O','N']) then raise EACBrTEFDECF.Create( ACBrStr( 'Retorno de "OnInfoEcf( ineEstadoECF, Retorno )" deve ser:'+sLineBreak+ '"L" = Livre'+sLineBreak+ '"V" = Venda de Itens'+sLineBreak+ '"P" - Pagamento (ou SubTotal efetuado)'+sLineBreak+ '"C" ou "R" - CDC ou Cupom Vinculado'+sLineBreak+ '"G" ou "R" - Relatório Gerencial'+sLineBreak+ '"N" - Comprovante não fiscal'+sLineBreak+ '"O" - Outro' ) ); end; Unit: ACBrTEFDClass Procedure TACBrTEFDClass.VerificarTransacaoPagamento(Valor : Double ); var SaldoAPagar : Double ; begin Valor := RoundTo( Valor, -2); if (Valor <= 0) then raise Exception.Create( ACBrStr( 'Valor inválido' ) ); { Lendo o SubTotal do ECF } with TACBrTEFD(Owner) do begin if not (EstadoECF in ['V','P','N']) then raise Exception.Create( ACBrStr('ECF deve estar em Venda ou Pagamento')); SaldoAPagar := SubTotalECF ; RespostasPendentes.SaldoAPagar := SaldoAPagar ; if (Valor > RespostasPendentes.SaldoRestante ) then raise Exception.Create( ACBrStr( 'Operação TEF deve ser igual ao '+ 'Saldo a Pagar' ) ); if (not MultiplosCartoes) and (Valor < SaldoAPagar) then raise Exception.Create( ACBrStr( 'Multiplos Cartões não habilitado.' + sLineBreak + 'Valor da Operação TEF deve ser igual ao Saldo a Pagar' ) ); if MultiplosCartoes and (NumeroMaximoCartoes > 0) and // Tem multiplos Cartoes ? (Valor <> RespostasPendentes.SaldoRestante) and // Valor é diferente do Saldo Restante a Pagar ? ((NumeroMaximoCartoes - RespostasPendentes.Count) <= 1) then // Está no último cartão ? raise Exception.Create( ACBrStr( 'Multiplos Cartões Limitado a '+ IntToStr(NumeroMaximoCartoes)+' operações.'+sLineBreak+ 'Esta Operação TEF deve ser igual ao Saldo a Pagar' ) ); end; VerificaAtivo; { VisaNET exige um ATV antes de cada transação } end; E na minha apliacação no evento: ACBrTEFInfoECF(Operacao: TACBrTEFDInfoECF; var RetornoECF: String); do componente: case Operacao of ineEstadoECF: begin case dmECF.ACBrECF.Estado of estLivre : RetornoECF := 'L'; estVenda : RetornoECF := 'V'; estPagamento : RetornoECF := 'P'; estRelatorio : RetornoECF := 'R'; estNaoFiscal : RetornoECF := 'N'; else RetornoECF := 'O'; end; end; Será que alguem tem alguma sugestão ? será que essa modificações estão ok mesmo ? Eu fiz o teste aqui e funcinou (como no exemplo acima)... Espero ter ajudado alguem que passou pela mesma situação....
  2. Já tentei utilizar esse comando NaoFiscalCompleto, porem ele precisa de um numero do CNF, que no caso eu não tenho já o cliente fez essa compra anteriormente e não estou abrindo um novo cupom. Será que fazer pelo relatorio gerencial pode ser ?
  3. Senhores, Um cliente trabalha com uma moeda chamada carteira, que ao ser utilizada na venda, esse valor será pago depois (outro dia), com isso ele deseja fazer uma transacao TEF para fazer esse pagamento e agora ? Procurei em varios foruns e conseguir muito pouca coisa sobre isso! achei alguma coisa chamada "Recebimento Não Fiscal", porem nessas novas impressoras (termicas) um recebimento vinculado só pode ser aberto em cima de um cupom fiscal (pelo menos foi o que eu entendi procurando por ai) e a solução seria abrir um relatorio gerencial. Rotina que eu pensei: ECF.AbreGerencial; TEF.CRT(Valor, FormPag, CCO); ECF.FechaRelatorio; TEF.ImprimirTransacoesPendentes; Será que essa logica está correta ? é possivel/legal fazer isso ? Fiz umas implementacoes e conseguir fazer isso, posso até posta para melhor analise, mais preciso saber se esse procedimento é correto e se é algo legal (na lei)! Grato,
  4. Senhores, Fiz a homologação dia 31/01 com o TACBrTEFD utilizando: MultiplosCartoes = True; AutoEfetuarPagamento = True; NumeroMaximoCartoes = 2; (achei uma quantidade boa por conta do tempo da ECF na hora de imprimir os vinculados) Homologuei em todas as bandeiras: Cielo/Amex (Seven) e RedeCard/Hiper/TecBan (SoftwareExpress). O componente é muito completo e só fiz uma modificação no componente (que precisei) e não sei se está correta mais funcionou no meu sistema. O checklist dos caras é muito próximo de como eles testam lá, o segreto é testar bem sua aplicação e não tera tantos problemas, homoloquei no primeiro dia Cielo/Amex logo de manhã não teve nenhum erro grande, somente besteiras (3 erros) e no segundo dia fiz RedeCard/Hiper/TecBan tranquilo demais e o unico problema que demorei mais pra corrigir foi essa alteração do metodo (relavada logo abaixo). O que me ajudou foi conhecer bem o componente antes de ir homologar. 1. Alteração Feita: Na Unit: ACBrTEFDClass No metodo TACBrTEFDClass.ProcessarResposta eu tirei with TACBrTEFD(Owner) do começo da procedure e coloquei ele especificamente nas propriedades que achei que fosse dele, pois existe algumas propriedades como Resp que tem no TACBrTEFDClass e no TACBrTEFD e com isso algumas vezes ele não fazia o processo correto. (Logo a baixo vou explicar o problema): Metodo Anterior: procedure TACBrTEFDClass.ProcessarResposta ; var RespostaPendente: TACBrTEFDRespTXT; begin VerificarIniciouRequisicao; with TACBrTEFD(Owner) do begin GravaLog( Name +' ProcessarResposta: '+Req.Header ); EstadoResp := respProcessando; if Resp.QtdLinhasComprovante > 0 then begin { Cria c�pia do Objeto Resp, e salva no ObjectList "RespostasPendentes" } RespostaPendente := TACBrTEFDRespTXT.Create ; try RespostaPendente.Assign( Resp ); RespostasPendentes.Add( RespostaPendente ); ImprimirRelatorio ; if Assigned( OnDepoisConfirmarTransacoes ) then OnDepoisConfirmarTransacoes( RespostasPendentes ); finally RespostasPendentes.Clear; end; end else if Resp.TextoEspecialOperador <> '' then DoExibeMsg( opmOK, Resp.TextoEspecialOperador ) end ; end; Metodo Corrigido por mim: procedure TACBrTEFDClass.ProcessarResposta ; var RespostaPendente: TACBrTEFDRespTXT; begin VerificarIniciouRequisicao; GravaLog( Name +' ProcessarResposta: '+Req.Header ); TACBrTEFD(Owner).EstadoResp := respProcessando; if Resp.QtdLinhasComprovante > 0 then begin { Cria cópia do Objeto Resp, e salva no ObjectList "RespostasPendentes" } RespostaPendente := TACBrTEFDRespTXT.Create ; try RespostaPendente.Assign( Resp ); TACBrTEFD(Owner).RespostasPendentes.Add( RespostaPendente ); ImprimirRelatorio ; with TACBrTEFD(Owner) do begin if Assigned( OnDepoisConfirmarTransacoes ) then OnDepoisConfirmarTransacoes( RespostasPendentes ); end ; finally TACBrTEFD(Owner).RespostasPendentes.Clear; end; end else if Resp.TextoEspecialOperador <> '' then TACBrTEFD(Owner).DoExibeMsg( opmOK, Resp.TextoEspecialOperador ) end; Problema: Ao fazer uma venda, com 2 cartoes, os dois cartoes sao aprovado no momento em está ocorrendo a impressao do segundo cartão (a forma de pagamento ainda não foi confirmado na ECF do segundo cartão), eu fecho a apliacao (desligo a maquina ou dou ctrl+alt+del) e ao voltar no sistema ele faz toda aquela verificação pelo proprio componente utilizando o "Inicializar". quando ele vai fazer o tratamento de pendencias ele vai dar o NCN da segunda transação (que não foi confirmada) que é a mensagem em showmessage e logo depois ele deveria fazer a CNC que seria o cancelamento pela GP, esse segundo passo não estava ocorrendo por conta desse with, ai fiz essa modificação e funcionou, espero que ajude. 2. Para utilizar a propriedade de MultiplosCartoes := True eu sempre vejo se for precisar fazer uma operacao MultiplosCartoes, caso não precise, coloco como False (sempre verificando se existe RespostasPendentes.Count = 0 para mexer nessa propriedade, pois ele tem esse tratamento). 3. Depois de utilizar o metodo FinalizarCupom; eu sempre verifico se RespostasPendentes.Count > 0 para enviar ImprimirTransacoesPendentes; pois se você fizer um pagamento com cartao e depois fazer o resto com dinheiro a transacao nao sai, acredito que isso é por conta da propriedade AutoEfetuarPagamento = True que a forma de pagamento Dinheiro(comando enviado pelo ACBRECF) nao tem os tratamento do componente tef, mais esse if resolve o problema da impressão no final. Espero ter ajudo alguem e valeu a todos vocês que fazem o Acbr!!!
×
×
  • 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...