diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 1aa162c9f912..3207daeb5600 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -361,6 +361,14 @@ class Invoice extends EntityModel implements BalanceAffecting return $this->belongsTo('App\Models\Invoice'); } + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function quote() + { + return $this->belongsTo('App\Models\Invoice'); + } + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ diff --git a/app/Ninja/Datatables/InvoiceDatatable.php b/app/Ninja/Datatables/InvoiceDatatable.php index 1a867a732389..9e98b18d3889 100644 --- a/app/Ninja/Datatables/InvoiceDatatable.php +++ b/app/Ninja/Datatables/InvoiceDatatable.php @@ -141,15 +141,6 @@ class InvoiceDatatable extends EntityDatatable return $entityType == ENTITY_INVOICE && $model->invoice_status_id != INVOICE_STATUS_PAID && Auth::user()->can('create', ENTITY_PAYMENT); }, ], - [ - trans('texts.view_quote'), - function ($model) { - return URL::to("quotes/{$model->quote_id}/edit"); - }, - function ($model) use ($entityType) { - return $entityType == ENTITY_INVOICE && $model->quote_id && Auth::user()->can('editByOwner', [ENTITY_INVOICE, $model->user_id]); - }, - ], [ trans('texts.view_invoice'), function ($model) { diff --git a/app/Ninja/Presenters/InvoicePresenter.php b/app/Ninja/Presenters/InvoicePresenter.php index d9cc35088dcd..e27488825002 100644 --- a/app/Ninja/Presenters/InvoicePresenter.php +++ b/app/Ninja/Presenters/InvoicePresenter.php @@ -235,8 +235,8 @@ class InvoicePresenter extends EntityPresenter $actions[] = ['url' => 'javascript:onConvertClick()', 'label' => trans('texts.convert_to_invoice')]; } } elseif ($entityType == ENTITY_INVOICE) { - if ($invoice->quote_id) { - $actions[] = ['url' => url("quotes/{$invoice->quote_id}/edit"), 'label' => trans('texts.view_quote')]; + if ($invoice->quote) { + $actions[] = ['url' => url("quotes/{$invoice->quote->public_id}/edit"), 'label' => trans('texts.view_quote')]; } if ($invoice->canBePaid()) { diff --git a/app/Ninja/Repositories/InvoiceRepository.php b/app/Ninja/Repositories/InvoiceRepository.php index 5bd389ae6090..58e6bf5d50f2 100644 --- a/app/Ninja/Repositories/InvoiceRepository.php +++ b/app/Ninja/Repositories/InvoiceRepository.php @@ -815,11 +815,11 @@ class InvoiceRepository extends BaseRepository /** * @param Invoice $invoice - * @param null $quotePublicId + * @param null $quoteId * * @return mixed */ - public function cloneInvoice(Invoice $invoice, $quotePublicId = null) + public function cloneInvoice(Invoice $invoice, $quoteId = null) { $invoice->load('invitations', 'invoice_items'); $account = $invoice->account; @@ -873,9 +873,9 @@ class InvoiceRepository extends BaseRepository $clone->$field = $invoice->$field; } - if ($quotePublicId) { + if ($quoteId) { $clone->invoice_type_id = INVOICE_TYPE_STANDARD; - $clone->quote_id = $quotePublicId; + $clone->quote_id = $quoteId; if ($account->invoice_terms) { $clone->terms = $account->invoice_terms; } @@ -890,7 +890,7 @@ class InvoiceRepository extends BaseRepository $clone->due_date = $account->defaultDueDate($invoice->client); $clone->save(); - if ($quotePublicId) { + if ($quoteId) { $invoice->quote_invoice_id = $clone->public_id; $invoice->save(); }