Skip to main content
Este módulo cubre tres conceptos relacionados que estructuran el inventario de forma física y administrativa:

Ubicaciones

Espacios físicos donde residen los bienes: oficinas, aulas, laboratorios, depósitos.

Dependencias

Unidades administrativas o académicas propietarias o custodias de los bienes.

Responsables

Personas asignadas como custodias de cada ubicación.

Ubicaciones

Navegar a: Sidebar → CategoríasLugares y dependencias (pestaña Ubicaciones)

Tabla ubicaciones

Cada ubicación pertenece a una dependencia y puede tener un responsable asignado directamente en el registro.
CREATE TABLE `ubicaciones` (
  `id`                  int(11)      NOT NULL AUTO_INCREMENT,
  `dependencia_id`      int(11)      NOT NULL,          -- FK a dependencias.id
  `nombre`              varchar(150) NOT NULL,
  `descripcion`         text         DEFAULT NULL,       -- Código de bien nacional / referencia
  `responsable`         varchar(200) DEFAULT NULL,
  `telefono`            varchar(50)  DEFAULT NULL,
  `email`               varchar(100) DEFAULT NULL,
  `activo`              tinyint(1)   DEFAULT 1,
  `fecha_creacion`      timestamp    NOT NULL DEFAULT current_timestamp(),
  `fecha_actualizacion` timestamp    NOT NULL DEFAULT current_timestamp()
                                               ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  CONSTRAINT `ubicaciones_ibfk_1`
    FOREIGN KEY (`dependencia_id`) REFERENCES `dependencias` (`id`)
);

Descripción de columnas

ColumnaTipoDescripción
idint AUTO_INCREMENTIdentificador único
dependencia_idint NOT NULLDependencia a la que pertenece la ubicación
nombrevarchar(150)Nombre del espacio físico
descripciontextCódigo de referencia del bien nacional asociado (ej. 0101, 010201)
responsablevarchar(200)Nombre del responsable de la ubicación
telefonovarchar(50)Teléfono de contacto
emailvarchar(100)Correo de contacto
activotinyint(1)1 = activa, 0 = inactiva
El campo descripcion se usa en la práctica como el código de bien nacional de la ubicación (ej. 0101 para OFICINA DEL RECTOR, 030104 para SERVICIOS ADMINISTRATIVOS). Este código refleja la estructura jerárquica numérica del inventario institucional.

Estructura jerárquica de ubicaciones

Las ubicaciones de UPTAG siguen un esquema de codificación numérica que representa la jerarquía física. El código se construye concatenando los niveles:
Dependencia  Área      Sub-área    Espacio
    01         01          01        02
    │          │           │         │
    └── Rectoría           │         └── Archivo Rectoría
               └── Oficina del Rector
Ejemplos de la data de RECTORÍA:
CódigoUbicación
0101OFICINA DEL RECTOR
010101SECRETARIA RECTORÍA
01010102ARCHIVO RECTORÍA
01010103DEPÓSITO RECTORÍA
010102SALA DE REUNIONES DE RECTORÍA

Tipos de ubicación

Al registrar una ubicación en registrar_ubicacion.php, debes seleccionar un tipo:

PNF

Programa Nacional de Formación. Unidades académicas por programa.

Sede

Sede principal o extensiones universitarias.

Edificio

Edificios del campus universitario.

Piso / Nivel

Niveles dentro de un edificio.

Oficina

Oficinas administrativas o académicas.

Aula

Salas de clases.

Laboratorio

Laboratorios de investigación o prácticas.

Otro

Sala de reuniones, área común, depósito, etc.

Registrar una ubicación

Navegar a: Sidebar → CategoríasRegistrar ubicación (registrar_ubicacion.php)
1

Completa los datos obligatorios

Los campos marcados con asterisco son requeridos por el formulario:
CampoObligatorioDescripción
NombreNombre del espacio físico (máx. 150 caracteres)
TipoSelecciona uno de los tipos listados arriba
DependenciaNoVincula la ubicación a una dependencia
Dirección / ReferenciaNoEj.: Primer piso, edificio principal
ResponsableNoNombre del responsable
TeléfonoNoEj.: 0251-1234567
ObservacionesNoInformación adicional
2

