Ir para conteúdo
  • Cadastre-se

dev botao

XML da CCe para ser armazenado


Cantu
  • Este tópico foi criado há 4520 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Estou implementando a carta de correção no meu ERP usando o ACBr.

Pensei em gravar o XML do retorno da CCe no BD assim:

tqCCeXML.asString := UTF8Encode(NFe.WebServices.CartaCorrecao.RetWS);

No entanto, esse é o retorno do processamento pelo webservice, e não o XML que deve ser armazenado e disponibilizado para o cliente (item 4.9 na NT2011.003). Dei uma procurada no código do ACBr, e me parece que o XML "correto" só é gerado no método executar quando o componente está configurado para gravar em arquivos:

              if FConfiguracoes.Geral.Salvar then

                 FConfiguracoes.Geral.Save(FCCe.Evento.Items[i].InfEvento.chNFe + '-ProcEventoNFe.xml', wProc.Text);

              if FConfiguracoes.Arquivos.Salvar then

                 FConfiguracoes.Geral.Save(FCCe.Evento.Items[i].InfEvento.chNFe + '-ProcEventoNFe.xml', wProc.Text, FConfiguracoes.Arquivos.GetPathCCe);

Ou seja, aparentemente não há uma forma de recuperar esse XML a não ser configurando o componente para gravar em arquivo, e depois lendo o arquivo pra dentro do BD.

A meu ver, deveria ser disponibilizada uma forma de recuperar esse XML diretamente via método/propriedade do componente, sem necessidade de gravar em arquivo. Dúvida: Isso vai ser (ou está sendo) implementado? Perdi alguma coisa?

Link para o comentário
Compartilhar em outros sites

Cantu, também estou com o mesmo problema. Não utilizo o salvar automático do componente, salvo direto do banco, e qndo há a necessidade do XML, gero à partir da base de dados.

Com a NF-e uso da seguinte forma:

qryNF.ParamByName('NF_XML').Value := ACBrNFe1.NotasFiscais.Items[i].XML;

Ma com a CC-e não encontrei nenhuma propriedade.

Link para o comentário
Compartilhar em outros sites

Eu fiz uma pequena alteração no componente pra ele disponibilizar o XML "correto" após o envio da CCe ter sido aprovado. Já enviei pro André dar uma olhada e aprovar (ou reprovar, ehehe). Foram apenas 3 linhas de código inseridas, mas como não estou familiarizado com o código dos componentes, não sei se fiz da forma "correta".

Link para o comentário
Compartilhar em outros sites

Eu fiz uma pequena alteração no componente pra ele disponibilizar o XML "correto" após o envio da CCe ter sido aprovado. Já enviei pro André dar uma olhada e aprovar (ou reprovar, ehehe). Foram apenas 3 linhas de código inseridas, mas como não estou familiarizado com o código dos componentes, não sei se fiz da forma "correta".

Cantu... poderia disponibilizar aqui para que possa dar uma olhada?

Link para o comentário
Compartilhar em outros sites

ACBrNFeWebServices.pas

Adicionar:

CCeRetorno.retEvento.Items[j].RetInfEvento.XML:=wProc.Text;
na linha 3015. No pcnRetCCeNFe.pas:
  TRetInfEvento = class

  private

    FId: String;

    FtpAmb: TpcnTipoAmbiente;

    FverAplic: String;

    FcOrgao: Integer;

    FcStat: Integer;

    FxMotivo: String;

    FchNFe: String;

    FtpEvento: Integer;

    FxEvento: String;

    FnSeqEvento: Integer;

    FCNPJDest: String;

    FemailDest: String;

    FdhRegEvento: TDateTime;

    FnProt: String;

    FXML: AnsiString;  // Adicionada

  public

  published

    property Id: string  read FId write FId;

    property tpAmb: TpcnTipoAmbiente read FtpAmb write FtpAmb;

    property verAplic: string  read FverAplic write FverAplic;

    property cOrgao: Integer read FcOrgao write FcOrgao;

    property cStat: integer read FcStat write FcStat;

    property xMotivo: string read FxMotivo write FxMotivo;

    property chNFe: String read FchNFe write FchNFe;

    property tpEvento: Integer read FtpEvento write FtpEvento;

    property xEvento: String read FxEvento write FxEvento;

    property nSeqEvento: Integer read FnSeqEvento write FnSeqEvento;

    property CNPJDest: string read FCNPJDest write FCNPJDest;

    property emailDest: String read FemailDest write FemailDest;

    property dhRegEvento: TDateTime read FdhRegEvento write FdhRegEvento;

    property nProt: String read FnProt write FnProt;

    property XML: AnsiString read FXML write FXML; // Adicionada

  end;
Depois, na sua aplicação, após enviar pro webservice:
tqCCeXML.asString := UTF8Encode(Nfe.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[0].RetInfEvento.XML);

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • 1 mês depois ...
  • Consultores

Bom dia Fagner,

Esse fonte consta as linhas mencionadas pelo Cantu desde 20/03/2012, favor verificar se o seu não esta com pendencia de atualização.

Para corrigir o problema de maneira simples, apague o fonte pcnRetCCeNFe.pas da pasta e baixe novamente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4520 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.