mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-09-20 00:11:35 +02: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;
|
||||
|
||||
if ($_invoices->count() > 0 && $this->checkPayable($_invoices)) {
|
||||
|
||||
$this->createPayment($_invoices, $amount);
|
||||
|
||||
$this->bts->push($this->bt->id);
|
||||
@ -293,6 +294,8 @@ class MatchBankTransactions implements ShouldQueue
|
||||
$this->attachable_invoices = [];
|
||||
$this->available_balance = $amount;
|
||||
|
||||
nlog($invoices->count());
|
||||
|
||||
\DB::connection(config('database.default'))->transaction(function () use ($invoices) {
|
||||
$invoices->each(function ($invoice) {
|
||||
$this->invoice = Invoice::withTrashed()->where('id', $invoice->id)->lockForUpdate()->first();
|
||||
@ -326,11 +329,16 @@ class MatchBankTransactions implements ShouldQueue
|
||||
});
|
||||
}, 2);
|
||||
|
||||
nlog("pre");
|
||||
|
||||
// @phpstan-ignore-next-line
|
||||
if (!$this->invoice) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
nlog("post");
|
||||
|
||||
/* Create Payment */
|
||||
$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->payment_id = $payment->id;
|
||||
$this->bt->save();
|
||||
|
||||
nlog($this->bt->toArray());
|
||||
|
||||
}
|
||||
|
||||
private function resolveCategory($input): ?int
|
||||
|
@ -13,6 +13,7 @@ namespace App\Services\Bank;
|
||||
|
||||
use App\Factory\ExpenseCategoryFactory;
|
||||
use App\Factory\ExpenseFactory;
|
||||
use App\Jobs\Bank\MatchBankTransactions;
|
||||
use App\Models\BankTransaction;
|
||||
use App\Models\Client;
|
||||
use App\Models\ExpenseCategory;
|
||||
@ -28,7 +29,7 @@ class ProcessBankRules extends AbstractService
|
||||
{
|
||||
use GeneratesCounter;
|
||||
use MakesHash;
|
||||
|
||||
|
||||
protected $credit_rules;
|
||||
|
||||
protected $debit_rules;
|
||||
@ -89,6 +90,8 @@ class ProcessBankRules extends AbstractService
|
||||
|
||||
foreach ($bank_transaction_rule['rules'] as $rule) {
|
||||
|
||||
$results = [];
|
||||
|
||||
$payments = Payment::query()
|
||||
->withTrashed()
|
||||
->whereIn('status_id', [1,4])
|
||||
@ -103,8 +106,6 @@ class ProcessBankRules extends AbstractService
|
||||
->where('is_deleted', 0)
|
||||
->get();
|
||||
|
||||
$results = [];
|
||||
|
||||
match($rule['search_key']) {
|
||||
'$payment.amount' => $results = [Payment::class, $this->searchPaymentResource('amount', $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;
|
||||
}
|
||||
}
|
||||
|
||||
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->bank_transaction_rule_id = $bank_transaction_rule->id;
|
||||
|
||||
$this->bank_transaction->save();
|
||||
|
||||
$first_result = reset($match_set);
|
||||
|
||||
|
||||
$invoice_id = false;
|
||||
$payment_id = false;
|
||||
|
||||
if($first_result[0] == Payment::class) {
|
||||
$payment_id = $first_result[1][0];
|
||||
$this->bank_transaction->payment_id = $payment_id;
|
||||
}
|
||||
elseif($first_result[0] == Invoice::class) {
|
||||
$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']) {
|
||||
(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.
|
||||
$entity = $match_set[0][0];
|
||||
|
||||
foreach($match_set as $set)
|
||||
{
|
||||
if($set[0] != $entity)
|
||||
return false;
|
||||
if($invoice_id){
|
||||
$this->bank_transaction->invoice_ids = $this->encodePrimaryKey($invoice_id);
|
||||
}
|
||||
elseif($payment_id){
|
||||
$this->bank_transaction->payment_id = $payment_id;
|
||||
}
|
||||
|
||||
|
||||
// $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();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ class BankTransactionRuleTest extends TestCase
|
||||
|
||||
(new ProcessBankRules($bt))->run();
|
||||
|
||||
$bt->fresh();
|
||||
$bt = $bt->fresh();
|
||||
|
||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||
$this->assertNotNull($i->id);
|
||||
@ -215,7 +215,7 @@ class BankTransactionRuleTest extends TestCase
|
||||
|
||||
(new ProcessBankRules($bt))->run();
|
||||
|
||||
$bt->fresh();
|
||||
$bt = $bt->fresh();
|
||||
|
||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||
$this->assertNotNull($i->id);
|
||||
@ -332,7 +332,7 @@ class BankTransactionRuleTest extends TestCase
|
||||
|
||||
(new ProcessBankRules($bt))->run();
|
||||
|
||||
$bt->fresh();
|
||||
$bt = $bt->fresh();
|
||||
|
||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||
$this->assertNotNull($p->id);
|
||||
@ -389,7 +389,8 @@ class BankTransactionRuleTest extends TestCase
|
||||
|
||||
(new ProcessBankRules($bt))->run();
|
||||
|
||||
$bt->fresh();
|
||||
|
||||
$bt = $bt->fresh();
|
||||
|
||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||
$this->assertNotNull($p->id);
|
||||
@ -446,7 +447,8 @@ class BankTransactionRuleTest extends TestCase
|
||||
|
||||
(new ProcessBankRules($bt))->run();
|
||||
|
||||
$bt->fresh();
|
||||
|
||||
$bt = $bt->fresh();
|
||||
|
||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||
$this->assertNotNull($p->id);
|
||||
@ -503,7 +505,8 @@ class BankTransactionRuleTest extends TestCase
|
||||
|
||||
(new ProcessBankRules($bt))->run();
|
||||
|
||||
$bt->fresh();
|
||||
|
||||
$bt = $bt->fresh();
|
||||
|
||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||
$this->assertNotNull($p->id);
|
||||
@ -560,7 +563,8 @@ class BankTransactionRuleTest extends TestCase
|
||||
|
||||
(new ProcessBankRules($bt))->run();
|
||||
|
||||
$bt->fresh();
|
||||
|
||||
$bt = $bt->fresh();
|
||||
|
||||
$this->assertEquals(BankTransaction::STATUS_MATCHED, $bt->status_id);
|
||||
$this->assertNotNull($p->id);
|
||||
|
Loading…
Reference in New Issue
Block a user