name : Devisedit.php
<?php

namespace App\Livewire\Auto;
use App\Models\{Avenant,TypeVehicule,
    Vehicule, Energie, Produit,
    Compagnie, DureeContrat, Souscripteur,
    Assure, Pay, Ville, Garanties,
    Puissance, PlaceVehicule, Paiement};
use App\Models\contrat\autocontrat;
use Carbon\Carbon;
use Livewire\Component;
use Illuminate\Support\Facades\DB;
// use Livewire\Attributes\Rule;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Auth;

class Devisedit extends Component
{
    //------variable souscripteur-----
    public $raison_sociale = '';
    public $tel_souscripteur = '';
    public $typeSouscripteur = '';
    public $email_souscripteur = '';
    public $ville = '';
    public $pays = '';
    //----------
    //------variable choix produit-----
    public $compagnie = '';
    public $produit = '';
    //----------
    //------variable vehicule-----
    public $immatriculation = '';
    public $marque ='';
    public $modele ='';
    public $puissance ='';
    public $energie ='';
    public $date_mec ='';
    public $typeVehicule ='';
    public $genre ='';
    public $NombrePlaces='';
    //----------
    //------variable caracteristique vehicule-----
    public $valeur_neuve = '';
    public $valeur_venale ='';
    public $NombrePlace ='';
    public $zone_circulation ='';
    public $puissances ='';
    //----------
    //------variable assures-----
    public $Nom_assure ='';
    public $telAssure ='';
    public $email_assure ='';
    //----------
    //------variable couverture-----
    public $date_debut ='';
    public $duree_contrat ='';
    //----------
    //------variable Garanties-----
    public $accs_courtier;
    public $taux_commission;
    public $bonus;
    public $itemGarantie =[];
    //----------
    public $contrat;
    public $idmodal;
    public $IDelementVehicule;
    public $elementAvenant;
    public $months;
    public $souscripteurInfos;
    public $garanties = [];
    
    public $defaultGarantieIds;
    public $totalPrimeNette;
    public $totalAccessoire;
    public $totalTaxe;
    public $totalCedeao;
    public $primeTTC;
    public $ipt;
    public $rc;
    public $dr;
    public $fga;
    public $accs_compagnie;
    public $puissanceVehicule =[];
    public $placesVehicules =[];
    public $resultDate;
    public $resultDateEffet;
    public $totalPrimeBrute;
    public $commissionBrute;
    public $calculefga;
    public $bonus_com;
    //
    public $IDsouscripteur;
    public $IDassure;
    public $IDvehicule;
    public $IDavenant;
    public $IDcontrat;
    

