소스 검색

entrate/uscite - aggiunte colonne destinazione/origine

ferrari 1 개월 전
부모
커밋
add97f18a5
4개의 변경된 파일130개의 추가작업 그리고 11개의 파일을 삭제
  1. 10 0
      app/Models/Record.php
  2. 65 1
      resources/views/livewire/records_in.blade.php
  3. 39 2
      resources/views/livewire/records_out.blade.php
  4. 16 8
      routes/web.php

+ 10 - 0
app/Models/Record.php

@@ -49,6 +49,16 @@ class Record extends Model
         return $this->belongsTo(PaymentMethod::class);
     }
 
+    public function origin()
+    {
+        return $this->belongsTo(\App\Models\Bank::class, 'origin_id');
+    }
+
+    public function destination()
+    {
+        return $this->belongsTo(\App\Models\Bank::class, 'destination_id');
+    }
+
     public function rows()
     {
         return $this->hasMany(RecordRow::class);

+ 65 - 1
resources/views/livewire/records_in.blade.php

@@ -102,6 +102,20 @@
                                 </div>
                             </div>
                         </div>
+                        <div class="col-md-3 mt-2">
+                            <div class="row">
+                                <div class="col-md-12" style="margin-bottom:10px;">
+                                    <b>Destinazioni</b>
+                                </div>
+                                <div class="col-12">
+                                    <select name="search_destination_id" class="form-select filterDestinations" multiple="multiple">
+                                        @foreach($banks as $bank)
+                                            <option value="{{$bank["id"]}}">{!!$bank["name"]!!}
+                                        @endforeach
+                                    </select>
+                                </div>
+                            </div>
+                        </div>
                         <div class="col-md-3 mt-2">
                             <div class="row">
                                 <div class="col-md-12" style="margin-bottom:10px;">
@@ -171,6 +185,7 @@
                         <th scope="col">Causale</th>
                         <th scope="col">Corso/Abbonamento</th>
                         <th scope="col">Pagamento</th>
+                        <th scope="col">Destinazione</th>
 
                         <th scope="col">Stato</th>
                         <th scope="col">...</th>
@@ -1076,6 +1091,17 @@
                 }, 100);
             });
 
+            $(document).on("keypress", $('.filterDestinations'), function (e) {
+
+                setTimeout(() => {
+                    $(".select2-results__option").each(function(){
+                        var txt = $(this).html();
+                        var count = (txt.match(/-/g) || []).length;
+                        $(this).addClass('paddingLeftSelect' + count);
+                    });
+                }, 100);
+            });
+
         });
 
         Livewire.on('load-select', () => {
@@ -1131,6 +1157,11 @@
                 //var data = $('.filterCausals').select2("val");
                 //@this.set('filterCausals', data);
             });
+            $('.filterDestinations').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+            $('.filterDestinations').on('change', function (e) {
+                //var data = $('.filterDestinations').select2("val");
+                //@this.set('filterDestinations', data);
+            });
             $('.filterCourses').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
             $('.filterCourses').on('change', function (e) {
                 //var data = $('.filterCourses').select2("val");
@@ -1160,6 +1191,11 @@
             //var data = $('.filterCausals').select2("val");
             //@this.set('filterCausals', data);
         });
+        $('.filterDestinations').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterDestinations').on('change', function (e) {
+            //var data = $('.filterDestinations').select2("val");
+            //@this.set('filterDestinations', data);
+        });
         $('.filterCourses').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
         $('.filterCourses').on('change', function (e) {
             //var data = $('.filterCourses').select2("val");
@@ -1243,6 +1279,12 @@
                 $('.filterCausals').val(filterCausals);
                 $('.filterCausals').trigger('change');
             }
+            var filterDestinations = localStorage.getItem("filterDestinations");
+            if (filterDestinations)
+            {
+                $('.filterDestinations').val(filterDestinations);
+                $('.filterDestinations').trigger('change');
+            }
             var filterCourses = localStorage.getItem("filterCourses");
             if (filterCourses)
             {
@@ -1296,6 +1338,12 @@
                 $('.filterCausals').val(filterCausals);
                 $('.filterCausals').trigger('change');
             }
+            var filterDestinations = localStorage.getItem("filterDestinationsRecordIn");
+            if (filterDestinations && filterDestinations != "null" && filterDestinations != "undefined")
+            {
+                $('.filterDestinations').val(filterDestinations);
+                $('.filterDestinations').trigger('change');
+            }
             var filterCourses = localStorage.getItem("filterCoursesRecordIn");
             if (filterCourses && filterCourses != "null" && filterCourses != "undefined")
             {
@@ -1346,6 +1394,17 @@
                 }, 100);
             });
 
