📦 남해운송 × 카페24 주문 자동화 대시보드

패킹베어 · 소싱(1688) → 남해운송 구매대행 → 3PL(솔길로지스) → 카페24 배송까지 전 사이클 관리

매핑 테이블 (1688 ↔ 카페24)

1688 상품번호1688 색상카페24 상품명카페24 옵션단가
1017247925598灰色쿠션핸들 보스턴 크로스백어반 그레이¥32.50
1017247925598黑色쿠션핸들 보스턴 크로스백시크 블랙¥32.50
1017247925598琥珀色❌ 미등록¥32.50
1045259543402灰色컴포트 트래블 나일론 크로스백그레이¥29.00
1045259543402黑色❌ 미등록(아이보리/그레이만 존재)¥29.00
975447638184黑色데일리 라이트 모던 슬링백블랙¥27.99

⚠️ 매핑에 없는 색상은 입고돼도 카페24에서 판매 불가합니다. 1688 주문 전 반드시 대조하세요.

① 발주량 계산기 (카페24 미발송 → 1688 발주 수량)

공식: 최소발주량 = 현재 미발송수량 + (일평균판매 × 리드타임일수) ・ 권장발주량 = 최소발주량 + 안전재고

값을 입력하고 계산하기를 눌러주세요.

📦 LCL 해운 부피/운임 계산기

공식: 개당부피(cbm) = 가로×세로×높이 ÷ 1,000,000 ・ 청구부피 = MAX(0.5, 총부피) ・ 운임 = 청구부피 × 90,000(청도 LCL 로얄등급 기준)

값을 입력하고 계산하기를 눌러주세요.

② 예상 납품일 계산기 (남해운송 → 카페24 발송예정일)

공식: 양주입고예정 = 부가작업 완료일 + 5일 ・ 고객발송가능일 = 양주입고 + 1~2일 ・ 카페24 발송예정일 = 고객발송가능일 + 안전마진(3~7일)

날짜를 입력하고 계산하기를 눌러주세요.

진행상태 단계 (남해운송)

신청대기 → 견적요청 → 결제대기 → 결제완료 → 주문완료 → 배송전환완료 → 접수신청 → 입고처리중입고완료 → 포장준비중 → 출고대기 → 출고완료(양주 입고)

실측 리드타임 사례 (26H000972)

구간날짜소요
신청2026-08-17 09:16
미싱작업 진행 확인2026-08-236일
출고완료 → 양주 입고2026-08-285일
신청 → 양주 입고 전체11일

④ 원가·마진 계산기

개당 착지원가 = 상품원가 + 국제운임 + 관세 + 검수·핸들링 + 3PL작업비 + 국내택배비 ・ 마진 = 판매가 − 착지원가 − 결제수수료(3.5%)

값을 입력하고 계산하기를 눌러주세요.

전체 사이클 (9단계)

  1. [1] 카페24 배송준비중 관리
    기간 확대 + 총건수 확인 + rows=100 → 품목별 미발송 수량 집계
  2. [2] 발주량 산출
    미발송수량 + (일평균판매 × 리드타임 11일) + 안전재고 → 「발주량 계산」 탭 사용
  3. [3] 1688 소싱
    상품번호 / 단가 티어 / 실측 치수 → cbm → LCL 0.5cbm 충족 여부 → 「LCL 부피」 탭 사용
  4. [4] 남해운송 발주 (Buy_W1.asp)
    청도 · 사업자항공/LCL · 구매대행 / 수취인=패킹베어 / 배송지=솔길로지스 / 부가서비스 17·78·18·20·21·22·13
  5. [5] 진행 추적 (Order_V.asp)
    입고완료 → 미싱 등 부가작업 → 출고완료 → 양주 입고
  6. [6] 예상납품일 산출
    부가작업 완료 +5일=양주입고 / +1~2일=고객발송가능 / +안전마진=카페24 발송예정일 → 「예상납품일」 탭 사용
  7. [7] 카페24 발송예정일 등록
    배송준비중 관리에서 대상 체크 → 발송예정일 등록 → 달력 클릭 → 저장 → 주문상세에서 검증
  8. [8] 3PL 입고 내역서 작성
    시트명=양주창고 입고일 / 상품명은 카페24 옵션명 기준 / 옵션별 행 분리 / 썸네일 필수(삽입>그림>이 디바이스)
  9. [9] 발주 vs 실주문 대조
    과부족 계산 + 옵션 매핑 존재 여부 확인 → 다음 사이클 [2]로 피드백

✅ 현재 미해결 항목 체크리스트

체크 상태는 이 브라우저에 자동 저장됩니다.

🧩 자주 쓰는 JS 스니펫 (브라우저 콘솔에 붙여넣기)

⚠️ 이 스니펫들은 카페24/남해운송 관리자 화면의 개발자도구(콘솔)에서 실행하는 용도입니다. 로그인·약관동의·결제 등은 절대 자동화하지 말고 직접 진행하세요.

