Ratear desconto nos ítens

544 views
Skip to first unread message

Kleyber Derick

unread,
Jul 2, 2018, 9:01:03 PM7/2/18
to NFePHP
Senhores boa noite,

Tenho o seguinte exemplo:

Valor da Nota - R$ 2295,00
Desconto - R$ 95,00
Valor total da Nota - R$ 2200,00

A nota tem 4 ítens.

Sendo assim, como vocês fazem para ratear o valor do desconto entre os ítens? Existe uma forma ideal para fazer isto?


Harisson Matos

unread,
Jul 2, 2018, 9:35:47 PM7/2/18
to nfe...@googlegroups.com
Segue exemplo em anexo, pode usar pra rateio de frete, seguro, despesas.

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--
Harisson Matos
Automação Comercial / Tecnologia da Informação

Celular e Whatsapp: (33) 98441-6119
____________________________________________________

Telefone: +55 (32) 3746-1140 / (32) 3746-1470

rateio.xlsx

Kleyber Derick

unread,
Jul 2, 2018, 9:42:18 PM7/2/18
to NFePHP
Harrison,

Obrigado. Vou olhar aqui e aplicar. Valeu pela dica.

Francys Reymer

unread,
Jul 2, 2018, 10:45:04 PM7/2/18
to nfe...@googlegroups.com
Kleyber o segredo é  pegar o total do desconto e o valor total da nota e fazer uma regra de 3. 

A regra de 3 é para determinar quantos % os R$ 95,00 se refere aos R$ 2.295,00. No caso, aproximadamente se refere a 4,13%. Em seguida, basta aplicar esta porcentagem a todos os produtos separadamente. 

A soma dos descontos de todos os produtos deverá ser igual ao desconto total.






Francys Reymer
Engenheiro de Computação - Mestre em Engenharia Elétrica
 
 
 +55 (67) 98429-5618
 
 
          

Mailtrack Sender notified by
Mailtrack 02/07/18 22:42:49

Gerson Felipe Schwinn

unread,
Jul 3, 2018, 7:53:29 AM7/3/18
to NFePHP
Também uso essa regra. No final pode dar uma diferença de alguns centavos da soma do desconto de cada item do desconto total na nota devido aos arredondamentos. Aí aplico essa diferença no campo desconto do item de maior desconto.

Willian C. Klein

unread,
Jul 3, 2018, 8:00:59 AM7/3/18
to nfe...@googlegroups.com
Eu faço pelo peso do produto

(Valor do item / Valor total dos produto) * valor que quero distribuir

se der quebrado eu trunco pra não dar rejeição de calculo 🤓


Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+unsubscribe@googlegroups.com.

Roberto Machado

unread,
Jul 3, 2018, 8:45:49 AM7/3/18
to nfe...@googlegroups.com
Realmente o desconto ou outros acréscimos feitos na totalização da NFe, devem ser RATEADOS ou em função do peso de cada item da NFe ou em relação ao valor de cada item da NFe.
E distribuídos segundo essa proporção em todos os itens da NFe, sendo que o ultimo item fica com o resto dessa distribuição  para o valor fechar sem diferenças.
O RATEIO por peso somente é aplicável caso os pesos sejam SEMPRE a unidade de medida, como esse é um caso RARO eu recomento que o rateio seja proporcional ao valor total do item em relação ao valor total da soma de todos os itens.

Roberto 

Francys Reymer

unread,
Jul 3, 2018, 10:08:32 AM7/3/18
to nfe...@googlegroups.com
Roberto para fechar sem diferenças eu sempre utilizo 5 casas decimais após a vírgula para os descontos, sempre dá certo na soma total. Eu só não sei com quantas casas decimais pode informar o valor do desconto para a SEFAZ. Alguém sabe me dizer isso?







Francys Reymer
Engenheiro de Computação - Mestre em Engenharia Elétrica
 
 
 +55 (67) 98429-5618
 
 
          

Mailtrack Sender notified by
Mailtrack 03/07/18 10:06:17

