|
@@ -267,39 +267,37 @@ public class CmRefundsProductController extends BaseController {
|
|
BpClause bpClause = new BpClause();
|
|
BpClause bpClause = new BpClause();
|
|
bpClause.setEnabledStatus("1");
|
|
bpClause.setEnabledStatus("1");
|
|
List<BpClause> bpClauses = bpClauseService.findList(bpClause);
|
|
List<BpClause> bpClauses = bpClauseService.findList(bpClause);
|
|
-
|
|
|
|
CmDiscernReceipt cmDiscernReceipt = cmDiscernReceiptDao.findPayType(newOrder.getOrderID().toString());
|
|
CmDiscernReceipt cmDiscernReceipt = cmDiscernReceiptDao.findPayType(newOrder.getOrderID().toString());
|
|
|
|
+
|
|
//是否可以线上退回
|
|
//是否可以线上退回
|
|
boolean returnOnline = false;
|
|
boolean returnOnline = false;
|
|
if (cmDiscernReceipt != null && "1".equals(cmDiscernReceipt.getPayWay())) {
|
|
if (cmDiscernReceipt != null && "1".equals(cmDiscernReceipt.getPayWay())) {
|
|
Date splitTime = cmDiscernReceiptDao.findSplitTime(newOrder.getOrderID());
|
|
Date splitTime = cmDiscernReceiptDao.findSplitTime(newOrder.getOrderID());
|
|
if (splitTime != null) {
|
|
if (splitTime != null) {
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
|
- calendar.setTime(splitTime);
|
|
|
|
- calendar.set(Calendar.HOUR_OF_DAY, 23);
|
|
|
|
- calendar.set(Calendar.MINUTE, 20);
|
|
|
|
- if (calendar.getTime().compareTo(new Date()) > 0) {
|
|
|
|
- returnOnline = true;
|
|
|
|
- }
|
|
|
|
|
|
+// Calendar calendar = Calendar.getInstance();
|
|
|
|
+// calendar.setTime(splitTime);
|
|
|
|
+// calendar.set(Calendar.HOUR_OF_DAY, 23);
|
|
|
|
+// calendar.set(Calendar.MINUTE, 20);
|
|
|
|
+// if (calendar.getTime().compareTo(new Date()) > 0) {
|
|
|
|
+// returnOnline = true;
|
|
|
|
+// }
|
|
|
|
+ returnOnline = false;
|
|
} else {
|
|
} else {
|
|
returnOnline = true;
|
|
returnOnline = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //订单支付线上余额
|
|
|
|
Double onlineMoney = cmDiscernReceiptDao.findOnlineMoney(newOrder.getOrderID().toString());
|
|
Double onlineMoney = cmDiscernReceiptDao.findOnlineMoney(newOrder.getOrderID().toString());
|
|
- //线上只能全退,理论不用考虑线上退款
|
|
|
|
-// Double refundOnlineMoney = cmDiscernReceiptDao.findRefundOnlineMoney(newOrder.getOrderID().toString());
|
|
|
|
- //订单支付线下余额
|
|
|
|
|
|
+ Double refundOnlineMoney = cmDiscernReceiptDao.findRefundOnlineMoney(newOrder.getOrderID().toString());
|
|
Double userMoney = cmDiscernReceiptDao.findUserMoney(newOrder.getOrderID().toString());
|
|
Double userMoney = cmDiscernReceiptDao.findUserMoney(newOrder.getOrderID().toString());
|
|
Double refundUserMoney = cmDiscernReceiptDao.findRefundUserMoney(newOrder.getOrderID().toString());
|
|
Double refundUserMoney = cmDiscernReceiptDao.findRefundUserMoney(newOrder.getOrderID().toString());
|
|
refundUserMoney = null == refundUserMoney ? 0 : refundUserMoney;
|
|
refundUserMoney = null == refundUserMoney ? 0 : refundUserMoney;
|
|
-// refundOnlineMoney = null == refundOnlineMoney ? 0 : refundOnlineMoney;
|
|
|
|
|
|
+ refundOnlineMoney = null == refundOnlineMoney ? 0 : refundOnlineMoney;
|
|
onlineMoney = null == onlineMoney ? 0 : onlineMoney;
|
|
onlineMoney = null == onlineMoney ? 0 : onlineMoney;
|
|
userMoney = null == userMoney ? 0 : userMoney;
|
|
userMoney = null == userMoney ? 0 : userMoney;
|
|
//线上线下余额-退款
|
|
//线上线下余额-退款
|
|
-// onlineMoney -= refundOnlineMoney;
|
|
|
|
|
|
+ onlineMoney -= refundOnlineMoney;
|
|
userMoney -= refundUserMoney;
|
|
userMoney -= refundUserMoney;
|
|
- //退线上/线下
|
|
|
|
|
|
+ //todo 退线上/线下
|
|
if (cmDiscernReceipt != null && "3".equals(cmDiscernReceipt.getPayWay())) {
|
|
if (cmDiscernReceipt != null && "3".equals(cmDiscernReceipt.getPayWay())) {
|
|
Date splitTime = cmDiscernReceiptDao.findSplitTime(newOrder.getOrderID());
|
|
Date splitTime = cmDiscernReceiptDao.findSplitTime(newOrder.getOrderID());
|
|
if (splitTime != null) {
|
|
if (splitTime != null) {
|
|
@@ -307,45 +305,32 @@ public class CmRefundsProductController extends BaseController {
|
|
calendar.setTime(splitTime);
|
|
calendar.setTime(splitTime);
|
|
calendar.set(Calendar.HOUR_OF_DAY, 23);
|
|
calendar.set(Calendar.HOUR_OF_DAY, 23);
|
|
calendar.set(Calendar.MINUTE, 20);
|
|
calendar.set(Calendar.MINUTE, 20);
|
|
- //分帐后,如果在当天时间的11.20之前
|
|
|
|
if (calendar.getTime().compareTo(new Date()) > 0) {
|
|
if (calendar.getTime().compareTo(new Date()) > 0) {
|
|
- //余额全付
|
|
|
|
- //如果当前单线上余额>0,无线下,全付,退线上
|
|
|
|
- if (onlineMoney > 0 && userMoney == 0 && "31".equals(newOrder.getStatus())) {
|
|
|
|
- //1. 当订单全部被线上余额抵扣掉时,订单直接支付成功,无需再支付,但这抵扣掉的线上余额需要参与分账
|
|
|
|
- //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
|
|
|
|
|
|
+ // 分账前 如果当前单线上余额支付>0并且>退款可以退线上
|
|
|
|
+ if (onlineMoney > 0 && MathUtil.compare(onlineMoney, refundOnlineMoney) > 0) {
|
|
returnOnline = true;
|
|
returnOnline = true;
|
|
}
|
|
}
|
|
- if (onlineMoney > 0 && userMoney == 0 && "21".equals(newOrder.getStatus())) {
|
|
|
|
- //2. 当线上余额只抵扣了部分订单金额,该订单只能走线上支付
|
|
|
|
- //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
|
|
|
|
- returnOnline = true;
|
|
|
|
|
|
+ if (userMoney > 0 && newOrder.getPayableAmount() == 0 && MathUtil.compare(newOrder.getPayTotalFee(), newOrder.getBalancePayFee()) == 0) {
|
|
|
|
+ //余额全付其中有线下,重新置为不能线上
|
|
|
|
+ returnOnline = false;
|
|
|
|
+ }
|
|
|
|
+ if (onlineMoney > 0 && userMoney > 0 && newOrder.getPayableAmount() > 0) {
|
|
|
|
+ //单没付完,线上线下余额都有,不能线上
|
|
|
|
+ returnOnline = false;
|
|
}
|
|
}
|
|
-// if (userMoney > 0 && onlineMoney > 0 && newOrder.getPayableAmount() == 0 && "31".equals(newOrder.getStatus())) {
|
|
|
|
-// //5. 当线上余额和线下余额两者都抵扣了且将订单金额全部抵扣完了,订单直接支付成功,无需再支付,但这抵扣掉的线上余额需要参与分账
|
|
|
|
-// //此种订单的退款方式有:线下转账,账户余额(两者只能选一个),只能全部退款
|
|
|
|
-// returnOnline = false;
|
|
|
|
-// }
|
|
|
|
-// if (onlineMoney > 0 && userMoney > 0 && "21".equals(newOrder.getStatus())) {
|
|
|
|
-// //6. 当线上余额和线下余额两者都抵扣了但只抵扣了部分订单金额,订单只能走线下支付,点击提交订单,跳转到线下支付页面
|
|
|
|
-// //此种订单的退款方式有:线下转账,账户余额(两者只能选一个),只能全部退款
|
|
|
|
-// //7. 当订单多次付款,前笔款已经分账,后笔款暂未分账,此时申请退款
|
|
|
|
-// //此种订单的退款方式有:线下转账,账户余额(两者只能选一个),只能全部退款,而且是都退到线下余额
|
|
|
|
-// returnOnline = false;
|
|
|
|
-// }
|
|
|
|
}
|
|
}
|
|
- }
|
|
|
|
- //未分账
|
|
|
|
- else {
|
|
|
|
- if (onlineMoney > 0 && userMoney == 0 && "31".equals(newOrder.getStatus())) {
|
|
|
|
- //1. 当订单全部被线上余额抵扣掉时,订单直接支付成功,无需再支付,但这抵扣掉的线上余额需要参与分账
|
|
|
|
- //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
|
|
|
|
|
|
+ } else {
|
|
|
|
+ // 分账前 如果当前单线上余额支付>0并且>退款可以退线上
|
|
|
|
+ if (onlineMoney > 0 && MathUtil.compare(onlineMoney, refundOnlineMoney) > 0) {
|
|
returnOnline = true;
|
|
returnOnline = true;
|
|
}
|
|
}
|
|
- if (onlineMoney > 0 && userMoney == 0 && "21".equals(newOrder.getStatus())) {
|
|
|
|
- //2. 当线上余额只抵扣了部分订单金额,该订单只能走线上支付
|
|
|
|
- //此种订单的退款方式有:线上退回,账户余额(两者只能选一个),只能全部退款
|
|
|
|
- returnOnline = true;
|
|
|
|
|
|
+ if (userMoney > 0 && newOrder.getPayableAmount() == 0 && MathUtil.compare(newOrder.getPayTotalFee(), newOrder.getBalancePayFee()) == 0) {
|
|
|
|
+ //余额全付其中有线下,重新置为不能线上
|
|
|
|
+ returnOnline = false;
|
|
|
|
+ }
|
|
|
|
+ if (userMoney > 0 && onlineMoney > 0 && newOrder.getPayableAmount() > 0) {
|
|
|
|
+ //单没付完,线上线下余额都有,不能线上
|
|
|
|
+ returnOnline = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|