feat: [finance] 경조사비 관리 API 구현

- Model: CondolenceExpense (BelongsToTenant, Auditable, SoftDeletes)
- Service: CRUD + summary 통계 (total_amount 자동 계산)
- Controller: 6개 엔드포인트 (목록/등록/상세/수정/삭제/통계)
- FormRequest: Store/Update 검증 규칙 분리
- Route: /api/v1/condolence-expenses
- Migration: updated_by, deleted_by 컬럼 추가
This commit is contained in:
김보곤
2026-03-19 13:07:20 +09:00
parent 5e5aecd992
commit abb024f0bd
7 changed files with 594 additions and 1 deletions

View File

@@ -14,7 +14,6 @@
use App\Http\Controllers\Api\V1\AccountLedgerController;
use App\Http\Controllers\Api\V1\AccountSubjectController;
use App\Http\Controllers\Api\V1\ClientController;
use App\Http\Controllers\Api\V1\BadDebtController;
use App\Http\Controllers\Api\V1\BankAccountController;
use App\Http\Controllers\Api\V1\BankTransactionController;
@@ -27,7 +26,9 @@
use App\Http\Controllers\Api\V1\CalendarController;
use App\Http\Controllers\Api\V1\CardController;
use App\Http\Controllers\Api\V1\CardTransactionController;
use App\Http\Controllers\Api\V1\ClientController;
use App\Http\Controllers\Api\V1\ComprehensiveAnalysisController;
use App\Http\Controllers\Api\V1\CondolenceExpenseController;
use App\Http\Controllers\Api\V1\DailyReportController;
use App\Http\Controllers\Api\V1\DepositController;
use App\Http\Controllers\Api\V1\EntertainmentController;
@@ -239,6 +240,16 @@
Route::get('/welfare/summary', [WelfareController::class, 'summary'])->name('v1.welfare.summary');
Route::get('/welfare/detail', [WelfareController::class, 'detail'])->name('v1.welfare.detail');
// Condolence Expense API (경조사비 관리)
Route::prefix('condolence-expenses')->group(function () {
Route::get('', [CondolenceExpenseController::class, 'index'])->name('v1.condolence-expenses.index');
Route::post('', [CondolenceExpenseController::class, 'store'])->name('v1.condolence-expenses.store');
Route::get('/summary', [CondolenceExpenseController::class, 'summary'])->name('v1.condolence-expenses.summary');
Route::get('/{id}', [CondolenceExpenseController::class, 'show'])->whereNumber('id')->name('v1.condolence-expenses.show');
Route::put('/{id}', [CondolenceExpenseController::class, 'update'])->whereNumber('id')->name('v1.condolence-expenses.update');
Route::delete('/{id}', [CondolenceExpenseController::class, 'destroy'])->whereNumber('id')->name('v1.condolence-expenses.destroy');
});
// Plan API (요금제 관리)
Route::prefix('plans')->group(function () {
Route::get('', [PlanController::class, 'index'])->name('v1.plans.index');