Ir para conteúdo
  • Cadastre-se

dev botao

Sat Ler Xml Do Bd


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

Recommended Posts

Pessoal, estou com um pequeno problema.. mais um

 

Eu gravo o XML gerado no Banco de dados, e quando vou fazer o cancelamento no demo do ACBR tem a opção

 

   ACBrSAT1.CFe.LoadFromFile( OpenDialog1.FileName );
    ACBrSAT1.CFe2CFeCanc;
 
porém eu precisava carregar o XML que está no Banco de dados...
 
estou tentando dessa forma..
 
   ACBrSAT1.CFe.AsXMLString   := Vendas.FieldbyName('arquivoXML').asstring;
    ACBrSAT1.CFe2CFeCanc;
 
desta forma da um erro...
 
aproveitando este post, no caso do Cancelamento eu devo carregar o XML que gerei ou o XML que o SAT me retornou??

 

Editado por netsolutions
Link para o comentário
Compartilhar em outros sites

aqui eu fiz um exemplo pratico para impressao na verdade. Coloquei 2 editbox e carreguei para o componente o conteudo deles antes de mandar imprimir. Quando vc faz um showmessage, o xml nao aparece truncado nem nada?

Vc nao consegue debugar e ver o valor dos campos do componente depois de carregar, para ver se realmente carregou?

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Tente assim:
 

ACBrSAT1.CFe.LoadFromFile( OpenDialog1.FileName );
ACBrSAT1.CancelarUltimaVenda; 

(o ACBrSAT gera o XML de cancelamento automaticamente)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

sossystem , Aparece o XML na Integra no showmessage não trunca não.. aparentemente tudo OK

 

Daniel, nesse caso ele procura o caminho do Arquivo, se eu passar a string com o XML não vai funcionar vai??

e se usar o metodo CancelarUltimaVenda vai cancelar a última?? eu gostaria de deixar o usuario escolher a venda que quer cancelar, por isso precisava carregar o xml para cancelar a respeciva venda.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O método LoadFromFile sempre tentará ler do disco...

 

Você pode usar a atribuição de uma String ao XML:

ACBrSAT1.CFe.AsXMLString :=  SuaStringContedoOXML;
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Tenta fazer o que o Daniel falou. Acredito que vc esteja achando que isso vai cancelar a ultima venda, mas na verdade nao, o nome que a sefaz deu ao metodo é CancelarUltimaVenda, mas na verdade ele cancela o XML que vc carregou no componente (desde que seja de até 30min atras)

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Também estou com problemas para ler o Xml do BD.
Por vários motivos, tive que implementar à parte toda a lógica de impressão dos extratos de Venda e Cancelamento.
O meu problema é no extrato de cancelamento.  Como optei por não depender de I/O em disco para ficar lendo
arquivos xml, eu faço a carga do componente a partir dos campos de meu BD, usando XXX.AsXMLString.
Funciona para carregar o xml de venda, mas não para o de cancelamento:

ACBrSAT.CFe.AsXMLString     := Qcupons.FieldByName ('XMLV').asAnsiString;  => Funciona
ACBrSAT.CFeCanc.AsXMLString := Qcupons.FieldByName ('XMLC').asAnsiString;  (usando este comando, as tags do componente vêm em branco)

Para contornar o problema, tive que momentâneamente usar o arquivo em disco, como mostrado abaixo:

ACBrSAT.CFe.AsXMLString     := Qcupons.FieldByName ('XMLV').asAnsiString;  => Funciona
ACBrSAT.CFeCanc.LoadFromFile ('C:\S@T\XML\Cancelamento\CFe35150711111111111111591234567890000477620232-can.xml');  => Funciona

Observação:  o comando abaixo também não teve efeito:

ACBrSAT.CFe.AsXMLString     := Qcupons.FieldByName ('XMLV').asAnsiString;  => Funciona
ACBrSAT.CFeCanc.SetXMLString (Qcupons.FieldByName ('XMLC').asAnsiString);  (usando este comando, as tags do componente vêm em branco)


Resumindo:  CFeCanc.LoadFromFile funciona, e CFeCanc.AsXMLString não!

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Por favor seja mais objetivo... Qual é exatamente o problema que você quer reportar ?

Lembre-se que, conforme anunciei nesse post só estou verificando problemas no "Trunk2"

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...

Retomando o assunto:
Quando de uma reimpressão do cupom de cancelamento, estou carregando o xml da venda:

ACBrSAT.CFe.AsXMLString := Qcupons.FieldByName ('XMLV').asAnsiString;

