Luca Parisio 1 год назад
Родитель
Сommit
2e94913311

+ 14 - 13
app/Http/Livewire/CourseMember.php

@@ -10,7 +10,7 @@ class CourseMember extends Component
     public $records = array();
 
     public $courses = [];
-    public $course_durations = [];
+    public $course_frequencies = [];
     public $course_types = [];
     public $course_levels = [];
     public $course_years = [];
@@ -18,7 +18,7 @@ class CourseMember extends Component
     public $filterCourse = "";
     public $filterLevel = "";
     public $filterType = "";
-    public $filterDuration = "";
+    public $filterFrequency = "";
     public $filterDays = "";
     public $filterHours = "";
     public $filterSubscription = "";
@@ -37,7 +37,7 @@ class CourseMember extends Component
     {
 
         $this->course_types = \App\Models\CourseType::select('*')->where('enabled', true)->get();
-        $this->course_durations = \App\Models\CourseDuration::select('*')->where('enabled', true)->get();
+        $this->course_frequencies = \App\Models\CourseFrequency::select('*')->where('enabled', true)->get();
         $this->course_levels = \App\Models\CourseLevel::select('*')->where('enabled', true)->get();
         $this->course_years = \App\Models\Course::select('year')->where('year', '<>', '')->groupBy('year')->pluck('year');
         $this->courses = \App\Models\Course::orderBy('name')->groupBy('name')->pluck('name');
@@ -71,31 +71,32 @@ class CourseMember extends Component
             $this->filter .= $this->filter != '' ? ', ' : '';
             $this->filter .= "Tipologia : " . \App\Models\CourseType::findOrFail($this->filterType)->name . " ";
         }
-        if ($this->filterDuration != "")
+        if ($this->filterFrequency != "")
         {
-            $course_ids = \App\Models\Course::where('course_duration_id', $this->filterDuration)->pluck('id');
+            $course_ids = \App\Models\Course::where('course_frequency_id', $this->filterFrequency)->pluck('id');
             $datas = $datas->whereIn('course_id', $course_ids);
             $this->filter .= $this->filter != '' ? ', ' : '';
-            $this->filter .= "Durata : " . \App\Models\CourseDuration::findOrFail($this->filterDuration)->name . " ";
+            $this->filter .= "Durata : " . \App\Models\CourseFrequency::findOrFail($this->filterFrequency)->name . " ";
         }
         if ($this->filterDays != "")
         {
-            $course_ids = \App\Models\MemberCourse::where('when', 'like', "%" . $this->filterDays . "%")->pluck('course_id');
-            $datas = $datas->whereIn('course_id', $course_ids);
+            $members_ids = \App\Models\MemberCourse::where('when', 'like', "%" . $this->filterDays . "%")->pluck('member_id');
+            $datas = $datas->whereIn('member_id', $members_ids);
             $this->filter .= $this->filter != '' ? ', ' : '';
             $this->filter .= "Giorni : " . $this->filterDays . " ";
         }
         if ($this->filterHours != "")
         {
-            $course_ids = \App\Models\MemberCourse::where('when', 'like', "%" . $this->filterHours . "%")->pluck('course_id');
-            $datas = $datas->whereIn('course_id', $course_ids);
+            $members_ids = \App\Models\MemberCourse::where('when', 'like', '%"from":"' . $this->filterHours . "%")->pluck('member_id');
+            $datas = $datas->whereIn('member_id', $members_ids);
             $this->filter .= $this->filter != '' ? ', ' : '';
             $this->filter .= "Ore : " . $this->filterHours . " ";
         }
+
         if ($this->filterSubscription != "")
         {
-            $course_ids = \App\Models\MemberCourse::where('subscribed', $this->filterSubscription == 1 ? true : false)->pluck('id');
-            $datas = $datas->whereIn('course_id', $course_ids);
+            $ids = \App\Models\MemberCourse::where('subscribed', $this->filterSubscription == 1 ? true : false)->pluck('id');
+            $datas = $datas->whereIn('id', $ids);
             $this->filter .= $this->filter != '' ? ', ' : '';
             $this->filter .= "Pagata sottoscrizione : " . ($this->filterSubscription == 1 ? "SI" : "NO") . " ";
         }
