|
|
@@ -657,114 +657,166 @@ public class TscOrderChangeService {
|
|
|
* @author jsh77b
|
|
|
* @since 2021. 01. 19
|
|
|
*/
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
public GagaMap exchReq(OrderChange excReq) {
|
|
|
GagaMap result = new GagaMap();
|
|
|
result.set("status", GagaResponseStatus.FAIL.getCode());
|
|
|
|
|
|
// 교환 기본 정보
|
|
|
- int ordNo = excReq.getOrdNo(); // 주문번호
|
|
|
- String isCustomer = excReq.getIsCustomer(); // 귀책사유
|
|
|
- String wdGb = excReq.getWdGb(); // 회수구분 (D:직접배송, W:회수요청)
|
|
|
- String chgMemo = excReq.getChgMemo(); // 교환메모
|
|
|
int addPayCost = excReq.getAddPayCost(); // 추가배송비
|
|
|
+ String wdGb = excReq.getWdGb(); // 회수구분
|
|
|
Integer regNo = excReq.getRegNo(); // 등록자번호
|
|
|
Integer updNo = excReq.getUpdNo(); // 수정자번호
|
|
|
|
|
|
- // 회수지 정보
|
|
|
- String chgerNm = excReq.getChgerNm();
|
|
|
- String chgerTelno = excReq.getChgerTelno();
|
|
|
- String chgerPhnno = excReq.getChgerPhnno();
|
|
|
- String chgerEmail = excReq.getChgerEmail();
|
|
|
- String chgerZipcode = excReq.getChgerZipcode();
|
|
|
- String chgerBaseAddr = excReq.getChgerBaseAddr();
|
|
|
- String chgerDtlAddr = excReq.getChgerDtlAddr();
|
|
|
-
|
|
|
- // 교환지 정보
|
|
|
- String recipNm = excReq.getRecipNm();
|
|
|
- String recipTelno = excReq.getRecipTelno();
|
|
|
- String recipPhnno = excReq.getRecipPhnno();
|
|
|
- String recipEmail = excReq.getRecipEmail();
|
|
|
- String recipZipcode = excReq.getRecipZipcode();
|
|
|
- String recipBaseAddr = excReq.getRecipBaseAddr();
|
|
|
- String recipDtlAddr = excReq.getRecipDtlAddr();
|
|
|
-
|
|
|
- //
|
|
|
+ // 교환신청 목록 설정
|
|
|
Collection<Order> excReqList = excReq.getCancelReqList();
|
|
|
+
|
|
|
+ // 추가배송비 관련 상태값 설정
|
|
|
+ String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
|
|
|
+ String ordDtlStat = TscConstants.OrderDetailStat.REFUND_CONFIRM_WAIT.value();
|
|
|
+
|
|
|
+ if (addPayCost > 0) {
|
|
|
+ orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
|
|
|
+ ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_WAIT.value();
|
|
|
+ }
|
|
|
|
|
|
// 1. 재고 체크 (세트아이템 포함)
|
|
|
-
|
|
|
|
|
|
- // 2. 교환상품 주문 상세 등록
|
|
|
+
|
|
|
+ // 2. TB_DELIVERY_ADDR 등록
|
|
|
+ Order deliveryAddr = new Order();
|
|
|
+ deliveryAddr.setRecipNm(excReq.getRecipNm());
|
|
|
+ deliveryAddr.setRecipPhnno(excReq.getRecipPhnno());
|
|
|
+ deliveryAddr.setRecipTelno(excReq.getRecipTelno());
|
|
|
+ deliveryAddr.setRecipZipcode(excReq.getRecipZipcode());
|
|
|
+ deliveryAddr.setRecipBaseAddr(excReq.getRecipBaseAddr());
|
|
|
+ deliveryAddr.setRecipDtlAddr(excReq.getRecipDtlAddr());
|
|
|
+ deliveryAddr.setDelvMemo(excReq.getDelvMemo());
|
|
|
+ deliveryAddr.setRegNo(regNo);
|
|
|
+ deliveryAddr.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderDao.createDeliveryAddr(deliveryAddr);
|
|
|
+
|
|
|
+ // 생성된 delvAddrSq 등록
|
|
|
+ int delvAddrSq = deliveryAddr.getDelvAddrSq();
|
|
|
+
|
|
|
+ // 교환대상 정보 등록
|
|
|
int preOrdDtlNo = 0;
|
|
|
+ String preDelvFeeCd = "";
|
|
|
+ int ordChgSq = 0;
|
|
|
+
|
|
|
for (Order order : excReqList) {
|
|
|
+ String delvFeeCd = order.getDelvFeeCd();
|
|
|
+ int chgQty = order.getChgQty();
|
|
|
+ String ordChgOpt = order.getOrdChgOpt();
|
|
|
int ordDtlNo = order.getOrdDtlNo();
|
|
|
+ int exchangeOrdDtlNo = 0;
|
|
|
+
|
|
|
+ if (!preDelvFeeCd.equals(delvFeeCd)) {
|
|
|
+ // 3. TB_ORDER_CHANGE 등록
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
|
|
|
+ orderChange.setChgReason(excReq.getChgReason());
|
|
|
+ orderChange.setChgMemo(excReq.getChgMemo());
|
|
|
+ // orderChange.setWdGb(wdGb);
|
|
|
+ orderChange.setChgerNm(excReq.getChgerNm());
|
|
|
+ orderChange.setChgerPhnno(excReq.getChgerPhnno());
|
|
|
+ orderChange.setChgerTelno(excReq.getChgerTelno());
|
|
|
+ orderChange.setChgerEmail(excReq.getChgerEmail());
|
|
|
+ orderChange.setChgerZipcode(excReq.getChgerZipcode());
|
|
|
+ orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
|
|
|
+ orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
|
|
|
+ orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
|
|
|
+ orderChange.setAddPayCost(addPayCost);
|
|
|
+ orderChange.setAddPayAmt(excReq.getAddPayAmt());
|
|
|
+ orderChange.setRegNo(regNo);
|
|
|
+ orderChange.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChange(orderChange);
|
|
|
+
|
|
|
+ preDelvFeeCd = delvFeeCd;
|
|
|
+
|
|
|
+ // 생성된 ordChgSq 설정
|
|
|
+ ordChgSq = orderChange.getOrdChgSq();
|
|
|
|
|
|
+ // 4. TB_DELIVERY_FEE 추가배송비 등록
|
|
|
+ int delvFee = 0;
|
|
|
+
|
|
|
+ if ("true".equals(excReq.getIsCustomer())) {
|
|
|
+ delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
|
|
|
+ }
|
|
|
+
|
|
|
+ Order deliveryFee = new Order();
|
|
|
+ deliveryFee.setOrdNo(excReq.getOrdNo());
|
|
|
+ deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
|
|
|
+ deliveryFee.setDelvFeeCd(delvFeeCd);
|
|
|
+ deliveryFee.setDelvFee(delvFee);
|
|
|
+ deliveryFee.setRealDelvAmt(delvFee);
|
|
|
+ deliveryFee.setOrdChgSq(ordChgSq);
|
|
|
+ deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
|
|
|
+ deliveryFee.setRegNo(regNo);
|
|
|
+ deliveryFee.setUpdNo(updNo);
|
|
|
+
|
|
|
+ orderChangeDao.createDeliveryFee(deliveryFee);
|
|
|
+ }
|
|
|
+
|
|
|
if (preOrdDtlNo != ordDtlNo) {
|
|
|
- // 2. TB_ORDER_DETAIL 등록
|
|
|
+ // 5. TB_ORDER_DETAIL 등록
|
|
|
Order ordDtl = new Order();
|
|
|
- ordDtl.setOrdDtlNo(order.getOrdDtlNo());
|
|
|
- ordDtl.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
|
|
|
- ordDtl.setChgQty(order.getChgQty());
|
|
|
- ordDtl.setRegNo(order.getRegNo());
|
|
|
- ordDtl.setUpdNo(order.getUpdNo());
|
|
|
+ ordDtl.setOrdDtlNo(ordDtlNo);
|
|
|
+ ordDtl.setOrdDtlStat(ordDtlStat);
|
|
|
+ ordDtl.setOptCd2(ordChgOpt);
|
|
|
+ ordDtl.setChgQty(chgQty);
|
|
|
+ ordDtl.setDelvAddrSq(delvAddrSq);
|
|
|
+ ordDtl.setRegNo(regNo);
|
|
|
+ ordDtl.setUpdNo(updNo);
|
|
|
+
|
|
|
orderDao.createOrderDetailForExchange(ordDtl);
|
|
|
|
|
|
- // 3. TB_ORDER_DETAIL_HST 등록
|
|
|
+ // 생성된 ordDtlNo 설정
|
|
|
+ exchangeOrdDtlNo = ordDtl.getExchangeOrdDtlNo();
|
|
|
+
|
|
|
+ // 6. TB_ORDER_DETAIL_HST 등록
|
|
|
orderDao.createOrderDetailHstForExchange(ordDtl);
|
|
|
+
|
|
|
+ // 7. TB_ORDER_CHANGE_DETAIL 등록
|
|
|
+ OrderChange orderChangeDetail = new OrderChange();
|
|
|
+ orderChangeDetail.setOrdChgSq(ordChgSq);
|
|
|
+ orderChangeDetail.setOrdDtlNo(ordDtlNo);
|
|
|
+ orderChangeDetail.setChgQty(chgQty);
|
|
|
+ orderChangeDetail.setChgStat(orderChangeStat);
|
|
|
+ orderChangeDetail.setChgOrdDtlNo(exchangeOrdDtlNo);
|
|
|
+ orderChangeDetail.setRegNo(regNo);
|
|
|
+ orderChangeDetail.setUpdNo(updNo);
|
|
|
|
|
|
+ orderChangeDao.createOrderChangeDetail(orderChangeDetail);
|
|
|
+
|
|
|
preOrdDtlNo = ordDtlNo;
|
|
|
}
|
|
|
|
|
|
- // 4. TB_ORDER_DETAIL_ITEM 등록
|
|
|
+ // 8. TB_ORDER_DETAIL_ITEM 등록
|
|
|
Order ordDtlItem = new Order();
|
|
|
ordDtlItem.setOrdDtlItemSq(order.getOrdDtlItemSq());
|
|
|
- ordDtlItem.setOrdDtlNo(order.getOrdDtlNo());
|
|
|
- ordDtlItem.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
|
|
|
- ordDtlItem.setOrdChgOpt(order.getOrdChgOpt());
|
|
|
- ordDtlItem.setRegNo(order.getRegNo());
|
|
|
- ordDtlItem.setUpdNo(order.getUpdNo());
|
|
|
+ ordDtlItem.setOrdDtlNo(ordDtlNo);
|
|
|
+ ordDtlItem.setOrdDtlStat(ordDtlStat);
|
|
|
+ ordDtlItem.setOrdChgOpt(ordChgOpt);
|
|
|
+ ordDtlItem.setRegNo(regNo);
|
|
|
+ ordDtlItem.setUpdNo(updNo);
|
|
|
|
|
|
orderDao.createOrderDetailItemForExchange(ordDtlItem);
|
|
|
|
|
|
- // 5. TB_ORDER_DETAIL_ITEM_HST 등록
|
|
|
+ // 9. TB_ORDER_DETAIL_ITEM_HST 등록
|
|
|
orderDao.createOrderDetailItemHstForExchange(ordDtlItem);
|
|
|
}
|
|
|
-
|
|
|
- // 6. TB_ORDER_CHANGE 등록
|
|
|
- OrderChange orderChange = new OrderChange();
|
|
|
- orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
|
|
|
- orderChange.setChgReason(excReq.getChgReason());
|
|
|
- orderChange.setChgMemo(excReq.getChgMemo());
|
|
|
- orderChange.setChgerNm(excReq.getChgerNm());
|
|
|
- orderChange.setChgerPhnno(excReq.getChgerPhnno());
|
|
|
- orderChange.setChgerTelno(excReq.getChgerTelno());
|
|
|
- orderChange.setChgerEmail(excReq.getChgerEmail());
|
|
|
- orderChange.setChgerZipcode(excReq.getChgerZipcode());
|
|
|
- orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
|
|
|
- orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
|
|
|
- orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
|
|
|
- orderChange.setAddPayCost(excReq.getAddPayCost());
|
|
|
- orderChange.setAddPayAmt(excReq.getAddPayAmt());
|
|
|
- orderChange.setRegNo(excReq.getRegNo());
|
|
|
- orderChange.setUpdNo(excReq.getUpdNo());
|
|
|
-
|
|
|
- orderChangeDao.createOrderChange(orderChange);
|
|
|
-
|
|
|
- // 생성된 ordChgSq 설정
|
|
|
- excReq.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
-
|
|
|
- // 7. TB_ORDER_CHANGE_DETAIL 등록
|
|
|
- String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
|
|
|
|
|
|
- if (addPayCost > 0) {
|
|
|
- orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
|
|
|
- }
|
|
|
-
|
|
|
- // 8. TB_DELIVERY_FEE 추가배송비 등록
|
|
|
+ // 10. TB_SELL_QTY 등록
|
|
|
+ OrderChange sellQty = new OrderChange();
|
|
|
+ sellQty.setSellGb(TscConstants.SellGb.EXCHANGE.value());
|
|
|
+ sellQty.setRegNo(regNo);
|
|
|
+ sellQty.setOrdChgSq(ordChgSq);
|
|
|
+
|
|
|
+ orderChangeDao.createSellQty(sellQty);
|
|
|
|
|
|
- // 9. TB_SELL_QTY 등록
|
|
|
-
|
|
|
-
|
|
|
result.set("status", GagaResponseStatus.SUCCESS.getCode());
|
|
|
|
|
|
return result;
|