tsit05 4 年 前
コミット
5eb7601aa1

+ 27 - 0
src/main/java/com/style24/batch/biz/dao/TsbDeliveryDao.java

@@ -141,6 +141,14 @@ public interface TsbDeliveryDao {
 	 */
 	Delivery getOrderInfoList(Delivery delivery);
 	
+	/**
+	 * 주문정보 조회 
+	 * @param Delivery
+	 * @return
+	 * @author moon
+	 * @since 2021. 03. 23
+	 */
+	Delivery getOrderInfoList2(Delivery delivery);	
 	/**
 	 * 주문변경 회수완료
 	 * @param Delivery
@@ -195,6 +203,17 @@ public interface TsbDeliveryDao {
 	 */
 	Delivery getOrdDtlno(Delivery delivery);
 	
+	/**
+	 * 주문상세번호 조회 
+	 * @param Delivery
+	 * @return
+	 * @author moon
+	 * @since 2021. 04. 26
+	 */
+	Delivery getOrdDtlno2(Delivery delivery);
+		
+	
+	
 	/**
 	 * 출고 상태값변경 
 	 * @param Delivery
@@ -594,5 +613,13 @@ public interface TsbDeliveryDao {
 	 */
 	Collection<Delivery> getChgRecallExcList(Delivery ordNoData);		
 	
+	/**
+	 * 주문변경정보 조회 
+	 * @param Delivery
+	 * @return
+	 * @author moon
+	 * @since 2021. 07. 12
+	 */
+	Delivery getOrdchgSqInfo(Delivery delivery);
 	
 }

+ 29 - 1
src/main/java/com/style24/batch/biz/dao/TsbWmsDeliveryDao.java

@@ -153,7 +153,7 @@ public interface TsbWmsDeliveryDao {
 	void updateWmsIfDeliveryOrdRsltItem(Delivery delivery);
 		
 	/**
-	 * WMS_IF 회수결과 조회
+	 * WMS_IF 회수결과 조회  --> 확인후 삭제 ??
 	 * @param 
 	 * @return Collection<Delivery>
 	 * @author moon
@@ -161,6 +161,16 @@ public interface TsbWmsDeliveryDao {
 	 */
 	Collection<Delivery> getWmsIfRecallDeliveryList();	
 	
+	/**
+	 * WMS_IF 회수결과 주문변경번호 조회
+	 * @param 
+	 * @return Collection<Delivery>
+	 * @author moon
+	 * @since 2021. 07. 12
+	 */
+	Collection<Delivery> getWmsIfRecallDeliveryOrdChgNoList();		
+	
+	
 	
 	/**
 	 * WMS_IF 입고결과수신완료 -H
@@ -262,4 +272,22 @@ public interface TsbWmsDeliveryDao {
 	 */
 	void updateWmsRecallInvoice(Delivery delivery);
 	
+	/**
+	 * 입고결과 주문상세번호 조회 
+	 * @param 
+	 * @return Collection<Delivery>
+	 * @author moon
+	 * @since 2021. 07. 12
+	 */
+	Collection<Delivery> getWmsOrdDtlNoList(Delivery delivery);		
+	
+	/**
+	 * 입고결과 아이템 조회 
+	 * @param 
+	 * @return Collection<Delivery>
+	 * @author moon
+	 * @since 2021. 07. 12
+	 */
+	Collection<Delivery> getWmsOrdDtlItemList(Delivery delivery);			
+	
 }

+ 93 - 23
src/main/java/com/style24/batch/biz/job/delivery/TsbDeliveryOrderJob.java

@@ -108,6 +108,7 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 					    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
 					 }
 				 }
+				 WmsYn = "N";
 			 } else {
 				 ShopYn = "Y";
 			 }
@@ -196,14 +197,15 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 					 }
 					 
 				 } else {
-					 if(!"NAVER_ORDER".equals(ordNoData.getPgGb())) {
+					 if("NAVER_ORDER".equals(ordNoData.getPgGb())) { // 네이버 주문형
+						 
 						 // 주문상세번호 조회  
 						 Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
-						 int chkCnt = 0;
+						 
 						 for(Delivery wmsOrdDtlData : ordDtlNoWmsList) {
 							 // 주문상세아이템 조회  
 							 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
-							 
+							 int chkCnt = 0;
 							 for(Delivery item : itemList) {
 								 // WMS 재고체크 
 								 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
@@ -213,11 +215,77 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 									 }
 								 }
 							 }
+
+							 if(chkCnt >= itemList.size()) {
+								 wmsOrdDtlData.setDelvLocCd("DL001");
+									
+								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+								 wmsOrdDtlData.setDelvArGb("Y"); // 수락  
+								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
+								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+								 
+								 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
+								 wmsOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
+								 wmsOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
+								 deliveryService.updateTbOrderDtlAssign(wmsOrdDtlData);
+								 
+								 // wms 재고차감 등록(TB_SELL_QTY)  
+								 for(Delivery data : itemList) {	
+								    wmsDeliveryService.insertWmsTbIfDelifixQty(data);
+								 }
+							 } else {
+								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
+								 wmsOrdDtlData.setDelvLocCd("DL001");
+								 wmsOrdDtlData.setDelvArGb("N"); // 수락  
+								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
+								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+							 }
+						 }
+					 } else { // 일반 
+						 log.info("last:"+ordNoData.getOrdNo());
+						 // 주문상세번호 조회  
+						 Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
+						 int chkCnt = 0;
+						 for(Delivery wmsOrdDtlData : ordDtlNoWmsList) {
+							 
+							 if("G056_S".equals(wmsOrdDtlData.getGoodsType())) {
+								
+								 // 주문상세아이템 조회  
+								 int setCnt =0;
+								 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
+								 
+								 for(Delivery item : itemList) {
+									 // WMS 재고체크 
+									 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
+									 if(wmsStock !=null) {
+										 if(wmsStock.getLocQty() >= item.getOrdQty()) {
+											 setCnt = setCnt+1;
+										 }
+									 }
+								 }
+								 if(setCnt == itemList.size() ) {
+									 chkCnt = chkCnt+1;
+								 }
+							 } else {
+								 // 주문상세아이템 조회  
+								 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
+								 
+								 for(Delivery item : itemList) {
+									 // WMS 재고체크 
+									 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
+									 if(wmsStock !=null) {
+										 if(wmsStock.getLocQty() >= item.getOrdQty()) {
+											 chkCnt = chkCnt+1;
+										 }
+									 }
+								 }
+							 }
+	
 						 }
 						 if(chkCnt > 0) {
 							 for(Delivery wmsOrdDtlData : ordDtlNoList) {
+								 
 								 wmsOrdDtlData.setDelvLocCd("DL001");
-			
 								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
 								 wmsOrdDtlData.setDelvArGb("Y"); // 수락  
 								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
@@ -244,36 +312,37 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
 							 }
 						 }
-					 } else { // 네이버 주문형!!!
+						 /****
+						 
 						 // 주문상세번호 조회  
-						 Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
+						 Collection<Delivery> ordDtlNoSetList = deliveryService.getSetOrderDtlNoList(ordNoData);
 						 
-						 for(Delivery wmsOrdDtlData : ordDtlNoWmsList) {
+						 for(Delivery setOrdDtlData : ordDtlNoSetList) {
 							 // 주문상세아이템 조회  
-							 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
-							 int chkCnt = 0;
+							 Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(setOrdDtlData);
+							 int chkSetCnt = 0;
 							 for(Delivery item : itemList) {
 								 // WMS 재고체크 
 								 WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
 								 if(wmsStock !=null) {
 									 if(wmsStock.getLocQty() >= item.getOrdQty()) {
-										 chkCnt = chkCnt+1;
+										 chkSetCnt = chkSetCnt+1;
 									 }
 								 }
 							 }
-
-							 if(chkCnt >= itemList.size()) {
-								 wmsOrdDtlData.setDelvLocCd("DL001");
+						
+							 if(chkSetCnt > 0) {
+								 setOrdDtlData.setDelvLocCd("DL001");
 									
 								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 wmsOrdDtlData.setDelvArGb("Y"); // 수락  
-								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+								 setOrdDtlData.setDelvArGb("Y"); // 수락  
+								 setOrdDtlData.setLocQty(setOrdDtlData.getOrdQty()); 
+								 deliveryService.saveDeliveryAssign(setOrdDtlData);
 								 
 								 // 주문상태변경 및 출고처코드 등록 (TB_ORDER_DETAIL & TB_ORDER_DETAIL_HST)
-								 wmsOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
-								 wmsOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
-								 deliveryService.updateTbOrderDtlAssign(wmsOrdDtlData);
+								 setOrdDtlData.setOrdDtlStat("G013_35");  // 출고처지정 
+								 setOrdDtlData.setDelvAssignStat("Y");    // 출고처지정상태 
+								 deliveryService.updateTbOrderDtlAssign(setOrdDtlData);
 								 
 								 // wms 재고차감 등록(TB_SELL_QTY)  
 								 for(Delivery data : itemList) {	
@@ -281,12 +350,13 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
 								 }
 							 } else {
 								 // 출고처등록  및 history 등록   (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST) 
-								 wmsOrdDtlData.setDelvArGb("N"); // 수락  
-								 wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty()); 
-								 deliveryService.saveDeliveryAssign(wmsOrdDtlData);
+								 setOrdDtlData.setDelvLocCd("DL001");
+								 setOrdDtlData.setDelvArGb("N"); // 수락  
+								 setOrdDtlData.setLocQty(setOrdDtlData.getOrdQty()); 
+								 deliveryService.saveDeliveryAssign(setOrdDtlData);
 							 }
 						 }
-						 
+						 ***/
 					 }
 				 }
 			 }

