diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index f8e696a3fe2f..cc79f5d0f775 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -22,6 +22,7 @@ jobs: dependency-version: [prefer-stable] env: + DB_CONNECTION: mysql DB_DATABASE1: ninja DB_USERNAME1: root DB_PASSWORD1: ninja diff --git a/app/Jobs/Bank/MatchBankTransactions.php b/app/Jobs/Bank/MatchBankTransactions.php index 34fd6db48b99..1d1df5c42174 100644 --- a/app/Jobs/Bank/MatchBankTransactions.php +++ b/app/Jobs/Bank/MatchBankTransactions.php @@ -176,15 +176,13 @@ class MatchBankTransactions implements ShouldQueue private function coalesceExpenses($expense): string { -nlog("BTExpense: " . $this->bt->expense_id); - if (!$this->bt->expense_id || strlen($this->bt->expense_id) < 1) { - nlog("coalesceExpense: " . $expense); - return $expense; - } - nlog("coalesceExpenses: " . $this->bt->expense_id . "," . $expense); + if (!$this->bt->expense_id || strlen($this->bt->expense_id) < 1) { + return $expense; + } return collect(explode(",", $this->bt->expense_id))->push($expense)->implode(","); + } private function linkPayment($input) diff --git a/app/Models/BankTransaction.php b/app/Models/BankTransaction.php index cd74bd400f81..b07e817c7d83 100644 --- a/app/Models/BankTransaction.php +++ b/app/Models/BankTransaction.php @@ -165,11 +165,6 @@ class BankTransaction extends BaseModel return $this->belongsTo(Vendor::class); } - public function expense() - { - return $this->belongsTo(Expense::class); - } - public function user() { return $this->belongsTo(User::class)->withTrashed(); diff --git a/app/Services/Bank/ProcessBankRules.php b/app/Services/Bank/ProcessBankRules.php index ef3791ee5b3d..80da449f7ad2 100644 --- a/app/Services/Bank/ProcessBankRules.php +++ b/app/Services/Bank/ProcessBankRules.php @@ -123,7 +123,7 @@ class ProcessBankRules extends AbstractService $expense->should_be_invoiced = $this->bank_transaction->company->mark_expenses_invoiceable; $expense->save(); - $this->bank_transaction->expense_id = $expense->hashed_id; + $this->bank_transaction->expense_id = $this->coalesceExpenses($expense->hashed_id); $this->bank_transaction->status_id = BankTransaction::STATUS_CONVERTED; $this->bank_transaction->save(); @@ -134,6 +134,17 @@ class ProcessBankRules extends AbstractService } } + private function coalesceExpenses($expense): string + { + + if (!$this->bank_transaction->expense_id || strlen($this->bank_transaction->expense_id) < 1) { + return $expense; + } + + return collect(explode(",", $this->bank_transaction->expense_id))->push($expense)->implode(","); + + } + private function resolveCategory() { $category = $this->categories->firstWhere('highLevelCategoryId', $this->bank_transaction->category_id); diff --git a/app/Transformers/BankTransactionTransformer.php b/app/Transformers/BankTransactionTransformer.php index 60f7f867ca0f..5d941dbefe68 100644 --- a/app/Transformers/BankTransactionTransformer.php +++ b/app/Transformers/BankTransactionTransformer.php @@ -34,7 +34,7 @@ class BankTransactionTransformer extends EntityTransformer */ protected $availableIncludes = [ 'company', - 'expense', + // 'expense', 'payment', 'vendor', 'bank_account', @@ -81,12 +81,12 @@ class BankTransactionTransformer extends EntityTransformer return $this->includeItem($bank_transaction->company, $transformer, Company::class); } - public function includeExpense(BankTransaction $bank_transaction) - { - $transformer = new ExpenseTransformer($this->serializer); + // public function includeExpense(BankTransaction $bank_transaction) + // { + // $transformer = new ExpenseTransformer($this->serializer); - return $this->includeItem($bank_transaction->expense, $transformer, Expense::class); - } + // return $this->includeItem($bank_transaction->expense, $transformer, Expense::class); + // } public function includeVendor(BankTransaction $bank_transaction) { diff --git a/tests/Feature/Bank/BankTransactionRuleTest.php b/tests/Feature/Bank/BankTransactionRuleTest.php index 7c014d5ba206..b5156a61d655 100644 --- a/tests/Feature/Bank/BankTransactionRuleTest.php +++ b/tests/Feature/Bank/BankTransactionRuleTest.php @@ -128,8 +128,8 @@ class BankTransactionRuleTest extends TestCase $bt = $bt->fresh(); $this->assertNotNull($bt->expense_id); - $this->assertNotNull($bt->expense->category_id); - $this->assertNotNull($bt->expense->vendor_id); + // $this->assertNotNull($bt->expense->category_id); + // $this->assertNotNull($bt->expense->vendor_id); $bt = null; } @@ -359,7 +359,7 @@ class BankTransactionRuleTest extends TestCase $bt = $bt->fresh(); - $this->assertNull($bt->expense_id); + $this->assertEmpty($bt->expense_id); } public function testMatchingBankTransactionExpenseAmount() @@ -490,7 +490,7 @@ class BankTransactionRuleTest extends TestCase $bt = $bt->fresh(); - $this->assertNull($bt->expense_id); + $this->assertEmpty($bt->expense_id); } @@ -533,7 +533,7 @@ class BankTransactionRuleTest extends TestCase $bt = $bt->fresh(); - $this->assertNull($bt->expense_id); + $this->assertEmpty($bt->expense_id); } @@ -620,7 +620,7 @@ class BankTransactionRuleTest extends TestCase $bt = $bt->fresh(); - $this->assertNull($bt->expense_id); + $this->assertEmpty($bt->expense_id); } @@ -704,7 +704,7 @@ class BankTransactionRuleTest extends TestCase $bt = $bt->fresh(); - $this->assertNull($bt->expense_id); + $this->assertEmpty($bt->expense_id); } public function testMatchingBankTransactionExpense()