package com.jwipc.finance.logic;

import com.jwipc.finance.dto.AccountStatementDTO;
import com.jwipc.finance.dto.CostAccountStatementApproveDTO;
import com.jwipc.finance.dto.CostAccountStatementDTO;
import com.jwipc.finance.dto.CostAccountStatementParamDTO;
import com.jwipc.finance.model.query.AccountStatementQuery;
import com.jwipc.finance.model.query.CostAccountStatementQuery;
import com.jwipc.page.PageView;

import java.util.List;
import java.util.Map;

/**
 * @author shenyang.ou
 * @date 2025/11/3 17:56
 * @desc
 */
public interface CostAccountStatementLogic {
    CostAccountStatementDTO getById(Long id);

    PageView findByPage(CostAccountStatementQuery query);

    List<CostAccountStatementDTO> listAll(CostAccountStatementQuery query);

    void saveOrUpdate(CostAccountStatementParamDTO param);

    void dataDel(String ids, Integer type);

    void submitConfirm(String ids);

    Map<String, Object> printStatement(Long id);

    void saveSignFile(Long signFile, Long id);

    void sendSign(String id);

    void revokeFinConfirm(Long asId, String revokeReason);

    void purchaseApproveOperation(CostAccountStatementApproveDTO params);
    void financeApproveOperation(CostAccountStatementApproveDTO params);

    void revokeFinConfirmed(Long asId, String revokeReason);

    /**
     * 更新对账单已开票标识
     *
     * @param asId 对账单ID
     */
    void updateInvoiceCompleteFlagByAsId(Long asId, int invoiceCompleteFlag);

    List<CostAccountStatementDTO> accountOrApplyList(CostAccountStatementQuery query);
}