+ 5 - 2
src/main/java/com/style24/batch/biz/job/delivery/TsbWithdrawRsltJob.java

@@ -45,7 +45,10 @@ public class TsbWithdrawRsltJob extends TsbAbstractJob<Collection<Delivery>, Col
 	@Override
 	public Collection<Delivery> read() throws Exception {
 		// WMS_IF 회수결과 조회
-		Collection<Delivery> delvList = wmsDeliveryService.getWmsIfRecallDeliveryList();
+		//Collection<Delivery> delvList = wmsDeliveryService.getWmsIfRecallDeliveryList();
+		Collection<Delivery> delvList = wmsDeliveryService.getWmsIfRecallDeliveryOrdChgNoList();
+		
+		
 		return delvList;
 	}
 
@@ -69,7 +72,7 @@ public class TsbWithdrawRsltJob extends TsbAbstractJob<Collection<Delivery>, Col
 				// 교환회수, 반품회수 정보 WMS 조회 처리
 				// 교환회수 ---> 교환완료, 교환결제완료
 				// 반품회수 ---> 반품진행중
-				deliveryService.saveWithdraw(data);
+				deliveryService.saveWithdraw2(data);
 
 				// 네이버페이 교환 회수완료 데이터 송부
 				if (OrderChangeGb.EXCHANGE.value().equals(data.getChgGb())) {  // 교환

+ 365 - 6
src/main/java/com/style24/batch/biz/service/TsbDeliveryService.java

@@ -84,6 +84,9 @@ public class TsbDeliveryService {
 	
 	@Autowired
 	private HansaeErp hansaeErp;
+	
+	@Autowired
+	private TsbWmsDeliveryService wmsDeliveryService;	
 
 	/**
 	 * 총알배송 권역정보 갱신 
@@ -358,10 +361,10 @@ public class TsbDeliveryService {
 		}
 
 		// TB_ORDER_CHANGE 
-		deliveryDao.updateTbOrderChange(data);
+		deliveryDao.updateTbOrderChange(data);       // 주문변경번호 단위 
 
 		// TB_ORDER_CHANGE_DETAIL
-		deliveryDao.updateTbOrderChangeDetail(data);
+		deliveryDao.updateTbOrderChangeDetail(data);  //  주문상세번호 단위 
 
 		// 주문상세변경 이력 
 		OrderChange ordChg = new OrderChange();
@@ -371,13 +374,14 @@ public class TsbDeliveryService {
 		ordChg.setOrdDtlNo(data.getOrderdtlno());
 		ordChg.setChgStat(data.getChgStat());
 		orderChangeDao.createOrderChangeDetailHst(ordChg);
+		
 
 		// TB_WITHDRAW 입력
-		deliveryDao.insertTbWithdraw(data);
+		deliveryDao.insertTbWithdraw(data);  // 주문변경번호단위 
 		// TB_WITHDRAW_DETAIL 입력
-		deliveryDao.insertTbWithdrawDetail(data);	
+		deliveryDao.insertTbWithdrawDetail(data);	// 주문변경번호  ITEM단위 
 		
-		// 교환일 경우  주문상세 상태값 처리  
+		// 교환일 경우  주문상세 상태값 처리  -> 
 		if(OrderChangeGb.EXCHANGE.value().equals(ordInfo.getChgGb()) && "N".equals(ordInfo.getWdBfSendYn())) {
 		
 			OrderChange orderChange = new OrderChange();
@@ -641,6 +645,362 @@ public class TsbDeliveryService {
 			} 
 	}
 	
+
+	/**
+	 * 회수결과 주문변경 처리 
+	 * @param  Delivery
+	 * @return 
+	 * @author moon
+	 * @since  2021. 07. 12
+	 */
+	@Transactional("shopTxnManager")
+	public void saveWithdraw2(Delivery data) {
+		
+		
+		Delivery chgSqInfo = deliveryDao.getOrdchgSqInfo(data);
+		
+		data.setChgGb(chgSqInfo.getChgGb());
+		data.setWdBfSendYn(chgSqInfo.getWdBfSendYn());
+		data.setWdInvoiceSendYn("Y");
+		data.setRtnLocCd("DL001");
+		
+		// TB_ORDER_CHANGE 
+		deliveryDao.updateTbOrderChange(data);       // 주문변경번호 단위 
+		
+		
+		// 교환일경우 자동 완료처리 
+		data.setRegNo(TsbConstants.REG_NO);
+		if (OrderChangeGb.EXCHANGE.value().equals(data.getChgGb())) {  // 교환 
+			data.setChgStat(OrderChangeStat.EXCHANGE_COMPLETE.value()); // 교환완료  G685_40
+		} else {
+			data.setChgStat(OrderChangeStat.RETURN_ING.value());  // 반품진행중 G685_33
+		}
+		
+		Collection<Delivery> ordDtlNoList = wmsDeliveryService.getWmsOrdDtlNoList(data);
+		
+		for(Delivery dtlNo : ordDtlNoList) {
+			
+			if (999999999 == dtlNo.getOrderdtlno()) {
+				dtlNo.setOrderno(data.getOrderno());
+				Delivery ordDtlNo = deliveryDao.getOrdDtlno2(dtlNo);
+				dtlNo.setOrdDtlNo(ordDtlNo.getOrdDtlNo());
+			}
+			
+			dtlNo.setUpdNo(TsbConstants.REG_NO);
+			dtlNo.setRegNo(TsbConstants.REG_NO);
+			dtlNo.setWmsmemo(data.getWmsmemo());
+			dtlNo.setChgGb(data.getChgGb());
+			dtlNo.setChgStat(data.getChgStat());
+			dtlNo.setOrdChgSq(data.getOrdChgSq());
+			dtlNo.setOrderdtlno(dtlNo.getOrdDtlNo());
+			
+			// TB_ORDER_CHANGE_DETAIL
+			deliveryDao.updateTbOrderChangeDetail(data);  //  주문상세번호 단위 
+
+			// 주문상세변경 이력 
+			OrderChange ordChg = new OrderChange();
+			ordChg.setRegNo(TsbConstants.REG_NO);
+			ordChg.setUpdNo(TsbConstants.REG_NO);
+			ordChg.setOrdChgSq(dtlNo.getOrdChgSq());
+			ordChg.setOrdDtlNo(dtlNo.getOrderdtlno());
+			ordChg.setChgStat(dtlNo.getChgStat());
+			orderChangeDao.createOrderChangeDetailHst(ordChg);
+			
+			Delivery ordInfo = deliveryDao.getOrderInfoList2(dtlNo);
+			
+			data.setCustNo(ordInfo.getCustNo());
+			dtlNo.setChgOrdDtlNo(ordInfo.getChgOrdDtlNo());  // getChgOrdDtlNo
+			// 교환일 경우  주문상세 상태값 처리  -> 
+			if(OrderChangeGb.EXCHANGE.value().equals(data.getChgGb()) && "N".equals(data.getWdBfSendYn())) {
+			
+				OrderChange orderChange = new OrderChange();
+				orderChange.setOrdChgSq(data.getOrdChgSq());
+				orderChange.setCustNo(data.getCustNo());
+				
+				// 주문변경상세정보 조회
+				Collection<OrderChange> orderChangeList = deliveryDao.getOrderChangeDetailInfo(orderChange);
+
+				// 환불 사전 정보 설정
+				int idx = 0;
+				int size = orderChangeList.size();
+				String chgGb = orderChangeList.iterator().next().getChgGb();
+				Integer ordNo = orderChangeList.iterator().next().getOrdNo();
+				Integer custNo = orderChangeList.iterator().next().getCustNo();
+				String ordNm = orderChangeList.iterator().next().getOrdNm();
+				String ordPhnno = orderChangeList.iterator().next().getOrdPhnno();
+				int[] ordDtlNoArr = new int[size];
+				int[] cnclRtnReqQtyArr = new int[size];
+
+				for (OrderChange param : orderChangeList) {
+					ordDtlNoArr[idx] = param.getOrdDtlNo();
+					cnclRtnReqQtyArr[idx] = param.getChgQty();
+					idx++;
+				}
+
+				// 회원/비회원 정보 설정
+				if (custNo > 0) {
+					orderChange.setCustNo(custNo);
+				} else {
+					orderChange.setOrdNm(ordNm);
+					orderChange.setOrdPhnno(ordPhnno);
+				}
+
+				orderChange.setOrdNo(ordNo);
+				orderChange.setChgGb(chgGb);
+				orderChange.setOrdDtlNoArr(ordDtlNoArr);
+				orderChange.setCnclRtnReqQtyArr(cnclRtnReqQtyArr);
+
+				// 환불 사전 정보 조회
+				GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(orderChange);
+				List<Order> cnclReqList2 = (List<Order>)refundPreInfo.get("cnclReqList");
+				
+				GagaMap info = orderRefundService.cnclRtnRefundAmt(cnclReqList2);
+
+				List<Order> cancelOrderRefundList = (List<Order>)info.get("cancelOrderRefundList");
+				//log.info("cnclReqList {}"+cnclReqList);
+				log.info("cancelOrderRefundList {}"+cancelOrderRefundList);
+				
+				for (Order vo : cancelOrderRefundList) {
+					
+					if(dtlNo.getOrdDtlNo().equals(vo.getOrdDtlNo()))
+					{
+						vo.setRegNo(TsbConstants.REG_NO);
+						vo.setUpdNo(TsbConstants.REG_NO);
+						vo.setOrdDtlStat(OrderDetailStat.PAYMENT_AFTER_CANCEL.value());
+							// 원주문 상세정보 수정
+							orderChangeDao.updateOrderDetail(vo);
+							// 원주문 상세 이력 등록
+							orderDao.createOrderDetailHst(vo);
+		
+							//vo.setOrdDtlNo(data.getOrderdtlno());
+							// 3-2-3. 주문상세단품정보 수정 및 주문상세단품이력 등록
+							// 주문상세단품정보조회
+							Collection<Order> orderDetailItemList = orderChangeDao.getOrderDetailItemForCnclRtn(vo);
+							int ordDtlOrdAmt 			= orderDetailItemList.iterator().next().getOrdAmt();
+							int ordDtlCnclRtnAmt	 	= orderDetailItemList.iterator().next().getCnclRtnAmt();
+							int ordDtlCpn1DcAmt 		= orderDetailItemList.iterator().next().getCpn1DcAmt();
+							int ordDtlTmtb1DcAmt 		= orderDetailItemList.iterator().next().getTmtb1DcAmt();
+							int ordDtlTmtb2DcAmt 		= orderDetailItemList.iterator().next().getTmtb2DcAmt();
+							int ordDtlGoodsCpnDcAmt 	= orderDetailItemList.iterator().next().getGoodsCpnDcAmt();
+							int ordDtlCartCpnDcAmt 		= orderDetailItemList.iterator().next().getCartCpnDcAmt();
+							int ordDtlPntDcAmt 			= orderDetailItemList.iterator().next().getPntDcAmt();
+							int ordDtlPrePntDcAmt 		= orderDetailItemList.iterator().next().getPrePntDcAmt();
+							int ordDtlSavePntAmt 		= orderDetailItemList.iterator().next().getSavePntAmt();
+							int ordDtlRealOrdAmt 		= orderDetailItemList.iterator().next().getRealOrdAmt();
+							int ordDtlGfcdUseAmt 		= orderDetailItemList.iterator().next().getGfcdUseAmt();
+		
+							// 주문상세단품단위 금액 등록
+							int length					= orderDetailItemList.size();
+							int index					= 1;
+							int leftOrdAmt 				= ordDtlOrdAmt;
+							int leftCnclRtnAmt			= ordDtlCnclRtnAmt;
+							int leftCpn1DcAmt 			= ordDtlCpn1DcAmt;
+							int leftTmtb1DcAmt 			= ordDtlTmtb1DcAmt;
+							int leftTmtb2DcAmt 			= ordDtlTmtb2DcAmt;
+							int leftGoodsCpnDcAmt 		= ordDtlGoodsCpnDcAmt;
+							int leftCartCpnDcAmt 		= ordDtlCartCpnDcAmt;
+							int leftPntDcAmt 			= ordDtlPntDcAmt;
+							int leftPrePntDcAmt 		= ordDtlPrePntDcAmt;
+							int leftSavePntAmt 			= ordDtlSavePntAmt;
+							int leftRealOrdAmt 			= ordDtlRealOrdAmt;
+							int leftGfcdUseAmt 			= ordDtlGfcdUseAmt;
+		
+							for (Order orderDetailItem : orderDetailItemList) {
+								double dtlOrdAmt		= orderDetailItem.getDtlOrdAmt();
+								double dtlItemOrdAmt	= orderDetailItem.getDtlItemOrdAmt();
+								double tempDivD			= (dtlItemOrdAmt / dtlOrdAmt) * 100;
+								
+								int tempDiv				= Integer.parseInt(String.valueOf(Math.round(tempDivD)));
+		
+								if (index == length) {
+									orderDetailItem.setCnclRtnAmt(leftCnclRtnAmt);
+									orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt);
+									orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt);
+									orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt);
+									orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt);
+									orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt);
+									orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt);
+									orderDetailItem.setPntDcAmt(leftPntDcAmt);
+									orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt);
+									orderDetailItem.setRealOrdAmt(leftRealOrdAmt);
+									orderDetailItem.setSavePntAmt(leftSavePntAmt);
+									
+								} else {
+									orderDetailItem.setCnclRtnAmt((ordDtlCnclRtnAmt 		* tempDiv) / 100);
+									orderDetailItem.setCpn1DcAmt((ordDtlCpn1DcAmt 			* tempDiv) / 100);
+									orderDetailItem.setTmtb1DcAmt((ordDtlTmtb1DcAmt 		* tempDiv) / 100);
+									orderDetailItem.setTmtb2DcAmt((ordDtlTmtb2DcAmt 		* tempDiv) / 100);
+									orderDetailItem.setGoodsCpnDcAmt((ordDtlGoodsCpnDcAmt 	* tempDiv) / 100);
+									orderDetailItem.setCartCpnDcAmt((ordDtlCartCpnDcAmt 	* tempDiv) / 100);
+									orderDetailItem.setPrePntDcAmt((ordDtlPrePntDcAmt 		* tempDiv) / 100);
+									orderDetailItem.setPntDcAmt((ordDtlPntDcAmt 			* tempDiv) / 100);
+									orderDetailItem.setGfcdUseAmt((ordDtlGfcdUseAmt 		* tempDiv) / 100);
+									orderDetailItem.setRealOrdAmt((ordDtlRealOrdAmt 		* tempDiv) / 100);
+									orderDetailItem.setSavePntAmt((ordDtlSavePntAmt 		* tempDiv) / 100);
+		
+									leftCnclRtnAmt		-= ((ordDtlCnclRtnAmt 				* tempDiv) / 100);
+									leftCpn1DcAmt 		-= ((ordDtlCpn1DcAmt 				* tempDiv) / 100);
+									leftTmtb1DcAmt 		-= ((ordDtlTmtb1DcAmt 				* tempDiv) / 100);
+									leftTmtb2DcAmt 		-= ((ordDtlTmtb2DcAmt 				* tempDiv) / 100);
+									leftGoodsCpnDcAmt 	-= ((ordDtlGoodsCpnDcAmt 			* tempDiv) / 100);
+									leftCartCpnDcAmt 	-= ((ordDtlCartCpnDcAmt 			* tempDiv) / 100);
+									leftPrePntDcAmt 	-= ((ordDtlPrePntDcAmt 				* tempDiv) / 100);
+									leftPntDcAmt 		-= ((ordDtlPntDcAmt 				* tempDiv) / 100);
+									leftGfcdUseAmt 		-= ((ordDtlGfcdUseAmt 				* tempDiv) / 100);
+									leftRealOrdAmt 		-= ((ordDtlRealOrdAmt 				* tempDiv) / 100);
+									leftSavePntAmt 		-= ((ordDtlSavePntAmt 				* tempDiv) / 100);
+								}
+		
+								orderDetailItem.setRegNo(TsbConstants.REG_NO);
+								orderDetailItem.setUpdNo(TsbConstants.REG_NO);
+								orderDetailItem.setOrdDtlStat(vo.getOrdDtlStat());
+								
+								// 2021.06.25 WMS 회수정보 수집 (교환완료) (정산구분값추가)
+								orderDetailItem.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_RETURN_EXCHANGE_COMPLETE.value());
+								orderDetailItem.setCnclRtnQty(vo.getOrdCanChgQty());  
+								orderDetailItem.setOrdChgSq(data.getOrdChgSq());
+								orderChangeDao.createOrderDetailItemHst(orderDetailItem);
+		
+								orderChangeDao.updateOrderDetailItem(orderDetailItem);
+
+								index++;
+							}
+							
+							// 교환주문 상세 수정
+							vo.setOrdDtlStat(OrderDetailStat.PAYMENT_COMPLETE.value()); // 교환주문상세 결제완료
+							vo.setOrdDtlNo(dtlNo.getChgOrdDtlNo());
+							vo.setWdBfSendYn(data.getWdBfSendYn());
+							orderChangeDao.updateChgOrderDetailTemp(vo);
+							// 교환주문 상세 이력 등록 
+							orderDao.createOrderDetailHst(vo);
+							
+							// 주문상세단품정보조회
+							Collection<Order> orderDetailItemList2 = orderChangeDao.getOrderDetailItemForCnclRtn(vo);
+							int ordDtlOrdAmt2 			= orderDetailItemList2.iterator().next().getOrdAmt();
+							int ordDtlCnclRtnAmt2	 	= orderDetailItemList2.iterator().next().getCnclRtnAmt();
+							int ordDtlCpn1DcAmt2 		= orderDetailItemList2.iterator().next().getCpn1DcAmt();
+							int ordDtlTmtb1DcAmt2 		= orderDetailItemList2.iterator().next().getTmtb1DcAmt();
+							int ordDtlTmtb2DcAmt2 		= orderDetailItemList2.iterator().next().getTmtb2DcAmt();
+							int ordDtlGoodsCpnDcAmt2 	= orderDetailItemList2.iterator().next().getGoodsCpnDcAmt();
+							int ordDtlCartCpnDcAmt2 	= orderDetailItemList2.iterator().next().getCartCpnDcAmt();
+							int ordDtlPntDcAmt2 		= orderDetailItemList2.iterator().next().getPntDcAmt();
+							int ordDtlPrePntDcAmt2 		= orderDetailItemList2.iterator().next().getPrePntDcAmt();
+							int ordDtlSavePntAmt2 		= orderDetailItemList2.iterator().next().getSavePntAmt();
+							int ordDtlRealOrdAmt2 		= orderDetailItemList2.iterator().next().getRealOrdAmt();
+							int ordDtlGfcdUseAmt2 		= orderDetailItemList2.iterator().next().getGfcdUseAmt();
+		
+							// 주문상세단품단위 금액 등록
+							int length2					= orderDetailItemList2.size();
+							int index2					= 1;
+							int leftOrdAmt2 			= ordDtlOrdAmt2;
+							int leftCnclRtnAmt2			= ordDtlCnclRtnAmt2;
+							int leftCpn1DcAmt2 			= ordDtlCpn1DcAmt2;
+							int leftTmtb1DcAmt2 		= ordDtlTmtb1DcAmt2;
+							int leftTmtb2DcAmt2 		= ordDtlTmtb2DcAmt2;
+							int leftGoodsCpnDcAmt2 		= ordDtlGoodsCpnDcAmt2;
+							int leftCartCpnDcAmt2 		= ordDtlCartCpnDcAmt2;
+							int leftPntDcAmt2 			= ordDtlPntDcAmt2;
+							int leftPrePntDcAmt2 		= ordDtlPrePntDcAmt2;
+							int leftSavePntAmt2 		= ordDtlSavePntAmt2;
+							int leftRealOrdAmt2 		= ordDtlRealOrdAmt2;
+							int leftGfcdUseAmt2 		= ordDtlGfcdUseAmt2;
+		
+							for (Order orderDetailItem : orderDetailItemList2) {
+								double dtlOrdAmt		= orderDetailItem.getDtlOrdAmt();
+								double dtlItemOrdAmt	= orderDetailItem.getDtlItemOrdAmt();
+								double tempDivD			= (dtlItemOrdAmt / dtlOrdAmt) * 100;
+								
+								int tempDiv				= Integer.parseInt(String.valueOf(Math.round(tempDivD)));
+		
+								if (index2 == length2) {
+									orderDetailItem.setOrdAmt(leftOrdAmt2);
+									orderDetailItem.setCnclRtnAmt(leftCnclRtnAmt2);
+									orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt2);
+									orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt2);
+									orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt2);
+									orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt2);
+									orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt2);
+									orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt2);
+									orderDetailItem.setPntDcAmt(leftPntDcAmt2);
+									orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt2);
+									orderDetailItem.setRealOrdAmt(leftRealOrdAmt2);
+									orderDetailItem.setSavePntAmt(leftSavePntAmt2);
+									
+								} else {
+									orderDetailItem.setOrdAmt((ordDtlOrdAmt2 				* tempDiv) / 100);
+									orderDetailItem.setCnclRtnAmt((ordDtlCnclRtnAmt2 		* tempDiv) / 100);
+									orderDetailItem.setCpn1DcAmt((ordDtlCpn1DcAmt2 			* tempDiv) / 100);
+									orderDetailItem.setTmtb1DcAmt((ordDtlTmtb1DcAmt2 		* tempDiv) / 100);
+									orderDetailItem.setTmtb2DcAmt((ordDtlTmtb2DcAmt2 		* tempDiv) / 100);
+									orderDetailItem.setGoodsCpnDcAmt((ordDtlGoodsCpnDcAmt2 	* tempDiv) / 100);
+									orderDetailItem.setCartCpnDcAmt((ordDtlCartCpnDcAmt2 	* tempDiv) / 100);
+									orderDetailItem.setPrePntDcAmt((ordDtlPrePntDcAmt2 		* tempDiv) / 100);
+									orderDetailItem.setPntDcAmt((ordDtlPntDcAmt2 			* tempDiv) / 100);
+									orderDetailItem.setGfcdUseAmt((ordDtlGfcdUseAmt2 		* tempDiv) / 100);
+									orderDetailItem.setRealOrdAmt((ordDtlRealOrdAmt2 		* tempDiv) / 100);
+									orderDetailItem.setSavePntAmt((ordDtlSavePntAmt2 		* tempDiv) / 100);
+		
+									leftOrdAmt2         -= ((ordDtlOrdAmt2 					* tempDiv) / 100);
+									leftCnclRtnAmt2		-= ((ordDtlCnclRtnAmt2 				* tempDiv) / 100);
+									leftCpn1DcAmt2 		-= ((ordDtlCpn1DcAmt2 				* tempDiv) / 100);
+									leftTmtb1DcAmt2 	-= ((ordDtlTmtb1DcAmt2 				* tempDiv) / 100);
+									leftTmtb2DcAmt2 	-= ((ordDtlTmtb2DcAmt2 				* tempDiv) / 100);
+									leftGoodsCpnDcAmt2 	-= ((ordDtlGoodsCpnDcAmt2 			* tempDiv) / 100);
+									leftCartCpnDcAmt2 	-= ((ordDtlCartCpnDcAmt2 			* tempDiv) / 100);
+									leftPrePntDcAmt2 	-= ((ordDtlPrePntDcAmt2 			* tempDiv) / 100);
+									leftPntDcAmt2 		-= ((ordDtlPntDcAmt2 				* tempDiv) / 100);
+									leftGfcdUseAmt2 	-= ((ordDtlGfcdUseAmt2 				* tempDiv) / 100);
+									leftRealOrdAmt2 	-= ((ordDtlRealOrdAmt2 				* tempDiv) / 100);
+									leftSavePntAmt2 	-= ((ordDtlSavePntAmt2 				* tempDiv) / 100);
+								}
+								log.info("orderDetailItem: "+orderDetailItem.getOrdAmt());
+								orderDetailItem.setRegNo(TsbConstants.REG_NO);
+								orderDetailItem.setUpdNo(TsbConstants.REG_NO);
+								orderDetailItem.setOrdDtlStat(vo.getOrdDtlStat());
+								
+								// 2021.06.25 WMS 회수정보 수집 (교환결제완료) (정산구분값추가)
+								orderDetailItem.setOrdDtlStat(TscConstants.OrdDtlItemStat.SALE_PAYMENT_COMPLETE.value()); // G720_10  판매-결제완료
+								orderDetailItem.setCnclRtnQty(0);
+								orderDetailItem.setOrdChgSq(data.getOrdChgSq());
+								orderChangeDao.updateChgOrderDetailItemTemp(orderDetailItem);
+								orderDetailItem.setExchangeOrdDtlItemSq(orderDetailItem.getOrdDtlItemSq());
+								orderChangeDao.createOrderDetailItemHstForExchange(orderDetailItem);
+								
+								index2++;
+							}
+						}
+					}
+				} 
+
+		}
+		
+		// TB_WITHDRAW 입력
+		deliveryDao.insertTbWithdraw(data);  // 주문변경번호단위 
+		
+		Collection<Delivery> ordDtlItemList = wmsDeliveryService.getWmsOrdDtlItemList(data);
+		for(Delivery item : ordDtlItemList) {
+			
+			if (999999999 == item.getOrderdtlno()) {
+				item.setOrderno(data.getOrderno());
+				Delivery ordDtlNo = deliveryDao.getOrdDtlno2(item);
+				item.setOrdDtlNo(ordDtlNo.getOrdDtlNo());
+			}
+			
+			item.setRegNo(TsbConstants.REG_NO);
+			item.setOrdChgSq(data.getOrdChgSq());
+			Delivery ordInfo = deliveryDao.getOrderInfoList(item);
+			
+			item.setItemCd(ordInfo.getItemCd());
+			item.setOptCd1(ordInfo.getOptCd1());
+			item.setOptCd2(ordInfo.getOptCd2());
+			item.setSellStoreCd(ordInfo.getSellStoreCd());
+			// TB_WITHDRAW_DETAIL 입력
+			deliveryDao.insertTbWithdrawDetail(item);	// 주문변경번호  ITEM단위 
+			
+			data.setCustNo(ordInfo.getCustNo());
+		}
+
+	}	
 	/**
 	 * 주문정보 조회 
 	 * @param Delivery
@@ -1453,5 +1813,4 @@ public class TsbDeliveryService {
 		data.setRegNo(userNo);
 		deliveryDao.insertTbExchangeDelvFail(data);
 	}
-	
 }

+ 44 - 0
src/main/java/com/style24/batch/biz/service/TsbWmsDeliveryService.java

@@ -242,6 +242,22 @@ public class TsbWmsDeliveryService {
 		return list ;
 	}	
 	
+	/**
+	 * WMS_IF 회수결과 주문변경번호 조회 
+	 * @param 
+	 * @return Collection<Delivery>
+	 * @author moon
+	 * @since  2021. 07. 12
+	 */
+	public Collection<Delivery> getWmsIfRecallDeliveryOrdChgNoList() {
+
+		Collection<Delivery> list = wmsDeliveryDao.getWmsIfRecallDeliveryOrdChgNoList();
+		return list ;
+	}	
+		
+	
+	
+	
 	/**
 	 * WMS_IF 회수결과 처리결과 등록 
 	 * 
@@ -395,4 +411,32 @@ public class TsbWmsDeliveryService {
 		wmsDeliveryDao.updateWmsRecallInvoice(delivery);
 	}
 	
+	/**
+	 * 입고결과 주문상세번호 조회 
+	 * @param 
+	 * @return Collection<Delivery>
+	 * @author moon
+	 * @since  2021. 07. 12
+	 */
+	public Collection<Delivery> getWmsOrdDtlNoList(Delivery data) {
+
+		Collection<Delivery> list = wmsDeliveryDao.getWmsOrdDtlNoList(data);
+		return list ;
+	}	
+	
+	/**
+	 * 입고결과 아이템 조회 
+	 * @param 
+	 * @return Collection<Delivery>
+	 * @author moon
+	 * @since  2021. 07. 12
+	 */
+	public Collection<Delivery> getWmsOrdDtlItemList(Delivery data) {
+
+		Collection<Delivery> list = wmsDeliveryDao.getWmsOrdDtlItemList(data);
+		return list ;
+	}	
+	
+	
+	
 }

