completed initial scaffolding for services
This commit is contained in:
67
src/main/java/zw/qantra/tm/domain/models/Charge.java
Normal file
67
src/main/java/zw/qantra/tm/domain/models/Charge.java
Normal 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<>();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user