package zw.qantra.tm.domain.models; import com.fasterxml.jackson.annotation.JsonInclude; import jakarta.persistence.*; import lombok.*; import zw.qantra.tm.domain.enums.AuthType; import zw.qantra.tm.domain.enums.CurrencyType; import zw.qantra.tm.domain.enums.RequestType; import zw.qantra.tm.domain.enums.Status; import java.math.BigDecimal; @Entity @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor @JsonInclude(JsonInclude.Include.NON_NULL) public class Transaction extends BaseEntity { private String trace; private BigDecimal amount; private BigDecimal charge; private BigDecimal gatewayCharge; private BigDecimal tax; private BigDecimal totalAmount; private String reference; private String providerUid; private String productUid; private String paymentProcessorLabel; private String integrationProcessorLabel; private String providerLabel; private String rrn; private String channelName; private String channel; private String debitPhone; private String debitAccount; @Enumerated(EnumType.STRING) private CurrencyType debitCurrency; private String debitName; private String debitCard; private String debitRef; private String creditPhone; private String creditAccount; @Enumerated(EnumType.STRING) private CurrencyType creditCurrency; private String creditName; private String creditCard; private String creditRef; private String billClientId; private String clientSecret; private String aggregatorId; private String billName; private String billProductName; @Enumerated(EnumType.STRING) private RequestType type; @Enumerated(EnumType.STRING) private AuthType authType; @Column(columnDefinition = "TEXT") private String errorMessage; private String responseCode; private Status status; @Column(columnDefinition = "TEXT") private String targetUrl; private String sdkActionId; @Transient private Object additionalData; }