+ 67 - 11
src/main/java/com/style24/persistence/mybatis/shop/TsbDelivery.xml

@@ -328,10 +328,41 @@
 		   AND C.OPT_CD       = #{skucode}
 		   AND C.PRODUCT_NO   = #{productno}
 		   AND C.PRODUCT_CODE = #{productcode}
+		   AND E.ORD_CHG_SQ   = #{ordChgSq} 
 		   AND D.DEL_YN       = 'N'
 		   AND D.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
 	</select>
 
+	<!-- 주문정보 조회 -->	
+	<select id="getOrderInfoList2" resultType="Delivery">
+		/*TsbDelivery.getOrderInfoList2*/
+		SELECT 
+			  B.ORD_NO
+			, B.ORD_DTL_NO
+			, C.ITEM_CD 
+			, C.OPT_CD 
+			, C.OPT_CD1 
+			, C.OPT_CD2 
+			, D.ORD_CHG_SQ 
+			, D.CHG_ORD_DTL_NO
+			, B.ORD_EXCH_GB     -- 주문교환구분(O:주문,E:교환)
+			, B.SELL_STORE_CD
+			, E.CHG_GB          -- 변경구분 
+			, E.WD_GB           -- 회수구분 (W:회수요청, D:직접배송)
+			, A.CUST_NO 
+			, E.WD_BF_SEND_YN
+		  FROM TB_ORDER A
+		  JOIN TB_ORDER_DETAIL B        ON A.ORD_NO     = B.ORD_NO
+		  JOIN TB_ORDER_DETAIL_ITEM C   ON B.ORD_NO     = C.ORD_NO AND B.ORD_DTL_NO = C.ORD_DTL_NO 
+		  JOIN TB_ORDER_CHANGE_DETAIL D ON B.ORD_DTL_NO = D.ORD_DTL_NO 
+		  JOIN TB_ORDER_CHANGE        E ON D.ORD_CHG_SQ = E.ORD_CHG_SQ 
+		 WHERE A.ORD_NO       = #{orderno}
+		   AND B.ORD_DTL_NO   = #{ordDtlNo}
+		   AND E.ORD_CHG_SQ   = #{ordChgSq} 
+		   AND D.DEL_YN       = 'N'
+		   AND D.CHG_STAT IN ('G685_30','G685_31') -- 회수요청 상품검수중
+	</select>
+	
 	<!-- 회수결과 등록  -->
 	<update id="insertTbWithdraw" parameterType="Delivery" >
 		/*TsbDelivery.insertTbWithdraw*/
