Payment.java

package com.chronus.domain.entity;

import com.chronus.domain.valueobject.PaymentAmount;
import com.chronus.domain.valueobject.PaymentId;

// entidad de dominio que representa un pago
public class Payment {
    private final PaymentId paymentId;
    private PaymentAmount amount;

    // constructor para crear un pago con el monto requerido
    public Payment(String paymentId, double amount) {
        this.paymentId = new PaymentId(paymentId);
        this.amount = new PaymentAmount(amount);
    }

    // metodo con semantica de negocio para actualizar el monto del pago
    public void updateAmount(double amount) {
        this.amount = new PaymentAmount(amount);
    }

    // getters para obtener los detalles del pago
    public String getPaymentId() {
        return paymentId.value();
    }

    public PaymentAmount getAmount() {
        return amount;
    }
}