mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-08 17:14:31 -04:00
commit
adba1ea547
@ -1 +1 @@
|
|||||||
5.3.88
|
5.3.89
|
@ -25,10 +25,12 @@ use App\Http\Requests\Invoice\EditInvoiceRequest;
|
|||||||
use App\Http\Requests\Invoice\ShowInvoiceRequest;
|
use App\Http\Requests\Invoice\ShowInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\StoreInvoiceRequest;
|
use App\Http\Requests\Invoice\StoreInvoiceRequest;
|
||||||
use App\Http\Requests\Invoice\UpdateInvoiceRequest;
|
use App\Http\Requests\Invoice\UpdateInvoiceRequest;
|
||||||
|
use App\Http\Requests\Invoice\UpdateReminderRequest;
|
||||||
use App\Http\Requests\Invoice\UploadInvoiceRequest;
|
use App\Http\Requests\Invoice\UploadInvoiceRequest;
|
||||||
use App\Jobs\Entity\EmailEntity;
|
use App\Jobs\Entity\EmailEntity;
|
||||||
use App\Jobs\Invoice\BulkInvoiceJob;
|
use App\Jobs\Invoice\BulkInvoiceJob;
|
||||||
use App\Jobs\Invoice\StoreInvoice;
|
use App\Jobs\Invoice\StoreInvoice;
|
||||||
|
use App\Jobs\Invoice\UpdateReminders;
|
||||||
use App\Jobs\Invoice\ZipInvoices;
|
use App\Jobs\Invoice\ZipInvoices;
|
||||||
use App\Jobs\Ninja\TransactionLog;
|
use App\Jobs\Ninja\TransactionLog;
|
||||||
use App\Jobs\Util\UnlinkFile;
|
use App\Jobs\Util\UnlinkFile;
|
||||||
@ -957,4 +959,12 @@ class InvoiceController extends BaseController
|
|||||||
return $this->itemResponse($invoice->fresh());
|
return $this->itemResponse($invoice->fresh());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function update_reminders(UpdateReminderRequest $request)
|
||||||
|
{
|
||||||
|
|
||||||
|
UpdateReminders::dispatch(auth()->user()->company());
|
||||||
|
|
||||||
|
return response()->json(["message" => "Updating reminders"], 200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
32
app/Http/Requests/Invoice/UpdateReminderRequest.php
Normal file
32
app/Http/Requests/Invoice/UpdateReminderRequest.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Requests\Invoice;
|
||||||
|
|
||||||
|
use App\Http\Requests\Request;
|
||||||
|
|
||||||
|
class UpdateReminderRequest extends Request
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize() : bool
|
||||||
|
{
|
||||||
|
return auth()->user()->isAdmin();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
@ -14,6 +14,9 @@ namespace App\Http\Requests\Preview;
|
|||||||
use App\Http\Requests\Request;
|
use App\Http\Requests\Request;
|
||||||
use App\Http\ValidationRules\Project\ValidProjectForClient;
|
use App\Http\ValidationRules\Project\ValidProjectForClient;
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
|
use App\Models\Credit;
|
||||||
|
use App\Models\Quote;
|
||||||
|
use App\Models\RecurringInvoice;
|
||||||
use App\Utils\Traits\CleanLineItems;
|
use App\Utils\Traits\CleanLineItems;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
@ -30,15 +33,13 @@ class PreviewInvoiceRequest extends Request
|
|||||||
*/
|
*/
|
||||||
public function authorize() : bool
|
public function authorize() : bool
|
||||||
{
|
{
|
||||||
return auth()->user()->can('create', Invoice::class);
|
return auth()->user()->can('create', Invoice::class) || auth()->user()->can('create', Quote::class) || auth()->user()->can('create', RecurringInvoice::class) || auth()->user()->can('create', Credit::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function rules()
|
public function rules()
|
||||||
{
|
{
|
||||||
$rules = [];
|
$rules = [];
|
||||||
|
|
||||||
// $rules['client_id'] = 'bail|required|exists:clients,id,company_id,'.auth()->user()->company()->id;
|
|
||||||
|
|
||||||
$rules['number'] = ['nullable'];
|
$rules['number'] = ['nullable'];
|
||||||
|
|
||||||
return $rules;
|
return $rules;
|
||||||
|
57
app/Jobs/Invoice/UpdateReminders.php
Normal file
57
app/Jobs/Invoice/UpdateReminders.php
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Jobs\Invoice;
|
||||||
|
|
||||||
|
use App\Libraries\MultiDB;
|
||||||
|
use App\Models\Company;
|
||||||
|
use App\Models\Invoice;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class UpdateReminders implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
|
public Company $company;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(Company $company)
|
||||||
|
{
|
||||||
|
$this->company = $company;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the job.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
|
||||||
|
MultiDB::setDb($this->company->db);
|
||||||
|
|
||||||
|
$this->company
|
||||||
|
->invoices()
|
||||||
|
->where('is_deleted', 0)
|
||||||
|
->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
|
||||||
|
->cursor()
|
||||||
|
->each(function ($invoice){
|
||||||
|
$invoice->service()->setReminder()->save();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,6 +17,7 @@ use App\Models\Company;
|
|||||||
use App\Utils\Traits\ClientGroupSettingsSaver;
|
use App\Utils\Traits\ClientGroupSettingsSaver;
|
||||||
use App\Utils\Traits\GeneratesCounter;
|
use App\Utils\Traits\GeneratesCounter;
|
||||||
use App\Utils\Traits\SavesDocuments;
|
use App\Utils\Traits\SavesDocuments;
|
||||||
|
use Illuminate\Database\QueryException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClientRepository.
|
* ClientRepository.
|
||||||
@ -26,6 +27,8 @@ class ClientRepository extends BaseRepository
|
|||||||
use GeneratesCounter;
|
use GeneratesCounter;
|
||||||
use SavesDocuments;
|
use SavesDocuments;
|
||||||
|
|
||||||
|
private bool $completed = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var ClientContactRepository
|
* @var ClientContactRepository
|
||||||
*/
|
*/
|
||||||
@ -76,8 +79,34 @@ class ClientRepository extends BaseRepository
|
|||||||
|
|
||||||
|
|
||||||
if (!isset($client->number) || empty($client->number) || strlen($client->number) == 0) {
|
if (!isset($client->number) || empty($client->number) || strlen($client->number) == 0) {
|
||||||
$client->number = $this->getNextClientNumber($client);
|
// $client->number = $this->getNextClientNumber($client);
|
||||||
$client->save();
|
// $client->save();
|
||||||
|
|
||||||
|
$x=1;
|
||||||
|
|
||||||
|
do{
|
||||||
|
|
||||||
|
try{
|
||||||
|
|
||||||
|
$client->number = $this->getNextClientNumber($client);
|
||||||
|
$client->saveQuietly();
|
||||||
|
|
||||||
|
$this->completed = false;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(QueryException $e){
|
||||||
|
|
||||||
|
$x++;
|
||||||
|
|
||||||
|
if($x>10)
|
||||||
|
$this->completed = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
while($this->completed);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($data['name'])) {
|
if (empty($data['name'])) {
|
||||||
|
@ -14,8 +14,8 @@ return [
|
|||||||
'require_https' => env('REQUIRE_HTTPS', true),
|
'require_https' => env('REQUIRE_HTTPS', true),
|
||||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||||
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
||||||
'app_version' => '5.3.88',
|
'app_version' => '5.3.89',
|
||||||
'app_tag' => '5.3.88',
|
'app_tag' => '5.3.89',
|
||||||
'minimum_client_version' => '5.0.16',
|
'minimum_client_version' => '5.0.16',
|
||||||
'terms_version' => '1.0.1',
|
'terms_version' => '1.0.1',
|
||||||
'api_secret' => env('API_SECRET', ''),
|
'api_secret' => env('API_SECRET', ''),
|
||||||
|
@ -105,7 +105,8 @@ Route::group(['middleware' => ['throttle:100,1', 'api_db', 'token_auth', 'locale
|
|||||||
Route::put('invoices/{invoice}/upload', 'InvoiceController@upload')->name('invoices.upload');
|
Route::put('invoices/{invoice}/upload', 'InvoiceController@upload')->name('invoices.upload');
|
||||||
Route::get('invoice/{invitation_key}/download', 'InvoiceController@downloadPdf')->name('invoices.downloadPdf');
|
Route::get('invoice/{invitation_key}/download', 'InvoiceController@downloadPdf')->name('invoices.downloadPdf');
|
||||||
Route::post('invoices/bulk', 'InvoiceController@bulk')->name('invoices.bulk');
|
Route::post('invoices/bulk', 'InvoiceController@bulk')->name('invoices.bulk');
|
||||||
|
Route::post('invoices/update_reminders', 'InvoiceController@update_reminders')->name('invoices.update_reminders');
|
||||||
|
|
||||||
Route::post('logout', 'LogoutController@index')->name('logout');
|
Route::post('logout', 'LogoutController@index')->name('logout');
|
||||||
|
|
||||||
Route::post('migrate', 'MigrationController@index')->name('migrate.start');
|
Route::post('migrate', 'MigrationController@index')->name('migrate.start');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user