+            $(document).on("select2:open",".filterDestinations",function() {
+            //$('.filterDestinations').on('select2:open', function (e) {
+                setTimeout(() => {
+                    $(".select2-results__option").each(function(){
+                        var txt = $(this).html();
+                        var count = (txt.match(/-/g) || []).length;
+                        $(this).addClass('paddingLeftSelect' + count);
+                    });
+                }, 100);
+            });
+
         } );
 
         function editData(id)
@@ -1389,6 +1448,8 @@
             $('.filterPaymentMethod').trigger('change');
             $('.filterCausals').val('');
             $('.filterCausals').trigger('change');
+            $('.filterDestinations').val('');
+            $('.filterDestinations').trigger('change');
             $('.filterCourses').val('');
             $('.filterCourses').trigger('change');
             $('.filterSubscriptions').val('');
@@ -1413,6 +1474,7 @@
             var filterMember = $('.filterMember').val();
             var filterPaymentMethod = $('.filterPaymentMethod').val();
             var filterCausals = $('.filterCausals').val();
+            var filterDestinations = $('.filterDestinations').val();
             var filterCourses = $('.filterCourses').val();
             var filterSubscriptions = $('.filterSubscriptions').val();
             var filterFrom = $('.filterFrom').val();
@@ -1423,6 +1485,7 @@
             localStorage.setItem("filterMemberRecordIn", filterMember);
             localStorage.setItem("filterPaymentMethodRecordIn", filterPaymentMethod);
             localStorage.setItem("filterCausalsRecordIn", filterCausals);
+            localStorage.setItem("filterDestinationsRecordIn", filterDestinations);
             localStorage.setItem("filterCoursesRecordIn", filterCourses);
             localStorage.setItem("filterSubscriptionsRecordIn", filterSubscriptions);
             localStorage.setItem("filterFromRecordIn", filterFrom);
@@ -1442,7 +1505,7 @@
                 serverSide: true,
                 processing: true,
                 ajax: {
-                    url : '/get_record_in?filterCommercial=' + filterCommercial + "&filterMember=" + filterMember + "&filterPaymentMethod=" + filterPaymentMethod + "&filterCausals=" + filterCausals + "&filterCourses=" + filterCourses + "&filterSubscriptions=" + filterSubscriptions + "&filterFrom=" + filterFrom + "&filterTo=" + filterTo,
+                    url : '/get_record_in?filterCommercial=' + filterCommercial + "&filterMember=" + filterMember + "&filterPaymentMethod=" + filterPaymentMethod + "&filterDestinations=" + filterDestinations + "&filterCausals=" + filterCausals + "&filterCourses=" + filterCourses + "&filterSubscriptions=" + filterSubscriptions + "&filterFrom=" + filterFrom + "&filterTo=" + filterTo,
                     dataSrc: function (json){
                         if(json.totals){
                             $(".totalDiv").html('Totale&nbsp;:&nbsp;<b>' + json.totals + '</b>');
@@ -1481,6 +1544,7 @@
                     { data: 'causals', "orderable": false, },
                     { data: 'courses', "orderable": false, },
                     { data: 'payment', "orderable": false, },
+                    { data: 'destination', "orderable": false, },
                     //{ data: 'payment_date', "orderable": false, },
                     { data: 'status', "orderable": false, },
                     {

+ 39 - 2
resources/views/livewire/records_out.blade.php

@@ -140,6 +140,20 @@
                         </div>
                     </div>
                 </div>
+                <div class="col-md-2">
+                    <div class="row">
+                        <div class="col-md-12" style="margin-bottom:10px;">
+                            <b>Origini</b>
+                        </div>
+                        <div class="col-12">
+                            <select name="search_origin_id" class="form-select filterOrigins" multiple="multiple">
+                                @foreach($banks as $bank)
+                                    <option value="{{$bank["id"]}}">{!!$bank["name"]!!}
+                                @endforeach
+                            </select>
+                        </div>
+                    </div>
+                </div>
                 <div class="col-md-2">
                     <div class="row">
                         <div class="col-md-12" style="margin-bottom:10px;">
@@ -176,6 +190,7 @@
                         <th scope="col">Fornitore</th>
                         <th scope="col">Causale</th>
                         <th scope="col">Pagamento</th>
+                        <th scope="col">Origine</th>
                         <th scope="col">Stato</th>
                         <th scope="col">...</th>
                     </tr>
@@ -291,7 +306,7 @@
                                 </div>
                             </div>
                         </div>
-                            
+
                         <div class="row gx-2 mt-5">
                             <span class="title-form d-block w-100">
                                 Allegato
@@ -1410,6 +1425,7 @@
             $('.filterSupplier').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
             $('.filterPaymentMethod').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
             $('.filterCausals').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+            $('.filterOrigins').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
 
             setTimeout(setupDragAndDrop, 100);
         });
@@ -1417,6 +1433,7 @@
         $('.filterSupplier').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
         $('.filterPaymentMethod').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
         $('.filterCausals').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterOrigins').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
 
         Livewire.on('start-loading', message => {
             showLoading(message);
@@ -1737,6 +1754,11 @@
                 $('.filterCausals').val(filterCausals);
                 $('.filterCausals').trigger('change');
             }
+            var filterOrigins = localStorage.getItem("filterOriginsRecordOut");
+            if (filterOrigins && filterOrigins != "null" && filterOrigins != "undefined") {
+                $('.filterOrigins').val(filterOrigins);
+                $('.filterOrigins').trigger('change');
+            }
             var filterFrom = localStorage.getItem("filterFromRecordOut");
             if (filterFrom && filterFrom != "" && filterFrom != "undefined") {
                 $('.filterFrom').val(filterFrom);
@@ -1769,6 +1791,16 @@
                 }, 100);
             });
 
