Преглед изворни кода

Merge remote-tracking branch 'origin/developer' into developerH

# Conflicts:
#	src/main/webapp/WEB-INF/views/modules/product-new/secondHand.jsp
Duan_xu пре 2 година
родитељ
комит
d9c23c77e2
27 измењених фајлова са 836 додато и 198 уклоњено
  1. 85 19
      src/main/java/com/caimei/modules/bulkpurchase/web/CmRefundsProductController.java
  2. 8 0
      src/main/java/com/caimei/modules/order/dao/CmReturnedPurchaseDao.java
  3. 2 0
      src/main/java/com/caimei/modules/order/dao/NewOrderDao.java
  4. 9 0
      src/main/java/com/caimei/modules/order/entity/NewOrder.java
  5. 0 5
      src/main/java/com/caimei/modules/order/service/CmDiscernReceiptService.java
  6. 17 0
      src/main/java/com/caimei/modules/order/service/CmPayShopService.java
  7. 91 93
      src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java
  8. 4 1
      src/main/java/com/caimei/modules/order/service/NewOrderService.java
  9. 3 0
      src/main/java/com/caimei/modules/order/service/NewShopOrderService.java
  10. 18 1
      src/main/java/com/caimei/modules/order/web/CmPayShopController.java
  11. 30 3
      src/main/resources/mappings/modules/order/CmReturnedPurchaseMapper.xml
  12. 12 0
      src/main/resources/mappings/modules/order/OrderMapper.xml
  13. 1 0
      src/main/resources/mappings/modules/order/ShopOrderMapper.xml
  14. 117 30
      src/main/webapp/WEB-INF/views/modules/bulkpurchase/applyRefoundForm.jsp
  15. 3 0
      src/main/webapp/WEB-INF/views/modules/bulkpurchase/orderConfirmReturnRecord.jsp
  16. 1 1
      src/main/webapp/WEB-INF/views/modules/bulkpurchase/orderReviewReturnRecord.jsp
  17. 55 3
      src/main/webapp/WEB-INF/views/modules/bulkpurchase/refundRecord.jsp
  18. 331 0
      src/main/webapp/WEB-INF/views/modules/bulkpurchase/settlementRecord.jsp
  19. 3 0
      src/main/webapp/WEB-INF/views/modules/order/checkPaymentOrder.jsp
  20. 26 25
      src/main/webapp/WEB-INF/views/modules/order/cmDiscernReceiptForm.jsp
  21. 0 5
      src/main/webapp/WEB-INF/views/modules/order/cmSettlementForm.jsp
  22. 9 1
      src/main/webapp/WEB-INF/views/modules/order/cmSettlementList.jsp
  23. 1 1
      src/main/webapp/WEB-INF/views/modules/order/cmSplitAccountList.jsp
  24. 3 3
      src/main/webapp/WEB-INF/views/modules/order/newOrderList.jsp
  25. 5 5
      src/main/webapp/WEB-INF/views/modules/order/orderDetail.jsp
  26. 1 1
      src/main/webapp/WEB-INF/views/modules/order/settleRecordList.jsp
  27. 1 1
      src/main/webapp/WEB-INF/views/modules/product-new/secondHand.jsp

+ 85 - 19
src/main/java/com/caimei/modules/bulkpurchase/web/CmRefundsProductController.java

@@ -10,10 +10,7 @@ import com.caimei.modules.order.dao.CmDiscernReceiptDao;
 import com.caimei.modules.order.dao.CmReturnedPurchaseDao;
 import com.caimei.modules.order.dao.NewOrderProductDao;
 import com.caimei.modules.order.entity.*;
-import com.caimei.modules.order.service.CmReceiptOrderRelationService;
-import com.caimei.modules.order.service.CmReturnedPurchaseService;
-import com.caimei.modules.order.service.NewOrderProductService;
-import com.caimei.modules.order.service.NewOrderService;
+import com.caimei.modules.order.service.*;
 import com.caimei.modules.product.dao.CmPromotionDao;
 import com.caimei.modules.product.entity.CmPromotion;
 import com.caimei.modules.user.dao.CmUserDao;
