mirror of
https://gitee.com/yudaocode/yudao-boot-mini.git
synced 2026-10-06 14:13:14 +08:00
Merge pull request #1241 from dadiyang/fix/crm-contract-total-price-validation
[BUG] CRM:合同金额边界缺口——无明细合同的填写金额被重算覆盖为 0;合同金额字段无负值校验
This commit is contained in:
+2
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.crm.framework.operatelog.core.CrmCustomerParseFun
|
||||
import cn.iocoder.yudao.module.crm.framework.operatelog.core.SysAdminUserParseFunction;
|
||||
import com.mzt.logapi.starter.annotation.DiffLogField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.DecimalMin;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -67,6 +68,7 @@ public class CrmContractSaveReqVO {
|
||||
|
||||
@Schema(description = "合同金额", example = "5617")
|
||||
@DiffLogField(name = "合同金额")
|
||||
@DecimalMin(value = "0", message = "合同金额不能小于 0")
|
||||
private BigDecimal totalPrice;
|
||||
|
||||
@Schema(description = "客户签约人编号", example = "18546")
|
||||
|
||||
+4
@@ -217,6 +217,10 @@ public class CrmContractServiceImpl implements CrmContractService {
|
||||
|
||||
private void calculateTotalPrice(CrmContractDO contract, List<CrmContractProductDO> contractProducts) {
|
||||
contract.setTotalProductPrice(getSumValue(contractProducts, CrmContractProductDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO));
|
||||
// 无产品明细的合同,合同金额以传入值为准(支持手工填写合同金额),不做重算覆盖
|
||||
if (CollUtil.isEmpty(contractProducts)) {
|
||||
return;
|
||||
}
|
||||
BigDecimal discountPrice = MoneyUtils.priceMultiplyPercent(contract.getTotalProductPrice(), contract.getDiscountPercent());
|
||||
contract.setTotalPrice(contract.getTotalProductPrice().subtract(discountPrice));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user