Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions app/Http/Controllers/ReportsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -1152,4 +1152,35 @@ protected function getAssetsCheckedOutRequiringAcceptance()
$this->getModelsInCategoriesThatRequireAcceptance($this->getCategoriesThatRequireAcceptance())
);
}

/**
* getAssetsNotAcceptedYet
*
* @return array
* @author Vincent Sposato <vincent.sposato@gmail.com>
* @version v1.0
*/
protected function getAssetsNotAcceptedYet()
{
$this->authorize('reports.view');

return Asset::unaccepted();
}


/**
* Displays EOL report.
*
* @author [A. Rahardianto] [<veenone@gmail.com>]
* @since [v6.0.3]
* @return View
*/
public function getEOLReport()
{
$this->authorize('reports.view');
$eol_assets = Asset::orderBy('created_at', 'DESC')->whereNotNull('purchase_date')->get();

return view('reports/eol_assets', compact('eol_assets'));
}

}
58 changes: 58 additions & 0 deletions app/Presenters/AssetPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -526,4 +526,62 @@ public function glyph()
{
return '<i class="fas fa-barcode" aria-hidden="true"></i>';
}

/**
* Returns the EOL date basen on purchase date.
* @author [A. Rahardianto] [<veenone@gmail.com>]
* @since [v6.0.3]
* @return null|DateTime
*/
public function get_expiry_days()
{
$date = null;
if (($this->purchase_date) && ($this->model->model) && ($this->model->model->eol)) {
$date = date_create($this->purchase_date);
date_add($date, date_interval_create_from_date_string($this->model->model->eol . " " . trans('general.months')));
}
return $date;
}

/**
* Returns the days this item until hits EOL.
* @author [A. Rahardianto] [<veenone@gmail.com>]
* @since [v6.0.3]
* @return false|string
*/
public function days_until_eol_date()
{
$from = date_create(date("Y-m-d"));
$diff = date_diff($from,$this->get_expiry_days());

if ($this->get_expiry_status($diff))
{
$past_prefix = trans('general.obsolete') . ' (';
$past_suffix = ')';
} else
{
$past_prefix = '';
$past_suffix = '';
}

return($diff->format($past_prefix . "%y " . trans('general.years') . " %m " . trans('general.months') . " %d " .trans('general.days') . $past_suffix));

}

/**
* get EOL status whether obsolete (in the past already) / not
* @author [A. Rahardianto] [<veenone@gmail.com>]
* @since [v6.0.3]
* @return true|false
*/
public function get_expiry_status($datediff)
{
$expiry_status = false;
if ($datediff->invert == 1)
{
$expiry_status = true;
}
return $expiry_status;
}

}
4 changes: 2 additions & 2 deletions app/Presenters/DepreciationPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ public static function dataTableLayout()
],

[
"field" => 'depreciation_min',
"field" => 'purchase_date',
"searchable" => false,
"sortable" => true,
"title" => trans('admin/depreciations/table.depreciation_min'),
"title" => trans('admin/asset/table.purchase_date'),
"visible" => true,
],
[
Expand Down
83 changes: 83 additions & 0 deletions app/Presenters/EolAssetPresenter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php

namespace App\Presenters;

/**
* extends Presenter
*/
class EolAssetPresenter extends Presenter
{
/**
* Json Column Layout for bootstrap table
* @return string
*/
public static function dataTableLayout()
{
$layout = [
[
'field' => 'name',
'searchable' => false,
'sortable' => true,
'switchable' => true,
'title' => trans('admin/hardware/form.name'),
'visible' => true,
], [
'field' => 'asset_tag',
'searchable' => true,
'sortable' => true,
'title' => trans('admin/hardware/table.asset_tag'),
'visible' => true,
],[
'field' => 'asset_model',
'searchable' => true,
'sortable' => true,
'title' => trans('admin/hardware/table.asset_model'),
'visible' => true,
],[
"field" => 'model_number',
"searchable" => false,
"sortable" => true,
"title" => trans('admin/hardware/table.serial'),
"visible" => true,
],[
'field' => 'purchase_date',
'searchable' => true,
'sortable' => true,
'switchable' => false,
'title' => trans('general.purchase_date'),
'visible' => true,

],[
'field' => 'notes',
'searchable' => true,
'sortable' => false,
'switchable' => false,
'title' => trans('admin/hardware/form.notes'),
'visible' => true,
],[
'field' => 'eol_date',
'searchable' => true,
'sortable' => true,
'switchable' => false,
'title' => trans('admin/hardware/table.eol_date'),
'visible' => true,
],[
'field' => 'expiry_status',
'searchable' => true,
'sortable' => true,
'switchable' => true,
'title' => trans('admin/hardware/table.eol_status'),
'visible' => true,
],[
'field' => 'days_before_eol',
'searchable' => true,
'sortable' => true,
'switchable' => false,
'title' => trans('admin/hardware/table.eol_duration'),
'visible' => true,
],
];

return json_encode($layout);
}
}
3 changes: 3 additions & 0 deletions resources/lang/en/admin/hardware/table.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@
'requested_date' => 'Requested Date',
'changed' => 'Changed',
'icon' => 'Icon',
'eol_date' => 'EOL Date',
'eol_status' => 'Asset Status',
'eol_duration' => 'Time to EOL',
];
6 changes: 5 additions & 1 deletion resources/lang/en/general.php
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,10 @@
'bulk_soft_delete' =>'Also soft-delete these users. Their asset history will remain intact unless/until you purge deleted records in the Admin Settings.',
'bulk_checkin_delete_success' => 'Your selected users have been deleted and their items have been checked in.',
'bulk_checkin_success' => 'The items for the selected users have been checked in.',

