package com.ga.core.mapper.installment;

import com.ga.core.vo.installment.InstallmentPlanResp;
import com.ga.core.vo.installment.InstallmentPlanSearchParam;
import com.ga.core.vo.installment.InstallmentPlanVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface InstallmentPlanMapper {

    List<InstallmentPlanResp> selectList(InstallmentPlanSearchParam param);

    InstallmentPlanResp selectDetailById(@Param("planId") Long planId);

    InstallmentPlanVO selectById(@Param("planId") Long planId);

    /** 계약의 전체 분급 계획 조회 (계약 상세 화면용) */
    List<InstallmentPlanVO> selectByContract(@Param("contractId") Long contractId);

    /** 정산월의 SCHEDULED 분급 계획 조회 (배치 지급 처리용) */
    List<InstallmentPlanVO> selectScheduledByMonth(@Param("settleMonth") String settleMonth);

    int insert(InstallmentPlanVO vo);

    /** 7년치 분급 계획 일괄 생성 */
    int insertBatch(@Param("list") List<InstallmentPlanVO> list);

    int update(InstallmentPlanVO vo);

    int updateStatus(@Param("planId") Long planId, @Param("status") String status);

    /** 계약 삭제 시 연관 분급 계획 일괄 삭제 */
    int deleteByContract(@Param("contractId") Long contractId);
}
