Procházet zdrojové kódy

Supply orders and Shipments v2 UI (wip)

Vijayakrishnan před 4 roky
rodič
revize
7124db6c12

+ 14 - 0
app/Http/Controllers/PracticeManagementController.php

@@ -724,4 +724,18 @@ class PracticeManagementController extends Controller
         return view('app.practice-management.cellular-measurements', compact('measurements'));
     }
 
+    // v2 supply-orders & shipments management (wh)
+
+    public function supplyOrdersReadyToShip(Request $request)
+    {
+        $supplyOrders = SupplyOrder::orderBy('created_at', 'ASC')->paginate();
+        return view('app.practice-management.supply-orders-ready-to-ship', compact('supplyOrders'));
+    }
+
+    public function supplyOrdersShipmentUnderway(Request $request)
+    {
+        $supplyOrders = SupplyOrder::orderBy('created_at', 'ASC')->paginate();
+        return view('app.practice-management.supply-orders-shipment-underway', compact('supplyOrders'));
+    }
+
 }

+ 150 - 0
resources/views/app/practice-management/supply-orders-ready-to-ship.blade.php

@@ -0,0 +1,150 @@
+@extends ('layouts/template')
+
+@section('content')
+
+    <div id="practice-supply-orders" class="p-3 mcp-theme-1">
+        <div class="card">
+
+            <div class="card-header px-3 py-3 d-flex align-items-center bg-white">
+                <i class="fas fa-building mr-2"></i>
+                <strong class="font-size-14">
+                    Supply Orders - Ready to Ship
+                </strong>
+                <span class="mx-3 text-secondary">|</span>
+                <a href="{{route('practice-management.supply-orders-shipment-underway')}}">Shipment Underway</a>
+                <span class="mx-3 text-secondary">|</span>
+                <a href="{{route('practice-management.supply-orders')}}">All</a>
+                <a href="{{route('practice-management.supply-orders-ready-to-ship')}}" 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">
+                    <tr>
+                        <th class="border-0">Client</th>
+                        <th class="border-0">Product</th>
+                        <th class="border-0">Reason</th>
+                        <th class="border-0">Client Understanding Memo</th>
+                        <th class="border-0">Pro Sign</th>
+                        <th class="border-0">Client Sign</th>
+                        <th class="border-0">Shipment</th>
+                        <th class="border-0">Lot #</th>
+                        <th class="border-0">IMEI</th>
+                        <th class="border-0">Created At</th>
+                        <th class="border-0">Cancelled?</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    @foreach ($supplyOrders as $supplyOrder)
+                        <tr class="{{$supplyOrder->is_cancelled ? 'bg-light' : ''}}">
+                            <td>{{$supplyOrder->client->displayName()}}</a></td>
+                            <td>{{$supplyOrder->product->title}}</td>
+                            <td>{{$supplyOrder->reason}}</td>
+                            <td>{{$supplyOrder->client_understanding_memo}}</td>
+                            <td>
+                                @if($supplyOrder->is_signed_by_pro)
+                                    <b>Signed</b>
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$supplyOrder->signedPro->displayName()}}<br>
+                                        {{friendlier_date_time($supplyOrder->pro_signed_at)}}
+                                    </div>
+                                @else
+                                    Not Signed
+                                @endif
+                            </td>
+                            <td>
+                                @if($supplyOrder->is_signed_by_client)
+                                    <b>Signed</b>
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$patient->displayName()}}<br>
+                                        On {{friendlier_date_time($supplyOrder->client_signed_at)}}
+                                    </div>
+                                @elseif($supplyOrder->is_client_signature_waived)
+                                    <b>Waived</b>
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$supplyOrder->waiverPro->displayName()}}<br>
+                                        on {{friendlier_date_time($supplyOrder->client_signature_waived_at)}}
+                                    </div>
+                                @else
+                                    Not Signed
+                                @endif
+                            </td>
+                            <td>
+                                @if($supplyOrder->shipment_id)
+                                    <i class="fa fa-building"></i>
+                                    {{$supplyOrder->shipment->status}}
+                                    @if($supplyOrder->shipment && $supplyOrder->shipment->status === 'DELIVERED' && $supplyOrder->shipment->delivered_date)
+                                        <div class="text-secondary text-sm mt-1">
+                                            on {{friendlier_date_time($supplyOrder->shipment->delivered_date)}}
+                                        </div>
+                                    @endif
+                                @elseif($supplyOrder->is_cleared_for_shipment)
+                                    <i class="fa fa-user-nurse"></i>
+                                    Cleared for shipment
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$supplyOrder->clearedForShipmentPro->displayName()}}<br>
+                                        on {{friendlier_date_time($supplyOrder->cleared_for_shipment_at)}}
+                                    </div>
+                                @else
+                                    <i class="fa fa-user-nurse"></i>
+                                    Not cleared for shipment
+                                @endif
+                            </td>
+                            <td>{{$supplyOrder->lot_number}}</td>
+                            <td>{{$supplyOrder->imei}}</td>
+                            <td>
+                                {{friendlier_date_time($supplyOrder->created_at)}}
+                                <div class="text-secondary text-sm mt-1">
+                                    By {{$supplyOrder->createdSession->pro->displayName()}}
+                                </div>
+                            </td>
+                            <td>{!! $supplyOrder->is_cancelled ? '<b class="text-warning-mellow">Yes</b>' : 'No' !!}</td>
+                        </tr>
+                    @endforeach
+                    </tbody>
+                </table>
+                <div>
+                    {{$supplyOrders->links()}}
+                </div>
+            </div>
+        </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/supply-orders?' + queryLine);
+            }
+
+            function init() {
+                $('select[data-filter]')
+                    .off('change')
+                    .on('change', applyFilters);
+                $('input[data-filter]')
+                    .off('keyup')
+                    .on('keyup', function(_event) {
+                        if(_event.which === 13) {
+                            applyFilters();
+                            return false;
+                        }
+                    });
+            }
+
+            addMCInitializer('practice-supply-orders', init, '#practice-supply-orders')
+
+        }).call(window);
+    </script>
+@endsection

