zhijiezhao 2 rokov pred
rodič
commit
4929459d04

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

@@ -29,6 +29,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
+import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -273,18 +274,6 @@ public class CmRefundsProductController extends BaseController {
             //是否可以线上退回
             boolean returnOnline = false;
             if (cmDiscernReceipt != null && "1".equals(cmDiscernReceipt.getPayWay())) {
-                /*Date splitTime = cmDiscernReceiptDao.findSplitTime(newOrder.getOrderID());
-                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;
-                    }
-                } else {
-                    returnOnline = true;
-                }*/
                 returnOnline = true;
             }
             Integer lastReceiptDetailId = cmDiscernReceiptDao.findOrderLastReceiptDetailId(newOrder.getOrderID().toString());
@@ -435,10 +424,24 @@ public class CmRefundsProductController extends BaseController {
             }
 
             //判断退款金额和打款金额是否一致
-            double v = totalRefundFee - refundFee;
-            if (v > 0.1 || v < -0.1) {
-                model.addAttribute("errorMsg", "各退款方式的金额之和不等于退款总金额,请重新计算后再提交申请");
-                return applyRefound(cmReturnedPurchase, request, response, model);
+            if(1==cmReturnedPurchase.getRefundType()){
+                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")){
+                    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);

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

@@ -1,5 +1,6 @@
 package com.caimei.modules.order.dao;
 
+import com.caimei.modules.order.entity.CmRefundRecord;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
 import com.caimei.modules.order.entity.CmReturnedPurchase;
@@ -30,4 +31,8 @@ public interface CmReturnedPurchaseDao extends CrudDao<CmReturnedPurchase> {
     List<Integer> findReturnedShopOrder(Integer orderID);
 
     String findSplitCode(Integer shopOrderId);
+
+    List<Integer> getReturnShopOrder(String id);
+
+    void insertCmRefundRecord(CmRefundRecord cmRefundRecord);
 }

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

@@ -87,4 +87,6 @@ public interface NewShopOrderDao extends CrudDao<NewShopOrder> {
     List<NewShopOrder> findSettlementList(NewShopOrder shopOrder);
 
     List<SettleRecord> findSettleRecord(String shopOrderID);
+
+    List<NewShopOrder> findListByShopOrderId(Integer onlineShopOrderId);
 }

+ 36 - 0
src/main/java/com/caimei/modules/order/entity/CmRefundRecord.java

@@ -0,0 +1,36 @@
+package com.caimei.modules.order.entity;
+
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+
+public class CmRefundRecord extends DataEntity<CmRefundRecord> {
+
+    private static final long serialVersionUID = 1L;
+
+    private Double refundAmount;
+    private String orderRequestNo;
+    private Integer shopOrderId;
+
+    public Double getRefundAmount() {
+        return refundAmount;
+    }
+
+    public void setRefundAmount(Double refundAmount) {
+        this.refundAmount = refundAmount;
+    }
+
+    public String getOrderRequestNo() {
+        return orderRequestNo;
+    }
+
+    public void setOrderRequestNo(String orderRequestNo) {
+        this.orderRequestNo = orderRequestNo;
+    }
+
+    public Integer getShopOrderId() {
+        return shopOrderId;
+    }
+
+    public void setShopOrderId(Integer shopOrderId) {
+        this.shopOrderId = shopOrderId;
+    }
+}

+ 27 - 1
src/main/java/com/caimei/modules/order/entity/CmReturnedPurchase.java

@@ -30,6 +30,7 @@ public class CmReturnedPurchase extends DataEntity<CmReturnedPurchase> {
     private String operatingOrderStatus;    //发起该操作时订单状态快照:0待确认,11待收待发,12待收部发,13待收全发,21部收待发,22部收部发,23部收全发,31已收待发,32已收部发,33已收全发,4交易完成,5订单完成,6已关闭,7交易全退
     private Double returnedPurchaseFee;        // 退款(退货)总金额
     private Double refundFee;        // 退款总额(给买家)
+    private Double freeRefundFee;   //自定义退款总额
     private String image1;        // 凭证图片1
     private String image2;        // 凭证图片2
     private String image3;        // 凭证图片3
@@ -69,9 +70,26 @@ public class CmReturnedPurchase extends DataEntity<CmReturnedPurchase> {
     private String reviewUserName;//审核人
     private String name; //机构名
     private Integer orderType; //订单类型 0协销订单、 1普通订单、 2呵呵订单
-
+    private Integer refundType;  //退款模式 1按商品金额退款  2 自定义金额退款
     private String beginTime;     //时间开始 查询条件 申请时间
     private String endTime;        //时间结束  查询条件 申请时间
+    private Integer onlineShopOrderId; //子订单id
+
+    public Integer getOnlineShopOrderId() {
+        return onlineShopOrderId;
+    }
+
+    public void setOnlineShopOrderId(Integer onlineShopOrderId) {
+        this.onlineShopOrderId = onlineShopOrderId;
+    }
+
+    public Double getFreeRefundFee() {
+        return freeRefundFee;
+    }
+
+    public void setFreeRefundFee(Double freeRefundFee) {
+        this.freeRefundFee = freeRefundFee;
+    }
 
     public String getName() {
         return name;
@@ -123,6 +141,14 @@ public class CmReturnedPurchase extends DataEntity<CmReturnedPurchase> {
 //		this.shopOrderID = shopOrderID;
 //	}
 
+    public Integer getRefundType() {
+        return refundType;
+    }
+
+    public void setRefundType(Integer refundType) {
+        this.refundType = refundType;
+    }
+
     public Integer getUserID() {
         return userID;
     }

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

@@ -148,7 +148,7 @@ public class NewOrder extends DataEntity<NewOrder> {
     private Integer collageStatus;  // 拼团状态:1拼团中,2已拼成
     private Double reductionAmount;    //分享减免金额
     private Double reductionTouchPrice; //分享减免条件
-
+    private Integer onlinfePayFlag;  //线上支付标记
 
     /**
      * 呵呵商城优惠券
@@ -156,6 +156,14 @@ public class NewOrder extends DataEntity<NewOrder> {
     private Integer receiveCouponId;
     private CmHeheCouponOrderRecord heheCouponRecord;   //优惠券信息
 
+    public Integer getOnlinfePayFlag() {
+        return onlinfePayFlag;
+    }
+
+    public void setOnlinfePayFlag(Integer onlinfePayFlag) {
+        this.onlinfePayFlag = onlinfePayFlag;
+    }
+
     public Integer getOrderSeen() {
         return orderSeen;
     }

+ 35 - 5
src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java

@@ -606,11 +606,12 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
 
             //判断是否有线上退款
             if (returnedPurchase.getReturnedWay().equals("1") && returnedPurchase.getRefundOnlineFee() > 0) {
-                List<Integer> shopOrderIds = cmReturnedPurchaseDao.findReturnedShopOrder(returnedPurchase.getOrderID());
+                List<Integer> shopOrderIds = cmReturnedPurchaseDao.getReturnShopOrder(returnedPurchase.getId());
                 if (null == shopOrderIds || 0 == shopOrderIds.size()) {
                     throw new Exception("退款子订单信息错误!");
                 }
-                theOnlineRefund(shopOrderIds);
+                Double refundOnlineFee = returnedPurchase.getRefundOnlineFee();
+                theOnlineRefund(shopOrderIds,refundOnlineFee);
             }
 
             //二手订单交易全退,标记未售
@@ -752,7 +753,7 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
      *
      * @param shopOrderIds
      */
-    public void theOnlineRefund(List<Integer> shopOrderIds) {
+    public void theOnlineRefund(List<Integer> shopOrderIds,Double refundOnlineFee) {
         List<CmReceiptOrderRelation> relationList = cmReceiptOrderRelationDao.findByShopOrderIds(shopOrderIds);
 //        AtomicDouble allRefund = new AtomicDouble(0);
 //        relationList.forEach(r -> allRefund.getAndSet(Double.parseDouble(r.getAssociateAmount())));
@@ -760,13 +761,32 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
             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){
+                        //要退的钱大于本次交易金额
+                        value=orderRelation.getAssociateAmount();
+                    }
+                    if(refundOnlineFee<0){
+                        value=refundOnlineFee.toString();
+                    }
                     //不同产品区分
                     if ("12".equals(orderRelation.getPayType()) || "17".equals(orderRelation.getPayType())) {
+                        //已分帐应该先转回佣金
+
+                        //手续费转给供应商
+
                         //网银
-                        unionRefund(orderRelation.getOrderRequestNo(), orderRelation.getAssociateAmount(), orderRelation.getShopOrderId());
+                        unionRefund(orderRelation.getOrderRequestNo(), value, orderRelation.getShopOrderId());
                     } else {
+                        // 已分帐应该先转回佣金
+
                         //扫码
-                        onlinePay(orderRelation.getOrderRequestNo(), orderRelation.getAssociateAmount(), orderRelation.getShopOrderId());
+                        onlinePay(orderRelation.getOrderRequestNo(),value, orderRelation.getShopOrderId());
+                    }
+
+                    if(0==refundOnlineFee){
+                        break;
                     }
                 }
             }
@@ -806,6 +826,11 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                 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());
@@ -858,6 +883,11 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
                     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("第三方退款成功");
                 }
             }

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

@@ -1361,6 +1361,9 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
                 }
             }
             List<NewShopOrder> shopOrders = newShopOrderDao.findListByOrderID(cmReturnedPurchase.getOrderID());
+            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) {

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

@@ -233,6 +233,6 @@
 		  AND b.receiptStatus = '3'
 		  AND a.delFlag = '0'
 		  AND b.delFlag = '0'
-		order by b.receiptDate desc
+		order by a.associateAmount desc
 	</select>
 </mapper>

+ 13 - 0
src/main/resources/mappings/modules/order/CmReturnedPurchaseMapper.xml

@@ -242,6 +242,11 @@
 			#{confirmReturnTime}
 		)
 	</insert>
