2019-07-23 05:31:53 +02:00
|
|
|
@extends('portal.default.layouts.master')
|
|
|
|
@section('header')
|
|
|
|
@parent
|
2019-08-05 01:42:20 +02:00
|
|
|
<link href="//cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css" rel="stylesheet" type="text/css"/>
|
|
|
|
<link href="/vendors/css/select2.min.css" rel="stylesheet">
|
2019-07-23 05:31:53 +02:00
|
|
|
@stop
|
|
|
|
@section('body')
|
|
|
|
<main class="main">
|
|
|
|
<div class="container-fluid">
|
|
|
|
|
2019-07-27 07:46:51 +02:00
|
|
|
<div class="row" style="padding-top: 30px;">
|
2019-07-23 05:31:53 +02:00
|
|
|
|
2019-07-29 05:59:28 +02:00
|
|
|
<div class="col-lg-12" style="padding-bottom: 10px;">
|
2019-07-27 07:46:51 +02:00
|
|
|
|
2019-07-29 05:59:28 +02:00
|
|
|
<div class="pull-left">
|
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
{!! Former::dark_button(ctrans('texts.download'))->addClass('download_invoices') !!}
|
|
|
|
{!! Former::success_button(ctrans('texts.pay_now'))->addClass('pay_invoices') !!}
|
|
|
|
|
2019-08-05 07:29:50 +02:00
|
|
|
<select class="form-control" style="width: 220px;" id="statuses" name="client_status[]" multiple="multiple">
|
2019-08-05 04:02:32 +02:00
|
|
|
<option value="paid">{{ ctrans('texts.status_paid') }}</option>
|
|
|
|
<option value="unpaid">{{ ctrans('texts.status_unpaid') }}</option>
|
2019-08-12 04:55:55 +02:00
|
|
|
</select>
|
2019-08-05 04:02:32 +02:00
|
|
|
|
2019-07-29 05:59:28 +02:00
|
|
|
</div>
|
|
|
|
|
2019-07-27 07:46:51 +02:00
|
|
|
<!-- Filters / Buttons in here.-->
|
|
|
|
<div id="top_right_buttons" class="pull-right">
|
2019-07-29 05:59:28 +02:00
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
<input id="table_filter" type="text" style="width:180px;background-color: white !important"
|
2019-08-04 21:59:28 +02:00
|
|
|
class="form-control pull-left" placeholder="{{ trans('texts.filter')}}" value=""/>
|
2019-07-27 07:46:51 +02:00
|
|
|
</div>
|
|
|
|
|
2019-07-25 06:51:00 +02:00
|
|
|
<div class="animated fadeIn">
|
|
|
|
<div class="col-md-12 card">
|
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
{!! $html->table(['class' => 'table table-hover table-striped', 'id' => 'datatable'], true) !!}
|
2019-07-25 06:51:00 +02:00
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-07-23 05:31:53 +02:00
|
|
|
</div>
|
2019-07-29 05:59:28 +02:00
|
|
|
|
2019-07-23 05:31:53 +02:00
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</main>
|
|
|
|
</body>
|
|
|
|
@endsection
|
2019-07-26 00:05:13 +02:00
|
|
|
@push('scripts')
|
|
|
|
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js" type="text/javascript"></script>
|
|
|
|
<script src="//cdn.datatables.net/1.10.18/js/dataTables.bootstrap4.min.js"></script>
|
2019-08-05 01:42:20 +02:00
|
|
|
<script src="/vendors/js/select2.min.js"></script>
|
2019-07-26 00:05:13 +02:00
|
|
|
@endpush
|
|
|
|
@section('footer')
|
2019-07-27 07:46:51 +02:00
|
|
|
<script>
|
2019-07-30 00:28:38 +02:00
|
|
|
|
2019-07-30 13:08:39 +02:00
|
|
|
/*global json payload*/
|
2019-07-30 00:28:38 +02:00
|
|
|
var data;
|
|
|
|
|
2019-07-30 13:08:39 +02:00
|
|
|
/*status filter variable - comma separated*/
|
|
|
|
var client_statuses;
|
|
|
|
|
2019-08-04 21:59:28 +02:00
|
|
|
var table_filter;
|
|
|
|
|
|
|
|
var data_table;
|
|
|
|
|
2019-07-27 07:46:51 +02:00
|
|
|
$(function() {
|
2019-07-30 00:28:38 +02:00
|
|
|
|
2019-08-04 21:59:28 +02:00
|
|
|
data_table = $('#datatable').DataTable({
|
2019-07-27 07:46:51 +02:00
|
|
|
processing: true,
|
|
|
|
serverSide: true,
|
|
|
|
searching: false,
|
|
|
|
bLengthChange: false,
|
|
|
|
language: {
|
|
|
|
processing: " {{ trans('texts.processing_request') }}",
|
|
|
|
search: "{{ trans('texts.search') }}:",
|
|
|
|
// info: "{{ trans('texts.info') }}",
|
|
|
|
infoPostFix: "",
|
|
|
|
loadingRecords: "{{ trans('texts.loading') }}",
|
|
|
|
zeroRecords: "{{ trans('texts.no_records_found') }}"
|
|
|
|
},
|
2019-07-30 13:08:39 +02:00
|
|
|
ajax: {
|
|
|
|
url: '{!! route('client.invoices.index') !!}',
|
|
|
|
data: function(data) {
|
2019-07-30 13:21:17 +02:00
|
|
|
data.client_status = client_statuses;
|
2019-08-05 01:31:55 +02:00
|
|
|
data.filter = table_filter;
|
|
|
|
// data.search.value = table_filter;
|
2019-07-30 13:08:39 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
},
|
2019-07-30 00:28:38 +02:00
|
|
|
drawCallback: function(settings){
|
|
|
|
|
|
|
|
data = this.api().ajax.json().data;
|
|
|
|
|
|
|
|
},
|
2019-07-27 07:46:51 +02:00
|
|
|
columns: [
|
|
|
|
|
2019-07-29 05:59:28 +02:00
|
|
|
{data: 'checkbox', name: 'checkbox', title: '<input type="checkbox" class="select_all">', searchable: false, orderable: false},
|
2019-07-27 07:46:51 +02:00
|
|
|
{data: 'invoice_number', name: 'invoice_number', title: '{{trans('texts.invoice_number')}}', visible: true},
|
|
|
|
{data: 'invoice_date', name: 'invoice_date', title: '{{trans('texts.invoice_date')}}', visible: true},
|
|
|
|
{data: 'amount', name: 'amount', title: '{{trans('texts.total')}}', visible: true},
|
|
|
|
{data: 'balance', name: 'balance', title: '{{trans('texts.balance')}}', visible: true},
|
|
|
|
{data: 'due_date', name: 'due_date', title: '{{trans('texts.due_date')}}', visible: true},
|
|
|
|
{data: 'status_id', name: 'status_id', title: '{{trans('texts.status')}}', visible: true},
|
|
|
|
{data: 'action', name: 'action', title: '', searchable: false, orderable: false},
|
|
|
|
]
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
</script>
|
2019-07-29 05:59:28 +02:00
|
|
|
|
|
|
|
<script>
|
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
$(document).ready(function() {
|
2019-07-29 05:59:28 +02:00
|
|
|
|
2019-08-04 21:59:28 +02:00
|
|
|
var searchTimeout = false;
|
|
|
|
|
2019-07-30 08:10:31 +02:00
|
|
|
$('.pay_invoices').attr("disabled", true);
|
|
|
|
$('.download_invoices').attr("disabled", true);
|
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
$("#datatable").on('change', 'input[type=checkbox]', function() {
|
|
|
|
var selected = [];
|
|
|
|
$.each($("input[name='hashed_ids[]']:checked"), function(){
|
|
|
|
selected.push($(this).val());
|
|
|
|
});
|
2019-07-30 08:10:31 +02:00
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
});
|
2019-07-29 05:59:28 +02:00
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
$('#table_filter').on('keyup', function(){
|
2019-08-04 21:59:28 +02:00
|
|
|
if (searchTimeout) {
|
|
|
|
window.clearTimeout(searchTimeout);
|
|
|
|
}
|
|
|
|
searchTimeout = setTimeout(function() {
|
|
|
|
filterTable();
|
|
|
|
}, 500);
|
2019-07-30 00:28:38 +02:00
|
|
|
});
|
2019-07-29 05:59:28 +02:00
|
|
|
|
|
|
|
$('.select_all').change(function() {
|
|
|
|
$(this).closest('table').find(':checkbox:not(:disabled)').prop('checked', this.checked);
|
|
|
|
});
|
|
|
|
|
2019-07-30 00:28:38 +02:00
|
|
|
$('.pay_invoices').click(function() {
|
|
|
|
alert('pay');
|
|
|
|
});
|
|
|
|
|
|
|
|
$('.download_invoices').click(function() {
|
|
|
|
alert('download');
|
|
|
|
});
|
|
|
|
|
2019-07-29 05:59:28 +02:00
|
|
|
});
|
2019-07-30 00:28:38 +02:00
|
|
|
|
2019-08-04 21:59:28 +02:00
|
|
|
function filterTable() {
|
|
|
|
|
|
|
|
table_filter = $('#table_filter').val();
|
|
|
|
data_table.ajax.reload();
|
|
|
|
}
|
2019-08-05 04:02:32 +02:00
|
|
|
|
|
|
|
// Setup status filter
|
|
|
|
$('#statuses').select2({
|
|
|
|
placeholder: "{{ ctrans('texts.status') }}",
|
|
|
|
//allowClear: true,
|
|
|
|
templateSelection: function(data, container) {
|
|
|
|
if (data.id == 'paid') {
|
|
|
|
$(container).css('color', '#fff');
|
|
|
|
$(container).css('background-color', '#f0ad4e');
|
|
|
|
$(container).css('border-color', '#eea236');
|
|
|
|
} else if (data.id == 'unpaid') {
|
|
|
|
$(container).css('color', '#fff');
|
|
|
|
$(container).css('background-color', '#d9534f');
|
|
|
|
$(container).css('border-color', '#d43f3a');
|
|
|
|
}
|
|
|
|
return data.text;
|
|
|
|
}
|
2019-08-05 04:58:12 +02:00
|
|
|
}).on('change', function() {
|
|
|
|
|
|
|
|
client_statuses = $('#statuses').val();
|
|
|
|
|
|
|
|
if (client_statuses) {
|
|
|
|
client_statuses = client_statuses.join(',');
|
|
|
|
} else {
|
|
|
|
client_statuses = '';
|
|
|
|
}
|
|
|
|
|
|
|
|
data_table.ajax.reload();
|
|
|
|
|
2019-08-05 04:02:32 +02:00
|
|
|
});
|
|
|
|
|
2019-07-27 07:46:51 +02:00
|
|
|
</script>
|
|
|
|
@endsection
|
|
|
|
|