+ 150 - 0
resources/views/app/practice-management/supply-orders-shipment-underway.blade.php

@@ -0,0 +1,150 @@
+@extends ('layouts/template')
+
+@section('content')
+
+    <div id="practice-supply-orders" class="p-3 mcp-theme-1">
+        <div class="card">
+
+            <div class="card-header px-3 py-3 d-flex align-items-center bg-white">
+                <i class="fas fa-building mr-2"></i>
+                <strong class="font-size-14">
+                    Supply Orders - Shipment Underway
+                </strong>
+                <span class="mx-3 text-secondary">|</span>
+                <a href="{{route('practice-management.supply-orders-ready-to-ship')}}">Ready to Ship</a>
+                <span class="mx-3 text-secondary">|</span>
+                <a href="{{route('practice-management.supply-orders')}}">All</a>
+                <a href="{{route('practice-management.supply-orders-ready-to-ship')}}" 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">
+                    <tr>
+                        <th class="border-0">Client</th>
+                        <th class="border-0">Product</th>
+                        <th class="border-0">Reason</th>
+                        <th class="border-0">Client Understanding Memo</th>
+                        <th class="border-0">Pro Sign</th>
+                        <th class="border-0">Client Sign</th>
+                        <th class="border-0">Shipment</th>
+                        <th class="border-0">Lot #</th>
+                        <th class="border-0">IMEI</th>
+                        <th class="border-0">Created At</th>
+                        <th class="border-0">Cancelled?</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    @foreach ($supplyOrders as $supplyOrder)
+                        <tr class="{{$supplyOrder->is_cancelled ? 'bg-light' : ''}}">
+                            <td>{{$supplyOrder->client->displayName()}}</a></td>
+                            <td>{{$supplyOrder->product->title}}</td>
+                            <td>{{$supplyOrder->reason}}</td>
+                            <td>{{$supplyOrder->client_understanding_memo}}</td>
+                            <td>
+                                @if($supplyOrder->is_signed_by_pro)
+                                    <b>Signed</b>
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$supplyOrder->signedPro->displayName()}}<br>
+                                        {{friendlier_date_time($supplyOrder->pro_signed_at)}}
+                                    </div>
+                                @else
+                                    Not Signed
+                                @endif
+                            </td>
+                            <td>
+                                @if($supplyOrder->is_signed_by_client)
+                                    <b>Signed</b>
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$patient->displayName()}}<br>
+                                        On {{friendlier_date_time($supplyOrder->client_signed_at)}}
+                                    </div>
+                                @elseif($supplyOrder->is_client_signature_waived)
+                                    <b>Waived</b>
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$supplyOrder->waiverPro->displayName()}}<br>
+                                        on {{friendlier_date_time($supplyOrder->client_signature_waived_at)}}
+                                    </div>
+                                @else
+                                    Not Signed
+                                @endif
+                            </td>
+                            <td>
+                                @if($supplyOrder->shipment_id)
+                                    <i class="fa fa-building"></i>
+                                    {{$supplyOrder->shipment->status}}
+                                    @if($supplyOrder->shipment && $supplyOrder->shipment->status === 'DELIVERED' && $supplyOrder->shipment->delivered_date)
+                                        <div class="text-secondary text-sm mt-1">
+                                            on {{friendlier_date_time($supplyOrder->shipment->delivered_date)}}
+                                        </div>
+                                    @endif
+                                @elseif($supplyOrder->is_cleared_for_shipment)
+                                    <i class="fa fa-user-nurse"></i>
+                                    Cleared for shipment
+                                    <div class="text-secondary text-sm mt-1">
+                                        By {{$supplyOrder->clearedForShipmentPro->displayName()}}<br>
+                                        on {{friendlier_date_time($supplyOrder->cleared_for_shipment_at)}}
+                                    </div>
+                                @else
+                                    <i class="fa fa-user-nurse"></i>
+                                    Not cleared for shipment
+                                @endif
+                            </td>
+                            <td>{{$supplyOrder->lot_number}}</td>
+                            <td>{{$supplyOrder->imei}}</td>
+                            <td>
+                                {{friendlier_date_time($supplyOrder->created_at)}}
+                                <div class="text-secondary text-sm mt-1">
+                                    By {{$supplyOrder->createdSession->pro->displayName()}}
+                                </div>
+                            </td>
+                            <td>{!! $supplyOrder->is_cancelled ? '<b class="text-warning-mellow">Yes</b>' : 'No' !!}</td>
+                        </tr>
+                    @endforeach
+                    </tbody>
+                </table>
+                <div>
+                    {{$supplyOrders->links()}}
+                </div>
+            </div>
+        </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/supply-orders?' + queryLine);
+            }
+
+            function init() {
+                $('select[data-filter]')
+                    .off('change')
+                    .on('change', applyFilters);
+                $('input[data-filter]')
+                    .off('keyup')
+                    .on('keyup', function(_event) {
+                        if(_event.which === 13) {
+                            applyFilters();
+                            return false;
+                        }
+                    });
+            }
+
+            addMCInitializer('practice-supply-orders', init, '#practice-supply-orders')
+
+        }).call(window);
+    </script>
+@endsection

