Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# 논리적 데이터베이스 관계 문서
|
# 논리적 데이터베이스 관계 문서
|
||||||
|
|
||||||
> **자동 생성**: 2026-01-30 19:54:12
|
> **자동 생성**: 2026-02-03 17:09:34
|
||||||
> **소스**: Eloquent 모델 관계 분석
|
> **소스**: Eloquent 모델 관계 분석
|
||||||
|
|
||||||
## 📊 모델별 관계 현황
|
## 📊 모델별 관계 현황
|
||||||
@@ -197,6 +197,7 @@ ### model_versions
|
|||||||
### documents
|
### documents
|
||||||
**모델**: `App\Models\Documents\Document`
|
**모델**: `App\Models\Documents\Document`
|
||||||
|
|
||||||
|
- **template()**: belongsTo → `document_templates`
|
||||||
- **creator()**: belongsTo → `users`
|
- **creator()**: belongsTo → `users`
|
||||||
- **updater()**: belongsTo → `users`
|
- **updater()**: belongsTo → `users`
|
||||||
- **approvals()**: hasMany → `document_approvals`
|
- **approvals()**: hasMany → `document_approvals`
|
||||||
@@ -223,6 +224,40 @@ ### document_datas
|
|||||||
|
|
||||||
- **document()**: belongsTo → `documents`
|
- **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
|
### estimates
|
||||||
**모델**: `App\Models\Estimate\Estimate`
|
**모델**: `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');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('vehicle_maintenances', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignId('tenant_id')->constrained()->cascadeOnDelete();
|
||||||
|
$table->foreignId('vehicle_id')->constrained('corporate_vehicles')->cascadeOnDelete();
|
||||||
|
|
||||||
|
$table->date('date'); // 날짜
|
||||||
|
$table->string('category', 20); // 분류 (주유, 정비, 보험, 세차, 주차, 통행료, 검사, 기타)
|
||||||
|
$table->string('description', 200)->nullable(); // 내용
|
||||||
|
$table->unsignedBigInteger('amount')->default(0); // 금액
|
||||||
|
$table->unsignedInteger('mileage')->nullable(); // 주행거리(km)
|
||||||
|
$table->string('vendor', 100)->nullable(); // 거래처
|
||||||
|
$table->text('memo')->nullable(); // 메모
|
||||||
|
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
// 인덱스
|
||||||
|
$table->index(['tenant_id', 'vehicle_id', 'date']);
|
||||||
|
$table->index(['tenant_id', 'category']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('vehicle_maintenances');
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user