diff --git a/app/Models/BankIntegration.php b/app/Models/BankIntegration.php index 879116980349..cb34a6e88e96 100644 --- a/app/Models/BankIntegration.php +++ b/app/Models/BankIntegration.php @@ -49,4 +49,9 @@ class BankIntegration extends BaseModel return $this->belongsTo(Account::class)->withTrashed(); } + public function transactions() + { + return $this->hasMany(BankTransaction::class)->withTrashed(); + } + } \ No newline at end of file diff --git a/app/Transformers/BankIntegrationTransformer.php b/app/Transformers/BankIntegrationTransformer.php index 6845e41a5588..d6e6a536dfcc 100644 --- a/app/Transformers/BankIntegrationTransformer.php +++ b/app/Transformers/BankIntegrationTransformer.php @@ -13,6 +13,7 @@ namespace App\Transformers; use App\Models\Account; use App\Models\BankIntegration; +use App\Models\BankTransaction; use App\Utils\Traits\MakesHash; /** @@ -37,6 +38,7 @@ class BankIntegrationTransformer extends EntityTransformer protected $availableIncludes = [ 'company', 'account', + 'bank_transactions', ]; /** @@ -57,6 +59,7 @@ class BankIntegrationTransformer extends EntityTransformer 'balance' => (float)$bank_integration->balance ?: 0, 'currency' => (string)$bank_integration->currency ?: '', 'nickname' => (string)$bank_integration->nickname ?: '', + 'from_date' => (string)$bank_integration->from_date ?: '', 'is_deleted' => (bool) $bank_integration->is_deleted, 'created_at' => (int) $bank_integration->created_at, 'updated_at' => (int) $bank_integration->updated_at, @@ -78,4 +81,11 @@ class BankIntegrationTransformer extends EntityTransformer return $this->includeItem($bank_integration->company, $transformer, Company::class); } + public function includeBankTransactions(BankIntegration $bank_integration) + { + $transformer = new BankTransactionTransformer($this->serializer); + + return $this->includeCollection($bank_integration->transactions, $transformer, BankTransaction::class); + } + } diff --git a/app/Transformers/BankTransactionTransformer.php b/app/Transformers/BankTransactionTransformer.php index e1f6663bd353..d6975469619e 100644 --- a/app/Transformers/BankTransactionTransformer.php +++ b/app/Transformers/BankTransactionTransformer.php @@ -51,18 +51,18 @@ class BankTransactionTransformer extends EntityTransformer { return [ 'id' => (string) $this->encodePrimaryKey($bank_transaction->id), - 'transaction_id' => (int)$bank_transaction->transaction_id, - 'amount' => (float)$bank_transaction->amount ?: 0, - 'currency_code' => (string)$bank_transaction->currency_code ?: '', - 'account_type' => (string)$bank_transaction->account_type ?: '', + 'transaction_id' => (int) $bank_transaction->transaction_id, + 'amount' => (float) $bank_transaction->amount ?: 0, + 'currency_code' => (string) $bank_transaction->currency_code ?: '', + 'account_type' => (string) $bank_transaction->account_type ?: '', 'category_id' => (int) $bank_transaction->category_id, - 'category_type' => (string)$bank_transaction->category_type ?: '', - 'date' => (string)$bank_transaction->date ?: '', - 'bank_account_id' => (int)$bank_transaction->bank_account_id, - 'description' => (string)$bank_transaction->description ?: '', - 'invoice_id' => (string)$this->encodePrimaryKey($bank_transaction->invoice_id) ?: '', - 'expense_id'=> (string)$this->encodePrimaryKey($bank_transaction->expense_id) ?: '', - 'is_matched'=> (bool)$bank_transaction->is_matched ?: '', + 'category_type' => (string) $bank_transaction->category_type ?: '', + 'date' => (string) $bank_transaction->date ?: '', + 'bank_account_id' => (int) $bank_transaction->bank_account_id, + 'description' => (string) $bank_transaction->description ?: '', + 'invoice_id' => (string) $this->encodePrimaryKey($bank_transaction->invoice_id) ?: '', + 'expense_id'=> (string) $this->encodePrimaryKey($bank_transaction->expense_id) ?: '', + 'is_matched'=> (bool) $bank_transaction->is_matched ?: '', 'is_deleted' => (bool) $bank_transaction->is_deleted, 'created_at' => (int) $bank_transaction->created_at, 'updated_at' => (int) $bank_transaction->updated_at, diff --git a/database/migrations/2022_08_05_023357_bank_integration.php b/database/migrations/2022_08_05_023357_bank_integration.php index d1766b995f1b..0dcc056c29f9 100644 --- a/database/migrations/2022_08_05_023357_bank_integration.php +++ b/database/migrations/2022_08_05_023357_bank_integration.php @@ -34,6 +34,7 @@ return new class extends Migration $table->decimal('balance', 20, 6)->default(0); //currentBalance.amount $table->text('currency')->nullable(); //currentBalance.currency $table->text('nickname')->default(''); //accountName + $table->date('from_date')->nullable(); $table->boolean('is_deleted')->default(0); @@ -53,7 +54,7 @@ return new class extends Migration $table->id(); $table->unsignedInteger('company_id'); $table->unsignedInteger('user_id'); - + $table->unsignedBigInteger('bank_integration_id'); $table->unsignedBigInteger('transaction_id')->nullable(); $table->decimal('amount', 20, 6); $table->string('currency_code'); @@ -71,6 +72,7 @@ return new class extends Migration $table->timestamps(6); $table->softDeletes('deleted_at', 6); + $table->foreign('bank_integration_id')->references('id')->on('bank_integrations')->onDelete('cascade')->onUpdate('cascade'); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade')->onUpdate('cascade');