'eol_assets_report' => 'EOL Assets Report',
'obsolete' => 'Obsolete',
'years' => 'Years',
'months' => 'Months',
'days' => 'Days',

];
5 changes: 5 additions & 0 deletions resources/views/layouts/default.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,11 @@
{{ trans('general.accessory_report') }}
</a>
</li>
<li>
<a href="{{ url('reports/eol_assets') }}" {{ (Request::is('reports/eol_assets') ? ' class="active"' : '') }}>
{{ trans('general.eol_assets_report') }}
</a>
</li>
<li>
<a href="{{ url('reports/custom') }}" {{ (Request::is('reports/custom') ? ' class="active"' : '') }}>
{{ trans('general.custom_report') }}
Expand Down
86 changes: 86 additions & 0 deletions resources/views/reports/eol_assets.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
@extends('layouts/default')

{{-- Page title --}}
@section('title')
{{ trans('general.eol_assets_report') }}
@parent
@stop


{{-- Page content --}}
@section('content')
<div class="row">
<div class="col-md-12">
<div class="box box-default">
<div class="box-body">
<div class="table-responsive">

<table
data-cookie-id-table="eolAssetsReport"
data-pagination="true"
data-id-table="eolAssetsReport"
data-search="true"
data-side-pagination="server"
data-show-columns="true"
data-show-export="true"
data-show-refresh="true"
data-sort-order="asc"
id="eolAssetsReport"
class="table table-striped snipe-table"
data-columns="{{ \App\Presenters\EolAssetPresenter::dataTableLayout() }}"
data-export-options='{
"fileName": "eol-assets-report-{{ date('Y-m-d') }}",
"ignoreColumn": ["actions","image","change","checkbox","checkincheckout","icon"]
}'>

<thead>
<tr>
<th class="col-sm-1">{{ trans('admin/hardware/form.name') }})</th>
<th class="col-sm-1">{{ trans('admin/hardware/table.asset_tag') }}</th>
<th class="col-sm-1">{{ trans('admin/hardware/table.asset_model') }}</th>
<th class="col-sm-1">{{ trans('admin/hardware/table.serial') }}</th>
<th class="col-sm-1">{{ trans('general.purchase_date') }}</th>
<th class="col-sm-1">{{ trans('admin/hardware/form.notes') }}</th>
<th class="col-sm-1">{{ trans('admin/hardware/table.eol_date') }}</th>
<th class="col-sm-1">{{ trans('admin/hardware/table.eol_status') }}</th>
<th class="col-sm-1">{{ trans('admin/hardware/table.eol_duration') }}</th>
</tr>
</thead>
<tbody>
@if($eol_assets->count())
@foreach ($eol_assets as $asset)
@if($asset->present()->get_expiry_days())
<tr>
<td>{{ $asset->name}}</td>
<td>{{ $asset->present()->asset_tag}}</td>
<td>{{ $asset->model->name}}</td>
<td>{{ $asset->model->model_number}}</td>
<td>{{ date_format($asset->purchase_date, 'Y-m-d')}}</td>
<td>{{ $asset->present()->notes}}</td>
<td>{{ ($asset->purchase_date != '') ? $asset->present()->eol_date() : ''}}</td>
<td>{{ ($asset->present()->get_expiry_status(date_diff(now(),$asset->present()->get_expiry_days())) != 1) ? 'Active' : 'End of Life'}}</td>
<td>{{ $asset->present()->days_until_eol_date()}}</td>
</tr>
@endif
@endforeach
@endif
</tbody>
</table>


</div>
</div>
</div>
</div>
</div>



@stop

@section('moar_scripts')
@include ('partials.bootstrap-table')

@stop


4 changes: 4 additions & 0 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,10 @@
'reports/unaccepted_assets/{deleted?}',
[ReportsController::class, 'postAssetAcceptanceReport']
)->name('reports/export/unaccepted_assets');
Route::get(
'reports/eol_assets',
[ReportsController::class, 'getEOLReport']
)->name('reports.eol_assets');
});

Route::get(
Expand Down