Boa tarde, hoje estou implementando a CC-e no meu sistema e efetuando testes, encontrei alguns problemas, como não encontrei soluções no forum, estou postando as modificações que efetuei para corrigi-las e se adequarem ao que eu preciso, segue:
--O xml de retorno, mesmo com erro, o componente, devolvia a mensagem "Lote de Evento Processado";
Como solucionei:
A Função abaixo
function TNFeCartaCorrecao.Executar: Boolean;
linha 2945 +/-
como estava
FcStat := CCeRetorno.cStat;
FxMotivo := CCeRetorno.xMotivo;
FMsg := CCeRetorno.xMotivo;
FTpAmb := CCeRetorno.tpAmb;
Result := (CCeRetorno.cStat = 128) or (CCeRetorno.cStat = 135) or (CCeRetorno.cStat = 136);
Como solucionei:
FcStat := CCeRetorno.cStat;
FxMotivo := CCeRetorno.xMotivo;
/// Alterado linha abaixo para retornar a mensagem da informação do Evento e não o xMotivo pois o mesmo já
/// se encontra na classe acima "FxMotivo"
FMsg := CCeRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
FTpAmb := CCeRetorno.tpAmb;
/// Alterado a linha Abaixo para Result=True apenas se o lote foi processado e o evento retornou sucesso e não rejeição.
Result := (CCeRetorno.cStat = 128) and ((CCeRetorno.retEvento.Items[0].RetInfEvento.cStat = 135) or (CCeRetorno.retEvento.Items[0].RetInfEvento.cStat = 136));
--Quando o envio era normal processo "EnviarCartaCorrecao()" estava sempre retornando Falso e a mensagem de "Lote de Evento Processado";
Como solucionei:
A função abaixo não estava retornando valor
function TACBrNFe.EnviarCartaCorrecao(idLote: Integer): Boolean;
linha 317 +/-
Como estava
if not WebServices.CartaCorrecao.Executar then
Solução
Result:=WebServices.CartaCorrecao.Executar;
if not Result then
--Com essas mudanças o componente começou a retornar a mensagem de rejeito ou sucesso no envio corretamente e o resultado do componente tambem.
[]s
Wilson