Ir para conteúdo
  • Cadastre-se

dev botao

Dados do Medicamento nas Informações Adicionais do Produto


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

Recommended Posts

Postado

Boa tarde amigos.

Percebi que a danfe em Fast está carregando os dados do medicamento para as informações adicionais do produto. Como esses dados foram movidos para a tag <rastro> os campos estão ficando vazios na danfe. Segue trecho de código do arquivo ACBrNFeDANFEFRDM. 

Minha interpretação está correta?

Obrigado.

Function TACBrNFeFRClass.ManterMedicamentos( inItem:  integer  ) : String;
Var
  i : Integer;
begin
  Result := '';
  { detalhamento específico de medicamentos }
  with FNFe.Det.Items[inItem].Prod do
  begin
    if med.Count > 0 then
    begin
      Result := sQuebraLinha;
      for i := 0 to med.Count - 1 do
      begin
        Result := Result + 'LOTE: ' + med.Items[i].nLote+ sQuebraLinha;
        Result := Result + 'QTD: '  + FormatFloatBr(med.Items[i].qLote)+ sQuebraLinha;
        Result := Result + 'FAB: '  + FormatDateBr(med.Items[i].dFab)+ sQuebraLinha;
        Result := Result + 'VAL: '  + FormatDateBr(med.Items[i].dVal)+ sQuebraLinha;
        Result := Result + IfThen( med.Items[i].vPMC  > 0, 'PMC: ' + FormatFloatBr(med.Items[i].vPMC) + ';' , '');
      end;
    end;
  end;


end;

 

Postado
15 horas atrás, hleorj disse:

Na versão 3.10 está correta a implementação.

 

Sim @hleorj, mas na NFe 4.0 eu vi que isso foi alterado. Na página 12 da NT 2016.002 V1.10 consta que esses campos foram excluídos desse bco.

Eu esqueci de mencionar que o erro é da NFe 4.0.

  • Moderadores
Postado

@José Manoel , estamos em transição de atualização dos componentes.  Problemas serão ajustados com o decorrer do tempo.

Caso aplique uma solução do problema. Adicione sua solução ao post para que seja feita uma análise .

Leve sempre em consideração que o código deverá funcionar em ambas versões do NFE.

Grato pelo seu comentário.

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Postado
Function TACBrNFeFRClass.ManterMedicamentos( inItem:  integer  ) : String;
Var
  i : Integer;
begin
  Result := '';
  { detalhamento específico de medicamentos }
  with FNFe.Det.Items[inItem].Prod do
  begin
    if med.Count > 0 then
    begin
      Result := sQuebraLinha;
      for i := 0 to med.Count - 1 do
      begin
        if NFe.infNFe.Versao < 4 then
        begin
           Result := Result + 'LOTE: ' + med.Items[i].nLote+ sQuebraLinha;
           Result := Result + 'QTD: '  + FormatFloatBr(med.Items[i].qLote)+ sQuebraLinha;
           Result := Result + 'FAB: '  + FormatDateBr(med.Items[i].dFab)+ sQuebraLinha;
           Result := Result + 'VAL: '  + FormatDateBr(med.Items[i].dVal)+ sQuebraLinha;
        end;
        Result := Result + IfThen( med.Items[i].vPMC  > 0, 'PMC: ' + FormatFloatBr(med.Items[i].vPMC) + ';' , '');
      end;
    end;
  end;
end;

Acredito que essa seja a implementação correta.

Att,

  • Moderadores
Postado

Segue @José Manoel

Function TACBrNFeFRClass.ManterMedicamentos( inItem:  integer  ) : String;
Var
  i : Integer;
begin
  Result := '';
  { detalhamento específico de medicamentos }
  with FNFe.Det.Items[inItem].Prod do
  begin
    if med.Count > 0 then
    begin
      Result := sQuebraLinha;
      for i := 0 to med.Count - 1 do
      begin
        if NFe.infNFe.Versao >= 4 then
          Result := Result + 'C.P. ANVISA '+ med.Items[i].cProdANVISA+ sQuebraLinha
        else
        begin
          Result := Result + 'LOTE: ' + med.Items[i].nLote+ sQuebraLinha;
          Result := Result + 'QTD: '  + FormatFloatBr(med.Items[i].qLote)+ sQuebraLinha;
          Result := Result + 'FAB: '  + FormatDateBr(med.Items[i].dFab)+ sQuebraLinha;
          Result := Result + 'VAL: '  + FormatDateBr(med.Items[i].dVal)+ sQuebraLinha;
        end;
        Result := Result + IfThen( med.Items[i].vPMC  > 0, 'PMC: ' + FormatFloatBr(med.Items[i].vPMC) + ';' , '');
      end;
    end;
  end;
