Bom dia Luiz,
Os XMLs alem da versão ser diferente a SEFAZ-Autorizadora também é, dessa forma não da para fazer comparações.
Outra coisa importante, em nenhum Manual ou Nota Técnica ou na Legislação consta que ao cancelar um CT-e o protocolo de autorização deve ser substituído pelo de cancelamento.
Infelizmente a SEFAZ-MT no Web Services da versão 2.00 do CT-e (espero que consertem na versão 3.00) ao realizar uma consulta se o CT-e estiver cancelado é retornado o protocolo de cancelamento, sendo que o correto seria retornar o protocolo de autorização e o evento de cancelamento vinculado ao CT-e em questão.
O componente por sua vez acaba pegando o protocolo de cancelamento uma vez que o de autorização não é retornado.
Na unit ACBrCTeWebServices temos o seguinte fragmento de código que comprova o que foi dito acima.
Atualiza := (NaoEstaVazio(CTeRetorno.XMLprotCTe));
if Atualiza and
TACBrCTe(FPDFeOwner).cStatCancelado(CTeRetorno.CStat) then
Atualiza := False;
if (CTeRetorno.cUF = 51) and (CTeRetorno.CStat = 101) then
Atualiza := True;
Inicialmente a variável Atualizar recebe o valor True caso temos um retorno que contenha o grupo <protCTe>.
Depois essa variável poderá se tornar False caso o status do CT-e seja cancelado.
Em seguida poderá receber o valor True caso a UF seja 51 (MT) e o status seja 101 (cancelado).
A variável Atualiza sendo True faz com que o XML caso esteja com o protocolo de autorizado, faz com que seja atualizado, ou seja, o protocolo de autorização seja substituído pelo de cancelamento.
Como dito anteriormente isso esta errado, mas infelizmente a SEFAZ-MT ao consultar um CT-e cancelado não retorna o protocolo de autorizado mais o evento de cancelamento.
Se removermos o IF em negrito (acima) um XML que esteja somente assinado, ao realizar essa consulta, corre o risco de ficar sem o protocolo, principalmente se este foi cancelado.
Não sei se ficou claro.
Mas procure fazer testes na SEFAZ-MT e na de MG com a versão 3.00 para ver o comportamento de de ambas.
Faça o seguinte teste.
Emita um CT-e na versão 3.00 na SEFAZ-MT, o XML é para ficar com o protocolo de autorizado.
Depois remova o protocolo de autorização, carregue o XML e realize uma consulta, é para repor o protocolo de autorizado.
O próximo passo é realizar o cancelamento desse CT-e.
Remova novamente o protocolo de autorizado, carregue o XML e realize a consulta, verifique se o XML recebeu o protocolo de autorizado (correto) ou o de cancelamento.
Depois fação o teste acima com a SEFAZ-MG e compare o resultado de ambas.