@@ -515,10 +546,12 @@
 	<select id="getOrdDtlno" resultType="Delivery">
 		/*TsbDelivery.getOrdDtlno*/
 		SELECT ORD_DTL_NO 
-		  FROM TB_ORDER_DETAIL_ITEM 
+		  FROM TB_ORDER_DETAIL_ITEM A 
+		  JOIN TB_ORDER_DETAIL B ON A.ORD_NO = B.ORD_NO AND A.ORD_DTL_NO = B.ORD_DTL_NO 
 		 WHERE ORD_NO     = #{orderno}
 		   AND PRODUCT_NO = #{productno}
 		   AND OPT_CD     = #{skucode}
+		   AND B.ORD_DTL_STAT NOT IN ('G013_50','G013_55','G013_60','G013_70','G013_97','G013_98','G013_99')
 	</select>
 		
 	<!-- 주문상세 상태값변경    -->
@@ -595,7 +628,6 @@
 			                   AND DELV_AR_GB  = 'N'
 			              )
 			    AND A.REG_DT >= DATE_ADD(DATE_FORMAT(STR_TO_DATE(NOW(), '%Y-%m-%d'),'%Y%m%d%H%i%S') , INTERVAL -1 DAY)   -- 테스트 임시 
-			AND A.REG_NO in(2722006,0,139567,24) -- 테스트 임시 
 				 AND A.MALL_GB ='G011_10'   -- 테스트 임시 
 			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
 			