기간 확대 후 재검색 (카페24 배송준비중)
(()=>{
  const s = document.querySelector('[name=start_date]');
  s.value = '2026-08-01';
  s.dispatchEvent(new Event('change', {bubbles:true}));
  const b = [...document.querySelectorAll('a,button,input')]
    .find(e => ((e.innerText||e.value||'').trim() === '검색'));
  b.click();
  return 'searching from ' + s.value;
})()
페이지 크기 100으로 확대 (페이지네이션 함정 방지)
(()=>{
  const s = [...document.querySelectorAll('select')]
    .find(x => [...x.options].some(o => /100/.test(o.text) && /개/.test(o.text)));
  s.value = [...s.options].find(o => /100/.test(o.text)).value;
  s.dispatchEvent(new Event('change', {bubbles:true}));
  return 'rows -> ' + s.value;
})()
품목별 수량 집계
(()=>{
  const hdr = [...document.querySelectorAll('table tr')]
    .find(r => /수량/.test(r.innerText) && r.querySelectorAll('th,td').length > 6);
  const cells = hdr ? [...hdr.querySelectorAll('th,td')]
    .map(c => c.innerText.replace(/\s+/g,' ').trim()) : [];
  const qi = cells.findIndex(c => c === '수량');
  const rows = []; let tot = 0;
  document.querySelectorAll('table tr').forEach(tr => {
    const tds = [...tr.querySelectorAll('td')]
      .map(c => c.innerText.replace(/\s+/g,' ').trim());
    const t = tds.join(' ');
    const ord = (t.match(/\d{8}-\d{7}/)||[])[0];
    if (!ord || ord === '02020101-1234567') return;
    const p = /데일리/.test(t) ? '슬링백'
            : /컴포트/.test(t) ? '컴포트'
            : /쿠션핸들/.test(t) ? '보스턴' : '?';
    const n = parseInt(tds[qi]) || 1;
    tot += n;
    rows.push(ord + ' | ' + p + ' | ' + n + '개');
  });
  return 'rows=' + rows.length + ' 총수량=' + tot + '\n' + rows.join('\n');
})()
발송예정일 등록 — 1) 다음 달 이동
(()=>{
  const m = document.querySelector('#layerExpectShip');
  const nx = [...m.querySelectorAll('button,a')]
    .find(e => /duet-date__next/.test(e.className||''));
  nx.click();
  return 'next month';
})()
발송예정일 등록 — 2) 날짜 클릭 (YYYY-MM-DD 수정 필요)
(()=>{
  const m = document.querySelector('#layerExpectShip');
  const d = [...m.querySelectorAll('button')]
    .filter(b => /duet-date__day/.test(b.className||'')
              && !/is-outside|is-disabled/.test(b.className||''))
    .find(b => /2026-09-12/.test(b.innerText||''));
  d.click();
  const vis = document.getElementById('shipping_expected_date_input');
  const chk = [...document.querySelectorAll('input[name="chk_id[]"]')]
    .filter(c => c.checked).length;
  return 'date=' + vis.value + ' checked=' + chk;
})()
발송예정일 등록 — 3) 저장
(()=>{
  const m = document.querySelector('#layerExpectShip');
  const s = [...m.querySelectorAll('a,button')]
    .find(e => e.innerText.trim() === '저장' && /btnCtrl/.test(e.className||''));
  s.click();
  return 'SAVED';
})()
등록 검증 (order_detail.php에서 실행)
(()=>{
  const v = [...new Set([...document.querySelectorAll('input')]
    .map(e => e.value||'').filter(x => /^2026-09-\d\d$/.test(x)))];
  const b = document.body.innerText.replace(/\s+/g,' ');
  const i = b.indexOf('발송예정일');
  return '9월값=' + v.join(',') + '\n' + (i>=0 ? b.slice(i, i+90) : '없음');
})()
대상 상품 체크박스 선택 (품목 키워드 수정 필요)
(()=>{
  let n = 0; const p = [];
  document.querySelectorAll('table tr').forEach(tr => {
    const t = tr.innerText.replace(/\s+/g,' ');
    const ord = (t.match(/\d{8}-\d{7}/)||[])[0];
    if (!ord || ord === '02020101-1234567') return;
    const cb = tr.querySelector('input[name="chk_id[]"]');
    if (!cb) return;
    if (/데일리/.test(t)) {
      if (!cb.checked) { cb.click(); n++; }
      p.push(ord);
    } else if (cb.checked) {
      cb.click();
    }
  });
  return 'selected=' + n + '\n' + p.join(', ');
})()
부가서비스 일괄 체크 (남해운송 발주서)
(()=>{
  const want = ['78','18','20','21','22'];
  const r = [];
  document.querySelectorAll('input[type=checkbox]').forEach(e => {
    if (want.includes(e.value) && !e.checked) {
      e.click();
      r.push(e.value + ':' + (e.checked ? 'ON' : 'FAIL'));
    }
  });
  return r.join(', ') || 'none';
})()