상품권정산_데이터검증.sql 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. /* TsaSettle.getGiftcardSettleList */
  2. SELECT SUM(USE_GFCD_AMT - CNCL_GFCD_AMT)
  3. FROM (
  4. SELECT CG.GFCD_NO /*상품권번호*/
  5. , DATE_FORMAT(CG.REG_DT,'%Y-%m-%d') AS REG_DT /*등록일*/
  6. , DATE_FORMAT(CG.USE_EXP_DATE,'%Y-%m-%d') AS USE_EXP_DATE /*사용만료일*/
  7. , CASE WHEN NOW() < CG.USE_EXP_DATE THEN 'Y' ELSE 'N' END AS AVAIL_YN /*유효여부*/
  8. , CG.CUST_NO /*고객번호*/
  9. , C.CUST_ID /*고객ID*/
  10. , CG.CHG_GFCD_AMT /*전환금액(=최초등록금액)*/
  11. , IFNULL(CGH1.USE_GFCD_AMT,0) AS USE_GFCD_AMT /*정산월사용금액*/
  12. , IFNULL(CGH1.CNCL_GFCD_AMT,0) AS CNCL_GFCD_AMT /*정산월취소금액*/
  13. FROM TB_CUST_GIFTCARD CG
  14. INNER JOIN TB_CUSTOMER C ON CG.CUST_NO = C.CUST_NO
  15. LEFT OUTER JOIN (
  16. /*정산월기준 사용금액과 취소금액*/
  17. SELECT CUST_NO
  18. , CUST_GFCD_SQ
  19. , -1 * SUM(CASE WHEN OCCUR_GB IN ('G074_12','G074_19') THEN GFCD_AMT ELSE 0 END) AS USE_GFCD_AMT /*사용금액*/
  20. , SUM(CASE WHEN OCCUR_GB IN ('G074_13','G074_18') THEN GFCD_AMT ELSE 0 END) AS CNCL_GFCD_AMT /*취소금액*/
  21. FROM TB_CUST_GIFTCARD_HST
  22. WHERE REG_DT >= STR_TO_DATE(CONCAT( '2021-09' /**P*/,'-01'),'%Y-%m-%d')
  23. AND REG_DT < DATE_ADD(STR_TO_DATE(CONCAT( '2021-09' /**P*/,'-01'),'%Y-%m-%d'), INTERVAL 1 MONTH)
  24. GROUP BY CUST_NO, CUST_GFCD_SQ
  25. ) CGH1 ON CG.CUST_NO = CGH1.CUST_NO
  26. AND CG.CUST_GFCD_SQ = CGH1.CUST_GFCD_SQ
  27. WHERE 1 = 1
  28. ORDER BY CG.GFCD_NO
  29. ) Z
  30. ;
  31. -- 236,500
  32. /* TsaStatistics.getDailyTradingList */
  33. SELECT SUM(GFCD_USE_AMT)
  34. FROM (
  35. SELECT ODIH.ORD_NO /*주문번호*/
  36. , ODIH.ORD_DTL_NO /*주문상세번호*/
  37. , ODIH.SELL_GB /*판매구분*/
  38. , ODIH.MALL_GB /*몰구분*/
  39. , ODIH.MALL_GB_NM /*몰구분명*/
  40. , ODIH.EXTMALL_ORDER_ID /*제휴몰주문번호*/
  41. , ODIH.EXTMALL_ID /*제휴몰ID*/
  42. , ODIH.EXTMALL_NM /*제휴몰명*/
  43. , ODIH.AF_LINK_CD /*제휴링크코드*/
  44. , ODIH.AF_LINK_NM /*제휴링크명*/
  45. , ODIH.AF_CHANNEL /*제휴채널코드*/
  46. , ODIH.AF_CHANNEL_NM /*제휴채널명*/
  47. , ODIH.DISTRIBUTION_GB /*유통구분*/
  48. , ODIH.DISTRIBUTION_GB_NM /*유통구분명*/
  49. , ODIH.SUPPLY_COMP_CD /*공급업체코드*/
  50. , ODIH.SUPPLY_COMP_NM /*공급업체명*/
  51. , ODIH.SUPPLY_VENDOR_CD /*공급벤더코드*/
  52. , ODIH.SUPPLY_VENDOR_NM /*공급벤더명*/
  53. , ODIH.ORD_DT /*주문일시*/
  54. , ODIH.OCCUR_DT /*발생일시*/
  55. , ODIH.BRAND_CD /*브랜드코드*/
  56. , ODIH.BRAND_ENM /*브랜드명*/
  57. , ODIH.GOODS_CD /*상품코드*/
  58. , ODIH.GOODS_NM /*상품명*/
  59. , ODIH.ITEM_CD /*단품코드*/
  60. , ODIH.OPT_CD1 /*옵션코드1*/
  61. , ODIH.OPT_CD2 /*옵션코드2*/
  62. , ODIH.ITEMKIND_CD /*품목코드*/
  63. , ODIH.ITEMKIND_NM /*품목명*/
  64. , SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',1) AS ITEMKIND_NM1 /*품목명1*/
  65. , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',1),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1) THEN
  66. NULL
  67. ELSE
  68. SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1)
  69. END AS ITEMKIND_NM2 /*품목명2*/
  70. , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',2),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1) THEN
  71. NULL
  72. ELSE
  73. SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1)
  74. END AS ITEMKIND_NM3 /*품목명3*/
  75. , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',3),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',4),'>',-1) THEN
  76. ''
  77. ELSE
  78. SUBSTRING_INDEX(SUBSTRING_INDEX(ODIH.ITEMKIND_NM,'>',4),'>',-1)
  79. END AS ITEMKIND_NM4 /*품목명4*/
  80. , ODIH.MALL_PRICE /*몰판매가*/
  81. , ODIH.SELL_PRICE /*판매가*/
  82. , ODIH.SELL_QTY /*판매수량*/
  83. , ODIH.SELL_AMT /*판매금액(ORD_AMT에는 CPN1_DC_AMT가 빠진 금액이 들어가 있음)*/
  84. , ODIH.CPN1_DC_AMT /*즉시사용쿠폰금액*/
  85. , ODIH.GOODS_CPN_DC_AMT /*상품쿠폰사용금액*/
  86. , ODIH.CART_CPN_DC_AMT /*주문서쿠폰사용금액*/
  87. , ODIH.PNT_DC_AMT /*포인트사용금액*/
  88. , ODIH.TMTB_DC_AMT /*다다익선할인금액*/
  89. , ODIH.SELF_TMTB_DC_AMT /*자사다다익선분담액*/
  90. , ODIH.SUPPLY_COMP_TMTB_DC_AMT /*입점다다익선분담액*/
  91. , ODIH.GFCD_USE_AMT /*상품권사용금액*/
  92. , ODIH.SELF_CPN_DC_AMT /*자사쿠폰분담액*/
  93. , ODIH.SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
  94. , CASE WHEN ODIH.SELL_QTY = 0 THEN 0
  95. ELSE
  96. (ODIH.SELL_AMT
  97. - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT + ODIH.CART_CPN_DC_AMT)
  98. - ODIH.TMTB_DC_AMT
  99. ) / ODIH.SELL_QTY
  100. END AS REAL_SELL_PRICE /*실판매가*/
  101. , ODIH.SELL_AMT
  102. - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT + ODIH.CART_CPN_DC_AMT)
  103. - ODIH.TMTB_DC_AMT AS REAL_SELL_AMT /*실판매금액(=상품총액. 쿠폰과 다다익선만 차감. 상품권과 포인트는 포함)*/
  104. , ODIH.SELL_FEE_RATE /*판매수수료율*/
  105. , ROUND((ODIH.SELL_AMT
  106. - (ODIH.CPN1_DC_AMT + ODIH.GOODS_CPN_DC_AMT + ODIH.CART_CPN_DC_AMT)
  107. - ODIH.TMTB_DC_AMT
  108. ) * (ODIH.SELL_FEE_RATE / 100),0) AS SELL_FEE_AMT /*수수료*/
  109. , ODIH.MD_NM /*담당MD*/
  110. FROM (
  111. SELECT ODIH.ORD_DTL_ITEM_HST_SQ /*주문상세단품이력일련번호*/
  112. , ODIH.ORD_NO /*주문번호*/
  113. , ODIH.ORD_DTL_NO /*주문상세번호*/
  114. , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN '판매'
  115. WHEN ODIH.ORD_DTL_STAT = 'G720_30' THEN '취소'
  116. WHEN ODIH.ORD_DTL_STAT = 'G720_40' THEN '품절취소'
  117. WHEN ODIH.ORD_DTL_STAT = 'G720_50' THEN '반품'
  118. WHEN ODIH.ORD_DTL_STAT = 'G720_60' THEN '교환'
  119. END AS SELL_GB /*판매구분*/
  120. , O.MALL_GB /*몰구분*/
  121. , FN_GET_CODE_NM('G011',O.MALL_GB) AS MALL_GB_NM /*몰구분명*/
  122. , OD.EXTMALL_ORDER_ID /*제휴몰주문번호*/
  123. , OD.EXTMALL_ID /*제휴몰ID*/
  124. , E.EXTMALL_NM /*제휴몰명*/
  125. , OD.AF_LINK_CD /*제휴링크코드*/
  126. , AL.AF_LINK_NM /*제휴링크명*/
  127. , AL.AF_CHANNEL /*제휴채널코드*/
  128. , FN_GET_CODE_NM('G053',AL.AF_CHANNEL) AS AF_CHANNEL_NM /*제휴채널명*/
  129. , SC.DISTRIBUTION_GB /*유통구분*/
  130. , FN_GET_CODE_NM('G065',SC.DISTRIBUTION_GB) AS DISTRIBUTION_GB_NM /*유통구분명*/
  131. , OD.SUPPLY_COMP_CD /*공급업체코드*/
  132. , SC.SUPPLY_COMP_NM /*공급업체명*/
  133. , SC.SUPPLY_VENDOR_CD /*공급벤더코드*/
  134. , SV.SUPPLY_VENDOR_NM /*공급벤더명*/
  135. , DATE_FORMAT(O.PAY_DT,'%Y-%m-%d %H:%i:%S') AS ORD_DT /*주문일시*/
  136. , DATE_FORMAT(ODIH.REG_DT,'%Y-%m-%d %H:%i:%S') AS OCCUR_DT /*발생일시*/
  137. , G.BRAND_CD /*브랜드코드*/
  138. , B.BRAND_ENM /*브랜드명*/
  139. , OD.GOODS_CD /*상품코드*/
  140. , G.GOODS_NM /*상품명*/
  141. , ODIH.ITEM_CD /*단품코드*/
  142. , ODIH.OPT_CD1 /*옵션코드1*/
  143. , ODIH.OPT_CD2 /*옵션코드2*/
  144. , G.ITEMKIND_CD /*품목코드*/
  145. , I.ITEMKIND_NM /*품목명*/
  146. , ODIH.ITEM_PRICE AS MALL_PRICE /*몰판매가*/
  147. , CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
  148. IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
  149. ELSE
  150. ODIH.ITEM_PRICE
  151. END AS SELL_PRICE /*판매가(제휴몰정산가적용)*/
  152. , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN 1 ELSE -1 END)
  153. *
  154. CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
  155. ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY
  156. ELSE /*환입-반품완료,환입-교환완료*/
  157. ODIH.CNCL_RTN_QTY
  158. END AS SIGNED INT) AS SELL_QTY /*판매수량*/
  159. , (CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10' THEN 1 ELSE -1 END)
  160. *
  161. CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_10'/*판매-결제완료*/ THEN
  162. ((ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY) * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
  163. IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
  164. ELSE
  165. ODIH.ITEM_PRICE
  166. END))
  167. ELSE /*환입-반품완료,환입-교환완료*/
  168. (ODIH.CNCL_RTN_QTY * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
  169. IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
  170. ELSE
  171. ODIH.ITEM_PRICE
  172. END))
  173. END AS SIGNED INT) AS SELL_AMT /*판매금액*/
  174. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.CPN1_DC_AMT AS CPN1_DC_AMT /*즉시사용쿠폰금액*/
  175. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.GOODS_CPN_DC_AMT AS GOODS_CPN_DC_AMT /*상품쿠폰사용금액*/
  176. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.CART_CPN_DC_AMT AS CART_CPN_DC_AMT /*주문서쿠폰사용금액*/
  177. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.PNT_DC_AMT AS PNT_DC_AMT /*포인트사용금액*/
  178. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * (ODIH.TMTB1_DC_AMT + ODIH.TMTB2_DC_AMT) AS TMTB_DC_AMT /*다다익선할인금액*/
  179. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
  180. (((100 - IFNULL(TB1.TMTB_BURDEN_RATE,0)) / 100) * ODIH.TMTB1_DC_AMT
  181. + ((100 - IFNULL(TB2.TMTB_BURDEN_RATE,0)) / 100) * ODIH.TMTB2_DC_AMT) AS SELF_TMTB_DC_AMT /*자사다다익선분담액*/
  182. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
  183. ((IFNULL(TB1.TMTB_BURDEN_RATE,0) / 100) * ODIH.TMTB1_DC_AMT
  184. + (IFNULL(TB2.TMTB_BURDEN_RATE,0) / 100) * ODIH.TMTB2_DC_AMT) AS SUPPLY_COMP_TMTB_DC_AMT /*입점다다익선분담액*/
  185. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) * ODIH.GFCD_USE_AMT AS GFCD_USE_AMT /*상품권사용금액*/
  186. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
  187. (((100 - IFNULL(CB1.BURDEN_RATE,0)) / 100) * ODIH.CPN1_DC_AMT
  188. + ((100 - IFNULL(CB2.BURDEN_RATE,0)) / 100) * ODIH.GOODS_CPN_DC_AMT
  189. + ((100 - IFNULL(CB3.BURDEN_RATE,0)) / 100) * ODIH.CART_CPN_DC_AMT) AS SELF_CPN_DC_AMT /*자사쿠폰분담액*/
  190. , IF(ODIH.ORD_DTL_STAT = 'G720_10',1,-1) *
  191. ((IFNULL(CB1.BURDEN_RATE,0) / 100) * ODIH.CPN1_DC_AMT
  192. + (IFNULL(CB2.BURDEN_RATE,0) / 100) * ODIH.GOODS_CPN_DC_AMT
  193. + (IFNULL(CB3.BURDEN_RATE,0) / 100) * ODIH.CART_CPN_DC_AMT) AS SUPPLY_COMP_CPN_DC_AMT /*입점쿠폰분담액*/
  194. , CASE WHEN O.MALL_GB = 'G011_10' /*자사몰*/ THEN
  195. OD.SELL_FEE_RATE
  196. ELSE /*제휴몰*/
  197. IFNULL(E.SELL_FEE_RATE,0)
  198. END AS SELL_FEE_RATE /*판매수수료율*/
  199. , (SELECT U.USER_NM
  200. FROM TB_BRAND_MD BM
  201. , TB_USER U
  202. WHERE BM.MD_NO = U.USER_NO
  203. AND BM.BRAND_CD = G.BRAND_CD
  204. AND BM.FORMAL_GB = G.FORMAL_GB
  205. LIMIT 1) AS MD_NM /*담당MD*/
  206. FROM TB_ORDER_DETAIL_ITEM_HST ODIH
  207. INNER JOIN TB_ORDER_DETAIL OD ON ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
  208. INNER JOIN TB_ORDER O ON ODIH.ORD_NO = O.ORD_NO
  209. INNER JOIN TB_SUPPLY_COMPANY SC ON OD.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
  210. INNER JOIN TB_SUPPLY_VENDOR SV ON SC.SUPPLY_VENDOR_CD = SV.SUPPLY_VENDOR_CD
  211. INNER JOIN TB_GOODS G ON OD.GOODS_CD = G.GOODS_CD
  212. INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
  213. INNER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
  214. LEFT OUTER JOIN TB_EXTMALL E ON OD.EXTMALL_ID = E.EXTMALL_ID
  215. LEFT OUTER JOIN TB_AF_LINK AL ON OD.AF_LINK_CD = AL.AF_LINK_CD
  216. LEFT OUTER JOIN TB_COUPON_BURDEN CB1 ON OD.CPN1_CPN_SQ = CB1.CPN_ID
  217. AND OD.SUPPLY_COMP_CD = CB1.SUPPLY_COMP_CD
  218. LEFT OUTER JOIN TB_COUPON_BURDEN CB2 ON OD.GOODS_CPN_SQ = CB2.CPN_ID
  219. AND OD.SUPPLY_COMP_CD = CB2.SUPPLY_COMP_CD
  220. LEFT OUTER JOIN TB_COUPON_BURDEN CB3 ON OD.CART_CPN_SQ = CB3.CPN_ID
  221. AND OD.SUPPLY_COMP_CD = CB3.SUPPLY_COMP_CD
  222. LEFT OUTER JOIN TB_TMTB_BURDEN TB1 ON OD.TMTB1_SQ = TB1.TMTB_SQ
  223. AND OD.SUPPLY_COMP_CD = TB1.TMTB_SUPPLY_CD
  224. LEFT OUTER JOIN TB_TMTB_BURDEN TB2 ON OD.TMTB2_SQ = TB2.TMTB_SQ
  225. AND OD.SUPPLY_COMP_CD = TB2.TMTB_SUPPLY_CD
  226. LEFT OUTER JOIN TB_EXTMALL_USAC_PRICE EUP ON ODIH.ORD_DTL_ITEM_HST_SQ = EUP.ORD_DTL_ITEM_HST_SQ
  227. WHERE 1 = 1
  228. AND ODIH.REG_DT >= STR_TO_DATE( '2021-09-01' /**P*/,'%Y-%m-%d')
  229. AND ODIH.REG_DT < DATE_ADD(STR_TO_DATE( '2021-09-30' /**P*/,'%Y-%m-%d'), INTERVAL 1 DAY)
  230. AND ODIH.ORD_DTL_STAT IN ('G720_10','G720_30','G720_40','G720_50','G720_60') /*판매-결제완료,환입-취소완료,환입-품절취소,환입-반품완료,환입-교환완료*/
  231. ) ODIH
  232. ORDER BY ODIH.ORD_DTL_ITEM_HST_SQ
  233. ) Z
  234. ;