gaoluyang
3 天以前 c5dfd00d511914ee59b10f5c6cc84a1d1ae50bb9
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java
@@ -80,12 +80,17 @@
    public Long createReceivable(CrmReceivableSaveReqVO createReqVO) {
        // 1.1 校验关联数据存在
        validateRelationDataExists(createReqVO);
        // 1.2 校验关联开票合格(审批通过 + 已上传发票附件 + 与合同匹配)
        validateInvoiceForReceivable(createReqVO);
        // 1.3 校验可回款金额不超过合同剩余可回款金额
        validateReceivablePriceExceedsLimit(createReqVO);
        // 1.4 校验可回款金额不超过该开票剩余可回款金额(先开票后回款)
        validateReceivablePriceExceedsInvoiceRemaining(createReqVO);
        // 1.2 合同、关联开票均为非必填:未选择时跳过对应校验,仅按已填写的维度约束金额
        if (createReqVO.getContractId() != null) {
            // 校验可回款金额不超过合同剩余可回款金额
            validateReceivablePriceExceedsLimit(createReqVO);
        }
        if (createReqVO.getInvoiceId() != null) {
            // 校验关联开票合格(审批通过 + 已上传发票附件 + 与合同匹配)
            validateInvoiceForReceivable(createReqVO);
            // 校验可回款金额不超过该开票剩余可回款金额(先开票后回款)
            validateReceivablePriceExceedsInvoiceRemaining(createReqVO);
        }
        // 1.5 生成回款编号
        String no = noRedisDAO.generate(CrmNoRedisDAO.RECEIVABLE_PREFIX);
        if (receivableMapper.selectByNo(no) != null) {
@@ -220,12 +225,17 @@
        if (updateReqVO.getInvoiceId() == null) {
            updateReqVO.setInvoiceId(oldReceivable.getInvoiceId());
        }
        // 1.3 校验可回款金额不超过合同剩余可回款金额
        validateReceivablePriceExceedsLimit(updateReqVO);
        // 1.4 校验关联开票合格
        validateInvoiceForReceivable(updateReqVO);
        // 1.5 校验可回款金额不超过该开票剩余可回款金额
        validateReceivablePriceExceedsInvoiceRemaining(updateReqVO);
        // 1.3 合同、关联开票均为非必填:未填写时跳过对应校验
        if (updateReqVO.getContractId() != null) {
            // 校验可回款金额不超过合同剩余可回款金额
            validateReceivablePriceExceedsLimit(updateReqVO);
        }
        if (updateReqVO.getInvoiceId() != null) {
            // 校验关联开票合格
            validateInvoiceForReceivable(updateReqVO);
            // 校验可回款金额不超过该开票剩余可回款金额
            validateReceivablePriceExceedsInvoiceRemaining(updateReqVO);
        }
        // 1.6 只有未审核,可以编辑;
        if (ObjectUtil.notEqual(oldReceivable.getAuditStatus(), CrmAuditStatusEnum.PROCESS.getStatus())) {