@@ -41,9 +38,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 退款信息列表Controller
@@ -62,6 +58,8 @@ public class CmRefundsProductController extends BaseController {
     @Resource
     private CmReturnedPurchaseDao cmReturnedPurchaseDao;
     @Resource
+    private NewShopOrderService newShopOrderService;
+    @Resource
     private NewOrderService newOrderService;
     @Resource
     private CmReturnedPurchaseService cmReturnedPurchaseService;
@@ -161,6 +159,9 @@ public class CmRefundsProductController extends BaseController {
             if (StringUtils.isNotEmpty(cmReturnedPurchase.getId())) {
                 cmReturnedPurchase = cmReturnedPurchaseDao.get(cmReturnedPurchase.getId());//编辑重置数据
             }
+            if (2 == cmReturnedPurchase.getRefundType()) {
+                cmReturnedPurchase.setFreeRefundFee(cmReturnedPurchase.getRefundFee());
+            }
             NewOrder newOrder = newOrderService.getNewOrder(cmReturnedPurchase);
 
             //统计订单已支付金额
@@ -273,7 +274,18 @@ public class CmRefundsProductController extends BaseController {
 
             //是否可以线上退回
             boolean returnOnline = false;
-            if (cmDiscernReceipt != null && "1".equals(cmDiscernReceipt.getPayWay())) {
+            String status = "";
+            if (null != cmReturnedPurchase.getOnlineShopOrderId()) {
+                //1未结算2部分结算3已结算
+                status = cmReturnedPurchaseDao.findShopOrderSettleStatus(cmReturnedPurchase.getOnlineShopOrderId());
+                cmReturnedPurchase.setRefundFee(newOrder.getNewShopOrders().get(0).getReceiptAmount());
+                cmReturnedPurchase.setRefundOnlineFee(cmReturnedPurchase.getFreeRefundFee());
+            }
+            Integer count = cmReturnedPurchaseDao.findRefundType(cmReturnedPurchase.getOrderID());
+            if (count > 0) {
+                cmReturnedPurchase.setRefundType(3);
+            }
+            if (cmDiscernReceipt != null && "1".equals(cmDiscernReceipt.getPayWay()) && "1".equals(status)) {
                 returnOnline = true;
             }
             Integer lastReceiptDetailId = cmDiscernReceiptDao.findOrderLastReceiptDetailId(newOrder.getOrderID().toString());
@@ -310,6 +322,16 @@ public class CmRefundsProductController extends BaseController {
             if (!StringUtils.equals("1", receiptStatus)) {//代收款状态不需要支付方式0元
                 //判断退款方式(1有支付有退款(退款方式可多选具体参考以上金额)、4未支付无退款(未支付发起退款))
                 String returnedWay = cmReturnedPurchase.getReturnedWay();//1:账户余额/2:线上退回/3:线下转账
+                if (null != cmReturnedPurchase.getRefundBalanceFee() && cmReturnedPurchase.getRefundBalanceFee() > 0) {
+                    returnedWay = "1";
+                }
+                if (null != cmReturnedPurchase.getRefundOfflineFee() && cmReturnedPurchase.getRefundOfflineFee() > 0) {
+                    returnedWay = "3";
+                }
+                if (null != cmReturnedPurchase.getRefundBalanceFee() && null != cmReturnedPurchase.getRefundOfflineFee() && cmReturnedPurchase.getRefundBalanceFee() > 0 && cmReturnedPurchase.getRefundOfflineFee() > 0) {
+                    returnedWay = "1,3";
+                }
+                cmReturnedPurchase.setReturnedWay(returnedWay);
                 if (StringUtils.isNotEmpty(returnedWay)) {
                     boolean contains = returnedWay.contains(",");
                     if (!returnedWay.contains("1")) {
@@ -346,8 +368,10 @@ public class CmRefundsProductController extends BaseController {
             Integer freightNum = 0;
             //是否是订金充值订单
             boolean rechargeGoods = false;
+            Integer shopOrderId = 0;
             if (cmReturnedPurchase.getCmReturnedPurchaseProductList() != null && cmReturnedPurchase.getCmReturnedPurchaseProductList().size() > 0) {
                 for (List<CmReturnedPurchaseProduct> item : cmReturnedPurchase.getCmReturnedPurchaseProductList()) {
+                    shopOrderId = item.get(0).getShopOrderID();
                     if (item != null && item.size() > 0) {
                         for (CmReturnedPurchaseProduct bean : item) {
                             if (bean.getProductID().equals(999)) {
@@ -404,11 +428,23 @@ public class CmRefundsProductController extends BaseController {
             if (cmReturnedPurchase.getRefundOfflineFee() == null) {
                 cmReturnedPurchase.setRefundOfflineFee(0d);
             }
+
             //线上退款
             if ("2".equals(cmReturnedPurchase.getReturnedWay())) {
-                double refundOnlineFee = refundFee - newOrder.getBalancePayFee();
-                cmReturnedPurchase.setRefundOnlineFee(refundOnlineFee);
-                cmReturnedPurchase.setRefundBalanceFee(newOrder.getBalancePayFee());
+                Double paid = cmReturnedPurchaseDao.findShopOrderPaid(shopOrderId);
+                cmReturnedPurchase.setRefundFee(paid);
+                cmReturnedPurchase.setRefundOnlineFee(paid);
+                if (2 == cmReturnedPurchase.getRefundType()) {
+                    //查找线上订单已支付金额,申请退款金额不能大于此金额
+                    Double onlinePay = null == cmReturnedPurchaseDao.findOnlinePay(shopOrderId) ? 0d : cmReturnedPurchaseDao.findOnlinePay(shopOrderId);
+                    cmReturnedPurchase.setRefundFee(cmReturnedPurchase.getFreeRefundFee());
+                    cmReturnedPurchase.setRefundOnlineFee(cmReturnedPurchase.getFreeRefundFee());
+                    if (cmReturnedPurchase.getFreeRefundFee() > onlinePay) {
+                        model.addAttribute("errorMsg", "退款金额不能大于已付金额");
+                        cmReturnedPurchase.setOnlineShopOrderId(shopOrderId);
+                        return applyRefound(cmReturnedPurchase, request, response, model);
+                    }
+                }
             } else if ("1".equals(cmReturnedPurchase.getReturnedWay()) && cmReturnedPurchase.getRefundBalanceFee() == 0d) {
                 //线上支付,全部退余额
                 cmReturnedPurchase.setRefundBalanceFee(refundFee);
@@ -424,27 +460,25 @@ public class CmRefundsProductController extends BaseController {
             }
 
             //判断退款金额和打款金额是否一致
-            if(1==cmReturnedPurchase.getRefundType()){
+            if (1 == cmReturnedPurchase.getRefundType() && !"2".equals(cmReturnedPurchase.getReturnedWay())) {
                 double v = totalRefundFee - refundFee;
                 if (v > 0.1 || v < -0.1) {
                     model.addAttribute("errorMsg", "各退款方式的金额之和不等于退款总金额,请重新计算后再提交申请");
                     return applyRefound(cmReturnedPurchase, request, response, model);
                 }
-            }else if (2 == cmReturnedPurchase.getRefundType()){
-                if(!(cmReturnedPurchase.getReturnedWay()).contains("2")){
+            } else if (2 == cmReturnedPurchase.getRefundType()) {
+                if (!(cmReturnedPurchase.getReturnedWay()).contains("2")) {
                     double v = totalRefundFee - cmReturnedPurchase.getFreeRefundFee();
                     if (v > 0.1 || v < -0.1) {
                         model.addAttribute("errorMsg", "各退款方式的金额之和不等于退款总金额,请重新计算后再提交申请");
                         return applyRefound(cmReturnedPurchase, request, response, model);
                     }
                 }
-                if(cmReturnedPurchase.getFreeRefundFee()>refundFee){
-                    model.addAttribute("errorMsg", "退款金额不能大于已付金额");
-                    return applyRefound(cmReturnedPurchase, request, response, model);
-                }
             }
 
-            cmReturnedPurchase.setRefundFee(refundFee);
+            if (!"2".equals(cmReturnedPurchase.getReturnedWay())) {
+                cmReturnedPurchase.setRefundFee(refundFee);
+            }
             String saveInfo = cmReturnedPurchaseService.save(cmReturnedPurchase, freightNum, request, response, model);
             if (StringUtils.isNotEmpty(saveInfo)) {
                 model.addAttribute("errorMsg", saveInfo);
@@ -718,6 +752,13 @@ public class CmRefundsProductController extends BaseController {
                     refundFee += bean.getRefundFee();
                 }
             }
+            List<Integer> shopOrderIDs = newShopOrderService.findIDsByOrderID(cmReturnedPurchase.getOrderID());
+            List<CmPayShopRecord> pr = new ArrayList<>();
+            for (Integer shopOrderID : shopOrderIDs) {
+                List<CmPayShopRecord> payShopRecordList = newShopOrderService.getPayedRecords(shopOrderID.toString());
+                pr.addAll(payShopRecordList);
+            }
+            model.addAttribute("pr", pr);
             model.addAttribute("cmReturnedPurchaseList", dataList);
             model.addAttribute("order", newOrder);
             model.addAttribute("receipt", listRelation);
@@ -730,6 +771,31 @@ public class CmRefundsProductController extends BaseController {
         return "modules/bulkpurchase/refundRecord";
     }
 
+    @RequestMapping(value = "toSettleRecord")
+    public String toSettleRecord(CmReturnedPurchase cmReturnedPurchase, String from, HttpServletRequest request, HttpServletResponse response, Model model) {
+        try {
+            NewOrder newOrder = newOrderService.get(cmReturnedPurchase.getOrderID().toString());
+            List<CmReceiptOrderRelation> listRelation = cmReceiptOrderRelationService.findByOrderID(newOrder.getOrderID().toString());
+            List<CmReturnedPurchase> dataList = cmReturnedPurchaseService.getReturnedPurchaseList(cmReturnedPurchase);
+            Double refundFee = 0D;  //退款总额
+            for (CmReturnedPurchase bean : dataList) {
+                if (!bean.getStatus().equals("3")) {
+                    refundFee += bean.getRefundFee();
+                }
+            }
+            List<SettleRecord> settleRecord = newOrderService.findSettleRecord(cmReturnedPurchase.getOrderID());
+            model.addAttribute("settleRecord", settleRecord);
+            model.addAttribute("order", newOrder);
+            model.addAttribute("receipt", listRelation);
+            model.addAttribute("refundFee", refundFee);
+            model.addAttribute("from", from);
+            model.addAttribute("orderID", cmReturnedPurchase.getOrderID().toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "modules/bulkpurchase/settlementRecord";
+    }
+
     /**
      * @return
      * @Author ye.qin

+ 8 - 0
src/main/java/com/caimei/modules/order/dao/CmReturnedPurchaseDao.java

@@ -43,4 +43,12 @@ public interface CmReturnedPurchaseDao extends CrudDao<CmReturnedPurchase> {
     Double findRefundCharge(String orderRequestNo);
 
     Double findPayAmount(String orderRequestNo);
+
+    Double findOnlinePay(Integer shopOrderId);
+
+    String findShopOrderSettleStatus(Integer onlineShopOrderId);
+
+    Integer findRefundType(Integer orderID);
+
+    Double findShopOrderPaid(Integer shopOrderID);
 }

+ 2 - 0
src/main/java/com/caimei/modules/order/dao/NewOrderDao.java

@@ -256,4 +256,6 @@ public interface NewOrderDao extends CrudDao<NewOrder> {
     void insertSettleRecord(SettleRecord settleRecord);
 
     Double findSettleSum(String shopOrderId);
+
+    List<SettleRecord> findSettleRecord(Integer orderID);
 }

+ 9 - 0
src/main/java/com/caimei/modules/order/entity/NewOrder.java

@@ -84,6 +84,7 @@ public class NewOrder extends DataEntity<NewOrder> {
     // -----------------  v5.0.0 end
 
     //-------------        虚拟字段   ----------------------------
+    private Integer settleRecordNum;   //佣金结算数量
     private String shopName;            //供应商
     private String receiver;//收货人
     private String buyer;//买家
@@ -157,6 +158,14 @@ public class NewOrder extends DataEntity<NewOrder> {
     private Integer receiveCouponId;
     private CmHeheCouponOrderRecord heheCouponRecord;   //优惠券信息
 
+    public Integer getSettleRecordNum() {
+        return settleRecordNum;
+    }
+
+    public void setSettleRecordNum(Integer settleRecordNum) {
+        this.settleRecordNum = settleRecordNum;
+    }
+
     public Integer getOnlinfePayFlag() {
         return onlinfePayFlag;
     }

+ 0 - 5
src/main/java/com/caimei/modules/order/service/CmDiscernReceiptService.java

@@ -156,11 +156,6 @@ public class CmDiscernReceiptService extends CrudService<CmDiscernReceiptDao, Cm
                         BigDecimal refundsAmount = MathUtil.add(roi.getRefundsAmount(), shopRefundAmount);
                         roi.setRefundsAmount(refundsAmount.doubleValue());*/
                     }
-                    if (0 == roi.getOnlinePayFlag()) {
-                        // 可以线上支付,查询子订单信息
-                        List<NewShopOrder> shopOrderInfos = cmDiscernReceiptDao.getShopOrderInfos(relation.getOrderID(), null);
-                        roi.setShopOrderInfos(shopOrderInfos);
-                    }
                 }
             }
             if ("2".equals(relation.getRelationType())) { // relation.orderID 指的是主订单id

+ 17 - 0
src/main/java/com/caimei/modules/order/service/CmPayShopService.java

@@ -14,6 +14,7 @@ import com.caimei.modules.order.utils.SettlePostFormUtil;
 import com.caimei.modules.sys.utils.UploadImageUtils;
 import com.caimei.modules.user.dao.NewCmShopDao;
 import com.caimei.modules.user.entity.NewCmShop;
+import com.caimei.redis.RedisService;
 import com.caimei.utils.MathUtil;
 import com.caimei.utils.StringUtil;
 import com.opensymphony.module.sitemesh.html.CustomTag;
@@ -70,6 +71,8 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
     private HeHeNewOrderDao heHeNewOrderDao;
     @Resource
     private CmRefundShopDao cmRefundShopDao;
+    @Resource
+    private RedisService redisService;
 
 
     public List<CmPayShop> exports(Page<CmPayShop> cmPayShopPage, CmPayShop cmPayShop) {
@@ -1222,6 +1225,7 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
         String format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS").format(new Date());
         String substring = format.substring(20);
         String P3_customerNumber = newOrderDao.findSplitCode(shopOrderId);
+        redisService.set("SDJSS", 1, 120L);
         settleOrder("JSCB" + shopOrderId + substring, settleAmount, P3_customerNumber, shopOrderId, 1);
         // 结算佣金 佣金目前分到网络
         Double payAmount = newOrderDao.findPayAmount(shopOrderId);
@@ -1289,7 +1293,20 @@ 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");
             }
         }
     }

+ 91 - 93
src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java

@@ -126,6 +126,10 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
             model.addAttribute("errorMsg", "待确认,待收待发订单 不能申请退款");
             return "待确认,待收待发订单 不能申请退款";
         }
+        Integer changeFlag=0;
+        if("2".equals(cmReturnedPurchase.getReturnedWay())){
+            changeFlag=1;
+        }
         cmReturnedPurchase.setReturnedWay("1");
         if (NewOrderStatus.isNotPay(newOrder.getStatus())) {
             //未支付订单无退款
@@ -230,30 +234,32 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                 }
             }
         }
-        if (newOrder.getPromotionFullReduction() != null) {
-            //减去促销满减金额
-            returnedPurchaseFee = returnedPurchaseFee - newOrder.getPromotionFullReduction();
-        }
-        if (newOrder.getCouponAmount() > 0) {
-            //减去优惠券金额
-            returnedPurchaseFee = MathUtil.sub(returnedPurchaseFee, newOrder.getCouponAmount()).doubleValue();
-        }
-        cmReturnedPurchase.setReturnedPurchaseFee(returnedPurchaseFee);
-        refundFee += getRefundFee(newOrder, cmReturnedPurchase, freightNum);
-        //充值或缴纳订金订单
-        if (rechargeGoods) {
-            CmUser user = cmUserDao.get(newOrder.getUserID().toString());
-            if (user != null && user.getAbleUserMoney() != null && user.getAbleUserMoney() < refundFee) {
-                refundFee = user.getAbleUserMoney();
+        if (1 == cmReturnedPurchase.getRefundType() && 0==changeFlag) {
+            if (newOrder.getPromotionFullReduction() != null) {
+                //减去促销满减金额
+                returnedPurchaseFee = returnedPurchaseFee - newOrder.getPromotionFullReduction();
             }
-            cmReturnedPurchase.setReturnedPurchaseFee(refundFee);
-            if (user != null) {
-                //冻结余额
-                user.setAbleUserMoney(user.getAbleUserMoney() - refundFee);
-                cmUserDao.updateMoney(user);
+            if (newOrder.getCouponAmount() > 0) {
+                //减去优惠券金额
+                returnedPurchaseFee = MathUtil.sub(returnedPurchaseFee, newOrder.getCouponAmount()).doubleValue();
+            }
+            cmReturnedPurchase.setReturnedPurchaseFee(returnedPurchaseFee);
+            refundFee += getRefundFee(newOrder, cmReturnedPurchase, freightNum);
+            //充值或缴纳订金订单
+            if (rechargeGoods) {
+                CmUser user = cmUserDao.get(newOrder.getUserID().toString());
+                if (user != null && user.getAbleUserMoney() != null && user.getAbleUserMoney() < refundFee) {
+                    refundFee = user.getAbleUserMoney();
+                }
+                cmReturnedPurchase.setReturnedPurchaseFee(refundFee);
+                if (user != null) {
+                    //冻结余额
+                    user.setAbleUserMoney(user.getAbleUserMoney() - refundFee);
+                    cmUserDao.updateMoney(user);
+                }
             }
+            cmReturnedPurchase.setRefundFee(refundFee);
         }
-        cmReturnedPurchase.setRefundFee(refundFee);
         cmReturnedPurchaseDao.update(cmReturnedPurchase);
         return null;
     }
@@ -564,7 +570,7 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
             }
             newOrderService.update(newOrder);
             //判断是否选择退回余额
-            if ((returnedPurchase.getReturnedWay().equals("1") && returnedPurchase.getRefundBalanceFee() > 0d) || newOrder.getRechargeGoods() != null) {
+            if ((returnedPurchase.getReturnedWay().equals("1") && returnedPurchase.getRefundBalanceFee() > 0d) || 1 == newOrder.getRechargeGoods() || 2 == newOrder.getRechargeGoods()) {
                 Double userMoney = user.getUserMoney();
                 Double ableUserMoney = user.getAbleUserMoney();
                 Double refundBalanceFee = returnedPurchase.getRefundBalanceFee();
@@ -573,7 +579,7 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                 if (ableUserMoney == null) ableUserMoney = 0d;
                 if (refundBalanceFee == null) refundBalanceFee = 0d;
                 user.setUserID(newOrder.getUserID());
-
+                logger.info("");
                 //添加余额收支记录
                 CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
                 cmUserBalanceRecord.setUserId(newOrder.getUserID());
@@ -586,7 +592,7 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                 cmUserBalanceRecord.setReturnedId(Integer.parseInt(returnedPurchase.getId()));
                 cmUserBalanceRecord.setDelFlag("0");
 
-                if (newOrder.getRechargeGoods() != null) {
+                if (1 == newOrder.getRechargeGoods() || 2 == newOrder.getRechargeGoods()) {
                     user.setUserMoney(userMoney - refundFee);
                     cmUserBalanceRecord.setAmount(String.valueOf(refundFee));
                     cmUserBalanceRecord.setType("2");
@@ -754,19 +760,18 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
      *
      * @param shopOrderIds
      */
-    public void theOnlineRefund(List<Integer> shopOrderIds, Double refundOnlineFee) {
+    public void theOnlineRefund(List<Integer> shopOrderIds, Double refundOnlineFee) throws Exception {
         List<CmReceiptOrderRelation> relationList = cmReceiptOrderRelationDao.findByShopOrderIds(shopOrderIds);
         if (null != relationList && relationList.size() > 0) {
             for (CmReceiptOrderRelation orderRelation : relationList) {
                 //cdr表payway为1纯线上收款
                 if ("1".equals(orderRelation.getPayWay())) {
                     String value = "";
-                    refundOnlineFee = MathUtil.sub(refundOnlineFee, Double.parseDouble(orderRelation.getAssociateAmount())).doubleValue();
-                    if (refundOnlineFee > 0) {
+                    double chargeFee = MathUtil.sub(refundOnlineFee, Double.parseDouble(orderRelation.getAssociateAmount())).doubleValue();
+                    if (chargeFee > 0) {
                         //要退的钱大于本次交易金额
                         value = orderRelation.getAssociateAmount();
-                    }
-                    if (refundOnlineFee < 0) {
+                    } else {
                         value = refundOnlineFee.toString();
                     }
                     //不同产品区分
@@ -791,9 +796,9 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                             Double payAmount = cmReturnedPurchaseDao.findPayAmount(orderRelation.getOrderRequestNo());
                             Double charge = 0d;
                             //个人0.2%企业10
-                            if("12".equals(orderRelation.getPayType())){
+                            if ("12".equals(orderRelation.getPayType())) {
                                 charge = MathUtil.mul(payAmount, 0.002, 2).doubleValue();
-                            }else{
+                            } else {
                                 charge = 10d;
                             }
                             //0.1%手续费,转回金额*99.9%=payAmount
@@ -906,7 +911,7 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
         }
     }
 
-    public void onlinePay(String orderRequestNo, String money, Integer shopOrderId) {
+    public void onlinePay(String orderRequestNo, String money, Integer shopOrderId) throws Exception {
         AppPayRefundOrderVo orderVo = new AppPayRefundOrderVo();
         orderVo.setP1_bizType("AppPayRefund");
         String splitCode = cmReturnedPurchaseDao.findSplitCode(shopOrderId);
@@ -918,47 +923,43 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
         orderVo.setP4_refundOrderId("TK" + tk + orderRequestNo);
         //退款金额
         orderVo.setP5_amount(money);
-        try {
-            Map<String, String> map = MyBeanUtils.convertBean(orderVo, new LinkedHashMap());
-            String oriMessage = MyBeanUtils.getSignedByPresetParameter(map, AppPayRefundOrderVo.NEED_SIGN_PARAMS);
-            oriMessage += Constant.SAOMA;
-            String sign = Disguiser.disguiseMD5(oriMessage.trim());
-            logger.info("签名串:" + sign);
-            map.put("sign", sign);
-            logger.info("发送参数:" + map);
-            Map<String, Object> resultMap = HttpClientService.getHttpResp(map, Constant.REQUEST_URL);
-            logger.info("响应结果:" + resultMap);
-            if ((Integer) resultMap.get("statusCode") == HttpStatus.SC_OK) {
-                String resultMsg = (String) resultMap.get("response");
-                AppPayRefundOrderResponseVo orderResponseVo = JSONObject.parseObject(resultMsg, AppPayRefundOrderResponseVo.class);
-                String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(orderResponseVo, AppPayRefundOrderResponseVo.NEED_SIGN_PARAMS);
-                assemblyRespOriSign += Constant.SAOMA;
-                logger.info("组装返回结果签名串:" + assemblyRespOriSign);
-                String responseSign = orderResponseVo.getSign();
-                logger.info("响应签名:" + responseSign);
-                String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
-                if (checkSign.equals(responseSign)) {
-                    if ("0001".equals(orderResponseVo.getRt2_retCode())) {
-                        CmRefundRecord cmRefundRecord = new CmRefundRecord();
-                        cmRefundRecord.setRefundAmount(Double.parseDouble(money));
-                        cmRefundRecord.setOrderRequestNo(orderRequestNo);
-                        cmRefundRecord.setShopOrderId(shopOrderId);
-                        cmReturnedPurchaseDao.insertCmRefundRecord(cmRefundRecord);
-                        logger.info("第三方退款成功>>>>>>>shopOrderId>>>" + shopOrderId);
-                    } else {
-                        logger.error("退款失败========================" + orderResponseVo.getRt5_orderId() + "-" + orderResponseVo.getRt3_retMsg());
-                        throw new Exception("第三方退款失败!");
-                    }
+        Map<String, String> map = MyBeanUtils.convertBean(orderVo, new LinkedHashMap());
+        String oriMessage = MyBeanUtils.getSignedByPresetParameter(map, AppPayRefundOrderVo.NEED_SIGN_PARAMS);
+        oriMessage += Constant.SAOMA;
+        String sign = Disguiser.disguiseMD5(oriMessage.trim());
+        logger.info("签名串:" + sign);
+        map.put("sign", sign);
+        logger.info("发送参数:" + map);
+        Map<String, Object> resultMap = HttpClientService.getHttpResp(map, Constant.REQUEST_URL);
+        logger.info("响应结果:" + resultMap);
+        if ((Integer) resultMap.get("statusCode") == HttpStatus.SC_OK) {
+            String resultMsg = (String) resultMap.get("response");
+            AppPayRefundOrderResponseVo orderResponseVo = JSONObject.parseObject(resultMsg, AppPayRefundOrderResponseVo.class);
+            String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(orderResponseVo, AppPayRefundOrderResponseVo.NEED_SIGN_PARAMS);
+            assemblyRespOriSign += Constant.SAOMA;
+            logger.info("组装返回结果签名串:" + assemblyRespOriSign);
+            String responseSign = orderResponseVo.getSign();
+            logger.info("响应签名:" + responseSign);
+            String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
+            if (checkSign.equals(responseSign)) {
+                if ("0001".equals(orderResponseVo.getRt2_retCode())) {
+                    CmRefundRecord cmRefundRecord = new CmRefundRecord();
+                    cmRefundRecord.setRefundAmount(Double.parseDouble(money));
+                    cmRefundRecord.setOrderRequestNo(orderRequestNo);
+                    cmRefundRecord.setShopOrderId(shopOrderId);
+                    cmReturnedPurchaseDao.insertCmRefundRecord(cmRefundRecord);
+                    logger.info("第三方退款成功>>>>>>>shopOrderId>>>" + shopOrderId);
                 } else {
-                    logger.error("退款验签失败");
-                    throw new Exception("第三方退款验签失败!");
+                    logger.error("退款失败========================" + orderResponseVo.getRt5_orderId() + "-" + orderResponseVo.getRt3_retMsg());
+                    throw new Exception("第三方退款失败!");
                 }
             } else {
-                logger.error("退款请求失败");
-                throw new Exception("第三方退款请求失败!");
+                logger.error("退款验签失败");
+                throw new Exception("第三方退款验签失败!");
             }
-        } catch (Exception e) {
-            e.printStackTrace();
+        } else {
+            logger.error("退款请求失败");
+            throw new Exception("第三方退款请求失败!");
         }
     }
 
@@ -966,7 +967,7 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
     //1.本方法内转账手续费等待到账再发起退款请求
     //2.异步
     //3.回调
-    void unionRefund(String orderRequestNo, String money, Integer shopOrderId) {
+    void unionRefund(String orderRequestNo, String money, Integer shopOrderId) throws Exception {
         Map<String, String> sPara = new HashMap<String, String>();
         sPara.put("P1_bizType", "OnlineRefund");
         sPara.put("P2_orderId", orderRequestNo);
@@ -981,34 +982,31 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                 append(money).append("&").append("TK" + orderRequestNo).append("&").append("无").append("&").append("&").append(Constant.WANGYIN);
         String sign = Disguiser.disguiseMD5(sb.toString());
         sPara.put("sign", sign);
-        try {
-            OnlineRefundData on = postForm(sPara, Constant.YL, sign, OnlineRefundData.class);
-            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(on), JSONObject.class);
-            if (!"0000".equals(on.getRt2_retCode())) {
-                logger.info("退款失败:" + on.toString());
-                throw new Exception("退款失败");
+        OnlineRefundData on = postForm(sPara, Constant.YL, sign, OnlineRefundData.class);
+        JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(on), JSONObject.class);
+        if (!"0000".equals(on.getRt2_retCode())) {
+            logger.info("退款失败:" + on.toString());
+            throw new Exception("退款失败");
+        } else {
+            String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(on, OnlineRefundData.NEED_SIGN_PARAMS);
+            logger.info("组装返回结果签名串:" + assemblyRespOriSign);
+            assemblyRespOriSign += Constant.SPLIT + Constant.WANGYIN;
+            String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
+            if (!checkSign.equals(on.getSign())) {
+                logger.error("验签失败========================" + on.getRt3_retMsg());
+                throw new Exception("第三方退款失败!");
             } else {
-                String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(on, OnlineRefundData.NEED_SIGN_PARAMS);
-                logger.info("组装返回结果签名串:" + assemblyRespOriSign);
-                assemblyRespOriSign += Constant.SPLIT + Constant.WANGYIN;
-                String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
-                if (!checkSign.equals(on.getSign())) {
-                    logger.error("验签失败========================" + on.getRt3_retMsg());
-                    throw new Exception("第三方退款失败!");
-                } else {
-                    CmRefundRecord cmRefundRecord = new CmRefundRecord();
-                    cmRefundRecord.setRefundAmount(Double.parseDouble(money));
-                    cmRefundRecord.setOrderRequestNo(orderRequestNo);
-                    cmRefundRecord.setShopOrderId(shopOrderId);
-                    cmReturnedPurchaseDao.insertCmRefundRecord(cmRefundRecord);
-                    logger.info("第三方退款成功");
-                }
+                CmRefundRecord cmRefundRecord = new CmRefundRecord();
+                cmRefundRecord.setRefundAmount(Double.parseDouble(money));
+                cmRefundRecord.setOrderRequestNo(orderRequestNo);
+                cmRefundRecord.setShopOrderId(shopOrderId);
+                cmReturnedPurchaseDao.insertCmRefundRecord(cmRefundRecord);
+                logger.info("第三方退款成功");
             }
-        } catch (Exception e) {
-            e.printStackTrace();
         }
     }
 
+
     public <T> T postForm(Map<String, String> params, String url, String sign, Class<T> clazz) {
         FormBody.Builder builder = new FormBody.Builder();
         for (Map.Entry<String, String> entry : params.entrySet()) {

+ 4 - 1
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -1364,7 +1364,6 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
             if(null!=cmReturnedPurchase.getOnlineShopOrderId()&&0<cmReturnedPurchase.getOnlineShopOrderId()){
                  shopOrders = newShopOrderDao.findListByShopOrderId(cmReturnedPurchase.getOnlineShopOrderId());
             }
-            logger.info("shopOrders》》》》》" + shopOrders.toString());
             if (CollectionUtils.isNotEmpty(shopOrders)) {
                 for (NewShopOrder shopOrder : shopOrders) {
                     //获取退货退款记录
@@ -2596,4 +2595,8 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
         newOrderDao.updatePayAndReceipt(orderId);
         newOrderDao.updatePayStatusSon(orderId);
     }
+
+    public List<SettleRecord> findSettleRecord(Integer orderID) {
+        return newOrderDao.findSettleRecord(orderID);
+    }
 }

+ 3 - 0
src/main/java/com/caimei/modules/order/service/NewShopOrderService.java

@@ -433,6 +433,9 @@ public class NewShopOrderService extends CrudService<NewShopOrderDao, NewShopOrd
 
     public Page<NewOrder> findPaymentOrderList(Page<NewOrder> page, NewOrder newOrder) {
         newOrder.setPage(page);
+        List<SettleRecord> settleRecord = newOrderDao.findSettleRecord(newOrder.getOrderID());
+        Integer num=null==settleRecord?0:settleRecord.size();
+        newOrder.setSettleRecordNum(num);
         if (newOrder.getPayStatus() != null && newOrder.getPayStatus() != "") {
             String[] split = newOrder.getPayStatus().split(",");
             newOrder.setPs(split);

+ 18 - 1
src/main/java/com/caimei/modules/order/web/CmPayShopController.java

@@ -12,6 +12,7 @@ import com.caimei.modules.order.utils.OrderUtil;
 import com.caimei.modules.sys.utils.UploadImageUtils;
 import com.caimei.modules.user.entity.CmUserOrganize;
 import com.caimei.modules.user.service.CmUserOrganizeService;
+import com.caimei.redis.RedisService;
 import com.caimei.utils.MathUtil;
 import com.thinkgem.jeesite.common.config.Global;
 import com.thinkgem.jeesite.common.persistence.Page;
@@ -48,6 +49,9 @@ import java.util.concurrent.atomic.AtomicReference;
 @RequestMapping(value = "${adminPath}/order/cmPayShop")
 public class CmPayShopController extends BaseController {
 
+
+    @Resource
+    private RedisService redisService;
     @Autowired
     private CmPayShopService cmPayShopService;
     @Resource
@@ -771,7 +775,20 @@ public class CmPayShopController extends BaseController {
      * @return
      */
     @RequestMapping("settlement")
-    public String settlement(Double settleAmount, String shopOrderId) throws Exception {
+    public String settlement(Double settleAmount, String shopOrderId,RedirectAttributes redirectAttributes) throws Exception {
+        Double shouldPayShopAmount = newOrderDao.findShouldPayShopAmount(shopOrderId);
+        Double settleSum = newOrderDao.findSettleSum(shopOrderId);
+        if(settleSum>=shouldPayShopAmount){
+            addMessage(redirectAttributes, "此订单已结算完毕!");
+            return "redirect:" + Global.getAdminPath() + "/shopOrder/settlement";
+        }
+        if(settleSum>=shouldPayShopAmount){}
+        Integer SDJSS = (Integer) redisService.get("SDJSS");
+        //验锁
+        if (null != SDJSS && SDJSS > 0) {
+            addMessage(redirectAttributes, "请勿短时间内重复结算,等待支付公司返回结算结果!");
+            return "redirect:" + Global.getAdminPath() + "/shopOrder/splitList/?repage";
+        }
         cmPayShopService.settlement(shopOrderId, settleAmount);
         return "redirect:" + Global.getAdminPath() + "/shopOrder/settlement";
     }

+ 30 - 3
src/main/resources/mappings/modules/order/CmReturnedPurchaseMapper.xml

@@ -40,7 +40,8 @@
 		b.orderType as "orderType",
 		c.userName as "userName",
 		c.name as "name",
-		c.userOrganizeID as "userOrganizeId"
+		c.userOrganizeID as "userOrganizeId",
+		ifnull(a.refundType,1) as "refundType"
 	</sql>
 
 	<sql id="cmReturnedPurchaseJoins">
@@ -211,7 +212,8 @@
 			applicationUserID,
 			returnTime,
 			reviewUserID,
-			confirmReturnTime
+			confirmReturnTime,
+            refundType
 		) VALUES (
 			#{returnedNo},
 			#{orderID},
@@ -239,7 +241,8 @@
 			#{applicationUserID},
 			#{returnTime},
 			#{reviewUserID},
-			#{confirmReturnTime}
+			#{confirmReturnTime},
+		    #{refundType}
 		)
 	</insert>
 	<insert id="insertCmRefundRecord">
@@ -368,6 +371,9 @@
 			<if test="delFlag != null and delFlag != ''" >
 				delFlag = #{delFlag},
 			</if>
+		    <if test="refundType != null">
+				refundType = #{refundType},
+			</if>
         </set>
 
 		WHERE id = #{id}
@@ -440,4 +446,25 @@
 		select associateAmount from cm_receipt_order_relation
 		where orderRequestNo = #{orderRequestNo}
 	</select>
+	<select id="findOnlinePay" resultType="java.lang.Double">
+		SELECT SUM(receiptAmount) FROM
+		cm_discern_receipt cdr
+		LEFT JOIN cm_receipt_order_relation cror ON cror.receiptID=cdr.Id
+		WHERE shopOrderId=#{shopOrderId}
+	</select>
+	<select id="findShopOrderSettleStatus" resultType="java.lang.String">
+		select settleStatus from cm_shop_order where shopOrderID = #{onlineShopOrderId}
+	</select>
+	<select id="findRefundType" resultType="java.lang.Integer">
+		SELECT COUNT(*) FROM cm_returned_purchase
+		WHERE orderId=#{orderID}
+		  AND delflag = 0
+		  AND refundtype=2
+	</select>
+	<select id="findShopOrderPaid" resultType="java.lang.Double">
+		SELECT SUM(associateAmount)
+		FROM cm_receipt_order_relation
+		WHERE shopOrderId=#{shopOrderID}
+		AND delflag=0
+	</select>
 </mapper>

+ 12 - 0
src/main/resources/mappings/modules/order/OrderMapper.xml

@@ -134,11 +134,15 @@
         LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID and sp.status = 90
         LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
         LEFT JOIN product p ON cop.productID = p.productID
+        left join cm_shop_order cso on co.orderid=cso.orderID
         <where>
             co.orderType != 2
             <if test="orderID != null and orderID != ''">
                 AND co.orderID = #{orderID}
             </if>
+            <if test="settleStatus != null">
+                AND cso.settleStatus = #{settleStatus}
+            </if>
             <if test="orderNo != null and orderNo != ''">
                 AND co.orderNo = #{orderNo}
             </if>
@@ -1006,6 +1010,7 @@
         LEFT JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
         LEFT JOIN cm_order co ON cror.orderID = co.orderID
         WHERE cror.relationType = 2
+          AND a.receiptStatus=3
           AND cror.delFlag = 0
           AND cror.mbOrderId IS NOT NULL
           AND cror.splitStatus = 0
@@ -1356,6 +1361,13 @@
         WHERE settleType = 1
           AND shopOrderId = 24665
     </select>
+    <select id="findSettleRecord" resultType="com.caimei.modules.order.entity.SettleRecord">
+        select distinct
+        csr.settleAmount,csr.shopOrderId,csr.settleTime from cm_settle_record csr
+        left join cm_shop_order cso on csr.shopOrderId = cso.shopOrderID
+        where cso.orderID=#{orderID}
+        and settleType = 2
+    </select>
     <insert id="insertSplitAccount">
         INSERT INTO cm_split_account (orderId, productId, orderProductId, shopId, couponRecordId, vipRecordId,
                                       authVipRecordId, type, subUserNo, splitAccount,

+ 1 - 0
src/main/resources/mappings/modules/order/ShopOrderMapper.xml

@@ -1262,6 +1262,7 @@
           AND co.refundType != 2
           AND co.delFlag = 0
           AND co.orderType != 2
+          AND co.receiptStatus = 3
           AND a.delFlag = 0
           AND a.shopID != 998
           AND cdr.payWay = 1

+ 117 - 30
src/main/webapp/WEB-INF/views/modules/bulkpurchase/applyRefoundForm.jsp

@@ -36,7 +36,7 @@
                     //线下转账
                     if (${!returnOnline}){
                         //判断退款金额是否和填写金额总和一致
-                        var obj = document.getElementsByName("returnedWay");
+                        var obj = document.getElementsByClassName("check-item-review");
                         var checked0 = obj[0].checked;
                         var checked1 = obj[1].checked;
                         if(!checked1 && !checked0){
@@ -70,8 +70,6 @@
                             }
                         }
                         if(checked1){
-
-                        if (checked1) {
                             var refundBalanceFee = $('#refundBalanceFee').val();
                             if( refundBalanceFee == null || refundBalanceFee == ""){
                                 alertx("请填写账户余额退款数");
@@ -120,10 +118,10 @@
                             }
                         }
                     }else if (${returnOnline}){
-                        var obj = document.getElementsByName("returnedWay");
+                        var obj = document.getElementsByClassName("check-item-review");
                         var checked0 = obj[0].checked;
-                        var checked1 = obj[1].checked;
-                        if(!checked1 && !checked0){
+                        // var checked1 = obj[1].checked;
+                        if(!checked0){
                             alertx("请选择退款方式");
                             return;
                         }
@@ -176,7 +174,7 @@
 
         function showBankInfo() {
                 if (${!returnOnline}){
-                var obj = document.getElementsByName("returnedWay"),
+                var obj = document.getElementsByClassName("refundOfflineFee"),
                     blockEle = $('.refund-details-block');
                 if(obj){
                     if(obj[0].checked){
@@ -270,12 +268,40 @@
             <td><b>退款编号:</b>
                 ${empty returnedNo?'':(returnedNo)}
             </td>
+            <c:if test="${cmReturnedPurchase.refundType eq 1 or cmReturnedPurchase.refundType eq 2}">
+            <td><b>退款模式:</b>
+                <form:select path="refundType" class="input-medium" id="refundType" onchange="changeType()">
+                    <form:option value="1">按商品金额退款</form:option>
+                    <form:option value="2">自定义金额退款</form:option>
+                </form:select>
+            </td>
+            </c:if>
+            <c:if test="${cmReturnedPurchase.refundType eq 3}">
+                <td><b>退款模式:</b>
+                    <form:select path="refundType" class="input-medium" id="refundType" onchange="changeType()">
+                        <form:option value="2">自定义金额退款</form:option>
+                    </form:select>
+                </td>
+            </c:if>
             <td><b>申请时间:</b>
                     ${returnTime}
             </td>
-            <td><b>申请金额:</b>
+            <c:if test="${cmReturnedPurchase.refundType eq 1}">
+            <td id="spt"><b>申请金额:</b>
                 <span class="refundFee"><fmt:formatNumber value="${empty cmReturnedPurchase.refundFee?'0.00':(cmReturnedPurchase.refundFee)}" pattern="#0.00"/></span>元
             </td>
+            <td id="zdy" hidden><b>申请金额:</b>
+                <from:input id="freeRefundFee" path="freeRefundFee" onkeyup="num(this)"   placeholder="¥0.00" value="${empty cmReturnedPurchase.freeRefundFee?'':(cmReturnedPurchase.freeRefundFee)}"></from:input>
+            </td>
+            </c:if>
+            <c:if test="${cmReturnedPurchase.refundType eq 2 or cmReturnedPurchase.refundType eq 3}">
+                <td id="spt" hidden><b>申请金额:</b>
+                    <span class="refundFee"><fmt:formatNumber value="${empty cmReturnedPurchase.refundFee?'0.00':(cmReturnedPurchase.refundFee)}" pattern="#0.00"/></span>元
+                </td>
+                <td id="zdy"><b>申请金额:</b>
+                    <from:input id="freeRefundFee" path="freeRefundFee" onkeyup="num(this)"   placeholder="¥0.00" value="${empty cmReturnedPurchase.freeRefundFee?'':(cmReturnedPurchase.freeRefundFee)}"></from:input>
+                </td>
+            </c:if>
             <td><b>退款状态:</b>
                 <c:if test="${empty status}">
                     待申请
@@ -303,11 +329,21 @@
                         线上退回
                     </c:if>
                     <c:if test="${!returnOnline}">
-                        <input class="check-item-review refundOfflineFee" type="checkbox"   name="returnedWay" value='3' onclick="showBankInfo()"/>
+                        <c:if test="${cmReturnedPurchase.refundOfflineFee>0}">
+                            <input class="check-item-review refundOfflineFee" checked type="checkbox" onclick="showBankInfo()"/>
+                        </c:if>
+                        <c:if test="${empty cmReturnedPurchase.refundOfflineFee or cmReturnedPurchase.refundOfflineFee eq 0}">
+                            <input class="check-item-review refundOfflineFee" type="checkbox" onclick="showBankInfo()"/>
+                        </c:if>
                         线下转账
                         <from:input path="refundOfflineFee" onkeyup="num(this)"   placeholder="¥0.00" value="${empty cmReturnedPurchase.refundOfflineFee?'':(cmReturnedPurchase.refundOfflineFee)}"></from:input>
-                        <c:if test="${empty order.rechargeGoods}">
-                            <input class="check-item-review refundBalanceFee" type="checkbox"  name="returnedWay" value='1'/>
+                        <c:if test="${order.rechargeGoods ne 1 && order.rechargeGoods ne 2}">
+                            <c:if test="${cmReturnedPurchase.refundBalanceFee>0}">
+                            <input class="check-item-review refundBalanceFee" checked type="checkbox"/>
+                            </c:if>
+                        <c:if test="${empty cmReturnedPurchase.refundBalanceFee or cmReturnedPurchase.refundBalanceFee eq 0}">
+                            <input class="check-item-review refundBalanceFee" type="checkbox"/>
+                        </c:if>
                             账户余额
                             <from:input path="refundBalanceFee" onkeyup="num(this)" placeholder="¥0.00" value="${empty cmReturnedPurchase.refundBalanceFee?'':(cmReturnedPurchase.refundBalanceFee)}"></from:input>
                         </c:if>
@@ -470,10 +506,10 @@
                     <font>无退款</font>
                 </c:if>
                 <c:if test="${order.refundType == 1}">
-                    <font color="#ff8c00">部分退款</font>
+                    <font>部分退款</font>
                 </c:if>
                 <c:if test="${order.refundType == 2}">
-                    <font color="green">已退款</font>
+                    <font>已退款</font>
                 </c:if></td>
             </td>
         </tr>
@@ -808,19 +844,61 @@
     function changeType(){
         var refundType =  $("#refundType").val();
         if(1==refundType){
+            var orderStatus = $("#orderStatus").val();
+            var isBuFenFaHuo = $("#isBuFenFaHuo").val();
+            if(isBuFenFaHuo == "true"){
+                $(".shopOrderInput").attr("readonly",true);
+                /*$(".shopOrderInput1").attr("readonly",false);*///设置邮费的可修改
+            };
+
+            //有促销商品订单不可修改
+            if (${isPromotions}){
+                $(".shopOrderInput").attr("readonly",true);
+            }
+
+            //线上全部付款订单不可修改
+            if (${order.receiptStatus == 3 && cmDiscernReceipt.payWay eq 1}){
+                $(".shopOrderInput").attr("readonly",true);
+            }
+
+            // 有优惠不可修改,只能全退
+            if (${order.discountAmount > 0 and order.onlinePayFlag eq 0}){
+                $(".shopOrderInput").attr("readonly",true);
+            }
+
+            //充值订单不可修改
+            if (${order.rechargeGoods != null && (order.rechargeGoods eq 1 || order.rechargeGoods eq 2)}){
+                $(".shopOrderInput").attr("readonly",true);
+            }
             $("#zdy").hide();
             $("#spt").show();
         }
-        if(2==refundType){
+        if(2==refundType || 3==refundType) {
+            $("input[readonly='readonly']").removeProp("readonly");
             $("#spt").hide();
             $("#zdy").show();
         }
     }
 
+    function showBankInfo() {
+        if (${!returnOnline}){
+            var obj = document.getElementsByClassName("refundOfflineFee"),
+                blockEle = $('.refund-details-block');
+            if(obj){
+                if(obj[0].checked){
+                    //显示银行信息
+                    blockEle.show();
+                } else {
+                    blockEle.hide();
+                }
+            }
+        }
+    }
+
     $(function () {
         var orderStatus = $("#orderStatus").val();
         var isBuFenFaHuo = $("#isBuFenFaHuo").val();
-        debugger
+        var refundType =  $("#refundType").val();
         if(isBuFenFaHuo == "true"){
             $(".shopOrderInput").attr("readonly",true);
             /*$(".shopOrderInput1").attr("readonly",false);*///设置邮费的可修改
@@ -851,6 +929,10 @@
             $(".shopOrderInput").attr("readonly",true);
         }
 
+        if(2==refundType || 3==refundType){
+            $("input[readonly='readonly']").removeProp("readonly");
+        }
+
         if (${order.rechargeGoods != null && order.rechargeGoods eq 1 && ableUserMoney eq 0}){
             alertx("本订单为缴纳订金订单,机构的余额为¥0.00,不能进行退款", function(){
                 window.location.href = "${ctx}/order/orderList";
@@ -1062,28 +1144,33 @@
     }
 
     function setApplicationReturnedNum(a,b){
+        var refundType =  $("#refundType").val();
         var num = $("#applicationReturnedNum"+a+b).val();
         var max = Number($("#shipped"+a+b).html()  - $("#returning"+a+b).html() - $("#returned"+a+b).html());
-        if(num > max){
-            alertx("退货数量不能大于已发货数量(之前已退不算)!");
-            $("#applicationReturnedNum"+a+b).val(0)
-        }
-        if (num !== max && ${returnOnline}){
-            alertx("退货数量只能等于已发货数量(之前已退不算)!");
-            $("#applicationReturnedNum"+a+b).val(0)
+        if(1==refundType){
+            if(num > max){
+                alertx("退货数量不能大于已发货数量(之前已退不算)!");
+                $("#applicationReturnedNum"+a+b).val(0)
+            }
+            if (num !== max && ${returnOnline}){
+                alertx("退货数量只能等于已发货数量(之前已退不算)!");
+                $("#applicationReturnedNum"+a+b).val(0)
+            }
         }
-
     };
     function setApplicationCancelNum(a,b){
+        var refundType =  $("#refundType").val();
         var num = $("#applicationCancelNum"+a+b).val();
         var max = Number($("#toBeShipped"+a+b).html());
-        if(num > max){
-            alertx("取消数量不能大于待发数量,请重新填写!");
-            $("#applicationCancelNum"+a+b).val(0)
-        }
-        if (num !== max && ${returnOnline}){
-            alertx("取消数量只能等于待发数量,请重新填写!");
-            $("#applicationCancelNum"+a+b).val(0)
+        if(1==refundType){
+            if(num > max){
+                alertx("取消数量不能大于待发数量,请重新填写!");
+                $("#applicationCancelNum"+a+b).val(0)
+            }
+            if (num !== max && ${returnOnline}){
+                alertx("取消数量只能等于待发数量,请重新填写!");
+                $("#applicationCancelNum"+a+b).val(0)
+            }
         }
     };
 </script>

+ 3 - 0
src/main/webapp/WEB-INF/views/modules/bulkpurchase/orderConfirmReturnRecord.jsp

@@ -140,6 +140,9 @@
             <td><b>退款编号:</b>
                     ${empty cmReturnedPurchase.returnedNo?'':(cmReturnedPurchase.returnedNo)}
             </td>
+            <td><b>退款模式:</b>
+                    ${cmReturnedPurchase.refundType eq 1?'按商品退回':'自定义金额退款'}
+            </td>
             <td><b>申请时间:</b>
                     ${cmReturnedPurchase.returnTime}
             </td>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/bulkpurchase/orderReviewReturnRecord.jsp

@@ -113,7 +113,7 @@
 </ul>
 <br/>
 <%--审核模块--%>
-<form:form id="inputForm" modelAttribute="cmReturnedPurchase" action="${ctx}/bulkpurchase/cmRefundsProduct/confirmApply?id=${cmReturnedPurchase.id}" method="post">
+<form:form id="inputForm" modelAttribute="cmReturnedPurchase" action="${ctx}/bulkpurchase/cmRefundsProduct/confirmApply" method="post">
     <div class="refund-btn-top">
         <input type="button" class="btn btn-primary" onclick="window.location.href='${ctx}/order/cmReturnedPurchase/'"  value="返回">
         <input id="btnSubmit" class="btn btn-primary" type="submit" value="审核"/>

+ 55 - 3
src/main/webapp/WEB-INF/views/modules/bulkpurchase/refundRecord.jsp

@@ -190,6 +190,20 @@
                 </a>
             </c:if>
         </td>
+        <c:if test="${order.onlinePayFlag == 0}">
+        <td>
+            结算状态:
+            <c:if test="${order.settleStatus == 1}">
+                <font color="red">待结算</font>
+            </c:if>
+            <c:if test="${order.settleStatus == 2}">
+                <font color="#ff8c00">部分结算</font>
+            </c:if>
+            <c:if test="${order.settleStatus == 3}">
+                <font color="green">已结算</font>
+            </c:if>
+        </td>
+        </c:if>
         <td>
 <%--            退款(退货)状态:${fns:getDictLabel(order.refundType,'refundType' ,'' )}--%>
     <c:if test="${order.refundType == 1}">
@@ -349,10 +363,48 @@
         </c:forEach>
     </table>
 </c:if>
-<c:if test="${empty cmReturnedPurchaseList}">
-    <div class="record-title">退款记录:无</div>
-    <br>
+<c:if test="${empty pr}">
+    <div class="record-title">付款记录:无</div>
 </c:if>
+    <table id="contentTable" class="payment" width="70%" border="1">
+        <thead>
+        <tr>
+            <th>序号</th>
+            <th>付款单ID</th>
+            <th>付款时间</th>
+            <th>付款方式</th>
+            <th>付款金额</th>
+        </tr>
+        </thead>
+        <tbody>
+        <c:forEach items="${pr}" var="p">
+            <tr>
+                <td>${p.id}</td>
+                <td><a href="${ctx}/order/cmPayShop/applyDetail?id=${p.payShopID}">${p.payShopID}</a></td>
+                <td>${p.payTime}</td>
+                <td><c:if test="${p.payType == '1'}">
+                    建设银行7297
+                </c:if>
+                    <c:if test="${p.payType == '2'}">
+                        中信银行0897
+                    </c:if>
+                    <c:if test="${p.payType == '3'}">
+                        中信银行7172
+                    </c:if>
+                    <c:if test="${p.payType == '4'}">
+                        广发银行0115
+                    </c:if>
+                    <c:if test="${p.payType == '5'}">
+                        广发银行5461
+                    </c:if>
+                </td>
+                <td>${p.payAmount}</td>
+            </tr>
+        </c:forEach>
+        </tbody>
+    </table>
+    <br>
+
 
 
 <script type="text/javascript" src="${ctxStatic}/modules/bulkpurchase/loadAddress.js"></script>

+ 331 - 0
src/main/webapp/WEB-INF/views/modules/bulkpurchase/settlementRecord.jsp

@@ -0,0 +1,331 @@
+<%@ taglib prefix="from" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="input" uri="/struts-tags" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+    <title>收退款记录</title>
+    <meta name="decorator" content="default"/>
+    <style>
+        .form-horizontal .controls {
+            margin-left: 0;
+        }
+
+        .dateInput input {
+            width: 150px;
+        }
+
+        .clause span {
+            margin-left: 30px;
+        }
+
+        #productTable th {
+            text-align: center;
+            white-space: nowrap;
+        }
+
+        #productTable td {
+            text-align: center;
+            white-space: nowrap;
+        }
+
+        .controls {
+            font-size: 0;
+        }
+
+        .controls .conList {
+            display: inline-block;
+            margin-right: 15px;
+        }
+
+        .conList .btn:nth-of-type(1) {
+            margin-left: 25px;
+        }
+
+        #refundTable th, #cmReturnedPurchaseTable th {
+            width: 20%;
+        }
+
+        .record-title {
+            height: 30px;
+            line-height: 30px;
+            padding-left: 8px;
+        }
+        .zeroCost .message{
+            display:none;
+            position:absolute;
+            background:#FFF;
+            white-space:nowrap;
+            border:1px solid black;
+
+        }
+        .zeroCost:hover .message{
+            display: inline-block;
+            color: black;
+            padding: 5px;
+            margin-left: 10px;
+        }
+        .weishaIcon {background:darkorange;color:white;margin:0 0px;padding:0 3px;font-style:normal;font-size: 12px; display:inline-block;border-radius:2px}
+    </style>
+    <script type="text/javascript">
+        $(document).ready(function () {
+            $("#name").focus();
+            $("#inputForm").validate({
+                submitHandler: function (form) {
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function (error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox") || element.is(":radio") || element.parent().is(".input-append")) {
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+        });
+
+
+    </script>
+</head>
+<body>
+<input type="hidden" id="product_index" value="${fn:length(order.orderProduct)}">
+<input type="hidden" id="ctx" value="${ctx}">
+<ul class="nav nav-tabs">
+    <c:if test="${from eq '1' or from eq '2'}">
+        <c:if test="${orderType eq 2}">
+            <li><a href="${ctx}/hehe/new/order/orderList">订单列表</a></li>
+        </c:if>
+        <c:if test="${orderType ne 2}">
+            <li><a href="${ctx}/order/orderList">订单列表</a></li>
+        </c:if>
+    </c:if>
+    <c:if test="${from eq '2'}">
+        <li><a href="${ctx}/order/detail?id=${orderID}">订单详情</a></li>
+    </c:if>
+    <c:if test="${from eq '3'}">
+        <li><a href="${ctx}/shopOrder/checkPaymentOrder">订单财务信息</a></li>
+    </c:if>
+    <li class="active"><a href="#">收退款记录</a></li>
+</ul>
+<br/>
+<table id="orderTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    </thead>
+    <tr>
+        <td>
+            下单时间:${order.orderTime}
+        </td>
+        <td>
+            订单号(ID):${order.orderNo}(${order.orderID})
+        </td>
+        <td>
+            <c:if test="${order.organizeID != 1}">
+                订单类型:${fns:getDictLabel(order.orderType,'order_type' ,'' )}
+                <c:if test="${order.orderType eq 2}">
+                    ${order.collageFlag eq 1?'拼团订单':'独立订单'}
+                </c:if>
+            </c:if>
+        </td>
+        <td>
+            <c:if test="${order.organizeID != 1}">
+                订单来源:${fns:getDictLabel(order.orderSource,'bp_orderSource' ,'' )}
+            </c:if>
+        </td>
+    </tr>
+    <tr>
+        <td>
+            订单状态:
+            <c:if test="${ not empty order.status}">
+                ${fns:getNewOrderStatus(order.status)}
+            </c:if>
+        </td>
+        <td>
+            收款状态:<%--${fns:getDictLabel(order.receiptStatus,'receiptStatus' ,'' )}--%>
+            <c:if test="${order.receiptStatus == 1}">
+                <font color="red">待收款</font>
+            </c:if>
+            <c:if test="${order.receiptStatus == 2}">
+                <font color="#ff8c00">部分收款</font>
+            </c:if>
+            <c:if test="${order.receiptStatus == 3}">
+                <font color="green">已收款</font>
+            </c:if>
+        </td>
+        <c:if test="${order.orderType eq 2}">
+            <td>
+                拼团状态:
+                <c:choose>
+                    <c:when test="${order.collageFlag eq 1 && (order.status eq 31 || order.status eq 32 || order.status eq 33)}">
+                        <font color="${order.collageStatus eq 1?'#00CC66':(order.collageStatus eq 2?'red':'')}">
+                                ${order.collageStatus eq 1?'拼团中':(order.collageStatus eq 2?'已拼成':'-')}
+                        </font>
+                    </c:when>
+                    <c:otherwise>
+                        -
+                    </c:otherwise>
+                </c:choose>
+            </td>
+        </c:if>
+        <td>
+            付款状态:<%--${fns:getDictLabel(order.payStatus,'payStatus' ,'' )}--%>
+            <c:if test="${order.payStatus == 1}">
+                <font color="red">待付款</font>
+            </c:if>
+            <c:if test="${order.payStatus == 2}">
+                <font color="#ff8c00">部分付款</font>
+            </c:if>
+            <c:if test="${order.payStatus == 3}">
+                <font color="green">已付款</font>
+            </c:if>
+
+            <c:if test="${order.zeroCostFlag eq 1}">
+                <a href="javascript:;" class="zeroCost"><span><img src="/static/images/info.jpg" style="width: 15px;margin-bottom: 4px"></span>
+                    <div class="message">
+                        <span>商品成本为0,直接置为已付款,无需付款供应商</span>
+                    </div>
+                </a>
+            </c:if>
+        </td>
+        <c:if test="${order.onlinePayFlag == 0}">
+        <td>
+            结算状态:
+            <c:if test="${order.settleStatus == 1}">
+                <font color="red">待结算</font>
+            </c:if>
+            <c:if test="${order.settleStatus == 2}">
+                <font color="#ff8c00">部分结算</font>
+            </c:if>
+            <c:if test="${order.settleStatus == 3}">
+                <font color="green">已结算</font>
+            </c:if>
+        </td>
+        </c:if>
+        <td>
+<%--            退款(退货)状态:${fns:getDictLabel(order.refundType,'refundType' ,'' )}--%>
+    <c:if test="${order.refundType == 1}">
+        <font color="red">待发货</font>
+    </c:if>
+    <c:if test="${order.refundType == 2}">
+        <font color="#ff8c00">部分发货</font>
+    </c:if>
+    <c:if test="${order.refundType == 3}">
+        <font color="green">已发货</font>
+    </c:if>
+        </td>
+    </tr>
+    <tr>
+        <td>
+            机构:${order.bpOrderUserinfo.name}<c:if test="${order.organizeID == 3}"></c:if>
+        </td>
+        <td>
+            收货人:${order.bpOrderUserinfo.shouHuoRen}
+        </td>
+        <td>
+            手机:${order.bpOrderUserinfo.mobile}
+        </td>
+        <td>
+            地址:${order.bpOrderUserinfo.province}${order.bpOrderUserinfo.city}${order.bpOrderUserinfo.town}${order.bpOrderUserinfo.address}
+        </td>
+    </tr>
+    <tr>
+        <td>
+            订单金额:¥${order.payTotalFee}
+            <c:if test="${not empty order.couponOrderRecord}">
+                <c:if test="${order.couponOrderRecord.couponType eq 0}">
+                    <a href="${ctx}/coupon/cmCouponClub/couponDetails?userId=${order.userID}"><font color="red">(活动券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount})</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 1}">
+                    <a href="${ctx}/coupon/cmCouponClub/couponDetails?userId=${order.userID}"><font color="red">(品类券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount})</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 2}">
+                    <a href="${ctx}/coupon/cmCouponClub/couponDetails?userId=${order.userID}"><font color="red">(用户专享券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount})</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 3}">
+                    <a href="${ctx}/coupon/cmCouponClub/couponDetails?userId=${order.userID}"><font color="red">(店铺券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount})</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 4}">
+                    <a href="${ctx}/coupon/cmCouponClub/couponDetails?userId=${order.userID}"><font color="red">(新用户券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount})</font></a>
+                </c:if>
+            </c:if>
+            <c:if test="${not empty order.heheCouponRecord}">
+                <a href="${ctx}/hehe/cmHeheCoupon/receiveDetails?userId=${order.userID}">
+                    <font color="red">
+                        (${order.heheCouponRecord.couponType eq 1 ? '活动':order.heheCouponRecord.couponType eq 2?'专享':order.heheCouponRecord.couponType eq 3?'新人':order.heheCouponRecord.couponType eq 4?'好友分享':order.heheCouponRecord.couponType eq 5?'好友消费':'消费分享'}券抵扣¥${order.heheCouponRecord.couponAmount},满${order.heheCouponRecord.touchPrice}减${order.heheCouponRecord.couponAmount})
+                    </font>
+                </a>
+            </c:if>
+            <c:if test="${order.reductionAmount > 0}">
+                (分享减免¥${order.reductionAmount},满${order.reductionTouchPrice}减${order.reductionAmount})
+            </c:if>
+        </td>
+        <td>
+            应收总额:¥${order.payableAmount}
+        </td>
+        <td>
+            经理折扣:¥${order.discountFee}
+        </td>
+        <td>
+            运费:
+            <c:if test="${order.freePostFlag == 0}">
+                包邮
+            </c:if>
+            <c:if test="${order.freePostFlag == -1}">
+                到付
+            </c:if>
+            <c:if test="${order.freePostFlag == -2}">
+                仪器到付-产品包邮
+            </c:if>
+            <c:if test="${order.freePostFlag != -1 && order.freePostFlag != 0 && order.freePostFlag != -2}">
+                ¥<fmt:formatNumber value="${order.freight}" pattern="0.00"/>
+            </c:if>
+            <c:if test="${order.userBeans > 0}">
+                <font color="red">(采美豆抵用:${order.userBeans})</font>
+            </c:if>
+        </td>
+    </tr>
+    <tr>
+        <td>优惠券:${order.couponAmount}</td>
+        <td>退款总额:¥${refundFee}</td>
+        <td COLSPAN="3">
+
+        </td>
+    </tr>
+</table>
+<c:if test="${not empty settleRecord}">
+    <div class="record-title">佣金结算记录:</div>
+    <table id="refundTable" class="table table-striped table-bordered table-condensed">
+        <tr>
+            <th class="table-order">序号</th>
+            <th class="table-id">子订单ID</th>
+            <th class="table-cell3">结算时间</th>
+            <th class="table-cell4">结算金额</th>
+        </tr>
+        <c:forEach items="${settleRecord}" var="settle" varStatus="s">
+            <tr>
+                <td>${s.index + 1}</td>
+                <td>${settle.shopOrderId}</td>
+                <td><fmt:formatDate value="${settle.settleTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+                <td><fmt:formatNumber value="${settle.settleAmount}" type="currency"/></td>
+            </tr>
+        </c:forEach>
+    </table>
+</c:if>
+<c:if test="${empty settleRecord}">
+    <div class="record-title">佣金结算记录: 无</div>
+</c:if>
+
+<script type="text/javascript" src="${ctxStatic}/modules/bulkpurchase/loadAddress.js"></script>
+<script type="text/javascript" src="${ctxStatic}/modules/bulkpurchase/orderForm.js"></script>
+<script type="text/javascript" src="${ctxStatic}/modules/bulkpurchase/stages.js"></script>
+<script>
+    $(function () {
+
+    });
+
+</script>
+</body>
+</html>

+ 3 - 0
src/main/webapp/WEB-INF/views/modules/order/checkPaymentOrder.jsp

@@ -659,6 +659,9 @@
                 </c:forEach>
             </table>
             <div style="float:right">
+                <c:if test="${s.settleRecordNum>0}">
+                <a href="${ctx}/bulkpurchase/cmRefundsProduct/toSettleRecord?orderID=${s.orderID}">佣金结算记录</a>
+                </c:if>
                 <a href="${ctx}/bulkpurchase/cmRefundsProduct/toRefundRecord?orderID=${s.orderID}&from=3">收付款记录</a>&nbsp;&nbsp;&nbsp;
                 <a href="${ctx}/bulkpurchase/cmRefundsProduct/toRecturnRecordByOrderID?orderID=${s.orderID}&from=3">用户退款/货记录</a>&nbsp;&nbsp;&nbsp;
                 <a href="${ctx}/shopOrder/refundRecord?orderID=${s.orderID}">供应商退/付款记录</a>

+ 26 - 25
src/main/webapp/WEB-INF/views/modules/order/cmDiscernReceiptForm.jsp

@@ -251,18 +251,18 @@
                         </div>
                     </c:if>
                     <div class="receipt-order-row2">
-                    <span class="font-blue"><label>订单编号:</label><a
+                        <span class="font-blue"><label>订单编号:</label><a
                             href="${ctx}/order/detail?id=${orderInfo.orderID}">${orderInfo.orderNo}(${orderInfo.orderID})</a></span>
-                        <span><label>订单金额:</label>¥<fmt:formatNumber
-                                value="${orderInfo.orderAmount}"
-                                pattern="#0.00"/></span>
-                        <span>
-                        <span><label>应收金额:</label>¥<fmt:formatNumber value="${orderInfo.payableAmount}"
+                            <span><label>订单金额:</label>¥<fmt:formatNumber
+                                    value="${orderInfo.orderAmount}"
+                                    pattern="#0.00"/></span>
+                            <span>
+                            <span><label>应收金额:</label>¥<fmt:formatNumber value="${orderInfo.payableAmount}"
                                                                          pattern="#0.00"/></span>
-                        <span>
-                        <label>已收金额:</label>¥<fmt:formatNumber
-                                value="${empty orderInfo.receiptAmount ? 0 : orderInfo.receiptAmount}"
-                                pattern="#0.00"/>
+                            <span>
+                            <label>已收金额:</label>¥<fmt:formatNumber
+                                    value="${empty orderInfo.receiptAmount ? 0 : orderInfo.receiptAmount}"
+                                    pattern="#0.00"/>
                             <span>
                                     <c:forEach items="${orderInfo.receiptRecordVo}" var="receiptRecord"
                                                varStatus="index">
@@ -308,20 +308,21 @@
                                     </c:forEach>
                                 </span>
                             </span>
-                        <span><label>机构名称:</label>
-                                    <c:if test="${orderInfo.organizeID == 1}">
-                                        <span class="org-note">星范</span>
-                                    </c:if>
-                                        ${orderInfo.customerName}
-                        <c:if test="${orderInfo.organizeID == 3}">
+                            <span><label>机构名称:</label>
+                                        <c:if test="${orderInfo.organizeID == 1}">
+                                            <span class="org-note">星范</span>
+                                        </c:if>
+                                            ${orderInfo.customerName}
+                                <c:if test="${orderInfo.organizeID == 3}">
 
-                        </c:if>
-                                </span>
-                        <span><label>订单状态:</label>
-                                    <c:if test="${orderInfo.receiptStatus == 1}">待收款</c:if>
-                                    <c:if test="${orderInfo.receiptStatus == 2}">部分收款</c:if>
-                                    <c:if test="${orderInfo.receiptStatus == 3}">已收款</c:if>
-                                </span>
+                                </c:if>
+                            </span>
+                            <span><label>订单状态:</label>
+                                        <c:if test="${orderInfo.receiptStatus == 1}">待收款</c:if>
+                                        <c:if test="${orderInfo.receiptStatus == 2}">部分收款</c:if>
+                                        <c:if test="${orderInfo.receiptStatus == 3}">已收款</c:if>
+                            </span>
+                        </span>
                     </div>
                     <div class="receipt-order-row3">
                                 <span><label>订单类型:</label><c:if test="${orderInfo.orderType == 0}">协销订单</c:if>
@@ -332,9 +333,9 @@
                         <c:forEach items="${orderInfo.shopOrderInfos}" var="shopOrder" varStatus="index">
                             <span>子订单编号:${shopOrder.shopOrderNo}(${shopOrder.shopOrderID})</span>
                             <span>子订单应收金额:¥<fmt:formatNumber value="${shopOrder.realPay}"
-                                                           pattern="#0.00"/></span>
+                                                             pattern="#0.00"/></span>
                             <span>子订单已收金额:¥<fmt:formatNumber value="${shopOrder.receiptAmount}"
-                                                           pattern="#0.00"/></span>
+                                                             pattern="#0.00"/></span>
                             <span>子订单收款状态:${fns:getDictLabel(shopOrder.shopReceiptStatus,'receiptStatus' ,'' )}</span>
                         </c:forEach>
                     </div>

+ 0 - 5
src/main/webapp/WEB-INF/views/modules/order/cmSettlementForm.jsp

@@ -667,11 +667,6 @@
         });
         $(window).on("load", function () {
             $('.need-to-pay').each(function (index, ele) {
-                if ($(this).val() <= 0) {
-                    alertx("待付金额为负数,不能操作付款抹平。请先去操作供应商退款,使数据恢复正常", function () {
-                        window.location.href = "${ctx}/shopOrder/refundRecordList?operatingMode=2"
-                    });
-                }
                 var thisEle = $(this),
                     wrapper = thisEle.parents(".supplier-fee"),
                     shouldPay = thisEle.attr('data-pay') * 1,

+ 9 - 1
src/main/webapp/WEB-INF/views/modules/order/cmSettlementList.jsp

@@ -344,7 +344,7 @@
             <table class="table table-striped table-bordered table-condensed pay-table">
                 <tr>
                     <th style="width:20px;">
-                        <input type="checkbox" data-shoporderid="${s.shopOrderID}" data-shopid="${s.shopID}" data-isPayShopOtherFee="${s.payShopOtherFee}"/>
+                        <input type="checkbox" class="checkShop" data-shoporderid="${s.shopOrderID}" data-shopid="${s.shopID}" data-isPayShopOtherFee="${s.payShopOtherFee}" onclick="changeCheck()"/>
                     </th>
                     <th>子订单编号(ID)</th>
                     <th colspan="3">订单编号(ID)</th>
@@ -623,6 +623,14 @@
 <div class="pagination">${page}</div>
 
 <script>
+    function changeCheck(){
+        var checked = $('input[type=checkbox]:checked');
+        if (checked.length >= 1) {
+            // $(".checkShop").attr('disabled','true');
+            alertx("请最多选择一个子订单进行结算");
+            return false;
+        }
+    }
     (function () {
         var payTableEle = $('.pay-table'),
             payProductEle = $('.pay-product-item');

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/order/cmSplitAccountList.jsp

@@ -298,7 +298,7 @@
      <shiro:hasPermission name="order:cmPayShop:split">
          <li class="active tab-li"><a href="${ctx}/shopOrder/splitList">子订单手动分账</a></li>
      </shiro:hasPermission>
-     <li class="active tab-li"><a href="${ctx}/shopOrder/settlement">子订单手动结算</a></li>
+     <li><a href="${ctx}/shopOrder/settlement">子订单手动结算</a></li>
 </ul>
 <form:form id="searchForm"
            action="${ctx}/splitAccount/split" method="post" class="breadcrumb form-search">

+ 3 - 3
src/main/webapp/WEB-INF/views/modules/order/newOrderList.jsp

@@ -353,13 +353,13 @@
             </li>
             <li>
                 <c:if test="${order.refundType == 1}">
-                      <font color="#ff8c00">部分退款</font>
+                      <font>部分退款</font>
                 </c:if>
                 <c:if test="${order.refundType == 2}">
-                      <font color="green">已退款</font>
+                      <font>已退款</font>
                 </c:if>
                 <c:if test="${order.refundType ne 1 and order.refundType ne 2 }">
-                     <font color="red">无退款</font>
+                     <font>无退款</font>
                 </c:if>
             </li>
             <li>

+ 5 - 5
src/main/webapp/WEB-INF/views/modules/order/orderDetail.jsp

@@ -491,13 +491,13 @@
             <td>
                 退款状态:
                 <c:if test="${order.refundType == 0}">
-                     <font color="red">无退款</font>
+                     <font>无退款</font>
                 </c:if>
                 <c:if test="${order.refundType == 1}">
-                     <font color="#ff8c00">部分退款</font>
+                     <font>部分退款</font>
                 </c:if>
                 <c:if test="${order.refundType == 2}">
-                    <font color="green">已退款</font>
+                    <font>已退款</font>
                 </c:if>
             </td>
         </c:if>
@@ -678,7 +678,7 @@
                                 </c:if>
                                 <c:if test="${order.toAudit ne 1}">
                                     <c:if test="${order.applyReturnedPurchaseFlag eq 1}">
-                                        <a href="${ctx}/bulkpurchase/cmRefundsProduct/applyRefound.rpc?orderID=${order.orderID}"
+                                        <a href="${ctx}/bulkpurchase/cmRefundsProduct/applyRefound.rpc?orderID=${order.orderID}&refundType=1"
                                            <c:if test="${order.status == 21 || order.status == 22 || order.status == 23}">onclick="return confirmx('部分收款的订单、申请退款只能申请全部退款!', this.href)"
                                         </c:if>
                                         >申请退款</a>
@@ -789,7 +789,7 @@
                             </c:if>
                             <c:if test="${order.toAudit ne 1}">
                                 <c:if test="${order.applyReturnedPurchaseFlag eq 1}">
-                                    <a href="${ctx}/bulkpurchase/cmRefundsProduct/applyRefound.rpc?orderID=${order.orderID}&onlineShopOrderId=${shopOrder.shopOrderID}"
+                                    <a href="${ctx}/bulkpurchase/cmRefundsProduct/applyRefound.rpc?orderID=${order.orderID}&onlineShopOrderId=${shopOrder.shopOrderID}&refundType=1"
                                        <c:if test="${order.status == 21 || order.status == 22 || order.status == 23}">onclick="return confirmx('部分收款的订单、申请退款只能申请全部退款!', this.href)"
                                     </c:if>
                                     >申请退款</a>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/order/settleRecordList.jsp

@@ -271,7 +271,7 @@
     <c:forEach items="${pr}" var="p" varStatus="pvs">
         <tr>
             <td>${pvs.index}</td>
-            <td>${p.settleTime}</td>
+            <td><fmt:formatDate value="${p.settleTime}" pattern="yyyy-MM-dd HH:mm"/></td>
             <td>${p.settleType eq 1 ? "成本结算":"佣金结算"}</td>
             <td>${p.settleAmount}</td>
         </tr>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/product-new/secondHand.jsp

@@ -263,7 +263,7 @@
                                 <%--                                   <a href="${ctx}/product/new/imageList?id=${product.id}&searchName=${searchName}&searchShopID=${searchShopID}&searchShopName=${searchShopName}&searchBigTypeID=${searchBigTypeID}&searchSmallTypeID=${searchSmallTypeID}&searchTinyTypeID=${searchTinyTypeID}&searchValidFlag=${searchValidFlag}&searchActStatus=${searchActStatus}&searchProductType=${searchProductType}&searchBrandID=${searchBrandID}&searchPreferredFlag=${searchPreferredFlag}&searchProductCategory=${searchProductCategory}">图片管理</a>--%>
                                 <%--待审核或审核未通过才需要审核( 1待审核 2已上架 3已下架 8审核未通过 9已冻结)--%>
                             <c:if test="${product.validFlag eq 1 or product.validFlag eq 8}">
-                                <a class="red" href="javascript:void(0);" onclick="auditThisBySencodeProduct(${product.id},'${product.costPrice}',${product.price})">审核</a>
+                                <a class="red" href="javascript:void(0);" onclick="auditThisBySencodeProduct(${product.id},'${product.costPrice}')">审核</a>
                             </c:if>
                                 <%--已上架的才可以下架--%>
                             <c:if test="${product.validFlag eq 2}">