@@ -179,7 +180,7 @@ class CourseMember extends Component
         $this->filterCourse = "";
         $this->filterLevel = "";
         $this->filterType = "";
-        $this->filterDuration = "";
+        $this->filterFrequency = "";
         $this->filterDays = "";
         $this->filterHours = "";
         $this->filterSubscription = "";

+ 5 - 1
app/Http/Livewire/Member.php

@@ -46,7 +46,7 @@ class Member extends Component
         $this->sortField = $field;
     }
 
-    public $records, $first_name, $last_name, $image, $image_old, $status, $birth_place, $birth_city_id, $birth_province_id, $birth_nation_id, $birth_date, $gender, $no_send_mail, $fiscal_code, $address, $zip_code, $nation_id, $province_id, $city_id, $phone, $phone2, $phone3, $email, $enabled, $dataId, $update = false, $add = false;
+    public $records, $first_name, $last_name, $image, $image_old, $status, $birth_place, $birth_city_id, $birth_province_id, $birth_nation_id, $birth_date, $gender, $no_send_mail, $exclude_from_records, $fiscal_code, $address, $zip_code, $nation_id, $province_id, $city_id, $phone, $phone2, $phone3, $email, $enabled, $dataId, $update = false, $add = false;
 
     public $isSaving = false;
 
@@ -161,6 +161,7 @@ class Member extends Component
         $this->mother_doc_type = '';
         $this->gender = null;
         $this->no_send_mail = false;
+        $this->exclude_from_records = false;
         $this->fiscal_code = '';
         $this->address = '';
         $this->zip_code = '';
@@ -837,6 +838,7 @@ class Member extends Component
                 'document_files' => $docs,
                 'gender' => $this->gender,
                 'no_send_mail' => $this->no_send_mail,
+                'exclude_from_records' => $this->exclude_from_records,
                 'fiscal_code' => $this->fiscal_code,
                 'address' => $this->address,
                 'zip_code' => $this->zip_code,
@@ -913,6 +915,7 @@ class Member extends Component
                 $this->document_files = explode("|", $member->document_files);
                 $this->gender = $member->gender;
                 $this->no_send_mail = $member->no_send_mail;
+                $this->exclude_from_records = $member->exclude_from_records;
                 $this->fiscal_code = $member->fiscal_code;
                 $this->address = $member->address;
                 $this->zip_code = $member->zip_code;
@@ -1061,6 +1064,7 @@ class Member extends Component
                 'document_files' => $docs,
                 'gender' => $this->gender,
                 'no_send_mail' => $this->no_send_mail,
+                'exclude_from_records' => $this->exclude_from_records,
                 'fiscal_code' => $this->fiscal_code,
                 'address' => $this->address,
                 'zip_code' => $this->zip_code,

+ 3 - 0
app/Http/Livewire/Record.php

@@ -124,6 +124,8 @@ class Record extends Component
         $this->records = array();
         $this->totals = array();
 
