feat:홈택스 세금계산서 로컬 저장 테이블 추가
- hometax_invoices 테이블 생성 마이그레이션 - 국세청승인번호 기준 중복 방지 인덱스 - 매출/매입 구분, 금액정보, 거래처정보 저장 - 메모/분류/확인여부 등 자체 관리 필드 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 논리적 데이터베이스 관계 문서
|
||||
|
||||
> **자동 생성**: 2026-01-30 19:54:12
|
||||
> **자동 생성**: 2026-02-03 17:09:34
|
||||
> **소스**: Eloquent 모델 관계 분석
|
||||
|
||||
## 📊 모델별 관계 현황
|
||||
@@ -197,6 +197,7 @@ ### model_versions
|
||||
### documents
|
||||
**모델**: `App\Models\Documents\Document`
|
||||
|
||||
- **template()**: belongsTo → `document_templates`
|
||||
- **creator()**: belongsTo → `users`
|
||||
- **updater()**: belongsTo → `users`
|
||||
- **approvals()**: hasMany → `document_approvals`
|
||||
@@ -223,6 +224,40 @@ ### document_datas
|
||||
|
||||
- **document()**: belongsTo → `documents`
|
||||
|
||||
### document_templates
|
||||
**모델**: `App\Models\Documents\DocumentTemplate`
|
||||
|
||||
- **approvalLines()**: hasMany → `document_template_approval_lines`
|
||||
- **basicFields()**: hasMany → `document_template_basic_fields`
|
||||
- **sections()**: hasMany → `document_template_sections`
|
||||
- **columns()**: hasMany → `document_template_columns`
|
||||
|
||||
### document_template_approval_lines
|
||||
**모델**: `App\Models\Documents\DocumentTemplateApprovalLine`
|
||||
|
||||
- **template()**: belongsTo → `document_templates`
|
||||
|
||||
### document_template_basic_fields
|
||||
**모델**: `App\Models\Documents\DocumentTemplateBasicField`
|
||||
|
||||
- **template()**: belongsTo → `document_templates`
|
||||
|
||||
### document_template_columns
|
||||
**모델**: `App\Models\Documents\DocumentTemplateColumn`
|
||||
|
||||
- **template()**: belongsTo → `document_templates`
|
||||
|
||||
### document_template_sections
|
||||
**모델**: `App\Models\Documents\DocumentTemplateSection`
|
||||
|
||||
- **template()**: belongsTo → `document_templates`
|
||||
- **items()**: hasMany → `document_template_section_items`
|
||||
|
||||
### document_template_section_items
|
||||
**모델**: `App\Models\Documents\DocumentTemplateSectionItem`
|
||||
|
||||
- **section()**: belongsTo → `document_template_sections`
|
||||
|
||||
### estimates
|
||||
**모델**: `App\Models\Estimate\Estimate`
|
||||
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('hometax_invoices', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('tenant_id')->constrained()->cascadeOnDelete();
|
||||
|
||||
// 고유 식별자 (중복 방지)
|
||||
$table->string('nts_confirm_num', 50)->comment('국세청승인번호');
|
||||
$table->enum('invoice_type', ['sales', 'purchase'])->comment('매출/매입');
|
||||
|
||||
// 일자 정보
|
||||
$table->date('write_date')->comment('작성일자');
|
||||
$table->date('issue_date')->nullable()->comment('발급일자');
|
||||
$table->date('send_date')->nullable()->comment('전송일자');
|
||||
|
||||
// 공급자 정보
|
||||
$table->string('invoicer_corp_num', 20)->comment('공급자 사업자번호');
|
||||
$table->string('invoicer_corp_name', 100)->comment('공급자 상호');
|
||||
$table->string('invoicer_ceo_name', 50)->nullable()->comment('공급자 대표자');
|
||||
|
||||
// 공급받는자 정보
|
||||
$table->string('invoicee_corp_num', 20)->comment('공급받는자 사업자번호');
|
||||
$table->string('invoicee_corp_name', 100)->comment('공급받는자 상호');
|
||||
$table->string('invoicee_ceo_name', 50)->nullable()->comment('공급받는자 대표자');
|
||||
|
||||
// 금액 정보
|
||||
$table->bigInteger('supply_amount')->default(0)->comment('공급가액');
|
||||
$table->bigInteger('tax_amount')->default(0)->comment('세액');
|
||||
$table->bigInteger('total_amount')->default(0)->comment('합계');
|
||||
|
||||
// 구분 정보
|
||||
$table->tinyInteger('tax_type')->default(1)->comment('과세유형 1:과세 2:영세 3:면세');
|
||||
$table->tinyInteger('purpose_type')->default(1)->comment('영수/청구 1:영수 2:청구');
|
||||
$table->tinyInteger('issue_type')->default(1)->comment('발급유형 1:정발행 2:역발행');
|
||||
|
||||
// 기타
|
||||
$table->string('item_name', 200)->nullable()->comment('품목명');
|
||||
$table->string('remark', 500)->nullable()->comment('비고');
|
||||
|
||||
// 자체 관리 필드
|
||||
$table->string('memo', 500)->nullable()->comment('내부 메모');
|
||||
$table->string('category', 50)->nullable()->comment('분류 태그');
|
||||
$table->boolean('is_checked')->default(false)->comment('확인 여부');
|
||||
|
||||
// 동기화 정보
|
||||
$table->timestamp('synced_at')->nullable()->comment('마지막 동기화 시간');
|
||||
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
|
||||
// 인덱스
|
||||
$table->unique(['tenant_id', 'nts_confirm_num', 'invoice_type'], 'hometax_invoices_unique');
|
||||
$table->index(['tenant_id', 'invoice_type', 'write_date'], 'hometax_invoices_type_date');
|
||||
$table->index(['tenant_id', 'invoicer_corp_num'], 'hometax_invoices_invoicer');
|
||||
$table->index(['tenant_id', 'invoicee_corp_num'], 'hometax_invoices_invoicee');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('hometax_invoices');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user