tsit05 před 4 roky
rodič
revize
c9bb675416

+ 0 - 1
src/main/java/com/style24/admin/biz/dao/TsaDeliveryDao.java

@@ -5,7 +5,6 @@ import java.util.Collection;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Delivery;
 
-
 /**
  * 배송관리 Dao
  *

+ 9 - 1
src/main/java/com/style24/admin/biz/dao/TsaWithdrawDao.java

@@ -192,6 +192,14 @@ public interface TsaWithdrawDao {
 	Withdraw getRefundInfo(Withdraw withdraw);
 
 
+	/**
+	 * 회수지시목록 - 회수철회 알림톡 정보 
+	 * 
+	 * @param withdraw - 주문변경번호
+	 * @return Withdraw
+	 * @author moon
+	 * @since 2021. 07. 21
+	 */
+	Withdraw getWithdrawInfo(Withdraw withdraw);
 	
-
 }

+ 8 - 0
src/main/java/com/style24/admin/biz/service/TsaDeliveryService.java

@@ -19,10 +19,13 @@ import com.style24.core.biz.dao.TscOrderDao;
 import com.style24.core.biz.service.TscDeliveryService;
 import com.style24.core.biz.service.TscWmsService;
 import com.style24.core.support.env.TscConstants.OrderDetailStat;
+import com.style24.core.support.env.TscConstants.MallGb;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Delivery;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.WmsDelivery;
+import com.style24.core.biz.service.TscKakaotalkService;
+
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -63,6 +66,11 @@ public class TsaDeliveryService {
 	@Autowired
 	private Environment env;
 	
+	@Autowired
+	private TscKakaotalkService kakaotalkService;
+		
+	
+	
 	/**
 	 * 배송 목록 건수
 	 *

+ 32 - 0
src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java

@@ -504,6 +504,38 @@ public class TsaWithdrawService {
 		}
 	}
 
+	/**
+	 * 회수 철회 알림톡(KAKAO)
+	 *
+	 * @param Withdraw
+	 * @return void
+	 * @author moon
+	 * @since 2021. 07. 21
+	 */
+	@Transactional("shopTxnManager")
+	public void sendRecallCancel(Withdraw withdraw) {
+		Integer userNo = TsaSession.getInfo().getUserNo();
+		String gubun = withdraw.getGubun();
+		
+		Withdraw refundOrdchgSq = new Withdraw();
+		refundOrdchgSq.setOrdChgSq(withdraw.getOrdChgSq());
+		Withdraw info = withdrawDao.getWithdrawInfo(refundOrdchgSq);
+		
+		Order order = new Order();
+		order.setOrdNo(info.getOrdNo());
+		order.setCustNo(info.getCustNo());
+		order.setOrdNm(info.getOrdNm());
+		order.setGoodsNm(info.getGoodsNm());
+		order.setGoodsCnt(info.getGoodsCnt()+"");
+		order.setOrdPhnno(info.getOrdPhnno());
+		order.setChgerBaseAddr(info.getChgerBaseAddr());
+		
+		try {
+			kakaotalkService.sendRecallCancel(order, userNo, gubun);
+		} catch(Exception e) {
+			log.debug("kakaotalkService Exception OrdNo:"+withdraw.getOrdNo());
+		}
 
+	}
 
 }

+ 17 - 2
src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java

@@ -426,7 +426,7 @@ public class TsaWithdrawController extends TsaBaseController {
 	}	
 	
 	/**
-	 * 출고처지정 취소 
+	 * 재회수지시 
 	 *
 	 * @param
 	 * @return
@@ -441,5 +441,20 @@ public class TsaWithdrawController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
-
+	/**
+	 * 회수철회 알림톡(kAKAO)
+	 *
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author moon
+	 * @since 2020. 04. 20
+	 */
+	@PostMapping("/direct/recallCancel")
+	@ResponseBody
+	public GagaResponse sendRecallCancel(@RequestBody Withdraw param) throws Exception {
+		withdrawService.sendRecallCancel(param);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+	
 }

+ 1 - 0
src/main/java/com/style24/persistence/domain/Withdraw.java

