Explorar o código

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.core.git into develop

gagamel %!s(int64=5) %!d(string=hai) anos
pai
achega
9ab2f86fbb

+ 21 - 4
src/main/java/com/style24/core/biz/dao/TscOrderChangeDao.java

@@ -730,8 +730,25 @@ public interface TscOrderChangeDao {
 	 * @author moon
 	 * @since 2021. 06. 03
 	 */
-	int updateWithdrawFee(OrderChange orderChange);		
-	
-	
-	
+	int updateWithdrawFee(OrderChange orderChange);
+
+	/**
+	 * 취소 알림톡 정보 조회
+	 * 
+	 * @param Integer
+	 * @return OrderChange
+	 * @author card007
+	 * @since 2021. 06. 08
+	 */
+	OrderChange getKakaoOrderCancelInfo(Integer ordChgSq);
+
+	/**
+	 * 반품 알림톡 정보 조회
+	 *
+	 * @param Integer
+	 * @return OrderChange
+	 * @author card007
+	 * @since 2021. 06. 08
+	 */
+	OrderChange getKakaoOrderReturnInfo(Integer ordChgSq);
 }

+ 129 - 3
src/main/java/com/style24/core/biz/service/TscKakaotalkService.java

@@ -4,8 +4,6 @@ import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-import com.style24.core.biz.thirdparty.NetpathyMailSender;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
@@ -672,6 +670,50 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
+
+	/**
+	 * 배송출발
+	 * @param order - 주문정보
+	 * @return void
+	 * @throws Exception - exception
+	 * @author xodud1202
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendDeliveryStart(Order order, Integer senderNo) throws Exception {
+		SsgDirectMessage dm = new SsgDirectMessage();
+		dm.setFuserid(String.valueOf(senderNo)); // 발송자NO
+		dm.setFdestine(order.getOrdPhnno());
+		dm.setFkkoresendtype("LMS");
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setString("siteNm"			, siteNm);
+		replaceInfo.setString("ordNm"			, order.getOrdNm());
+		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
+		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
+		replaceInfo.setString("goodsCnt"		, order.getGoodsCnt());
+
+		// 테스트중
+		if ("전석훈".equals(order.getOrdNm()) || "이태영".equals(order.getOrdNm()) || "김지철".equals(order.getOrdNm()) || "신주승".equals(order.getOrdNm())) {
+			kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GOODS_SEND.value(), dm, replaceInfo);
+		}
+
+		try {
+			CustContactHst custContactHst = new CustContactHst();
+			// 고객접촉이력 정보
+			custContactHst.setContactType(TscConstants.ContactType.BANK_DEPOSIT_INFO.value());
+			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value());
+			custContactHst.setContactContents("배송시작");
+			custContactHst.setReceiverNo(order.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setCustNo(order.getCustNo());
+			custContactHst.setRegNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
 	
 	/**
 	 * 선물받기 배송지입력
@@ -896,8 +938,16 @@ public class TscKakaotalkService {
 		dm.setFkkoresendtype("LMS");
 		dm.setButtonNm("주문 취소 확인");
 
+		// 취소금액 콤마 처리
 		DecimalFormat dc = new DecimalFormat("###,###,###,###");
 		String refundAmt = dc.format(orderChange.getRefundAmt());
+		
+		// 상품명 처리
+		String goodsNm = orderChange.getGoodsNm();
+		int goodsCnt = orderChange.getGoodsCnt();
+		if (goodsCnt > 0) {
+			goodsNm += " 외 " + goodsCnt + "건";
+		}
 
 		GagaMap replaceInfo = new GagaMap();
 		replaceInfo.setString("siteNm"				, siteNm);
@@ -908,7 +958,7 @@ public class TscKakaotalkService {
 		replaceInfo.setString("payMeansNm"			, orderChange.getPayMeansNm());
 		replaceInfo.setString("refundAmt"			, refundAmt);
 
-		if (orderChange.getIsCustomer()) {
+		if (orderChange.getCustNo() > 0) {
 			replaceInfo.setString("url", "/mypage/cre/list/form");
 		} else {
 			replaceInfo.setString("url", "/customer/noncust/order/confirm/form");
@@ -963,4 +1013,80 @@ public class TscKakaotalkService {
 			}
 		}
 	}
+
+	/**
+	 * 반품접수 알림톡
+	 *
+	 * @param OrderChange
+	 * @param senderNo
+	 * @author card007
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendOrderReturnRequest(OrderChange orderChange, Integer senderNo) throws Exception {
+		Integer ansSq;
+		String contactType;
+		String contactContents;
+		int addPayCost = orderChange.getAddPayCost();
+		String wdGb = orderChange.getWdGb();
+		String chgerBaseAddr = orderChange.getChgerBaseAddr() + " " + orderChange.getChgerDtlAddr();
+		
+		if ("D".equals(wdGb)) {
+			chgerBaseAddr = "직접배송";
+		}
+		
+		if (addPayCost > 0) {
+			ansSq = SsgKakaoSender.KakaoAnswerSq.RETURN_ADD_COST.value();
+			contactType = TscConstants.ContactType.RETURN_ADD_PAYMENT.value();
+			contactContents = "반품-추가배송비결제안내";
+		} else {
+			ansSq = SsgKakaoSender.KakaoAnswerSq.RETURN_REQUEST.value();
+			contactType = TscConstants.ContactType.RETURN_RECEIPT.value();
+			contactContents = "반품-반품접수완료";
+		}
+
+		// 상품명 처리
+		String goodsNm = orderChange.getGoodsNm();
+		int goodsCnt = orderChange.getGoodsCnt();
+		if (goodsCnt > 0) {
+			goodsNm += " 외 " + goodsCnt + "건";
+		}
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setString("siteNm"				, siteNm);
+		replaceInfo.setString("ordNm"				, orderChange.getOrdNm());
+		replaceInfo.setInt("ordNo"					, orderChange.getOrdNo());
+		replaceInfo.setString("goodsNm"				, goodsNm);
+		replaceInfo.setInt("goodsCnt"				, orderChange.getGoodsCnt());
+		replaceInfo.setString("chgerBaseAddr"		, chgerBaseAddr);
+		replaceInfo.setInt("addPayCost"				, addPayCost);
+
+		if (ansSq > 0) {
+			// 테스트중
+			if ("전석훈".equals(orderChange.getOrdNm()) || "이태영".equals(orderChange.getOrdNm()) || "김지철".equals(orderChange.getOrdNm()) || "신주승".equals(orderChange.getOrdNm())) {
+				SsgDirectMessage dm = new SsgDirectMessage();
+				dm.setFuserid(String.valueOf(senderNo));
+				dm.setFdestine(orderChange.getOrdPhnno());
+				dm.setFkkoresendtype("LMS");
+				dm.setButtonNm("반품 접수 확인");
+
+				kakaoSender.send(ansSq, dm, replaceInfo);
+			}
+
+			try {
+				// 고객접촉이력 정보
+				CustContactHst custContactHst = new CustContactHst();
+				custContactHst.setContactType(contactType);											// 접촉유형:반품-반품접수완료, 반품-추가배송비결제안내(공통코드G054)
+				custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value());		// 접촉방법:알림톡+문자(공통코드G055)
+				custContactHst.setContactContents(contactContents);
+				custContactHst.setReceiverNo(orderChange.getCustNo());
+				custContactHst.setSenderNo(senderNo);
+				custContactHst.setRegNo(senderNo);
+				coreCustomerService.createCustomerContactHistory(custContactHst);
+			} catch (Exception e) {
+				log.error("error", e);
+				// Do nothing
+			}
+		}
+	}
 }

+ 37 - 0
src/main/java/com/style24/core/biz/service/TscMailService.java

@@ -8,6 +8,8 @@ import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustContactHst;
 import com.style24.persistence.domain.CustCoupon;
 import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.Point;
+
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -426,7 +428,42 @@ public class TscMailService {
 			// Do nothing
 		}
 	}
+	
+	/**
+	 * 포인트 만료예정 안내(30일)
+	 *
+	 * @param customer - 고객 정보
+	 * @param point - 포인트정보
+	 * @param senderNo - 보낸
+	 * @author sowon
+	 * @since 2021. 06. 08
+	 */
+	@Transactional("shopTxnManager")
+	public void sendPointExpectNotify(Point point, Integer senderNo) {
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setInt("custNo", point.getCustNo());
+		replaceInfo.setString("custNm", point.getCustNm());
+		replaceInfo.setInt("rmPntAmt", point.getRmPntAmt());
+		replaceInfo.setString("expBeDt", point.getExpBeDt());
+		replaceInfo.setString("today", point.getToday());
 
+		netpathyMailSender.send(NetpathyMailSender.MailAnswerSq.POINT_EXTNC_EXPECT.value(), point.getEmail(), replaceInfo);
 
+		try {
+			// 고객접촉이력 정보
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.COUPON_EXTNC_EXPECT.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("포인트소멸예정");
+			custContactHst.setReceiverNo(point.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setRegNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
 
 }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 889 - 887
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java


+ 320 - 320
src/main/java/com/style24/core/biz/service/TscOrderRefundService.java

@@ -32,326 +32,326 @@ public class TscOrderRefundService {
 	 * @author jsh77b
 	 * @since 2021. 01. 19
 	 */
-	public GagaMap cnclRtnRefundAmt(List<Order> cnclRtnList) {
-		GagaMap mav = new GagaMap();
-				
-		// 1. 변수설정
-		int spanPayAmt				= 0; // 총 결제 금액
-		int spanSumRealOrdAmt		= 0; // 상품 실결제 금액
-		int spanSumDeliveryFee		= 0; // 배송금액
-		int spanRtnSumDeliveryFee 	= 0; // 반품배송금액
-		int spanExcSumDeliveryFee 	= 0; // 교환배송금액
-		int spanOrdAmt				= 0; // 주문 상품 금액
-		int spanCnclRtnAmt			= 0; // 취소 상품 금액
-		int spanTotPntDcAmt			= 0; // 취소 사용 포인트
-		int spanPntDcAmt			= 0; // 고객 포인트
-		int spanPrePntDcAmt			= 0; // 상품 선포인트
-		int spanCpnDcAmt			= 0; // 취소 사용 쿠폰금액
-		int spanCpn1DcAmt			= 0; // 즉시할인쿠폰
-		int spanGoodsCpnDcAmt		= 0; // 상품쿠폰
-		int spanCartCpnDcAmt		= 0; // 장바구니쿠폰
-		int spanDelvCpnDcAmt		= 0; // 배송비쿠폰
-		int spanRefundDelvCpnAmt	= 0; // 배송비쿠폰 환불 금액
-		int spanTmtbDcAmt			= 0; // 취소 다다익선 금액
-		int spanTmtb1DcAmt			= 0; // 수량할인
-		int spanTmtb2DcAmt			= 0; // 금액할인
-		int spanGfcdUseAmt			= 0; // 취소 고객 상품권 금액
-		int spanRealCnclRtnAmt		= 0; // 취소 상품 실결제 금액
-		int spanTotDeliveryFee		= 0; // 환불 배송 금액
-		int spanRefundAmt			= 0; // 환불 금액 합계
-		
-		int sumDeliveryFee			= 0; // 배송금액 (전체 취소시에 배송금액도 같이 환불)
-		
-		int cnclRtnAmt				= 0; // 기취소 처리 된 금액
-		
-		List<Order> cancelOrderRefundList 	= new ArrayList<>();	// 주문환불금액목록
-		List<Order> cancelDelvRefundList 	= new ArrayList<>();	// 주문환불배송금액목록
-		
-		Order orderObj	= new Order();
-		Order delvObj	= new Order();
-		int k 			= 0 ;
-		
-		// 2. 초기 배송정보 설정
-		delvObj.setOrdAmt(0);
-		delvObj.setCnclRtnAmt(0);
-		delvObj.setRealOrdAmt(0);
-		delvObj.setDelvFee(cnclRtnList.get(k).getDelvFee());
-		delvObj.setDelvCpnDcAmt(cnclRtnList.get(k).getDelvCpnDcAmt());
-		delvObj.setMinOrdAmt(cnclRtnList.get(k).getMinOrdAmt());
-		delvObj.setOrgDelvFee(cnclRtnList.get(k).getOrgDelvFee());
-		delvObj.setRtnDelvFee(cnclRtnList.get(k).getRtnDelvFee());
-		delvObj.setExcDelvFee(cnclRtnList.get(k).getExcDelvFee());
-		delvObj.setSupplyCompCd(cnclRtnList.get(k).getSupplyCompCd());
-		delvObj.setDelvFeeCd(cnclRtnList.get(k).getDelvFeeCd());
-		delvObj.setLastCanYn(cnclRtnList.get(k).getLastCanYn());
-		cancelDelvRefundList.add(delvObj);
-		
-		// 3. 취소신청수량 정보를 취소 환불 금액 계산
-		for (Order oneData : cnclRtnList) {
-			orderObj	= new Order();
-			
-			// 3.1 주문기본정보 설정
-			orderObj.setItemQty(oneData.getItemQty());
-			orderObj.setOrdQty(oneData.getOrdQty());
-			orderObj.setCnclRtnQty(oneData.getCnclRtnQty());
-			orderObj.setOrdReqChgQty(oneData.getOrdReqChgQty());
-			orderObj.setOrdCanChgQty(oneData.getOrdCanChgQty());
-			orderObj.setItemPrice(oneData.getItemPrice());
-			orderObj.setOptAddPrice	(oneData.getOptAddPrice());
-			orderObj.setOrdAmt(oneData.getOrdAmt());
-			
-			orderObj.setOrdNo(oneData.getOrdNo());
-			orderObj.setOrdDtlNo(oneData.getOrdDtlNo());
-			orderObj.setGoodsCd(oneData.getGoodsCd());
-			orderObj.setGoodsNm(oneData.getGoodsNm());
-			orderObj.setOrdDtlItemSq(oneData.getOrdDtlItemSq());
-			orderObj.setItemCd(oneData.getItemCd());
-			orderObj.setItemNm(oneData.getItemNm());
-			orderObj.setOptCd1(oneData.getOptCd1());
-			orderObj.setOptCd2(oneData.getOptCd2());
-			
-			// 3.2 주문취소수량으로 취소율 정보 설정
-			int ordQty 			= oneData.getOrdQty();
-			int itemQty 		= oneData.getItemQty();
-			int ordCanChgQty 	= oneData.getOrdCanChgQty();
-			int cnclRtnQty		= oneData.getCnclRtnQty();
-			
-			float _appQty		= (float)ordCanChgQty / (float)(ordQty - cnclRtnQty);
-			
-			// 3.3 주문취소금액 & 취소할인금액 계산
-			orderObj.setOrgCnclRtnAmt(oneData.getCnclRtnAmt());
-			orderObj.setCnclRtnAmt(((oneData.getItemPrice() + oneData.getOptAddPrice()) * itemQty) * ordCanChgQty);
-			orderObj.setCpn1DcAmt((int)(oneData.getCpn1DcAmt() 				* _appQty));
-			orderObj.setTmtb1DcAmt((int)(oneData.getTmtb1DcAmt() 			* _appQty));
-			orderObj.setTmtb2DcAmt((int)(oneData.getTmtb2DcAmt() 			* _appQty));
-			orderObj.setGoodsCpnDcAmt((int)(oneData.getGoodsCpnDcAmt() 		* _appQty));
-			orderObj.setCartCpnDcAmt((int)(oneData.getCartCpnDcAmt() 		* _appQty));
-			orderObj.setPntDcAmt((int)(oneData.getPntDcAmt() 				* _appQty));
-			orderObj.setPrePntDcAmt((int)(oneData.getPrePntDcAmt() 			* _appQty));
-			orderObj.setSavePntAmt((int)(oneData.getSavePntAmt() 			* _appQty));
-			orderObj.setGfcdUseAmt((int)(oneData.getGfcdUseAmt() 			* _appQty));
-			
-			// 3.4 취소할인합계금액 적용
-			int dcTotAmt		= 0;
-			dcTotAmt			+= orderObj.getTmtb1DcAmt();
-			dcTotAmt			+= orderObj.getTmtb2DcAmt();
-			dcTotAmt			+= orderObj.getGoodsCpnDcAmt();
-			dcTotAmt			+= orderObj.getCartCpnDcAmt();
-			dcTotAmt			+= orderObj.getPntDcAmt();
-			dcTotAmt			+= orderObj.getPrePntDcAmt();
-			dcTotAmt			+= orderObj.getCpn1DcAmt();
-			dcTotAmt			+= orderObj.getGfcdUseAmt();
-			
-			// 3.5 주문취소환불금액 계산
-			orderObj.setRealOrdAmt(orderObj.getCnclRtnAmt() - dcTotAmt);
-			
-			// 3.6 배송정보 관련 설정
-			orderObj.setOrdDtlNo(oneData.getOrdDtlNo());
-			orderObj.setGoodsTypeNm(oneData.getGoodsTypeNm());
-			orderObj.setDelvFee(oneData.getDelvFee());
-			orderObj.setDelvCpnDcAmt(oneData.getDelvCpnDcAmt());
-			orderObj.setSupplyCompCd(oneData.getSupplyCompCd());
-			orderObj.setDelvFeeCd(oneData.getDelvFeeCd());
-			orderObj.setMinOrdAmt(oneData.getMinOrdAmt());
-			orderObj.setOrgDelvFee(oneData.getOrgDelvFee());
-			orderObj.setRtnDelvFee(oneData.getRtnDelvFee());
-			orderObj.setExcDelvFee(oneData.getExcDelvFee());
-			
-			// 3.7 주문상세상태체크
-			orderObj.setOrdDtlStat(oneData.getOrdDtlStat());
-			orderObj.setOrdDtlStatNm(oneData.getOrdDtlStatNm());
-			orderObj.setLastCanYn(oneData.getLastCanYn()); // 전체취소 여부 (기존의 취소 또는 출고, 반품, 교환 의 경우에는 전체취소 불가능)
-			orderObj.setDelvYn(oneData.getDelvYn());
-			
-			cancelOrderRefundList.add(orderObj);
-			
-			// 3.8 배송비정책 조건으로 추가 배송비 금액 설정
-			if (cancelDelvRefundList.get(k).getDelvFeeCd().equals(orderObj.getDelvFeeCd())) {
-				// 공급업체 와 배송정책코드가 같으면 주문금액, 취소금액 SUM
-				cancelDelvRefundList.get(k).setOrdAmt(cancelDelvRefundList.get(k).getOrdAmt() + orderObj.getOrdAmt());
-				cancelDelvRefundList.get(k).setCnclRtnAmt(cancelDelvRefundList.get(k).getCnclRtnAmt() + orderObj.getCnclRtnAmt());
-				cancelDelvRefundList.get(k).setOrgCnclRtnAmt(cancelDelvRefundList.get(k).getOrgCnclRtnAmt() + orderObj.getOrgCnclRtnAmt());
-				cancelDelvRefundList.get(k).setRealOrdAmt(cancelDelvRefundList.get(k).getRealOrdAmt() + orderObj.getRealOrdAmt());
-				
-				// 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
-				cancelDelvRefundList.get(k).setPntDcAmt(cancelDelvRefundList.get(k).getPntDcAmt() + orderObj.getPntDcAmt());
-				cancelDelvRefundList.get(k).setPrePntDcAmt(cancelDelvRefundList.get(k).getPrePntDcAmt() + orderObj.getPrePntDcAmt());
-				cancelDelvRefundList.get(k).setCpn1DcAmt(cancelDelvRefundList.get(k).getCpn1DcAmt() + orderObj.getCpn1DcAmt());
-				cancelDelvRefundList.get(k).setGoodsCpnDcAmt(cancelDelvRefundList.get(k).getGoodsCpnDcAmt() + orderObj.getGoodsCpnDcAmt());
-				cancelDelvRefundList.get(k).setCartCpnDcAmt(cancelDelvRefundList.get(k).getCartCpnDcAmt() + orderObj.getCartCpnDcAmt());
-				cancelDelvRefundList.get(k).setTmtb1DcAmt(cancelDelvRefundList.get(k).getTmtb1DcAmt() + orderObj.getTmtb1DcAmt());
-				cancelDelvRefundList.get(k).setTmtb2DcAmt(cancelDelvRefundList.get(k).getTmtb2DcAmt() + orderObj.getTmtb2DcAmt());
-				cancelDelvRefundList.get(k).setGfcdAmt(cancelDelvRefundList.get(k).getGfcdAmt() + orderObj.getGfcdUseAmt());
-				
-				if ("Y".equals(orderObj.getDelvYn())) {
-					cancelDelvRefundList.get(k).setDelvYn(orderObj.getDelvYn());
-				}
-
-				if ("N".equals(orderObj.getLastCanYn())) {
-					cancelDelvRefundList.get(k).setLastCanYn("N");
-				}
-			} else {
-				k++;
-				
-				delvObj	= new Order();
-				
-				// 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
-				delvObj.setOrdAmt(orderObj.getOrdAmt());
-				delvObj.setCnclRtnAmt(orderObj.getCnclRtnAmt());
-				delvObj.setOrgCnclRtnAmt(orderObj.getOrgCnclRtnAmt());
-				delvObj.setRealOrdAmt(orderObj.getRealOrdAmt());
-				
-				// 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
-				delvObj.setPntDcAmt(orderObj.getPntDcAmt());
-				delvObj.setPrePntDcAmt(orderObj.getPrePntDcAmt());
-				delvObj.setCpn1DcAmt(orderObj.getCpn1DcAmt());
-				delvObj.setGoodsCpnDcAmt(orderObj.getGoodsCpnDcAmt());
-				delvObj.setCartCpnDcAmt(orderObj.getCartCpnDcAmt());
-				delvObj.setDelvCpnDcAmt(orderObj.getDelvCpnDcAmt());
-				delvObj.setTmtb1DcAmt(orderObj.getTmtb1DcAmt());
-				delvObj.setTmtb2DcAmt(orderObj.getTmtb2DcAmt());
-				delvObj.setGfcdAmt(orderObj.getGfcdUseAmt());
-				
-				delvObj.setDelvFee(orderObj.getDelvFee());
-				delvObj.setMinOrdAmt(orderObj.getMinOrdAmt());
-				delvObj.setOrgDelvFee(orderObj.getOrgDelvFee());
-				delvObj.setRtnDelvFee(orderObj.getRtnDelvFee());
-				delvObj.setExcDelvFee(orderObj.getExcDelvFee());
-				delvObj.setSupplyCompCd(orderObj.getSupplyCompCd());
-				delvObj.setDelvFeeCd(orderObj.getDelvFeeCd());
-				// delvObj.setAllCanYn(orderObj.getAllCanYn());
-				delvObj.setLastCanYn(orderObj.getLastCanYn());
-				delvObj.setDelvYn(orderObj.getDelvYn());
-				
-				cancelDelvRefundList.add(delvObj);
-			}
-			
-			// 3.9 FRONT 화면에서 사용 하는 변수 값 설정 & 계산
-			spanSumRealOrdAmt	+= oneData.getRealOrdAmt();
-			spanPntDcAmt		+= orderObj.getPntDcAmt();
-			spanPrePntDcAmt		+= orderObj.getPrePntDcAmt();
-			spanCpn1DcAmt		+= orderObj.getCpn1DcAmt();
-			spanGoodsCpnDcAmt	+= orderObj.getGoodsCpnDcAmt();
-			spanCartCpnDcAmt	+= orderObj.getCartCpnDcAmt();
-			spanTmtb1DcAmt		+= orderObj.getTmtb1DcAmt();
-			spanTmtb2DcAmt		+= orderObj.getTmtb2DcAmt();
-			spanGfcdUseAmt		+= orderObj.getGfcdUseAmt();
-			spanRealCnclRtnAmt	+= orderObj.getRealOrdAmt();
-		}
-		
-		// 4. 추가배송비 발생여부, 추가배송비, 배송비정책단위 전체취소 여부 체크
-		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
-			Order obj = cancelDelvRefundList.get(i);
-
-			// 주문금액 - 기취소 금액 - 취소요청금액
-			int leftOrdAmt = (obj.getOrdAmt() + obj.getCpn1DcAmt()) - obj.getOrgCnclRtnAmt() - obj.getCnclRtnAmt();
-
-			// 취소금액이 있을때 처리
-			if (obj.getCnclRtnAmt() > 0) {
-				// 4.1 무료배송비용 > (주문금액 - 취소금액)
-				if (obj.getMinOrdAmt() > leftOrdAmt) {
-					// 4.2 주문시 배송비가 존재하면 추가 배송비 없음
-					if (obj.getDelvFee() > 0) {
-						obj.setAddDelvFeeYn("N");
-						obj.setAddDelvFee(0);
-						
-						// 4.2.1 전체취소시 배송비 환불
-						if (leftOrdAmt == 0) {
-							// if ("Y".equals(obj.getAllCanYn())) {
-							if ("Y".equals(obj.getLastCanYn())) {
-								sumDeliveryFee += obj.getDelvFee(); // 전체취소시 배송금액도 같이 환불
-								spanRefundDelvCpnAmt += obj.getDelvCpnDcAmt(); // 전체취소시 배송비쿠폰 금액 제외하고 환불
-							}
-						}
-					} else {
-						// 4.3 주문금액 - 취소금액 == 0 이면 전체취소 이므로 배송비 발생 안함
-						// * 2020.12.28 
-						// * case : 배송정책 기준으로 1,2 상품 주문 후 1번 출고 후 1번반품 2번취소 할 경우 전체 취소 가 아니므로 배송비 부과 있을지 모르겠음 주문업체 단위로 배송되기 때문에 발생하지 않을것 같음
-						if (leftOrdAmt == 0) {
-							// 2021.03.29 delvFeeCd별 기존 출고 여부 확인
-							if("N".equals(obj.getDelvYn())) {
-								// 전체 취소 여부
-								// if ("N".equals(obj.getAllCanYn())) {
-								if ("N".equals(obj.getLastCanYn())) {
-									obj.setAddDelvFeeYn("Y");
-								} else {
-									obj.setAddDelvFeeYn("N");
-								}
-								// 취소는 주문 금액 - 취소 금액이 0이면 취소는 추가배송비 여부가 없음.
-								obj.setAddDelvFee(0);
-							} else {
-								// if ("N".equals(obj.getAllCanYn())) {
-								if ("N".equals(obj.getLastCanYn())) {
-									obj.setAddDelvFeeYn("Y");
-									obj.setAddDelvFee(obj.getOrgDelvFee());
-								} else {
-									// 4.4 전체취소의 경우에 해당
-									obj.setAddDelvFeeYn("N");
-									obj.setAddDelvFee(0);
-								}
-							}
-						} else {
-							// 4.5 추가배송비 발생 (취소신청화면에서 대부분 아래의 조건에 해당)
-							obj.setAddDelvFeeYn("Y");
-							obj.setAddDelvFee(obj.getOrgDelvFee());
-						}
-					}
-				} else {
-					obj.setAddDelvFeeYn("N");
-					obj.setAddDelvFee(0);
-				}
-			}
-
-			spanSumDeliveryFee		+= obj.getDelvFee();
-			spanDelvCpnDcAmt		+= obj.getDelvCpnDcAmt();
-			spanRtnSumDeliveryFee	+= obj.getRtnDelvFee();
-			spanExcSumDeliveryFee	+= obj.getExcDelvFee();
-			spanOrdAmt				+= obj.getOrdAmt();
-			spanCnclRtnAmt			+= obj.getCnclRtnAmt();
-			spanTotDeliveryFee  	+= obj.getAddDelvFee();
-
-			cancelDelvRefundList.set(i, obj);
-		}
-		// 5. FRONT 화면엣 필요한 금액 설정
-		// 2020.12.30 프론트에서 필요한 부분 작업 필여
-		// 관리자 화면에서 사용하는 환불 칼럼 정보
-		// 환불금액표시
-		// 2021.05.18 배송비쿠폰 사용금액 제외 후 환불금액 계산 처리
-		spanPayAmt 			= spanSumRealOrdAmt + spanSumDeliveryFee - spanDelvCpnDcAmt;
-		spanTotPntDcAmt 	= spanPntDcAmt + spanPrePntDcAmt;
-		spanCpnDcAmt 		= spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt + spanRefundDelvCpnAmt;
-		spanTmtbDcAmt 		= spanTmtb1DcAmt + spanTmtb2DcAmt;
-		spanRefundAmt 		= (spanRealCnclRtnAmt + sumDeliveryFee) - spanRefundDelvCpnAmt - spanTotDeliveryFee;
-
-		mav.set("cnclRtnList"			, cnclRtnList);				//주문 취소 신청 목록
-		mav.set("cancelOrderRefundList"	, cancelOrderRefundList);	//주문 환불 금액 목록
-		mav.set("cancelDelvRefundList"	, cancelDelvRefundList);	//주문 환불 배송 금액 목록
-		mav.set("spanPayAmt"			, spanPayAmt);				//총 결제 금액
-		mav.set("spanSumRealOrdAmt"		, spanSumRealOrdAmt);		//상품 실결제 금액
-		mav.set("spanSumDeliveryFee"	, spanSumDeliveryFee);		//배송금액
-		mav.set("spanOrdAmt"			, spanOrdAmt);				//주문 상품 금액
-		mav.set("spanCnclRtnAmt"		, spanCnclRtnAmt);			//취소 상품 금액
-		mav.set("spanTotPntDcAmt"		, spanTotPntDcAmt);			//취소 사용 포인트
-		mav.set("spanPntDcAmt"			, spanPntDcAmt);			//고객 포인트
-		mav.set("spanPrePntDcAmt"		, spanPrePntDcAmt);			//상품 선포인트
-		mav.set("spanCpnDcAmt"			, spanCpnDcAmt);			//취소 사용 쿠폰금액
-		mav.set("spanCpn1DcAmt"			, spanCpn1DcAmt);			//즉시할인쿠폰
-		mav.set("spanGoodsCpnDcAmt"		, spanGoodsCpnDcAmt);		//상품쿠폰
-		mav.set("spanCartCpnDcAmt"		, spanCartCpnDcAmt);		//장바구니쿠폰
-		mav.set("spanDelvCpnDcAmt"		, spanDelvCpnDcAmt);		//배송비쿠폰
-		mav.set("spanTmtbDcAmt"			, spanTmtbDcAmt);			//취소 다다익선 금액
-		mav.set("spanTmtb1DcAmt"		, spanTmtb1DcAmt);			//수량할인
-		mav.set("spanTmtb2DcAmt"		, spanTmtb2DcAmt);			//금액할인
-		mav.set("spanGfcdUseAmt"		, spanGfcdUseAmt);			//취소 고객 상품권 금액
-		mav.set("spanRealCnclRtnAmt"	, spanRealCnclRtnAmt);		//취소 상품 실결제 금액
-		mav.set("sumDeliveryFee"		, sumDeliveryFee);			//배송비 합계 금액
-		mav.set("spanTotDeliveryFee"	, spanTotDeliveryFee);		//추가 배송 금액
-		mav.set("spanTotRtnDelvFee"		, spanRtnSumDeliveryFee);	//추가 반품 배송 금액
-		mav.set("spanTotExcDelvFee"		, spanExcSumDeliveryFee);	//추가 교환 배송 금액
-		mav.set("spanRefundAmt"			, spanRefundAmt);			//환불 금액 합계
-		
-		return mav;
-	}
+	// public GagaMap cnclRtnRefundAmt(List<Order> cnclRtnList) {
+	// 	GagaMap mav = new GagaMap();
+	//			
+	// 	// 1. 변수설정
+	// 	int spanPayAmt				= 0; // 총 결제 금액
+	// 	int spanSumRealOrdAmt		= 0; // 상품 실결제 금액
+	// 	int spanSumDeliveryFee		= 0; // 배송금액
+	// 	int spanRtnSumDeliveryFee 	= 0; // 반품배송금액
+	// 	int spanExcSumDeliveryFee 	= 0; // 교환배송금액
+	// 	int spanOrdAmt				= 0; // 주문 상품 금액
+	// 	int spanCnclRtnAmt			= 0; // 취소 상품 금액
+	// 	int spanTotPntDcAmt			= 0; // 취소 사용 포인트
+	// 	int spanPntDcAmt			= 0; // 고객 포인트
+	// 	int spanPrePntDcAmt			= 0; // 상품 선포인트
+	// 	int spanCpnDcAmt			= 0; // 취소 사용 쿠폰금액
+	// 	int spanCpn1DcAmt			= 0; // 즉시할인쿠폰
+	// 	int spanGoodsCpnDcAmt		= 0; // 상품쿠폰
+	// 	int spanCartCpnDcAmt		= 0; // 장바구니쿠폰
+	// 	int spanDelvCpnDcAmt		= 0; // 배송비쿠폰
+	// 	int spanRefundDelvCpnAmt	= 0; // 배송비쿠폰 환불 금액
+	// 	int spanTmtbDcAmt			= 0; // 취소 다다익선 금액
+	// 	int spanTmtb1DcAmt			= 0; // 수량할인
+	// 	int spanTmtb2DcAmt			= 0; // 금액할인
+	// 	int spanGfcdUseAmt			= 0; // 취소 고객 상품권 금액
+	// 	int spanRealCnclRtnAmt		= 0; // 취소 상품 실결제 금액
+	// 	int spanTotDeliveryFee		= 0; // 환불 배송 금액
+	// 	int spanRefundAmt			= 0; // 환불 금액 합계
+	//	
+	// 	int sumDeliveryFee			= 0; // 배송금액 (전체 취소시에 배송금액도 같이 환불)
+	//	
+	// 	int cnclRtnAmt				= 0; // 기취소 처리 된 금액
+	//	
+	// 	List<Order> cancelOrderRefundList 	= new ArrayList<>();	// 주문환불금액목록
+	// 	List<Order> cancelDelvRefundList 	= new ArrayList<>();	// 주문환불배송금액목록
+	//	
+	// 	Order orderObj	= new Order();
+	// 	Order delvObj	= new Order();
+	// 	int k 			= 0 ;
+	//	
+	// 	// 2. 초기 배송정보 설정
+	// 	delvObj.setOrdAmt(0);
+	// 	delvObj.setCnclRtnAmt(0);
+	// 	delvObj.setRealOrdAmt(0);
+	// 	delvObj.setDelvFee(cnclRtnList.get(k).getDelvFee());
+	// 	delvObj.setDelvCpnDcAmt(cnclRtnList.get(k).getDelvCpnDcAmt());
+	// 	delvObj.setMinOrdAmt(cnclRtnList.get(k).getMinOrdAmt());
+	// 	delvObj.setOrgDelvFee(cnclRtnList.get(k).getOrgDelvFee());
+	// 	delvObj.setRtnDelvFee(cnclRtnList.get(k).getRtnDelvFee());
+	// 	delvObj.setExcDelvFee(cnclRtnList.get(k).getExcDelvFee());
+	// 	delvObj.setSupplyCompCd(cnclRtnList.get(k).getSupplyCompCd());
+	// 	delvObj.setDelvFeeCd(cnclRtnList.get(k).getDelvFeeCd());
+	// 	delvObj.setLastCanYn(cnclRtnList.get(k).getLastCanYn());
+	// 	cancelDelvRefundList.add(delvObj);
+	//	
+	// 	// 3. 취소신청수량 정보를 취소 환불 금액 계산
+	// 	for (Order oneData : cnclRtnList) {
+	// 		orderObj	= new Order();
+	//		
+	// 		// 3.1 주문기본정보 설정
+	// 		orderObj.setItemQty(oneData.getItemQty());
+	// 		orderObj.setOrdQty(oneData.getOrdQty());
+	// 		orderObj.setCnclRtnQty(oneData.getCnclRtnQty());
+	// 		orderObj.setOrdReqChgQty(oneData.getOrdReqChgQty());
+	// 		orderObj.setOrdCanChgQty(oneData.getOrdCanChgQty());
+	// 		orderObj.setItemPrice(oneData.getItemPrice());
+	// 		orderObj.setOptAddPrice	(oneData.getOptAddPrice());
+	// 		orderObj.setOrdAmt(oneData.getOrdAmt());
+	//		
+	// 		orderObj.setOrdNo(oneData.getOrdNo());
+	// 		orderObj.setOrdDtlNo(oneData.getOrdDtlNo());
+	// 		orderObj.setGoodsCd(oneData.getGoodsCd());
+	// 		orderObj.setGoodsNm(oneData.getGoodsNm());
+	// 		orderObj.setOrdDtlItemSq(oneData.getOrdDtlItemSq());
+	// 		orderObj.setItemCd(oneData.getItemCd());
+	// 		orderObj.setItemNm(oneData.getItemNm());
+	// 		orderObj.setOptCd1(oneData.getOptCd1());
+	// 		orderObj.setOptCd2(oneData.getOptCd2());
+	//		
+	// 		// 3.2 주문취소수량으로 취소율 정보 설정
+	// 		int ordQty 			= oneData.getOrdQty();
+	// 		int itemQty 		= oneData.getItemQty();
+	// 		int ordCanChgQty 	= oneData.getOrdCanChgQty();
+	// 		int cnclRtnQty		= oneData.getCnclRtnQty();
+	//		
+	// 		float _appQty		= (float)ordCanChgQty / (float)(ordQty - cnclRtnQty);
+	//		
+	// 		// 3.3 주문취소금액 & 취소할인금액 계산
+	// 		orderObj.setOrgCnclRtnAmt(oneData.getCnclRtnAmt());
+	// 		orderObj.setCnclRtnAmt(((oneData.getItemPrice() + oneData.getOptAddPrice()) * itemQty) * ordCanChgQty);
+	// 		orderObj.setCpn1DcAmt((int)(oneData.getCpn1DcAmt() 				* _appQty));
+	// 		orderObj.setTmtb1DcAmt((int)(oneData.getTmtb1DcAmt() 			* _appQty));
+	// 		orderObj.setTmtb2DcAmt((int)(oneData.getTmtb2DcAmt() 			* _appQty));
+	// 		orderObj.setGoodsCpnDcAmt((int)(oneData.getGoodsCpnDcAmt() 		* _appQty));
+	// 		orderObj.setCartCpnDcAmt((int)(oneData.getCartCpnDcAmt() 		* _appQty));
+	// 		orderObj.setPntDcAmt((int)(oneData.getPntDcAmt() 				* _appQty));
+	// 		orderObj.setPrePntDcAmt((int)(oneData.getPrePntDcAmt() 			* _appQty));
+	// 		orderObj.setSavePntAmt((int)(oneData.getSavePntAmt() 			* _appQty));
+	// 		orderObj.setGfcdUseAmt((int)(oneData.getGfcdUseAmt() 			* _appQty));
+	//		
+	// 		// 3.4 취소할인합계금액 적용
+	// 		int dcTotAmt		= 0;
+	// 		dcTotAmt			+= orderObj.getTmtb1DcAmt();
+	// 		dcTotAmt			+= orderObj.getTmtb2DcAmt();
+	// 		dcTotAmt			+= orderObj.getGoodsCpnDcAmt();
+	// 		dcTotAmt			+= orderObj.getCartCpnDcAmt();
+	// 		dcTotAmt			+= orderObj.getPntDcAmt();
+	// 		dcTotAmt			+= orderObj.getPrePntDcAmt();
+	// 		dcTotAmt			+= orderObj.getCpn1DcAmt();
+	// 		dcTotAmt			+= orderObj.getGfcdUseAmt();
+	//		
+	// 		// 3.5 주문취소환불금액 계산
+	// 		orderObj.setRealOrdAmt(orderObj.getCnclRtnAmt() - dcTotAmt);
+	//		
+	// 		// 3.6 배송정보 관련 설정
+	// 		orderObj.setOrdDtlNo(oneData.getOrdDtlNo());
+	// 		orderObj.setGoodsTypeNm(oneData.getGoodsTypeNm());
+	// 		orderObj.setDelvFee(oneData.getDelvFee());
+	// 		orderObj.setDelvCpnDcAmt(oneData.getDelvCpnDcAmt());
+	// 		orderObj.setSupplyCompCd(oneData.getSupplyCompCd());
+	// 		orderObj.setDelvFeeCd(oneData.getDelvFeeCd());
+	// 		orderObj.setMinOrdAmt(oneData.getMinOrdAmt());
+	// 		orderObj.setOrgDelvFee(oneData.getOrgDelvFee());
+	// 		orderObj.setRtnDelvFee(oneData.getRtnDelvFee());
+	// 		orderObj.setExcDelvFee(oneData.getExcDelvFee());
+	//		
+	// 		// 3.7 주문상세상태체크
+	// 		orderObj.setOrdDtlStat(oneData.getOrdDtlStat());
+	// 		orderObj.setOrdDtlStatNm(oneData.getOrdDtlStatNm());
+	// 		orderObj.setLastCanYn(oneData.getLastCanYn()); // 전체취소 여부 (기존의 취소 또는 출고, 반품, 교환 의 경우에는 전체취소 불가능)
+	// 		orderObj.setDelvYn(oneData.getDelvYn());
+	//		
+	// 		cancelOrderRefundList.add(orderObj);
+	//		
+	// 		// 3.8 배송비정책 조건으로 추가 배송비 금액 설정
+	// 		if (cancelDelvRefundList.get(k).getDelvFeeCd().equals(orderObj.getDelvFeeCd())) {
+	// 			// 공급업체 와 배송정책코드가 같으면 주문금액, 취소금액 SUM
+	// 			cancelDelvRefundList.get(k).setOrdAmt(cancelDelvRefundList.get(k).getOrdAmt() + orderObj.getOrdAmt());
+	// 			cancelDelvRefundList.get(k).setCnclRtnAmt(cancelDelvRefundList.get(k).getCnclRtnAmt() + orderObj.getCnclRtnAmt());
+	// 			cancelDelvRefundList.get(k).setOrgCnclRtnAmt(cancelDelvRefundList.get(k).getOrgCnclRtnAmt() + orderObj.getOrgCnclRtnAmt());
+	// 			cancelDelvRefundList.get(k).setRealOrdAmt(cancelDelvRefundList.get(k).getRealOrdAmt() + orderObj.getRealOrdAmt());
+	//			
+	// 			// 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
+	// 			cancelDelvRefundList.get(k).setPntDcAmt(cancelDelvRefundList.get(k).getPntDcAmt() + orderObj.getPntDcAmt());
+	// 			cancelDelvRefundList.get(k).setPrePntDcAmt(cancelDelvRefundList.get(k).getPrePntDcAmt() + orderObj.getPrePntDcAmt());
+	// 			cancelDelvRefundList.get(k).setCpn1DcAmt(cancelDelvRefundList.get(k).getCpn1DcAmt() + orderObj.getCpn1DcAmt());
+	// 			cancelDelvRefundList.get(k).setGoodsCpnDcAmt(cancelDelvRefundList.get(k).getGoodsCpnDcAmt() + orderObj.getGoodsCpnDcAmt());
+	// 			cancelDelvRefundList.get(k).setCartCpnDcAmt(cancelDelvRefundList.get(k).getCartCpnDcAmt() + orderObj.getCartCpnDcAmt());
+	// 			cancelDelvRefundList.get(k).setTmtb1DcAmt(cancelDelvRefundList.get(k).getTmtb1DcAmt() + orderObj.getTmtb1DcAmt());
+	// 			cancelDelvRefundList.get(k).setTmtb2DcAmt(cancelDelvRefundList.get(k).getTmtb2DcAmt() + orderObj.getTmtb2DcAmt());
+	// 			cancelDelvRefundList.get(k).setGfcdAmt(cancelDelvRefundList.get(k).getGfcdAmt() + orderObj.getGfcdUseAmt());
+	//			
+	// 			if ("Y".equals(orderObj.getDelvYn())) {
+	// 				cancelDelvRefundList.get(k).setDelvYn(orderObj.getDelvYn());
+	// 			}
+	//
+	// 			if ("N".equals(orderObj.getLastCanYn())) {
+	// 				cancelDelvRefundList.get(k).setLastCanYn("N");
+	// 			}
+	// 		} else {
+	// 			k++;
+	//			
+	// 			delvObj	= new Order();
+	//			
+	// 			// 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
+	// 			delvObj.setOrdAmt(orderObj.getOrdAmt());
+	// 			delvObj.setCnclRtnAmt(orderObj.getCnclRtnAmt());
+	// 			delvObj.setOrgCnclRtnAmt(orderObj.getOrgCnclRtnAmt());
+	// 			delvObj.setRealOrdAmt(orderObj.getRealOrdAmt());
+	//			
+	// 			// 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
+	// 			delvObj.setPntDcAmt(orderObj.getPntDcAmt());
+	// 			delvObj.setPrePntDcAmt(orderObj.getPrePntDcAmt());
+	// 			delvObj.setCpn1DcAmt(orderObj.getCpn1DcAmt());
+	// 			delvObj.setGoodsCpnDcAmt(orderObj.getGoodsCpnDcAmt());
+	// 			delvObj.setCartCpnDcAmt(orderObj.getCartCpnDcAmt());
+	// 			delvObj.setDelvCpnDcAmt(orderObj.getDelvCpnDcAmt());
+	// 			delvObj.setTmtb1DcAmt(orderObj.getTmtb1DcAmt());
+	// 			delvObj.setTmtb2DcAmt(orderObj.getTmtb2DcAmt());
+	// 			delvObj.setGfcdAmt(orderObj.getGfcdUseAmt());
+	//			
+	// 			delvObj.setDelvFee(orderObj.getDelvFee());
+	// 			delvObj.setMinOrdAmt(orderObj.getMinOrdAmt());
+	// 			delvObj.setOrgDelvFee(orderObj.getOrgDelvFee());
+	// 			delvObj.setRtnDelvFee(orderObj.getRtnDelvFee());
+	// 			delvObj.setExcDelvFee(orderObj.getExcDelvFee());
+	// 			delvObj.setSupplyCompCd(orderObj.getSupplyCompCd());
+	// 			delvObj.setDelvFeeCd(orderObj.getDelvFeeCd());
+	// 			// delvObj.setAllCanYn(orderObj.getAllCanYn());
+	// 			delvObj.setLastCanYn(orderObj.getLastCanYn());
+	// 			delvObj.setDelvYn(orderObj.getDelvYn());
+	//			
+	// 			cancelDelvRefundList.add(delvObj);
+	// 		}
+	//		
+	// 		// 3.9 FRONT 화면에서 사용 하는 변수 값 설정 & 계산
+	// 		spanSumRealOrdAmt	+= oneData.getRealOrdAmt();
+	// 		spanPntDcAmt		+= orderObj.getPntDcAmt();
+	// 		spanPrePntDcAmt		+= orderObj.getPrePntDcAmt();
+	// 		spanCpn1DcAmt		+= orderObj.getCpn1DcAmt();
+	// 		spanGoodsCpnDcAmt	+= orderObj.getGoodsCpnDcAmt();
+	// 		spanCartCpnDcAmt	+= orderObj.getCartCpnDcAmt();
+	// 		spanTmtb1DcAmt		+= orderObj.getTmtb1DcAmt();
+	// 		spanTmtb2DcAmt		+= orderObj.getTmtb2DcAmt();
+	// 		spanGfcdUseAmt		+= orderObj.getGfcdUseAmt();
+	// 		spanRealCnclRtnAmt	+= orderObj.getRealOrdAmt();
+	// 	}
+	//	
+	// 	// 4. 추가배송비 발생여부, 추가배송비, 배송비정책단위 전체취소 여부 체크
+	// 	for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
+	// 		Order obj = cancelDelvRefundList.get(i);
+	//
+	// 		// 주문금액 - 기취소 금액 - 취소요청금액
+	// 		int leftOrdAmt = (obj.getOrdAmt() + obj.getCpn1DcAmt()) - obj.getOrgCnclRtnAmt() - obj.getCnclRtnAmt();
+	//
+	// 		// 취소금액이 있을때 처리
+	// 		if (obj.getCnclRtnAmt() > 0) {
+	// 			// 4.1 무료배송비용 > (주문금액 - 취소금액)
+	// 			if (obj.getMinOrdAmt() > leftOrdAmt) {
+	// 				// 4.2 주문시 배송비가 존재하면 추가 배송비 없음
+	// 				if (obj.getDelvFee() > 0) {
+	// 					obj.setAddDelvFeeYn("N");
+	// 					obj.setAddDelvFee(0);
+	//					
+	// 					// 4.2.1 전체취소시 배송비 환불
+	// 					if (leftOrdAmt == 0) {
+	// 						// if ("Y".equals(obj.getAllCanYn())) {
+	// 						if ("Y".equals(obj.getLastCanYn())) {
+	// 							sumDeliveryFee += obj.getDelvFee(); // 전체취소시 배송금액도 같이 환불
+	// 							spanRefundDelvCpnAmt += obj.getDelvCpnDcAmt(); // 전체취소시 배송비쿠폰 금액 제외하고 환불
+	// 						}
+	// 					}
+	// 				} else {
+	// 					// 4.3 주문금액 - 취소금액 == 0 이면 전체취소 이므로 배송비 발생 안함
+	// 					// * 2020.12.28 
+	// 					// * case : 배송정책 기준으로 1,2 상품 주문 후 1번 출고 후 1번반품 2번취소 할 경우 전체 취소 가 아니므로 배송비 부과 있을지 모르겠음 주문업체 단위로 배송되기 때문에 발생하지 않을것 같음
+	// 					if (leftOrdAmt == 0) {
+	// 						// 2021.03.29 delvFeeCd별 기존 출고 여부 확인
+	// 						if("N".equals(obj.getDelvYn())) {
+	// 							// 전체 취소 여부
+	// 							// if ("N".equals(obj.getAllCanYn())) {
+	// 							if ("N".equals(obj.getLastCanYn())) {
+	// 								obj.setAddDelvFeeYn("Y");
+	// 							} else {
+	// 								obj.setAddDelvFeeYn("N");
+	// 							}
+	// 							// 취소는 주문 금액 - 취소 금액이 0이면 취소는 추가배송비 여부가 없음.
+	// 							obj.setAddDelvFee(0);
+	// 						} else {
+	// 							// if ("N".equals(obj.getAllCanYn())) {
+	// 							if ("N".equals(obj.getLastCanYn())) {
+	// 								obj.setAddDelvFeeYn("Y");
+	// 								obj.setAddDelvFee(obj.getOrgDelvFee());
+	// 							} else {
+	// 								// 4.4 전체취소의 경우에 해당
+	// 								obj.setAddDelvFeeYn("N");
+	// 								obj.setAddDelvFee(0);
+	// 							}
+	// 						}
+	// 					} else {
+	// 						// 4.5 추가배송비 발생 (취소신청화면에서 대부분 아래의 조건에 해당)
+	// 						obj.setAddDelvFeeYn("Y");
+	// 						obj.setAddDelvFee(obj.getOrgDelvFee());
+	// 					}
+	// 				}
+	// 			} else {
+	// 				obj.setAddDelvFeeYn("N");
+	// 				obj.setAddDelvFee(0);
+	// 			}
+	// 		}
+	//
+	// 		spanSumDeliveryFee		+= obj.getDelvFee();
+	// 		spanDelvCpnDcAmt		+= obj.getDelvCpnDcAmt();
+	// 		spanRtnSumDeliveryFee	+= obj.getRtnDelvFee();
+	// 		spanExcSumDeliveryFee	+= obj.getExcDelvFee();
+	// 		spanOrdAmt				+= obj.getOrdAmt();
+	// 		spanCnclRtnAmt			+= obj.getCnclRtnAmt();
+	// 		spanTotDeliveryFee  	+= obj.getAddDelvFee();
+	//
+	// 		cancelDelvRefundList.set(i, obj);
+	// 	}
+	// 	// 5. FRONT 화면엣 필요한 금액 설정
+	// 	// 2020.12.30 프론트에서 필요한 부분 작업 필여
+	// 	// 관리자 화면에서 사용하는 환불 칼럼 정보
+	// 	// 환불금액표시
+	// 	// 2021.05.18 배송비쿠폰 사용금액 제외 후 환불금액 계산 처리
+	// 	spanPayAmt 			= spanSumRealOrdAmt + spanSumDeliveryFee - spanDelvCpnDcAmt;
+	// 	spanTotPntDcAmt 	= spanPntDcAmt + spanPrePntDcAmt;
+	// 	spanCpnDcAmt 		= spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt + spanRefundDelvCpnAmt;
+	// 	spanTmtbDcAmt 		= spanTmtb1DcAmt + spanTmtb2DcAmt;
+	// 	spanRefundAmt 		= (spanRealCnclRtnAmt + sumDeliveryFee) - spanRefundDelvCpnAmt - spanTotDeliveryFee;
+	//
+	// 	mav.set("cnclRtnList"			, cnclRtnList);				//주문 취소 신청 목록
+	// 	mav.set("cancelOrderRefundList"	, cancelOrderRefundList);	//주문 환불 금액 목록
+	// 	mav.set("cancelDelvRefundList"	, cancelDelvRefundList);	//주문 환불 배송 금액 목록
+	// 	mav.set("spanPayAmt"			, spanPayAmt);				//총 결제 금액
+	// 	mav.set("spanSumRealOrdAmt"		, spanSumRealOrdAmt);		//상품 실결제 금액
+	// 	mav.set("spanSumDeliveryFee"	, spanSumDeliveryFee);		//배송금액
+	// 	mav.set("spanOrdAmt"			, spanOrdAmt);				//주문 상품 금액
+	// 	mav.set("spanCnclRtnAmt"		, spanCnclRtnAmt);			//취소 상품 금액
+	// 	mav.set("spanTotPntDcAmt"		, spanTotPntDcAmt);			//취소 사용 포인트
+	// 	mav.set("spanPntDcAmt"			, spanPntDcAmt);			//고객 포인트
+	// 	mav.set("spanPrePntDcAmt"		, spanPrePntDcAmt);			//상품 선포인트
+	// 	mav.set("spanCpnDcAmt"			, spanCpnDcAmt);			//취소 사용 쿠폰금액
+	// 	mav.set("spanCpn1DcAmt"			, spanCpn1DcAmt);			//즉시할인쿠폰
+	// 	mav.set("spanGoodsCpnDcAmt"		, spanGoodsCpnDcAmt);		//상품쿠폰
+	// 	mav.set("spanCartCpnDcAmt"		, spanCartCpnDcAmt);		//장바구니쿠폰
+	// 	mav.set("spanDelvCpnDcAmt"		, spanDelvCpnDcAmt);		//배송비쿠폰
+	// 	mav.set("spanTmtbDcAmt"			, spanTmtbDcAmt);			//취소 다다익선 금액
+	// 	mav.set("spanTmtb1DcAmt"		, spanTmtb1DcAmt);			//수량할인
+	// 	mav.set("spanTmtb2DcAmt"		, spanTmtb2DcAmt);			//금액할인
+	// 	mav.set("spanGfcdUseAmt"		, spanGfcdUseAmt);			//취소 고객 상품권 금액
+	// 	mav.set("spanRealCnclRtnAmt"	, spanRealCnclRtnAmt);		//취소 상품 실결제 금액
+	// 	mav.set("sumDeliveryFee"		, sumDeliveryFee);			//배송비 합계 금액
+	// 	mav.set("spanTotDeliveryFee"	, spanTotDeliveryFee);		//추가 배송 금액
+	// 	mav.set("spanTotRtnDelvFee"		, spanRtnSumDeliveryFee);	//추가 반품 배송 금액
+	// 	mav.set("spanTotExcDelvFee"		, spanExcSumDeliveryFee);	//추가 교환 배송 금액
+	// 	mav.set("spanRefundAmt"			, spanRefundAmt);			//환불 금액 합계
+	//	
+	// 	return mav;
+	// }
 	
 	/**
 	 * 취소,반품 환불금액 계산 (admin, front) (백업) (단품단위)

+ 45 - 9
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -2311,14 +2311,11 @@ public class TscOrderService {
 	@Transactional("shopTxnManager")
 	public void updateSellerDelvStartAndPartCancel(Collection<Order> params, int userNo) {
 		try {
-			/* TODO 조회 후 취소 ? 그냥 취소 ? 추후 결품 취소 로직 나오면 취소 진행
-			 * 주문번호별로 ordDtlNoArr[] 배열과 cnclRtnReqQtyArr[] 배열에 담고, 각 custNo 가져오고, 비회원이면 ordNm, orderNo
-			 * OrderChange 객체에 담아서 넘긴다.
-			 * 무통장입금의 경우 환불계좌가 없을 경우 취소 신청으로 세팅. > 만들어야하나 ?
-			 * 무통장입금 환불계좌가 있으면 넘기면됨. */
-
 			// 주문번호별 상세번호, 취소수량 및 주문정보 세팅
 			List<OrderChange> cancelDataList = new ArrayList<OrderChange>();
+			// 배송중 주문 목록 (알림톡 송부 위함)
+			List<Order> delvStartList = new ArrayList<Order>();
+
 			for(Order param : params) {
 				if(param.getCnclRtnQty() > 0) {
 					boolean chkOrd = true;
@@ -2363,7 +2360,7 @@ public class TscOrderService {
 					orderChangeService.cancelRequest(change);
 				} else {		// 무통장입금 주문 중 환불계좌정보 없을 경우 제외는 취소처리
 					// 취소완료
-					GagaMap cancelInfo = orderChangeService.orderCancelPreInfo(change, userNo);
+					GagaMap cancelInfo = orderChangeService.orderCancelPreInfoTemp(change, userNo);
 
 					// TODO 취소 완료 알림톡 발송 에정
 					//
@@ -2373,7 +2370,7 @@ public class TscOrderService {
 			// 결품 취소 후 수량이 남은 경우 배송중처리
 			for(Order param : params) {
 				if(param.getOrdQty() - param.getCnclRtnQty() > 0) {
-					// 주문 상세 (TB_ORDER_DETAIL) 배송중으로 변경
+					/*// 주문 상세 (TB_ORDER_DETAIL) 배송중으로 변경
 					param.setOrdDtlStat(TscConstants.OrderDetailStat.SHIPPING.value());
 					param.setRegNo(userNo);
 					param.setUpdNo(userNo);
@@ -2383,9 +2380,48 @@ public class TscOrderService {
 					// 주문 상세 송장번호 등록
 					scmDao.createOrderDetailInvoice(param);
 					// 주문 변경 이력 저장
-					orderDao.createOrderDetailHst(param);
+					orderDao.createOrderDetailHst(param);*/
+
+					boolean isOther = true;
+					for(Order delv : delvStartList) {
+						if(delv.getOrdNo().equals(param.getOrdNo())) {
+							delv.setGoodsCnt(String.valueOf(Integer.parseInt(delv.getGoodsCnt()) + 1));
+							isOther = false;
+						}
+					}
+
+					if(isOther) {
+						Order delv = new Order();
+						delv.setOrdNo(param.getOrdNo());
+						delv.setOrdNm(param.getOrdNm());
+						delv.setGoodsNm(param.getGoodsNm());
+						delv.setOrdPhnno(param.getOrdPhnno());
+						delv.setCustNo(param.getCustNo());
+						delv.setGoodsCnt("0");		// 첫 상품은 외 0건
+
+						delvStartList.add(delv);
+					}
 				}
 			}
+
+			try {
+				// 2021.06.08 알림톡전송 배송중 주문 알림톡 송부
+				for(Order kakaoSend : delvStartList) {
+					if (StringUtils.isNotBlank(kakaoSend.getOrdPhnno())) {
+						try {
+							log.info("CHECK KAKAO SEND :::: {}", kakaoSend.toString());
+							log.info("CHECK KAKAO SEND :::: {}", userNo);
+							kakaotalkService.sendDeliveryStart(kakaoSend, userNo);
+						} catch (Exception e) {
+							e.printStackTrace();
+							// Do nothing
+						}
+					}
+				}
+			} catch (Exception e) {
+				// 카카오 발송 에러시에는 그냥 진행되어야함
+				e.printStackTrace();
+			}
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw new IllegalArgumentException(e);

+ 2 - 0
src/main/java/com/style24/core/support/env/TscConstants.java

@@ -94,6 +94,8 @@ public class TscConstants {
 		RETURN_COMPLETED("G054_502"),			// 반품-반품회수완료
 		EXCHANGE_RECEIPT("G054_503"),			// 교환-교환접수완료
 		EXCHANGE_COMPLETED("G054_504"),			// 교환-교환회수완료
+		RETURN_ADD_PAYMENT("G054_506"),			// 반품-추가배송비결제안내
+		EXCHANGE_ADD_PAYMENT("G054_507"),		// 교환-추가배송비결제안내
 		GOODS_RESTOCK("G054_701");				// 재입고 알림
 
 

+ 6 - 0
src/main/java/com/style24/persistence/domain/Point.java

@@ -17,6 +17,7 @@ public class Point extends TscBaseDomain {
 	private Integer custPntSq;	// 고객포인트일련번호
 	private Integer custNo;		// 고객번호
 	private String custNm;		// 고객이름
+	private String email;		// 이메일
 	private String cellPhnno;	// 휴대전화번호(탈퇴 시 NULL로 처리)
 	private String expBeDt;		// 만료예정일시
 	private String expCmpDt;	// 만료완료일시
@@ -35,6 +36,7 @@ public class Point extends TscBaseDomain {
 	private String pntUploadStat;	// 포인트반영상태(공통코드G280)
 	private String pntUploadDt;		// 포인트반영일시
 	private int pntAmt;				// 포인트금액(+, - 금액으로 표시)
+	private String today;			// 현재
 
 	private int expirePntAmt;			// 소멸포인트
 	private int expectedPntAmt;			// 적립예정포인트
@@ -56,4 +58,8 @@ public class Point extends TscBaseDomain {
 		this.cellPhnno = CryptoUtils.decryptAES(this.cellPhnno);
 		return this.cellPhnno;
 	}
+	public String getEmail() {
+		this.email = CryptoUtils.decryptAES(this.email);
+		return this.email;
+	}
 }

+ 4 - 2
src/main/java/com/style24/persistence/mybatis/shop/TscCoupon.xml

@@ -1002,6 +1002,7 @@
         SELECT A.CPN_ID                                               /*쿠폰ID*/
         , A.CPN_NM                                               /*쿠폰명*/
         , A.CPN_DESC                                             /*쿠폰설명*/
+        , A.CPN_STAT
         , A.SITE_CD                                              /*사이트코드(공통코드G000)*/
         , A.CPN_TYPE                                             /*쿠폰유형(공통코드G230)*/
         , A.DC_WAY                                               /*할인방식(공통코드G240)*/
@@ -1009,8 +1010,8 @@
         , A.DC_MVAL                                              /*할인값(모바일). 할인방식이 금액이면 할인금액, 율이면 할인율*/
         , A.MAX_DC_AMT                                           /*최고할인값. 할인방식이 금액이면 최고할인금액, 율이면 최고할인율*/
         , A.PD_GB                                                /*기간/일수구분(P 기간, D 일수)*/
-        , DATE_FORMAT(A.AVAIL_STDT,'%Y%m%d%H%i%S') AS AVAIL_STDT /*유효시작일시(기간/일수구분 "P 기간"일 때 사용됨)*/
-        , DATE_FORMAT(A.AVAIL_EDDT,'%Y%m%d%H%i%S') AS AVAIL_EDDT /*유효종료일시(기간/일수구분 "P 기간"일 때 사용됨)*/
+        , A.AVAIL_STDT /*유효시작일시(기간/일수구분 "P 기간"일 때 사용됨)*/
+        , A.AVAIL_EDDT /*유효종료일시(기간/일수구분 "P 기간"일 때 사용됨)*/
         , A.AVAIL_DAYS                                           /*유효일수(기간/일수구분 "D 일수"일 때 사용됨)*/
         , A.CUST_PUB_LIMIT_QTY                                   /*고객당발행제한수량(0은 무제한)*/
         , A.TOT_PUB_LIMIT_QTY                                    /*총발행제한수량(0은 무제한)*/
@@ -1028,6 +1029,7 @@
         <if test="cpnType !=null and cpnType !=''">
             AND	   A.CPN_TYPE = #{cpnType}
         </if>
+        ORDER BY CPN_ID DESC
     </select>
 
     <!-- 랜덤쿠폰 지급 -->

+ 72 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -3757,6 +3757,78 @@ WHERE WD_INVOICE_NO  = #{wdInvoiceNo}
   AND ORD_CHG_SQ     = #{ordChgSq}
 	</update>
 		
+	<!-- 취소 알림톡 정보 조회 -->
+	<select id="getKakaoOrderCancelInfo" parameterType="int" resultType="OrderChange">
+		/* TscOrderChange.getKakaoOrderCancelInfo */
+		SELECT Z.*
+		  FROM (SELECT O.ORD_NO
+		             , OC.ORD_CHG_SQ
+		             , O.ORD_NM
+		             , O.ORD_PHNNO
+		             , O.MALL_GB
+		             , R.REFUND_AMT
+		             , G.GOODS_NM
+		             , P.PAY_MEANS
+		             , FN_GET_CODE_NM('G014', P.PAY_MEANS)                                    AS PAY_MEANS_NM
+		             , P.PG_GB
+		             , O.CUST_NO
+		             , COUNT(*) OVER (PARTITION BY OC.ORD_CHG_SQ) - 1 AS GOODS_CNT
+		             , ROW_NUMBER() OVER (PARTITION BY OC.ORD_CHG_SQ ORDER BY OCD.ORD_DTL_NO) AS RNUM
+		          FROM TB_ORDER_CHANGE OC
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		         INNER JOIN TB_ORDER O
+		            ON O.ORD_NO = OD.ORD_NO
+		         INNER JOIN TB_REFUND R
+		            ON OC.ORD_CHG_SQ = R.ORD_CHG_SQ
+		         INNER JOIN TB_PAYMENT P
+		            ON OC.ORD_CHG_SQ = P.ORD_CHG_SQ
+		           AND O.ORD_NO = P.ORD_NO
+		         INNER JOIN TB_GOODS G
+		            ON OD.GOODS_CD = G.GOODS_CD
+		         WHERE OC.ORD_CHG_SQ = #{ordChgSq}
+		           AND OC.CHG_GB IN ('G680_10', 'G680_20')
+		         GROUP BY O.ORD_NO, OC.ORD_CHG_SQ, OCD.ORD_DTL_NO, O.ORD_NM, O.ORD_PHNNO, O.MALL_GB, R.REFUND_AMT, G.GOODS_NM, P.PAY_MEANS
+		                , PAY_MEANS_NM, P.PG_GB, O.CUST_NO
+		        ) Z
+		 WHERE Z.RNUM = 1
+	</select>
+
+	<!-- 반품 알림톡 정보 조회 -->
+	<select id="getKakaoOrderReturnInfo" parameterType="int" resultType="OrderChange">
+		/* TscOrderChange.getKakaoOrderReturnInfo */
+		SELECT Z.*
+		  FROM (SELECT O.ORD_NO
+		             , OC.ORD_CHG_SQ
+		             , O.ORD_NM
+		             , O.ORD_PHNNO
+		             , O.MALL_GB
+		             , G.GOODS_NM
+		             , O.CUST_NO
+		             , OC.CHGER_BASE_ADDR
+		             , OC.CHGER_DTL_ADDR
+		             , OC.WD_GB
+		             , OC.ADD_PAY_COST
+		             , COUNT(*) OVER (PARTITION BY OC.ORD_CHG_SQ) - 1 AS GOODS_CNT
+		             , ROW_NUMBER() OVER (PARTITION BY OC.ORD_CHG_SQ ORDER BY OCD.ORD_DTL_NO) AS RNUM
+		          FROM TB_ORDER_CHANGE OC
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		         INNER JOIN TB_ORDER O
+		            ON O.ORD_NO = OD.ORD_NO
+		         INNER JOIN TB_GOODS G
+		            ON OD.GOODS_CD = G.GOODS_CD
+		         WHERE OC.ORD_CHG_SQ = #{ordChgSq}
+		           AND OC.CHG_GB = 'G680_30'
+		         GROUP BY O.ORD_NO, OC.ORD_CHG_SQ, OCD.ORD_DTL_NO, O.ORD_NM, O.ORD_PHNNO, O.MALL_GB, G.GOODS_NM, O.CUST_NO, OC.CHGER_BASE_ADDR
+		                , OC.CHGER_DTL_ADDR, OC.WD_GB, OC.ADD_PAY_COST
+		       ) Z
+		 WHERE Z.RNUM = 1
+	</select>
 </mapper>
 
 

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio