package com.jwipc.finance.logic;

import com.jwipc.finance.dto.CompanyInvoicedApplyDTO;
import com.jwipc.finance.dto.CompanyInvoicedApplyPrintDTO;
import com.jwipc.finance.dto.CompanyInvoicedApplySaveParamDTO;
import com.jwipc.finance.entity.CompanyInvoicedApply;
import com.jwipc.finance.model.query.CompanyInvoicedApplyQuery;
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 CompanyInvoicedApplyLogic {
    CompanyInvoicedApply findInvoicedApplyByStatementNo(String accountStatementNo);

    CompanyInvoicedApplyDTO getById(Long id);

    String findInvoiceVoucher(Long id);

    CompanyInvoicedApplyPrintDTO selectPrintDataById(Long id);

    PageView selectDataByQuery(CompanyInvoicedApplyQuery 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<CompanyInvoicedApplyDTO> listAll(CompanyInvoicedApplyQuery query);

    void writeOff(Long id, String writeOff);

    void updateHead(CompanyInvoicedApplySaveParamDTO params);

    void dataSave(CompanyInvoicedApplySaveParamDTO params);

    Boolean statementInvoicingCheck(String accountStatementNo);

    void purchaseConfirm(CompanyInvoicedApplySaveParamDTO params);

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

    void revokeFinConfirm(Long iaId, String revokeReason);

    void financeConfirmCancel(String ids);

    void payableSend(String ids);

    CompanyInvoicedApply findInvoicedExtApplyByStatementNo(String accountStatementNo);
}
