Ir para conteúdo
  • Cadastre-se

dev botao

Impressão Da Nfse


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 3647 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

O provedor é Betha. Utilizo o Quick Report. Após a atualização do acbr quando envio a nota para o provedor quando visualizo a nota fiscal o valor líquido está vindo zerado. Olhando a nota enviada pelo site da Betha ela está correta e imprime com valor líquido correspondente.

  • Consultores
  • Solution
Postado

Cleiton,

 

O problema é que o provedor não esta retornando essa informação.

 

Fiz uma alteração para que o componente calcule com base nos demais valores retornados.

 

Atualize os fontes, compile com a opção Build e teste novamente.

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

  • 2 semanas depois ...
Postado (editado)

Bom dia Italo, comigo acontece o mesmo problema,  estou usando os provedorres Fiorilli e 4R, e envio o xml pela função EnviarSincrono.

 

O xml de retorno vem com a informação do valor liquido, mas não alimenta o componente, depurando percebi que na rotina TGerarretNfse.LerXml(pnfsGerarNfseResposta), tem o seguinte bloco 

 

                
if Leitor.rExtrai(7, 'Valores') <> '' then
begin
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorServicos          := Leitor.rCampo(tcDe2, 'ValorServicos');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorDeducoes          := Leitor.rCampo(tcDe2, 'ValorDeducoes');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorPis               := Leitor.rCampo(tcDe2, 'ValorPis');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorCofins            := Leitor.rCampo(tcDe2, 'ValorCofins');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorInss              := Leitor.rCampo(tcDe2, 'ValorInss');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorIr                := Leitor.rCampo(tcDe2, 'ValorIr');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorCsll              := Leitor.rCampo(tcDe2, 'ValorCsll');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.IssRetido              := StrToSituacaoTributaria(ok, Leitor.rCampo(tcStr, 'IssRetido'));
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorIss               := Leitor.rCampo(tcDe2, 'ValorIss');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.OutrasRetencoes        := Leitor.rCampo(tcDe2, 'OutrasRetencoes');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.BaseCalculo            := Leitor.rCampo(tcDe2, 'BaseCalculo');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.Aliquota               := Leitor.rCampo(tcDe3, 'Aliquota');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorLiquidoNfse       := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.ValorIssRetido         := Leitor.rCampo(tcDe2, 'ValorIssRetido');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.DescontoCondicionado   := Leitor.rCampo(tcDe2, 'DescontoCondicionado');
  ListaNfse.FCompNfse[i].FNFSe.Servico.Valores.DescontoIncondicionado := Leitor.rCampo(tcDe2, 'DescontoIncondicionado');
end;
 

porém, no xml, essa informação vem na tag "ValoresNfse", e não na "Valores", segue o xml em anexo

 

 

NFSe4865.xml

Editado por jGuto
Postado

Então, no meu caso, é retornado no xml o valor do campo ValorLIquido, o xml está anexado na mensagem cima, mas não é preenchido no componente, pois ele vem no grupo ValoresNfse, e não no grupo "Valores".

  • Consultores
Postado

jGuto,

 

O XML que você postou se refere ao provedor Fiorilli, correto?

 

Conferindo o XML com a Unit pnfsNFSeR.pas é para ele ler sim o valor liquido que encontra-se dentro do grupo ValoresNfse.

 

O provedor Fiorilli se utiliza da Function LerNFSe_ABRASF_V2 e esta logo nas sua primeiras linhas lê o grupo ValoresNfse e consequentemente a TAG ValorLiquidoNfse.

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

Postado (editado)

Estou usando a função EnviarSincrono, no retorno, ele passa pelo LerXML da unit pnfsGerarNfseResposta, onde ele não lê essa tag,

 

Se eu carregar o xml no componente depois, daí sim ele passa por essa função LerNFSe_ABRASF_V2, e preenche o campo corretamente..

 

Ps: Provedores Fiorilli e 4R

Editado por jGuto
Postado (editado)
O provedor Fiorilli se utiliza da Function LerNFSe_ABRASF_V2 e esta logo nas sua primeiras linhas lê o grupo ValoresNfse e consequentemente a TAG ValorLiquidoNfse.

 

 

 

Sim, está lá, mas está jogando as informações no lugar errado

function TNFSeR.LerNFSe_ABRASF_V2: Boolean;
var
 item: Integer;
 ok  : Boolean;
begin
 if Leitor.rExtrai(3, 'ValoresNfse') <> ''
  then begin
   NFSe.Servico.Valores.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
   NFSe.Servico.Valores.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
   NFSe.Servico.Valores.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
   NFSe.Servico.Valores.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');
  end; // fim ValoresNfse

O correto seria o codigo abaixo,

function TNFSeR.LerNFSe_ABRASF_V2: Boolean;
var
 item: Integer;
 ok  : Boolean;
begin
 if Leitor.rExtrai(3, 'ValoresNfse') <> ''
  then begin
   NFSe.ValoresNfse.BaseCalculo      := Leitor.rCampo(tcDe2, 'BaseCalculo');
   NFSe.ValoresNfse.Aliquota         := Leitor.rCampo(tcDe3, 'Aliquota');
   NFSe.ValoresNfse.ValorIss         := Leitor.rCampo(tcDe2, 'ValorIss');
   NFSe.ValoresNfse.ValorLiquidoNfse := Leitor.rCampo(tcDe2, 'ValorLiquidoNfse');
  end; // fim ValoresNfse

Do jeito que está essa informações estão sendo sobreescrita pela parte abaixo, 

 

if (Leitor.rExtrai(4, 'Servico') <> '')
    then begin
     NFSe.Servico.Valores.IssRetido   := StrToSituacaoTributaria(ok, Leitor.rCampo(tcStr, 'IssRetido'));
     {....}
     if (Leitor.rExtrai(5, 'Valores') <> '')
      then begin
        {...}
        NFSe.Servico.Valores.ValorIss               := Leitor.rCampo(tcDe2, 'ValorIss');
        NFSe.Servico.Valores.Aliquota               := Leitor.rCampo(tcDe3, 'Aliquota');
        {...}
        if NFSe.Servico.Valores.ValorLiquidoNfse = 0 then
          NFSe.Servico.Valores.ValorLiquidoNfse     := NFSe.Servico.Valores.ValorServicos -
                                                       NFSe.Servico.Valores.DescontoIncondicionado -
                                                       NFSe.Servico.Valores.DescontoCondicionado -
                                                       // Retenções Federais
                                                       NFSe.Servico.Valores.ValorPis -
                                                       NFSe.Servico.Valores.ValorCofins -
                                                       NFSe.Servico.Valores.ValorIr -
                                                       NFSe.Servico.Valores.ValorInss -
                                                       NFSe.Servico.Valores.ValorCsll -


                                                       NFSe.Servico.Valores.OutrasRetencoes -
                                                       NFSe.Servico.Valores.ValorIssRetido;


        if NFSe.Servico.Valores.BaseCalculo = 0 then
          NFSe.Servico.Valores.BaseCalculo          := NFSe.Servico.Valores.ValorServicos -
                                                       NFSe.Servico.Valores.ValorDeducoes -
                                                       NFSe.Servico.Valores.DescontoIncondicionado;


        if NFSe.Servico.Valores.ValorIss = 0 then
          NFSe.Servico.Valores.ValorIss             := (NFSe.Servico.Valores.BaseCalculo * NFSe.Servico.Valores.Aliquota)/100;


      end;
    end; // fim serviço
Editado por jGuto
  • 1 mês depois ...
  • Este tópico foi criado há 3647 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.