146 lines
4.9 KiB
Java
146 lines
4.9 KiB
Java
package zw.qantra.tm.domain.models;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
|
import jakarta.persistence.*;
|
|
import lombok.*;
|
|
import org.hibernate.annotations.SQLRestriction;
|
|
import org.springframework.data.domain.Persistable;
|
|
import zw.qantra.tm.domain.enums.*;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.util.UUID;
|
|
|
|
@Entity
|
|
@Table(name = "transaction", indexes = {
|
|
@Index(name = "idx_transaction_trace_type", columnList = "trace, type"),
|
|
@Index(name = "idx_transaction_reference", columnList = "reference"),
|
|
@Index(name = "idx_transaction_workspace_id", columnList = "workspace_id"),
|
|
@Index(name = "idx_transaction_confirm_pay_integ", columnList = "confirmation_status, payment_status, integration_status"),
|
|
@Index(name = "idx_transaction_pay_poll", columnList = "payment_status, polling_status"),
|
|
@Index(name = "idx_transaction_status", columnList = "status"),
|
|
@Index(name = "idx_transaction_created_at", columnList = "created_at"),
|
|
@Index(name = "idx_transaction_debit_phone", columnList = "debit_phone"),
|
|
@Index(name = "idx_transaction_credit_phone", columnList = "credit_phone"),
|
|
@Index(name = "idx_transaction_workflow_id", columnList = "workflow_id"),
|
|
})
|
|
@Getter
|
|
@Setter
|
|
@Builder
|
|
@AllArgsConstructor
|
|
@NoArgsConstructor
|
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
@SQLRestriction("deleted = false")
|
|
public class Transaction extends BaseEntity {
|
|
@Column(name = "workspace_id")
|
|
private UUID workspaceId;
|
|
@Column(name = "user_id")
|
|
private String userId;
|
|
private String username;
|
|
private String trace;
|
|
private String region;
|
|
@Enumerated(EnumType.STRING)
|
|
private PartyType partyType;
|
|
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 confirmationProcessorLabel;
|
|
private String providerLabel;
|
|
private String rrn;
|
|
private String channelName;
|
|
private String channel;
|
|
@Column(name = "debit_phone")
|
|
private String debitPhone;
|
|
private String debitAccount;
|
|
@Enumerated(EnumType.STRING)
|
|
private CurrencyType debitCurrency;
|
|
private String debitName;
|
|
private String debitCard;
|
|
private String debitRef;
|
|
private String debitEmail;
|
|
@Column(name = "credit_phone")
|
|
private String creditPhone;
|
|
private String creditAccount;
|
|
@Enumerated(EnumType.STRING)
|
|
private CurrencyType creditCurrency;
|
|
private BigDecimal creditAmount;
|
|
private BigDecimal creditTotalAmount;
|
|
private String creditName;
|
|
private String creditCard;
|
|
private String creditRef;
|
|
private String creditEmail;
|
|
private String creditAddress;
|
|
private String creditVoucher;
|
|
private String billClientId;
|
|
private String clientSecret;
|
|
private String aggregatorId;
|
|
private String paymentProcessorRef;
|
|
private String billName;
|
|
private String billProductName;
|
|
private String paymentProcessorName;
|
|
private String providerImage;
|
|
private String paymentProcessorImage;
|
|
private UUID batchId;
|
|
private String batchDescription;
|
|
|
|
@Enumerated(EnumType.STRING)
|
|
private Status authorizationStatus;
|
|
@Enumerated(EnumType.STRING)
|
|
@Column(name = "confirmation_status")
|
|
private Status confirmationStatus;
|
|
@Enumerated(EnumType.STRING)
|
|
@Column(name = "payment_status")
|
|
private Status paymentStatus;
|
|
@Enumerated(EnumType.STRING)
|
|
@Column(name = "integration_status")
|
|
private Status integrationStatus;
|
|
@Enumerated(EnumType.STRING)
|
|
private Status reversalStatus;
|
|
@Enumerated(EnumType.STRING)
|
|
@Column(name = "polling_status")
|
|
private Status pollingStatus;
|
|
|
|
private String orderId;
|
|
private String orderTrace;
|
|
private String orderTransactionTrace;
|
|
private String orderTransactionId;
|
|
|
|
private String erpSalesRef;
|
|
private String erpJournalRef;
|
|
private String erpSalesPaymentRef;
|
|
private String erpPurchaseRef;
|
|
private String erpPurchasePaymentRef;
|
|
private String erpCommissionJournalRef;
|
|
|
|
@Column(name = "workflow_id", nullable = true)
|
|
private long workflowId;
|
|
|
|
@Enumerated(EnumType.STRING)
|
|
private RequestType type;
|
|
@Enumerated(EnumType.STRING)
|
|
private AuthType authType;
|
|
|
|
@Column(columnDefinition = "TEXT")
|
|
private String errorMessage;
|
|
@Column(columnDefinition = "TEXT")
|
|
private String systemErrorMessage;
|
|
private String responseCode;
|
|
@Enumerated(EnumType.STRING)
|
|
private Status status;
|
|
@Column(columnDefinition = "TEXT")
|
|
private String targetUrl;
|
|
private String sdkActionId;
|
|
private String verificationCode;
|
|
private Integer retries;
|
|
|
|
@Transient
|
|
private Object additionalData;
|
|
} |