FN_GET_FREEGIFT_GOODS_YN.sql 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. CREATE
  2. DEFINER = style@`%` FUNCTION FN_GET_FREEGIFT_GOODS_YN(I_GOODS_CD VARCHAR(20)) RETURNS CHAR DETERMINISTIC
  3. /******************************************************************************
  4. /*
  5. /* Module : 상품 사은품 여부 조회
  6. /* Program Name : FN_GET_FREEGIFT_GOODS_YN
  7. /* Description : 해당 상품 구매시 지급하는 사은품이 있는지 조회한다.
  8. /*
  9. /* Input : I_GOODS_CD => 상품코드
  10. /* OutPut : 'Y' OR 'N'
  11. /*
  12. /* Program History
  13. /*
  14. /*----------------------------------------------------------------------------
  15. /* Date CSR NO. Name Description
  16. /*----------------------------------------------------------------------------
  17. /* 2021-04-08 xodud1202 Initial Release
  18. /******************************************************************************/
  19. BEGIN
  20. DECLARE O_RETURN_VAL CHAR(1);
  21. SELECT CASE WHEN COUNT(A.GOODS_CD) > 0 THEN 'Y'
  22. ELSE 'N' END INTO O_RETURN_VAL
  23. FROM (SELECT G.GOODS_CD
  24. FROM TB_FREEGIFT F
  25. INNER JOIN TB_FREEGIFT_SECTION FS
  26. ON F.FREEGIFT_SQ = FS.FREEGIFT_SQ
  27. INNER JOIN TB_FREEGIFT_GOODS FGA
  28. ON F.FREEGIFT_SQ = FGA.FREEGIFT_SQ
  29. AND FGA.GOODS_GB = 'G800_20'
  30. AND FGA.TARGET_GB = 'G260_10'
  31. INNER JOIN TB_GOODS G
  32. ON FGA.TARGET_VAL = G.GOODS_CD
  33. LEFT OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY
  34. ON F.FREEGIFT_SQ = NOT_APPLY.FREEGIFT_SQ
  35. AND G.GOODS_CD = NOT_APPLY.TARGET_VAL
  36. AND NOT_APPLY.GOODS_GB = 'G800_30'
  37. AND NOT_APPLY.TARGET_GB = 'G260_10'
  38. WHERE NOT_APPLY.TARGET_VAL IS NULL
  39. AND F.DEL_YN = 'N'
  40. AND FS.DEL_YN = 'N'
  41. AND FGA.DEL_YN = 'N'
  42. AND NOW() BETWEEN F.FREEGIFT_STDT AND F.FREEGIFT_EDDT
  43. AND F.SELF_YN = 'Y'
  44. AND F.FREEGIFT_STAT = 'G232_11'
  45. AND G.GOODS_CD = I_GOODS_CD) A
  46. ;
  47. IF O_RETURN_VAL = 'Y' THEN
  48. RETURN O_RETURN_VAL;
  49. END IF;
  50. SELECT CASE WHEN COUNT(A.GOODS_CD) > 0 THEN 'Y'
  51. ELSE 'N' END INTO O_RETURN_VAL
  52. FROM (SELECT G.GOODS_CD
  53. FROM TB_FREEGIFT F
  54. INNER JOIN TB_FREEGIFT_SECTION FS
  55. ON F.FREEGIFT_SQ = FS.FREEGIFT_SQ
  56. INNER JOIN TB_FREEGIFT_GOODS_APPLY BRAND_FGA
  57. ON F.FREEGIFT_SQ = BRAND_FGA.FREEGIFT_SQ
  58. AND BRAND_FGA.TARGET_GB = 'G260_12' -- 브랜드
  59. INNER JOIN TB_FREEGIFT_GOODS_APPLY COMPANY_FGA
  60. ON F.FREEGIFT_SQ = COMPANY_FGA.FREEGIFT_SQ
  61. AND COMPANY_FGA.TARGET_GB = 'G260_13' -- 업체
  62. INNER JOIN TB_GOODS G
  63. ON BRAND_FGA.TARGET_VAL = G.BRAND_CD
  64. AND COMPANY_FGA.TARGET_VAL = G.SUPPLY_COMP_CD
  65. LEFT OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY
  66. ON F.FREEGIFT_SQ = NOT_APPLY.FREEGIFT_SQ
  67. AND G.GOODS_CD = NOT_APPLY.TARGET_VAL
  68. AND NOT_APPLY.GOODS_GB = 'G800_30'
  69. WHERE NOT_APPLY.TARGET_VAL IS NULL
  70. AND F.DEL_YN = 'N'
  71. AND FS.DEL_YN = 'N'
  72. AND NOW() BETWEEN F.FREEGIFT_STDT AND F.FREEGIFT_EDDT
  73. AND F.SELF_YN = 'Y'
  74. AND F.FREEGIFT_STAT = 'G232_11'
  75. AND G.GOODS_CD = I_GOODS_CD) A
  76. ;
  77. RETURN O_RETURN_VAL;
  78. END;