package com.ga.core.mapper.tax;

import com.ga.core.vo.tax.VatReportResp;
import com.ga.core.vo.tax.VatReportSearchParam;
import com.ga.core.vo.tax.VatReportVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface VatReportMapper {

    /** 목록 조회 — settleQuarter / fileStatus 조건 */
    List<VatReportResp> selectList(VatReportSearchParam param);

    /** 단건 상세 */
    VatReportResp selectDetailById(@Param("vatId") Long vatId);

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

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