다음 "배경 지식"을 참고해, NCSS CP 정산시스템에서 "NCSS내 세금계산서 조회 및 전표발행 기능 정의" 내역 기반 화면들을 제안해줘. 이때 "개선 포인트"에 언급한 내용도 반영될 수 있게 해줘 #배경 지식 SK브로드밴드는 CP(Contents Provider)에서 영화, 드라마등의 콘텐츠를 수급해 IPTV내 VoD 서비스를 제공중이고, 이 서비스에서 매월 발생한 매출 대상 각 CP별 계약조건으로 정산하는 NCSS라는 시스템이 있다. NCSS에는 CP와 계약을 맺은 정산담당자들이 계약조건을 입력하고, 그 계약 조건에 따라 정산결과가 산출된다. PoC라는 용어는 VoD가 편성되어 매출이 발생하는 매체 단위이며, B tv, IP-CATV, T Play 세가지가 존재한다. NCSS상에 계약은 동일한 CP이더라도 각 정산담당자마다 다른 조건에 따라 다수의 계약을 입력하고 이에 따라 각 담당자의 계약별 정산결과가 산출된다. 즉, 정산결과는 각 정산담당자의 계약별로 PoC단위로 그룹핑 되어 산출된다. CP가 발행하는 세금계산서는 사업자명, 사업자번호, 공급가액, 세액, 발행일 정보만 있고, 대상 PoC정보나 SK브로드밴드 정산담당자 정보는 제공되지 않는다. 세금계산서는 서비스가 제공되는 매체 단위인 PoC 별로 발행된다. #NCSS내 세금계산서 조회 및 전표발행 기능 정의 SK브로드밴드 SAP에 등록된 위 "배경 지식"에 기술한 조건의 세금계산서를 조회해 정산담당자는 본인이 계약을 가지고 있는 모든 CP로부터 발행된 세금계산서 목록만 필터링해 조회할 수 있어야 한다. 조회된 세금계산서 목록 화면에서 세금계산서 중 하나를 선택해 세부 팝업(=임시전표 발행 화면) 으로 들어가면 자신이 담당하는 계약별로 PoC단위 그룹핑되어 산출된 복수개의 정산결과 금액들과 대조, 선택해 세금계산서-정산결과 매칭함으로 SAP에 임시전표를 발행할 수 있어야 한다. 세금계산서는 사업자명, 사업자번호, 공급가액, 세액, 발행일 정보만 있어, 세금계산서 목록 화면 제공 정보 세금계산서 발행일자, 세금계산서 번호, 파트너사명, 매입금액(세금계산서 상의 세액이 포함되지 않은 공급가액), 전표발행상태, 매칭PoC 이들 제공 항목 별로 필터링해서 조회할 수 있도록 제공 전표발행상태 : 이미 세금계산서-정산결과를 매칭해 임시전표 발행된 항목은 "발행완료"로 상태 표시되고, 아직 매칭되지 않은 건 "미발행"으로 구분해 상태 표기 매칭PoC : 세금계산서-정산결과를 매칭해 임시전표 발행시 매칭된 정산결과의 PoC 표기 임시전표 발행 화면 제공 정보 팝업 화면으로 제공 팝업화면 좌측에는 "세금게산서 정보" 제목 이하로 세금계산서 발행일자, 세금계산서 번호, 파트너사명, 매입금액, 전표발행상태, 매칭PoC 표시하고 팝업화면 우측에는 "정산 정보 매핑" 제목 이하로 해당 CP의 PoC별 정산금액 목록 제공, 이 목록중에 세금계산서상 매입금액과 일치하는 정산금액이 있으면 자동으로 체크박스에 매칭 표시 CP의 PoC별 정산금액 목록 우측의 "상세내역" 버튼을 클릭하면, 해당 목록의 정산금액이 어떤 계약과 PoC들에서 각각 얼마의 정산금액이 발생한건지 세부 내역 확인 화면 제공 전표밣행상태가 "미발행"상태일때문 팝업 화면 우측 하단에 "임시전표 발행" 버튼이 활성화됨 #개선 포인트 세금계산서는 사업자명, 번호, 금액 정보만 있지 대상 PoC와 SKB 정산담당자 정보는 없으므로, PoC(B tv, IP-CATV, T Play) 별 세금계산서가 어떤 것인지 기본적으로 매핑이 불가하나 일일이 정산담당자가 세금계산서-정산결과의 금액을 대조하여 전표를 발행하면 사용성이 떨어지므로, 기본적으로 담당자의 해당 CP 대상 계약(SVOD, TVOD)을 PoC 별로 합산한 정산결과 금액이 CP에서 계약에 대한 PoC별 발행 내역과 일치해야 하므로 NCSS에서 판단시 정산담당자가 자신의 세금계산서-전표 발의 대상 CP를 조회하는 세금계산서 조회 화면상에서 발행된 세금계산서상 금액과 해당 CP의 정산결과 금액 중 일치 금액이 있을시 이를 자동 매칭하여 세금계산서 목록 화면상에 해당 정산대상금액도 같이 노출하고 이 리스트의 배경을 하이라이트되게 다른색으로 표기하여, 맨앞의 체크박스 멀티로 이들 대상 선택해 화면 하단의 "임시전표 발행" 버튼을 누르면 선택된 대상은 일괄로 SAP 임시 전표가 발행되도록 사용성 개선 - Initial Deployment
Browse files- README.md +7 -5
- index.html +541 -19
- prompts.txt +1 -0
README.md
CHANGED
|
@@ -1,10 +1,12 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
---
|
| 2 |
+
title: ncss2
|
| 3 |
+
emoji: 🐳
|
| 4 |
+
colorFrom: yellow
|
| 5 |
+
colorTo: pink
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite
|
| 10 |
---
|
| 11 |
|
| 12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
index.html
CHANGED
|
@@ -1,19 +1,541 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="ko">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>NCSS CP 정산 시스템 - 세금계산서 관리</title>
|
| 7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 8 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
| 9 |
+
<script>
|
| 10 |
+
tailwind.config = {
|
| 11 |
+
theme: {
|
| 12 |
+
extend: {
|
| 13 |
+
colors: {
|
| 14 |
+
primary: '#3b82f6',
|
| 15 |
+
secondary: '#10b981',
|
| 16 |
+
highlight: '#fef3c7',
|
| 17 |
+
dark: '#1f2937',
|
| 18 |
+
}
|
| 19 |
+
}
|
| 20 |
+
}
|
| 21 |
+
}
|
| 22 |
+
</script>
|
| 23 |
+
<style>
|
| 24 |
+
.highlight-row {
|
| 25 |
+
background-color: #fef3c7;
|
| 26 |
+
}
|
| 27 |
+
.receipt-matched {
|
| 28 |
+
animation: pulse 1.5s infinite;
|
| 29 |
+
}
|
| 30 |
+
@keyframes pulse {
|
| 31 |
+
0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.3); }
|
| 32 |
+
70% { box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); }
|
| 33 |
+
100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
|
| 34 |
+
}
|
| 35 |
+
.receipt-card {
|
| 36 |
+
transition: all 0.3s ease;
|
| 37 |
+
}
|
| 38 |
+
.receipt-card:hover {
|
| 39 |
+
transform: translateY(-2px);
|
| 40 |
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
| 41 |
+
}
|
| 42 |
+
</style>
|
| 43 |
+
</head>
|
| 44 |
+
<body class="bg-gray-50 min-h-screen">
|
| 45 |
+
<div class="container mx-auto px-4 py-8">
|
| 46 |
+
<!-- 헤더 영역 -->
|
| 47 |
+
<header class="mb-8">
|
| 48 |
+
<div class="flex justify-between items-center">
|
| 49 |
+
<div>
|
| 50 |
+
<h1 class="text-3xl font-bold text-dark">NCSS CP 정산 시스템</h1>
|
| 51 |
+
<p class="text-gray-600">세금계산서 조회 및 전표발행</p>
|
| 52 |
+
</div>
|
| 53 |
+
<div class="flex items-center space-x-4">
|
| 54 |
+
<div class="relative">
|
| 55 |
+
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
| 56 |
+
<i class="fas fa-user text-gray-400"></i>
|
| 57 |
+
</div>
|
| 58 |
+
<span class="pl-8 text-gray-700">김정산 (정산담당자)</span>
|
| 59 |
+
</div>
|
| 60 |
+
<button class="bg-primary text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition">
|
| 61 |
+
<i class="fas fa-sign-out-alt mr-2"></i>로그아웃
|
| 62 |
+
</button>
|
| 63 |
+
</div>
|
| 64 |
+
</div>
|
| 65 |
+
</header>
|
| 66 |
+
|
| 67 |
+
<!-- 필터 영역 -->
|
| 68 |
+
<div class="bg-white rounded-lg shadow-md p-6 mb-6">
|
| 69 |
+
<h2 class="text-xl font-semibold mb-4 text-dark">세금계산서 조회 필터</h2>
|
| 70 |
+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
|
| 71 |
+
<div>
|
| 72 |
+
<label class="block text-sm font-medium text-gray-700 mb-1">기간</label>
|
| 73 |
+
<div class="flex space-x-2">
|
| 74 |
+
<input type="date" class="w-full border-gray-300 rounded-md p-2 border focus:ring-primary focus:border-primary">
|
| 75 |
+
<span class="flex items-center">~</span>
|
| 76 |
+
<input type="date" class="w-full border-gray-300 rounded-md p-2 border focus:ring-primary focus:border-primary">
|
| 77 |
+
</div>
|
| 78 |
+
</div>
|
| 79 |
+
<div>
|
| 80 |
+
<label class="block text-sm font-medium text-gray-700 mb-1">CP사명</label>
|
| 81 |
+
<select class="w-full border-gray-300 rounded-md p-2 border focus:ring-primary focus:border-primary">
|
| 82 |
+
<option value="">전체</option>
|
| 83 |
+
<option value="1">넷플릭스</option>
|
| 84 |
+
<option value="2">디즈니+</option>
|
| 85 |
+
<option value="3">웨이브</option>
|
| 86 |
+
<option value="4">티빙</option>
|
| 87 |
+
</select>
|
| 88 |
+
</div>
|
| 89 |
+
<div>
|
| 90 |
+
<label class="block text-sm font-medium text-gray-700 mb-1">PoC</label>
|
| 91 |
+
<select class="w-full border-gray-300 rounded-md p-2 border focus:ring-primary focus:border-primary">
|
| 92 |
+
<option value="">전체</option>
|
| 93 |
+
<option value="Btv">B tv</option>
|
| 94 |
+
<option value="IP-CATV">IP-CATV</option>
|
| 95 |
+
<option value="TPlay">T Play</option>
|
| 96 |
+
</select>
|
| 97 |
+
</div>
|
| 98 |
+
<div>
|
| 99 |
+
<label class="block text-sm font-medium text-gray-700 mb-1">전표 상태</label>
|
| 100 |
+
<select class="w-full border-gray-300 rounded-md p-2 border focus:ring-primary focus:border-primary">
|
| 101 |
+
<option value="">전체</option>
|
| 102 |
+
<option value="issued">발행완료</option>
|
| 103 |
+
<option value="not_issued">미발행</option>
|
| 104 |
+
</select>
|
| 105 |
+
</div>
|
| 106 |
+
</div>
|
| 107 |
+
<div class="mt-4 flex justify-end">
|
| 108 |
+
<button id="searchBtn" class="bg-primary text-white px-6 py-2 rounded-lg hover:bg-blue-700 transition">
|
| 109 |
+
<i class="fas fa-search mr-2"></i>조회
|
| 110 |
+
</button>
|
| 111 |
+
</div>
|
| 112 |
+
</div>
|
| 113 |
+
|
| 114 |
+
<!-- 알림 영역 -->
|
| 115 |
+
<div id="autoMatchAlert" class="bg-green-100 border-l-4 border-green-500 text-green-700 p-4 mb-6 rounded hidden">
|
| 116 |
+
<div class="flex items-center">
|
| 117 |
+
<i class="fas fa-info-circle text-green-500 mr-3 text-xl"></i>
|
| 118 |
+
<div>
|
| 119 |
+
<p class="font-semibold">자동 매칭 완료</p>
|
| 120 |
+
<p class="text-sm">세금계산서 금액과 정산결과 금액이 일치하는 <span id="matchedCount">3</span>건이 자동으로 매칭되었습니다.</p>
|
| 121 |
+
</div>
|
| 122 |
+
</div>
|
| 123 |
+
</div>
|
| 124 |
+
|
| 125 |
+
<!-- 결과 영역 -->
|
| 126 |
+
<div class="bg-white rounded-lg shadow-md overflow-hidden">
|
| 127 |
+
<div class="flex justify-between items-center p-4 border-b">
|
| 128 |
+
<h2 class="text-xl font-semibold text-dark">세금계산서 목록</h2>
|
| 129 |
+
<div class="text-sm text-gray-600">
|
| 130 |
+
<span class="font-medium">총 <span id="totalCount">12</span>건</span>
|
| 131 |
+
<span class="mx-2">|</span>
|
| 132 |
+
<span class="text-green-600">자동매칭 <span id="autoMatchedCount">3</span>건</span>
|
| 133 |
+
</div>
|
| 134 |
+
</div>
|
| 135 |
+
|
| 136 |
+
<!-- 테이블 영역 -->
|
| 137 |
+
<div class="overflow-x-auto">
|
| 138 |
+
<table class="min-w-full divide-y divide-gray-200">
|
| 139 |
+
<thead class="bg-gray-50">
|
| 140 |
+
<tr>
|
| 141 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
| 142 |
+
<input type="checkbox" class="rounded text-primary focus:ring-primary">
|
| 143 |
+
</th>
|
| 144 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">발행일자</th>
|
| 145 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">세금계산서 번호</th>
|
| 146 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">파트너사명</th>
|
| 147 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">매입금액</th>
|
| 148 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">전표상태</th>
|
| 149 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">매칭PoC</th>
|
| 150 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">매칭금액</th>
|
| 151 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">액션</th>
|
| 152 |
+
</tr>
|
| 153 |
+
</thead>
|
| 154 |
+
<tbody class="bg-white divide-y divide-gray-200">
|
| 155 |
+
<!-- 자동 매칭된 행 (하이라이트) -->
|
| 156 |
+
<tr class="highlight-row receipt-matched">
|
| 157 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 158 |
+
<input type="checkbox" checked class="rounded text-primary focus:ring-primary">
|
| 159 |
+
</td>
|
| 160 |
+
<td class="px-6 py-4 whitespace-nowrap">2023-10-10</td>
|
| 161 |
+
<td class="px-6 py-4 whitespace-nowrap">20231010-001</td>
|
| 162 |
+
<td class="px-6 py-4 whitespace-nowrap">넷플릭스</td>
|
| 163 |
+
<td class="px-6 py-4 whitespace-nowrap">12,500,000 원</td>
|
| 164 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 165 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">미발행</span>
|
| 166 |
+
</td>
|
| 167 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 168 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-blue-100 text-blue-800">B tv</span>
|
| 169 |
+
</td>
|
| 170 |
+
<td class="px-6 py-4 whitespace-nowrap text-green-600">
|
| 171 |
+
<i class="fas fa-check-circle text-green-500 mr-1"></i> 12,500,000 원
|
| 172 |
+
</td>
|
| 173 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 174 |
+
<button class="text-primary hover:text-blue-700" onclick="showReceiptDetail('20231010-001')">
|
| 175 |
+
<i class="fas fa-search-plus"></i> 상세보기
|
| 176 |
+
</button>
|
| 177 |
+
</td>
|
| 178 |
+
</tr>
|
| 179 |
+
<!-- 일반 행 -->
|
| 180 |
+
<tr>
|
| 181 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 182 |
+
<input type="checkbox" class="rounded text-primary focus:ring-primary">
|
| 183 |
+
</td>
|
| 184 |
+
<td class="px-6 py-4 whitespace-nowrap">2023-10-05</td>
|
| 185 |
+
<td class="px-6 py-4 whitespace-nowrap">20231005-001</td>
|
| 186 |
+
<td class="px-6 py-4 whitespace-nowrap">디즈니+</td>
|
| 187 |
+
<td class="px-6 py-4 whitespace-nowrap">8,750,000 원</td>
|
| 188 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 189 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">미발행</span>
|
| 190 |
+
</td>
|
| 191 |
+
<td class="px-6 py-4 whitespace-nowrap">-</td>
|
| 192 |
+
<td class="px-6 py-4 whitespace-nowrap">-</td>
|
| 193 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 194 |
+
<button class="text-primary hover:text-blue-700" onclick="showReceiptDetail('20231005-001')">
|
| 195 |
+
<i class="fas fa-search-plus"></i> 상세보기
|
| 196 |
+
</button>
|
| 197 |
+
</td>
|
| 198 |
+
</tr>
|
| 199 |
+
<!-- 발행완료 행 -->
|
| 200 |
+
<tr>
|
| 201 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 202 |
+
<input type="checkbox" disabled class="rounded text-gray-400 focus:ring-gray-400">
|
| 203 |
+
</td>
|
| 204 |
+
<td class="px-6 py-4 whitespace-nowrap">2023-09-28</td>
|
| 205 |
+
<td class="px-6 py-4 whitespace-nowrap">20230928-001</td>
|
| 206 |
+
<td class="px-6 py-4 whitespace-nowrap">웨이브</td>
|
| 207 |
+
<td class="px-6 py-4 whitespace-nowrap">15,200,000 원</td>
|
| 208 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 209 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800">발행완료</span>
|
| 210 |
+
</td>
|
| 211 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 212 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-purple-100 text-purple-800">IP-CATV</span>
|
| 213 |
+
</td>
|
| 214 |
+
<td class="px-6 py-4 whitespace-nowrap text-gray-500">
|
| 215 |
+
<i class="fas fa-check-circle text-gray-400 mr-1"></i> 15,200,000 원
|
| 216 |
+
</td>
|
| 217 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 218 |
+
<button class="text-gray-400 cursor-not-allowed">
|
| 219 |
+
<i class="fas fa-search-plus"></i> 상세보기
|
| 220 |
+
</button>
|
| 221 |
+
</td>
|
| 222 |
+
</tr>
|
| 223 |
+
<!-- 추가 행들... -->
|
| 224 |
+
</tbody>
|
| 225 |
+
</table>
|
| 226 |
+
</div>
|
| 227 |
+
|
| 228 |
+
<!-- 페이지네이션 및 액션 버튼 -->
|
| 229 |
+
<div class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6">
|
| 230 |
+
<div class="flex-1 flex justify-between sm:hidden">
|
| 231 |
+
<a href="#" class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
|
| 232 |
+
이전
|
| 233 |
+
</a>
|
| 234 |
+
<a href="#" class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
|
| 235 |
+
다음
|
| 236 |
+
</a>
|
| 237 |
+
</div>
|
| 238 |
+
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
|
| 239 |
+
<div>
|
| 240 |
+
<p class="text-sm text-gray-700">
|
| 241 |
+
총 <span class="font-medium">12</span>건 중 <span class="font-medium">1</span>-<span class="font-medium">10</span>건 표시
|
| 242 |
+
</p>
|
| 243 |
+
</div>
|
| 244 |
+
<div>
|
| 245 |
+
<nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
|
| 246 |
+
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
|
| 247 |
+
<span class="sr-only">이전</span>
|
| 248 |
+
<i class="fas fa-chevron-left"></i>
|
| 249 |
+
</a>
|
| 250 |
+
<!-- Current: "z-10 bg-primary-50 border-primary-500 text-primary-600", Default: "bg-white border-gray-300 text-gray-500 hover:bg-gray-50" -->
|
| 251 |
+
<a href="#" aria-current="page" class="z-10 bg-primary-50 border-primary-500 text-primary-600 relative inline-flex items-center px-4 py-2 border text-sm font-medium">
|
| 252 |
+
1
|
| 253 |
+
</a>
|
| 254 |
+
<a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium">
|
| 255 |
+
2
|
| 256 |
+
</a>
|
| 257 |
+
<a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium">
|
| 258 |
+
3
|
| 259 |
+
</a>
|
| 260 |
+
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
|
| 261 |
+
<span class="sr-only">다음</span>
|
| 262 |
+
<i class="fas fa-chevron-right"></i>
|
| 263 |
+
</a>
|
| 264 |
+
</nav>
|
| 265 |
+
</div>
|
| 266 |
+
</div>
|
| 267 |
+
<div class="ml-4">
|
| 268 |
+
<button id="issueBtn" class="bg-green-600 text-white px-6 py-2 rounded-lg hover:bg-green-700 transition disabled:bg-gray-300 disabled:cursor-not-allowed">
|
| 269 |
+
<i class="fas fa-file-invoice-dollar mr-2"></i>임시전표 발행
|
| 270 |
+
</button>
|
| 271 |
+
</div>
|
| 272 |
+
</div>
|
| 273 |
+
</div>
|
| 274 |
+
</div>
|
| 275 |
+
|
| 276 |
+
<!-- 세금계산서 상세 팝업 (임시전표 발행 화면) -->
|
| 277 |
+
<div id="receiptModal" class="fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full hidden">
|
| 278 |
+
<div class="relative top-20 mx-auto p-5 border w-4/5 shadow-lg rounded-md bg-white" style="max-width: 1200px;">
|
| 279 |
+
<div class="flex justify-between items-center border-b pb-3">
|
| 280 |
+
<h3 class="text-xl font-semibold text-dark">세금계산서 상세 및 정산 매칭</h3>
|
| 281 |
+
<button onclick="closeModal()" class="text-gray-500 hover:text-gray-700">
|
| 282 |
+
<i class="fas fa-times"></i>
|
| 283 |
+
</button>
|
| 284 |
+
</div>
|
| 285 |
+
|
| 286 |
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mt-6">
|
| 287 |
+
<!-- 세금계산서 정보 -->
|
| 288 |
+
<div class="bg-gray-50 p-4 rounded-lg">
|
| 289 |
+
<h4 class="text-lg font-semibold mb-4 text-dark border-b pb-2">세금계산서 정보</h4>
|
| 290 |
+
<div class="space-y-4">
|
| 291 |
+
<div class="grid grid-cols-2 gap-4">
|
| 292 |
+
<div>
|
| 293 |
+
<p class="text-sm text-gray-500 mb-1">발행일자</p>
|
| 294 |
+
<p class="font-medium" id="receiptDate">2023-10-10</p>
|
| 295 |
+
</div>
|
| 296 |
+
<div>
|
| 297 |
+
<p class="text-sm text-gray-500 mb-1">세금계산서 번호</p>
|
| 298 |
+
<p class="font-medium" id="receiptNo">20231010-001</p>
|
| 299 |
+
</div>
|
| 300 |
+
</div>
|
| 301 |
+
<div>
|
| 302 |
+
<p class="text-sm text-gray-500 mb-1">파트너사명</p>
|
| 303 |
+
<p class="font-medium" id="partnerName">넷플릭스</p>
|
| 304 |
+
</div>
|
| 305 |
+
<div class="grid grid-cols-2 gap-4">
|
| 306 |
+
<div>
|
| 307 |
+
<p class="text-sm text-gray-500 mb-1">매입금액</p>
|
| 308 |
+
<p class="font-medium" id="receiptAmount">12,500,000 원</p>
|
| 309 |
+
</div>
|
| 310 |
+
<div>
|
| 311 |
+
<p class="text-sm text-gray-500 mb-1">전표상태</p>
|
| 312 |
+
<p id="receiptStatus">
|
| 313 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">미발행</span>
|
| 314 |
+
</p>
|
| 315 |
+
</div>
|
| 316 |
+
</div>
|
| 317 |
+
<div>
|
| 318 |
+
<p class="text-sm text-gray-500 mb-1">매칭PoC</p>
|
| 319 |
+
<p id="matchedPoc">
|
| 320 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-blue-100 text-blue-800">B tv</span>
|
| 321 |
+
</p>
|
| 322 |
+
</div>
|
| 323 |
+
</div>
|
| 324 |
+
</div>
|
| 325 |
+
|
| 326 |
+
<!-- 정산 정보 매칭 -->
|
| 327 |
+
<div class="bg-gray-50 p-4 rounded-lg">
|
| 328 |
+
<h4 class="text-lg font-semibold mb-4 text-dark border-b pb-2">정산 정보 매칭</h4>
|
| 329 |
+
<div class="overflow-x-auto">
|
| 330 |
+
<table class="min-w-full divide-y divide-gray-200">
|
| 331 |
+
<thead class="bg-gray-100">
|
| 332 |
+
<tr>
|
| 333 |
+
<th scope="col" class="px-3 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">선택</th>
|
| 334 |
+
<th scope="col" class="px-3 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">PoC</th>
|
| 335 |
+
<th scope="col" class="px-3 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">정산금액</th>
|
| 336 |
+
<th scope="col" class="px-3 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">상태</th>
|
| 337 |
+
<th scope="col" class="px-3 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">액션</th>
|
| 338 |
+
</tr>
|
| 339 |
+
</thead>
|
| 340 |
+
<tbody class="bg-white divide-y divide-gray-200">
|
| 341 |
+
<!-- 자동 매칭된 항목 -->
|
| 342 |
+
<tr class="bg-green-50">
|
| 343 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 344 |
+
<input type="checkbox" checked class="rounded text-green-600 focus:ring-green-600">
|
| 345 |
+
</td>
|
| 346 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 347 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-blue-100 text-blue-800">B tv</span>
|
| 348 |
+
</td>
|
| 349 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 350 |
+
<span class="font-medium">12,500,000 원</span>
|
| 351 |
+
</td>
|
| 352 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 353 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">매칭 가능</span>
|
| 354 |
+
</td>
|
| 355 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 356 |
+
<button class="text-primary hover:text-blue-700" onclick="showDetail('B tv')">
|
| 357 |
+
<i class="fas fa-info-circle"></i> 상세내역
|
| 358 |
+
</button>
|
| 359 |
+
</td>
|
| 360 |
+
</tr>
|
| 361 |
+
<!-- 다른 항목 -->
|
| 362 |
+
<tr>
|
| 363 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 364 |
+
<input type="checkbox" class="rounded text-primary focus:ring-primary">
|
| 365 |
+
</td>
|
| 366 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 367 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-purple-100 text-purple-800">IP-CATV</span>
|
| 368 |
+
</td>
|
| 369 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 370 |
+
<span class="font-medium">8,750,000 원</span>
|
| 371 |
+
</td>
|
| 372 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 373 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800">금액 불일치</span>
|
| 374 |
+
</td>
|
| 375 |
+
<td class="px-3 py-4 whitespace-nowrap">
|
| 376 |
+
<button class="text-primary hover:text-blue-700" onclick="showDetail('IP-CATV')">
|
| 377 |
+
<i class="fas fa-info-circle"></i> 상세내역
|
| 378 |
+
</button>
|
| 379 |
+
</td>
|
| 380 |
+
</tr>
|
| 381 |
+
<!-- 추가 항목들... -->
|
| 382 |
+
</tbody>
|
| 383 |
+
</table>
|
| 384 |
+
</div>
|
| 385 |
+
<div class="mt-4 p-3 bg-yellow-50 rounded border border-yellow-200 text-sm">
|
| 386 |
+
<i class="fas fa-exclamation-circle text-yellow-500 mr-2"></i>
|
| 387 |
+
대표 계약: SVOD - 2023년 넷플릭스 계약 (계약번호: NCT-2023-001)
|
| 388 |
+
</div>
|
| 389 |
+
<div class="mt-4 text-right">
|
| 390 |
+
<button id="issueSingleBtn" class="bg-green-600 text-white px-6 py-2 rounded-lg hover:bg-green-700 transition">
|
| 391 |
+
<i class="fas fa-file-invoice-dollar mr-2"></i>임시전표 발행
|
| 392 |
+
</button>
|
| 393 |
+
</div>
|
| 394 |
+
</div>
|
| 395 |
+
</div>
|
| 396 |
+
</div>
|
| 397 |
+
</div>
|
| 398 |
+
|
| 399 |
+
<!-- 정산 상세 내역 팝업 -->
|
| 400 |
+
<div id="detailModal" class="fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full hidden">
|
| 401 |
+
<div class="relative top-20 mx-auto p-5 border w-3/4 shadow-lg rounded-md bg-white" style="max-width: 900px;">
|
| 402 |
+
<div class="flex justify-between items-center border-b pb-3">
|
| 403 |
+
<h3 class="text-xl font-semibold text-dark">정산 상세 내역 - <span id="detailPocTitle">B tv</span></h3>
|
| 404 |
+
<button onclick="closeDetailModal()" class="text-gray-500 hover:text-gray-700">
|
| 405 |
+
<i class="fas fa-times"></i>
|
| 406 |
+
</button>
|
| 407 |
+
</div>
|
| 408 |
+
|
| 409 |
+
<div class="mt-4">
|
| 410 |
+
<h4 class="text-md font-semibold mb-2 text-dark">기본 정보</h4>
|
| 411 |
+
<div class="grid grid-cols-3 gap-4 mb-4">
|
| 412 |
+
<div>
|
| 413 |
+
<p class="text-sm text-gray-500 mb-1">PoC</p>
|
| 414 |
+
<p class="font-medium" id="detailPoc">B tv</p>
|
| 415 |
+
</div>
|
| 416 |
+
<div>
|
| 417 |
+
<p class="text-sm text-gray-500 mb-1">정산 금액</p>
|
| 418 |
+
<p class="font-medium" id="detailAmount">12,500,000 원</p>
|
| 419 |
+
</div>
|
| 420 |
+
<div>
|
| 421 |
+
<p class="text-sm text-gray-500 mb-1">정산 기간</p>
|
| 422 |
+
<p class="font-medium" id="detailPeriod">2023-10-01 ~ 2023-10-31</p>
|
| 423 |
+
</div>
|
| 424 |
+
</div>
|
| 425 |
+
|
| 426 |
+
<h4 class="text-md font-semibold mb-2 mt-6 text-dark">계약별 상세 내역</h4>
|
| 427 |
+
<div class="overflow-x-auto">
|
| 428 |
+
<table class="min-w-full divide-y divide-gray-200">
|
| 429 |
+
<thead class="bg-gray-100">
|
| 430 |
+
<tr>
|
| 431 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">계약유형</th>
|
| 432 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">계약번호</th>
|
| 433 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">정산금액</th>
|
| 434 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">담당자</th>
|
| 435 |
+
</tr>
|
| 436 |
+
</thead>
|
| 437 |
+
<tbody class="bg-white divide-y divide-gray-200">
|
| 438 |
+
<tr>
|
| 439 |
+
<td class="px-6 py-4 whitespace-nowrap">SVOD</td>
|
| 440 |
+
<td class="px-6 py-4 whitespace-nowrap">NCT-2023-001</td>
|
| 441 |
+
<td class="px-6 py-4 whitespace-nowrap">9,500,000 원</td>
|
| 442 |
+
<td class="px-6 py-4 whitespace-nowrap">김정산</td>
|
| 443 |
+
</tr>
|
| 444 |
+
<tr class="bg-gray-50">
|
| 445 |
+
<td class="px-6 py-4 whitespace-nowrap">TVOD</td>
|
| 446 |
+
<td class="px-6 py-4 whitespace-nowrap">NCT-2023-002</td>
|
| 447 |
+
<td class="px-6 py-4 whitespace-nowrap">3,000,000 원</td>
|
| 448 |
+
<td class="px-6 py-4 whitespace-nowrap">김정산</td>
|
| 449 |
+
</tr>
|
| 450 |
+
<!-- 합계 행 -->
|
| 451 |
+
<tr class="bg-blue-50">
|
| 452 |
+
<td class="px-6 py-4 whitespace-nowrap font-semibold" colspan="2">총합</td>
|
| 453 |
+
<td class="px-6 py-4 whitespace-nowrap font-semibold">12,500,000 원</td>
|
| 454 |
+
<td class="px-6 py-4 whitespace-nowrap"></td>
|
| 455 |
+
</tr>
|
| 456 |
+
</tbody>
|
| 457 |
+
</table>
|
| 458 |
+
</div>
|
| 459 |
+
|
| 460 |
+
<div class="mt-6 flex justify-end">
|
| 461 |
+
<button onclick="closeDetailModal()" class="bg-gray-200 text-gray-700 px-6 py-2 rounded-lg hover:bg-gray-300 transition">
|
| 462 |
+
닫기
|
| 463 |
+
</button>
|
| 464 |
+
</div>
|
| 465 |
+
</div>
|
| 466 |
+
</div>
|
| 467 |
+
</div>
|
| 468 |
+
|
| 469 |
+
<script>
|
| 470 |
+
// 모달 컨트롤 함수들
|
| 471 |
+
function showReceiptDetail(receiptNo) {
|
| 472 |
+
document.getElementById('receiptModal').classList.remove('hidden');
|
| 473 |
+
document.body.style.overflow = 'hidden';
|
| 474 |
+
|
| 475 |
+
// 모달에 데이터 ��우기 (실제 구현에서는 AJAX로 데이터를 가져와야 함)
|
| 476 |
+
document.getElementById('receiptNo').textContent = receiptNo;
|
| 477 |
+
// 다른 필드들도 채우기...
|
| 478 |
+
}
|
| 479 |
+
|
| 480 |
+
function closeModal() {
|
| 481 |
+
document.getElementById('receiptModal').classList.add('hidden');
|
| 482 |
+
document.body.style.overflow = 'auto';
|
| 483 |
+
}
|
| 484 |
+
|
| 485 |
+
function showDetail(poc) {
|
| 486 |
+
document.getElementById('detailModal').classList.remove('hidden');
|
| 487 |
+
document.getElementById('detailPocTitle').textContent = poc;
|
| 488 |
+
document.getElementById('detailPoc').textContent = poc;
|
| 489 |
+
// 다른 필드들도 채우기...
|
| 490 |
+
}
|
| 491 |
+
|
| 492 |
+
function closeDetailModal() {
|
| 493 |
+
document.getElementById('detailModal').classList.add('hidden');
|
| 494 |
+
}
|
| 495 |
+
|
| 496 |
+
// 페이지 로드 시 자동 매칭 알림 표시
|
| 497 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 498 |
+
const autoMatchAlert = document.getElementById('autoMatchAlert');
|
| 499 |
+
setTimeout(() => {
|
| 500 |
+
autoMatchAlert.classList.remove('hidden');
|
| 501 |
+
// 5초 후 알림 자동 숨기기
|
| 502 |
+
setTimeout(() => {
|
| 503 |
+
autoMatchAlert.classList.add('hidden');
|
| 504 |
+
}, 5000);
|
| 505 |
+
}, 1000);
|
| 506 |
+
|
| 507 |
+
// 체크박스 상태에 따라 발행 버튼 활성화/비활성화
|
| 508 |
+
const checkboxes = document.querySelectorAll('tbody input[type="checkbox"]');
|
| 509 |
+
const issueBtn = document.getElementById('issueBtn');
|
| 510 |
+
|
| 511 |
+
checkboxes.forEach(checkbox => {
|
| 512 |
+
checkbox.addEventListener('change', function() {
|
| 513 |
+
const checkedBoxes = document.querySelectorAll('tbody input[type="checkbox"]:checked');
|
| 514 |
+
issueBtn.disabled = checkedBoxes.length === 0;
|
| 515 |
+
});
|
| 516 |
+
});
|
| 517 |
+
|
| 518 |
+
// 조회 버튼 클릭 이벤트 (실제 구현에서는 AJAX 호출)
|
| 519 |
+
document.getElementById('searchBtn').addEventListener('click', function() {
|
| 520 |
+
alert('조회 기능이 실행되었습니다. 실제 구현에서는 필터 조건에 맞는 데이터를 서버에서 가져옵니다.');
|
| 521 |
+
// 애니메이션 효과로 사용자에게 피드백 제공
|
| 522 |
+
this.innerHTML = '<i class="fas fa-spinner fa-spin mr-2"></i>조회 중...';
|
| 523 |
+
setTimeout(() => {
|
| 524 |
+
this.innerHTML = '<i class="fas fa-search mr-2"></i>조회';
|
| 525 |
+
}, 1500);
|
| 526 |
+
});
|
| 527 |
+
|
| 528 |
+
// 발행 버튼 클릭 이벤트
|
| 529 |
+
issueBtn.addEventListener('click', function() {
|
| 530 |
+
alert('임시전표 발행이 요청되었습니다. 실제 구현에서는 선택된 세금계산서에 대해 SAP 연동을 수행합니다.');
|
| 531 |
+
});
|
| 532 |
+
|
| 533 |
+
// 단건 발행 버튼 클릭 이벤트
|
| 534 |
+
document.getElementById('issueSingleBtn').addEventListener('click', function() {
|
| 535 |
+
alert('단건 임시전표 발행이 요청되었습니다. 세금계산서 번호: ' + document.getElementById('receiptNo').textContent);
|
| 536 |
+
closeModal();
|
| 537 |
+
});
|
| 538 |
+
});
|
| 539 |
+
</script>
|
| 540 |
+
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=r2d209/ncss2" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
| 541 |
+
</html>
|
prompts.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
다음 "배경 지식"을 참고해, NCSS CP 정산시스템에서 "NCSS내 세금계산서 조회 및 전표발행 기능 정의" 내역 기반 화면들을 제안해줘. 이때 "개선 포인트"에 언급한 내용도 반영될 수 있게 해줘 #배경 지식 SK브로드밴드는 CP(Contents Provider)에서 영화, 드라마등의 콘텐츠를 수급해 IPTV내 VoD 서비스를 제공중이고, 이 서비스에서 매월 발생한 매출 대상 각 CP별 계약조건으로 정산하는 NCSS라는 시스템이 있다. NCSS에는 CP와 계약을 맺은 정산담당자들이 계약조건을 입력하고, 그 계약 조건에 따라 정산결과가 산출된다. PoC라는 용어는 VoD가 편성되어 매출이 발생하는 매체 단위이며, B tv, IP-CATV, T Play 세가지가 존재한다. NCSS상에 계약은 동일한 CP이더라도 각 정산담당자마다 다른 조건에 따라 다수의 계약을 입력하고 이에 따라 각 담당자의 계약별 정산결과가 산출된다. 즉, 정산결과는 각 정산담당자의 계약별로 PoC단위로 그룹핑 되어 산출된다. CP가 발행하는 세금계산서는 사업자명, 사업자번호, 공급가액, 세액, 발행일 정보만 있고, 대상 PoC정보나 SK브로드밴드 정산담당자 정보는 제공되지 않는다. 세금계산서는 서비스가 제공되는 매체 단위인 PoC 별로 발행된다. #NCSS내 세금계산서 조회 및 전표발행 기능 정의 SK브로드밴드 SAP에 등록된 위 "배경 지식"에 기술한 조건의 세금계산서를 조회해 정산담당자는 본인이 계약을 가지고 있는 모든 CP로부터 발행된 세금계산서 목록만 필터링해 조회할 수 있어야 한다. 조회된 세금계산서 목록 화면에서 세금계산서 중 하나를 선택해 세부 팝업(=임시전표 발행 화면) 으로 들어가면 자신이 담당하는 계약별로 PoC단위 그룹핑되어 산출된 복수개의 정산결과 금액들과 대조, 선택해 세금계산서-정산결과 매칭함으로 SAP에 임시전표를 발행할 수 있어야 한다. 세금계산서는 사업자명, 사업자번호, 공급가액, 세액, 발행일 정보만 있어, 세금계산서 목록 화면 제공 정보 세금계산서 발행일자, 세금계산서 번호, 파트너사명, 매입금액(세금계산서 상의 세액이 포함되지 않은 공급가액), 전표발행상태, 매칭PoC 이들 제공 항목 별로 필터링해서 조회할 수 있도록 제공 전표발행상태 : 이미 세금계산서-정산결과를 매칭해 임시전표 발행된 항목은 "발행완료"로 상태 표시되고, 아직 매칭되지 않은 건 "미발행"으로 구분해 상태 표기 매칭PoC : 세금계산서-정산결과를 매칭해 임시전표 발행시 매칭된 정산결과의 PoC 표기 임시전표 발행 화면 제공 정보 팝업 화면으로 제공 팝업화면 좌측에는 "세금게산서 정보" 제목 이하로 세금계산서 발행일자, 세금계산서 번호, 파트너사명, 매입금액, 전표발행상태, 매칭PoC 표시하고 팝업화면 우측에는 "정산 정보 매핑" 제목 이하로 해당 CP의 PoC별 정산금액 목록 제공, 이 목록중에 세금계산서상 매입금액과 일치하는 정산금액이 있으면 자동으로 체크박스에 매칭 표시 CP의 PoC별 정산금액 목록 우측의 "상세내역" 버튼을 클릭하면, 해당 목록의 정산금액이 어떤 계약과 PoC들에서 각각 얼마의 정산금액이 발생한건지 세부 내역 확인 화면 제공 전표밣행상태가 "미발행"상태일때문 팝업 화면 우측 하단에 "임시전표 발행" 버튼이 활성화됨 #개선 포인트 세금계산서는 사업자명, 번호, 금액 정보만 있지 대상 PoC와 SKB 정산담당자 정보는 없으므로, PoC(B tv, IP-CATV, T Play) 별 세금계산서가 어떤 것인지 기본적으로 매핑이 불가하나 일일이 정산담당자가 세금계산서-정산결과의 금액을 대조하여 전표를 발행하면 사용성이 떨어지므로, 기본적으로 담당자의 해당 CP 대상 계약(SVOD, TVOD)을 PoC 별로 합산한 정산결과 금액이 CP에서 계약에 대한 PoC별 발행 내역과 일치해야 하므로 NCSS에서 판단시 정산담당자가 자신의 세금계산서-전표 발의 대상 CP를 조회하는 세금계산서 조회 화면상에서 발행된 세금계산서상 금액과 해당 CP의 정산결과 금액 중 일치 금액이 있을시 이를 자동 매칭하여 세금계산서 목록 화면상에 해당 정산대상금액도 같이 노출하고 이 리스트의 배경을 하이라이트되게 다른색으로 표기하여, 맨앞의 체크박스 멀티로 이들 대상 선택해 화면 하단의 "임시전표 발행" 버튼을 누르면 선택된 대상은 일괄로 SAP 임시 전표가 발행되도록 사용성 개선
|