瀏覽代碼

Billing manager - filters

Vijayakrishnan 4 年之前
父節點
當前提交
ad31373267

+ 42 - 3
app/Http/Controllers/PracticeManagementController.php

@@ -504,11 +504,50 @@ class PracticeManagementController extends Controller
         $notes = [];
         if ($targetPro) {
             $expectedForHcp = DB::select(DB::raw("SELECT coalesce(SUM(hcp_expected_payment_amount),0) as expected_pay FROM bill WHERE hcp_pro_id = :targetProID  AND is_signed_by_hcp IS TRUE AND is_cancelled = false"), ['targetProID' => $targetPro->id])[0]->expected_pay;
-            $notes = Note::where('hcp_pro_id', $targetPro->id)->orderBy('effective_dateest', 'desc')->paginate();
+            $notes = Note::where('hcp_pro_id', $targetPro->id);
         } else {
-            $notes = Note::orderBy('effective_dateest', 'desc')->paginate();
+            $notes = Note::where('id', '>', 0);
         }
-        return view('app.practice-management.billing-manager', compact('notes', 'allPros', 'expectedForHcp', 'targetPro', 'proUid'));
+
+        $filters = [];
+        $filters['bills_created'] = $request->input('bills_created');
+        $filters['bills_ready_to_verify'] = $request->input('bills_ready_to_verify');
+        $filters['bills_resolved'] = $request->input('bills_resolved');
+        $filters['bills_closed'] = $request->input('bills_closed');
+        $filters['claims_created'] = $request->input('claims_created');
+        $filters['claims_closed'] = $request->input('claims_closed');
+
+        if($filters['bills_created']) {
+            $notes->where(
+                'bill_total_expected',
+                ($filters['bills_created'] === 'yes' ? '>' : '<='),
+                0);
+        }
+
+        if($filters['bills_closed']) {
+            $notes->where(
+                'is_bill_closed',
+                ($filters['bills_closed'] === 'yes' ? '=' : '!='),
+                true);
+        }
+
+        if($filters['claims_created']) {
+            $notes->where(
+                'claim_total_expected',
+                ($filters['claims_created'] === 'yes' ? '>' : '<='),
+                0);
+        }
+
+        if($filters['claims_closed']) {
+            $notes->where(
+                'is_claim_closed',
+                ($filters['claims_closed'] === 'yes' ? '=' : '!='),
+                true);
+        }
+
+        $notes = $notes->orderBy('effective_dateest', 'desc')->paginate();
+
+        return view('app.practice-management.billing-manager', compact('notes', 'allPros', 'expectedForHcp', 'targetPro', 'proUid', 'filters'));
     }
 
     public function billMatrix(Request $request) {

+ 88 - 1
resources/views/app/practice-management/billing-manager.blade.php

@@ -2,7 +2,7 @@
 
 @section('content')
 
-    <div class="p-3 mcp-theme-1">
+    <div class="p-3 mcp-theme-1" id="practice-billing-manager">
 
         <div class="card">
 
@@ -19,6 +19,63 @@
                     @endforeach
                 </select>
             </div>
+            <div class="bg-aliceblue border-bottom px-3 py-2 d-flex align-items-center">
+                <div class="d-inline-flex align-items-center">
+                    <span>Bills Created</span>
+                    <select class="form-control form-control-sm min-width-unset width-70px ml-2 {{ !!$filters['bills_created'] ? 'border-info font-weight-bold text-info' : 'text-secondary on-hover-opaque' }}"
+                            data-filter="bills_created">
+                        <option value="">All</option>
+                        <option value="yes" {{$filters['bills_created'] === 'yes' ? 'selected' : ''}}>Yes</option>
+                        <option value="no" {{$filters['bills_created'] === 'no' ? 'selected' : ''}}>No</option>
+                    </select>
+                </div>
+                <div class="d-inline-flex align-items-center ml-3">
+                    <span>Bills Ready to Verify</span>
+                    <select class="form-control form-control-sm min-width-unset width-70px ml-2 {{ !!$filters['bills_ready_to_verify'] ? 'border-info font-weight-bold text-info' : 'text-secondary on-hover-opaque' }}"
+                            data-filter="bills_ready_to_verify">
+                        <option value="">All</option>
+                        <option value="yes" {{$filters['bills_ready_to_verify'] === 'yes' ? 'selected' : ''}}>Yes</option>
+                        <option value="no" {{$filters['bills_ready_to_verify'] === 'no' ? 'selected' : ''}}>No</option>
+                    </select>
+                </div>
+                <div class="d-inline-flex align-items-center ml-3">
+                    <span>Bills Resolved</span>
+                    <select class="form-control form-control-sm min-width-unset width-70px ml-2 {{ !!$filters['bills_resolved'] ? 'border-info font-weight-bold text-info' : 'text-secondary on-hover-opaque' }}"
+                            data-filter="bills_resolved">
+                        <option value="">All</option>
+                        <option value="yes" {{$filters['bills_resolved'] === 'yes' ? 'selected' : ''}}>Yes</option>
+                        <option value="no" {{$filters['bills_resolved'] === 'no' ? 'selected' : ''}}>No</option>
+                    </select>
+                </div>
+                <div class="d-inline-flex align-items-center ml-3">
+                    <span>Bills Closed</span>
+                    <select class="form-control form-control-sm min-width-unset width-70px ml-2 {{ !!$filters['bills_closed'] ? 'border-info font-weight-bold text-info' : 'text-secondary on-hover-opaque' }}"
+                            data-filter="bills_closed">
+                        <option value="">All</option>
+                        <option value="yes" {{$filters['bills_closed'] === 'yes' ? 'selected' : ''}}>Yes</option>
+                        <option value="no" {{$filters['bills_closed'] === 'no' ? 'selected' : ''}}>No</option>
+                    </select>
+                </div>
+                <div class="d-inline-flex align-items-center ml-3">
+                    <span>Claims Created</span>
+                    <select class="form-control form-control-sm min-width-unset width-70px ml-2 {{ !!$filters['claims_created'] ? 'border-info font-weight-bold text-info' : 'text-secondary on-hover-opaque' }}"
+                            data-filter="claims_created">
+                        <option value="">All</option>
+                        <option value="yes" {{$filters['claims_created'] === 'yes' ? 'selected' : ''}}>Yes</option>
+                        <option value="no" {{$filters['claims_created'] === 'no' ? 'selected' : ''}}>No</option>
+                    </select>
+                </div>
+                <div class="d-inline-flex align-items-center ml-3">
+                    <span>Claims Closed</span>
+                    <select class="form-control form-control-sm min-width-unset width-70px ml-2 {{ !!$filters['claims_closed'] ? 'border-info font-weight-bold text-info' : 'text-secondary on-hover-opaque' }}"
+                            data-filter="claims_closed">
+                        <option value="">All</option>
+                        <option value="yes" {{$filters['claims_closed'] === 'yes' ? 'selected' : ''}}>Yes</option>
+                        <option value="no" {{$filters['claims_closed'] === 'no' ? 'selected' : ''}}>No</option>
+                    </select>
+                </div>
+                <a href="/practice-management/billing-manager" class="ml-auto">Clear Filters</a>
+            </div>
             <div class="card-body p-0">
                 <table class="table table-sm table-condensed p-0 m-0">
                     <thead class="bg-light">
@@ -159,4 +216,34 @@
         </div>
     </div>
 
+    <script>
+        (function() {
+
+            function applyFilters() {
+                let params = {}, queryLine = [];
+                $('[data-filter]').each(function() {
+                    if($.trim($(this).val())) {
+                        params[$(this).attr('data-filter')] = $.trim($(this).val());
+                    }
+                });
+                for(let x in params) {
+                    if(params.hasOwnProperty(x)) {
+                        queryLine.push(x + '=' + encodeURIComponent(params[x]));
+                    }
+                }
+                queryLine = queryLine.join('&');
+
+                fastLoad('/practice-management/billing-manager?' + queryLine);
+            }
+
+            function init() {
+                $('select[data-filter]')
+                    .off('change')
+                    .on('change', applyFilters);
+            }
+
+            addMCInitializer('practice-billing-manager', init, '#practice-billing-manager')
+
+        }).call(window);
+    </script>
 @endsection