Jump to content

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

Recommended Posts

  • Moderadores
Posted
1 hora atrás, IgorAcertSoft disse:

Boa tarde...

Estou usando a função LoadFromString para carregar um xml para o componente ACBrNFSeX mas o mesmo não esta me retornando as variáveis de dentro do xml.

Teria alguma coisa que posso fazer?

xml exemplo.xml 6.75 kB · 0 downloads

antes de carregar tu precisa configurar o componente para a cidade que vai ler o xml para que seja setado o provedor

  • Like 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Membros Pro
Posted

Bom dia Juliomar...

Meu componente já esta configurado, até porque a emissão da nota já esta funcionando normalmente, mas quando eu tento fazer o cancelamento da nota, que a função LoadFromString não me retorna os valores do XML.

  • Consultores
Posted

Bom dia @IgorAcertSoft,

O XML que você anexou na sua primeira postagem é o XML retornado pelo webservice ou você baixou ele do portal da prefeitura?

Qual é a cidade/provedor?

Após o cancelamento de uma nota, você realiza uma consulta para obter o XML da nota com as informações de que a mesma esta cancelada?

Se sim, qual é a consulta que você faz?

O XML que você esta tentando ler é o XML de retorno dessa consulta?

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

  • Membros Pro
Posted

Bom dia Italo,

O xml é o retorno do webservice ao emitir a nota, o provedor é a INFISC, na cidade de Canoas / RS,

o momento que estou tentando usar o LoadFromString é antes de cancelar a nota, pois estou tentando ler o xml da nota validada,

para ai sim passar para o InfCancelamento todas as informações que ele precisa, e por fim executar o ACBrNFSeX1.CancelarNFSe(InfCancelamento),

mas como o LoadFromString não me retorna nada os valores do InfCancelamento estão em branco.

E para chegar a reposta do cancelamento estou usando a função ChecarResposta.

Mas desse jeito que eu faço funciona para todos os outros provedores que trabalho, mas sei que isso pode variar de provedor para provedor.

  • Consultores
Posted

Como é esta rotina que você preenche o InfCancelamento depois de ler o XML, pode disponibilizar um trecho de código?

Fiz um teste de impressão do seu XML com o programa exemplo e não tive problemas.. Ele usa o ACBrNFSeX.NotasFiscais.LoadFromFile. Se você abrir o LoadFromFile, vai ver que ele usa o LoadFromString;

function TNotasFiscais.LoadFromFile(const CaminhoArquivo: String;
  AGerarNFSe: Boolean = True): Boolean;
