Producto
extends ModelClass
in package
uses
ModelTrait, TaxRelationTrait
Stores the data of an article.
Table of Contents
Constants
- ROUND_DECIMALS : mixed = 5
Properties
- $actualizado : string
- $bloqueado : bool
- $codfabricante : string
- $codfamilia : string
- $codimpuesto : string
- Código del impuesto asignado.
- $codsubcuentacom : string
- $codsubcuentairpfcom : string
- $codsubcuentaven : string
- $descripcion : string
- $excepcioniva : string
- $fechaalta : string
- $idproducto : int
- $nostock : bool
- $observaciones : string
- $precio : float|int
- $publico : bool
- $referencia : string
- $secompra : bool
- $sevende : bool
- $stockfis : float|int
- $tipo : string
- $ventasinstock : bool
- $attributes : array<string|int, mixed>
- Los atributos del modelo.
- $dataBase : DataBase
- Proporciona acceso directo a la base de datos.
- $fields : array<string|int, mixed>
- Lista de campos de la tabla del modelo.
- $original : array<string|int, mixed>
- Los atributos originales del modelo.
Methods
- __construct() : mixed
- Inicializa el modelo, comprueba su tabla y carga los datos proporcionados.
- __get() : mixed
- Devuelve el valor de un atributo dinámico.
- __isset() : bool
- Comprueba si existe un atributo dinámico con valor no nulo.
- __set() : void
- Asigna el valor de un atributo dinámico.
- __unset() : void
- Elimina un atributo dinámico.
- addApiFieldToHide() : void
- Añade un campo a la lista de campos que no deben exponerse en la API.
- addExtension() : void
- Añade una extensión al modelo con la prioridad indicada.
- all() : array<string|int, static>
- Devuelve todos los registros que cumplen las condiciones.
- allWhereEq() : array<string|int, static>
- Devuelve todos los registros donde el campo es igual al valor.
- changeId() : bool
- Cambia el valor de la clave primaria del registro.
- changePrimaryColumnValue() : bool
- Cambia el valor de la clave primaria del registro.
- clear() : void
- Restablece los campos del modelo a sus valores predeterminados.
- clearCache() : void
- Elimina de la caché los datos relacionados con el modelo y su tabla.
- count() : int
- countWhereEq() : int
- Cuenta los registros donde el campo es igual al valor.
- create() : static|null
- delete() : bool
- Elimina el registro actual de la base de datos.
- deleteWhere() : bool
- exists() : bool
- Comprueba si el registro actual existe en la base de datos.
- find() : static|null
- findOrCreate() : static|null
- findWhere() : static|null
- findWhereEq() : static|null
- get() : static|false
- Busca un registro mediante su clave primaria y devuelve una nueva instancia.
- getApiFieldsToHide() : array<string|int, string>
- Devuelve los nombres de campos que no deben exponerse en la API (ni en GET, ni en el schema). Los modelos con datos sensibles deben sobrescribir este método fusionando con parent::getApiFieldsToHide().
- getDirty() : array<string|int, mixed>
- Devuelve un array asociativo con los campos modificados y sus valores actuales.
- getFabricante() : Fabricante|null
- getFamilia() : Familia|null
- getImages() : array<string|int, ProductoImagen>
- getModelFields() : array<string|int, mixed>
- Devuelve la lista de campos de la tabla.
- getOriginal() : mixed|null
- Devuelve el valor original de un campo, si no se indica campo devuelve todo el array original
- getTax() : Impuesto
- Returns the current tax or the default one
- getVariants() : array<string|int, Variante>
- hasChanged() : bool
- hasColumn() : bool
- Comprueba si el modelo contiene la columna indicada.
- hasExtension() : bool
- Comprueba si el modelo tiene registrada la extensión indicada.
- id() : mixed
- Devuelve el valor de la clave primaria del modelo.
- install() : string
- Devuelve el SQL inicial necesario para instalar los datos del modelo.
- isDirty() : bool
- Comprueba si los campos del modelo han sido modificados.
- load() : bool
- Carga un modelo dada su primary key
- loadFromCode() : bool
- Carga un registro del modelo utilizando un código y opcionalmente condiciones adicionales.
- loadFromData() : void
- Carga los campos y atributos del modelo desde un array.
- loadWhere() : bool
- Carga el primer registro que coincida con las condiciones especificadas.
- loadWhereEq() : bool
- Carga el primer registro cuyo campo coincide con el valor indicado.
- maxLength() : int
- Devuelve la longitud máxima de un campo de texto, o 0 si no tiene límite o no es un campo de texto.
- modelClassName() : string
- Devuelve el nombre de la clase del modelo sin el espacio de nombres.
- newCode() : int
- Calcula el siguiente código numérico disponible para un campo.
- pipe() : mixed
- Ejecuta las extensiones asociadas al punto indicado y devuelve su resultado.
- pipeFalse() : bool
- Ejecuta las extensiones y devuelve false si alguna cancela la operación.
- priceWithTax() : float
- primaryColumn() : string
- Devuelve el nombre de la columna que actúa como clave primaria.
- primaryColumnValue() : mixed
- Devuelve el valor de la clave primaria del modelo.
- primaryDescription() : mixed
- Devuelve la descripción principal del registro.
- primaryDescriptionColumn() : string
- Devuelve el nombre de la columna utilizada como descripción principal.
- reload() : bool
- Vuelve a cargar desde la base de datos el registro actual.
- save() : bool
- Guarda el modelo en la base de datos después de ejecutar las comprobaciones `$this->test()`
- setPriceWithTax() : bool
- syncOriginal() : void
- Sincroniza los valores actuales con la copia original del modelo.
- table() : DbQuery
- tableName() : string
- Devuelve el nombre de la tabla asociada al modelo.
- test() : bool
- Realiza pruebas de validación sobre los campos del modelo antes de guardarlo.
- toArray() : array<string|int, mixed>
- Devuelve un array con los campos y valores del modelo.
- totalSum() : float
- update() : bool
- Actualiza el modelo con los valores proporcionados en el array
- updateInfo() : void
- Updated product price or reference if any change in variants.
- updateOrCreate() : static|null
- url() : string
- Genera una URL para el modelo según el tipo especificado.
- belongsTo() : object|null
- Define una relación uno a uno.
- db() : DataBase
- hasMany() : array<string|int, mixed>
- Define una relación uno a muchos.
- loadModelFields() : void
- onChange() : bool
- Comprueba un campo modificado antes de actualizar el registro.
- onDelete() : void
- Este método se llama al eliminar un registro de la base de datos.
- onInsert() : void
- Este método se llama al insertar un nuevo registro en la base de datos (saveInsert).
- onUpdate() : void
- Este método se llama al actualizar un registro en la base de datos.
- saveInsert() : bool
- Inserta un nuevo registro en la base de datos.
- saveUpdate() : bool
- Este método se llama al actualizar un registro existente en la base de datos.
- testTax() : bool
Constants
ROUND_DECIMALS
public
mixed
ROUND_DECIMALS
= 5
Properties
$actualizado
public
string
$actualizado
Fecha y hora de la última actualización del producto.
$bloqueado
public
bool
$bloqueado
Indica si el producto está bloqueado u obsoleto.
$codfabricante
public
string
$codfabricante
Código del fabricante del producto.
$codfamilia
public
string
$codfamilia
Código de la familia a la que pertenece el producto.
$codimpuesto
Código del impuesto asignado.
public
string
$codimpuesto
$codsubcuentacom
public
string
$codsubcuentacom
Código de la subcuenta contable utilizada para compras.
$codsubcuentairpfcom
public
string
$codsubcuentairpfcom
Código de la subcuenta de compras utilizada cuando se aplica IRPF.
$codsubcuentaven
public
string
$codsubcuentaven
Código de la subcuenta contable utilizada para ventas.
$descripcion
public
string
$descripcion
Descripción del producto.
$excepcioniva
public
string
$excepcioniva
Código de la excepción de IVA aplicable al producto.
$fechaalta
public
string
$fechaalta
Fecha de alta del producto.
$idproducto
public
int
$idproducto
Identificador único del producto.
$nostock
public
bool
$nostock
Indica si el producto no requiere control de stock.
$observaciones
public
string
$observaciones
Observaciones internas sobre el producto.
$precio
public
float|int
$precio
Precio de venta del producto sin impuestos.
$publico
public
bool
$publico
Indica si el producto se publica o sincroniza con la tienda online.
$referencia
public
string
$referencia
Referencia principal o SKU del producto.
$secompra
public
bool
$secompra
Indica si el producto se puede comprar a proveedores.
$sevende
public
bool
$sevende
Indica si el producto se puede vender a clientes.
$stockfis
public
float|int
$stockfis
Stock físico total del producto.
$tipo
public
string
$tipo
Tipo o clasificación adicional del producto.
$ventasinstock
public
bool
$ventasinstock
Indica si se permite vender el producto sin stock disponible.
$attributes
Los atributos del modelo.
protected
array<string|int, mixed>
$attributes
= []
$dataBase
Proporciona acceso directo a la base de datos.
protected
static DataBase
$dataBase
$fields
Lista de campos de la tabla del modelo.
protected
static array<string|int, mixed>
$fields
= []
$original
Los atributos originales del modelo.
protected
array<string|int, mixed>
$original
= []
Methods
__construct()
Inicializa el modelo, comprueba su tabla y carga los datos proporcionados.
public
__construct([array<string|int, mixed> $data = [] ]) : mixed
Parameters
- $data : array<string|int, mixed> = []
__get()
Devuelve el valor de un atributo dinámico.
public
__get(mixed $key) : mixed
Parameters
- $key : mixed
__isset()
Comprueba si existe un atributo dinámico con valor no nulo.
public
__isset(string $key) : bool
Parameters
- $key : string
Return values
bool__set()
Asigna el valor de un atributo dinámico.
public
__set(string $key, mixed $value) : void
Parameters
- $key : string
- $value : mixed
__unset()
Elimina un atributo dinámico.
public
__unset(string $key) : void
Parameters
- $key : string
addApiFieldToHide()
Añade un campo a la lista de campos que no deben exponerse en la API.
public
static addApiFieldToHide(string $field) : void
Solo permite añadir: los campos ocultos por el core no se pueden quitar.
Parameters
- $field : string
addExtension()
Añade una extensión al modelo con la prioridad indicada.
public
abstract static addExtension(mixed $extension[, int $priority = 100 ]) : void
Parameters
- $extension : mixed
- $priority : int = 100
all()
Devuelve todos los registros que cumplen las condiciones.
public
static all([array<string|int, mixed> $where = [] ][, array<string|int, mixed> $order = [] ][, int $offset = 0 ][, int $limit = 0 ]) : array<string|int, static>
Parameters
- $where : array<string|int, mixed> = []
- $order : array<string|int, mixed> = []
- $offset : int = 0
- $limit : int = 0
Return values
array<string|int, static>allWhereEq()
Devuelve todos los registros donde el campo es igual al valor.
public
static allWhereEq(string $field, mixed $value[, array<string|int, mixed> $order = [] ]) : array<string|int, static>
Parameters
- $field : string
- $value : mixed
- $order : array<string|int, mixed> = []
Return values
array<string|int, static>changeId()
Cambia el valor de la clave primaria del registro.
public
changeId(mixed $new_id) : bool
Parameters
- $new_id : mixed
Return values
boolchangePrimaryColumnValue()
Cambia el valor de la clave primaria del registro.
public
changePrimaryColumnValue(mixed $new_id) : bool
reemplazar por changeId()
Parameters
- $new_id : mixed
Return values
boolclear()
Restablece los campos del modelo a sus valores predeterminados.
public
clear() : void
clearCache()
Elimina de la caché los datos relacionados con el modelo y su tabla.
public
clearCache() : void
count()
public
static count([array<string|int, mixed> $where = [] ]) : int
Parameters
- $where : array<string|int, mixed> = []
Return values
intcountWhereEq()
Cuenta los registros donde el campo es igual al valor.
public
static countWhereEq(string $field, mixed $value) : int
Parameters
- $field : string
- $value : mixed
Return values
intcreate()
public
static create(array<string|int, mixed> $data) : static|null
Parameters
- $data : array<string|int, mixed>
Return values
static|nulldelete()
Elimina el registro actual de la base de datos.
public
delete() : bool
Return values
booldeleteWhere()
public
static deleteWhere(array<string|int, mixed> $where) : bool
Parameters
- $where : array<string|int, mixed>
Return values
boolexists()
Comprueba si el registro actual existe en la base de datos.
public
exists() : bool
Return values
boolfind()
public
static find(mixed $code) : static|null
Parameters
- $code : mixed
Return values
static|nullfindOrCreate()
public
static findOrCreate(array<string|int, mixed> $where[, array<string|int, mixed> $data = [] ]) : static|null
Parameters
- $where : array<string|int, mixed>
- $data : array<string|int, mixed> = []
Return values
static|nullfindWhere()
public
static findWhere(array<string|int, mixed> $where[, array<string|int, mixed> $order = [] ]) : static|null
Parameters
- $where : array<string|int, mixed>
- $order : array<string|int, mixed> = []
Return values
static|nullfindWhereEq()
public
static findWhereEq(string $field, mixed $value) : static|null
Parameters
- $field : string
- $value : mixed
Return values
static|nullget()
Busca un registro mediante su clave primaria y devuelve una nueva instancia.
public
get(mixed $code) : static|false
Usar find() en su lugar
Parameters
- $code : mixed
Return values
static|falsegetApiFieldsToHide()
Devuelve los nombres de campos que no deben exponerse en la API (ni en GET, ni en el schema). Los modelos con datos sensibles deben sobrescribir este método fusionando con parent::getApiFieldsToHide().
public
getApiFieldsToHide() : array<string|int, string>
Return values
array<string|int, string>getDirty()
Devuelve un array asociativo con los campos modificados y sus valores actuales.
public
getDirty() : array<string|int, mixed>
Return values
array<string|int, mixed>getFabricante()
public
getFabricante() : Fabricante|null
Return values
Fabricante|nullgetFamilia()
public
getFamilia() : Familia|null
Return values
Familia|nullgetImages()
public
getImages([bool $imgVariant = true ]) : array<string|int, ProductoImagen>
Parameters
- $imgVariant : bool = true
Return values
array<string|int, ProductoImagen>getModelFields()
Devuelve la lista de campos de la tabla.
public
getModelFields() : array<string|int, mixed>
Return values
array<string|int, mixed>getOriginal()
Devuelve el valor original de un campo, si no se indica campo devuelve todo el array original
public
getOriginal([string|null $key = null ]) : mixed|null
Parameters
- $key : string|null = null
Return values
mixed|null —Devuelve el valor original del campo o null si no existe
getTax()
Returns the current tax or the default one
public
getTax() : Impuesto
Return values
ImpuestogetVariants()
public
getVariants() : array<string|int, Variante>
Return values
array<string|int, Variante>hasChanged()
public
hasChanged(string $field) : bool
reemplazar por isDirty()
Parameters
- $field : string
Return values
boolhasColumn()
Comprueba si el modelo contiene la columna indicada.
public
hasColumn(string $columnName) : bool
Parameters
- $columnName : string
Return values
boolhasExtension()
Comprueba si el modelo tiene registrada la extensión indicada.
public
abstract hasExtension(mixed $extension) : bool
Parameters
- $extension : mixed
Return values
boolid()
Devuelve el valor de la clave primaria del modelo.
public
id() : mixed
install()
Devuelve el SQL inicial necesario para instalar los datos del modelo.
public
install() : string
Return values
stringisDirty()
Comprueba si los campos del modelo han sido modificados.
public
isDirty([string|null $key = null ]) : bool
Devuelve true si hay cambios, false en caso contrario.
Si introduces un parámetro key, comprueba solo ese campo
Parameters
- $key : string|null = null
Return values
bool —true si ha sido modificado, false en caso contrario
load()
Carga un modelo dada su primary key
public
load(mixed $code) : bool
Parameters
- $code : mixed
-
Código o identificador del registro a cargar
Return values
bool —Devuelve true si se encontró y cargó un registro exitosamente.
loadFromCode()
Carga un registro del modelo utilizando un código y opcionalmente condiciones adicionales.
public
loadFromCode(mixed $code[, array<string|int, mixed> $where = [] ][, array<string|int, mixed> $order = [] ]) : bool
Usar load() cuando solo se necesita cargar por código, o loadWhere() cuando se requieren condiciones WHERE u ordenamiento adicionales.
IMPORTANTE: Este método está deprecado. Se recomienda usar las alternativas siguientes:
- Si solo se proporciona $code: usar directamente load($code)
- Si se proporciona $code junto con $where o $order: usar loadWhere() con las condiciones apropiadas
Este método actúa como wrapper que redirige a load() cuando solo se proporciona el código, o a loadWhere() cuando se incluyen condiciones WHERE u ordenamiento adicionales.
Parameters
- $code : mixed
-
Código o identificador del registro a cargar. Se usa únicamente cuando no se proporcionan condiciones WHERE adicionales.
- $where : array<string|int, mixed> = []
-
Array de instancias de Where o DatabaseWhere que definen condiciones de filtrado adicionales. Si se proporciona, el método delega a loadWhere(). Por defecto es un array vacío.
- $order : array<string|int, mixed> = []
-
Array asociativo que define el ordenamiento de los resultados. Las claves son nombres de columnas y los valores la dirección del ordenamiento. Por defecto es un array vacío.
Return values
bool —Retorna true si se encontró y cargó un registro exitosamente. Retorna false si no se encontró ningún registro.
loadFromData()
Carga los campos y atributos del modelo desde un array.
public
loadFromData([array<string|int, mixed> $data = [] ][, array<string|int, mixed> $exclude = [] ][, bool $sync = true ]) : void
Parameters
- $data : array<string|int, mixed> = []
- $exclude : array<string|int, mixed> = []
-
Campos que no se deben cargar.
- $sync : bool = true
-
Indica si se deben sincronizar los valores originales.
loadWhere()
Carga el primer registro que coincida con las condiciones especificadas.
public
loadWhere(array<string|int, mixed> $where[, array<string|int, mixed> $order = [] ]) : bool
Este método consulta la tabla asociada al modelo aplicando las condiciones WHERE proporcionadas y el ordenamiento especificado. Si encuentra un registro, carga sus datos en la instancia actual del modelo. Si no encuentra ningún registro, limpia la instancia y retorna false.
Parameters
- $where : array<string|int, mixed>
-
Array de instancias de Where o DatabaseWhere que definen las condiciones de filtrado para la consulta. Cada elemento representa una condición que debe cumplir el registro a cargar.
- $order : array<string|int, mixed> = []
-
Array asociativo que define el ordenamiento de los resultados. Las claves son nombres de columnas y los valores indican la dirección del ordenamiento (ej: ['id' => 'DESC', 'nombre' => 'ASC']). Por defecto es un array vacío (sin ordenamiento específico).
Return values
bool —Retorna true si se encontró y cargó un registro exitosamente. Retorna false si no se encontró ningún registro que cumpla las condiciones.
loadWhereEq()
Carga el primer registro cuyo campo coincide con el valor indicado.
public
loadWhereEq(string $field, mixed $value) : bool
Parameters
- $field : string
- $value : mixed
Return values
boolmaxLength()
Devuelve la longitud máxima de un campo de texto, o 0 si no tiene límite o no es un campo de texto.
public
maxLength(string $field) : int
Parameters
- $field : string
-
Nombre del campo
Return values
int —Longitud máxima del campo
modelClassName()
Devuelve el nombre de la clase del modelo sin el espacio de nombres.
public
modelClassName() : string
Return values
stringnewCode()
Calcula el siguiente código numérico disponible para un campo.
public
newCode([string $field = '' ][, array<string|int, mixed> $where = [] ]) : int
Parameters
- $field : string = ''
- $where : array<string|int, mixed> = []
Return values
intpipe()
Ejecuta las extensiones asociadas al punto indicado y devuelve su resultado.
public
abstract pipe(mixed $name, mixed ...$arguments) : mixed
Parameters
- $name : mixed
- $arguments : mixed
pipeFalse()
Ejecuta las extensiones y devuelve false si alguna cancela la operación.
public
abstract pipeFalse(mixed $name, mixed ...$arguments) : bool
Parameters
- $name : mixed
- $arguments : mixed
Return values
boolpriceWithTax()
public
priceWithTax() : float
Return values
floatprimaryColumn()
Devuelve el nombre de la columna que actúa como clave primaria.
public
static primaryColumn() : string
Return values
stringprimaryColumnValue()
Devuelve el valor de la clave primaria del modelo.
public
primaryColumnValue() : mixed
Usar id() en su lugar
Attributes
- #[Deprecated]
- $reason: 'Usar id() en su lugar'
- $replacement: '%class%->id()'
primaryDescription()
Devuelve la descripción principal del registro.
public
primaryDescription() : mixed
primaryDescriptionColumn()
Devuelve el nombre de la columna utilizada como descripción principal.
public
primaryDescriptionColumn() : string
Return values
stringreload()
Vuelve a cargar desde la base de datos el registro actual.
public
reload() : bool
Return values
boolsave()
Guarda el modelo en la base de datos después de ejecutar las comprobaciones `$this->test()`
public
save() : bool
Return values
bool —Devuelve true si se ha guardado correctamente, false en caso contrario
setPriceWithTax()
public
setPriceWithTax(float $price) : bool
Parameters
- $price : float
Return values
boolsyncOriginal()
Sincroniza los valores actuales con la copia original del modelo.
public
syncOriginal() : void
table()
public
static table() : DbQuery
Return values
DbQuerytableName()
Devuelve el nombre de la tabla asociada al modelo.
public
static tableName() : string
Return values
stringtest()
Realiza pruebas de validación sobre los campos del modelo antes de guardarlo.
public
test() : bool
Return values
bool —Devuelve true si todas las pruebas pasan, false en caso contrario
toArray()
Devuelve un array con los campos y valores del modelo.
public
toArray([bool $dynamic_attributes = false ]) : array<string|int, mixed>
Parameters
- $dynamic_attributes : bool = false
-
Si es true, añade también los atributos dinámicos al array resultante
Return values
array<string|int, mixed> —Array asociativo con los campos y valores del modelo
totalSum()
public
static totalSum(string $field[, array<string|int, mixed> $where = [] ]) : float
Parameters
- $field : string
- $where : array<string|int, mixed> = []
Return values
floatupdate()
Actualiza el modelo con los valores proporcionados en el array
public
update(array<string|int, mixed> $values) : bool
Parameters
- $values : array<string|int, mixed>
-
Array asociativo con los campos y valores a actualizar
Return values
bool —Devuelve true si la actualización se ha realizado correctamente, false en caso
updateInfo()
Updated product price or reference if any change in variants.
public
updateInfo() : void
updateOrCreate()
public
static updateOrCreate(array<string|int, mixed> $where, array<string|int, mixed> $data) : static|null
Parameters
- $where : array<string|int, mixed>
- $data : array<string|int, mixed>
Return values
static|nullurl()
Genera una URL para el modelo según el tipo especificado.
public
url([string $type = 'auto' ][, string $list = 'List' ]) : string
Parameters
- $type : string = 'auto'
-
Tipo de URL a generar. Puede ser 'auto', 'edit', 'list' o 'new'.
- $list : string = 'List'
-
Nombre de la lista a utilizar en la URL cuando el tipo es 'list' o 'auto'.
Return values
string —URL generada para el modelo
belongsTo()
Define una relación uno a uno.
protected
belongsTo(string $modelName, string $foreignKey) : object|null
Parameters
- $modelName : string
- $foreignKey : string
Return values
object|nulldb()
protected
abstract static db() : DataBase
Return values
DataBasehasMany()
Define una relación uno a muchos.
protected
hasMany(string $modelName, string $foreignKey[, array<string|int, mixed> $where = [] ][, array<string|int, mixed> $order = [] ][, bool $cached = false ]) : array<string|int, mixed>
Parameters
- $modelName : string
- $foreignKey : string
- $where : array<string|int, mixed> = []
- $order : array<string|int, mixed> = []
- $cached : bool = false
-
usar solo en relaciones de solo lectura y de listas pequeñas y cerradas
Return values
array<string|int, mixed>loadModelFields()
protected
loadModelFields() : void
onChange()
Comprueba un campo modificado antes de actualizar el registro.
protected
onChange(string $field) : bool
Parameters
- $field : string
Return values
boolonDelete()
Este método se llama al eliminar un registro de la base de datos.
protected
onDelete() : void
onInsert()
Este método se llama al insertar un nuevo registro en la base de datos (saveInsert).
protected
onInsert() : void
onUpdate()
Este método se llama al actualizar un registro en la base de datos.
protected
onUpdate() : void
saveInsert()
Inserta un nuevo registro en la base de datos.
protected
saveInsert() : bool
Return values
boolsaveUpdate()
Este método se llama al actualizar un registro existente en la base de datos.
protected
saveUpdate() : bool
Return values
bool —Devuelve true si la actualización se realizó correctamente, false en caso contrario
testTax()
protected
testTax() : bool