fix:전표번호 채번 시 soft-deleted 포함 (withTrashed) + store 에러 핸들링

This commit is contained in:
김보곤
2026-02-10 17:22:50 +09:00
parent 5596ed0e76
commit 510b25ff1d
2 changed files with 44 additions and 35 deletions

View File

@@ -161,45 +161,52 @@ public function store(Request $request): JsonResponse
], 422);
}
$entry = DB::transaction(function () use ($tenantId, $request, $lines, $totalDebit, $totalCredit) {
$entryNo = JournalEntry::generateEntryNo($tenantId, $request->entry_date);
try {
$entry = DB::transaction(function () use ($tenantId, $request, $lines, $totalDebit, $totalCredit) {
$entryNo = JournalEntry::generateEntryNo($tenantId, $request->entry_date);
$entry = JournalEntry::create([
'tenant_id' => $tenantId,
'entry_no' => $entryNo,
'entry_date' => $request->entry_date,
'description' => $request->description,
'total_debit' => $totalDebit,
'total_credit' => $totalCredit,
'status' => 'draft',
'created_by_name' => auth()->user()?->name ?? '시스템',
'attachment_note' => $request->attachment_note,
]);
foreach ($lines as $i => $line) {
JournalEntryLine::create([
$entry = JournalEntry::create([
'tenant_id' => $tenantId,
'journal_entry_id' => $entry->id,
'line_no' => $i + 1,
'dc_type' => $line['dc_type'],
'account_code' => $line['account_code'],
'account_name' => $line['account_name'],
'trading_partner_id' => $line['trading_partner_id'] ?? null,
'trading_partner_name' => $line['trading_partner_name'] ?? null,
'debit_amount' => $line['debit_amount'],
'credit_amount' => $line['credit_amount'],
'description' => $line['description'] ?? null,
'entry_no' => $entryNo,
'entry_date' => $request->entry_date,
'description' => $request->description,
'total_debit' => $totalDebit,
'total_credit' => $totalCredit,
'status' => 'draft',
'created_by_name' => auth()->user()?->name ?? '시스템',
'attachment_note' => $request->attachment_note,
]);
}
return $entry;
});
foreach ($lines as $i => $line) {
JournalEntryLine::create([
'tenant_id' => $tenantId,
'journal_entry_id' => $entry->id,
'line_no' => $i + 1,
'dc_type' => $line['dc_type'],
'account_code' => $line['account_code'],
'account_name' => $line['account_name'],
'trading_partner_id' => $line['trading_partner_id'] ?? null,
'trading_partner_name' => $line['trading_partner_name'] ?? null,
'debit_amount' => $line['debit_amount'],
'credit_amount' => $line['credit_amount'],
'description' => $line['description'] ?? null,
]);
}
return response()->json([
'success' => true,
'message' => '전표가 저장되었습니다.',
'data' => ['id' => $entry->id, 'entry_no' => $entry->entry_no],
]);
return $entry;
});
return response()->json([
'success' => true,
'message' => '전표가 저장되었습니다.',
'data' => ['id' => $entry->id, 'entry_no' => $entry->entry_no],
]);
} catch (\Throwable $e) {
return response()->json([
'success' => false,
'message' => '전표 저장 실패: ' . $e->getMessage(),
], 500);
}
}
/**