|
|
@@ -0,0 +1,1900 @@
|
|
|
+<?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.batch.biz.dao.TsbGoodsDao">
|
|
|
+
|
|
|
+ <!-- 상품 기본정보 이력 생성 -->
|
|
|
+ <insert id="createGoodsHst" parameterType="Goods">
|
|
|
+ /* TsbGoods.createGoodsHst */
|
|
|
+ INSERT INTO TB_GOODS_HST
|
|
|
+ ( GOODS_CD
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , BRAND_CD
|
|
|
+ , ITEMKIND_CD
|
|
|
+ , GOODS_NM
|
|
|
+ , GOODS_TNM
|
|
|
+ , GOODS_SNM
|
|
|
+ , GOODS_SNM1
|
|
|
+ , MAIN_COLOR_CD
|
|
|
+ , STYLE_YEAR
|
|
|
+ , SEASON_CD
|
|
|
+ , SEX_GB
|
|
|
+ , GOODS_NUM
|
|
|
+ , GOODS_TYPE
|
|
|
+ , LIST_PRICE
|
|
|
+ , CURR_PRICE
|
|
|
+ , CURR_BPRICE
|
|
|
+ , PRICE_UPD_DT
|
|
|
+ , COST_PRICE
|
|
|
+ , DC_RATE
|
|
|
+ , GOODS_STAT
|
|
|
+ , SELF_MALL_YN
|
|
|
+ , GOODS_GB
|
|
|
+ , DISTRIBUTION_GB
|
|
|
+ , SELF_GOODS_YN
|
|
|
+ , SUPPLY_COMP_CD
|
|
|
+ , SUPPLY_GOODS_CD
|
|
|
+ , AGE_GRP_CD
|
|
|
+ , DELV_FEE_CD
|
|
|
+ , PNT_PRATE
|
|
|
+ , PNT_MRATE
|
|
|
+ , SELL_FEE_RATE
|
|
|
+ , FORMAL_GB
|
|
|
+ , CHANGEABLE_YN
|
|
|
+ , RETURNABLE_YN
|
|
|
+ , CHANGE_FEE_FREE_YN
|
|
|
+ , RETURN_FEE_FREE_YN
|
|
|
+ , PRE_PPNT_USABLE_YN
|
|
|
+ , PRE_MPNT_USABLE_YN
|
|
|
+ , MIN_ORD_QTY
|
|
|
+ , MAX_ORD_QTY
|
|
|
+ , DAY_MAX_ORD_QTY
|
|
|
+ , GIFT_PACK_YN
|
|
|
+ , FRST_CFRM_DT
|
|
|
+ , ORIGIN_CD
|
|
|
+ , MAKE_YMD
|
|
|
+ , TAX_GB
|
|
|
+ , ERP_PRICE_LINK_YN
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ , NEW_CUST_ORD_YN
|
|
|
+ , ADULT_YN
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , BRAND_CD
|
|
|
+ , ITEMKIND_CD
|
|
|
+ , GOODS_NM
|
|
|
+ , GOODS_TNM
|
|
|
+ , GOODS_SNM
|
|
|
+ , GOODS_SNM1
|
|
|
+ , MAIN_COLOR_CD
|
|
|
+ , STYLE_YEAR
|
|
|
+ , SEASON_CD
|
|
|
+ , SEX_GB
|
|
|
+ , GOODS_NUM
|
|
|
+ , GOODS_TYPE
|
|
|
+ , LIST_PRICE
|
|
|
+ , CURR_PRICE
|
|
|
+ , CURR_BPRICE
|
|
|
+ , PRICE_UPD_DT
|
|
|
+ , COST_PRICE
|
|
|
+ , DC_RATE
|
|
|
+ , GOODS_STAT
|
|
|
+ , SELF_MALL_YN
|
|
|
+ , GOODS_GB
|
|
|
+ , DISTRIBUTION_GB
|
|
|
+ , SELF_GOODS_YN
|
|
|
+ , SUPPLY_COMP_CD
|
|
|
+ , SUPPLY_GOODS_CD
|
|
|
+ , AGE_GRP_CD
|
|
|
+ , DELV_FEE_CD
|
|
|
+ , PNT_PRATE
|
|
|
+ , PNT_MRATE
|
|
|
+ , SELL_FEE_RATE
|
|
|
+ , FORMAL_GB
|
|
|
+ , CHANGEABLE_YN
|
|
|
+ , RETURNABLE_YN
|
|
|
+ , CHANGE_FEE_FREE_YN
|
|
|
+ , RETURN_FEE_FREE_YN
|
|
|
+ , PRE_PPNT_USABLE_YN
|
|
|
+ , PRE_MPNT_USABLE_YN
|
|
|
+ , MIN_ORD_QTY
|
|
|
+ , MAX_ORD_QTY
|
|
|
+ , DAY_MAX_ORD_QTY
|
|
|
+ , GIFT_PACK_YN
|
|
|
+ , FRST_CFRM_DT
|
|
|
+ , ORIGIN_CD
|
|
|
+ , MAKE_YMD
|
|
|
+ , TAX_GB
|
|
|
+ , ERP_PRICE_LINK_YN
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ , NEW_CUST_ORD_YN
|
|
|
+ , ADULT_YN
|
|
|
+ , #{regNo}
|
|
|
+ , NOW()
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ FROM TB_GOODS
|
|
|
+ WHERE 1 = 1
|
|
|
+ <choose>
|
|
|
+ <when test='procJob != null and procJob == "G"'>
|
|
|
+ AND GOODS_CD = #{goodsCd}
|
|
|
+ </when>
|
|
|
+ <when test='procJob != null and procJob == "GTE"'>
|
|
|
+ AND GOODS_CD IN (
|
|
|
+ SELECT G.GOODS_CD
|
|
|
+ FROM TB_GOODS G
|
|
|
+ ,(
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , GOODS_TNM
|
|
|
+ FROM (
|
|
|
+ SELECT GT.GOODS_CD
|
|
|
+ , GT.GOODS_TNM
|
|
|
+ , RANK() OVER(PARTITION BY GT.GOODS_CD ORDER BY GT.GOODS_TNM_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_TNM_RES GT
|
|
|
+ WHERE GT.APPLY_YN = 'N'
|
|
|
+ AND GT.APPLY_EDDT <![CDATA[<]]> NOW()
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) S
|
|
|
+ WHERE G.GOODS_CD = S.GOODS_CD
|
|
|
+ AND G.GOODS_TNM = S.GOODS_TNM
|
|
|
+ )
|
|
|
+ </when>
|
|
|
+ <when test='procJob != null and procJob == "GTS"'>
|
|
|
+ AND GOODS_CD IN (
|
|
|
+ SELECT G.GOODS_CD
|
|
|
+ FROM TB_GOODS G
|
|
|
+ ,(
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , GOODS_TNM
|
|
|
+ FROM (
|
|
|
+ SELECT GT.GOODS_CD
|
|
|
+ , GT.GOODS_TNM
|
|
|
+ , RANK() OVER(PARTITION BY GT.GOODS_CD ORDER BY GT.GOODS_TNM_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_TNM_RES GT
|
|
|
+ WHERE GT.APPLY_YN = 'N'
|
|
|
+ AND NOW() BETWEEN GT.APPLY_STDT AND GT.APPLY_EDDT
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) S
|
|
|
+ WHERE G.GOODS_CD = S.GOODS_CD
|
|
|
+ AND (G.GOODS_TNM IS NULL OR G.GOODS_TNM <![CDATA[<>]]> S.GOODS_TNM)
|
|
|
+ )
|
|
|
+ </when>
|
|
|
+ <when test='procJob != null and procJob == "GPE"'>
|
|
|
+ AND GOODS_CD IN (
|
|
|
+ SELECT G.GOODS_CD
|
|
|
+ FROM TB_GOODS G
|
|
|
+ ,(
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , RES_GOODS_PRICE
|
|
|
+ FROM (
|
|
|
+ SELECT GT.GOODS_CD
|
|
|
+ , GT.RES_GOODS_PRICE
|
|
|
+ , RANK() OVER(PARTITION BY GT.GOODS_CD ORDER BY GT.GOODS_PRICE_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_PRICE_RES GT
|
|
|
+ WHERE GT.APPLY_YN = 'N'
|
|
|
+ AND GT.APPLY_EDDT <![CDATA[<]]> NOW()
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) S
|
|
|
+ WHERE G.GOODS_CD = S.GOODS_CD
|
|
|
+ AND G.CURR_PRICE = S.RES_GOODS_PRICE
|
|
|
+ AND G.SELF_GOODS_YN = 'Y'
|
|
|
+ )
|
|
|
+ </when>
|
|
|
+ <when test='procJob != null and procJob == "GPS"'>
|
|
|
+ AND GOODS_CD IN (
|
|
|
+ SELECT G.GOODS_CD
|
|
|
+ FROM TB_GOODS G
|
|
|
+ ,(
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , RES_GOODS_PRICE
|
|
|
+ FROM (
|
|
|
+ SELECT GT.GOODS_CD
|
|
|
+ , GT.RES_GOODS_PRICE
|
|
|
+ , RANK() OVER(PARTITION BY GT.GOODS_CD ORDER BY GT.GOODS_PRICE_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_PRICE_RES GT
|
|
|
+ WHERE GT.APPLY_YN = 'N'
|
|
|
+ AND NOW() BETWEEN GT.APPLY_STDT AND GT.APPLY_EDDT
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) S
|
|
|
+ WHERE G.GOODS_CD = S.GOODS_CD
|
|
|
+ AND (G.CURR_PRICE <![CDATA[<>]]> S.RES_GOODS_PRICE)
|
|
|
+ AND G.SELF_GOODS_YN = 'Y'
|
|
|
+ )
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ AND 1 = 2
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
+
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 상품 타이틀 예약건 초기화 -->
|
|
|
+ <update id="updateGoodTnmInit">
|
|
|
+ /* TsbGoods.updateGoodTnmInit */
|
|
|
+ UPDATE TB_GOODS A
|
|
|
+ SET A.UPD_NO = 0
|
|
|
+ , A.UPD_DT = NOW()
|
|
|
+ , A.GOODS_TNM = (SELECT S.GOODS_TNM
|
|
|
+ FROM (
|
|
|
+ SELECT GT.GOODS_CD
|
|
|
+ , GT.GOODS_TNM
|
|
|
+ , RANK() OVER(PARTITION BY GT.GOODS_CD ORDER BY GT.GOODS_TNM_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_TNM_RES GT
|
|
|
+ WHERE GT.APPLY_YN = 'N'
|
|
|
+ AND NOW() BETWEEN GT.APPLY_STDT AND GT.APPLY_EDDT
|
|
|
+ ) S
|
|
|
+ WHERE S.RANK = 1
|
|
|
+ AND S.GOODS_CD = A.GOODS_CD
|
|
|
+ )
|
|
|
+ WHERE A.GOODS_CD IN (
|
|
|
+ SELECT P.GOODS_CD
|
|
|
+ FROM TB_GOODS P
|
|
|
+ ,(SELECT GOODS_CD
|
|
|
+ , GOODS_TNM
|
|
|
+ FROM (
|
|
|
+ SELECT RS.GOODS_CD
|
|
|
+ , RS.GOODS_TNM
|
|
|
+ , RANK() OVER(PARTITION BY RS.GOODS_CD ORDER BY RS.GOODS_TNM_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_TNM_RES RS
|
|
|
+ WHERE RS.APPLY_EDDT <![CDATA[<]]> NOW()
|
|
|
+ AND RS.APPLY_YN = 'N'
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) TS
|
|
|
+ WHERE P.GOODS_CD = TS.GOODS_CD
|
|
|
+ )
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 상품예약 종료처리 -->
|
|
|
+ <update id="updateGoodsTnmRes">
|
|
|
+ /* TsbGoods.updateGoodsTnmRes */
|
|
|
+ UPDATE TB_GOODS_TNM_RES
|
|
|
+ SET APPLY_YN = 'Y'
|
|
|
+ , UPD_NO = 0
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ WHERE APPLY_EDDT <![CDATA[<]]> NOW()
|
|
|
+ AND APPLY_YN = 'N'
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 상품타이틀 변경 -->
|
|
|
+ <update id="updateGoodsTnm">
|
|
|
+ /* TsbGoods.updateGoodsTnm */
|
|
|
+ UPDATE TB_GOODS A
|
|
|
+ SET A.UPD_NO = 0
|
|
|
+ , A.UPD_DT = NOW()
|
|
|
+ , A.GOODS_TNM = (
|
|
|
+ SELECT S.GOODS_TNM
|
|
|
+ FROM TB_GOODS P
|
|
|
+ , (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , GOODS_TNM
|
|
|
+ FROM (
|
|
|
+ SELECT RS.GOODS_CD
|
|
|
+ , RS.GOODS_TNM
|
|
|
+ , RANK() OVER(PARTITION BY RS.GOODS_CD ORDER BY RS.GOODS_TNM_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_TNM_RES RS
|
|
|
+ WHERE NOW() BETWEEN RS.APPLY_STDT AND RS.APPLY_EDDT
|
|
|
+ AND RS.APPLY_YN = 'N'
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) S
|
|
|
+ WHERE P.GOODS_CD = S.GOODS_CD
|
|
|
+ AND P.GOODS_CD = A.GOODS_CD
|
|
|
+ AND (P.GOODS_TNM IS NULL OR P.GOODS_TNM <![CDATA[<>]]> S.GOODS_TNM)
|
|
|
+ )
|
|
|
+ WHERE A.GOODS_CD IN (
|
|
|
+ SELECT P.GOODS_CD
|
|
|
+ FROM TB_GOODS P
|
|
|
+ ,(SELECT GOODS_CD
|
|
|
+ , GOODS_TNM
|
|
|
+ FROM (
|
|
|
+ SELECT RS.GOODS_CD
|
|
|
+ , RS.GOODS_TNM
|
|
|
+ , RANK() OVER(PARTITION BY RS.GOODS_CD ORDER BY RS.GOODS_TNM_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_TNM_RES RS
|
|
|
+ WHERE NOW() BETWEEN RS.APPLY_STDT AND RS.APPLY_EDDT
|
|
|
+ AND RS.APPLY_YN = 'N'
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) S
|
|
|
+ WHERE P.GOODS_CD = S.GOODS_CD
|
|
|
+ AND (P.GOODS_TNM IS NULL OR P.GOODS_TNM <![CDATA[<>]]> S.GOODS_TNM)
|
|
|
+ )
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 상품 가격 예약건 초기화 -->
|
|
|
+ <update id="updateGoodPriceInit">
|
|
|
+ /* TsbGoods.updateGoodPriceInit */
|
|
|
+ UPDATE TB_GOODS A, (SELECT P.GOODS_CD
|
|
|
+ , TS.END_GOODS_PRICE
|
|
|
+ , P.CURR_PRICE
|
|
|
+ , 100 - ROUND((TS.END_GOODS_PRICE / P.LIST_PRICE) * 100 ,0) AS DC_RATE
|
|
|
+ FROM TB_GOODS P
|
|
|
+ , (SELECT GOODS_CD
|
|
|
+ , END_GOODS_PRICE
|
|
|
+ FROM (SELECT GT.GOODS_CD
|
|
|
+ , GT.END_GOODS_PRICE
|
|
|
+ , RANK() OVER(PARTITION BY GT.GOODS_CD ORDER BY GT.GOODS_PRICE_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_PRICE_RES GT
|
|
|
+ WHERE GT.APPLY_EDDT <![CDATA[<]]> NOW()
|
|
|
+ AND GT.APPLY_YN = 'N'
|
|
|
+ ) S
|
|
|
+ WHERE S.RANK = 1
|
|
|
+ ) TS
|
|
|
+ WHERE P.GOODS_CD = TS.GOODS_CD
|
|
|
+ ) B
|
|
|
+ SET A.UPD_NO = 0
|
|
|
+ , A.UPD_DT = NOW()
|
|
|
+ , A.CURR_PRICE = B.END_GOODS_PRICE
|
|
|
+ , A.CURR_BPRICE = B.CURR_PRICE
|
|
|
+ , A.DC_RATE = B.DC_RATE
|
|
|
+ , A.PRICE_UPD_DT = NOW()
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ AND A.SELF_GOODS_YN = 'Y'
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 상품 가격 예약 종료처리 -->
|
|
|
+ <update id="updateGoodsPriceRes">
|
|
|
+ /* TsbGoods.updateGoodsPriceRes */
|
|
|
+ UPDATE TB_GOODS_PRICE_RES
|
|
|
+ SET APPLY_YN = 'Y'
|
|
|
+ , UPD_NO = 0
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ WHERE APPLY_EDDT <![CDATA[<]]> NOW()
|
|
|
+ AND APPLY_YN = 'N'
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 상품 가격 변경 -->
|
|
|
+ <update id="updateGoodsPrice">
|
|
|
+ /* TsbGoods.updateGoodsPrice */
|
|
|
+ UPDATE TB_GOODS A, (SELECT P.GOODS_CD
|
|
|
+ , S.RES_GOODS_PRICE
|
|
|
+ , P.CURR_PRICE
|
|
|
+ , 100 - ROUND((S.RES_GOODS_PRICE / P.LIST_PRICE) * 100 ,0) AS DC_RATE
|
|
|
+ FROM TB_GOODS P
|
|
|
+ , (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , RES_GOODS_PRICE
|
|
|
+ FROM (
|
|
|
+ SELECT RS.GOODS_CD
|
|
|
+ , RS.RES_GOODS_PRICE
|
|
|
+ , RANK() OVER(PARTITION BY RS.GOODS_CD ORDER BY RS.GOODS_PRICE_RES_SQ DESC) RANK
|
|
|
+ FROM TB_GOODS_PRICE_RES RS
|
|
|
+ WHERE NOW() BETWEEN RS.APPLY_STDT AND RS.APPLY_EDDT
|
|
|
+ AND RS.APPLY_YN = 'N'
|
|
|
+ ) Z
|
|
|
+ WHERE RANK = 1
|
|
|
+ ) S
|
|
|
+ WHERE P.GOODS_CD = S.GOODS_CD
|
|
|
+ AND P.CURR_PRICE <![CDATA[<>]]> S.RES_GOODS_PRICE
|
|
|
+ ) B
|
|
|
+ SET A.UPD_NO = 0
|
|
|
+ , A.UPD_DT = NOW()
|
|
|
+ , A.CURR_PRICE = B.RES_GOODS_PRICE
|
|
|
+ , A.CURR_BPRICE = B.CURR_PRICE
|
|
|
+ , A.DC_RATE = B.DC_RATE
|
|
|
+ , A.PRICE_UPD_DT = NOW()
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ AND A.SELF_GOODS_YN = 'Y'
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!--상품 검색어 작업 - 사용자검색어 없는 상품 일괄 -->
|
|
|
+ <update id="updateGoodsSnmByGoodsSnm1Null">
|
|
|
+ /* TsbGoods.updateGoodsSnmByGoodsSnm1Null */
|
|
|
+ UPDATE TB_GOODS A, (
|
|
|
+ WITH RECURSIVE TMP_COLOR_GOODS AS (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , REPLACE(CONCAT(GROUP_CONCAT(COLOR_GRP_CD),';',GROUP_CONCAT(COLOR_ENM),';',GROUP_CONCAT(CD_NM)),',',';') AS COLOR_INFO
|
|
|
+ FROM (
|
|
|
+ SELECT DISTINCT G.GOODS_CD, C.COLOR_GRP_CD, C.COLOR_ENM, D.CD_NM
|
|
|
+ FROM TB_GOODS G
|
|
|
+ LEFT OUTER JOIN TB_OPTION E ON G.GOODS_CD = E.GOODS_CD
|
|
|
+ LEFT OUTER JOIN TB_COLOR C ON E.OPT_CD1 = C.COLOR_CD
|
|
|
+ AND C.USE_YN= 'Y'
|
|
|
+ LEFT OUTER JOIN TB_COMMON_CODE D ON C.COLOR_GRP_CD = D.CD
|
|
|
+ AND D.USE_YN= 'Y'
|
|
|
+ WHERE G.GOODS_SNM1 IS NULL
|
|
|
+ ) Z
|
|
|
+ GROUP BY GOODS_CD
|
|
|
+ )
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , GOODS_SNM_COMP
|
|
|
+ FROM (
|
|
|
+ SELECT DISTINCT Y.GOODS_CD
|
|
|
+ , Y.GOODS_SNM_COMP
|
|
|
+ , Y.GOODS_SNM
|
|
|
+ FROM (
|
|
|
+ SELECT G.GOODS_CD
|
|
|
+ , G.GOODS_SNM
|
|
|
+ , UPPER(CONCAT(
|
|
|
+ G.GOODS_CD,';',
|
|
|
+ REPLACE(G.GOODS_NM,' ',''),';',
|
|
|
+ B.BRAND_ENM,';',
|
|
|
+ B.BRAND_KNM,';',
|
|
|
+ B.BRAND_GRP_NM,';',
|
|
|
+ G.STYLE_YEAR,';',
|
|
|
+ FN_GET_CODE_NM('G006',G.SEASON_CD),';',
|
|
|
+ FN_GET_CODE_NM('G007',G.SEX_GB),';',
|
|
|
+ NVL2(D.COLOR_INFO,CONCAT(D.COLOR_INFO,';'),''),
|
|
|
+ REPLACE(I.ITEMKIND_NM,'>',';')
|
|
|
+ )) AS GOODS_SNM_COMP
|
|
|
+ FROM TB_GOODS G
|
|
|
+ INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
|
|
|
+ LEFT OUTER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
|
|
|
+ LEFT OUTER JOIN TMP_COLOR_GOODS D ON G.GOODS_CD = D.GOODS_CD
|
|
|
+ WHERE G.GOODS_SNM1 IS NULL
|
|
|
+ ) Y
|
|
|
+ )X
|
|
|
+ <![CDATA[
|
|
|
+ WHERE X.GOODS_SNM_COMP <> NVL(X.GOODS_SNM,'1')
|
|
|
+ ]]>
|
|
|
+ ) B
|
|
|
+ SET A.GOODS_SNM = B.GOODS_SNM_COMP
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 사용자검색어가 있는 상품 조회 -->
|
|
|
+ <select id="getGoodsByGooodsSnm1List" resultType="Goods">
|
|
|
+ /* TsbGoods.getGoodsByGooodsSnm1List */
|
|
|
+ WITH RECURSIVE TMP_COLOR_GOODS AS (
|
|
|
+ SELECT Z.GOODS_CD
|
|
|
+ , REPLACE(CONCAT(GROUP_CONCAT(COLOR_GRP_CD),';',GROUP_CONCAT(COLOR_ENM),';',GROUP_CONCAT(CD_NM)),',',';') AS COLOR_INFO
|
|
|
+ FROM (
|
|
|
+ SELECT DISTINCT G.GOODS_CD, C.COLOR_GRP_CD, C.COLOR_ENM, D.CD_NM
|
|
|
+ FROM TB_GOODS G
|
|
|
+ LEFT OUTER JOIN TB_OPTION E ON G.GOODS_CD = E.GOODS_CD
|
|
|
+ LEFT OUTER JOIN TB_COLOR C ON E.OPT_CD1 = C.COLOR_CD
|
|
|
+ AND C.USE_YN= 'Y'
|
|
|
+ LEFT OUTER JOIN TB_COMMON_CODE D ON C.COLOR_GRP_CD = D.CD
|
|
|
+ AND D.USE_YN= 'Y'
|
|
|
+ WHERE G.GOODS_SNM1 IS NOT NULL
|
|
|
+ ) Z
|
|
|
+ GROUP BY Z.GOODS_CD
|
|
|
+ )
|
|
|
+ SELECT G.GOODS_CD
|
|
|
+ , G.GOODS_SNM1
|
|
|
+ , UPPER(CONCAT(
|
|
|
+ G.GOODS_CD,';',
|
|
|
+ REPLACE(G.GOODS_NM,' ',''),';',
|
|
|
+ B.BRAND_ENM,';',
|
|
|
+ B.BRAND_KNM,';',
|
|
|
+ B.BRAND_GRP_NM,';',
|
|
|
+ G.STYLE_YEAR,';',
|
|
|
+ FN_GET_CODE_NM('G006',G.SEASON_CD),';',
|
|
|
+ FN_GET_CODE_NM('G007',G.SEX_GB),';',
|
|
|
+ NVL2(D.COLOR_INFO,CONCAT(D.COLOR_INFO,';'),''),
|
|
|
+ REPLACE(I.ITEMKIND_NM,'>',';')
|
|
|
+ )) AS GOODS_SNM
|
|
|
+ FROM TB_GOODS G
|
|
|
+ INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
|
|
|
+ LEFT OUTER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
|
|
|
+ LEFT OUTER JOIN TMP_COLOR_GOODS D ON G.GOODS_CD = D.GOODS_CD
|
|
|
+ WHERE G.GOODS_SNM1 IS NOT NULL
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!--상품 검색어 작업- -->
|
|
|
+ <update id="updateGoodsSnm" parameterType="Goods">
|
|
|
+ /* TsbGoods.updateGoodsSnm */
|
|
|
+ UPDATE TB_GOODS A
|
|
|
+ SET GOODS_SNM = #{goodsSnm}
|
|
|
+ WHERE GOODS_CD = #{goodsCd}
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 상품 혜택가 목록 -->
|
|
|
+ <sql id="getGoodsBenefitList_sql">
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , 'G100_00' AS CUST_GB
|
|
|
+ , CURR_PRICE
|
|
|
+ , MIN(CURR_PRICE -
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_PVAL THEN MAX_DC_AMT ELSE DC_PVAL END)
|
|
|
+ ELSE
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} END)
|
|
|
+ END) )AS PC_CURR_PRICE
|
|
|
+ , MIN(CURR_PRICE -
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_MVAL THEN MAX_DC_AMT ELSE DC_MVAL END)
|
|
|
+ ELSE
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} END)
|
|
|
+ END) )AS MO_CURR_PRICE
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
+ , MIN(STAFF_CURR_PRICE -
|
|
|
+ ( CASE WHEN DC_WAY = 'V' THEN
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_PVAL THEN MAX_DC_AMT ELSE DC_PVAL END)
|
|
|
+ ELSE
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} END)
|
|
|
+ END) )AS STAFF_PC_CURR_PRICE
|
|
|
+ , MIN(STAFF_CURR_PRICE -
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_MVAL THEN MAX_DC_AMT ELSE DC_MVAL END)
|
|
|
+ ELSE
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} END)
|
|
|
+ END) )AS STAFF_MO_CURR_PRICE
|
|
|
+ FROM (
|
|
|
+ SELECT CP.CPN_ID
|
|
|
+ , CP.CPN_NM
|
|
|
+ , CP.DC_WAY /*할인방식*/
|
|
|
+ , CP.DC_PVAL /*PC 할인값*/
|
|
|
+ , CP.DC_MVAL /*MO 할인값*/
|
|
|
+ , CP.MAX_DC_AMT /*최대할인금액*/
|
|
|
+ , CP.CURR_PRICE /*전체 판매가*/
|
|
|
+ , CP.CURR_PRICE_YN
|
|
|
+ , CP.STAFF_CURR_PRICE /*임직원판매가*/
|
|
|
+ , CP.STAFF_CURR_PRICE_YN
|
|
|
+ , CP.AVAIL_EDDT
|
|
|
+ , CP.USABLE_CUST_GB AS CUST_GB
|
|
|
+ , CP.GOODS_CD
|
|
|
+ FROM (
|
|
|
+ SELECT CP.CPN_ID /*쿠폰ID*/
|
|
|
+ , CP.CPN_NM /*쿠폰명*/
|
|
|
+ , CP.DC_WAY /*할인방식*/
|
|
|
+ , CP.DC_PVAL /*PC할인값*/
|
|
|
+ , CP.DC_MVAL /*모바일할인값*/
|
|
|
+ , CP.MAX_DC_AMT /*최대할인금액*/
|
|
|
+ , G.CURR_PRICE /*현재판매가*/
|
|
|
+ , CASE WHEN BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE THEN 'Y'
|
|
|
+ ELSE 'N'
|
|
|
+ END AS CURR_PRICE_YN
|
|
|
+ , G.CURR_PRICE AS STAFF_CURR_PRICE /*임직원판매가*/
|
|
|
+ , CASE WHEN BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE THEN 'Y'
|
|
|
+ ELSE 'N'
|
|
|
+ END AS STAFF_CURR_PRICE_YN
|
|
|
+ , IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT) AS AVAIL_EDDT
|
|
|
+ , CP.USABLE_CUST_GB /*쿠폰사용이 가능한 고객(G100_00:전체, G100_10:일반회원, G100_20:임직원)*/
|
|
|
+ , G.GOODS_CD
|
|
|
+ FROM TB_GOODS G
|
|
|
+ , TB_COUPON CP
|
|
|
+ WHERE CP.SITE_CD = '10'
|
|
|
+ AND NOW() <![CDATA[<=]]> IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT)
|
|
|
+ AND NOW() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT
|
|
|
+ AND CP.DN_GB = 'G058_10' /* 자동다운로드(결제시)다운로드*/
|
|
|
+ AND CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
|
|
|
+ AND CP.USABLE_CUST_GB = #{usableCustGb}
|
|
|
+ AND CP.USABLE_CUST_GRADE = 'G100_00' /* 사용가능고객등급이 일반만*/
|
|
|
+ AND CP.BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE /*최소주문금액*/
|
|
|
+ AND IF (CP.TOT_PUB_LIMIT_QTY = 0, 9999999999,CP.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = CP.CPN_ID) /*총발행제한수*/
|
|
|
+ AND (
|
|
|
+ (CP.APPLY_SCOPE = 'A' )
|
|
|
+ OR /* 적용대상:상품*/
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_10'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND REF_VAL = G.GOODS_CD
|
|
|
+ ) > 0
|
|
|
+ )
|
|
|
+ /*OR*/ /* 적용대상:카테고리*/
|
|
|
+ /*
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_11'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND NVL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
+ AND NVL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
|
|
|
+ AND REF_VAL IN (SELECT CATE_CD
|
|
|
+ FROM TB_CATEGORY_GOODS
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ )
|
|
|
+ ) >0
|
|
|
+ )
|
|
|
+ */
|
|
|
+ OR /* 적용대상:브랜드*/
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_12'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND REF_VAL = G.BRAND_CD
|
|
|
+ AND NVL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
+ ) >0
|
|
|
+ )
|
|
|
+ OR /* 적용대상:공급업체*/
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_13'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND REF_VAL = G.SUPPLY_COMP_CD
|
|
|
+ /*AND NVL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB*/
|
|
|
+ ) >0
|
|
|
+ )
|
|
|
+ )
|
|
|
+ AND NOT EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM TB_COUPON_REFVAL SCPR
|
|
|
+ WHERE SCPR.CPN_ID = CP.CPN_ID
|
|
|
+ AND SCPR.REF_VAL = G.GOODS_CD
|
|
|
+ AND SCPR.DEL_YN = 'N' /*삭제안된넘*/
|
|
|
+ AND SCPR.CPN_TARGET = '40' /* 제외상품*/
|
|
|
+ )
|
|
|
+ AND NOT EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM TB_COUPON_BAN_GOODS
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ )
|
|
|
+ ) CP
|
|
|
+ ) Y
|
|
|
+ GROUP BY GOODS_CD ,CURR_PRICE, STAFF_CURR_PRICE, CUST_GB
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <!-- 상품혜택가 temp 테이블 삭제 -->
|
|
|
+ <delete id="deleteGoodsBenefitPriceTemp">
|
|
|
+ /* TsbGoods.deleteGoodsBenefitPriceTemp */
|
|
|
+ TRUNCATE TABLE TB_GOODS_BENEFIT_PRICE_TEMP
|
|
|
+ </delete>
|
|
|
+
|
|
|
+
|
|
|
+ <!-- 상품혜택가 temp 적용 등록 -->
|
|
|
+ <insert id="crteateGoodsBenefitPriceTemp" parameterType="Coupon" timeout="600">
|
|
|
+ /* TsbGoods.crteateGoodsBenefitPriceTemp */
|
|
|
+ INSERT INTO TB_GOODS_BENEFIT_PRICE_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , CUST_GB
|
|
|
+ , CURR_PRICE
|
|
|
+ , PC_CURR_PRICE
|
|
|
+ , MO_CURR_PRICE
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
+ )
|
|
|
+ <include refid="getGoodsBenefitList_sql"/>
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 상품혜택가 temp 적용 변경 -->
|
|
|
+ <update id="updateGoodsBenefitPriceTemp" parameterType="Coupon" timeout="600">
|
|
|
+ /* TsbGoods.updateGoodsBenefitPriceTemp */
|
|
|
+ INSERT INTO TB_GOODS_BENEFIT_PRICE_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , CUST_GB
|
|
|
+ , CURR_PRICE
|
|
|
+ , PC_CURR_PRICE
|
|
|
+ , MO_CURR_PRICE
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ (
|
|
|
+ SELECT * FROM (
|
|
|
+ SELECT C.*, NOW() FROM (
|
|
|
+ <include refid="getGoodsBenefitList_sql"/>
|
|
|
+ ) C
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ REG_DT = NOW()
|
|
|
+ , CURR_PRICE = B.CURR_PRICE
|
|
|
+ , STAFF_CURR_PRICE = B.STAFF_CURR_PRICE
|
|
|
+ <if test="usableCustGb != null and usableCustGb == 'G100_00'">
|
|
|
+ , PC_CURR_PRICE = B.PC_CURR_PRICE
|
|
|
+ , MO_CURR_PRICE = B.MO_CURR_PRICE
|
|
|
+ , STAFF_PC_CURR_PRICE = B.STAFF_PC_CURR_PRICE
|
|
|
+ , STAFF_MO_CURR_PRICE = B.STAFF_MO_CURR_PRICE
|
|
|
+ </if>
|
|
|
+ <if test="usableCustGb != null and usableCustGb == 'G100_10'">
|
|
|
+ , PC_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.PC_CURR_PRICE >= B.PC_CURR_PRICE, B.PC_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.PC_CURR_PRICE)
|
|
|
+ , MO_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.MO_CURR_PRICE >= B.MO_CURR_PRICE, B.MO_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.MO_CURR_PRICE)
|
|
|
+ </if>
|
|
|
+ <if test="usableCustGb != null and usableCustGb == 'G100_20'">
|
|
|
+ , STAFF_PC_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_PC_CURR_PRICE >= B.STAFF_PC_CURR_PRICE, B.STAFF_PC_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_PC_CURR_PRICE)
|
|
|
+ , STAFF_MO_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_MO_CURR_PRICE >= B.STAFF_MO_CURR_PRICE, B.STAFF_MO_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_MO_CURR_PRICE)
|
|
|
+ </if>
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- 상품혜택가 테이블 삭제 -->
|
|
|
+ <delete id="deleteGoodsBenefitPrice">
|
|
|
+ /* TsbGoods.deleteGoodsBenefitPrice */
|
|
|
+ DELETE FROM TB_GOODS_BENEFIT_PRICE
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- 상품혜택가 생성 -->
|
|
|
+ <insert id="createGoodsBenefitPrice" timeout="300">
|
|
|
+ /* TsbGoods.createGoodsBenefitPrice */
|
|
|
+ INSERT INTO TB_GOODS_BENEFIT_PRICE
|
|
|
+ ( GOODS_CD
|
|
|
+ , CUST_GB
|
|
|
+ , CURR_PRICE
|
|
|
+ , PC_CURR_PRICE
|
|
|
+ , MO_CURR_PRICE
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , CUST_GB
|
|
|
+ , CURR_PRICE
|
|
|
+ , PC_CURR_PRICE
|
|
|
+ , MO_CURR_PRICE
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
+ , NOW()
|
|
|
+ FROM TB_GOODS_BENEFIT_PRICE_TEMP
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 연관상품보기 스코어링 삭제 -->
|
|
|
+ <delete id="deleteGoodsRelate" parameterType="String">
|
|
|
+ /* TsbGoods.deleteGoodsRelate */
|
|
|
+ DELETE FROM TB_RELATE_GOODS
|
|
|
+ WHERE REG_YMD = #{regYmd}
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- 연관상품보기 스코어링 생성 -->
|
|
|
+ <insert id="createGoodsRelate" parameterType="String">
|
|
|
+ /* TsbGoods.createGoodsRelate */
|
|
|
+ INSERT INTO TB_RELATE_GOODS
|
|
|
+ ( REG_YMD
|
|
|
+ , GOODS_CD
|
|
|
+ , PREV_GOODS_CD
|
|
|
+ , RELATE_SCORE
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ SELECT DISTINCT REG_YMD
|
|
|
+ , GOODS_CD
|
|
|
+ , PREV_GOODS_CD
|
|
|
+ , RELATE_SCORE
|
|
|
+ , 0
|
|
|
+ , NOW()
|
|
|
+ FROM(
|
|
|
+ SELECT REG_YMD
|
|
|
+ , JSESSION_ID
|
|
|
+ , REG_DT
|
|
|
+ , GOODS_CD
|
|
|
+ , PREV_GOODS_CD
|
|
|
+ , COUNT(*) OVER (PARTITION BY CONCAT(GOODS_CD,PREV_GOODS_CD) ORDER BY CONCAT(GOODS_CD,PREV_GOODS_CD)) RELATE_SCORE
|
|
|
+ FROM(
|
|
|
+ SELECT REG_YMD
|
|
|
+ , JSESSION_ID
|
|
|
+ , REG_DT
|
|
|
+ , GOODS_CD
|
|
|
+ , PREV_GOODS_CD
|
|
|
+ FROM (
|
|
|
+ SELECT DATE_FORMAT(REG_DT,'%Y%m%d') AS REG_YMD
|
|
|
+ , JSESSION_ID
|
|
|
+ , REG_DT
|
|
|
+ , GOODS_CD
|
|
|
+ , LAG(GOODS_CD,1) OVER (ORDER BY DATE_FORMAT(REG_DT, '%Y%m%d'),JSESSION_ID,REG_DT) PREV_GOODS_CD
|
|
|
+ FROM TB_GOODS_VIEW_HST
|
|
|
+ WHERE REG_DT >= DATE_FORMAT(#{workDt}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND REG_DT < DATE_FORMAT(DATE_ADD(#{workDt}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
|
|
|
+ ]]>
|
|
|
+ ) A
|
|
|
+ WHERE GOODS_CD <![CDATA[<>]]> PREV_GOODS_CD
|
|
|
+ AND PREV_GOODS_CD IS NOT NULL
|
|
|
+ ) B
|
|
|
+ ) C
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 전시상품 통계 - temp 테이블 삭제 -->
|
|
|
+ <delete id="deleteGoodsSummaryTemp">
|
|
|
+ /* TsbGoods.deleteGoodsSummaryTemp */
|
|
|
+ TRUNCATE TABLE TB_GOODS_SUMMARY_TEMP
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!--전시상품 통계 - 판매 -->
|
|
|
+ <insert id="createGoodsSummaryBySale" parameterType="GoodsSummary">
|
|
|
+ /* TsbGoods.createGoodsSummaryBySale */
|
|
|
+ INSERT INTO TB_GOODS_SUMMARY_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , ${colNm1}
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ (
|
|
|
+ SELECT *
|
|
|
+ FROM (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ ,SUM(USAC_QTY * (CASE USAC_GB WHEN '10' THEN 1 ELSE -1 END) ) AS COL_DATA
|
|
|
+ , 0
|
|
|
+ , NOW()
|
|
|
+ FROM TB_USAC
|
|
|
+ WHERE MALL_GB = '10'
|
|
|
+ <if test="fromDay != null and fromDay != ''">
|
|
|
+ AND OCCUR_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -#{fromDay} DAY), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND OCCUR_DT < DATE_FORMAT(DATE_ADD(DATE_FORMAT(NOW(), '%Y%m%d'), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
|
|
|
+ ]]>
|
|
|
+ </if>
|
|
|
+ GROUP BY GOODS_CD
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ ${colNm1} = B.COL_DATA
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--전시상품 통계 - 조회 -->
|
|
|
+ <insert id="createGoodsSummaryByView" parameterType="GoodsSummary">
|
|
|
+ /* TsbGoods.createGoodsSummaryByView */
|
|
|
+ INSERT INTO TB_GOODS_SUMMARY_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , ${colNm1}
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ (
|
|
|
+ SELECT *
|
|
|
+ FROM (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ ,COUNT(GOODS_CD) AS COL_DATA
|
|
|
+ ,0
|
|
|
+ ,NOW()
|
|
|
+ FROM TB_GOODS_VIEW_HST
|
|
|
+ WHERE 1 = 1
|
|
|
+ AND REG_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -#{fromDay} DAY), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND REG_DT < DATE_FORMAT(DATE_FORMAT(DATE_ADD(DATE_ADD(NOW(), INTERVAL -7 DAY), INTERVAL 7 DAY ), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ ]]>
|
|
|
+ GROUP BY GOODS_CD
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ ${colNm1} = B.COL_DATA
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--전시상품 통계 - 상품평 건수 -->
|
|
|
+ <insert id="createGoodsSummaryByReviewCount" parameterType="GoodsSummary">
|
|
|
+ /* TsbGoods.createGoodsSummaryByReviewCount */
|
|
|
+ INSERT INTO TB_GOODS_SUMMARY_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , ${colNm1}
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ (
|
|
|
+ SELECT *
|
|
|
+ FROM (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ ,COUNT(GOODS_CD) AS COL_DATA
|
|
|
+ ,0
|
|
|
+ ,NOW()
|
|
|
+ FROM TB_REVIEW
|
|
|
+ WHERE DISP_YN = 'Y'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ <if test='photoYn != null and photoYn == "Y"'>
|
|
|
+ AND SYS_FILE_NM IS NOT NULL
|
|
|
+ </if>
|
|
|
+ <if test='photoYn != null and photoYn == "N"'>
|
|
|
+ AND SYS_FILE_NM IS NULL
|
|
|
+ </if>
|
|
|
+ GROUP BY GOODS_CD
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ ${colNm1} = B.COL_DATA
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--전시상품 통계 - 상품평 점수 합계 -->
|
|
|
+ <insert id="createGoodsSummaryByReviewSum" parameterType="GoodsSummary">
|
|
|
+ /* TsbGoods.createGoodsSummaryByReviewSum */
|
|
|
+ INSERT INTO TB_GOODS_SUMMARY_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , ${colNm1}
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ (
|
|
|
+ SELECT *
|
|
|
+ FROM (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ ,SUM(${reviewColNm})AS COL_DATA
|
|
|
+ ,0
|
|
|
+ ,NOW()
|
|
|
+ FROM TB_REVIEW
|
|
|
+ WHERE DISP_YN = 'Y'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ <if test='photoYn != null and photoYn == "Y"'>
|
|
|
+ AND SYS_FILE_NM IS NOT NULL
|
|
|
+ </if>
|
|
|
+ <if test='photoYn != null and photoYn == "N"'>
|
|
|
+ AND SYS_FILE_NM IS NULL
|
|
|
+ </if>
|
|
|
+ GROUP BY GOODS_CD
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ ${colNm1} = B.COL_DATA
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--전시상품 통계 - 상품평 스코어합계-->
|
|
|
+ <insert id="createGoodsSummaryByReviewScore" parameterType="GoodsSummary">
|
|
|
+ /* TsbGoods.createGoodsSummaryByReviewScore */
|
|
|
+ INSERT INTO TB_GOODS_SUMMARY_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , ${colNm1}
|
|
|
+ , ${colNm2}
|
|
|
+ , ${colNm3}
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ (
|
|
|
+ SELECT *
|
|
|
+ FROM (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ ,NVL(SUM(DECODE(${reviewColNm},'1',1,0)),0) AS COL_DATA1
|
|
|
+ ,NVL(SUM(DECODE(${reviewColNm},'2',1,0)),0) AS COL_DATA2
|
|
|
+ ,NVL(SUM(DECODE(${reviewColNm},'3',1,0)),0) AS COL_DATA3
|
|
|
+ ,0
|
|
|
+ ,NOW()
|
|
|
+ FROM TB_REVIEW
|
|
|
+ WHERE DISP_YN = 'Y'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ <if test='photoYn != null and photoYn == "Y"'>
|
|
|
+ AND SYS_FILE_NM IS NOT NULL
|
|
|
+ </if>
|
|
|
+ <if test='photoYn != null and photoYn == "N"'>
|
|
|
+ AND SYS_FILE_NM IS NULL
|
|
|
+ </if>
|
|
|
+ GROUP BY GOODS_CD
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ ${colNm1} = B.COL_DATA1
|
|
|
+ ,${colNm2} = B.COL_DATA2
|
|
|
+ ,${colNm3} = B.COL_DATA3
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--전시상품 통계 - 상품문의 -->
|
|
|
+ <insert id="createGoodsSummaryByCounsel" parameterType="GoodsSummary">
|
|
|
+ /* TsbGoods.createGoodsSummaryByCounsel */
|
|
|
+ INSERT INTO TB_GOODS_SUMMARY_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , GOODS_QNA_CNT
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ (
|
|
|
+ SELECT *
|
|
|
+ FROM (
|
|
|
+ SELECT REL_GOODS_CD
|
|
|
+ ,COUNT(REL_GOODS_CD) AS COL_DATA
|
|
|
+ ,0
|
|
|
+ ,NOW()
|
|
|
+ FROM TB_COUNSEL
|
|
|
+ WHERE COUNSEL_TYPE = 'G'
|
|
|
+ AND REL_GOODS_CD IS NOT NULL
|
|
|
+ GROUP BY REL_GOODS_CD
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ GOODS_QNA_CNT = B.COL_DATA
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--전시상품 통계 - 저장-->
|
|
|
+ <insert id="saveGoodsSummary">
|
|
|
+ /* TsbGoods.saveGoodsSummary */
|
|
|
+ UPDATE TB_GOODS_SUMMARY A, TB_GOODS_SUMMARY_TEMP GS
|
|
|
+ SET A.SELL_TOT_QTY = NVL(GS.SELL_TOT_QTY,0)
|
|
|
+ , A.SELL_WEEK_QTY = NVL(GS.SELL_WEEK_QTY,0)
|
|
|
+ , A.SELL_MONTH_QTY = NVL(GS.SELL_MONTH_QTY,0)
|
|
|
+ , A.SELL_YDAY_QTY = NVL(GS.SELL_YDAY_QTY,0)
|
|
|
+ , A.SELL_DAY15_QTY = NVL(GS.SELL_DAY15_QTY,0)
|
|
|
+ , A.READ_NWEEK_CNT = NVL(GS.READ_NWEEK_CNT,0)
|
|
|
+ , A.READ_PWEEK_CNT = NVL(GS.READ_PWEEK_CNT,0)
|
|
|
+ , A.GOODS_QNA_CNT = NVL(GS.GOODS_QNA_CNT,0)
|
|
|
+ , A.REVIEW_REG_CNT = NVL(GS.REVIEW_REG_CNT,0)
|
|
|
+ , A.RREVIEW_REG_CNT = NVL(GS.RREVIEW_REG_CNT,0)
|
|
|
+ , A.PREVIEW_REG_CNT = NVL(GS.PREVIEW_REG_CNT,0)
|
|
|
+ , A.SCORE = NVL(GS.SCORE,0)
|
|
|
+ , A.SCORE_SIZE1 = NVL(GS.SCORE_SIZE1,0)
|
|
|
+ , A.SCORE_SIZE2 = NVL(GS.SCORE_SIZE2,0)
|
|
|
+ , A.SCORE_SIZE3 = NVL(GS.SCORE_SIZE3,0)
|
|
|
+ , A.SCORE_COLOR1 = NVL(GS.SCORE_COLOR1,0)
|
|
|
+ , A.SCORE_COLOR2 = NVL(GS.SCORE_COLOR2,0)
|
|
|
+ , A.SCORE_COLOR3 = NVL(GS.SCORE_COLOR3,0)
|
|
|
+ , A.SCORE_FIT1 = NVL(GS.SCORE_FIT1,0)
|
|
|
+ , A.SCORE_FIT2 = NVL(GS.SCORE_FIT2,0)
|
|
|
+ , A.SCORE_FIT3 = NVL(GS.SCORE_FIT3,0)
|
|
|
+ , A.SCORE_THICK1 = NVL(GS.SCORE_THICK1,0)
|
|
|
+ , A.SCORE_THICK2 = NVL(GS.SCORE_THICK2,0)
|
|
|
+ , A.SCORE_THICK3 = NVL(GS.SCORE_THICK3,0)
|
|
|
+ , A.SCORE_WEIGHT1 = NVL(GS.SCORE_WEIGHT1,0)
|
|
|
+ , A.SCORE_WEIGHT2 = NVL(GS.SCORE_WEIGHT2,0)
|
|
|
+ , A.SCORE_WEIGHT3 = NVL(GS.SCORE_WEIGHT2,0)
|
|
|
+ , A.SCORE_BALL1 = NVL(GS.SCORE_BALL1,0)
|
|
|
+ , A.SCORE_BALL2 = NVL(GS.SCORE_BALL2,0)
|
|
|
+ , A.SCORE_BALL3 = NVL(GS.SCORE_BALL3,0)
|
|
|
+ , A.UPD_NO = 0
|
|
|
+ , A.UPD_DT = NOW()
|
|
|
+ WHERE A.GOODS_CD = GS.GOODS_CD
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 안전인증대상 상품 조회 -->
|
|
|
+ <select id="getGoodsSafeNoList" resultType="GoodsSafeNo">
|
|
|
+ /* TsbGoods.getGoodsSafeNoList */
|
|
|
+ SELECT B.GOODS_CD
|
|
|
+ , B.GOODS_NUM
|
|
|
+ , A.ITEMKIND_CD
|
|
|
+ , C.CERT_NUM
|
|
|
+ , C.CERT_STATE
|
|
|
+ , C.CERT_DIV
|
|
|
+ , C.CERT_DT
|
|
|
+ FROM TB_ITEMKIND A
|
|
|
+ INNER JOIN TB_GOODS B ON A.ITEMKIND_CD = B.ITEMKIND_CD AND B.SELF_GOODS_YN = 'Y' /* 자사상품 */
|
|
|
+ INNER JOIN TB_BRAND D ON B.BRAND_CD = D.BRAND_CD AND D.USE_YN = 'Y'
|
|
|
+ LEFT OUTER JOIN TB_GOODS_SAFE_NO C ON B.GOODS_CD = C.GOODS_CD
|
|
|
+ AND (CERT_NUM IS NULL
|
|
|
+ <![CDATA[
|
|
|
+ OR CERT_DT < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -5 YEAR), '%Y%m%d') /*인증유효 5년 경과*/
|
|
|
+ OR CERT_STATE <> '적합'
|
|
|
+ ]]>
|
|
|
+ )
|
|
|
+ WHERE A.NI_CLSF_CD = 'G004_23' /*고시 유아용품*/
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 상품 안전인증번호 저장 -->
|
|
|
+ <insert id="saveGoodsSafeNo" parameterType="GoodsSafeNo">
|
|
|
+ /* TsbGoods.saveGoodsSafeNo */
|
|
|
+ INSERT INTO TB_GOODS_SAFE_NO (
|
|
|
+ GOODS_CD
|
|
|
+ , CERT_NUM
|
|
|
+ , CERT_STATE
|
|
|
+ , CERT_DIV
|
|
|
+ , CERT_DT
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ VALUES (
|
|
|
+ #{goodsCd}
|
|
|
+ , #{certNum}
|
|
|
+ , #{certState}
|
|
|
+ , #{certDiv}
|
|
|
+ , #{certDt}
|
|
|
+ , #{regNo}
|
|
|
+ , NOW()
|
|
|
+ , #{updNo}
|
|
|
+ , NOW()
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ CERT_NUM = #{certNum}
|
|
|
+ , CERT_DIV = #{certDiv}
|
|
|
+ , CERT_STATE = #{certState}
|
|
|
+ , CERT_DT = #{certDt}
|
|
|
+ , UPD_NO = #{updNo}
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--실측사이즈 저장-->
|
|
|
+ <insert id="saveGoodsIfMeasurement" parameterType="GoodsIfMeasurement">
|
|
|
+ /* TsbGoods.saveGoodsIfMeasurement */
|
|
|
+ INSERT INTO TB_IF_MEASUREMENT (
|
|
|
+ SKUCODE
|
|
|
+ , PRODUCTNO
|
|
|
+ , PRODUCTCODE
|
|
|
+ , TYPECD
|
|
|
+ , WASHINGMETHOD
|
|
|
+ , VALUE1
|
|
|
+ , VALUE2
|
|
|
+ , VALUE3
|
|
|
+ , VALUE4
|
|
|
+ , VALUE5
|
|
|
+ , MEMO
|
|
|
+ , DATEINSERTED
|
|
|
+ , DATELASTMODIFIED
|
|
|
+ , ISUSE
|
|
|
+ , USERLASTMODIFIED
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ VALUES(
|
|
|
+ #{skucode}
|
|
|
+ , #{productno}
|
|
|
+ , #{productcode}
|
|
|
+ , #{typecd}
|
|
|
+ , #{washingmethod}
|
|
|
+ , NVL(#{value1},0)
|
|
|
+ , NVL(#{value2},0)
|
|
|
+ , NVL(#{value3},0)
|
|
|
+ , NVL(#{value4},0)
|
|
|
+ , NVL(#{value5},0)
|
|
|
+ , #{memo}
|
|
|
+ , DATE_FORMAT(#{dateinserted}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , DATE_FORMAT(#{datelastmodified}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , NVL(#{isuse},'1')
|
|
|
+ , #{userlastmodified}
|
|
|
+ , NOW()
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ WASHINGMETHOD = #{washingmethod}
|
|
|
+ , VALUE1 = NVL(#{value1},0)
|
|
|
+ , VALUE2 = NVL(#{value2},0)
|
|
|
+ , VALUE3 = NVL(#{value3},0)
|
|
|
+ , VALUE4 = NVL(#{value4},0)
|
|
|
+ , VALUE5 = NVL(#{value5},0)
|
|
|
+ , MEMO = #{memo}
|
|
|
+ , DATEINSERTED = DATE_FORMAT(#{dateinserted}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , DATELASTMODIFIED = DATE_FORMAT(#{datelastmodified}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , ISUSE = NVL(#{isuse},'1')
|
|
|
+ , USERLASTMODIFIED = #{userlastmodified}
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--입고 저장-->
|
|
|
+ <insert id="saveGoodsIfIncomelot" parameterType="GoodsIfIncomelot">
|
|
|
+ /* TsbGoods.saveGoodsIfIncomelot */
|
|
|
+ INSERT INTO TB_IF_INCOMELOT (
|
|
|
+ LOTNO
|
|
|
+ , PURCHASENO
|
|
|
+ , PROVIDERNO
|
|
|
+ , PROVIDERNAME
|
|
|
+ , BRANDNO
|
|
|
+ , BRANDNAME
|
|
|
+ , DATEINCOME
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ VALUES (
|
|
|
+ #{lotno}
|
|
|
+ , #{purchaseno}
|
|
|
+ , #{providerno}
|
|
|
+ , #{providername}
|
|
|
+ , #{brandno}
|
|
|
+ , #{brandname}
|
|
|
+ , DATE_FORMAT(#{dateincome}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , NOW()
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ PURCHASENO = #{purchaseno}
|
|
|
+ , PROVIDERNO = #{providerno}
|
|
|
+ , PROVIDERNAME = #{providername}
|
|
|
+ , BRANDNO = #{brandno}
|
|
|
+ , BRANDNAME = #{brandname}
|
|
|
+ , DATEINCOME = DATE_FORMAT(#{dateincome}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--입고상품 저장-->
|
|
|
+ <insert id="saveGoodsIfIncomelotitem" parameterType="GoodsIfIncomelotitem">
|
|
|
+ /* TsbGoods.saveGoodsIfIncomelotitem */
|
|
|
+ INSERT INTO TB_IF_INCOMELOTITEM (
|
|
|
+ LOTNO
|
|
|
+ , ITEMNO
|
|
|
+ , WMSITEMNO
|
|
|
+ , DATEINCOME
|
|
|
+ , PRODUCTNO
|
|
|
+ , PRODUCTCODE
|
|
|
+ , PRODUCTNAME
|
|
|
+ , SKUCODE
|
|
|
+ , NORMALQTY
|
|
|
+ , BROKENQTY
|
|
|
+ , TOTALQTY
|
|
|
+ , MODELNO
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ VALUES (
|
|
|
+ #{lotno}
|
|
|
+ , #{itemno}
|
|
|
+ , #{wmsitemno}
|
|
|
+ , DATE_FORMAT(#{dateincome}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , #{productno}
|
|
|
+ , #{productcode}
|
|
|
+ , #{productname}
|
|
|
+ , #{skucode}
|
|
|
+ , #{normalqty}
|
|
|
+ , #{brokenqty}
|
|
|
+ , #{totalqty}
|
|
|
+ , #{modelno}
|
|
|
+ , NOW()
|
|
|
+ )
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ WMSITEMNO = #{wmsitemno}
|
|
|
+ , DATEINCOME = DATE_FORMAT(#{dateincome}, '%Y-%m-%d %H:%i:%S')
|
|
|
+ , PRODUCTNO = #{productno}
|
|
|
+ , PRODUCTCODE = #{productcode}
|
|
|
+ , PRODUCTNAME = #{productname}
|
|
|
+ , SKUCODE = #{skucode}
|
|
|
+ , NORMALQTY = #{normalqty}
|
|
|
+ , BROKENQTY = #{brokenqty}
|
|
|
+ , TOTALQTY = #{totalqty}
|
|
|
+ , MODELNO = #{modelno}
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!--WMS 상품 저장-->
|
|
|
+ <insert id="saveWmsGoods" parameterType="GoodsIfIncomelot" >
|
|
|
+ /* TsbGoods.saveWmsGoods */
|
|
|
+ INSERT INTO TB_WMS_GOODS (
|
|
|
+ PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , PRODUCT_NAME
|
|
|
+ , MODEL_NO
|
|
|
+ , PROVIDER_NO
|
|
|
+ , PROVIDER_NAME
|
|
|
+ , BRAND_NO
|
|
|
+ , BRAND_NAME
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ SELECT B.PRODUCTNO
|
|
|
+ , B.PRODUCTCODE
|
|
|
+ , B.PRODUCTNAME
|
|
|
+ , LEFT(B.MODELNO,10) AS MODELNO
|
|
|
+ , A.PROVIDERNO
|
|
|
+ , A.PROVIDERNAME
|
|
|
+ , A.BRANDNO
|
|
|
+ , A.BRANDNAME
|
|
|
+ , #{regNo}
|
|
|
+ , NOW()
|
|
|
+ , #{updNo}
|
|
|
+ , NOW()
|
|
|
+ FROM TB_IF_INCOMELOT A
|
|
|
+ INNER JOIN TB_IF_INCOMELOTITEM B ON A.LOTNO = B.LOTNO
|
|
|
+ WHERE 1 = 1
|
|
|
+ <choose>
|
|
|
+ <when test='jobdate != null and jobdate != ""'>
|
|
|
+ AND A.DATEINCOME >= DATE_FORMAT(DATE_FORMAT(#{jobdate}, '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND A.DATEINCOME < DATE_FORMAT(DATE_ADD(DATE_FORMAT(#{jobdate}, '%Y%m%d'), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
|
|
|
+ ]]>
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ AND A.DATEINCOME >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND A.DATEINCOME < DATE_FORMAT(DATE_ADD(DATE_FORMAT(NOW(), '%Y%m%d'), INTERVAL 1 DAY), '%Y%m%d%H%i%S')
|
|
|
+ ]]>
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
+ PRODUCT_NAME = IF(GOODS_REG_GB IS NULL, B.PRODUCTNAME, TB_WMS_GOODS.PRODUCT_NAME)
|
|
|
+ , MODEL_NO = IF(GOODS_REG_GB IS NULL, B.MODELNO, TB_WMS_GOODS.MODEL_NO)
|
|
|
+ , PROVIDER_NO = IF(GOODS_REG_GB IS NULL, A.PROVIDERNO, TB_WMS_GOODS.PROVIDER_NO)
|
|
|
+ , PROVIDER_NAME = IF(GOODS_REG_GB IS NULL, A.PROVIDERNAME, TB_WMS_GOODS.PROVIDER_NAME)
|
|
|
+ , BRAND_NO = IF(GOODS_REG_GB IS NULL, A.BRANDNO, TB_WMS_GOODS.BRAND_NO)
|
|
|
+ , BRAND_NAME = IF(GOODS_REG_GB IS NULL, A.BRANDNAME, TB_WMS_GOODS.BRAND_NAME)
|
|
|
+ , UPD_NO = #{updNo}
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 공급업체 목록 -->
|
|
|
+ <select id="getSupplyCompanyList" resultType="IfProvider">
|
|
|
+ /* TsbGoods.getSupplyCompanyList */
|
|
|
+ SELECT PROVIDER_NO AS PROVIDERNO
|
|
|
+ , SUPPLY_COMP_NM AS PROVIDERNAME
|
|
|
+ , '' AS CATEGORYTYPECD
|
|
|
+ , '자사' AS DISTRIBUTIONCD
|
|
|
+ , CS_CHARGE_NM AS CHARGENAME
|
|
|
+ , CS_CHARGE_TELNO AS CHARGECELLNUM
|
|
|
+ , CASE WHEN USE_YN = 'Y' THEN '정상'
|
|
|
+ ELSE '사용중지'
|
|
|
+ END AS STATUSCD
|
|
|
+ , 'WMS' AS STOCKMGMTTYPECD
|
|
|
+ , SUPPLY_COMP_CD
|
|
|
+ FROM TB_SUPPLY_COMPANY
|
|
|
+ WHERE DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12') /* 자사 유통구분*/
|
|
|
+ AND UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ ]]>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 브랜드 목록 -->
|
|
|
+ <select id="getBrandList" resultType="IfBrand">
|
|
|
+ /* TsbGoods.getBrandList */
|
|
|
+ SELECT A.BRAND_NO AS BRANDNO
|
|
|
+ , A.BRAND_ENM AS BRANDNAME
|
|
|
+ , CASE WHEN A.USE_YN = 'Y' THEN '정상'
|
|
|
+ ELSE '사용안함'
|
|
|
+ END AS STATUSCD
|
|
|
+ , A.BRAND_CD
|
|
|
+ , A.SUPPLY_COMP_CD
|
|
|
+ , B.PROVIDER_NO
|
|
|
+ FROM TB_BRAND A
|
|
|
+ INNER JOIN TB_SUPPLY_COMPANY B ON A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
|
|
|
+ WHERE A.SELF_YN = 'Y' /* 자사 */
|
|
|
+ AND A.UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND A.UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ ]]>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 상품 목록 -->
|
|
|
+ <select id="getGoodsList" resultType="IfProduct">
|
|
|
+ /* TsbGoods.getGoodsList */
|
|
|
+ SELECT G.PRODUCT_NO AS PRODUCTNO
|
|
|
+ , G.PRODUCT_CODE AS PRODUCTCODE
|
|
|
+ , G.GOODS_NM AS PRODUCTNAME
|
|
|
+ , B.BRAND_NO AS BRANDNO
|
|
|
+ , B.BRAND_ENM AS BRANDNAME
|
|
|
+ , C.PROVIDER_NO AS PROVIDERNO
|
|
|
+ , (CASE G.GOODS_STAT WHEN 'G008_20' THEN '승인보류'
|
|
|
+ WHEN 'G008_40' THEN '승인대기'
|
|
|
+ WHEN 'G008_70' THEN '품절'
|
|
|
+ WHEN 'G008_99' THEN '삭제'
|
|
|
+ WHEN 'G008_95' THEN '판매중지'
|
|
|
+ ELSE '판매중'
|
|
|
+ END) AS STATUSCD
|
|
|
+ , G.SUPPLY_GOODS_CD AS VENDORPRODUCTCODE
|
|
|
+ , G.GOODS_CD
|
|
|
+ , G.BRAND_CD
|
|
|
+ , G.SUPPLY_COMP_CD
|
|
|
+ , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
|
|
|
+ FROM TB_GOODS G
|
|
|
+ INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
|
|
|
+ INNER JOIN TB_SUPPLY_COMPANY C ON G.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
|
|
|
+ WHERE G.SELF_GOODS_YN = 'Y' /* 자사 */
|
|
|
+ AND G.UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ <![CDATA[
|
|
|
+ AND G.UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
|
|
|
+ ]]>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- TB_IF_PRODUCTSKU_TEMP 삭제 -->
|
|
|
+ <delete id="deleteIfProductSku" timeout="300">
|
|
|
+ /* TsbGoods.deleteIfProductSku */
|
|
|
+ DELETE FROM TB_IF_PRODUCTSKU
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- TB_IF_PRODUCTSKU_TEMP 저장 -->
|
|
|
+ <insert id="createIfProductSku" parameterType="java.util.HashMap" >
|
|
|
+ /* TsbGoods.createIfProductSku */
|
|
|
+ INSERT INTO TB_IF_PRODUCTSKU(
|
|
|
+ SKUCODE
|
|
|
+ , SKUMODELNO
|
|
|
+ , PRODUCTNO
|
|
|
+ , PRODUCTCODE
|
|
|
+ , OPTION1
|
|
|
+ , OPTION2
|
|
|
+ , OPTION3
|
|
|
+ , SELLINGSTOCKAMOUNT
|
|
|
+ , SELLINGSTOCKTYPECD
|
|
|
+ , LIMITSTOCKAMOUNT
|
|
|
+ , VENDORSKUMODELNO
|
|
|
+ , VENDORSKUCODE
|
|
|
+ , ISVIRTUALSTOCK
|
|
|
+ , DATEVIRTUALSTOCK
|
|
|
+ , SKUCODE88
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ VALUES
|
|
|
+ <foreach collection="productSukList" item="item" index="index" separator=",">
|
|
|
+ (
|
|
|
+ #{item.skucode}
|
|
|
+ , #{item.skumodelno}
|
|
|
+ , #{item.productno}
|
|
|
+ , #{item.productcode}
|
|
|
+ , #{item.option1}
|
|
|
+ , #{item.option2}
|
|
|
+ , #{item.option3}
|
|
|
+ , #{item.sellingstockamount}
|
|
|
+ , #{item.sellingstocktypecd}
|
|
|
+ , #{item.limitstockamount}
|
|
|
+ , #{item.vendorskumodelno}
|
|
|
+ , #{item.vendorskucode}
|
|
|
+ , #{item.isvirtualstock}
|
|
|
+ , #{item.datevirtualstock}
|
|
|
+ , #{item.skucode88}
|
|
|
+ , NOW()
|
|
|
+ )
|
|
|
+ </foreach>
|
|
|
+
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- TB_IF_PRODUCTSKU_TEMP 저장 -->
|
|
|
+ <insert id="createIfProductSkuByRow" parameterType="IfProduct">
|
|
|
+ /* TsbGoods.createIfProductSkuByRow */
|
|
|
+ INSERT INTO TB_IF_PRODUCTSKU(
|
|
|
+ SKUCODE
|
|
|
+ , SKUMODELNO
|
|
|
+ , PRODUCTNO
|
|
|
+ , PRODUCTCODE
|
|
|
+ , OPTION1
|
|
|
+ , OPTION2
|
|
|
+ , OPTION3
|
|
|
+ , SELLINGSTOCKAMOUNT
|
|
|
+ , SELLINGSTOCKTYPECD
|
|
|
+ , LIMITSTOCKAMOUNT
|
|
|
+ , VENDORSKUMODELNO
|
|
|
+ , VENDORSKUCODE
|
|
|
+ , ISVIRTUALSTOCK
|
|
|
+ , DATEVIRTUALSTOCK
|
|
|
+ , SKUCODE88
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ VALUES(
|
|
|
+ #{skucode}
|
|
|
+ , #{skumodelno}
|
|
|
+ , #{productno}
|
|
|
+ , #{productcode}
|
|
|
+ , #{option1}
|
|
|
+ , #{option2}
|
|
|
+ , #{option3}
|
|
|
+ , #{sellingstockamount}
|
|
|
+ , #{sellingstocktypecd}
|
|
|
+ , #{limitstockamount}
|
|
|
+ , #{vendorskumodelno}
|
|
|
+ , #{vendorskucode}
|
|
|
+ , #{isvirtualstock}
|
|
|
+ , #{datevirtualstock}
|
|
|
+ , #{skucode88}
|
|
|
+ , NOW()
|
|
|
+ )
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- TB_IF_PRODUCTSKU_HST 삭제 -->
|
|
|
+ <delete id="deleteWmsProductSkuHst" parameterType="String" timeout="300">
|
|
|
+ /* TsbGoods.deleteWmsProductSkuHst */
|
|
|
+ DELETE FROM TB_IF_PRODUCTSKU_HST
|
|
|
+ WHERE JOBDATE <![CDATA[<=]]> #{jobdate}
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- TB_IF_PRODUCTSKU_HST 저장 -->
|
|
|
+ <insert id="createWmsProductSkuHst" parameterType="String" timeout="300">
|
|
|
+ /* TsbGoods.createWmsProductSkuHst */
|
|
|
+ INSERT INTO TB_IF_PRODUCTSKU_HST(
|
|
|
+ JOBDATE
|
|
|
+ , SKUCODE
|
|
|
+ , SKUMODELNO
|
|
|
+ , PRODUCTNO
|
|
|
+ , PRODUCTCODE
|
|
|
+ , OPTION1
|
|
|
+ , OPTION2
|
|
|
+ , OPTION3
|
|
|
+ , SELLINGSTOCKAMOUNT
|
|
|
+ , SELLINGSTOCKTYPECD
|
|
|
+ , LIMITSTOCKAMOUNT
|
|
|
+ , VENDORSKUMODELNO
|
|
|
+ , VENDORSKUCODE
|
|
|
+ , ISVIRTUALSTOCK
|
|
|
+ , DATEVIRTUALSTOCK
|
|
|
+ , SKUCODE88
|
|
|
+ )
|
|
|
+ SELECT #{jobdate}
|
|
|
+ , SKUCODE
|
|
|
+ , SKUMODELNO
|
|
|
+ , PRODUCTNO
|
|
|
+ , PRODUCTCODE
|
|
|
+ , OPTION1
|
|
|
+ , OPTION2
|
|
|
+ , OPTION3
|
|
|
+ , SELLINGSTOCKAMOUNT
|
|
|
+ , SELLINGSTOCKTYPECD
|
|
|
+ , LIMITSTOCKAMOUNT
|
|
|
+ , VENDORSKUMODELNO
|
|
|
+ , VENDORSKUCODE
|
|
|
+ , ISVIRTUALSTOCK
|
|
|
+ , DATEVIRTUALSTOCK
|
|
|
+ , SKUCODE88
|
|
|
+ FROM TB_IF_PRODUCTSKU
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- TB_GOODS_STOCK 삭제 -->
|
|
|
+ <delete id="deleteGoodsDispStock" timeout="300">
|
|
|
+ /* TsbGoods.deleteGoodsDispStock */
|
|
|
+ DELETE FROM TB_GOODS_STOCK
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- TB_GOODS_STOCK 저장 -->
|
|
|
+ <insert id="createGoodsDispStock" parameterType="String" timeout="300">
|
|
|
+ /* TsbGoods.createGoodsDispStock */
|
|
|
+ INSERT INTO TB_GOODS_STOCK(
|
|
|
+ GOODS_CD
|
|
|
+ , STOCK_QTY
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ SELECT Z.GOODS_CD
|
|
|
+ , MIN(Z.STOCK_QTY_ITEM) AS STOCK_QTY
|
|
|
+ , NOW()
|
|
|
+ FROM (
|
|
|
+ SELECT A.GOODS_CD
|
|
|
+ , A.MIN_ORD_QTY
|
|
|
+ , SUM(C.CURR_STOCK_QTY - C.BASE_STOCK_QTY) AS STOCK_QTY_ITEM
|
|
|
+ FROM TB_GOODS A
|
|
|
+ , VW_STOCK C
|
|
|
+ WHERE A.GOODS_CD = C.GOODS_CD
|
|
|
+ AND C.SOLDOUT_YN = 'N'
|
|
|
+ AND C.CURR_STOCK_QTY - C.BASE_STOCK_QTY > 0
|
|
|
+ GROUP BY A.GOODS_CD, A.MIN_ORD_QTY
|
|
|
+ UNION ALL
|
|
|
+ SELECT A.GOODS_CD
|
|
|
+ , A.MIN_ORD_QTY
|
|
|
+ , SUM(C.CURR_STOCK_QTY - C.BASE_STOCK_QTY) AS STOCK_QTY_ITEM
|
|
|
+ FROM TB_GOODS A
|
|
|
+ , TB_GOODS_COMPOSE B
|
|
|
+ , VW_STOCK C
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ AND B.COMPS_GOODS_CD = C.GOODS_CD
|
|
|
+ AND B.USE_YN = 'Y'
|
|
|
+ AND A.GOODS_TYPE != 'N'
|
|
|
+ AND C.SOLDOUT_YN = 'N'
|
|
|
+ AND C.CURR_STOCK_QTY - C.BASE_STOCK_QTY > 0
|
|
|
+ GROUP BY A.GOODS_CD, A.MIN_ORD_QTY
|
|
|
+ ) Z
|
|
|
+ GROUP BY Z.GOODS_CD, Z.MIN_ORD_QTY
|
|
|
+ HAVING Z.MIN_ORD_QTY <![CDATA[<=]]> MIN(Z.STOCK_QTY_ITEM)
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- WMS 재고 임시 테이블 삭제 -->
|
|
|
+ <delete id="deleteTbOptionSyncTemp" timeout="300">
|
|
|
+ /* TsbGoods.deleteTbOptionSyncTemp */
|
|
|
+ DELETE FROM TB_OPTION_SYNC_TEMP
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!--WMS 재고 임시 테이블 이관 -->
|
|
|
+ <insert id="createTbOptionSyncTemp" timeout="300">
|
|
|
+ /* TsbGoods.createTbOptionSyncTemp */
|
|
|
+ INSERT INTO TB_OPTION_SYNC_TEMP
|
|
|
+ (
|
|
|
+ GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , OPT_CD1
|
|
|
+ , OPT_CD2
|
|
|
+ , SKU_MODEL_NO
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , BASE_STOCK_QTY
|
|
|
+ , CURR_STOCK_QTY
|
|
|
+ , ADD_PRICE
|
|
|
+ , SOLDOUT_YN
|
|
|
+ , DISP_ORD
|
|
|
+ , DISP_YN
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , OPT_CD1
|
|
|
+ , OPT_CD2
|
|
|
+ , SKU_MODEL_NO
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , 0 AS BASE_STOCK_QTY
|
|
|
+ , CURR_STOCK_QTY
|
|
|
+ , 0 AS ADD_PRICE
|
|
|
+ , 'N' AS SOLDOUT_YN
|
|
|
+ , DISP_ORD
|
|
|
+ , 'Y' AS DISP_YN
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ , 0 AS REG_NO
|
|
|
+ , NOW() AS REG_DT
|
|
|
+ , 0 AS UPD_NO
|
|
|
+ , NOW() AS UPD_DT
|
|
|
+ FROM (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , OPT_CD1
|
|
|
+ , OPT_CD2
|
|
|
+ , SKU_MODEL_NO
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , SUM(CURR_STOCK_QTY) AS CURR_STOCK_QTY
|
|
|
+ , NVL((SELECT (MAX(DISP_ORD) + 1) AS DISP_ORD
|
|
|
+ FROM TB_OPTION WHERE GOODS_CD = Z.GOODS_CD) , ROW_NUMBER() OVER(PARTITION BY GOODS_CD ORDER BY OPT_CD)) AS DISP_ORD
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ FROM (
|
|
|
+ SELECT B.GOODS_CD
|
|
|
+ , A.SKUCODE AS OPT_CD
|
|
|
+ , MAX(A.OPTION1) AS OPT_CD1
|
|
|
+ , MAX(A.OPTION2) AS OPT_CD2
|
|
|
+ , MAX(A.SKUMODELNO) AS SKU_MODEL_NO
|
|
|
+ , MAX(B.PRODUCT_NO) AS PRODUCT_NO
|
|
|
+ , MAX(B.PRODUCT_CODE) AS PRODUCT_CODE
|
|
|
+ , ROUND(GREATEST(A.SELLINGSTOCKAMOUNT, 0) * (NVL(D.STOCK_APPL_RATE, 0)/100)) AS CURR_STOCK_QTY
|
|
|
+ , MAX(B.ERP_STOCK_LINK_YN) AS ERP_STOCK_LINK_YN
|
|
|
+ , D.DELV_LOC_CD
|
|
|
+ , D.STOCK_APPL_RATE
|
|
|
+ FROM TB_IF_PRODUCTSKU A
|
|
|
+ INNER JOIN TB_GOODS B ON A.PRODUCTCODE = B.PRODUCT_CODE
|
|
|
+ AND B.SELF_GOODS_YN = 'Y'
|
|
|
+ AND B.GOODS_TYPE = 'N'
|
|
|
+ INNER JOIN TB_OPTION E ON A.SKUCODE = E.OPT_CD
|
|
|
+ AND A.PRODUCTCODE = E.PRODUCT_CODE
|
|
|
+ INNER JOIN TB_STOCK_SYNC_BASE C ON B.BRAND_CD = C.BRAND_CD
|
|
|
+ AND C.STOCK_SYNC_YN = 'Y'
|
|
|
+ INNER JOIN TB_DELIVERY_LOC D ON B.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
|
|
|
+ AND C.DELV_LOC_CD = D.DELV_LOC_CD
|
|
|
+ AND D.USE_YN = 'Y'
|
|
|
+ WHERE 1 = 1
|
|
|
+ GROUP BY B.GOODS_CD, A.SKUCODE, D.DELV_LOC_CD, D.STOCK_APPL_RATE
|
|
|
+ ) Z
|
|
|
+ GROUP BY GOODS_CD, OPT_CD, ERP_STOCK_LINK_YN
|
|
|
+ ) Y
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 입점상품 SELL_QTY 목록 조회 -->
|
|
|
+ <select id="getGoodsSelfNoStockList" resultType="Option" timeout="300">
|
|
|
+ /* TsbGoods.getGoodsSelfNoStockList */
|
|
|
+ SELECT A.GOODS_CD
|
|
|
+ , A.OPT_CD
|
|
|
+ , SUM(
|
|
|
+ (CASE A.SELL_GB WHEN '10' THEN 1
|
|
|
+ WHEN '20' THEN 1
|
|
|
+ ELSE -1 END) * A.SELL_QTY
|
|
|
+ ) AS SALE_STOCK_QTY
|
|
|
+ FROM TB_SELL_QTY A
|
|
|
+ , TB_GOODS B
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ AND B.SELF_GOODS_YN = 'N' -- 입점상품
|
|
|
+ GROUP BY A.GOODS_CD, A.OPT_CD
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 상품 옵션/재고 정보 이력생성 -->
|
|
|
+ <insert id="createStockHst" parameterType="Option" timeout="300">
|
|
|
+ /* TsaGoods.createStockHst */
|
|
|
+ INSERT INTO TB_OPTION_HST
|
|
|
+ ( OPTION_HST_SQ
|
|
|
+ , GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , OPT_CD1
|
|
|
+ , OPT_CD2
|
|
|
+ , SKU_MODEL_NO
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , BASE_STOCK_QTY
|
|
|
+ , CURR_STOCK_QTY
|
|
|
+ , ADD_PRICE
|
|
|
+ , SOLDOUT_YN
|
|
|
+ , DISP_ORD
|
|
|
+ , DISP_YN
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ SELECT NULL
|
|
|
+ , GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , OPT_CD1
|
|
|
+ , OPT_CD2
|
|
|
+ , SKU_MODEL_NO
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , BASE_STOCK_QTY
|
|
|
+ , CURR_STOCK_QTY
|
|
|
+ , ADD_PRICE
|
|
|
+ , SOLDOUT_YN
|
|
|
+ , DISP_ORD
|
|
|
+ , DISP_YN
|
|
|
+ , #{regNo}
|
|
|
+ , NOW()
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ FROM TB_OPTION
|
|
|
+ WHERE GOODS_CD = #{goodsCd}
|
|
|
+ AND OPT_CD = #{optCd}
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 상품 재고 정보 저장 -->
|
|
|
+ <update id="updateStock" parameterType="Option" timeout="300">
|
|
|
+ /* TsbGoods.updateStock */
|
|
|
+ UPDATE TB_STOCK
|
|
|
+ SET CURR_ON_STOCK_QTY = GREATEST(CURR_ON_STOCK_QTY - #{saleStockQty},0)
|
|
|
+ , UPD_NO = #{updNo}
|
|
|
+ , UPD_DT = NOW()
|
|
|
+ WHERE GOODS_CD = #{goodsCd}
|
|
|
+ AND OPT_CD = #{optCd}
|
|
|
+ </update>
|
|
|
+
|
|
|
+ <!-- WMS 재고 임시 테이블 삭제 -->
|
|
|
+ <delete id="deleteGoodsOptionSync" timeout="300">
|
|
|
+ /* TsbGoods.deleteGoodsOptionSync */
|
|
|
+ TRUNCATE TABLE TB_OPTION_SYNC
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!--TB_OPTION = > TB_OPTION_SYNC 적용 -->
|
|
|
+ <insert id="createGoodsOptionSync" timeout="300">
|
|
|
+ /* TsbGoods.createGoodsOptionSync */
|
|
|
+ INSERT INTO TB_OPTION_SYNC
|
|
|
+ (
|
|
|
+ GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , OPT_CD1
|
|
|
+ , OPT_CD2
|
|
|
+ , SKU_MODEL_NO
|
|
|
+ , PRODUCT_NO
|
|
|
+ , PRODUCT_CODE
|
|
|
+ , BASE_STOCK_QTY
|
|
|
+ , CURR_STOCK_QTY
|
|
|
+ , ADD_PRICE
|
|
|
+ , SOLDOUT_YN
|
|
|
+ , DISP_ORD
|
|
|
+ , DISP_YN
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ , UPD_NO
|
|
|
+ , UPD_DT
|
|
|
+ )
|
|
|
+ SELECT B.GOODS_CD
|
|
|
+ , B.OPT_CD
|
|
|
+ , B.OPT_CD1
|
|
|
+ , B.OPT_CD2
|
|
|
+ , B.SKU_MODEL_NO
|
|
|
+ , B.PRODUCT_NO
|
|
|
+ , B.PRODUCT_CODE
|
|
|
+ , B.BASE_STOCK_QTY
|
|
|
+ , B.CURR_STOCK_QTY
|
|
|
+ , B.ADD_PRICE
|
|
|
+ , B.SOLDOUT_YN
|
|
|
+ , B.DISP_ORD
|
|
|
+ , B.DISP_YN
|
|
|
+ , A.ERP_STOCK_LINK_YN
|
|
|
+ , B.REG_NO
|
|
|
+ , B.REG_DT
|
|
|
+ , B.UPD_NO
|
|
|
+ , B.UPD_DT
|
|
|
+ FROM TB_GOODS A, TB_OPTION B
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- TB_OPTION_SYNC_TEMP => TB_OPTION_SYNC 변경적용-->
|
|
|
+ <insert id="saveGoodsOptionSyncSync" timeout="300">
|
|
|
+ /* TsbGoods.saveGoodsOptionSyncSync */
|
|
|
+ UPDATE TB_OPTION_SYNC A, (SELECT GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , CURR_STOCK_QTY
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ FROM TB_OPTION_SYNC_TEMP
|
|
|
+ WHERE ERP_STOCK_LINK_YN = 'Y'
|
|
|
+ ) B
|
|
|
+ SET A.CURR_STOCK_QTY = B.CURR_STOCK_QTY
|
|
|
+ , A.UPD_NO = 0
|
|
|
+ , A.UPD_DT = NOW()
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ AND A.OPT_CD = B.OPT_CD
|
|
|
+ <![CDATA[
|
|
|
+ AND A.CURR_STOCK_QTY <> B.CURR_STOCK_QTY
|
|
|
+ ]]>
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- WMS 임시 테이블에서 실테이블로 변경 -->
|
|
|
+ <insert id="saveGoodsOptionNew" timeout="300">
|
|
|
+ /* TsbGoods.saveGoodsOptionNew */
|
|
|
+ UPDATE TB_OPTION A, (SELECT GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , CURR_STOCK_QTY
|
|
|
+ , ERP_STOCK_LINK_YN
|
|
|
+ FROM TB_OPTION_SYNC
|
|
|
+ WHERE ERP_STOCK_LINK_YN = 'Y'
|
|
|
+ ) B
|
|
|
+ SET A.CURR_STOCK_QTY = B.CURR_STOCK_QTY
|
|
|
+ , A.UPD_NO = 0
|
|
|
+ , A.UPD_DT = NOW()
|
|
|
+ WHERE A.GOODS_CD = B.GOODS_CD
|
|
|
+ AND A.OPT_CD = B.OPT_CD
|
|
|
+ <![CDATA[
|
|
|
+ AND A.CURR_STOCK_QTY <> B.CURR_STOCK_QTY
|
|
|
+ ]]>
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- TB_SELL_QTY_TEMP 테이블 삭제 -->
|
|
|
+ <delete id="deleteTtbSellQtyTemp" timeout="300">
|
|
|
+ /* TsbGoods.deleteTtbSellQtyTemp */
|
|
|
+ TRUNCATE TABLE TB_SELL_QTY_TEMP
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- TB_SELL_QTY_TEMP 테이블 삭제 -->
|
|
|
+ <insert id="createTtbSellQtyTemp" timeout="300">
|
|
|
+ /* TsbGoods.createTtbSellQtyTemp */
|
|
|
+ INSERT INTO TB_SELL_QTY_TEMP (
|
|
|
+ GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , SELL_GB
|
|
|
+ , ORD_DTL_NO
|
|
|
+ , ORD_CHG_SQ
|
|
|
+ , AGENT_ORDER_ID
|
|
|
+ , EXTMALL_ORDER_ID
|
|
|
+ , SELL_QTY
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , SELL_GB
|
|
|
+ , ORD_DTL_NO
|
|
|
+ , ORD_CHG_SQ
|
|
|
+ , AGENT_ORDER_ID
|
|
|
+ , EXTMALL_ORDER_ID
|
|
|
+ , SELL_QTY
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ FROM TB_SELL_QTY
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- 주문적재 테이블 삭제 -->
|
|
|
+ <delete id="deleteSellQty" timeout="300">
|
|
|
+ /* TsbGoods.deleteSellQty */
|
|
|
+ DELETE FROM TB_SELL_QTY
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- TB_SELL_QTY 테이블 생성 -->
|
|
|
+ <insert id="createTtbSellQty" timeout="300">
|
|
|
+ /* TsbGoods.createTtbSellQty */
|
|
|
+ INSERT INTO TB_SELL_QTY (
|
|
|
+ GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , SELL_GB
|
|
|
+ , ORD_DTL_NO
|
|
|
+ , ORD_CHG_SQ
|
|
|
+ , AGENT_ORDER_ID
|
|
|
+ , EXTMALL_ORDER_ID
|
|
|
+ , SELL_QTY
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , SELL_GB
|
|
|
+ , ORD_DTL_NO
|
|
|
+ , ORD_CHG_SQ
|
|
|
+ , AGENT_ORDER_ID
|
|
|
+ , EXTMALL_ORDER_ID
|
|
|
+ , SELL_QTY
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ FROM TB_SELL_QTY_TEMP
|
|
|
+ WHERE ORD_DTL_NO IN (
|
|
|
+ SELECT OD.ORD_DTL_NO
|
|
|
+ FROM TB_ORDER_DETAIL OD
|
|
|
+ , TB_ORDER_DETAIL_ITEM ODI
|
|
|
+ , TB_GOODS G
|
|
|
+ WHERE OD.ORD_DTL_NO = ODI.ORD_DTL_NO
|
|
|
+ AND OD.ORD_DTL_STAT IN ('G013_10','G013_20') -- 입금대기, 결제완료
|
|
|
+ AND ODI.ITEM_CD = G.GOODS_CD
|
|
|
+ AND G.SELF_GOODS_YN ='Y'
|
|
|
+ )
|
|
|
+ </insert>
|
|
|
+
|
|
|
+ <!-- TB_SELL_QTY 테이블 생성 -->
|
|
|
+ <insert id="createTtbSellQtyByOrderDetail" timeout="300">
|
|
|
+ /* TsbGoods.createTtbSellQtyByOrderDetail */
|
|
|
+ INSERT INTO TB_SELL_QTY (
|
|
|
+ GOODS_CD
|
|
|
+ , OPT_CD
|
|
|
+ , SELL_GB
|
|
|
+ , ORD_DTL_NO
|
|
|
+ , AGENT_ORDER_ID
|
|
|
+ , EXTMALL_ORDER_ID
|
|
|
+ , SELL_QTY
|
|
|
+ , REG_NO
|
|
|
+ , REG_DT
|
|
|
+ )
|
|
|
+ SELECT ITEM_CD
|
|
|
+ , OPT_CD
|
|
|
+ , SELL_GB
|
|
|
+ , ORD_DTL_NO
|
|
|
+ , AGENT_ORDER_ID
|
|
|
+ , EXTMALL_ORDER_ID
|
|
|
+ , SELL_QTY
|
|
|
+ , 0
|
|
|
+ , NOW()
|
|
|
+ FROM (
|
|
|
+ SELECT ODI.ITEM_CD
|
|
|
+ , ODI.OPT_CD
|
|
|
+ , '10' AS SELL_GB -- 주문건
|
|
|
+ , OD.ORD_DTL_NO
|
|
|
+ , OD.AGENT_ORDER_ID
|
|
|
+ , OD.EXTMALL_ORDER_ID
|
|
|
+ , SUM((OD.ORD_QTY - OD.CNCL_RTN_QTY) * ODI.ITEM_QTY) AS SELL_QTY
|
|
|
+ FROM TB_ORDER_DETAIL OD
|
|
|
+ , TB_ORDER_DETAIL_ITEM ODI
|
|
|
+ WHERE OD.ORD_DTL_NO = ODI.ORD_DTL_NO
|
|
|
+ AND OD.ORD_DTL_STAT IN ('G013_10','G013_20') -- 입금대기, 결제완료
|
|
|
+ AND EXISTS (SELECT 1 FROM TB_OPTION X WHERE X.GOODS_CD = ODI.ITEM_CD AND X.OPT_CD = ODI.OPT_CD)
|
|
|
+ GROUP BY ODI.ITEM_CD, ODI.OPT_CD, OD.ORD_DTL_NO, OD.AGENT_ORDER_ID, OD.EXTMALL_ORDER_ID
|
|
|
+ ) A
|
|
|
+ WHERE NOT EXISTS (SELECT 1
|
|
|
+ FROM TB_SELL_QTY Y
|
|
|
+ WHERE Y.GOODS_CD = A.ITEM_CD
|
|
|
+ AND Y.OPT_CD = A.OPT_CD
|
|
|
+ AND Y.SELL_GB = A.SELL_GB
|
|
|
+ AND Y.ORD_DTL_NO = A.ORD_DTL_NO
|
|
|
+ )
|
|
|
+ </insert>
|
|
|
+
|
|
|
+</mapper>
|