FN_GET_BENEFIT_PRICE.sql 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. DROP FUNCTION IF EXISTS FN_GET_BENEFIT_PRICE;
  2. DELIMITER $$
  3. create FUNCTION FN_GET_BENEFIT_PRICE
  4. (I_FRONT_GB VARCHAR(20)
  5. ,I_GOODS_CD VARCHAR(20)
  6. ,I_CURR_PRICE int
  7. ,I_USABLE_CUST_GB VARCHAR(20)
  8. ) RETURNS INT
  9. /******************************************************************************
  10. /*
  11. /* Module : 즉시쿠폰 적용가
  12. /* Program Name : fn_get_benefit_price
  13. /* Description : 상품의 현재판매가에 즉시할인상품쿠폰을 적용한 판매가를 반환한다.
  14. /*
  15. /* Input : i_front_gb => 프론트구분(P:PC, M:모바일, A:APP)
  16. /* i_goods_cd => 상품코드
  17. /* i_curr_price => 현재판매가
  18. /* i_usable_cust_gb => 사용가능고객구분(G100_00:전체, G100_10:일반회원, G100_20:임직원)
  19. /* OutPut : 즉시할인판매가
  20. /*
  21. /* Program History
  22. /*
  23. /*----------------------------------------------------------------------------
  24. /* Date CSR NO. Name Description
  25. /*----------------------------------------------------------------------------
  26. /* 2020-12-02 eskim Initial Release
  27. /******************************************************************************/
  28. BEGIN
  29. DECLARE O_RET_VALUE INT;
  30. DECLARE V_USABLE_CUST_GB VARCHAR(20);
  31. DECLARE CONTINUE HANDLER FOR NOT FOUND
  32. BEGIN
  33. SET O_RET_VALUE = I_CURR_PRICE;
  34. RETURN O_RET_VALUE;
  35. END;
  36. SET O_RET_VALUE = 0;
  37. SET V_USABLE_CUST_GB = I_USABLE_CUST_GB;
  38. IF V_USABLE_CUST_GB IS NULL OR V_USABLE_CUST_GB = '' THEN
  39. SET V_USABLE_CUST_GB = 'G100_00';
  40. END IF;
  41. SELECT CASE WHEN I_USABLE_CUST_GB = '99' THEN I_CURR_PRICE
  42. WHEN I_FRONT_GB = 'P' AND I_USABLE_CUST_GB = 'G100_20' THEN STAFF_PC_CURR_PRICE
  43. WHEN I_FRONT_GB = 'P' AND I_USABLE_CUST_GB <> 'G100_20' THEN PC_CURR_PRICE
  44. WHEN I_FRONT_GB = 'M' AND I_USABLE_CUST_GB = 'G100_20' THEN STAFF_MO_CURR_PRICE
  45. WHEN I_FRONT_GB = 'M' AND I_USABLE_CUST_GB <> 'G100_20' THEN MO_CURR_PRICE
  46. WHEN I_FRONT_GB = 'A' AND I_USABLE_CUST_GB = 'G100_20' THEN STAFF_APP_CURR_PRICE
  47. WHEN I_FRONT_GB = 'A' AND I_USABLE_CUST_GB <> 'G100_20' THEN APP_CURR_PRICE
  48. ELSE I_CURR_PRICE END
  49. INTO O_RET_VALUE
  50. FROM TB_GOODS_BENEFIT_PRICE
  51. WHERE GOODS_CD = I_GOODS_CD
  52. AND CUST_GB = 'G100_00'
  53. ;
  54. RETURN O_RET_VALUE;
  55. END $$
  56. DELIMITER ;