package com.ga.core.mapper.commission;

import com.ga.core.vo.commission.AdvanceRecoveryLedgerVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * advance_recovery_ledger Mapper — 선지급 상계 이력 (V117)
 */
@Mapper
public interface AdvanceRecoveryLedgerMapper {

    int insert(AdvanceRecoveryLedgerVO vo);

    /**
     * 배치 멱등용: 당월 상계 이력 삭제 (역산 후 재적용 패턴).
     */
    int deleteBySettleMonth(@Param("advanceId") Long advanceId,
                            @Param("settleMonth") String settleMonth);

    /**
     * 선지급금 ID + 정산월 기준 상계 이력 조회.
     */
    List<AdvanceRecoveryLedgerVO> selectBySettleMonth(@Param("advanceId") Long advanceId,
                                                      @Param("settleMonth") String settleMonth);

    /**
     * 배치 멱등용: 해당 정산월에 상계 이력이 있는 선지급금 ID 목록(중복 제거).
     * reverse 단계에서 월 단위로 역산 대상을 식별한다.
     */
    List<Long> selectAdvanceIdsBySettleMonth(@Param("settleMonth") String settleMonth);
}