ACBrSAT.CFeCanc.LoadFromFile ('E:\EXE\xxx\Cancelamentos\201509\ADC35150908930755000105590000518170000081399960.XML');

Deste jeito está funcionando, mas tenho também o xml de cancelamento armazenado no meu BD, e quando tento carregá-lo pelo comando:

ACBrSAT.CFeCanc.AsXMLString := Qcupons.FieldByName ('XMLC').asAnsiString;

os "Dados do Cupom Fiscal de Cancelamento" saem em branco no cupom.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Testei aqui, e tudo está funcionando a contento...

Provavelmente você está carregando com o AsXMLString, a versão de envio (sem o ID)...

Verifique se o XML de Cancelamento que você está armazenando, é o XML de Resposta do SAT.. (ele deve conter a Tag ID)

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...

Bom  desculpem retomar esse assunto, mas  estou com um problema.. e acho que cai bem aqui.

Todo mês precisaremos enviar os Xmls gerados pelo SAT para o contador, até ai tudo bem, bom gravei os XMLs no BD, alguém sabe como eu faria para exportar esses XMLs?? para gerar os arquivos referentes a cada cupom emitido?

é possível carrega-los no acbr para gerar tudo de uma vez??

Link para o comentário
Compartilhar em outros sites

  • Membros

O ACBr não gera os XMLs dessa forma que você está pensando.

Nessa sua idéia você deve converter o XML gravado no seu banco de dados para um arquivo XML ou mesmo pode enviar ao seu contador os arquivos gerados na pasta Vendas.

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Jugger72

Para carregar o XML no ACBrSAT.CFeCanc você deve usar:

ACBrSAT.CFeCanc.SetXMLString( StringXML );
ACBrSAT.CFeCanc.Gerar( True );

Quando você carrega a string do XML sem ser pelo LoadFromFile ele só armazena, mas não lê e distribui para as suas propriedades o conteúdo do XML, para isso você deve usar o Gerar.

 

Sei que faz tempo que você mandou, mas sou novo aqui e vi só hoje esse tópico.
Valeu, falou... 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

  With tb512 do begin
         First;
         prog.Properties.Max := tb512.RecordCount;
         While not Eof do begin
            DtmFisco.NFE.NotasFiscais.Clear;
            DtmFisco.NFE.NotasFiscais.LoadFromString(tb512.fieldByName('XML').AsString);
            If somentegerar.Checked then
               DtmFisco.NFE.NotasFiscais.Items[0].GravarXML()
            Else Begin
               DtmFisco.NFe.NotasFiscais.Assinar;
               DtmFISCO.NFE.Consultar;
               SRetorno := DtmFisco.NFE.WebServices.Consulta.cStat;
               If ((SRetorno = 100) Or (SRetorno = 101) Or (SRetorno = 150)) then
                  DtmFisco.NFE.NotasFiscais.Items[0].GravarXML()
               Else lista.Items.Add(tb512.fieldByName('NOTFIS').AsString+' Motivo - '+DtmFisco.NFE.WebServices.Consulta.XMotivo);
            End;
            prog.Position := prog.Position + 1;
            Application.ProcessMessages;
            Next;
         End;
         prog.Positio

Link para o comentário
Compartilhar em outros sites

  • Moderadores
35 minutos atrás, Sergio Back disse:

  With tb512 do begin
         First;
         prog.Properties.Max := tb512.RecordCount;
         While not Eof do begin
            DtmFisco.NFE.NotasFiscais.Clear;
            DtmFisco.NFE.NotasFiscais.LoadFromString(tb512.fieldByName('XML').AsString);
            If somentegerar.Checked then
               DtmFisco.NFE.NotasFiscais.Items[0].GravarXML()
            Else Begin
               DtmFisco.NFe.NotasFiscais.Assinar;
               DtmFISCO.NFE.Consultar;
               SRetorno := DtmFisco.NFE.WebServices.Consulta.cStat;
               If ((SRetorno = 100) Or (SRetorno = 101) Or (SRetorno = 150)) then
                  DtmFisco.NFE.NotasFiscais.Items[0].GravarXML()
               Else lista.Items.Add(tb512.fieldByName('NOTFIS').AsString+' Motivo - '+DtmFisco.NFE.WebServices.Consulta.XMotivo);
            End;
            prog.Position := prog.Position + 1;
            Application.ProcessMessages;
            Next;
         End;
         prog.Positio

Boa tarde, Sergio Back.

Tópico antigo. Sugiro que crie um novo, relatando sua dúvida ou problema.

  • Curtir 1
Equipe ACBr

Felipe Eduardo Resende Mesquita

Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2053 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.

The popup will be closed in 10 segundos...