Bläddra i källkod

Gestione borsellino

Luca Parisio 2 år sedan
förälder
incheckning
ff71583fc7

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

@@ -6,7 +6,7 @@ use Livewire\Component;
 
 class Causal extends Component
 {
-    public $records, $parent_id,  $name, $enabled, $type, $dataId, $update = false, $add = false;
+    public $records, $parent_id,  $name, $enabled, $money, $type, $dataId, $update = false, $add = false;
 
     protected $rules = [
         'name' => 'required',
@@ -21,6 +21,7 @@ class Causal extends Component
         $this->name = '';
         $this->parent_id = null;
         $this->type = null;
+        $this->money = false;
         $this->enabled = true;
     }
 
@@ -54,6 +55,7 @@ class Causal extends Component
                 'name' => $this->name,
                 'type' => $this->type,
                 'parent_id' => $this->parent_id,
+                'money' => $this->money,
                 'enabled' => $this->enabled
             ]);
             session()->flash('success','Causale creata');
@@ -71,6 +73,7 @@ class Causal extends Component
                 session()->flash('error','Causale non trovata');
             } else {
                 $this->name = $causal->name;
+                $this->money = $causal->money;
                 $this->enabled = $causal->enabled;
                 $this->type = $causal->type;
                 $this->parent_id = $causal->parent_id;
@@ -91,6 +94,7 @@ class Causal extends Component
                 'name' => $this->name,
                 'type' => $this->type,
                 'parent_id' => $this->parent_id,
+                'money' => $this->money,
                 'enabled' => $this->enabled
             ]);
             session()->flash('success','Tessera aggiornata');

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

@@ -6,7 +6,7 @@ use Livewire\Component;
 
 class PaymentMethod extends Component
 {
-    public $records, $name, $enabled, $dataId, $bank_id, $update = false, $add = false;
+    public $records, $name, $enabled, $money, $dataId, $bank_id, $update = false, $add = false;
 
     public $banks = array();
 
@@ -20,6 +20,7 @@ class PaymentMethod extends Component
 
     public function resetFields(){
         $this->name = '';
+        $this->money = false;
         $this->enabled = true;
     }
 
@@ -48,6 +49,7 @@ class PaymentMethod extends Component
             \App\Models\PaymentMethod::create([
                 'name' => $this->name,
                 'bank_id' => $this->bank_id,
+                'money' => $this->money,
                 'enabled' => $this->enabled
             ]);
             session()->flash('success','Metodo pagamento creato');
@@ -66,6 +68,7 @@ class PaymentMethod extends Component
             } else {
                 $this->name = $payment_method->name;
                 $this->enabled = $payment_method->enabled;
+                $this->money = $payment_method->money;
                 $this->bank_id = $payment_method->bank_id;
                 $this->dataId = $payment_method->id;
                 $this->update = true;
@@ -83,6 +86,7 @@ class PaymentMethod extends Component
             \App\Models\PaymentMethod::whereId($this->dataId)->update([
                 'name' => $this->name,
                 'bank_id' => $this->bank_id,
+                'money' => $this->money,
                 'enabled' => $this->enabled
             ]);
             session()->flash('success','Metodo pagamento aggiornato');

+ 30 - 0
app/Http/Livewire/RecordIN.php

@@ -13,10 +13,13 @@ class RecordIN extends Component
     $year,
     $type,
     $amount,
+    $virtual,
     $commercial, $update = false, $add = false;
 
     public $selectedFilter = 0;
 
+    public $canSave = true;
+
     public $causals = array();
     public $payments = array();
     public $members = array();
@@ -35,6 +38,33 @@ class RecordIN extends Component
         'amount.required' => 'L\'importo è obbligatorio',
     ];
 
