Optimise charge table, implemented charge recording, optimised payment recording

This commit is contained in:
Deon George
2021-10-01 14:59:04 +10:00
parent c0ad46ba65
commit 7c5369203c
17 changed files with 731 additions and 48 deletions

View File

@@ -30,6 +30,7 @@
@csrf
<div class="row">
<!-- DATE RECEIVED -->
<div class="col-4">
<div class="form-group has-validation">
<label for="payment_date">Date Received</label>
@@ -50,6 +51,7 @@
</div>
</div>
<!-- AMOUNT -->
<div class="offset-4 col-4">
<div class="form-group has-validation">
<label for="total_amt">Amount</label>
@@ -72,6 +74,7 @@
</div>
<div class="row">
<!-- METHOD -->
<div class="col-4">
<div class="form-group has-validation">
<label for="checkout_id">Payment Method</label>
@@ -97,6 +100,7 @@
</div>
</div>
<!-- PAYMENT FEE -->
<div class="offset-4 col-4">
<div class="form-group has-validation">
<label for="fees_amt">Fee</label>
@@ -119,6 +123,7 @@
</div>
<div class="row">
<!-- ACCOUNT -->
<div class="col-6">
<div class="form-group has-validation">
<label for="account_id">Account</label>
@@ -129,7 +134,7 @@
<!-- @todo Only show active accounts or accounts with outstanding invoices -->
<select class="form-control @error('account_id') is-invalid @enderror" id="account_id" name="account_id" required>
<option value=""></option>
@foreach (\App\Models\Account::active()->with(['user'])->get() as $ao)
@foreach (\App\Models\Account::active()->with(['user'])->get()->sortBy('name') as $ao)
<option value="{{ $ao->id }}" {{ $ao->id == old('account_id',$o->exists ? $o->account_id : NULL) ? 'selected' : '' }}>{{ $ao->name }}</option>
@endforeach
</select>
@@ -147,13 +152,14 @@
</div>
</div>
<!-- BALANCE -->
<div class="offset-2 col-4">
<label for="fees_amt">Balance</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-fw fa-dollar-sign"></i></span>
</div>
<input type="text" class="text-right form-control @error('fees_amt') is-invalid @enderror" value="{{ number_format($o->exists ? $o->balance : 0,2) }}" disabled>
<input type="text" class="text-right form-control @error('fees_amt') is-invalid @enderror" id="balance" value="{{ number_format($o->exists ? $o->balance : 0,2) }}" disabled>
</div>
</div>
</div>
@@ -185,14 +191,10 @@
@endsection
@section('page-scripts')
@css('//cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css','s2-css')
@js('//cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js','s2-js','jquery')
<style>
.select2-selection.select2-selection--single {
height: calc(2.25rem + 2px) !important;
}
</style>
@css('//cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css','select-css')
@js('//cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js','select-js')
@js('/select2/fix-autofocus.js','select-fix-js','select-js')
@css('/select2/fix-select-height.css','select-fix-css','select-css')
<script type="text/javascript">
function populate(account,spinner) {
@@ -203,7 +205,7 @@
dataType: 'html',
cache: false,
url: '{{ url('api/r/invoices') }}'+'/'+account,
data: {pid:{{ $o->id }}},
data: {pid:{{ $o->id ?: 'null' }}},
timeout: 2000,
error: function(x) {
spinner.toggleClass('d-none').toggleClass('fa-spin');
@@ -216,6 +218,16 @@
});
}
function balance() {
var alloc = 0;
$('.invoice').each(function() {
alloc += $(this).val();
})
$('#balance').val(($('#total_amt').val()-alloc).toFixed(2))
}
$(document).ready(function() {
if ($('#account_id').val()) {
var spinner = $('#account_id').parent().parent().find('i.fas.fa-spinner');
@@ -236,6 +248,10 @@
populate($(this).val(),spinner);
});
$('#total_amt').on('change',balance);
});
$(document).on('change','.invoice',balance);
</script>
@append

View File

@@ -61,11 +61,6 @@
$(document).ready(function() {
$('#unapplied_payments').DataTable( {
order: [1,'desc'],
orderFixed: [1,'desc']
});
$('#unapplied_payments tbody').on('click','tr', function () {
$(this).toggleClass('selected');
});
});
</script>

View File

@@ -27,7 +27,7 @@
<td>{{ number_format($io->total,2) }}</td>
<td>{{ number_format($io->due,2) }}</td>
<td class="text-right">
<input type="text" class="text-right" name="invoices[{{ $io->id }}]" value="{{ number_format(($x=$io->paymentitems->filter(function($item) use ($pid) { return $item->payment_id == $pid; })) ? $x->sum('alloc_amt') : 0,2) }}">
<input type="text" class="text-right invoice" name="invoices[{{ $io->id }}]" value="{{ number_format(($x=$io->paymentitems->filter(function($item) use ($pid) { return $item->payment_id == $pid; })) ? $x->sum('alloc_amt') : 0,2) }}">
</td>
</tr>
@endforeach