fix:save()에서 수동 거래를 dbId로 직접 업데이트
수동 거래는 balance가 재계산되어 composite key 매칭 불가. dbId를 사용하여 직접 레코드를 찾고 비-키 필드만 업데이트. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -906,10 +906,22 @@ public function save(Request $request): JsonResponse
|
||||
DB::beginTransaction();
|
||||
|
||||
foreach ($transactions as $trans) {
|
||||
// 수동 입력 거래는 스킵 (updateManual에서 별도 처리)
|
||||
// 수동 거래의 balance는 화면에서 재계산된 값이므로 save()에서 처리하면
|
||||
// 다른 레코드와 unique key 충돌 발생
|
||||
if (!empty($trans['isManual'])) {
|
||||
// 수동 입력 거래: dbId로 직접 찾아서 비-키 필드만 업데이트
|
||||
// balance는 화면에서 재계산된 값이므로 composite key 매칭 불가
|
||||
if (!empty($trans['isManual']) && !empty($trans['dbId'])) {
|
||||
DB::table('barobill_bank_transactions')
|
||||
->where('id', $trans['dbId'])
|
||||
->where('tenant_id', $tenantId)
|
||||
->update([
|
||||
'summary' => $trans['summary'] ?? '',
|
||||
'cast' => $trans['cast'] ?? '',
|
||||
'memo' => $trans['memo'] ?? '',
|
||||
'trans_office' => $trans['transOffice'] ?? '',
|
||||
'account_code' => $trans['accountCode'] ?? null,
|
||||
'account_name' => $trans['accountName'] ?? null,
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
$updated++;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -946,7 +958,6 @@ public function save(Request $request): JsonResponse
|
||||
$savedUniqueKeys[] = $uniqueKey;
|
||||
|
||||
// 순수 Query Builder로 Upsert (Eloquent 모델 우회)
|
||||
// Eloquent의 decimal cast가 dirty 감지하여 unique 제약조건 위반을 일으키므로
|
||||
$existingId = DB::table('barobill_bank_transactions')
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('bank_account_num', $data['bank_account_num'])
|
||||
|
||||
Reference in New Issue
Block a user