|
|
@@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
import java.util.List;
|
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -35,6 +36,9 @@ public class TscOrderChangeService {
|
|
|
|
|
|
@Autowired
|
|
|
private TscOrderDao orderDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TscOrderService orderService;
|
|
|
|
|
|
@Autowired
|
|
|
private TscKcpService kcpService;
|
|
|
@@ -263,6 +267,9 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
|
|
|
point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
+ // TODO
|
|
|
+ // 사용포인트 포인트반영상태 처리
|
|
|
+ // point.setPntUploadStat(TscConstants.PntUploadStat.);
|
|
|
point.setOccurDtlDesc("포인트사용취소");
|
|
|
point.setRegNo(custNo);
|
|
|
point.setUpdNo(custNo);
|
|
|
@@ -279,6 +286,7 @@ public class TscOrderChangeService {
|
|
|
|
|
|
for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
+ point.setPntUploadStat(TscConstants.PntUploadStat.BEFORE_APPLY_CANCEL.value());
|
|
|
point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
point.setPntAmt(savePntAmt * -1);
|
|
|
point.setRegNo(custNo);
|
|
|
@@ -858,7 +866,6 @@ public class TscOrderChangeService {
|
|
|
int ordNo = map.getInt("ordNo"); // 주문번호
|
|
|
int custNo = map.getInt("custNo"); // 고객번호
|
|
|
String chgReason = map.getString("chgReason"); // 변경사유
|
|
|
- String chgReasonNm = "고객변심"; // 변경사유명
|
|
|
String chgMemo = map.getString("chgMemo"); // 변경메모
|
|
|
String chgerNm = map.getString("chgerNm"); // 변경자
|
|
|
String chgerPhnno = map.getString("chgerPhnno"); // 변경핸드폰번호
|
|
|
@@ -872,12 +879,13 @@ public class TscOrderChangeService {
|
|
|
String accountNo = map.getString("accountNo"); // 환불계좌번호
|
|
|
String accountNm = map.getString("accountNm"); // 환불계좌주명
|
|
|
String bankCd = map.getString("bankCd"); // 환불계좌은행코드
|
|
|
- String chgGb = TscConstants.OrderChangeGb.RETURN.value(); // 취소요청 (공톹코드:G680)
|
|
|
- String chgStat = TscConstants.OrderChangeStat.RETURN.value(); // 주문변경상태
|
|
|
+ String chgGb = TscConstants.OrderChangeGb.RETURN.value(); // 반품요청 (공톹코드:G680)
|
|
|
String wdGb = map.getString("wdGb"); // 회수방법
|
|
|
String wdInvoiceNo = map.getString("wdInvoiceNo"); // 회수송장번호
|
|
|
+ String chgStat = TscConstants.OrderChangeStat.RETURN.value(); // 주문변경상태
|
|
|
+ int ordChgSq = 0; // 주문변경일련번호
|
|
|
|
|
|
- // 2. 주문상세단품정보등록, 변경 (단품단위)
|
|
|
+ // 2. 주문상세단위 처리
|
|
|
List<Order> cancelOrderDetailList = new ArrayList<>();
|
|
|
List<Integer> ordDtlNoList = new ArrayList<>();
|
|
|
|
|
|
@@ -895,9 +903,37 @@ public class TscOrderChangeService {
|
|
|
|
|
|
// 3. 주문변경정보, 주문정보, 환불정보 (배송정책코드 별)
|
|
|
for (Order obj : cancelDelvRefundList) {
|
|
|
- // 취소금액 있을 시 처리
|
|
|
+ // 환불금액 있을 시 처리
|
|
|
if (obj.getCnclRtnAmt() > 0) {
|
|
|
- // 3-1. 주문변경정보 생성
|
|
|
+ // 3-1. 환불정보 설정
|
|
|
+ int spanRealCnclRtnAmt = obj.getRealOrdAmt(); // 취소금액합계
|
|
|
+ int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
+ int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
+ int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
+ int addDelvFee = spanTotDeliveryFee + spanTotRtnDelvFee;
|
|
|
+ int spanRefundAmt;
|
|
|
+
|
|
|
+ // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
+ if ("true".equals(isCustomer)) {
|
|
|
+ int refundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - addDelvFee;
|
|
|
+ if (refundAmt < 0) {
|
|
|
+ spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;
|
|
|
+ } else {
|
|
|
+ spanRefundAmt = refundAmt;
|
|
|
+ addDelvFee = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
+ else {
|
|
|
+ spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 추가배송비 발생 시 반품대기 상태 처리
|
|
|
+ if (addDelvFee > 0) {
|
|
|
+ chgStat = TscConstants.OrderChangeStat.RETURN_WAIT.value();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3-2. 주문변경정보 생성
|
|
|
OrderChange orderChange = new OrderChange();
|
|
|
orderChange.setOrdNo(ordNo);
|
|
|
orderChange.setChgGb(chgGb);
|
|
|
@@ -913,23 +949,24 @@ public class TscOrderChangeService {
|
|
|
orderChange.setChgerDtlAddr(chgerDtlAddr);
|
|
|
orderChange.setWdGb(wdGb);
|
|
|
orderChange.setWdInvoiceNo(wdInvoiceNo);
|
|
|
- orderChange.setAddPayCost(0);
|
|
|
+ orderChange.setAddPayCost(addDelvFee);
|
|
|
orderChange.setAddPayAmt(0);
|
|
|
orderChange.setRegNo(custNo);
|
|
|
orderChange.setUpdNo(custNo);
|
|
|
|
|
|
orderChangeDao.createOrderChange(orderChange);
|
|
|
|
|
|
- // 3-2. 주문상세정보 수정
|
|
|
+ // 3-3. 주문상세정보 수정
|
|
|
+ ordChgSq = orderChange.getOrdChgSq();
|
|
|
for (Order vo : cancelOrderDetailList) {
|
|
|
// 배송정책코드 별 주문상세 처리
|
|
|
if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
|
|
|
// 3-2-1. 주문상세정보 이력등록
|
|
|
- // orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
+ orderChangeDao.createOrderDetailHstCnclRtn(vo);
|
|
|
|
|
|
// 3-2-2. 주문변경상세정보 및 이력 등록
|
|
|
OrderChange changeDetailPo = new OrderChange();
|
|
|
- changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ changeDetailPo.setOrdChgSq(ordChgSq);
|
|
|
changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
|
|
|
changeDetailPo.setChgQty(vo.getOrdCanChgQty());
|
|
|
changeDetailPo.setChgStat(chgStat);
|
|
|
@@ -941,31 +978,11 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 3-3. 상품재고원복
|
|
|
- orderChange.setSellGb(TscConstants.SellGb.ORDER_CANCEL.value());
|
|
|
- orderChangeDao.createSellQty(orderChange);
|
|
|
-
|
|
|
- // 3-4. PG 결제 취소 처리 (상품권으로만 결제 시 PG점프)
|
|
|
- int spanRealCnclRtnAmt = obj.getRealOrdAmt(); // 취소금액합계
|
|
|
- int sumDeliveryFee = obj.getDelvFee(); // 배송비합계
|
|
|
- int spanTotDeliveryFee = obj.getAddDelvFee(); // 추가배송비합계
|
|
|
- int spanTotRtnDelvFee = obj.getRtnDelvFee(); // 반품배송비합계
|
|
|
- int spanRefundAmt;
|
|
|
-
|
|
|
- // 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
|
|
|
- if ("true".equals(isCustomer)) {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
|
|
|
- }
|
|
|
- // 회사사유 : 환불금액계산 = (취소금액 + 배송비)
|
|
|
- else {
|
|
|
- spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
|
|
|
- }
|
|
|
-
|
|
|
- // 3-5. 환불정보 등록
|
|
|
+ // 3-4. 환불정보 등록
|
|
|
Order refundOrder = new Order();
|
|
|
refundOrder.setOrdNo(ordNo);
|
|
|
refundOrder.setPaySq(0);
|
|
|
- refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ refundOrder.setOrdChgSq(ordChgSq);
|
|
|
refundOrder.setRefundAmt(spanRefundAmt);
|
|
|
refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
|
|
|
refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
|
|
|
@@ -976,8 +993,8 @@ public class TscOrderChangeService {
|
|
|
refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
|
|
|
refundOrder.setRfGfcdUseAmt(obj.getGfcdAmt());
|
|
|
refundOrder.setRfCnclAmt(obj.getCnclRtnAmt());
|
|
|
- refundOrder.setRfDeliveryFee(obj.getAddDelvFee());
|
|
|
- refundOrder.setRfRealCnclAmt(spanRefundAmt + obj.getAddDelvFee());
|
|
|
+ refundOrder.setRfDeliveryFee(addDelvFee);
|
|
|
+ refundOrder.setRfRealCnclAmt(spanRefundAmt + addDelvFee);
|
|
|
refundOrder.setRaNo(accountNo);
|
|
|
refundOrder.setRaNm(accountNm);
|
|
|
refundOrder.setRaBank(bankCd);
|
|
|
@@ -987,6 +1004,9 @@ public class TscOrderChangeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 주문변경일련번호 설정
|
|
|
+ map.setInt("ordChgSq", ordChgSq);
|
|
|
+
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
@@ -1172,10 +1192,11 @@ public class TscOrderChangeService {
|
|
|
*/
|
|
|
@Transactional("shopTxnManager")
|
|
|
public GagaMap rtnReqCancel(GagaMap mav, int userNo) {
|
|
|
+ int ordChgSq = mav.getInt("ordChgSq");
|
|
|
|
|
|
Order order = new Order();
|
|
|
order.setOrdNo(mav.getInt("ordNo"));
|
|
|
- order.setOrdChgSq(mav.getInt("ordChgSq"));
|
|
|
+ order.setOrdChgSq(ordChgSq);
|
|
|
order.setChgStat(TscConstants.OrderChangeStat.RETURN_CANCEL.value());
|
|
|
order.setRegNo(userNo);
|
|
|
order.setUpdNo(userNo);
|
|
|
@@ -1187,8 +1208,31 @@ public class TscOrderChangeService {
|
|
|
// 2. 주문정보 이력 등록 (TB_ORDER_DETAIL_HST(등록))
|
|
|
orderChangeDao.createOrderDtlHstCancel(order);
|
|
|
|
|
|
- // TODO
|
|
|
// 3. PG 실행 (취소시 추가결제금액 취소처리)
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setOrdChgSq(ordChgSq);
|
|
|
+ Order payment = orderChangeDao.getAddDeliveryFeePayment(orderChange);
|
|
|
+
|
|
|
+ // 추가배송비 존재 시
|
|
|
+ if (payment != null && payment.getPayAmt() > 0) {
|
|
|
+ // 추가배송비 결제정보 조회
|
|
|
+ Payment pg = new Payment();
|
|
|
+ pg.setOrdChgSq(ordChgSq);
|
|
|
+ pg = orderChangeDao.getAddPayCostPaymentInfo(pg);
|
|
|
+
|
|
|
+ // 추가배송비 취소 정보 설정
|
|
|
+ if (StringUtils.isNotBlank(pg.getPgTid())) {
|
|
|
+ pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ pg.setPayGb("D");
|
|
|
+ pg.setModType("STSC");
|
|
|
+ pg.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
+ pg.setIpAddress(mav.getString("ipAddress"));
|
|
|
+ pg.setRegNo(userNo);
|
|
|
+ pg.setUpdNo(userNo);
|
|
|
+ }
|
|
|
+
|
|
|
+ kcpService.kcpCancel(pg);
|
|
|
+ }
|
|
|
|
|
|
return mav;
|
|
|
}
|
|
|
@@ -1866,6 +1910,9 @@ public class TscOrderChangeService {
|
|
|
|
|
|
for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
|
|
|
+ // TODO
|
|
|
+ // 사용포인트 포인트반영상태 처리
|
|
|
+ // point.setPntUploadStat(TscConstants.PntUploadStat.);
|
|
|
point.setOccurDtlDesc("포인트사용취소");
|
|
|
point.setPayAmt(point.getPayAmt() * -1);
|
|
|
point.setRegNo(regNo);
|
|
|
@@ -1881,6 +1928,7 @@ public class TscOrderChangeService {
|
|
|
|
|
|
for (Order point : orderChangeDao.getCustPointHst(vo)) {
|
|
|
point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
|
|
|
+ point.setPntUploadStat(TscConstants.PntUploadStat.BEFORE_APPLY_CANCEL.value());
|
|
|
point.setOccurDtlDesc("예정포인트적립취소");
|
|
|
point.setPayAmt(point.getPayAmt() * -1);
|
|
|
point.setRegNo(regNo);
|