Просмотр исходного кода

재고VIEW, 즉시할인가함수 추가

eskim 5 лет назад
Родитель
Сommit
ab71689909

+ 42 - 0
산출물/3.설계/05.DB-Object/01.db_view/VW_STOCK.sql

@@ -0,0 +1,42 @@
+CREATE VIEW VW_STOCK AS
+    SELECT
+        A.GOODS_CD,
+        A.OPT_CD,
+        CONCAT(A.OPT_CD1,  NVL2(A.OPT_CD2, '', CONCAT('/', A.OPT_CD2))) AS OPT_NM,
+		A.OPT_CD1,
+		A.OPT_CD2,
+        A.CURR_STOCK_QTY,
+        0 AS BASE_STOCK_QTY,
+        A.SOLDOUT_YN,
+        A.DISP_ORD,
+		A.DISP_YN
+    FROM
+        (
+            SELECT
+                S.GOODS_CD,
+                S.OPT_CD,
+                S.OPT_CD1,
+				S.OPT_CD2,
+                GREATEST(GREATEST(S.CURR_STOCK_QTY - S.BASE_STOCK_QTY, 0) - IFNULL(SQ.STOCK_QTY, 0), 0) AS CURR_STOCK_QTY,
+                S.SOLDOUT_YN,
+                S.DISP_ORD,
+				S.DISP_YN
+            FROM
+                TB_OPTION S
+                LEFT OUTER JOIN(
+		                    SELECT 
+		                        Z.GOODS_CD,
+		                        Z.OPT_CD,
+		                        SUM((CASE Z.SELL_GB WHEN '10' THEN 1
+		                                              WHEN '20' THEN 1
+				                                      ELSE -1 END) * Z.SELL_QTY) AS STOCK_QTY
+		                    FROM
+		                        TB_SELL_QTY Z
+		                    GROUP BY
+		                        Z.GOODS_CD, Z.OPT_CD
+		                ) SQ
+						ON (
+						    S.GOODS_CD = SQ.GOODS_CD
+							AND S.OPT_CD = SQ.OPT_CD
+						)
+        ) A

+ 17 - 0
산출물/3.설계/05.DB-Object/01.db_view/VW_STOCK_COMPOSE.sql

@@ -0,0 +1,17 @@
+CREATE VIEW VW_STOCK_COMPOSE AS
+    SELECT
+        A.GOODS_CD,
+        '' AS OPT_CD,
+        '' AS OPT_NM,
+		'' AS OPT_CD1,
+		'' AS OPT_CD2,
+        SUM(B.CURR_STOCK_QTY)CURR_STOCK_QTY,
+        0 AS BASE_STOCK_QTY,
+        'N' SOLDOUT_YN,
+        0 AS DISP_ORD,
+		'Y' DISP_YN
+    FROM TB_GOODS_COMPOSE A
+	INNER JOIN VW_STOCK B ON A.COMPS_GOODS_CD = B.GOODS_CD
+	                      AND B.SOLDOUT_YN = 'N'
+	WHERE A.USE_YN = 'Y'
+	GROUP BY A.GOODS_CD

+ 69 - 0
산출물/3.설계/05.DB-Object/03.db_function/FN_GET_BENEFIT_PRICE.sql