    public function mount($id){

        if (!Auth::check()) {
            return redirect()->route('post.login');
        }

        $this->idmodal = $id;

        $this->elementAvenant = Avenant::find($id);
        $this->IDavenant = $this->elementAvenant->id;

        $assureDetail =  Assure::find($this->elementAvenant->IDassure);
        $this->souscripteurInfos =  Souscripteur::where('id','=',$assureDetail->IDsouscripteur)->first();
        
        $this->contrat = autocontrat::where('IDavenant','=',$id)->first();
        $this->IDelementVehicule = Vehicule::find($this->contrat->IDvehicule);
        $this->IDcontrat = $this->contrat->id; 
      

        $start = Carbon::parse($this->elementAvenant->date_effet);  
        $end = Carbon::parse($this->elementAvenant->date_echeance);

        // Calculer le nombre de mois  
        $this->months = $start->diffInMonths($end) +1;

        // Load default guarantees from the 'tablecontrat'  
        $this->defaultGarantieIds = explode(',', $this->contrat->garanties); // Assuming garanties are stored as comma-separated values  

        // Initialize the itemGarantie for the selected guarantees  
        $this->itemGarantie = $this->defaultGarantieIds;


        //
        $this->raison_sociale = $this->souscripteurInfos->raison_sociale;
        $this->tel_souscripteur = $this->souscripteurInfos->tel_souscripteur;
        $this->typeSouscripteur = $this->souscripteurInfos->typeSouscripteur;
        $this->email_souscripteur = $this->souscripteurInfos->email_souscripteur;
        $this->pays = $this->souscripteurInfos->IDpays_souscripteur;
        $this->ville = $this->souscripteurInfos->IDville_souscripteur;
        $this->IDsouscripteur = $this->souscripteurInfos->id;//id du souscripteur à modifier
        //
        $this->compagnie = $this->elementAvenant->IDcompagnie;
        $this->produit = $this->contrat->IDproduit;
        //
        $this->immatriculation = $this->contrat->vehicule->immatriculation;
        $this->marque = $this->contrat->vehicule->marque;
        $this->modele = $this->contrat->vehicule->modele;
        $this->puissance = $this->contrat->vehicule->puissance;
        $this->IDvehicule = $this->contrat->vehicule->id;//id du vehicule à modifier
        $this->genre = $this->contrat->vehicule->genre;
        $this->NombrePlaces = $this->contrat->vehicule->NombrePlace;
        // $this->energie = $this->IDelementVehicule->IDenergie;
        $this->date_mec = $this->contrat->vehicule->date_mec;
        $this->typeVehicule = $this->IDelementVehicule->typeVehicule;
        //
        $this->valeur_neuve = $this->contrat->valeurNeuve;
        $this->valeur_venale = $this->contrat->ValeurVenale;
        $this->puissances = $this->contrat->IDpuissance;
        $this->NombrePlace = $this->contrat->IDplaceAssise;
        //
        $this->Nom_assure = $this->elementAvenant->assure->nomAssure;
        $this->telAssure = $this->elementAvenant->assure->telAssure;
        $this->email_assure = $this->elementAvenant->assure->emailAssure;
        $this->IDassure = $this->elementAvenant->assure->id;//id de l'assuré à modifier
        //
        

        
        $this->garanties = Garanties::get(["id","Nom_garantie"]);
        // $this->itemGarantie = array_unique(array_merge($this->itemGarantie, $this->defaultGarantieIds)); 
        // Trier les garanties pour que CDEAo, FOND DE GARANTIE, et ACCESSOIRE apparaissent à la fin  

        
        //   explode(',', $this->avenant->garanties);
        foreach ($this->garanties as $g) {
            $prime = DB::table('prime_autos')  
            ->join('garanties', 'prime_autos.IDgarantie', '=', 'garanties.id')  
            ->join('energies', 'prime_autos.IDenergie', '=', 'energies.id')  
            ->join('produits', 'prime_autos.IDproduit', '=', 'produits.id')
            ->join('compagnies', 'prime_autos.IDcompagnie', '=', 'compagnies.id')  
            ->join('duree_contrats', 'prime_autos.IDdureecontrat', '=', 'duree_contrats.id')
            ->join('puissances', 'prime_autos.IDpuissance', '=', 'puissances.id')
            ->join('place_vehicules', 'prime_autos.IDplaceAuto', '=', 'place_vehicules.id') 
            ->where('prime_autos.IDgarantie', $g->id)  
            ->where('prime_autos.IDenergie', $this->energie)  
            ->where('prime_autos.IDproduit',  $this->produit)  
            ->where('prime_autos.IDcompagnie', $this->compagnie)  
            ->where('prime_autos.IDdureecontrat', $this->months)
            ->orWhere('prime_autos.IDpuissance', $this->puissances)
            ->orWhere('prime_autos.IDplaceAuto', $this->NombrePlace)
            ->get(["prime_autos.primeNette"]);
            $g->prime = count($prime) > 0 ? $prime[0]->primeNette : 0;
        }

        
    }

