mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Fixes for tests
This commit is contained in:
parent
376b728e68
commit
3e39a58c8e
@ -238,6 +238,7 @@ class MatchBankTransactions implements ShouldQueue
|
|||||||
$amount = $this->bt->amount;
|
$amount = $this->bt->amount;
|
||||||
|
|
||||||
if ($_invoices->count() > 0 && $this->checkPayable($_invoices)) {
|
if ($_invoices->count() > 0 && $this->checkPayable($_invoices)) {
|
||||||
|
|
||||||
$this->createPayment($_invoices, $amount);
|
$this->createPayment($_invoices, $amount);
|
||||||
|
|
||||||
$this->bts->push($this->bt->id);
|
$this->bts->push($this->bt->id);
|
||||||
@ -293,6 +294,8 @@ class MatchBankTransactions implements ShouldQueue
|
|||||||
$this->attachable_invoices = [];
|
$this->attachable_invoices = [];
|
||||||
$this->available_balance = $amount;
|
$this->available_balance = $amount;
|
||||||
|
|
||||||
|
nlog($invoices->count());
|
||||||
|
|
||||||
\DB::connection(config('database.default'))->transaction(function () use ($invoices) {
|
\DB::connection(config('database.default'))->transaction(function () use ($invoices) {
|
||||||
$invoices->each(function ($invoice) {
|
$invoices->each(function ($invoice) {
|
||||||
$this->invoice = Invoice::withTrashed()->where('id', $invoice->id)->lockForUpdate()->first();
|
$this->invoice = Invoice::withTrashed()->where('id', $invoice->id)->lockForUpdate()->first();
|
||||||
@ -326,11 +329,16 @@ class MatchBankTransactions implements ShouldQueue
|
|||||||
});
|
});
|
||||||
}, 2);
|
}, 2);
|
||||||
|
|
||||||
|
nlog("pre");
|
||||||
|
|
||||||
// @phpstan-ignore-next-line
|
// @phpstan-ignore-next-line
|
||||||
if (!$this->invoice) {
|
if (!$this->invoice) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nlog("post");
|
||||||
|
|
||||||
/* Create Payment */
|
/* Create Payment */
|
||||||
$payment = PaymentFactory::create($this->invoice->company_id, $this->invoice->user_id);
|
$payment = PaymentFactory::create($this->invoice->company_id, $this->invoice->user_id);
|
||||||
|
|
||||||
@ -395,6 +403,9 @@ class MatchBankTransactions implements ShouldQueue
|
|||||||
$this->bt->status_id = BankTransaction::STATUS_CONVERTED;
|
$this->bt->status_id = BankTransaction::STATUS_CONVERTED;
|
||||||
$this->bt->payment_id = $payment->id;
|
$this->bt->payment_id = $payment->id;
|
||||||
$this->bt->save();
|
$this->bt->save();
|
||||||
|
|
||||||
|
nlog($this->bt->toArray());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function resolveCategory($input): ?int
|
private function resolveCategory($input): ?int
|
||||||
|
@ -13,6 +13,7 @@ namespace App\Services\Bank;
|
|||||||
|
|
||||||
use App\Factory\ExpenseCategoryFactory;
|
use App\Factory\ExpenseCategoryFactory;
|
||||||
use App\Factory\ExpenseFactory;
|
use App\Factory\ExpenseFactory;
|
||||||
|
use App\Jobs\Bank\MatchBankTransactions;
|
||||||
use App\Models\BankTransaction;
|
use App\Models\BankTransaction;
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use App\Models\ExpenseCategory;
|
use App\Models\ExpenseCategory;
|
||||||
@ -28,7 +29,7 @@ class ProcessBankRules extends AbstractService
|
|||||||
{
|
{
|
||||||
use GeneratesCounter;
|
use GeneratesCounter;
|
||||||
use MakesHash;
|
use MakesHash;
|
||||||
|
|
||||||
protected $credit_rules;
|
protected $credit_rules;
|
||||||
|
|
||||||
protected $debit_rules;
|
protected $debit_rules;
|
||||||
@ -89,6 +90,8 @@ class ProcessBankRules extends AbstractService
|
|||||||
|
|
||||||
foreach ($bank_transaction_rule['rules'] as $rule) {
|
foreach ($bank_transaction_rule['rules'] as $rule) {
|
||||||
|
|
||||||
|
$results = [];
|
||||||
|
|
||||||
$payments = Payment::query()
|
$payments = Payment::query()
|
||||||
->withTrashed()
|
->withTrashed()
|
||||||
->whereIn('status_id', [1,4])
|
->whereIn('status_id', [1,4])
|
||||||
@ -103,8 +106,6 @@ class ProcessBankRules extends AbstractService
|
|||||||
->where('is_deleted', 0)
|
->where('is_deleted', 0)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
$results = [];
|
|
||||||
|
|
||||||
match($rule['search_key']) {
|
match($rule['search_key']) {
|
||||||
'$payment.amount' => $results = [Payment::class, $this->searchPaymentResource('amount', $rule, $payments)],
|
'$payment.amount' => $results = [Payment::class, $this->searchPaymentResource('amount', $rule, $payments)],
|
||||||
'$payment.transaction_reference' => $results = [Payment::class, $this->searchPaymentResource('transaction_reference', $rule, $payments)],
|
'$payment.transaction_reference' => $results = [Payment::class, $this->searchPaymentResource('transaction_reference', $rule, $payments)],
|
||||||
@ -141,84 +142,50 @@ class ProcessBankRules extends AbstractService
|
|||||||
$match_set[] = $results;
|
$match_set[] = $results;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (($bank_transaction_rule['matches_on_all'] && $this->checkMatchSetForKey($match_set, $rule_count)) || (!$bank_transaction_rule['matches_on_all'] && count($match_set) > 0))
|
||||||
|
{
|
||||||
|
|
||||||
if (($bank_transaction_rule['matches_on_all'] && $this->checkMatchSetForKey($match_set, $rule_count)) || (!$bank_transaction_rule['matches_on_all'] && count($match_set) > 0)) {
|
|
||||||
|
|
||||||
// $this->bank_transaction->vendor_id = $bank_transaction_rule->vendor_id;
|
|
||||||
// $this->bank_transaction->ninja_category_id = $bank_transaction_rule->category_id;
|
|
||||||
$this->bank_transaction->status_id = BankTransaction::STATUS_MATCHED;
|
$this->bank_transaction->status_id = BankTransaction::STATUS_MATCHED;
|
||||||
$this->bank_transaction->bank_transaction_rule_id = $bank_transaction_rule->id;
|
$this->bank_transaction->bank_transaction_rule_id = $bank_transaction_rule->id;
|
||||||
|
$this->bank_transaction->save();
|
||||||
|
|
||||||
$first_result = reset($match_set);
|
$first_result = reset($match_set);
|
||||||
|
|
||||||
|
$invoice_id = false;
|
||||||
|
$payment_id = false;
|
||||||
|
|
||||||
if($first_result[0] == Payment::class) {
|
if($first_result[0] == Payment::class) {
|
||||||
$payment_id = $first_result[1][0];
|
$payment_id = $first_result[1][0];
|
||||||
$this->bank_transaction->payment_id = $payment_id;
|
|
||||||
}
|
}
|
||||||
elseif($first_result[0] == Invoice::class) {
|
elseif($first_result[0] == Invoice::class) {
|
||||||
$invoice_id = $first_result[1][0];
|
$invoice_id = $first_result[1][0];
|
||||||
$this->bank_transaction->invoice_ids = $this->encodePrimaryKey($invoice_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->bank_transaction->save();
|
|
||||||
//auto-convert
|
|
||||||
|
|
||||||
if ($bank_transaction_rule['auto_convert']) {
|
if ($bank_transaction_rule['auto_convert']) {
|
||||||
|
(new MatchBankTransactions($this->company->id, $this->company->db, [
|
||||||
|
'transactions' => [
|
||||||
|
[
|
||||||
|
'id' => $this->bank_transaction->id,
|
||||||
|
'invoice_ids' => $invoice_id ?? '',
|
||||||
|
'payment_id' => $payment_id ?? '',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
]))->handle();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
//all types must match.
|
if($invoice_id){
|
||||||
$entity = $match_set[0][0];
|
$this->bank_transaction->invoice_ids = $this->encodePrimaryKey($invoice_id);
|
||||||
|
}
|
||||||
foreach($match_set as $set)
|
elseif($payment_id){
|
||||||
{
|
$this->bank_transaction->payment_id = $payment_id;
|
||||||
if($set[0] != $entity)
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// $result_set = [];
|
|
||||||
|
|
||||||
// foreach($match_set as $key => $set) {
|
|
||||||
|
|
||||||
// $parseable_set = $match_set;
|
|
||||||
// unset($parseable_set[$key]);
|
|
||||||
|
|
||||||
// $entity_ids = $set[1];
|
|
||||||
|
|
||||||
// foreach($parseable_set as $kkey => $vvalue) {
|
|
||||||
|
|
||||||
// $i = array_intersect($vvalue[1], $entity_ids);
|
|
||||||
|
|
||||||
// if(count($i) == 0) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// $result_set[] = $i;
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// $commonValues = $result_set[0]; // Start with the first sub-array
|
|
||||||
|
|
||||||
// foreach ($result_set as $subArray) {
|
|
||||||
// $commonValues = array_intersect($commonValues, $subArray);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// echo print_r($commonValues, true);
|
|
||||||
|
|
||||||
//just need to ensure the result count = rule count
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//there must be a key in each set
|
|
||||||
|
|
||||||
//no misses allowed
|
|
||||||
|
|
||||||
$this->bank_transaction->status_id = BankTransaction::STATUS_CONVERTED;
|
|
||||||
$this->bank_transaction->save();
|
$this->bank_transaction->save();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ class BankTransactionRuleTest extends TestCase
|
|||||||
|
|
||||||
(new ProcessBankRules($bt))->run();
|
(new ProcessBankRules($bt))->run();
|
||||||
|
|
||||||
$bt->fresh();
|
$bt = $bt->fresh();
|
||||||
|
|
||||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||||
$this->assertNotNull($i->id);
|
$this->assertNotNull($i->id);
|
||||||
@ -215,7 +215,7 @@ class BankTransactionRuleTest extends TestCase
|
|||||||
|
|
||||||
(new ProcessBankRules($bt))->run();
|
(new ProcessBankRules($bt))->run();
|
||||||
|
|
||||||
$bt->fresh();
|
$bt = $bt->fresh();
|
||||||
|
|
||||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||||
$this->assertNotNull($i->id);
|
$this->assertNotNull($i->id);
|
||||||
@ -332,7 +332,7 @@ class BankTransactionRuleTest extends TestCase
|
|||||||
|
|
||||||
(new ProcessBankRules($bt))->run();
|
(new ProcessBankRules($bt))->run();
|
||||||
|
|
||||||
$bt->fresh();
|
$bt = $bt->fresh();
|
||||||
|
|
||||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||||
$this->assertNotNull($p->id);
|
$this->assertNotNull($p->id);
|
||||||
@ -389,7 +389,8 @@ class BankTransactionRuleTest extends TestCase
|
|||||||
|
|
||||||
(new ProcessBankRules($bt))->run();
|
(new ProcessBankRules($bt))->run();
|
||||||
|
|
||||||
$bt->fresh();
|
|
||||||
|
$bt = $bt->fresh();
|
||||||
|
|
||||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||||
$this->assertNotNull($p->id);
|
$this->assertNotNull($p->id);
|
||||||
@ -446,7 +447,8 @@ class BankTransactionRuleTest extends TestCase
|
|||||||
|
|
||||||
(new ProcessBankRules($bt))->run();
|
(new ProcessBankRules($bt))->run();
|
||||||
|
|
||||||
$bt->fresh();
|
|
||||||
|
$bt = $bt->fresh();
|
||||||
|
|
||||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||||
$this->assertNotNull($p->id);
|
$this->assertNotNull($p->id);
|
||||||
@ -503,7 +505,8 @@ class BankTransactionRuleTest extends TestCase
|
|||||||
|
|
||||||
(new ProcessBankRules($bt))->run();
|
(new ProcessBankRules($bt))->run();
|
||||||
|
|
||||||
$bt->fresh();
|
|
||||||
|
$bt = $bt->fresh();
|
||||||
|
|
||||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||||
$this->assertNotNull($p->id);
|
$this->assertNotNull($p->id);
|
||||||
@ -560,7 +563,8 @@ class BankTransactionRuleTest extends TestCase
|
|||||||
|
|
||||||
(new ProcessBankRules($bt))->run();
|
(new ProcessBankRules($bt))->run();
|
||||||
|
|
||||||
$bt->fresh();
|
|
||||||
|
$bt = $bt->fresh();
|
||||||
|
|
||||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||||
$this->assertNotNull($p->id);
|
$this->assertNotNull($p->id);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user