package com.sunxung.factoring.service.ledger;

import com.sunxung.factoring.entity.GridPage;
import com.sunxung.factoring.entity.customerinformation.SupplierBankCardInfo;
import com.sunxung.factoring.entity.ledger.LedgerFundGoodsAssign;
import com.sunxung.factoring.entity.ledger.vo.LedgerAccountInfoVo;
import com.sunxung.factoring.entity.ledger.vo.LedgerPlanFactoringSearch;
import com.sunxung.factoring.entity.ledger.vo.SupplierListVo;
import com.sunxung.factoring.entity.underlying.sop.PaymentCollectionPlanFactoring;

import java.util.List;

/**
 * 分账service
 *
 * @author LiuJia
 * @date 2021.11.11
 */
public interface LedgerManagementService {

    /**
     * 保存基础信息
     *
     * @param ledgerAccountInfoVo
     */
    void add(LedgerAccountInfoVo ledgerAccountInfoVo);

    /**
     * 跳转到业务分配页面
     *
     * @param businessKey
     * @return
     */
    LedgerAccountInfoVo getById(Long businessKey);

    /**
     * 查询对应货物的收放款计划
     *
     * @param search
     * @return
     */
    GridPage<PaymentCollectionPlanFactoring> findPayCollPlanFactoringList(LedgerPlanFactoringSearch search);

    /**
     * 货物分配计算
     *
     * @param ledgerAccountInfoVo
     * @return
     */
    LedgerAccountInfoVo calculateAssign(LedgerAccountInfoVo ledgerAccountInfoVo);

    /**
     * 获取对应业务下已开过发票并通过的供应商列表
     *
     * @param id
     * @return
     */
    List<SupplierListVo> getSupplierList(Long id);

    /**
     * 选择已融资货物
     *
     * @param search
     * @return
     */
    List<LedgerFundGoodsAssign> findFinancingGoodsList(LedgerPlanFactoringSearch search);

    /**
     * 选择已验收货物
     *
     * @param search
     * @return
     */
    List<LedgerFundGoodsAssign> findAcceptanceGoodsList(LedgerPlanFactoringSearch search);

    /**
     * 查询供应商收款账号
     *
     * @param goodsAssignList
     * @return
     */
    List<SupplierBankCardInfo> findSupplierBankInfoList(List<LedgerFundGoodsAssign> goodsAssignList);
}