    public function getPrimeCotation($id) {  
      
        // dd($this->energie, $this->produit, $this->compagnie, $this->duree_contrat);
        // Réinitialiser les totaux avant de commencer le calcul 
        $this->fga;
        $this->calculefga = 0;
        $this->totalPrimeBrute = 0; 
        $this->totalPrimeNette = 0;  
        $this->totalAccessoire = 0;  
        $this->totalTaxe = 0;  
        $this->totalCedeao = 0;  
        $this->primeTTC = 0; // Initialisation de la prime TTC  
    
        // Récupérer toutes les garanties  
        $this->garanties = Garanties::all(["id", "Nom_garantie", "sigle"]); // Assurez-vous que "prime" est inclus  
     
        // Définir les types à exclure dans le calcule de la prime nette  
        $typesToExclude = ['ACCESSOIRE', 'TAXE', 'CEDEAO','FGA']; // Liste des types à exclure
    
        // Calculer les primes et stocker dans chaque garantie selon leur type  
        foreach ($this->garanties as $g) { 
            if ($this->puissances) {
                // Activer les montants des garanties uniquement si cochées  
                if (in_array($g->id, $this->itemGarantie) || in_array($g->id, $this->defaultGarantieIds)) {  
                    $prime = DB::table('prime_autos')  
                        ->join('garanties', 'prime_autos.IDgarantie', '=', 'garanties.id')  
                        ->join('energies', 'prime_autos.IDenergie', '=', 'energies.id')  
                        ->join('produits', 'prime_autos.IDproduit', '=', 'produits.id')  
                        ->join('compagnies', 'prime_autos.IDcompagnie', '=', 'compagnies.id')  
                        ->join('duree_contrats', 'prime_autos.IDdureecontrat', '=', 'duree_contrats.id')  
                        ->where('prime_autos.IDgarantie', $g->id)  
                        ->where('prime_autos.IDenergie', $this->energie)  
                        ->where('prime_autos.IDproduit', $this->produit)  
                        ->where('prime_autos.IDcompagnie', $this->compagnie)  
                        ->where('prime_autos.IDdureecontrat', $this->duree_contrat)
                        ->where('prime_autos.IDpuissance', $this->puissances)
                        ->value("prime_autos.primeNette");  
        
                    // Stocker la prime dans l'objet de garantie  
                    $g->prime = $prime ? $prime : 0;  

                    if ($g->sigle == 'RC') {
                        $this->rc = $g->prime;
                    } 
                    // Vérifier les types et additionner dans les variables appropriées  
                    if (in_array($g->sigle, $typesToExclude)) {  
                        if ($g->sigle == 'ACCESSOIRE') {  
                            $this->totalAccessoire += $g->prime;
                            
                        } elseif ($g->sigle == 'TAXE') {  
                            
                        } elseif ($g->sigle == 'CEDEAO') {  
                                $g->prime = 1000;  
                                $this->totalCedeao += $g->prime;  
                        }
                        elseif ($g->sigle == 'FGA') {// calcule FOND DE GARANTIE FGA (2% RC)
                            $g->prime = (int)($this->rc * (0.02));
                            $this->calculefga = $g->prime;
                        }
                    } else {  
                        // Ajouter à la prime nette seulement si cochée et exclue  
                        $this->totalPrimeBrute += $g->prime;
                        $this->totalPrimeNette = $this->totalPrimeBrute;
                        
                    } 
                    //calcule de taxe, en fonction de l'accessoire compagnie
                    $this->totalTaxe = (int)(((int)$this->totalAccessoire + (int)$this->totalPrimeNette)*(0.145)); 
                    
                } 
            }elseif($this->puissances &&  $this->NombrePlace){
                // Activer les montants des garanties uniquement si cochées  
                if (in_array($g->id, $this->itemGarantie) || in_array($g->id, $this->defaultGarantieIds)) {  
                    $prime = DB::table('prime_autos')  
                        ->join('garanties', 'prime_autos.IDgarantie', '=', 'garanties.id')  
                        ->join('energies', 'prime_autos.IDenergie', '=', 'energies.id')  
                        ->join('produits', 'prime_autos.IDproduit', '=', 'produits.id')  
                        ->join('compagnies', 'prime_autos.IDcompagnie', '=', 'compagnies.id')  
                        ->join('duree_contrats', 'prime_autos.IDdureecontrat', '=', 'duree_contrats.id')  
                        ->where('prime_autos.IDgarantie', $g->id)  
                        ->where('prime_autos.IDenergie', $this->energie)  
                        ->where('prime_autos.IDproduit', $this->produit)  
                        ->where('prime_autos.IDcompagnie', $this->compagnie)  
                        ->where('prime_autos.IDdureecontrat', $this->duree_contrat)
                        ->where('prime_autos.IDpuissance', $this->puissances)
                        ->where('prime_autos.IDplaceAuto', $this->NombrePlace)
                        ->value("prime_autos.primeNette");  
        
                    // Stocker la prime dans l'objet de garantie  
                    $g->prime = $prime ? $prime : 0;  

                    if ($g->sigle == 'RC') {
                        $this->rc = $g->prime;
                    }

                    // Vérifier les types et additionner dans les variables appropriées  
                    if (in_array($g->sigle, $typesToExclude)) {  
                        if ($g->sigle == 'ACCESSOIRE') {  
                            $this->totalAccessoire += $g->prime;
                            
                        } elseif ($g->sigle == 'TAXE') {  
                            
                        } elseif ($g->sigle == 'CEDEAO') {  
                               $g->prime = 1000;  
                                $this->totalCedeao += $g->prime;  
                        }
                        elseif ($g->sigle == 'FGA') {// calcule FOND DE GARANTIE FGA (2% RC) 
                            $g->prime = (int)($this->rc * (0.02));
                            $this->calculefga = $g->prime;
                        }
                    } else {  
                        // Ajouter à la prime nette seulement si cochée et exclue  
                        $this->totalPrimeBrute += $g->prime; 
                        $this->totalPrimeNette = $this->totalPrimeBrute;
                    } 
                    //calcule de taxe, en fonction de l'accessoire compagnie
                    $this->totalTaxe = (int)(((int)$this->totalAccessoire + (int)$this->totalPrimeNette)*(0.145)); 
                    
                } 
            }elseif($this->NombrePlace){
                // Activer les montants des garanties uniquement si cochées  
                if (in_array($g->id, $this->itemGarantie) || in_array($g->id, $this->defaultGarantieIds)) {  
                    $prime = DB::table('prime_autos')  
                        ->join('garanties', 'prime_autos.IDgarantie', '=', 'garanties.id')  
                        ->join('energies', 'prime_autos.IDenergie', '=', 'energies.id')  
                        ->join('produits', 'prime_autos.IDproduit', '=', 'produits.id')  
                        ->join('compagnies', 'prime_autos.IDcompagnie', '=', 'compagnies.id')  
                        ->join('duree_contrats', 'prime_autos.IDdureecontrat', '=', 'duree_contrats.id')  
                        ->where('prime_autos.IDgarantie', $g->id)  
                        ->where('prime_autos.IDenergie', $this->energie)  
                        ->where('prime_autos.IDproduit', $this->produit)  
                        ->where('prime_autos.IDcompagnie', $this->compagnie)  
                        ->where('prime_autos.IDdureecontrat', $this->duree_contrat)
                        ->where('prime_autos.IDplaceAuto', $this->NombrePlace)
                        ->value("prime_autos.primeNette");  
        
                    // Stocker la prime dans l'objet de garantie  
                    $g->prime = $prime ? $prime : 0;  

                    if ($g->sigle == 'RC') {
                        $this->rc = $g->prime;
                    }

                    // Vérifier les types et additionner dans les variables appropriées  
                    if (in_array($g->sigle, $typesToExclude)) {  
                        if ($g->sigle == 'ACCESSOIRE') {  
                            $this->totalAccessoire += $g->prime;
                            
                        } elseif ($g->sigle == 'TAXE') {  
                            
                        } elseif ($g->sigle == 'CEDEAO') {  
                            $g->prime = 1000;  
                            $this->totalCedeao += $g->prime; 
                        }
                        elseif ($g->sigle == 'FGA') {// calcule FOND DE GARANTIE FGA (2% RC)  
                            $g->prime = (int)($this->rc * (0.02)); 
                            $this->calculefga = $g->prime; 
                        }
                    } else {  
                        // Ajouter à la prime nette seulement si cochée et exclue  
                        $this->totalPrimeNette += $g->prime;
                        $this->totalPrimeNette = $this->totalPrimeBrute;
                        
                    } 
                    //calcule de taxe, en fonction de l'accessoire compagnie
                    $this->totalTaxe = (int)(((int)$this->totalAccessoire + (int)$this->totalPrimeNette)*(0.145)); 
                    
                }   
            } 
        }  
       
        // Calculer la prime TTC  
        $this->primeTTC =((int)$this->calculefga + (int)$this->totalPrimeNette + (int)$this->totalAccessoire + (int)$this->accs_courtier + (int)$this->totalTaxe + (int)$this->totalCedeao);
        
        $this->updateTotalAccessoire(); 
        $this->calculeBonusCommercial();
    }

