diff --git a/app/Http/Controllers/ProposalController.php b/app/Http/Controllers/ProposalController.php index 0035e6c02a51..8c29c9da0576 100644 --- a/app/Http/Controllers/ProposalController.php +++ b/app/Http/Controllers/ProposalController.php @@ -60,9 +60,9 @@ class ProposalController extends BaseController 'method' => 'POST', 'url' => 'proposals', 'title' => trans('texts.new_proposal'), - 'quotes' => Invoice::scope()->with('client.contacts')->quotes()->orderBy('id')->get(), + 'invoices' => Invoice::scope()->with('client.contacts')->quotes()->orderBy('id')->get(), 'templates' => ProposalTemplate::whereAccountId($account->id)->orWhereNull('account_id')->orderBy('name')->get(), - 'quotePublicId' => $request->quote_id, + 'invoicePublicId' => $request->invoicee_id, ]; return View::make('proposals.edit', $data); @@ -86,9 +86,9 @@ class ProposalController extends BaseController 'method' => 'PUT', 'url' => 'proposals/' . $proposal->public_id, 'title' => trans('texts.edit_proposal'), - 'quotes' => Invoice::scope()->with('client.contacts')->quotes()->orderBy('id')->get(), + 'invoices' => Invoice::scope()->with('client.contacts')->quotes()->orderBy('id')->get(), 'templates' => ProposalTemplate::whereAccountId($account->id)->orWhereNull('account_id')->orderBy('name')->get(), - 'quotePublicId' => $proposal->quote ? $proposal->quote->public_id : null, + 'invoicePublicId' => $proposal->invoice ? $proposal->invoice->public_id : null, 'templatePublicId' => $proposal->proposal_template ? $proposal->proposal_template->public_id : null, ]; diff --git a/app/Models/Proposal.php b/app/Models/Proposal.php index b60e598f8bbc..497830e012e4 100644 --- a/app/Models/Proposal.php +++ b/app/Models/Proposal.php @@ -59,7 +59,7 @@ class Proposal extends EntityModel /** * @return mixed */ - public function quote() + public function invoice() { return $this->belongsTo('App\Models\Invoice')->withTrashed(); } diff --git a/app/Ninja/Datatables/ProposalDatatable.php b/app/Ninja/Datatables/ProposalDatatable.php index 99d023fcbb6e..7a8b9f7fd651 100644 --- a/app/Ninja/Datatables/ProposalDatatable.php +++ b/app/Ninja/Datatables/ProposalDatatable.php @@ -17,11 +17,11 @@ class ProposalDatatable extends EntityDatatable [ 'quote', function ($model) { - if (! Auth::user()->can('viewByOwner', [ENTITY_QUOTE, $model->quote_user_id])) { - return $model->quote_number; + if (! Auth::user()->can('viewByOwner', [ENTITY_QUOTE, $model->invoice_user_id])) { + return $model->invoice_number; } - return link_to("quotes/{$model->quote_public_id}", $model->quote_number)->toHtml(); + return link_to("quotes/{$model->invoice_public_id}", $model->invoice_number)->toHtml(); }, ], [ diff --git a/app/Ninja/Repositories/ProposalRepository.php b/app/Ninja/Repositories/ProposalRepository.php index 768655eb8441..83714b810226 100644 --- a/app/Ninja/Repositories/ProposalRepository.php +++ b/app/Ninja/Repositories/ProposalRepository.php @@ -25,7 +25,7 @@ class ProposalRepository extends BaseRepository { $query = DB::table('proposals') ->where('proposals.account_id', '=', Auth::user()->account_id) - ->leftjoin('invoices', 'invoices.id', '=', 'proposals.quote_id') + ->leftjoin('invoices', 'invoices.id', '=', 'proposals.invoice_id') ->leftjoin('clients', 'clients.id', '=', 'invoices.client_id') ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') ->leftJoin('proposal_templates', 'proposal_templates.id', '=', 'proposals.proposal_template_id') @@ -44,9 +44,9 @@ class ProposalRepository extends BaseRepository 'clients.user_id as client_user_id', 'clients.public_id as client_public_id', 'invoices.invoice_number as quote', - 'invoices.invoice_number as quote_number', - 'invoices.public_id as quote_public_id', - 'invoices.user_id as quote_user_id', + 'invoices.invoice_number as invoice_number', + 'invoices.public_id as invoice_public_id', + 'invoices.user_id as invoice_user_id', 'proposal_templates.name as template', 'proposal_templates.public_id as template_public_id', 'proposal_templates.user_id as template_user_id' @@ -79,8 +79,8 @@ class ProposalRepository extends BaseRepository $proposal->fill($input); - if (isset($input['quote_id'])) { - $proposal->quote_id = $input['quote_id'] ? Invoice::getPrivateId($input['quote_id']) : null; + if (isset($input['invoice_id'])) { + $proposal->invoice_id = $input['invoice_id'] ? Invoice::getPrivateId($input['invoice_id']) : null; } if (isset($input['proposal_template_id'])) { diff --git a/database/migrations/2018_01_10_073825_add_subscription_format.php b/database/migrations/2018_01_10_073825_add_subscription_format.php index ed9da10f9b26..e873142d9cd3 100644 --- a/database/migrations/2018_01_10_073825_add_subscription_format.php +++ b/database/migrations/2018_01_10_073825_add_subscription_format.php @@ -89,7 +89,7 @@ class AddSubscriptionFormat extends Migration $table->softDeletes(); $table->boolean('is_deleted')->default(false); - $table->unsignedInteger('quote_id')->index(); + $table->unsignedInteger('invoice_id')->index(); $table->unsignedInteger('proposal_template_id')->nullable()->index(); $table->text('private_notes'); $table->mediumText('html'); @@ -97,13 +97,34 @@ class AddSubscriptionFormat extends Migration $table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade'); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); - $table->foreign('quote_id')->references('id')->on('invoices')->onDelete('cascade'); + $table->foreign('invoice_id')->references('id')->on('invoices')->onDelete('cascade'); $table->foreign('proposal_template_id')->references('id')->on('proposal_templates')->onDelete('cascade'); $table->unsignedInteger('public_id')->index(); $table->unique(['account_id', 'public_id']); }); + Schema::create('proposal_invitations', function ($table) { + $table->increments('id'); + $table->unsignedInteger('account_id'); + $table->unsignedInteger('user_id'); + $table->unsignedInteger('contact_id'); + $table->unsignedInteger('proposal_id')->index(); + $table->string('invitation_key')->index()->unique(); + $table->timestamps(); + $table->softDeletes(); + + $table->timestamp('sent_date')->nullable(); + $table->timestamp('viewed_date')->nullable(); + + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + $table->foreign('contact_id')->references('id')->on('contacts')->onDelete('cascade'); + $table->foreign('proposal_id')->references('id')->on('proposals')->onDelete('cascade'); + + $table->unsignedInteger('public_id')->index(); + $table->unique(['account_id', 'public_id']); + }); + } /** @@ -125,5 +146,6 @@ class AddSubscriptionFormat extends Migration Schema::dropIfExists('proposal_templates'); Schema::dropIfExists('proposal_snippets'); Schema::dropIfExists('proposal_categories'); + Schema::dropIfExists('proposal_invitations'); } } diff --git a/resources/views/proposals/edit.blade.php b/resources/views/proposals/edit.blade.php index b6717819bf5e..89daa9d3597f 100644 --- a/resources/views/proposals/edit.blade.php +++ b/resources/views/proposals/edit.blade.php @@ -14,7 +14,7 @@ ->method($method) ->id('mainForm') ->rules([ - 'quote_id' => 'required', + 'invoice_id' => 'required', ]) !!} @if ($proposal) @@ -33,9 +33,9 @@
- {!! Former::select('quote_id')->addOption('', '') + {!! Former::select('invoice_id')->addOption('', '') ->label(trans('texts.quote')) - ->addGroupClass('quote-select') !!} + ->addGroupClass('invoice-select') !!} {!! Former::select('proposal_template_id')->addOption('', '') ->label(trans('texts.template')) ->addGroupClass('template-select') !!} @@ -66,8 +66,8 @@