@@ -91,6 +91,7 @@ public class Withdraw extends TscBaseDomain {
 	private String delvFeeCdGrp;
 	private String refundConfirm;
 	private String shipCompCd;
+	private String gubun;
 	
 	
 	private Integer ordNo;

+ 3 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml

@@ -190,7 +190,7 @@
 							      INNER JOIN TB_GOODS C               ON ODI.ITEM_CD    = C.GOODS_CD
 							      INNER JOIN TB_DELIVERY_ADDR D       ON B.DELV_ADDR_SQ = D.DELV_ADDR_SQ
 								  INNER JOIN TB_PAYMENT       P       ON A.ORD_NO       = P.ORD_NO  AND P.PAY_STAT = 'G016_30' AND P.PAY_GB = 'O'
-							 LEFT OUTER JOIN TB_CUST_ACCOUNT  T       ON A.CUST_NO      = T.CUST_NO AND T.DEFAULT_YN = 'Y' AND T.DEL_YN = 'N'
+							 LEFT OUTER JOIN TB_CUST_ACCOUNT  T       ON A.CUST_NO      = T.CUST_NO AND T.DEL_YN = 'N' AND T.CUST_NO NOT IN(0)
 							WHERE 1=1 
 							  AND B.GOODS_TYPE NOT IN ('G056_S')
 					        <include refid="getDeliveryListCondition_sql"/>
@@ -252,7 +252,7 @@
 							      INNER JOIN TB_GOODS C               ON B.GOODS_CD     = C.GOODS_CD
 							      INNER JOIN TB_DELIVERY_ADDR D       ON B.DELV_ADDR_SQ = D.DELV_ADDR_SQ
 								  INNER JOIN TB_PAYMENT       P       ON A.ORD_NO       = P.ORD_NO  AND P.PAY_STAT = 'G016_30' AND P.PAY_GB ='O'
-							 LEFT OUTER JOIN TB_CUST_ACCOUNT  T       ON A.CUST_NO      = T.CUST_NO AND T.DEFAULT_YN = 'Y' AND T.DEL_YN = 'N'
+							 LEFT OUTER JOIN TB_CUST_ACCOUNT  T       ON A.CUST_NO      = T.CUST_NO AND T.DEL_YN = 'N' AND T.CUST_NO NOT IN(0)
 							WHERE 1=1
 							  AND B.GOODS_TYPE IN ('G056_S')
 							<include refid="getDeliveryListCondition_sql"/>  
@@ -1245,4 +1245,5 @@
 		   AND ORD_DTL_NO = #{ordDtlNo}
 	</update>
 		
+			
 </mapper>

+ 26 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -610,9 +610,9 @@
 				, E.MALL_GB 
 				, (SELECT SUM((OD.ORD_QTY - OD.CNCL_RTN_QTY) * DI.ITEM_QTY)  FROM TB_ORDER_DETAIL OD JOIN TB_ORDER_DETAIL_ITEM DI ON OD.ORD_NO = DI.ORD_NO AND OD.ORD_DTL_NO = DI.ORD_DTL_NO WHERE OD.ORD_NO= E.ORD_NO AND OD.ORD_DTL_STAT NOT IN ('G013_00','G013_97','G013_98','G013_99')) AS  TOTAL_ORD_QTY -- 주문 총수량  
 				, CASE WHEN (SELECT COUNT(*) FROM TB_ORDER_RECALL_EXCEPTION_ITEM EI  WHERE EI.ORDER_DTL_NO = D.ORD_DTL_NO AND EI.REASON_CODE IN('09','11')) > 0 THEN 'Y' ELSE 'N' END AS DELV_EXPN_YN
-				, CA.ACCOUNT_NO 
-				, CA.ACCOUNT_NM 
-				, CA.BANK_CD 	
+				, CA.RA_NO AS ACCOUNT_NO 
+				, CA.RA_NM AS ACCOUNT_NM 
+				, CA.RA_BANK AS BANK_CD 	
 				, E.ORD_NM 	
 				, C.DELV_ADDR_SQ
 				, F.WD_INVOICE_NO 
@@ -624,7 +624,7 @@
 		  JOIN TB_ORDER E             ON E.ORD_NO = C.ORD_NO 
 		  JOIN TB_WITHDRAW F ON F.ORD_CHG_SQ = A.ORD_CHG_SQ 
 		  LEFT OUTER JOIN TB_WITHDRAW_DETAIL G ON G.WD_INVOICE_NO = F.WD_INVOICE_NO AND G.ORD_CHG_SQ = F.ORD_CHG_SQ AND D.ITEM_CD = G.GOODS_CD AND D.OPT_CD1 = G.OPT_CD1  AND D.OPT_CD2 = G.OPT_CD2 
-		  LEFT OUTER JOIN TB_CUST_ACCOUNT CA ON CA.CUST_NO = E.CUST_NO 
+		  LEFT OUTER JOIN TB_REFUND CA ON CA.ORD_NO = E.ORD_NO AND CA.ORD_CHG_SQ = A.ORD_CHG_SQ
 		 WHERE A.ORD_CHG_SQ  = #{ordChgSq}
 		   AND A.CHG_GB = 'G680_30' -- 반품요청
 		   AND B.CHG_STAT IN('G685_33','G685_60')		
@@ -664,4 +664,26 @@
 		 
  
 	</select>			
+	
+	<!-- 회수철회알림톡 정보 조회  -->
+	<select id="getWithdrawInfo" parameterType="Withdraw" resultType="Withdraw">
+		/* TsaWithdraw.getWithdrawInfo */
+		SELECT
+			  D.ORD_NO 
+			, D.CUST_NO 
+			, A.CHGER_PHNNO AS ORD_PHNNO 
+			, A.CHGER_NM    AS ORD_NM 
+			, (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD= MAX(C.GOODS_CD))  AS GOODS_NM
+			, COUNT(C.GOODS_CD) -1 AS GOODS_CNT
+			, CONCAT(A.CHGER_BASE_ADDR,' ', A.CHGER_DTL_ADDR) AS CHGER_BASE_ADDR 
+		  FROM TB_ORDER_CHANGE A
+		  JOIN TB_ORDER_CHANGE_DETAIL B ON A.ORD_CHG_SQ = B.ORD_CHG_SQ 
+		  JOIN TB_ORDER_DETAIL C        ON B.ORD_DTL_NO = C.ORD_DTL_NO 
+		  JOIN TB_ORDER        D        ON C.ORD_NO     = D.ORD_NO 
+		 WHERE A.ORD_CHG_SQ = #{ordChgSq}
+		   AND B.DEL_YN ='N'
+		 GROUP BY D.ORD_NO, D.CUST_NO, D.ORD_PHNNO, D.ORD_NM, A.CHGER_BASE_ADDR, A.CHGER_DTL_ADDR
+		
+	</select>			
+		
 </mapper>

+ 3 - 1
src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html

@@ -178,7 +178,7 @@
 	<div class="panelStyle">
 		<ul class="panelBar">
 			<li class="left">
-				<button type="button" id="btnSoldout" class="btn btn-danger btn-lg">품절처리</button>
+				<!--  <button type="button" id="btnSoldout" class="btn btn-danger btn-lg">품절처리</button> -->
 				<!-- <button type="button" id="btnSave" class="btn btn-success btn-lg btnRight" onclick="deliveryInfoSave();">저장</button>
 				<button type="button" id="btnWith" class="btn btn-success btn-lg btnRight">T</button> -->
 			</li>
@@ -215,6 +215,7 @@
 	var roleCd          = [[${sessionInfo.roleCd}]];
 	var currOrdNo       = 0;
 	var columnDefs = [
+		/*
 		{
 			headerName: "결품",
 			field: "soldout",
@@ -227,6 +228,7 @@
 				return (params.data.ordDtlStat == 'G013_20') ? true : false;
 			}
 		},
+		*/
 		{headerName: "지연일",	field: "delvDelayDays", 	width: 70, cellClass: 'text-center'},
 		{headerName: "주문번호",	field: "ordNo", width: 95, cellClass: 'text-center',
 			cellRenderer: function (params) {

+ 71 - 5
src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html

@@ -211,9 +211,9 @@
 			}			
 		},
 		{headerName: "회수상태", 		field: "wdShipStateNm", width: 120, cellClass: "text-center"},
-		{headerName: "회수상태수신일시", field: "wdStateDt", 	width: 120, cellClass: "text-center"},
+		{headerName: "회수상태수신일시", field: "wdStateDt", 		width: 120, cellClass: "text-center"},
 		{headerName: "미회수사유", 		field: "wdReasonCdNm", 	width: 100, cellClass: "text-center"},
-		{headerName: "재회수지시", 		field: "wdShipState", 		width: 100,	cellClass: 'text-center',
+		{headerName: "재회수지시", 		field: "wdShipState", 	width: 100,	cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return params.value == '12' && params.data.chgStat == 'G685_30' ? '<button type="button" class="btn btn-base btn-sm" onclick="fnReRecallOrder(\'' + params.data.chgGb + '\',\'' + params.data.ordDtlNo + '\',\''+params.data.ordChgSq+'\',\''+params.data.ordNo+'\');">&nbsp;재회수지시&nbsp;</button>' : "";
 			}
@@ -222,14 +222,27 @@
 		{headerName: "배송시작일시", 	field: "wdStdt", 		width: 120, cellClass: "text-center"},
 		{headerName: "배송종료일시", 	field: "wdEddt", 		width: 120, cellClass: "text-center"},
 		{headerName: "수취인명", 		field: "recipNm", 		width: 120, cellClass: "text-center"},
-		
+		{headerName: "알림톡", 			field: "", 				width: 140, cellClass: "text-center",
+			cellRenderer: function(params) {
+				if (params.data.wdShipState == '12' && params.data.chgStat == 'G685_30') {
+					
+					var paramData 	= params.data.ordChgSq;
+					paramData 		+= '@' + params.data.wdReasonCd;
+					paramData 		+= '@' + params.data.chgGb;
+					
+					if(params.data.chgGb == 'G680_30'){ // 반품요청 
+						return '<button type="button" class="btn btn-base btn-sm" onclick="fnKaKao(\'' + paramData + '\');">&nbsp;반품철회알림톡&nbsp;</button>';
+					} else if(params.data.chgGb == 'G680_40'){ // 교환요청 
+						return '<button type="button" class="btn btn-base btn-sm" onclick="fnKaKao(\'' + paramData + '\');">&nbsp;교환철회알림톡&nbsp;</button>';
+					}
+				}
+			}
+		},
 		{headerName: "LMS", 			field: "maskingChgerPhnno", 	width: 80, cellClass: "text-center",
 			cellRenderer: function(params) {
 				return '<button type="button" class="btn btn-base btn-sm" onclick="fnLms(\'' + params.data.chgerPhnno + '\',\'' + params.data.custNo + '\');">&nbsp;LMS&nbsp;</button>';
 			}			
 		},
-		
-		
 		{headerName: "보내시는분", 			field: "maskingChgerNm", 		width: 100, cellClass: "text-center"},
 		{headerName: "반품회수지휴대전화", 	field: "maskingChgerPhnno", 	width: 120, cellClass: "text-center"},
 		{headerName: "반품회수지우편번호", 	field: "chgerZipcode", 			width: 120, cellClass: "text-center"},
@@ -354,6 +367,59 @@
 		});
 	}
 
