table.blade.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <div class="d-flex align-items-center justify-content-between">
  2. <div class="d-flex align-items-center">
  3. <div class="my-2">Showing <b>{{ $rows->firstItem() }}</b> to <b>{{ $rows->lastItem() }}</b> of total
  4. <b>{{ $rows->total() }}</b> records
  5. </div>
  6. </div>
  7. <div>
  8. @if(@$ordersSummary)
  9. <div class="d-flex align-items-start">
  10. @foreach($ordersSummary as $k=>$v)
  11. <div class="ms-2"><b>{{ toHumanReadable($k) }}: </b> ${{ displayAmount('', $v) }}</div>
  12. @endforeach
  13. </div>
  14. @endif
  15. </div>
  16. </div>
  17. <div class="table-responsive scrollable">
  18. <table class="table table-sm table-hover table-bordered mb-0 bg-white">
  19. <thead>
  20. <tr>
  21. <th>#</th>
  22. <th>Invoice</th>
  23. <th>Name</th>
  24. <th class="text-nowrap">Created At</th>
  25. <th class="text-nowrap">Total Amount</th>
  26. <th>Orders</th>
  27. <th>Lab</th>
  28. <th>Lab Request</th>
  29. <th>Trx</th>
  30. </tr>
  31. </thead>
  32. <tbody>
  33. @foreach ($rows as $order)
  34. <?php
  35. $storeOrderDetailJson = $order->detailJson();
  36. $storeOrderSelectedOptions = json_decode(@$storeOrderDetailJson->selected_options ?? "{}");
  37. $selectedLab = @$storeOrderSelectedOptions->lab;
  38. $lab_tests_request_attachment = @$order->getDetailJsonValue('lab_tests_request_attachment');
  39. $results_attachment = @$order->getDetailJsonValue('results_attachment');
  40. $orderTotal = $order->order_total;
  41. ?>
  42. <tr @if ($order->is_cancelled) class="cancelled-order" @endif>
  43. <td class="text-nowrap" style="width:1px">
  44. <a href="{{ route('admin.orders.view.dashboard', $order) }}">{{ $order->orderNumber() }}</a>
  45. </td>
  46. <td style="width:4px;" class="text-center">
  47. <a href="{{ route('admin.orders.view.preview-invoice', $order) }}"><i class="fas fa-file-invoice"></i></a>
  48. </td>
  49. <td class="text-nowrap" style="width:1px">{{ $order->user->full_name }}</td>
  50. <td class="text-nowrap" style="width:1px">{{ friendly_date_time($order->created_at) }}</td>
  51. <td style="width:1px">{{ displayAmount('$', $order->total()) }}</td>
  52. <td style="width:550px">
  53. @foreach($order->testsRequested() as $tkey => $test)
  54. <small>{{ config('constants.tests.'.$test) }}</small>@if(count($order->associatedOrders($order->id)) || count($order->testsRequested()) -1 !== $tkey),@endif
  55. @endforeach
  56. {{-- Associated Orders --}}
  57. @foreach($order->associatedOrders($order->id) as $tOrder => $assocOrder)
  58. <?php $orderTotal = $orderTotal + $assocOrder->order_total; ?>
  59. @foreach($assocOrder->testsRequested() as $tkey => $test)
  60. <small>{{ config('constants.tests.'.$test) }}<small>@if(count($order->associatedOrders($order->id)) -1 !== $tOrder),@endif
  61. @endforeach
  62. @endforeach
  63. @if(@$storeOrderSelectedOptions->partner == 1)
  64. <p class="mt-2 mb-0"><b style="font-family:sans-serif">Partner: {{@$storeOrderSelectedOptions->partner_email}}</b></p>
  65. @endif
  66. @if(@$results_attachment)
  67. <p class="mt-2 p-1 bg-light border text-sm"><b>Lab Report: <a class="ms-2 text-success" href="{{ $results_attachment['attachmentAccessTokenUrl'] }}" target="_blank"><i class="fal fa-file-pdf"></i> Download PDF</a></b></p>
  68. @endif
  69. </td>
  70. <td>
  71. @if($selectedLab)
  72. <?= selected_lab_html_address($selectedLab); ?>
  73. @else
  74. ---
  75. @endif
  76. </td>
  77. <td style="width:1px">
  78. <div class="d-flex">
  79. <span class="me-2">@include("app.my-account.admin.orders.forms.upload-lab-tests-request-attachment", ['edit' => true])</span>
  80. @if(@$lab_tests_request_attachment)
  81. <a class="text-nowrap text-primary" href="{{ $lab_tests_request_attachment['attachmentAccessTokenUrl'] .'?fileType=lab_tests_request_attachment' }}" target="_blank"><i class="fal fa-file-pdf"></i> {{ $lab_tests_request_attachment['orginalFileName'] }}</a>
  82. @else
  83. <small class="text-muted">not uploaded</small>
  84. @endif
  85. </div>
  86. </td>
  87. <td class="text-nowrap">
  88. <?php $finalTrx = $order->finalFinancialTransaction(); ?>
  89. @if (@$finalTrx)
  90. @if ($finalTrx->charge_or_refund == 'CHARGE')
  91. <span><i class="fa-duotone fa-circle-check fa-fw text-success"></i> CHARGED</span>
  92. @else
  93. <span><i class="fa-duotone fa-circle-xmark fa-fw text-danger"></i> REFUNDED</span>
  94. @endif
  95. @else
  96. <span><i class="fa-duotone fa-circle-xmark fa-fw text-danger"></i> NOT CHARGED</span>
  97. @endif
  98. </td>
  99. </tr>
  100. @endforeach
  101. </tbody>
  102. </table>
  103. </div>
  104. <script>
  105. (function($) {
  106. var ordersTable = {
  107. checkedOrders: [],
  108. initSelectAll: function() {
  109. var self = this;
  110. var multiCheckbox = $('[multi-check]');
  111. var orderCheckboxes = $('[order-check]');
  112. multiCheckbox.click(function(e) {
  113. var isChecked = e.target.checked ? true : false;
  114. var checkedOrders = [];
  115. if (isChecked) {
  116. $.each(orderCheckboxes, function(i, order) {
  117. var orderID = $(order).data('id');
  118. checkedOrders.push(orderID);
  119. $(order).attr('checked', true);
  120. });
  121. } else {
  122. $.each(orderCheckboxes, function(i, order) {
  123. $(order).attr('checked', false);
  124. });
  125. }
  126. self.updateCheckedOrders(checkedOrders);
  127. });
  128. },
  129. initSingleOrderCheckbox: function() {
  130. var self = this;
  131. $('[order-check]').click(function(e) {
  132. var input = e.target;
  133. var orderID = $(input).data('id');
  134. var isChecked = input.checked ? true : false;
  135. var checkedOrders = [...self.checkedOrders];
  136. if (isChecked) {
  137. checkedOrders.push(orderID);
  138. } else {
  139. var index = checkedOrders.indexOf(orderID);
  140. checkedOrders.splice(index, 1);
  141. }
  142. self.updateCheckedOrders(checkedOrders);
  143. });
  144. },
  145. updateCheckedOrders: function(orders) {
  146. var self = this;
  147. self.checkedOrders = orders;
  148. if ($('[order-check]:checked').length === $('[order-check]').length) {
  149. $('[multi-check]').prop('checked', true);
  150. } else {
  151. $('[multi-check]').prop('checked', false);
  152. }
  153. $('input[name=selectedIDs]').val(JSON.stringify(self.checkedOrders));
  154. if (self.checkedOrders.length) {
  155. $('#GenerateInvoicesPdfForm').removeClass('d-none');
  156. } else {
  157. $('#GenerateInvoicesPdfForm').addClass('d-none');
  158. }
  159. },
  160. init: function() {
  161. this.initSelectAll();
  162. this.initSingleOrderCheckbox();
  163. }
  164. };
  165. ordersTable.init();
  166. })(jQuery);
  167. </script>