rtal

unread,
Jul 3, 2018, 10:20:05 AM7/3/18
to nfe...@googlegroups.com
9
 
Sent: Tuesday, July 03, 2018 11:08 AM
Subject: Re: [nfephp] Ratear desconto nos ítens
 
Roberto para fechar sem diferenças eu sempre utilizo 5 casas decimais após a vírgula para os descontos, sempre dá certo na soma total. Eu só não sei com quantas casas decimais pode informar o valor do desconto para a SEFAZ. Alguém sabe me dizer isso?




 
 
Francys Reymer
Engenheiro de Computação - Mestre em Engenharia Elétrica
 
 
+55 (67) 98429-5618
 
 
         
 
Mailtrack Sender notified by
Mailtrack 03/07/18 10:06:17
 
Em ter, 3 de jul de 2018 às 08:45, Roberto Machado <linu...@gmail.com> escreveu:
Realmente o desconto ou outros acréscimos feitos na totalização da NFe, devem ser RATEADOS ou em função do peso de cada item da NFe ou em relação ao valor de cada item da NFe.
E distribuídos segundo essa proporção em todos os itens da NFe, sendo que o ultimo item fica com o resto dessa distribuição  para o valor fechar sem diferenças.
O RATEIO por peso somente é aplicável caso os pesos sejam SEMPRE a unidade de medida, como esse é um caso RARO eu recomento que o rateio seja proporcional ao valor total do item em relação ao valor total da soma de todos os itens.
 
Roberto
 
--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com

Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Livre de vírus. www.avast.com.

Edwin Schissato

unread,
Jul 3, 2018, 10:21:43 AM7/3/18
to nfe...@googlegroups.com
Eu tambem faço o rateio propocional nos itens.

Só queria apontar um problema que tive é que aconteceu de usuario adicionar na nota de venda um produto de brinde e colocar o valor dele de 0,01 , na epoca minha logica de rateio podia acontecer de ter que adicionar 1 centavo no desconto pra bater o valor da somatoria de desconto dos itens com o do total da nota, esse 1 centavo eu colocava no ULTIMO ITEM, que acabava ficando com valor total 0 que dava problema pra aprovar a NFe

Em 3 de julho de 2018 11:08, Francys Reymer <francys...@gmail.com> escreveu:
Roberto para fechar sem diferenças eu sempre utilizo 5 casas decimais após a vírgula para os descontos, sempre dá certo na soma total. Eu só não sei com quantas casas decimais pode informar o valor do desconto para a SEFAZ. Alguém sabe me dizer isso?






Francys Reymer
Engenheiro de Computação - Mestre em Engenharia Elétrica
 
 
 +55 (67) 98429-5618
 
 
          

Mailtrack Sender notified by
Mailtrack 03/07/18 10:06:17
Em ter, 3 de jul de 2018 às 08:45, Roberto Machado <linu...@gmail.com> escreveu:
Realmente o desconto ou outros acréscimos feitos na totalização da NFe, devem ser RATEADOS ou em função do peso de cada item da NFe ou em relação ao valor de cada item da NFe.
E distribuídos segundo essa proporção em todos os itens da NFe, sendo que o ultimo item fica com o resto dessa distribuição  para o valor fechar sem diferenças.
O RATEIO por peso somente é aplicável caso os pesos sejam SEMPRE a unidade de medida, como esse é um caso RARO eu recomento que o rateio seja proporcional ao valor total do item em relação ao valor total da soma de todos os itens.

Roberto 

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com

Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+unsubscribe@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com

Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+unsubscribe@googlegroups.com.

Francys Reymer

unread,
Jul 3, 2018, 10:22:41 AM7/3/18
to nfe...@googlegroups.com
Até 9 casas decimais pode ser informado o valor do desconto???







Francys Reymer
Engenheiro de Computação - Mestre em Engenharia Elétrica
 
 
 +55 (67) 98429-5618
 
 
          

Mailtrack Sender notified by
Mailtrack 03/07/18 10:22:13

