Olá, semana passada eu fui homologar o SiTef junto à Software Express e Certified. No pré-teste o ACBr atendeu a todos requisitos sem problema, mais chegando lá, foi informado que havia tido alterações no roteiro. E com isso, algumas alterações precisaram ser feitas no componente para atender ao roteiro.
Primeiro problema que eu tive foi: Ao cancelar uma transação pelo ADM, o componente não estava enviando a confirmação do cancelamento. Eu descobri que ele enviava o campo documento vazio, e retornava outro documento, quando ele tentava confirmar esse documento, ele não existia. A solução foi simples: passei um numero qualquer nos parâmetros no comando ADM.
Linha 673:
Antes:
Sts := FazerRequisicao( fOperacaoADM, 'ADM' ) ;
Depois:
Sts := FazerRequisicao( fOperacaoADM, 'ADM', 0, '00666', fRestricoes) ;
Outra era ao cancelar por falha na impressora, ele também deve confirmar a transação de cancelamento.
Linha 1214:
Antes:
if HouveImpressao then
FinalizarTransacao( (ImpressaoOk or fCancelamento),
Resp.DocumentoVinculado );
Depois:
if (HouveImpressao and fCancelamento) then
begin
DoExibeMsg( opmOK,
Format( CACBrTEFD_CliSiTef_TransacaoEfetuadaReImprimir,
[Resp.NSU]) ) ;
ConfirmarTransacoesPendentes;
end;
Linha 1290 a 1300:
Antes:
if not Confirma then
begin
if fCancelamento then
TACBrTEFD(Owner).DoExibeMsg( opmOK,
Format( CACBrTEFD_CliSiTef_TransacaoEfetuadaReImprimir,
[Resp.NSU]) )
else
TACBrTEFD(Owner).DoExibeMsg( opmOK, CACBrTEFD_CliSiTef_TransacaoNaoEfetuada );
end;
Depois:
if not Confirma then
begin
if fCancelamento then
begin
TACBrTEFD(Owner).DoExibeMsg( opmOK,
Format( CACBrTEFD_CliSiTef_TransacaoEfetuadaReImprimir,
[Resp.NSU]) ) ;
TACBrTEFD(Owner).ConfirmarTransacoesPendentes;
end
else
TACBrTEFD(Owner).DoExibeMsg( opmOK, CACBrTEFD_CliSiTef_TransacaoNaoEfetuada );
end;
Outro problema que eu tive e custei a descobri o problema foi na Certified que o homologador pediu para eu fazer uma reimpressão só do comprovante do lojista. O componente imprimia normalmente o comprovante do cliente e o comprovante completo, mais o do lojista ele não saia. Eu descobri que ele testa se a primeira via tem texto, e se sim, ele imprime, senão passa direto. Como a via do lojista é a segunda via somente, o ACBr não imprimia nada.
Linha 380:
Antes:
fpQtdLinhasComprovante := fpImagemComprovante1aVia.Count;
Depois:
if (fpImagemComprovante1aVia.Count = 0) and (fpImagemComprovante2aVia.Count > 0) then
begin
fpImagemComprovante1aVia.Text := fpImagemComprovante2aVia.Text;
fpImagemComprovante2aVia.Clear;
end;
fpQtdLinhasComprovante := fpImagemComprovante1aVia.Count;
Uma coisa engraçada foi que o homologador (gente boa pra caramba por sinal), me disse que é a coisa mais normal o pessoal não imprimir a via do lojista. O que me leva acreditar que muita gente usa o ACBr. Inclusive, enquanto eu estava homologando a primeira parte na SE, um rapaz que estava fazendo homologação também usava o ACBr, e nós nos unimos para resolver esses problemas.
Aqui vai algumas recomendações: Primeira coisa é sempre preencher os dados do software no sistema na propriedade Identificacao. Segundo é sempre conferir (talvez até colocar obrigatório para SiTef), se está enviando a restrição {TipoTratamento=4}. O pessoal usou o DUMP para verificar se estava indo essa restrição. No mais, parabéns ao componente. Atendeu corretamente à todos os requisitos exigidos, inclusive ao Cielo Prêmia.