name : ReversementsExport.php
<?php

namespace App\Exports;

use App\Models\Avenant;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Illuminate\Support\Facades\DB;

class ReversementsExport implements FromQuery, WithHeadings
{
    protected $risque;
    protected $compagnie;
    protected $search_dateDebut;
    protected $search_dateFin;

    public function __construct($risque, $compagnie, $search_dateDebut, $search_dateFin)
    {
        $this->risque = $risque;
        $this->compagnie = $compagnie;
        $this->search_dateDebut = $search_dateDebut;
        $this->search_dateFin = $search_dateFin;
    }

    public function query()
    {
        return Avenant::select(
            'avenants.date_creation',
            'a.nomAssure', 
            'avenants.police',
            'veh.immatriculation', 
            'avenants.date_effet',
            'avenants.date_echeance',
            'ac.prime_nette', 
            'ac.accs_compagnie',
            'ac.accs_courtier',
            'ac.taxe',
            'ac.fga',
            'ac.cdeao',
            'ac.prime_ttc',
            'ac.bonus_commerciale',
            'ac.commission',
            'user.name',
            DB::raw('(ac.prime_ttc - ac.commission) AS montant_a_reverser')
        )
        ->leftJoin('compagnies as c', 'c.id', '=', 'avenants.IDcompagnie')
        ->leftJoin('assures as a', 'a.id', '=', 'avenants.IDassure')
        ->leftJoin('users as user', 'user.id', '=', 'avenants.IDuser')   
        ->leftJoin('autocontrats as ac', 'ac.IDavenant', '=', 'avenants.id')
        ->leftJoin('vehicules as veh', 'veh.id', '=', 'ac.IDvehicule')
        ->where('avenants.status_avenant', 'production')
        ->where('ac.IDrisque', '=', $this->risque)
        ->where('avenants.IDcompagnie', '=', $this->compagnie)
        ->whereBetween('avenants.date_creation', [$this->search_dateDebut, $this->search_dateFin])
        ->where('ac.etat', 'production')
        ->orderBy('avenants.date_creation', 'asc');
    }

    public function headings(): array
    {
        return [
            'Date Enreg.',
            'Assure',
            'Police',
            'Immat',
            'Effet',
            'Echéance',
            'Prime Nette',
            'Acs Compagnie',
            'Acs Courtier',
            'Taxe',
            'FGA',
            'Cedea',
            'Prime TTC',
            'Taux',
            'Com Brute',
            'Operateur',
            'TTC a Reverser'
        ];
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password