+        $exclude_from_records = \App\Models\Member::where('exclude_from_records', true)->pluck('id')->toArray();
+
         /*
         $fromDate = '';
         $toDate = '';
@@ -151,6 +153,7 @@ class Record extends Component
                     ->where(function ($query)  {
                         $query->where('deleted', false)->orWhere('deleted', null);
                     })
+                    ->whereNotIn('member_id', $exclude_from_records)
                     ->orderBy('date', 'ASC')->orderBy('records.created_at', 'ASC')
                     ->get();
 

+ 74 - 61
app/Http/Livewire/RecordIN.php

@@ -115,6 +115,15 @@ class RecordIN extends Component
         if ($this->member_id > 0)
         {
             $member = \App\Models\Member::findOrFail($this->member_id);
+            if (!$member->isAdult())
+            {
+                if($member->father_name != '')
+                    $this->parent = $member->father_name . " (C.F. " . $member->father_fiscal_code . ")";
+                else if($member->mother_name != '')
+                    $this->parent = $member->mother_name . " (C.F. " . $member->mother_fiscal_code . ")";
+                else
+                    $this->parent = '';
+            }
             $this->virtual = $member->getMoney();
             $this->newMemberFirstName = '';
             $this->newMemberLastName = '';
@@ -621,7 +630,7 @@ class RecordIN extends Component
         }
     }
 
-    public function update($generate)
+    public function update($generate = false)
     {
         $this->emit('refresh');
         $rules = [
@@ -823,82 +832,86 @@ class RecordIN extends Component
     public function createReceipt()
     {
 
-        $create = false;
-        $receipt = \App\Models\Receipt::where('record_id', $this->dataId)->orderBy('id', 'DESC')->first();
-        if ($receipt != null)
+        // Ulteriore controllo commerciale/non commerciale
+        if (!$this->commercial)
         {
+            $create = false;
+            $receipt = \App\Models\Receipt::where('record_id', $this->dataId)->orderBy('id', 'DESC')->first();
+            if ($receipt != null)
+            {
 
-            // Controllo lo stato, se 99 ne genero una nuova
-            if ($receipt->status == 99)
+                // Controllo lo stato, se 99 ne genero una nuova
+                if ($receipt->status == 99)
+                {
+                    $create = true;
+                }
+
+            }
+            else
             {
                 $create = true;
             }
 
-        }
-        else
-        {
-            $create = true;
-        }
-
-        if ($create)
-        {
-            $number = 1;
-            $exist = \App\Models\Receipt::where('year', date("Y"))->orderBy('number', 'DESC')->first();
-            if ($exist != null)
-                $number = $exist->number + 1;
-
-            $receipt = \App\Models\Receipt::create([
-                'record_id' => $this->dataId,
-                'member_id' => $this->member_id,
-                'supplier_id' => $this->supplier_id,
-                'payment_method_id' => $this->payment_method_id,
-                'number' => $number,
-                'date' => $this->date,
-                'year' => date("Y"),
-                'type' => $this->type,
-                'parent' => $this->parent,
-                'status' => 1,
-            ]);
-
-            foreach($this->rows as $row)
+            if ($create)
             {
-                \App\Models\ReceiptRow::create([
-                    'receip_id' => $receipt->id,
-                    'causal_id' => $row["causal_id"],
-                    'note' => $row["note"],
-                    'vat_id' => $row["vat_id"],
-                    'amount' => $this->currencyToDouble($row["amount"]),
-                    'commercial' => $row["commercial"],
-                    'when' => json_encode($row["when"])
+                $number = 1;
+                $exist = \App\Models\Receipt::where('year', date("Y"))->orderBy('number', 'DESC')->first();
+                if ($exist != null)
+                    $number = $exist->number + 1;
+
+                $receipt = \App\Models\Receipt::create([
+                    'record_id' => $this->dataId,
+                    'member_id' => $this->member_id,
+                    'supplier_id' => $this->supplier_id,
+                    'payment_method_id' => $this->payment_method_id,
+                    'number' => $number,
+                    'date' => $this->date,
+                    'year' => date("Y"),
+                    'type' => $this->type,
+                    'parent' => $this->parent,
+                    'status' => 1,
                 ]);
-            }
 
-            $this->currentReceip = $receipt;
+                foreach($this->rows as $row)
+                {
+                    \App\Models\ReceiptRow::create([
+                        'receip_id' => $receipt->id,
+                        'causal_id' => $row["causal_id"],
+                        'note' => $row["note"],
+                        'vat_id' => $row["vat_id"],
+                        'amount' => $this->currencyToDouble($row["amount"]),
+                        'commercial' => $row["commercial"],
+                        'when' => json_encode($row["when"])
+                    ]);
+                }
 
-            sendReceiptEmail($receipt);
+                $this->currentReceip = $receipt;
 
-            /*
+                sendReceiptEmail($receipt);
 
-            // Invio mail
-            $pdf = PDF::loadView('receipt', array('receipt' => $receipt));
-            $pdfName = "ricevuta_" . $receipt->number . "_" . $receipt->year . ".pdf";
-            Storage::put('public/pdf/' . $pdfName, $pdf->output());
-            $email = \App\Models\Member::findOrFail($receipt->member_id)->email;
-            if ($email != '')
-            {
-                Mail::to($email)->send(new \App\Mail\ReceipEmail([
-                    'pdf' => 'public/pdf/' . $pdfName,
-                    'number' => $receipt->number . "/" . $receipt->year
-                ]));
-            }
+                /*
 
-            */
+                // Invio mail
+                $pdf = PDF::loadView('receipt', array('receipt' => $receipt));
+                $pdfName = "ricevuta_" . $receipt->number . "_" . $receipt->year . ".pdf";
+                Storage::put('public/pdf/' . $pdfName, $pdf->output());
+                $email = \App\Models\Member::findOrFail($receipt->member_id)->email;
+                if ($email != '')
+                {
+                    Mail::to($email)->send(new \App\Mail\ReceipEmail([
+                        'pdf' => 'public/pdf/' . $pdfName,
+                        'number' => $receipt->number . "/" . $receipt->year
+                    ]));
+                }
 
