mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Fixes for credit query
This commit is contained in:
parent
3995674dfb
commit
e8a1df16cd
@ -476,8 +476,10 @@ class CompanyController extends BaseController
|
||||
{
|
||||
$company_count = $company->account->companies->count();
|
||||
$account = $company->account;
|
||||
$account_key = $account->key;
|
||||
|
||||
if ($company_count == 1) {
|
||||
|
||||
$company->company_users->each(function ($company_user) {
|
||||
$company_user->user->forceDelete();
|
||||
$company_user->forceDelete();
|
||||
@ -485,9 +487,13 @@ class CompanyController extends BaseController
|
||||
|
||||
$account->delete();
|
||||
|
||||
if(Ninja::isHosted())
|
||||
\Modules\Admin\Jobs\Account\NinjaDeletedAccount::dispatch($account_key);
|
||||
|
||||
LightLogs::create(new AccountDeleted())
|
||||
->increment()
|
||||
->batch();
|
||||
|
||||
} else {
|
||||
$company_id = $company->id;
|
||||
|
||||
|
@ -38,6 +38,7 @@ class CreditsTable extends Component
|
||||
->where('client_id', auth('contact')->user()->client->id)
|
||||
->where('status_id', '<>', Credit::STATUS_DRAFT)
|
||||
->whereDate('due_date', '<=', now())
|
||||
->orWhere('due_date', NULL)
|
||||
->orderBy($this->sort_field, $this->sort_asc ? 'asc' : 'desc')
|
||||
->paginate($this->per_page);
|
||||
|
||||
|
@ -215,6 +215,11 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
return $this->hasMany(Invoice::class)->withTrashed();
|
||||
}
|
||||
|
||||
public function recurring_invoices()
|
||||
{
|
||||
return $this->hasMany(RecurringInvoice::class)->withTrashed();
|
||||
}
|
||||
|
||||
public function shipping_country()
|
||||
{
|
||||
return $this->belongsTo(Country::class, 'shipping_country_id', 'id');
|
||||
|
@ -48,21 +48,24 @@ class ClientService
|
||||
|
||||
public function getCreditBalance() :float
|
||||
{
|
||||
$credits = $this->client->credits
|
||||
$credits = $this->client->credits()
|
||||
->where('is_deleted', false)
|
||||
->where('balance', '>', 0)
|
||||
->where('due_date', '<=', now())
|
||||
->sortBy('created_at');
|
||||
->whereDate('due_date', '<=', now()->format('Y-m-d'))
|
||||
->orWhere('due_date', NULL)
|
||||
->orderBy('created_at','ASC');
|
||||
|
||||
return Number::roundValue($credits->sum('balance'), $this->client->currency()->precision);
|
||||
}
|
||||
|
||||
public function getCredits() :Collection
|
||||
{
|
||||
return $this->client->credits
|
||||
return $this->client->credits()
|
||||
->where('is_deleted', false)
|
||||
->where('balance', '>', 0)
|
||||
->sortBy('created_at');
|
||||
->whereDate('due_date', '<=', now()->format('Y-m-d'))
|
||||
->orWhere('due_date', NULL)
|
||||
->orderBy('created_at','ASC');
|
||||
}
|
||||
|
||||
public function getPaymentMethods(float $amount)
|
||||
|
@ -12,7 +12,6 @@
|
||||
|
||||
namespace Tests\ClientPortal;
|
||||
|
||||
|
||||
use App\Http\Livewire\CreditsTable;
|
||||
use App\Models\Account;
|
||||
use App\Models\Client;
|
||||
@ -36,7 +35,7 @@ class CreditsTest extends TestCase
|
||||
$this->faker = Factory::create();
|
||||
}
|
||||
|
||||
public function testShowingOnlyQuotesWithDueDateLessOrEqualToNow()
|
||||
public function testShowingOnlyCreditsWithDueDateLessOrEqualToNow()
|
||||
{
|
||||
$account = Account::factory()->create();
|
||||
|
||||
@ -88,4 +87,57 @@ class CreditsTest extends TestCase
|
||||
->assertSee('testing-number-02')
|
||||
->assertDontSee('testing-number-03');
|
||||
}
|
||||
|
||||
public function testShowingCreditsWithNullDueDate()
|
||||
{
|
||||
$account = Account::factory()->create();
|
||||
|
||||
$user = User::factory()->create(
|
||||
['account_id' => $account->id, 'email' => $this->faker->safeEmail]
|
||||
);
|
||||
|
||||
$company = Company::factory()->create(['account_id' => $account->id]);
|
||||
|
||||
$client = Client::factory()->create(['company_id' => $company->id, 'user_id' => $user->id]);
|
||||
|
||||
ClientContact::factory()->count(2)->create([
|
||||
'user_id' => $user->id,
|
||||
'client_id' => $client->id,
|
||||
'company_id' => $company->id,
|
||||
]);
|
||||
|
||||
Credit::factory()->create([
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id,
|
||||
'client_id' => $client->id,
|
||||
'number' => 'testing-number-01',
|
||||
'status_id' => Credit::STATUS_SENT,
|
||||
]);
|
||||
|
||||
Credit::factory()->create([
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id,
|
||||
'client_id' => $client->id,
|
||||
'number' => 'testing-number-02',
|
||||
'due_date' => now(),
|
||||
'status_id' => Credit::STATUS_SENT,
|
||||
]);
|
||||
|
||||
Credit::factory()->create([
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id,
|
||||
'client_id' => $client->id,
|
||||
'number' => 'testing-number-03',
|
||||
'due_date' => now()->addDays(5),
|
||||
'status_id' => Credit::STATUS_SENT,
|
||||
]);
|
||||
|
||||
$this->actingAs($client->contacts->first(), 'contact');
|
||||
|
||||
Livewire::test(CreditsTable::class, ['company' => $company])
|
||||
->assertSee('testing-number-01')
|
||||
->assertSee('testing-number-02')
|
||||
->assertDontSee('testing-number-03');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,10 @@
|
||||
*
|
||||
* @license https://opensource.org/licenses/AAL
|
||||
*/
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\CompanyGateway;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Tests\MockAccountData;
|
||||
@ -45,6 +47,8 @@ class ClientModelTest extends TestCase
|
||||
|
||||
$payment_methods = $this->client->service()->getPaymentMethods(40);
|
||||
|
||||
$this->assertGreaterThan(0, CompanyGateway::count());
|
||||
|
||||
$this->assertEquals(1, count($payment_methods));
|
||||
|
||||
}
|
||||
|
@ -396,6 +396,8 @@ trait MockAccountData
|
||||
$this->credit->line_items = $this->buildLineItems();
|
||||
$this->credit->amount = 10;
|
||||
$this->credit->balance = 10;
|
||||
|
||||
// $this->credit->due_date = now()->addDays(200);
|
||||
|
||||
$this->credit->tax_name1 = '';
|
||||
$this->credit->tax_name2 = '';
|
||||
|
Loading…
x
Reference in New Issue
Block a user