+            $(document).on("select2:open",".filterOrigins",function() {
+                setTimeout(() => {
+                    $(".select2-results__option").each(function(){
+                        var txt = $(this).html();
+                        var count = (txt.match(/-/g) || []).length;
+                        $(this).addClass('paddingLeftSelect' + count);
+                    });
+                }, 100);
+            });
+
             $(document).on("click",".addData",function() {
                 $(".title--section_addButton").trigger("click")
             });
@@ -1806,6 +1838,8 @@
             $('.filterPaymentMethod').trigger('change');
             $('.filterCausals').val('');
             $('.filterCausals').trigger('change');
+            $('.filterOrigins').val('');
+            $('.filterOrigins').trigger('change');
             $('.filterFrom').val('');
             $('.filterTo').val('');
             localStorage.clear();
@@ -1820,12 +1854,14 @@
             var filterSupplier = $('.filterSupplier').val();
             var filterPaymentMethod = $('.filterPaymentMethod').val();
             var filterCausals = $('.filterCausals').val();
+            var filterOrigins = $('.filterOrigins').val();
             var filterFrom = $('.filterFrom').val();
             var filterTo = $('.filterTo').val();
 
             localStorage.setItem("filterSupplierRecordOut", filterSupplier);
             localStorage.setItem("filterPaymentMethodRecordOut", filterPaymentMethod);
             localStorage.setItem("filterCausalsRecordOut", filterCausals);
+            localStorage.setItem("filterOriginsRecordOut", filterOrigins);
             localStorage.setItem("filterFromRecordOut", filterFrom);
             localStorage.setItem("filterToRecordOut", filterTo);
 
