Fixes for setting and linking expense id

This commit is contained in:
David Bomba 2023-08-03 13:32:59 +10:00
parent d00cdd29f7
commit 0a37f2940c
4 changed files with 37 additions and 13 deletions

View File

@ -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'; $rules['vendor_id'] = 'bail|required|exists:vendors,id,company_id,'.auth()->user()->company()->id.',is_deleted,0';
} }
if (isset($this->expense_id)) { // if (isset($this->expense_id)) {
$rules['expense_id'] = 'bail|required|exists:expenses,id,company_id,'.auth()->user()->company()->id.',is_deleted,0'; // $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'; $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']); $input['vendor_id'] = $this->decodePrimaryKey($input['vendor_id']);
} }
if (array_key_exists('expense_id', $input) && strlen($input['expense_id']) > 1) { // if (array_key_exists('expense_id', $input) && strlen($input['expense_id']) > 1) {
$input['expense_id'] = $this->decodePrimaryKey($input['expense_id']); // $input['expense_id'] = $this->decodePrimaryKey($input['expense_id']);
} // }
if (array_key_exists('ninja_category_id', $input) && strlen($input['ninja_category_id']) > 1) { if (array_key_exists('ninja_category_id', $input) && strlen($input['ninja_category_id']) > 1) {
$input['ninja_category_id'] = $this->decodePrimaryKey($input['ninja_category_id']); $input['ninja_category_id'] = $this->decodePrimaryKey($input['ninja_category_id']);

View File

@ -11,20 +11,23 @@
namespace App\Repositories; namespace App\Repositories;
use App\Jobs\Bank\MatchBankTransactions; use App\Models\Expense;
use App\Models\BankTransaction; use App\Models\BankTransaction;
use App\Jobs\Bank\MatchBankTransactions;
/** /**
* Class for bank transaction repository. * Class for bank transaction repository.
*/ */
class BankTransactionRepository extends BaseRepository class BankTransactionRepository extends BaseRepository
{ {
public function save($data, BankTransaction $bank_transaction) public function save($data, BankTransaction $bank_transaction)
{ {
if (array_key_exists('bank_integration_id', $data)) { if (array_key_exists('bank_integration_id', $data)) {
$bank_transaction->bank_integration_id = $data['bank_integration_id']; $bank_transaction->bank_integration_id = $data['bank_integration_id'];
} }
$bank_transaction->fill($data); $bank_transaction->fill($data);
$bank_transaction->save(); $bank_transaction->save();
@ -49,11 +52,16 @@ class BankTransactionRepository extends BaseRepository
$bt->payment_id = null; $bt->payment_id = null;
} }
if($bt->expense()->exists()) { $e = Expense::whereIn('id', $this->transformKeys(explode(",", $bt->expense_id)))
$bt->expense->transaction_id = null; ->cursor()
$bt->expense_id = null; ->each(function ($expense){
}
$expense->transaction_id = null;
$expense->saveQuietly();
});
$bt->expense_id = null;
$bt->vendor_id = null; $bt->vendor_id = null;
$bt->status_id = 1; $bt->status_id = 1;
$bt->invoice_ids = null; $bt->invoice_ids = null;

View File

@ -63,7 +63,7 @@ class BankTransactionTransformer extends EntityTransformer
'description' => (string) $bank_transaction->description ?: '', 'description' => (string) $bank_transaction->description ?: '',
'base_type' => (string) $bank_transaction->base_type ?: '', 'base_type' => (string) $bank_transaction->base_type ?: '',
'invoice_ids' => (string) $bank_transaction->invoice_ids ?: '', '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) ?: '', 'payment_id'=> (string) $this->encodePrimaryKey($bank_transaction->payment_id) ?: '',
'vendor_id'=> (string) $this->encodePrimaryKey($bank_transaction->vendor_id) ?: '', 'vendor_id'=> (string) $this->encodePrimaryKey($bank_transaction->vendor_id) ?: '',
'bank_transaction_rule_id' => (string) $this->encodePrimaryKey($bank_transaction->bank_transaction_rule_id) ?: '', 'bank_transaction_rule_id' => (string) $this->encodePrimaryKey($bank_transaction->bank_transaction_rule_id) ?: '',

View File

@ -12,6 +12,7 @@
namespace Tests\Feature; namespace Tests\Feature;
use Tests\TestCase; use Tests\TestCase;
use App\Models\Expense;
use Tests\MockAccountData; use Tests\MockAccountData;
use App\Models\BankIntegration; use App\Models\BankIntegration;
use App\Models\BankTransaction; use App\Models\BankTransaction;
@ -122,19 +123,31 @@ class BankTransactionApiTest extends TestCase
'user_id' => $this->user->id, '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_transaction = BankTransaction::factory()->create([
'bank_integration_id' => $bi->id, 'bank_integration_id' => $bi->id,
'user_id' => $this->user->id, 'user_id' => $this->user->id,
'company_id' => $this->company->id, 'company_id' => $this->company->id,
'payment_id' => $this->payment->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, '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 = [ $data = [
'ids' => [$this->encodePrimaryKey($bank_transaction->id)], 'ids' => [$this->encodePrimaryKey($bank_transaction->id)],
]; ];
nlog($bank_transaction->toArray());
$response = $this->withHeaders([ $response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'), 'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token, '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]['payment_id']);
$this->assertEquals("", $arr['data'][0]['invoice_ids']); $this->assertEquals("", $arr['data'][0]['invoice_ids']);
$this->assertEquals("", $arr['data'][0]['expense_id']); $this->assertEquals("", $arr['data'][0]['expense_id']);
$this->assertNull($e->fresh()->transaction_id);
$this->assertNull($this->expense->fresh()->transaction_id);
} }
} }