    public function updateTotalAccessoire() {  
        // Ajout de la valeur du champ accs_courtier à totalAccessoire  
    
        if (is_numeric($this->accs_courtier)) {  
            // Convertir accs_courtier en float  
            $accsCourtierValue = (float)$this->accs_courtier;  
    
            // Mettre à jour totalAccessoire  
            $this->totalAccessoire += $accsCourtierValue; 
            $this->primeTTC =((int)$this->calculefga + (int)$this->totalPrimeNette + (int)$this->totalAccessoire + (int)$this->totalTaxe + (int)$this->totalCedeao);
    
            // Calculer accs_compagnie seulement si totalAccessoire est différent de accs_courtier  
            if ($this->totalAccessoire > $accsCourtierValue) {  
                $this->accs_compagnie = $this->totalAccessoire - $accsCourtierValue;  
            } else {  
                $this->accs_compagnie = 0; // Optionnel : définit accs_compagnie à 0 si totalAccessoire est égal à accs_courtier  
            }  
        }  
    } 
    
    public function calculeBonusCommercial(){ //calcule du bonus commercial
        if ($this->bonus_com && $this->bonus_com !='') {
            $this->totalPrimeNette = (int) ($this->totalPrimeBrute * ((int)$this->bonus_com/100));
            $this->totalTaxe = (int)(((int)$this->totalAccessoire + (int)$this->totalPrimeNette)*(0.145));
            $this->primeTTC =((int)$this->calculefga + (int)$this->totalPrimeNette + (int)$this->totalAccessoire + (int)$this->totalTaxe + (int)$this->totalCedeao); 
        }elseif(!$this->bonus_com && $this->bonus_com ==''){
            $this->totalPrimeNette = $this->totalPrimeBrute;
            $this->totalTaxe = (int)(((int)$this->totalAccessoire + (int)$this->totalPrimeNette)*(0.145));
            $this->primeTTC =((int)$this->calculefga + (int)$this->totalPrimeNette + (int)$this->totalAccessoire + (int)$this->totalTaxe + (int)$this->totalCedeao); 
        }
    }