+	<insert id="insertCmRefundRecord">
+		insert into cm_refundmoney_record
+		(refundAmount,orderRequestNo,shopOrderId)
+		values(#{refundAmount},#{orderRequestNo},#{shopOrderId})
+	</insert>
 
 	<update id="updateRevokeApply">
 		UPDATE cm_returned_purchase
@@ -406,4 +411,12 @@
     <select id="findSplitCode" resultType="java.lang.String">
 		select splitCode from cm_shop_order where shopOrderID = #{shopOrderId}
 	</select>
+	<select id="getReturnShopOrder" resultType="java.lang.Integer">
+		SELECT shopOrderId FROM cm_returned_purchase_product crpp
+		LEFT JOIN cm_returned_purchase crp ON crp.id=crpp.returnedID
+		WHERE crp.id=#{id}
+		  AND crp.status=2
+		  AND crp.returnedWay =1
+		  AND crp.delflag=0
+	</select>
 </mapper>

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

@@ -39,7 +39,7 @@
 		a.freight AS freight,
 		a.userBeans AS userBeans,
 		a.delFlag AS delFlag,
-		a.onlinePayFlag AS onlinePayFlag,
+		ifnull(a.onlinePayFlag,1) AS onlinePayFlag,
 		a.payTime AS payTime,
 		a.splitFlag AS splitFlag,
 		(select sum(cop.totalAddedValueTax) from cm_order_product cop where cop.orderID = a.orderID) AS totalAddedValueTax,

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

@@ -1294,4 +1294,16 @@
         from cm_settle_record
         where shopOrderId = #{shopOrderID}
     </select>
+    <select id="findListByShopOrderId" resultType="com.caimei.modules.order.entity.NewShopOrder">
+        SELECT<include refid="shopOrderColumns"/>,
+        b.name as shopName,
+        oa.id as orderArchiveId,
+        co.receiptStatus
+        FROM cm_shop_order a
+        left join shop b on a.shopID = b.shopID
+        left join cm_order_archive oa on a.shopOrderID = oa.shopOrderId
+        left join cm_order co on co.orderID = a.orderID
+        WHERE a.shopOrderId = #{onlineShopOrderId}
+        ORDER BY a.shopOrderNo DESC
+    </select>
 </mapper>

+ 40 - 7
src/main/webapp/WEB-INF/views/modules/bulkpurchase/applyRefoundForm.jsp

@@ -69,7 +69,6 @@
                                 return;
                             }
                         }
