ultimatepos/Modules/Maintenance/Resources/views/field_missions/panel.blade.php

240 lines
15 KiB
PHP

@php
$util = app(\Modules\Maintenance\Utils\MaintenanceUtil::class);
$mission = $mission ?? null;
$role_labels = $role_labels ?? [];
$expense_type_labels = $expense_type_labels ?? [];
$status_labels = $status_labels ?? [];
@endphp
<div class="mt-card" id="fm_mission_panel" data-source-type="{{ $source_type }}" data-source-id="{{ $source_id }}">
<div class="mt-card-header">
<h3 class="mt-card-title">
<i class="fas fa-users-cog"></i> @lang('maintenance::lang.fm_field_mission')
@if($mission)
<small class="text-muted"> <code>{{ $mission->mission_number }}</code>
({{ $status_labels[$mission->status] ?? $mission->status }})
</small>
@endif
</h3>
@if($mission)
<div class="pull-left" style="margin-top:-4px;">
<a href="{{ action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'show'], [$mission->id]) }}" class="btn btn-sm btn-info">
<i class="fa fa-external-link-alt"></i> @lang('maintenance::lang.fm_open_mission')
</a>
</div>
@endif
</div>
<div class="mt-card-body">
@if(!$mission)
<p class="text-muted">@lang('maintenance::lang.fm_no_mission')</p>
@if(!empty($can_manage))
{!! Form::open(['url' => action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'createForSource'], [$source_type, $source_id]), 'method' => 'post', 'class' => 'fm_create_form']) !!}
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> @lang('maintenance::lang.fm_create_mission')</button>
{!! Form::close() !!}
@endif
@else
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#fm_tab_crew" data-toggle="tab">@lang('maintenance::lang.fm_tab_crew') ({{ $mission->crewMembers->count() }})</a></li>
<li><a href="#fm_tab_items" data-toggle="tab">@lang('maintenance::lang.fm_tab_items') ({{ $mission->items->count() }})</a></li>
<li><a href="#fm_tab_expenses" data-toggle="tab">@lang('maintenance::lang.fm_tab_expenses') ({{ $mission->expenses->count() }})</a></li>
</ul>
<div class="tab-content" style="padding-top:15px;">
<div class="tab-pane active" id="fm_tab_crew">
@if($mission->crewMembers->isNotEmpty())
<table class="table table-condensed table-striped">
<thead>
<tr>
<th>@lang('maintenance::lang.name')</th>
<th>@lang('maintenance::lang.fm_role')</th>
<th>@lang('maintenance::lang.fm_labor_hours')</th>
<th>@lang('maintenance::lang.fm_per_diem')</th>
</tr>
</thead>
<tbody>
@foreach($mission->crewMembers as $member)
<tr>
<td>
{{ $member->displayName() }}
@if($member->is_lead)<span class="label label-primary">@lang('maintenance::lang.fm_lead')</span>@endif
</td>
<td>{{ $role_labels[$member->role] ?? $member->role }}</td>
<td>{{ $member->labor_hours }}</td>
<td>{{ $util->formatMoney($member->per_diem) }}</td>
</tr>
@endforeach
</tbody>
</table>
@else
<p class="text-muted"></p>
@endif
@if(!empty($can_manage) && $mission->activeMission())
<div class="well well-sm">
{!! Form::open(['url' => action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'storeCrew'], [$mission->id]), 'method' => 'post', 'class' => 'fm_crew_form']) !!}
<div class="row">
<div class="col-md-3">
{!! Form::select('user_id', $users ?? [], null, ['class' => 'form-control select2', 'placeholder' => __('maintenance::lang.linked_user'), 'style' => 'width:100%']) !!}
</div>
<div class="col-md-2">
{!! Form::text('person_name', null, ['class' => 'form-control', 'placeholder' => __('maintenance::lang.fm_person_name')]) !!}
</div>
<div class="col-md-2">
{!! Form::select('role', $role_labels, 'technician', ['class' => 'form-control']) !!}
</div>
<div class="col-md-1">
<label class="checkbox-inline" style="margin-top:8px;">
{!! Form::checkbox('is_lead', 1, false) !!} @lang('maintenance::lang.fm_is_lead')
</label>
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-success btn-block"><i class="fa fa-plus"></i> @lang('maintenance::lang.fm_add_crew')</button>
</div>
</div>
{!! Form::close() !!}
</div>
@endif
</div>
<div class="tab-pane" id="fm_tab_items">
@if($mission->items->isNotEmpty())
<table class="table table-condensed table-striped">
<thead>
<tr>
<th>@lang('maintenance::lang.name')</th>
<th>@lang('maintenance::lang.fm_qty_issued')</th>
<th>@lang('maintenance::lang.fm_qty_returned')</th>
<th>@lang('maintenance::lang.status')</th>
</tr>
</thead>
<tbody>
@foreach($mission->items as $item)
<tr>
<td>{{ $item->displayName() }}</td>
<td>{{ $item->quantity_issued }}</td>
<td>{{ $item->quantity_returned }}</td>
<td>{{ $item->status }}</td>
</tr>
@endforeach
</tbody>
</table>
@else
<p class="text-muted"></p>
@endif
@if(!empty($can_issue) && $mission->activeMission() && in_array($mission->status, ['draft', 'planned']))
<div class="well well-sm">
{!! Form::open(['url' => action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'storeItem'], [$mission->id]), 'method' => 'post', 'class' => 'fm_item_form']) !!}
<div class="row">
<div class="col-md-2">
{!! Form::select('item_type', [
'spare_part' => __('maintenance::lang.fm_item_spare_part'),
'tool' => __('maintenance::lang.fm_item_tool'),
], 'spare_part', ['class' => 'form-control fm_item_type']) !!}
</div>
<div class="col-md-3 fm_field_spare">
{!! Form::select('spare_part_id', $spare_parts ?? [], null, ['class' => 'form-control select2', 'placeholder' => __('maintenance::lang.select_spare_part'), 'style' => 'width:100%']) !!}
</div>
<div class="col-md-3 fm_field_tool" style="display:none;">
{!! Form::select('tool_id', $tools ?? [], null, ['class' => 'form-control select2', 'placeholder' => __('maintenance::lang.select'), 'style' => 'width:100%']) !!}
</div>
<div class="col-md-2">
{!! Form::number('quantity_issued', 1, ['class' => 'form-control', 'min' => '0.001', 'step' => '0.001']) !!}
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-success btn-block"><i class="fa fa-plus"></i></button>
</div>
</div>
{!! Form::close() !!}
</div>
@endif
@if(!empty($can_issue) && in_array($mission->status, ['dispatched', 'on_site', 'returning']))
<div class="well well-sm">
<strong>@lang('maintenance::lang.fm_record_returns')</strong>
{!! Form::open(['url' => action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'recordReturns'], [$mission->id]), 'method' => 'post', 'class' => 'fm_returns_form']) !!}
@foreach($mission->items as $idx => $item)
<div class="row" style="margin-top:8px;">
<div class="col-md-4"><small>{{ $item->displayName() }} ({{ $item->quantity_issued }})</small></div>
<div class="col-md-3">
{!! Form::hidden("lines[{$idx}][item_id]", $item->id) !!}
{!! Form::number("lines[{$idx}][quantity_returned]", $item->quantity_returned, ['class' => 'form-control input-sm', 'min' => 0, 'step' => '0.001', 'placeholder' => __('maintenance::lang.fm_qty_returned')]) !!}
</div>
<div class="col-md-3">
{!! Form::number("lines[{$idx}][quantity_lost]", $item->quantity_lost, ['class' => 'form-control input-sm', 'min' => 0, 'step' => '0.001', 'placeholder' => __('maintenance::lang.fm_qty_lost')]) !!}
</div>
</div>
@endforeach
<button type="submit" class="btn btn-warning btn-sm" style="margin-top:10px;">@lang('maintenance::lang.fm_record_returns')</button>
{!! Form::close() !!}
</div>
@endif
</div>
<div class="tab-pane" id="fm_tab_expenses">
<p>
<strong>@lang('maintenance::lang.fm_total_labor'):</strong> {{ $util->formatMoney($mission->total_labor_cost) }}
&nbsp;|&nbsp;
<strong>@lang('maintenance::lang.fm_total_expenses'):</strong> {{ $util->formatMoney($mission->total_expense_cost) }}
&nbsp;|&nbsp;
<strong>@lang('maintenance::lang.fm_total_cost'):</strong> {{ $util->formatMoney($mission->total_cost) }}
</p>
@if($mission->expenses->isNotEmpty())
<table class="table table-condensed table-striped">
<thead>
<tr>
<th>@lang('maintenance::lang.fm_expense_type')</th>
<th>@lang('maintenance::lang.description')</th>
<th>@lang('maintenance::lang.fm_amount')</th>
</tr>
</thead>
<tbody>
@foreach($mission->expenses as $expense)
<tr>
<td>{{ $expense_type_labels[$expense->expense_type] ?? $expense->expense_type }}</td>
<td>{{ $expense->description ?? '—' }}</td>
<td>{{ $util->formatMoney($expense->amount) }}</td>
</tr>
@endforeach
</tbody>
</table>
@endif
@if(!empty($can_expense) && $mission->activeMission())
<div class="well well-sm">
{!! Form::open(['url' => action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'storeExpense'], [$mission->id]), 'method' => 'post', 'class' => 'fm_expense_form']) !!}
<div class="row">
<div class="col-md-2">
{!! Form::select('expense_type', $expense_type_labels, 'transport', ['class' => 'form-control']) !!}
</div>
<div class="col-md-3">
{!! Form::text('description', null, ['class' => 'form-control', 'placeholder' => __('maintenance::lang.description')]) !!}
</div>
<div class="col-md-2">
{!! Form::number('amount', null, ['class' => 'form-control', 'min' => 0, 'required', 'placeholder' => __('maintenance::lang.fm_amount')]) !!}
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-success btn-block"><i class="fa fa-plus"></i> @lang('maintenance::lang.fm_add_expense')</button>
</div>
</div>
{!! Form::close() !!}
</div>
@endif
</div>
</div>
<div class="text-left" style="margin-top:15px;border-top:1px solid #eee;padding-top:12px;">
@if(!empty($can_issue) && in_array($mission->status, ['draft', 'planned']))
{!! Form::open(['url' => action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'dispatchMission'], [$mission->id]), 'method' => 'post', 'style' => 'display:inline;', 'class' => 'fm_dispatch_form', 'onsubmit' => "return confirm('".__('messages.are_you_sure')."')"]) !!}
<button type="submit" class="btn btn-success"><i class="fa fa-truck"></i> @lang('maintenance::lang.fm_dispatch')</button>
{!! Form::close() !!}
@endif
@if(!empty($can_manage) && $mission->activeMission())
{!! Form::open(['url' => action([\Modules\Maintenance\Http\Controllers\FieldMissionController::class, 'closeMission'], [$mission->id]), 'method' => 'post', 'style' => 'display:inline;', 'class' => 'fm_close_form', 'onsubmit' => "return confirm('".__('messages.are_you_sure')."')"]) !!}
<button type="submit" class="btn btn-default"><i class="fa fa-check"></i> @lang('maintenance::lang.fm_close_mission')</button>
{!! Form::close() !!}
@endif
</div>
@endif
</div>
</div>