package com.jwipc.finance.logic;

import com.jwipc.finance.dto.CompanyAccountStatementApproveDTO;
import com.jwipc.finance.dto.CompanyAccountStatementDTO;
import com.jwipc.finance.dto.CompanyAccountStatementParamDTO;
import com.jwipc.finance.model.query.CompanyAccountStatementQuery;
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 CompanyAccountStatementLogic {
    CompanyAccountStatementDTO getById(Long id);

    PageView findByPage(CompanyAccountStatementQuery query);

    List<CompanyAccountStatementDTO> listAll(CompanyAccountStatementQuery query);

    void saveOrUpdate(CompanyAccountStatementParamDTO 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(CompanyAccountStatementApproveDTO params);
    void financeApproveOperation(CompanyAccountStatementApproveDTO params);

    void revokeFinConfirmed(Long asId, String revokeReason);

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

    List<CompanyAccountStatementDTO> accountOrApplyList(CompanyAccountStatementQuery query);
}