@@ -622,7 +654,6 @@
 			                   AND DELV_LOC_CD = 'DL001'
 			                   AND DELV_AR_GB  = 'N'
 			              )
-			 AND A.REG_NO in(2722006,0,139567,24) -- 테스트 임시 
 			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
 
 			UNION ALL  
@@ -646,7 +677,7 @@
 			                   AND DELV_LOC_CD = 'DL001'
 			                   AND DELV_AR_GB  = 'N'
 			              )
-			AND A.REG_NO in(2722006,0,139567,24) -- 테스트 임시 
+			   AND (SELECT COUNT(*) FROM TB_GOODS_RES_SELL WHERE DELV_RES_DT > NOW() AND GOODS_CD = B.GOODS_CD) = 0
 			AND A.MALL_GB ='G011_10'     -- 테스트 임시 
 			 GROUP BY A.ORD_NO, B.ORD_EXCH_GB
 
@@ -675,6 +706,7 @@
 		 ORDER BY B.ORD_DTL_NO		
 	</select>
 		
+		
 	<!-- 출고대상 주문상세아이템 조회  -->	
 	<select id="getOrderDtlItemList" resultType="Delivery">
 		/*TsbDelivery.getOrderDtlItemList*/
@@ -1138,7 +1170,7 @@
 		   AND E.SELF_GOODS_YN  = 'Y' -- 자사상품 
 		   AND E.RETURNABLE_YN  = 'Y' -- 반품가능여부 
 		   AND G.MALL_GB        = 'G011_10' -- 자사몰
