package com.jwipc.finance.logic;

import com.jwipc.finance.dto.CostInvoicedApplyDTO;
import com.jwipc.finance.dto.CostInvoicedApplyPrintDTO;
import com.jwipc.finance.dto.CostInvoicedApplySaveParamDTO;
import com.jwipc.finance.dto.InvoicedApplySaveParamDTO;
import com.jwipc.finance.entity.CostInvoicedApply;
import com.jwipc.finance.model.query.CostInvoicedApplyQuery;
import com.jwipc.page.PageView;
import com.jwipc.sys.dto.BusinessAttachmentDTO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author shenyang.ou
 * @date 2025/11/5 11:50
 * @desc
 */
public interface CostInvoicedApplyLogic {
    CostInvoicedApply findInvoicedApplyByStatementNo(String accountStatementNo);

    CostInvoicedApplyDTO getById(Long id);

    String findInvoiceVoucher(Long id);

    CostInvoicedApplyPrintDTO selectPrintDataById(Long id);

    PageView selectDataByQuery(CostInvoicedApplyQuery query);

    /**
     * 开票申请单删除
     *
     * @param ids 开票申请ID
     * @param logicDelete 是否逻辑删除
     */
    void dataDel(String ids,Boolean logicDelete);

    void submitConfirm(String ids);

    void dataExport(HttpServletRequest request, HttpServletResponse response, Long id);

    List<CostInvoicedApplyDTO> listAll(CostInvoicedApplyQuery query);

    void writeOff(Long id, String writeOff);

    void updateHead(CostInvoicedApplySaveParamDTO params);

    void dataSave(CostInvoicedApplySaveParamDTO params);

    Boolean statementInvoicingCheck(String accountStatementNo);

    void purchaseConfirm(CostInvoicedApplySaveParamDTO params);

    void toImg(Long iaId);
    List<BusinessAttachmentDTO> getImgList(Long id);
    void deleteImg(Long iaId);

    void revokeFinConfirm(Long iaId, String revokeReason);

    void financeConfirmCancel(String ids);
}
