|
|
@@ -1496,9 +1496,9 @@
|
|
|
, DISP_ORD
|
|
|
, DISP_YN
|
|
|
, ERP_STOCK_LINK_YN
|
|
|
- , REG_ID
|
|
|
+ , REG_NO
|
|
|
, REG_DT
|
|
|
- , UPD_ID
|
|
|
+ , UPD_NO
|
|
|
, UPD_DT
|
|
|
)
|
|
|
SELECT GOODS_CD
|
|
|
@@ -1510,52 +1510,345 @@
|
|
|
, 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
|
|
|
- , 'batch' AS REG_ID
|
|
|
- , SYSDATE AS REG_DT
|
|
|
- , 'batch' AS UPD_ID
|
|
|
- , SYSDATE AS UPD_DT
|
|
|
+ , 0 AS REG_NO
|
|
|
+ , NOW() AS REG_DT
|
|
|
+ , 0 AS UPD_NO
|
|
|
+ , NOW() AS UPD_DT
|
|
|
FROM (
|
|
|
SELECT GOODS_CD
|
|
|
- , SIZE_CD
|
|
|
- , SIZE_NM
|
|
|
- , SUM(CURR_ON_STOCK_QTY) AS CURR_ON_STOCK_QTY
|
|
|
- , SUM(CURR_OFF_STOCK_QTY) AS CURR_OFF_STOCK_QTY
|
|
|
- , SUM(CURR_SHOP_STOCK_QTY) AS CURR_SHOP_STOCK_QTY
|
|
|
- , NVL((SELECT (MAX(DISP_ORD) + 1) AS DISP_ORD FROM TB_STOCK WHERE GOODS_CD = Z.GOODS_CD)
|
|
|
- , ROW_NUMBER() OVER(PARTITION BY GOODS_CD ORDER BY SIZE_CD)) AS DISP_ORD
|
|
|
+ , 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
|
|
|
- , A.OPTION1 AS OPT_CD1
|
|
|
- , A.OPTION2 ASOPT_CD2
|
|
|
- , A.SKUMODELNO AS SKU_MODEL_NO
|
|
|
- , B.PRODUCT_NO
|
|
|
- , B.PRODUCT_CODE
|
|
|
- , SUM(GREATEST(A.SELLINGSTOCKAMOUNT, 0)) AS CURR_STOCK_QTY
|
|
|
- , B.ERP_STOCK_LINK_YN
|
|
|
- , A.CD_LOC
|
|
|
+ , 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_TEMP A, TB_GOODS B, TB_STOCK_LINK_BASE C, TB_DELIVERY_LOC D
|
|
|
- WHERE B.SELF_GOODS_YN = 'Y'
|
|
|
- AND B.GOODS_TYPE = 'N'
|
|
|
- AND B.GOODS_NUM = A.CD_STYLE
|
|
|
- AND B.COLOR_CD = A.CD_COLOR
|
|
|
- AND B.BRAND_CD = C.BRAND_CD
|
|
|
- AND B.FORMAL_GB = C.FORMAL_GB
|
|
|
- AND B.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
|
|
|
- AND C.STOCK_LINK_YN = 'Y'
|
|
|
- AND D.USE_YN = 'Y'
|
|
|
- AND A.CD_LOC = C.DELV_LOC_CD
|
|
|
- AND A.CD_LOC = D.DELV_LOC_CD
|
|
|
- GROUP BY B.GOODS_CD, A.CD_SIZE, B.ERP_STOCK_LINK_YN, A.CD_LOC, 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, SIZE_CD, ERP_STOCK_LINK_YN
|
|
|
- )
|
|
|
+ GROUP BY GOODS_CD, OPT_CD, ERP_STOCK_LINK_YN
|
|
|
+ ) Y
|
|
|
</insert>
|
|
|
|
|
|
+ <!-- 입점상품 SELL_QTY 목록 조회 -->
|
|
|
+ <select id="getGoodsSelfNoStockList" resultType="Option">
|
|
|
+ /* 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">
|
|
|
+ /* 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">
|
|
|
+ /* 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">
|
|
|
+ /* TsbGoods.deleteGoodsOptionSync */
|
|
|
+ TRUNCATE TABLE TB_OPTION_SYNC
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!--TB_OPTION = > TB_OPTION_SYNC 적용 -->
|
|
|
+ <insert id="createGoodsOptionSync">
|
|
|
+ /* 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">
|
|
|
+ /* 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">
|
|
|
+ /* 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">
|
|
|
+ /* TsbGoods.deleteTtbSellQtyTemp */
|
|
|
+ TRUNCATE TABLE TB_SELL_QTY_TEMP
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- TB_SELL_QTY_TEMP 테이블 삭제 -->
|
|
|
+ <insert id="createTtbSellQtyTemp">
|
|
|
+ /* 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">
|
|
|
+ /* TsbGoods.deleteSellQty */
|
|
|
+ DELETE FROM TB_SELL_QTY
|
|
|
+ </delete>
|
|
|
+
|
|
|
+ <!-- TB_SELL_QTY 테이블 생성 -->
|
|
|
+ <insert id="createTtbSellQty">
|
|
|
+ /* 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">
|
|
|
+ /* 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>
|