MaterialDonation.java

package org.petify.funding.model;

import jakarta.persistence.Column;
import jakarta.persistence.DiscriminatorValue;
import jakarta.persistence.Entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;

import java.math.BigDecimal;

@Entity
@DiscriminatorValue("MATERIAL")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class MaterialDonation extends Donation {

    @Column(name = "item_name")
    private String itemName;

    @Column(
            name = "unit_price",
            precision = 15,
            scale = 2
    )
    private BigDecimal unitPrice;

    @Column(name = "quantity")
    private Integer quantity;

    void recalculateAmount() {
        setCurrency(getCurrency() != null ? getCurrency() : Currency.PLN);
        setAmount(unitPrice.multiply(BigDecimal.valueOf(quantity)));
    }
}