Procházet zdrojové kódy

Merge branch 'card007' into order

card007 před 5 roky
rodič
revize
6fcee752da

+ 44 - 9
src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java

@@ -163,35 +163,54 @@ public class TsfOrderChangeService {
 		Collection<Order> cnclRtnList = orderChangeDao.getRefundPreInfo(orderChange);
 		Order cnclRtn = cnclRtnList.iterator().next();
 
-		// 전체 취소여부 설정
+		// 전체 및 마지막 취소여부 설정
+		String delvFeeCd = "";
 		String allCanYn = "Y";
+		List<String> delvFeeCdList = new ArrayList<>();
 		for (Order order : cnclRtnList) {
 			int index = ordDtlNoList.indexOf(order.getOrdDtlNo());
-			if ("Y".equals(allCanYn) && (index < 0 || cnclRtnReqQtyArr[index] != order.getOrdQty())) {
+			int ordQty = order.getOrdQty();
+			int cnclRtnQty = order.getCnclRtnQty();
+
+			// 전체 취소 여부 설정
+			if ("Y".equals(allCanYn) && (index < 0 || cnclRtnReqQtyArr[index] != ordQty)) {
 				allCanYn = "N";
 			}
+
+			// 마지막 취소 여부 설정
+			if ((index < 0 || cnclRtnReqQtyArr[index] != (ordQty - cnclRtnQty)) && !delvFeeCd.equals(order.getDelvFeeCd())) {
+				delvFeeCdList.add(order.getDelvFeeCd());
+				delvFeeCd = order.getDelvFeeCd();
+			}
 		}
 
 		// 무통장입금 전 전체 취소여부 설정
 		String allCanYnBeforePayment = "N";
-		if ("Y".equals(allCanYn) && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(cnclRtn.getPayMeans()) && TscConstants.PaymentStat.PAYMENT_WAIT.value().equals(cnclRtn.getPayStat())) {
+		if ("Y".equals(allCanYnBeforePayment) && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(cnclRtn.getPayMeans()) && TscConstants.PaymentStat.PAYMENT_WAIT.value().equals(cnclRtn.getPayStat())) {
 			allCanYnBeforePayment = "Y";
 		}
-		
+
 		// 전체 취소여부 및 취소/반품 수량 설정
 		for (Order order : cnclRtnList) {
-			// 변경 수량 설정
 			int index = ordDtlNoList.indexOf(order.getOrdDtlNo());
 			if (index >= 0) {
+				// 마지막 취소 여부 설정
+				if (delvFeeCdList.contains(order.getDelvFeeCd())) {
+					order.setLastCanYn("N");
+				} else {
+					order.setLastCanYn("Y");
+				}
+
+				// 변경 수량 설정
 				order.setOrdCanChgQty(cnclRtnReqQtyArr[index]);
-				order.setAllCanYn(allCanYn);
+
 				cnclReqList.add(order);
 			}
 		}
 		
-		
-		result.setString("allCanYn", allCanYnBeforePayment);
-		result.set("cnclReqList", cnclReqList);
+		result.setString("allCanYn", allCanYn);									// 전체 취소 여부
+		result.setString("allCanYnBeforePayment", allCanYnBeforePayment);		// 무통장입금전 전체 취소 여부
+		result.set("cnclReqList", cnclReqList);									// 취소신청목록
 
 		return result;
 	}
@@ -329,6 +348,7 @@ public class TsfOrderChangeService {
 	public GagaMap getCreCancelDetailInfo(OrderChange orderChange) {
 		GagaMap map = new GagaMap();
 		Collection<OrderChange> result = new ArrayList<>();
+		String refundYn = "N";
 
 		for (OrderChange tmpOrderChange : orderChangeDao.getCreCancelDetailInfo(orderChange)) {
 			// 세트상품 옵션별 배열로 담기
@@ -345,6 +365,12 @@ public class TsfOrderChangeService {
 				tmpOrderChange.setOptCd2Arr(arr4);
 			}
 
+			// 취소 전표 확인 용 환불 여부 설정
+			String chgStat = tmpOrderChange.getChgStat();
+			if ("N".equals(refundYn) && (TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value().equals(chgStat) || TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value().equals(chgStat))) {
+				refundYn = "Y";
+			}
+
 			result.add(tmpOrderChange);
 		}
 
@@ -353,6 +379,7 @@ public class TsfOrderChangeService {
 			oneData = result.iterator().next();
 		}
 
+		map.set("refundYn", refundYn);
 		map.set("oneData", oneData);
 		map.set("cancelDetailList", result);
 
@@ -370,6 +397,7 @@ public class TsfOrderChangeService {
 	public GagaMap getCreReturnDetailInfo(OrderChange orderChange) {
 		GagaMap map = new GagaMap();
 		Collection<OrderChange> result = new ArrayList<>();
+		String refundYn = "N";
 
 		for (OrderChange tmpOrderChange : orderChangeDao.getCreReturnDetailInfo(orderChange)) {
 			// 세트상품 옵션별 배열로 담기
@@ -386,6 +414,12 @@ public class TsfOrderChangeService {
 				tmpOrderChange.setOptCd2Arr(arr4);
 			}
 
+			// 취소 전표 확인 용 환불 여부 설정
+			String chgStat = tmpOrderChange.getChgStat();
+			if ("N".equals(refundYn) && TscConstants.OrderChangeStat.RETURN_COMPLETE.value().equals(chgStat)) {
+				refundYn = "Y";
+			}
+
 			result.add(tmpOrderChange);
 		}
 
@@ -394,6 +428,7 @@ public class TsfOrderChangeService {
 			oneData = result.iterator().next();
 		}
 
+		map.set("refundYn", refundYn);
 		map.set("oneData", oneData);
 		map.set("returnDetailList", result);
 

+ 2 - 2
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -22,7 +22,6 @@ import com.style24.front.biz.dao.TsfOrderDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Coupon;
-import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.KakaoPay;
 import com.style24.persistence.domain.NaverPay;
 import com.style24.persistence.domain.Order;
@@ -333,7 +332,8 @@ public class TsfOrderService {
 			// TB_PAYMENT 등록. 실패시 PG 환불.
 			if(coreOrderDao.insertPayment(result) < 1) {
 				if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
-					coreKcpService.kcpPayRollBack(result, request);
+					result.setIpAddress(request.getRemoteAddr());
+					coreKcpService.kcpPayRollBack(result);
 				} else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
 					coreKakaoPayService.kakaoPayRollBack(param);
 				} else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {

+ 17 - 20
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -17,6 +17,9 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
+import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscKakaoPayService;
@@ -58,10 +61,6 @@ import com.style24.persistence.domain.WishList;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.rest.server.GagaResponse;
-import com.gagaframework.web.rest.server.GagaResponseStatus;
-
 /**
  * 마이페이지 Controller
  * 
@@ -735,40 +734,38 @@ public class TsfMypageController extends TsfBaseController {
 		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(orderChange);
 		List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
 		String allCanYn = refundPreInfo.getString("allCanYn");
+		String allCanYnBeforePayment = refundPreInfo.getString("allCanYnBeforePayment");
 
-		// 2. 환불금액계산
+		// 3. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
 		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
 
-		// 무통장입금전 전체취소 여부
-
-		// 3. 주문변경 기본정보 설정
+		// 4. 주문변경 기본정보 설정
 		result.set("ordNo", orderChange.getOrdNo());				// 주문번호
 		result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
-		result.set("chgReason", orderChange.getChgReason());			// 변경사유
+		result.set("chgReason", orderChange.getChgReason());		// 변경사유
 		result.set("chgMemo", orderChange.getChgMemo());			// 변경메모
 
-		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
-		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
+		result.set("accountNo", orderChange.getAccountNo());		// 환불계좌번호
+		result.set("accountNm", orderChange.getAccountNm());		// 환불계좌예금주명
 		result.set("bankCd", orderChange.getBankCd());				// 환불계좌은행코드
 
-		result.set("allCanYn", allCanYn);							// 무통장입금전 전체취소 여부
-		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
+		result.set("allCanYnBeforePayment", allCanYnBeforePayment);	// 무통장입금전 전체취소 여부
+		result.set("isCustomer", orderChange.getIsCustomer());		// 변경사유 (고객, 회사)
 
-		// 4. 주문변경 회수지정보 추가
-		result.set("chgerNm", orderChange.getChgerNm());			// 변경자명
-		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
-		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
-		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
+		// 5. 주문변경 회수지정보 추가
+		// result.set("chgerNm", orderChange.getChgerNm());			// 변경자명
+		// result.set("chgerEmail", orderChange.getChgerEmail());		// 변경자이메일주소
+		// result.set("chgerPhnno", orderChange.getChgerPhnno());		// 변경자핸드폰번호
+		// result.set("chgerTelno", orderChange.getChgerTelno());		// 변경자전화번호
 
 		result.set("reqGbn", orderChange.getReqGbn());				// 신청구분
 
-		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
+		// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
 		coreOrderChangeService.cnclComplete(result, custNo);
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 		result.set("message", message.getMessage("CANCEL_0001"));
-		// result.set("message", message.getMessage("SUCC_0004"));
 
 		return result;
 	}

+ 9 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -799,7 +799,6 @@
 		     , Z.RF_DELIVERY_FEE
 		     , Z.RF_REAL_CNCL_AMT
 		     , Z.PG_GB
-		     , Z.PAY_STAT
 		     , Z.PAY_MEANS
 		     , Z.PAY_MEANS_NM
 		  FROM (SELECT OC.ORD_CHG_SQ
@@ -852,7 +851,6 @@
 		             , R.RF_DELIVERY_FEE
 		             , R.RF_REAL_CNCL_AMT
 		             , P.PG_GB
-		             , P.PAY_STAT
 		             , P.PAY_MEANS
 		             , FN_GET_CODE_NM('G014', P.PAY_MEANS)                              AS PAY_MEANS_NM
 		          FROM TB_ORDER_CHANGE OC
@@ -905,7 +903,7 @@
 				, Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 				, Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
 				, Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
-				, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_STAT, Z.PAY_MEANS, Z.PAY_MEANS_NM
+				, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_MEANS, Z.PAY_MEANS_NM
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
 
@@ -960,7 +958,6 @@
 		     , Z.RF_DELIVERY_FEE
 		     , Z.RF_REAL_CNCL_AMT
 		     , Z.PG_GB
-		     , Z.PAY_STAT
 		     , Z.PAY_MEANS
 		     , Z.PAY_MEANS_NM
 		     , Z.WD_GB
@@ -1022,7 +1019,6 @@
 		             , R.RF_DELIVERY_FEE
 		             , R.RF_REAL_CNCL_AMT
 		             , P.PG_GB
-		             , P.PAY_STAT
 		             , P.PAY_MEANS
 		             , FN_GET_CODE_NM('G014', P.PAY_MEANS)                              AS PAY_MEANS_NM
 		             , OC.WD_GB
@@ -1086,7 +1082,7 @@
 		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
 		        , Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
-		        , Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_STAT, Z.PAY_MEANS, Z.PAY_MEANS_NM, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
+		        , Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_MEANS, Z.PAY_MEANS_NM, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
 		        , Z.CHGER_DTL_ADDR, Z.CHGER_RTN_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
@@ -1144,6 +1140,7 @@
 		     , Z.RECIP_BASE_ADDR
 		     , Z.RECIP_DTL_ADDR
 		     , Z.DELV_MEMO
+		     , Z.PG_TID
 		  FROM (SELECT OC.ORD_CHG_SQ
 		             , OC.CHG_GB
 		             , OCD.CHG_QTY
@@ -1198,6 +1195,7 @@
 		             , DA.RECIP_BASE_ADDR
 		             , DA.RECIP_DTL_ADDR
 		             , DA.DELV_MEMO
+		             , P.PG_TID
 		          FROM TB_ORDER_CHANGE OC
 		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
 		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
@@ -1228,6 +1226,10 @@
 		          LEFT OUTER JOIN TB_COLOR C
 		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
 		           AND C.USE_YN = 'Y'
+		          LEFT OUTER JOIN TB_PAYMENT P
+		            ON P.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		           AND P.PAY_GB = 'D'
+		           AND P.PAY_STAT = 'G016_30'
 		         WHERE OCD.DEL_YN = 'N'
 		           AND O.DISP_YN = 'Y'
 		<choose>
@@ -1248,7 +1250,7 @@
 		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
 		        , Z.CHGER_DTL_ADDR, Z.CHG_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM, Z.DELV_ADDR_SQ, Z.RECIP_NM, Z.RECIP_PHNNO
-		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO
+		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO, Z.PG_TID
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
 	

+ 2 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html

@@ -305,6 +305,8 @@
 		data.bankCd = bankCd;
 		data.isCustomer = 'Y';
 		data.reqGbn = 'cnclComplete';
+		data.pgTid = paymentInfo.pgTid;
+		data.payAmt = paymentInfo.payAmt;
 		data.ordDtlNoArr = ordDtlNoArr;
 		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 

+ 3 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html

@@ -179,7 +179,7 @@
 											</div>
 											<div th:if="${oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
 												<dt class="sr-only">영수증 확인</dt>
-												<dd><button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
+												<dd><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${oneData.ordChgSq}, refundYn=${refundYn}" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
 											</div>
 										</dl>
 									</td>
@@ -205,6 +205,8 @@
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	/*<![CDATA[*/
+	let oneData = [[${oneData}]];
+
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
 		fnSetMypageLnbList(2);

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html

@@ -239,7 +239,7 @@
 												<dd th:if="${oneData.pgGb == 'KAKAO'}">카카오페이</dd>
 												<dd th:if="${oneData.pgGb == 'PAYCO'}">PAYCO</dd>
 											</div>
-											<div th:if="${oneData.pgGb == 'KCP' and oneData.payStat == 'G685_60' and oneData.payMeans == 'G014_30'}">
+											<div th:if="${refundYn == 'Y' and oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
 												<dt class="sr-only">영수증 확인</dt>
 												<dd><button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
 											</div>

+ 17 - 5
src/main/webapp/biz/mypage.js

@@ -269,11 +269,6 @@ var fnChangeDeliveryMemo = function(param) {
 
 // 신용카드 전표 및 현금영수증 버튼 클릭 이벤트
 var fnReceipt = function(param) {
-	// TODO
-	// 전표 링크 팝업 처리
-	// param == 'card'  신용카드 전표
-	// param == 'cash'  현금영수증 전표
-	// param == 'cancel' 취소전표
 	let receiptWin = kcpReceiptUrl;
 	let option = '';
 	if (param == 'card') {
@@ -294,6 +289,23 @@ var fnReceipt = function(param) {
 		
 		// 팝업 크기 설정
 		option = 'width=370, height=625';
+	} else if (param == 'cancel') {
+		if (param.refunYn == 'Y') {
+			// TODO
+			// 취소전표 확인 처리
+		} else {
+			mcxDialog.alert('아직 전표생성이 되지 않았습니다.');
+			return false;
+		}
+	} else if (param == 'delivery') {
+		// URL 설정
+		receiptWin += '?cmd=card_bill';
+		receiptWin += '&tno=' + oneData.pgTid;
+		receiptWin += '&order_no=' + oneData.ordNo;
+		receiptWin += '&trade_mony=' + oneData.addPayCost;
+		
+		// 팝업 크기 설정
+		option = 'width=455, height=815';
 	}
 
 	// 팝업 생성