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á 1246 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • 3 semanas depois ...
Postado

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;

 

 

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