# Pagamento Unificado - DTO genérico

<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;">Pagamento Unificado - Gerencie Aqui</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>  
Pagamento Unificado - DTO genérico.</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;">Luís Leite</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;">05/01/2026</span>

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

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

<span style="color: #000000;">**Este processo visa exemplificar a criação de uma entidade genérica financeira que será utilizado em todo sistema.**</span>

##### <span style="color: #000000;">**2. Processo**</span>

[![image-1773250669290.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1773250669290.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1773250669290.png)

I - Fluxograma

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

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

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" 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%"><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%">PROC001 Pagamento Unificado - DTO genérico

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

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">-</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">-</span>

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

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

- - - - - -

#### **PROC001 Pagamento Unificado - DTO genérico:**

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

***1.*** A tela de pagamento unificado será controlada como uma **entidade financeira genérica**, responsável por concentrar todas as informações relacionadas ao registro de recebimentos realizadas na interface do sistema.  
**2.** A estrutura genérica será utilizada exclusivamente para controle das informações durante o uso da tela de pagamento. Após a confirmação da operação, os dados vão ser convertidos para a estrutura especifica de acordo com o documento onde o financeiro será gerado.  
**3.** Deve ser mapeado a estrutura genérica com as estruturas especificas.  
**4.** O processo deverá ser realizado tanto para o envio de informações da tela para documento especifico no momento da confirmação da operação; como para carregar informações já existentes do documento financeiro para a tela, quando o usuário abrir ou editar os pagamentos.

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

**1.** Deverá ser criado um **DTO genérico de pagamentos** com o objetivo de padronizar a comunicação entre a tela de registro de recebimentos e os diferentes módulos do sistema.

A tela deverá manipular exclusivamente esse DTO durante a interação com o usuário.

Para integração com os documentos financeiros específicos do sistema, deverão ser implementados **mapeamentos (mappers)** responsáveis por:

- - converter os dados do documento financeiro para o DTO genérico no momento da abertura da tela;
    - converter os dados do DTO genérico para a estrutura financeira específica do documento no momento da finalização da operação.

'formaPagamento' deve ser consultada das formas de pagamentos personalizadas cadastradas.

**2. ENUMS:**

```Java
public enum PaymentType {

    DINHEIRO,
    CREDITO,
    DEBITO,
    BOLETO,
    PIX,
    OUTROS

}

public enum PaymentPeriodicity {
    UNICO,        // pagamento único
    SEMANAL,
    QUINZENAL,
    MENSAL,
}


```

**2. Exemplo DTO Principal:**

```Java
public class PaymentDialogDTO {

    private LocalDateTime dataOperacao;

    // resumo da venda
    private BigDecimal totalCompra;
    private BigDecimal descontoValor;
    private BigDecimal descontoPercentual;
    private BigDecimal acrescimoValor;
    private BigDecimal acrescimoPercentual;
    private BigDecimal totalLiquido;

    // pagamentos adicionados
    private List<PaymentItemDTO> pagamentos;

    // resumo dos pagamentos
    private BigDecimal totalAPagar;
    private BigDecimal saldoAPagar;
    private BigDecimal totalPago;
    private BigDecimal troco;

}
```

**3. Exemplo DTO pagamentos:**

```Java
public class PaymentItemDTO {
  
    private PaymentType tipoPagamento; 
    // DINHEIRO, CREDITO, DEBITO, BOLETO, PIX, OUTROS   
  
  	private String formaPagamento;
    // ex: Visa, MasterCard, etc B 	
   
	private BigDecimal valorRecebimento;
    
    private LocalDate dataVencimento;
  
  	private Integer numeroParcelas;
  
  	private PaymentPeriodicity periodicidade;
  
  	private String cnpjPSP;
  
   	private String cnpjRecebedor;

    private String idTransacao;

    private String codigoPix;

}
```

**4. Mapeamento exemplo (não está no contexto do sistema):**

```Java
public class OrdemServicoPaymentMapper {

    public static void mapPaymentsToOrdemServico(
            PaymentDialogDTO dto,
            OrdemServico ordemServico) {

        List<OrdemServicoRecebimento> recebimentos = new ArrayList<>();

        for (PaymentItemDTO item : dto.getPagamentos()) {

            OrdemServicoRecebimento recebimento = new OrdemServicoRecebimento();

            recebimento.setTipoPagamento(item.getTipoPagamento());
            recebimento.setValorRecebido(item.getValorRecebimento());
            recebimento.setVencimento(item.getDataVencimento());
            recebimento.setIdTransacao(item.getIdTransacao());

            recebimentos.add(recebimento);
        }

        ordemServico.setRecebimentos(recebimentos);
    }

}
```

©SOFTEN SISTEMAS 2026