From c97835edd10d2e64282ad28af00e8892a575f558 Mon Sep 17 00:00:00 2001 From: Deon George Date: Tue, 21 Jul 2020 17:41:24 +1000 Subject: [PATCH] Payment summary improvements, removed invoice/payment API calls --- .../Controllers/UserServicesController.php | 10 ---- app/Models/Invoice.php | 25 -------- app/Models/Payment.php | 23 -------- app/User.php | 26 ++++++++ .../common/invoice/widget/history.blade.php | 59 ------------------- .../common/payment/widget/history.blade.php | 59 ------------------- .../theme/backend/adminlte/r/home.blade.php | 36 ++++++++++- .../theme/backend/adminlte/u/home.blade.php | 20 ++++++- .../adminlte/widgets/payment.blade.php | 53 +++++++++++++++++ routes/api.php | 6 -- 10 files changed, 132 insertions(+), 185 deletions(-) delete mode 100644 resources/views/theme/backend/adminlte/common/invoice/widget/history.blade.php delete mode 100644 resources/views/theme/backend/adminlte/common/payment/widget/history.blade.php create mode 100644 resources/views/theme/backend/adminlte/widgets/payment.blade.php diff --git a/app/Http/Controllers/UserServicesController.php b/app/Http/Controllers/UserServicesController.php index 870fc52..c422096 100644 --- a/app/Http/Controllers/UserServicesController.php +++ b/app/Http/Controllers/UserServicesController.php @@ -7,16 +7,6 @@ use App\User; class UserServicesController extends Controller { - public function invoices(User $o) - { - return ['data'=>$o->invoices_due->values()]; - } - - public function payments(User $o) - { - return ['data'=>$o->payment_history->values()]; - } - public function services(User $o) { return ['data'=>$o->services_active->values()]; diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index bc6e4b0..5277ec4 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -27,21 +27,6 @@ class Invoice extends Model // Array of items that can be updated with PushNew protected $pushable = ['items']; - protected $appends = [ - 'date_due', - 'due', - 'invoice_id_url', - 'total', - ]; - - protected $visible = [ - 'date_due', - 'due', - 'id', - 'invoice_id_url', - 'total', - ]; - protected $with = [ 'account.country.currency', 'items.taxes', @@ -97,21 +82,11 @@ class Invoice extends Model return $this->date_orig->format('Y-m-d'); } - public function getInvoiceIdAttribute() - { - return sprintf('%06s',$this->id); - } - public function getInvoiceAccountIdAttribute() { return sprintf('%02s-%04s-%06s',$this->site_id,$this->account_id,$this->invoice_id); } - public function getInvoiceIdUrlAttribute() - { - return sprintf('%s',$this->id,$this->invoice_account_id); - } - public function getInvoiceTextAttribute() { return sprintf('Thank you for using %s for your Internet Services.',config('SITE_SETUP')->site_name); diff --git a/app/Models/Payment.php b/app/Models/Payment.php index d3e5ec5..108070f 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -20,19 +20,6 @@ class Payment extends Model protected $dateFormat = 'U'; protected $with = ['account.country.currency','items']; - protected $appends = [ - 'date_paid', - 'payment_id_url', - 'total', - ]; - - protected $visible = [ - 'date_paid', - 'id', - 'payment_id_url', - 'total', - ]; - public function account() { return $this->belongsTo(Account::class); @@ -48,16 +35,6 @@ class Payment extends Model return $this->date_payment->format('Y-m-d'); } - public function getPaymentIdAttribute() - { - return sprintf('%02s-%04s+%05s',$this->site_id,$this->account_id,$this->id); - } - - public function getPaymentIdUrlAttribute() - { - return sprintf('%s',$this->id,$this->payment_id); - } - public function getTotalAttribute() { return sprintf('%3.'.$this->currency()->rounding.'f',$this->total_amt); diff --git a/app/User.php b/app/User.php index caa80bf..90c6efb 100644 --- a/app/User.php +++ b/app/User.php @@ -614,6 +614,32 @@ class User extends Authenticatable ->from($summary,'summary'); } + public function query_payment_summary() + { + $payment = (new Payment) + ->select([ + 'payment_id', + DB::raw('SUM(allocate) AS allocate'), + + ]) + ->from($this->query_payment_items(),'PI') + //->where('ab_payment.active',TRUE) // @todo To implement + ->groupBy(['payment_id']); + + return (new Payment) + ->select([ + DB::raw('payment_id AS id'), + 'date_orig', + 'date_payment', + 'total_amt', + //'fees_amt', + DB::raw('total_amt-allocate AS balance'), + ]) + ->join('ab_payment',['ab_payment.id'=>'payment_id']) + ->whereIN('account_id',$this->all_accounts()->pluck('id')->unique()->toArray()) + ->from($payment,'summary'); + } + public function role() { // If I have agents and no parent, I am the wholesaler diff --git a/resources/views/theme/backend/adminlte/common/invoice/widget/history.blade.php b/resources/views/theme/backend/adminlte/common/invoice/widget/history.blade.php deleted file mode 100644 index 7e26cca..0000000 --- a/resources/views/theme/backend/adminlte/common/invoice/widget/history.blade.php +++ /dev/null @@ -1,59 +0,0 @@ -
-
-

Invoice History

- -
- - -
-
- -
- @if ($o->invoices->count()) - - - - - - - - - - - @foreach ($o->invoices as $io) - - - - - - @endforeach - - -
IDDateAmount
{{ $io->id }}{{ $io->due_date ? $io->due_date->format('Y-m-d') : ' ' }}{{ number_format($io->total,2) }}
- @else -

No payments recorded

- @endif -
-
- -@section('page-scripts') - @css('//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css','jq-dt-css','jquery') - @js('//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js','jq-dt-js','jquery') - @css('//cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css','dt-responsive-css','jq-dt-css') - @js('//cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js','dt-responsive-js','jq-dt-js') - @css('/plugin/dataTables/dataTables.bootstrap4.css','dt-bootstrap4-css','jq-dt-css') - @js('/plugin/dataTables/dataTables.bootstrap4.js','dt-bootstrap4-js','jq-dt-js') - - -@append \ No newline at end of file diff --git a/resources/views/theme/backend/adminlte/common/payment/widget/history.blade.php b/resources/views/theme/backend/adminlte/common/payment/widget/history.blade.php deleted file mode 100644 index 37c601a..0000000 --- a/resources/views/theme/backend/adminlte/common/payment/widget/history.blade.php +++ /dev/null @@ -1,59 +0,0 @@ -
-
-

Payment History

- -
- - -
-
- -
- @if ($o->payment_history->count()) - - - - - - - - -
IDDateAmount
- @else -

No payments recorded

- @endif -
-
- -@section('page-scripts') - @css('//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css','jq-dt-css','jquery') - @js('//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js','jq-dt-js','jquery') - @css('//cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css','dt-responsive-css','jq-dt-css') - @js('//cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js','dt-responsive-js','jq-dt-js') - @css('/plugin/dataTables/dataTables.bootstrap4.css','dt-bootstrap4-css','jq-dt-css') - @js('/plugin/dataTables/dataTables.bootstrap4.js','dt-bootstrap4-js','jq-dt-js') - - -@append \ No newline at end of file diff --git a/resources/views/theme/backend/adminlte/r/home.blade.php b/resources/views/theme/backend/adminlte/r/home.blade.php index 7df1785..6dc9ddc 100644 --- a/resources/views/theme/backend/adminlte/r/home.blade.php +++ b/resources/views/theme/backend/adminlte/r/home.blade.php @@ -56,7 +56,41 @@ - @include('common.payment.widget.history') + +
+
+

Invoices - Last 12 Months

+ +
+ +
+
+ +
+ @include('widgets.invoice',[ + 'o'=>$o->query_invoice_summary()->whereIN('account_id',$o->accounts()->pluck('id')->toArray())->where('due_date','>',now()->subYear()->timestamp)->having('balance','=',0), + 'widget_invoice_name'=>'widget-invoice-last' + ]) +
+
+ + +
+
+

Payments - Last 12 Months

+ +
+ +
+
+ +
+ @include('widgets.payment',[ + 'o'=>$o->query_payment_summary()->whereIN('account_id',$o->accounts()->pluck('id')->toArray())->where('date_payment','>',now()->subYear()->timestamp)->with(['items']), + 'widget_payment_name'=>'widget-payment-last' + ]) +
+
diff --git a/resources/views/theme/backend/adminlte/u/home.blade.php b/resources/views/theme/backend/adminlte/u/home.blade.php index c0bdd8b..1098b2f 100644 --- a/resources/views/theme/backend/adminlte/u/home.blade.php +++ b/resources/views/theme/backend/adminlte/u/home.blade.php @@ -69,13 +69,29 @@
@include('widgets.invoice',[ - 'o'=>$o->query_invoice_summary()->whereIN('account_id',$o->accounts()->pluck('id')->toArray())->where('due_date','>',now()->subYear()->timestamp), + 'o'=>$o->query_invoice_summary()->whereIN('account_id',$o->accounts()->pluck('id')->toArray())->where('due_date','>',now()->subYear()->timestamp)->having('balance','=',0), 'widget_invoice_name'=>'widget-invoice-last' ])
- @include('common.payment.widget.history') + +
+
+

Payments - Last 12 Months

+ +
+ +
+
+ +
+ @include('widgets.payment',[ + 'o'=>$o->query_payment_summary()->where('date_payment','>',now()->subYear()->timestamp)->with(['items']), + 'widget_payment_name'=>'widget-payment-last' + ]) +
+
diff --git a/resources/views/theme/backend/adminlte/widgets/payment.blade.php b/resources/views/theme/backend/adminlte/widgets/payment.blade.php new file mode 100644 index 0000000..60729f2 --- /dev/null +++ b/resources/views/theme/backend/adminlte/widgets/payment.blade.php @@ -0,0 +1,53 @@ +@if(($x=$o->get())->count()) + + + + + + + {{----}} + + + + + + @foreach ($x as $oo) + + + + + {{----}} + + + @endforeach + +
#ReceivedTotalBalanceInvoice(s)
{{ $oo->id }}{{ $oo->date_orig->format('Y-m-d') }}${{ number_format($oo->total_amt,2) }}${{ number_format($oo->balance,2) }}{!! join(',',$oo->items + ->filter(function($item) { return $item->invoice_id; }) + ->transform(function($item) { return sprintf('%s',url('u/invoice',$item->invoice_id),$item->invoice_id); }) + ->toArray()) !!}
+ +@section('page-scripts') + @css('//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css','jq-dt-css','jquery') + @js('//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js','jq-dt-js','jquery') + @css('//cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css','jq-dt-r-css','jq-dt-css') + @js('//cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js','jq-dt-r-js','jq-dt-js') + @css('/plugin/dataTables/dataTables.bootstrap4.css','dt-bootstrap4-css','jq-dt-css') + @js('/plugin/dataTables/dataTables.bootstrap4.js','dt-bootstrap4-js','jq-dt-js') + + +@append + +@else + No data to display +@endif \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index 306b823..1e7a7af 100644 --- a/routes/api.php +++ b/routes/api.php @@ -27,12 +27,6 @@ Route::group(['middleware'=>['auth:api','role:reseller']], function() { }); Route::group(['middleware'=>'auth:api'], function() { - Route::get('/u/invoices/{o}','UserServicesController@invoices') - ->where('o','[0-9]+') - ->middleware('can:view,o');; - Route::get('/u/payments/{o}','UserServicesController@payments') - ->where('o','[0-9]+') - ->middleware('can:view,o');; Route::get('/u/services/{o}','UserServicesController@services') ->where('o','[0-9]+') ->middleware('can:view,o');;