|
|
@@ -3,11 +3,9 @@ package com.style24.core.biz.service;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import com.gagaframework.web.parameter.GagaMap;
|
|
|
-import com.style24.core.biz.dao.TscOrderChangeDao;
|
|
|
import com.style24.persistence.domain.Order;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -22,9 +20,6 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
@Slf4j
|
|
|
public class TscOrderRefundService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private TscOrderChangeDao orderChangeDao;
|
|
|
-
|
|
|
/**
|
|
|
* 취소,반품 환불금액 계산 (admin, front) (백업) (단품단위)
|
|
|
* @param Order
|
|
|
@@ -36,34 +31,33 @@ public class TscOrderRefundService {
|
|
|
GagaMap mav = new GagaMap();
|
|
|
|
|
|
// 1. 변수설정
|
|
|
- int spanPayAmt = 0; // 총 결제 금액
|
|
|
- int spanSumRealOrdAmt = 0; // 상품 실결제 금액
|
|
|
- int spanSumDeliveryFee = 0; // 배송금액
|
|
|
- int spanRtnSumDeliveryFee = 0; // 반품배송금액
|
|
|
- int spanExcSumDeliveryFee = 0; // 교환배송금액
|
|
|
- int spanOrdAmt = 0; // 주문 상품 금액
|
|
|
- int spanOrgCnclRtnAmt = 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 spanDelvGfcdUseAmt = 0; // 취소 고객 배송비 상품권 금액
|
|
|
- int spanRealCnclRtnAmt = 0; // 취소 상품 실결제 금액
|
|
|
- int spanTotDeliveryFee = 0; // 환불 배송 금액
|
|
|
- int spanRefundAmt = 0; // 환불 금액 합계
|
|
|
- int spanSavePntAmt = 0; // 2021.08.04 적립예정포인트 환수금액
|
|
|
-
|
|
|
- int sumDeliveryFee = 0; // 배송금액 (전체 취소시에 배송금액도 같이 환불)
|
|
|
+ int spanPayAmt = 0; // 총 결제 금액
|
|
|
+ int spanSumRealOrdAmt = 0; // 상품 실결제 금액
|
|
|
+ int spanSumDeliveryFee = 0; // 배송금액
|
|
|
+ int spanRtnSumDeliveryFee = 0; // 반품배송금액
|
|
|
+ int spanExcSumDeliveryFee = 0; // 교환배송금액
|
|
|
+ int spanOrdAmt = 0; // 주문 상품 금액
|
|
|
+ int spanOrgCnclRtnAmt = 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 spanDelvGfcdUseAmt = 0; // 취소 고객 배송비 상품권 금액
|
|
|
+ int spanRealCnclRtnAmt = 0; // 취소 상품 실결제 금액
|
|
|
+ int spanTotDeliveryFee = 0; // 환불 배송 금액
|
|
|
+ int spanRefundAmt = 0; // 환불 금액 합계
|
|
|
+ int spanSavePntAmt = 0; // 2021.08.04 적립예정포인트 환수금액
|
|
|
+ int sumDeliveryFee = 0; // 배송금액 (전체 취소시에 배송금액도 같이 환불)
|
|
|
|
|
|
List<Order> cancelOrderRefundList = new ArrayList<>(); // 주문환불금액목록
|
|
|
List<Order> cancelDelvRefundList = new ArrayList<>(); // 주문환불배송금액목록
|
|
|
@@ -87,6 +81,8 @@ public class TscOrderRefundService {
|
|
|
delvObj.setDelvFeeCd(cnclRtnList.get(k).getDelvFeeCd());
|
|
|
delvObj.setLastCanYn(cnclRtnList.get(k).getLastCanYn());
|
|
|
delvObj.setAllDelvCanYn(cnclRtnList.get(k).getAllDelvCanYn());
|
|
|
+ // 2021.09.27 delvYn 최최 담기 배송비관련
|
|
|
+ delvObj.setDelvYn(cnclRtnList.get(k).getDelvYn());
|
|
|
cancelDelvRefundList.add(delvObj);
|
|
|
|
|
|
// 3. 취소신청수량 정보를 취소 환불 금액 계산
|
|
|
@@ -158,7 +154,7 @@ public class TscOrderRefundService {
|
|
|
// 3.7 주문상세상태체크
|
|
|
orderObj.setOrdDtlStat(oneData.getOrdDtlStat());
|
|
|
orderObj.setOrdDtlStatNm(oneData.getOrdDtlStatNm());
|
|
|
- orderObj.setLastCanYn(oneData.getLastCanYn()); // 전체취소 여부 (기존의 취소 또는 출고, 반품, 교환 의 경우에는 전체취소 불가능)
|
|
|
+ orderObj.setLastCanYn(oneData.getLastCanYn());
|
|
|
orderObj.setAllDelvCanYn(oneData.getAllDelvCanYn());
|
|
|
orderObj.setDelvYn(oneData.getDelvYn());
|
|
|
|
|
|
@@ -248,19 +244,19 @@ public class TscOrderRefundService {
|
|
|
for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
|
|
|
Order obj = cancelDelvRefundList.get(i);
|
|
|
|
|
|
- // 주문금액 - 기취소 금액 - 취소요청금액
|
|
|
+ // 남은금액 : 주문금액 - 기취소 금액 - 취소요청금액
|
|
|
int leftOrdAmt = obj.getOrdAmt() - obj.getOrgCnclRtnAmt() - obj.getCnclRtnAmt();
|
|
|
|
|
|
// 취소금액이 있을때 처리
|
|
|
if (obj.getCnclRtnAmt() > 0) {
|
|
|
- // 4.1 무료배송비용 > (주문금액 - 취소금액)
|
|
|
+ // 4.1 무료배송비용 > (주문금액 - 취소금액) : 배송비 허들 깨짐
|
|
|
if (obj.getMinOrdAmt() > leftOrdAmt) {
|
|
|
- // 4.2 주문시 배송비가 존재하면 추가 배송비 없음
|
|
|
+ // 4.1.1 주문시 배송비가 존재하면 추가 배송비 없음
|
|
|
if (obj.getDelvFee() > 0) {
|
|
|
obj.setAddDelvFeeYn("N");
|
|
|
obj.setAddDelvFee(0);
|
|
|
|
|
|
- // 4.2.1 전체취소시 배송비 환불
|
|
|
+ // 전체취소시 배송비 환불
|
|
|
if (leftOrdAmt == 0) {
|
|
|
if ("Y".equals(obj.getLastCanYn())) {
|
|
|
sumDeliveryFee += obj.getDelvFee(); // 전체취소 시 배송금액도 같이 환불
|
|
|
@@ -268,52 +264,36 @@ public class TscOrderRefundService {
|
|
|
spanDelvGfcdUseAmt += obj.getDelvGfcdUseAmt(); // 전체취소 시 사용 배송비 상품권 금액 환불
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- // 4.3 주문금액 - 취소금액 == 0 이면 전체취소 이므로 배송비 발생 안함
|
|
|
+ }
|
|
|
+ // 4.1.2 무료배송비
|
|
|
+ else {
|
|
|
+ // 남은금액이 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.getLastCanYn())) {
|
|
|
- obj.setAddDelvFeeYn("Y");
|
|
|
- } else {
|
|
|
- obj.setAddDelvFeeYn("N");
|
|
|
- }
|
|
|
- // 취소는 주문 금액 - 취소 금액이 0이면 취소는 추가배송비 여부가 없음.
|
|
|
+ // 취소는 남은금액이 0이면 취소는 추가배송비 여부가 없음.
|
|
|
obj.setAddDelvFee(0);
|
|
|
- } else {
|
|
|
- // if ("N".equals(obj.getLastCanYn())) {
|
|
|
- // obj.setAddDelvFeeYn("Y");
|
|
|
- // obj.setAddDelvFee(obj.getOrgDelvFee());
|
|
|
- // } else {
|
|
|
- // // 4.4 전체취소의 경우에 해당
|
|
|
- // obj.setAddDelvFeeYn("N");
|
|
|
- // obj.setAddDelvFee(0);
|
|
|
- // }
|
|
|
-
|
|
|
- // 2021.09.08 card007 배송비정책 기준 으로 변경
|
|
|
- if ("Y".equals(obj.getAllDelvCanYn())) {
|
|
|
- obj.setAddDelvFeeYn("N");
|
|
|
- obj.setAddDelvFee(0);
|
|
|
- } else {
|
|
|
- obj.setAddDelvFeeYn("Y");
|
|
|
- obj.setAddDelvFee(obj.getOrgDelvFee());
|
|
|
- }
|
|
|
+ obj.setAddDelvFeeYn("N");
|
|
|
}
|
|
|
- } else {
|
|
|
- // 4.5 추가배송비 발생 (취소신청화면에서 대부분 아래의 조건에 해당)
|
|
|
- if ("Y".equals(obj.getAllDelvCanYn())) {
|
|
|
+ // 출고(반품)
|
|
|
+ else {
|
|
|
+ // 반품에 남은금액이 0이면 배송비 허들이 깨지지 않음
|
|
|
obj.setAddDelvFeeYn("N");
|
|
|
obj.setAddDelvFee(0);
|
|
|
- } else {
|
|
|
- obj.setAddDelvFeeYn("Y");
|
|
|
- obj.setAddDelvFee(obj.getOrgDelvFee());
|
|
|
}
|
|
|
}
|
|
|
+ // 남은금액이 0보다 크면 부분취소/반품 이므로 추가배송비(허들깨짐) 발생 함
|
|
|
+ else {
|
|
|
+ obj.setAddDelvFeeYn("Y");
|
|
|
+ obj.setAddDelvFee(obj.getOrgDelvFee());
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ // 4.2 무료배송비용 <= (주문금액 - 취소금액) : 배송비 허들 안깨짐
|
|
|
+ else {
|
|
|
obj.setAddDelvFeeYn("N");
|
|
|
obj.setAddDelvFee(0);
|
|
|
}
|
|
|
@@ -335,16 +315,13 @@ public class TscOrderRefundService {
|
|
|
// 관리자 화면에서 사용하는 환불 칼럼 정보
|
|
|
// 환불금액표시
|
|
|
// 2021.05.18 배송비쿠폰 사용금액 제외 후 환불금액 계산 처리
|
|
|
- log.info("spanSumRealOrdAmt ::: {}", spanSumRealOrdAmt);
|
|
|
- log.info("spanSumDeliveryFee ::: {}", spanSumDeliveryFee);
|
|
|
- log.info("spanRtnSumDeliveryFee ::: {}", spanRtnSumDeliveryFee);
|
|
|
-
|
|
|
+
|
|
|
spanPayAmt = spanSumRealOrdAmt + spanSumDeliveryFee - spanDelvCpnDcAmt;
|
|
|
spanTotPntDcAmt = spanPntDcAmt + spanPrePntDcAmt;
|
|
|
spanCpnDcAmt = spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt + spanRefundDelvCpnAmt;
|
|
|
spanTmtbDcAmt = spanTmtb1DcAmt + spanTmtb2DcAmt;
|
|
|
spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanRefundDelvCpnAmt - spanTotDeliveryFee;
|
|
|
-
|
|
|
+
|
|
|
// 2021.07.01 관리자 주문상품금액 기취소금액 포함 로직 추가
|
|
|
spanOrdAmt = spanOrdAmt - spanOrgCnclRtnAmt;
|
|
|
|
|
|
@@ -378,6 +355,35 @@ public class TscOrderRefundService {
|
|
|
mav.set("spanRefundAmt" , spanRefundAmt); //환불 금액 합계
|
|
|
mav.set("spanSavePntAmt" , spanSavePntAmt); //적립예정 포인트 환수금액
|
|
|
|
|
|
+ // 로그 생성
|
|
|
+ log.info("spanPayAmt(총 결제 금액) ::: {}" , spanSumRealOrdAmt);
|
|
|
+ log.info("spanSumRealOrdAmt(상품 실결제 금액) ::: {}" , spanSumRealOrdAmt);
|
|
|
+ log.info("spanSumDeliveryFee(배송금액) ::: {}" , spanSumDeliveryFee);
|
|
|
+ log.info("spanOrdAmt(주문 상품 금액) ::: {}" , spanOrdAmt);
|
|
|
+ log.info("spanCnclRtnAmt(취소 상품 금액) ::: {}" , spanCnclRtnAmt);
|
|
|
+ log.info("spanTotPntDcAmt(취소 사용 포인트) ::: {}" , spanTotPntDcAmt);
|
|
|
+ log.info("spanPntDcAmt(고객 포인트) ::: {}" , spanPntDcAmt);
|
|
|
+ log.info("spanPrePntDcAmt(상품 선포인트) ::: {}" , spanPrePntDcAmt);
|
|
|
+ log.info("spanCpnDcAmt(취소 사용 쿠폰금액) ::: {}" , spanCpnDcAmt);
|
|
|
+ log.info("spanCpn1DcAmt(즉시할인쿠폰) ::: {}" , spanCpn1DcAmt);
|
|
|
+ log.info("spanGoodsCpnDcAmt(상품쿠폰) ::: {}" , spanGoodsCpnDcAmt);
|
|
|
+ log.info("spanCartCpnDcAmt(장바구니쿠폰) ::: {}" , spanCartCpnDcAmt);
|
|
|
+ log.info("spanDelvCpnDcAmt(배송비쿠폰) ::: {}" , spanDelvCpnDcAmt);
|
|
|
+ log.info("spanRefundDelvCpnAmt(취소 배송비쿠폰 금액) ::: {}" , spanRefundDelvCpnAmt);
|
|
|
+ log.info("spanTmtbDcAmt(취소 다다익선 금액) ::: {}" , spanTmtbDcAmt);
|
|
|
+ log.info("spanTmtb1DcAmt(수량할인) ::: {}" , spanTmtb1DcAmt);
|
|
|
+ log.info("spanTmtb2DcAmt(금액할인) ::: {}" , spanTmtb2DcAmt);
|
|
|
+ log.info("spanGfcdUseAmt(취소 고객 상품권 금액) ::: {}" , spanGfcdUseAmt);
|
|
|
+ log.info("spanDelvGfcdUseAmt(취소 고객 배송비 상품권 금액) ::: {}" , spanDelvGfcdUseAmt);
|
|
|
+ log.info("spanRealCnclRtnAmt(취소 상품 실결제 금액) ::: {}" , spanRealCnclRtnAmt);
|
|
|
+ log.info("sumDeliveryFee(배송비 합계 금액) ::: {}" , sumDeliveryFee);
|
|
|
+ log.info("spanTotDeliveryFee(추가 배송 금액) ::: {}" , spanTotDeliveryFee);
|
|
|
+ log.info("spanTotRtnDelvFee(추가 반품 배송 금액) ::: {}" , spanRtnSumDeliveryFee);
|
|
|
+ log.info("spanTotExcDelvFee(추가 교환 배송 금액) ::: {}" , spanExcSumDeliveryFee);
|
|
|
+ log.info("spanRefundAmt(취소 상품 실결제 금액) ::: {}" , spanRefundAmt);
|
|
|
+ log.info("spanRealCnclRtnAmt(환불 금액 합계) ::: {}" , spanRealCnclRtnAmt);
|
|
|
+ log.info("spanSavePntAmt(적립예정 포인트 환수금액) ::: {}" , spanSavePntAmt);
|
|
|
+
|
|
|
return mav;
|
|
|
}
|
|
|
}
|