Jump to content

dev botao

Rateio desconto


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

Recommended Posts

Bom dia, não estou conseguindo fazer com que o rateio do desconto entre os produtos funcione, é o seguinte, quando o desconto é distribuído pelos itens, se cada item ficar com uma parte do desconto, nem que seja 0,01, é aceito normalmente, mas se for muitos itens e algum ficar com desconto igual a 0 não é aceito conforme mensagem de erro abaixo.

Obrigado pela ajuda.

 

 

erro_desconto.jpg

Link to comment
Share on other sites

  • Moderadores
8 minutos atrás, Antonino disse:

Bom dia, não estou conseguindo fazer com que o rateio do desconto entre os produtos funcione, é o seguinte, quando o desconto é distribuído pelos itens, se cada item ficar com uma parte do desconto, nem que seja 0,01, é aceito normalmente, mas se for muitos itens e algum ficar com desconto igual a 0 não é aceito conforme mensagem de erro abaixo.

Você deve estar passando um valor com mais de 2 casas decimais para o desconto.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link to comment
Share on other sites

  • Moderadores
48 minutos atrás, Antonino disse:

E quando for uma venda com uns 200 itens e tiver um desconto que o rateio ficar menos de 1 centavo pra cada item, como eu faço?

A regra geral é somar os resíduos (diferença entre o valor total do desconto e a soma dos descontos dos itens truncados para 2 casas decimais) e somar ao desconto do item de maior valor.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link to comment
Share on other sites

Não estou conseguindo fazer esse rateio, vê meu código do rateio aí em baixo se tem como me auxiliar.

Obrigado.

 

         //Faz o Rateio do Desconto
         if desconto > 0 then
         begin
            p_desc_item   := (desconto / TotalCupom * 100);
            desconto_item := (db_Vendas.FieldByName('valor_total').AsFloat / 100) * p_desc_item;
            valor_total_desc_item := RoundTo(valor_total_desc_item + desconto_item, -5);

            if valor_total_desc_item > Desconto then
            begin
              ajusta_desconto := valor_total_desc_item - RoundTo(Desconto, -5);
              desconto_item := desconto_item - ajusta_desconto;
              if desconto_item < 0 then
              begin
                desconto_item := 0;
              end;
            end;
          //No Ultimo Item
            if ultimoitem = n_item then
            begin
              if valor_total_desc_item < Desconto then
              begin
                ajusta_desconto :=  RoundTo(Desconto, -5) - valor_total_desc_item;
                desconto_item :=  desconto_item + ajusta_desconto;
                if desconto_item < 0 then
                begin
                  desconto_item := 0;
                end;
              end;
            end;
         end
         else
         begin
           desconto_item := 0;
         end;
        Prod.vDesc     := desconto_item;


        //Fim do Rateio do Desconto por ITEM
        //////////////////////////////////

 

Link to comment
Share on other sites

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