mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-03 16:34:36 -04:00
Catch Quote Exceptions
This commit is contained in:
parent
a37773b3a2
commit
2385bf8ad2
@ -165,9 +165,6 @@ class Rule extends BaseRule implements RuleInterface
|
|||||||
$this->tax_rate1 = 0;
|
$this->tax_rate1 = 0;
|
||||||
$this->tax_name1 = '';
|
$this->tax_name1 = '';
|
||||||
|
|
||||||
// $this->tax_rate1 = $this->invoice->client->company->tax_data->regions->{$this->client_region}->subregions->{$this->client_subregion}->tax_rate;
|
|
||||||
// $this->tax_name1 = "Sales Tax";
|
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
41
app/Exceptions/QuoteConversion.php
Normal file
41
app/Exceptions/QuoteConversion.php
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
namespace App\Exceptions;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
class QuoteConversion extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Report the exception.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function report()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the exception into an HTTP response.
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
public function render($request)
|
||||||
|
{
|
||||||
|
return response()->json(['message' => 'This quote has already been converted. Cannot convert again.'], 400);
|
||||||
|
}
|
||||||
|
}
|
@ -182,7 +182,7 @@ class Import implements ShouldQueue
|
|||||||
|
|
||||||
public function middleware()
|
public function middleware()
|
||||||
{
|
{
|
||||||
return [(new WithoutOverlapping($this->user->account_id))];
|
return [(new WithoutOverlapping($this->company->company_key))];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -11,14 +11,14 @@
|
|||||||
|
|
||||||
namespace App\Services\Quote;
|
namespace App\Services\Quote;
|
||||||
|
|
||||||
use App\Events\Quote\QuoteWasApproved;
|
|
||||||
use App\Jobs\Entity\CreateEntityPdf;
|
|
||||||
use App\Jobs\Util\UnlinkFile;
|
|
||||||
use App\Models\Invoice;
|
|
||||||
use App\Models\Quote;
|
|
||||||
use App\Repositories\QuoteRepository;
|
|
||||||
use App\Utils\Ninja;
|
use App\Utils\Ninja;
|
||||||
|
use App\Models\Quote;
|
||||||
|
use App\Jobs\Util\UnlinkFile;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Exceptions\QuoteConversion;
|
||||||
|
use App\Jobs\Entity\CreateEntityPdf;
|
||||||
|
use App\Repositories\QuoteRepository;
|
||||||
|
use App\Events\Quote\QuoteWasApproved;
|
||||||
|
|
||||||
class QuoteService
|
class QuoteService
|
||||||
{
|
{
|
||||||
@ -43,7 +43,7 @@ class QuoteService
|
|||||||
public function convert() :self
|
public function convert() :self
|
||||||
{
|
{
|
||||||
if ($this->quote->invoice_id) {
|
if ($this->quote->invoice_id) {
|
||||||
return $this;
|
throw new QuoteConversion();
|
||||||
}
|
}
|
||||||
|
|
||||||
$convert_quote = (new ConvertQuote($this->quote->client))->run($this->quote);
|
$convert_quote = (new ConvertQuote($this->quote->client))->run($this->quote);
|
||||||
|
@ -11,16 +11,17 @@
|
|||||||
|
|
||||||
namespace Tests\Feature;
|
namespace Tests\Feature;
|
||||||
|
|
||||||
use App\Models\ClientContact;
|
|
||||||
use App\Models\Project;
|
|
||||||
use App\Models\Quote;
|
|
||||||
use App\Utils\Traits\MakesHash;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
||||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
use Tests\MockAccountData;
|
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
use App\Models\Quote;
|
||||||
|
use App\Models\Project;
|
||||||
|
use Tests\MockAccountData;
|
||||||
|
use App\Models\ClientContact;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Exceptions\QuoteConversion;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Session;
|
||||||
|
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||||
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
@ -32,6 +33,8 @@ class QuoteTest extends TestCase
|
|||||||
use DatabaseTransactions;
|
use DatabaseTransactions;
|
||||||
use MockAccountData;
|
use MockAccountData;
|
||||||
|
|
||||||
|
public $faker;
|
||||||
|
|
||||||
protected function setUp() :void
|
protected function setUp() :void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
@ -49,6 +52,19 @@ class QuoteTest extends TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testQuoteConversion()
|
||||||
|
{
|
||||||
|
$invoice = $this->quote->service()->convertToInvoice();
|
||||||
|
|
||||||
|
$this->assertInstanceOf('\App\Models\Invoice', $invoice);
|
||||||
|
|
||||||
|
$this->expectException(QuoteConversion::class);
|
||||||
|
|
||||||
|
$invoice = $this->quote->service()->convertToInvoice();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function testQuoteDownloadPDF()
|
public function testQuoteDownloadPDF()
|
||||||
{
|
{
|
||||||
$i = $this->quote->invitations->first();
|
$i = $this->quote->invitations->first();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user