Prechádzať zdrojové kódy

상품정산, 정산확정관리 수정

gagamel 4 rokov pred
rodič
commit
a3abdb7e15

+ 16 - 0
src/main/java/com/style24/admin/biz/dao/TsaSettleDao.java

@@ -26,6 +26,22 @@ public interface TsaSettleDao {
 	 */
 	Collection<GoodsSettle> getGoodsSettleList(GoodsSettle goodsSettle);
 
+	/**
+	 * 정산확정 데이터 삭제
+	 * @param settleYm - 정산기준월
+	 * @author gagamel
+	 * @since 2021. 7. 30
+	 */
+	void deleteSettleConfirm(String settleYm);
+
+	/**
+	 * 정산확정 데이터 생성
+	 * @param settleConfirm - 정산확정 정보
+	 * @author gagamel
+	 * @since 2021. 7. 30
+	 */
+	void createSettleConfirm(SettleConfirm settleConfirm);
+
 	/**
 	 * 배송비정산 목록
 	 * @param delvFeeSettle - 배송비정산 정보

+ 20 - 0
src/main/java/com/style24/admin/biz/service/TsaSettleService.java

@@ -4,8 +4,10 @@ import java.util.Collection;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.admin.biz.dao.TsaSettleDao;
+import com.style24.admin.support.security.session.TsaSession;
 import com.style24.persistence.domain.AflinkFee;
 import com.style24.persistence.domain.DelvFeeSettle;
 import com.style24.persistence.domain.GoodsSettle;
@@ -37,6 +39,24 @@ public class TsaSettleService {
 		return settleDao.getGoodsSettleList(goodsSettle);
 	}
 
+	/**
+	 * 정산확정 처리 - 업체별정산데이터 생성
+	 * @param settleYm - 정산기준월
+	 * @author gagamel
+	 * @since 2021. 7. 30
+	 */
+	@Transactional("shopTxnManager")
+	public void saveSettleConfirm(String settleYm) {
+		// 정산데이터 삭제
+		settleDao.deleteSettleConfirm(settleYm);
+
+		// 정산데이터 생성
+		SettleConfirm settleConfirm = new SettleConfirm();
+		settleConfirm.setSettleYm(settleYm);
+		settleConfirm.setRegNo(TsaSession.getInfo().getUserNo());
+		settleDao.createSettleConfirm(settleConfirm);
+	}
+
 	/**
 	 * 배송비정산 목록
 	 * @param delvFeeSettle - 배송비정산 정보

+ 21 - 9
src/main/java/com/style24/admin/biz/web/TsaSettleController.java

@@ -6,6 +6,7 @@ import org.apache.commons.lang3.StringUtils;
 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.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +18,7 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.biz.service.TsaSettleService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.AflinkFee;
 import com.style24.persistence.domain.DelvFeeSettle;
 import com.style24.persistence.domain.GoodsSettle;
@@ -24,6 +26,8 @@ import com.style24.persistence.domain.SettleConfirm;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.rest.server.GagaResponse;
+
 /**
  * 정산 Controller
  *
@@ -44,6 +48,9 @@ public class TsaSettleController extends TsaBaseController {
 	@Autowired
 	private ObjectMapper mapper;
 
+	@Autowired
+	private TscMessageByLocale message;
+
 	/**
 	 * 상품정산 화면
 	 * @return
@@ -102,6 +109,20 @@ public class TsaSettleController extends TsaBaseController {
 		return settleService.getGoodsSettleList(goodsSettle);
 	}
 
+	/**
+	 * 정산확정 처리 - 업체별정산데이터 생성
+	 * @param settleYm - 정산기준월
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 7. 30
+	 */
+	@PostMapping("/confirm/save/{settleYm}")
+	@ResponseBody
+	public GagaResponse saveSettleConfirm(@PathVariable String settleYm) {
+		settleService.saveSettleConfirm(settleYm);
+		return super.ok(message.getMessage("SUCC_0004"));
+	}
+
 	/**
 	 * 배송비정산 화면
 	 * @return
@@ -199,15 +220,6 @@ public class TsaSettleController extends TsaBaseController {
 			}
 		}
 
-		if (!StringUtils.isBlank(settleConfirm.getBrandList())) {
-			try {
-				String[] arrBrandCd = mapper.readValue(settleConfirm.getBrandList(), String[].class);
-				settleConfirm.setMultiBrand(arrBrandCd);
-			} catch (Exception e) {
-				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
-			}
-		}
-
 		return settleService.getSettleConfirmList(settleConfirm);
 	}
 

+ 2 - 1
src/main/java/com/style24/persistence/domain/GoodsSettle.java

@@ -40,7 +40,8 @@ public class GoodsSettle extends TscBaseDomain {
 	private String itemCd;				// 단품코드
 	private String optCd1;				// 옵션코드1
 	private String optCd2;				// 옵션코드2
-	private int sellPrice;				// 판매가
+	private int mallPrice;				// 몰판매가
+	private int sellPrice;				// 판매가(정산용)
 	private int sellQty;				// 판매수량
 	private double sellAmt;				// 판매금액(CPN1_DC_AMT가 빠진 금액이 들어가 있음)
 	private double cpn1DcAmt;			// 즉시사용쿠폰금액

+ 12 - 7
src/main/java/com/style24/persistence/domain/SettleConfirm.java

@@ -15,7 +15,7 @@ import lombok.Data;
 @Data
 public class SettleConfirm extends TscBaseDomain {
 
-	private String confirmYn;			// 정산확정여부
+	private String usacYm;				// 정산연월
 	private String supplyCompCd;		// 공급업체코드
 	private String supplyCompNm;		// 공급업체명
 	private String econtractYn;			// 전자계약여부
@@ -31,7 +31,7 @@ public class SettleConfirm extends TscBaseDomain {
 	private double billAmt;				// 계산서발행금액
 	private double supplyAmt;			// 공급금액
 	private double taxAmt;				// 세액
-	private double delvFeeAmt;			// 배송비금액
+	private double delvFee;				// 배송비
 	private double etcDeductAmt;		// 기타차감
 	private double giveAmt;				// 지급금액
 	private double receivableAmt;		// 미수금
@@ -43,13 +43,18 @@ public class SettleConfirm extends TscBaseDomain {
 	private String depositorNm;			// 예금주명
 	private String billEmail;			// 계산서이메일
 
+	// 세금계산서용 엑셀
+	private String ownerNm;				// 대표자명
+	private String bizType;				// 업태
+	private String bizKind;				// 업종
+	private String bizAddr;				// 사업장주소
+	private String settleChargeNm;		// 정산담당자명
+	private String settleChargeTelno;	// 정산담당자연락처
+	private String billType;			// 계산서유형
+
 	// 검색조건
-	private String salesStdt;			// 매출시작일자
-	private String salesEddt;			// 매출종료일자
+	private String settleYm;			// 정산연월
 	private String supplyCompList;		// 공급업체코드목록
-	private String brandList;			// 브랜드코드목록
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiBrand;
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiSupplyComp;
 

+ 291 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsaSettle.xml

@@ -30,6 +30,7 @@
 		     , ODIH.ITEM_CD                                                        /*단품코드*/
 		     , ODIH.OPT_CD1                                                        /*옵션코드1*/
 		     , ODIH.OPT_CD2                                                        /*옵션코드2*/
+		     , ODIH.MALL_PRICE                                                     /*몰판매가*/
 		     , ODIH.SELL_PRICE                                                     /*판매가*/
 		     , ODIH.SELL_QTY                                                       /*판매수량*/
 		     , ODIH.SELL_AMT                                                       /*판매금액(ORD_AMT에는 CPN1_DC_AMT가 빠진 금액이 들어가 있음)*/
@@ -96,7 +97,12 @@
 		             , ODIH.ITEM_CD                                                                       /*단품코드*/
 		             , ODIH.OPT_CD1                                                                       /*옵션코드1*/
 		             , ODIH.OPT_CD2                                                                       /*옵션코드2*/
-		             , ODIH.ITEM_PRICE                                          AS SELL_PRICE             /*판매가*/
+		             , ODIH.ITEM_PRICE                                          AS MALL_PRICE             /*몰판매가*/
+		             , CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
+		                        IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
+		                    ELSE
+		                        ODIH.ITEM_PRICE
+		               END                                                      AS SELL_PRICE             /*판매가(정산용)*/
 		             , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN 1 ELSE -1 END)
 		               *
 		               CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20'/*판매-배송중*/ THEN
