gaoluyang
6 天以前 d39e4f7d839167c16425086dfa2f8747bccfdff9
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/invoice/CrmInvoiceService.java
@@ -1,9 +1,14 @@
package cn.iocoder.yudao.module.crm.service.invoice;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.crm.controller.admin.invoice.vo.invoice.CrmInvoiceEntryReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.invoice.vo.invoice.CrmInvoiceImportExcelVO;
import cn.iocoder.yudao.module.crm.controller.admin.invoice.vo.invoice.CrmInvoiceImportRespVO;
import cn.iocoder.yudao.module.crm.controller.admin.invoice.vo.invoice.CrmInvoicePageReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.invoice.vo.invoice.CrmInvoiceSaleOutRespVO;
import cn.iocoder.yudao.module.crm.controller.admin.invoice.vo.invoice.CrmInvoiceSaveReqVO;
import cn.iocoder.yudao.module.crm.dal.dataobject.invoice.CrmInvoiceDO;
import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO;
import jakarta.validation.Valid;
import java.math.BigDecimal;
@@ -29,11 +34,45 @@
    Long createInvoice(@Valid CrmInvoiceSaveReqVO createReqVO);
    /**
     * 导入开票
     *
     * @param importList 导入的开票列表
     * @return 导入结果
     */
    CrmInvoiceImportRespVO importInvoiceList(List<CrmInvoiceImportExcelVO> importList);
    /**
     * 更新开票
     *
     * @param updateReqVO 更新信息
     */
    void updateInvoice(@Valid CrmInvoiceSaveReqVO updateReqVO);
    /**
     * 开票申请录入发票
     *
     * 仅审批通过的开票申请可录入;录入后开票进入「已录入」状态,可被回款单关联。
     *
     * @param reqVO 录入信息
     */
    void entryInvoice(@Valid CrmInvoiceEntryReqVO reqVO);
    /**
     * 获得开票可选的销售出库单
     *
     * @param saleOrderId      销售订单编号
     * @param excludeInvoiceId 需排除的开票编号,可为空
     * @return 出库单列表(含已开票、剩余可开票金额)
     */
    List<CrmInvoiceSaleOutRespVO> getSaleOutListForInvoice(Long saleOrderId, Long excludeInvoiceId);
    /**
     * 获得开票单对应的收款节点
     *
     * @param invoiceId 开票编号
     * @return 收款节点列表
     */
    List<CrmReceivablePlanDO> getPaymentNodeListByInvoiceId(Long invoiceId);
    /**
     * 更新开票流程审批结果
@@ -121,7 +160,7 @@
    List<CrmInvoiceDO> getInvoiceListByContractIdAndStatus(Long contractId, Collection<Integer> auditStatuses);
    /**
     * 获得合同已开票金额 Map(仅审批通过)
     * 获得合同已开票金额 Map(审批通过 + 审批中,与开票防超校验口径一致)
     *
     * @param contractIds 合同编号
     * @return 开票金额 Map