Membros Pro IgorAcertSoft Postado 14 Março Membros Pro Compartilhar Postado 14 Março 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 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores antonio.carlos Postado 14 Março Consultores Compartilhar Postado 14 Março Tópico movido para a área do SAC, para que o SLA de respostas seja considerado Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 14 Março Moderadores Compartilhar Postado 14 Março 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 1 Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro IgorAcertSoft Postado 15 Março Autor Membros Pro Compartilhar Postado 15 Março 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. Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Italo Giurizzato Junior Postado 15 Março Consultores Compartilhar Postado 15 Março 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? Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Araraquara - A era dos Trólebus Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro IgorAcertSoft Postado 15 Março Autor Membros Pro Compartilhar Postado 15 Março 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. Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Diego Foliene Postado 15 Março Consultores Compartilhar Postado 15 Março 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; Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !! Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro IgorAcertSoft Postado 15 Março Autor Membros Pro Compartilhar Postado 15 Março 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 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Diego Foliene Postado 15 Março Consultores Compartilhar Postado 15 Março 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? Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !! Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro IgorAcertSoft Postado 15 Março Autor Membros Pro Compartilhar Postado 15 Março 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 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Diego Foliene Postado 15 Março Consultores Compartilhar Postado 15 Março 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. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !! Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro IgorAcertSoft Postado 15 Março Autor Membros Pro Compartilhar Postado 15 Março 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. Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Solution Diego Foliene Postado 15 Março Consultores Solution Compartilhar Postado 15 Março 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: 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; 1 Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !! Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro IgorAcertSoft Postado 15 Março Autor Membros Pro Compartilhar Postado 15 Março Muito obrigado pela ajuda, deu certo trocar ChaveAcesso por InfID.id, a nota foi cancelada perfeitamente. 1 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Alexandre de Paula Postado 15 Março Consultores Compartilhar Postado 15 Março Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. Alexandre de Paula Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts