feat(cupang): 쿠팡 로켓 매출 화면 + cupang_sales 테이블
- scripts/sql/cupang_db_006_sales.sql: cupang_sales(발주 라인) / cupang_sales_weekly(광고비·할인·장려금) 생성 - scripts/sql/cupang_sales_seed.sql: 구글 시트 초기 데이터 2,218행 + 주차비용 100건 (공급가 합계가 시트 2024/2025 총계와 일치) - /cupang/sales: 기간·센터·발주유형·검색 조회, 합계 KPI(공급가/원가/물류비/마진/순마진), 행 추가·수정·삭제, 시트(xlsx·csv) 업로드 일괄 등록, 조회 조건 그대로 엑셀 다운로드 - 달력 상단에 "쿠팡 로켓 매출" 버튼 추가 - sales_import.py: 병합 머리글 3행 건너뛰고 라인/주차 소계 분리, 월계·총계는 저장하지 않음 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1497,3 +1497,54 @@ a.cpg-boxno-dl:hover { background: #1a5c38; border-color: #1a5c38; font-weight:
|
||||
}
|
||||
.cpg-calc3 > .cpg-dist-card::-webkit-scrollbar-thumb:hover { background: var(--color-midtone-gray); }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════════════════════════
|
||||
쿠팡 로켓 매출 (/cupang/sales)
|
||||
══════════════════════════════════════════════════════════════ */
|
||||
.cpg-sales-link { border-color: #217346; color: #217346; font-weight: 600; }
|
||||
.cpg-sales-link:hover { background: #217346; color: #fff; }
|
||||
|
||||
.cpg-sales { gap: 12px; }
|
||||
.cpg-sales-pick { cursor: pointer; }
|
||||
.cpg-sales .cpg-po-file { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
|
||||
|
||||
.cpg-sales-filter {
|
||||
display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px;
|
||||
padding: 12px 14px;
|
||||
}
|
||||
.cpg-sales-filter .erp-field { margin: 0; }
|
||||
.cpg-sales-filter .erp-field > span { font-size: 11px; color: var(--color-midtone-gray); }
|
||||
.cpg-sales-q { flex: 1 1 240px; min-width: 0; }
|
||||
.cpg-sales-q .erp-input { width: 100%; box-sizing: border-box; }
|
||||
.cpg-sales-filter-act { display: flex; gap: 6px; margin-left: auto; }
|
||||
|
||||
.cpg-sales-kpis { flex-shrink: 0; }
|
||||
.cpg-sales-card { padding: 0; flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
|
||||
.cpg-sales-wrap { overflow: auto; max-height: calc(100vh - 330px); }
|
||||
|
||||
.cpg-sales-table { table-layout: auto; width: 100%; white-space: nowrap; }
|
||||
.cpg-sales-table th, .cpg-sales-table td {
|
||||
padding: 4px 8px; font-size: 12px;
|
||||
border-bottom: 1px solid var(--color-cloud-gray);
|
||||
}
|
||||
.cpg-sales-table thead th {
|
||||
position: sticky; top: 0; z-index: 2;
|
||||
background: var(--color-ghost-gray);
|
||||
font-weight: 700; text-align: center; white-space: nowrap;
|
||||
}
|
||||
.cpg-sales-table tbody tr:hover td { background: var(--color-ghost-gray); }
|
||||
.cpg-sales-mono { font-family: var(--font-geist-mono); color: var(--color-midtone-gray); }
|
||||
.cpg-sales-week { max-width: 150px; overflow: hidden; text-overflow: ellipsis; }
|
||||
.cpg-sales-act { text-align: center; white-space: nowrap; }
|
||||
|
||||
.cpg-sales-box { width: min(680px, calc(100vw - 32px)); }
|
||||
.cpg-sales-form {
|
||||
display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px;
|
||||
max-height: 60vh; overflow-y: auto; padding-right: 4px;
|
||||
}
|
||||
.cpg-sales-form .erp-field { margin: 0; }
|
||||
.cpg-sales-form .erp-field > span { font-size: 11px; color: var(--color-midtone-gray); }
|
||||
.cpg-sales-form .erp-input { width: 100%; box-sizing: border-box; }
|
||||
@media (max-width: 640px) {
|
||||
.cpg-sales-form { grid-template-columns: minmax(0, 1fr); }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user