Selaa lähdekoodia

Merge branch 'develop' into eskim

eskim 5 vuotta sitten
vanhempi
commit
f3a6528361

+ 35 - 0
src/main/java/com/style24/persistence/domain/AflinkFee.java

@@ -0,0 +1,35 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 제휴채널수수료 Domain
+ *
+ * @author gagamel
+ * @since 2021. 1. 20
+ */
+@SuppressWarnings("serial")
+@Data
+public class AflinkFee extends TscBaseDomain {
+
+	private String afLinkCd;	// 제휴채널코드
+	private String afLinkNm;	// 제휴채널명
+	private String afChannel;	// 상위제휴채널
+	private String afChannelNm;	// 상위제휴채널명
+	private String occurDt;		// 발생(정산)일자
+	private String ordNo;		// 주문번호
+	private String ordDtlStat;	// 주문상세상태
+	private long sellAmt;		// 판매금액
+	private long cpnDcAmt;		// 쿠폰할인금액
+	private long pntDcAmt;		// 포인트사용금액
+	private long gfcdUseAmt;	// 상품권사용금액
+	private long payAmt;		// 결제액(VAT포함)
+	private long salesAmt;		// 매출액(VAT제외)
+
+	// 검색조건
+	private String startDt;
+	private String endDt;
+
+}

+ 6 - 4
src/main/java/com/style24/persistence/domain/SupplyCompany.java