+    public function updatedMemberId() {
+        $member = \App\Models\Member::findOrFail($this->member_id);
+        $this->virtual = $member->getMoney();
+    }
+
+    public function updatedPaymentMethodId() {
+        $this->canSave = $this->checkCanSave();
+    }
+
+    public function updatedAmount() {
+        $this->canSave = $this->checkCanSave();
+    }
+
+    public function checkCanSave()
+    {
+        $ret = true;
+        if ($this->payment_method_id != null)
+        {
+            $payment_method = \App\Models\PaymentMethod::findOrFail($this->payment_method_id);
+            if ($payment_method->money)
+            {
+                $ret = $this->virtual >= $this->amount;
+            }
+        }
+        return $ret;
+    }
+
     public function resetFields(){
         $this->member_id = null;
         $this->supplier_id = null;

+ 37 - 0
app/Http/Livewire/Reminder.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Http\Livewire;
+use Livewire\Component;
+
+class Reminder extends Component
+{
+    public $records, $dataId;
+
+    public $selectedFilter = 0;
+
+    public function mount()
+    {
+    }
+
+    public function render()
+    {
+
+        $member_cards = \App\Models\MemberCard::with('member')->where('expire_date', '>', date("y-m-d"))->orderBy('expire_date')->get();
+        foreach($member_cards as $member_card)
+        {
+            $this->records[] = array('type' => 'Tessera', 'name' => $member_card->member->first_name . " " . $member_card->member->last_name, 'date' => $member_card->expire_date);
+        }
+
+        $member_certificates = \App\Models\MemberCertificate::with('member')->where('expire_date', '>', date("y-m-d"))->orderBy('expire_date')->get();
+        foreach($member_certificates as $member_certificate)
+        {
+            $this->records[] = array('type' => 'Certificato', 'name' => $member_certificate->member->first_name . " " . $member_certificate->member->last_name, 'date' => $member_certificate->expire_date);
+        }
+
+        $key_values = array_column($this->records, 'date');
+        array_multisort($key_values, SORT_ASC, $this->records);
+
+        return view('livewire.reminders');
+    }
+
+}

+ 1 - 0
app/Models/Causal.php

@@ -13,6 +13,7 @@ class Causal extends Model
         'parent_id',
         'name',
         'type',
+        'money',
         'enabled'
     ];
 

+ 24 - 0
app/Models/Member.php

@@ -73,4 +73,28 @@ class Member extends Model
         return $ret;
     }
 
+    public function getMoney()
+    {
+        $ret = 0;
+        // Soldi virtuali caricati
+        $records = \App\Models\Record::where('member_id', $this->id)->where('type', 'IN')->with('causal')->get();
+        foreach($records as $record)
+        {
+            if ($record->causal->money == 1)
+            {
+                $ret += $record->amount;
+            }
+        }
+        // Soldi virtuali spesi
+        $records = \App\Models\Record::where('member_id', $this->id)->where('type', 'IN')->with('payment_method')->get();
+        foreach($records as $record)
+        {
+            if ($record->payment_method->money == 1)
+            {
+                $ret -= $record->amount;
+            }
+        }
+        return $ret;
+    }
+
 }

+ 1 - 0
app/Models/PaymentMethod.php

@@ -11,6 +11,7 @@ class PaymentMethod extends Model
 
     protected $fillable = [
         'name',
+        'money',
         'enabled',
         'bank_id'
     ];

+ 1 - 0
database/migrations/2023_03_24_150205_create_payment_methods_table.php

@@ -18,6 +18,7 @@ return new class extends Migration
             $table->unsignedBigInteger('bank_id')->nullable();
             $table->foreign('bank_id')->nullable()->references('id')->on('banks')->onUpdate('cascade')->onDelete('cascade');
             $table->string('name');
+            $table->integer('money')->default(0);
             $table->integer('enabled')->default(1);
             $table->softDeletes();
             $table->timestamps();

+ 1 - 0
database/migrations/2023_03_24_150306_create_causals_table.php

@@ -19,6 +19,7 @@ return new class extends Migration
             $table->foreign('parent_id')->nullable()->references('id')->on('causals')->onUpdate('cascade')->onDelete('cascade');
             $table->string('name');
             $table->enum('type', ['IN', 'OUT']);
+            $table->integer('money')->default(0);
             $table->integer('enabled')->default(1);
             $table->softDeletes();
             $table->timestamps();

+ 2 - 2
resources/views/layouts/app.blade.php

@@ -57,8 +57,8 @@
 
                 <ul class="nav nav-pills flex-column align-items-center align-items-sm-start w-100" id="menu-scadenze">
                     <li class="nav-item">
-                        <a href="#" class="nav-link d-flex align-items-center">
-                            <i class="ico--ui ico--ui_menu scadenze"></i> <span class="ms-3 d-none d-md-inline">Scadenze</span> <span class="badge-menu d-flex align-items-center justify-content-center ms-2">6</span>
+                        <a href="/reminders" class="nav-link d-flex align-items-center">
+                            <i class="ico--ui ico--ui_menu scadenze"></i> <span class="ms-3 d-none d-md-inline">Scadenze</span> <!--<span class="badge-menu d-flex align-items-center justify-content-center ms-2">6</span>-->
                         </a>
                     </li>
                 </ul>

+ 7 - 0
resources/views/livewire/causal.blade.php

@@ -91,6 +91,13 @@
                             </div>
                         </div>
 
+                        <div class="form--item mb-3">
+                            <div class="form-check form-check-inline">
+                                <input class="form-check-input" type="checkbox" id="money" wire:model="money">
+                                <label class="form-check-label" for="money">Incrementa borsellino virtuale</label>
+                            </div>
+                        </div>
+
                         <!-- // inline input field -->
 
                         <div class="form--item">

