pdv.backend/app/Models/InventorySerial.php
Juan Felipe Zapata Moreno 810aff1b0e WIP: Serials
2026-01-16 17:37:39 -06:00

65 lines
1.3 KiB
PHP

<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Modelo para números de serie de inventario
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
* @version 1.0.0
*/
class InventorySerial extends Model
{
protected $fillable = [
'inventory_id',
'serial_number',
'status',
'sale_detail_id',
'notes',
];
protected $casts = [
'status' => 'string',
];
public function inventory()
{
return $this->belongsTo(Inventory::class);
}
public function saleDetail()
{
return $this->belongsTo(SaleDetail::class);
}
/**
* Verificar si el serial está disponible
*/
public function isAvailable(): bool
{
return $this->status === 'disponible';
}
/**
* Marcar como vendido
*/
public function markAsSold(int $saleDetailId): void
{
$this->update([
'status' => 'vendido',
'sale_detail_id' => $saleDetailId,
]);
}
/**
* Marcar como disponible (ej: cancelación de venta)
*/
public function markAsAvailable(): void
{
$this->update([
'status' => 'disponible',
'sale_detail_id' => null,
]);
}
}