@Daniel Simoes Boa tarde!
Se possível adicionar a contribuição, para alterar o método de cancelamento "TACBrTEFDCliSiTef.CNC" para respeitar as restrições enviadas, afim de não gerar a mensagem de que o PinPad não suporta QRCode. Ex.: {DevolveStringQRCode=1}
function TACBrTEFDCliSiTef.CNC(Rede, NSU: String; DataHoraTransacao: TDateTime;
Valor: Double): Boolean;
var
Restr : AnsiString;
Sts : Integer;
begin
Respostas.Values['146'] := FormatFloat('0.00',Valor);
Respostas.Values['147'] := FormatFloat('0.00',Valor);
Respostas.Values['515'] := FormatDateTime('DDMMYYYY',DataHoraTransacao) ;
Respostas.Values['516'] := NSU ;
Restr := fRestricoes;
if Restr = '' then
Restr := '[10]';
Sts := FazerRequisicao( fOperacaoCNC, 'CNC', Valor, '', Restr);
if Sts = 10000 then
Sts := ContinuarRequisicao( CACBrTEFCliSiTef_ImprimeGerencialConcomitante ) ;
Result := ( Sts = 0 ) ;
if not Result then
AvaliaErro( Sts )
else
if not CACBrTEFCliSiTef_ImprimeGerencialConcomitante then
ProcessarResposta;
end;
A questão do Valor ali por padrão é 0 quando não informado.
Fonte anexo.
ACBrTEFDCliSiTef.pas