package com.ga.core.vo.settle;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 해촉 정산 VO (termination_settlement 테이블 1:1)
 * INSERT/UPDATE 전용.
 */
@Data
public class TerminationSettlementVO {
    private Long termSettleId;
    private Long agentId;
    private LocalDate terminationDate;           // 해촉 일자
    private Long orgHistoryId;                   // agent_org_history LEAVE 이력 참조
    private String calcMonth;                    // YYYYMM — 해촉 정산 처리 월

    // 미지급 수수료
    private BigDecimal unpaidRecruitAmount;      // 미지급 신계약 수수료
    private BigDecimal unpaidInstallmentAmount;  // 미지급 분급 잔액
    private BigDecimal unpaidIncentiveAmount;    // 미지급 시책

    // 환수
    private BigDecimal chargebackExpectedAmount; // 환수 예정 총액
    private BigDecimal chargebackWaivedAmount;   // 면제 환수액

    // 공제
    private BigDecimal deductionAmount;          // 공제 차감액

    // 최종 지급
    private BigDecimal finalPayAmount;           // 최종 지급액

    private String status;                       // CALCULATING/CONFIRMED/PAID/CANCELLED
    private String note;
    private Long confirmedBy;
    private LocalDateTime confirmedAt;
    private LocalDateTime paidAt;
    private Long paymentId;                      // payment 참조

    private LocalDateTime createdAt;
    private Long createdBy;
    private LocalDateTime updatedAt;
    private Long updatedBy;
}
