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';
}
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']);

View File

@ -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;

View File

@ -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) ?: '',

View File

@ -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);
}
}