var
  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

  Result := LoadFromString(XmlUTF8, 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[i].NomeArqRps := CaminhoArquivo
      else
        Self.Items[i].NomeArq := CaminhoArquivo;
    end;
  end;
end;

 

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membros Pro
Posted

Boa tarde Diego,

O trecho que estou com dificuldade seria:

Seria nesta linha em especifico -> ACBrNFSeX1.NotasFiscais.LoadFromString(NFSE_NOTASARQUIVO.Value, False),

Posso garantir que o mesmo XML que te enviei esta na variável  NFSE_NOTASARQUIVO.Value.

with Dados do
    begin
      ACBrNFSeX1.NotasFiscais.Clear;
      //CARREGA O XML DA NOTA PELO BANCO
      NFSE_NOTAS.Close;
      NFSE_NOTAS.ParamByName('NUMERONOTA').Value := CodNota;
      NFSE_NOTAS.Open;
      //procura no banco, se não achar procura no arquivo .xml
      if not NFSE_NOTAS.IsEmpty then
        ACBrNFSeX1.NotasFiscais.LoadFromString(NFSE_NOTASARQUIVO.Value, False)
      else
        begin
          MessageBox(0, 'Não foi possível localizar o xml da nota.', 'Aviso', MB_OK+MB_ICONERROR);
          Exit;
        end;

      // Os Provedores da lista requerem que seja informado a chave e o código
      // de cancelamento
      if (ACBrNFSeX1.Configuracoes.Geral.Provedor = proInfisc) and
         (ACBrNFSeX1.Configuracoes.Geral.Versao <> ve201) then
      begin
        {
          A Chave é composta por:
           2 | N |Código IBGE para UF do prestador
          14 | N |CNPJ do prestador
           2 | N |Modelo da nota (valor 98 por padrão)
           3 | C |Série da nota (em maiúsculas, com zeros à direita)
           9 | N |Número da nota (com zeros à esquerda)
           9 | N |Código numérico aleatório
        }
        ChNFSe := ACBrNFSeX1.NotasFiscais.Items[0].NFSe.ChaveAcesso;
        // Codigo de Cancelamento
        // 1 - Erro de emissão
        // 2 - Serviço não concluido
        // 3 - RPS Cancelado na Emissão

        if not(InputQuery('Cancelar NFSe', 'Informe o Código de Cancelamento'+ #13+
                                       '1 - Erro de emissão'+ #13+
                                       '2 - Serviço não concluido'+ #13+
                                       '3 - RPS Cancelado na Emissão'+ #13+
                                       'Digite apenas o número:' +#13, Codigo)) then
          exit;
      end

 

  • Consultores
Posted

Boa tarde!

1 hora atrás, IgorAcertSoft disse:
      if not NFSE_NOTAS.IsEmpty then
        ACBrNFSeX1.NotasFiscais.LoadFromString(NFSE_NOTASARQUIVO.Value, False)
      else
        begin
          MessageBox(0, 'Não foi possível localizar o xml da nota.', 'Aviso', MB_OK+MB_ICONERROR);
          Exit;
        end;

      // Os Provedores da lista requerem que seja informado a chave e o código
      // de cancelamento
      if (ACBrNFSeX1.Configuracoes.Geral.Provedor = proInfisc) and
         (ACBrNFSeX1.Configuracoes.Geral.Versao <> ve201) then
      begin

Seguindo o seu fluxo, ele chama o ACBrNFSeX1.NotasFiscais.LoadFromString(NFSE_NOTASARQUIVO.Value, False) mas não entra na condição abaixo que valida as informações do provedor para preencher, correto?

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membros Pro
Posted

Ele entra na validação do if (ACBrNFSeX1.Configuracoes.Geral.Provedor = proInfisc), mas quando ele faz isso ChNFSe := ACBrNFSeX1.NotasFiscais.Items[0].NFSe.ChaveAcesso; o valor vem em branco

  • Consultores
Posted
2 minutos atrás, IgorAcertSoft disse:

Ele entra na validação do if (ACBrNFSeX1.Configuracoes.Geral.Provedor = proInfisc), mas quando ele faz isso ChNFSe := ACBrNFSeX1.NotasFiscais.Items[0].NFSe.ChaveAcesso; o valor vem em branco

Certo, vou reproduzir aqui o código que utilizou para realizar alguns testes e retorno assim que possível com mais informações.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membros Pro
Posted

Acabei de testar mudar ChNFSe := ACBrNFSeX1.NotasFiscais.Items[0].NFSe.ChaveAcesso; para ChNFSe := ACBrNFSeX1.NotasFiscais.Items[0].NFSe.CodigoVerificacao; e o mesmo trouxe o valor certo do código de verificação, estou testando para ver porque a chave não esta trazendo.

 

  • Consultores
  • Solution
Posted

Verificando aqui, o campo ChaveAcesso na verdade não é um campo presente no leiaute do padrão ABRASF versão 2.03, que é o leiaute e versão utilizado pelo provedor Infisc para atender ao município de Canoas/RS.

Veja:

image.png

A princípio, o campo ChaveAcesso é utilizado pelos provedores AEG, Agili, eGoverneISS, EloTech, RLZ e pelo Padrão Nacional.

Para a rotina de cancelamento, esta versão do Infisc não sobrescreve a rotina da classe mãe, portanto, são obrigatórios os campos NumeroNFSe e CodCancelamento.

Caso esteja querendo ler este valor: <InfNfse Id="439999999999999998RPS000000002932897135">, faça um teste lendo a propriedade ACBrNFSeX.NotasFiscais[0].NFSe.InfID.Id;

  • Thanks 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Consultores
Posted

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

  • Este tópico foi criado há 339 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...