62 lines
1.4 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Quote extends Model
{
use HasFactory;
protected $fillable = [
'client_id',
'group_id',
'reference',
'status',
'quote_date',
'valid_until',
'currency',
'total_ht',
'total_tva',
'total_ttc',
];
protected static function booted()
{
static::creating(function ($quote) {
$prefix = 'DEV-' . now()->format('Ym') . '-';
$lastQuote = self::where('reference', 'like', $prefix . '%')
->orderBy('reference', 'desc')
->first();
if ($lastQuote) {
$lastNumber = intval(substr($lastQuote->reference, -4));
$newNumber = $lastNumber + 1;
} else {
$newNumber = 1;
}
$quote->reference = $prefix . str_pad((string)$newNumber, 4, '0', STR_PAD_LEFT);
});
}
protected $casts = [
'quote_date' => 'date',
'valid_until' => 'date',
'total_ht' => 'decimal:2',
'total_tva' => 'decimal:2',
'total_ttc' => 'decimal:2',
];
public function client()
{
return $this->belongsTo(Client::class);
}
public function group()
{
return $this->belongsTo(ClientGroup::class);
}
}