@@ -1835,7 +1871,7 @@
 
             $('#tablesaw-350').DataTable({
                 ajax: {
-                    url : "/get_record_out?filterSupplier=" + filterSupplier + "&filterPaymentMethod=" + filterPaymentMethod + "&filterCausals=" + filterCausals + "&filterFrom=" + filterFrom + "&filterTo=" + filterTo,
+                    url : "/get_record_out?filterSupplier=" + filterSupplier + "&filterPaymentMethod=" + filterPaymentMethod + "&filterOrigins=" + filterOrigins + "&filterCausals=" + filterCausals + "&filterFrom=" + filterFrom + "&filterTo=" + filterTo,
                     dataSrc: function (json){
                         if(json.totals){
                             $(".totalDiv").html('Totale&nbsp;:&nbsp;<b>' + json.totals + '</b>');
@@ -1867,6 +1903,7 @@
                     { data: 'supplier' },
                     { data: 'causals' },
                     { data: 'payment' },
+                    { data: 'origin' },
                     {
                         data: 'is_paid',
                         render: function (data) {

+ 16 - 8
routes/web.php

@@ -893,15 +893,10 @@ Route::group(['middleware' => 'tenant'], function () {
 
         $datas = [];
 
-        $x = \App\Models\Record::select('records.*', DB::raw('members.first_name as first_name'), DB::raw('members.last_name as last_name'), DB::raw('payment_methods.name as payment'), DB::raw('receipts.created_at as receipt_date')) // , \DB::raw('SUM(records.id) As total'))
-            ->leftJoin('members', 'records.member_id', '=', 'members.id')
-            ->leftJoin('payment_methods', 'records.payment_method_id', '=', 'payment_methods.id')
-            ->leftJoin('receipts', 'records.id', '=', 'receipts.record_id')
-            ->where('records.type', 'IN');
-
-        $x = \App\Models\Record::select('records.*', DB::raw('members.first_name as first_name'), DB::raw('members.last_name as last_name'), DB::raw('payment_methods.name as payment'), DB::raw('receipts.created_at as receipt_date')) // , \DB::raw('SUM(records.id) As total'))
+        $x = \App\Models\Record::select('records.*', DB::raw('members.first_name as first_name'), DB::raw('members.last_name as last_name'), DB::raw('payment_methods.name as payment'), DB::raw('banks.name as destination'), DB::raw('receipts.created_at as receipt_date')) // , \DB::raw('SUM(records.id) As total'))
             ->leftJoin('members', 'records.member_id', '=', 'members.id')
             ->leftJoin('payment_methods', 'records.payment_method_id', '=', 'payment_methods.id')
+            ->leftJoin('banks', 'records.destination_id', '=', 'banks.id')
             ->leftJoin('receipts', 'records.id', '=', 'receipts.record_id')
             ->where('records.type', 'IN');
 
@@ -988,6 +983,13 @@ Route::group(['middleware' => 'tenant'], function () {
             $x = $x->whereIn('records.id', $causals);
             $y = $y->whereIn('records.id', $causals);
         }
+        if ($_GET["filterDestinations"] != "null") {
+            $hasFilter = true;
+            $destinations = explode(",", $_GET["filterDestinations"]);
+
+            $x = $x->whereIn('records.destination_id', $destinations);
+            $y = $y->whereIn('records.destination_id', $destinations);
+        }
         if ($_GET["filterCourses"] != "null") {
             $hasFilter = true;
             $courses = explode(",", $_GET["filterCourses"]);
@@ -1136,6 +1138,7 @@ Route::group(['middleware' => 'tenant'], function () {
                 'causals' => $causals,
                 'courses' => $subscriptions . $courses,
                 'payment' => $r->payment_method->name,
+                'destination' => $r->destination,
                 //'payment_date' => date("d/m/Y", strtotime($r->date)),
                 'status' => $r->deleted ? 'Annullato' : '',
                 'action' => $r->id . "||" . ($r->deleted ? 'x' : '')
@@ -1197,6 +1200,11 @@ Route::group(['middleware' => 'tenant'], function () {
             $x = $x->whereIn('records.id', $causals);
             $hasFilter = true;
         }
+        if ($_GET["filterOrigins"] != "null") {
+            $origins = explode(",", $_GET["filterOrigins"]);
+            $x = $x->whereIn('records.origin_id', $origins);
+            $hasFilter = true;
+        }
         if ($_GET["filterFrom"] != '') {
             $x = $x->where('date', '>=', $_GET["filterFrom"]);
             $hasFilter = true;
@@ -1231,7 +1239,6 @@ Route::group(['middleware' => 'tenant'], function () {
                 }
             }
 
-
             $datas[] = array(
                 'date' => $r->date,
                 'total' => formatPrice($r->getTotal()),
@@ -1239,6 +1246,7 @@ Route::group(['middleware' => 'tenant'], function () {
                 'supplier' => $r->supplier->name,
                 'causals' => $causals,
                 'payment' => $r->payment_method->name,
+                'origin' => $r->origin?->name,
                 'is_paid' => $r->is_paid ? 'Pagato' : 'Non Pagato',
                 'action' => $r->id . "|"
             );