-
                         if(checked1){
                             var refundBalanceFee = $('#refundBalanceFee').val();
                             if( refundBalanceFee == null || refundBalanceFee == ""){
@@ -85,10 +84,22 @@
                             refundFee = 0;
                         }
                         refundFee = parseFloat(refundFee);
-                        var  number = refundFee - totalFee;
-                        if(number > 0.1 || number < -0.1){
-                            alertx("各退款方式的金额之和不等于退款总金额,请重新计算后再提交申请");
-                            return;
+                        var refundType = $("#refundType").val();
+                        console.log("refundType------------>"+refundType);
+                        if(1==refundType){
+                            var  number = refundFee - totalFee;
+                            if(number > 0.1 || number < -0.1){
+                                alertx("各退款方式的金额之和不等于退款总金额,请重新计算后再提交申请");
+                                return;
+                            }
+                        }else{
+                            var refundFee = $("#freeRefundFee").val();
+                            console.log("自定义退款金额------------》"+refundFee);
+                            if(refundFee == "" || refundFee == null){
+                                refundFee = 0;
+                                alertx("请填写自定义退款金额!");
+                                return;
+                            }
                         }
 
                         if (${cmDiscernReceipt.payWay eq 1}) {
@@ -257,12 +268,21 @@
             <td><b>退款编号:</b>
                 ${empty returnedNo?'':(returnedNo)}
             </td>
+            <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>
             <td><b>申请时间:</b>
                     ${returnTime}
             </td>
-            <td><b>申请金额:</b>
+            <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>
             <td><b>退款状态:</b>
                 <c:if test="${empty status}">
                     待申请
@@ -646,7 +666,7 @@
                                     <tr>
                                         <td><font color="red">待发货:<span id="toBeShipped${status.index}${productStatus.index}">${newOrderProduct.notOutStore - newOrderProduct.cancelProductNum}</span></font></td>
                                         <td><font color="red">已取消:<span id="toBeShipped${status.index}${productStatus.index}">${newOrderProduct.cancelProductNum}</span></font></td>
-                                        <td colspan="4"><font color="red"><span>本次取消:<input ${newOrderProduct.presentNum>0 or (order.onlinePayFlag eq 0 and shopOrder.shopID eq 998)?"readonly":""} id="applicationCancelNum${status.index}${productStatus.index}" class="cancelGoodsInput shopOrderInput" name="cmReturnedPurchaseProductList[${status.index}][${productStatus.index}].applicationCancelNum" value="${(order.onlinePayFlag eq 0 and shopOrder.shopID eq 998)?0:(newOrderProduct.notOutStore - newOrderProduct.cancelProductNum)}" oninput="this.value=this.value.replace(/\D/g,'').replace(/^0+(?=\d)/,1)" class="input cancel" type="text" onchange="setApplicationCancelNum(${status.index},${productStatus.index})"></span></font></td>
+                                        <td colspan="4"><font color="red"><span>本次取消:<input ${newOrderProduct.presentNum>0 or (order.onlinfePayFlag eq 0 and shopOrder.shopID eq 998)?"readonly":""} id="applicationCancelNum${status.index}${productStatus.index}" class="cancelGoodsInput shopOrderInput" name="cmReturnedPurchaseProductList[${status.index}][${productStatus.index}].applicationCancelNum" value="${(order.onlinePayFlag eq 0 and shopOrder.shopID eq 998)?0:(newOrderProduct.notOutStore - newOrderProduct.cancelProductNum)}" oninput="this.value=this.value.replace(/\D/g,'').replace(/^0+(?=\d)/,1)" class="input cancel" type="text" onchange="setApplicationCancelNum(${status.index},${productStatus.index})"></span></font></td>
                                         <form:hidden path="cmReturnedPurchaseProductList[${status.index}][${productStatus.index}].shopOrderID" value="${newOrderProduct.shopOrderID}"/>
                                         <form:hidden path="cmReturnedPurchaseProductList[${status.index}][${productStatus.index}].productID" value="${newOrderProduct.productID}"/>
                                         <form:hidden path="cmReturnedPurchaseProductList[${status.index}][${productStatus.index}].orderProductID" value="${newOrderProduct.orderProductID}"/>
@@ -670,6 +690,19 @@
 <script type="text/javascript" src="${ctxStatic}/modules/bulkpurchase/orderForm.js"></script>
 <script type="text/javascript" src="${ctxStatic}/modules/bulkpurchase/stages.js"></script>
 <script>
+
+    function changeType(){
+        var refundType =  $("#refundType").val();
+        if(1==refundType){
+            $("#zdy").hide();
+            $("#spt").show();
+        }
+        if(2==refundType){
+            $("#spt").hide();
+            $("#zdy").show();
+        }
+    }
+
     $(function () {
         var orderStatus = $("#orderStatus").val();
         var isBuFenFaHuo = $("#isBuFenFaHuo").val();

+ 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" method="post">
+<form:form id="inputForm" modelAttribute="cmReturnedPurchase" action="${ctx}/bulkpurchase/cmRefundsProduct/confirmApply?id=${cmReturnedPurchase.id}" 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="审核"/>

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

@@ -664,25 +664,28 @@
                     </c:if>
                 </shiro:hasPermission>
                 <shiro:hasPermission name="order:order:applyrefound">
-                    <c:if test="${order.status == 12 || order.status == 13 || order.status == 21 || order.status == 22 || order.status == 23 || order.status == 31 || order.status == 32 || order.status == 33 || order.status == 4 || order.status == 5}">
-                        <%--  返佣订单不能申请退款(退货) --%>
-                        <c:if test="${order.rebateOrder == '0'}">
-                            <c:if test="${order.toAudit eq 1}">
-                                <%--如果存在审核收款则不允许申请:1不能申请,其它可以申请--%>
+                    <%--线下订单以主订单为单位退款--%>
+                    <c:if test="${order.onlinePayFlag == 1}">
+                        <c:if test="${order.status == 12 || order.status == 13 || order.status == 21 || order.status == 22 || order.status == 23 || order.status == 31 || order.status == 32 || order.status == 33 || order.status == 4 || order.status == 5}">
+                            <%--  返佣订单不能申请退款(退货) --%>
+                            <c:if test="${order.rebateOrder == '0'}">
                                 <c:if test="${order.toAudit eq 1}">
-                                    <%--弹窗提示--%>
-                                    <a href="#" onclick="return alertx('订单存在未审核的收款,暂不能退款。请将收款审核通过后再操作退款。')">申请退款</a>
-                                </c:if>
-                            </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}"
-                                       <c:if test="${order.status == 21 || order.status == 22 || order.status == 23}">onclick="return confirmx('部分收款的订单、申请退款只能申请全部退款!', this.href)"
+                                    <%--如果存在审核收款则不允许申请:1不能申请,其它可以申请--%>
+                                    <c:if test="${order.toAudit eq 1}">
+                                        <%--弹窗提示--%>
+                                        <a href="#" onclick="return alertx('订单存在未审核的收款,暂不能退款。请将收款审核通过后再操作退款。')">申请退款</a>
                                     </c:if>
-                                    >申请退款</a>
                                 </c:if>
-                                <c:if test="${order.applyReturnedPurchaseFlag ne 1}">
-                                    <font title="存在未处理完的申请,请前往退款列表处理!">申请退款</font>
+                                <c:if test="${order.toAudit ne 1}">
+                                    <c:if test="${order.applyReturnedPurchaseFlag eq 1}">
+                                        <a href="${ctx}/bulkpurchase/cmRefundsProduct/applyRefound.rpc?orderID=${order.orderID}"
+                                           <c:if test="${order.status == 21 || order.status == 22 || order.status == 23}">onclick="return confirmx('部分收款的订单、申请退款只能申请全部退款!', this.href)"
+                                        </c:if>
+                                        >申请退款</a>
+                                    </c:if>
+                                    <c:if test="${order.applyReturnedPurchaseFlag ne 1}">
+                                        <font title="存在未处理完的申请,请前往退款列表处理!">申请退款</font>
+                                    </c:if>
                                 </c:if>
                             </c:if>
                         </c:if>
@@ -773,6 +776,31 @@
                 <c:if test="${order.status ne '0'}">
                     <a onclick="copyText('${shopOrder.shopOrderID}')" style="cursor:pointer;">供应商订单二维码</a>
                 </c:if>
+                <c:if test="${order.onlinePayFlag eq 0}">
+                    <c:if test="${order.status == 12 || order.status == 13 || order.status == 21 || order.status == 22 || order.status == 23 || order.status == 31 || order.status == 32 || order.status == 33 || order.status == 4 || order.status == 5}">
+                        <%--  返佣订单不能申请退款(退货) --%>
+                        <c:if test="${order.rebateOrder == '0'}">
+                            <c:if test="${order.toAudit eq 1}">
+                                <%--如果存在审核收款则不允许申请:1不能申请,其它可以申请--%>
+                                <c:if test="${order.toAudit eq 1}">
+                                    <%--弹窗提示--%>
+                                    <a href="#" onclick="return alertx('订单存在未审核的收款,暂不能退款。请将收款审核通过后再操作退款。')">申请退款</a>
+                                </c:if>
+                            </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}"
+                                       <c:if test="${order.status == 21 || order.status == 22 || order.status == 23}">onclick="return confirmx('部分收款的订单、申请退款只能申请全部退款!', this.href)"
+                                    </c:if>
+                                    >申请退款</a>
+                                </c:if>
+                                <c:if test="${order.applyReturnedPurchaseFlag ne 1}">
+                                    <font title="存在未处理完的申请,请前往退款列表处理!">申请退款</font>
+                                </c:if>
+                            </c:if>
+                        </c:if>
+                    </c:if>
+                </c:if>
                 <c:if test="${shopOrder.orderArchiveId ne null}">
                     <a href="${ctx}/archive/cmOrderArchive/form?id=${shopOrder.orderArchiveId}">查看订单资料</a>
                 </c:if>