135 lines
3.8 KiB
PHP
Raw Normal View History

2025-03-05 20:44:45 -06:00
<?php
namespace Koneko\VuexyWarehouse\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Koneko\VuexyStoreManager\Models\Currency;
use Koneko\SatCatalogs\Models\ClaveUnidad;
use Koneko\SatCatalogs\Models\ClaveProdServ;
use Koneko\VuexyAdmin\Models\User;
class Product extends Model
{
use HasFactory;
protected $table = 'products';
protected $primaryKey = 'id';
public $incrementing = false;
protected $keyType = 'mediumint';
protected $fillable = [
'type',
'category_id',
'descripcion',
'descripcion_completa',
'no_identificacion',
'slug',
'available_in_pos',
'available_in_purchases',
'available_in_ecommerce',
'available_in_purchases',
'available_in_maanufacturing',
'available_in_quality',
'available_in_assets',
'c_clave_unidad',
'c_clave_prod_serv',
'ean_code',
'costo',
'c_moneda',
'c_objeto_imp',
'impuestos',
'traslados',
'retenciones',
'data_lot_enable',
'data_lot_require',
'data_series_enable',
'data_series_require',
'data_expiration_enable',
'data_expiration_require',
'data_warranty_enable',
'warranty',
'data_best_before_enable',
'data_best_before_require',
'data_observations_enable',
'minimum_unit',
'affects_inventory',
'alert_minimum_stock',
'alert_maximum_stock',
'minimum_stock',
'maximum_stock',
'status',
'created_by'
];
protected $casts = [
'available_in_pos',
'available_in_purchases' => 'boolean',
'available_in_ecommerce' => 'boolean',
'available_in_purchases' => 'boolean',
'available_in_maanufacturing' => 'boolean',
'available_in_quality' => 'boolean',
'available_in_assets' => 'boolean',
'costo' => 'decimal:2',
'traslados' => 'decimal:6',
'retenciones' => 'decimal:6',
'minimum_unit' => 'decimal:6',
'minimum_stock' => 'decimal:6',
'maximum_stock' => 'decimal:6',
'data_lot_enable' => 'boolean',
'data_lot_require' => 'boolean',
'data_series_enable' => 'boolean',
'data_series_require' => 'boolean',
'data_expiration_enable' => 'boolean',
'data_expiration_require' => 'boolean',
'data_warranty_enable' => 'boolean',
'data_best_before_enable' => 'boolean',
'data_best_before_require' => 'boolean',
'data_observations_enable' => 'boolean',
'affects_inventory' => 'boolean',
'alert_minimum_stock' => 'boolean',
'alert_maximum_stock' => 'boolean',
];
/**
* Relación con la categoría del producto.
*/
public function category(): BelongsTo
{
return $this->belongsTo(ProductCategory::class, 'category_id');
}
/**
* Relación con la moneda.
*/
public function currency(): BelongsTo
{
return $this->belongsTo(Currency::class, 'c_moneda', 'c_currency');
}
/**
* Relación con la clave unidad SAT.
*/
public function claveUnidad(): BelongsTo
{
return $this->belongsTo(ClaveUnidad::class, 'c_clave_unidad', 'c_clave_unidad');
}
/**
* Relación con la clave de producto/servicio SAT.
*/
public function claveProdServ(): BelongsTo
{
return $this->belongsTo(ClaveProdServ::class, 'c_clave_prod_serv', 'c_clave_prod_serv');
}
/**
* Relación con el usuario que creó el producto.
*/
public function createdBy(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
}