/** * Interfaces para Warehouses * * @author Sistema * @version 1.0.0 */ /** * @typedef {Object} WarehouseClassification * @property {number} id - ID de la clasificación * @property {string} code - Código de la clasificación * @property {string} name - Nombre de la clasificación * @property {string|null} description - Descripción de la clasificación * @property {boolean} is_active - Estado activo/inactivo * @property {number|null} parent_id - ID del padre * @property {string} created_at - Fecha de creación * @property {string} updated_at - Fecha de actualización * @property {string|null} deleted_at - Fecha de eliminación * @property {Object} pivot - Relación many-to-many * @property {number} pivot.warehouse_id - ID del almacén * @property {number} pivot.classification_id - ID de la clasificación */ /** * @typedef {Object} Warehouse * @property {number} id - ID del almacén * @property {string} code - Código del almacén * @property {string} name - Nombre del almacén * @property {string|null} description - Descripción del almacén * @property {string|null} address - Dirección del almacén * @property {boolean} is_active - Estado activo/inactivo * @property {string} created_at - Fecha de creación * @property {string} updated_at - Fecha de actualización * @property {string|null} deleted_at - Fecha de eliminación * @property {WarehouseClassification[]} classifications - Clasificaciones asociadas */ /** * @typedef {Object} WarehousePaginatedResponse * @property {number} current_page - Página actual * @property {Warehouse[]} data - Array de almacenes * @property {string} first_page_url - URL de la primera página * @property {number} from - Registro inicial * @property {number} last_page - Última página * @property {string} last_page_url - URL de la última página * @property {Object[]} links - Enlaces de paginación * @property {string|null} next_page_url - URL de la siguiente página * @property {string} path - Path base de la API * @property {number} per_page - Registros por página * @property {string|null} prev_page_url - URL de la página anterior * @property {number} to - Registro final * @property {number} total - Total de registros */ /** * @typedef {Object} WarehouseResponse * @property {string} status - Estado de la respuesta * @property {Object} data - Datos de la respuesta * @property {WarehousePaginatedResponse} data.warehouses - Datos paginados de almacenes */ /** * @typedef {Object} SingleWarehouseResponse * @property {string} status - Estado de la respuesta * @property {Object} data - Datos de la respuesta * @property {string} data.message - Mensaje de la respuesta * @property {Warehouse} data.warehouse - Almacén individual */ /** * @typedef {Object} WarehouseCreateRequest * @property {string} code - Código del almacén * @property {string} name - Nombre del almacén * @property {string|null} description - Descripción del almacén * @property {string|null} address - Dirección del almacén * @property {boolean} is_active - Estado activo/inactivo * @property {number[]} classifications - Array de IDs de clasificaciones */ /** * @typedef {Object} WarehouseUpdateRequest * @property {string} code - Código del almacén * @property {string} name - Nombre del almacén * @property {string|null} description - Descripción del almacén * @property {string|null} address - Dirección del almacén * @property {boolean} is_active - Estado activo/inactivo * @property {number[]} classifications - Array de IDs de clasificaciones */ /** * @typedef {Object} WarehouseFormData * @property {number|null} id - ID del almacén (para edición) * @property {string} code - Código del almacén * @property {string} name - Nombre del almacén * @property {string} description - Descripción del almacén * @property {string} address - Dirección del almacén * @property {boolean} is_active - Estado activo/inactivo * @property {Object[]} classifications - Clasificaciones seleccionadas en formato {value, label} */ /** * @typedef {Object} ClassificationSelectOption * @property {number} value - ID de la clasificación * @property {string} label - Nombre de la clasificación con indentación * @property {string} code - Código de la clasificación * @property {string|null} description - Descripción de la clasificación * @property {number} level - Nivel jerárquico (para indentación) */ /** * @typedef {Object} WarehouseSearchFilters * @property {string|null} search - Término de búsqueda * @property {string|null} status - Estado del filtro (active/inactive) * @property {number} page - Número de página * @property {number} per_page - Elementos por página */ /** * @typedef {Object} WarehouseValidationErrors * @property {string[]} code - Errores del campo código * @property {string[]} name - Errores del campo nombre * @property {string[]} description - Errores del campo descripción * @property {string[]} address - Errores del campo dirección * @property {string[]} classifications - Errores del campo clasificaciones */