mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 21:22:58 +01:00
Merge pull request #7817 from turbo124/v5-develop
Increase backoff period
This commit is contained in:
commit
492bbe4e8c
@ -56,7 +56,7 @@ class InvoiceController extends Controller
|
|||||||
{
|
{
|
||||||
set_time_limit(0);
|
set_time_limit(0);
|
||||||
|
|
||||||
$invoice->service()->removeUnpaidGatewayFees()->save();
|
// $invoice->service()->removeUnpaidGatewayFees()->save();
|
||||||
|
|
||||||
$invitation = $invoice->invitations()->where('client_contact_id', auth()->guard('contact')->user()->id)->first();
|
$invitation = $invoice->invitations()->where('client_contact_id', auth()->guard('contact')->user()->id)->first();
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ class NinjaMailerJob implements ShouldQueue
|
|||||||
|
|
||||||
public $tries = 3; //number of retries
|
public $tries = 3; //number of retries
|
||||||
|
|
||||||
public $backoff = 10; //seconds to wait until retry
|
public $backoff = 30; //seconds to wait until retry
|
||||||
|
|
||||||
public $deleteWhenMissingModels = true;
|
public $deleteWhenMissingModels = true;
|
||||||
|
|
||||||
|
@ -108,12 +108,13 @@ class Vendor extends BaseModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (! $this->currency_id) {
|
if (! $this->currency_id) {
|
||||||
$this->currency_id = 1;
|
return $this->company->currency();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $currencies->filter(function ($item) {
|
return $currencies->filter(function ($item) {
|
||||||
return $item->id == $this->currency_id;
|
return $item->id == $this->currency_id;
|
||||||
})->first();
|
})->first();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function company()
|
public function company()
|
||||||
|
@ -29,6 +29,11 @@ use Exception;
|
|||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Note the premise used here is that any currencies will be formatted back to the company currency and not
|
||||||
|
* user the vendor currency, if we continue to extend on vendor, we will need to relook at this
|
||||||
|
*/
|
||||||
|
|
||||||
class VendorHtmlEngine
|
class VendorHtmlEngine
|
||||||
{
|
{
|
||||||
use MakesDates;
|
use MakesDates;
|
||||||
@ -164,16 +169,16 @@ class VendorHtmlEngine
|
|||||||
|
|
||||||
$data['$entity_number'] = &$data['$number'];
|
$data['$entity_number'] = &$data['$number'];
|
||||||
$data['$discount'] = ['value' => $this->entity->discount, 'label' => ctrans('texts.discount')];
|
$data['$discount'] = ['value' => $this->entity->discount, 'label' => ctrans('texts.discount')];
|
||||||
$data['$subtotal'] = ['value' => Number::formatMoney($this->entity_calc->getSubTotal(), $this->vendor) ?: ' ', 'label' => ctrans('texts.subtotal')];
|
$data['$subtotal'] = ['value' => Number::formatMoney($this->entity_calc->getSubTotal(), $this->company) ?: ' ', 'label' => ctrans('texts.subtotal')];
|
||||||
$data['$gross_subtotal'] = ['value' => Number::formatMoney($this->entity_calc->getGrossSubTotal(), $this->vendor) ?: ' ', 'label' => ctrans('texts.subtotal')];
|
$data['$gross_subtotal'] = ['value' => Number::formatMoney($this->entity_calc->getGrossSubTotal(), $this->company) ?: ' ', 'label' => ctrans('texts.subtotal')];
|
||||||
|
|
||||||
if($this->entity->uses_inclusive_taxes)
|
if($this->entity->uses_inclusive_taxes)
|
||||||
$data['$net_subtotal'] = ['value' => Number::formatMoney(($this->entity_calc->getSubTotal() - $this->entity->total_taxes - $this->entity_calc->getTotalDiscount()), $this->vendor) ?: ' ', 'label' => ctrans('texts.net_subtotal')];
|
$data['$net_subtotal'] = ['value' => Number::formatMoney(($this->entity_calc->getSubTotal() - $this->entity->total_taxes - $this->entity_calc->getTotalDiscount()), $this->company) ?: ' ', 'label' => ctrans('texts.net_subtotal')];
|
||||||
else
|
else
|
||||||
$data['$net_subtotal'] = ['value' => Number::formatMoney($this->entity_calc->getSubTotal() - $this->entity_calc->getTotalDiscount(), $this->vendor) ?: ' ', 'label' => ctrans('texts.net_subtotal')];
|
$data['$net_subtotal'] = ['value' => Number::formatMoney($this->entity_calc->getSubTotal() - $this->entity_calc->getTotalDiscount(), $this->company) ?: ' ', 'label' => ctrans('texts.net_subtotal')];
|
||||||
|
|
||||||
if ($this->entity->partial > 0) {
|
if ($this->entity->partial > 0) {
|
||||||
$data['$balance_due'] = ['value' => Number::formatMoney($this->entity->partial, $this->vendor) ?: ' ', 'label' => ctrans('texts.partial_due')];
|
$data['$balance_due'] = ['value' => Number::formatMoney($this->entity->partial, $this->company) ?: ' ', 'label' => ctrans('texts.partial_due')];
|
||||||
$data['$balance_due_raw'] = ['value' => $this->entity->partial, 'label' => ctrans('texts.partial_due')];
|
$data['$balance_due_raw'] = ['value' => $this->entity->partial, 'label' => ctrans('texts.partial_due')];
|
||||||
$data['$amount_raw'] = ['value' => $this->entity->partial, 'label' => ctrans('texts.partial_due')];
|
$data['$amount_raw'] = ['value' => $this->entity->partial, 'label' => ctrans('texts.partial_due')];
|
||||||
$data['$due_date'] = ['value' => $this->translateDate($this->entity->partial_due_date, $this->company->date_format(), $this->company->locale()) ?: ' ', 'label' => ctrans('texts.'.$this->entity_string.'_due_date')];
|
$data['$due_date'] = ['value' => $this->translateDate($this->entity->partial_due_date, $this->company->date_format(), $this->company->locale()) ?: ' ', 'label' => ctrans('texts.'.$this->entity_string.'_due_date')];
|
||||||
@ -181,12 +186,12 @@ class VendorHtmlEngine
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
if($this->entity->status_id == 1){
|
if($this->entity->status_id == 1){
|
||||||
$data['$balance_due'] = ['value' => Number::formatMoney($this->entity->amount, $this->vendor) ?: ' ', 'label' => ctrans('texts.balance_due')];
|
$data['$balance_due'] = ['value' => Number::formatMoney($this->entity->amount, $this->company) ?: ' ', 'label' => ctrans('texts.balance_due')];
|
||||||
$data['$balance_due_raw'] = ['value' => $this->entity->amount, 'label' => ctrans('texts.balance_due')];
|
$data['$balance_due_raw'] = ['value' => $this->entity->amount, 'label' => ctrans('texts.balance_due')];
|
||||||
$data['$amount_raw'] = ['value' => $this->entity->amount, 'label' => ctrans('texts.amount')];
|
$data['$amount_raw'] = ['value' => $this->entity->amount, 'label' => ctrans('texts.amount')];
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$data['$balance_due'] = ['value' => Number::formatMoney($this->entity->balance, $this->vendor) ?: ' ', 'label' => ctrans('texts.balance_due')];
|
$data['$balance_due'] = ['value' => Number::formatMoney($this->entity->balance, $this->company) ?: ' ', 'label' => ctrans('texts.balance_due')];
|
||||||
$data['$balance_due_raw'] = ['value' => $this->entity->balance, 'label' => ctrans('texts.balance_due')];
|
$data['$balance_due_raw'] = ['value' => $this->entity->balance, 'label' => ctrans('texts.balance_due')];
|
||||||
$data['$amount_raw'] = ['value' => $this->entity->amount, 'label' => ctrans('texts.amount')];
|
$data['$amount_raw'] = ['value' => $this->entity->amount, 'label' => ctrans('texts.amount')];
|
||||||
}
|
}
|
||||||
@ -194,18 +199,18 @@ class VendorHtmlEngine
|
|||||||
|
|
||||||
// $data['$balance_due'] = $data['$balance_due'];
|
// $data['$balance_due'] = $data['$balance_due'];
|
||||||
$data['$outstanding'] = &$data['$balance_due'];
|
$data['$outstanding'] = &$data['$balance_due'];
|
||||||
$data['$partial_due'] = ['value' => Number::formatMoney($this->entity->partial, $this->vendor) ?: ' ', 'label' => ctrans('texts.partial_due')];
|
$data['$partial_due'] = ['value' => Number::formatMoney($this->entity->partial, $this->company) ?: ' ', 'label' => ctrans('texts.partial_due')];
|
||||||
$data['$partial'] = &$data['$partial_due'];
|
$data['$partial'] = &$data['$partial_due'];
|
||||||
|
|
||||||
$data['$total'] = ['value' => Number::formatMoney($this->entity_calc->getTotal(), $this->vendor) ?: ' ', 'label' => ctrans('texts.total')];
|
$data['$total'] = ['value' => Number::formatMoney($this->entity_calc->getTotal(), $this->company) ?: ' ', 'label' => ctrans('texts.total')];
|
||||||
|
|
||||||
$data['$purchase_order.total'] = &$data['$total'];
|
$data['$purchase_order.total'] = &$data['$total'];
|
||||||
|
|
||||||
$data['$amount'] = &$data['$total'];
|
$data['$amount'] = &$data['$total'];
|
||||||
$data['$amount_due'] = ['value' => &$data['$total']['value'], 'label' => ctrans('texts.amount_due')];
|
$data['$amount_due'] = ['value' => &$data['$total']['value'], 'label' => ctrans('texts.amount_due')];
|
||||||
$data['$balance'] = ['value' => Number::formatMoney($this->entity_calc->getBalance(), $this->vendor) ?: ' ', 'label' => ctrans('texts.balance')];
|
$data['$balance'] = ['value' => Number::formatMoney($this->entity_calc->getBalance(), $this->company) ?: ' ', 'label' => ctrans('texts.balance')];
|
||||||
|
|
||||||
$data['$taxes'] = ['value' => Number::formatMoney($this->entity_calc->getItemTotalTaxes(), $this->vendor) ?: ' ', 'label' => ctrans('texts.taxes')];
|
$data['$taxes'] = ['value' => Number::formatMoney($this->entity_calc->getItemTotalTaxes(), $this->company) ?: ' ', 'label' => ctrans('texts.taxes')];
|
||||||
|
|
||||||
$data['$user.name'] = ['value' => $this->entity->user->present()->name(), 'label' => ctrans('texts.name')];
|
$data['$user.name'] = ['value' => $this->entity->user->present()->name(), 'label' => ctrans('texts.name')];
|
||||||
$data['$user.first_name'] = ['value' => $this->entity->user->first_name, 'label' => ctrans('texts.first_name')];
|
$data['$user.first_name'] = ['value' => $this->entity->user->first_name, 'label' => ctrans('texts.first_name')];
|
||||||
@ -277,7 +282,7 @@ class VendorHtmlEngine
|
|||||||
|
|
||||||
$data['$vendor.currency'] = ['value' => $this->vendor->currency()->code, 'label' => ''];
|
$data['$vendor.currency'] = ['value' => $this->vendor->currency()->code, 'label' => ''];
|
||||||
|
|
||||||
$data['$paid_to_date'] = ['value' => Number::formatMoney($this->entity->paid_to_date, $this->vendor), 'label' => ctrans('texts.paid_to_date')];
|
$data['$paid_to_date'] = ['value' => Number::formatMoney($this->entity->paid_to_date, $this->company), 'label' => ctrans('texts.paid_to_date')];
|
||||||
|
|
||||||
$data['$contact.full_name'] = ['value' => $this->contact->present()->name(), 'label' => ctrans('texts.name')];
|
$data['$contact.full_name'] = ['value' => $this->contact->present()->name(), 'label' => ctrans('texts.name')];
|
||||||
$data['$contact'] = &$data['$contact.full_name'];
|
$data['$contact'] = &$data['$contact.full_name'];
|
||||||
@ -332,10 +337,10 @@ class VendorHtmlEngine
|
|||||||
$data['$company.custom3'] = &$data['$company3'];
|
$data['$company.custom3'] = &$data['$company3'];
|
||||||
$data['$company.custom4'] = &$data['$company4'];
|
$data['$company.custom4'] = &$data['$company4'];
|
||||||
|
|
||||||
$data['$custom_surcharge1'] = ['value' => Number::formatMoney($this->entity->custom_surcharge1, $this->vendor) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge1')];
|
$data['$custom_surcharge1'] = ['value' => Number::formatMoney($this->entity->custom_surcharge1, $this->company) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge1')];
|
||||||
$data['$custom_surcharge2'] = ['value' => Number::formatMoney($this->entity->custom_surcharge2, $this->vendor) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge2')];
|
$data['$custom_surcharge2'] = ['value' => Number::formatMoney($this->entity->custom_surcharge2, $this->company) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge2')];
|
||||||
$data['$custom_surcharge3'] = ['value' => Number::formatMoney($this->entity->custom_surcharge3, $this->vendor) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge3')];
|
$data['$custom_surcharge3'] = ['value' => Number::formatMoney($this->entity->custom_surcharge3, $this->company) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge3')];
|
||||||
$data['$custom_surcharge4'] = ['value' => Number::formatMoney($this->entity->custom_surcharge4, $this->vendor) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge4')];
|
$data['$custom_surcharge4'] = ['value' => Number::formatMoney($this->entity->custom_surcharge4, $this->company) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'surcharge4')];
|
||||||
|
|
||||||
$data['$product.item'] = ['value' => '', 'label' => ctrans('texts.item')];
|
$data['$product.item'] = ['value' => '', 'label' => ctrans('texts.item')];
|
||||||
$data['$product.date'] = ['value' => '', 'label' => ctrans('texts.date')];
|
$data['$product.date'] = ['value' => '', 'label' => ctrans('texts.date')];
|
||||||
@ -608,7 +613,7 @@ class VendorHtmlEngine
|
|||||||
foreach ($tax_map as $tax) {
|
foreach ($tax_map as $tax) {
|
||||||
$data .= '<tr class="line_taxes">';
|
$data .= '<tr class="line_taxes">';
|
||||||
$data .= '<td>'.$tax['name'].'</td>';
|
$data .= '<td>'.$tax['name'].'</td>';
|
||||||
$data .= '<td>'.Number::formatMoney($tax['total'], $this->vendor).'</td></tr>';
|
$data .= '<td>'.Number::formatMoney($tax['total'], $this->company).'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
@ -621,7 +626,7 @@ class VendorHtmlEngine
|
|||||||
$data = '';
|
$data = '';
|
||||||
|
|
||||||
foreach ($tax_map as $tax) {
|
foreach ($tax_map as $tax) {
|
||||||
$data .= '<span>'.Number::formatMoney($tax['total'], $this->vendor).'</span>';
|
$data .= '<span>'.Number::formatMoney($tax['total'], $this->company).'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
@ -639,7 +644,7 @@ class VendorHtmlEngine
|
|||||||
$data .= '<tr>';
|
$data .= '<tr>';
|
||||||
$data .= '<td colspan="{ count($this->entity->company->settings->pdf_variables->total_columns) - 2 }"></td>';
|
$data .= '<td colspan="{ count($this->entity->company->settings->pdf_variables->total_columns) - 2 }"></td>';
|
||||||
$data .= '<td>'.$tax['name'].'</td>';
|
$data .= '<td>'.$tax['name'].'</td>';
|
||||||
$data .= '<td>'.Number::formatMoney($tax['total'], $this->vendor).'</td></tr>';
|
$data .= '<td>'.Number::formatMoney($tax['total'], $this->company).'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
|
@ -215,5 +215,8 @@ class StorePaymentValidationTest extends TestCase
|
|||||||
} catch (ValidationException $e) {
|
} catch (ValidationException $e) {
|
||||||
$response->assertStatus(302);
|
$response->assertStatus(302);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$response->assertStatus(302);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,92 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Invoice Ninja (https://invoiceninja.com).
|
|
||||||
*
|
|
||||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
|
||||||
*
|
|
||||||
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
|
||||||
*
|
|
||||||
* @license https://www.elastic.co/licensing/elastic-license
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Tests\Feature;
|
|
||||||
|
|
||||||
use App\Models\Project;
|
|
||||||
use App\Models\Task;
|
|
||||||
use App\Models\TaskStatus;
|
|
||||||
use App\Utils\Traits\MakesHash;
|
|
||||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
||||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
|
||||||
use Tests\MockAccountData;
|
|
||||||
use Tests\TestCase;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
class TaskStatusSortOnUpdateTest extends TestCase
|
|
||||||
{
|
|
||||||
use DatabaseTransactions;
|
|
||||||
use MockAccountData;
|
|
||||||
use MakesHash;
|
|
||||||
|
|
||||||
protected function setUp() :void
|
|
||||||
{
|
|
||||||
parent::setUp();
|
|
||||||
|
|
||||||
$this->makeTestData();
|
|
||||||
|
|
||||||
$this->withoutMiddleware(
|
|
||||||
ThrottleRequests::class
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// public function testTasksSort()
|
|
||||||
// {
|
|
||||||
|
|
||||||
// $project = Project::factory()->create([
|
|
||||||
// 'user_id' => $this->user->id,
|
|
||||||
// 'company_id' => $this->company->id,
|
|
||||||
// 'name' => 'Test Project',
|
|
||||||
// ]);
|
|
||||||
|
|
||||||
// for($x=0; $x<10; $x++)
|
|
||||||
// {
|
|
||||||
// $task = Task::factory()->create([
|
|
||||||
// 'user_id' => $this->user->id,
|
|
||||||
// 'company_id' => $this->company->id,
|
|
||||||
// 'project_id' => $project->id
|
|
||||||
// ]);
|
|
||||||
|
|
||||||
// $task->status_id = TaskStatus::where('company_id', $this->company->id)->first()->id;
|
|
||||||
// $task->save();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $this->assertTrue($task->project()->exists());
|
|
||||||
// $this->assertEquals($task->project->tasks->count(), 10);
|
|
||||||
|
|
||||||
// $task->status_order = 1;
|
|
||||||
|
|
||||||
// $response = $this->withHeaders([
|
|
||||||
// 'X-API-SECRET' => config('ninja.api_secret'),
|
|
||||||
// 'X-API-TOKEN' => $this->token,
|
|
||||||
// ])->put('/api/v1/tasks/'.$this->encodePrimaryKey($task->id), $task->toArray());
|
|
||||||
|
|
||||||
// $response->assertStatus(200);
|
|
||||||
|
|
||||||
// $this->assertEquals($task->fresh()->status_order, 1);
|
|
||||||
|
|
||||||
// $task->status_order = 10;
|
|
||||||
|
|
||||||
// $response = $this->withHeaders([
|
|
||||||
// 'X-API-SECRET' => config('ninja.api_secret'),
|
|
||||||
// 'X-API-TOKEN' => $this->token,
|
|
||||||
// ])->put('/api/v1/tasks/'.$this->encodePrimaryKey($task->id), $task->toArray());
|
|
||||||
|
|
||||||
// $response->assertStatus(200);
|
|
||||||
|
|
||||||
// nlog($task->fresh()->project->tasks->toArray());
|
|
||||||
|
|
||||||
// $this->assertEquals($task->fresh()->status_order, 9);
|
|
||||||
|
|
||||||
// }
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user