Ir para conteúdo
  • Cadastre-se

dev botao

Dados do Medicamento nas Informações Adicionais do Produto


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

Recommended Posts

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;

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@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

Link para o comentário
Compartilhar em outros sites

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,

Link para o comentário
Compartilhar em outros sites

  • Moderadores

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

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Este tópico foi criado há 2358 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.