-		   AND A.REG_NO in(2722006,0,139567,24) -- 테스트 임시 
+		   AND A.REG_NO in(100025) -- 테스트 임시 
 		
 		UNION ALL 
 		
@@ -1188,7 +1220,7 @@
 		   AND E.SELF_GOODS_YN  = 'Y' -- 자사상품
 		   AND E.CHANGEABLE_YN  = 'Y' -- 교환가능여부
 		   AND G.MALL_GB        = 'G011_10' -- 자사몰 
-		   AND A.REG_NO in(2722006,0,139567,24) -- 테스트 임시 
+		   AND A.REG_NO in(100025) -- 테스트 임시 
 		
 		UNION ALL 
 		
@@ -1240,7 +1272,7 @@
 		   AND E.SELF_GOODS_YN  = 'Y' -- 자사상품 
 		   AND E.RETURNABLE_YN  = 'Y' -- 반품가능여부 
 		   AND G.MALL_GB        = 'G011_20' -- 제휴몰 
-		   AND A.REG_NO in(2722006,0,139567,24) -- 테스트 임시 
+		   AND A.REG_NO in(100025) -- 테스트 임시 
 		
 		UNION ALL 
 		
@@ -1292,7 +1324,7 @@
 		   AND E.SELF_GOODS_YN  = 'Y' -- 자사상품
 		   AND E.CHANGEABLE_YN  = 'Y' -- 교환가능여부
 		   AND G.MALL_GB        = 'G011_20' -- 제휴몰 		
