From d7b7ccaac1d84ecd1934eab97c0fef57bd2a847d Mon Sep 17 00:00:00 2001 From: 姜友瑶 <935090232@qq.com> Date: Mon, 30 May 2022 20:33:09 +0800 Subject: [PATCH] Merge branch 'developer' --- zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 27 +++++++++++++++++++++++++-- 1 files changed, 25 insertions(+), 2 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java index 6b98538..e233097 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java @@ -925,6 +925,28 @@ } }); + // 充值卡订单欠款检测 + if (Dictionary.FLAG_NO_N.equals(moneyCardUse.getIsVipCar())) { + SysOrder sysOrder = sysOrderDao.selectById(orderItemDao.selectById(moneyCardUse.getOrderItemId()).getOrderId()); + if (Dictionary.ORDER_STATU_QK.equals(sysOrder.getStatu())) { + if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) { + throw new GlobleException("充值卡订单存在欠款,无法使用赠送余额支付"); + } + + // 若该笔订单中,有多项明细,则充值卡直接无法支付; 若订单中,仅充值卡一项,则已付款和充值卡使用情况判断是否可使用 + List<SysOrderItem> items = orderItemDao.selectByOrderId(sysOrder.getId()); + if (items.size() > 1) { + throw new GlobleException("充值卡订单存在欠款,无法支付"); + } else { + double totalUse = moneyCardUseFlowDao.selectCardUseAmount(moneyCardUse.getId()); + Double hasPay = sysOrder.getZkTotal() - sysOrder.getArrears(); + if (hasPay < (totalUse + flow.getAmount().doubleValue())) { + throw new GlobleException("充值卡订单存在欠款,已支付金额不足"); + } + } + } + } + SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow(); @@ -1045,7 +1067,7 @@ * @date 2016年9月19日 */ public void addMoneyCardUse(SysOrder sourceOrder) { - + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); List<SysOrderItem> orderItemList = sourceOrder.getItems(); for (SysOrderItem sysOrderItem : orderItemList) { // 如果购买的是充值卡 @@ -1084,6 +1106,7 @@ moneyCardUse.setFailTime(invalidTime); moneyCardUseDao.insert(moneyCardUse); + } } } @@ -1352,7 +1375,7 @@ //赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗 boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE); if (zsConsumeAchieve) { - if (sysOrderItem.getPrice() <= 0) { + if (sysOrderItem.getZkPrice() <= 0) { //等于0取原价 if (taocanId == null) { puse.setPrice(goodsAssemble.getShoppingGoods().getPrice()); -- Gitblit v1.9.1