    public function GetPuissance(){
        
        if ($this->produit || $this->energie) {
            switch ($this->produit) {
                case '9'://produit tourisme
                    $this->puissanceVehicule = Puissance::Where('IDproduit',$this->produit)
                     ->where('IDenergie', $this->energie)->get();
                     $this->placesVehicules =[];
                    break;
                case '2'://produit TPPC
                    $this->puissanceVehicule = Puissance::Where('IDproduit',$this->produit)->get();
                    $this->placesVehicules =[];
                    break;
                case '3'://produit TPM
                    $this->puissanceVehicule = Puissance::Where('IDproduit',$this->produit)->get();
                    $this->placesVehicules =[];
                    break;
                case '4'://produit deux roues ou trois roues
                    $this->puissanceVehicule = Puissance::Where('IDproduit',$this->produit)->get();
                    $this->placesVehicules =[];
                    break;
                case '1'://produit TPV
                    $this->placesVehicules = PlaceVehicule::orderBy('id','asc')->get();
                    $this->puissanceVehicule =[];
                    break;
                default:
                $this->puissanceVehicule =[];
                $this->placesVehicules =[];
                    break;
            }
        }
        
    }

    public function DureeContrat(){//detertminer la date d'échéance du contrat
        
        // Créez une instance de la date  
        $date = Carbon::parse($this->date_debut); // Obtenez la date sous forme d'objet Carbon  
        $dateEffet = Carbon::parse($this->date_debut);
        // Ajoutez le nombre de mois   
        $duree = (int) $this->duree_contrat; 
        
        $date->addMonths($duree);
        // Soustrayez le nombre de jours  
        $date->subDays(1);   

        // Obtenez la nouvelle date au format 'd/m/Y'  
        $this->resultDate = $date->format('d/m/Y');
        $this->resultDateEffet = $dateEffet->format('d/m/Y');
    }

    