Envía el formulario

Haz clic en Registrar Ubicación. El sistema verifica que no exista otra ubicación con el mismo nombre antes de insertar.
// Validación de nombre único en registrar_ubicacion.php
$stmt_check = $conn->prepare(
  "SELECT id FROM ubicaciones WHERE nombre = ?"
);
3

Verifica en el listado

Vuelve a Lugares y dependencias y confirma que la nueva ubicación aparece en la pestaña Ubicaciones.
El campo dependencia_id es NOT NULL en la definición de la tabla. Asegúrate de que existan dependencias registradas antes de crear ubicaciones.

Datos de ejemplo

El archivo ubicaciones_dependencias.sql incluye más de 500 ubicaciones precargadas para las dependencias de UPTAG. Los primeros registros de cada dependencia ilustran el patrón:
-- RECTORÍA (dependencia_id = 1)
INSERT INTO ubicaciones (dependencia_id, nombre, descripcion, activo) VALUES
  (1, 'OFICINA DEL RECTOR',            '0101',   1),
  (1, 'SECRETARIA RECTORIA',           '010101', 1),
  (1, 'ARCHIVO RECTORIA',              '01010102', 1);

-- VICERECTORADO ACADÉMICO (dependencia_id = 2)
  (2, 'VICERECTORADO ACADEMICO JEFATURA', '0201',   1),
  (2, 'COORDINACION DE BIBLIOTECAS',      '0203',   1);

-- OGA (dependencia_id = 3)
  (3, 'UNIDAD DE BIENES NACIONALES',    '03010404', 1),
  (3, 'CONTABILIDAD',                   '03010401', 1);

Dependencias

Navegar a: Sidebar → CategoríasLugares y dependencias (pestaña Dependencias)

Tabla dependencias