Gerson Felipe Schwinn

unread,
Jul 3, 2018, 12:33:37 PM7/3/18
to NFePHP
Não, são 2 casas decimais.

Kleyber Derick

unread,
Jul 4, 2018, 10:53:15 AM7/4/18
to NFePHP
Pessoal,

Só dando feedback aqui, usei as dicas do Harrison e, juntamente com as de vocês, montei minha rotina aqui e deu tudo certo! Obrigado ao Harrison e a todos os demais por me darem sugestões!!!

Eng Helder Ferreira.

unread,
Jul 4, 2018, 1:13:48 PM7/4/18
to nfe...@googlegroups.com
LÀ no inicio o erro aceito de soma era R$1,00 salvo engano.

Kleyber Derick

unread,
Jul 4, 2018, 3:01:20 PM7/4/18
to NFePHP
É verdade...aliás era de R$ 0,02... mas agora se der diferença de R$ 0,01 dá erro. Mas agora tá tudo certo. Fiz os ajustes para ajustar o valor do desconto do último ítem e ficou 100%.
Message has been deleted

maicon binatti

unread,
Aug 23, 2018, 7:50:24 PM8/23/18
to NFePHP
Boa noite Kleyber,
Me diz uma coisa, como você fez a lógica do cálculo?

Eu tive um problema hoje, com o seguinte, o meu cliente fez uma venda de 2 itens que deu R$ 20,01 e ela aplicou um desconto de 0,01
Acontece que meu código que até o momento estava 100%, pegou esse 0,01 de desconto e ratificou por 2, dando 0,005 para cada.
Como não se pode aplicar 3 casas decimais ao desconto, eu uso a função number_format, e resultou que essa função arredondou para 0,01 para cada item.
Sendo assim, o desconto calculado pela SEFAZ foi de 0,02 centavos, e retornou erro.

Se alguém puder me ajudar, pois realmente esse lance de descontos tem me dado dor de cabeça.
Obrigado.

Eng Helder Ferreira.

unread,
Aug 23, 2018, 9:19:56 PM8/23/18
to nfe...@googlegroups.com
Se a Sefaz não aceita mais nenhum erro de arredondamento seu código deveria ratear e no último item colocar a diferença
( Não trabalho em produção com desconto então não sei se a ideia acima é funcional)

--

Kleyber Derick

unread,
Aug 24, 2018, 8:30:49 AM8/24/18
to NFePHP
Olá Maicon bom dia,

Bem, é como o Helder falou, tens que fazer o rateio entre os ítens (que eu acho que já estás fazendo corretamente) e depois pegar a diferença e colocar no desconto do último ítem. Vou te mostrar como eu fiz, pra ver se te dá alguma idéia:

        $std->vDesc = NULL;    // Tag desconto por Ítem
        if ($nDescontoPorItem > 0)
        {
            $std->vDesc = number_format(round($nDescontoPorItem,2), 2, '.', '');
            $nTotalDescontoItens += round($nDescontoPorItem,2);
            if($item >= $nTotItens) {   // Chegou ao último ítem
                if($nTotalDescontoItens > $nTotalDesconto) {
                    $nDiferenca = $nTotalDescontoItens-$nTotalDesconto;
                    $nDescontoPorItem -= $nDiferenca;
                    $std->vDesc = number_format(round($nDescontoPorItem,2), 2, '.', '');
                } else if($nTotalDesconto > $nTotalDescontoItens ) {
                    $nDiferenca = $nTotalDesconto-$nTotalDescontoItens;
                    $nDescontoPorItem += $nDiferenca;
                    $std->vDesc = number_format(round($nDescontoPorItem,2), 2, '.', '');
                }
            }
        }

maicon binatti

unread,
Aug 24, 2018, 8:34:23 AM8/24/18
to NFePHP
Ótimo, obrigado a todos.
Vou aplicar a lógica e ver o que acontece, depois eu passo para dizer o que deu.
Obrigado
Reply all
Reply to author
Forward
0 new messages