# PROC001 – Aplicar desconto/acréscimo

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
PROC001 – Aplicar desconto/acréscimo</td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Jalile Cornachioni</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">10/11/2025</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

Definir o comportamento padrão para aplicação de desconto ou acréscimo durante o fluxo de pagamento unificado, considerando regras de interface, regras de negócio e impactos técnicos.

##### <span style="color: #000000;">**2. Processo (adicionar fluxograma exemplo)**</span>

[![image-1762870559701.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762870559701.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762870559701.png)

<span style="color: #808080;">-- Fluxograma PROC001 - Aplicar desconto/acréscimo --</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" style="width: 100%;" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 19%;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black; width: 27%;" width="27%">PROC001 - Aplicar desconto/acréscimo</td><td style="border-style: solid; border-color: black; width: 19%;" width="19%">Frente de caixa / API Pagamento Unificado

</td><td style="border-style: solid; border-color: black; width: 27%;" width="27%">Valor total, tipo de ajuste, origem da ação

</td><td style="border-style: solid; border-color: black; width: 27%;" width="27%">Valor ajustado, log de alteração

</td></tr><tr><td style="width: 27%;">PROC010- Excluir pagamento já lançado</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Identificação do pagamento selecionado</td><td style="width: 27%;">Pagamento removido e saldo recalculado</td></tr><tr><td style="width: 27%;">PROC011 - Quitar Restante</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Saldo pendente e forma de pagamento selecionada</td><td style="width: 27%;">Campo preenchido automaticamente com o valor restante</td></tr><tr><td style="width: 27%;">PROC012 - Finalizar Pagamento</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Todos os pagamentos registrados e saldo zerado</td><td style="width: 27%;">Venda concluída e registros financeiros emitidos</td></tr><tr><td style="width: 27%;">PROC013 - Cancelar</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Ação do usuário</td><td style="width: 27%;">Modal fechado sem registrar alterações</td></tr></tbody></table>

- - - - - -

#### **Processos Relacionados** 

- [Pagamento Unificado](https://docs.softensistemas.com.br/books/financeiro/page/pagamento-unificado)
- [PROC001 – Aplicar desconto/acréscimo](https://docs.softensistemas.com.br/books/financeiro/page/proc001-aplicar-descontoacrescimo)
- [PROC002 – Registro de Pagamento em Dinheiro](https://docs.softensistemas.com.br/books/financeiro/page/proc002-registro-de-pagamento-em-dinheiro)
- [PROC003 – Registro de Pagamento em Cartão de Crédito](https://docs.softensistemas.com.br/books/financeiro/page/proc003-registro-de-pagamento-em-cartao-de-credito)
- [PROC004 – Registro de Pagamento em Cartão de Débito](https://docs.softensistemas.com.br/books/financeiro/page/proc004-registro-de-pagamento-em-cartao-de-debito)
- [PROC005 – Registro de Pagamento em Boleto](https://docs.softensistemas.com.br/books/financeiro/page/proc005-registro-de-pagamento-em-boleto)
- [PROC006 – Registro de Pagamento via PIX](https://docs.softensistemas.com.br/books/financeiro/page/proc006-registro-de-pagamento-via-pix)
- [PROC007 – Registro de Pagamento em Outros Métodos](https://docs.softensistemas.com.br/books/financeiro/page/proc007-registro-de-pagamento-em-outros-metodos)
- [PROC008 – Adicionar múltiplas formas de pagamento](https://docs.softensistemas.com.br/books/financeiro/page/proc008-adicionar-multiplas-formas-de-pagamento)
- [PROC012 – Finalizar Pagamento](https://docs.softensistemas.com.br/books/financeiro/page/proc012-finalizar-pagamento)

#### **Especificação Funcional**

- - - - - -

#### **PROC001 EXEMPLO:**

##### ***Protótipo de Tela:***

[![image-1762865283438.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762865283438.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762865283438.png)

##### ***Descrição dos Campos:***

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;">Total da Compra

</td><td style="width: 102px; border-style: solid; border-color: black;">Numérico

</td><td style="width: 88px; border-style: solid; border-color: black;">10,2

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;">R$

</td><td style="width: 201px; border-style: solid; border-color: black;">Herdado da tela de origem. Não inclui frete, impostos, descontos e acréscimos. Valor confiável enviado pela origem. Somente leitura.

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Descontos</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Numérico</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">10,2</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

</td><td style="width: 119px; border-style: solid; border-color: black;">R$

</td><td style="width: 201px; border-style: solid; border-color: black;">Valor monetário. Campo editável. Não aceita sinal + ou -. Não pode exceder o Total da Compra. Pode zerar o total líquido.

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Acréscimos</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Numérico</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">10,2</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

</td><td style="width: 119px; border-style: solid; border-color: black;">R$

</td><td style="width: 201px; border-style: solid; border-color: black;">Valor monetário. Campo editável. Não aceita sinal + ou -. Respeita limite máximo configurado, se existir.

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Total Líquido da Venda</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Numérico</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">10,2</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;">R$

</td><td style="width: 201px; border-style: solid; border-color: black;">Calculado: Total da Compra - Desconto + Acréscimo. Somente leitura.

</td></tr></tbody></table>

##### ***Regras de Interface:***

- O sistema deve exibir Total da Compra e Total Líquido como somente leitura.
- O sistema deve apresentar Desconto e Acréscimo como campos monetários sempre habilitados para digitação.
- O sistema não deve permitir caracteres inválidos, letras, símbolos, ou sinais negativo/positivo.
- O sistema deve recalcular automaticamente o Total Líquido a cada alteração de Desconto ou Acréscimo.
- O sistema deve aceitar valor zero em qualquer um dos campos.
- O sistema deve impedir que Desconto seja maior que o Total da Compra.
- O sistema deve impedir que Acréscimo ultrapasse o valor máximo configurado, quando existir.
- O sistema deve seguir a regra global de arredondamento vigente no sistema (quando configurada).
- O sistema não deve exibir frete, impostos ou outros totais no modal.

##### ***Regras de Negócio:***

- O sistema deve receber Total da Compra, Desconto e Acréscimo da tela de origem.
- O sistema deve confiar integralmente nos valores enviados pela origem sem recálculo interno desses componentes.
- O sistema deve considerar que o campo Desconto exibido no Pagamento Unificado representa somente o valor monetário de desconto enviado pela tela de origem, não deve carregar valores percentuais.
- O sistema deve considerar que o campo Acréscimo exibido no Pagamento Unificado representa o valor monetário de acréscimos enviado pela origem, incluindo acréscimos derivados de frete, seguro, impostos ou outros itens adicionais.
- O sistema deve assumir que qualquer valor de frete, seguro, impostos ou taxas já foi previamente aplicado e consolidado no Total da Compra ou permanecerá restrito à tela origem conforme regra dessa tela.
- O sistema não deve recalcular nem agregar frete, impostos, seguros, taxas ou outros valores ao Desconto ou ao Acréscimo dentro do modal.
- Caso o usuário precise alterar Frete ou Impostos, ele deve cancelar o Pagamento Unificado, ajustar esses valores na tela de origem e, só então, reabrir o modal.
- O sistema não deve permitir que os campos de desconto e acréscimo sejam carregados com valores nulos ou zerados quando a tela anterior já possuir totais definidos.
- O sistema deve permitir que o usuário altere Descontos e Acréscimos diretamente na tela de pagamento.
- O sistema deve validar que Desconto não excede o Total da Compra.
- O sistema deve validar Acréscimo conforme configuração de limite máximo.
- O sistema deve impedir Total Líquido negativo.
- O sistema deve recalcular exclusivamente o Total Líquido, usando apenas: Total Líquido = Total da Compra - Desconto + Acréscimo.
- Se o pagamento for finalizado, os valores atualizados de Desconto e Acréscimo devem retornar à tela de origem.
- Se o pagamento for cancelado, nenhum valor deve retornar; a tela de origem deve permanecer inalterada.
- O sistema não deve permitir divergência entre o valor final exibido no pagamento unificado e o valor final exibido na tela anterior após retorno.
- O sistema deve registrar log seguindo o padrão global já existente, incluindo: usuário, horário, valores antes/depois e origem da ação.

##### Regras para mensagens e validações

- Desconto maior que o total → "O desconto não pode exceder o valor da venda." Bloquear salvamento.
- Acréscimo acima do limite → "O acréscimo informado ultrapassa o limite permitido." Impedir continuação.
- Valor não numérico → "Digite apenas valores numéricos." Limpar entrada e manter foco.
- Total Líquido negativo → "O valor final não pode ser negativo." Reverter último valor digitado.

##### ***Questões Técnicas:***

- **Composição de valores**
    
    
    - `total_compra`: vem **100% da origem**. Não inclui frete, impostos, seguros, descontos, acréscimos.
    - `desconto` e `acrescimo`: **monetários**. Sem sinal. Percentual não existe no modal.
    - `total_liquido = total_compra - desconto + acrescimo`.
- **Limites**
    
    
    - `desconto ≤ total_compra`. Pode zerar. Não pode exceder.
    - `acrescimo ≤ acrescimo_maximo` quando existir.
    - `total_liquido ≥ 0`.

©SOFTEN SISTEMAS 2025