FN_GET_BENEFIT_PRICE.sql 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. DROP FUNCTION IF EXISTS FN_GET_BENEFIT_PRICE;
  2. create FUNCTION FN_GET_BENEFIT_PRICE
  3. (I_SITE_CD VARCHAR(20)
  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. ,I_FLOOR_UNIT VARCHAR(20)
  9. ,I_USABLE_CUST_GRADE VARCHAR(20)
  10. ) RETURNS int
  11. /******************************************************************************
  12. /*
  13. /* Module : 혜택가
  14. /* Program Name : fn_get_benefit_price
  15. /* Description : 상품의 현재판매가에 즉시할인상품쿠폰을 적용한 판매가를 반환한다.
  16. /*
  17. /* Input : i_site_cd => 사이트코드
  18. /* i_front_gb => 프론트구분(P:PC, M:모바일)
  19. /* i_goods_cd => 상품코드
  20. /* i_curr_price => 현재판매가
  21. /* i_usable_cust_gb => 사용가능고객구분(G100_00:전체, G100_10:일반회원, G100_20:임직원)
  22. /* i_floor_unit => 절사단위(10:일원단위절사, 100:십원단위절사, 1000:백원단위절사)
  23. /* i_usable_cust_grade => 사용가능고객등급구분(00:전체, 그외 등급코드)
  24. /* OutPut : 즉시할인판매가
  25. /*
  26. /* Program History
  27. /*
  28. /*----------------------------------------------------------------------------
  29. /* Date CSR NO. Name Description
  30. /*----------------------------------------------------------------------------
  31. /* 2020-12-02 eskim Initial Release
  32. /******************************************************************************/
  33. BEGIN
  34. DECLARE O_RET_VALUE int;
  35. DECLARE V_USABLE_CUST_GB VARCHAR(20);
  36. DECLARE V_USABLE_CUST_GRADE VARCHAR(20);
  37. DECLARE CONTINUE HANDLER FOR NOT FOUND
  38. BEGIN
  39. SET O_RET_VALUE = I_CURR_PRICE;
  40. RETURN O_RET_VALUE;
  41. END;
  42. SET O_RET_VALUE = 0;
  43. SET V_USABLE_CUST_GB = I_USABLE_CUST_GB;
  44. SET V_USABLE_CUST_GRADE = I_USABLE_CUST_GRADE;
  45. IF V_USABLE_CUST_GB IS NULL OR V_USABLE_CUST_GB = '' THEN
  46. SET V_USABLE_CUST_GB = 'G100_00';
  47. END IF;
  48. IF V_USABLE_CUST_GRADE IS NULL OR V_USABLE_CUST_GRADE = '' THEN
  49. SET V_USABLE_CUST_GRADE = '00';
  50. END IF;
  51. SELECT CASE WHEN I_USABLE_CUST_GB = '99' THEN I_CURR_PRICE
  52. WHEN I_FRONT_GB = 'P' AND I_USABLE_CUST_GB = 'G100_20' THEN STAFF_PC_CURR_PRICE
  53. WHEN I_FRONT_GB = 'P' AND I_USABLE_CUST_GB <> 'G100_20' THEN PC_CURR_PRICE
  54. WHEN I_FRONT_GB = 'M' AND I_USABLE_CUST_GB = 'G100_20' THEN STAFF_MO_CURR_PRICE
  55. WHEN I_FRONT_GB = 'M' AND I_USABLE_CUST_GB <> 'G100_20' THEN MO_CURR_PRICE
  56. ELSE I_CURR_PRICE END
  57. INTO O_RET_VALUE
  58. FROM TB_GOODS_BENEFIT_PRICE
  59. WHERE GOODS_CD = I_GOODS_CD
  60. AND CUST_GB = 'G100_00'
  61. ;
  62. RETURN O_RET_VALUE;
  63. END