|
|
@@ -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())) {
|
|
|
// 전체 취소 여부
|