package com.ga.core.mapper.tax;

import com.ga.core.vo.tax.WithholdingTaxReportResp;
import com.ga.core.vo.tax.WithholdingTaxReportSearchParam;
import com.ga.core.vo.tax.WithholdingTaxReportVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface WithholdingTaxReportMapper {

    /** 목록 조회 — settleQuarter / agentId / orgId / fileStatus 조건 */
    List<WithholdingTaxReportResp> selectList(WithholdingTaxReportSearchParam param);

    /** 단건 상세 */
    WithholdingTaxReportResp selectDetailById(@Param("reportId") Long reportId);

    /**
     * 분기 전체 UPSERT 집계.
     * payment 테이블 기준 해당 분기 설계사별 SUM 후 INSERT … ON CONFLICT DO UPDATE.
     *
     * @param quarter 집계할 분기 (예: 2025-Q1)
     * @return 처리된 행 수
     */
    int upsertQuarterlyAggregate(@Param("quarter") String quarter);

    /** 신고 완료 처리 — file_status=FILED, filed_at=now(). 호출측에서 빈 리스트 방어. */
    int updateFileStatusToFiled(@Param("ids") List<Long> ids);
}
