| | |
| | | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; |
| | | import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; |
| | | import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; |
| | | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; |
| | | import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; |
| | | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; |
| | | import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi; |
| | |
| | | |
| | | @Resource |
| | | private CrmContractService contractService; |
| | | @Resource |
| | | private CrmCustomerService customerService; |
| | | @Resource |
| | | private CrmPermissionService permissionService; |
| | | |
| | |
| | | } |
| | | |
| | | private void validateInvoicePriceExceedsLimit(CrmInvoiceSaveReqVO reqVO) { |
| | | // 未关联合同的(合同非必填),不占用任何合同的开票额度,无需校验上限 |
| | | if (reqVO.getContractId() == null) { |
| | | return; |
| | | } |
| | | // 1. 计算剩余可开票金额,不包括 reqVO 自身(审批中也占用额度,防止累计开票超过合同金额) |
| | | CrmContractDO contract = contractService.validateContract(reqVO.getContractId()); |
| | | BigDecimal notInvoicePrice = getRemainingInvoicePrice(contract, reqVO.getId()); |
| | |
| | | if (reqVO.getOwnerUserId() != null) { |
| | | adminUserApi.validateUser(reqVO.getOwnerUserId()); // 校验负责人存在 |
| | | } |
| | | if (reqVO.getCustomerId() != null) { |
| | | customerService.validateCustomer(reqVO.getCustomerId()); // 校验客户存在 |
| | | } |
| | | if (reqVO.getContractId() != null) { |
| | | CrmContractDO contract = contractService.validateContract(reqVO.getContractId()); |
| | | if (ObjectUtil.notEqual(contract.getAuditStatus(), CrmAuditStatusEnum.APPROVE.getStatus())) { |