-            session()->flash('receipt',"Ricevuta " . $number . "/" . date("Y") . " creata correttamente");
+                */
 
-            // Apro la ricevuta
-            $this->emit('showReceipt', $this->currentReceip->id);
+                session()->flash('receipt',"Ricevuta " . $number . "/" . date("Y") . " creata correttamente");
 
+                // Apro la ricevuta
+                $this->emit('showReceipt', $this->currentReceip->id);
+
+            }
         }
 
 

+ 16 - 1
app/Http/Livewire/RecordINOUT.php

@@ -118,6 +118,8 @@ class RecordINOUT extends Component
         $this->records_in = [];
         $this->records_out = [];
 
+        $exclude_from_records = \App\Models\Member::where('exclude_from_records', true)->pluck('id')->toArray();
+
         if (sizeof($this->datas) > 0)
         {
             foreach($this->datas as $filter)
@@ -130,6 +132,8 @@ class RecordINOUT extends Component
                 if ($m == 'x')
                     $f = str_replace("x-", "", $filter);
 
+                //$dt = $y . "-0" . $m;
+
                 $records = \App\Models\Record::where('type', 'IN')
                     ->join('records_rows', 'records.id', '=', 'records_rows.record_id')
                     ->whereNotIn('records_rows.causal_id', $this->excludeCausals)
@@ -139,7 +143,12 @@ class RecordINOUT extends Component
                     ->where(function ($query)  {
                         $query->where('financial_movement', false)->orWhere('financial_movement', null);
                     })
-                    ->where('records_rows.when', 'like', '%' . $f . '%')->get();
+                    ->whereNotIn('member_id', $exclude_from_records)
+                    /*->where(function ($query) use ($f, $dt)  {
+                        $query->where('records.date', 'like', '%' . $dt . '%')->orWhere('records_rows.when', 'like', '%' . $f . '%');
+                    })*/
+                    ->where('records_rows.when', 'like', '%' . $f . '%')
+                    ->get();
                 //$records = $records->orderBy('date', 'DESC')->get();
 
                 foreach($records as $record)
@@ -170,6 +179,7 @@ class RecordINOUT extends Component
                     ->where(function ($query)  {
                         $query->where('financial_movement', false)->orWhere('financial_movement', null);
                     })
+                    ->whereNotIn('member_id', $exclude_from_records)
                     ->where('records_rows.when', 'like', '%' . $f . '%')->get();
                 //$records = $records->orderBy('date', 'DESC')->get();
 
@@ -394,6 +404,9 @@ class RecordINOUT extends Component
                 $datas[] = $m . "-" . $year;
             }
         }
