ultimatepos/Modules/Tms/Resources/views/customs/show.blade.php

185 lines
11 KiB
PHP

@extends('layouts.app')
@section('title', $clearance->ref_no)
@section('content')
@include('tms::layouts.nav')
<section class="content no-print mt-page">
<div class="mt-page-header">
<h1><i class="fas fa-passport" style="color:#3b82f6;margin-left:8px;"></i> {{ $clearance->ref_no }}</h1>
<div>
@can('tms.customs.update')
<a href="{{ action([\Modules\Tms\Http\Controllers\CustomsClearanceController::class,'edit'],[$clearance->id]) }}" class="btn btn-primary"><i class="fa fa-edit"></i> @lang('tms::lang.edit')</a>
@endcan
@if($clearance->shipment_id)
<a href="{{ action([\Modules\Tms\Http\Controllers\ShipmentController::class,'show'],[$clearance->shipment_id]) }}" class="btn btn-info"><i class="fa fa-truck"></i> @lang('tms::lang.view_shipment')</a>
@endif
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="mt-card">
<div class="mt-card-header">
<h3 class="mt-card-title">@lang('tms::lang.customs_file')</h3>
<span class="label label-info">{{ $statuses[$clearance->status] ?? $clearance->status }}</span>
<span class="label label-default">{{ $types[$clearance->clearance_type] ?? $clearance->clearance_type }}</span>
</div>
<div class="mt-card-body">
<table class="table table-bordered">
<tr><th width="30%">@lang('tms::lang.broker')</th><td>{{ $clearance->broker?->name ?? '—' }}</td></tr>
<tr><th>@lang('tms::lang.contact')</th><td>{{ $clearance->contact?->name ?? '—' }}</td></tr>
<tr><th>@lang('tms::lang.customs_office')</th><td>{{ $clearance->customs_office ?? '—' }}</td></tr>
<tr><th>@lang('tms::lang.declaration_no')</th><td>{{ $clearance->declaration_no ?? '—' }}</td></tr>
<tr><th>@lang('tms::lang.bill_of_lading')</th><td>{{ $clearance->bill_of_lading ?? '—' }}</td></tr>
<tr><th>@lang('tms::lang.country_of_origin')</th><td>{{ $clearance->country_of_origin ?? '—' }}</td></tr>
<tr><th>@lang('tms::lang.customs_value')</th><td>{{ @num_format($clearance->customs_value) }}</td></tr>
<tr><th>@lang('tms::lang.duty_amount')</th><td>{{ @num_format($clearance->duty_amount) }}</td></tr>
<tr><th>@lang('tms::lang.vat_amount')</th><td>{{ @num_format($clearance->vat_amount) }}</td></tr>
<tr><th>@lang('tms::lang.other_charges')</th><td>{{ @num_format($clearance->other_charges) }}</td></tr>
<tr><th><strong>@lang('tms::lang.total_duties')</strong></th><td><strong>{{ @num_format($clearance->total_duties) }}</strong></td></tr>
@if($clearance->accounting_journal_mapping_id)
<tr><th>@lang('tms::lang.accounting_journal')</th><td><span class="label label-success">@lang('tms::lang.journal_posted') #{{ $clearance->accounting_journal_mapping_id }}</span></td></tr>
@endif
<tr><th>@lang('tms::lang.notes')</th><td>{{ $clearance->notes ?? '—' }}</td></tr>
</table>
<h4>@lang('tms::lang.customs_items')</h4>
<table class="table table-bordered table-condensed">
<thead><tr>
<th>@lang('tms::lang.description')</th><th>@lang('tms::lang.hs_code')</th>
<th>@lang('tms::lang.quantity')</th><th>@lang('tms::lang.customs_value')</th>
<th>@lang('tms::lang.duty_amount')</th><th>@lang('tms::lang.vat_amount')</th>
</tr></thead>
<tbody>
@forelse($clearance->items as $item)
<tr>
<td>{{ $item->description }}</td>
<td>{{ $item->hs_code ?? '—' }}</td>
<td>{{ @num_format($item->quantity) }} {{ $item->unit }}</td>
<td>{{ @num_format($item->customs_value) }}</td>
<td>{{ @num_format($item->duty_amount) }}</td>
<td>{{ @num_format($item->vat_amount) }}</td>
</tr>
@empty
<tr><td colspan="6" class="text-center text-muted"></td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div class="mt-card">
<div class="mt-card-header"><h3 class="mt-card-title">@lang('tms::lang.documents')</h3></div>
<div class="mt-card-body">
@can('tms.customs.update')
{!! Form::open(['url'=>action([\Modules\Tms\Http\Controllers\CustomsClearanceController::class,'uploadDocument'],[$clearance->id]),'method'=>'post','files'=>true,'id'=>'customs_doc_form']) !!}
<div class="row">
<div class="col-md-4">
{!! Form::select('document_type', $document_types, null, ['class'=>'form-control','required']) !!}
</div>
<div class="col-md-4">
{!! Form::text('title', null, ['class'=>'form-control','placeholder'=>__('tms::lang.title')]) !!}
</div>
<div class="col-md-4">
<div class="input-group">
{!! Form::file('document', ['class'=>'form-control','required']) !!}
<span class="input-group-btn"><button type="submit" class="btn btn-primary">@lang('tms::lang.upload')</button></span>
</div>
</div>
</div>
{!! Form::close() !!}
<hr>
@endcan
<ul class="list-group">
@forelse($clearance->documents as $doc)
<li class="list-group-item">
<i class="fa fa-file"></i>
<strong>{{ $document_types[$doc->document_type] ?? $doc->document_type }}</strong>
@if($doc->title) {{ $doc->title }} @endif
<a href="{{ url('uploads/'.$doc->file_path) }}" target="_blank" class="btn btn-xs btn-default pull-left"><i class="fa fa-download"></i></a>
@can('tms.customs.update')
<button type="button" class="btn btn-xs btn-danger pull-left delete-customs-doc" data-href="{{ action([\Modules\Tms\Http\Controllers\CustomsClearanceController::class,'deleteDocument'],[$clearance->id,$doc->id]) }}" style="margin-left:5px;"><i class="fa fa-trash"></i></button>
@endcan
</li>
@empty
<li class="list-group-item text-muted">@lang('tms::lang.no_documents')</li>
@endforelse
</ul>
</div>
</div>
</div>
<div class="col-md-4">
@if($clearance->shipment_id && $clearance->shipment)
<div class="mt-card">
<div class="mt-card-header"><h3 class="mt-card-title">@lang('tms::lang.linked_shipment')</h3>
<span class="label label-info">{{ $shipment_statuses[$clearance->shipment->status] ?? $clearance->shipment->status }}</span>
</div>
<div class="mt-card-body">
<p><strong>{{ $clearance->shipment->ref_no }}</strong></p>
<p class="text-muted small">{{ $shipment_types[$clearance->shipment->shipment_type] ?? $clearance->shipment->shipment_type }}</p>
<a href="{{ action([\Modules\Tms\Http\Controllers\ShipmentController::class,'show'],[$clearance->shipment_id]) }}" class="btn btn-info btn-block btn-sm">
<i class="fa fa-truck"></i> @lang('tms::lang.view_shipment')
</a>
</div>
</div>
@endif
@can('tms.customs.update')
<div class="mt-card">
<div class="mt-card-header"><h3 class="mt-card-title">@lang('tms::lang.update_status')</h3></div>
<div class="mt-card-body">
{!! Form::open(['url'=>action([\Modules\Tms\Http\Controllers\CustomsClearanceController::class,'updateStatus'],[$clearance->id]),'method'=>'post','id'=>'customs_status_form']) !!}
<div class="form-group">
{!! Form::select('status', $statuses, $clearance->status, ['class'=>'form-control','required']) !!}
</div>
<div class="form-group">
{!! Form::textarea('note', null, ['class'=>'form-control','rows'=>2,'placeholder'=>__('tms::lang.notes')]) !!}
</div>
<button type="submit" class="btn btn-primary btn-block">@lang('tms::lang.update_status')</button>
{!! Form::close() !!}
</div>
</div>
@endcan
<div class="mt-card">
<div class="mt-card-header"><h3 class="mt-card-title">@lang('tms::lang.status_log')</h3></div>
<div class="mt-card-body">
<ul class="tms-timeline">
@foreach($clearance->statusLogs as $log)
<li>
<strong>{{ $statuses[$log->status] ?? $log->status }}</strong>
<div class="text-muted small">{{ $log->logged_at?->format('Y-m-d H:i') }}</div>
@if($log->note)<div>{{ $log->note }}</div>@endif
</li>
@endforeach
</ul>
</div>
</div>
</div>
</div>
</section>
@endsection
@section('javascript')
<script>
$('#customs_status_form').on('submit', function(e){
e.preventDefault();
$.post($(this).attr('action'), $(this).serialize(), function(r){
if(r.success){ toastr.success(r.msg); location.reload(); } else { toastr.error(r.msg); }
}, 'json');
});
$('#customs_doc_form').on('submit', function(e){
e.preventDefault();
var f = this;
var fd = new FormData(f);
$.ajax({url:$(f).attr('action'), method:'POST', data:fd, processData:false, contentType:false, success:function(r){
if(r.success){ toastr.success(r.msg); location.reload(); } else { toastr.error(r.msg); }
}});
});
$(document).on('click', '.delete-customs-doc', function(){
var url = $(this).data('href');
swal({title:LANG.sure,icon:'warning',buttons:true,dangerMode:true}).then(function(ok){
if(!ok) return;
$.ajax({method:'DELETE', url:url, data:{_token:'{{ csrf_token() }}'}, dataType:'json', success:function(r){
if(r.success){ toastr.success(r.msg); location.reload(); }
}});
});
});
</script>
@endsection