    public function enregistrer(){
        $validate = $this->validate([
                'raison_sociale'=>['required'],
                'typeSouscripteur'=>['required'],
                'email_souscripteur'=>['nullable','email'], //Rule::unique('souscripteurs')->ignore($this->IDsouscripteur)
                'ville'=>['nullable'],
                'tel_souscripteur'=>['nullable'], //Rule::unique('souscripteurs')->ignore($this->IDsouscripteur)
                'compagnie'=>['required','exists:compagnies,id'],
                'produit'=>['required','exists:produits,id'],
                'immatriculation'=>['required'], //Rule::unique('vehicules')->ignore($this->IDvehicule)
                'marque'=>['required'],
                'energie'=>['required','exists:energies,id'],
                'puissances'=>['nullable','requiredIf:puissances,exists'],
                'genre'=>['required'],
                'NombrePlaces'=>['required','numeric'],
                'Nom_assure'=>['required'],
                'telAssure'=>['required'], //Rule::unique('assures')->ignore($this->IDassure)
                'email_assure'=>['nullable','email'], //Rule::unique('assures')->ignore($this->IDassure)
                'date_debut'=>['required'],
                'duree_contrat'=>['required','exists:duree_contrats,id'],
                'accs_courtier'=>['required','numeric'],
                'taux_commission'=>['required','numeric'],
            
        ]);

        // dd($this->IDsouscripteur, $this->IDassure, $this->IDvehicule, $this->IDavenant, $this->resultDate, $this->IDcontrat, $this->primeTTC, $this->totalPrimeNette);

        $soucripteur = Souscripteur::where('id', $this->IDsouscripteur)->update([//-----------SOUSCRIPTEUR
                'raison_sociale'=> $this->raison_sociale,
                'tel_souscripteur'=> $this->tel_souscripteur,
                'email_souscripteur'=> $this->email_souscripteur,
                'IDpays_souscripteur'=> $this->pays,
                'IDville_souscripteur'=> $this->ville,
                'typeSouscripteur'=> $this->typeSouscripteur,
        ]);//--------------SOUSCRIPTEUR

        $assure = Assure::where('id', $this->IDassure)->update([//-----------ASSURE
                'nomAssure'=> $this->Nom_assure,
                'telAssure'=> $this->telAssure,
                'emailAssure'=> $this->email_assure,
        ]);//--------------ASSURE

        $vehicule = Vehicule::where('id', $this->IDvehicule)->update([//-----------ASSURE
                'IDenergie'=>$this->energie,
                'immatriculation'=> $this->immatriculation,
                'marque'=> $this->marque,
                'modele'=> $this->modele,
                'puissance'=>$this->puissance,
                'typeVehicule'=>$this->typeVehicule,
                'NombrePlace'=>$this->NombrePlaces,
                'genre'=>$this->genre,
                'date_mec'=>date('Y-m-d',strtotime(str_replace('/','-',$this->date_mec))),
        ]);//--------------ASSURE

        $avenant = Avenant::where('id', $this->IDavenant)->update([//-----------AVENANT
                'IDcompagnie'=>$this->compagnie,
                'date_effet'=>date('Y-m-d',strtotime(str_replace('/','-',$this->date_debut))),
                'date_echeance'=>date('Y-m-d',strtotime(str_replace('/','-',$this->resultDate))),
                'mvt_ordre'=> 0,
                'mvt_avenant'=> "NOUVELLE AFFAIRE",
                'status_avenant'=>"devis",
                'typeAvenant'=>'mono'
        ]);//--------------AVENANT

        $this->commissionBrute = (int) ((int) $this->totalPrimeNette * ((int)$this->taux_commission/100));//calcule commission brute
        
        if ($this->puissances) {
            $autocontrat = autocontrat::where('id', $this->IDcontrat)->update([//-----------CONTRAT
                    'IDproduit'=>$this->produit,
                    'garanties'=>implode(',', $this->itemGarantie),
                    'IDpuissance'=>$this->puissances,
                    'IDrisque'=>1,//Id risque automobile
                    'exercice'=>date("Y"),//année de l'execice courant
                    'bonus_commerciale'=>$this->bonus_com,
                    'prime_ttc'=>(int) $this->primeTTC,
                    'prime_brute'=>(int)$this->totalPrimeBrute,
                    'prime_nette'=>(int)$this->totalPrimeNette,
                    'accs_compagnie'=>(int)$this->accs_compagnie,
                    'accs_courtier'=>(int)$this->accs_courtier,
                    'taxe'=>(int)$this->totalTaxe,
                    'fga'=>(int)$this->calculefga,
                    'cdeao'=>(int)$this->totalCedeao,
                    'commission'=>(int)$this->commissionBrute,
                    'etat'=>'devis',
                    'valeurNeuve'=>(int)$this->valeur_neuve,
                    'ValeurVenale'=>(int)$this->valeur_venale,
                    'commission_nette'=>(int)(((int)$this->commissionBrute - ((int)$this->commissionBrute*7.5/100)) + $this->accs_courtier),
                ]);//--------------CONTRAT
        }elseif($this->NombrePlace){
            $autocontrat = autocontrat::where('id', $this->IDcontrat)->update([//-----------CONTRAT
                'IDproduit'=>$this->produit,
                'garanties'=>implode(',', $this->itemGarantie),
                'IDpuissance'=>$this->puissances,
                'IDrisque'=>1,//Id risque automobile
                'exercice'=>date("Y"),//année de l'execice courant
                'bonus_commerciale'=>$this->bonus_com,
                'prime_ttc'=>(int) $this->primeTTC,
                'prime_brute'=>(int)$this->totalPrimeBrute,
                'prime_nette'=>(int)$this->totalPrimeNette,
                'accs_compagnie'=>(int)$this->accs_compagnie,
                'accs_courtier'=>(int)$this->accs_courtier,
                'taxe'=>(int)$this->totalTaxe,
                'fga'=>(int)$this->calculefga,
                'cdeao'=>(int)$this->totalCedeao,
                'commission'=>(int)$this->commissionBrute,
                'etat'=>'devis',
                'valeurNeuve'=>(int)$this->valeur_neuve,
                'ValeurVenale'=>(int)$this->valeur_venale,
                'commission_nette'=>(int)(((int)$this->commissionBrute - ((int)$this->commissionBrute*7.5/100)) + $this->accs_courtier),
            ]);//--------------CONTRAT
        }elseif($this->puissances && $this->NombrePlace){
            $autocontrat = autocontrat::where('id', $this->IDcontrat)->update([//-----------CONTRAT
                'IDproduit'=>$this->produit,
                'garanties'=>implode(',', $this->itemGarantie),
                'IDpuissance'=>$this->puissances,
                'IDrisque'=>1,//Id risque automobile
                'exercice'=>date("Y"),//année de l'execice courant
                'bonus_commerciale'=>$this->bonus_com,
                'prime_ttc'=>(int) $this->primeTTC,
                'prime_brute'=>(int)$this->totalPrimeBrute,
                'prime_nette'=>(int)$this->totalPrimeNette,
                'accs_compagnie'=>(int)$this->accs_compagnie,
                'accs_courtier'=>(int)$this->accs_courtier,
                'taxe'=>(int)$this->totalTaxe,
                'fga'=>(int)$this->calculefga,
                'cdeao'=>(int)$this->totalCedeao,
                'commission'=>(int)$this->commissionBrute,
                'etat'=>'devis',
                'valeurNeuve'=>(int)$this->valeur_neuve,
                'ValeurVenale'=>(int)$this->valeur_venale,
                'commission_nette'=>(int)(((int)$this->commissionBrute - ((int)$this->commissionBrute*7.5/100)) + $this->accs_courtier),
            ]);//--------------CONTRAT
        }

        $reste_a_payer = (int) ((int)$this->primeTTC - 0);// CALCULE DU RESTE A PAYER

        $paiement = Paiement::where('id', $this->IDavenant)->update([//-----------PAIEMENT
            'status_paiement'=> $reste_a_payer == 0 ? 'payé' : 'impayé',
            'Reste_a_payer'=> (int)$reste_a_payer,
        ]);//--------------PAIEMENT

        session()->flash('message', 'Cotation mis à jour avec succès.');
        return redirect()->to('/cotation/momo-vehicule');

    }


    public function render()
    {
        
        return view('livewire.auto.devisedit',[
            'type_vehicules'=>TypeVehicule::get(),
            'energies'=>Energie::get(),
            'produits'=>Produit::get(),
            'compagnies'=>Compagnie::get(),
            'dureesContrats'=>DureeContrat::get(),
            'villes'=>Ville::get(),
            'pays_c'=>Pay::get(),
            'IDcompagnie'=>$this->elementAvenant->IDcompagnie,
        ]);
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password