end;

Adicionado  : ManterRastro

Function TACBrNFeFRClass.ManterRastro( inItem:  integer  ) : String;
Var
  i : Integer;
begin
  Result := '';
  { rastreabilidade do produto}
  with FNFe.Det.Items[inItem].Prod do
  begin
    if Rastro.Count > 0 then
    begin
      Result := sQuebraLinha;
      for i := 0 to Rastro.Count - 1 do
      begin
        Result := Result + 'LOTE: ' + rastro.Items[i].nLote+ sQuebraLinha;
        Result := Result + 'QTD: '  + FormatFloatBr(rastro.Items[i].qLote)+ sQuebraLinha;
        Result := Result + 'FAB: '  + FormatDateBr(rastro.Items[i].dFab)+ sQuebraLinha;
        Result := Result + 'VAL: '  + FormatDateBr(rastro.Items[i].dVal)+ sQuebraLinha;
        Result := Result + ACBrStr('C.AGREGAÇÃO: ' ) + rastro.Items[i].cAgreg+ ';';
      end;
    end;
  end;
end;

Seria a solução ideal ?

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Postado
17 minutos atrás, hleorj disse:

Segue @José Manoel


Function TACBrNFeFRClass.ManterMedicamentos( inItem:  integer  ) : String;
Var
  i : Integer;
begin
  Result := '';
  { detalhamento específico de medicamentos }
  with FNFe.Det.Items[inItem].Prod do
  begin
    if med.Count > 0 then
    begin
      Result := sQuebraLinha;
      for i := 0 to med.Count - 1 do
      begin
        if NFe.infNFe.Versao >= 4 then
          Result := Result + 'C.P. ANVISA '+ med.Items[i].cProdANVISA+ sQuebraLinha
        else
        begin
          Result := Result + 'LOTE: ' + med.Items[i].nLote+ sQuebraLinha;
          Result := Result + 'QTD: '  + FormatFloatBr(med.Items[i].qLote)+ sQuebraLinha;
          Result := Result + 'FAB: '  + FormatDateBr(med.Items[i].dFab)+ sQuebraLinha;
          Result := Result + 'VAL: '  + FormatDateBr(med.Items[i].dVal)+ sQuebraLinha;
        end;
        Result := Result + IfThen( med.Items[i].vPMC  > 0, 'PMC: ' + FormatFloatBr(med.Items[i].vPMC) + ';' , '');
      end;
    end;
  end;
end;

Adicionado  : ManterRastro


Function TACBrNFeFRClass.ManterRastro( inItem:  integer  ) : String;
Var
  i : Integer;
begin
  Result := '';
  { rastreabilidade do produto}
  with FNFe.Det.Items[inItem].Prod do
  begin
    if Rastro.Count > 0 then
    begin
      Result := sQuebraLinha;
      for i := 0 to Rastro.Count - 1 do
      begin
        Result := Result + 'LOTE: ' + rastro.Items[i].nLote+ sQuebraLinha;
        Result := Result + 'QTD: '  + FormatFloatBr(rastro.Items[i].qLote)+ sQuebraLinha;
        Result := Result + 'FAB: '  + FormatDateBr(rastro.Items[i].dFab)+ sQuebraLinha;
        Result := Result + 'VAL: '  + FormatDateBr(rastro.Items[i].dVal)+ sQuebraLinha;
        Result := Result + ACBrStr('C.AGREGAÇÃO: ' ) + rastro.Items[i].cAgreg+ ';';
      end;
    end;
  end;
end;

Seria a solução ideal ?

Não tenho certeza sobre o ManterRastro, pois a NT (Pág. 49) informa que somente os valores relacionados a FCP devem ser relacionados no infAdProd.

Sobre o ManterMedicamentos acho que seu código está correto. Eu havia me esquecido do novo campo cProdAnvisa.

Postado
1 hora atrás, hleorj disse:

No SVN At revision: 13864 

Favor efetuar os devidos testes.

Grato.

Não seria interessante parametrizar essa opção do <rastro>? 

Não encontrei nada que obrigasse emitir esses dados no Danfe, e acho que isso pode gerar reclamações por parte dos clientes.

  • Moderadores
Postado

Segue a mesma regra ( ManterMedicamenos , ManterRastro , ManterArma e etc ) , está no arquivo xml, será impresso 

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

  • 1 mês depois ...
Postado

Boa tarde

Alguém saberia mim dizer onde eu pego o Código de Produto da ANVISA (cProdANVISA)?. No manual mim diz na coluna observação (Utilizar o número do registro do produto da Câmara de Regulação do Mercado de Medicamento – CMED)

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

The popup will be closed in 10 segundos...