Pessoal,
Estava tendo problemas com uma MP 4200 TH FI, que estava retornando "Erro Específico do Fabricante - Motivo 40".
Analisando o LOG, identifiquei que o problema estava no método AbreNaoFiscal.
Na linha 2319 da unit ACBrECFEscECF, inicia-se o seguinte código:
if Trim(CPF_CNPJ) <> '' then
Consumidor.AtribuiConsumidor(CPF_CNPJ,Nome,Endereco);
EscECFComando.CMD := 16;
Aparentemente não há nada de errado. Porém, se o CPF_CNPJ enviado for inválido, o comando será enviado à impressora e o erro descrito acima será retornado.
Neste caso, bastaria que o sistema alertasse o usuário e o mesmo fizesse a correção. Ok.
O problema é que, caso o CPF_CNPJ enviado seja VAZIO, o erro continua ocorrendo. E o motivo é que o conteúdo das variáveis da classe Consumidor ainda permanecem com os valores antigos.
Para reproduzir o problema no ACBrTeste basta realizar os seguintes passos:
- Selecionar o modelo ecfEscECF;
- Abre Não Fiscal
- Deixar em branco os dados do consumidor (ou informar um CPF valido) e OK;
- Fechar Não Fiscal;
O "Não Fiscal" será impresso corretamente.
- Abre Não Fiscal
- Informe 123 (simulando CPF inválido)
- Observar a mensagem de Erro
- Fechar Não Fiscal
- Abre Não Fiscal
- Deixar em branco os dados do consumidor (ou informar um CPF valido) e OK;
- Observar a mensagem de Erro
- Fechar Não Fiscal
A minha sugestão é modificar o código para:
if Trim(CPF_CNPJ) <> '' then
Consumidor.AtribuiConsumidor(CPF_CNPJ,Nome,Endereco)
else
Consumidor.Zera;
EscECFComando.CMD := 16;
[]´s
Everton Garcia