185 lines
11 KiB
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
|