+	
+	
+	/*************************************************************************
+	*  KAKAO(알림톡)
+	**************************************************************************/	
+	var fnKaKao = function(paramData){
+
+		var param  = "";
+		var msg    = "";
+		var gubun  = "";
+		var paramArr = paramData.split("@");
+
+		var ordChgSq	= paramArr[0];
+		var wdReasonCd  = paramArr[1];
+		var chgGb       = paramArr[2];
+
+		if(chgGb == "G680_30"){ // 반품 
+			if(wdReasonCd == "18" || wdReasonCd == "14" || wdReasonCd == "16" || wdReasonCd == "25"){ // 고객부재 
+				gubun = "RETURN_CANCEL_CUSTOMER";
+			} else if(wdReasonCd == "21" ){ // 고객정보(주소) 오류 
+				gubun = "RETURN_CANCEL_ADDR";
+			}
+			msg = "반품 철회 알림톡 발송 하시겠습니까?";
+			
+		} else if(chgGb == "G680_40"){ // 교환 
+			if(wdReasonCd == "18" || wdReasonCd == "14" || wdReasonCd == "16" || wdReasonCd == "25"){ // 고객부재 
+				gubun = "EXCHANGE_CANCEL_CUSTOMER";
+			} else if(wdReasonCd == "21" ){ // 고객정보(주소) 오류 
+				gubun = "EXCHANGE_CANCEL_ADDR";
+			}
+			msg = "교환 철회 알림톡 발송 하시겠습니까?";
+		}
+
+		if(gubun == ""){
+			mcxDialog.alert('알림톡 대상이 아닙니다.');
+			return false;
+		}
+
+		mcxDialog.confirm(msg, {
+		    cancelBtnText: "취소",
+		    sureBtnText: "확인",
+		    sureBtnClick: function() {
+	            var param = new Object;
+	            param.ordChgSq   = ordChgSq;
+	            param.gubun      = gubun;
+	            
+	            var jsonData = JSON.stringify(param);
+	            gagajf.ajaxJsonSubmit('/withdraw/direct/recallCancel', jsonData, "");
+	        }
+		});
+	}
+	
+	
 	/*************************************************************************
 	*  LMS
 	**************************************************************************/