diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 323581874893..276a3516e8e0 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -149,6 +149,10 @@ class ProductController extends BaseController $message = $productPublicId ? trans('texts.updated_product') : trans('texts.created_product'); Session::flash('message', $message); + if (in_array(request('action'), ['archive', 'delete', 'restore', 'invoice'])) { + return self::bulk(); + } + return Redirect::to("products/{$product->public_id}/edit"); } @@ -162,6 +166,7 @@ class ProductController extends BaseController if ($action == 'invoice') { $products = Product::scope($ids)->get(); + $data = []; foreach ($products as $product) { $data[] = $product->product_key; } diff --git a/app/Ninja/Datatables/ProductDatatable.php b/app/Ninja/Datatables/ProductDatatable.php index 418a85d95d49..d5a3aba104d6 100644 --- a/app/Ninja/Datatables/ProductDatatable.php +++ b/app/Ninja/Datatables/ProductDatatable.php @@ -52,6 +52,15 @@ class ProductDatatable extends EntityDatatable return URL::to("products/{$model->public_id}/edit"); }, ], + [ + trans('texts.invoice_product'), + function ($model) { + return "javascript:submitForm_product('invoice', {$model->public_id})"; + }, + function ($model) { + return (! $model->deleted_at || $model->deleted_at == '0000-00-00') && Auth::user()->can('create', ENTITY_INVOICE); + }, + ], ]; } } diff --git a/app/Ninja/Presenters/ProductPresenter.php b/app/Ninja/Presenters/ProductPresenter.php index 8d6091f06c9d..07351e1c0841 100644 --- a/app/Ninja/Presenters/ProductPresenter.php +++ b/app/Ninja/Presenters/ProductPresenter.php @@ -2,6 +2,7 @@ namespace App\Ninja\Presenters; +use DropdownButton; use App\Libraries\Skype\HeroCard; class ProductPresenter extends EntityPresenter @@ -22,4 +23,25 @@ class ProductPresenter extends EntityPresenter return $card; } + + public function moreActions() + { + $product = $this->entity; + + if (! $product->trashed()) { + if (auth()->user()->can('create', ENTITY_INVOICE)) { + $actions[] = ['url' => 'javascript:submitAction("invoice")', 'label' => trans('texts.invoice_product')]; + $actions[] = DropdownButton::DIVIDER; + } + $actions[] = ['url' => 'javascript:submitAction("archive")', 'label' => trans("texts.archive_product")]; + } else { + $actions[] = ['url' => 'javascript:submitAction("restore")', 'label' => trans("texts.restore_product")]; + } + if (! $product->is_deleted) { + $actions[] = ['url' => 'javascript:onDeleteClick()', 'label' => trans("texts.delete_product")]; + } + + return $actions; + } + } diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 8359ec8ef4e0..aae68f215384 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -2518,6 +2518,7 @@ $LANG = array( 'enabled_two_factor' => 'Successfully enabled Two-Factor Authentication', 'add_product' => 'Add Product', 'email_will_be_sent_on' => 'Note: the email will be sent on :date.', + 'invoice_product' => 'Invoice Product', ); diff --git a/resources/views/accounts/product.blade.php b/resources/views/accounts/product.blade.php index 461259fccb69..92e632badf2c 100644 --- a/resources/views/accounts/product.blade.php +++ b/resources/views/accounts/product.blade.php @@ -6,7 +6,17 @@ {!! Former::open($url) ->method($method) ->rules(['product_key' => 'required|max:255']) - ->addClass('col-md-10 col-md-offset-1 warn-on-exit') !!} + ->addClass('col-md-10 col-md-offset-1 main-form warn-on-exit') !!} + + @if ($product) + {{ Former::populate($product) }} + {{ Former::populateField('cost', Utils::roundSignificant($product->cost)) }} + @endif + +