Ver código fonte

마이페이지 취반교 임시 커밋

card007 5 anos atrás
pai
commit
5750889e28

+ 1 - 0
src/main/java/com/style24/core/biz/service/TscKakaoPayService.java

@@ -201,6 +201,7 @@ public class TscKakaoPayService {
 		params.add("tid", payment.getPgTid());
 		params.add("cancel_amount", String.valueOf(payment.getPayAmt()));
 		params.add("cancel_tax_free_amount", "0");
+		// params.add("cancel_available_amount", String.valueOf(payment.getLeftAmt()));
 
 		// 카카오페이 API 전송
 		KakaoPay kakaoPay = kakaoPayApi.kakaoPaymentApi(params, cancelPaymentUrl);

+ 7 - 3
src/main/java/com/style24/core/biz/service/TscNaverPayService.java

@@ -99,7 +99,7 @@ public class TscNaverPayService {
 		int statusCode = naverPay.getStatusCode();
 
 		// 승인 성공일때 200
-		if (statusCode == 200) {
+		if (statusCode == 200 && "Success".equals(naverPay.getCode())) {
 			payment.setPgTradeNo(naverPay.getBody().getDetail().getPayHistId());
 			payment.setPgTid(naverPay.getBody().getDetail().getPaymentId());
 			payment.setPgShopId(env.getProperty("naverPay.clientId"));
@@ -200,7 +200,11 @@ public class TscNaverPayService {
 		params.add("cancelAmount", String.valueOf(payment.getPayAmt()));
 		params.add("taxScopeAmount", String.valueOf(payment.getPayAmt()));
 		params.add("taxExScopeAmount", "0");
-
+		params.add("doCompareRest", "1");
+		params.add("expectedRestAmount", String.valueOf(payment.getLeftAmt() - payment.getPayAmt()));
+log.info("leftAmt >>> {}", payment.getLeftAmt());
+		log.info("payAmt >>> {}", payment.getPayAmt());
+		log.info("expectedRestAmount >>> {}", params.get("expectedRestAmount"));
 		// 취소 요청자 설정
 		String cancelRequester = "2";
 		if (StringUtils.isNotBlank(payment.getCancelRequester())) {
@@ -215,7 +219,7 @@ public class TscNaverPayService {
 		int statusCode = naverPay.getStatusCode();
 
 		// 승인 성공일때 200
-		if (statusCode == 200) {
+		if (statusCode == 200 && "Success".equals(naverPay.getCode())) {
 			payment.setNpayPntAmt(naverPay.getBody().getNpointCancelAmount() * -1);
 			payment.setPgTid(naverPay.getBody().getPaymentId());
 			payment.setPgTradeNo(naverPay.getBody().getPayHistId());

+ 11 - 3
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -200,7 +200,7 @@ public class TscOrderChangeService {
 		String chgGb						= TscConstants.OrderChangeGb.CANCEL.value(); 					// 취소요청 (공톹코드:G680)
 		String ordDtlStat					= TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();	// 주문상세상태
 		String chgStat						= TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value();	// 주문변경상태
-		int realOrdAmt						= map.getInt("spanSumRealOrdAmt");								// 부분취소 전 결제금액
+		int payAmt							= map.getInt("spanPayAmt");										// 부분취소 전 결제금액
 		String modType						= "";
 
 		// 무통장입금 결제 주문 전체취소 상태값 처리
@@ -389,7 +389,12 @@ public class TscOrderChangeService {
 				int spanRealCnclRtnAmt = obj.getRealOrdAmt();			// 취소금액합계
 				int sumDeliveryFee = obj.getDelvFee();					// 배송비합계
 				int spanTotDeliveryFee = obj.getAddDelvFee();			// 추가배송비합계
-				int spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;
+				int spanRefundAmt = spanRealCnclRtnAmt;
+				
+				// 마지막 취소일때 배송비 추가
+				if ("Y".equals(allLastCanYn)) {
+					spanRefundAmt += sumDeliveryFee;
+				}
 
 				// 고객사유일때 추가배송비 차감 후 환불처리 
 				if ("G686_10".equals(chgReason)) {
@@ -408,7 +413,7 @@ public class TscOrderChangeService {
 				pg.setPgTid(pgTid);
 				pg.setPayMeans(payMeans);
 				pg.setPartCancelAmt(spanRefundAmt);
-				pg.setLeftAmt(realOrdAmt);
+				pg.setLeftAmt(payAmt);
 				pg.setRegNo(userNo);
 				pg.setUpdNo(userNo);
 
@@ -499,11 +504,13 @@ public class TscOrderChangeService {
 
 					kcpService.kcpCancel(pg);
 				} else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
+					pg.setPayAmt(pg.getPartCancelAmt());
 					pg.setPayMeans(payMeans);
 					pg.setChgReasonNm(chgReasonNm);
 
 					naverPayService.cancelNaverPayment(pg);
 				} else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
+					pg.setPayAmt(pg.getPartCancelAmt());
 					kakaoPayService.cancelKakaoPayment(pg);
 				}
 
@@ -2294,6 +2301,7 @@ public class TscOrderChangeService {
 		pg.setPayGb("O");
 		pg.setPgTid(payment.getPgTid());
 		pg.setPayAmt(refundAmt);
+		pg.setLeftAmt(refundAmt);
 		pg.setRegNo(regNo);
 		pg.setUpdNo(updNo);
 

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

@@ -60,6 +60,8 @@ public class TscOrderRefundService {
 		
 		int sumDeliveryFee			= 0; // 배송금액 (전체 취소시에 배송금액도 같이 환불)
 		
+		int cnclRtnAmt				= 0; // 기취소 처리 된 금액
+		
 		List<Order> cancelOrderRefundList 	= new ArrayList<>();	// 주문환불금액목록
 		List<Order> cancelDelvRefundList 	= new ArrayList<>();	// 주문환불배송금액목록
 		
@@ -115,6 +117,7 @@ public class TscOrderRefundService {
 			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));
@@ -165,6 +168,7 @@ public class TscOrderRefundService {
 				// 공급업체 와 배송정책코드가 같으면 주문금액, 취소금액 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 정보 등록을 위해서 분리 작업
@@ -196,6 +200,7 @@ public class TscOrderRefundService {
 				// 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
 				delvObj.setOrdAmt(orderObj.getOrdAmt());
 				delvObj.setCnclRtnAmt(orderObj.getCnclRtnAmt());
+				delvObj.setOrgCnclRtnAmt(orderObj.getOrgCnclRtnAmt());
 				delvObj.setRealOrdAmt(orderObj.getRealOrdAmt());
 				
 				// 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
@@ -238,18 +243,27 @@ public class TscOrderRefundService {
 		// 4. 추가배송비 발생여부, 추가배송비, 배송비정책단위 전체취소 여부 체크
 		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
 			Order obj = cancelDelvRefundList.get(i);
+			
+			// 주문금액 - 기취소 금액 - 취소요청금액
+			int leftOrdAmt = obj.getOrdAmt() - obj.getOrgCnclRtnAmt() - obj.getCnclRtnAmt();
+log.info("ordAmt >>> {}", obj.getOrdAmt());
+log.info("orgCnclRtnAmt >>> {}", obj.getOrgCnclRtnAmt());
+log.info("cnclRtnAmt >>> {}", obj.getCnclRtnAmt());
+log.info("minOrdAmt >>> {}", obj.getMinOrdAmt());
+log.info("leftOrdAmt >>> {}", leftOrdAmt);
+			log.info("delvFee >>> {}", obj.getDelvFee());
 			// 취소금액이 있을때 처리
 			if (obj.getCnclRtnAmt() > 0) {
 			
 				// 4.1 무료배송비용 > (주문금액 - 취소금액)
-				if (obj.getMinOrdAmt() > (obj.getOrdAmt() - obj.getCnclRtnAmt())) {
+				if (obj.getMinOrdAmt() > leftOrdAmt) {
 					// 4.2 주문시 배송비가 존재하면 추가 배송비 없음
 					if (obj.getDelvFee() > 0) {
 						obj.setAddDelvFeeYn("N");
 						obj.setAddDelvFee(0);
 						
 						// 4.2.1 전체취소시 배송비 환불
-						if ((obj.getOrdAmt() - obj.getCnclRtnAmt()) == 0) {
+						if (leftOrdAmt == 0) {
 							// if ("Y".equals(obj.getAllCanYn())) {
 							if ("Y".equals(obj.getLastCanYn())) {
 								sumDeliveryFee += obj.getDelvFee(); // 전체취소시 배송금액도 같이 환불
@@ -259,7 +273,7 @@ public class TscOrderRefundService {
 						// 4.3 주문금액 - 취소금액 == 0 이면 전체취소 이므로 배송비 발생 안함
 						// * 2020.12.28 
 						// * case : 배송정책 기준으로 1,2 상품 주문 후 1번 출고 후 1번반품 2번취소 할 경우 전체 취소 가 아니므로 배송비 부과 있을지 모르겠음 주문업체 단위로 배송되기 때문에 발생하지 않을것 같음
-						if ((obj.getOrdAmt() - obj.getCnclRtnAmt()) == 0) {
+						if (leftOrdAmt == 0) {
 							// 2021.03.29 delvFeeCd별 기존 출고 여부 확인
 							if("N".equals(obj.getDelvYn())) {
 								// 전체 취소 여부

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

@@ -62,6 +62,7 @@ public class Order extends TscBaseDomain {
 	private int ordAmt;								// 주문금액
 	private int cnclRtnQty;							// 취소/반품수량
 	private int cnclRtnAmt;							// 취소/반품금액
+	private int orgCnclRtnAmt;						// 기취소/반품금액
 	private int cpn1CpnSq;							// 즉시할인쿠폰시퀀스
 	private int cpn1DcAmt;							// 즉시할인쿠폰할인금액
 	private int tmtb1Sq;							// 다다익선1시퀀스(수량)

+ 2 - 1
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -2522,6 +2522,7 @@
 		     , ODI.SAVE_PNT_AMT
 		     , ODI.GFCD_USE_AMT
 		     , ODI.CNCL_RTN_AMT
+		     , ODI.REAL_ORD_AMT
 		     , FN_GET_CODE_NM('G056', OD.GOODS_TYPE)              AS GOODS_TYPE_NM
 		     , ODI.ORD_DTL_STAT
 		     , FN_GET_CODE_NM('G013', ODI.ORD_DTL_STAT)           AS ORD_DTL_STAT_NM
@@ -2570,7 +2571,7 @@
 		                      AND X.ORD_NO = #{ordNo}
 		                    GROUP BY X.DELV_FEE_CD
 		                  ) DF
-		    ON OD.DELV_FEE_CD = DF.DELV_FEE_CD
+		    ON IF(G1.SELF_GOODS_YN = 'Y', 'WMS', OD.DELV_FEE_CD) = DF.DELV_FEE_CD
 		  LEFT OUTER JOIN TB_DELV_FEE_POLICY DFP
 		    ON OD.DELV_FEE_CD = DFP.DELV_FEE_CD
 		   AND DFP.USE_YN = 'Y'