+ 7 - 0
resources/views/livewire/payment_method.blade.php

@@ -131,6 +131,13 @@
                             </div>
                         </div>
 
+                        <div class="form--item mb-3">
+                            <div class="form-check form-check-inline">
+                                <input class="form-check-input" type="checkbox" id="money" wire:model="money">
+                                <label class="form-check-label" for="money">Decrementa borsellino virtuale</label>
+                            </div>
+                        </div>
+
 
                         <!-- // inline input field -->
 

+ 15 - 7
resources/views/livewire/records_in.blade.php

@@ -152,8 +152,12 @@
                                     @endforeach
                                 </select>
                             </div>
-                            <div class="col-md-6">
-
+                            <div class="col-md-3"></div>
+                            <div class="col-md-3">
+                                @if($this->member)
+                                    <span class="title-form d-block w-100">Borsellino virtuale</span>
+                                    <b>{{number_format($virtual, 2, ".", "")}} &euro;</b>
+                                @endif
                             </div>
                         </div>
 
@@ -201,11 +205,15 @@
                         </div>
                         <div class="accountingEntry--btn d-flex align-items-center justify-content-between">
                             <button class="btn--ui lightGrey"  type="submit" wire:click.prevent="cancel()">annulla</button>
-                            @if($add)
-                                <button class="btn--ui primary"  type="submit" wire:click.prevent="store()">inserisci</button>
-                            @endif
-                            @if($update)
-                                <button class="btn--ui primary"  type="submit" wire:click.prevent="update()">salva</button>
+                            @if($canSave)
+                                @if($add)
+                                    <button class="btn--ui primary"  type="submit" wire:click.prevent="store()">inserisci</button>
+                                @endif
+                                @if($update)
+                                    <button class="btn--ui primary"  type="submit" wire:click.prevent="update()">salva</button>
+                                @endif
+                            @else
+                                <span style="color:red">Attenzione : non c'è credito sufficiente sul borsellino virtuale</span>
                             @endif
 
                         </div>

+ 60 - 0
resources/views/livewire/reminders.blade.php

@@ -0,0 +1,60 @@
+<div>
+
+     <header id="title--section" class="d-flex align-items-center justify-content-between">
+        <div class="title--section_name d-flex align-items-center justify-content-between">
+            <i class="ico--ui title_section utenti me-2"></i>
+            <h2 class="primary">Scadenze</h2>
+        </div>
+
+    </header>
+
+    <section id="resume-table">
+        <div class="compare--chart_wrapper d-none"></div>
+
+        <table class="table tablesaw tablesaw-stack" data-tablesaw="" id="tablesaw-350">
+            <thead>
+                <tr>
+                    <th scope="col">Tipologia</th>
+                    <th scope="col">Data</th>
+                    <th scope="col">Persona</th>
+                </tr>
+            </thead>
+            <tbody id="checkall-target">
+                @foreach($records as $record)
+                    <tr>
+                        <td>{{$record["type"]}}</td>
+                        <td>{{date("d/m/Y", strtotime($record["date"]))}}</td>
+                        <td>{{$record["name"]}}</td>
+                    </tr>
+                @endforeach
+            </tbody>
+        </table>
+        <!--
+        <div class="paginator d-flex justify-content-center">
+            <nav aria-label="Page navigation example">
+                <ul class="pagination">
+                    <li class="page-item">
+                    <a class="page-link" href="#" aria-label="Previous">
+                        <span aria-hidden="true"></span>
+                    </a>
+                    </li>
+                    <li class="page-item"><a class="page-link" href="#">1</a></li>
+                    <li class="page-item"><a class="page-link" href="#">2</a></li>
+                    <li class="page-item"><a class="page-link" href="#">3</a></li>
+                    <li class="page-item"><a class="page-link" href="#">3</a></li>
+
+                    <li class="page-item"><span class="more-page">...</span></li>
+
+                    <li class="page-item">
+                    <a class="page-link" href="#" aria-label="Next">
+                        <span aria-hidden="true"></span>
+                    </a>
+                    </li>
+                </ul>
+                </nav>
+        </div>
+        -->
+    </section>
+
+
+</div>

+ 1 - 0
routes/web.php

@@ -31,5 +31,6 @@ Route::get('/payment_methods', \App\Http\Livewire\PaymentMethod::class);
 Route::get('/members', \App\Http\Livewire\Member::class);
 Route::get('/suppliers', \App\Http\Livewire\Supplier::class);
 Route::get('/records', \App\Http\Livewire\Record::class);
+Route::get('/reminders', \App\Http\Livewire\Reminder::class);
 Route::get('/in', \App\Http\Livewire\RecordIN::class);
 Route::get('/out', \App\Http\Livewire\RecordOUT::class);