매출반영.sql 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. -- TRUNCATE TABLE TB_HANSAE_SALES;
  2. -- 한세MK 전일자 매출반영 데이터
  3. INSERT INTO TB_HANSAE_SALES (
  4. ERP_GB
  5. , DT_SALE
  6. , TP_SALE
  7. , CD_STYLE
  8. , CD_COLOR
  9. , CD_SIZE
  10. , BRAND_CD
  11. , QT_SALE
  12. , AM_ACSALE
  13. , DS_REMARK
  14. , REG_DT
  15. )
  16. SELECT 'hsmk' AS ERP_GB
  17. , DT_SALE
  18. , TP_SALE
  19. , CD_STYLE
  20. , CD_COLOR
  21. , CD_SIZE
  22. , BRAND_CD
  23. , QT_SALE
  24. , AM_ACSALE
  25. , '' AS DS_REMARK
  26. , NOW() AS REG_DT
  27. FROM (
  28. SELECT DATE_FORMAT(O.PAY_DT,'%Y%m%d') AS DT_SALE /*판매일자*/
  29. , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN '1'
  30. ELSE '2'
  31. END AS TP_SALE /*판매구분(1:판매, 2:환불)*/
  32. , SUBSTRING(ODIH.SKU_MODEL_NO,1,10) AS CD_STYLE /*ERP스타일코드*/
  33. , SUBSTRING(ODIH.SKU_MODEL_NO,11,2) AS CD_COLOR /*ERP색상코드*/
  34. , TRIM(SUBSTRING(ODIH.SKU_MODEL_NO,13,3)) AS CD_SIZE /*ERP사이즈코드*/
  35. , G.BRAND_CD /*브랜드코드*/
  36. , SUM(CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY /*판매-배송중*/
  37. ELSE ODIH.CNCL_RTN_QTY /*환입-반품완료,환입-교환완료*/
  38. END AS SIGNED INT)) AS QT_SALE /*판매수량*/
  39. , SUM(CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' /*판매-배송중*/ THEN
  40. ((ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY) * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
  41. IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
  42. ELSE
  43. ODIH.ITEM_PRICE
  44. END))
  45. ELSE /*환입-반품완료,환입-교환완료*/
  46. (ODIH.CNCL_RTN_QTY * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
  47. IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
  48. ELSE
  49. ODIH.ITEM_PRICE
  50. END))
  51. END AS SIGNED INT)) AS AM_ACSALE /*실판매금액*/
  52. FROM TB_ORDER_DETAIL_ITEM_HST ODIH
  53. INNER JOIN TB_ORDER_DETAIL OD ON ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
  54. INNER JOIN TB_ORDER O ON ODIH.ORD_NO = O.ORD_NO
  55. INNER JOIN TB_SUPPLY_COMPANY SC ON OD.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
  56. INNER JOIN TB_GOODS G ON ODIH.ITEM_CD = G.GOODS_CD
  57. LEFT OUTER JOIN TB_EXTMALL_USAC_PRICE EUP ON ODIH.ORD_DTL_ITEM_HST_SQ = EUP.ORD_DTL_ITEM_HST_SQ
  58. WHERE 1 = 1
  59. AND ODIH.REG_DT >= DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) /*전일자기준*/
  60. AND ODIH.REG_DT < CURRENT_DATE() /*전일자기준*/
  61. AND ODIH.ORD_DTL_STAT IN ('G720_20','G720_50','G720_60') /*판매-배송중, 환입-반품완료, 환입-교환완료*/
  62. AND OD.SUPPLY_COMP_CD = 5 /*한세MK*/
  63. AND SC.DISTRIBUTION_GB IN ('G065_10','G065_11','G065_12') /*자사*/
  64. GROUP BY DATE_FORMAT(O.PAY_DT,'%Y%m%d')
  65. , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN '1'
  66. ELSE '2'
  67. END
  68. , SUBSTRING(ODIH.SKU_MODEL_NO,1,10)
  69. , SUBSTRING(ODIH.SKU_MODEL_NO,11,2)
  70. , TRIM(SUBSTRING(ODIH.SKU_MODEL_NO,13,3))
  71. , G.BRAND_CD
  72. ) ODIH
  73. WHERE QT_SALE <> 0
  74. AND NOT EXISTS (SELECT 1
  75. FROM TB_HANSAE_SALES
  76. WHERE ERP_GB = 'hsmk'
  77. AND DT_SALE = ODIH.DT_SALE
  78. AND TP_SALE = ODIH.TP_SALE
  79. AND CD_STYLE = ODIH.CD_STYLE
  80. AND CD_COLOR = ODIH.CD_COLOR
  81. AND CD_SIZE = ODIH.CD_SIZE
  82. )
  83. ;
  84. -- 한세드림 전일자 매출반영 데이터
  85. INSERT INTO TB_HANSAE_SALES (
  86. ERP_GB
  87. , DT_SALE
  88. , TP_SALE
  89. , CD_STYLE
  90. , CD_COLOR
  91. , CD_SIZE
  92. , BRAND_CD
  93. , QT_SALE
  94. , AM_ACSALE
  95. , DS_REMARK
  96. , REG_DT
  97. )
  98. SELECT 'hsdr' AS ERP_GB
  99. , DT_SALE
  100. , TP_SALE
  101. , CD_STYLE
  102. , CD_COLOR
  103. , CD_SIZE
  104. , BRAND_CD
  105. , QT_SALE
  106. , AM_ACSALE
  107. , '' AS DS_REMARK
  108. , NOW() AS REG_DT
  109. FROM (
  110. SELECT DATE_FORMAT(O.PAY_DT,'%Y%m%d') AS DT_SALE /*판매일자*/
  111. , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN '1'
  112. ELSE '2'
  113. END AS TP_SALE /*판매구분(1:판매, 2:환불)*/
  114. , SUBSTRING(ODIH.SKU_MODEL_NO,1,10) AS CD_STYLE /*ERP스타일코드*/
  115. , SUBSTRING(ODIH.SKU_MODEL_NO,11,2) AS CD_COLOR /*ERP색상코드*/
  116. , TRIM(SUBSTRING(ODIH.SKU_MODEL_NO,13,3)) AS CD_SIZE /*ERP사이즈코드*/
  117. , G.BRAND_CD /*브랜드코드*/
  118. , SUM(CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY /*판매-배송중*/
  119. ELSE ODIH.CNCL_RTN_QTY /*환입-반품완료,환입-교환완료*/
  120. END AS SIGNED INT)) AS QT_SALE /*판매수량*/
  121. , SUM(CAST(CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' /*판매-배송중*/ THEN
  122. ((ODIH.ORD_QTY - ODIH.CNCL_RTN_QTY) * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
  123. IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
  124. ELSE
  125. ODIH.ITEM_PRICE
  126. END))
  127. ELSE /*환입-반품완료,환입-교환완료*/
  128. (ODIH.CNCL_RTN_QTY * (CASE WHEN O.MALL_GB = 'G011_20' /*제휴몰*/ THEN
  129. IFNULL(EUP.USAC_PRICE,ODIH.ITEM_PRICE)
  130. ELSE
  131. ODIH.ITEM_PRICE
  132. END))
  133. END AS SIGNED INT)) AS AM_ACSALE /*실판매금액*/
  134. FROM TB_ORDER_DETAIL_ITEM_HST ODIH
  135. INNER JOIN TB_ORDER_DETAIL OD ON ODIH.ORD_DTL_NO = OD.ORD_DTL_NO
  136. INNER JOIN TB_ORDER O ON ODIH.ORD_NO = O.ORD_NO
  137. INNER JOIN TB_SUPPLY_COMPANY SC ON OD.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
  138. INNER JOIN TB_GOODS G ON ODIH.ITEM_CD = G.GOODS_CD
  139. LEFT OUTER JOIN TB_EXTMALL_USAC_PRICE EUP ON ODIH.ORD_DTL_ITEM_HST_SQ = EUP.ORD_DTL_ITEM_HST_SQ
  140. WHERE 1 = 1
  141. AND ODIH.REG_DT >= DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) /*전일자기준*/
  142. AND ODIH.REG_DT < CURRENT_DATE() /*전일자기준*/
  143. AND ODIH.ORD_DTL_STAT IN ('G720_20','G720_50','G720_60') /*판매-배송중, 환입-반품완료, 환입-교환완료*/
  144. AND OD.SUPPLY_COMP_CD = 3 /*한세드림*/
  145. AND SC.DISTRIBUTION_GB IN ('G065_10','G065_11','G065_12') /*자사*/
  146. GROUP BY DATE_FORMAT(O.PAY_DT,'%Y%m%d')
  147. , CASE WHEN ODIH.ORD_DTL_STAT = 'G720_20' THEN '1'
  148. ELSE '2'
  149. END
  150. , SUBSTRING(ODIH.SKU_MODEL_NO,1,10)
  151. , SUBSTRING(ODIH.SKU_MODEL_NO,11,2)
  152. , TRIM(SUBSTRING(ODIH.SKU_MODEL_NO,13,3))
  153. , G.BRAND_CD
  154. ) ODIH
  155. WHERE QT_SALE <> 0
  156. AND NOT EXISTS (SELECT 1
  157. FROM TB_HANSAE_SALES
  158. WHERE ERP_GB = 'hsdr'
  159. AND DT_SALE = ODIH.DT_SALE
  160. AND TP_SALE = ODIH.TP_SALE
  161. AND CD_STYLE = ODIH.CD_STYLE
  162. AND CD_COLOR = ODIH.CD_COLOR
  163. AND CD_SIZE = ODIH.CD_SIZE
  164. )
  165. ;
  166. -- 업체별 매출반영 건수와 성공건수 조회
  167. SELECT ERP_GB
  168. , COUNT(*) AS UPLOAD_CNT
  169. , SUM(CASE WHEN LENGTH(CD_SALEBILL) > 0 THEN 1 ELSE 0 END) AS SUCC_CNT
  170. FROM TB_HANSAE_SALES
  171. WHERE DT_SALE = '20210901'
  172. GROUP BY ERP_GB
  173. ;
  174. -- 위의 UPLOAD_CNT와 SUCC_CNT의 값이 다를 경우 재전송을 위한 데이터 조회
  175. SELECT ERP_GB
  176. , DT_SALE
  177. , TP_SALE
  178. , CD_STYLE
  179. , CD_COLOR
  180. , CD_SIZE
  181. , BRAND_CD
  182. , QT_SALE
  183. , AM_ACSALE
  184. , DS_REMARK
  185. , CD_SALEBILL /*성공시 값 있음. 판매전표번호*/
  186. , DS_ERROR /*실패오류*/
  187. FROM TB_HANSAE_SALES
  188. WHERE DT_SALE = '20210901'
  189. AND DS_ERROR IS NOT NULL /*오류발생건*/
  190. ;