|
@@ -3069,33 +3069,38 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
|
|
|
createOutboundInfo(dto);
|
|
|
|
|
|
-
|
|
|
- BigDecimal errAmount = BigDecimal.ZERO;
|
|
|
-
|
|
|
-
|
|
|
- BigDecimal multiply = new BigDecimal(contract.getAdvanceRatio()).multiply(BigDecimal.valueOf(0.01));
|
|
|
-
|
|
|
- BigDecimal subtract = BigDecimal.ONE.subtract(multiply);
|
|
|
-
|
|
|
- BigDecimal subtract2 = contract.getSumClaimMoney().subtract(contract.getAmount().multiply(multiply)).subtract(contract.getShipmentAmount());
|
|
|
- for (ContractOutboundRecords productDto : productDtoList) {
|
|
|
-
|
|
|
- BigDecimal quantity = productDto.getQuantity();
|
|
|
- if (ObjectUtil.isEmpty(quantity) || quantity.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
- continue;
|
|
|
+
|
|
|
+ String settlementMethod = contract.getSettlementMethod();
|
|
|
+ Map<String, String> dictMap = DictUtils.getDictMap("settlement_way");
|
|
|
+ if (ObjectUtil.isNotEmpty(settlementMethod) && ("出货前付清".contains(settlementMethod) || "出货前付清".contains(dictMap.getOrDefault(settlementMethod, "")))) {
|
|
|
+ BigDecimal totalAmount = BigDecimal.ZERO;
|
|
|
+ for (ContractOutboundRecords productDto : productDtoList) {
|
|
|
+
|
|
|
+ BigDecimal quantity = productDto.getQuantity();
|
|
|
+ if (ObjectUtil.isEmpty(quantity) || quantity.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ totalAmount = totalAmount.add(productDto.getQuantity().multiply(productDto.getPrice()));
|
|
|
}
|
|
|
|
|
|
- BigDecimal multiply1 = productDto.getQuantity().multiply(subtract).multiply(productDto.getPrice());
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal multiply = new BigDecimal(contract.getAdvanceRatio()).multiply(BigDecimal.valueOf(0.01));
|
|
|
+
|
|
|
+ BigDecimal subtract = BigDecimal.ONE.subtract(multiply);
|
|
|
+
|
|
|
+ BigDecimal subtract2 = contract.getSumClaimMoney().subtract(contract.getAmount().multiply(multiply)).subtract(contract.getShipmentAmount());
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal multiply1 = totalAmount.multiply(subtract);
|
|
|
if (multiply1.compareTo(subtract2) > 0) {
|
|
|
- errAmount = errAmount.add(multiply1.subtract(subtract2).setScale(4, RoundingMode.HALF_UP));
|
|
|
+ BigDecimal errAmount = multiply1.subtract(subtract2).setScale(4, RoundingMode.HALF_UP);
|
|
|
+ throw new ServiceException(String.format("收款金额不满足出货条件,至少需再收款%s %s 才能出货!", contract.getCurrency(), errAmount));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (errAmount.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- throw new ServiceException(String.format("收款金额不满足出货条件,至少需再收款%s %s 才能出货!", contract.getCurrency(), errAmount));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
|
|
|
saleOutboundComm(dto);
|
|
|
}
|
|
@@ -3127,8 +3132,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
|
|
|
|
|
|
.set(Contract::getStatus, 75)
|
|
|
- .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
- .set(BasePo::getUpdateTime, new Date())
|
|
|
+ .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
+ .set(BasePo::getUpdateTime, new Date())
|
|
|
);
|
|
|
|
|
|
ContractVo contract = baseMapper.detail(contractId);
|