+
+        $exclude_from_records = \App\Models\Member::where('exclude_from_records', true)->pluck('id')->toArray();
+
         foreach($datas as $filter)
         {
 
@@ -408,6 +421,7 @@ class RecordINOUT extends Component
                 ->where(function ($query)  {
                     $query->where('financial_movement', false)->orWhere('financial_movement', null);
                 })
+                ->whereNotIn('member_id', $exclude_from_records)
                 ->where('records_rows.when', 'like', '%' . $filter . '%')->get();
             //$records = $records->orderBy('date', 'DESC')->get();
 
@@ -439,6 +453,7 @@ class RecordINOUT extends Component
                 ->where(function ($query)  {
                     $query->where('financial_movement', false)->orWhere('financial_movement', null);
                 })
+                ->whereNotIn('member_id', $exclude_from_records)
                 ->where('records_rows.when', 'like', '%' . $filter . '%')->get();
             //$records = $records->orderBy('date', 'DESC')->get();
 

+ 2 - 1
app/Models/Member.php

@@ -47,7 +47,8 @@ class Member extends Model
         'mother_doc_number',
         'mother_doc_type',
         'enabled',
-        'no_send_mail'
+        'no_send_mail',
+        'exclude_from_records'
     ];
 
     public function nation()

+ 32 - 0
database/migrations/2024_09_23_164800_add_exclude_to_members_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('members', function (Blueprint $table) {
+            $table->boolean('exclude_from_records')->nullable();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('members', function (Blueprint $table) {
+            $table->dropColumn('exclude_from_records');
+        });
+    }
+};

+ 3 - 3
resources/views/livewire/course_member.blade.php

@@ -46,12 +46,12 @@
             </div>
 
             <div class="filter--item">
-                <span class="filter--item_title">Durata</span>
+                <span class="filter--item_title">Frequenza</span>
 
                 <div class="filter--item_formElement">
-                    <select class="form-select" wire:model="filterDuration" onchange="destroyDataTable()">
+                    <select class="form-select" wire:model="filterFrequency" onchange="destroyDataTable()">
                         <option value="">--Seleziona--
-                        @foreach($course_durations as $c)
+                        @foreach($course_frequencies as $c)
                             <option value="{{$c->id}}">{{$c->name}}
                         @endforeach
                     </select>

+ 16 - 17
resources/views/livewire/member.blade.php

@@ -319,7 +319,7 @@
 
                 <footer>
                     <div class="filter--buttons d-flex align-items-center justify-content-between">
-                        <button class="btn--ui small dark disable"  wire:click.prevent="advancedSearchCancel()" onclick="destroyDataTable()">cancella</button>
+                        <button class="btn--ui small dark disable"  onclick="reset()" onclick="destroyDataTable()">cancella</button>
                         <button class="btn--ui small white" onclick="loadDataTable()">filtra</button>
                     </div>
                 </footer>
@@ -672,6 +672,10 @@
                                                     <input type="checkbox" id="no_send_mail" wire:model="no_send_mail">&nbsp;<label for="birth_place" class="form-label">Non inviare mail ricevuta</label>
                                                 </div>
 
+                                                <div class="col-md-12">
+                                                    <input type="checkbox" id="exclude_from_records" wire:model="exclude_from_records">&nbsp;<label for="birth_place" class="form-label">Escludi da prima nota e entrate/uscite</label>
+                                                </div>
+
                                                 @if($dataId > 0)
                                                     <span class="title-form primary d-block w-100">Stato</span>
                                                     <div class="col-12">