@@ -0,0 +1,69 @@
+DROP FUNCTION IF EXISTS FN_GET_BENEFIT_PRICE;
+create FUNCTION FN_GET_BENEFIT_PRICE
+	(I_SITE_CD        VARCHAR(20)
+	,I_FRONT_GB       VARCHAR(20)
+	,I_GOODS_CD       VARCHAR(20)
+	,I_CURR_PRICE     int
+	,I_USABLE_CUST_GB VARCHAR(20)
+	,I_FLOOR_UNIT     VARCHAR(20)
+    ,I_USABLE_CUST_GRADE  VARCHAR(20)
+	) RETURNS int 
+/******************************************************************************
+/*
+/* Module       : 혜택가
+/* Program Name : fn_get_benefit_price
+/* Description  : 상품의 현재판매가에 즉시할인상품쿠폰을 적용한 판매가를 반환한다.
+/*
+/*                Input  : i_site_cd => 사이트코드
+/*                         i_front_gb => 프론트구분(P:PC, M:모바일)
+/*                         i_goods_cd => 상품코드
+/*                         i_curr_price => 현재판매가
+/*                         i_usable_cust_gb => 사용가능고객구분(G100_00:전체, G100_10:일반회원, G100_20:임직원)
+/*                         i_floor_unit => 절사단위(10:일원단위절사, 100:십원단위절사, 1000:백원단위절사)
+/*                         i_usable_cust_grade => 사용가능고객등급구분(00:전체, 그외 등급코드)
+/*                OutPut : 즉시할인판매가
+/*
+/* Program History
+/*
+/*----------------------------------------------------------------------------
+/*   Date        CSR NO.             Name      Description
+/*----------------------------------------------------------------------------
+/* 2020-12-02                        eskim    Initial Release
+/******************************************************************************/
+BEGIN
+DECLARE O_RET_VALUE int;
+	DECLARE V_USABLE_CUST_GB VARCHAR(20);
+    DECLARE V_USABLE_CUST_GRADE VARCHAR(20);
+
+   DECLARE CONTINUE HANDLER FOR NOT FOUND 
+    BEGIN
+	    SET O_RET_VALUE = I_CURR_PRICE;
+	    RETURN O_RET_VALUE;
+	END;
+
+	SET O_RET_VALUE = 0;
+    SET V_USABLE_CUST_GB = I_USABLE_CUST_GB;
+    SET V_USABLE_CUST_GRADE = I_USABLE_CUST_GRADE;
+   
+   IF V_USABLE_CUST_GB IS NULL OR V_USABLE_CUST_GB = '' THEN 
+   		SET V_USABLE_CUST_GB = 'G100_00';
+   END IF;
+
+   IF V_USABLE_CUST_GRADE IS NULL OR V_USABLE_CUST_GRADE = '' THEN 
+   		SET V_USABLE_CUST_GRADE = '00';
+   END IF;
+
+  SELECT CASE WHEN I_USABLE_CUST_GB = '99' THEN I_CURR_PRICE
+                WHEN I_FRONT_GB = 'P' AND I_USABLE_CUST_GB = 'G100_20'  THEN STAFF_PC_CURR_PRICE
+                WHEN I_FRONT_GB = 'P' AND I_USABLE_CUST_GB <> 'G100_20' THEN PC_CURR_PRICE
+                WHEN I_FRONT_GB = 'M' AND I_USABLE_CUST_GB = 'G100_20'  THEN STAFF_MO_CURR_PRICE
+                WHEN I_FRONT_GB = 'M' AND I_USABLE_CUST_GB <> 'G100_20' THEN MO_CURR_PRICE
+                ELSE I_CURR_PRICE END
+    INTO   O_RET_VALUE            
+    FROM TB_GOODS_BENEFIT_PRICE
+    WHERE GOODS_CD = I_GOODS_CD
+    AND  CUST_GB = 'G100_00'
+	;
+
+	RETURN O_RET_VALUE;
+END	

+ 18 - 12
산출물/3.설계/05.DB-Object/06.DDL/table.sql