CREATE TABLE `dependencias` (
  `id`                  int(11)      NOT NULL AUTO_INCREMENT,
  `nombre`              varchar(150) NOT NULL,
  `codigo`              varchar(20)  DEFAULT NULL,
  `tipo`                enum('Administrativa','Academica','PNF','Laboratorio','Otra')
                                     DEFAULT 'Otra',
  `responsable_nombre`  varchar(150) DEFAULT NULL,
  `responsable_cedula`  varchar(20)  DEFAULT NULL,
  `direccion`           varchar(255) DEFAULT NULL,
  `ciudad`              varchar(100) DEFAULT NULL,
  `estado`              varchar(100) DEFAULT NULL,
  `activo`              tinyint(1)   DEFAULT 1,
  `fecha_creacion`      timestamp    NOT NULL DEFAULT current_timestamp(),
  `fecha_actualizacion` timestamp    NOT NULL DEFAULT current_timestamp()
                                               ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_dependencia_codigo` (`codigo`)
);

Descripción de columnas

ColumnaTipoDescripción
idint AUTO_INCREMENTIdentificador único
nombrevarchar(150)Nombre oficial de la dependencia
codigovarchar(20) UNIQUECódigo de dos dígitos (ej. 01, 02)
tipoenumClasifica la dependencia: Administrativa, Academica, PNF, Laboratorio, Otra
responsable_nombrevarchar(150)Nombre del responsable institucional
responsable_cedulavarchar(20)Cédula del responsable institucional
direccionvarchar(255)Dirección postal
ciudad / estadovarchar(100)Localización geográfica
activotinyint(1)1 = activa, 0 = inactiva

Tipos de dependencia

Unidades de gestión institucional: Rectoría, OGA, Auditoría Interna, OTIC, etc.

Dependencias predeterminadas

Al instalar la base de datos se cargan nueve dependencias. Las primeras tres son las más comunes en el inventario:
CódigoNombreTipo
01RECTORÍA - UPTAGAdministrativa
02VICERECTORADO ACADÉMICOAcademica
03OFICINA DE GESTIÓN ADMINISTRATIVA (OGA)Administrativa
04DIVISIÓN DE PLANIFICACIÓN Y DESARROLLOAdministrativa
05SINDICATOSOtra
06CENTRO DE ESTUDIANTESOtra
07AUDITORÍA INTERNAAdministrativa
08DEPÓSITO GENERALAdministrativa
09TERCEROSOtra

Relación con ubicaciones y bienes

dependencias

    └── ubicaciones (dependencia_id)

              └── bienes (ubicacion_id)
El listado de dependencias en lugares_dependencias.php muestra el conteo de ubicaciones asociadas a cada una mediante un LEFT JOIN con conteo:
// Consulta en lugares_dependencias.php
$result = $conn->query(
  "SELECT d.*, COUNT(u.id) as total_ubicaciones
   FROM dependencias d
   LEFT JOIN ubicaciones u ON d.id = u.dependencia_id
   GROUP BY d.id
   ORDER BY d.nombre ASC"
);

Asignar responsables

Navegar a: Sidebar → CategoríasAgregar responsables (editar_lugares_dependencias.php) Esta pantalla permite asignar o actualizar el responsable de cada ubicación directamente desde una tabla editable. Es el único lugar donde se modifica el campo responsable de una ubicación sin tener que volver a crear el registro desde cero.

Cómo asignar un responsable

1

Ubica la fila de la ubicación

Usa el buscador de la página para filtrar por nombre de ubicación. La tabla muestra TOTAL UBICACIONES, DEPENDENCIAS, CON RESPONSABLE y SIN RESPONSABLE en las tarjetas de estadísticas.
2

Edita los campos en la tabla

Los campos Responsable, Teléfono y Email son editables directamente en la fila. Haz clic sobre el campo, escribe el valor y pasa al siguiente.
// Campos enviados al servidor (editar_lugares_dependencias.php)
$responsable = trim($_POST['responsable'] ?? '');
$telefono    = trim($_POST['telefono']    ?? '');
$email       = trim($_POST['email']       ?? '');
3

Guarda con el botón ✓

Haz clic en el botón al final de la fila para guardar. El sistema valida que el campo Responsable no esté vacío y luego ejecuta:
$sql = "UPDATE ubicaciones
        SET responsable = ?,
            telefono    = ?,
            email       = ?
        WHERE id = ?";
El nombre del responsable es obligatorio al guardar desde esta pantalla. Teléfono y email son opcionales.

Impacto en el dashboard

El widget Responsables del dashboard cuenta las ubicaciones que tienen el campo responsable con un valor no nulo. Mantener esta información actualizada asegura que el conteo del dashboard refleje la cobertura real de custodia.
// Cálculo de estadísticas en editar_lugares_dependencias.php
$con_responsable    = count(array_filter($todas_ubicaciones,
  fn($u) => !empty($u['responsable'])));
$sin_responsable    = count(array_filter($todas_ubicaciones,
  fn($u) =>  empty($u['responsable'])));

Tabla responsables (entidad separada)

Además del campo responsable en ubicaciones, el sistema cuenta con una tabla responsables independiente para registrar personas con cédula, cargo y vínculos formales a dependencias y ubicaciones:
CREATE TABLE `responsables` (
  `id`            int(11)     NOT NULL AUTO_INCREMENT,
  `cedula`        varchar(20) NOT NULL,
  `nombres`       varchar(100) NOT NULL,
  `apellidos`     varchar(100) NOT NULL,
  `cargo`         varchar(100) DEFAULT NULL,
  `dependencia_id`int(11)     DEFAULT NULL,
  `ubicacion_id`  int(11)     DEFAULT NULL,
  `telefono`      varchar(50) DEFAULT NULL,
  `email`         varchar(100)DEFAULT NULL,
  `activo`        tinyint(1)  DEFAULT 1,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_responsable_cedula` (`cedula`)
);
Esta tabla se usa en los movimientos de bienes (movimientos.responsable_origen_id / responsable_destino_id) y en el control perceptivo.
Usa editar_lugares_dependencias.php para la asignación rápida de responsables por nombre. Usa la tabla responsables cuando necesites registrar formalmente a una persona con cédula y cargo para los actos administrativos de movimiento.

Build docs developers (and LLMs) love