Ir para conteúdo
  • Cadastre-se

dev botao

Regerar XML de cupom eletronico já emitido


Ver Solução Respondido por André Ferreira de Moraes,
  • Este tópico foi criado há 1008 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Estou precisando regerar o XML de cupons já existentes no meu ERP.

Estou tentando usar o comando ACBRSAT.CFE.GERARXML(FALSE), porem ao gerar este xml não gera assinado. Como faço para gerar este xml assinado?

Baixar o xml do site da sefaz não da certo pois são muitos cupons

Segue exemplo de xml gerado sem assinatura.

CFE23190214200166000166599000100130000961991084false.XML

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

Quem assina o XML é o aparelho, se vc preencher todas as informações e chamar o método ACBRSAT.CFE.GERARXML(TRUE) o XML será gerado com as tags que o aparelho deveria preencher.

  • Curtir 1
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Olá Mauro, se for muita coisa, você pode consultar um webservice da sefaz que retorna os lotes, e assim é possível processar os lotes em massa, criando um script que separa os XMLs do Lote.

Se for poucos lotes você pode baixar manualmente no site SGRSAT.

Vou enviar aqui o script em delphi para separar o xml dos lotes. 

no script eu usei um Memo para separar os arquivos exibindo na tela, mas vc pode usar um TStringList;

 

    XMLDocument1.LoadFromFile(OpenDialog1.FileName); //xml do lote

    for i := 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do
    begin
        if XMLDocument1.DocumentElement.ChildNodes[I].LocalName = 'LoteCFe' then
        begin
            qtdProcessado := 0;
            qtdImportado := 0;
            for j := 0 to XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes.Count -1 do
            begin
                if XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes[j].LocalName = 'CFe' then
                begin
                    qtdProcessado := qtdProcessado + 1;
                    chave := ExibirSomenteNumero(XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes[j].ChildNodes['infCFe'].Attributes['Id']);
                    cnpj  := ExibirSomenteNumero( XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes[j].ChildNodes['infCFe'].ChildNodes['emit'].ChildNodes['CNPJ'].Text);
                    emiss := Copy(ExibirSomenteNumero( XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes[j].ChildNodes['infCFe'].ChildNodes['ide'] .ChildNodes['dEmi'].Text),1,6);
                    numcfe := XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes[j].ChildNodes['infCFe'].ChildNodes['ide'] .ChildNodes['nCFe'].Text;
                    nserie_sat := XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes[j].ChildNodes['infCFe'].ChildNodes['ide'] .ChildNodes['nserieSAT'].Text;
                    path := pastaDoSAT+'..\'+nserie_sat+'\'+emiss+'\Venda\';
                    ForceDirectories(path);
                    arquivo := path+'AD'+chave+'.xml';
                    if not FileExists(arquivo) then
                    begin
                        MEMO1.Lines.Clear;
                        Memo1.Lines.Add(
                            StringReplace(
                                XMLDocument1.DocumentElement.ChildNodes[I].ChildNodes[j].XML,
                                ' xmlns="http://www.fazenda.sp.gov.br/sat"',
                                '',[]
                            )
                        );

                        Memo1.Lines.SaveToFile(arquivo);
                        MemoLog.Lines.Add('CFe ' + numCfe+' gravado em '+arquivo);
                        qtdImportado := qtdImportado + 1;
                    end else
                    begin
                        MemoErro.Lines.Add('CFe ' + numCfe+' - XML JÁ EXISTE - NÃO IMPORTADO ' + arquivo);
                    end;
                end;
            end;
        end;
    end;

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1008 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.