@@ -16,7 +16,8 @@ public class SupplyCompany extends TscBaseDomain {
 
 	private String supplyCompCd;		// 공급업체코드
 	private String supplyCompNm;		// 공급업체명
-	private int provierNo;				// ProvierNo(WMS)
+	private String supplyVendorCd;		// 공급벤더코드
+	private Integer provierNo;			// ProvierNo(WMS)
 	private String bizGb;				// 사업자구분
 	private String bizNo;				// 사업자번호
 	private String bizKind;				// 업종
@@ -32,8 +33,9 @@ public class SupplyCompany extends TscBaseDomain {
 	private String distributionGb;		// 유통구분(공통코드G065)
 	private String shotDelvYn;			// 총알배송여부
 	private String supplyStat;			// 입점상태(공통코드G010)
-	private int minOrdAmt;				// 무료배송비최소주문금액
-	private int delvFee;				// 배송비
+	private String supplyStatNm;		// 입점상태명
+//	private int minOrdAmt;				// 무료배송비최소주문금액
+//	private int delvFee;				// 배송비
 	private float sellFeeRate;			// 판매수수료율
 	private String settleDay;			// 정산일(매월)
 	private String bankCd;				// 은행코드
@@ -55,6 +57,6 @@ public class SupplyCompany extends TscBaseDomain {
 	// 검색조건
 	private String searchGb;			// 검색구분
 	private String searchTxt;			// 검색어
-
+	private String multiGb;
 
 }

+ 6 - 2
src/main/java/com/style24/persistence/domain/User.java

@@ -30,10 +30,14 @@ public class User extends TscBaseDomain {
 	private String roleCd;
 	private String roleNm;
 	private String roleRefVal;
-	private String supplyCompCd;
-	private String supplyCompNm;
+	private String supplyCompCd;	// 공급업체코드
+	private String supplyCompNm;	// 공급업체명
 //	private String photoCompCd;
 //	private String photoCompNm;
+	private String afLinkCd;		// 제휴링크코드
+	private String afLinkNm;		// 제휴링크명
+	private String afChannel;		// 제휴채널
+	private String afChannelNm;		// 제휴채널명
 	private String email;
 	private String cellPhnno;
 	private String ipAddr;

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

@@ -27,6 +27,30 @@
 		     -- , CASE WHEN SUBSTRING(ROLE_CD,1,1) = 'E' THEN
 		     --            FN_GET_CODE_NM('G003',ROLE_REF_VAL)
 		     --   END                                       AS PHOTO_COMP_NM  /*촬영업체명*/
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                ROLE_REF_VAL
+		       END                                       AS AF_LINK_CD     /*제휴링크코드*/
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                (SELECT AF_LINK_NM
+		                 FROM   TB_AF_LINK
+		                 WHERE  AF_LINK_CD = A.ROLE_REF_VAL
+		                )
+		       END                                       AS AF_LINK_NM     /*제휴링크명*/
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                (SELECT AF_CHANNEL
+		                 FROM   TB_AF_LINK
+		                 WHERE  AF_LINK_CD = A.ROLE_REF_VAL
+		                )
+		       END                                       AS AF_CHANNEL     /*제휴채널*/
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
+		                (SELECT CC.CD_NM
+		                 FROM   TB_AF_LINK AL
+		                      , TB_COMMON_CODE CC
+		                 WHERE  AL.AF_CHANNEL = CC.CD
+		                 AND    AL.AF_LINK_CD = A.ROLE_REF_VAL
+		                 AND    CC.CD_GB = 'G053'
+		                )
+		       END                                       AS AF_CHANNEL_NM  /*제휴채널명*/
 		     , EMAIL                                                       /*이메일*/
 		     , CELL_PHNNO                                                  /*휴대전화번호*/
 		     , IP_ADDR                                                     /*IP주소*/
@@ -35,7 +59,7 @@
 		     , MASKING_YN                                                  /*마스킹여부*/
 		FROM   TB_USER A
 		WHERE  USER_ID = #{userId}
-		AND    (ROLE_CD LIKE 'G001_B%' OR ROLE_CD LIKE 'G001_E%') /*입점업체담당자, 촬영업체담당자*/
+		AND    (ROLE_CD LIKE 'G001_B%' OR ROLE_CD LIKE 'G001_E%' OR ROLE_CD LIKE 'G001_D%') /*입점업체담당자, 촬영업체담당자, 제휴채널담당자*/
 		AND    USE_YN = 'Y'
 	</select>
 	

+ 9 - 10
src/main/java/com/style24/persistence/mybatis/shop/TssRenderer.xml

@@ -326,16 +326,6 @@
 		AND    USE_YN = 'Y'
 	</select>
 
-	<!-- 제휴링크 목록 -->
-	<select id="getAflinkList" parameterType="String" resultType="CommonCode">
-		/* TssRenderer.getAflinkList */
-		SELECT AF_LINK_CD AS CD
-		     , AF_LINK_NM AS CD_NM
-		FROM   TB_AF_LINK
-		WHERE  AF_CHANNEL = #{afChannel}
-		AND    USE_YN = 'Y'
-	</select>
-	
 	<!-- 색상그룹코드 RGB 목록 -->
 	<select id="getColorGrpCdRgbList" resultType="CommonCode">
 		/* TssRenderer.getColorGrpCdRgbList */
@@ -359,5 +349,14 @@
 		ORDER BY DELV_FEE_CD
 	</select>
 	
+	<!-- 제휴채널 목록 -->
+	<select id="getAflinkList" parameterType="String" resultType="CommonCode">
+		/* TssRenderer.getAflinkList */
+		SELECT AF_LINK_CD AS CD
+		     , AF_LINK_NM AS CD_NM
+		FROM   TB_AF_LINK
+		WHERE  AF_CHANNEL = #{afChannel}
+		AND    USE_YN = 'Y'
+	</select>
 
 </mapper>

+ 70 - 0
src/main/java/com/style24/persistence/mybatis/shop/TssSettle.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.scm.biz.dao.TssSettleDao">
+
+	<!-- 제휴채널정산 목록 -->
+	<select id="getAfLinkFeeList" parameterType="AfLinkFee" resultType="AfLinkFee">
+		/* TssSettle.getAfLinkFeeList */
+		SELECT AF_LINK_CD                                         /*채널코드*/
+		     , AF_LINK_NM                                         /*채널명*/
+		     , OCCUR_DT                                           /*발생일시*/
+		     , ORD_NO                                             /*주문번호*/
+		     , ORD_DTL_STAT                                       /*주문상세상태*/
+		     , SUM(SELL_AMT)                     AS SELL_AMT      /*판매금액(상품금액.배송비제외)*/
+		     , SUM(CPN1_DC_AMT +
+		           TMTB1_DC_AMT + TMTB2_DC_AMT +
+		           GOODS_CPN_DC_AMT +
+		           CART_CPN_DC_AMT)              AS CPN_DC_AMT     /*쿠폰할인금액*/
+		     , SUM(PNT_DC_AMT + PRE_PNT_DC_AMT)  AS PNT_DC_AMT     /*포인트할인금액*/
+		     , SUM(GFCD_USE_AMT)                 AS GFCD_USE_AMT   /*상품권사용금액*/
+		     , SUM(SELL_AMT - (CPN1_DC_AMT + TMTB1_DC_AMT + TMTB2_DC_AMT + GOODS_CPN_DC_AMT + CART_CPN_DC_AMT + PG_CPN_AMT)
+		                    - (PNT_DC_AMT + PRE_PNT_DC_AMT)
+		                    - GFCD_USE_AMT)      AS PAY_AMT        /*결제금액(VAT포함)*/
+		     , SUM(TRUNCATE((SELL_AMT - (CPN1_DC_AMT + TMTB1_DC_AMT + TMTB2_DC_AMT + GOODS_CPN_DC_AMT + CART_CPN_DC_AMT + PG_CPN_AMT)
+		                              - (PNT_DC_AMT + PRE_PNT_DC_AMT)
+		                              - GFCD_USE_AMT
+		                    ) / 1.1,0))          AS SALES_AMT      /*매출금액(VAT제외). 건별로 1.1로 나누고 소숫점을 절사하여 합계를 낸다.*/
+		FROM   (
+		        SELECT ODH.AF_LINK_CD                                              /*제휴링크코드*/
+		             , AL.AF_LINK_NM
+		             , DATE_FORMAT(ODH.REG_DT,'%Y-%m-%d %m:%h:%s') AS OCCUR_DT     /*발생일자*/
+		             , ODH.ORD_NO
+		             , ODH.ORD_DTL_NO
+		             , CASE WHEN ODH.ORD_DTL_STAT = 'G013_20' THEN
+		                        FN_GET_CODE_NM('G013',ODH.ORD_DTL_STAT)
+		                    ELSE
+		                        IFNULL(FN_GET_CODE_NM('G685',OCD.CHG_STAT),'주문취소')
+		               END                                         AS ORD_DTL_STAT /*주문상세상태*/
+		             , (ODH.ORD_AMT - ODH.CNCL_RTN_AMT)            AS SELL_AMT     /*판매금액(상품금액.배송비제외)*/
+		             , ODH.CPN1_DC_AMT                                             /*1차쿠폰(즉시할인쿠폰)할인금액*/
+		             , ODH.TMTB1_DC_AMT                                            /*다다익선할인금액(수량)*/
+		             , ODH.TMTB2_DC_AMT                                            /*다다익선할인금액(금액)*/
+		             , ODH.GOODS_CPN_DC_AMT                                        /*상품쿠폰할인금액*/
+		             , ODH.CART_CPN_DC_AMT                                         /*장바구니할인금액*/
+		             , 0                                           AS PG_CPN_AMT   /*PG쿠폰금액.TODO:바로 아래 쿼리문으로 대체해야 함*/
+		             -- , ODH.PG_CPN_AMT                                              /*PG쿠폰금액*/
+		             , ODH.PNT_DC_AMT                                              /*포인트할인금액*/
+		             , ODH.PRE_PNT_DC_AMT                                          /*선포인트할인금액*/
+		             , ODH.GFCD_USE_AMT                                            /*상품권사용금액*/
+		        FROM   TB_ORDER_DETAIL_HST ODH
+		        INNER JOIN TB_AF_LINK AL
+		                ON ODH.AF_LINK_CD = AL.AF_LINK_CD
+		        LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		                     ON ODH.ORD_DTL_NO = OCD.ORD_DTL_NO
+		                    AND OCD.CHG_STAT IN ('G685_21','G685_32','G685_42')	/*취소완료,교환완료,반품완료*/
+		        WHERE  ODH.ORD_DTL_STAT IN ('G013_20','G013_99') /*결제완료,주문취소*/
+		        AND    ODH.REG_DT <![CDATA[>=]]> STR_TO_DATE(#{startDt},'%Y-%m-%d')
+		        AND    ODH.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{endDt},'%Y-%m-%d'),INTERVAL 1 DAY)
+		        <if test="ordNo != null and ordNo != ''">
+		        AND    ODH.ORD_NO = #{ordNo}
+		        </if>
+		        <if test="afLinkCd != null and afLinkCd != ''">
+		        AND    AL.AF_LINK_CD = #{afLinkCd}
+		        </if>
+		        AND    AL.AF_CHANNEL = #{afChannel}
+		       ) U
+		GROUP  BY AF_LINK_CD, AF_LINK_NM, OCCUR_DT, ORD_NO, ORD_DTL_STAT
+		ORDER  BY AF_LINK_CD, AF_LINK_NM, OCCUR_DT, ORD_NO, ORD_DTL_STAT
+	</select>
+
+</mapper>

+ 9 - 9
src/main/java/com/style24/scm/biz/dao/TssRendererDao.java

@@ -194,15 +194,6 @@ public interface TssRendererDao {
 	 */
 	Collection<CommonCode> getQnaAnswerPhaseList(String ansClsf);
 
-//	/**
-//	 * 제휴링크 목록
-//	 * @param afChannel - 제휴채널
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 5. 4
-//	 */
-//	Collection<CommonCode> getAflinkList(String afChannel);
-
 	/**
 	 * 색상그룹코드 RGB 목록
 	 *
@@ -223,4 +214,13 @@ public interface TssRendererDao {
 	 */
 	Collection<CommonCode> getSupplyDeliveryFeePolicyList(String supplyCompCd);
 
+	/**
+	 * 제휴채널 목록
+	 * @param afChannel - 상위제휴채널
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	Collection<CommonCode> getAflinkList(String afChannel);
+
 }

+ 26 - 0
src/main/java/com/style24/scm/biz/dao/TssSettleDao.java

@@ -0,0 +1,26 @@
+package com.style24.scm.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.AflinkFee;
+
+/**
+ * 정산 Dao
+ *
+ * @author gagamel
+ * @since 2021. 1. 20
+ */
+@ShopDs
+public interface TssSettleDao {
+
+	/**
+	 * 제휴채널정산 목록
+	 * @param afLinkFee - 제휴채널정산 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	Collection<AflinkFee> getAfLinkFeeList(AflinkFee afLinkFee);
+
+}

+ 12 - 11
src/main/java/com/style24/scm/biz/service/TssRendererService.java

@@ -450,17 +450,6 @@ public class TssRendererService {
 		return rendererDao.getQnaAnswerPhaseList(ansClsf);
 	}
 
-//	/**
-//	 * 제휴링크 목록
-//	 * @param afChannel - 제휴채널
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 5. 4
-//	 */
-//	public Collection<CommonCode> getAflinkList(String afChannel) {
-//		return rendererDao.getAflinkList(afChannel);
-//	}
-
 	/**
 	 * 색상그룹코드 RGB 목록
 	 *
@@ -483,4 +472,16 @@ public class TssRendererService {
 	public Collection<CommonCode> getSupplyDeliveryFeePolicyList(String supplyCompCd) {
 		return rendererDao.getSupplyDeliveryFeePolicyList(supplyCompCd);
 	}
+
+	/**
+	 * 제휴채널 목록
+	 * @param afChannel - 상위제휴채널
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	public Collection<CommonCode> getAflinkList(String afChannel) {
+		return rendererDao.getAflinkList(afChannel);
+	}
+
 }

+ 37 - 0
src/main/java/com/style24/scm/biz/service/TssSettleService.java

@@ -0,0 +1,37 @@
+package com.style24.scm.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.style24.persistence.domain.AflinkFee;
+import com.style24.scm.biz.dao.TssSettleDao;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 정산 Service
+ *
+ * @author gagamel
+ * @since 2021. 1. 20
+ */
+@Service
+@Slf4j
+public class TssSettleService {
+
+	@Autowired
+	private TssSettleDao settleDao;
+
+	/**
+	 * 제휴채널정산 목록
+	 * @param afLinkFee - 제휴채널수수료 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	public Collection<AflinkFee> getAfLinkFeeList(AflinkFee afLinkFee) {
+		return settleDao.getAfLinkFeeList(afLinkFee);
+	}
+
+}

+ 1 - 15
src/main/java/com/style24/scm/biz/web/TssRendererController.java

@@ -83,8 +83,6 @@ public class TssRendererController extends TssBaseController {
 		return rendererService.getAuthBrandList(TssSession.getInfo().getUserNo());
 	}
 
-
-
 //	/**
 //	 * 벤더외부몰 목록
 //	 * @param vendorId - 벤더ID
@@ -175,19 +173,6 @@ public class TssRendererController extends TssBaseController {
 //	@ResponseBody
 //	public Collection<AdmCommonCode> getSellStoreList() {
 //		return rendererService.getSellStoreList();
-//	}
-//
-//	/**
-//	 * 제휴링크 목록
-//	 * @param afChannel - 제휴채널
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 5. 4
-//	 */
-//	@GetMapping("/aflink/list/{afChannel}")
-//	@ResponseBody
-//	public Collection<AdmCommonCode> getAflinkList(@PathVariable String afChannel) {
-//		return rendererService.getAflinkList(afChannel);
 //	}
 
 	/**
@@ -202,4 +187,5 @@ public class TssRendererController extends TssBaseController {
 	public Collection<CommonCode> getDeliveryFeeList(@PathVariable String supplyCompCd) {
 		return rendererService.getSupplyDeliveryFeePolicyList(supplyCompCd);
 	}
+
 }

+ 78 - 0
src/main/java/com/style24/scm/biz/web/TssSettleController.java

@@ -0,0 +1,78 @@
+package com.style24.scm.biz.web;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.style24.persistence.domain.AflinkFee;
+import com.style24.persistence.domain.CommonCode;
+import com.style24.scm.biz.service.TssRendererService;
+import com.style24.scm.biz.service.TssSettleService;
+import com.style24.scm.support.controller.TssBaseController;
+import com.style24.scm.support.security.session.TssSession;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 정산 Controller
+ *
+ * @author jaewonHo
+ * @since 2021. 1. 20
+ */
+@Controller
+@RequestMapping("/settle")
+@Slf4j
+public class TssSettleController extends TssBaseController {
+
+	@Autowired
+	private TssSettleService settleService;
+
+	@Autowired
+	private TssRendererService rendererService;
+
+	/**
+	 * 제휴채널정산 화면
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	@GetMapping("/aflink/fee/form")
+	public ModelAndView afLinkFeeForm() {
+		ModelAndView mav = new ModelAndView("settle/AfLinkSettleForm");
+
+		// 상위제휴채널 목록
+		CommonCode commoncode = new CommonCode();
+		commoncode.setCdGb("G053");
+		commoncode.setCd(TssSession.getInfo().getAfChannel());
+		mav.addObject("afChannelList", rendererService.getCommonCodeList(commoncode));
+
+		// 제휴채널 목록
+		mav.addObject("afLinkList", rendererService.getAflinkList(TssSession.getInfo().getAfChannel()));
+
+		return mav;
+	}
+
+	/**
+	 * 제휴채널정산 목록
+	 * @param aflinkFee - 제휴채널수수료 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 20
+	 */
+	@PostMapping("/aflink/fee/list")
+	@ResponseBody
+	public Collection<AflinkFee> getAfLinkFeeList(@RequestBody AflinkFee aflinkFee) {
+		// 파라미터로 다른 값을 입력해 조회할 수 있으므로 세션값으로 다시 설정
+		aflinkFee.setAfChannel(TssSession.getInfo().getAfChannel());
+
+		return settleService.getAfLinkFeeList(aflinkFee);
+	}
+
+}

+ 189 - 0
src/main/webapp/WEB-INF/views/settle/AfLinkSettleForm.html

@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : AfLinkSettleForm.html
+ * @desc    : 제휴채널정산 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.20   gagamel     최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<div class="panelStyle">
+			<form id="searchForm" name="searchForm" action="#" th:action="@{'/settle/aflink/fee/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+				<table class="frmStyle" aria-describedby="검색조건">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:58%;"/>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th>발생(정산)기간<i class="required" title="필수" aria-hidden="true"></i></th>
+						<td id="terms">
+						</td>
+						<th>제휴채널</th>
+						<td>
+							<select name="afChannel" disabled="disabled">
+								<option th:if="${afChannelList}" th:each="oneData, status : ${afChannelList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+							<select name="afLinkCd">
+								<option value="">[전체]</option>
+								<option th:if="${afLinkList}" th:each="oneData, status : ${afLinkList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							</select>
+						</td>
+					</tr>
+				</table>
+				
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
+			</form>
+		</div>
+		<!-- 검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="left">
+					<span class="infoTxt cBlue">
+						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>발생(정산)일시</strong> : 결제/취소/반품이 실제 발생한 일시. <i class="fa fa-info-circle marL10" aria-hidden="true"></i><strong>판매금액</strong> : 정상 판매가로 배송비를 제외한 상품금액 합계<br/>
+						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>쿠폰할인금액</strong> : 즉시할인 + 다다익선 + 상품쿠폰 + 장바구니쿠폰 + PG결제쿠폰 등의 합계. <i class="fa fa-info-circle marL10" aria-hidden="true"></i><strong>포인트사용금액</strong> : 포인트사용 + 선포인트사용 합계<br/>
+						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>결제액</strong> : 판매금액 - 쿠폰할인금액 - 포인트사용금액 - 상품권사용금액. <i class="fa fa-info-circle marL10" aria-hidden="true"></i><strong>매출액</strong> : 결제액 / 1.1
+					</span>
+				</li>
+				<li class="right">
+					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+			
+			<div id="gridList" style="width: 100%; height: 670px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let columnDefs = [
+		{headerName: "제휴채널", field: "afLinkNm", width: 100},
+		{headerName: "발생(정산)일시", field: "occurDt", width: 150, cellClass: 'text-center'},
+		{headerName: "주문번호", field: "ordNo", width: 80, cellClass: 'text-center'},
+		{headerName: "주문상태", field: "ordDtlStat", width: 100, cellClass: 'text-center'},
+		{
+			headerName: '판매금액', field: 'sellAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '쿠폰할인금액', field: 'cpnDcAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '포인트사용금액', field: 'pntDcAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '상품권사용금액', field: 'gfcdUseAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '결제액(VAT포함)', field: 'payAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
+		{
+			headerName: '매출액(VAT제외)', field: 'salesAmt', width: 120, cellClass: 'text-right',
+			aggFunc: 'sum', enableValue: true, cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		}
+	];
+
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	gridOptions.autoGroupColumnDef = {
+			headerName: "상위제휴채널",
+			field: "grouping",
+			width: 200,
+			cellRendererParams: {
+				suppressCount: true
+			}
+		};
+	
+	// for expand everything
+	gridOptions.groupDefaultExpanded = -1;
+	
+	// 검색
+	$('#btnSearch').on('click', function() {
+		// 입력 값 체크
+		if (!gagajf.validation($('#searchForm')))
+			return false;
+		
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm', fnCreateTotal);
+	});
+	
+	// 합계 생성
+	let fnCreateTotal = function() {
+		let sellAmt = 0;
+		let cpnDcAmt = 0;
+		let pntDcAmt = 0;
+		let gfcdUseAmt = 0;
+		let payAmt = 0;
+		let salesAmt = 0;
+
+		gridOptions.api.forEachNode(function(rowNode, index) {
+			if (!rowNode.group) {
+				if (typeof rowNode.data.sellAmt == 'number') { sellAmt += rowNode.data.sellAmt; }
+				if (typeof rowNode.data.cpnDcAmt == 'number') { cpnDcAmt += rowNode.data.cpnDcAmt; }
+				if (typeof rowNode.data.pntDcAmt == 'number') { pntDcAmt += rowNode.data.pntDcAmt; }
+				if (typeof rowNode.data.gfcdUseAmt == 'number') { gfcdUseAmt += rowNode.data.gfcdUseAmt; }
+				if (typeof rowNode.data.payAmt == 'number') { payAmt += rowNode.data.payAmt; }
+				if (typeof rowNode.data.salesAmt == 'number') { salesAmt += rowNode.data.salesAmt; }
+			}
+		});
+
+		let data = {
+			grouping: '합계', afLinkNm: null,
+			occurDt: null, ordNo: null, ordDtlStat: null,
+			sellAmt: sellAmt, cpnDcAmt: cpnDcAmt,
+			pntDcAmt: pntDcAmt, gfcdUseAmt: gfcdUseAmt,
+			payAmt: payAmt, salesAmt: salesAmt
+		};
+
+		gagaAgGrid.setPinnedRowData(gridOptions, data, 'top');
+	}
+	
+	// 엑셀다운로드
+	$('#btnExcel').on('click', function() {
+		gagaAgGrid.exportToExcel('제휴채널정산 목록', gridOptions);
+	});
+	
+	$(document).ready(function() {
+		cfnCreateCalendar('#terms', 'startDt', 'endDt', true, '발생(정산)');
+		$('.btnToday').trigger('click');
+		
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+/*]]>*/
+</script>
+
+</html>