name : Createpaiement.php
<?php

namespace App\Livewire\Paiment;

use Livewire\Component;

use Livewire\Attributes\Title;
use App\Models\contrat\autocontrat;
use Livewire\Attributes\Validate; 
use App\Models\{Garanties,Produit,
    Compagnie, Energie,DureeContrat,
    Avenant, Paiement,Devise, Souscripteur,
    Assure, Vehicule,
};
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Livewire\Attributes\Rule;
use Illuminate\Support\Facades\Auth;

class Createpaiement extends Component
{

    public $totalPrimeTTC;
    public $totalVersement;
    public $montant_a_payer;
    public $contratReglementDetail;

    #[Validate('required')]
    public $montantRecu;
    public $Idavenant;
    public $devise;
    public $cours;

    public function mount($id)
    {
        if (!Auth::check()) {
            return redirect()->route('post.login');
        }

        $this->totalPrimeTTC = Avenant::leftJoin('autocontrats as ac', 'ac.IDavenant', '=', 'avenants.id')  
        ->where('avenants.id', $id) // Utilisation de l'ID de l'avenant directement  
        ->sum('ac.prime_ttc');

        $this->totalVersement = Avenant::leftJoin('paiements as p', 'p.IDavenant', '=', 'avenants.id')  
        ->where('avenants.id', $id) // Utilisation de l'ID de l'avenant directement  
        ->sum('p.montantRecu');

        
        $this->montant_a_payer = Paiement::where('IDavenant', $id)  
        ->orderBy('id', 'desc')  
        ->value('Reste_a_payer');

       $this->contratReglementDetail = Paiement::where('IDavenant', $id)->orderBy('id', 'asc')->get();
       $this->Idavenant = $id;
    }

    public function save(){

        $validate = $this->validate([
            'montantRecu'=>'required|numeric',
            'devise'=>'required|exists:devises,id',
            'cours'=>'required|numeric',
          ]);
       
       if ($this->Idavenant && $this->devise && $this->cours) {
          $verse = ((int)$this->totalVersement + (int)$this->montantRecu);
          $reste = ((int)$this->totalPrimeTTC - (int)$verse);
          
          if ($verse <= $this->totalPrimeTTC ) {
            $paiement = Paiement::create([//--------------PAIEMANT
                'IDavenant'=> $this->Idavenant,
                'IDdevise'=> $this->devise,
                'status_paiement'=> $reste == 0 ? 'payé' : 'impayé',
                'cours'=>$this->cours,
                'montantRecu'=> (int)$this->montantRecu,
                'Reste_a_payer'=> (int)$reste,
                ]);//-------------PAIEMENT
                
                return redirect()->to('/contrat/impaye/auto'); 
          }else{
            session()->flash('message', 'Veuillez verifier le montant versé.');
          }
       }else{
           session()->flash('erreur', 'Erreur. Veuillez renseingner les champs.');
       }
    }


    #[Title('Paiement de la prime')]
    public function render()
    {
        $devises = Devise::get();
        return view('livewire.paiment.createpaiement',[
           'devises'=>$devises,
        ]);
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password