New Function #339
closed[DATA] KRS 정보 수신 - 스토리 오더 편의점 상품
Description
(편의점 상품) 가격 할인의 경우
*1+1의 경우 추후 따로 반영이 필요하고, 2+1은 기존에도 안 된다고 했기 때문에 해당 논의는 배제하고, 일단 행사 테이블의 내용 중 ‘가격 할인‘에 대한 내용만 반영
행사 정보 : VI_APP_EVENT
- 행사 종류(EVENT_KIND)가 가격 할인(001)일 때, 해당 할인 정보를 편의점 상품의 ‘할인 후 가격’에 반영
- 행사시작일자/행사시작시간 ~ 행사종료일자/행사종료시간 정보의 기간대로 반영
행사가능매장 : VI_APP_EVENT_STORE
- 행사 코드와 매장 코드를 기준으로 행사가 적용되는 매장에 적용
행사별 상품정보 : VI_APP_EVENT_ITEM
- 행사코드와 행사상품그룹, 상품코드, 할인 판매가를 기준으로 ‘할인 후 가격‘ 판단
VI_APP_TABLE |
VI_APP_EVENT_STORE |
VI_APP_EVENT_ITEM |
|||
EVENT_CD |
EVENT_KIND |
EVENT_BGNDE&TM ~ EVENT_EDDE&TM |
DEPT_CD |
EVENT_ITEM_GROUP / ITEM_CD |
DC_SALE_AMT |
행사 코드 |
행사 종류 *가격 할인 |
yyyy-mm-dd hh:mm~yyyy-mm-dd hh:mm |
매장 코드 |
상품 코드 |
할인 판매가 |
[가격] 현재 갖고 오는 정보 그대로 유지
[할인 후 가격]
1) 행사 테이블(3개) 통해 도출한 할인 판매가 적용
2) VI_APP_SALEITEM의 DC_SALE_YN이 Y인 경우, DC_SALE_PRICE 적용
*행사 테이블을 통해 도출될 경우 해당 가격(행사 가격)을 우선해서 적용
**행사상품일 경우 DC_SALE_YN은 N으로 세팅
우리 구조상 안 되는 부분이 있다면 말씀 부탁드립니다 !
Files
Updated by Deca Park 10 months ago
- Assignee changed from Deca Park to Toby Pham
[KRS event data Scheduler]
1.[KRS Scheduler] schedulerKRSGoods (편의점), [ADMIN] 스토리 오더 관리 > 상품 관리 (/storeProduct) > 편의점 KRS 수동 업데이트 (KRS manual update) button
- add event data create logic
2.logic
0) DB (st_krs_event)
a) get KRS data
SELECT EV.EVENT_CD, EV.EVENT_NM, EV.EVENT_KIND, EV.EVENT_BGNDE, EV.EVENT_EDDE, EV.DEL_YN
FROM VI_APP_EVENT EV
WHERE EV.EVENT_KIND IN ( '001', '003') // 001: event discount, 003: 1+1 event
AND EV.TRANS_YN = 'N'
AND EV.EVENT_BGNDE <= TO_DATE('20231201','YYYYMMDD') // '20231201' -> today
AND EV.EVENT_EDDE >= TO_DATE('20231201','YYYYMMDD') // '20231201' -> today
b) process data
b-1) if EV.DEL_YN = 'Y'
- DELETE st_krs_event WHERE event_cd = {the EVENT_CD}
b-2) else
b-2-1) INSERT/UPDATE st_krs_event
b-2-2) UPDATE VI_APP_EVENT
SET TRANS_YN = 'Y'
WHERE EVENT_CD = {the EVENT_CD}
1) DB (st_krs_event_store)
a) get KRS data
SELECT EV.EVENT_CD
,ES.DEPT_CD, ES.DEL_YN
FROM VI_APP_EVENT EV
LEFT JOIN VI_APP_EVENT_STORE ES ON ES.EVENT_CD = EV.EVENT_CD
WHERE EV.EVENT_KIND IN ( '001', '003') // 001: event discount, 003: 1+1 event
AND ES.TRANS_YN = 'N'
AND EV.EVENT_BGNDE <= TO_DATE('20231201','YYYYMMDD') // '20231201' -> today
AND EV.EVENT_EDDE >= TO_DATE('20231201','YYYYMMDD') // '20231201' -> today
b) process data
b-1) if ES.DEL_YN = 'Y'
- DELETE st_krs_event_store WHERE dept_cd= {the DEPT_CD}
b-2) else
b-2-1) INSERT/UPDATE st_krs_event_store
b-2-2) UPDATE VI_APP_EVENT_STORE
SET TRANS_YN = 'Y'
WHERE EVENT_CD = {the EVENT_CD}
2) DB (st_krs_event_store_item)
a) get KRS data
SELECT EV.EVENT_CD
,ES.DEPT_CD
,EI.ITEM_CD, EI.DC_SALE_AMT, EI.DEL_YN
FROM VI_APP_EVENT EV
LEFT JOIN VI_APP_EVENT_STORE ES ON ES.EVENT_CD = EV.EVENT_CD
LEFT JOIN VI_APP_EVENT_ITEM EI ON ES.EVENT_CD = EI.EVENT_CD
WHERE EV.EVENT_KIND IN ( '001', '003') // 001: event discount, 003: 1+1 event
AND EV.TRANS_YN = 'N'
AND EV.EVENT_BGNDE <= TO_DATE('20231201','YYYYMMDD')
AND EV.EVENT_EDDE >= TO_DATE('20231201','YYYYMMDD')
b) process data
b-1) if EI.DEL_YN = 'Y'
- DELETE st_krs_event_store_item WHERE event_cd={the EVENT_CD} AND item_cd= {the ITEM_CD}
b-2) else
b-2-1) INSERT/UPDATE st_krs_event_store_item
product_code : "{dept_cd}-{item_cd}"
b-2-2) UPDATE VI_APP_EVENT_STORE_ITEM
SET TRANS_YN = 'Y'
WHERE EVENT_CD = {the EVENT_CD} AND ITEM_CD = {the ITEM_CD}
Updated by Jisoo Choi 10 months ago
[가격] 현재 갖고 오는 정보 그대로 유지
[할인 후 가격]
1) 행사 테이블(3개) 통해 도출한 할인 판매가 적용
2) VI_APP_GOODS의 DC_SALE_YN이 Y인 경우, DC_SALE_PRICE 적용
*행사 테이블을 통해 도출될 경우 해당 가격(행사 가격)을 우선해서 적용
**행사상품일 경우 DC_SALE_YN은 N으로 세팅
Updated by Deca Park 10 months ago
[KRS product scheduler]
1.schedulerKRSGoods (편의점)
1) logic change
a) DB (st_product)
a-1) if VI_APP_GOODS_STORY.DC_SALE_YN = 'Y' AND DC_SALE_PRICE IS NOT NULL AND (SALE_PRICE - DC_SALE_PRICE) > 0
- price : SALE_PRICE
- discount_type: 'amount'
- discount_amount: (SALE_PRICE - DC_SALE_PRICE)
- sale_price : DC_SALE_PRICE
a-2) else (same as current)
- discount_type / discount_amount : NULL
- price / sale_price : SALE_PRICE
Updated by Jisoo Choi 10 months ago
- File 편의점상품_행사가격.pptx 편의점상품_행사가격.pptx added
편의점 상품일 때
[관리자 페이지]
1. 할인 후 가격 : 상품 테이블을 통해 전달된 값 표시
*할인 없을 때에는 그냥 가격과 동일하게 표시(앱 단에서 0% 할인은 할인으로 표시 안 되도록 처리되어 있는 것으로 알고 있습니다.)
2. 행사 가격 : 행사 테이블을 통해 계산된 값 표시
3. 행사 가격 아래에 안내 문구(2개) 추가 :
*편의점 상품의 할인 후 가격은 상품 정보, 행사 가격은 행사 정보를 통해 계산됩니다.
**행사 가격이 우선 적용됩니다.
로 부탁드립니다.
Updated by Deca Park 10 months ago
- File 편의점상품_행사가격_en.pptx 편의점상품_행사가격_en.pptx added
[ADMIN] 스토리 오더 관리 > 상품 관리 (/storeProduct) > 상세 (Modify)
- spec: 편의점상품_행사가격_en.pptx
Updated by Deca Park 10 months ago
1.MallController > [API] GET /api/mall_product_list -> /api/store_product_list
1) response
a) event_discount_yn (add before discount_type)
a-1)
if the product has event price (st_krs_event_store_item.dc_sale_amt) and > 0, set 'Y'
else, set 'N'
a-2) check logic : same with note#5
st_krs_event
- condition: event_kind = '001' AND event_bgnde <= today <= event_edde
st_krs_event_store_item
- condition: product_code = {the product_code}
b) discount_type / discount_amount / discount_rate / sale_price
b-1) if event_discount_yn = 'Y'
- discount_type : 'amount'
- discount_amount : price - st_krs_event_store_item.dc_sale_amt
- discount_rate : NULL
- sale_price : set by st_krs_event_store_item.dc_sale_amt
b-3) else
- same as current
2.ProductController > [API] GET /api/cart_product_list, /api/interest_product_list, /api/product_info
1) response
a) event_discount_yn (add before discount_type)
b) discount_type / discount_amount / discount_rate / sale_price
- same with No 1-1)