Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| da9f49c973 | |||
| 1839c2c3d1 | |||
| df4c555dd1 | |||
| e1348226c6 | |||
| 97e7cfb867 | |||
| 11772d1f46 | |||
| 84e0577e89 | |||
| 31cc5603c9 | |||
| 0d36d27631 | |||
| 60c31d7ccb | |||
| 42a0d2ae3b | |||
| e599ef9ad8 | |||
| 223d916012 | |||
| f1cc0ca35c | |||
| e1325a1688 | |||
| 29b25cb1b4 | |||
| 8d72d2a0c2 | |||
| 1cdb172b07 | |||
| 864497e56f |
@@ -1,6 +1,7 @@
|
||||
name: TaxBaik CI/CD
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
@@ -75,7 +76,7 @@ jobs:
|
||||
test -s ./publish/proxy/TaxBaik.Proxy.runtimeconfig.json || { echo "TaxBaik.Proxy.runtimeconfig.json missing" >&2; exit 1; }
|
||||
|
||||
- name: Copy migrations
|
||||
run: cp -r db/migrations ./publish/migrations || true
|
||||
run: mkdir -p ./publish/db && cp -r db/migrations ./publish/db/ || true
|
||||
|
||||
- name: Generate build info
|
||||
run: |
|
||||
|
||||
+446
-85
@@ -1,51 +1,110 @@
|
||||
# 블로그 포스트 작성 템플릿
|
||||
|
||||
## 🎯 핵심 철학
|
||||
## 정확성 원칙 (법적 책임 수반)
|
||||
|
||||
**블로그의 진정한 목적 - 3층 구조**:
|
||||
블로그는 **사실 기반, 세법 기반, 데이터 기반**이어야 합니다. 추측이나 예상은 법적 문제를 일으킬 수 있습니다.
|
||||
|
||||
### 1층: 기초 교육 (누구나 배울 수 있음)
|
||||
"이 정도는 자신이 할 수 있어요"
|
||||
- 기본 개념 설명
|
||||
- 단계별 방법론
|
||||
### 절대 금지 표현
|
||||
|
||||
### 2층: 디테일 & 세법 변화 (추적 불가능)
|
||||
**"하지만 악마는 디테일... 그리고 세법은 계속 바뀌어요"**
|
||||
- 겹겹이 쌓인 디테일들
|
||||
- 매년 변경되는 세법
|
||||
- 고객이 추적 불가능한 영역
|
||||
- "아마도", "할 것 같다", "추측된다" (추측)
|
||||
- "대략", "정도일 거다", "보통" (예상)
|
||||
- "좋을 것 같다", "나쁠 것 같다" (의견)
|
||||
- 증거 없는 "모두", "항상", "누구나" (일반화)
|
||||
- 출처 없는 통계 ("80% 고객이", "평균 X만 원")
|
||||
|
||||
### 3층: 세무사의 가치 (전문가만 가능)
|
||||
**"그래서 전문가가 필요합니다"**
|
||||
- 디테일 관리
|
||||
- 세법 변화 자동 추적
|
||||
- 리스크 관리
|
||||
- 시간/돈/스트레스 절약
|
||||
### 필수 요소
|
||||
|
||||
---
|
||||
**1. 세법 기반**:
|
||||
- 모든 주장에 세법/시행령/고시 인용
|
||||
- 조항 명시: "소득세법 제XX조에 따르면"
|
||||
- 최신 기준 명시: "2025년 기준"
|
||||
- 변경사항 반영: "전년도와 다르게..."
|
||||
|
||||
**최종 메시지**:
|
||||
**2. 사실 기반**:
|
||||
- 실제 일어난 고객 사례만 사용
|
||||
- 가정일 경우 명시: "예를 들어, 만약 이렇다면"
|
||||
- 가상 사례는 "예시 사례"라고 명확히
|
||||
- 개인정보는 익명화 (이름, 나이는 일반적인 표현)
|
||||
|
||||
**3. 데이터 기반**:
|
||||
- 객관적 수치만 사용 (국세청 통계, 협회 자료)
|
||||
- 출처 명시: "2025년 세무청 통계에 따르면"
|
||||
- 구체적 금액: "약 50만 원" (범위 표현)
|
||||
- 비교 데이터: "작년 대비 X% 증가"
|
||||
|
||||
**4. 사례 제시 시 확인 사항**:
|
||||
```
|
||||
기초는 배울 수 있어요.
|
||||
하지만:
|
||||
- 디테일이 지옥이고 (50만원 실수 가능)
|
||||
- 세법은 계속 바뀌고 (매년 업데이트 필요)
|
||||
- 변화를 추적하기는 불가능해요 (본업이 있으니까)
|
||||
|
||||
그래서 세무사가 있으면:
|
||||
- 디테일은 자동 관리
|
||||
- 세법 변화도 자동 적용
|
||||
- 새 제도도 놓치지 않음
|
||||
- 당신은 사업에만 집중
|
||||
|
||||
이래서 세무사 비용이 아깝지 않은 거죠.
|
||||
✅ 실제 고객인가? (공개 가능한 정보만)
|
||||
✅ 세법을 정확하게 적용했는가?
|
||||
✅ 금액 계산이 정확한가?
|
||||
✅ 이 사례가 대표적인가? (극단적 사례면 명시)
|
||||
✅ 다른 고객에게도 적용 가능한가?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 템플릿 (복사해서 사용)
|
||||
## 카테고리 필수 규칙
|
||||
|
||||
### 📌 Step 1: 도입부 (공감)
|
||||
**모든 블로그 포스트는 반드시 하나의 카테고리에 할당되어야 합니다. (NOT NULL)**
|
||||
|
||||
### 카테고리별 포스트 배치
|
||||
|
||||
| 카테고리 | 최소 포스트 | 주제 범위 |
|
||||
|---------|-----------|---------|
|
||||
| 사업자 세무 | 3개 | 기장, 세무신고, 부가세, 종합소득세 |
|
||||
| 부동산 세금 | 3개 | 월세, 양도세, 상속세(부동산) |
|
||||
| 종합소득세 | 3개 | 프리랜서, 부업, 경비 처리 |
|
||||
| 부가가치세 | 3개 | 신고, 기한, 간이과세 vs 일반과세 |
|
||||
| 가족자산·증여 | 3개 | 자녀 증여, 상속, 자산 이전 |
|
||||
|
||||
### 카테고리 할당 규칙
|
||||
|
||||
1. **명확한 주제 분류**: 포스트 내용이 카테고리 범위에 명확하게 해당
|
||||
2. **중복 금지**: 한 포스트는 정확히 하나의 카테고리에만 할당
|
||||
3. **균형 배치**: 각 카테고리당 최소 3개씩 (고객 검색 UX)
|
||||
4. **검색 최적화**: 고객이 카테고리로 찾을 때 관련 포스트 3개 이상 노출
|
||||
|
||||
### 카테고리 미할당 시 (오류)
|
||||
- ❌ category_id = NULL (데이터베이스 제약 위반)
|
||||
- ❌ SQL 실행 실패 (NOT NULL 제약)
|
||||
- ❌ 블로그 페이지 노출 불가
|
||||
|
||||
**이 규칙은 모든 포스트 생성/수정 시 필수 준수사항입니다.**
|
||||
|
||||
---
|
||||
|
||||
## 핵심 철학: 고객이 느끼는 여정
|
||||
|
||||
### 1️⃣ 기초: "이 정도는 할 수 있어요"
|
||||
- 고객이 배울 수 있는 기본 개념
|
||||
- 실제 사례로 구체화
|
||||
- 단계별 설명
|
||||
|
||||
### 2️⃣ 현실: "하지만 복잡하네요"
|
||||
- 겹겹이 쌓인 세부사항들
|
||||
- 매년 바뀌는 세법
|
||||
- "이거 일일이 다 챙기기 어렵다"는 느낌
|
||||
|
||||
### 3️⃣ 해결: "세무사와 함께면 괜찮아요"
|
||||
- 디테일 자동 관리
|
||||
- 세법 변화 자동 반영
|
||||
- 고객은 사업에만 집중
|
||||
|
||||
---
|
||||
|
||||
**고객이 글을 읽은 후 느끼는 것**:
|
||||
|
||||
1️⃣ 읽고 나서: "아, 이 정도는 내가 할 수 있겠네"
|
||||
2️⃣ 생각해보니: "근데 이 모든 걸 매년 챙기기는... 힘들겠는데?"
|
||||
3️⃣ 결론: "그럼 전문가 도움을 받는 게 낫겠다"
|
||||
|
||||
→ 자연스럽게 세무사의 필요성을 깨달음 (강요 아님)
|
||||
|
||||
---
|
||||
|
||||
## 템플릿 (복사해서 사용)
|
||||
|
||||
### Step 1: 도입부 (공감)
|
||||
```markdown
|
||||
# [제목]
|
||||
|
||||
@@ -65,7 +124,7 @@
|
||||
|
||||
---
|
||||
|
||||
### 👤 Step 2: 실제 사례 (구체적 페르소나)
|
||||
### Step 2: 실제 사례 (구체적 페르소나)
|
||||
|
||||
**필수 정보**:
|
||||
- 이름, 나이, 직업, 사업 경력
|
||||
@@ -113,7 +172,7 @@
|
||||
|
||||
---
|
||||
|
||||
### 📊 Step 3: 계산 & 설명
|
||||
### Step 3: 계산 & 설명
|
||||
|
||||
**구조**:
|
||||
1. **기본 정보 확인** (위에서 제시한 사례 요약)
|
||||
@@ -127,13 +186,14 @@
|
||||
월 600만 원 × 12개월 = 연 7,200만 원
|
||||
|
||||
### Step 2️⃣: 경비 계산
|
||||
| 항목 | 월 | 연간 |
|
||||
|------|-----|------|
|
||||
| 월세 | 150만 | 1,800만 |
|
||||
| 재료비 | 180만 | 2,160만 |
|
||||
| 직원급여 | 100만 | 1,200만 |
|
||||
| 기타 | 20만 | 240만 |
|
||||
| **합계** | **450만** | **5,400만** |
|
||||
|
||||
월 경비 구성:
|
||||
- 월세: 150만 원 (연 1,800만 원)
|
||||
- 재료비: 180만 원 (연 2,160만 원)
|
||||
- 직원급여: 100만 원 (연 1,200만 원)
|
||||
- 기타: 20만 원 (연 240만 원)
|
||||
- **월 합계: 450만 원**
|
||||
- **연 합계: 5,400만 원**
|
||||
|
||||
### Step 3️⃣: 순이익
|
||||
7,200만 - 5,400만 = **1,800만 원**
|
||||
@@ -261,26 +321,43 @@
|
||||
|
||||
---
|
||||
|
||||
## 왜 세무사를 고용해야 하나요?
|
||||
## 결과 비교: 혼자 할 때 vs 세무사와 함께
|
||||
|
||||
### 📈 "혼자하기" vs "세무사와 함께"
|
||||
**세법 변화 추적**
|
||||
- 혼자: "어? 규칙이 바뀌었네?"
|
||||
- 세무사: 자동으로 적용됨
|
||||
|
||||
| 항목 | 혼자할 때 | 세무사와 함께 |
|
||||
|------|----------|-----------|
|
||||
| **세법 추적** | 부분적 (인터넷 검색) | 자동 (전문가 업데이트) |
|
||||
| **새 제도 활용** | 놓칠 확률 높음 | 100% 적용 |
|
||||
| **변경사항 대응** | 재계산 필요 | 자동 반영 |
|
||||
| **신뢰도** | 불안감 | 확신 |
|
||||
| **업데이트 비용** | 당신의 시간 | 포함됨 |
|
||||
**새로운 공제**
|
||||
- 혼자: 놓치기 쉬움
|
||||
- 세무사: 모두 적용됨
|
||||
|
||||
→ **세법이 계속 바뀐다는 것 자체가 세무사가 필요한 이유**
|
||||
```
|
||||
**매년 재계산**
|
||||
- 혼자: 직접 해야 함
|
||||
- 세무사: 자동 갱신
|
||||
|
||||
**💡 강조점**:
|
||||
- 세법은 **정적이지 않음** (계속 변함)
|
||||
- 고객은 **변화를 추적할 수 없음** (본업이 있으니까)
|
||||
- 세무사는 **자동으로 최신 기준 적용** (전문가니까)
|
||||
- 결과: **"세무사 한 명이면 내가 평생 세법 공부 안 해도 돼"**
|
||||
**마음 편함**
|
||||
- 혼자: 불안감 ("맞나?")
|
||||
- 세무사: 확신 ("전문가가 관리")
|
||||
|
||||
**투자 시간**
|
||||
- 혼자: 당신의 시간
|
||||
- 세무사: 포함 (전문가 비용)
|
||||
|
||||
---
|
||||
|
||||
## 요약: 왜 세무사가 필요한가
|
||||
|
||||
**기초는 배울 수 있지만**:
|
||||
- 세법은 매년 바뀌고
|
||||
- 당신은 본업이 있어서 추적이 어렵고
|
||||
- 실수 하나가 가산세 50만 원...
|
||||
|
||||
**그래서 세무사가 있으면**:
|
||||
- 변화를 자동으로 적용해주고
|
||||
- 새 제도도 놓치지 않아주고
|
||||
- 당신은 사업에만 집중
|
||||
|
||||
→ **결국 시간, 돈, 스트레스 모두 절약**
|
||||
|
||||
---
|
||||
|
||||
@@ -306,12 +383,19 @@
|
||||
|
||||
---
|
||||
|
||||
### 🎓 Step 5: 결론 (임파워먼트 + 세무사 자연스러운 유도)
|
||||
### 📝 Step 5: 결론
|
||||
|
||||
고객이 읽은 후 자연스럽게 결론을 내리도록:
|
||||
|
||||
**구조**:
|
||||
1. "기초 수준이면 이 정도면 충분"
|
||||
2. "하지만 이렇게 복잡해지면 전문가 도움이 효율적"
|
||||
3. "세무사와 함께 하는 게 장기적으로 낫다"
|
||||
1. 기초는 할 수 있다 (긍정)
|
||||
2. 근데 복잡하네요 (현실 직시)
|
||||
3. 그래서 세무사가 필요하구나 (자연스러운 깨달음)
|
||||
|
||||
**고객이 느끼는 여정**:
|
||||
- 처음: "아, 이 정도는 내가 할 수 있겠네"
|
||||
- 중간: "근데 이 모든 걸 매년 챙기기는..."
|
||||
- 결론: "전문가 도움이 낫겠다"
|
||||
|
||||
```markdown
|
||||
## 기초는 누구나 할 수 있어요
|
||||
@@ -334,23 +418,38 @@
|
||||
- 📈 직원을 여러 명 두고 있을 때
|
||||
- 🌍 해외 거래나 수입이 있을 때
|
||||
|
||||
### 💰 세무사와 함께 하는 이유 (숫자가 말해줍니다)
|
||||
### 실제 효과: 숫자로 본 세무사의 가치
|
||||
|
||||
| 항목 | 혼자할 때 | 세무사와 함께 | 차이 |
|
||||
|------|----------|-----------|------|
|
||||
| **절세액** | X만 원 | X + 200만 원 | +200만 원 절약 |
|
||||
| **세무조사 스트레스** | 매년 불안 | 안정적 대응 | 심리적 안정 |
|
||||
| **시간 투자** | 월 10시간 | 월 1시간 | 월 9시간 자유 |
|
||||
| **세무사 비용** | 0원 | 약 100만 원/년 | -100만 원 |
|
||||
| **실제 이익** | 순이익 | 순이익 + 100만 원 | **+100만 원 순이익** |
|
||||
**절세액**
|
||||
- 혼자: X만 원
|
||||
- 세무사: X + 200만 원
|
||||
- 차이: +200만 원 절약
|
||||
|
||||
→ **돈을 쓰는 이유가 있습니다**:
|
||||
- 💰 **세금 절약**: 절세 기법으로 200만 원 절약 - 100만 원 비용 = 순 100만 원 이득
|
||||
- ⏰ **시간 절약**: 월 9시간(연 108시간) 절약 = 사업에 집중 가능
|
||||
- 😌 **스트레스 감소**: 세무조사 불안 제거, 복잡한 계산 안 함
|
||||
- 🛡️ **리스크 관리**: 실수로 인한 가산세/과태료 방지
|
||||
**세무조사 스트레스**
|
||||
- 혼자: 매년 불안
|
||||
- 세무사: 안정적 대응
|
||||
- 차이: 심리적 안정
|
||||
|
||||
**결론**: 세무사 비용 > 절세액 + 시간 절약 + 스트레스 감소
|
||||
**시간 투자**
|
||||
- 혼자: 월 10시간
|
||||
- 세무사: 월 1시간
|
||||
- 차이: 월 9시간 자유
|
||||
|
||||
**세무사 비용**
|
||||
- 혼자: 0원
|
||||
- 세무사: 약 100만 원/년
|
||||
- 차이: -100만 원
|
||||
|
||||
**실제 이익**
|
||||
- 혼자: 순이익
|
||||
- 세무사: 순이익 + 100만 원
|
||||
- 차이: +100만 원 순이익
|
||||
|
||||
**돈을 쓰는 이유**:
|
||||
- 세금 절약: 절세 200만 원 - 비용 100만 원 = 순 100만 원 이득
|
||||
- 시간 절약: 월 9시간(연 108시간) = 사업에 집중
|
||||
- 스트레스 감소: 세무조사 불안 제거
|
||||
- 리스크 관리: 실수로 인한 가산세 방지
|
||||
|
||||
---
|
||||
|
||||
@@ -394,15 +493,85 @@
|
||||
|
||||
---
|
||||
|
||||
## 피해야 할 표현
|
||||
## 🚫 피해야 할 표현 (한국세무사협회 광고 규칙 준수)
|
||||
|
||||
| ❌ 이렇게 | ✅ 이렇게 |
|
||||
|---------|---------|
|
||||
| "복잡하니까 맡기세요" | "기초는 누구나, 복잡하면 전문가" |
|
||||
| "전문가는 필수입니다" | "필요할 때 도움받으면 효율적" |
|
||||
| "혼자서도 잘해요" | "기초 수준은 자신이 가능해요" |
|
||||
| "세무사에 위임하세요" | "당신의 상황에 따라 판단하세요" |
|
||||
| "절대 실수하면 안 돼요" | "실수할 수 있으니 미리 대비하세요" |
|
||||
### ❌ **절대 금지 표현** (법적 위반 위험)
|
||||
|
||||
**1. 과도한 절세 약속 & 절대 표현**:
|
||||
- ❌ "50만 원 절약 가능"
|
||||
- ❌ "최대한 경비를 깎아줍니다"
|
||||
- ❌ "세금을 반으로 줄여드립니다"
|
||||
- ❌ "세금을 덜 냅니다" (보장으로 해석)
|
||||
- ❌ "가장 많이 절세해드립니다"
|
||||
- ✅ "이 사례에서는 약 50만 원 절약되었습니다" (과거 사례만)
|
||||
- ✅ "정확한 경비 처리로 세법에 따른 정당한 공제를 받을 수 있습니다" (법적 근거)
|
||||
- ✅ "경비를 빠짐없이 처리합니다" (객관적 프로세스)
|
||||
|
||||
**2. 보장 표현 (불가능한 결과 약속)**:
|
||||
- ❌ "반드시 세금을 줄입니다"
|
||||
- ❌ "세무조사 안 받게 해드립니다"
|
||||
- ❌ "100% 절세를 보장합니다"
|
||||
- ❌ "세금을 보장합니다"
|
||||
- ✅ "정확한 신고로 세무조사 리스크를 최소화합니다"
|
||||
- ✅ "세법에 따른 정당한 공제를 받을 수 있습니다"
|
||||
|
||||
**3. 무료 & 가격 표현**:
|
||||
- ❌ "무료로 세금 절약해드립니다"
|
||||
- ❌ "최저가 신고료"
|
||||
- ❌ "가장 저렴한 가격"
|
||||
- ✅ "합리적인 비용으로 전문 서비스를 제공합니다"
|
||||
|
||||
**4. 절대/최상급 표현**:
|
||||
- ❌ "반드시", "무조건", "반듯이", "항상", "절대"
|
||||
- ❌ "최고", "최우수", "1등", "유일"
|
||||
- ❌ "모든", "완벽하게"
|
||||
- ✅ "일반적으로", "대부분의 경우", "보통"
|
||||
|
||||
**5. 과도한 단순화 표현**:
|
||||
- ❌ "매우 편합니다", "너무 쉽습니다"
|
||||
- ❌ "아무도 실수할 수 없습니다"
|
||||
- ❌ "5분이면 끝납니다"
|
||||
- ✅ "기초 개념을 배울 수 있습니다"
|
||||
- ✅ "복잡한 부분은 전문가가 관리합니다"
|
||||
|
||||
**6. 객관적 증거 없는 수치**:
|
||||
- ❌ "평균 170만 원 절약" (근거 없으면)
|
||||
- ❌ "고객의 80%가 만족" (통계 없으면)
|
||||
- ❌ "보통 2배의 환급" (데이터 없으면)
|
||||
- ✅ "이 사례에서는 약 170만 원 절약되었습니다"
|
||||
- ✅ "많은 고객들이 정확한 기장의 필요성을 느낍니다"
|
||||
|
||||
---
|
||||
|
||||
### ✅ **안전한 표현 (권장)**
|
||||
|
||||
| 대신 이렇게 | 이유 |
|
||||
|----------|------|
|
||||
| "정확한 기장으로 세법에 따른 공제를 받을 수 있습니다" | 법적 근거 (보장 아님) |
|
||||
| "경비를 빠짐없이 처리합니다" | 객관적 프로세스 |
|
||||
| "이 사례에서는 약 50만 원 절약되었습니다" | 과거 사례 (보장 아님) |
|
||||
| "경비를 빠짐없이 처리합니다" | 객관적 프로세스 |
|
||||
| "세무조사 대비 근거를 정리합니다" | 예방적 표현 |
|
||||
| "당신의 상황에 맞는 최선의 방법을 제시합니다" | 개별 맞춤형 |
|
||||
| "세법이 자주 바뀌므로 전문가 도움이 효율적입니다" | 필요성 설명 |
|
||||
| "이 정도는 자신이 충분히 가능합니다" | 존중과 임파워먼트 |
|
||||
| "복잡한 경우는 전문가와 상담하세요" | 선택지 제시 |
|
||||
| "정확하게 하면 나중에 편합니다" | 미래 가치 (현재 보장 아님) |
|
||||
|
||||
---
|
||||
|
||||
### 📋 블로그 작성 시 광고 규칙 체크리스트
|
||||
|
||||
- [ ] **절세 약속 제거**: "최대한", "반드시", "보장", "무조건" 단어 없음
|
||||
- [ ] **보장 표현 제거**: "세무조사 안 받게", "100% 절세", "확실" 제거
|
||||
- [ ] **무료/가격 표현 제거**: "무료", "최저가", "가장 저렴" 제거
|
||||
- [ ] **절대 표현 제거**: "항상", "절대", "모두", "완벽" 제거
|
||||
- [ ] **최상급 제거**: "최고", "최우수", "1등" (객관적 증거 있으면 가능)
|
||||
- [ ] **과도한 단순화 제거**: "매우 쉽습니다", "아무도 실수할 수 없음" 제거
|
||||
- [ ] **수치는 사례로**: "절약 가능" → "이 사례에서는 약 X만 원 절약"
|
||||
- [ ] **객관성 유지**: 구체적 사례 + 과거형 표현 사용
|
||||
- [ ] **필요성 설명**: "왜 필요한가" → 이해와 선택 유도
|
||||
- [ ] **세무사협회 규정 준수**: 법적 문제 없음
|
||||
|
||||
---
|
||||
|
||||
@@ -414,3 +583,195 @@
|
||||
| 5월 | 종소세 신고 방법 | "핵심 개념 + 전문가 도움 타이밍" |
|
||||
| 7월 | 부가세 1기 신고 | "기초 정리 방법" |
|
||||
| 11월 | 다음해 준비 | "계획하면 편해요" |
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 실수 방지 체크리스트 (과거 오류 기록)
|
||||
|
||||
**이전에 반복된 실수들을 기록하여, 같은 실수를 하지 않도록 합니다.**
|
||||
|
||||
### 1️⃣ 카테고리 할당 실수 ❌
|
||||
|
||||
**과거 오류**: 포스트를 만들 때 category_id를 NULL로 두었음
|
||||
|
||||
**문제점**:
|
||||
- DB NOT NULL 제약 위반
|
||||
- 블로그 페이지에 노출 안 됨
|
||||
- 고객이 카테고리로 검색 불가
|
||||
|
||||
**예방책**:
|
||||
- ✅ **SQL INSERT 시 반드시 category_id 명시**
|
||||
- ✅ **포스트 작성 전에 카테고리 결정**
|
||||
- ✅ **DB 적용 후 category_id NOT NULL 확인**
|
||||
- ✅ **각 카테고리별 최소 3개 이상 포스트 유지**
|
||||
|
||||
**SQL 예시** (권장):
|
||||
```sql
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, ...)
|
||||
VALUES ('제목', 'slug', $$본문$$, 1, true, ...);
|
||||
-- category_id 절대 생략 금지!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ 내용 길이 부족 ❌
|
||||
|
||||
**과거 오류**: 에이전트가 지침(1,500~2,500자)을 무시하고 간단한 버전(500자)으로 생성
|
||||
|
||||
**문제점**:
|
||||
- 고객 설득력 부족
|
||||
- 계산 예시 없음
|
||||
- 3단계 구조 불완전
|
||||
- 세법 인용 부족
|
||||
|
||||
**예방책**:
|
||||
- ✅ **각 포스트 최소 1,500자 이상 (추천 2,000~2,500자)**
|
||||
- ✅ **포스트 작성 후 글자 수 확인: `LENGTH(content) >= 1500`**
|
||||
- ✅ **항상 실제 사례 포함** (이름, 나이, 직업, 구체적 상황)
|
||||
- ✅ **항상 계산 과정 포함** (절세액 수치화)
|
||||
- ✅ **3단계 구조 필수** (1️⃣ 기초 → 2️⃣ 현실 → 3️⃣ 해결책)
|
||||
|
||||
**확인 쿼리**:
|
||||
```sql
|
||||
SELECT id, title, LENGTH(content) as length FROM blog_posts
|
||||
WHERE LENGTH(content) < 1500; -- 부족한 포스트 검출
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ 테이블 사용 금지 ❌
|
||||
|
||||
**과거 오류**: 마크다운 테이블(`| |---|---|`) 사용
|
||||
|
||||
**문제점**:
|
||||
- 지침 위반 (리스트만 사용)
|
||||
- 모바일에서 가독성 저하
|
||||
- 유지보수 어려움
|
||||
|
||||
**예방책**:
|
||||
- ✅ **테이블 금지, 리스트만 사용** (- 또는 숫자 목록)
|
||||
- ✅ **작성 후 `| |` 패턴 검색으로 테이블 확인**
|
||||
- ✅ **수치/계산은 리스트 형식**:
|
||||
|
||||
**❌ 금지 (테이블)**:
|
||||
```markdown
|
||||
| 항목 | 월 | 연간 |
|
||||
|------|-----|------|
|
||||
| 월세 | 150만 | 1,800만 |
|
||||
```
|
||||
|
||||
**✅ 권장 (리스트)**:
|
||||
```markdown
|
||||
월 경비 구성:
|
||||
- 월세: 150만 원 (연 1,800만 원)
|
||||
- 재료비: 180만 원 (연 2,160만 원)
|
||||
- 직원급여: 100만 원 (연 1,200만 원)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ 계산 예시 누락 ❌
|
||||
|
||||
**과거 오류**: 포스트에 개념만 있고 실제 계산 예시 부족
|
||||
|
||||
**문제점**:
|
||||
- 고객이 "내 상황에 얼마나 해당하나" 판단 어려움
|
||||
- 추상적 설명으로 설득력 감소
|
||||
- 세무사 필요성 전달 미흡
|
||||
|
||||
**예방책**:
|
||||
- ✅ **모든 포스트에 구체적 계산 예시 필수**
|
||||
- ✅ **절세액을 수치로 제시** ("약 50만 원 절약")
|
||||
- ✅ **단계별 계산 과정 포함** (Step 1️⃣, 2️⃣, 3️⃣, 4️⃣)
|
||||
- ✅ **실제 사례로 숫자 구체화**:
|
||||
|
||||
**예시**:
|
||||
```markdown
|
||||
### Step 1️⃣: 매출 정리
|
||||
월 600만 원 × 12개월 = 연 7,200만 원
|
||||
|
||||
### Step 2️⃣: 경비 계산
|
||||
- 월세: 150만 원 → 연 1,800만 원
|
||||
- 재료비: 180만 원 → 연 2,160만 원
|
||||
합계: 5,400만 원
|
||||
|
||||
### Step 3️⃣: 순이익
|
||||
7,200만 - 5,400만 = 1,800만 원
|
||||
|
||||
### Step 4️⃣: 세금
|
||||
1,800만 원 × 약 6% = **약 108만 원/년**
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ 카테고리 주제 불일치 ❌
|
||||
|
||||
**과거 오류**: 포스트 주제와 카테고리가 맞지 않음
|
||||
|
||||
**문제점**:
|
||||
- 고객이 원하는 정보 검색 불가
|
||||
- 카테고리 신뢰도 저하
|
||||
- UX 혼란
|
||||
|
||||
**예방책**:
|
||||
- ✅ **포스트 작성 전 카테고리 명확히 결정**
|
||||
- ✅ **포스트 주제와 카테고리 일관성 검증**:
|
||||
|
||||
| 포스트 | 카테고리 | 확인 |
|
||||
|--------|---------|------|
|
||||
| 프리랜서 경비 | 종합소득세 (3) | ✅ 맞음 |
|
||||
| 월세 신고 | 부동산 세금 (2) | ✅ 맞음 |
|
||||
| 자녀 증여세 | 가족자산·증여 (5) | ✅ 맞음 |
|
||||
| 사업자 기장 | 사업자 세무 (1) | ✅ 맞음 |
|
||||
| 부가세 신고 | 부가가치세 (4) | ✅ 맞음 |
|
||||
|
||||
---
|
||||
|
||||
### 6️⃣ 정확한 세법 인용 누락 ❌
|
||||
|
||||
**과거 오류**: 일부 포스트에서 법조 명시 부족
|
||||
|
||||
**문제점**:
|
||||
- 정확성 원칙 위반
|
||||
- 법적 책임 불명확
|
||||
- 고객 신뢰도 저하
|
||||
|
||||
**예방책**:
|
||||
- ✅ **모든 주요 내용에 세법 조항 인용 필수**
|
||||
- ✅ **형식**: "소득세법 제XX조에 따르면"
|
||||
- ✅ **연도 기준 명시**: "2025년 기준"
|
||||
- ✅ **포스트 끝에 "법적 근거" 섹션 필수**:
|
||||
|
||||
```markdown
|
||||
**법적 근거**:
|
||||
- 소득세법 제29조 (수입금액의 계산)
|
||||
- 국세기본법 제47조 (가산세)
|
||||
- 소득세법 제160조 (증빙 보관)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 포스트 최종 체크리스트
|
||||
|
||||
모든 포스트를 DB에 등록하기 전에 다음을 확인하세요:
|
||||
|
||||
- [ ] **카테고리 할당**: `category_id NOT NULL` (필수)
|
||||
- [ ] **내용 길이**: `LENGTH(content) >= 1500` (최소 1,500자)
|
||||
- [ ] **테이블 확인**: `| |` 패턴 없음 (리스트만)
|
||||
- [ ] **계산 예시**: Step 1️⃣~4️⃣ 포함 (절세액 수치)
|
||||
- [ ] **세법 인용**: 모든 주요 내용에 법조 명시
|
||||
- [ ] **카테고리 일치**: 포스트 주제 ↔ 카테고리 일관성
|
||||
- [ ] **3단계 구조**: 1️⃣ 기초 → 2️⃣ 현실 → 3️⃣ 해결책
|
||||
- [ ] **광고 규칙**: 금지 표현(보장, 최저가, 무료) 없음
|
||||
- [ ] **사례 포함**: 실제 상황 + 이름/나이/직업 구체화
|
||||
- [ ] **정확성**: 추측/예상/의견 표현 없음
|
||||
|
||||
**체크 쿼리**:
|
||||
```sql
|
||||
-- DB 적용 후 확인
|
||||
SELECT id, title, LENGTH(content), category_id
|
||||
FROM blog_posts
|
||||
WHERE LENGTH(content) < 1500 OR category_id IS NULL
|
||||
ORDER BY id;
|
||||
-- 결과 없음이 정상!
|
||||
```
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
namespace TaxBaik.Application.Tests;
|
||||
|
||||
using TaxBaik.Web.Components.Admin.Shared;
|
||||
using Xunit;
|
||||
|
||||
public class BusinessDayCalculatorTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData(2026, 2, 14, 2026, 2, 19)]
|
||||
[InlineData(2026, 8, 15, 2026, 8, 20)]
|
||||
[InlineData(2026, 9, 24, 2026, 9, 29)]
|
||||
[InlineData(2026, 10, 3, 2026, 10, 8)]
|
||||
public void GetEffectiveDueDate_SkipsWeekendHolidayAndSubstituteHoliday(
|
||||
int dueYear, int dueMonth, int dueDay,
|
||||
int expectedYear, int expectedMonth, int expectedDay)
|
||||
{
|
||||
var effective = BusinessDayCalculator.GetEffectiveDueDate(new DateOnly(dueYear, dueMonth, dueDay));
|
||||
|
||||
Assert.Equal(new DateOnly(expectedYear, expectedMonth, expectedDay), effective);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(2026, 2, 19, 0)]
|
||||
[InlineData(2026, 2, 20, -1)]
|
||||
[InlineData(2026, 2, 18, 1)]
|
||||
public void GetDday_UsesEffectiveDueDate(
|
||||
int refYear, int refMonth, int refDay,
|
||||
int expectedDays)
|
||||
{
|
||||
var dday = BusinessDayCalculator.GetDday(new DateOnly(2026, 2, 14), new DateOnly(refYear, refMonth, refDay));
|
||||
|
||||
Assert.Equal(expectedDays, dday);
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\TaxBaik.Application\TaxBaik.Application.csproj" />
|
||||
<ProjectReference Include="..\TaxBaik.Web\TaxBaik.Web.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -8,6 +8,11 @@ namespace TaxBaik.Application.Services;
|
||||
|
||||
public class CommonCodeService(ICommonCodeRepository commonCodeRepository)
|
||||
{
|
||||
public async Task<IEnumerable<string>> GetAllGroupsAsync(CancellationToken ct = default)
|
||||
{
|
||||
return await commonCodeRepository.GetAllGroupsAsync(ct);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<CommonCode>> GetByGroupAsync(string codeGroup, CancellationToken ct = default)
|
||||
{
|
||||
return await commonCodeRepository.GetByGroupAsync(codeGroup, ct);
|
||||
@@ -17,4 +22,27 @@ public class CommonCodeService(ICommonCodeRepository commonCodeRepository)
|
||||
{
|
||||
return await commonCodeRepository.GetAllActiveAsync(ct);
|
||||
}
|
||||
|
||||
public async Task<CommonCode?> GetAsync(string codeGroup, string codeValue, CancellationToken ct = default)
|
||||
{
|
||||
return await commonCodeRepository.GetAsync(codeGroup, codeValue, ct);
|
||||
}
|
||||
|
||||
public async Task UpsertAsync(CommonCode code, CancellationToken ct = default)
|
||||
{
|
||||
Normalize(code);
|
||||
await commonCodeRepository.UpsertAsync(code, ct);
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(string codeGroup, string codeValue, CancellationToken ct = default)
|
||||
{
|
||||
await commonCodeRepository.DeleteAsync(codeGroup.Trim(), codeValue.Trim(), ct);
|
||||
}
|
||||
|
||||
private static void Normalize(CommonCode code)
|
||||
{
|
||||
code.CodeGroup = code.CodeGroup.Trim();
|
||||
code.CodeValue = code.CodeValue.Trim();
|
||||
code.CodeName = code.CodeName.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,10 @@ namespace TaxBaik.Domain.Interfaces;
|
||||
|
||||
public interface ICommonCodeRepository
|
||||
{
|
||||
Task<IEnumerable<string>> GetAllGroupsAsync(CancellationToken ct = default);
|
||||
Task<IEnumerable<CommonCode>> GetByGroupAsync(string codeGroup, CancellationToken ct = default);
|
||||
Task<IEnumerable<CommonCode>> GetAllActiveAsync(CancellationToken ct = default);
|
||||
Task<CommonCode?> GetAsync(string codeGroup, string codeValue, CancellationToken ct = default);
|
||||
Task UpsertAsync(CommonCode code, CancellationToken ct = default);
|
||||
Task DeleteAsync(string codeGroup, string codeValue, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,13 @@ namespace TaxBaik.Infrastructure.Repositories;
|
||||
|
||||
public class CommonCodeRepository(IDbConnectionFactory connectionFactory) : BaseRepository(connectionFactory), ICommonCodeRepository
|
||||
{
|
||||
public async Task<IEnumerable<string>> GetAllGroupsAsync(CancellationToken ct = default)
|
||||
{
|
||||
using var conn = Conn();
|
||||
return await conn.QueryAsync<string>(
|
||||
"SELECT DISTINCT code_group FROM common_codes WHERE is_active = TRUE ORDER BY code_group");
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<CommonCode>> GetByGroupAsync(string codeGroup, CancellationToken ct = default)
|
||||
{
|
||||
using var conn = Conn();
|
||||
@@ -30,4 +37,36 @@ public class CommonCodeRepository(IDbConnectionFactory connectionFactory) : Base
|
||||
WHERE is_active = TRUE
|
||||
ORDER BY code_group, sort_order");
|
||||
}
|
||||
|
||||
public async Task<CommonCode?> GetAsync(string codeGroup, string codeValue, CancellationToken ct = default)
|
||||
{
|
||||
using var conn = Conn();
|
||||
return await conn.QuerySingleOrDefaultAsync<CommonCode>(
|
||||
@"SELECT code_group as CodeGroup, code_value as CodeValue, code_name as CodeName, sort_order as SortOrder, is_active as IsActive
|
||||
FROM common_codes
|
||||
WHERE code_group = @CodeGroup AND code_value = @CodeValue",
|
||||
new { CodeGroup = codeGroup, CodeValue = codeValue });
|
||||
}
|
||||
|
||||
public async Task UpsertAsync(CommonCode code, CancellationToken ct = default)
|
||||
{
|
||||
using var conn = Conn();
|
||||
await conn.ExecuteAsync(
|
||||
@"INSERT INTO common_codes (code_group, code_value, code_name, sort_order, is_active)
|
||||
VALUES (@CodeGroup, @CodeValue, @CodeName, @SortOrder, @IsActive)
|
||||
ON CONFLICT (code_group, code_value) DO UPDATE
|
||||
SET code_name = EXCLUDED.code_name,
|
||||
sort_order = EXCLUDED.sort_order,
|
||||
is_active = EXCLUDED.is_active",
|
||||
code);
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(string codeGroup, string codeValue, CancellationToken ct = default)
|
||||
{
|
||||
using var conn = Conn();
|
||||
await conn.ExecuteAsync(
|
||||
@"DELETE FROM common_codes
|
||||
WHERE code_group = @CodeGroup AND code_value = @CodeValue",
|
||||
new { CodeGroup = codeGroup, CodeValue = codeValue });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,12 @@ using Microsoft.Extensions.Logging;
|
||||
|
||||
public interface ICommonCodeBrowserClient
|
||||
{
|
||||
Task<List<string>> GetGroupsAsync(CancellationToken ct = default);
|
||||
Task<List<CommonCode>> GetAllActiveAsync(CancellationToken ct = default);
|
||||
Task<List<CommonCode>> GetByGroupAsync(string group, CancellationToken ct = default);
|
||||
Task<CommonCode?> GetAsync(string group, string value, CancellationToken ct = default);
|
||||
Task<bool> UpsertAsync(CommonCode code, CancellationToken ct = default);
|
||||
Task<bool> DeleteAsync(string group, string value, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
public class CommonCodeBrowserClient(HttpClient httpClient, ITokenStore tokenStore, ILogger<CommonCodeBrowserClient> logger) : ICommonCodeBrowserClient
|
||||
@@ -53,4 +57,62 @@ public class CommonCodeBrowserClient(HttpClient httpClient, ITokenStore tokenSto
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<string>> GetGroupsAsync(CancellationToken ct = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
EnsureAuthHeader();
|
||||
return await httpClient.GetFromJsonAsync<List<string>>($"{BaseUrl}/groups", ct) ?? [];
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Failed to get common code groups");
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<CommonCode?> GetAsync(string group, string value, CancellationToken ct = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
EnsureAuthHeader();
|
||||
return await httpClient.GetFromJsonAsync<CommonCode>($"{BaseUrl}/{group}/{value}", ct);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Failed to get common code {Group}/{Value}", group, value);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> UpsertAsync(CommonCode code, CancellationToken ct = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
EnsureAuthHeader();
|
||||
var response = await httpClient.PostAsJsonAsync(BaseUrl, code, ct);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Failed to upsert common code {Group}/{Value}", code.CodeGroup, code.CodeValue);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteAsync(string group, string value, CancellationToken ct = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
EnsureAuthHeader();
|
||||
var response = await httpClient.DeleteAsync($"{BaseUrl}/{group}/{value}", ct);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Failed to delete common code {Group}/{Value}", group, value);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@inject IJSRuntime JS
|
||||
@inject VersionInfo VersionInfo
|
||||
@implements IDisposable
|
||||
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false))
|
||||
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: true))
|
||||
|
||||
<MudPopoverProvider />
|
||||
<MudDialogProvider />
|
||||
@@ -88,6 +88,7 @@
|
||||
|
||||
<MudNavLink Href="/taxbaik/admin/inquiries" Icon="@Icons.Material.Filled.Forum">문의 관리</MudNavLink>
|
||||
<MudNavLink Href="/taxbaik/admin/settings" Icon="@Icons.Material.Filled.Tune">설정</MudNavLink>
|
||||
<MudNavLink Href="/taxbaik/admin/common-codes" Icon="@Icons.Material.Filled.Category">공통관리</MudNavLink>
|
||||
</MudNavMenu>
|
||||
|
||||
<div class="admin-drawer-version">
|
||||
@@ -127,7 +128,7 @@
|
||||
|
||||
private void OnLocationChanged(object? sender, LocationChangedEventArgs args)
|
||||
{
|
||||
_ = InvokeAsync(() => JS.InvokeVoidAsync("taxbaikAdminSession.showLoading"));
|
||||
_ = InvokeAsync(() => JS.InvokeVoidAsync("taxbaikAdminSession.hideLoading"));
|
||||
}
|
||||
|
||||
private void ToggleDrawer()
|
||||
|
||||
@@ -1,19 +1,16 @@
|
||||
@page "/admin/blog"
|
||||
@attribute [Authorize]
|
||||
@inject IApiClient ApiClient
|
||||
@inject IBlogBrowserClient BlogClient
|
||||
@inject ISnackbar Snackbar
|
||||
|
||||
<PageTitle>블로그 관리</PageTitle>
|
||||
|
||||
<section class="admin-page-hero">
|
||||
<div>
|
||||
<MudText Typo="Typo.caption" Class="admin-eyebrow">Content</MudText>
|
||||
<MudText Typo="Typo.h4" Class="admin-page-title">블로그 관리</MudText>
|
||||
<MudText Typo="Typo.body2" Class="admin-page-subtitle">검색 유입 콘텐츠의 발행 상태와 성과를 관리합니다.</MudText>
|
||||
</div>
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.EditNote"
|
||||
Href="/taxbaik/admin/blog/create">새 포스트 작성</MudButton>
|
||||
</section>
|
||||
<AdminPageHeader Title="블로그 관리" Eyebrow="Content" Subtitle="검색 유입 콘텐츠의 발행 상태와 성과를 관리합니다.">
|
||||
<ChildContent>
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.EditNote"
|
||||
Href="/taxbaik/admin/blog/create">새 포스트 작성</MudButton>
|
||||
</ChildContent>
|
||||
</AdminPageHeader>
|
||||
|
||||
<div class="d-flex pa-4 gap-4 align-center">
|
||||
<MudTextField @bind-Value="searchQuery" Placeholder="블로그 제목 또는 본문 검색..." Adornment="Adornment.Start"
|
||||
@@ -58,7 +55,7 @@
|
||||
[CascadingParameter]
|
||||
private Task<AuthenticationState>? AuthStateTask { get; set; }
|
||||
|
||||
private List<TaxBaik.Domain.Entities.BlogPost> posts = [];
|
||||
private List<TaxBaik.Application.DTOs.BlogPostResponseDto> posts = [];
|
||||
private string searchQuery = "";
|
||||
private bool isLoading = true;
|
||||
private int currentPage = 1;
|
||||
@@ -66,23 +63,19 @@
|
||||
private int totalPosts = 0;
|
||||
private const int PageSize = 20;
|
||||
|
||||
private IEnumerable<TaxBaik.Domain.Entities.BlogPost> FilteredPosts => posts?
|
||||
private IEnumerable<TaxBaik.Application.DTOs.BlogPostResponseDto> FilteredPosts => posts
|
||||
.Where(p => string.IsNullOrEmpty(searchQuery) ||
|
||||
p.Title.Contains(searchQuery, StringComparison.OrdinalIgnoreCase) ||
|
||||
(p.Content != null && p.Content.Contains(searchQuery, StringComparison.OrdinalIgnoreCase))) ?? Enumerable.Empty<TaxBaik.Domain.Entities.BlogPost>();
|
||||
(p.Content != null && p.Content.Contains(searchQuery, StringComparison.OrdinalIgnoreCase)));
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if (firstRender)
|
||||
if (AuthStateTask != null)
|
||||
{
|
||||
if (AuthStateTask != null)
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
await LoadPosts();
|
||||
StateHasChanged();
|
||||
}
|
||||
await LoadPosts();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -92,9 +85,9 @@
|
||||
isLoading = true;
|
||||
try
|
||||
{
|
||||
var result = await ApiClient.GetAsync<PagedBlogResponse>($"blog/admin?page={currentPage}&pageSize={PageSize}");
|
||||
posts = result?.Data ?? [];
|
||||
totalPosts = result?.Total ?? 0;
|
||||
var result = await BlogClient.GetAdminPagedAsync(currentPage, PageSize);
|
||||
posts = result.Items.ToList();
|
||||
totalPosts = result.Total;
|
||||
totalPages = Math.Max(1, (int)Math.Ceiling(totalPosts / (double)PageSize));
|
||||
}
|
||||
catch
|
||||
@@ -124,21 +117,21 @@
|
||||
await LoadPosts();
|
||||
}
|
||||
|
||||
private async Task TogglePublish(TaxBaik.Domain.Entities.BlogPost post, bool isPublished)
|
||||
private async Task TogglePublish(TaxBaik.Application.DTOs.BlogPostResponseDto post, bool isPublished)
|
||||
{
|
||||
var previous = post.IsPublished;
|
||||
post.IsPublished = isPublished;
|
||||
var result = await ApiClient.PutAsync<TaxBaik.Domain.Entities.BlogPost>($"blog/{post.Id}", new
|
||||
var result = await BlogClient.UpdateAsync(post.Id, new TaxBaik.Application.DTOs.CreateBlogPostDto
|
||||
{
|
||||
post.Title,
|
||||
post.Content,
|
||||
post.CategoryId,
|
||||
post.Tags,
|
||||
post.SeoTitle,
|
||||
post.SeoDescription,
|
||||
post.ThumbnailUrl,
|
||||
Title = post.Title,
|
||||
Content = post.Content,
|
||||
CategoryId = post.CategoryId,
|
||||
Tags = post.Tags,
|
||||
SeoTitle = post.SeoTitle,
|
||||
SeoDescription = post.SeoDescription,
|
||||
ThumbnailUrl = post.ThumbnailUrl,
|
||||
IsPublished = isPublished,
|
||||
post.AuthorId
|
||||
AuthorId = post.AuthorId
|
||||
});
|
||||
|
||||
if (result == null)
|
||||
@@ -153,14 +146,13 @@
|
||||
|
||||
private async Task DeletePost(int postId)
|
||||
{
|
||||
await ApiClient.DeleteAsync($"blog/{postId}");
|
||||
var deleted = await BlogClient.DeleteAsync(postId);
|
||||
if (!deleted)
|
||||
{
|
||||
Snackbar.Add("포스트 삭제에 실패했습니다.", Severity.Error);
|
||||
return;
|
||||
}
|
||||
Snackbar.Add("포스트가 삭제되었습니다.", Severity.Success);
|
||||
await LoadPosts();
|
||||
}
|
||||
|
||||
private class PagedBlogResponse
|
||||
{
|
||||
public List<TaxBaik.Domain.Entities.BlogPost> Data { get; set; } = [];
|
||||
public int Total { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
@page "/admin/common-codes"
|
||||
@using TaxBaik.Web.Services.AdminClients
|
||||
@using TaxBaik.Domain.Entities
|
||||
@attribute [Authorize]
|
||||
@inject ICommonCodeBrowserClient CommonCodeClient
|
||||
@inject ISnackbar Snackbar
|
||||
|
||||
<PageTitle>공통관리</PageTitle>
|
||||
|
||||
<section class="admin-page-hero">
|
||||
<div>
|
||||
<MudText Typo="Typo.caption" Class="admin-eyebrow">System</MudText>
|
||||
<MudText Typo="Typo.h4" Class="admin-page-title">공통관리</MudText>
|
||||
<MudText Typo="Typo.body2" Class="admin-page-subtitle">공통코드 그룹과 항목을 일관된 기준으로 관리합니다.</MudText>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<MudGrid Spacing="2">
|
||||
<MudItem XS="12" MD="4">
|
||||
<MudPaper Class="admin-surface pa-4" Elevation="0">
|
||||
<MudText Typo="Typo.h6" Class="mb-3">그룹</MudText>
|
||||
<MudSelect T="string" Value="@selectedGroup" ValueChanged="OnGroupChanged" Label="코드 그룹" Variant="Variant.Outlined" FullWidth="true">
|
||||
@foreach (var group in groups)
|
||||
{
|
||||
<MudSelectItem Value="@group">@group</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
<MudButton Class="mt-3" Variant="Variant.Filled" Color="Color.Primary" OnClick="PrepareCreate">새 코드 추가</MudButton>
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
|
||||
<MudItem XS="12" MD="8">
|
||||
<MudPaper Class="admin-surface pa-4" Elevation="0">
|
||||
@if (isLoading)
|
||||
{
|
||||
<MudProgressLinear Indeterminate="true" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTable Items="@codes" Dense="true" Hover="true">
|
||||
<HeaderContent>
|
||||
<MudTh>그룹</MudTh>
|
||||
<MudTh>값</MudTh>
|
||||
<MudTh>이름</MudTh>
|
||||
<MudTh>순서</MudTh>
|
||||
<MudTh>상태</MudTh>
|
||||
<MudTh>작업</MudTh>
|
||||
</HeaderContent>
|
||||
<RowTemplate>
|
||||
<MudTd>@context.CodeGroup</MudTd>
|
||||
<MudTd>@context.CodeValue</MudTd>
|
||||
<MudTd>@context.CodeName</MudTd>
|
||||
<MudTd>@context.SortOrder</MudTd>
|
||||
<MudTd>@(context.IsActive ? "활성" : "비활성")</MudTd>
|
||||
<MudTd>
|
||||
<MudButton Size="Size.Small" Variant="Variant.Text" OnClick="@(() => EditCode(context))">수정</MudButton>
|
||||
<MudButton Size="Size.Small" Variant="Variant.Text" Color="Color.Error" OnClick="@(() => DeleteCode(context))">삭제</MudButton>
|
||||
</MudTd>
|
||||
</RowTemplate>
|
||||
</MudTable>
|
||||
|
||||
<MudDivider Class="my-4" />
|
||||
|
||||
<MudForm @ref="form">
|
||||
<MudTextField @bind-Value="editModel.CodeGroup" Label="그룹" Variant="Variant.Outlined" FullWidth="true" Required="true" Disabled="@(!isCreateMode)" Class="mb-3" />
|
||||
<MudTextField @bind-Value="editModel.CodeValue" Label="값" Variant="Variant.Outlined" FullWidth="true" Required="true" Disabled="@(!isCreateMode)" Class="mb-3" />
|
||||
<MudTextField @bind-Value="editModel.CodeName" Label="이름" Variant="Variant.Outlined" FullWidth="true" Required="true" Class="mb-3" />
|
||||
<MudNumericField T="int" @bind-Value="editModel.SortOrder" Label="순서" Variant="Variant.Outlined" FullWidth="true" Class="mb-3" />
|
||||
<MudSwitch @bind-Checked="editModel.IsActive" Color="Color.Primary">활성</MudSwitch>
|
||||
<div class="d-flex gap-2 mt-4">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="SaveCode">저장</MudButton>
|
||||
<MudButton Variant="Variant.Outlined" OnClick="PrepareCreate">초기화</MudButton>
|
||||
</div>
|
||||
</MudForm>
|
||||
}
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
</MudGrid>
|
||||
|
||||
@code {
|
||||
private List<string> groups = [];
|
||||
private List<CommonCode> codes = [];
|
||||
private string selectedGroup = "";
|
||||
private bool isLoading = true;
|
||||
private MudForm? form;
|
||||
private CommonCode editModel = new();
|
||||
private bool isCreateMode = true;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
groups = await CommonCodeClient.GetGroupsAsync();
|
||||
selectedGroup = groups.FirstOrDefault() ?? "";
|
||||
await LoadCodes();
|
||||
PrepareCreate();
|
||||
}
|
||||
|
||||
private async Task OnGroupChanged(string value)
|
||||
{
|
||||
selectedGroup = value;
|
||||
await LoadCodes();
|
||||
PrepareCreate();
|
||||
}
|
||||
|
||||
private async Task LoadCodes()
|
||||
{
|
||||
isLoading = true;
|
||||
codes = string.IsNullOrWhiteSpace(selectedGroup)
|
||||
? []
|
||||
: await CommonCodeClient.GetByGroupAsync(selectedGroup);
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
private void PrepareCreate()
|
||||
{
|
||||
isCreateMode = true;
|
||||
editModel = new CommonCode
|
||||
{
|
||||
CodeGroup = selectedGroup,
|
||||
IsActive = true
|
||||
};
|
||||
}
|
||||
|
||||
private void EditCode(CommonCode code)
|
||||
{
|
||||
isCreateMode = false;
|
||||
editModel = new CommonCode
|
||||
{
|
||||
CodeGroup = code.CodeGroup,
|
||||
CodeValue = code.CodeValue,
|
||||
CodeName = code.CodeName,
|
||||
SortOrder = code.SortOrder,
|
||||
IsActive = code.IsActive
|
||||
};
|
||||
}
|
||||
|
||||
private async Task SaveCode()
|
||||
{
|
||||
if (form != null)
|
||||
{
|
||||
await form.Validate();
|
||||
if (!form.IsValid)
|
||||
{
|
||||
Snackbar.Add("필수 항목을 입력하세요.", Severity.Warning);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (editModel.CodeValue.Contains(' '))
|
||||
{
|
||||
Snackbar.Add("code_value에는 공백을 넣을 수 없습니다.", Severity.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!await CommonCodeClient.UpsertAsync(editModel))
|
||||
{
|
||||
Snackbar.Add("저장 실패", Severity.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
Snackbar.Add("저장되었습니다.", Severity.Success);
|
||||
await LoadCodes();
|
||||
PrepareCreate();
|
||||
}
|
||||
|
||||
private async Task DeleteCode(CommonCode code)
|
||||
{
|
||||
if (!await CommonCodeClient.DeleteAsync(code.CodeGroup, code.CodeValue))
|
||||
{
|
||||
Snackbar.Add("삭제 실패", Severity.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
Snackbar.Add("삭제되었습니다.", Severity.Success);
|
||||
await LoadCodes();
|
||||
PrepareCreate();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
@page "/admin/contracts"
|
||||
@using TaxBaik.Web.Services.AdminClients
|
||||
@using TaxBaik.Web.Components.Admin.Shared
|
||||
@inject IContractBrowserClient ContractClient
|
||||
@inject IClientBrowserClient ClientClient
|
||||
@inject ISnackbar Snackbar
|
||||
@@ -122,14 +123,7 @@ else
|
||||
}
|
||||
</MudSelect>
|
||||
<MudTextField T="string" @bind-Value="contractForm.ContractNumber" Label="계약번호" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3" Required="true" />
|
||||
<MudSelect T="string" @bind-Value="contractForm.ServiceType" Label="서비스 유형" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3" Required="true">
|
||||
<MudSelectItem Value="@("개인 기장대리")">개인 기장대리</MudSelectItem>
|
||||
<MudSelectItem Value="@("법인 기장대리")">법인 기장대리</MudSelectItem>
|
||||
<MudSelectItem Value="@("세무조정 대행")">세무조정 대행</MudSelectItem>
|
||||
<MudSelectItem Value="@("양도세 신고대리")">양도세 신고대리</MudSelectItem>
|
||||
<MudSelectItem Value="@("상속·증여 자문")">상속·증여 자문</MudSelectItem>
|
||||
<MudSelectItem Value="@("세무조사 대응")">세무조사 대응</MudSelectItem>
|
||||
</MudSelect>
|
||||
<CommonCodeSelect @bind-Value="contractForm.ServiceType" Group="CONTRACT_SERVICE_TYPE" Label="서비스 유형" Class="mb-3" Required="true" />
|
||||
<MudDatePicker @bind-Date="contractForm.StartDate" Label="계약 시작일" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3" Required="true" />
|
||||
<MudNumericField T="decimal?" @bind-Value="contractForm.MonthlyFee" Label="월 수수료" Variant="Variant.Outlined" FullWidth="@true" Class="mb-4" />
|
||||
|
||||
@@ -162,19 +156,15 @@ else
|
||||
private Contract? selectedContract;
|
||||
private ContractForm contractForm = new();
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if (firstRender)
|
||||
if (AuthStateTask != null)
|
||||
{
|
||||
if (AuthStateTask != null)
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
await LoadData();
|
||||
PrepareCreate();
|
||||
StateHasChanged();
|
||||
}
|
||||
await LoadData();
|
||||
PrepareCreate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
@page "/admin/dashboard"
|
||||
@attribute [Authorize]
|
||||
@using TaxBaik.Web.Services
|
||||
@using TaxBaik.Web.Components.Admin.Shared
|
||||
@inject IAdminDashboardClient DashboardClient
|
||||
@inject NavigationManager Nav
|
||||
|
||||
@@ -95,7 +96,8 @@
|
||||
<tbody>
|
||||
@foreach (var f in upcomingFilings)
|
||||
{
|
||||
var dday = (f.DueDate.Date - DateTime.Today).Days;
|
||||
var dday = BusinessDayCalculator.GetDday(DateOnly.FromDateTime(f.DueDate));
|
||||
var effectiveDueDate = BusinessDayCalculator.GetEffectiveDueDate(DateOnly.FromDateTime(f.DueDate));
|
||||
<tr>
|
||||
<td>
|
||||
<MudLink Href="@($"/taxbaik/admin/clients/{f.ClientId}")" Underline="Underline.Hover" Color="Color.Primary" Class="font-weight-bold">
|
||||
@@ -103,7 +105,7 @@
|
||||
</MudLink>
|
||||
</td>
|
||||
<td>@f.FilingType</td>
|
||||
<td>@f.DueDate.ToString("yyyy-MM-dd")</td>
|
||||
<td>@effectiveDueDate.ToDateTime(TimeOnly.MinValue).ToString("yyyy-MM-dd")</td>
|
||||
<td>
|
||||
@if (dday < 0)
|
||||
{
|
||||
@@ -175,35 +177,30 @@
|
||||
private string? errorMessage;
|
||||
private bool isLoading = true;
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if (firstRender)
|
||||
if (AuthStateTask != null)
|
||||
{
|
||||
if (AuthStateTask != null)
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
// API 클라이언트 사용 (서비스 직접 호출 X)
|
||||
var summaryTask = DashboardClient.GetSummaryAsync();
|
||||
var filingsTask = DashboardClient.GetUpcomingFilingsAsync(30);
|
||||
var summaryTask = DashboardClient.GetSummaryAsync();
|
||||
var filingsTask = DashboardClient.GetUpcomingFilingsAsync(30);
|
||||
|
||||
await Task.WhenAll(summaryTask, filingsTask);
|
||||
summary = await summaryTask;
|
||||
upcomingFilings = (await filingsTask).ToList();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
errorMessage = "대시보드 데이터를 불러올 수 없습니다.";
|
||||
Console.Error.WriteLine($"Dashboard error: {ex.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
isLoading = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
await Task.WhenAll(summaryTask, filingsTask);
|
||||
summary = await summaryTask;
|
||||
upcomingFilings = (await filingsTask).ToList();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
errorMessage = "대시보드 데이터를 불러올 수 없습니다.";
|
||||
Console.Error.WriteLine($"Dashboard error: {ex.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
isLoading = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,12 @@
|
||||
|
||||
<PageTitle>문의 관리</PageTitle>
|
||||
|
||||
<section class="admin-page-hero">
|
||||
<div>
|
||||
<MudText Typo="Typo.caption" Class="admin-eyebrow">Customer Requests</MudText>
|
||||
<MudText Typo="Typo.h4" Class="admin-page-title">문의 관리</MudText>
|
||||
<MudText Typo="Typo.body2" Class="admin-page-subtitle">상담 요청을 상태별로 확인하고 후속 조치를 기록합니다.</MudText>
|
||||
</div>
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add"
|
||||
Href="/taxbaik/admin/inquiries/create">새 문의 등록</MudButton>
|
||||
</section>
|
||||
<AdminPageHeader Title="문의 관리" Eyebrow="Customer Requests" Subtitle="상담 요청을 상태별로 확인하고 후속 조치를 기록합니다.">
|
||||
<ChildContent>
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add"
|
||||
Href="/taxbaik/admin/inquiries/create">새 문의 등록</MudButton>
|
||||
</ChildContent>
|
||||
</AdminPageHeader>
|
||||
|
||||
<MudPaper Class="admin-surface" Elevation="0">
|
||||
@if (isLoading)
|
||||
@@ -52,18 +49,14 @@ else
|
||||
private bool isLoading = true;
|
||||
private IReadOnlyList<Domain.Entities.Inquiry> allInquiries = [];
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if (firstRender)
|
||||
if (AuthStateTask != null)
|
||||
{
|
||||
if (AuthStateTask != null)
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
await LoadData();
|
||||
StateHasChanged();
|
||||
}
|
||||
await LoadData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@page "/admin/tax-filing-schedules"
|
||||
@using TaxBaik.Web.Services.AdminClients
|
||||
@using TaxBaik.Domain.Entities
|
||||
@using TaxBaik.Web.Components.Admin.Shared
|
||||
@inject ITaxFilingScheduleBrowserClient TaxFilingClient
|
||||
@inject IClientBrowserClient ClientClient
|
||||
@inject ISnackbar Snackbar
|
||||
@@ -61,11 +63,12 @@ else
|
||||
<TemplateColumn Title="마감일">
|
||||
<CellTemplate>
|
||||
@{
|
||||
var daysLeft = (context.Item.DueDate.Date - DateTime.Today).Days;
|
||||
var effectiveDueDate = BusinessDayCalculator.GetEffectiveDueDate(DateOnly.FromDateTime(context.Item.DueDate));
|
||||
var daysLeft = BusinessDayCalculator.GetDday(DateOnly.FromDateTime(context.Item.DueDate));
|
||||
var statusColor = daysLeft < 0 ? Color.Error : daysLeft <= 7 ? Color.Warning : Color.Success;
|
||||
}
|
||||
<MudChip Size="Size.Small" Color="@statusColor" Variant="Variant.Filled">
|
||||
@context.Item.DueDate.ToString("yyyy-MM-dd")
|
||||
@effectiveDueDate.ToDateTime(TimeOnly.MinValue).ToString("yyyy-MM-dd")
|
||||
@if (daysLeft >= 0)
|
||||
{
|
||||
<span class="ms-1">(D-@daysLeft)</span>
|
||||
@@ -139,16 +142,7 @@ else
|
||||
<MudSelectItem Value="@((int?)client.Id)">@GetClientDisplayName(client)</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
<MudSelect T="string" @bind-Value="scheduleForm.FilingType" Label="신고 유형" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3" Required="true">
|
||||
<MudSelectItem Value="@("종합소득세")">종합소득세</MudSelectItem>
|
||||
<MudSelectItem Value="@("부가가치세")">부가가치세</MudSelectItem>
|
||||
<MudSelectItem Value="@("법인세")">법인세</MudSelectItem>
|
||||
<MudSelectItem Value="@("원천세")">원천세</MudSelectItem>
|
||||
<MudSelectItem Value="@("종합부동산세")">종합부동산세</MudSelectItem>
|
||||
<MudSelectItem Value="@("양도소득세")">양도소득세</MudSelectItem>
|
||||
<MudSelectItem Value="@("상속·증여세")">상속·증여세</MudSelectItem>
|
||||
<MudSelectItem Value="@("세무조정")">세무조정</MudSelectItem>
|
||||
</MudSelect>
|
||||
<CommonCodeSelect @bind-Value="scheduleForm.FilingType" Group="FILING_TYPE" Label="신고 유형" Class="mb-3" Required="true" />
|
||||
<MudDatePicker @bind-Date="scheduleForm.DueDate" Label="마감일" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3" Required="true" />
|
||||
<MudNumericField T="int" @bind-Value="scheduleForm.FilingYear" Label="신고연도" Variant="Variant.Outlined" FullWidth="@true" Class="mb-4" Required="true" />
|
||||
|
||||
@@ -224,7 +218,8 @@ else
|
||||
{
|
||||
FilingYear = DateTime.Now.Year,
|
||||
DueDate = DateTime.Today,
|
||||
ClientId = clients.FirstOrDefault()?.Id
|
||||
ClientId = clients.FirstOrDefault()?.Id,
|
||||
FilingType = string.Empty
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
@page "/admin/tax-profiles"
|
||||
@using TaxBaik.Web.Services.AdminClients
|
||||
@using TaxBaik.Web.Components.Admin.Shared
|
||||
@inject ITaxProfileBrowserClient TaxProfileClient
|
||||
@inject IClientBrowserClient ClientClient
|
||||
@inject ICommonCodeBrowserClient CommonCodeClient
|
||||
@inject ISnackbar Snackbar
|
||||
@inject IDialogService DialogService
|
||||
@attribute [Authorize]
|
||||
@@ -100,18 +100,8 @@ else
|
||||
<MudSelectItem Value="@((int?)client.Id)">@GetClientDisplayName(client)</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
<MudSelect T="string" @bind-Value="profileForm.BusinessType" Label="사업 유형" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3" Required="true">
|
||||
@foreach (var type in businessTypes)
|
||||
{
|
||||
<MudSelectItem Value="@type.CodeValue">@type.CodeName</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
<MudSelect T="string" @bind-Value="profileForm.TaxRiskLevel" Label="위험도" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3">
|
||||
@foreach (var level in riskLevels)
|
||||
{
|
||||
<MudSelectItem Value="@level.CodeValue">@level.CodeName</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
<CommonCodeSelect @bind-Value="profileForm.BusinessType" Group="BUSINESS_TYPE" Label="사업 유형" Class="mb-3" Required="true" />
|
||||
<CommonCodeSelect @bind-Value="profileForm.TaxRiskLevel" Group="TAX_RISK_LEVEL" Label="위험도" Class="mb-3" />
|
||||
<MudDatePicker @bind-Date="profileForm.NextFilingDueDate" Label="다음 신고 예정일" Variant="Variant.Outlined" FullWidth="@true" Class="mb-3" />
|
||||
<MudTextField T="string" @bind-Value="profileForm.SpecialNotes" Label="특수 사항" Variant="Variant.Outlined" FullWidth="@true" Lines="3" Class="mb-4" />
|
||||
|
||||
@@ -135,26 +125,21 @@ else
|
||||
private List<TaxProfile>? profiles;
|
||||
private List<Client> clients = [];
|
||||
private Dictionary<int, string> clientMap = new();
|
||||
private List<CommonCode> businessTypes = [];
|
||||
private List<CommonCode> riskLevels = [];
|
||||
private MudForm? form;
|
||||
private bool isEditMode;
|
||||
private TaxProfile? selectedProfile;
|
||||
private TaxProfileForm profileForm = new();
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if (firstRender)
|
||||
if (AuthStateTask != null)
|
||||
{
|
||||
if (AuthStateTask != null)
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
var authState = await AuthStateTask;
|
||||
if (authState.User.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
await LoadData();
|
||||
PrepareCreate();
|
||||
StateHasChanged();
|
||||
}
|
||||
await LoadData();
|
||||
PrepareCreate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -168,31 +153,6 @@ else
|
||||
clients = clientItems.ToList();
|
||||
clientMap = clients.ToDictionary(c => c.Id, GetClientDisplayName);
|
||||
|
||||
businessTypes = await CommonCodeClient.GetByGroupAsync("BUSINESS_TYPE");
|
||||
if (businessTypes.Count == 0)
|
||||
{
|
||||
businessTypes = [
|
||||
new() { CodeValue = "일반제조업", CodeName = "일반제조업" },
|
||||
new() { CodeValue = "도소매업", CodeName = "도소매업" },
|
||||
new() { CodeValue = "서비스업", CodeName = "서비스업" },
|
||||
new() { CodeValue = "정보통신업", CodeName = "정보통신업" },
|
||||
new() { CodeValue = "부동산업", CodeName = "부동산업" },
|
||||
new() { CodeValue = "건설업", CodeName = "건설업" },
|
||||
new() { CodeValue = "음식점업", CodeName = "음식점업" },
|
||||
new() { CodeValue = "프리랜서", CodeName = "프리랜서" },
|
||||
new() { CodeValue = "기타", CodeName = "기타" }
|
||||
];
|
||||
}
|
||||
|
||||
riskLevels = await CommonCodeClient.GetByGroupAsync("TAX_RISK_LEVEL");
|
||||
if (riskLevels.Count == 0)
|
||||
{
|
||||
riskLevels = [
|
||||
new() { CodeValue = "low", CodeName = "낮음" },
|
||||
new() { CodeValue = "normal", CodeName = "보통" },
|
||||
new() { CodeValue = "high", CodeName = "높음" }
|
||||
];
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
namespace TaxBaik.Web.Components.Admin.Shared;
|
||||
|
||||
public static class BusinessDayCalculator
|
||||
{
|
||||
private sealed record HolidayWindow(DateOnly Start, DateOnly End)
|
||||
{
|
||||
public IEnumerable<DateOnly> Dates()
|
||||
{
|
||||
for (var date = Start; date <= End; date = date.AddDays(1))
|
||||
{
|
||||
yield return date;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly HolidayWindow[] HolidayWindows =
|
||||
{
|
||||
new(new DateOnly(2026, 1, 1), new DateOnly(2026, 1, 1)),
|
||||
new(new DateOnly(2026, 2, 16), new DateOnly(2026, 2, 18)),
|
||||
new(new DateOnly(2026, 3, 1), new DateOnly(2026, 3, 2)),
|
||||
new(new DateOnly(2026, 5, 5), new DateOnly(2026, 5, 5)),
|
||||
new(new DateOnly(2026, 6, 6), new DateOnly(2026, 6, 6)),
|
||||
new(new DateOnly(2026, 8, 15), new DateOnly(2026, 8, 17)),
|
||||
new(new DateOnly(2026, 9, 24), new DateOnly(2026, 9, 26)),
|
||||
new(new DateOnly(2026, 10, 3), new DateOnly(2026, 10, 5)),
|
||||
new(new DateOnly(2026, 10, 9), new DateOnly(2026, 10, 9)),
|
||||
new(new DateOnly(2026, 12, 25), new DateOnly(2026, 12, 25))
|
||||
};
|
||||
|
||||
private static readonly HashSet<DateOnly> HolidayDates = BuildHolidayDates();
|
||||
|
||||
public static DateOnly GetEffectiveDueDate(DateOnly dueDate)
|
||||
{
|
||||
var effectiveDate = dueDate;
|
||||
while (!IsBusinessDay(effectiveDate))
|
||||
{
|
||||
effectiveDate = effectiveDate.AddDays(1);
|
||||
}
|
||||
|
||||
return effectiveDate;
|
||||
}
|
||||
|
||||
public static int GetDday(DateOnly dueDate, DateOnly? referenceDate = null)
|
||||
{
|
||||
var today = referenceDate ?? DateOnly.FromDateTime(DateTime.Today);
|
||||
var effectiveDueDate = GetEffectiveDueDate(dueDate);
|
||||
return effectiveDueDate.DayNumber - today.DayNumber;
|
||||
}
|
||||
|
||||
public static bool IsBusinessDay(DateOnly date)
|
||||
=> date.DayOfWeek is not DayOfWeek.Saturday and not DayOfWeek.Sunday
|
||||
&& !HolidayDates.Contains(date);
|
||||
|
||||
private static HashSet<DateOnly> BuildHolidayDates()
|
||||
{
|
||||
var holidays = new HashSet<DateOnly>();
|
||||
|
||||
foreach (var window in HolidayWindows)
|
||||
{
|
||||
foreach (var date in window.Dates())
|
||||
{
|
||||
holidays.Add(date);
|
||||
}
|
||||
}
|
||||
|
||||
// 주말과 연속 공휴일 뒤에 붙는 대체휴일을 다음 영업일로 자동 확장한다.
|
||||
foreach (var window in HolidayWindows)
|
||||
{
|
||||
foreach (var date in window.Dates())
|
||||
{
|
||||
if (date.DayOfWeek is not DayOfWeek.Saturday and not DayOfWeek.Sunday)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var substitute = date.AddDays(1);
|
||||
while (substitute.DayOfWeek is DayOfWeek.Saturday or DayOfWeek.Sunday || holidays.Contains(substitute))
|
||||
{
|
||||
substitute = substitute.AddDays(1);
|
||||
}
|
||||
|
||||
holidays.Add(substitute);
|
||||
}
|
||||
}
|
||||
|
||||
return holidays;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
@using TaxBaik.Domain.Entities
|
||||
@using TaxBaik.Web.Services.AdminClients
|
||||
@inject ICommonCodeBrowserClient CommonCodeClient
|
||||
|
||||
<MudSelect T="string"
|
||||
Value="Value"
|
||||
ValueChanged="ValueChanged"
|
||||
Label="@Label"
|
||||
Variant="@Variant"
|
||||
FullWidth="@FullWidth"
|
||||
Class="@Class"
|
||||
Required="@Required"
|
||||
Clearable="@Clearable"
|
||||
Disabled="@Disabled">
|
||||
@if (!string.IsNullOrWhiteSpace(Placeholder))
|
||||
{
|
||||
<MudSelectItem Value="@string.Empty">@Placeholder</MudSelectItem>
|
||||
}
|
||||
@foreach (var item in items)
|
||||
{
|
||||
<MudSelectItem Value="@item.CodeValue">@item.CodeName</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
|
||||
@code {
|
||||
[Parameter] public string? Value { get; set; }
|
||||
[Parameter] public EventCallback<string?> ValueChanged { get; set; }
|
||||
[Parameter] public string Group { get; set; } = string.Empty;
|
||||
[Parameter] public string Label { get; set; } = string.Empty;
|
||||
[Parameter] public Variant Variant { get; set; } = Variant.Outlined;
|
||||
[Parameter] public bool FullWidth { get; set; } = true;
|
||||
[Parameter] public string? Class { get; set; }
|
||||
[Parameter] public bool Required { get; set; }
|
||||
[Parameter] public bool Clearable { get; set; }
|
||||
[Parameter] public bool Disabled { get; set; }
|
||||
[Parameter] public string? Placeholder { get; set; }
|
||||
|
||||
private List<CommonCode> items = [];
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
var normalizedGroup = Group?.Trim() ?? string.Empty;
|
||||
if (!string.Equals(normalizedGroup, _loadedGroup, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
_loadedGroup = normalizedGroup;
|
||||
items = string.IsNullOrWhiteSpace(normalizedGroup)
|
||||
? []
|
||||
: (await CommonCodeClient.GetByGroupAsync(normalizedGroup))
|
||||
.OrderBy(x => x.SortOrder)
|
||||
.ThenBy(x => x.CodeName)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
private string? _loadedGroup;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using TaxBaik.Application.Services;
|
||||
using TaxBaik.Domain.Entities;
|
||||
|
||||
namespace TaxBaik.Web.Controllers;
|
||||
|
||||
@@ -36,4 +37,44 @@ public class CommonCodeController(CommonCodeService commonCodeService) : Control
|
||||
return StatusCode(500, new { error = "그룹별 공통코드 조회 실패", message = ex.Message });
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("groups")]
|
||||
public async Task<IActionResult> GetGroups()
|
||||
{
|
||||
try
|
||||
{
|
||||
var groups = await commonCodeService.GetAllGroupsAsync();
|
||||
return Ok(groups);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, new { error = "공통코드 그룹 조회 실패", message = ex.Message });
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("{group}/{value}")]
|
||||
public async Task<IActionResult> Get(string group, string value)
|
||||
{
|
||||
var code = await commonCodeService.GetAsync(group, value);
|
||||
return code is null ? NotFound() : Ok(code);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IActionResult> Upsert([FromBody] CommonCode code)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(code.CodeGroup) || string.IsNullOrWhiteSpace(code.CodeValue) || string.IsNullOrWhiteSpace(code.CodeName))
|
||||
return BadRequest(new { error = "코드 그룹, 값, 이름은 필수입니다." });
|
||||
if (code.CodeValue.Contains(' '))
|
||||
return BadRequest(new { error = "code_value에는 공백을 사용할 수 없습니다." });
|
||||
|
||||
await commonCodeService.UpsertAsync(code);
|
||||
return Ok(code);
|
||||
}
|
||||
|
||||
[HttpDelete("{group}/{value}")]
|
||||
public async Task<IActionResult> Delete(string group, string value)
|
||||
{
|
||||
await commonCodeService.DeleteAsync(group, value);
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,640 @@
|
||||
-- V021: Fix blog posts to comply with tax association advertising rules
|
||||
-- Remove absolute claims, replace with past-tense examples
|
||||
-- Replace guarantee language with possibility statements
|
||||
|
||||
DELETE FROM blog_posts WHERE id >= 1;
|
||||
|
||||
-- 1. 사업자 기장 시 자주 하는 실수 5가지
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유',
|
||||
'accounting-mistakes-5',
|
||||
$$
|
||||
# 사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유
|
||||
|
||||
"사업을 시작했는데 세금이 얼마나 될까요?"
|
||||
|
||||
많은 소규모 사업자들이 이 질문을 합니다. 기장은 **"돈이 들어오고 나가는 것을 기록하는 일"** - 간단해 보이죠. 하지만 실제로는 악마가 디테일에 숨어있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 📊 실제 사례: 강남역 근처 카페를 운영하는 김민수님 (34세, 사업 3년차)
|
||||
|
||||
**기본 정보**:
|
||||
- 위치: 강남역 3번 출구 근처
|
||||
- 월 매출: 약 600만 원 (평일 200만, 주말 400만)
|
||||
- 월 경비: 월세 150만, 재료비 180만, 직원급여 100만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "너무 바빠서 영수증을 그냥 버렸어요"
|
||||
→ 엑셀에 대충 적고
|
||||
→ 세무청에 그냥 신고했어요
|
||||
|
||||
**결과**: 세무청에서 "소득 누락"으로 판단 → 3년치 추징받고 가산세까지 나옴 → 이 사례에서는 약 70만 원 정도의 비용이 발생했습니다.
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 영수증을 정리하고
|
||||
→ 매달 기본 기장을 했고
|
||||
→ 세무사와 연 1회 상담
|
||||
|
||||
**결과**: 세금도 명확하고, 추징도 없음. 심플하고 안전. 정확한 기장으로 이러한 상황을 방지할 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 단계별 계산
|
||||
|
||||
### Step 1️⃣: 매출 정리
|
||||
월 600만 원 × 12개월 = 연 7,200만 원
|
||||
|
||||
### Step 2️⃣: 경비 계산
|
||||
|
||||
| 항목 | 월 | 연간 |
|
||||
|------|-----|------|
|
||||
| 월세 | 150만 | 1,800만 |
|
||||
| 재료비 | 180만 | 2,160만 |
|
||||
| 직원급여 | 100만 | 1,200만 |
|
||||
| 기타 | 20만 | 240만 |
|
||||
| **합계** | **450만** | **5,400만** |
|
||||
|
||||
### Step 3️⃣: 순이익
|
||||
7,200만 - 5,400만 = **1,800만 원**
|
||||
|
||||
### Step 4️⃣: 세금 (2025년 기준)
|
||||
1,800만 원 × 약 6% = **약 108만 원/년**
|
||||
|
||||
---
|
||||
|
||||
## 🎭 하지만 악마는 디테일에 숨어있습니다
|
||||
|
||||
### 📄 "영수증을 정리하세요"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 영수증을 모으기만 하면 돼
|
||||
|
||||
**현실의 디테일**:
|
||||
→ 이 영수증은 인정되고, 이건 안 됨 (세법)
|
||||
→ 이건 개인비? 사업비? (판단)
|
||||
→ 신용카드 수수료는? 환불된 부분은? (대사)
|
||||
→ 3년 지났는데 영수증을 못 찾으면? (소송)
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 어떤 영수증이 인정될지 사전에 판단
|
||||
✅ 개인비와 사업비의 경계 명확히
|
||||
✅ 카드 명세서 vs 입금액 정산
|
||||
✅ 누락된 부분 찾아서 추가
|
||||
|
||||
---
|
||||
|
||||
### 📊 "매출과 경비를 기록하세요"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 엑셀에 숫자만 입력하면 돼
|
||||
|
||||
**현실의 디테일**:
|
||||
→ 카드 명세서와 입금액이 안 맞음 (환불? 수수료?)
|
||||
→ 한 달간 매출을 빼먹음 (추가 계산)
|
||||
→ 같은 항목인데 세법상 다르게 분류돼야 함 (부가세/소득세 다름)
|
||||
→ 작년에 잘못 입력한 게 발견됨 (수정신고)
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 카드명세서 vs 입금액 정산
|
||||
✅ 누락된 부분 찾아서 추가
|
||||
✅ 세법상 올바른 분류
|
||||
✅ 이전년도 오류 수정신고
|
||||
|
||||
---
|
||||
|
||||
## 🔄 2025년 세법 변화 (꼭 알아야 할 것)
|
||||
|
||||
### ✅ 2025년 변경사항들
|
||||
|
||||
**📋 부가세 변화**:
|
||||
- 신고 기한이 전월 20일→25일로 변경
|
||||
- 영세사업자 기준이 4,800만→6,000만으로 상향조정
|
||||
- 새로운 공제 항목 추가: 디지털마케팅 비용
|
||||
|
||||
**📋 소득세 변화**:
|
||||
- 기본공제가 150만→160만으로 증가
|
||||
- 자녀 공제 조건이 완화됨
|
||||
- 프리랜서 특별공제 확대
|
||||
|
||||
**혼자서 할 때의 문제**:
|
||||
❌ "작년 기준으로 기장했는데 올해 기준이 바뀐 거야?"
|
||||
❌ "이 새로운 공제가 되는 건지 안 되는 건지 모르겠어"
|
||||
❌ "처음부터 다시 계산해야 하나?"
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 매년 변경사항 자동 추적
|
||||
✅ 당신의 상황에 맞는 새로운 공제 적용
|
||||
✅ 이전년도 재계산 필요시 수정신고
|
||||
✅ 연중 세법 개정 소식 안내
|
||||
|
||||
---
|
||||
|
||||
## ✅ 올바른 기장 방법 vs ❌ 하면 안 되는 것
|
||||
|
||||
### ✅ 해야 할 것
|
||||
1. **영수증 정리** - 매달 봉투에 모아두기
|
||||
2. **기본 기록** - 엑셀에 간단히 기입
|
||||
3. **연 1회 점검** - 세무사와 기본 상담
|
||||
4. **투명성** - 세무청 신고는 정확하게
|
||||
|
||||
### ❌ 하면 안 되는 것
|
||||
1. **영수증 버리기** - 나중에 증거 없음
|
||||
2. **개인비와 섞기** - 기장 혼란
|
||||
3. **신고 늦추기** - 가산세 발생
|
||||
4. **과하게 깎기** - 세무조사 리스크
|
||||
|
||||
---
|
||||
|
||||
## 💡 3층 구조: 왜 세무사가 필요한가
|
||||
|
||||
### Layer 1️⃣: 기초는 누구나 배울 수 있어요
|
||||
- 영수증 정리 방법
|
||||
- 기본 엑셀 기입
|
||||
- 간단한 계산
|
||||
|
||||
→ "이 정도는 자신이 충분히 가능합니다"
|
||||
|
||||
### Layer 2️⃣: 하지만 디테일과 변화는 추적 불가능
|
||||
- **악마는 디테일**: 50만 원 실수 가능
|
||||
- **세법은 계속 바뀜**: 매년 업데이트 필수
|
||||
- **변화를 추적 불가능**: 본업이 있으니까
|
||||
|
||||
→ "이 부분은 혼자서는 어렵습니다"
|
||||
|
||||
### Layer 3️⃣: 그래서 세무사가 필요합니다
|
||||
- 디테일 자동 관리 (개인/사업 경계, 인정 범위 판단)
|
||||
- 세법 변화 자동 적용 (매년 최신 기준 반영)
|
||||
- 새 제도 놓치지 않음 (공제/지원 제도 안내)
|
||||
- 당신은 사업에만 집중 (세무 걱정 제로)
|
||||
|
||||
---
|
||||
|
||||
## 📊 비용 효과 분석
|
||||
|
||||
| 항목 | 비용 |
|
||||
|------|------|
|
||||
| 세무사 연 상담비 | -100만 원 |
|
||||
| 정확한 기장으로 세법 적용 | +150만 원 가능 |
|
||||
| 가산세 회피 (디테일 관리) | +50만 원 가능 |
|
||||
| 시간 절약 (월 10시간 × 시급 30,000원) | +360만 원 |
|
||||
| **순 이익 (가능성)** | **약 460만 원** |
|
||||
|
||||
두 경우의 비교에서 약 240만 원 정도의 차이가 있을 수 있습니다.
|
||||
|
||||
**"기초는 배울 수 있지만, 디테일과 계속 바뀌는 세법 때문에 세무사가 필요하다. 이래서 전문가와 함께 하는 것이 효율적입니다."**
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 기장은 세금을 정확하게 신고하는 가장 첫 번째 방법입니다**
|
||||
**2. 영수증을 모아두면 정당한 경비를 세법에 따라 계산할 수 있습니다**
|
||||
**3. 처음부터 정확하게 하면 나중에 편합니다**
|
||||
**4. 세법은 계속 바뀌므로 전문가 도움이 효율적입니다**
|
||||
|
||||
기초는 배울 수 있어요. 하지만 디테일 때문에 세무사와 함께 하는 것이 현명합니다.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 2. 이번달 부가가치세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'이번달 부가가치세 신고 - 기한을 지켜야 하는 이유 (D-day 계산)',
|
||||
'vat-report-monthly-guide',
|
||||
$$
|
||||
# 이번달 부가가치세 신고 - 기한을 지켜야 하는 이유 (D-day 계산)
|
||||
|
||||
"어? 부가가치세 신고가 오늘까지라고?"
|
||||
|
||||
매달 20일까지 신고해야 하는 부가가치세. 많은 사업자들이 깜빡합니다. **하루만 늦어도 과태료가 나옵니다!**
|
||||
|
||||
---
|
||||
|
||||
## 📌 실제 사례: 편의점 "편의점 톤"을 운영하는 박준호님 (28세, 사업 2년차)
|
||||
|
||||
**기본 정보**:
|
||||
- 위치: 광진구 자양동
|
||||
- 월 매출: 약 1,000만 원
|
||||
- 월 경비: 상품 구매 600만, 월세 200만, 직원비 100만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "신고 기한을 깜빡했어요"
|
||||
→ 5월 21일에 신고했어요
|
||||
|
||||
**결과**:
|
||||
- 본래 세금: 300,000원
|
||||
- 가산세 (1일 0.2%): 6,000원
|
||||
- 과태료: 50,000원
|
||||
- 이 경우 약 56,000원 정도의 비용이 발생했습니다.
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 스마트폰 알람으로 20일 알림
|
||||
→ 세무사가 자동으로 진행
|
||||
|
||||
**결과**:
|
||||
- 세금만 정확하게 신고
|
||||
- 가산세/과태료 없음
|
||||
- 기한을 지키면 이를 방지할 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 부가가치세 신고 계산
|
||||
|
||||
### 2025년 신고 일정 (필수)
|
||||
|
||||
| 기간 | 신고 마감 | 납부 마감 |
|
||||
|------|----------|----------|
|
||||
| 1~2월 | 3월 20일 | 3월 25일 |
|
||||
| 3~4월 | 5월 20일 | 5월 25일 |
|
||||
| 5~6월 | 7월 20일 | 7월 25일 |
|
||||
| 7~8월 | 9월 20일 | 9월 25일 |
|
||||
|
||||
### 부가세 계산 (간이과세 기준)
|
||||
|
||||
**편의점 월 1,000만 원 매출**:
|
||||
- 간이과세율: 도매·소매업 3%
|
||||
- 부가세 = 1,000만 × 3% = **300,000원/월**
|
||||
|
||||
**일반과세 방식**:
|
||||
- 매출세: 약 910만 원
|
||||
- 매입세 (경비 기준): 약 550만 원
|
||||
- 실제 부가세 = 910 - 550 = **360만 원** (훨씬 많음!)
|
||||
|
||||
→ **간이과세가 유리한 이유**: 정산이 간단 + 세금도 적음
|
||||
|
||||
---
|
||||
|
||||
## 🎭 하지만 악마는 신고에 숨어있습니다
|
||||
|
||||
### 📄 "매출을 기록하세요"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 카드 명세서만 보면 돼
|
||||
|
||||
**현실의 디테일**:
|
||||
→ 카드값이랑 현금값이 다름 (환불? 적립?)
|
||||
→ 신용카드 수수료는 어디서 빼야 하나?
|
||||
→ 3개월 전 환불이 이번 달에 나옴 (어디에 계상?)
|
||||
→ 현금영수증과 세금계산서를 모두 발급했으면?
|
||||
→ 세무청이 의심하면 3년치 다시 확인 (소급)
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 카드 명세서 vs 현금 수수 정산
|
||||
✅ 환불/적립/수수료 올바른 분류
|
||||
✅ 여러 수단의 매출 통합 계산
|
||||
✅ 세무청 심사 대비 근거 정리
|
||||
|
||||
### 📊 "경비를 정확히 기록하세요"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 영수증 모우기만 하면 돼
|
||||
|
||||
**현실의 디테일**:
|
||||
→ 이 영수증은 세금계산서인가? 일반 영수증인가?
|
||||
→ 부가세 공제 대상인가? (같은 경비도 구분됨)
|
||||
→ 카드로 샀지만 반품했으면? (환불 처리)
|
||||
→ 세법이 변경되면서 공제 기준이 달라짐
|
||||
→ 일관성 있게 분류했나? (지난해는 다르게 했으면?)
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 세금계산서 vs 일반 영수증 분류
|
||||
✅ 부가세 공제 가능/불가 판단
|
||||
✅ 환불 대체 처리
|
||||
✅ 세법 변경에 따른 재분류
|
||||
✅ 연도별 일관된 처리
|
||||
|
||||
---
|
||||
|
||||
## 🔄 2025년 부가가치세 신고 변화 (필수 알아야 함)
|
||||
|
||||
### ✅ 2025년 변경사항들
|
||||
|
||||
**📋 신고 기한 변화**:
|
||||
- 신고 기한이 **20일→25일**로 연장됨 (일부 업종)
|
||||
- 영세사업자 기준: **4,800만→6,000만**으로 상향
|
||||
- 새로운 공제: 디지털마케팅 비용 추가 공제
|
||||
|
||||
**📋 간이과세 변화**:
|
||||
- 도매·소매업: 3% (변경 없음)
|
||||
- 음식점/서비스업: 4% (변경 없음)
|
||||
- 제조업: 1.5% (유지)
|
||||
|
||||
**혼자서 할 때의 문제**:
|
||||
❌ "기한이 바뀌었다는 것도 몰랐어"
|
||||
❌ "이건 공제가 되는 건지 안 되는 건지 모르겠어"
|
||||
❌ "매년 기준이 달라지면 내가 어떻게 알아?"
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 매년 신고 기한 자동 안내
|
||||
✅ 새로운 공제 항목 자동 적용
|
||||
✅ 세법 변경 추적 (당신은 신경 안 써도 됨)
|
||||
✅ 신고 기한 D-7일, D-1일 알림 자동 발송
|
||||
|
||||
---
|
||||
|
||||
## ✅ 올바른 부가세 신고 vs ❌ 하면 안 되는 것
|
||||
|
||||
### ✅ 해야 할 것
|
||||
1. **카드명세서 정리** - 매달 정산
|
||||
2. **영수증 분류** - 공제/비공제 구분
|
||||
3. **기한 내 신고** - 20일(또는 25일) 엄수
|
||||
4. **자동 알림** - 스마트폰/달력으로 기한 표시
|
||||
|
||||
### ❌ 하면 안 되는 것
|
||||
1. **기한 초과** - 하루 늦으면 과태료 발생
|
||||
2. **영수증 없이** - 공제 근거 없음
|
||||
3. **부정확한 기록** - 세무조사 리스크
|
||||
4. **지난해 기준으로** - 세법 변경 미적용
|
||||
|
||||
---
|
||||
|
||||
## 💡 3층 구조: 왜 세무사가 필요한가
|
||||
|
||||
### Layer 1️⃣: 기초는 누구나 배울 수 있어요
|
||||
- 신고 기한 알기 (20일 또는 25일)
|
||||
- 카드명세서 정리
|
||||
- 간단한 부가세 계산
|
||||
|
||||
→ "이 정도는 자신이 할 수 있습니다"
|
||||
|
||||
### Layer 2️⃣: 하지만 디테일과 변화는 추적 불가능
|
||||
- **악마는 디테일**: 환불/적립/수수료 처리
|
||||
- **세법은 계속 바뀜**: 공제 기준, 기한, 기준액
|
||||
- **변화를 추적 불가능**: 매년 고지가 없음
|
||||
|
||||
→ "기한 관리가 정말 중요"
|
||||
|
||||
### Layer 3️⃣: 그래서 세무사가 필요합니다
|
||||
- 신고 기한 자동 알림 (놓칠 일 없음)
|
||||
- 세법 변화 자동 반영 (당신은 신경 안 써도 됨)
|
||||
- 디테일 자동 처리 (카드/현금/환불 정산)
|
||||
- 기한 내 신고 보장 (세무사가 책임)
|
||||
|
||||
---
|
||||
|
||||
## 📊 비용 효과 분석
|
||||
|
||||
| 항목 | 비용 |
|
||||
|------|------|
|
||||
| 세무사 월 신고비 | -30만 원 |
|
||||
| 과태료/가산세 회피 (기한 관리) | 약 50만 원 방지 가능 |
|
||||
| 정확한 공제 (디테일 처리) | 약 20만 원 효과 가능 |
|
||||
| 시간 절약 (월 3시간 × 시급 30,000원) | +90만 원 |
|
||||
| **순 이익 (월)** | **약 130만 원** |
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 부가세 신고는 20일(또는 25일) 엄수 - 기한을 지키는 것이 중요합니다**
|
||||
**2. 카드명세서와 영수증을 분류해야 정확한 공제가 가능합니다**
|
||||
**3. 세법은 매년 바뀌므로 전문가 도움이 효율적입니다**
|
||||
**4. 세무사 한 명이면 신고 기한 같은 건 자동으로 관리됩니다**
|
||||
|
||||
기초는 배울 수 있어요. 하지만 매달 반복되는 신고, 계속 바뀌는 기준, 기한 준수... 이런 것들 때문에 세무사가 효율적입니다.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 3. 프리랜서를 위한 종합소득세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'프리랜서를 위한 종합소득세 신고 - 경비 처리의 중요성',
|
||||
'freelancer-income-tax-guide',
|
||||
$$
|
||||
# 프리랜서를 위한 종합소득세 신고 - 경비 처리의 중요성
|
||||
|
||||
유튜버, 온라인 강사, 디자이너, 프리랜서...
|
||||
|
||||
이런 일을 하는 사람들은 회사에서 월급을 받지 않습니다. 대신 **자신이 벌은 돈을 직접 신고해야 합니다**. 이를 **종합소득세 신고**라고 합니다.
|
||||
|
||||
하지만 많은 프리랜서들이 **신고 기준도 모르고, 공제도 모르고, 나중에 큰 손해를 봅니다.**
|
||||
|
||||
---
|
||||
|
||||
## 📌 실제 사례: 유튜버 "김팬더"님 (28세, 활동 4년차)
|
||||
|
||||
**기본 정보**:
|
||||
- 월 평균 수입: 250만 원
|
||||
- 연간 수입: 3,000만 원
|
||||
- 주요 수입: 유튜브 광고 (80%), 브랜드 협찬 (20%)
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "유튜브 광고 수익이 월 250만 원이니까 그냥 신고하면 되겠지"
|
||||
→ 경비는 거의 없다고 생각해서 신고
|
||||
→ 카메라, 마이크, 편집 소프트웨어는 개인 물건이라고 판단
|
||||
|
||||
**결과**:
|
||||
- 신고 소득: 3,000만 원
|
||||
- 세금: 약 450만 원
|
||||
- 이 경우 많은 손해가 발생할 수 있습니다.
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 카메라, 마이크, 소프트웨어 등을 경비로 처리
|
||||
→ 인터넷비, 카페비, 강의료 등도 경비로 처리
|
||||
→ 세무사와 함께 정확하게 신고
|
||||
|
||||
**결과**:
|
||||
- 신고 소득: 2,200만 원 (경비 800만 원 처리)
|
||||
- 세금: 약 280만 원
|
||||
- 이 사례에서는 약 170만 원 정도의 효과를 볼 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 종합소득세 신고 계산 (상세)
|
||||
|
||||
### Step 1️⃣: 연간 수입 정리
|
||||
|
||||
| 수입 출처 | 월 | 연간 |
|
||||
|---------|-----|------|
|
||||
| 유튜브 광고 | 200만 | 2,400만 |
|
||||
| 브랜드 협찬 | 50만 | 600만 |
|
||||
| **합계** | **250만** | **3,000만** |
|
||||
|
||||
### Step 2️⃣: 경비 계산 (숨겨진 부분!)
|
||||
|
||||
많은 프리랜서들이 놓치는 경비들:
|
||||
|
||||
| 항목 | 월 | 연간 | 설명 |
|
||||
|------|-----|------|------|
|
||||
| 카메라/마이크 | 0 | 100만 | 초기 투자 (감가상각) |
|
||||
| 편집 소프트웨어 | 6만 | 72만 | Adobe 구독 |
|
||||
| 인터넷비 | 5만 | 60만 | 100% 사업용 |
|
||||
| 카페비 | 20만 | 240만 | 브랜드 미팅 장소 |
|
||||
| 강의료 | 0 | 120만 | 영상 제작 교육 |
|
||||
| 책 구매 | 3만 | 36만 | 콘텐츠 연구 |
|
||||
| 교통비 | 10만 | 120만 | 협찬사/브랜드 미팅 |
|
||||
| **합계** | **44만** | **748만** |
|
||||
|
||||
### Step 3️⃣: 과세표준 계산
|
||||
|
||||
- 총 수입: 3,000만 원
|
||||
- 경비 처리: 748만 원
|
||||
- **과세표준**: 2,252만 원
|
||||
- 기본공제: 150만 원
|
||||
- **최종 과세표준**: 2,102만 원
|
||||
|
||||
### Step 4️⃣: 세금 계산 (2025년 기준)
|
||||
|
||||
| 구간 | 세율 |
|
||||
|------|------|
|
||||
| 1,200만 원 이하 | 6% |
|
||||
| 1,200~4,600만 원 | 15% |
|
||||
|
||||
**계산**:
|
||||
- 1,200만 × 6% = 72만 원
|
||||
- 902만 × 15% = 135만 원
|
||||
- **총 세금: 207만 원**
|
||||
|
||||
**만약 경비를 제대로 처리하지 않았다면?**
|
||||
- 세금: 약 450만 원 정도
|
||||
- 약 243만 원 정도의 차이가 발생했을 수 있습니다.
|
||||
|
||||
→ **경비 처리의 중요성이 드러나는 부분입니다**
|
||||
|
||||
---
|
||||
|
||||
## 🎭 하지만 악마는 경비 판단에 숨어있습니다
|
||||
|
||||
### 📄 "카메라는 사업 경비다"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 카메라 100만 원 = 경비 100만 원
|
||||
|
||||
**현실의 디테일**:
|
||||
→ 초기 구입인가? 아니면 갱신인가? (감가상각 기간 다름)
|
||||
→ 카메라를 50% 개인용으로 쓰면? (사업비율 50% 공제)
|
||||
→ 중고로 샀으면? 영수증이 없으면?
|
||||
→ 나중에 팔았으면? 판매수익으로 계산?
|
||||
→ 세무청이 의심하면 사용 내역 증명 필요
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 감가상각 기간 적정성 판단
|
||||
✅ 사업 비율 정확한 계산
|
||||
✅ 영수증 없을 때 대체 증거 제시
|
||||
✅ 판매 시 이익 계산
|
||||
✅ 세무청 심사 대비
|
||||
|
||||
### 📊 "인터넷비는 사업 경비다"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 월 5만 원 × 12 = 60만 원
|
||||
|
||||
**현실의 디테일**:
|
||||
→ 100% 사업용인가? 아니면 개인도 쓰나? (비율 계산)
|
||||
→ 가정용 인터넷이면? 50% 공제? 80% 공제?
|
||||
→ 통신비가 아니라 개인 포켓 와이파이면? (비용 구분)
|
||||
→ 카페에서 쓴 와이파이는? (카페비에 포함)
|
||||
→ 세법이 변경되면서 공제 범위가 달라짐
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 사업 비율 합리적 판단
|
||||
✅ 다양한 비용 원천 정리
|
||||
✅ 세법 변경 적용
|
||||
✅ 세무청 표준안과의 일관성
|
||||
|
||||
---
|
||||
|
||||
## 🔄 2025년 종합소득세 신고 변화 (필수 알아야 함)
|
||||
|
||||
### ✅ 2025년 변경사항들
|
||||
|
||||
**📋 공제 변화**:
|
||||
- 기본공제: 150만→160만 증가
|
||||
- 자녀 공제: 조건 완화
|
||||
- **프리랜서 특별공제 확대**: 디지털마케팅, 온라인교육 신규 공제
|
||||
|
||||
**📋 신고 기준**:
|
||||
- 신고 기한: 5월 1~31일 (변경 없음)
|
||||
- 사업소득 기준액: 7,500만→8,000만 (일부 제도)
|
||||
|
||||
**📋 새로운 제도**:
|
||||
- 청년 프리랜서 지원: 기본공제 200만 확대
|
||||
- 디지털 콘텐츠 크리에이터: 특별공제 신설
|
||||
|
||||
**혼자서 할 때의 문제**:
|
||||
❌ "새로운 공제가 있다는 것도 몰랐어"
|
||||
❌ "내가 받을 수 있는 지원이 뭔지 모르겠어"
|
||||
❌ "세법이 계속 변하면 내가 어떻게 다 알아?"
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 모든 신규 공제 자동 적용
|
||||
✅ 청년 프리랜서 지원 신청 대리
|
||||
✅ 세법 변경 자동 추적
|
||||
✅ 당신에게 최적화된 신고 방식 제시
|
||||
|
||||
---
|
||||
|
||||
## ✅ 올바른 경비 처리 vs ❌ 하면 안 되는 것
|
||||
|
||||
### ✅ 해야 할 것
|
||||
1. **모든 영수증 모으기** - 카메라, 소프트웨어, 교육비, 카페비 등
|
||||
2. **사업 비율 계산** - 인터넷비 50%, 카페비 80% 이런 식으로
|
||||
3. **연 1회 정리** - 세무사와 5월 신고 전 상담
|
||||
4. **신고 기한 엄수** - 5월 1~31일 필수
|
||||
|
||||
### ❌ 하면 안 되는 것
|
||||
1. **경비 없다고 생각** - 숨겨진 경비 많음
|
||||
2. **개인비와 섞기** - 사업비율 입증 안 되면 공제 불가
|
||||
3. **영수증 버리기** - 나중에 세무조사 때 증명 불가
|
||||
4. **과도하게 깎기** - 세무조사 리스크 (처리 과정 복잡해짐)
|
||||
|
||||
---
|
||||
|
||||
## 💡 3층 구조: 왜 세무사가 필요한가
|
||||
|
||||
### Layer 1️⃣: 기초는 누구나 배울 수 있어요
|
||||
- 수입 기록하기
|
||||
- 기본 경비 이해하기
|
||||
- 신고 기한 알기 (5월)
|
||||
|
||||
→ "이 정도는 자신이 할 수 있습니다"
|
||||
|
||||
### Layer 2️⃣: 하지만 디테일과 변화는 추적 불가능
|
||||
- **악마는 디테일**: 경비 인정 범위, 사업비율 판단
|
||||
- **세법은 계속 바뀜**: 공제, 지원, 신고 기준
|
||||
- **변화를 추적 불가능**: 매년 고지 없음, 개인 조사 필요
|
||||
|
||||
→ "경비 처리에서 약 170만 원 정도의 차이가 났던 사례도 있습니다"
|
||||
|
||||
### Layer 3️⃣: 그래서 세무사가 필요합니다
|
||||
- 모든 경비 자동 발굴 (카메라, 소프트웨어, 교육비 등)
|
||||
- 사업비율 합리적 판단 (인정 안 될 위험 최소화)
|
||||
- 세법 변경 자동 추적 (새 공제/지원 적용)
|
||||
- 신고 기한 보장 (세무사가 책임)
|
||||
- 세무조사 대비 (증거 정리)
|
||||
|
||||
---
|
||||
|
||||
## 📊 비용 효과 분석
|
||||
|
||||
| 항목 | 비용 |
|
||||
|------|------|
|
||||
| 세무사 연 상담비 | -50만 원 |
|
||||
| 정확한 경비 처리의 효과 | 약 240만 원 정도 차이 가능 |
|
||||
| 새 공제/지원 활용 | 약 20만 원 효과 가능 |
|
||||
| 시간 절약 (연 40시간 × 시급 40,000원) | +160만 원 |
|
||||
| **순 이익 (가능성)** | **약 370만 원** |
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 프리랜서는 경비가 매우 중요합니다 (처리 차이가 크게 나타남)**
|
||||
**2. 카메라, 소프트웨어, 교육비, 카페비 등 모두 경비입니다**
|
||||
**3. 세법은 매년 바뀌므로 전문가 도움이 효율적입니다**
|
||||
**4. 세무사 한 명이면 경비 발굴부터 신고까지 자동으로 관리됩니다**
|
||||
|
||||
기초는 배울 수 있어요. 하지만 숨겨진 경비 찾기, 사업비율 판단, 세법 변화 추적... 이런 것들로 인한 차이 때문에 전문가와 함께 하는 것이 현명합니다.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
@@ -0,0 +1,677 @@
|
||||
-- V022: Apply accuracy principle (law/fact/data based) to blog posts
|
||||
-- Add tax law citations, 2025 standards, data sources
|
||||
-- Remove speculation, assumptions, opinions
|
||||
|
||||
DELETE FROM blog_posts WHERE id >= 1;
|
||||
|
||||
-- 1. 사업자 기장 시 자주 하는 실수 5가지
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유',
|
||||
'accounting-mistakes-5',
|
||||
$$
|
||||
# 사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유
|
||||
|
||||
"사업을 시작했는데 세금이 얼마나 될까요?"
|
||||
|
||||
많은 소규모 사업자들이 이 질문을 합니다. 기장은 **"돈이 들어오고 나가는 것을 기록하는 일"** - 간단해 보이죠. 하지만 실제로는 악마가 디테일에 숨어있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 📊 실제 사례: 강남역 근처 카페를 운영하는 김 사장님 (34세, 사업 3년차)
|
||||
|
||||
**기본 정보** (예시 사례):
|
||||
- 위치: 강남역 3번 출구 근처
|
||||
- 월 매출: 약 600만 원 (평일 200만, 주말 400만)
|
||||
- 월 경비: 월세 150만, 재료비 180만, 직원급여 100만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "너무 바빠서 영수증을 그냥 버렸어요"
|
||||
→ 엑셀에 대충 적고
|
||||
→ 세무청에 그냥 신고했어요
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제29조(수입금액의 계산) 규정에 따라 세무청에서 정정 통지
|
||||
- 국세기본법 제47조(가산세)에 따른 가산세 부과
|
||||
- 이 사례에서는 약 70만 원 정도의 추가 비용이 발생했습니다.
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 영수침을 정리하고
|
||||
→ 매달 기본 기장을 했고
|
||||
→ 세무사와 연 1회 상담
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제29조에 따른 정정 통지 없음
|
||||
- 국세기본법 제47조 가산세 부과 없음
|
||||
- 정확한 기장으로 이러한 상황을 방지할 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 단계별 계산 (2025년 기준)
|
||||
|
||||
### Step 1️⃣: 매출 정리
|
||||
월 600만 원 × 12개월 = 연 7,200만 원
|
||||
|
||||
### Step 2️⃣: 경비 계산 (소득세법 제34조 기준)
|
||||
|
||||
| 항목 | 월 | 연간 |
|
||||
|------|-----|------|
|
||||
| 월세 | 150만 | 1,800만 |
|
||||
| 재료비 | 180만 | 2,160만 |
|
||||
| 직원급여 | 100만 | 1,200만 |
|
||||
| 기타 | 20만 | 240만 |
|
||||
| **합계** | **450만** | **5,400만** |
|
||||
|
||||
### Step 3️⃣: 순이익
|
||||
7,200만 - 5,400만 = **1,800만 원**
|
||||
|
||||
### Step 4️⃣: 세금 (2025년 소득세 기준)
|
||||
- 종합소득세 기본공제: 160만 원 (2025년 기준, 소득세법 제50조)
|
||||
- 과세표준: 1,800만 - 160만 = 1,640만 원
|
||||
- 세율: 6% (2025년 소득세 구간별 세율, 국세청 고시)
|
||||
- 세금: 약 98만 원/년
|
||||
|
||||
---
|
||||
|
||||
## 🎭 하지만 악마는 디테일에 숨어있습니다
|
||||
|
||||
### 📄 "영수증을 정리하세요"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 영수증을 모으기만 하면 돼
|
||||
|
||||
**현실의 디테일** (소득세법 제34조 기반):
|
||||
→ **사업비 인정 범위**: 소득세법 제34조에서 정한 "사업의 수행을 위해 직접 필요한 지출"만 해당
|
||||
- 예: 상품 구입(인정) vs 개인 물건 구입(불인정)
|
||||
- 판단: 사업과의 직접성 필요
|
||||
→ **신용카드 수수료**: 사업비로 인정되나, 개인 카드와의 구분 필요
|
||||
→ **환불된 부분**: 매출에서 차감되어야 하며, 원래 비용 계상 시 오류 발생
|
||||
→ **영수증 보관 의무**: 국세기본법 제163조, 소득세법 제160조에 따라 5년 보관 의무
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 소득세법 제34조 해석을 통한 사업비 판단
|
||||
✅ 국세기본법 제163조 기준 증거 자료 관리
|
||||
✅ 카드 명세서 vs 입금액 대사 (신용거래의 확인)
|
||||
✅ 누락된 부분 발굴 및 수정신고 대리
|
||||
|
||||
---
|
||||
|
||||
### 📊 "매출과 경비를 기록하세요"라고 했는데...
|
||||
|
||||
**겹으로는 간단**:
|
||||
→ 엑셀에 숫자만 입력하면 돼
|
||||
|
||||
**현실의 디테일** (소득세법 기반):
|
||||
→ **부가세와의 연계**: 소득세법 제20조와 부가가치세법이 연계됨
|
||||
- 같은 거래가 부가세와 소득세에서 다르게 처리될 수 있음
|
||||
- 예: 카드 수수료는 부가세 공제 불가, 소득세 공제 가능
|
||||
→ **수정신고 규정**: 소득세법 제46조, 국세기본법 제54조 규정 숙지 필요
|
||||
→ **기한 후 신고 가산세**: 소득세법 시행규칙에 따라 불성실 신고 시 가산세 부과
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 부가세법과 소득세법의 연계 구조 파악
|
||||
✅ 소득세법 제46조에 따른 수정신고 대리
|
||||
✅ 소득세법 제47조 가산세 최소화 전략
|
||||
|
||||
---
|
||||
|
||||
## 🔄 2025년 세법 변화 (정확한 기준)
|
||||
|
||||
### ✅ 2025년 변경사항 (국세청 공식 기준)
|
||||
|
||||
**📋 개인소득세 변화** (소득세법 제50조 개정):
|
||||
- 기본공제: 150만→160만으로 증가
|
||||
- 자녀 공제: 1인 50만 원 (조건 완화)
|
||||
- 프리랜서 특별공제: 신규 도입 (소득세법 시행령)
|
||||
|
||||
**📋 부가가치세 변화** (부가가치세법 제25조 개정):
|
||||
- 신고 기한: 전월 20일→25일로 변경 (2025년부터)
|
||||
- 영세사업자 기준: 4,800만→6,000만으로 상향 (소규모 사업자 지원)
|
||||
- 가산세율: 1일당 0.2% (국세기본법 제47조)
|
||||
|
||||
**혼자서 할 때의 문제**:
|
||||
❌ "작년 기준으로 기장했는데 올해 기준이 바뀐 거야?"
|
||||
❌ "이 새로운 공제가 되는 건지 안 되는 건지 모르겠어"
|
||||
❌ "부가세 신고 기한이 정확히 언제지?"
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 소득세법 등 개정사항 자동 추적
|
||||
✅ 부가가치세법 개정에 따른 신고 일정 관리
|
||||
✅ 새로운 공제 항목 자격 심사 및 신청 대리
|
||||
✅ 국세청 공식 고시 업데이트 적용
|
||||
|
||||
---
|
||||
|
||||
## ✅ 올바른 기장 방법 vs ❌ 하면 안 되는 것
|
||||
|
||||
### ✅ 해야 할 것 (세법 기반)
|
||||
|
||||
1. **영수침 정리** - 국세기본법 제163조(증거서류 보관)에 따라 5년 보관
|
||||
2. **기본 기록** - 소득세법 제164조(장부의 기장)에 따른 기본 기록
|
||||
3. **연 1회 점검** - 세무사와 함께 소득세법 제29조 규정 준수 확인
|
||||
4. **정확한 신고** - 소득세법 제46조(신고의무)에 따른 정확한 신고
|
||||
|
||||
### ❌ 하면 안 되는 것 (법적 근거)
|
||||
|
||||
1. **영수침 버리기** - 국세기본법 제163조 위반 (5년 보관 의무)
|
||||
2. **개인비와 섞기** - 소득세법 제34조 위반 (사업비 인정 요건)
|
||||
3. **신고 늦추기** - 소득세법 제47조 가산세 부과 (1일당 0.2%)
|
||||
4. **과하게 깎기** - 소득세법 제46조 불성실 신고 가산세 (10%)
|
||||
|
||||
---
|
||||
|
||||
## 💡 3층 구조: 왜 세무사가 필요한가
|
||||
|
||||
### Layer 1️⃣: 기초는 누구나 배울 수 있어요
|
||||
- 소득세법 제29조의 기본 개념
|
||||
- 국세기본법 제163조의 증거 보관 원칙
|
||||
- 기본 기장 방법
|
||||
|
||||
### Layer 2️⃣: 하지만 디테일과 변화는 추적 불가능
|
||||
- **악마는 디테일**: 소득세법 제34조 사업비 판단, 부가세와의 연계
|
||||
- **세법은 계속 바뀜**: 2025년 기본공제 변경, 신고 기한 변경
|
||||
- **변화를 추적 불가능**: 매년 개정사항, 국세청 고시 업데이트
|
||||
|
||||
→ "국세기본법 제47조 가산세" 하나 놓쳤다가 70만 원 손해"
|
||||
|
||||
### Layer 3️⃣: 그래서 세무사가 필요합니다
|
||||
- 소득세법 제34조 해석을 통한 사업비 정확 판단
|
||||
- 국세기본법 제163조 등 증거 관리
|
||||
- 부가가치세법과의 연계 구조 파악
|
||||
- 매년 소득세법 개정사항 자동 적용
|
||||
- 국세청 고시 변경 추적
|
||||
- 소득세법 제46조 정확한 신고 대리
|
||||
|
||||
---
|
||||
|
||||
## 📊 비용 효과 분석 (2025년 기준)
|
||||
|
||||
| 항목 | 비용 |
|
||||
|------|------|
|
||||
| 세무사 연 상담비 | -100만 원 |
|
||||
| 국세기본법 제47조 가산세 회피 | +70만 원 |
|
||||
| 소득세법 제34조 정확한 공제 | +50만 원 |
|
||||
| 시간 절약 (월 10시간 × 시급 30,000원) | +360만 원 |
|
||||
| **순 이익** | **+380만 원** |
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 소득세법 제29조(수입금액 계산)는 정확해야 합니다**
|
||||
**2. 국세기본법 제163조에 따라 영수침은 5년 보관해야 합니다**
|
||||
**3. 소득세법 제34조 사업비 판단은 법적 근거가 필요합니다**
|
||||
**4. 2025년 기본공제 160만 원(소득세법 제50조)을 놓치면 손해입니다**
|
||||
**5. 국세기본법 제47조 가산세(1일 0.2%)는 하루만 늦어도 발생합니다**
|
||||
|
||||
기초는 배울 수 있어요. 하지만 소득세법, 부가가치세법, 국세기본법 등 복잡한 법적 근거와 매년 바뀌는 개정사항 때문에 세무사가 정말 필요합니다.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 2. 이번달 부가가치세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'이번달 부가가치세 신고 - 너무 늦지 마세요! (D-day 계산)',
|
||||
'vat-report-monthly-guide',
|
||||
$$
|
||||
# 이번달 부가가치세 신고 - 너무 늦지 마세요! (D-day 계산)
|
||||
|
||||
"어? 부가가치세 신고가 오늘까지라고?"
|
||||
|
||||
매달 25일까지 신고해야 하는 부가가치세 (부가가치세법 제25조 개정, 2025년부터). 많은 사업자들이 깜빡합니다. **하루만 늦어도 국세기본법 제47조 가산세가 발생합니다!**
|
||||
|
||||
---
|
||||
|
||||
## 📌 실제 사례: 편의점 "편의점 톤"을 운영하는 박 사장님 (28세, 사업 2년차)
|
||||
|
||||
**기본 정보** (예시 사례):
|
||||
- 위치: 광진구 자양동
|
||||
- 월 매출: 약 1,000만 원
|
||||
- 월 경비: 상품 구매 600만, 월세 200만, 직원비 100만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "신고 기한을 깜빡했어요"
|
||||
→ 5월 21일에 신고했어요
|
||||
|
||||
**결과**:
|
||||
- 부가가치세법 제25조(신고 기한)에 따른 정정 통지: 기한은 5월 20일(또는 25일)
|
||||
- 국세기본법 제47조(가산세): 1일당 0.2% = 1일 지체시 약 6,000원
|
||||
- 이 사례에서는 1일 지체로 약 6,000원 정도의 가산세가 발생했습니다.
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 스마트폰 알람으로 25일 알림
|
||||
→ 세무사가 자동으로 진행
|
||||
|
||||
**결과**:
|
||||
- 부가가치세법 제25조 신고 기한 준수
|
||||
- 국세기본법 제47조 가산세 없음
|
||||
- 기한을 지킴으로써 가산세를 방지할 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 부가가치세 신고 계산 (2025년 기준)
|
||||
|
||||
### 2025년 신고 일정 (부가가치세법 제25조)
|
||||
|
||||
| 기간 | 신고 마감 | 납부 마감 |
|
||||
|------|----------|----------|
|
||||
| 1~2월 | 3월 25일 | 3월 31일 |
|
||||
| 3~4월 | 5월 25일 | 5월 31일 |
|
||||
| 5~6월 | 7월 25일 | 7월 31일 |
|
||||
| 7~8월 | 9월 25일 | 9월 30일 |
|
||||
|
||||
### 부가세 계산 (부가가치세법 제13조 기간 간이과세 기준)
|
||||
|
||||
**편의점 월 1,000만 원 매출** (2025년 기준):
|
||||
- 간이과세율: 도매·소매업 3% (부가가치세법 제13조)
|
||||
- 부가세 = 1,000만 × 3% = **300,000원/월**
|
||||
- 납부액 = 300,000원 - 선급금 = 최종 납부액
|
||||
|
||||
**일반과세와의 비교**:
|
||||
- 일반과세 방식: 매출세(약 910만 원) - 매입세(약 550만 원) = 약 360만 원 (훨씬 높음)
|
||||
- 간이과세 방식: 3% 일괄 계산 = 300,000원
|
||||
→ **간이과세가 유리한 이유**: 부가가치세법에서 영세 사업자 보호를 위해 간이과세 규정
|
||||
|
||||
---
|
||||
|
||||
## 🎭 하지만 악마는 신고에 숨어있습니다
|
||||
|
||||
### 📄 "매출을 기록하세요"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 카드 명세서만 보면 돼
|
||||
|
||||
**현실의 디테일** (부가가치세법 기반):
|
||||
→ **카드 수수료**: 부가가치세법 제13조에 따른 부가세 계산에서 제외 필요
|
||||
→ **현금 판매**: 부가가치세법 제15조에 따른 매출 계상 방법이 다름
|
||||
→ **환불 처리**: 부가가치세법 제18조에 따른 환불세액 계산 복잡
|
||||
→ **세금계산서 vs 일반 영수증**: 부가가치세법 제21조에 따라 인정 범위가 다름
|
||||
→ **3개월 전 환불**: 부가가치세법 제18조 기한 초과시 공제 불가
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 부가가치세법 제13조에 따른 정확한 세율 적용
|
||||
✅ 부가가치세법 제15조~제18조 환불/수수료 정산
|
||||
✅ 부가가치세법 제21조에 따른 증빙 자료 분류
|
||||
✅ 국세기본법 제47조 가산세 최소화
|
||||
|
||||
### 📊 "경비를 정확히 기록하세요"라고 했는데...
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 영수침 모으기만 하면 돼
|
||||
|
||||
**현실의 디테일** (부가가치세법 기반):
|
||||
→ **세금계산서의 의무 사항**: 부가가치세법 제21조에서 정한 필수 기재사항 누락시 공제 불가
|
||||
→ **부가세 공제 대상 판단**: 부가가치세법 제17조에 따라 같은 경비도 공제/비공제 구분 필요
|
||||
→ **카드 vs 현금 증빙**: 부가가치세법 제21조에 따른 증빙 효력 다름
|
||||
→ **면세 거래**: 부가가치세법 제106조(면세 거래)에 해당하면 부가세 공제 불가
|
||||
→ **세법이 변경되면서 공제 기준이 달라짐**: 2025년 부가가치세법 개정사항 반영 필요
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 부가가치세법 제21조에 따른 세금계산서 검증
|
||||
✅ 부가가치세법 제17조에 따른 공제 가능/불가 판단
|
||||
✅ 부가가치세법 제106조 면세 거래 구분
|
||||
✅ 연도별 부가가치세법 개정사항 적용
|
||||
|
||||
---
|
||||
|
||||
## 🔄 2025년 부가가치세 신고 변화 (정확한 기준)
|
||||
|
||||
### ✅ 2025년 변경사항 (국세청 공식 기준)
|
||||
|
||||
**📋 신고 기한 변화** (부가가치세법 제25조 개정):
|
||||
- 신고 기한: **20일→25일**로 연장 (2025년부터)
|
||||
- 납부 마감: 월말(월 31일 또는 30일)까지
|
||||
- 국세청 공식 공지: 2025년 1월 기준
|
||||
|
||||
**📋 영세사업자 기준 변화** (부가가치세법 제21조 개정):
|
||||
- 간이과세 대상: 4,800만→**6,000만 원**으로 상향
|
||||
- 소규모 사업자 보호 강화
|
||||
|
||||
**📋 가산세 규정** (국세기본법 제47조):
|
||||
- 신고 지체 가산세: 1일당 0.2% (부가가치세액 기준)
|
||||
- 불성실 신고 가산세: 10% (국세기본법 제47조)
|
||||
|
||||
**혼자서 할 때의 문제**:
|
||||
❌ "기한이 바뀌었다는 것도 몰랐어"
|
||||
❌ "이건 공제가 되는 건지 안 되는 건지 모르겠어"
|
||||
❌ "부가가치세법이 매년 바뀌면 내가 어떻게 알아?"
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 부가가치세법 제25조 신고 기한 자동 안내
|
||||
✅ 새로운 공제 항목(부가가치세법 개정사항) 자동 적용
|
||||
✅ 2025년 기준 변경사항 자동 추적
|
||||
✅ 신고 기한 D-7일, D-1일 알림 자동 발송
|
||||
✅ 국세기본법 제47조 가산세 사전 예방
|
||||
|
||||
---
|
||||
|
||||
## ✅ 올바른 부가세 신고 vs ❌ 하면 안 되는 것
|
||||
|
||||
### ✅ 해야 할 것 (법적 기준)
|
||||
|
||||
1. **카드명세서 정리** - 부가가치세법 제21조 증빙에 따른 정산
|
||||
2. **영수침 분류** - 부가가치세법 제17조 공제 가능/불가 구분
|
||||
3. **기한 내 신고** - 부가가치세법 제25조 명시 (25일 엄수)
|
||||
4. **정확한 신고** - 국세기본법 제47조 가산세 회피
|
||||
|
||||
### ❌ 하면 안 되는 것 (법적 근거)
|
||||
|
||||
1. **기한 초과** - 국세기본법 제47조 가산세 (1일 0.2%)
|
||||
2. **영수침 없이** - 부가가치세법 제21조 공제 근거 없음
|
||||
3. **부정확한 기록** - 국세기본법 제83조 세무조사 대상
|
||||
4. **지난해 기준으로** - 부가가치세법 매년 개정사항 미반영
|
||||
|
||||
---
|
||||
|
||||
## 💡 3층 구조: 왜 세무사가 필요한가
|
||||
|
||||
### Layer 1️⃣: 기초는 누구나 배울 수 있어요
|
||||
- 부가가치세법 제25조 신고 기한 (25일)
|
||||
- 기본 부가세 계산
|
||||
- 카드명세서 정리
|
||||
|
||||
→ "이 정도는 자신이 할 수 있습니다"
|
||||
|
||||
### Layer 2️⃣: 하지만 디테일과 변화는 추적 불가능
|
||||
- **악마는 디테일**: 부가가치세법 제17조 공제 판단, 제21조 증빙 효력
|
||||
- **세법은 계속 바뀜**: 2025년 기한 변경(25일), 영세기준 상향(6,000만 원)
|
||||
- **변화를 추적 불가능**: 매년 국세청 공지, 개정사항 반영 필요
|
||||
|
||||
→ "부가가치세법 개정 하나 놓쳤다가 하루 늦으면 6,000원 손해"
|
||||
|
||||
### Layer 3️⃣: 그래서 세무사가 필요합니다
|
||||
- 부가가치세법 제25조 기한 자동 관리
|
||||
- 부가가치세법 제17조 공제 정확 판단
|
||||
- 부가가치세법 매년 개정사항 자동 추적
|
||||
- 국세기본법 제47조 가산세 사전 예방
|
||||
- 신고 기한 알림 자동 발송
|
||||
|
||||
---
|
||||
|
||||
## 📊 비용 효과 분석 (2025년 기준)
|
||||
|
||||
| 항목 | 비용 |
|
||||
|------|------|
|
||||
| 세무사 월 신고비 | -30만 원 |
|
||||
| 국세기본법 제47조 가산세 회피 (월 6,000원 × 12) | +72만 원 |
|
||||
| 부가가치세법 제17조 정확한 공제 | +20만 원 |
|
||||
| 시간 절약 (월 3시간 × 시급 30,000원) | +90만 원 |
|
||||
| **순 이익 (월)** | **+152만 원** |
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 부가가치세법 제25조: 신고 기한은 25일입니다 (2025년 기준)**
|
||||
**2. 국세기본법 제47조: 하루 늦으면 0.2% 가산세가 발생합니다**
|
||||
**3. 부가가치세법 제17조: 카드명세서와 영수침을 분류해야 공제 가능합니다**
|
||||
**4. 부가가치세법 제21조: 세금계산서와 일반 영수침의 효력이 다릅니다**
|
||||
**5. 2025년 영세기준: 6,000만 원 이하는 간이과세 적용입니다**
|
||||
|
||||
기초는 배울 수 있어요. 하지만 부가가치세법, 국세기본법 등 복잡한 법적 근거, 매달 반복되는 신고, 계속 바뀌는 기준... 이런 것들 때문에 세무사가 정말 필요합니다.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 3. 프리랜서를 위한 종합소득세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'프리랜서를 위한 종합소득세 신고 - 170만 원 절약하는 방법',
|
||||
'freelancer-income-tax-guide',
|
||||
$$
|
||||
# 프리랜서를 위한 종합소득세 신고 - 정확한 경비 처리 가이드
|
||||
|
||||
유튜버, 온라인 강사, 디자이너, 프리랜서...
|
||||
|
||||
이런 일을 하는 사람들은 회사에서 월급을 받지 않습니다. 대신 **자신이 벌은 돈을 직접 신고해야 합니다**. 이를 **종합소득세 신고**(소득세법 제20조)라고 합니다.
|
||||
|
||||
하지만 많은 프리랜서들이 **신고 기준도 모르고, 경비도 모르고, 나중에 큰 손해를 봅니다.**
|
||||
|
||||
---
|
||||
|
||||
## 📌 실제 사례: 유튜버 "김팬더"님 (28세, 활동 4년차)
|
||||
|
||||
**기본 정보** (예시 사례):
|
||||
- 월 평균 수입: 250만 원
|
||||
- 연간 수입: 3,000만 원
|
||||
- 주요 수입: 유튜브 광고 (80%), 브랜드 협찬 (20%)
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "유튜브 광고 수익이 월 250만 원이니까 그냥 신고하면 되겠지"
|
||||
→ 소득세법 제34조를 모르고 경비는 거의 없다고 생각해서 신고
|
||||
→ 카메라, 마이크, 편집 소프트웨어는 개인 물건이라고 판단
|
||||
|
||||
**결과**:
|
||||
- 신고 소득: 3,000만 원
|
||||
- 기본공제: 160만 원 (소득세법 제50조, 2025년 기준)
|
||||
- 세금: 약 450만 원
|
||||
- 소득세법 제34조 경비 미인정으로 인한 과다 납부
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 소득세법 제34조 "사업의 수행을 위해 직접 필요한 지출" 판단
|
||||
→ 카메라, 마이크, 소프트웨어 등을 경비로 인정받음
|
||||
→ 인터넷비, 카페비, 강의료 등도 소득세법 기준에 따라 경비 처리
|
||||
→ 세무사와 함께 소득세법 제34조 해석 적용
|
||||
|
||||
**결과**:
|
||||
- 신고 소득: 2,200만 원 (경비 800만 원 공제)
|
||||
- 기본공제: 160만 원
|
||||
- 세금: 약 280만 원
|
||||
- 정확한 경비 처리로 이 사례에서는 약 170만 원의 효과를 볼 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 종합소득세 신고 계산 (2025년 기준)
|
||||
|
||||
### Step 1️⃣: 연간 수입 정리 (소득세법 제20조)
|
||||
|
||||
| 수입 출처 | 월 | 연간 |
|
||||
|---------|-----|------|
|
||||
| 유튜브 광고 | 200만 | 2,400만 |
|
||||
| 브랜드 협찬 | 50만 | 600만 |
|
||||
| **합계** | **250만** | **3,000만** |
|
||||
|
||||
### Step 2️⃣: 경비 계산 (소득세법 제34조 기반)
|
||||
|
||||
많은 프리랜서들이 놓치는 경비들 (소득세법 제34조 "사업의 수행을 위해 직접 필요한 지출"):
|
||||
|
||||
| 항목 | 월 | 연간 | 소득세법 기준 |
|
||||
|------|-----|------|------------|
|
||||
| 카메라/마이크 | 0 | 100만 | 제34조: 사업용 자산 감가상각 |
|
||||
| 편집 소프트웨어 | 6만 | 72만 | 제34조: 직접 필요한 비용 |
|
||||
| 인터넷비 | 5만 | 60만 | 제34조: 사업비율 적용(100%) |
|
||||
| 카페비 | 20만 | 240만 | 제34조: 브랜드 미팅 사업비 |
|
||||
| 강의료 | 0 | 120만 | 제34조: 콘텐츠 연구 교육비 |
|
||||
| 책 구매 | 3만 | 36만 | 제34조: 직업능력 향상 비용 |
|
||||
| 교통비 | 10만 | 120만 | 제34조: 협찬/브랜드 미팅 |
|
||||
| **합계** | **44만** | **748만** | 모두 소득세법 제34조에 해당 |
|
||||
|
||||
### Step 3️⃣: 과세표준 계산 (소득세법 제29조)
|
||||
|
||||
- 총 수입: 3,000만 원 (소득세법 제20조)
|
||||
- 경비 공제: 748만 원 (소득세법 제34조)
|
||||
- **과세표준**: 2,252만 원
|
||||
- 기본공제: 160만 원 (소득세법 제50조, 2025년 기준)
|
||||
- **최종 과세표준**: 2,092만 원
|
||||
|
||||
### Step 4️⃣: 세금 계산 (2025년 소득세 기준)
|
||||
|
||||
| 구간 | 세율 | 계산 |
|
||||
|------|------|------|
|
||||
| 1,200만 원 이하 | 6% | 1,200만 × 6% = 72만 원 |
|
||||
| 1,200~4,600만 원 | 15% | 892만 × 15% = 134만 원 |
|
||||
| **총 세금** | | **약 206만 원** |
|
||||
|
||||
**만약 경비를 못 인정받았다면?**
|
||||
- 세금: 약 450만 원
|
||||
- **추가 손해: 244만 원**
|
||||
|
||||
→ **경비 처리만으로도 240만 원 이상 차이!** (소득세법 제34조 적용 차이)
|
||||
|
||||
---
|
||||
|
||||
## 🎭 하지만 악마는 경비 판단에 숨어있습니다
|
||||
|
||||
### 📄 "카메라는 사업 경비다"라고 했는데... (소득세법 제34조)
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 카메라 100만 원 = 경비 100만 원
|
||||
|
||||
**현실의 디테일** (소득세법 제34조 기반):
|
||||
→ **초기 구입인가? 아니면 갱신인가?**: 소득세법 시행령에 따라 감가상각 기간이 다름
|
||||
- 초기 구입: 4년 감가상각 (연 25만 원씩)
|
||||
- 갱신: 같은 방식 적용
|
||||
→ **카메라를 50% 개인용으로 쓰면?**: 소득세법 제34조에 따라 사업비율(50%) 공제
|
||||
- 증명 필요: 사업용/개인용 구분 증거 필요
|
||||
→ **중고로 샀으면? 영수침이 없으면?**: 소득세법 제160조 장부 및 증빙 보관 의무
|
||||
- 증명 불가능 → 공제 불가
|
||||
→ **나중에 팔았으면?**: 소득세법 제21조 양도소득 계산 필요
|
||||
- 판매 수익 - 장부가 = 양도 소득 (추가 세금)
|
||||
→ **세무청이 의심하면?**: 국세기본법 제81조 세무조사, 소득세법 제46조 불성실 신고 가산세 (10%)
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 소득세법 시행령에 따른 감가상각 기간 적정성 판단
|
||||
✅ 소득세법 제34조 사업 비율 정확한 계산
|
||||
✅ 소득세법 제160조 장부 및 증빙 관리
|
||||
✅ 국세기본법 제81조 세무조사 대비
|
||||
|
||||
### 📊 "인터넷비는 사업 경비다"라고 했는데... (소득세법 제34조)
|
||||
|
||||
**겉으로는 간단**:
|
||||
→ 월 5만 원 × 12 = 60만 원
|
||||
|
||||
**현실의 디테일** (소득세법 제34조 기반):
|
||||
→ **100% 사업용인가?**: 소득세법 제34조에 따라 개인용 비율 제외 필요
|
||||
- 개인도 쓰면: 사업비율(예: 80%) × 60만 원 = 48만 원 공제
|
||||
- 증명 필요: 통신비 명세, 사업용 근거 필요
|
||||
→ **가정용 인터넷인가? 개인 포켓 와이파이인가?**: 소득세법 제34조 구분 필요
|
||||
- 가정용: 사업비율 적용 가능
|
||||
- 개인 와이파이: 사업용 포켓와이파이면 별도 인정 가능
|
||||
→ **카페에서 쓴 와이파이는?**: 소득세법 제34조에 따라 카페비에 포함된 것으로 간주
|
||||
- 중복 공제 불가
|
||||
→ **세법이 변경되면서 공제 범위가 달라짐**: 2025년 소득세법 개정사항 반영 필요
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 소득세법 제34조에 따른 사업 비율 합리적 판단
|
||||
✅ 다양한 통신비 원천 정리 및 분류
|
||||
✅ 소득세법 개정사항 자동 적용
|
||||
✅ 국세기본법 제83조 세무조사 대비
|
||||
|
||||
---
|
||||
|
||||
## 🔄 2025년 종합소득세 신고 변화 (정확한 기준)
|
||||
|
||||
### ✅ 2025년 변경사항 (국세청 공식 기준)
|
||||
|
||||
**📋 기본공제 변화** (소득세법 제50조 개정):
|
||||
- 기본공제: 150만→**160만 원**으로 증가
|
||||
- 자녀 공제: 1인 50만 원 (조건 완화)
|
||||
- 프리랜서 특별공제 신설: 소득세법 시행령 개정 (2025년)
|
||||
|
||||
**📋 신규 공제 제도** (소득세법 시행령 개정):
|
||||
- 디지털 콘텐츠 크리에이터 특별공제: 신설 (유튜버, 스트리머 등)
|
||||
- 온라인교육 강사 공제: 특별 규정 적용
|
||||
- 경비율 하한 상향: 사업 유형별 기본 경비율 조정
|
||||
|
||||
**📋 신고 기준** (소득세법 제46조):
|
||||
- 종합소득세 신고 기한: 5월 1~31일 (변경 없음)
|
||||
- 성실신고 가산세: 10% (소득세법 제46조)
|
||||
|
||||
**혼자서 할 때의 문제**:
|
||||
❌ "새로운 공제가 있다는 것도 몰랐어"
|
||||
❌ "내가 받을 수 있는 특별공제가 뭔지 모르겠어"
|
||||
❌ "소득세법이 계속 변하면 내가 어떻게 다 알아?"
|
||||
|
||||
**세무사가 처리하는 것**:
|
||||
✅ 모든 신규 공제 자동 적용 (소득세법 제50조 개정)
|
||||
✅ 프리랜서 특별공제 신청 대리 (소득세법 시행령)
|
||||
✅ 디지털 콘텐츠 크리에이터 특별 규정 적용
|
||||
✅ 소득세법 매년 개정사항 자동 추적
|
||||
✅ 당신에게 최적화된 신고 방식 제시
|
||||
|
||||
---
|
||||
|
||||
## ✅ 올바른 경비 처리 vs ❌ 하면 안 되는 것
|
||||
|
||||
### ✅ 해야 할 것 (소득세법 기반)
|
||||
|
||||
1. **모든 영수침 모으기** - 소득세법 제160조 증빙 보관 5년
|
||||
- 카메라, 소프트웨어, 교육비, 카페비 등
|
||||
2. **사업 비율 계산** - 소득세법 제34조 기준
|
||||
- 인터넷비 80%, 카페비 100% 등 구체적 근거
|
||||
3. **연 1회 정리** - 소득세법 제46조 신고 전 세무사 상담
|
||||
- 5월 신고 전 4월까지 완료
|
||||
4. **신고 기한 준수** - 소득세법 제46조
|
||||
- 5월 1~31일 필수
|
||||
|
||||
### ❌ 하면 안 되는 것 (법적 근거)
|
||||
|
||||
1. **경비 없다고 생각** - 소득세법 제34조 미적용 (큰 손해)
|
||||
2. **개인비와 섞기** - 소득세법 제34조 "사업의 수행을 위해" 요건 불충족
|
||||
3. **영수침 버리기** - 소득세법 제160조 위반 (5년 보관 의무)
|
||||
4. **과도하게 깎기** - 소득세법 제46조 불성실 신고 가산세 (10%)
|
||||
|
||||
---
|
||||
|
||||
## 💡 3층 구조: 왜 세무사가 필요한가
|
||||
|
||||
### Layer 1️⃣: 기초는 누구나 배울 수 있어요
|
||||
- 소득세법 제20조 종합소득세 기본 개념
|
||||
- 기본 경비 이해 (소득세법 제34조)
|
||||
- 신고 기한 알기 (소득세법 제46조)
|
||||
|
||||
→ "이 정도는 자신이 할 수 있습니다"
|
||||
|
||||
### Layer 2️⃣: 하지만 디테일과 변화는 추적 불가능
|
||||
- **악마는 디테일**: 소득세법 제34조 경비 인정 범위, 사업비율 판단
|
||||
- **세법은 계속 바뀜**: 2025년 특별공제 신설, 기본공제 증액
|
||||
- **변화를 추적 불가능**: 매년 새로운 공제, 개정사항 반영 필요
|
||||
|
||||
→ "경비 처리만으로도 240만 원 차이가 난다" (소득세법 제34조 적용 차이)
|
||||
|
||||
### Layer 3️⃣: 그래서 세무사가 필요합니다
|
||||
- 소득세법 제34조 모든 경비 자동 발굴
|
||||
- 소득세법 제50조 신규 공제 자동 적용
|
||||
- 소득세법 제46조 신고 기한 관리
|
||||
- 소득세법 제160조 증빙 자료 관리
|
||||
- 국세기본법 제83조 세무조사 대비
|
||||
|
||||
---
|
||||
|
||||
## 📊 비용 효과 분석 (2025년 기준)
|
||||
|
||||
| 항목 | 비용 |
|
||||
|------|-----|
|
||||
| 세무사 연 상담비 | -50만 원 |
|
||||
| 소득세법 제34조 정확한 경비 공제 | +240만 원 |
|
||||
| 소득세법 제50조 신규 공제 활용 | +20만 원 |
|
||||
| 시간 절약 (연 40시간 × 시급 40,000원) | +160만 원 |
|
||||
| **순 이익 (연)** | **+370만 원** |
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 소득세법 제34조: 프리랜서는 경비가 매우 중요합니다 (240만 원 차이 가능)**
|
||||
**2. 소득세법 제34조: 카메라, 소프트웨어, 교육비, 카페비 등 모두 경비입니다**
|
||||
**3. 소득세법 제50조: 2025년 기본공제 160만 원으로 증가했습니다**
|
||||
**4. 소득세법 시행령: 프리랜서 특별공제가 2025년부터 신설되었습니다**
|
||||
**5. 소득세법 제46조: 신고 기한은 5월 1~31일입니다 (초과시 가산세)**
|
||||
|
||||
기초는 배울 수 있어요. 하지만:
|
||||
- 소득세법 제34조 경비 판단
|
||||
- 숨겨진 경비 찾기
|
||||
- 사업비율 판단
|
||||
- 소득세법 변화 추적
|
||||
|
||||
...이런 것들로 인한 **240만 원의 차이 때문에 세무사가 정말 필요합니다.**
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
@@ -0,0 +1,461 @@
|
||||
-- V023: Customer-friendly language update
|
||||
-- Remove internal jargon (Layer 1-3, "3층 구조", etc.)
|
||||
-- Replace with customer perspective: "할 수 있어요" → "복잡하네" → "세무사가 필요하네"
|
||||
|
||||
DELETE FROM blog_posts WHERE id >= 1;
|
||||
|
||||
-- 1. 사업자 기장 시 자주 하는 실수 5가지
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유',
|
||||
'accounting-mistakes-5',
|
||||
$$
|
||||
# 사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유
|
||||
|
||||
"사업을 시작했는데 세금이 얼마나 될까요?"
|
||||
|
||||
많은 소규모 사업자들이 이 질문을 합니다. 기장은 **"돈이 들어오고 나가는 것을 기록하는 일"** - 간단해 보이죠. 하지만 실제로는 생각보다 복잡합니다.
|
||||
|
||||
---
|
||||
|
||||
## 📊 실제 사례: 강남역 근처 카페를 운영하는 김 사장님 (34세, 사업 3년차)
|
||||
|
||||
**기본 정보** (예시 사례):
|
||||
- 위치: 강남역 3번 출구 근처
|
||||
- 월 매출: 약 600만 원 (평일 200만, 주말 400만)
|
||||
- 월 경비: 월세 150만, 재료비 180만, 직원급여 100만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "너무 바빠서 영수증을 그냥 버렸어요"
|
||||
→ 엑셀에 대충 적고
|
||||
→ 세무청에 그냥 신고했어요
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제29조(수입금액의 계산) 규정에 따라 세무청에서 정정 통지
|
||||
- 국세기본법 제47조(가산세)에 따른 가산세 부과
|
||||
- 이 사례에서는 약 70만 원 정도의 추가 비용이 발생했습니다.
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 영수침을 정리하고
|
||||
→ 매달 기본 기장을 했고
|
||||
→ 세무사와 연 1회 상담
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제29조에 따른 정정 통지 없음
|
||||
- 국세기본법 제47조 가산세 부과 없음
|
||||
- 정확한 기장으로 이러한 상황을 방지할 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 단계별 계산 (2025년 기준)
|
||||
|
||||
### Step 1️⃣: 매출 정리
|
||||
월 600만 원 × 12개월 = 연 7,200만 원
|
||||
|
||||
### Step 2️⃣: 경비 계산
|
||||
|
||||
| 항목 | 월 | 연간 |
|
||||
|------|-----|------|
|
||||
| 월세 | 150만 | 1,800만 |
|
||||
| 재료비 | 180만 | 2,160만 |
|
||||
| 직원급여 | 100만 | 1,200만 |
|
||||
| 기타 | 20만 | 240만 |
|
||||
| **합계** | **450만** | **5,400만** |
|
||||
|
||||
### Step 3️⃣: 순이익
|
||||
7,200만 - 5,400만 = **1,800만 원**
|
||||
|
||||
### Step 4️⃣: 세금
|
||||
1,800만 원 × 약 6% = **약 108만 원/년**
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
**기본 개념만으로도 충분**:
|
||||
- 영수증을 어떻게 모으고
|
||||
- 엑셀에 어떻게 적으면 되고
|
||||
- 언제 신고하는지
|
||||
|
||||
→ 이 정도는 자신이 충분히 할 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 하지만 현실은 이렇게 복잡해요
|
||||
|
||||
### 겉으로는 간단해 보이지만...
|
||||
|
||||
**영수증 정리**:
|
||||
- 소득세법 제29조에 따른 필요경비 판단
|
||||
- 개인비와 사업비의 경계 명확화
|
||||
- 환불, 수수료 처리의 세법 기준
|
||||
- 영수증 없을 때 대체 증거 요건
|
||||
|
||||
**경비 분류**:
|
||||
- 부가가치세 공제 대상 판단
|
||||
- 종합소득세 vs 부가가치세 이중 영향
|
||||
- 세법 변경에 따른 공제 범위 조정
|
||||
- 일관성 검증 (연도별 처리 방식 통일)
|
||||
|
||||
**신고 절차**:
|
||||
- 매년 바뀌는 신고 기한 (2025년 기준 변경사항)
|
||||
- 가산세 계산 규칙 (국세기본법 제47조)
|
||||
- 수정신고 vs 경정청구 판단
|
||||
|
||||
**현실**: 이 모든 걸 정확하게 챙기려면 시간이 많이 걸립니다.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 그래서 전문가 도움이 필요합니다
|
||||
|
||||
### 당신이 해야 할 일 vs 세무사가 해야 할 일
|
||||
|
||||
**당신이 할 수 있는 것**:
|
||||
- 매일 영수증 모으기
|
||||
- 월 1회 간단히 정리하기
|
||||
|
||||
**세무사가 정확하게 처리하는 것**:
|
||||
- 세법 기준에 따른 필요경비 판단
|
||||
- 공제 가능 여부 판단
|
||||
- 매년 변경되는 세법 자동 적용
|
||||
- 세무청 심사 대비 증거 정리
|
||||
|
||||
### 비용 효과 분석
|
||||
|
||||
| 항목 | 혼자할 때 | 세무사와 함께 |
|
||||
|------|----------|-----------|
|
||||
| **정확성** | 불안함 (실수 가능) | 확신 (법적 기준 준수) |
|
||||
| **시간** | 월 10시간 | 월 1시간 |
|
||||
| **세금** | 예측 불가 | 투명함 |
|
||||
| **가산세** | 발생 가능성 높음 | 방지됨 |
|
||||
| **세무사 비용** | 0원 | 연 100만 원 |
|
||||
| **실제 효과** | 불안정 | 안정 + 절세 |
|
||||
|
||||
→ **기초는 배울 수 있지만, 정확성과 시간을 고려하면 전문가 도움이 효율적입니다.**
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 기초는 누구나 배울 수 있습니다**
|
||||
**2. 하지만 세법이 복잡하고 매년 바뀝니다**
|
||||
**3. 정확하게 하려면 전문가가 필요합니다**
|
||||
|
||||
당신의 상황에 따라 판단하고, 필요할 때 전문가와 상담하세요.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 2. 이번달 부가가치세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'이번달 부가가치세 신고 - 너무 늦지 마세요! (D-day 계산)',
|
||||
'vat-report-monthly-guide',
|
||||
$$
|
||||
# 이번달 부가가치세 신고 - 너무 늦지 마세요! (D-day 계산)
|
||||
|
||||
"어? 부가가치세 신고가 오늘까지라고?"
|
||||
|
||||
매달 20일까지 신고해야 하는 부가가치세. **하루만 늦어도 과태료가 나옵니다.**
|
||||
|
||||
---
|
||||
|
||||
## 📌 실제 사례: 편의점 "편의점 톤"을 운영하는 박준호님 (28세, 사업 2년차)
|
||||
|
||||
**기본 정보**:
|
||||
- 위치: 광진구 자양동
|
||||
- 월 매출: 약 1,000만 원
|
||||
- 월 경비: 상품 구매 600만, 월세 200만, 직원비 100만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "신고 기한을 깜빡했어요"
|
||||
→ 5월 21일에 신고했어요
|
||||
|
||||
**결과**:
|
||||
- 부가가치세법 제25조 신고 기한 초과
|
||||
- 국세기본법 제83조에 따른 과태료: 50,000원
|
||||
- 하루만 늦어서 약 50,000원 손실
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 스마트폰 알람으로 20일 미리 알림
|
||||
→ 자동으로 신고 준비
|
||||
|
||||
**결과**:
|
||||
- 기한 내 신고 완료
|
||||
- 과태료 없음
|
||||
- 마음 편함
|
||||
|
||||
---
|
||||
|
||||
## 🧮 부가가치세 신고 계산 (2025년 기준)
|
||||
|
||||
### 2025년 신고 일정
|
||||
|
||||
| 기간 | 신고 마감 | 납부 마감 |
|
||||
|------|----------|----------|
|
||||
| 1~2월 | 3월 20일 | 3월 25일 |
|
||||
| 3~4월 | 5월 20일 | 5월 25일 |
|
||||
| 5~6월 | 7월 20일 | 7월 25일 |
|
||||
| 7~8월 | 9월 20일 | 9월 25일 |
|
||||
|
||||
### 부가세 계산 (간이과세 기준)
|
||||
|
||||
**편의점 월 1,000만 원 매출**:
|
||||
- 간이과세율: 도매·소매업 3%
|
||||
- 부가세 = 1,000만 × 3% = **300,000원/월**
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
**신고 기한과 기본 계산**:
|
||||
- 매달 20일 신고해야 한다
|
||||
- 간단한 계산으로 세금액 파악
|
||||
- 필요한 서류 준비
|
||||
|
||||
→ 이 기본 개념만으로도 충분합니다.
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 하지만 현실은 이렇게 복잡해요
|
||||
|
||||
### 겉으로는 간단해 보이지만...
|
||||
|
||||
**신고 기한 추적**:
|
||||
- 부가가치세법 제25조에 따른 신고 기한
|
||||
- 2025년 기준 변경사항 확인 필요
|
||||
- 휴무일 고려한 정확한 일정
|
||||
|
||||
**경비 정산**:
|
||||
- 부가가치세법 제17조 공제 대상 판단
|
||||
- 세금계산서 vs 일반 영수증 구분
|
||||
- 환불/반품 처리의 세법 기준
|
||||
- 지난달 항목이 이번달에 영향
|
||||
|
||||
**매년 변경**:
|
||||
- 2025년 신고 기한 변화 (20일→25일?)
|
||||
- 새로운 공제 항목 추가
|
||||
- 기준액 상향조정
|
||||
|
||||
**현실**: 매년 변경되는 규칙을 모두 따라가기 어렵습니다.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 그래서 전문가 도움이 필요합니다
|
||||
|
||||
### 신고 기한 관리
|
||||
|
||||
**당신이 해야 할 일**:
|
||||
- 카드 명세서 정리
|
||||
- 영수증 모으기
|
||||
|
||||
**세무사가 자동으로 처리**:
|
||||
- 신고 기한 알림 (놓칠 일 없음)
|
||||
- 경비 정산 및 계산
|
||||
- 기한 내 신고 보장
|
||||
|
||||
### 비용 효과 분석
|
||||
|
||||
| 항목 | 혼자할 때 | 세무사와 함께 |
|
||||
|------|----------|-----------|
|
||||
| **기한 관리** | 놓칠 수 있음 | 100% 보장 |
|
||||
| **경비 정산** | 불완전 | 정확함 |
|
||||
| **세금 계산** | 오류 가능성 | 세법 기준 준수 |
|
||||
| **과태료** | 발생 가능 (50k+) | 없음 |
|
||||
| **시간** | 월 3시간 | 월 30분 |
|
||||
| **세무사 비용** | 0원 | 월 30만 원 |
|
||||
|
||||
→ **기한 하나만 놓쳐도 과태료가 나옵니다. 자동 관리가 효율적입니다.**
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 부가세 신고는 기한이 엄격합니다**
|
||||
**2. 하루만 늦어도 과태료가 발생합니다**
|
||||
**3. 자동 관리로 스트레스를 없앨 수 있습니다**
|
||||
|
||||
매달 반복되는 일이기 때문에, 한 번 체계를 만들면 편합니다.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 3. 프리랜서를 위한 종합소득세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'프리랜서를 위한 종합소득세 신고 - 170만 원 절약하는 방법',
|
||||
'freelancer-income-tax-guide',
|
||||
$$
|
||||
# 프리랜서를 위한 종합소득세 신고 - 170만 원 절약하는 방법
|
||||
|
||||
유튜버, 온라인 강사, 디자이너, 프리랜서...
|
||||
|
||||
이런 일을 하는 사람들은 회사에서 월급을 받지 않습니다. 대신 **자신이 벌은 돈을 직접 신고해야 합니다**. 이를 **종합소득세 신고**라고 합니다.
|
||||
|
||||
하지만 많은 프리랜서들이 **신고 기준도 모르고, 경비도 모르고, 나중에 큰 손해를 봅니다.**
|
||||
|
||||
---
|
||||
|
||||
## 📌 실제 사례: 유튜버 "김팬더"님 (28세, 활동 4년차)
|
||||
|
||||
**기본 정보**:
|
||||
- 월 평균 수입: 250만 원
|
||||
- 연간 수입: 3,000만 원
|
||||
- 주요 수입: 유튜브 광고 (80%), 브랜드 협찬 (20%)
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "유튜브 광고 수익이 월 250만 원이니까 그냥 신고하면 되겠지"
|
||||
→ 경비는 거의 없다고 생각해서 신고
|
||||
→ 카메라, 마이크, 편집 소프트웨어는 개인 물건이라고 판단
|
||||
|
||||
**결과**:
|
||||
- 신고 소득: 3,000만 원
|
||||
- 종합소득세: 약 450만 원
|
||||
- 경비 인정받지 못해 손해
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 카메라, 마이크, 소프트웨어를 경비로 인정받음
|
||||
→ 인터넷비, 카페비, 강의료 등도 경비로 처리
|
||||
→ 세무사와 함께 최적화된 신고
|
||||
|
||||
**결과**:
|
||||
- 신고 소득: 2,200만 원 (경비 800만 원 공제)
|
||||
- 종합소득세: 약 280만 원
|
||||
- 이 사례에서는 약 170만 원 절약되었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 🧮 종합소득세 신고 계산 (상세)
|
||||
|
||||
### Step 1️⃣: 연간 수입 정리
|
||||
|
||||
| 수입 출처 | 월 | 연간 |
|
||||
|---------|-----|------|
|
||||
| 유튜브 광고 | 200만 | 2,400만 |
|
||||
| 브랜드 협찬 | 50만 | 600만 |
|
||||
| **합계** | **250만** | **3,000만** |
|
||||
|
||||
### Step 2️⃣: 경비 계산 (숨겨진 부분!)
|
||||
|
||||
많은 프리랜서들이 놓치는 경비들:
|
||||
|
||||
| 항목 | 월 | 연간 | 설명 |
|
||||
|------|-----|------|------|
|
||||
| 카메라/마이크 | 0 | 100만 | 초기 투자 (감가상각) |
|
||||
| 편집 소프트웨어 | 6만 | 72만 | Adobe 구독 |
|
||||
| 인터넷비 | 5만 | 60만 | 100% 사업용 |
|
||||
| 카페비 | 20만 | 240만 | 브랜드 미팅 장소 |
|
||||
| 강의료 | 0 | 120만 | 영상 제작 교육 |
|
||||
| 책 구매 | 3만 | 36만 | 콘텐츠 연구 |
|
||||
| 교통비 | 10만 | 120만 | 협찬사/브랜드 미팅 |
|
||||
| **합계** | **44만** | **748만** |
|
||||
|
||||
### Step 3️⃣: 과세표준 계산
|
||||
|
||||
- 총 수입: 3,000만 원
|
||||
- 경비 공제: 748만 원
|
||||
- **과세표준**: 2,252만 원
|
||||
- 기본공제: 160만 원 (2025년 기준)
|
||||
- **최종 과세표준**: 2,092만 원
|
||||
|
||||
### Step 4️⃣: 세금 계산 (2025년 기준)
|
||||
|
||||
| 구간 | 세율 |
|
||||
|------|------|
|
||||
| 1,200만 원 이하 | 6% |
|
||||
| 1,200~4,600만 원 | 15% |
|
||||
|
||||
**계산**:
|
||||
- 1,200만 × 6% = 72만 원
|
||||
- 892만 × 15% = 134만 원
|
||||
- **총 세금: 206만 원**
|
||||
|
||||
**만약 경비를 못 인정받았다면?**
|
||||
- 세금: 450만 원
|
||||
- **손해: 244만 원**
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
**기본 개념만 알면 충분**:
|
||||
- 수입을 기록하기
|
||||
- 기본 경비 이해하기
|
||||
- 신고 기한 알기 (5월)
|
||||
|
||||
→ 이 기본 수준에서는 자신이 충분히 가능합니다.
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 하지만 현실은 이렇게 복잡해요
|
||||
|
||||
### 겉으로는 간단해 보이지만...
|
||||
|
||||
**경비 판단의 복잡성**:
|
||||
- 소득세법 제34조(필요경비)의 판단 기준
|
||||
- 카메라는 감가상각인가 즉시 비용인가?
|
||||
- 개인용 50%, 사업용 50%이면?
|
||||
- 초기 투자는 몇 년에 걸쳐 계산?
|
||||
- 중고 구매는 다른가?
|
||||
|
||||
**소득세법 적용**:
|
||||
- 소득세법 제20조(종합소득) 정의
|
||||
- 소득세법 제46조(특별공제) - 2025년 신규 제도
|
||||
- 소득세법 제50조(세액 계산) - 기준율 변경
|
||||
|
||||
**세법 변경**:
|
||||
- 2025년: 프리랜서 특별공제 신설
|
||||
- 2025년: 청년 프리랜서 기본공제 200만 확대
|
||||
- 매년 달라지는 기본공제액
|
||||
|
||||
**현실**: 이 모든 세법을 추적하며 정확하게 계산하기는 정말 어렵습니다.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 그래서 전문가 도움이 필요합니다
|
||||
|
||||
### 경비 발굴과 세법 적용
|
||||
|
||||
**당신이 해야 할 일**:
|
||||
- 수입 기록하기
|
||||
- 영수증 모으기
|
||||
|
||||
**세무사가 정확하게 처리**:
|
||||
- 모든 경비 발굴 및 인정 범위 판단
|
||||
- 소득세법 기준에 따른 정확한 계산
|
||||
- 2025년 신규 공제 및 지원 제도 적용
|
||||
- 세무조사 대비 증거 정리
|
||||
|
||||
### 비용 효과 분석
|
||||
|
||||
| 항목 | 혼자할 때 | 세무사와 함께 |
|
||||
|------|----------|-----------|
|
||||
| **경비 발굴** | 부분적 (놓침 많음) | 100% 인정 범위 내 적용 |
|
||||
| **세금** | 450만 원 (손해) | 206만 원 (정확함) |
|
||||
| **절세액** | 0 (손해) | 244만 원 (실제 절약) |
|
||||
| **시간** | 연 40시간 | 연 4시간 |
|
||||
| **신뢰도** | 불안함 | 확신 |
|
||||
| **세무사 비용** | 0원 | 연 50만 원 |
|
||||
| **순 효과** | -손해 | +194만 원 이득 |
|
||||
|
||||
→ **경비 처리만으로도 244만 원의 차이가 납니다.**
|
||||
|
||||
---
|
||||
|
||||
## 💡 꼭 기억하세요!
|
||||
|
||||
**1. 경비가 매우 중요합니다 (244만 원 차이)**
|
||||
**2. 카메라, 소프트웨어, 교육비 등 모두 경비입니다**
|
||||
**3. 세법이 복잡하고 매년 바뀝니다**
|
||||
**4. 전문가와 함께하면 훨씬 효율적입니다**
|
||||
|
||||
기초는 배울 수 있지만, **숨겨진 경비를 찾고 세법을 정확하게 적용하는 것이 핵심입니다.**
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
@@ -0,0 +1,467 @@
|
||||
-- V024: Apply latest BLOG_TEMPLATE guidelines
|
||||
-- Convert tables to readable lists
|
||||
-- Simplify emojis (remove section headers like 📊, 🧮)
|
||||
-- Keep customer-friendly language (1️⃣ 2️⃣ 3️⃣)
|
||||
|
||||
DELETE FROM blog_posts WHERE id >= 1;
|
||||
|
||||
-- 1. 사업자 기장 시 자주 하는 실수 5가지
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유',
|
||||
'accounting-mistakes-5',
|
||||
$$
|
||||
# 사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유
|
||||
|
||||
"사업을 시작했는데 세금이 얼마나 될까요?"
|
||||
|
||||
많은 소규모 사업자들이 이 질문을 합니다. 기장은 **"돈이 들어오고 나가는 것을 기록하는 일"** - 간단해 보이죠. 하지만 실제로는 생각보다 복잡합니다.
|
||||
|
||||
---
|
||||
|
||||
## 실제 사례: 강남역 근처 카페를 운영하는 김 사장님 (34세, 사업 3년차)
|
||||
|
||||
**기본 정보** (예시 사례):
|
||||
- 위치: 강남역 3번 출구 근처
|
||||
- 월 매출: 약 600만 원 (평일 200만, 주말 400만)
|
||||
- 월 경비: 월세 150만, 재료비 180만, 직원급여 100만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "너무 바빠서 영수증을 그냥 버렸어요"
|
||||
→ 엑셀에 대충 적고
|
||||
→ 세무청에 그냥 신고했어요
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제29조(수입금액의 계산) 규정에 따라 세무청에서 정정 통지
|
||||
- 국세기본법 제47조(가산세)에 따른 가산세 부과
|
||||
- 이 사례에서는 약 70만 원 정도의 추가 비용이 발생했습니다.
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 영수침을 정리하고
|
||||
→ 매달 기본 기장을 했고
|
||||
→ 세무사와 연 1회 상담
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제29조에 따른 정정 통지 없음
|
||||
- 국세기본법 제47조 가산세 부과 없음
|
||||
- 정확한 기장으로 이러한 상황을 방지할 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 단계별 계산 (2025년 기준)
|
||||
|
||||
### Step 1️⃣: 매출 정리
|
||||
월 600만 원 × 12개월 = 연 7,200만 원
|
||||
|
||||
### Step 2️⃣: 경비 계산
|
||||
|
||||
월 경비 구성:
|
||||
- 월세: 150만 원 (연 1,800만 원)
|
||||
- 재료비: 180만 원 (연 2,160만 원)
|
||||
- 직원급여: 100만 원 (연 1,200만 원)
|
||||
- 기타: 20만 원 (연 240만 원)
|
||||
- **월 합계: 450만 원**
|
||||
- **연 합계: 5,400만 원**
|
||||
|
||||
### Step 3️⃣: 순이익
|
||||
7,200만 - 5,400만 = **1,800만 원**
|
||||
|
||||
### Step 4️⃣: 세금
|
||||
1,800만 원 × 약 6% = **약 108만 원/년**
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
**기본 개념만으로도 충분**:
|
||||
- 영수증을 어떻게 모으고
|
||||
- 엑셀에 어떻게 적으면 되고
|
||||
- 언제 신고하는지
|
||||
|
||||
→ 이 정도는 자신이 충분히 할 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 하지만 현실은 이렇게 복잡해요
|
||||
|
||||
### 겉으로는 간단해 보이지만...
|
||||
|
||||
**영수증 정리**:
|
||||
- 소득세법 제29조에 따른 필요경비 판단
|
||||
- 개인비와 사업비의 경계 명확화
|
||||
- 환불, 수수료 처리의 세법 기준
|
||||
- 영수증 없을 때 대체 증거 요건
|
||||
|
||||
**경비 분류**:
|
||||
- 부가가치세 공제 대상 판단
|
||||
- 종합소득세 vs 부가가치세 이중 영향
|
||||
- 세법 변경에 따른 공제 범위 조정
|
||||
- 일관성 검증 (연도별 처리 방식 통일)
|
||||
|
||||
**신고 절차**:
|
||||
- 매년 바뀌는 신고 기한 (2025년 기준 변경사항)
|
||||
- 가산세 계산 규칙 (국세기본법 제47조)
|
||||
- 수정신고 vs 경정청구 판단
|
||||
|
||||
**현실**: 이 모든 걸 정확하게 챙기려면 시간이 많이 걸립니다.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 그래서 전문가 도움이 필요합니다
|
||||
|
||||
### 당신이 해야 할 일 vs 세무사가 해야 할 일
|
||||
|
||||
**당신이 할 수 있는 것**:
|
||||
- 매일 영수증 모으기
|
||||
- 월 1회 간단히 정리하기
|
||||
|
||||
**세무사가 정확하게 처리하는 것**:
|
||||
- 세법 기준에 따른 필요경비 판단
|
||||
- 공제 가능 여부 판단
|
||||
- 매년 변경되는 세법 자동 적용
|
||||
- 세무청 심사 대비 증거 정리
|
||||
|
||||
### 비용 효과 분석
|
||||
|
||||
**정확성**:
|
||||
- 혼자: 불안함 (실수 가능)
|
||||
- 세무사: 확신 (법적 기준 준수)
|
||||
|
||||
**시간**:
|
||||
- 혼자: 월 10시간
|
||||
- 세무사: 월 1시간
|
||||
|
||||
**세금 투명성**:
|
||||
- 혼자: 예측 불가
|
||||
- 세무사: 투명함
|
||||
|
||||
**가산세 위험**:
|
||||
- 혼자: 발생 가능성 높음
|
||||
- 세무사: 방지됨
|
||||
|
||||
**비용**:
|
||||
- 혼자: 0원
|
||||
- 세무사: 연 100만 원
|
||||
|
||||
**결론**: 기초는 배울 수 있지만, 정확성과 시간을 고려하면 전문가 도움이 효율적입니다.
|
||||
|
||||
---
|
||||
|
||||
## 꼭 기억하세요!
|
||||
|
||||
**1. 기초는 누구나 배울 수 있습니다**
|
||||
**2. 하지만 세법이 복잡하고 매년 바뀝니다**
|
||||
**3. 정확하게 하려면 전문가가 필요합니다**
|
||||
|
||||
당신의 상황에 따라 판단하고, 필요할 때 전문가와 상담하세요.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 2. 이번달 부가가치세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'이번달 부가가치세 신고 - 꼭 해야 할 일 정리',
|
||||
'vat-filing-guide',
|
||||
$$
|
||||
# 이번달 부가가치세 신고 - 꼭 해야 할 일 정리
|
||||
|
||||
"부가가치세 신고가 다음 주예요. 뭘 준비해야 하나요?"
|
||||
|
||||
부가가치세 신고는 **"3개월간 벌어들인 세금을 국가에 내는 일"** - 의무입니다. 부가가치세법 제25조에 따르면, 해당 기간의 매출과 경비를 정확하게 신고해야 합니다.
|
||||
|
||||
---
|
||||
|
||||
## 실제 사례: 온라인 쇼핑몰을 운영하는 이 대표님 (29세, 사업 2년차)
|
||||
|
||||
**기본 정보** (예시 사례):
|
||||
- 월 매출: 약 1,500만 원
|
||||
- 월 경비: 상품 구입비 900만, 배송료 150만, 기타 100만 원
|
||||
- 신고 대상: 3개월마다 신고 필요
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "신고 기한이 언제인지 몰랐어요"
|
||||
→ 필요경비와 공제세액을 잘못 계산했어요
|
||||
→ 신고 기한을 놓쳤어요
|
||||
|
||||
**결과**:
|
||||
- 부가가치세법 제25조 위반
|
||||
- 가산세(무신고 가산) 부과
|
||||
- 이 사례에서는 약 50만 원 정도의 추가 납부
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 신고 기한을 달력에 표시했어요
|
||||
→ 세무사와 월 1회 점검했어요
|
||||
→ 정시 신고했어요
|
||||
|
||||
**결과**:
|
||||
- 부가가치세법 제25조 정시 신고
|
||||
- 가산세 부과 없음
|
||||
- 사업에만 집중할 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 단계별 신고 준비 (2025년 기준)
|
||||
|
||||
### Step 1️⃣: 매출액 정리
|
||||
3개월간의 모든 매출 합계: 약 4,500만 원
|
||||
|
||||
### Step 2️⃣: 경비 계산
|
||||
|
||||
월평균 경비:
|
||||
- 상품 구입비: 900만 원 (3개월 2,700만 원)
|
||||
- 배송료: 150만 원 (3개월 450만 원)
|
||||
- 기타 경비: 100만 원 (3개월 300만 원)
|
||||
- **3개월 합계: 3,450만 원**
|
||||
|
||||
### Step 3️⃣: 공제 대상 파악
|
||||
공제세액 = 경비에 포함된 부가가치세
|
||||
|
||||
**공제 가능한 항목**:
|
||||
- 상품 구입 시 부가세 (부가가치세법 제17조)
|
||||
- 배송료의 부가세
|
||||
- 영수증 필수 (발행자별로 증명)
|
||||
|
||||
**공제 불가 항목**:
|
||||
- 국세 기본법에 따른 특정 경비
|
||||
|
||||
### Step 4️⃣: 납부액 계산
|
||||
매출액 4,500만 × 10% = 450만 원 (부가세)
|
||||
경비 공제액 345만 × 10% = 34.5만 원 (공제세액)
|
||||
**납부액**: 450만 - 34.5만 ≈ **415.5만 원**
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
**기본 개념만으로도 충분**:
|
||||
- 부가가치세가 뭔지
|
||||
- 언제 신고하는지
|
||||
- 어떤 서류가 필요한지
|
||||
|
||||
→ 기초 개념만 알아도 큰 도움이 됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 하지만 현실은 이렇게 복잡해요
|
||||
|
||||
**신고 기한**:
|
||||
- 부가가치세법 제25조에 따른 신고 기한
|
||||
- 매 분기마다 다른 마감일
|
||||
- 기한을 놓치면 무신고 가산세 발생
|
||||
|
||||
**공제 판정**:
|
||||
- 어떤 영수증이 공제되는지
|
||||
- 국세 기본법 제83조에 따른 결정
|
||||
- 발행자의 세무 상태에 따른 영향
|
||||
|
||||
**복합 사업**:
|
||||
- 면세 사업과 과세 사업을 함께 하면?
|
||||
- 공제 비율 계산이 복잡함
|
||||
- 연도별 조정 필요
|
||||
|
||||
**현실**: 정확하게 하려면 세법 이해가 필수입니다.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 그래서 전문가 도움이 필요합니다
|
||||
|
||||
### 당신이 해야 할 일 vs 세무사가 해야 할 일
|
||||
|
||||
**당신이 할 수 있는 것**:
|
||||
- 영수증 수집 및 분류
|
||||
- 매출액 합계 계산
|
||||
|
||||
**세무사가 정확하게 처리하는 것**:
|
||||
- 공제 가능 여부 판단 (부가가치세법 제17조)
|
||||
- 신고 기한 관리
|
||||
- 최적 신고 방식 결정
|
||||
- 가산세 방지
|
||||
|
||||
### 비용 효과 분석
|
||||
|
||||
**정시 신고 여부**:
|
||||
- 혼자: 기한 놓칠 가능성 높음
|
||||
- 세무사: 100% 정시 신고
|
||||
|
||||
**공제액 정확성**:
|
||||
- 혼자: 과다 공제 또는 과소 공제
|
||||
- 세무사: 세법 기준 준수
|
||||
|
||||
**가산세 위험**:
|
||||
- 혼자: 무신고 가산세 발생 가능 (50~100만 원)
|
||||
- 세무사: 가산세 방지
|
||||
|
||||
**신고 비용**:
|
||||
- 혼자: 0원 (시간 비용 제외)
|
||||
- 세무사: 분기 30만 원 정도
|
||||
|
||||
**결론**: 한 분기 가산세가 세무사 비용보다 많이 나올 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 꼭 기억하세요!
|
||||
|
||||
**1. 부가가치세는 의무입니다**
|
||||
**2. 기한 하나를 놓치면 가산세가 발생합니다**
|
||||
**3. 정확하게 하려면 전문가 도움이 효율적입니다**
|
||||
|
||||
신고 기한이 다가오면 미리 세무사와 상담하세요.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 3. 프리랜서를 위한 종합소득세 신고
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, created_at)
|
||||
VALUES (
|
||||
'프리랜서를 위한 종합소득세 신고 - 이것만 알면 충분합니다',
|
||||
'freelancer-income-tax-guide',
|
||||
$$
|
||||
# 프리랜서를 위한 종합소득세 신고 - 이것만 알면 충분합니다
|
||||
|
||||
"작년에 벌어들인 돈이 얼마인데, 세금을 얼마나 내야 하나요?"
|
||||
|
||||
프리랜서는 **"본인이 일한 만큼 벌어들인 소득에 세금을 내는"** 구조입니다. 소득세법 제20조에 따르면, 사업소득은 매해 5월에 신고합니다.
|
||||
|
||||
---
|
||||
|
||||
## 실제 사례: 웹 디자이너 박 프리랜서님 (31세, 프리랜서 4년차)
|
||||
|
||||
**기본 정보** (예시 사례):
|
||||
- 월 평균 수입: 약 350만 원
|
||||
- 연간 수입: 약 4,200만 원
|
||||
- 월 경비: 자료실비 50만, 소프트웨어 라이선스 30만 원
|
||||
|
||||
### 원래는 이렇게 했어요 (실패 사례)
|
||||
→ "수입은 기록했는데 경비는 안 챙겼어요"
|
||||
→ 영수증 없이 신고했어요
|
||||
→ "이 정도는 작은 금액이니까..."라고 생각했어요
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제46조에 따른 필요경비 과소 인정
|
||||
- 소득세법 제50조의 기본공제 조정
|
||||
- 이 사례에서는 약 100만 원 정도의 추가 납세
|
||||
|
||||
### 바뀐 후 (성공 사례)
|
||||
→ 경비도 정리하고
|
||||
→ 영수증을 모아두고
|
||||
→ 세무사와 상담했어요
|
||||
|
||||
**결과**:
|
||||
- 소득세법 제46조 기준에 따른 정확한 필요경비 인정
|
||||
- 소득세 정확하게 계산됨
|
||||
- 본인이 낼 세금의 액수를 미리 알 수 있었습니다.
|
||||
|
||||
---
|
||||
|
||||
## 단계별 신고 준비 (2025년 기준)
|
||||
|
||||
### Step 1️⃣: 연간 사업소득 정리
|
||||
월 350만 원 × 12개월 = 연 4,200만 원
|
||||
|
||||
### Step 2️⃣: 필요경비 계산
|
||||
|
||||
연간 경비:
|
||||
- 자료실비: 50만 원 × 12개월 = 600만 원
|
||||
- 소프트웨어 라이선스: 30만 원 × 12개월 = 360만 원
|
||||
- 기타 경비 (통신비, 교육): 100만 원
|
||||
- **연간 경비 합계: 1,060만 원**
|
||||
|
||||
### Step 3️⃣: 순이익 계산
|
||||
4,200만 원 - 1,060만 원 = **3,140만 원**
|
||||
|
||||
### Step 4️⃣: 소득세 계산
|
||||
소득세법 제50조에 따른 기본공제 적용
|
||||
개인 기본공제: 150만 원
|
||||
**과세표준**: 3,140만 - 150만 = 2,990만 원
|
||||
**예상 세금**: 약 300만 원~350만 원 (세율 6~15%)
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
**기본 개념만으로도 충분**:
|
||||
- 언제 신고하는지
|
||||
- 어떤 경비를 챙기는지
|
||||
- 대략적인 세금 액수
|
||||
|
||||
→ 기초를 알면 신고 준비가 훨씬 쉬워집니다.
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 하지만 현실은 이렇게 복잡해요
|
||||
|
||||
**경비 인정 기준**:
|
||||
- 소득세법 제46조에 따른 필요경비 판단
|
||||
- 업무 관련성 입증 필요
|
||||
- 개인비와의 구분
|
||||
- 영수증 없을 때 대체 입증
|
||||
|
||||
**공제 판정**:
|
||||
- 소득세법 제50조 기본공제
|
||||
- 부양가족 공제 추가 가능
|
||||
- 연도별 공제 기준 변경
|
||||
- 종합소득 다른 소득과의 연계
|
||||
|
||||
**신고 방식**:
|
||||
- 분리과세 vs 종합과세 선택
|
||||
- 손실 이월공제 규칙
|
||||
- 지방소득세 연동
|
||||
|
||||
**현실**: 매년 세법이 바뀌고, 개인의 상황에 따라 신고 방식이 달라집니다.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 그래서 전문가 도움이 필요합니다
|
||||
|
||||
### 당신이 해야 할 일 vs 세무사가 해야 할 일
|
||||
|
||||
**당신이 할 수 있는 것**:
|
||||
- 통장 내역 정리
|
||||
- 경비 영수증 모으기
|
||||
- 월별 수입액 기록
|
||||
|
||||
**세무사가 정확하게 처리하는 것**:
|
||||
- 경비 인정 가능 범위 판단 (소득세법 제46조)
|
||||
- 최적 신고 방식 결정
|
||||
- 공제 항목 최대화 (소득세법 제50조)
|
||||
- 세무청 심사 대비
|
||||
|
||||
### 비용 효과 분석
|
||||
|
||||
**경비 인정**:
|
||||
- 혼자: 인정 불가 부분 많음 (100만 원 손실)
|
||||
- 세무사: 정확한 인정 (절세 효과)
|
||||
|
||||
**신고 정확성**:
|
||||
- 혼자: 계산 오류 가능성
|
||||
- 세무사: 법적 기준 준수
|
||||
|
||||
**세금 부담**:
|
||||
- 혼자: 예측 불가, 높을 가능성
|
||||
- 세무사: 최적화된 금액
|
||||
|
||||
**세무사 비용**:
|
||||
- 혼자: 0원
|
||||
- 세무사: 연 100~150만 원
|
||||
|
||||
**결론**: 세무사 비용보다 절세 효과가 더 크면 전문가 도움이 이득입니다.
|
||||
|
||||
---
|
||||
|
||||
## 꼭 기억하세요!
|
||||
|
||||
**1. 경비를 정리하면 세금이 줄어듭니다**
|
||||
**2. 하지만 경비 인정 기준이 복잡합니다 (소득세법 제46조)**
|
||||
**3. 정확하게 하려면 전문가 도움이 필수입니다**
|
||||
|
||||
5월 신고 전에 미리 세무사와 상담하세요. 미리 준비하면 더 많은 절세 기회를 놓치지 않습니다.
|
||||
$$,
|
||||
1,
|
||||
true,
|
||||
NOW()
|
||||
);
|
||||
@@ -0,0 +1,552 @@
|
||||
-- V025: Add 9 new blog posts with correct SQL structure
|
||||
-- All posts follow BLOG_TEMPLATE.md guidelines: 3-step structure, accuracy principle, list format
|
||||
|
||||
DELETE FROM blog_posts WHERE id >= 4;
|
||||
|
||||
INSERT INTO blog_posts (title, content, slug, category_id, is_published, seo_title, seo_description, tags, created_at, updated_at) VALUES
|
||||
|
||||
-- 1. 프리랜서가 놓친 경비 5가지
|
||||
(
|
||||
'프리랜서가 놓친 경비 5가지 - 이것도 인정될까요?',
|
||||
$$# 프리랜서가 놓친 경비 5가지
|
||||
|
||||
"프리랜서인데 경비로 인정되는 게 뭐고 안 되는 게 뭐죠?"
|
||||
|
||||
많은 프리랜서들이 이 질문을 합니다. 소득세법 제34조에 따르면 필요경비는 소득을 얻기 위해 직접 또는 간접적으로 필요한 비용입니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
기본 경비:
|
||||
- 통신비: 인터넷, 휴대폰 요금
|
||||
- 교육비: 업무 관련 강좌, 자격증
|
||||
- 차량유지비: 업무용 차량 유지
|
||||
- 소프트웨어: 업무용 프로그램, 구독료
|
||||
- 사무실비: 작업 공간, 임차료
|
||||
|
||||
영수증만 있으면 대부분 인정됩니다.
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
통신비는 얼마까지?
|
||||
- 개인과 업무를 구분해야 함 (예: 핸드폰 60% 만 경비)
|
||||
- 세무청이 불인정하면 증빙책임은 당신
|
||||
|
||||
차량유지비는 모두 경비?
|
||||
- 업무용만 전부 가능
|
||||
- 개인 차량의 일부만 인정 (주관적 판단)
|
||||
- 휘발유 영수증만으로는 부족 (주행 기록 요구 가능)
|
||||
|
||||
소프트웨어는 모두 경비?
|
||||
- 영상 제작자: 어도비는 필수 (인정)
|
||||
- 엑셀: 모든 직업이 사용하지만 개인용도도 있음 (일부만 인정)
|
||||
- 채팅앱: 고객 소통이지만 개인도 섞임 (판단 필요)
|
||||
|
||||
연간 경비가 50%를 넘으면?
|
||||
- 2025년 기준 평균은 30~40%
|
||||
- 당신이 50%를 신고하면 세무청이 의심
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 통신비/차량비의 합리적 배분 기준 제시
|
||||
- 소프트웨어별 업무 관련성 판단
|
||||
- 세무청 질의에 대한 공식 근거 준비
|
||||
- 이의신청 시 법적 논거 제시
|
||||
|
||||
법적 근거: 소득세법 제34조 필요경비 규정
|
||||
$$,
|
||||
'freelancer-expenses',
|
||||
NULL,
|
||||
true,
|
||||
'Freelancer Expenses - Tax Deduction Guide',
|
||||
'5 common expenses freelancers overlook, with tax law basis (소득세법 제34조)',
|
||||
'프리랜서,경비,필요경비,소득세,세무',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 2. 월세 신고하는 방법
|
||||
(
|
||||
'월세 신고하는 방법 - 환급받을 수 있는 금액이 있습니다',
|
||||
$$# 월세 신고하는 방법
|
||||
|
||||
"월세를 낼 때 세금 환급이 있다던데 정말인가요?"
|
||||
|
||||
소득세법 제59조의2에 따르면 월세세액공제가 있습니다. 신고하지 않으면 한 푼도 못 받습니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
월세세액공제 조건 (2025년 기준):
|
||||
- 본인 거주 주택의 월세: 연 750만 원 한도
|
||||
- 필요 서류: 임대차계약서, 월세 납부 증빙
|
||||
- 환급액: 연 월세의 10% (최대 75만 원)
|
||||
|
||||
예시 (월 60만 원 월세):
|
||||
- 연 월세: 720만 원
|
||||
- 환급액: 72만 원
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
증빙 서류가 충분한가?
|
||||
- 임대차계약서: 필수
|
||||
- 월세 납부 증빙: 현금? 계좌이체? 어느 정도?
|
||||
- 세무청이 불인정하면? 환급 못 받음
|
||||
|
||||
선택지가 있다고?
|
||||
- 표준세액공제 vs 월세세액공제: 어느 게 더 유리?
|
||||
- 부양가족이 있으면? 배우자가 신청하면?
|
||||
- 전세금이 있으면? 월세와 함께?
|
||||
|
||||
2년 뒤에 적용된다고?
|
||||
- 2023년 월세는 2025년 환급
|
||||
- 기한을 놓치면? 5년 내 수정신고 가능하지만 복잡
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 증빙 서류 사전 점검
|
||||
- 월세 vs 표준세액 최적 선택
|
||||
- 배우자/부양가족 고려
|
||||
- 기한 관리 및 수정신고
|
||||
|
||||
법적 근거: 소득세법 제59조의2 월세세액공제
|
||||
$$,
|
||||
'monthly-rent-tax-credit',
|
||||
NULL,
|
||||
true,
|
||||
'Monthly Rent Tax Credit Guide',
|
||||
'How to claim rental tax deduction (월세세액공제) under Income Tax Act Article 59-2',
|
||||
'월세,세액공제,환급,소득세',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 3. 자녀 증여세 계산하기
|
||||
(
|
||||
'자녀 증여세 계산하기 - 기초공제를 모르면 손해봅니다',
|
||||
$$# 자녀 증여세 계산하기
|
||||
|
||||
"자녀에게 돈을 주면 세금을 내야 하나요?"
|
||||
|
||||
상속세및증여세법 제13조에 따르면 기초공제가 있습니다. 공제 한도 내면 세금 0원입니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
기초공제 (2025년 기준):
|
||||
- 자녀 1명당 5,000만 원 (10년마다)
|
||||
- 미성년자 자녀: 2,000만 원 (10년마다)
|
||||
|
||||
예시 (자녀 1명, 성인):
|
||||
- 5,000만 원 선물 = 증여세 0원
|
||||
- 6,000만 원 선물 = 1,000만 원 초과분에 대해 세금 계산
|
||||
|
||||
공제 계산:
|
||||
- 10년 단위로 계산
|
||||
- 2015년 1,000만 원 + 2025년 4,000만 원 = 연 500만 원 × 10년 계산
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
10년이 정확히 몇 년인가?
|
||||
- 정확히 10년이어야 함
|
||||
- 9년 11개월은 계산에 포함됨
|
||||
- 세무청 판단이 엄격함
|
||||
|
||||
자녀가 여러 명이면?
|
||||
- 자녀별로 5,000만 원씩
|
||||
- 배우자 증여분은 별도 계산
|
||||
- 자녀가 결혼하면? 성인 vs 미성년 기준
|
||||
|
||||
증여세율은 얼마인가?
|
||||
- 초과분의 10~50% (금액별로 다름)
|
||||
- 1,000만 원 초과시 10%에서 시작
|
||||
- 계산 복잡함
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 기초공제 정확한 계산
|
||||
- 자녀 수에 따른 최적 증여 계획
|
||||
- 세율 시뮬레이션
|
||||
- 장기 증여 전략 수립
|
||||
|
||||
법적 근거: 상속세및증여세법 제13조 기초공제
|
||||
$$,
|
||||
'gift-tax-calculation',
|
||||
NULL,
|
||||
true,
|
||||
'Gift Tax for Children Calculation',
|
||||
'How to calculate inheritance and gift tax with basic deduction (상속세및증여세법 제13조)',
|
||||
'증여세,자녀,기초공제,상속세',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 4. 사업자 등록 타이밍
|
||||
(
|
||||
'사업자 등록 타이밍 - 너무 빨라도, 늦어도 손해입니다',
|
||||
$$# 사업자 등록 타이밍
|
||||
|
||||
"언제 사업자등록을 해야 세금을 절약할 수 있나요?"
|
||||
|
||||
소득세법 제2조에 따르면 사업소득은 사업을 개시한 시점부터 인정됩니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
사업자등록 기한:
|
||||
- 사업 개시 후 20일 이내 신청
|
||||
- 늦으면 가산세 발생 (10%)
|
||||
|
||||
사업소득 인정 시점:
|
||||
- 등록일이 아니라 사업 개시일부터
|
||||
- 실제 소득이 발생한 날부터 신고 의무
|
||||
|
||||
예시:
|
||||
- 1월 1일 사업 개시, 1월 20일 등록 = OK
|
||||
- 1월 1일 사업 개시, 2월 15일 등록 = 가산세 + 세무조사 위험
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
등록 안 하면?
|
||||
- 최대 500만 원 과태료
|
||||
- 3년 이상 세무조사 대상
|
||||
- 신용평가에 악영향
|
||||
|
||||
너무 빨리 등록하면?
|
||||
- 아직 소득 없는데 세금 신고?
|
||||
- 순손실 상태 (해로울 수 있음)
|
||||
|
||||
사업 형태에 따라?
|
||||
- 직업: 등록 필수 (의료, 법률 등)
|
||||
- 부업: 월 소득 100만 원 이상시 의무
|
||||
- 프리랜서: 소득 발생시 등록 권장
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 최적 등록 시점 판단
|
||||
- 사업소득 인정 범위 확인
|
||||
- 소급 적용 가능성 검토
|
||||
- 향후 세금 계획 수립
|
||||
|
||||
법적 근거: 소득세법 제2조 사업소득 정의
|
||||
$$,
|
||||
'business-registration-timing',
|
||||
NULL,
|
||||
true,
|
||||
'Business Registration Timing Guide',
|
||||
'When to register business for tax optimization (소득세법 제2조)',
|
||||
'사업자등록,사업소득,세무,등록시기',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 5. 소상공인 간단 기장
|
||||
(
|
||||
'소상공인 간단 기장 - 엑셀 + 영수증으로 충분합니다',
|
||||
$$# 소상공인 간단 기장
|
||||
|
||||
"복식부기는 너무 복잡한데, 정말 간편장부로 가능한가요?"
|
||||
|
||||
소득세법 제29조에 따르면 소상공인은 간편장부 기장이 가능합니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
간편장부 대상:
|
||||
- 직전연도 수입금액 8,000만 원 이하
|
||||
- 소매업, 음식점 등 소규모 사업
|
||||
|
||||
기입 항목:
|
||||
- 날짜
|
||||
- 매출액 또는 경비
|
||||
- 적요 (간단한 설명)
|
||||
- 남은돈
|
||||
|
||||
엑셀로 충분:
|
||||
- 따로 회계프로그램 불필요
|
||||
- 월별 요약만 정리
|
||||
- 영수증 첨부
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
영수증 관리가 정말 쉬운가?
|
||||
- 일년에 365일 거래
|
||||
- 하나 빠지면 계산 달라짐
|
||||
- 현금 거래 증빙 어려움
|
||||
|
||||
경비와 개인비 구분?
|
||||
- 같은 카테고리도 경비 여부 판단 필요
|
||||
- 예: 차량 휘발유 (업무 % 계산)
|
||||
- 음식비 (회의비 vs 개인식사)
|
||||
|
||||
세무청 조회가 오면?
|
||||
- 간편장부도 적격 요구
|
||||
- 영수증 없으면 인정 안 됨
|
||||
- 수정신고 필요할 수 있음
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 간편장부 양식 제공
|
||||
- 월별 정리 및 검수
|
||||
- 경비/개인비 경계 판단
|
||||
- 세무청 조사 대비
|
||||
|
||||
법적 근거: 소득세법 제29조 기장의무
|
||||
$$,
|
||||
'small-business-bookkeeping',
|
||||
NULL,
|
||||
true,
|
||||
'Simple Bookkeeping for Small Business',
|
||||
'Easy accounting for small business owners under Income Tax Act Article 29',
|
||||
'소상공인,간편장부,기장,세무',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 6. 스마트스토어 판매자 세무
|
||||
(
|
||||
'스마트스토어 판매자 세무 - 플랫폼 수입도 세금이 필요합니다',
|
||||
$$# 스마트스토어 판매자 세무
|
||||
|
||||
"온라인에서 판매한 수입도 신고해야 하나요?"
|
||||
|
||||
소득세법 제20조에 따르면 스마트스토어 판매 수입은 사업소득입니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
사업소득 인정:
|
||||
- 월 매출 100만 원 이상: 의무 신고
|
||||
- 월 매출 100만 원 미만: 신고 권장
|
||||
|
||||
필요 서류:
|
||||
- 판매 내역 (스마트스토어 다운로드)
|
||||
- 결제 기록 (계좌입금 내역)
|
||||
- 상품 원가 증빙 (영수증)
|
||||
|
||||
경비 인정:
|
||||
- 배송비
|
||||
- 광고료
|
||||
- 포장재
|
||||
- 통신비 일부
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
플랫폼이 정보를 제공하나?
|
||||
- 스마트스토어: 매달 판매 요약 제공
|
||||
- 그 외 플랫폼: 정보 부족
|
||||
- 수작업 정리 필요
|
||||
|
||||
수수료는?
|
||||
- 스마트스토어 수수료: 경비 인정
|
||||
- 결제 수수료: 경비 인정? (판매사 역할에 따라)
|
||||
- 세무청 판단이 엄격함
|
||||
|
||||
개인통장 vs 사업통장?
|
||||
- 개인통장 사용시 증빙 어려움
|
||||
- 세무조사시 혼동 가능성
|
||||
- 세금 계산도 복잡
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 플랫폼별 소득 정리
|
||||
- 수수료/배송비 경비 처리
|
||||
- 월별 정산 금액 확인
|
||||
- 세무청 질의 대비
|
||||
|
||||
법적 근거: 소득세법 제20조 기타소득/사업소득
|
||||
$$,
|
||||
'smartstore-seller-tax',
|
||||
NULL,
|
||||
true,
|
||||
'Online Seller Tax Guide',
|
||||
'Tax reporting for online marketplace sellers (소득세법 제20조)',
|
||||
'스마트스토어,온라인판매,사업소득,세무',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 7. 부가가치세 신고 기한
|
||||
(
|
||||
'부가가치세 신고 기한 - 2일만 늦어도 가산세입니다',
|
||||
$$# 부가가치세 신고 기한
|
||||
|
||||
"부가가치세는 언제까지 신고해야 하나요?"
|
||||
|
||||
부가가치세법 제25조에 따르면 신고 기한이 정해져 있습니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
부가가치세 신고 기한 (2025년):
|
||||
- 1기 (1월~4월): 5월 25일까지
|
||||
- 2기 (5월~8월): 9월 25일까지
|
||||
|
||||
납부 기한:
|
||||
- 신고와 동시 납부 (가산세 피하려면)
|
||||
|
||||
신고 대상:
|
||||
- 매출 8,000만 원 이상: 일반과세
|
||||
- 매출 8,000만 원 이하: 간이과세
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
과세/면세 구분?
|
||||
- 같은 매출도 과세/면세 섞여 있음
|
||||
- 복합사업: 업태별로 다름
|
||||
- 세무청 판단 필요
|
||||
|
||||
환급 세금을 놓치면?
|
||||
- 신고 기한 경과후 신청 불가
|
||||
- 수정신고로 환급신청 가능
|
||||
- 법정기한까지만 가능
|
||||
|
||||
재계산이 필요한가?
|
||||
- 선급금, 환불 등으로 변동
|
||||
- 세금 계산 다시 필요
|
||||
- 기한 내 수정신고 가능
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 신고 기한 관리
|
||||
- 과세/면세 구분 정확성
|
||||
- 환금 세금 최대화
|
||||
- 기한 내 수정신고
|
||||
|
||||
법적 근거: 부가가치세법 제25조 신고기한
|
||||
$$,
|
||||
'vat-reporting-deadline',
|
||||
NULL,
|
||||
true,
|
||||
'Value Added Tax Reporting Deadline',
|
||||
'VAT filing deadline and calculation (부가가치세법 제25조)',
|
||||
'부가가치세,신고기한,세무',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 8. 종합소득세 신고 완벽 가이드
|
||||
(
|
||||
'종합소득세 신고 완벽 가이드 - 5월 신고로 연간 세금 결정됩니다',
|
||||
$$# 종합소득세 신고 완벽 가이드
|
||||
|
||||
"종합소득세는 무엇이고, 정말 모두 신고해야 하나요?"
|
||||
|
||||
소득세법 제19조에 따르면 종합소득세는 모든 사업소득을 합산하여 신고합니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
종합소득세 구성:
|
||||
- 사업소득 (자영업, 프리랜서)
|
||||
- 근로소득 (급여)
|
||||
- 이자소득 (저축 이자)
|
||||
- 배당소득 (주식 배당)
|
||||
- 기타소득 (강의료 등)
|
||||
|
||||
신고 대상:
|
||||
- 종합소득 4,000만 원 초과
|
||||
|
||||
신고 기한:
|
||||
- 매년 5월 31일까지
|
||||
|
||||
필요 서류:
|
||||
- 사업소득 기장내역
|
||||
- 경비 영수증
|
||||
- 기부금 증명서
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
모든 소득을 포함해야 하나?
|
||||
- 사업소득, 근로소득, 기타소득 모두
|
||||
- 하나라도 누락되면 탈세
|
||||
- 세무청이 자동 적발
|
||||
|
||||
공제 항목을 놓치면?
|
||||
- 교육비, 의료비, 기부금 공제 가능
|
||||
- 공제 순서가 있음 (환급 과감면제 등)
|
||||
- 증빙서류 필수
|
||||
|
||||
세율은 얼마인가?
|
||||
- 소득에 따라 6~45% (누진세)
|
||||
- 계산이 복잡함
|
||||
- 오류가능성 높음
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 전체 소득 정확한 파악
|
||||
- 공제 항목 최대화
|
||||
- 세율 계산 정확성
|
||||
- 환급금 극대화
|
||||
|
||||
법적 근거: 소득세법 제19조 종합소득
|
||||
$$,
|
||||
'comprehensive-income-tax-guide',
|
||||
NULL,
|
||||
true,
|
||||
'Comprehensive Income Tax Filing Guide',
|
||||
'Complete guide to filing comprehensive income tax (종합소득세) (소득세법 제19조)',
|
||||
'종합소득세,신고,공제,소득세',
|
||||
NOW(),
|
||||
NOW()
|
||||
),
|
||||
|
||||
-- 9. 연말정산 환급 최대화
|
||||
(
|
||||
'연말정산 환급 최대화 - 놓친 공제 하나가 수십만 원입니다',
|
||||
$$# 연말정산 환급 최대화
|
||||
|
||||
"연말정산으로 환금을 받으려면 뭘 꼭 챙겨야 하나요?"
|
||||
|
||||
소득세법 제163조에 따르면 특정 지출에 대해 세액공제가 있습니다.
|
||||
|
||||
1️⃣ 이 정도는 누구나 배울 수 있어요
|
||||
|
||||
주요 공제 (2025년):
|
||||
- 기본공제: 1명당 150만 원
|
||||
- 교육비: 학생본인+자녀 연 900만 원
|
||||
- 의료비: 연 750만 원 초과분
|
||||
- 기부금: 전액 공제
|
||||
- 신용카드: 연 25만 원 초과분 15% 공제
|
||||
|
||||
계산 예시:
|
||||
- 신용카드 사용 200만 원 → (200만-250만) × 15% = 환금 0원
|
||||
- 신용카드 사용 300만 원 → (300만-250만) × 15% = 7.5만 원 환금
|
||||
|
||||
2️⃣ 하지만 현실은 복잡해요
|
||||
|
||||
공제 순서가 있나?
|
||||
- 기본공제 먼저
|
||||
- 그 다음 특별공제 (교육비, 의료비)
|
||||
- 마지막 세액공제
|
||||
- 순서 틀리면 환금 안 됨
|
||||
|
||||
중복 공제는?
|
||||
- 같은 지출 두 번 공제 불가
|
||||
- 배우자가 신청했으면?
|
||||
- 부모가 신청했으면? (중복 불가)
|
||||
|
||||
증빙서류를 잃어버렸다면?
|
||||
- 신용카드: 증빙 필수 (발급 신청)
|
||||
- 현금영수증: 미리 등록해야 공제
|
||||
- 의료비: 병원 영수증 필수
|
||||
|
||||
3️⃣ 그래서 세무사가 필요합니다
|
||||
|
||||
세무사는:
|
||||
- 공제 항목 빠짐 없이 확인
|
||||
- 중복 공제 방지
|
||||
- 최적 가족 배분 (부부, 부모)
|
||||
- 환급금 극대화
|
||||
|
||||
법적 근거: 소득세법 제163조 연말정산
|
||||
$$,
|
||||
'year-end-tax-settlement',
|
||||
NULL,
|
||||
true,
|
||||
'Year-End Tax Settlement Refund Maximization',
|
||||
'How to maximize tax refund in year-end adjustment (연말정산) (소득세법 제163조)',
|
||||
'연말정산,환금,공제,세액공제',
|
||||
NOW(),
|
||||
NOW()
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,299 @@
|
||||
-- V026: 기초 3개 포스트 추가 + 모든 12개에 카테고리 할당
|
||||
-- 카테고리 배치 (각 3개씩):
|
||||
-- cat 1 (사업자 세무): 사업자 기장, 소상공인, 스마트스토어
|
||||
-- cat 2 (부동산 세금): 월세, 자녀 증여세
|
||||
-- cat 3 (종합소득세): 프리랜서 종소세, 프리랜서 경비, 종소세 가이드
|
||||
-- cat 4 (부가가치세): 부가세 신고, 부가세 기한, 사업자 등록
|
||||
-- cat 5 (가족자산): 연말정산 환급
|
||||
|
||||
DELETE FROM blog_posts WHERE id >= 1;
|
||||
|
||||
INSERT INTO blog_posts (title, slug, content, category_id, is_published, seo_title, seo_description, tags, created_at, updated_at) VALUES
|
||||
|
||||
-- 기초 3개 포스트 (V022, V024)
|
||||
('사업자 기장 시 자주 하는 실수 5가지 - 혼자 하기 어려운 이유', 'accounting-mistakes', $$# 사업자 기장 시 자주 하는 실수 5가지
|
||||
|
||||
많은 소규모 사업자들이 "돈이 들어오고 나가는 것을 기록하는 일"은 간단해 보이지만, 실제로는 악마가 디테일에 숨어있습니다.
|
||||
|
||||
## 단계별 계산 (2025년 기준)
|
||||
|
||||
### Step 1: 매출 정리
|
||||
월 600만 원 × 12개월 = 연 7,200만 원
|
||||
|
||||
### Step 2: 경비 계산
|
||||
- 월세: 150만 원 (연 1,800만 원)
|
||||
- 재료비: 180만 원 (연 2,160만 원)
|
||||
- 직원급여: 100만 원 (연 1,200만 원)
|
||||
- 기타: 20만 원 (연 240만 원)
|
||||
- 월 합계: 450만 원 / 연 합계: 5,400만 원
|
||||
|
||||
### Step 3: 순이익
|
||||
7,200만 - 5,400만 = 1,800만 원
|
||||
|
||||
### Step 4: 세금 (2025년 기준)
|
||||
- 기본공제: 160만 원
|
||||
- 과세표준: 1,640만 원
|
||||
- 세율: 6%
|
||||
- 세금: 약 98만 원/년
|
||||
|
||||
## 악마는 디테일에 숨어있습니다
|
||||
|
||||
### 1. 영수증 정리
|
||||
겉으로는: 영수증을 모으기만 하면 돼
|
||||
현실: 소득세법 제34조에서 인정되는 사업비만 공제 가능
|
||||
|
||||
### 2. 매출과 경비 기록
|
||||
겉으로는: 엑셀에 숫자만 입력하면 돼
|
||||
현실: 부가세와의 연계, 수정신고 규정, 기한 후 신고 가산세 고려
|
||||
|
||||
### 3. 세금 확정
|
||||
겉으로는: 기장만 잘하면 끝
|
||||
현실: 절세 전략, 연도별 일관성, 세무조사 대비, 이의신청 절차
|
||||
|
||||
## 올바른 기장 vs 하면 안 되는 것
|
||||
|
||||
### 해야 할 것
|
||||
1. 영수증 정리 - 5년 보관 의무
|
||||
2. 기본 기록 - 소득세법 제164조 규정
|
||||
3. 연 1회 점검 - 세무사와 상담
|
||||
4. 정확한 신고 - 소득세법 제46조 준수
|
||||
|
||||
### 하면 안 되는 것
|
||||
1. 영수증 버리기 - 증거 부족
|
||||
2. 개인비와 섞기 - 세법 위반
|
||||
3. 신고 늦추기 - 가산세 부과
|
||||
4. 과하게 깎기 - 세무조사 대상
|
||||
|
||||
## 결론
|
||||
|
||||
기초는 배울 수 있지만, 세법의 복잡성, 매년 변경되는 기준, 정확한 해석 때문에 세무사의 도움이 필요합니다.$$, 1, true, 'SEO Title', 'SEO Description', '사업자,기장,세무', NOW(), NOW()),
|
||||
|
||||
('이번달 부가가치세 신고 - 너무 늦지 마세요! (D-day 계산)', 'vat-report-guide', $$# 부가가치세 신고 - D-day 계산
|
||||
|
||||
많은 사업자들이 신고 기한을 놓칩니다. 부가가치세법 제25조에 따르면 신고 기한은 25일(2025년 개정). 하루만 늦어도 국세기본법 제47조 가산세가 발생합니다!
|
||||
|
||||
## 2025년 신고 일정
|
||||
|
||||
| 기간 | 신고 마감 | 납부 마감 |
|
||||
|------|----------|----------|
|
||||
| 1~2월 | 3월 25일 | 3월 31일 |
|
||||
| 3~4월 | 5월 25일 | 5월 31일 |
|
||||
| 5~6월 | 7월 25일 | 7월 31일 |
|
||||
| 7~8월 | 9월 25일 | 9월 30일 |
|
||||
|
||||
## 부가세 계산 (간이과세 기준)
|
||||
|
||||
월 1,000만 원 매출 기준:
|
||||
- 간이과세율: 도매·소매업 3%
|
||||
- 부가세 = 1,000만 × 3% = 300,000원/월
|
||||
|
||||
## 하지만 복잡한 부분들
|
||||
|
||||
- 카드 수수료 처리
|
||||
- 현금 판매 기록
|
||||
- 환불 처리 규정
|
||||
- 세금계산서 vs 일반 영수증
|
||||
- 3개월 전 환불 공제 불가
|
||||
|
||||
이런 디테일들 때문에 세무사가 필요합니다.$$, 4, true, 'SEO Title', 'SEO Description', '부가가치세,신고,세금', NOW(), NOW()),
|
||||
|
||||
('프리랜서를 위한 종합소득세 신고 - 정확한 경비 처리 가이드', 'freelancer-tax-guide', $$# 프리랜서를 위한 종합소득세 신고
|
||||
|
||||
유튜버, 온라인 강사, 디자이너, 프리랜서... 자신이 벌은 돈을 직접 신고해야 합니다. 종합소득세 신고(소득세법 제20조)입니다.
|
||||
|
||||
## 실제 사례: 유튜버 (월 250만 원 수입)
|
||||
|
||||
### 실패 사례
|
||||
- 신고 소득: 3,000만 원
|
||||
- 기본공제: 160만 원
|
||||
- 세금: 약 450만 원
|
||||
|
||||
### 성공 사례 (정확한 경비 처리)
|
||||
- 신고 소득: 2,200만 원 (경비 800만 원 공제)
|
||||
- 기본공제: 160만 원
|
||||
- 세금: 약 280만 원
|
||||
- **절약액: 약 170만 원**
|
||||
|
||||
## 종합소득세 계산 (2025년)
|
||||
|
||||
### 연간 수입
|
||||
| 수입 출처 | 연간 |
|
||||
|---------|------|
|
||||
| 유튜브 광고 | 2,400만 |
|
||||
| 브랜드 협찬 | 600만 |
|
||||
| 합계 | 3,000만 |
|
||||
|
||||
### 경비 (소득세법 제34조 기준)
|
||||
| 항목 | 연간 |
|
||||
|------|------|
|
||||
| 카메라/마이크 | 100만 |
|
||||
| 소프트웨어 | 72만 |
|
||||
| 인터넷비 | 60만 |
|
||||
| 카페비 | 240만 |
|
||||
| 강의료 | 120만 |
|
||||
| 책 구매 | 36만 |
|
||||
| 교통비 | 120만 |
|
||||
| 합계 | 748만 |
|
||||
|
||||
### 과세표준
|
||||
- 총 수입: 3,000만 원
|
||||
- 경비: 748만 원
|
||||
- 과세표준: 2,252만 원
|
||||
- 기본공제: 160만 원
|
||||
- 최종 과세표준: 2,092만 원
|
||||
|
||||
## 많은 프리랜서가 놓치는 부분
|
||||
|
||||
1. 어떤 경비가 인정되는가? (소득세법 제34조)
|
||||
2. 매년 기준이 바뀐다 (2025년 기본공제 160만)
|
||||
3. 세법 개정사항을 어떻게 반영하나?
|
||||
4. 세무조사에 대비해야 한다
|
||||
|
||||
이런 것들 때문에 세무사와 함께하는 것이 효율적입니다.$$, 3, true, 'SEO Title', 'SEO Description', '종합소득세,프리랜서,경비', NOW(), NOW()),
|
||||
|
||||
-- 추가 9개 포스트 (V025) - category_id 할당
|
||||
('프리랜서가 놓친 경비 5가지 - 이것도 인정될까요?', 'freelancer-expenses-5', $$# 프리랜서가 놓친 경비 5가지
|
||||
|
||||
프리랜서의 일반적인 경비:
|
||||
- 통신비: 인터넷, 휴대폰 요금
|
||||
- 교육비: 업무 관련 강좌, 자격증
|
||||
- 차량유지비: 업무용 차량 유지
|
||||
- 소프트웨어: 업무용 프로그램
|
||||
- 사무실비: 작업 공간 임차료
|
||||
|
||||
하지만 무엇이 "필요경비"인지는 복잡합니다. 소득세법 제34조를 정확하게 이해해야 합니다.$$, 3, true, 'SEO Title', 'SEO Description', '프리랜서,경비', NOW(), NOW()),
|
||||
|
||||
('월세 신고하는 방법 - 환급받을 수 있는 금액이 있습니다', 'monthly-rent-deduction', $$# 월세 신고하는 방법
|
||||
|
||||
소득세법 제59조의2에 따르면 월세세액공제가 있습니다.
|
||||
|
||||
## 월세세액공제 조건 (2025년 기준)
|
||||
- 본인 거주 주택의 월세: 연 750만 원 한도
|
||||
- 필요 서류: 임대차계약서, 월세 납부 증빙
|
||||
- 환급액: 연 월세의 10% (최대 75만 원)
|
||||
|
||||
예시: 월 60만 원 월세
|
||||
- 연 월세: 720만 원
|
||||
- 환급액: 72만 원
|
||||
|
||||
신고하지 않으면 한 푼도 못 받습니다!$$, 2, true, 'SEO Title', 'SEO Description', '월세,세액공제', NOW(), NOW()),
|
||||
|
||||
('자녀 증여세 계산하기 - 기초공제를 모르면 손해봅니다', 'child-gift-tax', $$# 자녀 증여세 계산하기
|
||||
|
||||
상속세및증여세법 제13조에 따르면 기초공제가 있습니다.
|
||||
|
||||
## 증여세 기초공제 (2025년 기준)
|
||||
- 직계 자손: 1인당 기초공제 많음
|
||||
- 조건: 증여자와 수증자 관계 증명
|
||||
|
||||
## 조세 전략
|
||||
- 시간 분산 (연간 공제 한도 활용)
|
||||
- 여러 자녀에게 분산
|
||||
- 공제 시기 선택
|
||||
|
||||
정확한 계산이 필요합니다.$$, 2, true, 'SEO Title', 'SEO Description', '증여세,상속세', NOW(), NOW()),
|
||||
|
||||
('사업자 등록 타이밍 - 너무 빨라도, 늦어도 손해입니다', 'business-registration-timing', $$# 사업자 등록 타이밍
|
||||
|
||||
소득세법 제2조에 따르면 사업소득의 인정 기준이 명확합니다.
|
||||
|
||||
## 사업자 등록의 효과
|
||||
- 부가가치세 신고 의무
|
||||
- 세금 공제 가능
|
||||
- 신용 기록 형성
|
||||
|
||||
## 언제 등록해야 하나?
|
||||
- 너무 빨리: 불필요한 부가세 부담
|
||||
- 너무 늦게: 소급 신고로 가산세
|
||||
|
||||
정확한 타이밍이 중요합니다.$$, 4, true, 'SEO Title', 'SEO Description', '사업자등록', NOW(), NOW()),
|
||||
|
||||
('소상공인 간단 기장 - 엑셀 + 영수증으로 충분합니다', 'small-business-accounting', $$# 소상공인 간단 기장
|
||||
|
||||
소득세법 제29조에 따르면 간단 기장도 인정됩니다.
|
||||
|
||||
## 간단 기장 방법
|
||||
- 엑셀에 매출/경비 기록
|
||||
- 영수증 보관
|
||||
- 연 1회 세무사와 정산
|
||||
|
||||
## 필수 항목
|
||||
- 날짜
|
||||
- 거래처
|
||||
- 금액
|
||||
- 증빙 서류 보관
|
||||
|
||||
이 정도면 충분합니다.$$, 1, true, 'SEO Title', 'SEO Description', '소상공인,기장', NOW(), NOW()),
|
||||
|
||||
('스마트스토어 판매자 세무 - 플랫폼 수입도 세금이 필요합니다', 'smartstore-tax', $$# 스마트스토어 판매자 세무
|
||||
|
||||
플랫폼 판매 수입도 세금 신고 대상입니다.
|
||||
|
||||
## 신고 방법
|
||||
- 플랫폼에서 제공하는 정산 내역서
|
||||
- 소득세법 제20조 기타소득 또는 사업소득
|
||||
- 연 300만 원 이상 시 신고 의무
|
||||
|
||||
## 경비 처리
|
||||
- 상품 구매
|
||||
- 수수료
|
||||
- 배송비
|
||||
- 광고비
|
||||
|
||||
정확한 분류가 필요합니다.$$, 1, true, 'SEO Title', 'SEO Description', '스마트스토어,세무', NOW(), NOW()),
|
||||
|
||||
('부가가치세 신고 기한 - 2일만 늦어도 가산세입니다', 'vat-deadline', $$# 부가가치세 신고 기한
|
||||
|
||||
부가가치세법 제25조: 신고 기한은 25일(2025년 개정)입니다.
|
||||
|
||||
## 신고 지체 시 페널티
|
||||
- 국세기본법 제47조: 1일당 0.2% 가산세
|
||||
- 하루만 늦어도 발생
|
||||
|
||||
## 신고 방법
|
||||
- 국세청 홈택스
|
||||
- 세무사 대리
|
||||
- 회계프로그램
|
||||
|
||||
기한을 절대 넘기면 안 됩니다.$$, 4, true, 'SEO Title', 'SEO Description', '부가가치세,기한', NOW(), NOW()),
|
||||
|
||||
('종합소득세 신고 완벽 가이드 - 5월 신고로 연간 세금이 결정됩니다', 'income-tax-complete-guide', $$# 종합소득세 신고 완벽 가이드
|
||||
|
||||
소득세법 제19조: 종합소득세 신고는 매년 5월입니다.
|
||||
|
||||
## 신고 대상
|
||||
- 사업소득 발생 개인
|
||||
- 기타소득 연 300만 원 이상
|
||||
- 근로소득 이외의 소득 발생자
|
||||
|
||||
## 필요 서류
|
||||
- 소득 입증 서류
|
||||
- 경비 증빙 자료
|
||||
- 공제 관련 서류
|
||||
|
||||
## 신고 절차
|
||||
1. 소득 정리
|
||||
2. 경비 계산
|
||||
3. 과세표준 계산
|
||||
4. 세금 계산
|
||||
5. 신고 및 납부
|
||||
|
||||
정확한 신고가 중요합니다.$$, 3, true, 'SEO Title', 'SEO Description', '종합소득세,신고', NOW(), NOW()),
|
||||
|
||||
('연말정산 환급 최대화 - 놓친 공제 하나가 수십만 원입니다', 'year-end-settlement-tips', $$# 연말정산 환급 최대화
|
||||
|
||||
소득세법 제163조: 연말정산은 매년 2월입니다.
|
||||
|
||||
## 주요 공제 항목
|
||||
- 교육비: 자녀 교육비 (연 900만 원 한도)
|
||||
- 의료비: 총 급여 3% 초과분만
|
||||
- 신용카드: 총 급여 25% 초과분만
|
||||
- 기부금: 한도 있음
|
||||
|
||||
## 환급받기
|
||||
- 공제 항목 확인
|
||||
- 증빙 서류 준비
|
||||
- 회사에 제출
|
||||
- 2월에 환급
|
||||
|
||||
놓친 공제가 있으면 손해입니다.$$, 5, true, 'SEO Title', 'SEO Description', '연말정산,환급', NOW(), NOW());
|
||||
Reference in New Issue
Block a user