Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Boa tarde, atualizei hoje os fontes acbr e começou a não importar todas as notas do arquivo de lote, somente a primeira. Sei que existia alguma rotina onde era feito um reconheçimento se o arquivo era de lote ou não mas como alterou os fontes não achei mais. O código abaixo achei estranho pois nem sempre um arquivo rps terá em seu nome "-rps.xml", estaria ali o erro?

 

function TNotasFiscais.LoadFromFile(CaminhoArquivo: String;
  AGerarNFSe: Boolean = True): Boolean;
var
  XMLStr: String;
  XMLUTF8: AnsiString;
  i, l: integer;
  MS: TMemoryStream;
begin
  MS := TMemoryStream.Create;
  try
    MS.LoadFromFile(CaminhoArquivo);
    XMLUTF8 := ReadStrFromStream(MS, MS.Size);
  finally
    MS.Free;
  end;

  l := Self.Count; // Indice da última nota já existente

  // Converte de UTF8 para a String nativa da IDE //
  XMLStr := DecodeToString(XMLUTF8, True);
  Result := LoadFromString(XMLStr, AGerarNFSe);

  if Result then
  begin
    // Atribui Nome do arquivo a novas notas inseridas //
    for i := l to Self.Count - 1 do
    begin
      if Pos('-rps.xml', CaminhoArquivo) > 0 then
        Self.Items.NomeArqRps := CaminhoArquivo
      else
        Self.Items.NomeArq := CaminhoArquivo;

    end;
  end;
end;

  • Membros Pro
Postado (editado)

Estive pesquisando o porque de importar somente a primeira nota do rps, comparando os fontes do acbr. Na unit pnfsConversao, na função

Citar

 

function RetirarPrefixos(const AXML: String; AProvedor: TnfseProvedor): String;
var
 XML: String;
begin
......L := StringReplace( XML, ']]>', '', [rfReplaceAll] );
 XML := StringReplace( XML, 'R$', '', [rfReplaceAll] );
 }
 // Provedor Governa, os prefixos não tem ":"
 if AProvedor = proGoverna then <<<<<<<<<<<<<<<<<<<<<<
 begin
   XML := StringReplace( XML, 'tc', '', [rfReplaceAll] );
   XML := StringReplace( XML, 'ts', '', [rfReplaceAll] );
 end;

 result := XML;
end;

 

Comentando o " if AProvedor = proGoverna then " para ficar igual as versões anteriores a importação do RPS volta a funcionar. Não entrei nos detalhes para saber exatamente o motivo mas creio que pra quem conheçe bem o acbr fique fácil

Abaixo parte de um arquivo rps, note que tem uma tag contendo "tc"

<?xml version="1.0" encoding="utf-8"?>
<ConsultarLoteRpsResponse xmlns="http://www.e-governeapps2.com.br/">
    <ConsultarLoteRpsResult>
        <ListaNfse>
            <CompNfse>
                <tcCompNfse>
                    <Nfse>
                        <InfNfse>
                            <Numero>4765</Numero>
                            <CodigoVerificacao>1EJJW10F</CodigoVerificacao>
                            <DataEmissao>2016-10-03T00:00:00</DataEmissao>
                            <IdentificacaoRps>
                                <Numero>5898</Numero>
                                <Serie>F</Serie>
                                <Tipo>1</Tipo>
                            </IdentificacaoRps>
                            <DataEmissaoRps>2016-10-03T00:00:00</DataEmissaoRps>
                            <NaturezaOperacao>1</NaturezaOperacao>
                            <RegimeEspecialTributacao>0</RegimeEspecialTributacao>
                            <OptanteSimplesNacional>1</OptanteSimplesNacional>
                            <IncentivadorCultural>2</IncentivadorCultural>
                            <Competencia>0001-01-01T00:00:00</Competencia>
                            <NfseSubstituida>0</NfseSubstituida>
                            <Servico>
                                <Valores>

 

 

Editado por Digibyte
Acréscimo de informação
  • 2 semanas depois ...
  • 2 semanas depois ...
  • Este tópico foi criado há 2906 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.