@@ -2009,28 +2013,22 @@
 
         function reset()
         {
-            /*$('input:checkbox.chkCard').each(function () {
-                if (this.checked)
-                {
-                    if (cards != "") cards += ",";
-                    cards += $(this).val();
-                }
+            $('input:checkbox.chkCard').each(function () {
+                $(this).prop( "checked", false );
             });
 
             $('input:checkbox.chkCategory').each(function () {
-                if (this.checked)
-                {
-                    if (categories != "") categories += ",";
-                    categories += $(this).val();
-                }
+                $(this).prop( "checked", false );
             });
 
-            var chkCertificateNormal = $(".chkCertificateNormal").is(':checked') ? "1" : "";
-            var chkCertificateAgonistico = $(".chkCertificateAgonistico").is(':checked') ? "1" : "";
-            var chkCertificateScadenza = $(".chkCertificateScadenza").is(':checked') ? "1" : "";
-            var chkCertificateScaduti = $(".chkCertificateScaduti").is(':checked') ? "1" : "";
+            $(".chkCertificateNormal").prop( "checked", false );
+            $(".chkCertificateAgonistico").prop( "checked", false );
+            $(".chkCertificateScadenza").prop( "checked", false );
+            $(".chkCertificateScaduti").prop( "checked", false );
 
-            var status = $('input[name="chkStatus"]:checked').val();*/
+            $('input[name="chkStatus0"]').prop( "checked", false );
+            $('input[name="chkStatus1"]').prop( "checked", false );
+            $('input[name="chkStatus2"]').prop( "checked", false );
 
             $('input[name="txtFromYear"]').val('');
             $('input[name="txtToYear"]').val('');
@@ -2039,6 +2037,7 @@
             loadDataTable();
         }
 
+
         function loadDataTable()
         {
 

+ 3 - 3
resources/views/livewire/records_in.blade.php

@@ -240,7 +240,6 @@
                                     </div>
                                 </div>
 
-                                @if(false)
                                 <br>
                                 <div class="col-md-12">
                                     <div class="input-group mb-12">
@@ -252,7 +251,6 @@
                                         </div>
                                     </div>
                                 </div>
-                                @endif
 
                                 @if($commercial)
 
@@ -564,6 +562,7 @@
                                             @if($this->member && !$commercial && !$this->member->isAdult() && $parent == '')
                                                 <span style="color:red">Devi selezionare un genitore</span>
                                             @else
+                                                {{$commercial ? 'comm' : 'non comm'}}
                                                 <button class="btn--ui primary sendInvoice mt-5 d-flex ms-auto" wire:click.prevent="update({{!$commercial}})"><i class="ico--ui sendingBtn"></i>inserisci {{!$commercial ? 'genera ricevuta' : ''}}</button>
                                             @endif
                                         @endif
@@ -1010,7 +1009,8 @@
 
         function reset()
         {
-            $('input[name="filterCommercial"]').val(0);
+            setFilterCommercial(0);
+            $('input[name="filterCommercial"][value=0]').prop("checked", true);
             $('.filterMember').val('');
             $('.filterMember').trigger('change');
             $('.filterPaymentMethod').val('');

+ 22 - 2
routes/web.php

@@ -204,7 +204,8 @@ Route::get('/get_members', function(){
     if($chkStatus2 > 0)
         $chkStatus[] = 2;
 
-    if (sizeof($chkStatus))
+
+    if (sizeof($chkStatus) > 0)
     {
         $members = \App\Models\Member::all();
         foreach($members as $m)
@@ -222,6 +223,11 @@ Route::get('/get_members', function(){
     {
         $x = $x->whereIn('id', $ids);
     }
+    else
+    {
+        if (sizeof($chkStatus) > 0)
+            $x = $x->whereIn('id', [-1]);
+    }
 
     $count = $x->count();
 
@@ -355,12 +361,26 @@ Route::get('/get_record_in', function(){
         $limit = $_GET["length"];
     }
 
+    $excludeCausals = [];
+    $borsellino = \App\Models\Causal::where('money', true)->first();
+    if ($borsellino)
+        $excludeCausals[] = $borsellino->id;
+
+    // Aggiungo
+    $excludes = \App\Models\Causal::where('no_records', true)->get();
+    foreach($excludes as $e)
+    {
+        $excludeCausals[] = $e->id;
+    }
+
+    $exclude_from_records = \App\Models\Member::where('exclude_from_records', true)->pluck('id')->toArray();
+
     $total = 0;
     foreach($x->get() as $r)
     {
         foreach($r->rows as $rr)
         {
-            if (!$r->deleted)
+            if (!in_array($rr->member_id, $exclude_from_records) && (!$r->deleted || $r->deleted == null) && !in_array($rr->causal_id, $excludeCausals) && (!$r->financial_movement || $r->financial_movement == null))
             {
                 $total += $rr->amount;
                 if ($rr->vat_id > 0)