package com.jwipc.finance.logic;

import com.jwipc.finance.dto.PaymentPlanDTO;
import com.jwipc.finance.model.query.PaymentPlanQuery;
import com.jwipc.page.PageView;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author 邓京术
 * @date 2025/7/22 11:39
 * @desc
 */
public interface PaymentPlanLogic {
    PageView findByPage(PaymentPlanQuery query);

//    PageView findSalesContractByPage(AccountSalesContractsDetailQuery query);

//    List<AccountSalesContractsDetailDTO> findSalesContractListAll(AccountSalesContractsDetailQuery query);


    List<PaymentPlanDTO> listAll(PaymentPlanQuery query);

    PaymentPlanDTO getById(Long id);
    PaymentPlanDTO getDtoById(Long id);

    /**
     * 对账单保存
     * @param optType 操作类型；0-新增；1-编辑；2-查看；3-主管确认；4-财务确认
     * @param headData 对账单抬头数据
     * @param statementItem 对账单明细数据
    //     * @param deductionIds 对账单扣款关系之扣款记录ID
    //     * @param rebateIds 对账单返利关系之返利记录ID
     */
    void saveOrUpdate(Integer optType,String headData, String statementItem);

    void approveOperation(Integer optType,String headData);

    void addNewPaymentPlan(String paymentPlanYear,String paymentPlanMonth,boolean flag);

    //    PaymentPlanToSapDTO makePaymentPlanSapData(Integer status, String deleteFlag, PaymentPlan statementHeadData, InvoicedApply invoicedApply, List<PaymentPlanDetail> asdList, String postDate);
    void dataDel(String ids, Integer type);
    BigDecimal findSupplierPaymentPlanSummary(String supplierCode, String companyCode, int action, String paymentType);

    //    /**
//     * 提交对账单进行确认
//     *
//     * @param ids 对账单ID集合
//     */
    void submitConfirm(String ids);
//
////    void approveOperation(PaymentPlanApproveDTO params);
//
//    /**
//     * 采购撤销待财务确认状态的对账单
//     *
//     * @param asId 对账单ID
//     * @param revokeReason 撤销原因
//     * @return 结果
//     */
//    void revokeFinConfirm(Long asId, String revokeReason);
//
//    /**
//     * 采购撤销财务已确认状态的对账单
//     *
//     * @param asId 对账单ID
//     * @param revokeReason 撤销原因
//     * @return 结果
//     */
//    void revokeFinConfirmed(Long asId, String revokeReason);
//
//    /**
//     * 更新对账单明细已开票标识以及对账单的已完成开票标识
//     *
//     * @param asdIdList 对账单明细ID集合
//     * @param invoiceCompleteFlag 开票完成标识 0:未完成 1:已完成
//     */
////    void updateInvoiceCompleteFlag(List<Long> asdIdList, int invoiceCompleteFlag);
//
//    /**
//     * 更新对账单已开票标识
//     *
//     * @param asId 对账单ID
//     */
////    void updateInvoiceCompleteFlagByAsId(Long asId, int invoiceCompleteFlag);
//
////    CopeWithUnclearDTO getCopeWithUnclear(String companyCode, String supplierCode, String currency, String inStockEndDate);
//
//    /**
//     * 查询对账单或开票申请列表
//     * @param query 查询条件
//     * @return 结果
//     */
////    List<PaymentPlanDTO> accountOrApplyList(PaymentPlanQuery query);
//
//    /**
//     * 上传签章文件
//     * @param file 文件
//     * @param signFile 文件id
//     * @param id 对账单id
//     */
////    void saveSignFile( Long signFile, Long id);
//
//    /**
//     * 一步发起签署
//     * @param id 对账单id
//     */
////    void sendSign(String id);
////
////    Map<String, Object> printStatement(Long id);
//
//    /**
//     * 购销合同
//     * @param id
//     * @return
//     */
////    Map<String, Object> printPurchaseSale(Long id);
//
//    void savePaymentRemark(Long id, String paymentRemark);
}
