|
@@ -944,7 +944,7 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
|
|
|
BigDecimal waitPayShop = BigDecimal.ZERO;
|
|
|
if (shopOrder != null) {
|
|
|
payShopDifference.setPayStatus(shopOrder.getPayStatus());
|
|
|
- waitPayShop = MathUtil.sub(shopOrder.getShouldPayShopAmount(), shopOrder.getPayedShopAmount());
|
|
|
+ waitPayShop = MathUtil.sub(shopOrder.getShouldPayShopAmount(), shopOrder.getDifferencePrice());
|
|
|
NewCmShop shop = newCmShopDao.get(shopOrder.getShopID().toString());
|
|
|
payShopDifference.setBankAccount(shop.getBankAccount());
|
|
|
payShopDifference.setBankAccountName(shop.getBankAccountName());
|
|
@@ -1039,64 +1039,67 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
|
|
|
|
|
|
//待付供应商金额
|
|
|
BigDecimal waitPayShop = MathUtil.sub(shopOrder.getShouldPayShopAmount(), shopOrder.getPayedShopAmount());
|
|
|
- if (payShopDifference.getType() == 2 && MathUtil.compare(differencePrice, waitPayShop) > 0) {
|
|
|
- //多付且差价大于待付金额,会发生供应商退款操作
|
|
|
- BigDecimal waitRefund = MathUtil.sub(differencePrice, waitPayShop);
|
|
|
- String refundWay = payShopDifference.getRefundWay();
|
|
|
- BigDecimal refundAmount = payShopDifference.getRefundAmount();
|
|
|
- BigDecimal refundBalanceAmount = payShopDifference.getRefundBalanceAmount();
|
|
|
- if (refundWay.equals("1")) {
|
|
|
- //线下退
|
|
|
- refundBalanceAmount = BigDecimal.ZERO;
|
|
|
- } else if (refundWay.equals("2")) {
|
|
|
- //欠款账簿
|
|
|
- refundAmount = BigDecimal.ZERO;
|
|
|
- } else {
|
|
|
- //两种方式都有
|
|
|
- refundWay = "3";
|
|
|
- }
|
|
|
- logger.info("待付waitRefund>>>" + waitRefund + ">>>refundAmount金额>>>" + refundAmount + ">>>refundBalanceAmount金额>>>" + refundBalanceAmount);
|
|
|
- if (MathUtil.compare(waitRefund, MathUtil.add(refundAmount, refundBalanceAmount)) == 0) {
|
|
|
- CmRefundShop refundShop = new CmRefundShop();
|
|
|
- refundShop.setShopID(shopOrder.getShopID().toString());
|
|
|
- refundShop.setOperator(currentUser.getId());
|
|
|
- refundShop.setOperatTime(time);
|
|
|
- refundShop.setRefundWay(refundWay);
|
|
|
- refundShop.setRefundAmount(refundAmount.doubleValue());
|
|
|
- refundShop.setRefundBalanceAmount(refundBalanceAmount.doubleValue());
|
|
|
- refundShop.setRefundType(payShopDifference.getRefundType().toString());
|
|
|
- refundShop.setRemark(payShopDifference.getRemark());
|
|
|
- refundShop.setDelFlag("0");
|
|
|
- cmRefundShopDao.insert(refundShop);
|
|
|
+ Integer payWay= newShopOrderDao.payWay(shopOrderId);
|
|
|
+ if(payWay==1 && shopOrder.getShopReceiptStatus()==2) {
|
|
|
+ if (payShopDifference.getType() == 2 && MathUtil.compare(differencePrice, waitPayShop) > 0) {
|
|
|
+ //多付且差价大于待付金额,会发生供应商退款操作
|
|
|
+ BigDecimal waitRefund = MathUtil.sub(differencePrice, waitPayShop);
|
|
|
+ String refundWay = payShopDifference.getRefundWay();
|
|
|
+ BigDecimal refundAmount = payShopDifference.getRefundAmount();
|
|
|
+ BigDecimal refundBalanceAmount = payShopDifference.getRefundBalanceAmount();
|
|
|
+ if (refundWay.equals("1")) {
|
|
|
+ //线下退
|
|
|
+ refundBalanceAmount = BigDecimal.ZERO;
|
|
|
+ } else if (refundWay.equals("2")) {
|
|
|
+ //欠款账簿
|
|
|
+ refundAmount = BigDecimal.ZERO;
|
|
|
+ } else {
|
|
|
+ //两种方式都有
|
|
|
+ refundWay = "3";
|
|
|
+ }
|
|
|
+ logger.info("待付waitRefund>>>" + waitRefund + ">>>refundAmount金额>>>" + refundAmount + ">>>refundBalanceAmount金额>>>" + refundBalanceAmount);
|
|
|
+ if (MathUtil.compare(waitRefund, MathUtil.add(refundAmount, refundBalanceAmount)) == 0) {
|
|
|
+ CmRefundShop refundShop = new CmRefundShop();
|
|
|
+ refundShop.setShopID(shopOrder.getShopID().toString());
|
|
|
+ refundShop.setOperator(currentUser.getId());
|
|
|
+ refundShop.setOperatTime(time);
|
|
|
+ refundShop.setRefundWay(refundWay);
|
|
|
+ refundShop.setRefundAmount(refundAmount.doubleValue());
|
|
|
+ refundShop.setRefundBalanceAmount(refundBalanceAmount.doubleValue());
|
|
|
+ refundShop.setRefundType(payShopDifference.getRefundType().toString());
|
|
|
+ refundShop.setRemark(payShopDifference.getRemark());
|
|
|
+ refundShop.setDelFlag("0");
|
|
|
+ cmRefundShopDao.insert(refundShop);
|
|
|
|
|
|
- CmRefundShopRecord record = new CmRefundShopRecord();
|
|
|
- record.setShopID(String.valueOf(shopOrder.getShopID()));
|
|
|
- record.setShopOrderID(shopOrder.getShopOrderID().toString());
|
|
|
- record.setShopOrderNo(shopOrder.getShopOrderNo());
|
|
|
- record.setRefundType("5");
|
|
|
- record.setRefundAmount(waitRefund.doubleValue());
|
|
|
- record.setRefundTime(time);
|
|
|
- record.setRefundShopID(refundShop.getId());
|
|
|
- record.setDelFlag("0");
|
|
|
- cmRefundShopRecordDao.insert(record);
|
|
|
- payShopDifference.setRefundShopId(Integer.valueOf(refundShop.getId()));
|
|
|
+ CmRefundShopRecord record = new CmRefundShopRecord();
|
|
|
+ record.setShopID(String.valueOf(shopOrder.getShopID()));
|
|
|
+ record.setShopOrderID(shopOrder.getShopOrderID().toString());
|
|
|
+ record.setShopOrderNo(shopOrder.getShopOrderNo());
|
|
|
+ record.setRefundType("5");
|
|
|
+ record.setRefundAmount(waitRefund.doubleValue());
|
|
|
+ record.setRefundTime(time);
|
|
|
+ record.setRefundShopID(refundShop.getId());
|
|
|
+ record.setDelFlag("0");
|
|
|
+ cmRefundShopRecordDao.insert(record);
|
|
|
+ payShopDifference.setRefundShopId(Integer.valueOf(refundShop.getId()));
|
|
|
|
|
|
- //修改付供应商状态
|
|
|
- newShopOrderDao.updatePayStatus(shopOrder.getShopOrderID(), "3");
|
|
|
- List<NewShopOrder> shopOrders = newShopOrderDao.findListByOrderID(shopOrder.getOrderID());
|
|
|
- AtomicBoolean isPayStatus = new AtomicBoolean(true);
|
|
|
- shopOrders.forEach(s -> {
|
|
|
- if (!"3".equals(s.getPayStatus())) {
|
|
|
- isPayStatus.set(false);
|
|
|
- }
|
|
|
- });
|
|
|
- if (isPayStatus.get()) {
|
|
|
- newOrderDao.updatePayStatus("3", shopOrder.getOrderID());
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw new Exception("退款金额异常");
|
|
|
- }
|
|
|
- }
|
|
|
+ //修改付供应商状态
|
|
|
+ newShopOrderDao.updatePayStatus(shopOrder.getShopOrderID(), "3");
|
|
|
+ List<NewShopOrder> shopOrders = newShopOrderDao.findListByOrderID(shopOrder.getOrderID());
|
|
|
+ AtomicBoolean isPayStatus = new AtomicBoolean(true);
|
|
|
+ shopOrders.forEach(s -> {
|
|
|
+ if (!"3".equals(s.getPayStatus())) {
|
|
|
+ isPayStatus.set(false);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (isPayStatus.get()) {
|
|
|
+ newOrderDao.updatePayStatus("3", shopOrder.getOrderID());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new Exception("退款金额异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
payShopDifference.setModifyUserId(Integer.parseInt(UserUtils.getUser().getId()));
|
|
|
cmPayShopRecordDao.insertDifference(payShopDifference);
|
|
|
if (!("3".equals(shopOrder.getPayStatus()) && 1 == payShopDifference.getType())) {
|
|
@@ -1293,17 +1296,6 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
|
|
|
newOrderDao.insertSettleRecord(settleRecord);
|
|
|
// 修改cm_split_account settlestatus
|
|
|
newOrderDao.updateSettleStatus(shopOrderId, 3);
|
|
|
- //计算供应商成本,结算金额,修改结算状态
|
|
|
- Double shouldPayShopAmount = newOrderDao.findShouldPayShopAmount(shopOrderId);
|
|
|
- //计算供应商成本,结算金额,修改结算状态
|
|
|
- Double settleSum = newOrderDao.findSettleSum(shopOrderId);
|
|
|
- if (shouldPayShopAmount > settleSum) {
|
|
|
- //成本>结算金额,部分结算
|
|
|
- newOrderDao.updateShopOrderSettleStatus(shopOrderId, 2);
|
|
|
- } else {
|
|
|
- //成本=结算金额 全部结算
|
|
|
- newOrderDao.updateShopOrderSettleStatus(shopOrderId, 3);
|
|
|
- }
|
|
|
}
|
|
|
//解锁
|
|
|
redisService.remove("SDJSS");
|