+ 8 - 4
resources/views/app/practice-management/supply-orders.blade.php

@@ -5,12 +5,16 @@
     <div id="practice-supply-orders" class="p-3 mcp-theme-1">
     <div class="card">
 
-        <div class="card-header px-3 py-2 d-flex align-items-center">
-            <strong class="mr-4">
-                <i class="fas fa-user-injured"></i>
+        <div class="card-header px-3 py-3 d-flex align-items-center bg-white">
+            <i class="fas fa-building mr-2"></i>
+            <strong class="font-size-14">
                 Supply Orders
             </strong>
-            <a href="/practice-management/supply-orders" class="ml-auto">Clear Filters</a>
+            <span class="mx-3 text-secondary">|</span>
+            <a href="{{route('practice-management.supply-orders-ready-to-ship')}}">Ready to Ship</a>
+            <span class="mx-3 text-secondary">|</span>
+            <a href="{{route('practice-management.supply-orders-shipment-underway')}}">Shipment Underway</a>
+            <a href="{{route('practice-management.supply-orders')}}" class="ml-auto">Clear Filters</a>
         </div>
         <div class="card-body p-0">
             <table class="table table-sm table-condensed p-0 m-0">

+ 7 - 1
routes/web.php

@@ -108,9 +108,15 @@ Route::middleware('pro.auth')->group(function () {
 
             Route::get('treatment-service-util', 'PracticeManagementController@treatmentServiceUtil')->name('treatmentServiceUtil');
 
-            Route::get('supply-orders', 'PracticeManagementController@supplyOrders')->name('supply-orders');
+            // old supply-orders & shipments matrices
+            // Route::get('supply-orders', 'PracticeManagementController@supplyOrders')->name('supply-orders');
             Route::get('shipments', 'PracticeManagementController@shipments')->name('shipments');
 
+            // v2 supply-orders & shipments management (wh)
+            Route::get('supply-orders', 'PracticeManagementController@supplyOrders')->name('supply-orders');
+            Route::get('supply-orders/ready-to-ship', 'PracticeManagementController@supplyOrdersReadyToShip')->name('supply-orders-ready-to-ship');
+            Route::get('supply-orders/shipment-underway', 'PracticeManagementController@supplyOrdersShipmentUnderway')->name('supply-orders-shipment-underway');
+
         });
     });