Jump to content

dev botao

criar uma tag no componente ACBrNFeDANFEFR para adicionar a diferenca do troco na formar de pagamento


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

Recommended Posts

boa tarde Leandro e seguinte eu li: não sei vc mexe com cliente

e cliente acha que tem que ser do jeito deles

ai tive que mudar em ACBrNFeDANFEFR a tive que fazer isso

       if tPag in [fpDinheiro, fpCheque] then
           if vTroco > 1 then begin
             FieldByName('vPag').AsFloat   := vPag+vTroco;
           end else
             FieldByName('vPag').AsFloat   := vPag
        else
             FieldByName('vPag').AsFloat   := vPag;

 

e que eles tao acustumado com ecf ai acha que tem que ser igual cupom fiscal.
 

ai pensei se poderia criar uma propriedade pra somar o troco junto com forma de pagamento dinheiro ou cheque.

 

Edited by Ricardo De Luca
Link to comment
Share on other sites

boa tarde Henrique fiz esta alteração criei uma propriedade SomaTrocoFormaPgto em ACBrNFeDANFEClass como padrão esta como falsa e alterei ACBrNFeDANFEFRDM da uma analizada se e possível colocar esta propriedade ou fazer diferente.

procedure TACBrNFeFRClass.CarregaPagamento;
var
  i: Integer;
begin
  with cdsPagamento do
  begin
    Close;
    CreateDataSet;
    for i := 0 to NFe.Pag.Count - 1 do
    begin
      Append;
      with FNFe.Pag do
      begin
        FieldByName('tPag').AsString  := FormaPagamentoToDescricao( tPag );
        FieldByName('vPag').AsFloat   := vPag;
 
        if SomaTrocoFormaPgto then begin
           if tPag in [fpDinheiro, fpCheque] then
              if vTroco > 1 then
                  FieldByName('vPag').AsFloat   := vPag+vTroco;
        end;
 
        // ver tpIntegra
        FieldByName('CNPJ').AsString  := FormatarCNPJ(CNPJ);
        FieldByName('tBand').AsString := BandeiraCartaoToDescStr( tBand );
        FieldByName('cAut').AsString  := cAut;
      end;
      Post;
    end;
 
    // acrescenta o troco
    if vTroco > 0 then
    begin
      Append;
      FieldByName('tPag').AsString  := 'Troco R$';
      FieldByName('vPag').AsFloat   := vTroco;
    end;
  end;
end;

alterei 3 arquivos esta em anexo:

 

 

ACBrNFeDANFEClass.pas

ACBrNFeDANFEFR.pas

ACBrNFeDANFEFRDM.pas

  • Like 1
Link to comment
Share on other sites

  • Moderadores

@Ricardo De Luca, eu não aplicarei  esta regra no componente. Pois este tipo de tratamento deve ficar na aplicação do usuário. Por que o componente não sabe,  onde somar o troco ( ex : dinheiro ou Cheque ).

Segue uma previa q teremos.

Fast.rar

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 to comment
Share on other sites

boa tarde Henrique criei duas propriedade ImprimeFormaPgtoXML e ListaFormaPgto:

ImprimeFormaPgtoXML por padrão e verdadeira vai imprimir a forma de pagamento que tiver no arquivo XML ser for falsa vai imprimir a forma de pagamento quer  for passada para a propriedade ListaFormaPgto. segue os arquivos que alterei por gentileza analisa.

 

e obrigado pela atenção.

ACBrNFeDANFEClass.pas

ACBrNFeDANFEFR.pas

ACBrNFeDANFEFRDM.pas

Link to comment
Share on other sites

ai não vai afetar a regra como esta so vai acrescentar uma opção a mais e questão de tratamento e feito na aplicação o problema a impressão na danfe.

procedure TACBrNFeFRClass.CarregaPagamento;
var
  i: Integer;
begin
  with cdsPagamento do
  begin
    Close;
    CreateDataSet;
    if ImprimeFormaPgtoXML then begin
       for i := 0 to NFe.Pag.Count - 1 do begin
           Append;
           with FNFe.Pag do begin
             FieldByName('tPag').AsString  := FormaPagamentoToDescricao( tPag );
             FieldByName('vPag').AsFloat   := vPag;
 
             // ver tpIntegra
             FieldByName('CNPJ').AsString  := FormatarCNPJ(CNPJ);
             FieldByName('tBand').AsString := BandeiraCartaoToDescStr( tBand );
             FieldByName('cAut').AsString  := cAut;
           end;
           Post;
       end;
    end else begin
        for i := 1 to 15 do begin
            if FDANFEClassOwner.ListaFormaPgto.FormaPgto.VAlor>0 then begin
               Append;
               FieldByName('tPag').AsString  := FDANFEClassOwner.ListaFormaPgto.FormaPgto.Descricao;
               FieldByName('vPag').AsFloat   := FDANFEClassOwner.ListaFormaPgto.FormaPgto.VAlor;
               post;
            end;
        end;
    end;
 
    // acrescenta o troco
    if vTroco > 0 then
    begin
      Append;
      FieldByName('tPag').AsString  := 'Troco R$';
      FieldByName('vPag').AsFloat   := vTroco;
    end;
  end;
end;
 
  • Like 1
Link to comment
Share on other sites

  • Moderadores

@Ricardo De Luca

Suas sugestões são boas , mas não devo aplica-las , por enquanto. Pois tenho a meta de conseguir um padrão onde o xml deva controlar a danfe. com a exceção dos controles de visual.  Aplique na sua aplicação onde terá controle total do troco.

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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.