completed initial scaffolding for services

This commit is contained in:
2025-06-16 23:12:38 +02:00
parent eee746a5d8
commit b214d42d2f
24 changed files with 305 additions and 88 deletions

View File

@@ -0,0 +1,67 @@
package zw.qantra.tm.domain.models;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.*;
import zw.qantra.tm.domain.enums.ChargeLabelEnum;
import zw.qantra.tm.domain.enums.CurrencyType;
import zw.qantra.tm.domain.enums.TargetEvent;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
@Entity
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Charge {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;
private String description;
// % rate to charge
private BigDecimal percentageRate;
private BigDecimal flat;
private boolean composite; // composite is % plus flat
private boolean global;
private BigDecimal min;
private BigDecimal max;
private BigDecimal minimumAmount;
private BigDecimal maximumAmount;
@Enumerated(EnumType.STRING)
private ChargeLabelEnum chargeLabel;
@Enumerated(EnumType.STRING)
private CurrencyType currency;
private String account;
private String target;
private String targetValue;
@Enumerated(EnumType.STRING)
private TargetEvent targetEvent; // include / exclude
@JsonIgnore
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "charge_include_products",
joinColumns = @JoinColumn(name = "charge_id"),
inverseJoinColumns = @JoinColumn(name = "charge_condition_id")
)
private Set<ChargeCondition> includes = new HashSet<>();
@JsonIgnore
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "charge_exclude_products",
joinColumns = @JoinColumn(name = "charge_id"),
inverseJoinColumns = @JoinColumn(name = "charge_condition_id")
)
private Set<ChargeCondition> excludes = new HashSet<>();
}