From b541d246e0de54a67a5d4b79dac960ec86ce236c Mon Sep 17 00:00:00 2001
From: philipp lang <philipp@aweos.de>
Date: Thu, 3 Apr 2025 00:56:07 +0200
Subject: [PATCH] Set permanent bank account of member

---
 app/Actions/InsertMemberAction.php | 2 +-
 app/Member/BankAccount.php         | 2 ++
 app/Member/Member.php              | 5 +++++
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/app/Actions/InsertMemberAction.php b/app/Actions/InsertMemberAction.php
index d2ea1ecc..5d2697b3 100644
--- a/app/Actions/InsertMemberAction.php
+++ b/app/Actions/InsertMemberAction.php
@@ -61,7 +61,7 @@ class InsertMemberAction
         }
 
         return tap(Member::updateOrCreate(['nami_id' => $member->id], $payload), function ($insertedMember) use ($member) {
-            $insertedMember->bankAccount()->updateOrCreate([
+            $insertedMember->bankAccount->update([
                 'iban' => $member->bankAccount->iban,
                 'bic' => $member->bankAccount->bic,
                 'blz' => $member->bankAccount->blz,
diff --git a/app/Member/BankAccount.php b/app/Member/BankAccount.php
index 7e700992..fbc42e65 100644
--- a/app/Member/BankAccount.php
+++ b/app/Member/BankAccount.php
@@ -12,4 +12,6 @@ class BankAccount extends Model
     use HasFactory;
 
     public $guarded = [];
+
+    public $primaryKey = 'member_id';
 }
diff --git a/app/Member/Member.php b/app/Member/Member.php
index 0fa866df..78f993fe 100644
--- a/app/Member/Member.php
+++ b/app/Member/Member.php
@@ -304,12 +304,17 @@ class Member extends Model implements Geolocatable
 
     public static function booted()
     {
+        static::created(function (self $model): void {
+            $model->bankAccount()->create([]);
+        });
+
         static::deleting(function (self $model): void {
             $model->memberships->each->delete();
             $model->courses->each->delete();
             $model->invoicePositions->each(function ($position) {
                 $position->delete();
             });
+            $model->bankAccount()->delete();
         });
     }