f261919cc2
박스명 통일 스크립트가 호수(2호/3호/6호)를 memo 뒤에 ' · 2호' 로 옮겨 적었는데, 화면에서 불필요해 잘라낸다. '피킹비 750원' 까지만 남긴다. - scripts/sql/cupang_box_rules_strip_memo_suffix.sql 추가 (미리보기 SELECT → BEGIN/UPDATE/COMMIT → 잔여 건수 확인) - 시드 재실행 시 다시 붙지 않도록 seed / seed2 의 memo 문자열도 정리
84 lines
3.7 KiB
PL/PgSQL
84 lines
3.7 KiB
PL/PgSQL
-- ════════════════════════════════════════════════════════════
|
|
-- 쿠팡 밀크런 — 박스 입수량 규칙 2차 입력 (cupang_db)
|
|
-- 미라클통/미라클백/빠져락/멀티/점보 19건
|
|
--
|
|
-- 실행:
|
|
-- docker exec -i postgres-db psql -U postgres -d cupang_db \
|
|
-- < /opt/www/main/scripts/sql/cupang_box_rules_seed2.sql
|
|
--
|
|
-- 제품코드는 cupang_products 카탈로그에서 제품명으로 매칭한다.
|
|
-- (공백 무시 + 대소문자 무시 비교)
|
|
-- 카탈로그에 없는 제품은 입력되지 않고 마지막 SELECT 에 출력된다.
|
|
-- → 제품명 설정 화면의 "수기 추가"로 제품코드를 등록한 뒤 이 파일을 다시 실행.
|
|
-- 같은 product_code 는 덮어쓴다(ON CONFLICT DO UPDATE).
|
|
-- 피킹비는 전용 컬럼이 없어 memo 에 기록한다.
|
|
-- ════════════════════════════════════════════════════════════
|
|
BEGIN;
|
|
|
|
-- box_no: 원자료의 박스 호수. 참고용 컬럼이며 memo 에는 넣지 않는다(피킹비만 기록).
|
|
CREATE TEMP TABLE _seed2 (
|
|
product_name TEXT,
|
|
picking_fee INTEGER,
|
|
units_per_box INTEGER,
|
|
box_no TEXT
|
|
) ON COMMIT DROP;
|
|
|
|
INSERT INTO _seed2 (product_name, picking_fee, units_per_box, box_no) VALUES
|
|
('미라클통 550x4', 700, 40, '2호'),
|
|
('미라클통 550x6', 700, 30, '2호'),
|
|
('미라클통 750x5', 700, 30, '2호'),
|
|
('미라클통 950x4', 700, 24, '2호'),
|
|
('미라클통 950x6', 700, 18, '2호'),
|
|
('미라클통 1800x4', 700, 16, '2호'),
|
|
('미라클통 1800x6', 700, 14, '2호'),
|
|
('미라클통 2200x4', 700, 14, '2호'),
|
|
('미라클통 2200x6', 700, 10, '2호'),
|
|
('미라클통 3200x4', 700, 10, '2호'),
|
|
('빠져락 x1', 500, 35, '2호'),
|
|
('빠져락 x3', 580, 8, '2호'),
|
|
('빠져락 x5', 780, 8, '2호'),
|
|
('미라클백 2.5L', 500, 30, '5호'),
|
|
('미라클백 6.0L', 500, 23, '6호'),
|
|
('멀티 5,000ml x2', 700, 8, '2호'),
|
|
('멀티 5,000ml x4', 680, 2, '3호'),
|
|
('점보 7,000ml x2', 700, 6, '2호'),
|
|
('점보 황토 7,000ml x2', 700, 6, '2호');
|
|
|
|
INSERT INTO cupang_box_rules
|
|
(product_code, product_name_snapshot, box_name, units_per_box, memo, active)
|
|
SELECT p.product_code,
|
|
p.product_name,
|
|
'쿠팡박스',
|
|
s.units_per_box,
|
|
'피킹비 ' || s.picking_fee || '원',
|
|
TRUE
|
|
FROM _seed2 s
|
|
JOIN cupang_products p
|
|
ON lower(regexp_replace(p.product_name, '\s', '', 'g'))
|
|
= lower(regexp_replace(s.product_name, '\s', '', 'g'))
|
|
ON CONFLICT (product_code) DO UPDATE
|
|
SET product_name_snapshot = EXCLUDED.product_name_snapshot,
|
|
box_name = EXCLUDED.box_name,
|
|
units_per_box = EXCLUDED.units_per_box,
|
|
memo = EXCLUDED.memo,
|
|
active = TRUE;
|
|
|
|
-- 카탈로그에 없어 입력되지 않은 제품 (수기 추가 후 재실행 대상)
|
|
SELECT s.product_name AS "카탈로그_미등록_제품명",
|
|
s.units_per_box AS "입수량",
|
|
s.box_no AS "박스호수"
|
|
FROM _seed2 s
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM cupang_products p
|
|
WHERE lower(regexp_replace(p.product_name, '\s', '', 'g'))
|
|
= lower(regexp_replace(s.product_name, '\s', '', 'g'))
|
|
)
|
|
ORDER BY s.product_name;
|
|
|
|
COMMIT;
|
|
|
|
-- 결과 확인
|
|
SELECT product_code, product_name_snapshot, box_name, units_per_box, memo
|
|
FROM cupang_box_rules
|
|
ORDER BY product_code;
|