Forráskód Böngészése

Merge branch 'develop' into bin2107

bin2107 4 éve
szülő
commit
40daec779d

+ 46 - 1
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -1047,7 +1047,7 @@ public class TsaShoplinkerService {
 				,"주문 상품번호", "샵링커 상품번호", "자사 상품코드", "상품명", "주문수량", "주문금액", "판매단가", "공급가", "옵션명", "주문수집일자", "제휴몰등록일"};
 
 		// DB 처리 시 사용되는 파라미터명(셀명) 설정
-		String[] cellNames = {"UPLOAD_STAT", "UPLOAD_FAIL_CD", "UPLOAD_FAIL_REASON", "ORD_NO", "SHOPLINKER_ORDER_ID", "EXTMALL_ORDER_ID", "MALL_NAME", "BAESONG_STATUS"
+		String[] cellNames = {"UPLOAD_STAT", "UPLOAD_FAIL_CD", "UPLOAD_FAIL_REASON", "ORD_NO", "SHOPLINKER_ORDER_ID", "MALL_ORDER_ID", "MALL_NAME", "BAESONG_STATUS"
 				, "ORDER_PRODUCT_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "QUANTITY", "ORDER_PRICE", "SALE_PRICE", "SUPPLY_PRICE", "SKU", "ORDER_REG_DATE", "EXTMALL_REG_DT"};
 
 		String[] cellTypes = {
@@ -1073,6 +1073,51 @@ public class TsaShoplinkerService {
 		}
 	}
 
+	/**
+	 * 주문수집-목록 엑셀다운로드(제휴몰 주문업로드 양식)
+	 *
+	 * @param shoplinkerOrder
+	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	public void getOrderExcelExtmallFormList(ShoplinkerOrder shoplinkerOrder, String excelFilenameWithPath) {
+
+		// 헤더 title 설정
+		String[] listTitles = { "일련번호", "제휴몰ID", "제휴주문번호", "물품주문번호", "제휴상품코드", "자사상품코드", "상품명", "SKUCode"
+				,"판매가", "주문수량", "배송비", "주문자", "주문자-전화", "주문자-휴대폰", "주문자-이메일", "수령자", "수령자-전화", "수령자-휴대폰"
+				, "수령자-우편번호","수령자-도로명주소", "수령자-상세주소", "배송메시지"};
+
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellNames = {"NO", "MALL_ID", "MALL_ORDER_ID", "SHOPLINKER_ORDER_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "OPT_CD"
+				, "SALE_PRICE", "QUANTITY", "BAESONG_BI", "ORDER_NAME", "ORDER_TEL", "ORDER_CEL", "ORDER_EMAIL", "RECEIVE", "RECEIVE_TEL", "RECEIVE_CEL"
+				, "RECEIVE_ZIPCODE", "RECEIVE_ADDR", "RECIP_DTL_ADDR", "DELIVERY_MSG"};
+
+		String[] cellTypes = {
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_LEFT.name(),
+			GagaExcelConstants.CellType.CHAR_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name()};
+
+		Collection<GagaMap> dataList = admShoplinkerDao.getOrderExcelList(shoplinkerOrder);
+
+		try {
+
+			GagaExcelUtil.createExcel(excelFilenameWithPath, dataList, "샵링커 주문 정보", listTitles, cellNames, cellTypes, TsaConstants.EXCEL_FOOTER_TITLE);
+
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
 	/**
 	 * 송장전송-전송 (엑셀용)
 	 *

+ 47 - 0
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -6,6 +6,7 @@ import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -78,6 +79,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 
 	@Autowired
 	private TscMailService coreMailService;
+
+	@Autowired
+	private Environment env;
 	
 	/**
 	 * 취소요청, 취소완료 통합 화면 (관리자)
@@ -258,6 +262,49 @@ public class TsaOrderChangeController extends TsaBaseController {
 		// 취소완료
 		else {
 			result = coreOrderChangeService.partialCancel(map, userNo);
+			String pgGb = map.getString("pgGb");
+			if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb)) {
+				List<Order> cancelOrderRefundList 	= (List<Order>) map.get("cancelOrderRefundList");
+
+				for(Order vo : cancelOrderRefundList) {
+					try {
+						Order order = coreNaverPayService.getOrderDetailInfoFromOrdDtlNo(vo);
+						if ("O".equals(order.getOrdExchGb())) {
+							// 취소 완료
+							if ("scm".equals(env.getProperty("server.site.name"))) {
+								order.setRegNo(userNo);
+								coreNaverPayService.sendNaverPayOrderCancelConfirm(order);        // 취소 완료 데이터 송부
+							} else {
+								String addUrl = "/naverpay/send/cancel/complete?ordDtlNo=" + order.getOrdDtlNo() + "&userNo=" + userNo;
+								coreNaverPayService.sendScmServerForNaverpay(addUrl);        // 취소 완료 데이터 송부
+							}
+						} else {
+							// 반품 품절 취소
+							if ("scm".equals(env.getProperty("server.site.name"))) {
+								coreNaverPayService.sendNaverPayRejectExchange(order, userNo);			// 교환반려
+								coreNaverPayService.sendNaverPaySoldoutReturnReq(order, userNo);		// 품절반품접수
+								coreNaverPayService.sendNaverPayReturnComplete(order, userNo);			// 반품완료
+							} else {
+								String addUrl = "";
+								// 네이버페이는 SCM을 통해서 송부
+								// coreNaverPayService.sendNaverPayRejectExchange(exception, userNo);        // 교환반려
+								addUrl = "/naverpay/send/reject/exchange?ordDtlNo=" + order.getOrdDtlNo() + "&userNo=" + userNo;
+								coreNaverPayService.sendScmServerForNaverpay(addUrl);                        // 교환 반려
+
+								// coreNaverPayService.sendNaverPaySoldoutReturnReq(param, userNo);				// 품절반품접수
+								addUrl = "/naverpay/send/soldout/return/req?ordDtlNo=" + order.getOrdDtlNo() + "&userNo=" + userNo;
+								coreNaverPayService.sendScmServerForNaverpay(addUrl);                            // 품절반품접수
+
+								// coreNaverPayService.sendNaverPayReturnComplete(exception, userNo);		// 반품완료
+								addUrl = "/naverpay/send/return/complete?ordDtlNo=" + order.getOrdDtlNo() + "&userNo=" + userNo;
+								coreNaverPayService.sendScmServerForNaverpay(addUrl);                        // 반품완료
+							}
+						}
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+				}
+			}
 		}
 		
 		// 2021.06.21 교환TO취소 교환배송비 취소처리

+ 41 - 15
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -5,6 +5,7 @@ import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -559,6 +560,10 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 		String excelfileName = "샵링커_주문_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
 		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
 
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerOrder.getCondition())) {
+			shoplinkerOrder.setConditionList(shoplinkerOrder.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
 		shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		shoplinkerOrder.setPageable(new TscPageRequest(shoplinkerOrder.getPageNo() - 1, shoplinkerOrder.getPageSize()));
 		shoplinkerOrder.getPageable().setTotalCount(admShoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
@@ -568,6 +573,32 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
 	}
 
+	/**
+	 * 주문수집관리-엑셀다운로드 (제휴몰 주문업로드 양식)
+	 *
+	 * @param shoplinkerOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	@GetMapping("/order/excel/extmall_form_list")
+	public ResponseEntity<InputStreamResource> downloadOrderInfoExcelExtmallFormList(HttpServletRequest request, ShoplinkerOrder shoplinkerOrder) throws Exception {
+		String excelfileName = "샵링커_주문(제휴몰양식)_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerOrder.getCondition())) {
+			shoplinkerOrder.setConditionList(shoplinkerOrder.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
+		shoplinkerOrder.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		shoplinkerOrder.setPageable(new TscPageRequest(shoplinkerOrder.getPageNo() - 1, shoplinkerOrder.getPageSize()));
+		shoplinkerOrder.getPageable().setTotalCount(admShoplinkerService.getShoplinkerOrderListCount(shoplinkerOrder));
+
+		admShoplinkerService.getOrderExcelExtmallFormList(shoplinkerOrder, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
+
 
 	/**
 	 * 송장전송관리-화면
@@ -701,8 +732,10 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 		String excelfileName = "샵링커_송장_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
 		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
 
-
-
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerInvoice.getCondition())) {
+			shoplinkerInvoice.setConditionList(shoplinkerInvoice.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
 		shoplinkerInvoice.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		shoplinkerInvoice.setPageable(new TscPageRequest(shoplinkerInvoice.getPageNo() - 1, shoplinkerInvoice.getPageSize()));
 		shoplinkerInvoice.getPageable().setTotalCount(admShoplinkerService.getSendInvoiceListCount(shoplinkerInvoice));
@@ -902,13 +935,6 @@ System.out.println("####### : "+re.getResult());
 			  	System.out.println(i+"### 1.단품 result2 :: "+resultMsg.getMessage());
 			}*/
 
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/goods_reg/T142TS200P/product.xml";
-			responseXmlData =   shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Product/attribute_prod_insert.php?iteminfo_url="+URLEncoder.encode(testXmlUrl), "");
-			shoplinkerResult =  (com.gagaframework.shoplinker.domain.goods.result.Shoplinker)shoplinkerUtil.unmarshal(com.gagaframework.shoplinker.domain.goods.result.Shoplinker.class, responseXmlData);
-			resultMsg = shoplinkerResult.getResultMessage();
-			System.out.println("\n\n\n### 2.상품 result1 :: "+resultMsg.getResult());
-			System.out.println(" :: "+responseXmlData);
-			System.out.println("### 2.상품 result2 :: "+resultMsg.getMessage());
 
 	for( i=1; i< 1; i++) {
 
@@ -983,13 +1009,13 @@ System.out.println("####### : "+re.getResult());
 */
 
 			//99 주문수집 목록확인
-/*
+
 			List<com.gagaframework.shoplinker.domain.orderlist.Order> rOrdList;
 			com.gagaframework.shoplinker.domain.orderlist.Header rHeader;
 			com.gagaframework.shoplinker.domain.orderlist.Shoplinker shoplinkerOrdResult;
 
-			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order_time.xml"; // 20210401  143000 ~ 150000
-			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_1.xml";	// 28~31일 15시~07시
+			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order_time.xml"; // 20210401  143000 ~ 150000
+			testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/order.xml";	// 28~31일 15시~07시
 			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_28.xml";	// 28 15시~235959  7개
 			//testXmlUrl = "http://ts5000.ipdisk.co.kr:8999/shoplinker/order/0528/order_real_31.xml";	// 31일 000000시~07시  5582개
 			responseXmlData =   shoplinkerUtil.callShoplinkerApiByGet(GagaShoplinkerConstants.API_DOMAIN+"/Order/orderlist.php?iteminfo_url="+testXmlUrl, "");
@@ -1008,10 +1034,10 @@ System.out.println("####### : "+re.getResult());
 				System.out.println("### 주문실패 msg :: "+orderFailResultMsg.getMessage());
 
 			}else {
-				System.out.println("\n\n\n### 7.주문 result1 :: "+responseXmlData);
+				//System.out.println("\n\n\n### 7.주문 result1 :: "+responseXmlData);
 
 				//System.out.println(" url chk:: "+GagaShoplinkerConstants.API_DOMAIN+"/Order/orderlist.php?iteminfo_url="+ testXmlUrl);
-				System.out.println("### 7.주문 result2 :: "+rHeader.toString());
+				//System.out.println("### 7.주문 result2 :: "+rHeader.toString());
 				System.out.println("### 7.주문 result22 :: "+rHeader.getTotalCount()); // 1233
 				System.out.println("### 7.주문 result23 :: "+rHeader.getTotalPage()); //3
 				System.out.println("### 7.주문 result24 :: "+rHeader.getCurrentlyPage()); //1
@@ -1025,7 +1051,7 @@ System.out.println("####### : "+re.getResult());
 				//}
 
 			}
-*/
+
 			//99 주문수집 목록확인 끝
 
 		}catch(Exception e) {

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml

@@ -628,7 +628,7 @@
 	              </when>
 
 	              <when test='search != null and search == "mallOrderId"'>
-	              	AND UPPER(B.EXTMALL_ORDER_ID) IN
+	              	AND UPPER(A.MALL_ORDER_ID) IN
 			            <foreach collection="conditionList" item="item" index="index"  open="(" close=")" separator=",">
 			       		UPPER(#{item})
 			            </foreach>

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -311,7 +311,7 @@
 						  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
 						  LEFT JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
 						  LEFT JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
-						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND A.ORDER_EXCEPTION_NO = CD.ORD_CHG_SQ 
+						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO AND A.ORDER_EXCEPTION_NO = CD.ORD_CHG_SQ 
 						  LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 						  
 						  WHERE B.REASON_CODE IN('00','02','03','04','05','06','15')
 							<if test='customerName != null and customerName != ""'>
@@ -383,7 +383,7 @@
 						  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
 						  LEFT JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
 						  LEFT JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
-						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND A.ORDER_EXCEPTION_NO = CD.ORD_CHG_SQ 
+						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO AND A.ORDER_EXCEPTION_NO = CD.ORD_CHG_SQ 
 						  LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 						  
 						  WHERE B.REASON_CODE IN('01')
 							<if test='customerName != null and customerName != ""'>

+ 5 - 1
src/main/webapp/WEB-INF/views/ocm/ExtmallOrderRegisterForm.html

@@ -95,7 +95,11 @@
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
-		{headerName: "주문수량",			field: "ordQty",				width: 100, cellClass: 'text-center'},
+		{headerName: "주문수량", 			field: "ordQty", 				width: 100, cellClass: 'text-center'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
 		{headerName: "주문금액", 			field: "ordAmt", 				width: 100, cellClass: 'text-center'
 			,valueFormatter: function(params) {return params.value.addComma();},
 			cellEditor: 'textCellEditor',

+ 7 - 6
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -1229,6 +1229,12 @@ $(document).ready(function() {
 	} else {
 		fnBindOrderRfAccountInfo();
 	}
+
+	// 네이버페이 주문형일 경우 취소 접수, 완료 버튼 hide
+	if(pgGb == "NAVER_ORDER") {
+		$("#cnclReqBtn").css("display", "none");
+		$("#cnclCompleteBtn").css("display", "none");
+	}
 	
 	// 5. 취소신청, 취소완료, 취소승인, 취소철회 버튼 제어
 	if (ordChgSq > 0 && chgStat != 'G685_40') {
@@ -1241,14 +1247,9 @@ $(document).ready(function() {
 		// 교환배송미출고대상
 		if (chgStat == 'G685_40') {
 			$("#cnclReqBtn").css("display", "none");
+			$("#cnclCompleteBtn").css("display", "inline-block");		// 교환배송미출고 대상에서 왔을 경우 취소완료버튼 노출(네이버페이도 노출을 위해 추가) - xodud1202 21.07.27
 		}
 	}
-
-	// 네이버페이 주문형일 경우 취소 접수, 완료 버튼 hide
-	if(pgGb == "NAVER_ORDER") {
-		$("#cnclReqBtn").css("display", "none");
-		$("#cnclCompleteBtn").css("display", "none");
-	}
 	
 	// 6. 취소사유 선택
 	if (ordChgSq > 0 && chgStat != 'G685_40') {

+ 46 - 1
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html

@@ -154,7 +154,27 @@
 				<ul class="panelBar">
 					<li>
 						<button type="button" class="btn btn-default btn-lg" onclick="fnExcelDownLoad();">엑셀다운로드</button>
+						<!-- <button type="button" class="btn btn-default btn-lg" onclick="fnExcelExtmallUploadForm();">엑셀다운로드(제휴몰주문업로드 폼)</button> -->
+						<!-- <button type="button" class="btn btn-success btn-lg" id="btnSave">대기상태전환</button> -->
+						
+						&nbsp;&nbsp;&nbsp;가용재고 실패사유&nbsp;
+						<!-- 아이콘 툴팁 -->
+						<div class="iconTooltip">
+							<i class="fa fa-info" aria-hidden="true"></i>
+							<span class="left aL" style="width:430px;">
+								<em>* 실패사유가 "가용재고없음"인 경우 참고내용 *</em><br/><br/>
+								1. 품절입니다<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ 상품상태가 일시품절(G008_70)인 건<br/>
+								2. 판매중인 상품이 아닙니다.<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ 상품상태가 일시품절도 아니고, 승인완료도 아닌건<br/>
+								3. "단품코드" 옵션은 품절입니다<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ tb_option 결품여부가 Y인 경우<br/>
+								4. 옵션의 재고가 충분하지 않습니다.<br/>
+								&nbsp;&nbsp;&nbsp;&nbsp;→ 가용재고가 적을 때 ( ex 주문수량 3개 중 재고가 1개밖에 없을 때)
+							</span>
+						</div>
 					</li>
+
 					<li class="right">
 						검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 						쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
@@ -242,7 +262,7 @@
 				}
 			}
 		},
-		{headerName: "쇼핑몰 주문번호", field: "extmallOrderId", width: 130, cellClass: 'text-center'},
+		{headerName: "쇼핑몰 주문번호", field: "mallOrderId", width: 130, cellClass: 'text-center'},
 		{headerName: "쇼핑몰 명", field: "mallName", width: 130, cellClass: 'text-center'},
 		{headerName: "배송상태[발주확인]", field: "baesongStatus", width: 130, cellClass: 'text-center'},
 		{headerName: "주문 상품번호", field: "orderProductId", width: 130, cellClass: 'text-center'},
@@ -275,6 +295,9 @@
 	];
 
 	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+	// 중복 선택 가능
+	gridOptions.rowSelection = 'multiple';
+ 	gridOptions.suppressRowClickSelection = true;
 
 	// Cell click
 	gridOptions.onCellClicked = function(event) {
@@ -420,6 +443,28 @@
 	}
 	/**************** 엑셀다운로드 // *****************************************************/
 
+	/**************** 제휴몰 주문업로드 형식 엑셀다운로드 *****************************************************/
+	var fnExcelExtmallUploadForm = function(){
+		var formId = '#searchForm';
+		if (gridOptions.api.getDisplayedRowCount() <= 0){
+			mcxDialog.alert("조회된 데이터가 없습니다.<br/>다시 조회 후 다운로드 받으세요.");
+			return;
+		}
+
+		var fromDate = parseInt($('#searchForm input[name=stDate]').val().replaceAll("-", ""));
+		var toDate =parseInt($('#searchForm input[name=edDate]').val().replaceAll("-", ""));
+		if( 4 < (toDate - fromDate)){
+			mcxDialog.alert("주문수집일자를 3일 이내의 기간으로 설정 후 다운로드해주세요.");
+			return;
+		}
+
+		var params =  $(formId).serialize();
+		$('#ExcelList').attr({ href : '/shoplinker/order/excel/extmall_form_list?' + params }).get(0).click();
+	}
+	/**************** 제휴몰 주문업로드 형식 엑셀다운로드 // *****************************************************/
+
+	
+	
 	$(document).ready(function() {
 
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '수집');

+ 1 - 1
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -152,7 +152,7 @@
 	var columnDefs = [
 		{headerName: "반품예외처리번호",		field: "recallExceptionNo", width: 50,	cellClass: 'text-center', hide: true},
 		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
-		{headerName: "",			field: "recall",		width: 100,	cellClass: 'text-center',
+		{headerName: "처리완료",			field: "recall",		width: 100,	cellClass: 'text-center',
 			/*
 			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
 		    cellClassRules: {