diff --git a/app/Http/Requests/BankTransaction/UpdateBankTransactionRequest.php b/app/Http/Requests/BankTransaction/UpdateBankTransactionRequest.php index c774e8a1dd75..fca323fe2c9a 100644 --- a/app/Http/Requests/BankTransaction/UpdateBankTransactionRequest.php +++ b/app/Http/Requests/BankTransaction/UpdateBankTransactionRequest.php @@ -44,9 +44,9 @@ class UpdateBankTransactionRequest extends Request $rules['vendor_id'] = 'bail|required|exists:vendors,id,company_id,'.auth()->user()->company()->id.',is_deleted,0'; } - if (isset($this->expense_id)) { - $rules['expense_id'] = 'bail|required|exists:expenses,id,company_id,'.auth()->user()->company()->id.',is_deleted,0'; - } + // if (isset($this->expense_id)) { + // $rules['expense_id'] = 'bail|required|exists:expenses,id,company_id,'.auth()->user()->company()->id.',is_deleted,0'; + // } $rules['bank_integration_id'] = 'bail|required|exists:bank_integrations,id,company_id,'.auth()->user()->company()->id.',is_deleted,0'; @@ -67,9 +67,9 @@ class UpdateBankTransactionRequest extends Request $input['vendor_id'] = $this->decodePrimaryKey($input['vendor_id']); } - if (array_key_exists('expense_id', $input) && strlen($input['expense_id']) > 1) { - $input['expense_id'] = $this->decodePrimaryKey($input['expense_id']); - } + // if (array_key_exists('expense_id', $input) && strlen($input['expense_id']) > 1) { + // $input['expense_id'] = $this->decodePrimaryKey($input['expense_id']); + // } if (array_key_exists('ninja_category_id', $input) && strlen($input['ninja_category_id']) > 1) { $input['ninja_category_id'] = $this->decodePrimaryKey($input['ninja_category_id']); diff --git a/app/Repositories/BankTransactionRepository.php b/app/Repositories/BankTransactionRepository.php index d9db85172a13..4130e72333e0 100644 --- a/app/Repositories/BankTransactionRepository.php +++ b/app/Repositories/BankTransactionRepository.php @@ -11,20 +11,23 @@ namespace App\Repositories; -use App\Jobs\Bank\MatchBankTransactions; +use App\Models\Expense; use App\Models\BankTransaction; +use App\Jobs\Bank\MatchBankTransactions; /** * Class for bank transaction repository. */ class BankTransactionRepository extends BaseRepository { + public function save($data, BankTransaction $bank_transaction) { if (array_key_exists('bank_integration_id', $data)) { $bank_transaction->bank_integration_id = $data['bank_integration_id']; } + $bank_transaction->fill($data); $bank_transaction->save(); @@ -49,11 +52,16 @@ class BankTransactionRepository extends BaseRepository $bt->payment_id = null; } - if($bt->expense()->exists()) { - $bt->expense->transaction_id = null; - $bt->expense_id = null; - } + $e = Expense::whereIn('id', $this->transformKeys(explode(",", $bt->expense_id))) + ->cursor() + ->each(function ($expense){ + + $expense->transaction_id = null; + $expense->saveQuietly(); + + }); + $bt->expense_id = null; $bt->vendor_id = null; $bt->status_id = 1; $bt->invoice_ids = null; diff --git a/app/Transformers/BankTransactionTransformer.php b/app/Transformers/BankTransactionTransformer.php index e128d9b9869b..5d941dbefe68 100644 --- a/app/Transformers/BankTransactionTransformer.php +++ b/app/Transformers/BankTransactionTransformer.php @@ -63,7 +63,7 @@ class BankTransactionTransformer extends EntityTransformer 'description' => (string) $bank_transaction->description ?: '', 'base_type' => (string) $bank_transaction->base_type ?: '', 'invoice_ids' => (string) $bank_transaction->invoice_ids ?: '', - 'expense_id'=> (string) $this->encodePrimaryKey($bank_transaction->expense_id) ?: '', + 'expense_id'=> (string) $bank_transaction->expense_id ?: '', 'payment_id'=> (string) $this->encodePrimaryKey($bank_transaction->payment_id) ?: '', 'vendor_id'=> (string) $this->encodePrimaryKey($bank_transaction->vendor_id) ?: '', 'bank_transaction_rule_id' => (string) $this->encodePrimaryKey($bank_transaction->bank_transaction_rule_id) ?: '', diff --git a/tests/Feature/BankTransactionApiTest.php b/tests/Feature/BankTransactionApiTest.php index 79496014fd28..f27aa681f843 100644 --- a/tests/Feature/BankTransactionApiTest.php +++ b/tests/Feature/BankTransactionApiTest.php @@ -12,6 +12,7 @@ namespace Tests\Feature; use Tests\TestCase; +use App\Models\Expense; use Tests\MockAccountData; use App\Models\BankIntegration; use App\Models\BankTransaction; @@ -122,19 +123,31 @@ class BankTransactionApiTest extends TestCase 'user_id' => $this->user->id, ]); + $e = Expense::factory()->create([ + 'company_id' => $this->company->id, + 'user_id' => $this->user->id, + ]); + $bank_transaction = BankTransaction::factory()->create([ 'bank_integration_id' => $bi->id, 'user_id' => $this->user->id, 'company_id' => $this->company->id, 'payment_id' => $this->payment->id, - 'expense_id' => $this->expense->id, + 'expense_id' => "{$this->expense->hashed_id},{$e->hashed_id}", 'invoice_ids' => $this->invoice->hashed_id, ]); + $e->transaction_id = $bank_transaction->id; + $e->save(); + + $this->expense->transaction_id = $bank_transaction->id; + $this->expense->save(); + $data = [ 'ids' => [$this->encodePrimaryKey($bank_transaction->id)], ]; + nlog($bank_transaction->toArray()); $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), 'X-API-TOKEN' => $this->token, @@ -146,6 +159,9 @@ class BankTransactionApiTest extends TestCase $this->assertEquals("", $arr['data'][0]['payment_id']); $this->assertEquals("", $arr['data'][0]['invoice_ids']); $this->assertEquals("", $arr['data'][0]['expense_id']); + + $this->assertNull($e->fresh()->transaction_id); + $this->assertNull($this->expense->fresh()->transaction_id); } }