125 lines
5.1 KiB
JavaScript

/**
* 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
*/