@@ -5866,12 +5866,15 @@ ALTER TABLE TB_GOODS_PRICE_RES
 ################################################################################
 DROP TABLE IF EXISTS TB_GOODS_BENEFIT_PRICE RESTRICT;
 CREATE TABLE TB_GOODS_BENEFIT_PRICE (
-  GOODS_CD           VARCHAR(20)  NOT NULL COMMENT '상품코드', -- 상품코드
-  CUST_GB            VARCHAR(20)  NOT NULL DEFAULT 'G100_10' COMMENT '회원구분(공통코드G100)', -- 회원구분(공통코드G100)
-  CURR_PRICE         INT          NOT NULL DEFAULT 0 COMMENT '즉시할인판매가', -- 즉시할인판매가
-  PC_CURR_PRICE      INT          NOT NULL DEFAULT 0 COMMENT 'PC 즉시할인판매가', -- PC 즉시할인판매가
-  MO_CURR_PRICE      INT          NOT NULL DEFAULT 0 COMMENT 'MOBILE 즉시할인판매가', -- MOBILE 즉시할인판매가
-  REG_DT             TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시' -- 등록일시
+  GOODS_CD             VARCHAR(20)  NOT NULL COMMENT '상품코드', -- 상품코드
+  CUST_GB              VARCHAR(20)  NOT NULL DEFAULT 'G100_10' COMMENT '회원구분(공통코드G100)', -- 회원구분(공통코드G100)
+  CURR_PRICE           INT          NOT NULL DEFAULT 0 COMMENT '즉시할인판매가', -- 즉시할인판매가
+  PC_CURR_PRICE        INT          NOT NULL DEFAULT 0 COMMENT 'PC 즉시할인판매가', -- PC 즉시할인판매가
+  MO_CURR_PRICE        INT          NOT NULL DEFAULT 0 COMMENT 'MOBILE 즉시할인판매가', -- MOBILE 즉시할인판매가
+  STAFF_CURR_PRICE     INT          NOT NULL DEFAULT 0 COMMENT '임직원 즉시할인판매가', -- 즉시할인판매가
+  STAFF_PC_CURR_PRICE  INT          NOT NULL DEFAULT 0 COMMENT '임직원 PC 즉시할인판매가', -- PC 즉시할인판매가
+  STAFF_MO_CURR_PRICE  INT          NOT NULL DEFAULT 0 COMMENT '임직원 MOBILE 즉시할인판매가', -- MOBILE 즉시할인판매가
+  REG_DT               TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시' -- 등록일시
 )
 COMMENT '상품혜택가. 배치로 인한 온라인 즉시할인가 등록에 의한 발생';
 
@@ -5885,12 +5888,15 @@ ALTER TABLE TB_GOODS_BENEFIT_PRICE
     
 DROP TABLE IF EXISTS TB_GOODS_BENEFIT_PRICE_TEMP RESTRICT;
 CREATE TABLE TB_GOODS_BENEFIT_PRICE_TEMP (
-  GOODS_CD           VARCHAR(20)  NOT NULL COMMENT '상품코드', -- 상품코드
-  CUST_GB            VARCHAR(20)  NOT NULL DEFAULT 'G100_10' COMMENT '회원구분(공통코드G100)', -- 회원구분(공통코드G100)
-  CURR_PRICE         INT          NOT NULL DEFAULT 0 COMMENT '즉시할인판매가', -- 즉시할인판매가
-  PC_CURR_PRICE      INT          NOT NULL DEFAULT 0 COMMENT 'PC 즉시할인판매가', -- PC 즉시할인판매가
-  MO_CURR_PRICE      INT          NOT NULL DEFAULT 0 COMMENT 'MOBILE 즉시할인판매가', -- MOBILE 즉시할인판매가
-  REG_DT             TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시' -- 등록일시
+  GOODS_CD             VARCHAR(20)  NOT NULL COMMENT '상품코드', -- 상품코드
+  CUST_GB              VARCHAR(20)  NOT NULL DEFAULT 'G100_10' COMMENT '회원구분(공통코드G100)', -- 회원구분(공통코드G100)
+  CURR_PRICE           INT          NOT NULL DEFAULT 0 COMMENT '즉시할인판매가', -- 즉시할인판매가
+  PC_CURR_PRICE        INT          NOT NULL DEFAULT 0 COMMENT 'PC 즉시할인판매가', -- PC 즉시할인판매가
+  MO_CURR_PRICE        INT          NOT NULL DEFAULT 0 COMMENT 'MOBILE 즉시할인판매가', -- MOBILE 즉시할인판매가
+  STAFF_CURR_PRICE     INT          NOT NULL DEFAULT 0 COMMENT '임직원 즉시할인판매가', -- 즉시할인판매가
+  STAFF_PC_CURR_PRICE  INT          NOT NULL DEFAULT 0 COMMENT '임직원 PC 즉시할인판매가', -- PC 즉시할인판매가
+  STAFF_MO_CURR_PRICE  INT          NOT NULL DEFAULT 0 COMMENT '임직원 MOBILE 즉시할인판매가', -- MOBILE 즉시할인판매가
+  REG_DT               TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시' -- 등록일시
 )
 COMMENT '상품혜택가. 배치로 인한 온라인 즉시할인가 등록에 의한 발생';