Minor fixes

This commit is contained in:
David Bomba 2023-10-11 10:25:21 +11:00
parent b25f58db6f
commit d267dc1f09
3 changed files with 119 additions and 3 deletions

View File

@ -402,7 +402,7 @@ class InvoiceService
$balance = $this->invoice->balance;
//return early if type three does not exist.
if (! collect($this->invoice->line_items)->contains('type_id', 3)) {
if (! collect($this->invoice->line_items)->contains('type_id', '3')) {
return $this;
}

View File

@ -1042,8 +1042,6 @@ html {
$dom = null;
nlog($html);
return $html;
}

View File

@ -22,6 +22,8 @@ use App\Jobs\Util\ReminderJob;
use App\DataMapper\InvoiceItem;
use App\DataMapper\FeesAndLimits;
use App\DataMapper\CompanySettings;
use App\Factory\InvoiceItemFactory;
use App\Factory\ClientGatewayTokenFactory;
use Illuminate\Foundation\Testing\DatabaseTransactions;
/**
@ -93,6 +95,122 @@ class LateFeeTest extends TestCase
return $client;
}
public function testLateFeeRemovals()
{
$data = [];
$data[1]['min_limit'] = -1;
$data[1]['max_limit'] = -1;
$data[1]['fee_amount'] = 0.00;
$data[1]['fee_percent'] = 1;
$data[1]['fee_tax_name1'] = '';
$data[1]['fee_tax_rate1'] = 0;
$data[1]['fee_tax_name2'] = '';
$data[1]['fee_tax_rate2'] = 0;
$data[1]['fee_tax_name3'] = '';
$data[1]['fee_tax_rate3'] = 0;
$data[1]['adjust_fee_percent'] = false;
$data[1]['fee_cap'] = 0;
$data[1]['is_enabled'] = true;
$cg = new \App\Models\CompanyGateway;
$cg->company_id = $this->company->id;
$cg->user_id = $this->user->id;
$cg->gateway_key = 'd14dd26a37cecc30fdd65700bfb55b23';
$cg->require_cvv = true;
$cg->require_billing_address = true;
$cg->require_shipping_address = true;
$cg->update_details = true;
$cg->config = encrypt(config('ninja.testvars.stripe'));
$cg->fees_and_limits = $data;
$cg->save();
$cgt = ClientGatewayTokenFactory::create($this->company->id);
$cgt->client_id = $this->client->id;
$cgt->token = '';
$cgt->gateway_customer_reference = '';
$cgt->gateway_type_id = 1;
$cgt->company_gateway_id = $cg->id;
$cgt->save();
$line_items = [];
$item = InvoiceItemFactory::create();
$item->quantity = 1;
$item->cost = 10;
$item->type_id = '1';
$line_items[] = $item;
$invoice_item = new InvoiceItem;
$invoice_item->type_id = '5';
$invoice_item->product_key = trans('texts.fee');
$invoice_item->quantity = 1;
$invoice_item->cost = 10;
$line_items[] = $item;
$item = InvoiceItemFactory::create();
$item->quantity = 1;
$item->cost = 1;
$item->type_id = '3';
$line_items[] = $item;
$this->assertTrue(collect($line_items)->contains('type_id', '3'));
$this->assertTrue(collect($line_items)->contains('type_id', 3));
$i = Invoice::factory()->create([
'client_id' => $this->client->id,
'company_id' => $this->company->id,
'user_id' => $this->user->id,
'line_items' => $line_items,
]);
$i = $i->calc()->getInvoice();
$this->assertEquals(3, count($i->line_items));
$invoice_items = (array) $i->line_items;
$invoice_items = collect($invoice_items)->filter(function ($item) {
return $item->type_id != '3';
});
$i->line_items = $invoice_items;
$i->line_items = collect($i->line_items)
->reject(function ($item) {
return $item->type_id == '3';
})->toArray();
$this->assertEquals(2, count($i->line_items));
$i->service()->autoBill();
$i = $i->fresh();
$this->assertCount(2, $i->line_items);
$line_items = $i->line_items;
$invoice_item = new InvoiceItem;
$invoice_item->type_id = '5';
$invoice_item->product_key = trans('texts.fee');
$invoice_item->quantity = 1;
$invoice_item->cost = 10;
$line_items[] = $item;
$i->line_items = $line_items;
$i = $i->calc()->getInvoice();
$this->assertCount(3, $i->line_items);
}
public function testLateFeeAdded()
{