-		   AND A.REG_NO in(2722006,0,139567,24) -- 테스트 임시 
+		   AND A.REG_NO in(100025) -- 테스트 임시 
 		) A ORDER BY OrderExceptionNo
 	</select>	
 		
@@ -1393,7 +1425,7 @@
 			   AND A.CHG_GB IN('G680_30','G680_40')   -- 반품요청 교환요청
 			   AND A.SWT_TRC_SEND_YN = 'N'
 			   AND A.WD_GB           = 'W'
-			   AND B.CHG_STAT IN('G685_30','G685_31') --  회수요청 상품검수중
+			   AND B.CHG_STAT IN('G685_30') --  회수요청
 			 GROUP BY A.WD_INVOICE_NO, A.SHIP_COMP_CD, A.ORD_CHG_SQ 
 		 ) A WHERE SWT_SHIP_COMP_CD IS NOT NULL AND SWT_SHIP_COMP_CD != ''
 	</select>
@@ -1447,6 +1479,7 @@
 			   AND C.SELF_GOODS_YN = 'Y'       -- 자사 상품
 			   AND A.ORD_DT < DATE_ADD(DATE_FORMAT(CONCAT(STR_TO_DATE(NOW(), '%Y-%m-%d'),' 10:00:00'),'%Y%m%d%H%i%S') , INTERVAL -1 DAY)
 			   AND A.ORD_DT > DATE_ADD(DATE_FORMAT(CONCAT(STR_TO_DATE(NOW(), '%Y-%m-%d'),' 10:00:00'),'%Y%m%d%H%i%S') , INTERVAL -2 DAY)  -- 테스트 위한 임시 
+			--   AND A.ORD_DT >= DATE_ADD(DATE_FORMAT('20210901','%Y%m%d%H%i%S') , INTERVAL 0 DAY)   -- 오픈 시점 날짜 세팅 후 주석풀기 
 			   AND A.MALL_GB ='G011_10'  -- 테스트 위한 임시 
 			
 			UNION ALL  
@@ -1461,6 +1494,7 @@
 			   AND D.USE_YN        = 'Y'
 			   AND D.DELV_RES_DT < DATE_ADD(DATE_FORMAT(CONCAT(STR_TO_DATE(NOW(), '%Y-%m-%d'),' 10:00:00'),'%Y%m%d%H%i%S') , INTERVAL -1 DAY)
 			   AND D.DELV_RES_DT > DATE_ADD(DATE_FORMAT(CONCAT(STR_TO_DATE(NOW(), '%Y-%m-%d'),' 10:00:00'),'%Y%m%d%H%i%S') , INTERVAL -2 DAY)  -- 테스트 위한 임시 
+			   --   AND A.ORD_DT >= DATE_ADD(DATE_FORMAT('20210901','%Y%m%d%H%i%S') , INTERVAL 0 DAY)   -- 오픈 시점 날짜 세팅 후 주석풀기 
 		) A 
 		GROUP BY A.ORD_NO
 		ORDER BY ORD_NO
@@ -1674,6 +1708,8 @@
 		SELECT  ORD_DTL_ITEM_SQ
 		  FROM TB_ORDER_DETAIL_ITEM 
 		WHERE ORD_DTL_NO = #{ordDtlNo}
+		  AND PRODUCT_NO = #{productno}
+		  AND OPT_CD     = #{skucode}
 	</select>	
 	
 	<!-- 교환 출고예외 조회        -->
