diff --git a/app/Ninja/Repositories/InvoiceRepository.php b/app/Ninja/Repositories/InvoiceRepository.php index 72e063d89f26..229963b097b4 100644 --- a/app/Ninja/Repositories/InvoiceRepository.php +++ b/app/Ninja/Repositories/InvoiceRepository.php @@ -402,6 +402,8 @@ class InvoiceRepository extends BaseRepository if ($invoice->is_deleted) { return $invoice; + } elseif ($invoice->isSent() && config('ninja.lock_sent_invoices')) { + return $invoice; } if (isset($data['has_tasks']) && filter_var($data['has_tasks'], FILTER_VALIDATE_BOOLEAN)) { diff --git a/config/ninja.php b/config/ninja.php index 402d9bfc9d3e..102820edeec9 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -2,6 +2,9 @@ return [ + // invoice locking feature + 'lock_sent_invoices' => env('LOCK_SENT_INVOICES'), + // Marketing links 'time_tracker_web_url' => env('TIME_TRACKER_WEB_URL', 'https://www.invoiceninja.com/time-tracker'), diff --git a/docs/configure.rst b/docs/configure.rst index 8c4f8dff21a3..a14e9cfb382b 100644 --- a/docs/configure.rst +++ b/docs/configure.rst @@ -123,6 +123,11 @@ You'll also need to set the following values in the .env file. MSBOT_LUIS_APP_ID=... MSBOT_LUIS_SUBSCRIPTION_KEY=... +Lock Invoices +""""""""""""" + +Adding ``LOCK_SENT_INVOICES=true`` to the .env file will prevent changing an invoice once it has been sent. + Using a Proxy """"""""""""" diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index ffff300bba08..b17375bfab2e 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -522,8 +522,10 @@ @if (Auth::user()->canCreateOrEdit(ENTITY_INVOICE, $invoice)) @if ($invoice->isClientTrashed()) + @elseif ($invoice->isSent() && config('ninja.lock_sent_invoices')) + @else - @if (!$invoice->is_deleted) + @if (!$invoice->is_deleted) @if ($invoice->isSent()) {!! Button::success(trans("texts.save_{$entityType}"))->withAttributes(array('id' => 'saveButton', 'onclick' => 'onSaveClick()'))->appendIcon(Icon::create('floppy-disk')) !!} @else @@ -1375,6 +1377,10 @@ return false; } + @if ($invoice->isSent() && config('ninja.lock_sent_invoices')) + return false; + @endif + @if ($invoice->is_deleted || $invoice->isClientTrashed()) if ($('#bulk_action').val() != 'restore') { return false;