feat: add Devis and BesoinInformatique modules
- Devis: CRUD complet, génération PDF (dompdf), paramètres (DevisSetting) - BesoinInformatique: CRUD complet avec gestion matériels/licences - Migrations pour les 3 nouvelles tables - Navigation mise à jour dans AuthenticatedLayout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
030d76af53
commit
7312c7640b
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Devis extends Model
|
||||
{
|
||||
protected $guarded = [];
|
||||
|
||||
protected $casts = [
|
||||
'items' => 'array',
|
||||
'date_devis' => 'date',
|
||||
'total_ht' => 'decimal:2',
|
||||
'total_ttc' => 'decimal:2',
|
||||
'tva_rate' => 'decimal:2',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($devis) {
|
||||
if (empty($devis->number)) {
|
||||
$year = date('Y');
|
||||
$prefix = sprintf('DEV-%s-', $year);
|
||||
$last = static::where('number', 'like', $prefix . '%')
|
||||
->max('number');
|
||||
$next = $last ? (intval(substr($last, strlen($prefix))) + 1) : 1;
|
||||
$devis->number = $prefix . sprintf('%04d', $next);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user