@@ -1708,6 +1744,26 @@
 		   AND C.ORD_EXCH_GB = 'E'
 	</select>		
 
-		   
-		   
+	<!-- 주문변경정보  조회 -->	
+	<select id="getOrdchgSqInfo" resultType="Delivery">
+		/*TsbDelivery.getOrdchgSqInfo*/
+		SELECT CHG_GB
+		     , WD_GB 
+		     , WD_BF_SEND_YN 
+		  FROM TB_ORDER_CHANGE
+		 WHERE ORD_CHG_SQ   = #{ordChgSq}
+	</select>
+	
+	<!-- 주문상세번호 조회 -->	
+	<select id="getOrdDtlno2" resultType="Delivery">
+		/*TsbDelivery.getOrdDtlno2*/
+		SELECT DISTINCT ORD_DTL_NO 
+		  FROM TB_ORDER_DETAIL_ITEM A 
+		  JOIN TB_ORDER_DETAIL B ON A.ORD_NO = B.ORD_NO AND A.ORD_DTL_NO = B.ORD_DTL_NO 
+		 WHERE ORD_NO     = #{orderno}
+		   AND PRODUCT_NO = #{productno}
+		   AND OPT_CD     = #{skucode}
+		   AND B.ORD_DTL_STAT IN ('G013_50','G013_55','G013_60','G013_70')
+	</select>
+	
 </mapper>

+ 71 - 1
src/main/java/com/style24/persistence/mybatis/wms/TsbWmsDelivery.xml

@@ -280,9 +280,11 @@
 		   AND A.IsDeleted = 0
 		   AND B.StatusCd  = '입고완료'   
 		   AND B.IfStat    = '2' -- 회수완료 
-
 	</select>
 	
+
+		
+	
 	<!-- 회수결과수신완료    -->
 	<update id="updateWmsIfRecallDeliveryRslt" parameterType="Delivery" >
 		/*TsbWmsDelivery.updateWmsIfRecallDeliveryRslt*/
@@ -621,4 +623,72 @@
 		  AND GiftYn              = 'Y' 
 	</update>
 	
+	<!-- WMS_IF 회수결과 주문변경번호 목록   -->	
+	<select id="getWmsIfRecallDeliveryOrdChgNoList" resultType="Delivery" timeout="600">
+		/*TsbWmsDelivery.getWmsIfRecallDeliveryOrdChgNoList*/		
+		SELECT 
+			  A.RecallNo			-- 반품 번호
+			, A.OrderExceptionNo	AS ORD_CHG_SQ -- 주문변경번호 (주문 예외 번호 ASIS) 
+			, A.RecallTypeCd		-- 반품 타입
+			, A.OrderNo				-- 주문 번호
+			, cast(A.CSMemo as varchar)	AS CSMemo			-- CS 메모
+			, A.DateCSMemoUpdated	-- CS 메모 변경일
+			, cast(A.WMSMemo as varchar) WMSMemo				-- WMS 메모
+			, A.DateWMSMemoUpdated	-- WMS 메모 변경일
+			, A.encloseFee          -- 동봉비 
+			, CASE WHEN A.DateCreated > '20210620 00:00:00' THEN 'N' ELSE 'Y' END AS ASIS_YN 
+			, A.CodFee
+			, MAX(B.DateCompleted) AS DateCompleted		-- 완료일
+			, MAX(B.InvoiceNo) AS InvoiceNo			-- 원운송장번호
+			, MAX(B.logisticscode) AS logisticscode
+			, MAX(B.RecallInvoiceNo) AS RecallInvoiceNo		-- 반품 명세서(회수운송장번호)
+		  FROM istyle24_Wmsif.dbo.TB_IF_RECALLDELIVERY A, istyle24_Wmsif.dbo.TB_IF_RECALLDELIVERYITEM B
+		 WHERE A.RecallNo  = B.RecallNo
+		   AND A.IsDeleted = 0
+		   AND B.StatusCd  = '입고완료'   
+		   AND B.IfStat    = '2' -- 회수완료 
+		 GROUP BY  A.RecallNo, A.OrderExceptionNo, A.RecallTypeCd, A.OrderNo, cast(A.CSMemo as varchar), A.DateCSMemoUpdated
+			, cast(A.WMSMemo as varchar), A.DateWMSMemoUpdated, A.encloseFee, A.DateCreated, A.CodFee
+	</select>
+		
+	<!-- 입고결과 주문상세번호 조회  -->
+	<select id="getWmsOrdDtlNoList" resultType="Delivery" timeout="600" >
+		/*TsbWmsDelivery.getWmsOrdDtlNoList*/
+		SELECT 
+			  A.RecallNo			-- 반품 번호
+			, A.OrderExceptionNo  AS ORD_CHG_SQ -- 주문변경번호 (주문 예외 번호 ASIS) 
+			, MAX(B.ProductNo)    AS ProductNo			-- 상품 번호
+			, MAX(B.ProductCode)  AS ProductCode			-- 상품 코드
+			, MAX(B.SKUCode)      AS SKUCode				-- 옵션 코드
+			, ISNULL(B.OrderDtlNo,999999999)        AS ORD_DTL_NO	-- 주문상세번호
+		  FROM istyle24_Wmsif.dbo.TB_IF_RECALLDELIVERY A, istyle24_Wmsif.dbo.TB_IF_RECALLDELIVERYITEM B
+		 WHERE A.RecallNo  = B.RecallNo
+		   AND A.IsDeleted = 0
+		   AND B.StatusCd  = '입고완료'   
+		   AND B.IfStat    = '2' -- 회수완료
+		   AND A.RecallNo  = #{recallno}
+		GROUP BY A.RecallNo, A.OrderExceptionNo, B.OrderDtlNo   
+	</select>
+	
+	<!-- 입고결과 아이템 조회  -->
+	<select id="getWmsOrdDtlItemList" resultType="Delivery" timeout="600" >
+		/*TsbWmsDelivery.getWmsOrdDtlItemList*/
+		SELECT 
+			  A.RecallNo			-- 반품 번호
+			, A.OrderExceptionNo  AS ORD_CHG_SQ -- 주문변경번호 (주문 예외 번호 ASIS) 
+			, B.ProductNo		-- 상품 번호
+			, B.ProductCode			-- 상품 코드
+			, B.SKUCode			-- 옵션 코드
+			, B.RecallQty			-- 수량
+			, B.RecallInvoiceNo	
+			, ISNULL(B.OrderDtlNo,999999999)        AS ORD_DTL_NO	-- 주문상세번호
+		  FROM istyle24_Wmsif.dbo.TB_IF_RECALLDELIVERY A, istyle24_Wmsif.dbo.TB_IF_RECALLDELIVERYITEM B
+		 WHERE A.RecallNo  = B.RecallNo
+		   AND A.IsDeleted = 0
+		   AND B.StatusCd  = '입고완료'   
+		   AND B.IfStat    = '2' -- 회수완료
+		   AND A.RecallNo  = #{recallno}
+	</select>
+		
+		
 </mapper>