@@ -124,7 +130,7 @@
 		               + (IFNULL(CB2.BURDEN_RATE,0) / 100) * ODIH.GOODS_CPN_DC_AMT
 		               + (IFNULL(CB3.BURDEN_RATE,0) / 100) * ODIH.CART_CPN_DC_AMT         AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
 		             , CASE WHEN O.MALL_GB = 'G011_10' /*자사몰*/ THEN
-		                        SC.SELL_FEE_RATE
+		                        OD.SELL_FEE_RATE
 		                    ELSE /*제휴몰*/
 		                        IFNULL(E.SELL_FEE_RATE,0)
 		               END                                                      AS SELL_FEE_RATE          /*판매수수료율*/
@@ -141,6 +147,7 @@
 		                                            AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
 		        LEFT OUTER JOIN TB_COUPON_BURDEN CB3 ON OD.CART_CPN_SQ = CB1.CPN_ID
 		                                            AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
+		        LEFT OUTER JOIN TB_EXTMALL_USAC_PRICE EUP ON ODIH.ORD_DTL_ITEM_HST_SQ = EUP.ORD_DTL_ITEM_HST_SQ
 		        WHERE  1 = 1
 		        AND    ODIH.REG_DT <![CDATA[>=]]> STR_TO_DATE(#{salesStdt},'%Y-%m-%d')
 		        AND    ODIH.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(#{salesEddt},'%Y-%m-%d'), INTERVAL 1 DAY)
@@ -170,6 +177,198 @@
 		ORDER  BY ODIH.ORD_DTL_ITEM_HST_SQ
 	</select>
 	
+	<!-- 정산확정 데이터 삭제 -->
+	<delete id="deleteSettleConfirm" parameterType="String">
+		/* TsaSettle.deleteSettleConfirm */
+		DELETE FROM TB_USAC
+		WHERE  USAC_YM = REPLACE(#{settleYm},'-','')
+	</delete>
+	
+	<!-- 정산확정 데이터 생성 -->
+	<insert id="createSettleConfirm" parameterType="SettleConfirm">
+		/* TsaSettle.createSettleConfirm */
+		INSERT INTO TB_USAC (
+		       USAC_YM
+		     , SUPPLY_COMP_CD
+		     , ECONTRACT_YN
+		     , DISTRIBUTION_GB
+		     , SETTLE_DAY
+		     , SELL_QTY
+		     , REAL_SELL_AMT
+		     , SELL_FEE_AMT
+		     , CPN_DC_AMT
+		     , SELF_CPN_DC_AMT
+		     , SUPPLY_COMP_CPN_DC_AMT
+		     , TMTB_DC_AMT
+		     , BILL_AMT
+		     , SUPPLY_AMT
+		     , TAX_AMT
+		     , DELV_FEE
+		     , BANK_CD
+		     , ACCOUNT_NO
+		     , DEPOSITOR_NM
+		     , BILL_EMAIL
+		     , REG_NO
+		     , REG_DT
+		)
+		SELECT ODIH.USAC_YM                                                      /*정산연월*/
+		     , ODIH.SUPPLY_COMP_CD                                               /*공급업체코드*/
+		     , SC.ECONTRACT_YN                                                   /*전자계약여부*/
+		     , SC.DISTRIBUTION_GB                                                /*유통구분*/
+		     , SC.SETTLE_DAY                                                     /*정산주기*/
+		     , SUM(ODIH.SELL_QTY)                      AS SELL_QTY               /*판매수량*/
+		     , SUM(ODIH.REAL_SELL_AMT)                 AS REAL_SELL_AMT          /*실판매금액(=상품총액)*/
+		     , SUM(ODIH.SELL_FEE_AMT)                  AS SELL_FEE_AMT           /*수수료*/
+		     , SUM(ODIH.CPN_DC_AMT)                    AS CPN_DC_AMT             /*쿠폰할인금액*/
+		     , SUM(ODIH.SELF_CPN_DC_AMT)               AS SELF_CPN_DC_AMT        /*자사쿠폰분담액*/
+		     , SUM(ODIH.SUPPLY_COMP_CPN_DC_AMT)        AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
+		     , SUM(ODIH.TMTB_DC_AMT)                   AS TMTB_DC_AMT            /*다다익선할인금액*/
+		     , SUM(CASE WHEN ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT <![CDATA[<]]> 0 THEN 0
+		                ELSE ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT
+		           END)                                AS BILL_AMT               /*계산서발행금액*/
+		     , TRUNCATE(SUM(CASE WHEN ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT <![CDATA[<]]> 0 THEN 0
+		                         ELSE ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT
+		                    END) / 1.1,0)              AS SUPPLY_AMT             /*공급가액*/
+		     , SUM(CASE WHEN ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT <![CDATA[<]]> 0 THEN 0
+		                ELSE ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT
+		           END) - (TRUNCATE(SUM(CASE WHEN ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT <![CDATA[<]]> 0 THEN 0
+		                                     ELSE ODIH.SELL_FEE_AMT - ODIH.SELF_CPN_DC_AMT
+		                                END) / 1.1,0)) AS TAX_AMT                /*세액*/
+		     , SUM(ODIH.DELV_FEE)                      AS DELV_FEE               /*배송비*/
+		     , SC.BANK_CD                                                        /*은행코드*/
+		     , SC.ACCOUNT_NO                                                     /*계좌번호*/
+		     , SC.DEPOSITOR_NM                                                   /*예금주명*/
+		     , SC.BILL_EMAIL                                                     /*세금계산서이메일*/
+		     , #{regNo}                                AS REG_NO
+		     , NOW()                                   AS REG_DT
+		FROM   (
+		        SELECT DATE_FORMAT(ODIH.OCCUR_DT,'%Y%m')            AS USAC_YM                /*정산연월*/
+		             , ODIH.SUPPLY_COMP_CD                                                    /*공급업체코드*/
+		             , SUM(ODIH.SELL_QTY)                           AS SELL_QTY               /*판매수량*/
+		             , SUM(ODIH.SELL_AMT
+		                   - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT + ODIH.CART_CPN_DC_AMT)
+		                   - ODIH.TMTB_DC_AMT)                      AS REAL_SELL_AMT /*실판매금액(=상품총액. 쿠폰과 다다익선만 차감. 상품권과 포인트는 포함)*/
+		             , ROUND(SUM((ODIH.SELL_AMT
+		                          - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT + ODIH.CART_CPN_DC_AMT)
+		                          - ODIH.TMTB_DC_AMT
+		                         ) * (ODIH.SELL_FEE_RATE / 100)),0) AS SELL_FEE_AMT           /*수수료*/
+		             , SUM(ODIH.CPN1_DC_AMT +
+		                   ODIH.GOODS_CPN_DC_AMT +
+		                   ODIH.CART_CPN_DC_AMT)                    AS CPN_DC_AMT             /*쿠폰할인금액*/
+		             , SUM(ODIH.SELF_CPN_DC_AMT)                    AS SELF_CPN_DC_AMT        /*자사쿠폰분담액*/
+		             , SUM(ODIH.SUPPLY_COMP_CPN_DC_AMT)             AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
+		             , SUM(ODIH.TMTB_DC_AMT)                        AS TMTB_DC_AMT            /*다다익선할인금액*/
+		             , 0                                            AS DELV_FEE               /*배송비*/
+		        FROM   (
+		                SELECT ODIH.REG_DT                                                        AS OCCUR_DT               /*발생일시*/
+		                     , OD.SUPPLY_COMP_CD                                                                            /*공급업체코드*/
+		                     , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN 1 ELSE -1 END)
+		                       *
+		                       CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20'/*판매-배송중*/ THEN
+		                                     ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY
+		                                 ELSE /*환입-반품완료,환입-교환완료*/
+		                                     ODIH.CNCL_RTN_QTY
+		                            END AS SIGNED INT)                                            AS SELL_QTY               /*판매수량*/
+		                     , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN 1 ELSE -1 END)
+		                       *
+		                       CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20'/*판매-배송중*/ THEN
+		                                     ((ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY) * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
+		                                                                                     IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
+		                                                                                 ELSE
+		                                                                                     ODIH.ITEM_PRICE
+		                                                                            END))
+		                                     + ODIH.CPN1_DC_AMT
+		                                 ELSE /*환입-반품완료,환입-교환완료*/
+		                                     (ODIH.CNCL_RTN_QTY * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
+		                                                                    IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
+		                                                                ELSE
+		                                                                    ODIH.ITEM_PRICE
+		                                                           END))
+		                                     + ODIH.CPN1_DC_AMT
+		                            END AS SIGNED INT)                                            AS SELL_AMT               /*판매금액(ORD_AMT에는 CPN1_DC_AMT가 빠진 금액이 들어가 있음)*/
+		                     , ODIH.CPN1_DC_AMT                                                                             /*즉시사용쿠폰금액*/
+		                     , ODIH.GOODS_CPN_DC_AMT                                                                        /*상품쿠폰사용금액*/
+		                     , ODIH.CART_CPN_DC_AMT                                                                         /*주문서쿠폰사용금액*/
+		                     , ODIH.PNT_DC_AMT                                                                              /*포인트사용금액*/
+		                     , ODIH.TMTB1_DC_AMT + ODIH.TMTB2_DC_AMT                              AS TMTB_DC_AMT            /*다다익선할인금액*/
+		                     , ((100 - IFNULL(CB1.BURDEN_RATE,0)) / 100) * ODIH.CPN1_DC_AMT
+		                       + ((100 - IFNULL(CB2.BURDEN_RATE,0)) / 100) * ODIH.GOODS_CPN_DC_AMT
+		                       + ((100 - IFNULL(CB3.BURDEN_RATE,0)) / 100) * ODIH.CART_CPN_DC_AMT AS SELF_CPN_DC_AMT        /*자사쿠폰분담액*/
+		                     , (IFNULL(CB1.BURDEN_RATE,0) / 100) * ODIH.CPN1_DC_AMT
+		                       + (IFNULL(CB2.BURDEN_RATE,0) / 100) * ODIH.GOODS_CPN_DC_AMT
+		                       + (IFNULL(CB3.BURDEN_RATE,0) / 100) * ODIH.CART_CPN_DC_AMT         AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
+		                     , CASE WHEN O.MALL_GB = 'G011_10' /*자사몰*/ THEN
+		                                OD.SELL_FEE_RATE
+		                            ELSE /*제휴몰*/
+		                                IFNULL(E.SELL_FEE_RATE,0)
+		                       END                                                                AS SELL_FEE_RATE          /*판매수수료율*/
+		                FROM   TB_ORDER_DETAIL_ITEM_HST ODIH
+		                INNER JOIN TB_ORDER_DETAIL OD ON ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
+		                INNER JOIN TB_ORDER O ON ODIH.ORD_NO = O.ORD_NO
+		                LEFT OUTER JOIN TB_EXTMALL E ON OD.EXTMALL_ID = E.EXTMALL_ID
+		                LEFT OUTER JOIN TB_COUPON_BURDEN CB1 ON OD.CPN1_CPN_SQ = CB1.CPN_ID
+		                                                    AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
+		                LEFT OUTER JOIN TB_COUPON_BURDEN CB2 ON OD.GOODS_CPN_SQ = CB1.CPN_ID
+		                                                    AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
+		                LEFT OUTER JOIN TB_COUPON_BURDEN CB3 ON OD.CART_CPN_SQ = CB1.CPN_ID
+		                                                    AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
+		                LEFT OUTER JOIN TB_EXTMALL_USAC_PRICE EUP ON ODIH.ORD_DTL_ITEM_HST_SQ = EUP.ORD_DTL_ITEM_HST_SQ
+		                WHERE  1 = 1
+		                AND    ODIH.REG_DT <![CDATA[>=]]> STR_TO_DATE(CONCAT(#{settleYm},'-01'),'%Y-%m-%d')
+		                AND    ODIH.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(CONCAT(#{settleYm},'-01'),'%Y-%m-%d'), INTERVAL 1 MONTH)
+		                AND    ODIH.ORD_DTL_STAT IN ('G720_20','G720_50','G720_60') /*판매-배송중,환입-반품완료,환입-교환완료*/
+		               ) ODIH
+		        GROUP  BY DATE_FORMAT(ODIH.OCCUR_DT,'%Y%m')
+		                , ODIH.SUPPLY_COMP_CD
+		        
+		        UNION ALL
+		        
+		        /*업체별배송비*/
+		        SELECT DATE_FORMAT(OD.OCCUR_DT,'%Y%m') AS USAC_YM                /*정산연월*/
+		             , OD.SUPPLY_COMP_CD                                         /*공급업체코드*/
+		             , 0                               AS SELL_QTY               /*판매수량*/
+		             , 0                               AS REAL_SELL_AMT          /*실판매금액(=상품총액. 쿠폰과 다다익선만 차감. 상품권과 포인트는 포함)*/
+		             , 0                               AS SELL_FEE_AMT           /*수수료*/
+		             , 0                               AS CPN_DC_AMT             /*쿠폰할인금액*/
+		             , 0                               AS SELF_CPN_DC_AMT        /*자사쿠폰분담액*/
+		             , 0                               AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
+		             , 0                               AS TMTB_DC_AMT            /*다다익선할인금액*/
+		             , SUM(DF.DELV_FEE)                AS DELV_FEE               /*배송비*/
+		        FROM   (
+		                SELECT DISTINCT
+		                       ODIH.REG_DT       AS OCCUR_DT  /*발생일시*/
+		                     , OD.SUPPLY_COMP_CD              /*공급업체코드*/
+		                     , ODIH.ORD_NO                    /*주문번호*/
+		                     , ODIH.ORD_DTL_STAT AS SETTLE_GB /*정산구분*/
+		                FROM   TB_ORDER_DETAIL_ITEM_HST ODIH
+		                     , TB_ORDER_DETAIL OD
+		                     , TB_GOODS G
+		                WHERE  ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
+		                AND    OD.GOODS_CD = G.GOODS_CD
+		                AND    ODIH.REG_DT <![CDATA[>=]]> STR_TO_DATE(CONCAT(#{settleYm},'-01'),'%Y-%m-%d')
+		                AND    ODIH.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(CONCAT(#{settleYm},'-01'),'%Y-%m-%d'), INTERVAL 1 MONTH)
+		                AND    ODIH.ORD_DTL_STAT IN ('G720_20','G720_50','G720_60') /*판매-배송중,환입-반품완료,환입-교환완료*/
+		               ) OD
+		             , TB_DELIVERY_FEE DF
+		        WHERE  OD.SUPPLY_COMP_CD = DF.SUPPLY_COMP_CD
+		        AND    OD.ORD_NO = DF.ORD_NO
+		        AND    OD.OCCUR_DT >= DF.REG_DT /*출고기준의 일자 보다 배송비 발생일자가 적은 넘만*/
+		        GROUP  BY DATE_FORMAT(OD.OCCUR_DT,'%Y%m')
+		                , OD.SUPPLY_COMP_CD
+		       ) ODIH
+		     , TB_SUPPLY_COMPANY SC
+		WHERE  ODIH.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
+		GROUP  BY ODIH.USAC_YM
+		     , ODIH.SUPPLY_COMP_CD
+		     , SC.ECONTRACT_YN
+		     , SC.DISTRIBUTION_GB
+		     , SC.SETTLE_DAY
+		     , SC.BANK_CD
+		     , SC.ACCOUNT_NO
+		     , SC.DEPOSITOR_NM
+		     , SC.BILL_EMAIL
+	</insert>
+	
 	<!-- 배송비정산 목록 -->
 	<select id="getDeliveryFeeSettleList" parameterType="DelvFeeSettle" resultType="DelvFeeSettle">
 		/* TsaSettle.getDeliveryFeeSettleList */
@@ -226,11 +425,98 @@
 		ORDER  BY DATE_FORMAT(OD.OCCUR_DT,'%Y-%m-%d'), OD.SUPPLY_COMP_CD, DF.DELV_FEE_GB
 	</select>
 	
-	<!-- 상품정산 목록 -->
+	<!-- 정산확정 목록 -->
 	<select id="getSettleConfirmList" parameterType="SettleConfirm" resultType="SettleConfirm">
 		/* TsaSettle.getSettleConfirmList */
-		SELECT *
-		FROM   DUAL
+		SELECT U.USAC_YM                                                                                                 /*정산연월*/
+		     , U.SUPPLY_COMP_CD                                                                                          /*공급업체코드*/
+		     , SC.SUPPLY_COMP_NM                                                                                         /*공급업체명*/
+		     , U.ECONTRACT_YN                                                                                            /*전자계약여부*/
+		     , SV.BIZ_NO                                                                                                 /*사업자번호*/
+		     , U.SETTLE_DAY                                                                                              /*정산주기*/
+		     , FN_GET_CODE_NM('G075',U.SETTLE_DAY)                                                     AS SETTLE_DAY_NM  /*정산주기명*/
+		     , U.SELL_QTY                                                                                                /*판매수량*/
+		     , U.REAL_SELL_AMT                                                                                           /*실판매금액(=상품총액)*/
+		     , U.SELL_FEE_AMT                                                                                            /*수수료*/
+		     , U.CPN_DC_AMT                                                                                              /*쿠폰할인금액*/
+		     , U.SELF_CPN_DC_AMT                                                                                         /*자사쿠폰분담액*/
+		     , U.SUPPLY_COMP_CPN_DC_AMT                                                                                  /*입점쿠폰분담액*/
+		     , U.TMTB_DC_AMT                                                                                             /*다다익선할인금액*/
+		     , U.BILL_AMT                                                                                                /*계산서발행금액*/
+		     , U.SUPPLY_AMT                                                                                              /*공급금액*/
+		     , U.TAX_AMT                                                                                                 /*세액*/
+		     , U.DELV_FEE                                                                                                /*배송비*/
+		     , IFNULL(UR2.ETC_DEDUCT_AMT,0)                                                            AS ETC_DEDUCT_AMT /*기타차감*/
+		     , U.BILL_AMT + U.DELV_FEE - IFNULL(UR2.ETC_DEDUCT_AMT,0)                                  AS GIVE_AMT       /*지급금액*/
+		     , IFNULL(UR1.RECEIVABLE_AMT,0)                                                            AS RECEIVABLE_AMT /*미수금*/
+		     , (U.BILL_AMT + U.DELV_FEE - IFNULL(UR2.ETC_DEDUCT_AMT,0)) - IFNULL(UR1.RECEIVABLE_AMT,0) AS TOT_GIVE_AMT   /*총지급금액*/
+		     , CASE WHEN U.ECONTRACT_YN = 'N' THEN '보류'
+		            ELSE
+		                CASE WHEN (U.BILL_AMT + U.DELV_FEE - IFNULL(UR2.ETC_DEDUCT_AMT,0)) <![CDATA[<]]> 0 THEN
+		                         '미수금'
+		                     ELSE
+		                         '정상'
+		                END
+		       END                                                                                     AS SETTLE_STAT    /*정산상태*/
+		     , U.BANK_CD                                                                                                 /*은행코드*/
+		     , FN_GET_CODE_NM('G940',U.BANK_CD)                                                        AS BANK_NM        /*은행명*/
+		     , U.ACCOUNT_NO                                                                                              /*계좌번호*/
+		     , U.DEPOSITOR_NM                                                                                            /*예금주명*/
+		     , U.BILL_EMAIL                                                                                              /*계산서이메일*/
+		FROM   TB_USAC U
+		INNER JOIN TB_SUPPLY_COMPANY SC ON U.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
+		INNER JOIN TB_SUPPLY_VENDOR SV ON SC.SUPPLY_VENDOR_CD = SV.SUPPLY_VENDOR_CD
+		LEFT OUTER JOIN TB_USAC_RECEIVE UR1 ON U.USAC_YM = UR1.USAC_YM
+		                                   AND U.SUPPLY_COMP_CD = UR1.SUPPLY_COMP_CD
+		LEFT OUTER JOIN (
+		                 SELECT OCCUR_YM        AS USAC_YM
+		                      , SUPPLY_COMP_CD
+		                      , SUM(REWARD_AMT) AS ETC_DEDUCT_AMT
+		                 FROM   TB_USAC_REDUCT
+		                 WHERE  OCCUR_YM = REPLACE(#{settleYm},'-','')
+		                 GROUP  BY OCCUR_YM, SUPPLY_COMP_CD
+		                ) UR2 ON U.USAC_YM = UR2.USAC_YM
+		                     AND U.SUPPLY_COMP_CD = UR2.SUPPLY_COMP_CD
+		WHERE  U.USAC_YM = REPLACE(#{settleYm},'-','')
+		<if test="multiSupplyComp != null and multiSupplyComp != ''">
+		AND    U.SUPPLY_COMP_CD IN
+		    <foreach collection="multiSupplyComp" item="item" index="index"  open="(" close=")" separator=",">
+		    #{item}
+		    </foreach>
+		</if>
+	</select>
+	
+	<!-- 세금계산서용 정산 목록 -->
+	<select id="getTaxBillSettleList" parameterType="SettleConfirm" resultType="SettleConfirm">
+		/* TsaSettle.getTaxBillSettleList */
+		SELECT U.USAC_YM                                                            /*정산연월*/
+		     , SV.BIZ_NO                                                            /*사업자번호*/
+		     , U.SUPPLY_COMP_CD                                                     /*공급업체코드*/
+		     , SC.SUPPLY_COMP_NM                                                    /*공급업체명*/
+		     , SV.OWNER_NM                                                          /*대표자명*/
+		     , SV.BIZ_TYPE                                                          /*업태*/
+		     , SV.BIZ_KIND                                                          /*업종*/
+		     , CONCAT(SV.BIZ_BASE_ADDR,' ',IFNULL(SV.BIZ_DTL_ADDR,'')) AS BIZ_ADDR  /*사업장주소*/
+		     , SC.SETTLE_CHARGE_NM                                                  /*정산담당자명*/
+		     , SC.SETTLE_CHARGE_TELNO                                               /*정산담당자연락처*/
+		     , SC.BILL_EMAIL                                                        /*계산서이메일*/
+		     , '상품판매수수료'                                        AS BILL_TYPE /*계산서유형*/
+		     , U.SUPPLY_AMT                                                         /*공급가액*/
+		     , U.TAX_AMT                                                            /*세액*/
+		     , U.BILL_AMT                                                           /*계산서발행금액*/
+		FROM   (
+		        SELECT USAC_YM
+		             , SUPPLY_COMP_CD
+		             , SUM(BILL_AMT)  AS BILL_AMT
+		        FROM   TB_USAC
+		        WHERE  1 = 1
+		        AND    USAC_YM = REPLACE(#{settleYm},'-','')
+		        GROUP  BY USAC_YM, SUPPLY_COMP_CD
+		       ) U
+		     , TB_SUPPLY_VENDOR SV
+		     , TB_SUPPLY_COMPANY SC
+		WHERE  U.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
+		AND    SV.SUPPLY_VENDOR_CD = SC.SUPPLY_VENDOR_CD
 	</select>
 	
 	<!-- 제휴채널정산 목록 -->

+ 57 - 6
src/main/webapp/WEB-INF/views/settle/GoodsSettleForm.html

@@ -100,17 +100,42 @@
 			</form>
 		</div>
 		<!-- 검색조건 영역 -->
-
+		
+		<!-- 정산확정 영역 (정산담당자, 수퍼관리자, 어드민관리자 권한) -->
+		<div class="panelStyle" th:if="${sessionInfo.roleCd == 'G001_A106' or sessionInfo.roleCd == 'G001_0000' or sessionInfo.roleCd == 'G001_A000'}">
+			<ul class="panelBar">
+				<li class="center">
+					<h3><strong>정산기준월</strong> : </h3>
+					<input type="text" class="schMonth w60" name="settleYm" id="settleYm" maxlength="7"/>
+					<button type="button" class="btn icn schBtn" data-id="settleYm"><i class="fa fa-calendar" aria-hidden="true"></i></button>
+					<button type="button" class="btn btn-base btn-lg" id="btnConfirmSettle">정산확정</button>
+					<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>[정산확정] 버튼 클릭 시 해당월의 업체별 정산 데이터가 재확정됩니다.</span>
+				</li>
+			</ul>
+		</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>1.상품총액</strong>: 실판매가 * 판매수량<br/>
-						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>2.수수료</strong>: 상품총액(쿠폰할인금액과 다다익선할인금액만 차감. 포인트와 상품권은 포함) * 판매수수료율(%)<br/>
-						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>3.정산대상액</strong>: 상품총액 - 수수료
-					</span>
+					<span class="infoTxt cBlue">* 항목 설명</span>
+					<!-- 아이콘 툴팁 -->
+					<div class="iconTooltip marL10">
+						<i class="fa fa-info" aria-hidden="true"></i>
+						<span class="left" style="width: 600px;">
+							<strong>1.상품총액</strong>: 실판매가 * 판매수량<br/>
+							<strong>2.수수료</strong>: 상품총액(쿠폰할인금액과 다다익선할인금액만 차감. 포인트와 상품권은 포함) * 판매수수료율(%)<br/>
+							<strong>3.정산대상액</strong>: 상품총액 - 수수료
+						</span>
+					</div>
+					<!-- //아이콘 툴팁 -->
+<!-- 					<span class="infoTxt cBlue"> -->
+<!-- 						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>1.상품총액</strong>: 실판매가 * 판매수량<br/> -->
+<!-- 						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>2.수수료</strong>: 상품총액(쿠폰할인금액과 다다익선할인금액만 차감. 포인트와 상품권은 포함) * 판매수수료율(%)<br/> -->
+<!-- 						<i class="fa fa-info-circle" aria-hidden="true"></i><strong>3.정산대상액</strong>: 상품총액 - 수수료 -->
+<!-- 					</span> -->
 				</li>
 				<li class="right">
 					<button type="button" class="btn btn-default btn-lg" id="btnExcel">엑셀다운로드</button>
@@ -158,6 +183,10 @@
 		{ headerName: "담당MD", field: "mdNm", width: 100, cellClass: 'text-center' },
 		{ headerName: "단품코드", field: "itemCd", width: 120, cellClass: 'text-center' },
 		{ headerName: "옵션", field: "optCd1", width: 100, cellClass: 'text-center' },
+		{
+			headerName: "몰판매가", field: "mallPrice", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
 		{
 			headerName: "판매가", field: "sellPrice", width: 100, cellClass: 'text-right',
 			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
@@ -326,6 +355,27 @@
 		$('#supplyCompTxt').html('');
 	});
 	
+	// 정산확정
+	$('#btnConfirmSettle').on('click', function() {
+		if (gagajf.isNull($('#settleYm').val())) {
+			mcxDialog.alertC('정산기준월을 입력해 주세요.', {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#settleYm').focus();
+				}
+			});
+			return;
+		}
+		
+		mcxDialog.confirm('정산확정을 하시면 업체별 정산 데이터가 생성됩니다.<br/>' + $('#settleYm').val() + '월의 정산을 확정하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				gagajf.ajaxJsonSubmit('/settle/confirm/save/' + $('#settleYm').val(), null);
+			}
+		});
+	});
+	
 	// 엑셀다운로드
 	$('#btnExcel').on('click', function() {
 		gagaAgGrid.exportToExcel('상품정산 목록', gridOptions);
@@ -334,6 +384,7 @@
 	$(document).ready(function() {
 		cfnCreateCalendar('#terms', 'salesStdt', 'salesEddt', true, '매출');
 		$('.btnToday').trigger('click');
+		$('#settleYm').val((new Date()).before(0, 1, 0).format("YYYY-MM"));
 		
 		$('#extmallVendor').hide();
 		

+ 89 - 61
src/main/webapp/WEB-INF/views/settle/SettleConfirmForm.html

@@ -31,33 +31,22 @@
 				<table class="frmStyle" aria-describedby="검색조건">
 					<colgroup>
 						<col style="width:10%;"/>
-						<col style="width:60%;"/>
+						<col style="width:25%;"/>
 						<col style="width:10%;"/>
 						<col/>
 					</colgroup>
 					<tr>
-						<th>매출기간<i class="required" title="필수" aria-hidden="true"></i></th>
-						<td id="terms">
-						</td>
-						<th>유통구분</th>
+						<th>정산기준월<i class="required" title="필수" aria-hidden="true"></i></th>
 						<td>
-							<select name="distributionGb">
-								<option value="">[전체]</option>
-								<option th:if="${distributionGbList}" th:each="oneData, status : ${distributionGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
+							<input type="text" class="schMonth w60" name="settleYm" id="settleYm" maxlength="7"/>
+							<button type="button" class="btn icn schBtn" data-id="settleYm"><i class="fa fa-calendar" aria-hidden="true"></i></button>
 						</td>
-					</tr>
-					<tr>
-						<th>공급업체/브랜드</th>
-						<td colspan="3">
+						<th>공급업체</th>
+						<td>
 							<select name="supplyCompCd">
 								<option value="">[전체]</option>
 								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
-							/
-							<select name="brandCd">
-								<option value="">[전체]</option>
-							</select>
 						</td>
 					</tr>
 				</table>
@@ -90,58 +79,102 @@
 
 <script th:inline="javascript">
 /*<![CDATA[*/
-	let supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
-	let distributionGbList = gagajf.convertToArray([[${distributionGbList}]]);
-	let bankList = gagajf.convertToArray([[${bankList}]]);
+// 	let supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
+// 	let distributionGbList = gagajf.convertToArray([[${distributionGbList}]]);
+// 	let bankList = gagajf.convertToArray([[${bankList}]]);
 	
 	let columnDefs = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+// 		{
+// 			headerName: "정산확정", field: "confirmYn", width: 100, cellClass: 'text-center',
+// 			cellRenderer: function(params) {
+// 				if (params.value == 'Y') {
+// 					return '<button type="button" class="btn btn-success btn-sm">확정</button>';
+// 				} else {
+// 					return '<button type="button" class="btn btn-danger btn-sm">해제</button>';
+// 				}
+// 			}
+// 		},
+		{ headerName: "공급업체코드", field: "supplyCompCd", width: 100, cellClass: 'text-center', hide: true },
+		{ headerName: "공급업체", field: "supplyCompNm", width: 200 },
+		{ headerName: "전자계약여부", field: "econtractYn", width: 100, cellClass: 'text-center' },
+		{ headerName: "사업자등록번호", field: "bizNo", width: 120, cellClass: 'text-center' },
+		{ headerName: "정산주기", field: "settleDay", width: 100, cellClass: 'text-center', hide:true },
+		{ headerName: "정산주기", field: "settleDayNm", width: 100, cellClass: 'text-center' },
 		{
-			headerName: "정산확정", field: "confirmYn", width: 100, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				if (params.value == 'Y') {
-					return '<button type="button" class="btn btn-success btn-sm">확정</button>';
-				} else {
-					return '<button type="button" class="btn btn-danger btn-sm">해제</button>';
-				}
-			}
+			headerName: "판매수량", field: "sellQty", width: 100, cellClass: 'text-center',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
 		},
 		{
-			headerName: "공급업체", field: "supplyCompCd", width: 100, cellClass: 'text-center',
-			valueGetter: function (params) {
-				return gagaAgGrid.lookupValue(supplyCompList, params.data.supplyCompCd);
-			}
+			headerName: "판매총액", field: "sellAmt", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "수수료", field: "sellFeeAmt", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "쿠폰할인금액", field: "cpnDcAmt", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "자사쿠폰분담액", field: "selfCpnDcAmt", width: 120, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "입점쿠폰분담액", field: "supplyCompCpnDcAmt", width: 120, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "계산서발행금액", field: "billAmt", width: 120, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "공급가액", field: "supplyAmt", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "세액", field: "taxAmt", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "배송비", field: "delvFee", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
 		},
-		{ headerName: "전자계약여부", field: "econtractYn", width: 100, cellClass: 'text-center' },
-		{ headerName: "사업자등록번호", field: "bizNo", width: 120, cellClass: 'text-center' },
-		{ headerName: "정산주기", field: "settleDay", width: 100, cellClass: 'text-center' },
-		{ headerName: "판매수량", field: "sellQty", width: 100, cellClass: 'text-center' },
-		{ headerName: "판매총액", field: "sellAmt", width: 100, cellClass: 'text-right' },
-		{ headerName: "수수료", field: "sellFeeAmt", width: 100, cellClass: 'text-right' },
-		{ headerName: "쿠폰할인금액", field: "cpnDcAmt", width: 100, cellClass: 'text-right' },
-		{ headerName: "자사쿠폰분담액", field: "selfCpnDcAmt", width: 120, cellClass: 'text-right' },
-		{ headerName: "입점쿠폰분담액", field: "supplyCompCpnDcAmt", width: 120, cellClass: 'text-right' },
-		{ headerName: "계산서발행금액", field: "billAmt", width: 120, cellClass: 'text-right' },
-		{ headerName: "공급가액", field: "supplyAmt", width: 100, cellClass: 'text-right' },
-		{ headerName: "세액", field: "taxAmt", width: 100, cellClass: 'text-right' },
-		{ headerName: "배송비", field: "delvFeeAmt", width: 100, cellClass: 'text-right' },
 		{
 			headerName: "기타차감", field: "etcDeductAmt", width: 100, cellClass: 'text-right',
 			editable: true, cellEditor: 'numericCellEditor', cellEditorParams: { maxlength: 12, validType: 'integer' },
-			cellRenderer: function(params) { return gagajf.isNull(params.value) ? 0 : params.value.addComma(); },
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
 			cellStyle: { color: '#fffff', 'background-color': '#aaaaff' }
 		},
-		{ headerName: "지급금액", field: "giveAmt", width: 100, cellClass: 'text-right' },
+		{
+			headerName: "지급금액", field: "giveAmt", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
 		{
 			headerName: "미수금", field: "receivableAmt", width: 100, cellClass: 'text-right',
 			editable: true, cellEditor: 'numericCellEditor', cellEditorParams: { maxlength: 12, validType: 'integer' },
-			cellRenderer: function(params) { return gagajf.isNull(params.value) ? 0 : params.value.addComma(); },
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
 			cellStyle: { color: '#fffff', 'background-color': '#aaaaff' }
 		},
-		{ headerName: "총지급금액", field: "totGiveAmt", width: 100, cellClass: 'text-right' },
-		
 		{
-			headerName: "상태", field: "settleStat", width: 100, cellClass: 'text-center',
+			headerName: "총지급금액", field: "totGiveAmt", width: 100, cellClass: 'text-right',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); },
+			cellStyle : function(params) { if (Number(params.value) < 0) return { 'color' : 'red' } }
+		},
+		{
+			headerName: "상태", field: "settleStat", width: 100, cellClass: 'text-center'/* ,
 			cellRenderer: function (params) {
 				// 전자계약이 안 되어 있으면 "보류"
 				// 전자계약은 되어 있으나 지급금액 < 0 이면 "미수금" 그 외는 "정상"
@@ -154,14 +187,10 @@
 				}
 				
 				return '정상';
-			}
-		},
-		{
-			headerName: "은행", field: "bankCd", width: 100, cellClass: 'text-center',
-			valueGetter: function (params) {
-				return gagaAgGrid.lookupValue(bankList, params.data.bankCd);
-			}
+			} */
 		},
+		{ headerName: "은행코드", field: "bankCd", width: 100, cellClass: 'text-center', hide: true },
+		{ headerName: "은행", field: "bankNm", width: 100, cellClass: 'text-center' },
 		{ headerName: "계좌번호", field: "accountNo", width: 150, cellClass: 'text-center' },
 		{ headerName: "예금주명", field: "depositorNm", width: 100, cellClass: 'text-center' },
 		{ headerName: "계산서이메일", field: "billEmail", width: 100, cellClass: 'text-center' }
@@ -188,8 +217,7 @@
 	});
 	
 	$(document).ready(function() {
-		cfnCreateCalendar('#terms', 'startDt', 'endDt', true, '매출');
-		$('.btnToday').trigger('click');
+		$('#settleYm').val((new Date()).before(0, 1, 0).format("YYYY-MM"));
 		
 		// Create a agGrid
 		gagaAgGrid.createGrid('gridList', gridOptions);