diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php
index ac9287b53..a0dafd4db 100644
--- a/app/Http/Controllers/Api/AssetsController.php
+++ b/app/Http/Controllers/Api/AssetsController.php
@@ -101,6 +101,7 @@ class AssetsController extends Controller
'checkin_counter',
'requests_counter',
'byod',
+ 'asset_eol_date',
];
$filter = [];
@@ -128,7 +129,6 @@ class AssetsController extends Controller
// They are also used by the individual searches on detail pages like
// locations, etc.
-
// Search custom fields by column name
foreach ($all_custom_fields as $field) {
if ($request->filled($field->db_column_name())) {
@@ -136,7 +136,6 @@ class AssetsController extends Controller
}
}
-
if ($request->filled('status_id')) {
$assets->where('assets.status_id', '=', $request->input('status_id'));
}
@@ -173,6 +172,10 @@ class AssetsController extends Controller
$assets->where('assets.supplier_id', '=', $request->input('supplier_id'));
}
+ if ($request->filled('asset_eol_date')) {
+ $assets->where('assets.asset_eol_date', '=', $request->input('asset_eol_date'));
+ }
+
if (($request->filled('assigned_to')) && ($request->filled('assigned_type'))) {
$assets->where('assets.assigned_to', '=', $request->input('assigned_to'))
->where('assets.assigned_type', '=', $request->input('assigned_type'));
diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php
index 1c7080bd4..9b51b7f26 100755
--- a/app/Http/Controllers/Assets/AssetsController.php
+++ b/app/Http/Controllers/Assets/AssetsController.php
@@ -142,6 +142,7 @@ class AssetsController extends Controller
$asset->warranty_months = request('warranty_months', null);
$asset->purchase_cost = Helper::ParseCurrency($request->get('purchase_cost'));
$asset->purchase_date = request('purchase_date', null);
+ $asset->asset_eol_date = request('asset_eol_date', null);
$asset->assigned_to = request('assigned_to', null);
$asset->supplier_id = request('supplier_id', null);
$asset->requestable = request('requestable', 0);
@@ -312,6 +313,8 @@ class AssetsController extends Controller
$asset->status_id = $request->input('status_id', null);
$asset->warranty_months = $request->input('warranty_months', null);
$asset->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost', null));
+ $asset->asset_eol_date = request('asset_eol_date', null);
+
$asset->purchase_date = $request->input('purchase_date', null);
$asset->supplier_id = $request->input('supplier_id', null);
$asset->expected_checkin = $request->input('expected_checkin', null);
diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php
index a36d0ab89..4b1616026 100644
--- a/app/Http/Transformers/AssetsTransformer.php
+++ b/app/Http/Transformers/AssetsTransformer.php
@@ -38,7 +38,8 @@ class AssetsTransformer
'byod' => ($asset->byod ? true : false),
'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null,
- 'eol' => ($asset->purchase_date != '') ? Helper::getFormattedDateObject($asset->present()->eol_date(), 'date') : null,
+ 'eol' => ($asset->model->eol != '') ? $asset->model->eol : null,
+ 'asset_eol_date' => ($asset->asset_eol_date != '') ? Helper::getFormattedDateObject($asset->asset_eol_date, 'date') : null,
'status_label' => ($asset->assetstatus) ? [
'id' => (int) $asset->assetstatus->id,
'name'=> e($asset->assetstatus->name),
diff --git a/app/Models/Asset.php b/app/Models/Asset.php
index 37e932cfa..9be0cd62b 100644
--- a/app/Models/Asset.php
+++ b/app/Models/Asset.php
@@ -114,6 +114,7 @@ class Asset extends Depreciable
'serial' => 'unique_serial|nullable',
'purchase_cost' => 'numeric|nullable|gte:0',
'supplier_id' => 'exists:suppliers,id|nullable',
+ 'asset_eol_date' => 'date|max:10|min:10|nullable',
];
/**
@@ -143,9 +144,9 @@ class Asset extends Depreciable
'last_checkout',
'expected_checkin',
'byod',
+ 'asset_eol_date',
'last_audit_date',
'next_audit_date',
-
];
use Searchable;
@@ -168,6 +169,7 @@ class Asset extends Depreciable
'expected_checkin',
'next_audit_date',
'last_audit_date',
+ 'asset_eol_date',
];
/**
@@ -181,7 +183,7 @@ class Asset extends Depreciable
'company' => ['name'],
'defaultLoc' => ['name'],
'location' => ['name'],
- 'model' => ['name', 'model_number'],
+ 'model' => ['name', 'model_number', 'eol'],
'model.category' => ['name'],
'model.manufacturer' => ['name'],
];
diff --git a/app/Presenters/AssetPresenter.php b/app/Presenters/AssetPresenter.php
index ccc4a4cf1..4be0f5601 100644
--- a/app/Presenters/AssetPresenter.php
+++ b/app/Presenters/AssetPresenter.php
@@ -163,9 +163,16 @@ class AssetPresenter extends Presenter
], [
'field' => 'eol',
'searchable' => false,
- 'sortable' => false,
+ 'sortable' => true,
'visible' => false,
'title' => trans('general.eol'),
+ ],
+ [
+ 'field' => 'asset_eol_date',
+ 'searchable' => true,
+ 'sortable' => true,
+ 'visible' => false,
+ 'title' => trans('admin/hardware/form.eol_date'),
'formatter' => 'dateDisplayFormatter',
], [
'field' => 'warranty_months',
diff --git a/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php b/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php
new file mode 100644
index 000000000..95c3bff35
--- /dev/null
+++ b/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php
@@ -0,0 +1,54 @@
+date('asset_eol_date')->after('purchase_date')->nullable()->default(null);
+ }
+ });
+
+ // Chunk the model query to get the models that do have an EOL date
+ AssetModel::whereNotNull('eol')->with('assets')->chunk(200, function ($models) {
+ foreach ($models as $model) {
+ foreach ($model->assets as $asset) {
+
+ if ($asset->purchase_date!='') {
+ $asset->asset_eol_date = $asset->present()->eol_date();
+ $asset->save();
+ }
+
+ }
+ }
+ });
+
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('assets', function (Blueprint $table) {
+ if (Schema::hasColumn('assets', 'asset_eol_date')) {
+ $table->dropColumn('asset_eol_date');
+ }
+ });
+ }
+}
diff --git a/resources/views/hardware/edit.blade.php b/resources/views/hardware/edit.blade.php
index c5cd302a2..56876ba47 100755
--- a/resources/views/hardware/edit.blade.php
+++ b/resources/views/hardware/edit.blade.php
@@ -152,6 +152,7 @@
@include ('partials.forms.edit.order_number')
@include ('partials.forms.edit.purchase_date')
+ @include ('partials.forms.edit.eol_date')
@include ('partials.forms.edit.supplier-select', ['translated_name' => trans('general.supplier'), 'fieldname' => 'supplier_id'])
@php
diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php
index 5b480a244..de1910001 100755
--- a/resources/views/hardware/view.blade.php
+++ b/resources/views/hardware/view.blade.php
@@ -673,7 +673,8 @@
-
+ @endif
+ @if ($asset->asset_eol_date)