receipt.blade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <div class="col">
  2. <div class="row h-100">
  3. <div class="col card--ui" id="card--dashboard">
  4. <header id="title--section" style="display:none !important" class="d-flex align-items-center justify-content-between">
  5. <div class="title--section_name d-flex align-items-center justify-content-between">
  6. <i class="ico--ui title_section utenti me-2"></i>
  7. <h2 class="primary">Ricevute</h2>
  8. </div>
  9. <!--
  10. <div class="title--section_addButton" wire:click="add()" style="cursor: pointer;">
  11. <div class="btn--ui entrata d-flex justify-items-between">
  12. <a href="#" wire:click="add()" style="color:white">Aggiungi</a>
  13. </div>
  14. </div>
  15. -->
  16. </header>
  17. <div class="showFilter" style="display:none" wire:ignore.self>
  18. <hr size="1">
  19. <div class="row g-3">
  20. <div class="col-md-2">
  21. <div class="row">
  22. <div class="col-md-12" style="margin-bottom:10px;">
  23. <b>Periodo</b>
  24. </div>
  25. <div class="col-12 mb-2">
  26. <input id="dateFrom" type="date" class="form-control filterFrom" wire:model="filterFrom" >
  27. </div>
  28. <div class="col-12">
  29. <input id="dateTo" type="date" class="form-control filterTo" wire:model="filterTo" >
  30. </div>
  31. <div class="col-6 mt-2">
  32. <button class="btn--ui" onclick="setToday('{{date("Y-m-d")}}')">OGGI</button>
  33. </div>
  34. <div class="col-6 mt-2">
  35. <button class="btn--ui" onclick="setYesterday('{{date("Y-m-d",strtotime("-1 days"))}}')">IERI</button>
  36. </div>
  37. </div>
  38. </div>
  39. <div class="col-md-2">
  40. <div class="row">
  41. <div class="col-md-12" style="margin-bottom:10px;">
  42. <b>Stato</b>
  43. </div>
  44. <div class="col-12">
  45. <select class="form-select" wire:model="filterStatus" onchange="destroyDataTable()">
  46. <option value="">--Seleziona--
  47. <option value="1">Attiva
  48. <option value="99">Annullata
  49. </select>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="row g-3">
  55. <div class="col-md-12" style="text-align:right">
  56. <button class="btn--ui lightGrey" wire:click.prevent="disableSearch()" onclick="destroyDataTable()">Reset</button>
  57. <button class="btn--ui" wire:click.prevent="search()" onclick="destroyDataTable()">FILTRA</button>
  58. </div>
  59. </div>
  60. <hr size="1">
  61. </div>
  62. <section id="resume-table">
  63. <div class="compare--chart_wrapper d-none"></div>
  64. <table class="table tablesaw tablesaw-stack table--lista_ricevute" id="tablesaw-350" width="100%">
  65. <thead>
  66. <tr>
  67. <th scope="col">Anno</th>
  68. <th scope="col">Numero</th>
  69. <th scope="col">Cognome</th>
  70. <th scope="col">Nome</th>
  71. <th scope="col">Stato</th>
  72. <th scope="col">Data</th>
  73. <th scope="col">Importo</th>
  74. <th scope="col">...</th>
  75. </tr>
  76. </thead>
  77. <tbody id="checkall-target">
  78. @foreach($records as $record)
  79. <tr>
  80. <td>{{$record->year}}</td>
  81. <td>{{$record->number}}</td>
  82. <td>{{$record->type == 'IN' ? ($record->member->last_name) : 'Uscita'}}</td>
  83. <td>{{$record->type == 'IN' ? ($record->member->first_name) : ''}}</td>
  84. <td>
  85. <span class="tablesaw-cell-content">
  86. <span class="badge tessera-badge {{$record->status == 1 ? 'active' : 'suspended'}}">{{$record->status == 1 ? 'Attivo' : 'Annullata'}}</span>
  87. </span>
  88. </td>
  89. <td>{{date("d/m/Y", strtotime($record->date))}}</td>
  90. <td>{{formatPrice($record->rows->sum('amount'))}}</td>
  91. <td>
  92. <button type="button" class="btn u" onclick="document.location.href='/in?id={{$record->record_id}}'" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="visualizza ricevuta"><i class="fa-regular fa-eye"></i></button>
  93. <a target="_blank" class="btn u" href="/receipt/{{$record->id}}" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="stampa ricevuta"><i class="fa-regular fa-file-lines"></i></a>
  94. <a target="_blank" class="btn u" onclick="sendMail({{$record->id}})"><i class="fa-regular fa-envelope" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="invia email"></i></a>
  95. </td>
  96. </tr>
  97. @endforeach
  98. </tbody>
  99. </table>
  100. </section>
  101. </div>
  102. @push('scripts')
  103. <link href="/css/datatables.css" rel="stylesheet" />
  104. <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
  105. <script src="/assets/js/datatables.js"></script>
  106. <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
  107. <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
  108. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
  109. <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
  110. @endpush
  111. @push('scripts')
  112. <script>
  113. $(document).ready(function() {
  114. loadDataTable();
  115. } );
  116. Livewire.on('load-data-table', () => {
  117. setTimeout(function() {loadDataTable()}, 100);
  118. });
  119. Livewire.on('destroy-data-table', () => {
  120. $('#tablesaw-350').DataTable().destroy();
  121. });
  122. function destroyDataTable()
  123. {
  124. $('#tablesaw-350').DataTable().destroy();
  125. }
  126. var isFilter = false;
  127. $(document).ready(function() {
  128. $(document).on("click",".showHideFilter",function() {
  129. if (isFilter)
  130. {
  131. isFilter = false;
  132. $(".showFilter").hide();
  133. }
  134. else
  135. {
  136. isFilter = true;
  137. $(".showFilter").show();
  138. }
  139. });
  140. } );
  141. function sendMail(id)
  142. {
  143. $.get("/receipt/mail/" + id, function(data, status){
  144. alert('Mail inviata');
  145. });
  146. }
  147. function loadDataTable(){
  148. $('#tablesaw-350').DataTable({
  149. fixedHeader: true,
  150. thead: {
  151. 'th': {'background-color': 'blue'}
  152. },
  153. layout: {
  154. topStart : null,
  155. topEnd : null,
  156. top1A: {
  157. buttons: [
  158. {
  159. extend: 'collection',
  160. text: 'Esporta',
  161. buttons: [
  162. {
  163. extend: 'excelHtml5',
  164. title: 'Ricevute',
  165. exportOptions: {
  166. columns: ":not(':last')"
  167. }
  168. },
  169. {
  170. extend: 'pdfHtml5',
  171. title: 'Ricevute',
  172. exportOptions: {
  173. columns: ":not(':last')"
  174. }
  175. },
  176. {
  177. extend: 'print',
  178. text: 'Stampa',
  179. title: 'Ricevute',
  180. exportOptions: {
  181. columns: ":not(':last')"
  182. }
  183. }
  184. ],
  185. dropup: true
  186. }
  187. ]
  188. },
  189. top1B : {
  190. pageLength: {
  191. menu: [[10, 25, 50, 100, 100000], [10, 25, 50, 100, "Tutti"]]
  192. }
  193. },
  194. top1C :'search',
  195. },
  196. order: [[0, 'desc'], [1, 'desc']],
  197. pagingType: 'numbers',
  198. "language": {
  199. "url": "/assets/js/Italian.json"
  200. },
  201. "fnInitComplete": function (oSettings, json) {
  202. var html = '&nbsp;<a href="#" class="showHideFilter btn--ui"><i class="fa-solid fa-sliders"></i></a>';
  203. $(".dt-search").append(html);
  204. }
  205. });
  206. $('#tablesaw-350 thead tr th').addClass('col');
  207. $('#tablesaw-350 thead tr th').css("background-color", "#f6f8fa");
  208. $('#tablesaw-350').on('draw.dt', function() {
  209. $('[data-bs-toggle="popover"]').popover()
  210. });
  211. $(document).ready(function() {
  212. $(document).on("click",".addData",function() {
  213. $(".title--section_addButton").trigger("click")
  214. });
  215. } );
  216. }
  217. </script>
  218. @endpush