Skip to main content

Pagamento Unificado - DTO genérico.


image-1762776253666.png

Projeto/Sistema:
GERENCIAMENTO DE PROJETOS
Versão do Template:
1.2
Processo:
Descrição Processo
Versão do Documento:
1.0
Responsável(eis): 
-

Data: 

05/01/2026

1. Introdução

Este processo visa exemplificar a documentação padrão

2. Processo (adicionar fluxograma exemplo)

 

image-1724162109370.png

I - Fluxograma Exemplo

 

Processo

Envolvidos

Dados de Entrada

Dados de Saída

Processo

N/A

N/A

N/A

Processos Relacionados


Documentação Exemplo 1 

Documentação Exemplo 2

Especificação Funcional


PROC001 EXEMPLO:

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.

2. ENUMS:

public enum PaymentType {

    DINHEIRO,
    CREDITO,
    DEBITO,
    BOLETO,
    PIX,
    OUTROS

}

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

2. Exemplo DTO Principal:

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:

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 idTransacao;

    private String codigoPix;

}

4. Mapeamento exemplo:

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