{"tablas":{"almacenes":{"create":"CREATE TABLE `almacenes` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `codigo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `tipo` enum('picking','fisico') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'picking',\n  `activo` tinyint(4) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `codigo` (`codigo`),\n  KEY `idx_nombre` (`nombre`),\n  KEY `idx_codigo` (`codigo`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_almacenes_tipo` (`tipo`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"tipo","definicion":"`tipo` enum('picking','fisico') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'picking'","tipo":"enum('picking','fisico')","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"codigo","tipo":"unique","definicion":"UNIQUE KEY `codigo` (`codigo`)"},{"nombre":"idx_nombre","tipo":"index","definicion":"KEY `idx_nombre` (`nombre`)"},{"nombre":"idx_codigo","tipo":"index","definicion":"KEY `idx_codigo` (`codigo`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_almacenes_tipo","tipo":"index","definicion":"KEY `idx_almacenes_tipo` (`tipo`)"}]},"arqueos":{"create":"CREATE TABLE `arqueos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `cuenta_id` int(11) NOT NULL,\n  `fecha_hora` datetime NOT NULL,\n  `fondo_asignado` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `comprobantes` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `efectivo_contado` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `diferencia` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `responsable_id` int(11) DEFAULT NULL,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_arqueo_cuenta` (`cuenta_id`),\n  KEY `idx_arqueo_fecha` (`fecha_hora`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"cuenta_id","definicion":"`cuenta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"fecha_hora","definicion":"`fecha_hora` datetime NOT NULL","tipo":"datetime","nulo":false},{"nombre":"fondo_asignado","definicion":"`fondo_asignado` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"comprobantes","definicion":"`comprobantes` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"efectivo_contado","definicion":"`efectivo_contado` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"diferencia","definicion":"`diferencia` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"responsable_id","definicion":"`responsable_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_arqueo_cuenta","tipo":"index","definicion":"KEY `idx_arqueo_cuenta` (`cuenta_id`)"},{"nombre":"idx_arqueo_fecha","tipo":"index","definicion":"KEY `idx_arqueo_fecha` (`fecha_hora`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"bitacora":{"create":"CREATE TABLE `bitacora` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `fecha_hora` datetime NOT NULL DEFAULT current_timestamp(),\n  `usuario_id` int(11) DEFAULT NULL,\n  `pantalla` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `accion` enum('crear','editar','cancelar','autorizar','cerrar','reabrir','importar','acceso') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `tabla` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `registro_id` int(11) DEFAULT NULL,\n  `valor_anterior` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `valor_nuevo` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `motivo` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_bitacora_fecha` (`fecha_hora`),\n  KEY `idx_bitacora_usuario` (`usuario_id`),\n  KEY `idx_bitacora_registro` (`tabla`,`registro_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"fecha_hora","definicion":"`fecha_hora` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"pantalla","definicion":"`pantalla` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(60)","nulo":false},{"nombre":"accion","definicion":"`accion` enum('crear','editar','cancelar','autorizar','cerrar','reabrir','importar','acceso') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('crear','editar','cancelar','autorizar','cerrar','reabrir','importar','acceso')","nulo":false},{"nombre":"tabla","definicion":"`tabla` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(60)","nulo":true},{"nombre":"registro_id","definicion":"`registro_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"valor_anterior","definicion":"`valor_anterior` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"valor_nuevo","definicion":"`valor_nuevo` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"motivo","definicion":"`motivo` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_bitacora_fecha","tipo":"index","definicion":"KEY `idx_bitacora_fecha` (`fecha_hora`)"},{"nombre":"idx_bitacora_usuario","tipo":"index","definicion":"KEY `idx_bitacora_usuario` (`usuario_id`)"},{"nombre":"idx_bitacora_registro","tipo":"index","definicion":"KEY `idx_bitacora_registro` (`tabla`,`registro_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"cajas":{"create":"CREATE TABLE `cajas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `identificador` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `identificador` (`identificador`),\n  UNIQUE KEY `idx_nombre_pc` (`nombre_pc`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"identificador","definicion":"`identificador` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"nombre_pc","definicion":"`nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"ip","definicion":"`ip` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(45)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"identificador","tipo":"unique","definicion":"UNIQUE KEY `identificador` (`identificador`)"},{"nombre":"idx_nombre_pc","tipo":"unique","definicion":"UNIQUE KEY `idx_nombre_pc` (`nombre_pc`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"categorias":{"create":"CREATE TABLE `categorias` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_categoria_nombre` (`nombre`),\n  KEY `idx_categorias_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_categoria_nombre","tipo":"unique","definicion":"UNIQUE KEY `uk_categoria_nombre` (`nombre`)"},{"nombre":"idx_categorias_activo","tipo":"index","definicion":"KEY `idx_categorias_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"categorias2":{"create":"CREATE TABLE `categorias2` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(150) NOT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `fecha_actualizacion` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_activo` (`activo`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(150) NOT NULL","tipo":"varchar(150)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"datetime","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"}]},"categorias_financieras":{"create":"CREATE TABLE `categorias_financieras` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `codigo` varchar(4) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `grupo` enum('ingresos','costo_ventas','gastos_operativos','gastos_financieros','no_resultados') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `aplica_a` enum('ingreso','egreso','ambos') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'egreso',\n  `caja_chica` tinyint(1) NOT NULL DEFAULT 0,\n  `requiere_comprobante` tinyint(1) NOT NULL DEFAULT 0,\n  `iva_default` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ref_contador` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activa` tinyint(1) NOT NULL DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_catfin_codigo` (`codigo`),\n  KEY `idx_catfin_grupo` (`grupo`),\n  KEY `idx_catfin_activa` (`activa`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(4) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(4)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(120)","nulo":false},{"nombre":"grupo","definicion":"`grupo` enum('ingresos','costo_ventas','gastos_operativos','gastos_financieros','no_resultados') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('ingresos','costo_ventas','gastos_operativos','gastos_financieros','no_resultados')","nulo":false},{"nombre":"aplica_a","definicion":"`aplica_a` enum('ingreso','egreso','ambos') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'egreso'","tipo":"enum('ingreso','egreso','ambos')","nulo":false},{"nombre":"caja_chica","definicion":"`caja_chica` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"requiere_comprobante","definicion":"`requiere_comprobante` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"iva_default","definicion":"`iva_default` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"ref_contador","definicion":"`ref_contador` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(120)","nulo":true},{"nombre":"activa","definicion":"`activa` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_catfin_codigo","tipo":"unique","definicion":"UNIQUE KEY `uq_catfin_codigo` (`codigo`)"},{"nombre":"idx_catfin_grupo","tipo":"index","definicion":"KEY `idx_catfin_grupo` (`grupo`)"},{"nombre":"idx_catfin_activa","tipo":"index","definicion":"KEY `idx_catfin_activa` (`activa`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"cat_forma_pago":{"create":"CREATE TABLE `cat_forma_pago` (\n  `clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`clave`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"clave","definicion":"`clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`clave`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"cat_metodo_pago":{"create":"CREATE TABLE `cat_metodo_pago` (\n  `clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`clave`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"clave","definicion":"`clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`clave`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"cat_regimen_fiscal":{"create":"CREATE TABLE `cat_regimen_fiscal` (\n  `clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `persona_fisica` tinyint(1) DEFAULT 0,\n  `persona_moral` tinyint(1) DEFAULT 0,\n  `activo` tinyint(1) DEFAULT 1,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`clave`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"clave","definicion":"`clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"persona_fisica","definicion":"`persona_fisica` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"persona_moral","definicion":"`persona_moral` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`clave`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"cat_uso_cfdi":{"create":"CREATE TABLE `cat_uso_cfdi` (\n  `clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `persona_fisica` tinyint(1) DEFAULT 0,\n  `persona_moral` tinyint(1) DEFAULT 0,\n  `activo` tinyint(1) DEFAULT 1,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`clave`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"clave","definicion":"`clave` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"persona_fisica","definicion":"`persona_fisica` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"persona_moral","definicion":"`persona_moral` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`clave`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"clasificaciones_cliente":{"create":"CREATE TABLE `clasificaciones_cliente` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(100) NOT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_nombre` (`nombre`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_nombre","tipo":"unique","definicion":"UNIQUE KEY `uk_nombre` (`nombre`)"}]},"clientes":{"create":"CREATE TABLE `clientes` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `nombre_comercial` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `precio_venta` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista',\n  `porcentaje_envio` decimal(5,2) NOT NULL DEFAULT 0.00,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `tiene_credito` tinyint(1) DEFAULT 0 COMMENT 'Indica si el cliente tiene cr\u251c\u00aedito habilitado',\n  `monto_credito_maximo` decimal(10,2) DEFAULT 0.00 COMMENT 'Monto m\u251c\u00edximo de cr\u251c\u00aedito autorizado',\n  `dias_credito` int(11) DEFAULT 0 COMMENT 'D\u251c\u00a1as de cr\u251c\u00aedito (15, 30 o 45)',\n  `saldo_credito_usado` decimal(10,2) DEFAULT 0.00 COMMENT 'Saldo actual de cr\u251c\u00aedito utilizado',\n  `razon_social` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Raz\u251c\u2502n social para facturaci\u251c\u2502n',\n  `regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave r\u251c\u00aegimen fiscal SAT',\n  `uso_cfdi` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave uso CFDI SAT',\n  `codigo_postal_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'CP del domicilio fiscal',\n  `email_facturacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Email para env\u251c\u00a1o de CFDI',\n  `requiere_factura` tinyint(1) DEFAULT 0 COMMENT 'Si generalmente requiere factura',\n  `rfc` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'RFC del cliente',\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `usuario` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `contrasena` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `clasificacion_id` int(11) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `usuario` (`usuario`),\n  KEY `idx_nombre` (`nombre`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_clientes_credito` (`tiene_credito`),\n  KEY `idx_rfc` (`rfc`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"nombre_comercial","definicion":"`nombre_comercial` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"precio_venta","definicion":"`precio_venta` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista'","tipo":"varchar(15)","nulo":true},{"nombre":"porcentaje_envio","definicion":"`porcentaje_envio` decimal(5,2) NOT NULL DEFAULT 0.00","tipo":"decimal(5,2)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"tiene_credito","definicion":"`tiene_credito` tinyint(1) DEFAULT 0 COMMENT 'Indica si el cliente tiene cr\u251c\u00aedito habilitado'","tipo":"tinyint(1)","nulo":true},{"nombre":"monto_credito_maximo","definicion":"`monto_credito_maximo` decimal(10,2) DEFAULT 0.00 COMMENT 'Monto m\u251c\u00edximo de cr\u251c\u00aedito autorizado'","tipo":"decimal(10,2)","nulo":true},{"nombre":"dias_credito","definicion":"`dias_credito` int(11) DEFAULT 0 COMMENT 'D\u251c\u00a1as de cr\u251c\u00aedito (15, 30 o 45)'","tipo":"int(11)","nulo":true},{"nombre":"saldo_credito_usado","definicion":"`saldo_credito_usado` decimal(10,2) DEFAULT 0.00 COMMENT 'Saldo actual de cr\u251c\u00aedito utilizado'","tipo":"decimal(10,2)","nulo":true},{"nombre":"razon_social","definicion":"`razon_social` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Raz\u251c\u2502n social para facturaci\u251c\u2502n'","tipo":"varchar(255)","nulo":true},{"nombre":"regimen_fiscal","definicion":"`regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave r\u251c\u00aegimen fiscal SAT'","tipo":"varchar(10)","nulo":true},{"nombre":"uso_cfdi","definicion":"`uso_cfdi` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave uso CFDI SAT'","tipo":"varchar(10)","nulo":true},{"nombre":"codigo_postal_fiscal","definicion":"`codigo_postal_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'CP del domicilio fiscal'","tipo":"varchar(10)","nulo":true},{"nombre":"email_facturacion","definicion":"`email_facturacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Email para env\u251c\u00a1o de CFDI'","tipo":"varchar(255)","nulo":true},{"nombre":"requiere_factura","definicion":"`requiere_factura` tinyint(1) DEFAULT 0 COMMENT 'Si generalmente requiere factura'","tipo":"tinyint(1)","nulo":true},{"nombre":"rfc","definicion":"`rfc` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'RFC del cliente'","tipo":"varchar(20)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"usuario","definicion":"`usuario` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"contrasena","definicion":"`contrasena` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"clasificacion_id","definicion":"`clasificacion_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"usuario","tipo":"unique","definicion":"UNIQUE KEY `usuario` (`usuario`)"},{"nombre":"idx_nombre","tipo":"index","definicion":"KEY `idx_nombre` (`nombre`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_clientes_credito","tipo":"index","definicion":"KEY `idx_clientes_credito` (`tiene_credito`)"},{"nombre":"idx_rfc","tipo":"index","definicion":"KEY `idx_rfc` (`rfc`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"cliente_datos_fiscales":{"create":"CREATE TABLE `cliente_datos_fiscales` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `cliente_id` int(11) NOT NULL,\n  `rfc` varchar(13) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `razon_social` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `uso_cfdi` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `codigo_postal_fiscal` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `direccion_fiscal` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `email_facturacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `es_principal` tinyint(1) DEFAULT 0,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `fecha_actualizacion` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_cliente_datos_fiscales_cliente` (`cliente_id`),\n  KEY `idx_cliente_datos_fiscales_rfc` (`rfc`),\n  KEY `idx_cliente_datos_fiscales_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `cliente_datos_fiscales_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"rfc","definicion":"`rfc` varchar(13) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(13)","nulo":false},{"nombre":"razon_social","definicion":"`razon_social` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"regimen_fiscal","definicion":"`regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"uso_cfdi","definicion":"`uso_cfdi` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"codigo_postal_fiscal","definicion":"`codigo_postal_fiscal` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(5)","nulo":true},{"nombre":"direccion_fiscal","definicion":"`direccion_fiscal` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"email_facturacion","definicion":"`email_facturacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"es_principal","definicion":"`es_principal` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cliente_datos_fiscales_cliente","tipo":"index","definicion":"KEY `idx_cliente_datos_fiscales_cliente` (`cliente_id`)"},{"nombre":"idx_cliente_datos_fiscales_rfc","tipo":"index","definicion":"KEY `idx_cliente_datos_fiscales_rfc` (`rfc`)"},{"nombre":"idx_cliente_datos_fiscales_activo","tipo":"index","definicion":"KEY `idx_cliente_datos_fiscales_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"cliente_datos_fiscales_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `cliente_datos_fiscales_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE"}]},"cliente_direcciones":{"create":"CREATE TABLE `cliente_direcciones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `cliente_id` int(11) NOT NULL,\n  `direccion` text COLLATE utf8mb4_unicode_ci NOT NULL,\n  `tipo` enum('principal','entrega','facturacion','otro') COLLATE utf8mb4_unicode_ci DEFAULT 'principal',\n  `activo` tinyint(4) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `latitud` decimal(10,8) DEFAULT NULL COMMENT 'Latitud de la direcci\u00ben para Google Maps',\n  `longitud` decimal(11,8) DEFAULT NULL COMMENT 'Longitud de la direcci\u00ben para Google Maps',\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_cliente_direccion` (`cliente_id`,`activo`),\n  KEY `idx_coordenadas` (`latitud`,`longitud`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `cliente_direcciones_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"direccion","definicion":"`direccion` text COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"text","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('principal','entrega','facturacion','otro') COLLATE utf8mb4_unicode_ci DEFAULT 'principal'","tipo":"enum('principal','entrega','facturacion','otro')","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"latitud","definicion":"`latitud` decimal(10,8) DEFAULT NULL COMMENT 'Latitud de la direcci\u00ben para Google Maps'","tipo":"decimal(10,8)","nulo":true},{"nombre":"longitud","definicion":"`longitud` decimal(11,8) DEFAULT NULL COMMENT 'Longitud de la direcci\u00ben para Google Maps'","tipo":"decimal(11,8)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cliente_direccion","tipo":"index","definicion":"KEY `idx_cliente_direccion` (`cliente_id`,`activo`)"},{"nombre":"idx_coordenadas","tipo":"index","definicion":"KEY `idx_coordenadas` (`latitud`,`longitud`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"cliente_direcciones_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `cliente_direcciones_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE"}]},"cliente_horarios_entrega":{"create":"CREATE TABLE `cliente_horarios_entrega` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `cliente_id` int(11) NOT NULL,\n  `direccion_id` int(11) DEFAULT NULL,\n  `dia` enum('lunes','martes','miercoles','jueves','viernes','sabado','domingo') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `hora_inicio` time NOT NULL,\n  `hora_fin` time NOT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_cliente` (`cliente_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_horarios_direccion_id` (`direccion_id`),\n  CONSTRAINT `fk_horarios_cliente` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"direccion_id","definicion":"`direccion_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"dia","definicion":"`dia` enum('lunes','martes','miercoles','jueves','viernes','sabado','domingo') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('lunes','martes','miercoles','jueves','viernes','sabado','domingo')","nulo":false},{"nombre":"hora_inicio","definicion":"`hora_inicio` time NOT NULL","tipo":"time","nulo":false},{"nombre":"hora_fin","definicion":"`hora_fin` time NOT NULL","tipo":"time","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cliente","tipo":"index","definicion":"KEY `idx_cliente` (`cliente_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_horarios_direccion_id","tipo":"index","definicion":"KEY `idx_horarios_direccion_id` (`direccion_id`)"},{"nombre":"fk_horarios_cliente","tipo":"foreign","definicion":"CONSTRAINT `fk_horarios_cliente` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE"}]},"cliente_telefonos":{"create":"CREATE TABLE `cliente_telefonos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `cliente_id` int(11) NOT NULL,\n  `telefono` varchar(15) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `tipo` enum('principal','casa','trabajo','otro') COLLATE utf8mb4_unicode_ci DEFAULT 'principal',\n  `whatsapp` tinyint(1) DEFAULT 0,\n  `activo` tinyint(4) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_cliente_telefono` (`cliente_id`,`telefono`),\n  KEY `idx_cliente_telefono` (`cliente_id`,`activo`),\n  KEY `idx_telefono` (`telefono`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `cliente_telefonos_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"telefono","definicion":"`telefono` varchar(15) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(15)","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('principal','casa','trabajo','otro') COLLATE utf8mb4_unicode_ci DEFAULT 'principal'","tipo":"enum('principal','casa','trabajo','otro')","nulo":true},{"nombre":"whatsapp","definicion":"`whatsapp` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_cliente_telefono","tipo":"unique","definicion":"UNIQUE KEY `unique_cliente_telefono` (`cliente_id`,`telefono`)"},{"nombre":"idx_cliente_telefono","tipo":"index","definicion":"KEY `idx_cliente_telefono` (`cliente_id`,`activo`)"},{"nombre":"idx_telefono","tipo":"index","definicion":"KEY `idx_telefono` (`telefono`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"cliente_telefonos_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `cliente_telefonos_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE CASCADE"}]},"complementos_pago":{"create":"CREATE TABLE `complementos_pago` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `uuid` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'UUID del timbrado (Folio Fiscal)',\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Folio interno del REP',\n  `referencia` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `serie` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'P' COMMENT 'Serie del REP',\n  `cliente_id` int(11) NOT NULL,\n  `usuario_id` int(11) NOT NULL COMMENT 'Usuario que gener\u00f3 el complemento',\n  `emisor_id` int(11) DEFAULT NULL,\n  `receptor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `emisor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `emisor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `emisor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `emisor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `forma_pago` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Clave SAT forma de pago del pago recibido',\n  `fecha_pago` datetime NOT NULL,\n  `monto_total` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Suma de los montos pagados a todas las facturas relacionadas',\n  `moneda` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT 'MXN',\n  `ruta_xml` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ruta_pdf` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `estado` enum('pendiente_timbrado','timbrada','cancelada','pendiente_cancelacion') COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente_timbrado',\n  `fecha_emision` datetime NOT NULL,\n  `fecha_timbrado` datetime DEFAULT NULL,\n  `fecha_cancelacion` datetime DEFAULT NULL,\n  `fecha_solicitud_cancelacion` datetime DEFAULT NULL,\n  `motivo_cancelacion` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `folio_sustitucion` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `acuse_cancelacion` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `es_cancelable` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `usuario_id` (`usuario_id`),\n  KEY `idx_uuid` (`uuid`),\n  KEY `idx_estado` (`estado`),\n  KEY `idx_cliente` (`cliente_id`),\n  KEY `idx_fecha_pago` (`fecha_pago`),\n  CONSTRAINT `complementos_pago_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`),\n  CONSTRAINT `complementos_pago_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"uuid","definicion":"`uuid` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'UUID del timbrado (Folio Fiscal)'","tipo":"varchar(36)","nulo":true},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Folio interno del REP'","tipo":"varchar(50)","nulo":false},{"nombre":"referencia","definicion":"`referencia` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"serie","definicion":"`serie` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'P' COMMENT 'Serie del REP'","tipo":"varchar(10)","nulo":true},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL COMMENT 'Usuario que gener\u00f3 el complemento'","tipo":"int(11)","nulo":false},{"nombre":"emisor_id","definicion":"`emisor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"receptor_rfc","definicion":"`receptor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"receptor_razon_social","definicion":"`receptor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"receptor_regimen_fiscal","definicion":"`receptor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"receptor_codigo_postal","definicion":"`receptor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"receptor_email","definicion":"`receptor_email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"emisor_rfc","definicion":"`emisor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"emisor_razon_social","definicion":"`emisor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"emisor_regimen_fiscal","definicion":"`emisor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"emisor_codigo_postal","definicion":"`emisor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"forma_pago","definicion":"`forma_pago` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Clave SAT forma de pago del pago recibido'","tipo":"varchar(10)","nulo":false},{"nombre":"fecha_pago","definicion":"`fecha_pago` datetime NOT NULL","tipo":"datetime","nulo":false},{"nombre":"monto_total","definicion":"`monto_total` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Suma de los montos pagados a todas las facturas relacionadas'","tipo":"decimal(12,2)","nulo":false},{"nombre":"moneda","definicion":"`moneda` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT 'MXN'","tipo":"varchar(5)","nulo":true},{"nombre":"ruta_xml","definicion":"`ruta_xml` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"ruta_pdf","definicion":"`ruta_pdf` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('pendiente_timbrado','timbrada','cancelada','pendiente_cancelacion') COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente_timbrado'","tipo":"enum('pendiente_timbrado','timbrada','cancelada','pendiente_cancelacion')","nulo":true},{"nombre":"fecha_emision","definicion":"`fecha_emision` datetime NOT NULL","tipo":"datetime","nulo":false},{"nombre":"fecha_timbrado","definicion":"`fecha_timbrado` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_cancelacion","definicion":"`fecha_cancelacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_solicitud_cancelacion","definicion":"`fecha_solicitud_cancelacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(5)","nulo":true},{"nombre":"folio_sustitucion","definicion":"`folio_sustitucion` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"acuse_cancelacion","definicion":"`acuse_cancelacion` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"longtext","nulo":true},{"nombre":"es_cancelable","definicion":"`es_cancelable` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"usuario_id","tipo":"index","definicion":"KEY `usuario_id` (`usuario_id`)"},{"nombre":"idx_uuid","tipo":"index","definicion":"KEY `idx_uuid` (`uuid`)"},{"nombre":"idx_estado","tipo":"index","definicion":"KEY `idx_estado` (`estado`)"},{"nombre":"idx_cliente","tipo":"index","definicion":"KEY `idx_cliente` (`cliente_id`)"},{"nombre":"idx_fecha_pago","tipo":"index","definicion":"KEY `idx_fecha_pago` (`fecha_pago`)"},{"nombre":"complementos_pago_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `complementos_pago_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`)"},{"nombre":"complementos_pago_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `complementos_pago_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"}]},"complemento_pago_documentos":{"create":"CREATE TABLE `complemento_pago_documentos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `complemento_pago_id` int(11) NOT NULL,\n  `factura_id` int(11) NOT NULL COMMENT 'Factura PPD relacionada (DoctoRelacionado)',\n  `num_parcialidad` int(11) NOT NULL,\n  `imp_saldo_ant` decimal(12,2) NOT NULL,\n  `imp_pagado` decimal(12,2) NOT NULL,\n  `imp_saldo_insoluto` decimal(12,2) NOT NULL,\n  `objeto_imp_dr` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT '02' COMMENT '01=No objeto, 02=S\u00ed objeto de impuesto',\n  `base_iva16` decimal(12,2) DEFAULT 0.00,\n  `importe_iva16` decimal(12,2) DEFAULT 0.00,\n  `base_iva8` decimal(12,2) DEFAULT 0.00,\n  `importe_iva8` decimal(12,2) DEFAULT 0.00,\n  `base_iva0` decimal(12,2) DEFAULT 0.00,\n  `base_exenta` decimal(12,2) DEFAULT 0.00,\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_complemento` (`complemento_pago_id`),\n  KEY `idx_factura` (`factura_id`),\n  CONSTRAINT `complemento_pago_documentos_ibfk_1` FOREIGN KEY (`complemento_pago_id`) REFERENCES `complementos_pago` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `complemento_pago_documentos_ibfk_2` FOREIGN KEY (`factura_id`) REFERENCES `facturas` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"complemento_pago_id","definicion":"`complemento_pago_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"factura_id","definicion":"`factura_id` int(11) NOT NULL COMMENT 'Factura PPD relacionada (DoctoRelacionado)'","tipo":"int(11)","nulo":false},{"nombre":"num_parcialidad","definicion":"`num_parcialidad` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"imp_saldo_ant","definicion":"`imp_saldo_ant` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"imp_pagado","definicion":"`imp_pagado` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"imp_saldo_insoluto","definicion":"`imp_saldo_insoluto` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"objeto_imp_dr","definicion":"`objeto_imp_dr` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT '02' COMMENT '01=No objeto, 02=S\u00ed objeto de impuesto'","tipo":"varchar(5)","nulo":true},{"nombre":"base_iva16","definicion":"`base_iva16` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"importe_iva16","definicion":"`importe_iva16` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"base_iva8","definicion":"`base_iva8` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"importe_iva8","definicion":"`importe_iva8` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"base_iva0","definicion":"`base_iva0` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"base_exenta","definicion":"`base_exenta` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_complemento","tipo":"index","definicion":"KEY `idx_complemento` (`complemento_pago_id`)"},{"nombre":"idx_factura","tipo":"index","definicion":"KEY `idx_factura` (`factura_id`)"},{"nombre":"complemento_pago_documentos_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `complemento_pago_documentos_ibfk_1` FOREIGN KEY (`complemento_pago_id`) REFERENCES `complementos_pago` (`id`) ON DELETE CASCADE"},{"nombre":"complemento_pago_documentos_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `complemento_pago_documentos_ibfk_2` FOREIGN KEY (`factura_id`) REFERENCES `facturas` (`id`)"}]},"configuraciones":{"create":"CREATE TABLE `configuraciones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `clave` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `valor` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `tipo` enum('string','number','boolean','json') COLLATE utf8mb4_unicode_ci DEFAULT 'string',\n  `categoria` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'general',\n  `caja_id` int(11) DEFAULT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_clave_caja_id` (`clave`,`caja_id`),\n  KEY `idx_configuraciones_categoria` (`categoria`),\n  KEY `idx_caja` (`caja_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_configuraciones_caja` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"clave","definicion":"`clave` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"valor","definicion":"`valor` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"tipo","definicion":"`tipo` enum('string','number','boolean','json') COLLATE utf8mb4_unicode_ci DEFAULT 'string'","tipo":"enum('string','number','boolean','json')","nulo":true},{"nombre":"categoria","definicion":"`categoria` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'general'","tipo":"varchar(50)","nulo":true},{"nombre":"caja_id","definicion":"`caja_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_clave_caja_id","tipo":"unique","definicion":"UNIQUE KEY `unique_clave_caja_id` (`clave`,`caja_id`)"},{"nombre":"idx_configuraciones_categoria","tipo":"index","definicion":"KEY `idx_configuraciones_categoria` (`categoria`)"},{"nombre":"idx_caja","tipo":"index","definicion":"KEY `idx_caja` (`caja_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_configuraciones_caja","tipo":"foreign","definicion":"CONSTRAINT `fk_configuraciones_caja` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`) ON DELETE CASCADE"}]},"configuracion_rangos":{"create":"CREATE TABLE `configuracion_rangos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `precio_tipo` enum('precio1','precio2','precio3','precio4') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cantidad_minima` decimal(10,2) NOT NULL,\n  `cantidad_maxima` decimal(10,2) DEFAULT NULL,\n  `porcentaje_descuento` decimal(5,2) DEFAULT 0.00,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_precio_tipo` (`precio_tipo`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"precio_tipo","definicion":"`precio_tipo` enum('precio1','precio2','precio3','precio4') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('precio1','precio2','precio3','precio4')","nulo":false},{"nombre":"cantidad_minima","definicion":"`cantidad_minima` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"cantidad_maxima","definicion":"`cantidad_maxima` decimal(10,2) DEFAULT NULL","tipo":"decimal(10,2)","nulo":true},{"nombre":"porcentaje_descuento","definicion":"`porcentaje_descuento` decimal(5,2) DEFAULT 0.00","tipo":"decimal(5,2)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_precio_tipo","tipo":"index","definicion":"KEY `idx_precio_tipo` (`precio_tipo`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"cortes_caja":{"create":"CREATE TABLE `cortes_caja` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `caja_id` int(11) NOT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fondo_inicial` decimal(12,2) DEFAULT 0.00,\n  `total_efectivo` decimal(12,2) DEFAULT 0.00,\n  `total_tarjeta` decimal(12,2) DEFAULT 0.00,\n  `tarjeta_contado` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total_tarjeta_credito` decimal(12,2) DEFAULT 0.00,\n  `total_tarjeta_debito` decimal(12,2) DEFAULT 0.00,\n  `total_transferencia` decimal(12,2) DEFAULT 0.00,\n  `transferencia_contado` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total_ventas` decimal(12,2) DEFAULT 0.00,\n  `cantidad_ventas` int(11) DEFAULT 0,\n  `efectivo_contado` decimal(12,2) DEFAULT 0.00,\n  `efectivo_esperado` decimal(12,2) DEFAULT 0.00,\n  `diferencia` decimal(12,2) DEFAULT 0.00,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `total_ingresos` decimal(12,2) DEFAULT 0.00,\n  `total_retiros` decimal(12,2) DEFAULT 0.00,\n  `total_devoluciones` decimal(12,2) DEFAULT 0.00,\n  `cantidad_devoluciones` int(11) DEFAULT 0,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `diferencia_tarjeta` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `diferencia_transferencia` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `arqueo_detalle` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,\n  `total_ingresos_cxc_efectivo` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total_ingresos_cxc_tarjeta_credito` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total_ingresos_cxc_tarjeta_debito` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total_ingresos_cxc_transferencia` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `cantidad_ingresos_cxc` int(11) NOT NULL DEFAULT 0,\n  PRIMARY KEY (`id`),\n  KEY `idx_caja` (`caja_id`),\n  KEY `idx_fecha` (`fecha_creacion`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `cortes_caja_ibfk_1` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"caja_id","definicion":"`caja_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fondo_inicial","definicion":"`fondo_inicial` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total_efectivo","definicion":"`total_efectivo` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total_tarjeta","definicion":"`total_tarjeta` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"tarjeta_contado","definicion":"`tarjeta_contado` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total_tarjeta_credito","definicion":"`total_tarjeta_credito` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total_tarjeta_debito","definicion":"`total_tarjeta_debito` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total_transferencia","definicion":"`total_transferencia` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"transferencia_contado","definicion":"`transferencia_contado` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total_ventas","definicion":"`total_ventas` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"cantidad_ventas","definicion":"`cantidad_ventas` int(11) DEFAULT 0","tipo":"int(11)","nulo":true},{"nombre":"efectivo_contado","definicion":"`efectivo_contado` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"efectivo_esperado","definicion":"`efectivo_esperado` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"diferencia","definicion":"`diferencia` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"total_ingresos","definicion":"`total_ingresos` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total_retiros","definicion":"`total_retiros` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total_devoluciones","definicion":"`total_devoluciones` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"cantidad_devoluciones","definicion":"`cantidad_devoluciones` int(11) DEFAULT 0","tipo":"int(11)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"diferencia_tarjeta","definicion":"`diferencia_tarjeta` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"diferencia_transferencia","definicion":"`diferencia_transferencia` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"arqueo_detalle","definicion":"`arqueo_detalle` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL","tipo":"longtext","nulo":true},{"nombre":"total_ingresos_cxc_efectivo","definicion":"`total_ingresos_cxc_efectivo` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total_ingresos_cxc_tarjeta_credito","definicion":"`total_ingresos_cxc_tarjeta_credito` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total_ingresos_cxc_tarjeta_debito","definicion":"`total_ingresos_cxc_tarjeta_debito` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total_ingresos_cxc_transferencia","definicion":"`total_ingresos_cxc_transferencia` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"cantidad_ingresos_cxc","definicion":"`cantidad_ingresos_cxc` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_caja","tipo":"index","definicion":"KEY `idx_caja` (`caja_id`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha_creacion`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"cortes_caja_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `cortes_caja_ibfk_1` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`)"}]},"cotizaciones":{"create":"CREATE TABLE `cotizaciones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `caja_id` int(11) DEFAULT NULL,\n  `cliente_id` int(11) DEFAULT NULL,\n  `emisor_id` int(11) DEFAULT NULL,\n  `subtotal` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `impuesto` decimal(10,2) DEFAULT 0.00,\n  `descuento` decimal(10,2) DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_vigencia` date DEFAULT NULL COMMENT 'Hasta cuando es valida la cotizacion',\n  `estatus` enum('pendiente','aceptada','rechazada','expirada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente',\n  `condiciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Condiciones comerciales',\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `venta_mostrador_id` int(11) DEFAULT NULL COMMENT 'Venta creada al convertir',\n  `fecha_conversion` datetime DEFAULT NULL,\n  `usuario_id_conversion` int(11) DEFAULT NULL,\n  `nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',\n  `id_origen` int(11) NOT NULL DEFAULT 0,\n  `editado_nube` tinyint(1) NOT NULL DEFAULT 0,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uniq_folio` (`folio`),\n  KEY `idx_cliente_id` (`cliente_id`),\n  KEY `idx_usuario_id` (`usuario_id`),\n  KEY `idx_estatus` (`estatus`),\n  KEY `idx_fecha_creacion` (`fecha_creacion`),\n  KEY `idx_venta_mostrador_id` (`venta_mostrador_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"caja_id","definicion":"`caja_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"emisor_id","definicion":"`emisor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_vigencia","definicion":"`fecha_vigencia` date DEFAULT NULL COMMENT 'Hasta cuando es valida la cotizacion'","tipo":"date","nulo":true},{"nombre":"estatus","definicion":"`estatus` enum('pendiente','aceptada','rechazada','expirada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente'","tipo":"enum('pendiente','aceptada','rechazada','expirada')","nulo":false},{"nombre":"condiciones","definicion":"`condiciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Condiciones comerciales'","tipo":"text","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"venta_mostrador_id","definicion":"`venta_mostrador_id` int(11) DEFAULT NULL COMMENT 'Venta creada al convertir'","tipo":"int(11)","nulo":true},{"nombre":"fecha_conversion","definicion":"`fecha_conversion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"usuario_id_conversion","definicion":"`usuario_id_conversion` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"nombre_pc","definicion":"`nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"sucursal","definicion":"`sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''","tipo":"varchar(100)","nulo":false},{"nombre":"id_origen","definicion":"`id_origen` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"editado_nube","definicion":"`editado_nube` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uniq_folio","tipo":"unique","definicion":"UNIQUE KEY `uniq_folio` (`folio`)"},{"nombre":"idx_cliente_id","tipo":"index","definicion":"KEY `idx_cliente_id` (`cliente_id`)"},{"nombre":"idx_usuario_id","tipo":"index","definicion":"KEY `idx_usuario_id` (`usuario_id`)"},{"nombre":"idx_estatus","tipo":"index","definicion":"KEY `idx_estatus` (`estatus`)"},{"nombre":"idx_fecha_creacion","tipo":"index","definicion":"KEY `idx_fecha_creacion` (`fecha_creacion`)"},{"nombre":"idx_venta_mostrador_id","tipo":"index","definicion":"KEY `idx_venta_mostrador_id` (`venta_mostrador_id`)"}]},"cotizaciones_detalles":{"create":"CREATE TABLE `cotizaciones_detalles` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `cotizacion_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `producto_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cantidad` decimal(10,2) NOT NULL,\n  `precio_unitario` decimal(12,4) NOT NULL,\n  `subtotal` decimal(10,2) NOT NULL,\n  `impuesto` decimal(10,2) DEFAULT 0.00,\n  `descuento` decimal(10,2) DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL,\n  `precio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista',\n  `costo` decimal(12,4) DEFAULT 0.0000,\n  `costo_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `impresora` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',\n  `id_origen` int(11) NOT NULL DEFAULT 0,\n  `editado_nube` tinyint(1) NOT NULL DEFAULT 0,\n  PRIMARY KEY (`id`),\n  KEY `idx_cotizacion_id` (`cotizacion_id`),\n  KEY `idx_producto_id` (`producto_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"cotizacion_id","definicion":"`cotizacion_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_nombre","definicion":"`producto_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"precio_unitario","definicion":"`precio_unitario` decimal(12,4) NOT NULL","tipo":"decimal(12,4)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"precio_tipo","definicion":"`precio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista'","tipo":"varchar(20)","nulo":true},{"nombre":"costo","definicion":"`costo` decimal(12,4) DEFAULT 0.0000","tipo":"decimal(12,4)","nulo":true},{"nombre":"costo_tipo","definicion":"`costo_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"impresora","definicion":"`impresora` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"sucursal","definicion":"`sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''","tipo":"varchar(100)","nulo":false},{"nombre":"id_origen","definicion":"`id_origen` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"editado_nube","definicion":"`editado_nube` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cotizacion_id","tipo":"index","definicion":"KEY `idx_cotizacion_id` (`cotizacion_id`)"},{"nombre":"idx_producto_id","tipo":"index","definicion":"KEY `idx_producto_id` (`producto_id`)"}]},"cuentas_bancarias":{"create":"CREATE TABLE `cuentas_bancarias` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `tipo` enum('bancaria','caja_chica') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'bancaria',\n  `alias` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `banco` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `numero_cuenta` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `clabe` varchar(25) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fondo_asignado` decimal(14,2) DEFAULT NULL,\n  `saldo_inicial` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `fecha_saldo_inicial` date NOT NULL,\n  `responsable_id` int(11) DEFAULT NULL,\n  `plantilla_id` int(11) DEFAULT NULL,\n  `activa` tinyint(1) NOT NULL DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_cuentas_alias` (`alias`),\n  KEY `idx_cuentas_tipo` (`tipo`),\n  KEY `idx_cuentas_activa` (`activa`),\n  KEY `idx_cuentas_centro` (`centro`),\n  KEY `idx_cuentas_responsable` (`responsable_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('bancaria','caja_chica') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'bancaria'","tipo":"enum('bancaria','caja_chica')","nulo":false},{"nombre":"alias","definicion":"`alias` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"banco","definicion":"`banco` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"numero_cuenta","definicion":"`numero_cuenta` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(30)","nulo":true},{"nombre":"clabe","definicion":"`clabe` varchar(25) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(25)","nulo":true},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"fondo_asignado","definicion":"`fondo_asignado` decimal(14,2) DEFAULT NULL","tipo":"decimal(14,2)","nulo":true},{"nombre":"saldo_inicial","definicion":"`saldo_inicial` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"fecha_saldo_inicial","definicion":"`fecha_saldo_inicial` date NOT NULL","tipo":"date","nulo":false},{"nombre":"responsable_id","definicion":"`responsable_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"plantilla_id","definicion":"`plantilla_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"activa","definicion":"`activa` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cuentas_alias","tipo":"index","definicion":"KEY `idx_cuentas_alias` (`alias`)"},{"nombre":"idx_cuentas_tipo","tipo":"index","definicion":"KEY `idx_cuentas_tipo` (`tipo`)"},{"nombre":"idx_cuentas_activa","tipo":"index","definicion":"KEY `idx_cuentas_activa` (`activa`)"},{"nombre":"idx_cuentas_centro","tipo":"index","definicion":"KEY `idx_cuentas_centro` (`centro`)"},{"nombre":"idx_cuentas_responsable","tipo":"index","definicion":"KEY `idx_cuentas_responsable` (`responsable_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"descuentos_volumen":{"create":"CREATE TABLE `descuentos_volumen` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `producto_id` int(11) NOT NULL,\n  `cantidad_minima` decimal(10,2) NOT NULL COMMENT 'Cantidad m\u00ddnima para aplicar descuento',\n  `descuento_porcentaje` decimal(9,6) NOT NULL COMMENT 'Porcentaje de descuento a aplicar',\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_producto_cantidad` (`producto_id`,`cantidad_minima`),\n  KEY `idx_producto_activo` (`producto_id`,`activo`),\n  KEY `idx_cantidad` (`cantidad_minima`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `descuentos_volumen_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"cantidad_minima","definicion":"`cantidad_minima` decimal(10,2) NOT NULL COMMENT 'Cantidad m\u00ddnima para aplicar descuento'","tipo":"decimal(10,2)","nulo":false},{"nombre":"descuento_porcentaje","definicion":"`descuento_porcentaje` decimal(9,6) NOT NULL COMMENT 'Porcentaje de descuento a aplicar'","tipo":"decimal(9,6)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_producto_cantidad","tipo":"unique","definicion":"UNIQUE KEY `uk_producto_cantidad` (`producto_id`,`cantidad_minima`)"},{"nombre":"idx_producto_activo","tipo":"index","definicion":"KEY `idx_producto_activo` (`producto_id`,`activo`)"},{"nombre":"idx_cantidad","tipo":"index","definicion":"KEY `idx_cantidad` (`cantidad_minima`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"descuentos_volumen_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `descuentos_volumen_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE"}]},"devoluciones":{"create":"CREATE TABLE `devoluciones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `venta_id` int(11) NOT NULL,\n  `tipo_comprobante` enum('ticket_factura','solo_ticket') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'solo_ticket',\n  `metodo_pago` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'efectivo',\n  `alcance` enum('total','parcial') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'parcial',\n  `tipo_nota_credito` enum('fiscal','interna') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'interna',\n  `codigo_escenario` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `total_devolucion` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `usuario_id` int(11) NOT NULL,\n  `usuario_autorizador_id` int(11) DEFAULT NULL,\n  `nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `tipo_venta` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'mostrador',\n  `estatus_pago` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'pagado',\n  `requiere_reembolso` tinyint(1) DEFAULT 1,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `uuid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `serie_nc` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `folio_nc` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `referencia` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ruta_xml` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ruta_pdf` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `emisor_id` int(11) DEFAULT NULL,\n  `factura_original_id` int(11) DEFAULT NULL,\n  `factura_original_uuid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `estado_cfdi` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_timbrado` datetime DEFAULT NULL,\n  `canal_reembolso` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `idx_venta_id` (`venta_id`),\n  KEY `idx_folio` (`folio`),\n  KEY `idx_fecha` (`fecha_creacion`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"tipo_comprobante","definicion":"`tipo_comprobante` enum('ticket_factura','solo_ticket') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'solo_ticket'","tipo":"enum('ticket_factura','solo_ticket')","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'efectivo'","tipo":"varchar(50)","nulo":false},{"nombre":"alcance","definicion":"`alcance` enum('total','parcial') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'parcial'","tipo":"enum('total','parcial')","nulo":false},{"nombre":"tipo_nota_credito","definicion":"`tipo_nota_credito` enum('fiscal','interna') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'interna'","tipo":"enum('fiscal','interna')","nulo":false},{"nombre":"codigo_escenario","definicion":"`codigo_escenario` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"total_devolucion","definicion":"`total_devolucion` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_autorizador_id","definicion":"`usuario_autorizador_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"nombre_pc","definicion":"`nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"tipo_venta","definicion":"`tipo_venta` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'mostrador'","tipo":"varchar(20)","nulo":true},{"nombre":"estatus_pago","definicion":"`estatus_pago` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'pagado'","tipo":"varchar(20)","nulo":true},{"nombre":"requiere_reembolso","definicion":"`requiere_reembolso` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"uuid","definicion":"`uuid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"serie_nc","definicion":"`serie_nc` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"folio_nc","definicion":"`folio_nc` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"referencia","definicion":"`referencia` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"ruta_xml","definicion":"`ruta_xml` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"ruta_pdf","definicion":"`ruta_pdf` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"emisor_id","definicion":"`emisor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"factura_original_id","definicion":"`factura_original_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"factura_original_uuid","definicion":"`factura_original_uuid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"estado_cfdi","definicion":"`estado_cfdi` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(30)","nulo":true},{"nombre":"fecha_timbrado","definicion":"`fecha_timbrado` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"canal_reembolso","definicion":"`canal_reembolso` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(30)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_venta_id","tipo":"index","definicion":"KEY `idx_venta_id` (`venta_id`)"},{"nombre":"idx_folio","tipo":"index","definicion":"KEY `idx_folio` (`folio`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha_creacion`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"devoluciones_detalle":{"create":"CREATE TABLE `devoluciones_detalle` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `devolucion_id` int(11) NOT NULL,\n  `detalle_venta_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `cantidad` decimal(12,3) NOT NULL,\n  `precio_unitario` decimal(12,2) NOT NULL,\n  `precio_reembolso` decimal(12,2) NOT NULL,\n  `subtotal` decimal(12,2) NOT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_devolucion_id` (`devolucion_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"devolucion_id","definicion":"`devolucion_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"detalle_venta_id","definicion":"`detalle_venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(12,3) NOT NULL","tipo":"decimal(12,3)","nulo":false},{"nombre":"precio_unitario","definicion":"`precio_unitario` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"precio_reembolso","definicion":"`precio_reembolso` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_devolucion_id","tipo":"index","definicion":"KEY `idx_devolucion_id` (`devolucion_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"diferencia_costos":{"create":"CREATE TABLE `diferencia_costos` (\n  `producto_id` varchar(50) NOT NULL,\n  `descripcion` varchar(255) NOT NULL,\n  `costo_para_calculo` decimal(10,3) DEFAULT 0.000 COMMENT 'costo_precios del producto',\n  `costo_pacific_soft` decimal(10,3) DEFAULT 0.000 COMMENT 'precio_compra del producto',\n  `costo_mayor` decimal(10,3) DEFAULT 0.000 COMMENT 'El mayor de ambos costos',\n  `importe_diferencia` decimal(10,3) DEFAULT 0.000 COMMENT 'costo_para_calculo - costo_pacific_soft',\n  `fecha_registro` datetime DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`producto_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"producto_id","definicion":"`producto_id` varchar(50) NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"costo_para_calculo","definicion":"`costo_para_calculo` decimal(10,3) DEFAULT 0.000 COMMENT 'costo_precios del producto'","tipo":"decimal(10,3)","nulo":true},{"nombre":"costo_pacific_soft","definicion":"`costo_pacific_soft` decimal(10,3) DEFAULT 0.000 COMMENT 'precio_compra del producto'","tipo":"decimal(10,3)","nulo":true},{"nombre":"costo_mayor","definicion":"`costo_mayor` decimal(10,3) DEFAULT 0.000 COMMENT 'El mayor de ambos costos'","tipo":"decimal(10,3)","nulo":true},{"nombre":"importe_diferencia","definicion":"`importe_diferencia` decimal(10,3) DEFAULT 0.000 COMMENT 'costo_para_calculo - costo_pacific_soft'","tipo":"decimal(10,3)","nulo":true},{"nombre":"fecha_registro","definicion":"`fecha_registro` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`producto_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"emisores_cfdi":{"create":"CREATE TABLE `emisores_cfdi` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `llave` varchar(500) NOT NULL,\n  `rfc` varchar(13) NOT NULL,\n  `razon_social` varchar(300) NOT NULL,\n  `lugar_expedicion` varchar(10) DEFAULT '',\n  `direccion_fisica` varchar(300) DEFAULT '',\n  `poblacion` varchar(150) DEFAULT '',\n  `activo` tinyint(1) DEFAULT 1,\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"llave","definicion":"`llave` varchar(500) NOT NULL","tipo":"varchar(500)","nulo":false},{"nombre":"rfc","definicion":"`rfc` varchar(13) NOT NULL","tipo":"varchar(13)","nulo":false},{"nombre":"razon_social","definicion":"`razon_social` varchar(300) NOT NULL","tipo":"varchar(300)","nulo":false},{"nombre":"lugar_expedicion","definicion":"`lugar_expedicion` varchar(10) DEFAULT ''","tipo":"varchar(10)","nulo":true},{"nombre":"direccion_fisica","definicion":"`direccion_fisica` varchar(300) DEFAULT ''","tipo":"varchar(300)","nulo":true},{"nombre":"poblacion","definicion":"`poblacion` varchar(150) DEFAULT ''","tipo":"varchar(150)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"}]},"empleados":{"create":"CREATE TABLE `empleados` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `numero_empleado` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'EMP-0001: lo genera el sistema',\n  `nombre` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `apellido_paterno` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `apellido_materno` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `rfc` varchar(13) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `curp` varchar(18) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `nss` varchar(11) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `telefono` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `email` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `puesto` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Centro al que pertenece (CORP, SUC-A, ...)',\n  `fecha_ingreso` date DEFAULT NULL,\n  `fecha_baja` date DEFAULT NULL,\n  `motivo_baja` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activo` tinyint(1) NOT NULL DEFAULT 1,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_empleados_numero` (`numero_empleado`),\n  KEY `idx_empleados_nombre` (`apellido_paterno`,`nombre`),\n  KEY `idx_empleados_centro` (`centro`),\n  KEY `idx_empleados_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"numero_empleado","definicion":"`numero_empleado` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'EMP-0001: lo genera el sistema'","tipo":"varchar(20)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(80)","nulo":false},{"nombre":"apellido_paterno","definicion":"`apellido_paterno` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(80)","nulo":false},{"nombre":"apellido_materno","definicion":"`apellido_materno` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(80)","nulo":true},{"nombre":"rfc","definicion":"`rfc` varchar(13) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(13)","nulo":true},{"nombre":"curp","definicion":"`curp` varchar(18) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(18)","nulo":true},{"nombre":"nss","definicion":"`nss` varchar(11) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(11)","nulo":true},{"nombre":"telefono","definicion":"`telefono` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"email","definicion":"`email` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(120)","nulo":true},{"nombre":"puesto","definicion":"`puesto` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(80)","nulo":true},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Centro al que pertenece (CORP, SUC-A, ...)'","tipo":"varchar(10)","nulo":true},{"nombre":"fecha_ingreso","definicion":"`fecha_ingreso` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"fecha_baja","definicion":"`fecha_baja` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"motivo_baja","definicion":"`motivo_baja` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_empleados_numero","tipo":"unique","definicion":"UNIQUE KEY `idx_empleados_numero` (`numero_empleado`)"},{"nombre":"idx_empleados_nombre","tipo":"index","definicion":"KEY `idx_empleados_nombre` (`apellido_paterno`,`nombre`)"},{"nombre":"idx_empleados_centro","tipo":"index","definicion":"KEY `idx_empleados_centro` (`centro`)"},{"nombre":"idx_empleados_activo","tipo":"index","definicion":"KEY `idx_empleados_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"eventos_contables":{"create":"CREATE TABLE `eventos_contables` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `evento` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'COMBUSTIBLE_CARGADO, COMBUSTIBLE_CANCELADO, ...',\n  `modulo` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `documento_tabla` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `documento_id` int(11) NOT NULL,\n  `documento_folio` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha` date NOT NULL,\n  `periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `importe` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `payload` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'JSON con importes y dimensiones (veh\u00edculo, centro, sucursal, proveedor...)',\n  `estado` enum('pendiente','procesado','error','anulado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente',\n  `mensaje` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `procesado_en` datetime DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_eventos_unico` (`evento`,`documento_tabla`,`documento_id`),\n  KEY `idx_eventos_estado` (`estado`),\n  KEY `idx_eventos_periodo` (`periodo`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"evento","definicion":"`evento` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'COMBUSTIBLE_CARGADO, COMBUSTIBLE_CANCELADO, ...'","tipo":"varchar(40)","nulo":false},{"nombre":"modulo","definicion":"`modulo` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(30)","nulo":false},{"nombre":"documento_tabla","definicion":"`documento_tabla` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(40)","nulo":false},{"nombre":"documento_id","definicion":"`documento_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"documento_folio","definicion":"`documento_folio` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(40)","nulo":true},{"nombre":"fecha","definicion":"`fecha` date NOT NULL","tipo":"date","nulo":false},{"nombre":"periodo","definicion":"`periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"char(7)","nulo":false},{"nombre":"importe","definicion":"`importe` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"payload","definicion":"`payload` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'JSON con importes y dimensiones (veh\u00edculo, centro, sucursal, proveedor...)'","tipo":"text","nulo":false},{"nombre":"estado","definicion":"`estado` enum('pendiente','procesado','error','anulado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente'","tipo":"enum('pendiente','procesado','error','anulado')","nulo":false},{"nombre":"mensaje","definicion":"`mensaje` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"procesado_en","definicion":"`procesado_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_eventos_unico","tipo":"unique","definicion":"UNIQUE KEY `idx_eventos_unico` (`evento`,`documento_tabla`,`documento_id`)"},{"nombre":"idx_eventos_estado","tipo":"index","definicion":"KEY `idx_eventos_estado` (`estado`)"},{"nombre":"idx_eventos_periodo","tipo":"index","definicion":"KEY `idx_eventos_periodo` (`periodo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"facturas":{"create":"CREATE TABLE `facturas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `uuid` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `referencia` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `serie` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'A',\n  `cliente_id` int(11) NOT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `receptor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_uso_cfdi` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `emisor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `emisor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `emisor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `emisor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `subtotal` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `descuento` decimal(12,2) DEFAULT 0.00,\n  `total_impuestos` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `total` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `forma_pago` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `metodo_pago` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `moneda` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT 'MXN',\n  `tipo_cambio` decimal(10,4) DEFAULT 1.0000,\n  `ruta_xml` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ruta_pdf` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `estado` varchar(250) COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente_timbrado',\n  `fecha_emision` datetime NOT NULL,\n  `fecha_timbrado` datetime DEFAULT NULL,\n  `fecha_cancelacion` datetime DEFAULT NULL,\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `fecha_actualizacion` datetime DEFAULT NULL ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `xml_timbrado` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `emisor_id` int(11) DEFAULT NULL,\n  `folio_sustitucion` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `acuse_cancelacion` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `es_cancelable` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_solicitud_cancelacion` datetime DEFAULT NULL,\n  `tipo_factura` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `es_web` tinyint(1) NOT NULL DEFAULT 0,\n  `observaciones` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `receptor_direccion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `error_timbrado` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cfdi_json_pendiente` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `idx_uuid` (`uuid`),\n  KEY `idx_folio` (`folio`),\n  KEY `idx_serie_folio` (`serie`,`folio`),\n  KEY `idx_cliente` (`cliente_id`),\n  KEY `idx_fecha_emision` (`fecha_emision`),\n  KEY `idx_receptor_rfc` (`receptor_rfc`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_estado` (`estado`(191))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"uuid","definicion":"`uuid` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(36)","nulo":true},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"referencia","definicion":"`referencia` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"serie","definicion":"`serie` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'A'","tipo":"varchar(10)","nulo":true},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"receptor_rfc","definicion":"`receptor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"receptor_razon_social","definicion":"`receptor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"receptor_regimen_fiscal","definicion":"`receptor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"receptor_uso_cfdi","definicion":"`receptor_uso_cfdi` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"receptor_codigo_postal","definicion":"`receptor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"receptor_email","definicion":"`receptor_email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"emisor_rfc","definicion":"`emisor_rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"emisor_razon_social","definicion":"`emisor_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"emisor_regimen_fiscal","definicion":"`emisor_regimen_fiscal` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"emisor_codigo_postal","definicion":"`emisor_codigo_postal` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"descuento","definicion":"`descuento` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total_impuestos","definicion":"`total_impuestos` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"forma_pago","definicion":"`forma_pago` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"moneda","definicion":"`moneda` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT 'MXN'","tipo":"varchar(5)","nulo":true},{"nombre":"tipo_cambio","definicion":"`tipo_cambio` decimal(10,4) DEFAULT 1.0000","tipo":"decimal(10,4)","nulo":true},{"nombre":"ruta_xml","definicion":"`ruta_xml` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"ruta_pdf","definicion":"`ruta_pdf` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"estado","definicion":"`estado` varchar(250) COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente_timbrado'","tipo":"varchar(250)","nulo":true},{"nombre":"fecha_emision","definicion":"`fecha_emision` datetime NOT NULL","tipo":"datetime","nulo":false},{"nombre":"fecha_timbrado","definicion":"`fecha_timbrado` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_cancelacion","definicion":"`fecha_cancelacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` datetime DEFAULT NULL ON UPDATE current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"xml_timbrado","definicion":"`xml_timbrado` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"longtext","nulo":true},{"nombre":"emisor_id","definicion":"`emisor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"folio_sustitucion","definicion":"`folio_sustitucion` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"acuse_cancelacion","definicion":"`acuse_cancelacion` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"longtext","nulo":true},{"nombre":"es_cancelable","definicion":"`es_cancelable` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fecha_solicitud_cancelacion","definicion":"`fecha_solicitud_cancelacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"tipo_factura","definicion":"`tipo_factura` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"es_web","definicion":"`es_web` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"observaciones","definicion":"`observaciones` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(250)","nulo":false},{"nombre":"receptor_direccion","definicion":"`receptor_direccion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"error_timbrado","definicion":"`error_timbrado` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"cfdi_json_pendiente","definicion":"`cfdi_json_pendiente` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"longtext","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_uuid","tipo":"index","definicion":"KEY `idx_uuid` (`uuid`)"},{"nombre":"idx_folio","tipo":"index","definicion":"KEY `idx_folio` (`folio`)"},{"nombre":"idx_serie_folio","tipo":"index","definicion":"KEY `idx_serie_folio` (`serie`,`folio`)"},{"nombre":"idx_cliente","tipo":"index","definicion":"KEY `idx_cliente` (`cliente_id`)"},{"nombre":"idx_fecha_emision","tipo":"index","definicion":"KEY `idx_fecha_emision` (`fecha_emision`)"},{"nombre":"idx_receptor_rfc","tipo":"index","definicion":"KEY `idx_receptor_rfc` (`receptor_rfc`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_estado","tipo":"index","definicion":"KEY `idx_estado` (`estado`(191))"}]},"factura_conceptos":{"create":"CREATE TABLE `factura_conceptos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `factura_id` int(11) NOT NULL,\n  `clave_prod_serv` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT '01010101',\n  `clave_unidad` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'H87',\n  `descripcion` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `producto_id` int(11) DEFAULT NULL,\n  `no_identificacion` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cantidad` decimal(12,3) NOT NULL,\n  `unidad` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `valor_unitario` decimal(12,4) NOT NULL,\n  `importe` decimal(12,2) NOT NULL,\n  `descuento` decimal(12,2) DEFAULT 0.00,\n  `objeto_imp` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT '02',\n  `base_iva` decimal(12,2) DEFAULT 0.00,\n  `tasa_iva` decimal(10,6) DEFAULT 0.160000,\n  `importe_iva` decimal(12,2) DEFAULT 0.00,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `tipo_factor_iva` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'Tasa' COMMENT 'Tasa | Exento | IEPS',\n  `clave_impuesto` varchar(3) COLLATE utf8mb4_unicode_ci DEFAULT '002' COMMENT '002 IVA | 003 IEPS',\n  PRIMARY KEY (`id`),\n  KEY `idx_factura` (`factura_id`),\n  KEY `idx_producto` (`producto_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"factura_id","definicion":"`factura_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"clave_prod_serv","definicion":"`clave_prod_serv` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT '01010101'","tipo":"varchar(10)","nulo":true},{"nombre":"clave_unidad","definicion":"`clave_unidad` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'H87'","tipo":"varchar(10)","nulo":true},{"nombre":"descripcion","definicion":"`descripcion` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(1000)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"no_identificacion","definicion":"`no_identificacion` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"cantidad","definicion":"`cantidad` decimal(12,3) NOT NULL","tipo":"decimal(12,3)","nulo":false},{"nombre":"unidad","definicion":"`unidad` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"valor_unitario","definicion":"`valor_unitario` decimal(12,4) NOT NULL","tipo":"decimal(12,4)","nulo":false},{"nombre":"importe","definicion":"`importe` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"descuento","definicion":"`descuento` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"objeto_imp","definicion":"`objeto_imp` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT '02'","tipo":"varchar(5)","nulo":true},{"nombre":"base_iva","definicion":"`base_iva` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"tasa_iva","definicion":"`tasa_iva` decimal(10,6) DEFAULT 0.160000","tipo":"decimal(10,6)","nulo":true},{"nombre":"importe_iva","definicion":"`importe_iva` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"tipo_factor_iva","definicion":"`tipo_factor_iva` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'Tasa' COMMENT 'Tasa | Exento | IEPS'","tipo":"varchar(10)","nulo":true},{"nombre":"clave_impuesto","definicion":"`clave_impuesto` varchar(3) COLLATE utf8mb4_unicode_ci DEFAULT '002' COMMENT '002 IVA | 003 IEPS'","tipo":"varchar(3)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_factura","tipo":"index","definicion":"KEY `idx_factura` (`factura_id`)"},{"nombre":"idx_producto","tipo":"index","definicion":"KEY `idx_producto` (`producto_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"factura_ventas":{"create":"CREATE TABLE `factura_ventas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `factura_id` int(11) NOT NULL,\n  `venta_id` int(11) NOT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_factura_venta` (`factura_id`,`venta_id`),\n  KEY `idx_factura` (`factura_id`),\n  KEY `idx_venta` (`venta_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"factura_id","definicion":"`factura_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_factura_venta","tipo":"unique","definicion":"UNIQUE KEY `unique_factura_venta` (`factura_id`,`venta_id`)"},{"nombre":"idx_factura","tipo":"index","definicion":"KEY `idx_factura` (`factura_id`)"},{"nombre":"idx_venta","tipo":"index","definicion":"KEY `idx_venta` (`venta_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"factura_ventas_mostrador":{"create":"CREATE TABLE `factura_ventas_mostrador` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `factura_id` int(11) NOT NULL,\n  `venta_mostrador_id` int(11) NOT NULL,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_factura_venta_mostrador` (`factura_id`,`venta_mostrador_id`),\n  KEY `idx_venta_mostrador` (`venta_mostrador_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"factura_id","definicion":"`factura_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"venta_mostrador_id","definicion":"`venta_mostrador_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_factura_venta_mostrador","tipo":"unique","definicion":"UNIQUE KEY `uk_factura_venta_mostrador` (`factura_id`,`venta_mostrador_id`)"},{"nombre":"idx_venta_mostrador","tipo":"index","definicion":"KEY `idx_venta_mostrador` (`venta_mostrador_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"flotilla_asignaciones":{"create":"CREATE TABLE `flotilla_asignaciones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `vehiculo_id` int(11) NOT NULL,\n  `conductor_id` int(11) NOT NULL,\n  `ruta` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Ruta o zona de trabajo (texto: no hay cat\u00e1logo de rutas fijas)',\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Centro donde opera durante la asignaci\u00f3n',\n  `fecha_inicio` date NOT NULL,\n  `fecha_fin` date DEFAULT NULL COMMENT 'NULL = abierta',\n  `estado` enum('abierta','cerrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abierta',\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_asig_vehiculo` (`vehiculo_id`,`estado`),\n  KEY `idx_asig_conductor` (`conductor_id`,`estado`),\n  KEY `idx_asig_fechas` (`fecha_inicio`,`fecha_fin`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_asig_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`),\n  CONSTRAINT `fk_asig_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"conductor_id","definicion":"`conductor_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"ruta","definicion":"`ruta` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Ruta o zona de trabajo (texto: no hay cat\u00e1logo de rutas fijas)'","tipo":"varchar(120)","nulo":true},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Centro donde opera durante la asignaci\u00f3n'","tipo":"varchar(10)","nulo":true},{"nombre":"fecha_inicio","definicion":"`fecha_inicio` date NOT NULL","tipo":"date","nulo":false},{"nombre":"fecha_fin","definicion":"`fecha_fin` date DEFAULT NULL COMMENT 'NULL = abierta'","tipo":"date","nulo":true},{"nombre":"estado","definicion":"`estado` enum('abierta','cerrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abierta'","tipo":"enum('abierta','cerrada','cancelada')","nulo":false},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_asig_vehiculo","tipo":"index","definicion":"KEY `idx_asig_vehiculo` (`vehiculo_id`,`estado`)"},{"nombre":"idx_asig_conductor","tipo":"index","definicion":"KEY `idx_asig_conductor` (`conductor_id`,`estado`)"},{"nombre":"idx_asig_fechas","tipo":"index","definicion":"KEY `idx_asig_fechas` (`fecha_inicio`,`fecha_fin`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_asig_conductor","tipo":"foreign","definicion":"CONSTRAINT `fk_asig_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`)"},{"nombre":"fk_asig_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_asig_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_cargas_combustible":{"create":"CREATE TABLE `flotilla_cargas_combustible` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-CC-AAAA-00001: lo genera el sistema',\n  `clave_idempotencia` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Un reintento con la misma clave devuelve la carga ya registrada',\n  `vehiculo_id` int(11) NOT NULL,\n  `conductor_id` int(11) DEFAULT NULL,\n  `fecha` date NOT NULL,\n  `proveedor_id` int(11) NOT NULL COMMENT 'Gasolinera (cat\u00e1logo \u00fanico de proveedores)',\n  `estacion` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `litros` decimal(10,3) NOT NULL,\n  `precio_litro` decimal(10,4) NOT NULL,\n  `tasa_iva` decimal(5,4) NOT NULL DEFAULT 0.1600,\n  `subtotal` decimal(14,2) NOT NULL,\n  `iva` decimal(14,2) NOT NULL,\n  `total` decimal(14,2) NOT NULL,\n  `kilometraje` int(11) DEFAULT NULL,\n  `horometro` decimal(10,1) DEFAULT NULL,\n  `tanque_lleno` tinyint(1) NOT NULL DEFAULT 0,\n  `metodo_pago` enum('credito','efectivo','tarjeta_corporativa','transferencia','vales') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'tarjeta_corporativa',\n  `tipo_comprobante` enum('factura','ticket','sin_comprobante') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ticket',\n  `comprobante_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Folio de la factura o del ticket de la gasolinera',\n  `cfdi_uuid` char(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Centro al que va el costo (donde oper\u00f3 la unidad)',\n  `ruta` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `lectura_id` int(11) DEFAULT NULL,\n  `obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar generada en Egresos',\n  `km_recorridos` decimal(12,1) DEFAULT NULL COMMENT 'Del tramo entre esta carga y el tanque lleno anterior',\n  `litros_tramo` decimal(12,3) DEFAULT NULL,\n  `costo_tramo` decimal(14,2) DEFAULT NULL,\n  `rendimiento_calculado` decimal(8,3) DEFAULT NULL COMMENT 'km\/L (h\/L con hor\u00f3metro); solo entre dos tanques llenos',\n  `desviacion_pct` decimal(7,2) DEFAULT NULL,\n  `es_desviacion` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Fuera de \u00b115% del est\u00e1ndar del veh\u00edculo',\n  `estado` enum('registrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrada',\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_cargas_folio` (`folio`),\n  UNIQUE KEY `idx_cargas_idempotencia` (`clave_idempotencia`),\n  KEY `idx_cargas_vehiculo` (`vehiculo_id`,`estado`,`fecha`),\n  KEY `idx_cargas_fecha` (`fecha`),\n  KEY `idx_cargas_proveedor` (`proveedor_id`),\n  KEY `idx_cargas_conductor` (`conductor_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_cargas_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`),\n  CONSTRAINT `fk_cargas_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`),\n  CONSTRAINT `fk_cargas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-CC-AAAA-00001: lo genera el sistema'","tipo":"varchar(30)","nulo":false},{"nombre":"clave_idempotencia","definicion":"`clave_idempotencia` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Un reintento con la misma clave devuelve la carga ya registrada'","tipo":"varchar(40)","nulo":true},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"conductor_id","definicion":"`conductor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha","definicion":"`fecha` date NOT NULL","tipo":"date","nulo":false},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) NOT NULL COMMENT 'Gasolinera (cat\u00e1logo \u00fanico de proveedores)'","tipo":"int(11)","nulo":false},{"nombre":"estacion","definicion":"`estacion` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(120)","nulo":true},{"nombre":"litros","definicion":"`litros` decimal(10,3) NOT NULL","tipo":"decimal(10,3)","nulo":false},{"nombre":"precio_litro","definicion":"`precio_litro` decimal(10,4) NOT NULL","tipo":"decimal(10,4)","nulo":false},{"nombre":"tasa_iva","definicion":"`tasa_iva` decimal(5,4) NOT NULL DEFAULT 0.1600","tipo":"decimal(5,4)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(14,2) NOT NULL","tipo":"decimal(14,2)","nulo":false},{"nombre":"iva","definicion":"`iva` decimal(14,2) NOT NULL","tipo":"decimal(14,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(14,2) NOT NULL","tipo":"decimal(14,2)","nulo":false},{"nombre":"kilometraje","definicion":"`kilometraje` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"horometro","definicion":"`horometro` decimal(10,1) DEFAULT NULL","tipo":"decimal(10,1)","nulo":true},{"nombre":"tanque_lleno","definicion":"`tanque_lleno` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` enum('credito','efectivo','tarjeta_corporativa','transferencia','vales') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'tarjeta_corporativa'","tipo":"enum('credito','efectivo','tarjeta_corporativa','transferencia','vales')","nulo":false},{"nombre":"tipo_comprobante","definicion":"`tipo_comprobante` enum('factura','ticket','sin_comprobante') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ticket'","tipo":"enum('factura','ticket','sin_comprobante')","nulo":false},{"nombre":"comprobante_folio","definicion":"`comprobante_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Folio de la factura o del ticket de la gasolinera'","tipo":"varchar(50)","nulo":true},{"nombre":"cfdi_uuid","definicion":"`cfdi_uuid` char(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"char(36)","nulo":true},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Centro al que va el costo (donde oper\u00f3 la unidad)'","tipo":"varchar(10)","nulo":false},{"nombre":"ruta","definicion":"`ruta` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(120)","nulo":true},{"nombre":"lectura_id","definicion":"`lectura_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"obligacion_id","definicion":"`obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar generada en Egresos'","tipo":"int(11)","nulo":true},{"nombre":"km_recorridos","definicion":"`km_recorridos` decimal(12,1) DEFAULT NULL COMMENT 'Del tramo entre esta carga y el tanque lleno anterior'","tipo":"decimal(12,1)","nulo":true},{"nombre":"litros_tramo","definicion":"`litros_tramo` decimal(12,3) DEFAULT NULL","tipo":"decimal(12,3)","nulo":true},{"nombre":"costo_tramo","definicion":"`costo_tramo` decimal(14,2) DEFAULT NULL","tipo":"decimal(14,2)","nulo":true},{"nombre":"rendimiento_calculado","definicion":"`rendimiento_calculado` decimal(8,3) DEFAULT NULL COMMENT 'km\/L (h\/L con hor\u00f3metro); solo entre dos tanques llenos'","tipo":"decimal(8,3)","nulo":true},{"nombre":"desviacion_pct","definicion":"`desviacion_pct` decimal(7,2) DEFAULT NULL","tipo":"decimal(7,2)","nulo":true},{"nombre":"es_desviacion","definicion":"`es_desviacion` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Fuera de \u00b115% del est\u00e1ndar del veh\u00edculo'","tipo":"tinyint(1)","nulo":false},{"nombre":"estado","definicion":"`estado` enum('registrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrada'","tipo":"enum('registrada','cancelada')","nulo":false},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cargas_folio","tipo":"unique","definicion":"UNIQUE KEY `idx_cargas_folio` (`folio`)"},{"nombre":"idx_cargas_idempotencia","tipo":"unique","definicion":"UNIQUE KEY `idx_cargas_idempotencia` (`clave_idempotencia`)"},{"nombre":"idx_cargas_vehiculo","tipo":"index","definicion":"KEY `idx_cargas_vehiculo` (`vehiculo_id`,`estado`,`fecha`)"},{"nombre":"idx_cargas_fecha","tipo":"index","definicion":"KEY `idx_cargas_fecha` (`fecha`)"},{"nombre":"idx_cargas_proveedor","tipo":"index","definicion":"KEY `idx_cargas_proveedor` (`proveedor_id`)"},{"nombre":"idx_cargas_conductor","tipo":"index","definicion":"KEY `idx_cargas_conductor` (`conductor_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_cargas_conductor","tipo":"foreign","definicion":"CONSTRAINT `fk_cargas_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`)"},{"nombre":"fk_cargas_proveedor","tipo":"foreign","definicion":"CONSTRAINT `fk_cargas_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`)"},{"nombre":"fk_cargas_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_cargas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_conductores":{"create":"CREATE TABLE `flotilla_conductores` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `empleado_id` int(11) NOT NULL,\n  `licencia_numero` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `licencia_tipo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'A, B, C, D, E, Federal...',\n  `licencia_vence` date NOT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activo` tinyint(1) NOT NULL DEFAULT 1,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_conductores_empleado` (`empleado_id`),\n  KEY `idx_conductores_vence` (`licencia_vence`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_conductores_empleado` FOREIGN KEY (`empleado_id`) REFERENCES `empleados` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"empleado_id","definicion":"`empleado_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"licencia_numero","definicion":"`licencia_numero` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(30)","nulo":false},{"nombre":"licencia_tipo","definicion":"`licencia_tipo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'A, B, C, D, E, Federal...'","tipo":"varchar(20)","nulo":false},{"nombre":"licencia_vence","definicion":"`licencia_vence` date NOT NULL","tipo":"date","nulo":false},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_conductores_empleado","tipo":"unique","definicion":"UNIQUE KEY `idx_conductores_empleado` (`empleado_id`)"},{"nombre":"idx_conductores_vence","tipo":"index","definicion":"KEY `idx_conductores_vence` (`licencia_vence`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_conductores_empleado","tipo":"foreign","definicion":"CONSTRAINT `fk_conductores_empleado` FOREIGN KEY (`empleado_id`) REFERENCES `empleados` (`id`)"}]},"flotilla_documentos":{"create":"CREATE TABLE `flotilla_documentos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `vehiculo_id` int(11) NOT NULL,\n  `tipo` enum('tarjeta_circulacion','verificacion','tenencia','seguro','permiso','servicio_mantenimiento','otro') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Ej. \"Verificaci\u00f3n semestral\", \"Afinaci\u00f3n mayor\", \"Permiso SCT\"',\n  `folio` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'N\u00famero de p\u00f3liza, folio de verificaci\u00f3n, recibo...',\n  `proveedor_id` int(11) DEFAULT NULL COMMENT 'Aseguradora, verificentro, taller... (cat\u00e1logo \u00fanico de proveedores)',\n  `vigencia_desde` date DEFAULT NULL,\n  `vigencia_hasta` date DEFAULT NULL COMMENT 'Vencimiento por fecha',\n  `km_vencimiento` int(11) DEFAULT NULL COMMENT 'Solo servicios: vence al llegar a este kilometraje (u hor\u00f3metro)',\n  `dias_aviso` smallint(6) NOT NULL DEFAULT 30 COMMENT 'Anticipaci\u00f3n de la alerta',\n  `km_aviso` int(11) NOT NULL DEFAULT 1000 COMMENT 'Anticipaci\u00f3n en km para servicios',\n  `costo` decimal(12,2) DEFAULT NULL COMMENT 'Costo de la renovaci\u00f3n (informativo; el pago va por Egresos con el veh\u00edculo como dimensi\u00f3n)',\n  `estado` enum('vigente','renovado','cancelado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'vigente',\n  `renueva_id` int(11) DEFAULT NULL COMMENT 'Documento al que renueva',\n  `poliza_id` int(11) DEFAULT NULL,\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_docs_vehiculo` (`vehiculo_id`,`estado`),\n  KEY `idx_docs_vence` (`estado`,`vigencia_hasta`),\n  KEY `idx_docs_renueva` (`renueva_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `fk_docs_proveedor` (`proveedor_id`),\n  KEY `idx_docs_poliza` (`poliza_id`),\n  CONSTRAINT `fk_docs_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`),\n  CONSTRAINT `fk_docs_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('tarjeta_circulacion','verificacion','tenencia','seguro','permiso','servicio_mantenimiento','otro') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('tarjeta_circulacion','verificacion','tenencia','seguro','permiso','servicio_mantenimiento','otro')","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Ej. \"Verificaci\u00f3n semestral\", \"Afinaci\u00f3n mayor\", \"Permiso SCT\"'","tipo":"varchar(150)","nulo":true},{"nombre":"folio","definicion":"`folio` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'N\u00famero de p\u00f3liza, folio de verificaci\u00f3n, recibo...'","tipo":"varchar(60)","nulo":true},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) DEFAULT NULL COMMENT 'Aseguradora, verificentro, taller... (cat\u00e1logo \u00fanico de proveedores)'","tipo":"int(11)","nulo":true},{"nombre":"vigencia_desde","definicion":"`vigencia_desde` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"vigencia_hasta","definicion":"`vigencia_hasta` date DEFAULT NULL COMMENT 'Vencimiento por fecha'","tipo":"date","nulo":true},{"nombre":"km_vencimiento","definicion":"`km_vencimiento` int(11) DEFAULT NULL COMMENT 'Solo servicios: vence al llegar a este kilometraje (u hor\u00f3metro)'","tipo":"int(11)","nulo":true},{"nombre":"dias_aviso","definicion":"`dias_aviso` smallint(6) NOT NULL DEFAULT 30 COMMENT 'Anticipaci\u00f3n de la alerta'","tipo":"smallint(6)","nulo":false},{"nombre":"km_aviso","definicion":"`km_aviso` int(11) NOT NULL DEFAULT 1000 COMMENT 'Anticipaci\u00f3n en km para servicios'","tipo":"int(11)","nulo":false},{"nombre":"costo","definicion":"`costo` decimal(12,2) DEFAULT NULL COMMENT 'Costo de la renovaci\u00f3n (informativo; el pago va por Egresos con el veh\u00edculo como dimensi\u00f3n)'","tipo":"decimal(12,2)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('vigente','renovado','cancelado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'vigente'","tipo":"enum('vigente','renovado','cancelado')","nulo":false},{"nombre":"renueva_id","definicion":"`renueva_id` int(11) DEFAULT NULL COMMENT 'Documento al que renueva'","tipo":"int(11)","nulo":true},{"nombre":"poliza_id","definicion":"`poliza_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_docs_vehiculo","tipo":"index","definicion":"KEY `idx_docs_vehiculo` (`vehiculo_id`,`estado`)"},{"nombre":"idx_docs_vence","tipo":"index","definicion":"KEY `idx_docs_vence` (`estado`,`vigencia_hasta`)"},{"nombre":"idx_docs_renueva","tipo":"index","definicion":"KEY `idx_docs_renueva` (`renueva_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_docs_proveedor","tipo":"index","definicion":"KEY `fk_docs_proveedor` (`proveedor_id`)"},{"nombre":"idx_docs_poliza","tipo":"index","definicion":"KEY `idx_docs_poliza` (`poliza_id`)"},{"nombre":"fk_docs_proveedor","tipo":"foreign","definicion":"CONSTRAINT `fk_docs_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`)"},{"nombre":"fk_docs_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_docs_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_lecturas_odometro":{"create":"CREATE TABLE `flotilla_lecturas_odometro` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `vehiculo_id` int(11) NOT NULL,\n  `fecha` date NOT NULL,\n  `kilometraje` int(11) DEFAULT NULL,\n  `horometro` decimal(10,1) DEFAULT NULL,\n  `origen` enum('alta','carga','ot','manual','correccion') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'manual',\n  `documento_tabla` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tabla del documento que origin\u00f3 la lectura',\n  `documento_id` int(11) DEFAULT NULL,\n  `estado` enum('aplicada','pendiente','rechazada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'aplicada',\n  `motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Obligatorio en correcciones',\n  `autorizado_por` int(11) DEFAULT NULL,\n  `fecha_autorizacion` datetime DEFAULT NULL,\n  `motivo_rechazo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_lecturas_vehiculo` (`vehiculo_id`,`estado`,`fecha`,`id`),\n  KEY `idx_lecturas_documento` (`documento_tabla`,`documento_id`),\n  KEY `idx_lecturas_pendientes` (`estado`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_lecturas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"fecha","definicion":"`fecha` date NOT NULL","tipo":"date","nulo":false},{"nombre":"kilometraje","definicion":"`kilometraje` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"horometro","definicion":"`horometro` decimal(10,1) DEFAULT NULL","tipo":"decimal(10,1)","nulo":true},{"nombre":"origen","definicion":"`origen` enum('alta','carga','ot','manual','correccion') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'manual'","tipo":"enum('alta','carga','ot','manual','correccion')","nulo":false},{"nombre":"documento_tabla","definicion":"`documento_tabla` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tabla del documento que origin\u00f3 la lectura'","tipo":"varchar(40)","nulo":true},{"nombre":"documento_id","definicion":"`documento_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('aplicada','pendiente','rechazada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'aplicada'","tipo":"enum('aplicada','pendiente','rechazada','cancelada')","nulo":false},{"nombre":"motivo","definicion":"`motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Obligatorio en correcciones'","tipo":"varchar(255)","nulo":true},{"nombre":"autorizado_por","definicion":"`autorizado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_autorizacion","definicion":"`fecha_autorizacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"motivo_rechazo","definicion":"`motivo_rechazo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_lecturas_vehiculo","tipo":"index","definicion":"KEY `idx_lecturas_vehiculo` (`vehiculo_id`,`estado`,`fecha`,`id`)"},{"nombre":"idx_lecturas_documento","tipo":"index","definicion":"KEY `idx_lecturas_documento` (`documento_tabla`,`documento_id`)"},{"nombre":"idx_lecturas_pendientes","tipo":"index","definicion":"KEY `idx_lecturas_pendientes` (`estado`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_lecturas_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_lecturas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_llantas":{"create":"CREATE TABLE `flotilla_llantas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'LL-0001: lo genera el sistema',\n  `marca` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `modelo` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `medida` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Ej. 265\/70R16',\n  `numero_serie` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'DOT \/ n\u00famero de serie',\n  `proveedor_id` int(11) DEFAULT NULL,\n  `fecha_compra` date DEFAULT NULL,\n  `costo` decimal(12,2) DEFAULT NULL,\n  `km_vida_esperada` int(11) DEFAULT NULL,\n  `estado` enum('almacen','montada','retirada','desechada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'almacen',\n  `vehiculo_id` int(11) DEFAULT NULL COMMENT 'Unidad donde est\u00e1 montada',\n  `posicion` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `km_montaje` decimal(12,1) DEFAULT NULL COMMENT 'Lectura de la unidad al montarla (posici\u00f3n actual)',\n  `km_acumulados` decimal(12,1) NOT NULL DEFAULT 0.0 COMMENT 'Recorridos en montajes ya cerrados',\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_llantas_codigo` (`codigo`),\n  KEY `idx_llantas_vehiculo` (`vehiculo_id`,`estado`),\n  KEY `idx_llantas_estado` (`estado`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `fk_llantas_proveedor` (`proveedor_id`),\n  CONSTRAINT `fk_llantas_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`),\n  CONSTRAINT `fk_llantas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'LL-0001: lo genera el sistema'","tipo":"varchar(20)","nulo":false},{"nombre":"marca","definicion":"`marca` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(60)","nulo":false},{"nombre":"modelo","definicion":"`modelo` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(60)","nulo":true},{"nombre":"medida","definicion":"`medida` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Ej. 265\/70R16'","tipo":"varchar(30)","nulo":false},{"nombre":"numero_serie","definicion":"`numero_serie` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'DOT \/ n\u00famero de serie'","tipo":"varchar(60)","nulo":true},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_compra","definicion":"`fecha_compra` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"costo","definicion":"`costo` decimal(12,2) DEFAULT NULL","tipo":"decimal(12,2)","nulo":true},{"nombre":"km_vida_esperada","definicion":"`km_vida_esperada` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('almacen','montada','retirada','desechada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'almacen'","tipo":"enum('almacen','montada','retirada','desechada')","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) DEFAULT NULL COMMENT 'Unidad donde est\u00e1 montada'","tipo":"int(11)","nulo":true},{"nombre":"posicion","definicion":"`posicion` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(40)","nulo":true},{"nombre":"km_montaje","definicion":"`km_montaje` decimal(12,1) DEFAULT NULL COMMENT 'Lectura de la unidad al montarla (posici\u00f3n actual)'","tipo":"decimal(12,1)","nulo":true},{"nombre":"km_acumulados","definicion":"`km_acumulados` decimal(12,1) NOT NULL DEFAULT 0.0 COMMENT 'Recorridos en montajes ya cerrados'","tipo":"decimal(12,1)","nulo":false},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_llantas_codigo","tipo":"unique","definicion":"UNIQUE KEY `idx_llantas_codigo` (`codigo`)"},{"nombre":"idx_llantas_vehiculo","tipo":"index","definicion":"KEY `idx_llantas_vehiculo` (`vehiculo_id`,`estado`)"},{"nombre":"idx_llantas_estado","tipo":"index","definicion":"KEY `idx_llantas_estado` (`estado`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_llantas_proveedor","tipo":"index","definicion":"KEY `fk_llantas_proveedor` (`proveedor_id`)"},{"nombre":"fk_llantas_proveedor","tipo":"foreign","definicion":"CONSTRAINT `fk_llantas_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`)"},{"nombre":"fk_llantas_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_llantas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_llanta_movimientos":{"create":"CREATE TABLE `flotilla_llanta_movimientos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `llanta_id` int(11) NOT NULL,\n  `tipo` enum('alta','montaje','retiro','desecho') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `vehiculo_id` int(11) DEFAULT NULL,\n  `posicion` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha` date NOT NULL,\n  `km_vehiculo` decimal(12,1) DEFAULT NULL COMMENT 'Lectura de la unidad en la fecha del movimiento',\n  `km_recorridos` decimal(12,1) DEFAULT NULL COMMENT 'En el retiro: km desde su montaje',\n  `motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_llmov_llanta` (`llanta_id`,`fecha`),\n  KEY `idx_llmov_vehiculo` (`vehiculo_id`,`fecha`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_llmov_llanta` FOREIGN KEY (`llanta_id`) REFERENCES `flotilla_llantas` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"llanta_id","definicion":"`llanta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('alta','montaje','retiro','desecho') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('alta','montaje','retiro','desecho')","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"posicion","definicion":"`posicion` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(40)","nulo":true},{"nombre":"fecha","definicion":"`fecha` date NOT NULL","tipo":"date","nulo":false},{"nombre":"km_vehiculo","definicion":"`km_vehiculo` decimal(12,1) DEFAULT NULL COMMENT 'Lectura de la unidad en la fecha del movimiento'","tipo":"decimal(12,1)","nulo":true},{"nombre":"km_recorridos","definicion":"`km_recorridos` decimal(12,1) DEFAULT NULL COMMENT 'En el retiro: km desde su montaje'","tipo":"decimal(12,1)","nulo":true},{"nombre":"motivo","definicion":"`motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_llmov_llanta","tipo":"index","definicion":"KEY `idx_llmov_llanta` (`llanta_id`,`fecha`)"},{"nombre":"idx_llmov_vehiculo","tipo":"index","definicion":"KEY `idx_llmov_vehiculo` (`vehiculo_id`,`fecha`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_llmov_llanta","tipo":"foreign","definicion":"CONSTRAINT `fk_llmov_llanta` FOREIGN KEY (`llanta_id`) REFERENCES `flotilla_llantas` (`id`)"}]},"flotilla_multas":{"create":"CREATE TABLE `flotilla_multas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-MU-AAAA-00001',\n  `vehiculo_id` int(11) NOT NULL,\n  `conductor_id` int(11) DEFAULT NULL,\n  `fecha` date NOT NULL,\n  `infraccion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `lugar` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `boleta` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Folio de la boleta de infracci\u00f3n',\n  `proveedor_id` int(11) DEFAULT NULL COMMENT 'Autoridad a la que se paga (cat\u00e1logo de proveedores); obligatorio si paga la empresa',\n  `importe` decimal(14,2) NOT NULL,\n  `fecha_limite` date DEFAULT NULL COMMENT 'Vencimiento del pago (con descuento, etc.)',\n  `responsable` enum('empresa','conductor') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'empresa',\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar (solo si la paga la empresa)',\n  `estado` enum('registrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrada',\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_multas_folio` (`folio`),\n  KEY `idx_multas_vehiculo` (`vehiculo_id`,`estado`),\n  KEY `idx_multas_conductor` (`conductor_id`),\n  KEY `idx_multas_fecha` (`fecha`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_multas_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`),\n  CONSTRAINT `fk_multas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-MU-AAAA-00001'","tipo":"varchar(30)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"conductor_id","definicion":"`conductor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha","definicion":"`fecha` date NOT NULL","tipo":"date","nulo":false},{"nombre":"infraccion","definicion":"`infraccion` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"lugar","definicion":"`lugar` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(200)","nulo":true},{"nombre":"boleta","definicion":"`boleta` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Folio de la boleta de infracci\u00f3n'","tipo":"varchar(60)","nulo":true},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) DEFAULT NULL COMMENT 'Autoridad a la que se paga (cat\u00e1logo de proveedores); obligatorio si paga la empresa'","tipo":"int(11)","nulo":true},{"nombre":"importe","definicion":"`importe` decimal(14,2) NOT NULL","tipo":"decimal(14,2)","nulo":false},{"nombre":"fecha_limite","definicion":"`fecha_limite` date DEFAULT NULL COMMENT 'Vencimiento del pago (con descuento, etc.)'","tipo":"date","nulo":true},{"nombre":"responsable","definicion":"`responsable` enum('empresa','conductor') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'empresa'","tipo":"enum('empresa','conductor')","nulo":false},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"obligacion_id","definicion":"`obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar (solo si la paga la empresa)'","tipo":"int(11)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('registrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrada'","tipo":"enum('registrada','cancelada')","nulo":false},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_multas_folio","tipo":"unique","definicion":"UNIQUE KEY `idx_multas_folio` (`folio`)"},{"nombre":"idx_multas_vehiculo","tipo":"index","definicion":"KEY `idx_multas_vehiculo` (`vehiculo_id`,`estado`)"},{"nombre":"idx_multas_conductor","tipo":"index","definicion":"KEY `idx_multas_conductor` (`conductor_id`)"},{"nombre":"idx_multas_fecha","tipo":"index","definicion":"KEY `idx_multas_fecha` (`fecha`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_multas_conductor","tipo":"foreign","definicion":"CONSTRAINT `fk_multas_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`)"},{"nombre":"fk_multas_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_multas_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_ordenes_trabajo":{"create":"CREATE TABLE `flotilla_ordenes_trabajo` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-OT-AAAA-00001: lo genera el sistema',\n  `vehiculo_id` int(11) NOT NULL,\n  `tipo_mantenimiento_id` int(11) DEFAULT NULL,\n  `clase` enum('preventivo','correctivo') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `fecha_entrada` date NOT NULL,\n  `fecha_salida` date DEFAULT NULL,\n  `proveedor_id` int(11) DEFAULT NULL COMMENT 'Taller (cat\u00e1logo \u00fanico de proveedores)',\n  `taller_nombre` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Si el taller no est\u00e1 en el cat\u00e1logo',\n  `kilometraje` int(11) DEFAULT NULL,\n  `horometro` decimal(10,1) DEFAULT NULL,\n  `lectura_id` int(11) DEFAULT NULL,\n  `falla_reportada` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `trabajo_realizado` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `costo_total` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT 'Suma de las partidas (informativo)',\n  `factura_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Referencia de la factura o nota del taller',\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `documento_atendido_id` int(11) DEFAULT NULL COMMENT 'Vencimiento de servicio (flotilla_documentos) que atendi\u00f3',\n  `estado` enum('registrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrada',\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_ot_folio` (`folio`),\n  KEY `idx_ot_vehiculo` (`vehiculo_id`,`estado`,`fecha_entrada`),\n  KEY `idx_ot_fecha` (`fecha_entrada`),\n  KEY `idx_ot_tipo` (`tipo_mantenimiento_id`),\n  KEY `idx_ot_proveedor` (`proveedor_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_ot_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`),\n  CONSTRAINT `fk_ot_tipo` FOREIGN KEY (`tipo_mantenimiento_id`) REFERENCES `flotilla_tipos_mantenimiento` (`id`),\n  CONSTRAINT `fk_ot_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-OT-AAAA-00001: lo genera el sistema'","tipo":"varchar(30)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"tipo_mantenimiento_id","definicion":"`tipo_mantenimiento_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"clase","definicion":"`clase` enum('preventivo','correctivo') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('preventivo','correctivo')","nulo":false},{"nombre":"fecha_entrada","definicion":"`fecha_entrada` date NOT NULL","tipo":"date","nulo":false},{"nombre":"fecha_salida","definicion":"`fecha_salida` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) DEFAULT NULL COMMENT 'Taller (cat\u00e1logo \u00fanico de proveedores)'","tipo":"int(11)","nulo":true},{"nombre":"taller_nombre","definicion":"`taller_nombre` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Si el taller no est\u00e1 en el cat\u00e1logo'","tipo":"varchar(120)","nulo":true},{"nombre":"kilometraje","definicion":"`kilometraje` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"horometro","definicion":"`horometro` decimal(10,1) DEFAULT NULL","tipo":"decimal(10,1)","nulo":true},{"nombre":"lectura_id","definicion":"`lectura_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"falla_reportada","definicion":"`falla_reportada` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"trabajo_realizado","definicion":"`trabajo_realizado` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"costo_total","definicion":"`costo_total` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT 'Suma de las partidas (informativo)'","tipo":"decimal(14,2)","nulo":false},{"nombre":"factura_folio","definicion":"`factura_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Referencia de la factura o nota del taller'","tipo":"varchar(50)","nulo":true},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"documento_atendido_id","definicion":"`documento_atendido_id` int(11) DEFAULT NULL COMMENT 'Vencimiento de servicio (flotilla_documentos) que atendi\u00f3'","tipo":"int(11)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('registrada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrada'","tipo":"enum('registrada','cancelada')","nulo":false},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_ot_folio","tipo":"unique","definicion":"UNIQUE KEY `idx_ot_folio` (`folio`)"},{"nombre":"idx_ot_vehiculo","tipo":"index","definicion":"KEY `idx_ot_vehiculo` (`vehiculo_id`,`estado`,`fecha_entrada`)"},{"nombre":"idx_ot_fecha","tipo":"index","definicion":"KEY `idx_ot_fecha` (`fecha_entrada`)"},{"nombre":"idx_ot_tipo","tipo":"index","definicion":"KEY `idx_ot_tipo` (`tipo_mantenimiento_id`)"},{"nombre":"idx_ot_proveedor","tipo":"index","definicion":"KEY `idx_ot_proveedor` (`proveedor_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_ot_proveedor","tipo":"foreign","definicion":"CONSTRAINT `fk_ot_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`)"},{"nombre":"fk_ot_tipo","tipo":"foreign","definicion":"CONSTRAINT `fk_ot_tipo` FOREIGN KEY (`tipo_mantenimiento_id`) REFERENCES `flotilla_tipos_mantenimiento` (`id`)"},{"nombre":"fk_ot_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_ot_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_ot_partidas":{"create":"CREATE TABLE `flotilla_ot_partidas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `orden_id` int(11) NOT NULL,\n  `tipo` enum('servicio','refaccion','mano_obra') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'servicio',\n  `concepto` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cantidad` decimal(10,2) NOT NULL DEFAULT 1.00,\n  `costo_unitario` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `importe` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_partidas_orden` (`orden_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_partidas_orden` FOREIGN KEY (`orden_id`) REFERENCES `flotilla_ordenes_trabajo` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"orden_id","definicion":"`orden_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('servicio','refaccion','mano_obra') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'servicio'","tipo":"enum('servicio','refaccion','mano_obra')","nulo":false},{"nombre":"concepto","definicion":"`concepto` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(200)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(10,2) NOT NULL DEFAULT 1.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"costo_unitario","definicion":"`costo_unitario` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"importe","definicion":"`importe` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_partidas_orden","tipo":"index","definicion":"KEY `idx_partidas_orden` (`orden_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_partidas_orden","tipo":"foreign","definicion":"CONSTRAINT `fk_partidas_orden` FOREIGN KEY (`orden_id`) REFERENCES `flotilla_ordenes_trabajo` (`id`)"}]},"flotilla_polizas":{"create":"CREATE TABLE `flotilla_polizas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-PS-AAAA-00001: lo genera el sistema',\n  `numero_poliza` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `proveedor_id` int(11) NOT NULL COMMENT 'Aseguradora (cat\u00e1logo \u00fanico de proveedores)',\n  `cobertura` enum('amplia','limitada','rc','otra') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'amplia',\n  `vigencia_desde` date NOT NULL,\n  `vigencia_hasta` date NOT NULL,\n  `prima_total` decimal(14,2) NOT NULL COMMENT 'Con IVA',\n  `tasa_iva` decimal(5,4) NOT NULL DEFAULT 0.1600,\n  `deducible_danos` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Ej. 5% del valor comercial',\n  `deducible_robo` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `comprobante_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar de la prima',\n  `estado` enum('vigente','renovada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'vigente',\n  `renueva_id` int(11) DEFAULT NULL,\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_polizas_folio` (`folio`),\n  KEY `idx_polizas_vigencia` (`estado`,`vigencia_hasta`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `fk_polizas_proveedor` (`proveedor_id`),\n  CONSTRAINT `fk_polizas_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-PS-AAAA-00001: lo genera el sistema'","tipo":"varchar(30)","nulo":false},{"nombre":"numero_poliza","definicion":"`numero_poliza` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(60)","nulo":false},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) NOT NULL COMMENT 'Aseguradora (cat\u00e1logo \u00fanico de proveedores)'","tipo":"int(11)","nulo":false},{"nombre":"cobertura","definicion":"`cobertura` enum('amplia','limitada','rc','otra') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'amplia'","tipo":"enum('amplia','limitada','rc','otra')","nulo":false},{"nombre":"vigencia_desde","definicion":"`vigencia_desde` date NOT NULL","tipo":"date","nulo":false},{"nombre":"vigencia_hasta","definicion":"`vigencia_hasta` date NOT NULL","tipo":"date","nulo":false},{"nombre":"prima_total","definicion":"`prima_total` decimal(14,2) NOT NULL COMMENT 'Con IVA'","tipo":"decimal(14,2)","nulo":false},{"nombre":"tasa_iva","definicion":"`tasa_iva` decimal(5,4) NOT NULL DEFAULT 0.1600","tipo":"decimal(5,4)","nulo":false},{"nombre":"deducible_danos","definicion":"`deducible_danos` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Ej. 5% del valor comercial'","tipo":"varchar(60)","nulo":true},{"nombre":"deducible_robo","definicion":"`deducible_robo` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(60)","nulo":true},{"nombre":"comprobante_folio","definicion":"`comprobante_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"obligacion_id","definicion":"`obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar de la prima'","tipo":"int(11)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('vigente','renovada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'vigente'","tipo":"enum('vigente','renovada','cancelada')","nulo":false},{"nombre":"renueva_id","definicion":"`renueva_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_polizas_folio","tipo":"unique","definicion":"UNIQUE KEY `idx_polizas_folio` (`folio`)"},{"nombre":"idx_polizas_vigencia","tipo":"index","definicion":"KEY `idx_polizas_vigencia` (`estado`,`vigencia_hasta`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_polizas_proveedor","tipo":"index","definicion":"KEY `fk_polizas_proveedor` (`proveedor_id`)"},{"nombre":"fk_polizas_proveedor","tipo":"foreign","definicion":"CONSTRAINT `fk_polizas_proveedor` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`)"}]},"flotilla_poliza_vehiculos":{"create":"CREATE TABLE `flotilla_poliza_vehiculos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `poliza_id` int(11) NOT NULL,\n  `vehiculo_id` int(11) NOT NULL,\n  `prima_asignada` decimal(14,2) NOT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `documento_id` int(11) DEFAULT NULL COMMENT 'Documento \"seguro\" que la p\u00f3liza cre\u00f3 en la unidad',\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_pv_unico` (`poliza_id`,`vehiculo_id`),\n  KEY `idx_pv_vehiculo` (`vehiculo_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_pv_poliza` FOREIGN KEY (`poliza_id`) REFERENCES `flotilla_polizas` (`id`),\n  CONSTRAINT `fk_pv_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"poliza_id","definicion":"`poliza_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"prima_asignada","definicion":"`prima_asignada` decimal(14,2) NOT NULL","tipo":"decimal(14,2)","nulo":false},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"documento_id","definicion":"`documento_id` int(11) DEFAULT NULL COMMENT 'Documento \"seguro\" que la p\u00f3liza cre\u00f3 en la unidad'","tipo":"int(11)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_pv_unico","tipo":"unique","definicion":"UNIQUE KEY `idx_pv_unico` (`poliza_id`,`vehiculo_id`)"},{"nombre":"idx_pv_vehiculo","tipo":"index","definicion":"KEY `idx_pv_vehiculo` (`vehiculo_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_pv_poliza","tipo":"foreign","definicion":"CONSTRAINT `fk_pv_poliza` FOREIGN KEY (`poliza_id`) REFERENCES `flotilla_polizas` (`id`)"},{"nombre":"fk_pv_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_pv_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_seguro_devengos":{"create":"CREATE TABLE `flotilla_seguro_devengos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `poliza_vehiculo_id` int(11) NOT NULL,\n  `periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `dias` smallint(6) NOT NULL,\n  `importe` decimal(14,2) NOT NULL,\n  `estado` enum('generado','anulado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'generado',\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_devengo_unico` (`poliza_vehiculo_id`,`periodo`),\n  KEY `idx_devengo_periodo` (`periodo`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_devengo_pv` FOREIGN KEY (`poliza_vehiculo_id`) REFERENCES `flotilla_poliza_vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"poliza_vehiculo_id","definicion":"`poliza_vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"periodo","definicion":"`periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"char(7)","nulo":false},{"nombre":"dias","definicion":"`dias` smallint(6) NOT NULL","tipo":"smallint(6)","nulo":false},{"nombre":"importe","definicion":"`importe` decimal(14,2) NOT NULL","tipo":"decimal(14,2)","nulo":false},{"nombre":"estado","definicion":"`estado` enum('generado','anulado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'generado'","tipo":"enum('generado','anulado')","nulo":false},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_devengo_unico","tipo":"unique","definicion":"UNIQUE KEY `idx_devengo_unico` (`poliza_vehiculo_id`,`periodo`)"},{"nombre":"idx_devengo_periodo","tipo":"index","definicion":"KEY `idx_devengo_periodo` (`periodo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_devengo_pv","tipo":"foreign","definicion":"CONSTRAINT `fk_devengo_pv` FOREIGN KEY (`poliza_vehiculo_id`) REFERENCES `flotilla_poliza_vehiculos` (`id`)"}]},"flotilla_siniestros":{"create":"CREATE TABLE `flotilla_siniestros` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-SI-AAAA-00001',\n  `vehiculo_id` int(11) NOT NULL,\n  `conductor_id` int(11) DEFAULT NULL,\n  `fecha` date NOT NULL,\n  `lugar` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `descripcion` text COLLATE utf8mb4_unicode_ci NOT NULL,\n  `culpa` enum('propia','tercero','indeterminada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'indeterminada',\n  `poliza_id` int(11) DEFAULT NULL,\n  `numero_reporte` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'N\u00famero de siniestro de la aseguradora',\n  `costo_estimado` decimal(14,2) DEFAULT NULL COMMENT 'Da\u00f1os estimados (informativo)',\n  `deducible` decimal(14,2) DEFAULT NULL,\n  `deducible_proveedor_id` int(11) DEFAULT NULL COMMENT 'A qui\u00e9n se paga el deducible (normalmente la aseguradora)',\n  `deducible_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `deducible_fecha` date DEFAULT NULL,\n  `obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar del deducible',\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `estado` enum('abierto','en_tramite','cerrado','cancelado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abierto',\n  `fecha_cierre` date DEFAULT NULL,\n  `resolucion` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_siniestros_folio` (`folio`),\n  KEY `idx_siniestros_vehiculo` (`vehiculo_id`,`estado`),\n  KEY `idx_siniestros_conductor` (`conductor_id`),\n  KEY `idx_siniestros_fecha` (`fecha`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_siniestros_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`),\n  CONSTRAINT `fk_siniestros_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SUC-SI-AAAA-00001'","tipo":"varchar(30)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"conductor_id","definicion":"`conductor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha","definicion":"`fecha` date NOT NULL","tipo":"date","nulo":false},{"nombre":"lugar","definicion":"`lugar` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(200)","nulo":true},{"nombre":"descripcion","definicion":"`descripcion` text COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"text","nulo":false},{"nombre":"culpa","definicion":"`culpa` enum('propia','tercero','indeterminada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'indeterminada'","tipo":"enum('propia','tercero','indeterminada')","nulo":false},{"nombre":"poliza_id","definicion":"`poliza_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"numero_reporte","definicion":"`numero_reporte` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'N\u00famero de siniestro de la aseguradora'","tipo":"varchar(60)","nulo":true},{"nombre":"costo_estimado","definicion":"`costo_estimado` decimal(14,2) DEFAULT NULL COMMENT 'Da\u00f1os estimados (informativo)'","tipo":"decimal(14,2)","nulo":true},{"nombre":"deducible","definicion":"`deducible` decimal(14,2) DEFAULT NULL","tipo":"decimal(14,2)","nulo":true},{"nombre":"deducible_proveedor_id","definicion":"`deducible_proveedor_id` int(11) DEFAULT NULL COMMENT 'A qui\u00e9n se paga el deducible (normalmente la aseguradora)'","tipo":"int(11)","nulo":true},{"nombre":"deducible_folio","definicion":"`deducible_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"deducible_fecha","definicion":"`deducible_fecha` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"obligacion_id","definicion":"`obligacion_id` int(11) DEFAULT NULL COMMENT 'Cuenta por pagar del deducible'","tipo":"int(11)","nulo":true},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"estado","definicion":"`estado` enum('abierto','en_tramite','cerrado','cancelado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abierto'","tipo":"enum('abierto','en_tramite','cerrado','cancelado')","nulo":false},{"nombre":"fecha_cierre","definicion":"`fecha_cierre` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"resolucion","definicion":"`resolucion` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_siniestros_folio","tipo":"unique","definicion":"UNIQUE KEY `idx_siniestros_folio` (`folio`)"},{"nombre":"idx_siniestros_vehiculo","tipo":"index","definicion":"KEY `idx_siniestros_vehiculo` (`vehiculo_id`,`estado`)"},{"nombre":"idx_siniestros_conductor","tipo":"index","definicion":"KEY `idx_siniestros_conductor` (`conductor_id`)"},{"nombre":"idx_siniestros_fecha","tipo":"index","definicion":"KEY `idx_siniestros_fecha` (`fecha`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_siniestros_conductor","tipo":"foreign","definicion":"CONSTRAINT `fk_siniestros_conductor` FOREIGN KEY (`conductor_id`) REFERENCES `flotilla_conductores` (`id`)"},{"nombre":"fk_siniestros_vehiculo","tipo":"foreign","definicion":"CONSTRAINT `fk_siniestros_vehiculo` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`)"}]},"flotilla_tipos_mantenimiento":{"create":"CREATE TABLE `flotilla_tipos_mantenimiento` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `clase` enum('preventivo','correctivo') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `categoria_id` int(11) DEFAULT NULL COMMENT 'Categor\u00eda financiera de egreso a la que va el gasto',\n  `activo` tinyint(1) NOT NULL DEFAULT 1,\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_tipos_mant_codigo` (`codigo`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `fk_tipos_mant_categoria` (`categoria_id`),\n  CONSTRAINT `fk_tipos_mant_categoria` FOREIGN KEY (`categoria_id`) REFERENCES `categorias_financieras` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(120)","nulo":false},{"nombre":"clase","definicion":"`clase` enum('preventivo','correctivo') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('preventivo','correctivo')","nulo":false},{"nombre":"categoria_id","definicion":"`categoria_id` int(11) DEFAULT NULL COMMENT 'Categor\u00eda financiera de egreso a la que va el gasto'","tipo":"int(11)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_tipos_mant_codigo","tipo":"unique","definicion":"UNIQUE KEY `idx_tipos_mant_codigo` (`codigo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_tipos_mant_categoria","tipo":"index","definicion":"KEY `fk_tipos_mant_categoria` (`categoria_id`)"},{"nombre":"fk_tipos_mant_categoria","tipo":"foreign","definicion":"CONSTRAINT `fk_tipos_mant_categoria` FOREIGN KEY (`categoria_id`) REFERENCES `categorias_financieras` (`id`)"}]},"ingresos_efectivo":{"create":"CREATE TABLE `ingresos_efectivo` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `caja_id` int(11) NOT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `monto` decimal(12,2) NOT NULL,\n  `metodo_pago` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT 'efectivo',\n  `concepto` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_ingreso` datetime DEFAULT current_timestamp(),\n  `created_at` datetime DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_caja_fecha` (`caja_id`,`fecha_ingreso`),\n  KEY `idx_usuario` (`usuario_id`),\n  KEY `idx_nombre_pc` (`nombre_pc`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"caja_id","definicion":"`caja_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"monto","definicion":"`monto` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT 'efectivo'","tipo":"varchar(30)","nulo":true},{"nombre":"concepto","definicion":"`concepto` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"nombre_pc","definicion":"`nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fecha_ingreso","definicion":"`fecha_ingreso` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"created_at","definicion":"`created_at` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_caja_fecha","tipo":"index","definicion":"KEY `idx_caja_fecha` (`caja_id`,`fecha_ingreso`)"},{"nombre":"idx_usuario","tipo":"index","definicion":"KEY `idx_usuario` (`usuario_id`)"},{"nombre":"idx_nombre_pc","tipo":"index","definicion":"KEY `idx_nombre_pc` (`nombre_pc`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"inventario_almacen":{"create":"CREATE TABLE `inventario_almacen` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `producto_id` int(11) NOT NULL,\n  `almacen_id` int(11) NOT NULL,\n  `stock` decimal(10,3) NOT NULL DEFAULT 0.000,\n  `stock_minimo` decimal(10,3) NOT NULL DEFAULT 0.000,\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_producto_almacen` (`producto_id`,`almacen_id`),\n  KEY `almacen_id` (`almacen_id`),\n  CONSTRAINT `inventario_almacen_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`),\n  CONSTRAINT `inventario_almacen_ibfk_2` FOREIGN KEY (`almacen_id`) REFERENCES `almacenes` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"almacen_id","definicion":"`almacen_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"stock","definicion":"`stock` decimal(10,3) NOT NULL DEFAULT 0.000","tipo":"decimal(10,3)","nulo":false},{"nombre":"stock_minimo","definicion":"`stock_minimo` decimal(10,3) NOT NULL DEFAULT 0.000","tipo":"decimal(10,3)","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_producto_almacen","tipo":"unique","definicion":"UNIQUE KEY `uq_producto_almacen` (`producto_id`,`almacen_id`)"},{"nombre":"almacen_id","tipo":"index","definicion":"KEY `almacen_id` (`almacen_id`)"},{"nombre":"inventario_almacen_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `inventario_almacen_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"},{"nombre":"inventario_almacen_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `inventario_almacen_ibfk_2` FOREIGN KEY (`almacen_id`) REFERENCES `almacenes` (`id`)"}]},"log_actividad":{"create":"CREATE TABLE `log_actividad` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `usuario_id` int(11) DEFAULT NULL,\n  `accion` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `modulo` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `detalles` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `user_agent` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_log_actividad_usuario` (`usuario_id`),\n  KEY `idx_log_actividad_fecha` (`fecha`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `log_actividad_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"accion","definicion":"`accion` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"modulo","definicion":"`modulo` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"detalles","definicion":"`detalles` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"ip_address","definicion":"`ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(45)","nulo":true},{"nombre":"user_agent","definicion":"`user_agent` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha","definicion":"`fecha` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_log_actividad_usuario","tipo":"index","definicion":"KEY `idx_log_actividad_usuario` (`usuario_id`)"},{"nombre":"idx_log_actividad_fecha","tipo":"index","definicion":"KEY `idx_log_actividad_fecha` (`fecha`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"log_actividad_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `log_actividad_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"}]},"log_seguridad":{"create":"CREATE TABLE `log_seguridad` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `evento` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `usuario_id` int(11) DEFAULT NULL,\n  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `user_agent` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `detalles` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `usuario_id` (`usuario_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `log_seguridad_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"evento","definicion":"`evento` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"ip_address","definicion":"`ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(45)","nulo":true},{"nombre":"user_agent","definicion":"`user_agent` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"detalles","definicion":"`detalles` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha","definicion":"`fecha` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"usuario_id","tipo":"index","definicion":"KEY `usuario_id` (`usuario_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"log_seguridad_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `log_seguridad_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"}]},"movimientos":{"create":"CREATE TABLE `movimientos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `tipo` enum('ingreso','egreso','transferencia') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `fecha_pago` date NOT NULL,\n  `periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cuenta_id` int(11) NOT NULL,\n  `contraparte` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `proveedor_id` int(11) DEFAULT NULL,\n  `referencia` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `metodo_pago` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `origen` enum('manual','pos','banco','nomina','caja_chica','transferencia') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'manual',\n  `estado` enum('registrado','conciliado','cancelado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrado',\n  `total` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `transferencia_id` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `transferencia_concepto` enum('traspaso_bancos','deposito_efectivo','reposicion_caja','otro') COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `nomina_tipo` enum('semanal','quincenal','mensual','extraordinario') COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `nomina_del` date DEFAULT NULL,\n  `nomina_al` date DEFAULT NULL,\n  `caja_estado` enum('por_reponer','repuesto') COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `reposicion_id` int(11) DEFAULT NULL,\n  `obligacion_id` int(11) DEFAULT NULL,\n  `pago_programado_id` int(11) DEFAULT NULL,\n  `comprobante` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `motivo_cancelacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_mov_fecha` (`fecha_pago`),\n  KEY `idx_mov_periodo` (`periodo`),\n  KEY `idx_mov_cuenta` (`cuenta_id`),\n  KEY `idx_mov_tipo` (`tipo`),\n  KEY `idx_mov_estado` (`estado`),\n  KEY `idx_mov_origen` (`origen`),\n  KEY `idx_mov_transferencia` (`transferencia_id`),\n  KEY `idx_mov_obligacion` (`obligacion_id`),\n  KEY `idx_mov_caja_estado` (`caja_estado`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('ingreso','egreso','transferencia') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('ingreso','egreso','transferencia')","nulo":false},{"nombre":"fecha_pago","definicion":"`fecha_pago` date NOT NULL","tipo":"date","nulo":false},{"nombre":"periodo","definicion":"`periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"char(7)","nulo":false},{"nombre":"cuenta_id","definicion":"`cuenta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"contraparte","definicion":"`contraparte` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"referencia","definicion":"`referencia` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(120)","nulo":true},{"nombre":"metodo_pago","definicion":"`metodo_pago` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(30)","nulo":true},{"nombre":"origen","definicion":"`origen` enum('manual','pos','banco','nomina','caja_chica','transferencia') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'manual'","tipo":"enum('manual','pos','banco','nomina','caja_chica','transferencia')","nulo":false},{"nombre":"estado","definicion":"`estado` enum('registrado','conciliado','cancelado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'registrado'","tipo":"enum('registrado','conciliado','cancelado')","nulo":false},{"nombre":"total","definicion":"`total` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"transferencia_id","definicion":"`transferencia_id` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(40)","nulo":true},{"nombre":"transferencia_concepto","definicion":"`transferencia_concepto` enum('traspaso_bancos','deposito_efectivo','reposicion_caja','otro') COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"enum('traspaso_bancos','deposito_efectivo','reposicion_caja','otro')","nulo":true},{"nombre":"nomina_tipo","definicion":"`nomina_tipo` enum('semanal','quincenal','mensual','extraordinario') COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"enum('semanal','quincenal','mensual','extraordinario')","nulo":true},{"nombre":"nomina_del","definicion":"`nomina_del` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"nomina_al","definicion":"`nomina_al` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"caja_estado","definicion":"`caja_estado` enum('por_reponer','repuesto') COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"enum('por_reponer','repuesto')","nulo":true},{"nombre":"reposicion_id","definicion":"`reposicion_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"obligacion_id","definicion":"`obligacion_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"pago_programado_id","definicion":"`pago_programado_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"comprobante","definicion":"`comprobante` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_mov_fecha","tipo":"index","definicion":"KEY `idx_mov_fecha` (`fecha_pago`)"},{"nombre":"idx_mov_periodo","tipo":"index","definicion":"KEY `idx_mov_periodo` (`periodo`)"},{"nombre":"idx_mov_cuenta","tipo":"index","definicion":"KEY `idx_mov_cuenta` (`cuenta_id`)"},{"nombre":"idx_mov_tipo","tipo":"index","definicion":"KEY `idx_mov_tipo` (`tipo`)"},{"nombre":"idx_mov_estado","tipo":"index","definicion":"KEY `idx_mov_estado` (`estado`)"},{"nombre":"idx_mov_origen","tipo":"index","definicion":"KEY `idx_mov_origen` (`origen`)"},{"nombre":"idx_mov_transferencia","tipo":"index","definicion":"KEY `idx_mov_transferencia` (`transferencia_id`)"},{"nombre":"idx_mov_obligacion","tipo":"index","definicion":"KEY `idx_mov_obligacion` (`obligacion_id`)"},{"nombre":"idx_mov_caja_estado","tipo":"index","definicion":"KEY `idx_mov_caja_estado` (`caja_estado`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"movimientos_inventario":{"create":"CREATE TABLE `movimientos_inventario` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `producto_id` int(11) NOT NULL,\n  `almacen_origen_id` int(11) DEFAULT NULL,\n  `almacen_destino_id` int(11) DEFAULT NULL,\n  `tipo` enum('entrada','salida','transferencia','ajuste','inventario_inicial') NOT NULL,\n  `cantidad` decimal(10,3) NOT NULL,\n  `stock_resultante` decimal(10,3) DEFAULT NULL,\n  `referencia_tipo` varchar(50) DEFAULT NULL,\n  `referencia_id` int(11) DEFAULT NULL,\n  `notas` text DEFAULT NULL,\n  `usuario_id` int(11) DEFAULT NULL,\n  `usuario_nombre` varchar(100) DEFAULT NULL,\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `producto_id` (`producto_id`),\n  KEY `almacen_origen_id` (`almacen_origen_id`),\n  KEY `almacen_destino_id` (`almacen_destino_id`),\n  CONSTRAINT `movimientos_inventario_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`),\n  CONSTRAINT `movimientos_inventario_ibfk_2` FOREIGN KEY (`almacen_origen_id`) REFERENCES `almacenes` (`id`),\n  CONSTRAINT `movimientos_inventario_ibfk_3` FOREIGN KEY (`almacen_destino_id`) REFERENCES `almacenes` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"almacen_origen_id","definicion":"`almacen_origen_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"almacen_destino_id","definicion":"`almacen_destino_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"tipo","definicion":"`tipo` enum('entrada','salida','transferencia','ajuste','inventario_inicial') NOT NULL","tipo":"enum('entrada','salida','transferencia','ajuste','inventario_inicial')","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(10,3) NOT NULL","tipo":"decimal(10,3)","nulo":false},{"nombre":"stock_resultante","definicion":"`stock_resultante` decimal(10,3) DEFAULT NULL","tipo":"decimal(10,3)","nulo":true},{"nombre":"referencia_tipo","definicion":"`referencia_tipo` varchar(50) DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"referencia_id","definicion":"`referencia_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"notas","definicion":"`notas` text DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(100) DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"producto_id","tipo":"index","definicion":"KEY `producto_id` (`producto_id`)"},{"nombre":"almacen_origen_id","tipo":"index","definicion":"KEY `almacen_origen_id` (`almacen_origen_id`)"},{"nombre":"almacen_destino_id","tipo":"index","definicion":"KEY `almacen_destino_id` (`almacen_destino_id`)"},{"nombre":"movimientos_inventario_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `movimientos_inventario_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"},{"nombre":"movimientos_inventario_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `movimientos_inventario_ibfk_2` FOREIGN KEY (`almacen_origen_id`) REFERENCES `almacenes` (`id`)"},{"nombre":"movimientos_inventario_ibfk_3","tipo":"foreign","definicion":"CONSTRAINT `movimientos_inventario_ibfk_3` FOREIGN KEY (`almacen_destino_id`) REFERENCES `almacenes` (`id`)"}]},"movimiento_lineas":{"create":"CREATE TABLE `movimiento_lineas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `movimiento_id` int(11) NOT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `categoria_id` int(11) NOT NULL,\n  `vehiculo_id` int(11) DEFAULT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `subtotal` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `iva` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `total` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `num_empleados` int(11) DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_movlinea_movimiento` (`movimiento_id`),\n  KEY `idx_movlinea_centro` (`centro`),\n  KEY `idx_movlinea_categoria` (`categoria_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_mov_lineas_vehiculo` (`vehiculo_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"movimiento_id","definicion":"`movimiento_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"categoria_id","definicion":"`categoria_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"iva","definicion":"`iva` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"num_empleados","definicion":"`num_empleados` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_movlinea_movimiento","tipo":"index","definicion":"KEY `idx_movlinea_movimiento` (`movimiento_id`)"},{"nombre":"idx_movlinea_centro","tipo":"index","definicion":"KEY `idx_movlinea_centro` (`centro`)"},{"nombre":"idx_movlinea_categoria","tipo":"index","definicion":"KEY `idx_movlinea_categoria` (`categoria_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_mov_lineas_vehiculo","tipo":"index","definicion":"KEY `idx_mov_lineas_vehiculo` (`vehiculo_id`)"}]},"obligaciones":{"create":"CREATE TABLE `obligaciones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `proveedor_id` int(11) NOT NULL,\n  `contrato_id` int(11) DEFAULT NULL,\n  `origen_tabla` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `origen_id` int(11) DEFAULT NULL,\n  `tipo_documento` enum('factura','recibo','remision','sin_comprobante') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'factura',\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `fecha_documento` date NOT NULL,\n  `fecha_vencimiento` date NOT NULL,\n  `periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `total` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `saldo` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `estado` enum('pendiente','programada','autorizada','pagada_parcial','pagada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente',\n  `comprobante` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `motivo_cancelacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_obligacion_prov_folio` (`proveedor_id`,`folio`),\n  KEY `idx_oblig_estado` (`estado`),\n  KEY `idx_oblig_vence` (`fecha_vencimiento`),\n  KEY `idx_oblig_periodo` (`periodo`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_obligaciones_origen` (`origen_tabla`,`origen_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"contrato_id","definicion":"`contrato_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"origen_tabla","definicion":"`origen_tabla` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(40)","nulo":true},{"nombre":"origen_id","definicion":"`origen_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"tipo_documento","definicion":"`tipo_documento` enum('factura','recibo','remision','sin_comprobante') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'factura'","tipo":"enum('factura','recibo','remision','sin_comprobante')","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"fecha_documento","definicion":"`fecha_documento` date NOT NULL","tipo":"date","nulo":false},{"nombre":"fecha_vencimiento","definicion":"`fecha_vencimiento` date NOT NULL","tipo":"date","nulo":false},{"nombre":"periodo","definicion":"`periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"char(7)","nulo":false},{"nombre":"total","definicion":"`total` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"saldo","definicion":"`saldo` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"estado","definicion":"`estado` enum('pendiente','programada','autorizada','pagada_parcial','pagada','cancelada') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente'","tipo":"enum('pendiente','programada','autorizada','pagada_parcial','pagada','cancelada')","nulo":false},{"nombre":"comprobante","definicion":"`comprobante` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_obligacion_prov_folio","tipo":"unique","definicion":"UNIQUE KEY `uq_obligacion_prov_folio` (`proveedor_id`,`folio`)"},{"nombre":"idx_oblig_estado","tipo":"index","definicion":"KEY `idx_oblig_estado` (`estado`)"},{"nombre":"idx_oblig_vence","tipo":"index","definicion":"KEY `idx_oblig_vence` (`fecha_vencimiento`)"},{"nombre":"idx_oblig_periodo","tipo":"index","definicion":"KEY `idx_oblig_periodo` (`periodo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_obligaciones_origen","tipo":"index","definicion":"KEY `idx_obligaciones_origen` (`origen_tabla`,`origen_id`)"}]},"obligacion_lineas":{"create":"CREATE TABLE `obligacion_lineas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `obligacion_id` int(11) NOT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `categoria_id` int(11) NOT NULL,\n  `vehiculo_id` int(11) DEFAULT NULL,\n  `descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `subtotal` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `iva` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `total` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_oblinea_obligacion` (`obligacion_id`),\n  KEY `idx_oblinea_centro` (`centro`),\n  KEY `idx_oblinea_categoria` (`categoria_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_oblig_lineas_vehiculo` (`vehiculo_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"obligacion_id","definicion":"`obligacion_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"categoria_id","definicion":"`categoria_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"descripcion","definicion":"`descripcion` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"iva","definicion":"`iva` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_oblinea_obligacion","tipo":"index","definicion":"KEY `idx_oblinea_obligacion` (`obligacion_id`)"},{"nombre":"idx_oblinea_centro","tipo":"index","definicion":"KEY `idx_oblinea_centro` (`centro`)"},{"nombre":"idx_oblinea_categoria","tipo":"index","definicion":"KEY `idx_oblinea_categoria` (`categoria_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_oblig_lineas_vehiculo","tipo":"index","definicion":"KEY `idx_oblig_lineas_vehiculo` (`vehiculo_id`)"}]},"ordenes_compra":{"create":"CREATE TABLE `ordenes_compra` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `proveedor_id` int(11) NOT NULL,\n  `usuario_id` int(11) DEFAULT NULL,\n  `subtotal` decimal(12,2) DEFAULT 0.00,\n  `impuesto` decimal(12,2) DEFAULT 0.00,\n  `total` decimal(12,2) DEFAULT 0.00,\n  `estado` enum('borrador','pendiente','aprobada','recibida_parcial','recibida','cancelada') COLLATE utf8mb4_unicode_ci DEFAULT 'borrador',\n  `estado_pago` enum('pendiente','pagada') COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente',\n  `notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `aprobado_por` int(11) DEFAULT NULL,\n  `recibido_por` int(11) DEFAULT NULL,\n  `fecha_aprobacion` datetime DEFAULT NULL,\n  `fecha_recepcion` datetime DEFAULT NULL,\n  `fecha_pago` datetime DEFAULT NULL,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `fecha_actualizacion` datetime DEFAULT NULL ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `almacen_destino_id` int(11) DEFAULT NULL,\n  `es_compra_directa` tinyint(1) NOT NULL DEFAULT 0,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `folio` (`folio`),\n  KEY `usuario_id` (`usuario_id`),\n  KEY `aprobado_por` (`aprobado_por`),\n  KEY `idx_folio` (`folio`),\n  KEY `idx_proveedor` (`proveedor_id`),\n  KEY `idx_estado` (`estado`),\n  KEY `idx_fecha` (`fecha_creacion`),\n  KEY `idx_estado_pago` (`estado_pago`),\n  KEY `recibido_por` (`recibido_por`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `ordenes_compra_ibfk_1` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`),\n  CONSTRAINT `ordenes_compra_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`),\n  CONSTRAINT `ordenes_compra_ibfk_3` FOREIGN KEY (`aprobado_por`) REFERENCES `usuarios` (`id`),\n  CONSTRAINT `ordenes_compra_ibfk_4` FOREIGN KEY (`recibido_por`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"proveedor_id","definicion":"`proveedor_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"impuesto","definicion":"`impuesto` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"total","definicion":"`total` decimal(12,2) DEFAULT 0.00","tipo":"decimal(12,2)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('borrador','pendiente','aprobada','recibida_parcial','recibida','cancelada') COLLATE utf8mb4_unicode_ci DEFAULT 'borrador'","tipo":"enum('borrador','pendiente','aprobada','recibida_parcial','recibida','cancelada')","nulo":true},{"nombre":"estado_pago","definicion":"`estado_pago` enum('pendiente','pagada') COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente'","tipo":"enum('pendiente','pagada')","nulo":true},{"nombre":"notas","definicion":"`notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"aprobado_por","definicion":"`aprobado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"recibido_por","definicion":"`recibido_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_aprobacion","definicion":"`fecha_aprobacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_recepcion","definicion":"`fecha_recepcion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_pago","definicion":"`fecha_pago` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` datetime DEFAULT NULL ON UPDATE current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"almacen_destino_id","definicion":"`almacen_destino_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"es_compra_directa","definicion":"`es_compra_directa` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"folio","tipo":"unique","definicion":"UNIQUE KEY `folio` (`folio`)"},{"nombre":"usuario_id","tipo":"index","definicion":"KEY `usuario_id` (`usuario_id`)"},{"nombre":"aprobado_por","tipo":"index","definicion":"KEY `aprobado_por` (`aprobado_por`)"},{"nombre":"idx_folio","tipo":"index","definicion":"KEY `idx_folio` (`folio`)"},{"nombre":"idx_proveedor","tipo":"index","definicion":"KEY `idx_proveedor` (`proveedor_id`)"},{"nombre":"idx_estado","tipo":"index","definicion":"KEY `idx_estado` (`estado`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha_creacion`)"},{"nombre":"idx_estado_pago","tipo":"index","definicion":"KEY `idx_estado_pago` (`estado_pago`)"},{"nombre":"recibido_por","tipo":"index","definicion":"KEY `recibido_por` (`recibido_por`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"ordenes_compra_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `ordenes_compra_ibfk_1` FOREIGN KEY (`proveedor_id`) REFERENCES `proveedores` (`id`)"},{"nombre":"ordenes_compra_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `ordenes_compra_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"},{"nombre":"ordenes_compra_ibfk_3","tipo":"foreign","definicion":"CONSTRAINT `ordenes_compra_ibfk_3` FOREIGN KEY (`aprobado_por`) REFERENCES `usuarios` (`id`)"},{"nombre":"ordenes_compra_ibfk_4","tipo":"foreign","definicion":"CONSTRAINT `ordenes_compra_ibfk_4` FOREIGN KEY (`recibido_por`) REFERENCES `usuarios` (`id`)"}]},"orden_compra_detalle":{"create":"CREATE TABLE `orden_compra_detalle` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `orden_compra_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `cantidad` decimal(12,3) NOT NULL DEFAULT 0.000,\n  `cantidad_recibida` decimal(12,3) DEFAULT 0.000,\n  `precio_unitario` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `subtotal` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_orden` (`orden_compra_id`),\n  KEY `idx_producto` (`producto_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `orden_compra_detalle_ibfk_1` FOREIGN KEY (`orden_compra_id`) REFERENCES `ordenes_compra` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `orden_compra_detalle_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"orden_compra_id","definicion":"`orden_compra_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(12,3) NOT NULL DEFAULT 0.000","tipo":"decimal(12,3)","nulo":false},{"nombre":"cantidad_recibida","definicion":"`cantidad_recibida` decimal(12,3) DEFAULT 0.000","tipo":"decimal(12,3)","nulo":true},{"nombre":"precio_unitario","definicion":"`precio_unitario` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_orden","tipo":"index","definicion":"KEY `idx_orden` (`orden_compra_id`)"},{"nombre":"idx_producto","tipo":"index","definicion":"KEY `idx_producto` (`producto_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"orden_compra_detalle_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `orden_compra_detalle_ibfk_1` FOREIGN KEY (`orden_compra_id`) REFERENCES `ordenes_compra` (`id`) ON DELETE CASCADE"},{"nombre":"orden_compra_detalle_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `orden_compra_detalle_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"}]},"pagares":{"create":"CREATE TABLE `pagares` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `venta_id` int(11) NOT NULL,\n  `origen` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pedido',\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `html_content` longtext COLLATE utf8mb4_unicode_ci NOT NULL,\n  `fecha_vencimiento` date DEFAULT NULL,\n  `total` decimal(10,2) DEFAULT 0.00,\n  `usuario_id` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `venta_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `pagado_manual` tinyint(1) NOT NULL DEFAULT 0,\n  `fecha_pagado` date DEFAULT NULL,\n  `pagado_usuario_id` int(11) DEFAULT NULL,\n  `pagado_nota` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_pagares_origen_venta` (`origen`,`venta_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"origen","definicion":"`origen` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pedido'","tipo":"varchar(20)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"html_content","definicion":"`html_content` longtext COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"longtext","nulo":false},{"nombre":"fecha_vencimiento","definicion":"`fecha_vencimiento` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"total","definicion":"`total` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"venta_folio","definicion":"`venta_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"pagado_manual","definicion":"`pagado_manual` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"fecha_pagado","definicion":"`fecha_pagado` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"pagado_usuario_id","definicion":"`pagado_usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"pagado_nota","definicion":"`pagado_nota` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_pagares_origen_venta","tipo":"unique","definicion":"UNIQUE KEY `idx_pagares_origen_venta` (`origen`,`venta_id`)"}]},"pagares_eliminados":{"create":"CREATE TABLE `pagares_eliminados` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `pagare_id` int(11) NOT NULL,\n  `venta_id` int(11) NOT NULL,\n  `origen` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pedido',\n  `venta_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `html_content` longtext COLLATE utf8mb4_unicode_ci NOT NULL,\n  `fecha_vencimiento` date DEFAULT NULL,\n  `total` decimal(10,2) DEFAULT 0.00,\n  `usuario_id` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NULL DEFAULT NULL,\n  `pagado_manual` tinyint(1) NOT NULL DEFAULT 0,\n  `fecha_pagado` date DEFAULT NULL,\n  `motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `eliminado_por` int(11) DEFAULT NULL,\n  `fecha_eliminado` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_pagares_elim_venta` (`origen`,`venta_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"pagare_id","definicion":"`pagare_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"origen","definicion":"`origen` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pedido'","tipo":"varchar(20)","nulo":false},{"nombre":"venta_folio","definicion":"`venta_folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"html_content","definicion":"`html_content` longtext COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"longtext","nulo":false},{"nombre":"fecha_vencimiento","definicion":"`fecha_vencimiento` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"total","definicion":"`total` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NULL DEFAULT NULL","tipo":"timestamp","nulo":true},{"nombre":"pagado_manual","definicion":"`pagado_manual` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"fecha_pagado","definicion":"`fecha_pagado` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"motivo","definicion":"`motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"eliminado_por","definicion":"`eliminado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_eliminado","definicion":"`fecha_eliminado` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_pagares_elim_venta","tipo":"index","definicion":"KEY `idx_pagares_elim_venta` (`origen`,`venta_id`)"}]},"pagos_clientes":{"create":"CREATE TABLE `pagos_clientes` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cliente_id` int(11) NOT NULL,\n  `monto_recibido` decimal(12,2) NOT NULL,\n  `monto_aplicado` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `monto_sobrante` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `metodo_pago` enum('efectivo','tarjeta','transferencia','cheque') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'efectivo',\n  `referencia` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cuentas_afectadas` int(11) NOT NULL DEFAULT 0,\n  `cuentas_liquidadas` int(11) NOT NULL DEFAULT 0,\n  `registrado_por` int(11) NOT NULL,\n  `fecha_pago` datetime NOT NULL DEFAULT current_timestamp(),\n  `facturado` tinyint(1) NOT NULL DEFAULT 0,\n  `factura_id` int(11) DEFAULT NULL,\n  `fecha_facturacion` datetime DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_cliente` (`cliente_id`),\n  KEY `idx_fecha` (`fecha_pago`),\n  KEY `idx_facturado` (`facturado`),\n  KEY `idx_folio` (`folio`),\n  KEY `fk_pago_usuario` (`registrado_por`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_pago_cliente` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`),\n  CONSTRAINT `fk_pago_usuario` FOREIGN KEY (`registrado_por`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"monto_recibido","definicion":"`monto_recibido` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"monto_aplicado","definicion":"`monto_aplicado` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"monto_sobrante","definicion":"`monto_sobrante` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` enum('efectivo','tarjeta','transferencia','cheque') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'efectivo'","tipo":"enum('efectivo','tarjeta','transferencia','cheque')","nulo":false},{"nombre":"referencia","definicion":"`referencia` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"notas","definicion":"`notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"cuentas_afectadas","definicion":"`cuentas_afectadas` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"cuentas_liquidadas","definicion":"`cuentas_liquidadas` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"registrado_por","definicion":"`registrado_por` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"fecha_pago","definicion":"`fecha_pago` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"facturado","definicion":"`facturado` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"factura_id","definicion":"`factura_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_facturacion","definicion":"`fecha_facturacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cliente","tipo":"index","definicion":"KEY `idx_cliente` (`cliente_id`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha_pago`)"},{"nombre":"idx_facturado","tipo":"index","definicion":"KEY `idx_facturado` (`facturado`)"},{"nombre":"idx_folio","tipo":"index","definicion":"KEY `idx_folio` (`folio`)"},{"nombre":"fk_pago_usuario","tipo":"index","definicion":"KEY `fk_pago_usuario` (`registrado_por`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_pago_cliente","tipo":"foreign","definicion":"CONSTRAINT `fk_pago_cliente` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`)"},{"nombre":"fk_pago_usuario","tipo":"foreign","definicion":"CONSTRAINT `fk_pago_usuario` FOREIGN KEY (`registrado_por`) REFERENCES `usuarios` (`id`)"}]},"pagos_programados":{"create":"CREATE TABLE `pagos_programados` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `obligacion_id` int(11) NOT NULL,\n  `monto` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `fecha_programada` date NOT NULL,\n  `cuenta_id` int(11) NOT NULL,\n  `metodo_pago` enum('transferencia','cheque','domiciliacion','efectivo','tarjeta_corporativa') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'transferencia',\n  `estado` enum('por_autorizar','autorizado','rechazado','pagado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'por_autorizar',\n  `solicito_id` int(11) DEFAULT NULL,\n  `autorizo_id` int(11) DEFAULT NULL,\n  `fecha_autorizacion` datetime DEFAULT NULL,\n  `comentario` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `comentario_autorizacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `movimiento_id` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_pagoprog_obligacion` (`obligacion_id`),\n  KEY `idx_pagoprog_estado` (`estado`),\n  KEY `idx_pagoprog_fecha` (`fecha_programada`),\n  KEY `idx_pagoprog_cuenta` (`cuenta_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"obligacion_id","definicion":"`obligacion_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"monto","definicion":"`monto` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"fecha_programada","definicion":"`fecha_programada` date NOT NULL","tipo":"date","nulo":false},{"nombre":"cuenta_id","definicion":"`cuenta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` enum('transferencia','cheque','domiciliacion','efectivo','tarjeta_corporativa') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'transferencia'","tipo":"enum('transferencia','cheque','domiciliacion','efectivo','tarjeta_corporativa')","nulo":false},{"nombre":"estado","definicion":"`estado` enum('por_autorizar','autorizado','rechazado','pagado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'por_autorizar'","tipo":"enum('por_autorizar','autorizado','rechazado','pagado')","nulo":false},{"nombre":"solicito_id","definicion":"`solicito_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"autorizo_id","definicion":"`autorizo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_autorizacion","definicion":"`fecha_autorizacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"comentario","definicion":"`comentario` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"comentario_autorizacion","definicion":"`comentario_autorizacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"movimiento_id","definicion":"`movimiento_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_pagoprog_obligacion","tipo":"index","definicion":"KEY `idx_pagoprog_obligacion` (`obligacion_id`)"},{"nombre":"idx_pagoprog_estado","tipo":"index","definicion":"KEY `idx_pagoprog_estado` (`estado`)"},{"nombre":"idx_pagoprog_fecha","tipo":"index","definicion":"KEY `idx_pagoprog_fecha` (`fecha_programada`)"},{"nombre":"idx_pagoprog_cuenta","tipo":"index","definicion":"KEY `idx_pagoprog_cuenta` (`cuenta_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"periodos":{"create":"CREATE TABLE `periodos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `estado` enum('abierto','revision','cerrado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abierto',\n  `cerrado_por` int(11) DEFAULT NULL,\n  `fecha_cierre` datetime DEFAULT NULL,\n  `reaperturas` int(11) NOT NULL DEFAULT 0,\n  `motivo_reapertura` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_periodo` (`periodo`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"periodo","definicion":"`periodo` char(7) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"char(7)","nulo":false},{"nombre":"estado","definicion":"`estado` enum('abierto','revision','cerrado') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abierto'","tipo":"enum('abierto','revision','cerrado')","nulo":false},{"nombre":"cerrado_por","definicion":"`cerrado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_cierre","definicion":"`fecha_cierre` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"reaperturas","definicion":"`reaperturas` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"motivo_reapertura","definicion":"`motivo_reapertura` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_periodo","tipo":"unique","definicion":"UNIQUE KEY `uq_periodo` (`periodo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"permisos":{"create":"CREATE TABLE `permisos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `modulo` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `accion` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `activo` tinyint(4) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `nombre` (`nombre`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"modulo","definicion":"`modulo` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"accion","definicion":"`accion` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"nombre","tipo":"unique","definicion":"UNIQUE KEY `nombre` (`nombre`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"precios_ruta_detalle":{"create":"CREATE TABLE `precios_ruta_detalle` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `lista_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `precio` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_lista_producto` (`lista_id`,`producto_id`),\n  KEY `idx_producto` (`producto_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `precios_ruta_detalle_ibfk_1` FOREIGN KEY (`lista_id`) REFERENCES `precios_ruta_listas` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `precios_ruta_detalle_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"lista_id","definicion":"`lista_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"precio","definicion":"`precio` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_lista_producto","tipo":"unique","definicion":"UNIQUE KEY `uk_lista_producto` (`lista_id`,`producto_id`)"},{"nombre":"idx_producto","tipo":"index","definicion":"KEY `idx_producto` (`producto_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"precios_ruta_detalle_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `precios_ruta_detalle_ibfk_1` FOREIGN KEY (`lista_id`) REFERENCES `precios_ruta_listas` (`id`) ON DELETE CASCADE"},{"nombre":"precios_ruta_detalle_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `precios_ruta_detalle_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE"}]},"precios_ruta_listas":{"create":"CREATE TABLE `precios_ruta_listas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `orden` int(11) NOT NULL DEFAULT 0,\n  `activo` tinyint(1) NOT NULL DEFAULT 1,\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_orden` (`orden`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"orden","definicion":"`orden` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_orden","tipo":"index","definicion":"KEY `idx_orden` (`orden`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"precio_rangos":{"create":"CREATE TABLE `precio_rangos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `producto_id` int(11) NOT NULL,\n  `precio_tipo` enum('precio1','precio2','precio3','precio4') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cantidad_minima` decimal(10,2) NOT NULL,\n  `cantidad_maxima` decimal(10,2) DEFAULT NULL,\n  `precio` decimal(10,2) NOT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_producto_tipo` (`producto_id`,`precio_tipo`),\n  KEY `idx_cantidad` (`cantidad_minima`,`cantidad_maxima`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `precio_rangos_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"precio_tipo","definicion":"`precio_tipo` enum('precio1','precio2','precio3','precio4') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('precio1','precio2','precio3','precio4')","nulo":false},{"nombre":"cantidad_minima","definicion":"`cantidad_minima` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"cantidad_maxima","definicion":"`cantidad_maxima` decimal(10,2) DEFAULT NULL","tipo":"decimal(10,2)","nulo":true},{"nombre":"precio","definicion":"`precio` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_producto_tipo","tipo":"index","definicion":"KEY `idx_producto_tipo` (`producto_id`,`precio_tipo`)"},{"nombre":"idx_cantidad","tipo":"index","definicion":"KEY `idx_cantidad` (`cantidad_minima`,`cantidad_maxima`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"precio_rangos_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `precio_rangos_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE"}]},"presupuestos":{"create":"CREATE TABLE `presupuestos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `anio` int(4) NOT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `categoria_id` int(11) NOT NULL,\n  `m01` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m02` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m03` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m04` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m05` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m06` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m07` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m08` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m09` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m10` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m11` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `m12` decimal(14,2) NOT NULL DEFAULT 0.00,\n  `actualizado_por` int(11) DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_presupuesto` (`anio`,`centro`,`categoria_id`),\n  KEY `idx_presup_categoria` (`categoria_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"anio","definicion":"`anio` int(4) NOT NULL","tipo":"int(4)","nulo":false},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"categoria_id","definicion":"`categoria_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"m01","definicion":"`m01` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m02","definicion":"`m02` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m03","definicion":"`m03` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m04","definicion":"`m04` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m05","definicion":"`m05` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m06","definicion":"`m06` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m07","definicion":"`m07` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m08","definicion":"`m08` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m09","definicion":"`m09` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m10","definicion":"`m10` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m11","definicion":"`m11` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"m12","definicion":"`m12` decimal(14,2) NOT NULL DEFAULT 0.00","tipo":"decimal(14,2)","nulo":false},{"nombre":"actualizado_por","definicion":"`actualizado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_presupuesto","tipo":"unique","definicion":"UNIQUE KEY `uq_presupuesto` (`anio`,`centro`,`categoria_id`)"},{"nombre":"idx_presup_categoria","tipo":"index","definicion":"KEY `idx_presup_categoria` (`categoria_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"productos":{"create":"CREATE TABLE `productos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `sku` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU global MP-0001\/PT-0001\/IN-0001\u2026: lo asigna la nube, igual en todas las sucursales',\n  `tipo_producto` enum('producto_terminado','materia_prima','jarceria','envase','consumible','intermedio') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'producto_terminado',\n  `uso` enum('venta','produccion','ambos') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'venta',\n  `estatus` enum('activo','descontinuado','uso_interno','no_se_vende') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'activo',\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `nombre_proveedor` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Nombre con el que lo factura el proveedor',\n  `descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `codigo_corto` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `codigo_barras` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `codigos_barras_adicionales` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cve_cfdi` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave de producto\/servicio SAT',\n  `categoria_id` int(11) DEFAULT NULL,\n  `almacen_id` int(11) DEFAULT NULL,\n  `precio_compra` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `costo_sin_iva` decimal(14,4) NOT NULL DEFAULT 0.0000 COMMENT 'Costo de valuaci\u00f3n por unidad base, sin IVA',\n  `fecha_costo` date DEFAULT NULL COMMENT 'Auditor\u00eda: cu\u00e1ndo se fij\u00f3 costo_sin_iva',\n  `responsable_costo` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Auditor\u00eda: qui\u00e9n fij\u00f3 costo_sin_iva',\n  `responsable_costo_id` int(11) DEFAULT NULL,\n  `costo_precios` decimal(10,3) DEFAULT 0.000,\n  `precio_lista` decimal(12,4) DEFAULT 0.0000 COMMENT 'Precio de lista base',\n  `precio1` decimal(12,4) DEFAULT 0.0000,\n  `precio2` decimal(12,4) DEFAULT 0.0000,\n  `precio3` decimal(12,4) DEFAULT 0.0000,\n  `precio4` decimal(12,4) DEFAULT 0.0000,\n  `precio5` decimal(12,4) DEFAULT 0.0000 COMMENT 'Precio nivel 5',\n  `precio6` decimal(12,4) DEFAULT 0.0000 COMMENT 'Precio nivel 6',\n  `margen_precio1` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio1',\n  `margen_precio2` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio2',\n  `margen_precio3` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio3',\n  `margen_precio4` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio4',\n  `margen_precio5` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio5',\n  `margen_precio6` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio6',\n  `porcentaje_publico` decimal(6,2) NOT NULL DEFAULT 0.00,\n  `stock` decimal(14,3) DEFAULT 0.000,\n  `stock_minimo` decimal(14,3) DEFAULT 5.000,\n  `marcado_sin_stock` tinyint(1) NOT NULL DEFAULT 0,\n  `unidad_medida` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'pz',\n  `unidad_compra` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Unidad en que se compra (mismos c\u00f3digos que unidad_medida)',\n  `factor_conversion` decimal(14,4) NOT NULL DEFAULT 1.0000 COMMENT 'Unidades base por unidad de compra',\n  `capacidad_max` decimal(14,3) DEFAULT NULL COMMENT 'Capacidad m\u00e1xima (validaci\u00f3n; ej. litros de un envase)',\n  `vida_util_dias` int(11) DEFAULT NULL COMMENT 'D\u00edas de vida \u00fatil; caducidad del lote = fabricaci\u00f3n + vida \u00fatil',\n  `imagen_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `impresora` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Nombre de la impresora asignada al producto',\n  `es_base` tinyint(1) DEFAULT 1,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `objeto_imp` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT '02' COMMENT 'Objeto de impuesto SAT: 01=No objeto, 02=S\u00ed objeto,     \\r\\n     03=S\u00ed y no objeto',\n  `tipo_factor_iva` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'Tasa' COMMENT 'Tipo de factor IVA: Tasa o Exento',\n  `tasa_iva` decimal(10,6) DEFAULT 0.160000 COMMENT 'Tasa de IVA: 0.160000=16%, 0.080000=8%, 0.000000=0%',\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `aux` decimal(10,2) NOT NULL,\n  `categoria2_id` int(11) DEFAULT NULL,\n  `subcategoria_id` int(11) DEFAULT NULL,\n  `unidad_sat` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave de unidad SAT (c_ClaveUnidad) para CFDI',\n  `imagen_base64` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_productos_sku` (`sku`),\n  KEY `fk_producto_categoria` (`categoria_id`),\n  KEY `idx_productos_activo` (`activo`),\n  KEY `idx_productos_stock` (`stock`),\n  KEY `idx_productos_categoria_activo` (`categoria_id`,`activo`),\n  KEY `idx_almacen_id` (`almacen_id`),\n  KEY `idx_codigo_corto` (`codigo_corto`),\n  KEY `idx_codigo_barras` (`codigo_barras`),\n  KEY `idx_productos_cve_cfdi` (`cve_cfdi`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_productos_tipo_uso` (`tipo_producto`,`uso`,`estatus`),\n  CONSTRAINT `fk_producto_categoria` FOREIGN KEY (`categoria_id`) REFERENCES `categorias` (`id`) ON DELETE SET NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"sku","definicion":"`sku` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SKU global MP-0001\/PT-0001\/IN-0001\u2026: lo asigna la nube, igual en todas las sucursales'","tipo":"varchar(20)","nulo":true},{"nombre":"tipo_producto","definicion":"`tipo_producto` enum('producto_terminado','materia_prima','jarceria','envase','consumible','intermedio') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'producto_terminado'","tipo":"enum('producto_terminado','materia_prima','jarceria','envase','consumible','intermedio')","nulo":false},{"nombre":"uso","definicion":"`uso` enum('venta','produccion','ambos') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'venta'","tipo":"enum('venta','produccion','ambos')","nulo":false},{"nombre":"estatus","definicion":"`estatus` enum('activo','descontinuado','uso_interno','no_se_vende') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'activo'","tipo":"enum('activo','descontinuado','uso_interno','no_se_vende')","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"nombre_proveedor","definicion":"`nombre_proveedor` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Nombre con el que lo factura el proveedor'","tipo":"varchar(150)","nulo":true},{"nombre":"descripcion","definicion":"`descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"codigo_corto","definicion":"`codigo_corto` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"codigo_barras","definicion":"`codigo_barras` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"codigos_barras_adicionales","definicion":"`codigos_barras_adicionales` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"cve_cfdi","definicion":"`cve_cfdi` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave de producto\/servicio SAT'","tipo":"varchar(8)","nulo":true},{"nombre":"categoria_id","definicion":"`categoria_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"almacen_id","definicion":"`almacen_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"precio_compra","definicion":"`precio_compra` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"costo_sin_iva","definicion":"`costo_sin_iva` decimal(14,4) NOT NULL DEFAULT 0.0000 COMMENT 'Costo de valuaci\u00f3n por unidad base, sin IVA'","tipo":"decimal(14,4)","nulo":false},{"nombre":"fecha_costo","definicion":"`fecha_costo` date DEFAULT NULL COMMENT 'Auditor\u00eda: cu\u00e1ndo se fij\u00f3 costo_sin_iva'","tipo":"date","nulo":true},{"nombre":"responsable_costo","definicion":"`responsable_costo` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Auditor\u00eda: qui\u00e9n fij\u00f3 costo_sin_iva'","tipo":"varchar(120)","nulo":true},{"nombre":"responsable_costo_id","definicion":"`responsable_costo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"costo_precios","definicion":"`costo_precios` decimal(10,3) DEFAULT 0.000","tipo":"decimal(10,3)","nulo":true},{"nombre":"precio_lista","definicion":"`precio_lista` decimal(12,4) DEFAULT 0.0000 COMMENT 'Precio de lista base'","tipo":"decimal(12,4)","nulo":true},{"nombre":"precio1","definicion":"`precio1` decimal(12,4) DEFAULT 0.0000","tipo":"decimal(12,4)","nulo":true},{"nombre":"precio2","definicion":"`precio2` decimal(12,4) DEFAULT 0.0000","tipo":"decimal(12,4)","nulo":true},{"nombre":"precio3","definicion":"`precio3` decimal(12,4) DEFAULT 0.0000","tipo":"decimal(12,4)","nulo":true},{"nombre":"precio4","definicion":"`precio4` decimal(12,4) DEFAULT 0.0000","tipo":"decimal(12,4)","nulo":true},{"nombre":"precio5","definicion":"`precio5` decimal(12,4) DEFAULT 0.0000 COMMENT 'Precio nivel 5'","tipo":"decimal(12,4)","nulo":true},{"nombre":"precio6","definicion":"`precio6` decimal(12,4) DEFAULT 0.0000 COMMENT 'Precio nivel 6'","tipo":"decimal(12,4)","nulo":true},{"nombre":"margen_precio1","definicion":"`margen_precio1` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio1'","tipo":"decimal(8,4)","nulo":false},{"nombre":"margen_precio2","definicion":"`margen_precio2` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio2'","tipo":"decimal(8,4)","nulo":false},{"nombre":"margen_precio3","definicion":"`margen_precio3` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio3'","tipo":"decimal(8,4)","nulo":false},{"nombre":"margen_precio4","definicion":"`margen_precio4` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio4'","tipo":"decimal(8,4)","nulo":false},{"nombre":"margen_precio5","definicion":"`margen_precio5` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio5'","tipo":"decimal(8,4)","nulo":false},{"nombre":"margen_precio6","definicion":"`margen_precio6` decimal(8,4) NOT NULL DEFAULT 0.0000 COMMENT '% ganancia costo->precio6'","tipo":"decimal(8,4)","nulo":false},{"nombre":"porcentaje_publico","definicion":"`porcentaje_publico` decimal(6,2) NOT NULL DEFAULT 0.00","tipo":"decimal(6,2)","nulo":false},{"nombre":"stock","definicion":"`stock` decimal(14,3) DEFAULT 0.000","tipo":"decimal(14,3)","nulo":true},{"nombre":"stock_minimo","definicion":"`stock_minimo` decimal(14,3) DEFAULT 5.000","tipo":"decimal(14,3)","nulo":true},{"nombre":"marcado_sin_stock","definicion":"`marcado_sin_stock` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"unidad_medida","definicion":"`unidad_medida` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'pz'","tipo":"varchar(20)","nulo":true},{"nombre":"unidad_compra","definicion":"`unidad_compra` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Unidad en que se compra (mismos c\u00f3digos que unidad_medida)'","tipo":"varchar(20)","nulo":true},{"nombre":"factor_conversion","definicion":"`factor_conversion` decimal(14,4) NOT NULL DEFAULT 1.0000 COMMENT 'Unidades base por unidad de compra'","tipo":"decimal(14,4)","nulo":false},{"nombre":"capacidad_max","definicion":"`capacidad_max` decimal(14,3) DEFAULT NULL COMMENT 'Capacidad m\u00e1xima (validaci\u00f3n; ej. litros de un envase)'","tipo":"decimal(14,3)","nulo":true},{"nombre":"vida_util_dias","definicion":"`vida_util_dias` int(11) DEFAULT NULL COMMENT 'D\u00edas de vida \u00fatil; caducidad del lote = fabricaci\u00f3n + vida \u00fatil'","tipo":"int(11)","nulo":true},{"nombre":"imagen_url","definicion":"`imagen_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"impresora","definicion":"`impresora` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Nombre de la impresora asignada al producto'","tipo":"varchar(255)","nulo":true},{"nombre":"es_base","definicion":"`es_base` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"objeto_imp","definicion":"`objeto_imp` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT '02' COMMENT 'Objeto de impuesto SAT: 01=No objeto, 02=S\u00ed objeto,     \\r\\n     03=S\u00ed y no objeto'","tipo":"varchar(5)","nulo":true},{"nombre":"tipo_factor_iva","definicion":"`tipo_factor_iva` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'Tasa' COMMENT 'Tipo de factor IVA: Tasa o Exento'","tipo":"varchar(10)","nulo":true},{"nombre":"tasa_iva","definicion":"`tasa_iva` decimal(10,6) DEFAULT 0.160000 COMMENT 'Tasa de IVA: 0.160000=16%, 0.080000=8%, 0.000000=0%'","tipo":"decimal(10,6)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"aux","definicion":"`aux` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"categoria2_id","definicion":"`categoria2_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"subcategoria_id","definicion":"`subcategoria_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"unidad_sat","definicion":"`unidad_sat` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Clave de unidad SAT (c_ClaveUnidad) para CFDI'","tipo":"varchar(5)","nulo":true},{"nombre":"imagen_base64","definicion":"`imagen_base64` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"longtext","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_productos_sku","tipo":"unique","definicion":"UNIQUE KEY `idx_productos_sku` (`sku`)"},{"nombre":"fk_producto_categoria","tipo":"index","definicion":"KEY `fk_producto_categoria` (`categoria_id`)"},{"nombre":"idx_productos_activo","tipo":"index","definicion":"KEY `idx_productos_activo` (`activo`)"},{"nombre":"idx_productos_stock","tipo":"index","definicion":"KEY `idx_productos_stock` (`stock`)"},{"nombre":"idx_productos_categoria_activo","tipo":"index","definicion":"KEY `idx_productos_categoria_activo` (`categoria_id`,`activo`)"},{"nombre":"idx_almacen_id","tipo":"index","definicion":"KEY `idx_almacen_id` (`almacen_id`)"},{"nombre":"idx_codigo_corto","tipo":"index","definicion":"KEY `idx_codigo_corto` (`codigo_corto`)"},{"nombre":"idx_codigo_barras","tipo":"index","definicion":"KEY `idx_codigo_barras` (`codigo_barras`)"},{"nombre":"idx_productos_cve_cfdi","tipo":"index","definicion":"KEY `idx_productos_cve_cfdi` (`cve_cfdi`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_productos_tipo_uso","tipo":"index","definicion":"KEY `idx_productos_tipo_uso` (`tipo_producto`,`uso`,`estatus`)"},{"nombre":"fk_producto_categoria","tipo":"foreign","definicion":"CONSTRAINT `fk_producto_categoria` FOREIGN KEY (`categoria_id`) REFERENCES `categorias` (`id`) ON DELETE SET NULL"}]},"producto_alias":{"create":"CREATE TABLE `producto_alias` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `producto_id` int(11) NOT NULL,\n  `alias` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_alias_producto` (`producto_id`,`alias`),\n  KEY `idx_alias_texto` (`alias`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_alias_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"alias","definicion":"`alias` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(150)","nulo":false},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_alias_producto","tipo":"unique","definicion":"UNIQUE KEY `idx_alias_producto` (`producto_id`,`alias`)"},{"nombre":"idx_alias_texto","tipo":"index","definicion":"KEY `idx_alias_texto` (`alias`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_alias_producto","tipo":"foreign","definicion":"CONSTRAINT `fk_alias_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"}]},"producto_equivalencias":{"create":"CREATE TABLE `producto_equivalencias` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `producto_id` int(11) NOT NULL COMMENT 'Producto principal (ej: Caja)',\n  `producto_equivalente_id` int(11) NOT NULL COMMENT 'Producto que lo conforma (ej: Unidad)',\n  `cantidad` decimal(10,3) NOT NULL DEFAULT 1.000 COMMENT 'Cantidad del producto equivalente',\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_equivalencia` (`producto_id`,`producto_equivalente_id`),\n  KEY `idx_producto_id` (`producto_id`),\n  KEY `idx_producto_equivalente_id` (`producto_equivalente_id`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `producto_equivalencias_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `producto_equivalencias_ibfk_2` FOREIGN KEY (`producto_equivalente_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Tabla para manejar equivalencias entre productos'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL COMMENT 'Producto principal (ej: Caja)'","tipo":"int(11)","nulo":false},{"nombre":"producto_equivalente_id","definicion":"`producto_equivalente_id` int(11) NOT NULL COMMENT 'Producto que lo conforma (ej: Unidad)'","tipo":"int(11)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(10,3) NOT NULL DEFAULT 1.000 COMMENT 'Cantidad del producto equivalente'","tipo":"decimal(10,3)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_equivalencia","tipo":"unique","definicion":"UNIQUE KEY `unique_equivalencia` (`producto_id`,`producto_equivalente_id`)"},{"nombre":"idx_producto_id","tipo":"index","definicion":"KEY `idx_producto_id` (`producto_id`)"},{"nombre":"idx_producto_equivalente_id","tipo":"index","definicion":"KEY `idx_producto_equivalente_id` (`producto_equivalente_id`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"producto_equivalencias_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `producto_equivalencias_ibfk_1` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE"},{"nombre":"producto_equivalencias_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `producto_equivalencias_ibfk_2` FOREIGN KEY (`producto_equivalente_id`) REFERENCES `productos` (`id`) ON DELETE CASCADE"}]},"prod_dispositivos":{"create":"CREATE TABLE `prod_dispositivos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'TAB-PV-01',\n  `nombre` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `token_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SHA-256 del token que guarda la tableta',\n  `codigo_activacion` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Un solo uso',\n  `activacion_expira` datetime DEFAULT NULL,\n  `activado_en` datetime DEFAULT NULL,\n  `ultimo_uso` datetime DEFAULT NULL,\n  `activo` tinyint(1) NOT NULL DEFAULT 1,\n  `created_at` datetime NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_prod_dispositivos_codigo` (`codigo`),\n  KEY `idx_prod_dispositivos_token` (`token_hash`),\n  KEY `idx_prod_dispositivos_updated` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: tabletas de piso registradas'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'TAB-PV-01'","tipo":"varchar(20)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(60)","nulo":false},{"nombre":"sucursal_codigo","definicion":"`sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"token_hash","definicion":"`token_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SHA-256 del token que guarda la tableta'","tipo":"char(64)","nulo":true},{"nombre":"codigo_activacion","definicion":"`codigo_activacion` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Un solo uso'","tipo":"varchar(10)","nulo":true},{"nombre":"activacion_expira","definicion":"`activacion_expira` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"activado_en","definicion":"`activado_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"ultimo_uso","definicion":"`ultimo_uso` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"created_at","definicion":"`created_at` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_prod_dispositivos_codigo","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_dispositivos_codigo` (`codigo`)"},{"nombre":"idx_prod_dispositivos_token","tipo":"index","definicion":"KEY `idx_prod_dispositivos_token` (`token_hash`)"},{"nombre":"idx_prod_dispositivos_updated","tipo":"index","definicion":"KEY `idx_prod_dispositivos_updated` (`updated_at`)"}]},"prod_formulas":{"create":"CREATE TABLE `prod_formulas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'FOR-000001, lo genera el sistema',\n  `producto_id` int(11) NOT NULL COMMENT 'Producto terminado o intermedio que fabrica',\n  `nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Est\u00e1ndar, Alterna RN sin Bosques\u2026',\n  `alcance` enum('GLOBAL','SOLO_ASIGNADA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'GLOBAL',\n  `es_principal` tinyint(1) NOT NULL DEFAULT 0,\n  `activa` tinyint(1) NOT NULL DEFAULT 1,\n  `tipo_formulacion` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'A, B (del manual)',\n  `referencia_manual` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '5.1.1.3.1',\n  `tabla_manual` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tabla 1',\n  `factor_costo_indirecto` decimal(9,4) NOT NULL DEFAULT 1.1000,\n  `notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `clave_importacion` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Origen en el Excel: Hoja!Celda de la tabla',\n  `created_at` datetime NOT NULL DEFAULT current_timestamp(),\n  `created_by` int(11) DEFAULT NULL,\n  `created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_by` int(11) DEFAULT NULL,\n  `updated_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_prod_formulas_codigo` (`codigo`),\n  KEY `idx_prod_formulas_producto` (`producto_id`,`activa`),\n  KEY `idx_prod_formulas_updated` (`updated_at`),\n  KEY `idx_prod_formulas_importacion` (`clave_importacion`),\n  CONSTRAINT `fk_prod_formulas_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: f\u00f3rmulas por producto (global)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'FOR-000001, lo genera el sistema'","tipo":"varchar(20)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL COMMENT 'Producto terminado o intermedio que fabrica'","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Est\u00e1ndar, Alterna RN sin Bosques\u2026'","tipo":"varchar(120)","nulo":false},{"nombre":"alcance","definicion":"`alcance` enum('GLOBAL','SOLO_ASIGNADA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'GLOBAL'","tipo":"enum('global','solo_asignada')","nulo":false},{"nombre":"es_principal","definicion":"`es_principal` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"activa","definicion":"`activa` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"tipo_formulacion","definicion":"`tipo_formulacion` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'A, B (del manual)'","tipo":"varchar(5)","nulo":true},{"nombre":"referencia_manual","definicion":"`referencia_manual` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '5.1.1.3.1'","tipo":"varchar(30)","nulo":true},{"nombre":"tabla_manual","definicion":"`tabla_manual` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tabla 1'","tipo":"varchar(30)","nulo":true},{"nombre":"factor_costo_indirecto","definicion":"`factor_costo_indirecto` decimal(9,4) NOT NULL DEFAULT 1.1000","tipo":"decimal(9,4)","nulo":false},{"nombre":"notas","definicion":"`notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"clave_importacion","definicion":"`clave_importacion` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Origen en el Excel: Hoja!Celda de la tabla'","tipo":"varchar(80)","nulo":true},{"nombre":"created_at","definicion":"`created_at` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"created_by","definicion":"`created_by` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"created_by_nombre","definicion":"`created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"updated_by","definicion":"`updated_by` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"updated_by_nombre","definicion":"`updated_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_prod_formulas_codigo","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_formulas_codigo` (`codigo`)"},{"nombre":"idx_prod_formulas_producto","tipo":"index","definicion":"KEY `idx_prod_formulas_producto` (`producto_id`,`activa`)"},{"nombre":"idx_prod_formulas_updated","tipo":"index","definicion":"KEY `idx_prod_formulas_updated` (`updated_at`)"},{"nombre":"idx_prod_formulas_importacion","tipo":"index","definicion":"KEY `idx_prod_formulas_importacion` (`clave_importacion`)"},{"nombre":"fk_prod_formulas_producto","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_formulas_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"}]},"prod_formula_especificaciones":{"create":"CREATE TABLE `prod_formula_especificaciones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `version_id` int(11) NOT NULL,\n  `parametro` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'pH, Viscosidad, Apariencia, Color, Olor',\n  `tipo_valor` enum('NUMERICO','OPCION','TEXTO') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'NUMERICO',\n  `unidad` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `valor_min` decimal(18,6) DEFAULT NULL,\n  `valor_max` decimal(18,6) DEFAULT NULL,\n  `opciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'JSON: [\"Conforme\",\"No conforme\"]',\n  `obligatorio` tinyint(1) NOT NULL DEFAULT 1,\n  `orden` int(11) NOT NULL DEFAULT 0,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_prod_espec_version` (`version_id`,`orden`),\n  KEY `idx_prod_espec_updated` (`updated_at`),\n  CONSTRAINT `fk_prod_espec_version` FOREIGN KEY (`version_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: control de calidad de una versi\u00f3n (global)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"version_id","definicion":"`version_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"parametro","definicion":"`parametro` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'pH, Viscosidad, Apariencia, Color, Olor'","tipo":"varchar(60)","nulo":false},{"nombre":"tipo_valor","definicion":"`tipo_valor` enum('NUMERICO','OPCION','TEXTO') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'NUMERICO'","tipo":"enum('numerico','opcion','texto')","nulo":false},{"nombre":"unidad","definicion":"`unidad` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"valor_min","definicion":"`valor_min` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"valor_max","definicion":"`valor_max` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"opciones","definicion":"`opciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'JSON: [\"Conforme\",\"No conforme\"]'","tipo":"text","nulo":true},{"nombre":"obligatorio","definicion":"`obligatorio` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"orden","definicion":"`orden` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_prod_espec_version","tipo":"index","definicion":"KEY `idx_prod_espec_version` (`version_id`,`orden`)"},{"nombre":"idx_prod_espec_updated","tipo":"index","definicion":"KEY `idx_prod_espec_updated` (`updated_at`)"},{"nombre":"fk_prod_espec_version","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_espec_version` FOREIGN KEY (`version_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE CASCADE"}]},"prod_formula_lineas":{"create":"CREATE TABLE `prod_formula_lineas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `version_id` int(11) NOT NULL,\n  `secuencia` int(11) NOT NULL COMMENT 'Orden de adici\u00f3n (\u00fanica por versi\u00f3n, validada en PHP)',\n  `componente_producto_id` int(11) NOT NULL,\n  `descripcion_tecnica` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Lo que se muestra en piso: Base para shampoo (LESS)',\n  `cantidad` decimal(18,6) NOT NULL DEFAULT 0.000000 COMMENT 'Para la cantidad base, en la unidad base del componente',\n  `unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Unidad base del componente (productos.unidad_medida)',\n  `es_cantidad_suficiente` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Q.S.',\n  `tolerancia_pct` decimal(9,4) DEFAULT NULL COMMENT 'Desviaci\u00f3n permitida en el consumo real',\n  `instruccion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_prod_lineas_version` (`version_id`,`secuencia`),\n  KEY `idx_prod_lineas_componente` (`componente_producto_id`),\n  KEY `idx_prod_lineas_updated` (`updated_at`),\n  CONSTRAINT `fk_prod_lineas_componente` FOREIGN KEY (`componente_producto_id`) REFERENCES `productos` (`id`),\n  CONSTRAINT `fk_prod_lineas_version` FOREIGN KEY (`version_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: componentes de una versi\u00f3n (global)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"version_id","definicion":"`version_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"secuencia","definicion":"`secuencia` int(11) NOT NULL COMMENT 'Orden de adici\u00f3n (\u00fanica por versi\u00f3n, validada en PHP)'","tipo":"int(11)","nulo":false},{"nombre":"componente_producto_id","definicion":"`componente_producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"descripcion_tecnica","definicion":"`descripcion_tecnica` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Lo que se muestra en piso: Base para shampoo (LESS)'","tipo":"varchar(150)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(18,6) NOT NULL DEFAULT 0.000000 COMMENT 'Para la cantidad base, en la unidad base del componente'","tipo":"decimal(18,6)","nulo":false},{"nombre":"unidad","definicion":"`unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Unidad base del componente (productos.unidad_medida)'","tipo":"varchar(20)","nulo":false},{"nombre":"es_cantidad_suficiente","definicion":"`es_cantidad_suficiente` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Q.S.'","tipo":"tinyint(1)","nulo":false},{"nombre":"tolerancia_pct","definicion":"`tolerancia_pct` decimal(9,4) DEFAULT NULL COMMENT 'Desviaci\u00f3n permitida en el consumo real'","tipo":"decimal(9,4)","nulo":true},{"nombre":"instruccion","definicion":"`instruccion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_prod_lineas_version","tipo":"index","definicion":"KEY `idx_prod_lineas_version` (`version_id`,`secuencia`)"},{"nombre":"idx_prod_lineas_componente","tipo":"index","definicion":"KEY `idx_prod_lineas_componente` (`componente_producto_id`)"},{"nombre":"idx_prod_lineas_updated","tipo":"index","definicion":"KEY `idx_prod_lineas_updated` (`updated_at`)"},{"nombre":"fk_prod_lineas_componente","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_lineas_componente` FOREIGN KEY (`componente_producto_id`) REFERENCES `productos` (`id`)"},{"nombre":"fk_prod_lineas_version","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_lineas_version` FOREIGN KEY (`version_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE CASCADE"}]},"prod_formula_pasos":{"create":"CREATE TABLE `prod_formula_pasos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `version_id` int(11) NOT NULL,\n  `numero` int(11) NOT NULL COMMENT '\u00danico por versi\u00f3n, validado en PHP',\n  `instruccion` text COLLATE utf8mb4_unicode_ci NOT NULL,\n  `linea_id` int(11) DEFAULT NULL COMMENT 'Paso ligado a la adici\u00f3n de un componente',\n  `duracion_estimada_min` int(11) DEFAULT NULL,\n  `es_critico` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Requiere confirmaci\u00f3n en tableta',\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_prod_pasos_version` (`version_id`,`numero`),\n  KEY `idx_prod_pasos_updated` (`updated_at`),\n  KEY `fk_prod_pasos_linea` (`linea_id`),\n  CONSTRAINT `fk_prod_pasos_linea` FOREIGN KEY (`linea_id`) REFERENCES `prod_formula_lineas` (`id`) ON DELETE SET NULL,\n  CONSTRAINT `fk_prod_pasos_version` FOREIGN KEY (`version_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: procedimiento de una versi\u00f3n (global)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"version_id","definicion":"`version_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"numero","definicion":"`numero` int(11) NOT NULL COMMENT '\u00danico por versi\u00f3n, validado en PHP'","tipo":"int(11)","nulo":false},{"nombre":"instruccion","definicion":"`instruccion` text COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"text","nulo":false},{"nombre":"linea_id","definicion":"`linea_id` int(11) DEFAULT NULL COMMENT 'Paso ligado a la adici\u00f3n de un componente'","tipo":"int(11)","nulo":true},{"nombre":"duracion_estimada_min","definicion":"`duracion_estimada_min` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"es_critico","definicion":"`es_critico` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Requiere confirmaci\u00f3n en tableta'","tipo":"tinyint(1)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_prod_pasos_version","tipo":"index","definicion":"KEY `idx_prod_pasos_version` (`version_id`,`numero`)"},{"nombre":"idx_prod_pasos_updated","tipo":"index","definicion":"KEY `idx_prod_pasos_updated` (`updated_at`)"},{"nombre":"fk_prod_pasos_linea","tipo":"index","definicion":"KEY `fk_prod_pasos_linea` (`linea_id`)"},{"nombre":"fk_prod_pasos_linea","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_pasos_linea` FOREIGN KEY (`linea_id`) REFERENCES `prod_formula_lineas` (`id`) ON DELETE SET NULL"},{"nombre":"fk_prod_pasos_version","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_pasos_version` FOREIGN KEY (`version_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE CASCADE"}]},"prod_formula_sucursal":{"create":"CREATE TABLE `prod_formula_sucursal` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `producto_id` int(11) NOT NULL,\n  `sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'C\u00f3digo del sync: PV, NAYARIT\u2026 (no se llama sucursal: ese nombre es la columna de sync de la nube)',\n  `formula_id` int(11) NOT NULL,\n  `es_predeterminada` tinyint(1) NOT NULL DEFAULT 0,\n  `motivo` text COLLATE utf8mb4_unicode_ci NOT NULL,\n  `vigente_desde` date NOT NULL,\n  `vigente_hasta` date DEFAULT NULL,\n  `activo` tinyint(1) NOT NULL DEFAULT 1,\n  `created_at` datetime NOT NULL DEFAULT current_timestamp(),\n  `created_by` int(11) DEFAULT NULL,\n  `created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_prod_asig_prod_suc` (`producto_id`,`sucursal_codigo`,`activo`),\n  KEY `idx_prod_asig_formula` (`formula_id`),\n  KEY `idx_prod_asig_updated` (`updated_at`),\n  CONSTRAINT `fk_prod_asig_formula` FOREIGN KEY (`formula_id`) REFERENCES `prod_formulas` (`id`),\n  CONSTRAINT `fk_prod_asig_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: asignaci\u00f3n expl\u00edcita de f\u00f3rmula por producto y sucursal (global)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"sucursal_codigo","definicion":"`sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'C\u00f3digo del sync: PV, NAYARIT\u2026 (no se llama sucursal: ese nombre es la columna de sync de la nube)'","tipo":"varchar(100)","nulo":false},{"nombre":"formula_id","definicion":"`formula_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"es_predeterminada","definicion":"`es_predeterminada` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"motivo","definicion":"`motivo` text COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"text","nulo":false},{"nombre":"vigente_desde","definicion":"`vigente_desde` date NOT NULL","tipo":"date","nulo":false},{"nombre":"vigente_hasta","definicion":"`vigente_hasta` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"created_at","definicion":"`created_at` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"created_by","definicion":"`created_by` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"created_by_nombre","definicion":"`created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_prod_asig_prod_suc","tipo":"index","definicion":"KEY `idx_prod_asig_prod_suc` (`producto_id`,`sucursal_codigo`,`activo`)"},{"nombre":"idx_prod_asig_formula","tipo":"index","definicion":"KEY `idx_prod_asig_formula` (`formula_id`)"},{"nombre":"idx_prod_asig_updated","tipo":"index","definicion":"KEY `idx_prod_asig_updated` (`updated_at`)"},{"nombre":"fk_prod_asig_formula","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_asig_formula` FOREIGN KEY (`formula_id`) REFERENCES `prod_formulas` (`id`)"},{"nombre":"fk_prod_asig_producto","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_asig_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"}]},"prod_formula_versiones":{"create":"CREATE TABLE `prod_formula_versiones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `formula_id` int(11) NOT NULL,\n  `numero` int(11) NOT NULL COMMENT 'v1, v2\u2026',\n  `estado` enum('BORRADOR','VIGENTE','OBSOLETA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BORRADOR',\n  `cantidad_base` decimal(18,6) NOT NULL COMMENT 'Tama\u00f1o del lote base: 200, 100, 50',\n  `unidad_base` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'lt' COMMENT 'C\u00f3digo de unidad (lt, kg)',\n  `rendimiento_esperado_pct` decimal(9,4) NOT NULL DEFAULT 100.0000,\n  `tolerancia_total_pct` decimal(9,4) NOT NULL DEFAULT 1.0000 COMMENT 'Desviaci\u00f3n permitida de la suma de l\u00edneas contra la base',\n  `tolerancia_rendimiento_pct` decimal(9,4) NOT NULL DEFAULT 3.0000,\n  `version_origen_id` int(11) DEFAULT NULL,\n  `motivo_cambio` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Obligatorio desde v2',\n  `vigente_desde` datetime DEFAULT NULL,\n  `vigente_hasta` datetime DEFAULT NULL,\n  `aprobada_por` int(11) DEFAULT NULL,\n  `aprobada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `aprobada_en` datetime DEFAULT NULL,\n  `costo_estandar_total` decimal(18,6) DEFAULT NULL COMMENT 'Snapshot al activar, sin IVA',\n  `costo_estandar_unitario` decimal(18,6) DEFAULT NULL COMMENT 'Por unidad base, sin IVA y sin factor indirecto',\n  `costo_incompleto` tinyint(1) NOT NULL DEFAULT 0 COMMENT '1 = alg\u00fan componente sin costo al calcular',\n  `costo_calculado_en` datetime DEFAULT NULL,\n  `created_at` datetime NOT NULL DEFAULT current_timestamp(),\n  `created_by` int(11) DEFAULT NULL,\n  `created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_prod_version_numero` (`formula_id`,`numero`),\n  KEY `idx_prod_version_estado` (`formula_id`,`estado`),\n  KEY `idx_prod_version_updated` (`updated_at`),\n  KEY `fk_prod_version_origen` (`version_origen_id`),\n  CONSTRAINT `fk_prod_version_formula` FOREIGN KEY (`formula_id`) REFERENCES `prod_formulas` (`id`),\n  CONSTRAINT `fk_prod_version_origen` FOREIGN KEY (`version_origen_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE SET NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: versiones de f\u00f3rmula (global)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"formula_id","definicion":"`formula_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"numero","definicion":"`numero` int(11) NOT NULL COMMENT 'v1, v2\u2026'","tipo":"int(11)","nulo":false},{"nombre":"estado","definicion":"`estado` enum('BORRADOR','VIGENTE','OBSOLETA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'BORRADOR'","tipo":"enum('borrador','vigente','obsoleta')","nulo":false},{"nombre":"cantidad_base","definicion":"`cantidad_base` decimal(18,6) NOT NULL COMMENT 'Tama\u00f1o del lote base: 200, 100, 50'","tipo":"decimal(18,6)","nulo":false},{"nombre":"unidad_base","definicion":"`unidad_base` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'lt' COMMENT 'C\u00f3digo de unidad (lt, kg)'","tipo":"varchar(20)","nulo":false},{"nombre":"rendimiento_esperado_pct","definicion":"`rendimiento_esperado_pct` decimal(9,4) NOT NULL DEFAULT 100.0000","tipo":"decimal(9,4)","nulo":false},{"nombre":"tolerancia_total_pct","definicion":"`tolerancia_total_pct` decimal(9,4) NOT NULL DEFAULT 1.0000 COMMENT 'Desviaci\u00f3n permitida de la suma de l\u00edneas contra la base'","tipo":"decimal(9,4)","nulo":false},{"nombre":"tolerancia_rendimiento_pct","definicion":"`tolerancia_rendimiento_pct` decimal(9,4) NOT NULL DEFAULT 3.0000","tipo":"decimal(9,4)","nulo":false},{"nombre":"version_origen_id","definicion":"`version_origen_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"motivo_cambio","definicion":"`motivo_cambio` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Obligatorio desde v2'","tipo":"text","nulo":true},{"nombre":"vigente_desde","definicion":"`vigente_desde` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"vigente_hasta","definicion":"`vigente_hasta` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"aprobada_por","definicion":"`aprobada_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"aprobada_por_nombre","definicion":"`aprobada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"aprobada_en","definicion":"`aprobada_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"costo_estandar_total","definicion":"`costo_estandar_total` decimal(18,6) DEFAULT NULL COMMENT 'Snapshot al activar, sin IVA'","tipo":"decimal(18,6)","nulo":true},{"nombre":"costo_estandar_unitario","definicion":"`costo_estandar_unitario` decimal(18,6) DEFAULT NULL COMMENT 'Por unidad base, sin IVA y sin factor indirecto'","tipo":"decimal(18,6)","nulo":true},{"nombre":"costo_incompleto","definicion":"`costo_incompleto` tinyint(1) NOT NULL DEFAULT 0 COMMENT '1 = alg\u00fan componente sin costo al calcular'","tipo":"tinyint(1)","nulo":false},{"nombre":"costo_calculado_en","definicion":"`costo_calculado_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"created_at","definicion":"`created_at` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"created_by","definicion":"`created_by` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"created_by_nombre","definicion":"`created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_prod_version_numero","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_version_numero` (`formula_id`,`numero`)"},{"nombre":"idx_prod_version_estado","tipo":"index","definicion":"KEY `idx_prod_version_estado` (`formula_id`,`estado`)"},{"nombre":"idx_prod_version_updated","tipo":"index","definicion":"KEY `idx_prod_version_updated` (`updated_at`)"},{"nombre":"fk_prod_version_origen","tipo":"index","definicion":"KEY `fk_prod_version_origen` (`version_origen_id`)"},{"nombre":"fk_prod_version_formula","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_version_formula` FOREIGN KEY (`formula_id`) REFERENCES `prod_formulas` (`id`)"},{"nombre":"fk_prod_version_origen","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_version_origen` FOREIGN KEY (`version_origen_id`) REFERENCES `prod_formula_versiones` (`id`) ON DELETE SET NULL"}]},"prod_lotes":{"create":"CREATE TABLE `prod_lotes` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `numero_lote` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '{CLAVE}-{SUC}-{AAMMDD}-{NN}',\n  `orden_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cantidad` decimal(18,6) NOT NULL,\n  `unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `fecha_fabricacion` date NOT NULL,\n  `fecha_caducidad` date DEFAULT NULL,\n  `estado_calidad` enum('CUARENTENA','LIBERADO','RECHAZADO') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CUARENTENA',\n  `liberado_por` int(11) DEFAULT NULL,\n  `liberado_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `liberado_en` datetime DEFAULT NULL,\n  `costo_unitario` decimal(18,6) DEFAULT NULL,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_prod_lotes_numero` (`numero_lote`),\n  UNIQUE KEY `uk_prod_lotes_orden` (`orden_id`),\n  KEY `idx_prod_lotes_producto` (`producto_id`,`fecha_fabricacion`),\n  KEY `idx_prod_lotes_updated` (`updated_at`),\n  CONSTRAINT `fk_prod_lotes_orden` FOREIGN KEY (`orden_id`) REFERENCES `prod_ordenes` (`id`),\n  CONSTRAINT `fk_prod_lotes_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: lotes fabricados (trazabilidad; la cuarentena no bloquea la venta)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"numero_lote","definicion":"`numero_lote` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '{CLAVE}-{SUC}-{AAMMDD}-{NN}'","tipo":"varchar(40)","nulo":false},{"nombre":"orden_id","definicion":"`orden_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"sucursal_codigo","definicion":"`sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(18,6) NOT NULL","tipo":"decimal(18,6)","nulo":false},{"nombre":"unidad","definicion":"`unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"fecha_fabricacion","definicion":"`fecha_fabricacion` date NOT NULL","tipo":"date","nulo":false},{"nombre":"fecha_caducidad","definicion":"`fecha_caducidad` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"estado_calidad","definicion":"`estado_calidad` enum('CUARENTENA','LIBERADO','RECHAZADO') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CUARENTENA'","tipo":"enum('cuarentena','liberado','rechazado')","nulo":false},{"nombre":"liberado_por","definicion":"`liberado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"liberado_por_nombre","definicion":"`liberado_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"liberado_en","definicion":"`liberado_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"costo_unitario","definicion":"`costo_unitario` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_prod_lotes_numero","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_lotes_numero` (`numero_lote`)"},{"nombre":"uk_prod_lotes_orden","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_lotes_orden` (`orden_id`)"},{"nombre":"idx_prod_lotes_producto","tipo":"index","definicion":"KEY `idx_prod_lotes_producto` (`producto_id`,`fecha_fabricacion`)"},{"nombre":"idx_prod_lotes_updated","tipo":"index","definicion":"KEY `idx_prod_lotes_updated` (`updated_at`)"},{"nombre":"fk_prod_lotes_orden","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_lotes_orden` FOREIGN KEY (`orden_id`) REFERENCES `prod_ordenes` (`id`)"},{"nombre":"fk_prod_lotes_producto","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_lotes_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"}]},"prod_lote_resultados":{"create":"CREATE TABLE `prod_lote_resultados` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `lote_id` int(11) NOT NULL,\n  `especificacion_id` int(11) NOT NULL,\n  `valor_numerico` decimal(18,6) DEFAULT NULL,\n  `valor_texto` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `conforme` tinyint(1) NOT NULL,\n  `capturado_por` int(11) DEFAULT NULL,\n  `capturado_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `capturado_en` datetime NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_prod_resultado` (`lote_id`,`especificacion_id`),\n  KEY `idx_prod_resultados_updated` (`updated_at`),\n  KEY `fk_prod_resultados_espec` (`especificacion_id`),\n  CONSTRAINT `fk_prod_resultados_espec` FOREIGN KEY (`especificacion_id`) REFERENCES `prod_formula_especificaciones` (`id`),\n  CONSTRAINT `fk_prod_resultados_lote` FOREIGN KEY (`lote_id`) REFERENCES `prod_lotes` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: resultados de calidad por lote'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"lote_id","definicion":"`lote_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"especificacion_id","definicion":"`especificacion_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"valor_numerico","definicion":"`valor_numerico` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"valor_texto","definicion":"`valor_texto` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(200)","nulo":true},{"nombre":"conforme","definicion":"`conforme` tinyint(1) NOT NULL","tipo":"tinyint(1)","nulo":false},{"nombre":"capturado_por","definicion":"`capturado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"capturado_por_nombre","definicion":"`capturado_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"capturado_en","definicion":"`capturado_en` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_prod_resultado","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_resultado` (`lote_id`,`especificacion_id`)"},{"nombre":"idx_prod_resultados_updated","tipo":"index","definicion":"KEY `idx_prod_resultados_updated` (`updated_at`)"},{"nombre":"fk_prod_resultados_espec","tipo":"index","definicion":"KEY `fk_prod_resultados_espec` (`especificacion_id`)"},{"nombre":"fk_prod_resultados_espec","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_resultados_espec` FOREIGN KEY (`especificacion_id`) REFERENCES `prod_formula_especificaciones` (`id`)"},{"nombre":"fk_prod_resultados_lote","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_resultados_lote` FOREIGN KEY (`lote_id`) REFERENCES `prod_lotes` (`id`) ON DELETE CASCADE"}]},"prod_ordenes":{"create":"CREATE TABLE `prod_ordenes` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'OP-PV-2026-000419 (lo asigna el servidor de la sucursal)',\n  `folio_provisional` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'T-{dispositivo}-{seq} si se cre\u00f3 sin conexi\u00f3n (tableta)',\n  `client_uuid` char(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Idempotencia desde tableta',\n  `sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `formula_id` int(11) NOT NULL,\n  `formula_version_id` int(11) DEFAULT NULL COMMENT 'Se congela al iniciar',\n  `origen_formula` enum('GLOBAL','ASIGNADA') COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cantidad_planeada` decimal(18,6) NOT NULL,\n  `unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `factor_escala` decimal(18,8) DEFAULT NULL COMMENT 'cantidad_planeada \/ cantidad_base',\n  `cantidad_obtenida` decimal(18,6) DEFAULT NULL,\n  `rendimiento_pct` decimal(9,4) DEFAULT NULL,\n  `merma` decimal(18,6) DEFAULT NULL,\n  `estado` enum('PLANEADA','EN_PROCESO','TERMINADA','POR_CONCILIAR','CANCELADA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PLANEADA',\n  `orden_padre_id` int(11) DEFAULT NULL COMMENT 'Sub-orden de un intermedio faltante',\n  `origen` enum('WEB','TABLETA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WEB',\n  `dispositivo_id` int(11) DEFAULT NULL,\n  `fecha_programada` date DEFAULT NULL,\n  `iniciada_en` datetime DEFAULT NULL,\n  `iniciada_por` int(11) DEFAULT NULL,\n  `iniciada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `terminada_en` datetime DEFAULT NULL,\n  `terminada_por` int(11) DEFAULT NULL,\n  `terminada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cancelada_en` datetime DEFAULT NULL,\n  `cancelada_por` int(11) DEFAULT NULL,\n  `cancelada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `motivo_cancelacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `costo_total_real` decimal(18,6) DEFAULT NULL,\n  `costo_unitario_real` decimal(18,6) DEFAULT NULL,\n  `costo_incompleto` tinyint(1) NOT NULL DEFAULT 0,\n  `tiene_incidencia` tinyint(1) NOT NULL DEFAULT 0,\n  `lock_version` int(11) NOT NULL DEFAULT 0 COMMENT 'Bloqueo optimista',\n  `created_at` datetime NOT NULL DEFAULT current_timestamp(),\n  `created_by` int(11) DEFAULT NULL,\n  `created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_prod_ordenes_folio` (`folio`),\n  UNIQUE KEY `uk_prod_ordenes_uuid` (`client_uuid`),\n  KEY `idx_prod_ordenes_estado` (`sucursal_codigo`,`estado`),\n  KEY `idx_prod_ordenes_producto` (`producto_id`,`estado`),\n  KEY `idx_prod_ordenes_version` (`formula_version_id`),\n  KEY `idx_prod_ordenes_padre` (`orden_padre_id`),\n  KEY `idx_prod_ordenes_updated` (`updated_at`),\n  KEY `fk_prod_ordenes_formula` (`formula_id`),\n  CONSTRAINT `fk_prod_ordenes_formula` FOREIGN KEY (`formula_id`) REFERENCES `prod_formulas` (`id`),\n  CONSTRAINT `fk_prod_ordenes_padre` FOREIGN KEY (`orden_padre_id`) REFERENCES `prod_ordenes` (`id`),\n  CONSTRAINT `fk_prod_ordenes_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`),\n  CONSTRAINT `fk_prod_ordenes_version` FOREIGN KEY (`formula_version_id`) REFERENCES `prod_formula_versiones` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: \u00f3rdenes de producci\u00f3n (por sucursal)'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'OP-PV-2026-000419 (lo asigna el servidor de la sucursal)'","tipo":"varchar(30)","nulo":true},{"nombre":"folio_provisional","definicion":"`folio_provisional` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'T-{dispositivo}-{seq} si se cre\u00f3 sin conexi\u00f3n (tableta)'","tipo":"varchar(40)","nulo":true},{"nombre":"client_uuid","definicion":"`client_uuid` char(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Idempotencia desde tableta'","tipo":"char(36)","nulo":true},{"nombre":"sucursal_codigo","definicion":"`sucursal_codigo` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"formula_id","definicion":"`formula_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"formula_version_id","definicion":"`formula_version_id` int(11) DEFAULT NULL COMMENT 'Se congela al iniciar'","tipo":"int(11)","nulo":true},{"nombre":"origen_formula","definicion":"`origen_formula` enum('GLOBAL','ASIGNADA') COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"enum('global','asignada')","nulo":true},{"nombre":"cantidad_planeada","definicion":"`cantidad_planeada` decimal(18,6) NOT NULL","tipo":"decimal(18,6)","nulo":false},{"nombre":"unidad","definicion":"`unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"factor_escala","definicion":"`factor_escala` decimal(18,8) DEFAULT NULL COMMENT 'cantidad_planeada \/ cantidad_base'","tipo":"decimal(18,8)","nulo":true},{"nombre":"cantidad_obtenida","definicion":"`cantidad_obtenida` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"rendimiento_pct","definicion":"`rendimiento_pct` decimal(9,4) DEFAULT NULL","tipo":"decimal(9,4)","nulo":true},{"nombre":"merma","definicion":"`merma` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('PLANEADA','EN_PROCESO','TERMINADA','POR_CONCILIAR','CANCELADA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PLANEADA'","tipo":"enum('planeada','en_proceso','terminada','por_conciliar','cancelada')","nulo":false},{"nombre":"orden_padre_id","definicion":"`orden_padre_id` int(11) DEFAULT NULL COMMENT 'Sub-orden de un intermedio faltante'","tipo":"int(11)","nulo":true},{"nombre":"origen","definicion":"`origen` enum('WEB','TABLETA') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WEB'","tipo":"enum('web','tableta')","nulo":false},{"nombre":"dispositivo_id","definicion":"`dispositivo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_programada","definicion":"`fecha_programada` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"iniciada_en","definicion":"`iniciada_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"iniciada_por","definicion":"`iniciada_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"iniciada_por_nombre","definicion":"`iniciada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"terminada_en","definicion":"`terminada_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"terminada_por","definicion":"`terminada_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"terminada_por_nombre","definicion":"`terminada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"cancelada_en","definicion":"`cancelada_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"cancelada_por","definicion":"`cancelada_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"cancelada_por_nombre","definicion":"`cancelada_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"motivo_cancelacion","definicion":"`motivo_cancelacion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"costo_total_real","definicion":"`costo_total_real` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"costo_unitario_real","definicion":"`costo_unitario_real` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"costo_incompleto","definicion":"`costo_incompleto` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"tiene_incidencia","definicion":"`tiene_incidencia` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"lock_version","definicion":"`lock_version` int(11) NOT NULL DEFAULT 0 COMMENT 'Bloqueo optimista'","tipo":"int(11)","nulo":false},{"nombre":"created_at","definicion":"`created_at` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"created_by","definicion":"`created_by` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"created_by_nombre","definicion":"`created_by_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_prod_ordenes_folio","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_ordenes_folio` (`folio`)"},{"nombre":"uk_prod_ordenes_uuid","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_ordenes_uuid` (`client_uuid`)"},{"nombre":"idx_prod_ordenes_estado","tipo":"index","definicion":"KEY `idx_prod_ordenes_estado` (`sucursal_codigo`,`estado`)"},{"nombre":"idx_prod_ordenes_producto","tipo":"index","definicion":"KEY `idx_prod_ordenes_producto` (`producto_id`,`estado`)"},{"nombre":"idx_prod_ordenes_version","tipo":"index","definicion":"KEY `idx_prod_ordenes_version` (`formula_version_id`)"},{"nombre":"idx_prod_ordenes_padre","tipo":"index","definicion":"KEY `idx_prod_ordenes_padre` (`orden_padre_id`)"},{"nombre":"idx_prod_ordenes_updated","tipo":"index","definicion":"KEY `idx_prod_ordenes_updated` (`updated_at`)"},{"nombre":"fk_prod_ordenes_formula","tipo":"index","definicion":"KEY `fk_prod_ordenes_formula` (`formula_id`)"},{"nombre":"fk_prod_ordenes_formula","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_ordenes_formula` FOREIGN KEY (`formula_id`) REFERENCES `prod_formulas` (`id`)"},{"nombre":"fk_prod_ordenes_padre","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_ordenes_padre` FOREIGN KEY (`orden_padre_id`) REFERENCES `prod_ordenes` (`id`)"},{"nombre":"fk_prod_ordenes_producto","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_ordenes_producto` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"},{"nombre":"fk_prod_ordenes_version","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_ordenes_version` FOREIGN KEY (`formula_version_id`) REFERENCES `prod_formula_versiones` (`id`)"}]},"prod_orden_consumos":{"create":"CREATE TABLE `prod_orden_consumos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `orden_id` int(11) NOT NULL,\n  `formula_linea_id` int(11) DEFAULT NULL COMMENT 'NULL = consumo no planeado',\n  `secuencia` int(11) NOT NULL,\n  `componente_producto_id` int(11) NOT NULL,\n  `descripcion_tecnica` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cantidad_teorica` decimal(18,6) NOT NULL COMMENT 'l\u00ednea \u00d7 factor de escala',\n  `cantidad_real` decimal(18,6) DEFAULT NULL COMMENT 'Por omisi\u00f3n la te\u00f3rica',\n  `unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `tolerancia_pct` decimal(9,4) DEFAULT NULL,\n  `costo_unitario` decimal(18,6) DEFAULT NULL COMMENT 'Snapshot sin IVA al terminar',\n  `costo_total` decimal(18,6) DEFAULT NULL,\n  `lote_componente_id` int(11) DEFAULT NULL COMMENT 'Lote del intermedio consumido (informativo)',\n  `motivo_ajuste` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ajustado_por` int(11) DEFAULT NULL,\n  `ajustado_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `movimiento_inventario_id` int(11) DEFAULT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_prod_consumos_orden` (`orden_id`,`secuencia`),\n  KEY `idx_prod_consumos_componente` (`componente_producto_id`),\n  KEY `idx_prod_consumos_updated` (`updated_at`),\n  CONSTRAINT `fk_prod_consumos_componente` FOREIGN KEY (`componente_producto_id`) REFERENCES `productos` (`id`),\n  CONSTRAINT `fk_prod_consumos_orden` FOREIGN KEY (`orden_id`) REFERENCES `prod_ordenes` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: consumo te\u00f3rico y real por orden'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"orden_id","definicion":"`orden_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"formula_linea_id","definicion":"`formula_linea_id` int(11) DEFAULT NULL COMMENT 'NULL = consumo no planeado'","tipo":"int(11)","nulo":true},{"nombre":"secuencia","definicion":"`secuencia` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"componente_producto_id","definicion":"`componente_producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"descripcion_tecnica","definicion":"`descripcion_tecnica` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(150)","nulo":true},{"nombre":"cantidad_teorica","definicion":"`cantidad_teorica` decimal(18,6) NOT NULL COMMENT 'l\u00ednea \u00d7 factor de escala'","tipo":"decimal(18,6)","nulo":false},{"nombre":"cantidad_real","definicion":"`cantidad_real` decimal(18,6) DEFAULT NULL COMMENT 'Por omisi\u00f3n la te\u00f3rica'","tipo":"decimal(18,6)","nulo":true},{"nombre":"unidad","definicion":"`unidad` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"tolerancia_pct","definicion":"`tolerancia_pct` decimal(9,4) DEFAULT NULL","tipo":"decimal(9,4)","nulo":true},{"nombre":"costo_unitario","definicion":"`costo_unitario` decimal(18,6) DEFAULT NULL COMMENT 'Snapshot sin IVA al terminar'","tipo":"decimal(18,6)","nulo":true},{"nombre":"costo_total","definicion":"`costo_total` decimal(18,6) DEFAULT NULL","tipo":"decimal(18,6)","nulo":true},{"nombre":"lote_componente_id","definicion":"`lote_componente_id` int(11) DEFAULT NULL COMMENT 'Lote del intermedio consumido (informativo)'","tipo":"int(11)","nulo":true},{"nombre":"motivo_ajuste","definicion":"`motivo_ajuste` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"ajustado_por","definicion":"`ajustado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"ajustado_por_nombre","definicion":"`ajustado_por_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"movimiento_inventario_id","definicion":"`movimiento_inventario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_prod_consumos_orden","tipo":"index","definicion":"KEY `idx_prod_consumos_orden` (`orden_id`,`secuencia`)"},{"nombre":"idx_prod_consumos_componente","tipo":"index","definicion":"KEY `idx_prod_consumos_componente` (`componente_producto_id`)"},{"nombre":"idx_prod_consumos_updated","tipo":"index","definicion":"KEY `idx_prod_consumos_updated` (`updated_at`)"},{"nombre":"fk_prod_consumos_componente","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_consumos_componente` FOREIGN KEY (`componente_producto_id`) REFERENCES `productos` (`id`)"},{"nombre":"fk_prod_consumos_orden","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_consumos_orden` FOREIGN KEY (`orden_id`) REFERENCES `prod_ordenes` (`id`) ON DELETE CASCADE"}]},"prod_orden_eventos":{"create":"CREATE TABLE `prod_orden_eventos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `orden_id` int(11) DEFAULT NULL,\n  `client_uuid` char(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Idempotencia del evento (tableta)',\n  `tipo` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'CREADA, INICIADA, PASO_CONFIRMADO, CONSUMO_AJUSTADO, TERMINADA, CANCELADA, SUBORDEN_CREADA, SYNC_CONFLICTO',\n  `payload` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'JSON',\n  `usuario_id` int(11) DEFAULT NULL,\n  `usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `dispositivo_id` int(11) DEFAULT NULL,\n  `ocurrido_en` datetime NOT NULL COMMENT 'Hora del dispositivo',\n  `registrado_en` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Hora del servidor',\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_prod_eventos_uuid` (`client_uuid`),\n  KEY `idx_prod_eventos_orden` (`orden_id`,`ocurrido_en`),\n  KEY `idx_prod_eventos_updated` (`updated_at`),\n  CONSTRAINT `fk_prod_eventos_orden` FOREIGN KEY (`orden_id`) REFERENCES `prod_ordenes` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: bit\u00e1cora de eventos de \u00f3rdenes'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"orden_id","definicion":"`orden_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"client_uuid","definicion":"`client_uuid` char(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Idempotencia del evento (tableta)'","tipo":"char(36)","nulo":true},{"nombre":"tipo","definicion":"`tipo` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'CREADA, INICIADA, PASO_CONFIRMADO, CONSUMO_AJUSTADO, TERMINADA, CANCELADA, SUBORDEN_CREADA, SYNC_CONFLICTO'","tipo":"varchar(30)","nulo":false},{"nombre":"payload","definicion":"`payload` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'JSON'","tipo":"text","nulo":true},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"dispositivo_id","definicion":"`dispositivo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"ocurrido_en","definicion":"`ocurrido_en` datetime NOT NULL COMMENT 'Hora del dispositivo'","tipo":"datetime","nulo":false},{"nombre":"registrado_en","definicion":"`registrado_en` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Hora del servidor'","tipo":"datetime","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_prod_eventos_uuid","tipo":"unique","definicion":"UNIQUE KEY `uk_prod_eventos_uuid` (`client_uuid`)"},{"nombre":"idx_prod_eventos_orden","tipo":"index","definicion":"KEY `idx_prod_eventos_orden` (`orden_id`,`ocurrido_en`)"},{"nombre":"idx_prod_eventos_updated","tipo":"index","definicion":"KEY `idx_prod_eventos_updated` (`updated_at`)"},{"nombre":"fk_prod_eventos_orden","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_eventos_orden` FOREIGN KEY (`orden_id`) REFERENCES `prod_ordenes` (`id`)"}]},"prod_tableta_sesiones":{"create":"CREATE TABLE `prod_tableta_sesiones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `token_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `dispositivo_id` int(11) NOT NULL,\n  `inicio` datetime NOT NULL DEFAULT current_timestamp(),\n  `ultimo_uso` datetime NOT NULL DEFAULT current_timestamp(),\n  `cerrada_en` datetime DEFAULT NULL,\n  `activa` tinyint(1) NOT NULL DEFAULT 1,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_prod_tses_token` (`token_hash`),\n  KEY `idx_prod_tses_usuario` (`usuario_id`),\n  KEY `idx_prod_tses_updated` (`updated_at`),\n  KEY `fk_prod_tses_dispositivo` (`dispositivo_id`),\n  CONSTRAINT `fk_prod_tses_dispositivo` FOREIGN KEY (`dispositivo_id`) REFERENCES `prod_dispositivos` (`id`),\n  CONSTRAINT `fk_prod_tses_usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Producci\u00f3n: sesiones de t\u00e9cnicos en tabletas'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"token_hash","definicion":"`token_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"char(64)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"dispositivo_id","definicion":"`dispositivo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"inicio","definicion":"`inicio` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"ultimo_uso","definicion":"`ultimo_uso` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"cerrada_en","definicion":"`cerrada_en` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"activa","definicion":"`activa` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_prod_tses_token","tipo":"index","definicion":"KEY `idx_prod_tses_token` (`token_hash`)"},{"nombre":"idx_prod_tses_usuario","tipo":"index","definicion":"KEY `idx_prod_tses_usuario` (`usuario_id`)"},{"nombre":"idx_prod_tses_updated","tipo":"index","definicion":"KEY `idx_prod_tses_updated` (`updated_at`)"},{"nombre":"fk_prod_tses_dispositivo","tipo":"index","definicion":"KEY `fk_prod_tses_dispositivo` (`dispositivo_id`)"},{"nombre":"fk_prod_tses_dispositivo","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_tses_dispositivo` FOREIGN KEY (`dispositivo_id`) REFERENCES `prod_dispositivos` (`id`)"},{"nombre":"fk_prod_tses_usuario","tipo":"foreign","definicion":"CONSTRAINT `fk_prod_tses_usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"}]},"proveedores":{"create":"CREATE TABLE `proveedores` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `contacto` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `telefono` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `direccion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `rfc` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `tipo_proveedor` enum('comercial','servicios') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'comercial',\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `fecha_actualizacion` datetime DEFAULT NULL ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `dias_credito` int(11) NOT NULL DEFAULT 0,\n  `centro_default` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `categoria_default_id` int(11) DEFAULT NULL,\n  `banco` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cuenta_clabe` varchar(25) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_nombre` (`nombre`(191)),\n  KEY `idx_proveedores_tipo` (`tipo_proveedor`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"contacto","definicion":"`contacto` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"telefono","definicion":"`telefono` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"email","definicion":"`email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"direccion","definicion":"`direccion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"rfc","definicion":"`rfc` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"tipo_proveedor","definicion":"`tipo_proveedor` enum('comercial','servicios') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'comercial'","tipo":"enum('comercial','servicios')","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` datetime DEFAULT NULL ON UPDATE current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"dias_credito","definicion":"`dias_credito` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"centro_default","definicion":"`centro_default` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"categoria_default_id","definicion":"`categoria_default_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"banco","definicion":"`banco` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"cuenta_clabe","definicion":"`cuenta_clabe` varchar(25) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(25)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_nombre","tipo":"index","definicion":"KEY `idx_nombre` (`nombre`(191))"},{"nombre":"idx_proveedores_tipo","tipo":"index","definicion":"KEY `idx_proveedores_tipo` (`tipo_proveedor`)"}]},"rangos_flete":{"create":"CREATE TABLE `rangos_flete` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `distancia_desde` decimal(8,2) NOT NULL DEFAULT 0.00 COMMENT 'Distancia m\u251c\u00a1nima en km',\n  `distancia_hasta` decimal(8,2) NOT NULL COMMENT 'Distancia m\u251c\u00edxima en km',\n  `vehiculo_id` int(11) DEFAULT NULL COMMENT 'ID del veh\u251c\u00a1culo asignado',\n  `costo` decimal(10,2) NOT NULL COMMENT 'Costo del flete',\n  `activo` tinyint(4) DEFAULT 1 COMMENT 'Estado: 1=Activo, 0=Inactivo',\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_distancia` (`distancia_desde`,`distancia_hasta`),\n  KEY `idx_vehiculo` (`vehiculo_id`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `rangos_flete_ibfk_1` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`) ON DELETE SET NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"distancia_desde","definicion":"`distancia_desde` decimal(8,2) NOT NULL DEFAULT 0.00 COMMENT 'Distancia m\u251c\u00a1nima en km'","tipo":"decimal(8,2)","nulo":false},{"nombre":"distancia_hasta","definicion":"`distancia_hasta` decimal(8,2) NOT NULL COMMENT 'Distancia m\u251c\u00edxima en km'","tipo":"decimal(8,2)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) DEFAULT NULL COMMENT 'ID del veh\u251c\u00a1culo asignado'","tipo":"int(11)","nulo":true},{"nombre":"costo","definicion":"`costo` decimal(10,2) NOT NULL COMMENT 'Costo del flete'","tipo":"decimal(10,2)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1 COMMENT 'Estado: 1=Activo, 0=Inactivo'","tipo":"tinyint(4)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_distancia","tipo":"index","definicion":"KEY `idx_distancia` (`distancia_desde`,`distancia_hasta`)"},{"nombre":"idx_vehiculo","tipo":"index","definicion":"KEY `idx_vehiculo` (`vehiculo_id`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"rangos_flete_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `rangos_flete_ibfk_1` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`) ON DELETE SET NULL"}]},"reglas_asignacion":{"create":"CREATE TABLE `reglas_asignacion` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `inductor` enum('ventas','empleados','porcentaje') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `vigente_desde` char(7) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `vigente_hasta` char(7) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activa` tinyint(1) NOT NULL DEFAULT 1,\n  `creado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_regasig_activa` (`activa`),\n  KEY `idx_regasig_vigencia` (`vigente_desde`,`vigente_hasta`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(120)","nulo":false},{"nombre":"inductor","definicion":"`inductor` enum('ventas','empleados','porcentaje') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('ventas','empleados','porcentaje')","nulo":false},{"nombre":"vigente_desde","definicion":"`vigente_desde` char(7) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"char(7)","nulo":false},{"nombre":"vigente_hasta","definicion":"`vigente_hasta` char(7) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"char(7)","nulo":true},{"nombre":"activa","definicion":"`activa` tinyint(1) NOT NULL DEFAULT 1","tipo":"tinyint(1)","nulo":false},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_regasig_activa","tipo":"index","definicion":"KEY `idx_regasig_activa` (`activa`)"},{"nombre":"idx_regasig_vigencia","tipo":"index","definicion":"KEY `idx_regasig_vigencia` (`vigente_desde`,`vigente_hasta`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"regla_asignacion_categorias":{"create":"CREATE TABLE `regla_asignacion_categorias` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `regla_id` int(11) NOT NULL,\n  `categoria_id` int(11) NOT NULL,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_regasigcat` (`regla_id`,`categoria_id`),\n  KEY `idx_regasigcat_categoria` (`categoria_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"regla_id","definicion":"`regla_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"categoria_id","definicion":"`categoria_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_regasigcat","tipo":"unique","definicion":"UNIQUE KEY `uq_regasigcat` (`regla_id`,`categoria_id`)"},{"nombre":"idx_regasigcat_categoria","tipo":"index","definicion":"KEY `idx_regasigcat_categoria` (`categoria_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"regla_asignacion_porcentajes":{"create":"CREATE TABLE `regla_asignacion_porcentajes` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `regla_id` int(11) NOT NULL,\n  `centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `porcentaje` decimal(5,2) NOT NULL DEFAULT 0.00,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_regasigpct` (`regla_id`,`centro`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"regla_id","definicion":"`regla_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"centro","definicion":"`centro` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false},{"nombre":"porcentaje","definicion":"`porcentaje` decimal(5,2) NOT NULL DEFAULT 0.00","tipo":"decimal(5,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_regasigpct","tipo":"unique","definicion":"UNIQUE KEY `uq_regasigpct` (`regla_id`,`centro`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"retiros_efectivo":{"create":"CREATE TABLE `retiros_efectivo` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `caja_id` int(11) NOT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `monto` decimal(12,2) NOT NULL,\n  `motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_retiro` datetime DEFAULT current_timestamp(),\n  `created_at` datetime DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `usuario_autorizador_id` int(11) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `idx_caja_fecha` (`caja_id`,`fecha_retiro`),\n  KEY `idx_usuario` (`usuario_id`),\n  KEY `idx_nombre_pc` (`nombre_pc`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `retiros_efectivo_ibfk_1` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`),\n  CONSTRAINT `retiros_efectivo_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"caja_id","definicion":"`caja_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"monto","definicion":"`monto` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"motivo","definicion":"`motivo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"nombre_pc","definicion":"`nombre_pc` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fecha_retiro","definicion":"`fecha_retiro` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"created_at","definicion":"`created_at` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"usuario_autorizador_id","definicion":"`usuario_autorizador_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_caja_fecha","tipo":"index","definicion":"KEY `idx_caja_fecha` (`caja_id`,`fecha_retiro`)"},{"nombre":"idx_usuario","tipo":"index","definicion":"KEY `idx_usuario` (`usuario_id`)"},{"nombre":"idx_nombre_pc","tipo":"index","definicion":"KEY `idx_nombre_pc` (`nombre_pc`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"retiros_efectivo_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `retiros_efectivo_ibfk_1` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`)"},{"nombre":"retiros_efectivo_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `retiros_efectivo_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"}]},"roles":{"create":"CREATE TABLE `roles` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `nivel` int(11) DEFAULT 1,\n  `activo` tinyint(4) DEFAULT 1,\n  `necesita_almacen` tinyint(1) DEFAULT 0,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `nombre` (`nombre`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"descripcion","definicion":"`descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"nivel","definicion":"`nivel` int(11) DEFAULT 1","tipo":"int(11)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"necesita_almacen","definicion":"`necesita_almacen` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"nombre","tipo":"unique","definicion":"UNIQUE KEY `nombre` (`nombre`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"rol_permisos":{"create":"CREATE TABLE `rol_permisos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `rol_id` int(11) NOT NULL,\n  `permiso_id` int(11) NOT NULL,\n  `fecha_asignacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_rol_permiso` (`rol_id`,`permiso_id`),\n  KEY `permiso_id` (`permiso_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `rol_permisos_ibfk_1` FOREIGN KEY (`rol_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `rol_permisos_ibfk_2` FOREIGN KEY (`permiso_id`) REFERENCES `permisos` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"rol_id","definicion":"`rol_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"permiso_id","definicion":"`permiso_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"fecha_asignacion","definicion":"`fecha_asignacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_rol_permiso","tipo":"unique","definicion":"UNIQUE KEY `unique_rol_permiso` (`rol_id`,`permiso_id`)"},{"nombre":"permiso_id","tipo":"index","definicion":"KEY `permiso_id` (`permiso_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"rol_permisos_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `rol_permisos_ibfk_1` FOREIGN KEY (`rol_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE"},{"nombre":"rol_permisos_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `rol_permisos_ibfk_2` FOREIGN KEY (`permiso_id`) REFERENCES `permisos` (`id`) ON DELETE CASCADE"}]},"rutas_entrega":{"create":"CREATE TABLE `rutas_entrega` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `vehiculo_id` int(11) DEFAULT NULL,\n  `fecha` date NOT NULL,\n  `estado` enum('pendiente','en_curso','completada') COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente',\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_fecha` (`fecha`),\n  KEY `idx_estado` (`estado`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_rutas_vehiculo` (`vehiculo_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha","definicion":"`fecha` date NOT NULL","tipo":"date","nulo":false},{"nombre":"estado","definicion":"`estado` enum('pendiente','en_curso','completada') COLLATE utf8mb4_unicode_ci DEFAULT 'pendiente'","tipo":"enum('pendiente','en_curso','completada')","nulo":true},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha`)"},{"nombre":"idx_estado","tipo":"index","definicion":"KEY `idx_estado` (`estado`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_rutas_vehiculo","tipo":"index","definicion":"KEY `idx_rutas_vehiculo` (`vehiculo_id`)"}]},"ruta_pedidos":{"create":"CREATE TABLE `ruta_pedidos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `ruta_id` int(11) NOT NULL,\n  `venta_id` int(11) NOT NULL,\n  `orden` int(11) NOT NULL DEFAULT 0,\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_venta_ruta` (`venta_id`),\n  KEY `idx_ruta_orden` (`ruta_id`,`orden`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `ruta_pedidos_ibfk_1` FOREIGN KEY (`ruta_id`) REFERENCES `rutas_entrega` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `ruta_pedidos_ibfk_2` FOREIGN KEY (`venta_id`) REFERENCES `ventas` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"ruta_id","definicion":"`ruta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"orden","definicion":"`orden` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_venta_ruta","tipo":"unique","definicion":"UNIQUE KEY `unique_venta_ruta` (`venta_id`)"},{"nombre":"idx_ruta_orden","tipo":"index","definicion":"KEY `idx_ruta_orden` (`ruta_id`,`orden`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"ruta_pedidos_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `ruta_pedidos_ibfk_1` FOREIGN KEY (`ruta_id`) REFERENCES `rutas_entrega` (`id`) ON DELETE CASCADE"},{"nombre":"ruta_pedidos_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `ruta_pedidos_ibfk_2` FOREIGN KEY (`venta_id`) REFERENCES `ventas` (`id`) ON DELETE CASCADE"}]},"sesiones":{"create":"CREATE TABLE `sesiones` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `usuario_id` int(11) NOT NULL,\n  `session_token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `user_agent` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_inicio` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actividad` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `activa` tinyint(4) DEFAULT 1,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `session_token` (`session_token`(191)),\n  KEY `usuario_id` (`usuario_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `sesiones_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"session_token","definicion":"`session_token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"ip_address","definicion":"`ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(45)","nulo":true},{"nombre":"user_agent","definicion":"`user_agent` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha_inicio","definicion":"`fecha_inicio` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actividad","definicion":"`fecha_actividad` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"activa","definicion":"`activa` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"session_token","tipo":"unique","definicion":"UNIQUE KEY `session_token` (`session_token`(191))"},{"nombre":"usuario_id","tipo":"index","definicion":"KEY `usuario_id` (`usuario_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"sesiones_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `sesiones_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"}]},"sesiones_app":{"create":"CREATE TABLE `sesiones_app` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `usuario_id` int(11) NOT NULL,\n  `token` varchar(128) NOT NULL,\n  `created_at` datetime DEFAULT current_timestamp(),\n  `expires_at` datetime NOT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `token` (`token`),\n  KEY `idx_token` (`token`),\n  KEY `idx_usuario` (`usuario_id`),\n  CONSTRAINT `sesiones_app_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"token","definicion":"`token` varchar(128) NOT NULL","tipo":"varchar(128)","nulo":false},{"nombre":"created_at","definicion":"`created_at` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"expires_at","definicion":"`expires_at` datetime NOT NULL","tipo":"datetime","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"token","tipo":"unique","definicion":"UNIQUE KEY `token` (`token`)"},{"nombre":"idx_token","tipo":"index","definicion":"KEY `idx_token` (`token`)"},{"nombre":"idx_usuario","tipo":"index","definicion":"KEY `idx_usuario` (`usuario_id`)"},{"nombre":"sesiones_app_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `sesiones_app_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE"}]},"subcategorias":{"create":"CREATE TABLE `subcategorias` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `categoria2_id` int(11) NOT NULL,\n  `nombre` varchar(150) NOT NULL,\n  `activo` tinyint(1) DEFAULT 1,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `fecha_actualizacion` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_categoria2` (`categoria2_id`),\n  KEY `idx_activo` (`activo`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"categoria2_id","definicion":"`categoria2_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(150) NOT NULL","tipo":"varchar(150)","nulo":false},{"nombre":"activo","definicion":"`activo` tinyint(1) DEFAULT 1","tipo":"tinyint(1)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"datetime","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_categoria2","tipo":"index","definicion":"KEY `idx_categoria2` (`categoria2_id`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"}]},"sync_control":{"create":"CREATE TABLE `sync_control` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `tabla` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `last_push_at` datetime(6) DEFAULT NULL,\n  `last_pull_at` datetime(6) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_tabla_sucursal` (`tabla`,`sucursal`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"tabla","definicion":"`tabla` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"sucursal","definicion":"`sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"last_push_at","definicion":"`last_push_at` datetime(6) DEFAULT NULL","tipo":"datetime(6)","nulo":true},{"nombre":"last_pull_at","definicion":"`last_pull_at` datetime(6) DEFAULT NULL","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_tabla_sucursal","tipo":"unique","definicion":"UNIQUE KEY `uk_tabla_sucursal` (`tabla`,`sucursal`)"}]},"sync_id_map":{"create":"CREATE TABLE `sync_id_map` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `tabla` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `sucursal_origen` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `id_remoto` int(11) NOT NULL,\n  `id_local` int(11) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_mapping` (`tabla`,`sucursal_origen`,`id_remoto`),\n  KEY `idx_local` (`tabla`,`id_local`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"tabla","definicion":"`tabla` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"sucursal_origen","definicion":"`sucursal_origen` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"id_remoto","definicion":"`id_remoto` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"id_local","definicion":"`id_local` int(11) NOT NULL","tipo":"int(11)","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uk_mapping","tipo":"unique","definicion":"UNIQUE KEY `uk_mapping` (`tabla`,`sucursal_origen`,`id_remoto`)"},{"nombre":"idx_local","tipo":"index","definicion":"KEY `idx_local` (`tabla`,`id_local`)"}]},"sync_log":{"create":"CREATE TABLE `sync_log` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `tabla` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `direccion` enum('push','pull') COLLATE utf8mb4_unicode_ci NOT NULL,\n  `registros_enviados` int(11) DEFAULT 0,\n  `registros_recibidos` int(11) DEFAULT 0,\n  `registros_conflictos` int(11) DEFAULT 0,\n  `ultimo_sync_timestamp` datetime(6) DEFAULT NULL,\n  `estado` enum('iniciado','completado','error') COLLATE utf8mb4_unicode_ci DEFAULT 'iniciado',\n  `error_mensaje` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `duracion_ms` int(11) DEFAULT 0,\n  `created_at` datetime(6) DEFAULT current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_tabla` (`tabla`),\n  KEY `idx_sucursal` (`sucursal`),\n  KEY `idx_estado` (`estado`),\n  KEY `idx_created` (`created_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"tabla","definicion":"`tabla` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"sucursal","definicion":"`sucursal` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"direccion","definicion":"`direccion` enum('push','pull') COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"enum('push','pull')","nulo":false},{"nombre":"registros_enviados","definicion":"`registros_enviados` int(11) DEFAULT 0","tipo":"int(11)","nulo":true},{"nombre":"registros_recibidos","definicion":"`registros_recibidos` int(11) DEFAULT 0","tipo":"int(11)","nulo":true},{"nombre":"registros_conflictos","definicion":"`registros_conflictos` int(11) DEFAULT 0","tipo":"int(11)","nulo":true},{"nombre":"ultimo_sync_timestamp","definicion":"`ultimo_sync_timestamp` datetime(6) DEFAULT NULL","tipo":"datetime(6)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('iniciado','completado','error') COLLATE utf8mb4_unicode_ci DEFAULT 'iniciado'","tipo":"enum('iniciado','completado','error')","nulo":true},{"nombre":"error_mensaje","definicion":"`error_mensaje` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"duracion_ms","definicion":"`duracion_ms` int(11) DEFAULT 0","tipo":"int(11)","nulo":true},{"nombre":"created_at","definicion":"`created_at` datetime(6) DEFAULT current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_tabla","tipo":"index","definicion":"KEY `idx_tabla` (`tabla`)"},{"nombre":"idx_sucursal","tipo":"index","definicion":"KEY `idx_sucursal` (`sucursal`)"},{"nombre":"idx_estado","tipo":"index","definicion":"KEY `idx_estado` (`estado`)"},{"nombre":"idx_created","tipo":"index","definicion":"KEY `idx_created` (`created_at`)"}]},"tmp_regimen_kerigma":{"create":"CREATE TABLE `tmp_regimen_kerigma` (\n  `rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `regimen` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,\n  PRIMARY KEY (`rfc`)\n) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"rfc","definicion":"`rfc` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"regimen","definicion":"`regimen` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(10)","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`rfc`)"}]},"transferencias":{"create":"CREATE TABLE `transferencias` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(20) NOT NULL,\n  `almacen_origen_id` int(11) NOT NULL,\n  `almacen_destino_id` int(11) NOT NULL,\n  `estado` enum('borrador','enviada','recibida') NOT NULL DEFAULT 'borrador',\n  `notas` text DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_envio` timestamp NULL DEFAULT NULL,\n  `fecha_recepcion` timestamp NULL DEFAULT NULL,\n  `usuario_creacion` varchar(100) DEFAULT NULL,\n  `usuario_envio` varchar(100) DEFAULT NULL,\n  `usuario_recepcion` varchar(100) DEFAULT NULL,\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `folio` (`folio`),\n  KEY `almacen_origen_id` (`almacen_origen_id`),\n  KEY `almacen_destino_id` (`almacen_destino_id`),\n  CONSTRAINT `transferencias_ibfk_1` FOREIGN KEY (`almacen_origen_id`) REFERENCES `almacenes` (`id`),\n  CONSTRAINT `transferencias_ibfk_2` FOREIGN KEY (`almacen_destino_id`) REFERENCES `almacenes` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(20) NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"almacen_origen_id","definicion":"`almacen_origen_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"almacen_destino_id","definicion":"`almacen_destino_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"estado","definicion":"`estado` enum('borrador','enviada','recibida') NOT NULL DEFAULT 'borrador'","tipo":"enum('borrador','enviada','recibida')","nulo":false},{"nombre":"notas","definicion":"`notas` text DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_envio","definicion":"`fecha_envio` timestamp NULL DEFAULT NULL","tipo":"timestamp","nulo":true},{"nombre":"fecha_recepcion","definicion":"`fecha_recepcion` timestamp NULL DEFAULT NULL","tipo":"timestamp","nulo":true},{"nombre":"usuario_creacion","definicion":"`usuario_creacion` varchar(100) DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"usuario_envio","definicion":"`usuario_envio` varchar(100) DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"usuario_recepcion","definicion":"`usuario_recepcion` varchar(100) DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"folio","tipo":"unique","definicion":"UNIQUE KEY `folio` (`folio`)"},{"nombre":"almacen_origen_id","tipo":"index","definicion":"KEY `almacen_origen_id` (`almacen_origen_id`)"},{"nombre":"almacen_destino_id","tipo":"index","definicion":"KEY `almacen_destino_id` (`almacen_destino_id`)"},{"nombre":"transferencias_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `transferencias_ibfk_1` FOREIGN KEY (`almacen_origen_id`) REFERENCES `almacenes` (`id`)"},{"nombre":"transferencias_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `transferencias_ibfk_2` FOREIGN KEY (`almacen_destino_id`) REFERENCES `almacenes` (`id`)"}]},"transferencia_detalle":{"create":"CREATE TABLE `transferencia_detalle` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `transferencia_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `cantidad_enviada` decimal(10,3) NOT NULL DEFAULT 0.000,\n  `cantidad_recibida` decimal(10,3) DEFAULT NULL,\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `transferencia_id` (`transferencia_id`),\n  KEY `producto_id` (`producto_id`),\n  CONSTRAINT `transferencia_detalle_ibfk_1` FOREIGN KEY (`transferencia_id`) REFERENCES `transferencias` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `transferencia_detalle_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"transferencia_id","definicion":"`transferencia_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"cantidad_enviada","definicion":"`cantidad_enviada` decimal(10,3) NOT NULL DEFAULT 0.000","tipo":"decimal(10,3)","nulo":false},{"nombre":"cantidad_recibida","definicion":"`cantidad_recibida` decimal(10,3) DEFAULT NULL","tipo":"decimal(10,3)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"transferencia_id","tipo":"index","definicion":"KEY `transferencia_id` (`transferencia_id`)"},{"nombre":"producto_id","tipo":"index","definicion":"KEY `producto_id` (`producto_id`)"},{"nombre":"transferencia_detalle_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `transferencia_detalle_ibfk_1` FOREIGN KEY (`transferencia_id`) REFERENCES `transferencias` (`id`) ON DELETE CASCADE"},{"nombre":"transferencia_detalle_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `transferencia_detalle_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"}]},"usuarios":{"create":"CREATE TABLE `usuarios` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `usuario` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `telefono` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `rol_id` int(11) NOT NULL,\n  `biometric_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activo` tinyint(4) DEFAULT 1,\n  `ultimo_acceso` timestamp NULL DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `pin_hash` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'PIN de la tableta de producci\u00f3n (password_hash)',\n  `pin_intentos` int(11) NOT NULL DEFAULT 0,\n  `pin_bloqueado_hasta` datetime DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `usuario` (`usuario`),\n  UNIQUE KEY `email` (`email`),\n  UNIQUE KEY `biometric_id` (`biometric_id`),\n  KEY `idx_usuarios_rol` (`rol_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `usuarios_ibfk_1` FOREIGN KEY (`rol_id`) REFERENCES `roles` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"usuario","definicion":"`usuario` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"email","definicion":"`email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"password","definicion":"`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"telefono","definicion":"`telefono` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(15)","nulo":true},{"nombre":"rol_id","definicion":"`rol_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"biometric_id","definicion":"`biometric_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"ultimo_acceso","definicion":"`ultimo_acceso` timestamp NULL DEFAULT NULL","tipo":"timestamp","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"pin_hash","definicion":"`pin_hash` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'PIN de la tableta de producci\u00f3n (password_hash)'","tipo":"varchar(255)","nulo":true},{"nombre":"pin_intentos","definicion":"`pin_intentos` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"pin_bloqueado_hasta","definicion":"`pin_bloqueado_hasta` datetime DEFAULT NULL","tipo":"datetime","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"usuario","tipo":"unique","definicion":"UNIQUE KEY `usuario` (`usuario`)"},{"nombre":"email","tipo":"unique","definicion":"UNIQUE KEY `email` (`email`)"},{"nombre":"biometric_id","tipo":"unique","definicion":"UNIQUE KEY `biometric_id` (`biometric_id`)"},{"nombre":"idx_usuarios_rol","tipo":"index","definicion":"KEY `idx_usuarios_rol` (`rol_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"usuarios_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `usuarios_ibfk_1` FOREIGN KEY (`rol_id`) REFERENCES `roles` (`id`)"}]},"usuario_almacenes":{"create":"CREATE TABLE `usuario_almacenes` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `usuario_id` int(11) NOT NULL,\n  `almacen_id` int(11) NOT NULL,\n  `fecha_asignacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_usuario_almacen` (`usuario_id`,`almacen_id`),\n  KEY `idx_usuario_id` (`usuario_id`),\n  KEY `idx_almacen_id` (`almacen_id`),\n  KEY `idx_usuario_almacenes_lookup` (`usuario_id`,`almacen_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_usuario_almacenes_almacen` FOREIGN KEY (`almacen_id`) REFERENCES `almacenes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,\n  CONSTRAINT `fk_usuario_almacenes_usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE ON UPDATE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Tabla de relaci\u251c\u2502n entre usuarios y almacenes asignados'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"almacen_id","definicion":"`almacen_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"fecha_asignacion","definicion":"`fecha_asignacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_usuario_almacen","tipo":"unique","definicion":"UNIQUE KEY `unique_usuario_almacen` (`usuario_id`,`almacen_id`)"},{"nombre":"idx_usuario_id","tipo":"index","definicion":"KEY `idx_usuario_id` (`usuario_id`)"},{"nombre":"idx_almacen_id","tipo":"index","definicion":"KEY `idx_almacen_id` (`almacen_id`)"},{"nombre":"idx_usuario_almacenes_lookup","tipo":"index","definicion":"KEY `idx_usuario_almacenes_lookup` (`usuario_id`,`almacen_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_usuario_almacenes_almacen","tipo":"foreign","definicion":"CONSTRAINT `fk_usuario_almacenes_almacen` FOREIGN KEY (`almacen_id`) REFERENCES `almacenes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE"},{"nombre":"fk_usuario_almacenes_usuario","tipo":"foreign","definicion":"CONSTRAINT `fk_usuario_almacenes_usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE ON UPDATE CASCADE"}]},"usuario_huellas":{"create":"CREATE TABLE `usuario_huellas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `usuario_id` int(11) NOT NULL,\n  `dedo` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fingerprint_base64` longtext COLLATE utf8mb4_unicode_ci NOT NULL,\n  `fecha_registro` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `usuario_id` (`usuario_id`),\n  CONSTRAINT `usuario_huellas_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"dedo","definicion":"`dedo` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"fingerprint_base64","definicion":"`fingerprint_base64` longtext COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"longtext","nulo":false},{"nombre":"fecha_registro","definicion":"`fecha_registro` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"usuario_id","tipo":"index","definicion":"KEY `usuario_id` (`usuario_id`)"},{"nombre":"usuario_huellas_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `usuario_huellas_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE"}]},"usuario_permisos_app":{"create":"CREATE TABLE `usuario_permisos_app` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `usuario_id` int(11) NOT NULL,\n  `permiso` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Key del m\u00f3dulo: pedidos, entregas, pedidos_guardados, embarques, clientes, catalogo, reportes',\n  `fecha_asignacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_usuario_permiso_app` (`usuario_id`,`permiso`),\n  KEY `idx_usuario_id` (`usuario_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_upa_usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"permiso","definicion":"`permiso` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Key del m\u00f3dulo: pedidos, entregas, pedidos_guardados, embarques, clientes, catalogo, reportes'","tipo":"varchar(50)","nulo":false},{"nombre":"fecha_asignacion","definicion":"`fecha_asignacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_usuario_permiso_app","tipo":"unique","definicion":"UNIQUE KEY `unique_usuario_permiso_app` (`usuario_id`,`permiso`)"},{"nombre":"idx_usuario_id","tipo":"index","definicion":"KEY `idx_usuario_id` (`usuario_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_upa_usuario","tipo":"foreign","definicion":"CONSTRAINT `fk_upa_usuario` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE"}]},"vales":{"create":"CREATE TABLE `vales` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `codigo` varchar(20) NOT NULL,\n  `monto_inicial` decimal(12,2) NOT NULL,\n  `saldo_disponible` decimal(12,2) NOT NULL,\n  `estatus` enum('disponible','parcial','agotado','cancelado') NOT NULL DEFAULT 'disponible',\n  `usuario_id` int(11) NOT NULL,\n  `usuario_autorizador_id` int(11) DEFAULT NULL,\n  `nombre_pc` varchar(100) DEFAULT NULL,\n  `observaciones` text DEFAULT NULL,\n  `fecha_creacion` datetime DEFAULT current_timestamp(),\n  `fecha_actualizacion` datetime DEFAULT NULL,\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uq_codigo` (`codigo`),\n  KEY `idx_estatus` (`estatus`),\n  KEY `idx_fecha_creacion` (`fecha_creacion`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(20) NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"monto_inicial","definicion":"`monto_inicial` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"saldo_disponible","definicion":"`saldo_disponible` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"estatus","definicion":"`estatus` enum('disponible','parcial','agotado','cancelado') NOT NULL DEFAULT 'disponible'","tipo":"enum('disponible','parcial','agotado','cancelado')","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_autorizador_id","definicion":"`usuario_autorizador_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"nombre_pc","definicion":"`nombre_pc` varchar(100) DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"uq_codigo","tipo":"unique","definicion":"UNIQUE KEY `uq_codigo` (`codigo`)"},{"nombre":"idx_estatus","tipo":"index","definicion":"KEY `idx_estatus` (`estatus`)"},{"nombre":"idx_fecha_creacion","tipo":"index","definicion":"KEY `idx_fecha_creacion` (`fecha_creacion`)"}]},"vales_articulos":{"create":"CREATE TABLE `vales_articulos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `vale_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `producto_nombre` varchar(255) DEFAULT NULL,\n  `cantidad` decimal(12,3) NOT NULL,\n  `precio_unitario` decimal(12,2) NOT NULL,\n  `subtotal` decimal(12,2) NOT NULL,\n  `costo` decimal(12,2) NOT NULL DEFAULT 0.00,\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_vale_id` (`vale_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"vale_id","definicion":"`vale_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_nombre","definicion":"`producto_nombre` varchar(255) DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"cantidad","definicion":"`cantidad` decimal(12,3) NOT NULL","tipo":"decimal(12,3)","nulo":false},{"nombre":"precio_unitario","definicion":"`precio_unitario` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"costo","definicion":"`costo` decimal(12,2) NOT NULL DEFAULT 0.00","tipo":"decimal(12,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_vale_id","tipo":"index","definicion":"KEY `idx_vale_id` (`vale_id`)"}]},"vales_movimientos":{"create":"CREATE TABLE `vales_movimientos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `vale_id` int(11) NOT NULL,\n  `tipo` enum('creacion','canje') NOT NULL,\n  `monto` decimal(12,2) NOT NULL,\n  `saldo_resultante` decimal(12,2) NOT NULL,\n  `venta_id` int(11) DEFAULT NULL,\n  `tipo_venta` varchar(20) DEFAULT NULL,\n  `usuario_id` int(11) DEFAULT NULL,\n  `nombre_pc` varchar(100) DEFAULT NULL,\n  `fecha` datetime DEFAULT current_timestamp(),\n  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  KEY `idx_vale_id` (`vale_id`),\n  KEY `idx_venta_id` (`venta_id`),\n  KEY `idx_fecha` (`fecha`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"vale_id","definicion":"`vale_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"tipo","definicion":"`tipo` enum('creacion','canje') NOT NULL","tipo":"enum('creacion','canje')","nulo":false},{"nombre":"monto","definicion":"`monto` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"saldo_resultante","definicion":"`saldo_resultante` decimal(12,2) NOT NULL","tipo":"decimal(12,2)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"tipo_venta","definicion":"`tipo_venta` varchar(20) DEFAULT NULL","tipo":"varchar(20)","nulo":true},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"nombre_pc","definicion":"`nombre_pc` varchar(100) DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fecha","definicion":"`fecha` datetime DEFAULT current_timestamp()","tipo":"datetime","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_vale_id","tipo":"index","definicion":"KEY `idx_vale_id` (`vale_id`)"},{"nombre":"idx_venta_id","tipo":"index","definicion":"KEY `idx_venta_id` (`venta_id`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha`)"}]},"vehiculos":{"create":"CREATE TABLE `vehiculos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `codigo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'CAM-001: lo genera el sistema',\n  `nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Nombre descriptivo del veh\u251c\u00a1culo',\n  `placa` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Placa del veh\u251c\u00a1culo',\n  `vin` varchar(25) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `marca` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `modelo` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `anio` smallint(6) DEFAULT NULL,\n  `tipo_vehiculo` enum('camion','camioneta','automovil','motocicleta','montacargas','otro') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'camioneta',\n  `centro_costo` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Centro base (dimensi\u00f3n por defecto de sus documentos)',\n  `tipo_combustible` enum('diesel','gasolina','gas','electrico') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'gasolina',\n  `capacidad_tanque` decimal(8,2) DEFAULT NULL COMMENT 'Litros',\n  `rendimiento_estandar` decimal(6,2) DEFAULT NULL COMMENT 'km\/L esperado',\n  `usa_horometro` tinyint(1) NOT NULL DEFAULT 0,\n  `km_actual` int(11) NOT NULL DEFAULT 0 COMMENT 'Derivado de las lecturas de od\u00f3metro; nunca se edita a mano',\n  `horometro_actual` decimal(10,1) NOT NULL DEFAULT 0.0 COMMENT 'Derivado; nunca se edita a mano',\n  `costo_adquisicion` decimal(12,2) DEFAULT NULL COMMENT 'Base del TCO',\n  `estado` enum('disponible','en_ruta','en_taller','baja') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'disponible',\n  `fecha_alta` date DEFAULT NULL,\n  `fecha_baja` date DEFAULT NULL,\n  `motivo_baja` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `activo` tinyint(4) DEFAULT 1 COMMENT 'Estado: 1=Activo, 0=Inactivo',\n  `creado_por` int(11) DEFAULT NULL,\n  `modificado_por` int(11) DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_placa` (`placa`),\n  UNIQUE KEY `idx_vehiculos_codigo` (`codigo`),\n  KEY `idx_nombre` (`nombre`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_vehiculos_estado` (`estado`),\n  KEY `idx_vehiculos_centro` (`centro_costo`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"codigo","definicion":"`codigo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'CAM-001: lo genera el sistema'","tipo":"varchar(20)","nulo":true},{"nombre":"nombre","definicion":"`nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Nombre descriptivo del veh\u251c\u00a1culo'","tipo":"varchar(100)","nulo":false},{"nombre":"placa","definicion":"`placa` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Placa del veh\u251c\u00a1culo'","tipo":"varchar(20)","nulo":false},{"nombre":"vin","definicion":"`vin` varchar(25) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(25)","nulo":true},{"nombre":"marca","definicion":"`marca` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(60)","nulo":true},{"nombre":"modelo","definicion":"`modelo` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(60)","nulo":true},{"nombre":"anio","definicion":"`anio` smallint(6) DEFAULT NULL","tipo":"smallint(6)","nulo":true},{"nombre":"tipo_vehiculo","definicion":"`tipo_vehiculo` enum('camion','camioneta','automovil','motocicleta','montacargas','otro') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'camioneta'","tipo":"enum('camion','camioneta','automovil','motocicleta','montacargas','otro')","nulo":false},{"nombre":"centro_costo","definicion":"`centro_costo` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Centro base (dimensi\u00f3n por defecto de sus documentos)'","tipo":"varchar(10)","nulo":true},{"nombre":"tipo_combustible","definicion":"`tipo_combustible` enum('diesel','gasolina','gas','electrico') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'gasolina'","tipo":"enum('diesel','gasolina','gas','electrico')","nulo":false},{"nombre":"capacidad_tanque","definicion":"`capacidad_tanque` decimal(8,2) DEFAULT NULL COMMENT 'Litros'","tipo":"decimal(8,2)","nulo":true},{"nombre":"rendimiento_estandar","definicion":"`rendimiento_estandar` decimal(6,2) DEFAULT NULL COMMENT 'km\/L esperado'","tipo":"decimal(6,2)","nulo":true},{"nombre":"usa_horometro","definicion":"`usa_horometro` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"km_actual","definicion":"`km_actual` int(11) NOT NULL DEFAULT 0 COMMENT 'Derivado de las lecturas de od\u00f3metro; nunca se edita a mano'","tipo":"int(11)","nulo":false},{"nombre":"horometro_actual","definicion":"`horometro_actual` decimal(10,1) NOT NULL DEFAULT 0.0 COMMENT 'Derivado; nunca se edita a mano'","tipo":"decimal(10,1)","nulo":false},{"nombre":"costo_adquisicion","definicion":"`costo_adquisicion` decimal(12,2) DEFAULT NULL COMMENT 'Base del TCO'","tipo":"decimal(12,2)","nulo":true},{"nombre":"estado","definicion":"`estado` enum('disponible','en_ruta','en_taller','baja') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'disponible'","tipo":"enum('disponible','en_ruta','en_taller','baja')","nulo":false},{"nombre":"fecha_alta","definicion":"`fecha_alta` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"fecha_baja","definicion":"`fecha_baja` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"motivo_baja","definicion":"`motivo_baja` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(500)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1 COMMENT 'Estado: 1=Activo, 0=Inactivo'","tipo":"tinyint(4)","nulo":true},{"nombre":"creado_por","definicion":"`creado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"modificado_por","definicion":"`modificado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_placa","tipo":"unique","definicion":"UNIQUE KEY `idx_placa` (`placa`)"},{"nombre":"idx_vehiculos_codigo","tipo":"unique","definicion":"UNIQUE KEY `idx_vehiculos_codigo` (`codigo`)"},{"nombre":"idx_nombre","tipo":"index","definicion":"KEY `idx_nombre` (`nombre`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_vehiculos_estado","tipo":"index","definicion":"KEY `idx_vehiculos_estado` (`estado`)"},{"nombre":"idx_vehiculos_centro","tipo":"index","definicion":"KEY `idx_vehiculos_centro` (`centro_costo`)"}]},"vehiculo_rangos":{"create":"CREATE TABLE `vehiculo_rangos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `vehiculo_id` int(11) NOT NULL,\n  `rango_id` int(11) NOT NULL,\n  `precio_especial` decimal(10,2) DEFAULT NULL COMMENT 'Precio especial para este veh\u00edculo en este rango',\n  `activo` tinyint(4) DEFAULT 1,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_vehiculo_rango` (`vehiculo_id`,`rango_id`),\n  KEY `rango_id` (`rango_id`),\n  KEY `idx_activo` (`activo`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `vehiculo_rangos_ibfk_1` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `vehiculo_rangos_ibfk_2` FOREIGN KEY (`rango_id`) REFERENCES `rangos_flete` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Asignaci\u00f3n de veh\u00edculos a rangos espec\u00edficos'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"vehiculo_id","definicion":"`vehiculo_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"rango_id","definicion":"`rango_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"precio_especial","definicion":"`precio_especial` decimal(10,2) DEFAULT NULL COMMENT 'Precio especial para este veh\u00edculo en este rango'","tipo":"decimal(10,2)","nulo":true},{"nombre":"activo","definicion":"`activo` tinyint(4) DEFAULT 1","tipo":"tinyint(4)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_vehiculo_rango","tipo":"unique","definicion":"UNIQUE KEY `idx_vehiculo_rango` (`vehiculo_id`,`rango_id`)"},{"nombre":"rango_id","tipo":"index","definicion":"KEY `rango_id` (`rango_id`)"},{"nombre":"idx_activo","tipo":"index","definicion":"KEY `idx_activo` (`activo`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"vehiculo_rangos_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `vehiculo_rangos_ibfk_1` FOREIGN KEY (`vehiculo_id`) REFERENCES `vehiculos` (`id`) ON DELETE CASCADE"},{"nombre":"vehiculo_rangos_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `vehiculo_rangos_ibfk_2` FOREIGN KEY (`rango_id`) REFERENCES `rangos_flete` (`id`) ON DELETE CASCADE"}]},"ventas":{"create":"CREATE TABLE `ventas` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cliente_id` int(11) DEFAULT NULL,\n  `cliente_nombre` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `usuario_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `caja_id` int(11) DEFAULT NULL,\n  `corte_id` int(11) DEFAULT NULL,\n  `subtotal` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `impuesto` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `descuento` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `metodo_pago` varchar(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `estatus_pago` enum('pagado','pendiente') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente',\n  `saldo_pendiente` decimal(10,2) DEFAULT NULL COMMENT 'Saldo restante por cobrar (NULL si no es cr\u251c\u00aedito)',\n  `pagos_detalle` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'JSON [{metodo,monto}] cuando metodo_pago es mixto',\n  `tipo_entrega` enum('domicilio','pickup') COLLATE utf8mb4_unicode_ci DEFAULT 'pickup',\n  `direccion_entrega` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `estado` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_tentativa` date DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  `fecha_en_preparacion` datetime DEFAULT NULL,\n  `fecha_preparado` datetime DEFAULT NULL,\n  `fecha_en_ruta` datetime DEFAULT NULL,\n  `fecha_entregado` datetime DEFAULT NULL,\n  `fecha_cancelada` datetime DEFAULT NULL,\n  `facturado` tinyint(1) DEFAULT 0,\n  `aplica_comision` tinyint(1) DEFAULT 0,\n  `comision_porcentaje` decimal(5,2) DEFAULT 0.00,\n  `comision_monto` decimal(10,2) DEFAULT 0.00,\n  `recargo_domicilio_porcentaje` decimal(9,4) NOT NULL DEFAULT 0.0000,\n  `recargo_domicilio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'porcentaje',\n  `recargo_domicilio_monto` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  `emisor_id` int(11) DEFAULT NULL,\n  `codigo_facturacion` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `dato_fiscal_id` int(11) DEFAULT NULL,\n  `requiere_factura` tinyint(1) NOT NULL DEFAULT 0,\n  `factura_rfc` varchar(13) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `factura_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `factura_cp` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `factura_email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `latitud` decimal(10,8) DEFAULT NULL,\n  `longitud` decimal(11,8) DEFAULT NULL,\n  `precision_gps` decimal(6,2) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `unique_folio` (`folio`),\n  KEY `idx_cliente` (`cliente_id`),\n  KEY `idx_usuario` (`usuario_id`),\n  KEY `idx_estado` (`estado`),\n  KEY `idx_fecha` (`fecha_creacion`),\n  KEY `idx_estatus_pago` (`estatus_pago`),\n  KEY `idx_caja_id` (`caja_id`),\n  KEY `idx_ventas_saldo` (`saldo_pendiente`),\n  KEY `idx_updated_at` (`updated_at`),\n  KEY `idx_ventas_corte` (`corte_id`),\n  KEY `idx_ventas_cxc` (`cliente_id`,`estatus_pago`,`metodo_pago`(191)),\n  KEY `idx_fecha_preparado` (`fecha_preparado`),\n  KEY `idx_fecha_entregado` (`fecha_entregado`),\n  KEY `idx_corte_id` (`corte_id`),\n  CONSTRAINT `fk_ventas_caja` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`) ON DELETE SET NULL,\n  CONSTRAINT `ventas_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE SET NULL,\n  CONSTRAINT `ventas_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(50)","nulo":false},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"cliente_nombre","definicion":"`cliente_nombre` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"caja_id","definicion":"`caja_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"corte_id","definicion":"`corte_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` varchar(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(250)","nulo":true},{"nombre":"estatus_pago","definicion":"`estatus_pago` enum('pagado','pendiente') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente'","tipo":"enum('pagado','pendiente')","nulo":false},{"nombre":"saldo_pendiente","definicion":"`saldo_pendiente` decimal(10,2) DEFAULT NULL COMMENT 'Saldo restante por cobrar (NULL si no es cr\u251c\u00aedito)'","tipo":"decimal(10,2)","nulo":true},{"nombre":"pagos_detalle","definicion":"`pagos_detalle` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'JSON [{metodo,monto}] cuando metodo_pago es mixto'","tipo":"text","nulo":true},{"nombre":"tipo_entrega","definicion":"`tipo_entrega` enum('domicilio','pickup') COLLATE utf8mb4_unicode_ci DEFAULT 'pickup'","tipo":"enum('domicilio','pickup')","nulo":true},{"nombre":"direccion_entrega","definicion":"`direccion_entrega` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"estado","definicion":"`estado` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(50)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha_tentativa","definicion":"`fecha_tentativa` date DEFAULT NULL","tipo":"date","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_en_preparacion","definicion":"`fecha_en_preparacion` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_preparado","definicion":"`fecha_preparado` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_en_ruta","definicion":"`fecha_en_ruta` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_entregado","definicion":"`fecha_entregado` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"fecha_cancelada","definicion":"`fecha_cancelada` datetime DEFAULT NULL","tipo":"datetime","nulo":true},{"nombre":"facturado","definicion":"`facturado` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"aplica_comision","definicion":"`aplica_comision` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"comision_porcentaje","definicion":"`comision_porcentaje` decimal(5,2) DEFAULT 0.00","tipo":"decimal(5,2)","nulo":true},{"nombre":"comision_monto","definicion":"`comision_monto` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"recargo_domicilio_porcentaje","definicion":"`recargo_domicilio_porcentaje` decimal(9,4) NOT NULL DEFAULT 0.0000","tipo":"decimal(9,4)","nulo":false},{"nombre":"recargo_domicilio_tipo","definicion":"`recargo_domicilio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'porcentaje'","tipo":"varchar(20)","nulo":false},{"nombre":"recargo_domicilio_monto","definicion":"`recargo_domicilio_monto` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true},{"nombre":"emisor_id","definicion":"`emisor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"codigo_facturacion","definicion":"`codigo_facturacion` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(10)","nulo":true},{"nombre":"dato_fiscal_id","definicion":"`dato_fiscal_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"requiere_factura","definicion":"`requiere_factura` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"factura_rfc","definicion":"`factura_rfc` varchar(13) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(13)","nulo":true},{"nombre":"factura_razon_social","definicion":"`factura_razon_social` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"factura_cp","definicion":"`factura_cp` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(5)","nulo":true},{"nombre":"factura_email","definicion":"`factura_email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"latitud","definicion":"`latitud` decimal(10,8) DEFAULT NULL","tipo":"decimal(10,8)","nulo":true},{"nombre":"longitud","definicion":"`longitud` decimal(11,8) DEFAULT NULL","tipo":"decimal(11,8)","nulo":true},{"nombre":"precision_gps","definicion":"`precision_gps` decimal(6,2) DEFAULT NULL","tipo":"decimal(6,2)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"unique_folio","tipo":"unique","definicion":"UNIQUE KEY `unique_folio` (`folio`)"},{"nombre":"idx_cliente","tipo":"index","definicion":"KEY `idx_cliente` (`cliente_id`)"},{"nombre":"idx_usuario","tipo":"index","definicion":"KEY `idx_usuario` (`usuario_id`)"},{"nombre":"idx_estado","tipo":"index","definicion":"KEY `idx_estado` (`estado`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha_creacion`)"},{"nombre":"idx_estatus_pago","tipo":"index","definicion":"KEY `idx_estatus_pago` (`estatus_pago`)"},{"nombre":"idx_caja_id","tipo":"index","definicion":"KEY `idx_caja_id` (`caja_id`)"},{"nombre":"idx_ventas_saldo","tipo":"index","definicion":"KEY `idx_ventas_saldo` (`saldo_pendiente`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"idx_ventas_corte","tipo":"index","definicion":"KEY `idx_ventas_corte` (`corte_id`)"},{"nombre":"idx_ventas_cxc","tipo":"index","definicion":"KEY `idx_ventas_cxc` (`cliente_id`,`estatus_pago`,`metodo_pago`(191))"},{"nombre":"idx_fecha_preparado","tipo":"index","definicion":"KEY `idx_fecha_preparado` (`fecha_preparado`)"},{"nombre":"idx_fecha_entregado","tipo":"index","definicion":"KEY `idx_fecha_entregado` (`fecha_entregado`)"},{"nombre":"idx_corte_id","tipo":"index","definicion":"KEY `idx_corte_id` (`corte_id`)"},{"nombre":"fk_ventas_caja","tipo":"foreign","definicion":"CONSTRAINT `fk_ventas_caja` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`) ON DELETE SET NULL"},{"nombre":"ventas_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `ventas_ibfk_1` FOREIGN KEY (`cliente_id`) REFERENCES `clientes` (`id`) ON DELETE SET NULL"},{"nombre":"ventas_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `ventas_ibfk_2` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)"}]},"ventas_ediciones_log":{"create":"CREATE TABLE `ventas_ediciones_log` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `venta_id` int(11) NOT NULL,\n  `origen` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ventas',\n  `usuario_id` int(11) DEFAULT NULL,\n  `usuario_nombre` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_edicion` datetime NOT NULL DEFAULT current_timestamp(),\n  `datos_anteriores` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `datos_nuevos` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cambios_resumen` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `idx_venta_id` (`venta_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"origen","definicion":"`origen` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ventas'","tipo":"varchar(20)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"fecha_edicion","definicion":"`fecha_edicion` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"datos_anteriores","definicion":"`datos_anteriores` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"longtext","nulo":true},{"nombre":"datos_nuevos","definicion":"`datos_nuevos` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"longtext","nulo":true},{"nombre":"cambios_resumen","definicion":"`cambios_resumen` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_venta_id","tipo":"index","definicion":"KEY `idx_venta_id` (`venta_id`)"}]},"ventas_mostrador":{"create":"CREATE TABLE `ventas_mostrador` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `folio` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `codigo_facturacion` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `emisor_id` int(11) DEFAULT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `caja_id` int(11) DEFAULT NULL,\n  `subtotal` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `impuesto` decimal(10,2) DEFAULT 0.00,\n  `descuento` decimal(10,2) DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL,\n  `saldo_pendiente` decimal(10,2) DEFAULT 0.00,\n  `metodo_pago` enum('efectivo','tarjeta','tarjeta_credito','tarjeta_debito','transferencia','credito','mixto') COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `estatus_pago` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'pagado',\n  `facturado` tinyint(1) DEFAULT 0,\n  `observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `fecha_actualizacion` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp(),\n  `cliente_id` int(11) DEFAULT NULL,\n  `cliente_nombre` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `corte_id` int(11) DEFAULT NULL,\n  `aplica_comision` tinyint(1) DEFAULT 0 COMMENT 'Si la venta aplica comision por tarjeta',\n  `comision_porcentaje` decimal(5,2) DEFAULT 0.00 COMMENT 'Porcentaje de comision aplicado',\n  `comision_monto` decimal(10,2) DEFAULT 0.00 COMMENT 'Monto de la comision',\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `folio` (`folio`),\n  UNIQUE KEY `codigo_facturacion` (`codigo_facturacion`),\n  KEY `idx_usuario_id` (`usuario_id`),\n  KEY `idx_fecha_creacion` (`fecha_creacion`),\n  KEY `idx_metodo_pago` (`metodo_pago`),\n  KEY `idx_estatus_pago` (`estatus_pago`),\n  KEY `idx_ventas_mostrador_fecha_usuario` (`fecha_creacion`,`usuario_id`),\n  KEY `idx_ventas_mostrador_total` (`total`),\n  KEY `idx_vm_caja_id` (`caja_id`),\n  KEY `idx_corte` (`corte_id`),\n  KEY `idx_ventas_mostrador_facturado` (`facturado`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_ventas_mostrador_caja` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`) ON DELETE SET NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"folio","definicion":"`folio` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(20)","nulo":false},{"nombre":"codigo_facturacion","definicion":"`codigo_facturacion` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(8)","nulo":true},{"nombre":"emisor_id","definicion":"`emisor_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(100)","nulo":false},{"nombre":"caja_id","definicion":"`caja_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"saldo_pendiente","definicion":"`saldo_pendiente` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"metodo_pago","definicion":"`metodo_pago` enum('efectivo','tarjeta','tarjeta_credito','tarjeta_debito','transferencia','credito','mixto') COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"enum('efectivo','tarjeta','tarjeta_credito','tarjeta_debito','transferencia','credito','mixto')","nulo":true},{"nombre":"estatus_pago","definicion":"`estatus_pago` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'pagado'","tipo":"varchar(50)","nulo":true},{"nombre":"facturado","definicion":"`facturado` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"observaciones","definicion":"`observaciones` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"fecha_actualizacion","definicion":"`fecha_actualizacion` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp()","tipo":"timestamp","nulo":true},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"cliente_nombre","definicion":"`cliente_nombre` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"corte_id","definicion":"`corte_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"aplica_comision","definicion":"`aplica_comision` tinyint(1) DEFAULT 0 COMMENT 'Si la venta aplica comision por tarjeta'","tipo":"tinyint(1)","nulo":true},{"nombre":"comision_porcentaje","definicion":"`comision_porcentaje` decimal(5,2) DEFAULT 0.00 COMMENT 'Porcentaje de comision aplicado'","tipo":"decimal(5,2)","nulo":true},{"nombre":"comision_monto","definicion":"`comision_monto` decimal(10,2) DEFAULT 0.00 COMMENT 'Monto de la comision'","tipo":"decimal(10,2)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"folio","tipo":"unique","definicion":"UNIQUE KEY `folio` (`folio`)"},{"nombre":"codigo_facturacion","tipo":"unique","definicion":"UNIQUE KEY `codigo_facturacion` (`codigo_facturacion`)"},{"nombre":"idx_usuario_id","tipo":"index","definicion":"KEY `idx_usuario_id` (`usuario_id`)"},{"nombre":"idx_fecha_creacion","tipo":"index","definicion":"KEY `idx_fecha_creacion` (`fecha_creacion`)"},{"nombre":"idx_metodo_pago","tipo":"index","definicion":"KEY `idx_metodo_pago` (`metodo_pago`)"},{"nombre":"idx_estatus_pago","tipo":"index","definicion":"KEY `idx_estatus_pago` (`estatus_pago`)"},{"nombre":"idx_ventas_mostrador_fecha_usuario","tipo":"index","definicion":"KEY `idx_ventas_mostrador_fecha_usuario` (`fecha_creacion`,`usuario_id`)"},{"nombre":"idx_ventas_mostrador_total","tipo":"index","definicion":"KEY `idx_ventas_mostrador_total` (`total`)"},{"nombre":"idx_vm_caja_id","tipo":"index","definicion":"KEY `idx_vm_caja_id` (`caja_id`)"},{"nombre":"idx_corte","tipo":"index","definicion":"KEY `idx_corte` (`corte_id`)"},{"nombre":"idx_ventas_mostrador_facturado","tipo":"index","definicion":"KEY `idx_ventas_mostrador_facturado` (`facturado`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_ventas_mostrador_caja","tipo":"foreign","definicion":"CONSTRAINT `fk_ventas_mostrador_caja` FOREIGN KEY (`caja_id`) REFERENCES `cajas` (`id`) ON DELETE SET NULL"}]},"ventas_mostrador_detalles":{"create":"CREATE TABLE `ventas_mostrador_detalles` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `venta_mostrador_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `producto_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cantidad` decimal(10,2) NOT NULL,\n  `precio_unitario` decimal(12,4) NOT NULL,\n  `subtotal` decimal(10,2) NOT NULL,\n  `impuesto` decimal(10,2) DEFAULT 0.00,\n  `descuento` decimal(10,2) DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `cantidad_devuelta` decimal(10,2) DEFAULT 0.00,\n  `precio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista' COMMENT 'Tipo de precio usado',\n  `comentario` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `costo` decimal(12,4) DEFAULT 0.0000,\n  `costo_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tipo de  \\r\\n  costo usado: precio_compra o costo_precios',\n  `aplica_comision` tinyint(1) DEFAULT 0 COMMENT 'Si este producto aplica comision',\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_venta_mostrador_id` (`venta_mostrador_id`),\n  KEY `idx_producto_id` (`producto_id`),\n  KEY `idx_updated_at` (`updated_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"venta_mostrador_id","definicion":"`venta_mostrador_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_nombre","definicion":"`producto_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"precio_unitario","definicion":"`precio_unitario` decimal(12,4) NOT NULL","tipo":"decimal(12,4)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"cantidad_devuelta","definicion":"`cantidad_devuelta` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"precio_tipo","definicion":"`precio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista' COMMENT 'Tipo de precio usado'","tipo":"varchar(20)","nulo":true},{"nombre":"comentario","definicion":"`comentario` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"costo","definicion":"`costo` decimal(12,4) DEFAULT 0.0000","tipo":"decimal(12,4)","nulo":true},{"nombre":"costo_tipo","definicion":"`costo_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tipo de  \\r\\n  costo usado: precio_compra o costo_precios'","tipo":"varchar(20)","nulo":true},{"nombre":"aplica_comision","definicion":"`aplica_comision` tinyint(1) DEFAULT 0 COMMENT 'Si este producto aplica comision'","tipo":"tinyint(1)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_venta_mostrador_id","tipo":"index","definicion":"KEY `idx_venta_mostrador_id` (`venta_mostrador_id`)"},{"nombre":"idx_producto_id","tipo":"index","definicion":"KEY `idx_producto_id` (`producto_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"}]},"ventas_mostrador_pagos":{"create":"CREATE TABLE `ventas_mostrador_pagos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `venta_mostrador_id` int(11) NOT NULL,\n  `metodo_pago` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `monto` decimal(10,2) NOT NULL,\n  `es_abono_cxc` tinyint(1) DEFAULT 0,\n  `registrado_por` int(11) DEFAULT NULL,\n  `notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `referencia` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_venta_mostrador_id` (`venta_mostrador_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_ventas_mostrador_pagos_venta` FOREIGN KEY (`venta_mostrador_id`) REFERENCES `ventas_mostrador` (`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"venta_mostrador_id","definicion":"`venta_mostrador_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(250)","nulo":false},{"nombre":"monto","definicion":"`monto` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"es_abono_cxc","definicion":"`es_abono_cxc` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"registrado_por","definicion":"`registrado_por` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"notas","definicion":"`notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"referencia","definicion":"`referencia` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_venta_mostrador_id","tipo":"index","definicion":"KEY `idx_venta_mostrador_id` (`venta_mostrador_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_ventas_mostrador_pagos_venta","tipo":"foreign","definicion":"CONSTRAINT `fk_ventas_mostrador_pagos_venta` FOREIGN KEY (`venta_mostrador_id`) REFERENCES `ventas_mostrador` (`id`) ON DELETE CASCADE"}]},"venta_detalles":{"create":"CREATE TABLE `venta_detalles` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `venta_id` int(11) NOT NULL,\n  `producto_id` int(11) NOT NULL,\n  `producto_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `cantidad` decimal(10,2) NOT NULL,\n  `estatus_preparacion` enum('pendiente','preparado','sin_existencia') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente',\n  `marcado_sin_stock` tinyint(1) NOT NULL DEFAULT 0,\n  `cantidad_escaneada` int(11) NOT NULL DEFAULT 0,\n  `cantidad_devuelta` decimal(10,2) DEFAULT 0.00,\n  `precio_unitario` decimal(12,4) NOT NULL,\n  `precio_unitario_original` decimal(12,4) DEFAULT NULL,\n  `subtotal` decimal(10,2) NOT NULL,\n  `impuesto` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `descuento` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL,\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `precio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista',\n  `comentario` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `costo` decimal(12,4) DEFAULT 0.0000,\n  `costo_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tipo de costo usado: precio_compra o costo_precios',\n  `aplica_comision` tinyint(1) DEFAULT 0,\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_venta` (`venta_id`),\n  KEY `idx_producto` (`producto_id`),\n  KEY `idx_estatus_preparacion` (`estatus_preparacion`),\n  KEY `idx_cantidad_escaneada` (`cantidad_escaneada`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `venta_detalles_ibfk_1` FOREIGN KEY (`venta_id`) REFERENCES `ventas` (`id`) ON DELETE CASCADE,\n  CONSTRAINT `venta_detalles_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_id","definicion":"`producto_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"producto_nombre","definicion":"`producto_nombre` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"cantidad","definicion":"`cantidad` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"estatus_preparacion","definicion":"`estatus_preparacion` enum('pendiente','preparado','sin_existencia') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pendiente'","tipo":"enum('pendiente','preparado','sin_existencia')","nulo":false},{"nombre":"marcado_sin_stock","definicion":"`marcado_sin_stock` tinyint(1) NOT NULL DEFAULT 0","tipo":"tinyint(1)","nulo":false},{"nombre":"cantidad_escaneada","definicion":"`cantidad_escaneada` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"cantidad_devuelta","definicion":"`cantidad_devuelta` decimal(10,2) DEFAULT 0.00","tipo":"decimal(10,2)","nulo":true},{"nombre":"precio_unitario","definicion":"`precio_unitario` decimal(12,4) NOT NULL","tipo":"decimal(12,4)","nulo":false},{"nombre":"precio_unitario_original","definicion":"`precio_unitario_original` decimal(12,4) DEFAULT NULL","tipo":"decimal(12,4)","nulo":true},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"precio_tipo","definicion":"`precio_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'precio_lista'","tipo":"varchar(20)","nulo":true},{"nombre":"comentario","definicion":"`comentario` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(255)","nulo":true},{"nombre":"costo","definicion":"`costo` decimal(12,4) DEFAULT 0.0000","tipo":"decimal(12,4)","nulo":true},{"nombre":"costo_tipo","definicion":"`costo_tipo` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Tipo de costo usado: precio_compra o costo_precios'","tipo":"varchar(20)","nulo":true},{"nombre":"aplica_comision","definicion":"`aplica_comision` tinyint(1) DEFAULT 0","tipo":"tinyint(1)","nulo":true},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_venta","tipo":"index","definicion":"KEY `idx_venta` (`venta_id`)"},{"nombre":"idx_producto","tipo":"index","definicion":"KEY `idx_producto` (`producto_id`)"},{"nombre":"idx_estatus_preparacion","tipo":"index","definicion":"KEY `idx_estatus_preparacion` (`estatus_preparacion`)"},{"nombre":"idx_cantidad_escaneada","tipo":"index","definicion":"KEY `idx_cantidad_escaneada` (`cantidad_escaneada`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"venta_detalles_ibfk_1","tipo":"foreign","definicion":"CONSTRAINT `venta_detalles_ibfk_1` FOREIGN KEY (`venta_id`) REFERENCES `ventas` (`id`) ON DELETE CASCADE"},{"nombre":"venta_detalles_ibfk_2","tipo":"foreign","definicion":"CONSTRAINT `venta_detalles_ibfk_2` FOREIGN KEY (`producto_id`) REFERENCES `productos` (`id`)"}]},"venta_pagos":{"create":"CREATE TABLE `venta_pagos` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `venta_id` int(11) NOT NULL COMMENT 'Referencia a la venta',\n  `tipo_venta` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'venta',\n  `monto` decimal(10,2) NOT NULL COMMENT 'Monto del pago\/abono',\n  `metodo_pago` enum('efectivo','tarjeta','transferencia') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'efectivo',\n  `referencia` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'N\u251c\u2551mero de referencia\/transacci\u251c\u2502n',\n  `notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Notas adicionales del pago',\n  `registrado_por` int(11) NOT NULL COMMENT 'Usuario que registr\u251c\u2502 el pago',\n  `pago_cliente_id` int(11) DEFAULT NULL,\n  `fecha_pago` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Fecha y hora del pago',\n  `fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_venta_pagos_venta` (`venta_id`),\n  KEY `idx_venta_pagos_fecha` (`fecha_pago`),\n  KEY `idx_venta_pagos_usuario` (`registrado_por`),\n  KEY `idx_pago_cliente` (`pago_cliente_id`),\n  KEY `idx_updated_at` (`updated_at`),\n  CONSTRAINT `fk_venta_pago_cliente` FOREIGN KEY (`pago_cliente_id`) REFERENCES `pagos_clientes` (`id`) ON DELETE SET NULL,\n  CONSTRAINT `fk_venta_pagos_usuario` FOREIGN KEY (`registrado_por`) REFERENCES `usuarios` (`id`) ON UPDATE CASCADE,\n  CONSTRAINT `fk_venta_pagos_venta` FOREIGN KEY (`venta_id`) REFERENCES `ventas` (`id`) ON UPDATE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Historial de pagos\/abonos de ventas a cr\u251c\u00aedito'","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"venta_id","definicion":"`venta_id` int(11) NOT NULL COMMENT 'Referencia a la venta'","tipo":"int(11)","nulo":false},{"nombre":"tipo_venta","definicion":"`tipo_venta` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'venta'","tipo":"varchar(20)","nulo":true},{"nombre":"monto","definicion":"`monto` decimal(10,2) NOT NULL COMMENT 'Monto del pago\/abono'","tipo":"decimal(10,2)","nulo":false},{"nombre":"metodo_pago","definicion":"`metodo_pago` enum('efectivo','tarjeta','transferencia') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'efectivo'","tipo":"enum('efectivo','tarjeta','transferencia')","nulo":false},{"nombre":"referencia","definicion":"`referencia` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'N\u251c\u2551mero de referencia\/transacci\u251c\u2502n'","tipo":"varchar(100)","nulo":true},{"nombre":"notas","definicion":"`notas` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Notas adicionales del pago'","tipo":"text","nulo":true},{"nombre":"registrado_por","definicion":"`registrado_por` int(11) NOT NULL COMMENT 'Usuario que registr\u251c\u2502 el pago'","tipo":"int(11)","nulo":false},{"nombre":"pago_cliente_id","definicion":"`pago_cliente_id` int(11) DEFAULT NULL","tipo":"int(11)","nulo":true},{"nombre":"fecha_pago","definicion":"`fecha_pago` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Fecha y hora del pago'","tipo":"datetime","nulo":false},{"nombre":"fecha_creacion","definicion":"`fecha_creacion` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_venta_pagos_venta","tipo":"index","definicion":"KEY `idx_venta_pagos_venta` (`venta_id`)"},{"nombre":"idx_venta_pagos_fecha","tipo":"index","definicion":"KEY `idx_venta_pagos_fecha` (`fecha_pago`)"},{"nombre":"idx_venta_pagos_usuario","tipo":"index","definicion":"KEY `idx_venta_pagos_usuario` (`registrado_por`)"},{"nombre":"idx_pago_cliente","tipo":"index","definicion":"KEY `idx_pago_cliente` (`pago_cliente_id`)"},{"nombre":"idx_updated_at","tipo":"index","definicion":"KEY `idx_updated_at` (`updated_at`)"},{"nombre":"fk_venta_pago_cliente","tipo":"foreign","definicion":"CONSTRAINT `fk_venta_pago_cliente` FOREIGN KEY (`pago_cliente_id`) REFERENCES `pagos_clientes` (`id`) ON DELETE SET NULL"},{"nombre":"fk_venta_pagos_usuario","tipo":"foreign","definicion":"CONSTRAINT `fk_venta_pagos_usuario` FOREIGN KEY (`registrado_por`) REFERENCES `usuarios` (`id`) ON UPDATE CASCADE"},{"nombre":"fk_venta_pagos_venta","tipo":"foreign","definicion":"CONSTRAINT `fk_venta_pagos_venta` FOREIGN KEY (`venta_id`) REFERENCES `ventas` (`id`) ON UPDATE CASCADE"}]},"visitas_sin_compra":{"create":"CREATE TABLE `visitas_sin_compra` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `app_visita_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `cliente_id` int(11) NOT NULL,\n  `cliente_nombre` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `usuario_id` int(11) NOT NULL,\n  `usuario_nombre` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `motivo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `notas` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `latitud` decimal(10,8) DEFAULT NULL,\n  `longitud` decimal(11,8) DEFAULT NULL,\n  `precision_gps` decimal(6,2) DEFAULT NULL,\n  `fecha_visita` datetime NOT NULL DEFAULT current_timestamp(),\n  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),\n  `updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),\n  PRIMARY KEY (`id`),\n  KEY `idx_cliente` (`cliente_id`),\n  KEY `idx_usuario` (`usuario_id`),\n  KEY `idx_fecha` (`fecha_visita`),\n  KEY `idx_app_id` (`app_visita_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL AUTO_INCREMENT","tipo":"int(11)","nulo":false},{"nombre":"app_visita_id","definicion":"`app_visita_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"varchar(100)","nulo":true},{"nombre":"cliente_id","definicion":"`cliente_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"cliente_nombre","definicion":"`cliente_nombre` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"usuario_id","definicion":"`usuario_id` int(11) NOT NULL","tipo":"int(11)","nulo":false},{"nombre":"usuario_nombre","definicion":"`usuario_nombre` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"motivo","definicion":"`motivo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL","tipo":"varchar(255)","nulo":false},{"nombre":"notas","definicion":"`notas` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL","tipo":"text","nulo":true},{"nombre":"latitud","definicion":"`latitud` decimal(10,8) DEFAULT NULL","tipo":"decimal(10,8)","nulo":true},{"nombre":"longitud","definicion":"`longitud` decimal(11,8) DEFAULT NULL","tipo":"decimal(11,8)","nulo":true},{"nombre":"precision_gps","definicion":"`precision_gps` decimal(6,2) DEFAULT NULL","tipo":"decimal(6,2)","nulo":true},{"nombre":"fecha_visita","definicion":"`fecha_visita` datetime NOT NULL DEFAULT current_timestamp()","tipo":"datetime","nulo":false},{"nombre":"created_at","definicion":"`created_at` timestamp NOT NULL DEFAULT current_timestamp()","tipo":"timestamp","nulo":false},{"nombre":"updated_at","definicion":"`updated_at` datetime(6) DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6)","tipo":"datetime(6)","nulo":true}],"indices":[{"nombre":"PRIMARY","tipo":"primary","definicion":"PRIMARY KEY (`id`)"},{"nombre":"idx_cliente","tipo":"index","definicion":"KEY `idx_cliente` (`cliente_id`)"},{"nombre":"idx_usuario","tipo":"index","definicion":"KEY `idx_usuario` (`usuario_id`)"},{"nombre":"idx_fecha","tipo":"index","definicion":"KEY `idx_fecha` (`fecha_visita`)"},{"nombre":"idx_app_id","tipo":"index","definicion":"KEY `idx_app_id` (`app_visita_id`)"}]},"_bkp_ventas_subtotal_migracion":{"create":"CREATE TABLE `_bkp_ventas_subtotal_migracion` (\n  `id` int(11) NOT NULL DEFAULT 0,\n  `subtotal` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `impuesto` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `descuento` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL DEFAULT 0.00\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false}],"indices":[]},"_bkp_venta_detalles_subtotal_migracion":{"create":"CREATE TABLE `_bkp_venta_detalles_subtotal_migracion` (\n  `id` int(11) NOT NULL DEFAULT 0,\n  `subtotal` decimal(10,2) NOT NULL,\n  `impuesto` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `descuento` decimal(10,2) NOT NULL DEFAULT 0.00,\n  `total` decimal(10,2) NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4","columnas":[{"nombre":"id","definicion":"`id` int(11) NOT NULL DEFAULT 0","tipo":"int(11)","nulo":false},{"nombre":"subtotal","definicion":"`subtotal` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false},{"nombre":"impuesto","definicion":"`impuesto` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"descuento","definicion":"`descuento` decimal(10,2) NOT NULL DEFAULT 0.00","tipo":"decimal(10,2)","nulo":false},{"nombre":"total","definicion":"`total` decimal(10,2) NOT NULL","tipo":"decimal(10,2)","nulo":false}],"indices":[]}},"vistas":["vista_categorias"],"triggers":["trg_editado_nube_cotizaciones","trg_editado_nube_cotizaciones_detalles"],"permisos":[{"nombre":"usuarios_ver","descripcion":"Acceso completo al m\u00f3dulo de gesti\u00f3n de usuarios","modulo":"usuarios","accion":"ver","activo":"1"},{"nombre":"roles_ver","descripcion":"Acceso completo al m\u00f3dulo de gesti\u00f3n de roles y permisos","modulo":"roles","accion":"ver","activo":"1"},{"nombre":"productos_ver","descripcion":"Acceso completo al m\u00f3dulo de productos e inventario","modulo":"productos","accion":"ver","activo":"1"},{"nombre":"ventas_ver","descripcion":"Acceso completo al m\u00f3dulo de procesamiento de ventas","modulo":"ventas","accion":"ver","activo":"1"},{"nombre":"reportes_ver","descripcion":"Acceso completo al m\u00f3dulo de reportes y an\u00e1lisis","modulo":"reportes","accion":"ver","activo":"1"},{"nombre":"clientes_ver","descripcion":"Acceso completo al m\u00f3dulo de gesti\u00f3n de clientes","modulo":"clientes","accion":"ver","activo":"1"},{"nombre":"configuracion_ver","descripcion":"Acceso completo al m\u00f3dulo de configuraci\u00f3n del sistema","modulo":"configuracion","accion":"ver","activo":"1"},{"nombre":"vehiculos_ver","descripcion":"Acceso a Veh\u00edculos","modulo":"vehiculos","accion":"ver","activo":"1"},{"nombre":"rangos_flete_ver","descripcion":"Acceso a Rangos de Flete","modulo":"rangos_flete","accion":"ver","activo":"1"},{"nombre":"flete_ver","descripcion":"Acceso a Gesti\u00f3n de Flete","modulo":"flete","accion":"ver","activo":"1"},{"nombre":"reportes_ventas_ver","descripcion":"Acceso a Reportes de Ventas","modulo":"reportes","accion":"ver","activo":"1"},{"nombre":"catalogos_ver","descripcion":"Acceso al m\u00bedulo de Cat\u00dflogos","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"almacen_ver","descripcion":"Acceso al Cat\u00dflogo de Almac\u00dan","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"pikeng_ver","descripcion":"Acceso a Pikeng en Almac\u00dan","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"logistica_ver","descripcion":"Ver m\u00bedulo de log\u00ddstica","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"medido_hoy_ver","descripcion":"Acceso a Medido hoy en Log\u00ddstica","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"ventas_mostrador_ver","descripcion":"Acceso a Ventas de Mostrador","modulo":"ventas","accion":"ver","activo":"1"},{"nombre":"pedidos_ver","descripcion":"Acceso a Pedidos","modulo":"ventas","accion":"ver","activo":"1"},{"nombre":"almacenes_ver","descripcion":"Acceso a Gestion de Almacenes","modulo":"almacenes","accion":"ver","activo":"1"},{"nombre":"categorias_ver","descripcion":"Acceso a Gestion  de Categor\u251c\u00a1as de Productos","modulo":"productos","accion":"","activo":"1"},{"nombre":"proveedores_ver","descripcion":"Ver proveedores","modulo":"productos","accion":"","activo":"1"},{"nombre":"gestion_usuarios_ver","descripcion":"Acceso al grupo de Gestion  de Usuarios en el men\u251c\u2551","modulo":"usuarios","accion":"","activo":"1"},{"nombre":"picking_ver","descripcion":"Acceso completo al m\u00f3dulo de procesamiento de ventas","modulo":"picking","accion":"ver","activo":"1"},{"nombre":"preparacion_ver","descripcion":"Acceso al m\u00bedulo de Preparaci\u00ben","modulo":"almacen","accion":"ver","activo":"1"},{"nombre":"proveedores_crear","descripcion":"Crear proveedores","modulo":"proveedores","accion":"","activo":"1"},{"nombre":"proveedores_editar","descripcion":"Editar proveedores","modulo":"proveedores","accion":"","activo":"1"},{"nombre":"proveedores_eliminar","descripcion":"Eliminar proveedores","modulo":"proveedores","accion":"","activo":"1"},{"nombre":"ordenes_compra_ver","descripcion":"Ver \u00f3rdenes de compra","modulo":"compras","accion":"","activo":"1"},{"nombre":"ordenes_compra_crear","descripcion":"Crear \u00f3rdenes de compra","modulo":"compras","accion":"","activo":"1"},{"nombre":"ordenes_compra_editar","descripcion":"Editar \u00f3rdenes de compra","modulo":"compras","accion":"","activo":"1"},{"nombre":"ordenes_compra_aprobar","descripcion":"Aprobar \u00f3rdenes de compra","modulo":"compras","accion":"","activo":"1"},{"nombre":"ordenes_compra_recibir","descripcion":"Recibir \u00f3rdenes de compra","modulo":"compras","accion":"","activo":"1"},{"nombre":"ordenes_compra_cancelar","descripcion":"Cancelar \u00f3rdenes de compra","modulo":"compras","accion":"","activo":"1"},{"nombre":"cxp_ver","descripcion":"Ver cuentas por pagar","modulo":"compras","accion":"","activo":"1"},{"nombre":"cxp_pagar","descripcion":"Marcar cuentas como pagadas","modulo":"compras","accion":"","activo":"1"},{"nombre":"caratula_pedidos_ver","descripcion":"Ver car\u00dftula de pedidos y rutas de entrega","modulo":"logistica","accion":"ver","activo":"1"},{"nombre":"caratula_pedidos_crear","descripcion":"Crear rutas de entrega","modulo":"logistica","accion":"crear","activo":"1"},{"nombre":"caratula_pedidos_editar","descripcion":"Editar rutas y ordenar pedidos","modulo":"logistica","accion":"editar","activo":"1"},{"nombre":"caratula_pedidos_eliminar","descripcion":"Eliminar rutas de entrega","modulo":"logistica","accion":"eliminar","activo":"1"},{"nombre":"corte_caja_ver","descripcion":"Acceso a Corte de Caja","modulo":"ventas","accion":"ver","activo":"1"},{"nombre":"facturacion_ver","descripcion":"Ver facturas","modulo":"facturacion","accion":"","activo":"1"},{"nombre":"facturacion_crear","descripcion":"Crear facturas","modulo":"facturacion","accion":"","activo":"1"},{"nombre":"facturacion_descargar","descripcion":"Descargar PDF\/XML de facturas","modulo":"facturacion","accion":"","activo":"1"},{"nombre":"facturacion_reenviar","descripcion":"Reenviar facturas por email","modulo":"facturacion","accion":"","activo":"1"},{"nombre":"facturacion_reportes","descripcion":"Ver reportes de facturaci\u00ben","modulo":"facturacion","accion":"","activo":"1"},{"nombre":"cxc_ver","descripcion":"Ver cuentas por cobrar","modulo":"cxc","accion":"","activo":"1"},{"nombre":"cxc_registrar_pago","descripcion":"Registrar pagos y abonos","modulo":"cxc","accion":"","activo":"1"},{"nombre":"cxc_ver_historial","descripcion":"Ver historial de pagos","modulo":"cxc","accion":"","activo":"1"},{"nombre":"cxc_exportar","descripcion":"Exportar reportes de CXC","modulo":"cxc","accion":"","activo":"1"},{"nombre":"pagos_clientes_ver","descripcion":"Ver pagos de clientes","modulo":"cxc","accion":"","activo":"1"},{"nombre":"productos_editar","descripcion":"Editar precios y datos de productos","modulo":"productos","accion":"editar","activo":"1"},{"nombre":"retiro_efectivo","descripcion":"Permite realizar retiros de efectivo de caja","modulo":"caja","accion":"ejecutar","activo":"1"},{"nombre":"devolucion_autorizar","descripcion":"Permite autorizar devoluciones de art\u00ddculos","modulo":"ventas","accion":"ejecutar","activo":"1"},{"nombre":"ingreso_efectivo","descripcion":"Permite registrar ingresos de efectivo a caja","modulo":"caja","accion":"crear","activo":"1"},{"nombre":"reporte_ventas_mostrador","descripcion":"Permite ver el reporte de ventas de mostrador","modulo":"reportes","accion":"ver","activo":"1"},{"nombre":"ventas_precio_libre","descripcion":"Capturar precio libre en\r\n     ventas (no menor al costo)","modulo":"ventas","accion":"precio_libre","activo":"1"},{"nombre":"precios_ray","descripcion":"Acceso a pantalla de Precios Ray para gesti\u00f3n de precios","modulo":"inventario","accion":"editar_precios","activo":"1"},{"nombre":"configuracion_admin","descripcion":"Administrar configuraciones de \r\n  empresa (logo, comisiones, campo de costo)","modulo":"configuracion","accion":"admin","activo":"1"},{"nombre":"etiquetas_zebra","descripcion":"Acceso a impresion de etiquetas en impresoras Zebra","modulo":"catalogos","accion":"","activo":"1"},{"nombre":"devoluciones_ver","descripcion":"Ver y realizar devoluciones","modulo":"devoluciones","accion":"ver","activo":"1"},{"nombre":"facturacion_config","descripcion":"Configurar emisores y servicio de     facturaci\u00f3n","modulo":"facturacion","accion":"config","activo":"1"},{"nombre":"cancelar_ticket","descripcion":"Cancelar tickets de venta de mostrador","modulo":"ventas","accion":"","activo":"1"},{"nombre":"editar_ticket","descripcion":"Editar tickets de venta de mostrador","modulo":"ventas","accion":"","activo":"1"},{"nombre":"reimprimir_ticket","descripcion":"Reimprimir tickets de venta","modulo":"ventas","accion":"reimprimir","activo":"1"},{"nombre":"clientes_configuracion","descripcion":"Acceder a configura\r\nci\u00f3n de precio y cr\u00e9dito de clientes","modulo":"clientes","accion":"co\r\nnfiguracion","activo":"1"},{"nombre":"complementos_pago_ver","descripcion":"Ver complementos de pago","modulo":"facturacion","accion":"","activo":"1"},{"nombre":"complementos_pago_crear","descripcion":"Crear complementos de pago (REP)","modulo":"facturacion","accion":"","activo":"1"},{"nombre":"ventas_precios_ruta","descripcion":"Ver listas de Precio Ruta en el selector de precios (F2)","modulo":"ventas","accion":"","activo":"1"},{"nombre":"transferencias_ver","descripcion":"Ver y registrar transferencias entre almacenes","modulo":"transferencias","accion":"ver","activo":"1"},{"nombre":"cotizaciones_ver","descripcion":"Ver y crear cotizaciones","modulo":"ventas","accion":"ver","activo":"1"},{"nombre":"compras_ver","descripcion":"Ver el men\u00b7 Productos \/ Compras","modulo":"compras","accion":"ver","activo":"1"},{"nombre":"cuentas_bancarias_ver","descripcion":"Acceso al cat\u251c\u00edlogo de Cuentas bancarias y cajas","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"fin_categorias_ver","descripcion":"Cat\u00e1logo de categor\u00edas financieras","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"fin_cxp_ver","descripcion":"Egresos: cuentas por pagar","modulo":"egresos","accion":"ver","activo":"1"},{"nombre":"fin_programacion_ver","descripcion":"Egresos: programaci\u00f3n de pagos","modulo":"egresos","accion":"ver","activo":"1"},{"nombre":"fin_autorizaciones_ver","descripcion":"Egresos: autorizar o rechazar pagos programados","modulo":"egresos","accion":"ver","activo":"1"},{"nombre":"fin_egresos_ver","descripcion":"Egresos: registrar y consultar pagos realizados","modulo":"egresos","accion":"ver","activo":"1"},{"nombre":"fin_nomina_ver","descripcion":"N\u00f3mina: registro de pagos por centro","modulo":"nomina","accion":"ver","activo":"1"},{"nombre":"fin_tesoreria_ver","descripcion":"Tesorer\u00eda: saldos, movimientos y transferencias","modulo":"tesoreria","accion":"ver","activo":"1"},{"nombre":"fin_caja_chica_ver","descripcion":"Tesorer\u00eda: caja chica, reposiciones y arqueos","modulo":"tesoreria","accion":"ver","activo":"1"},{"nombre":"fin_flujo_ver","descripcion":"Tesorer\u00eda: flujo de efectivo","modulo":"tesoreria","accion":"ver","activo":"1"},{"nombre":"reporte_gerencial_ver","descripcion":"Ver el Reporte Gerencial (consolidado por sucursal y canal)","modulo":"reportes","accion":"ver","activo":"1"},{"nombre":"fin_resultados_ver","descripcion":"Resultados: estado de resultados por centro","modulo":"resultados","accion":"ver","activo":"1"},{"nombre":"fin_movimientos_centro_ver","descripcion":"Resultados: movimientos por centro y reasignaci\u00f3n","modulo":"resultados","accion":"ver","activo":"1"},{"nombre":"fin_asignacion_ver","descripcion":"Resultados: reglas de asignaci\u00f3n corporativa","modulo":"resultados","accion":"ver","activo":"1"},{"nombre":"fin_presupuesto_ver","descripcion":"Resultados: presupuesto por centro y categor\u00eda","modulo":"resultados","accion":"ver","activo":"1"},{"nombre":"buscador_rapido","descripcion":"Acceso al buscador rapido","modulo":"ventas","accion":"","activo":"1"},{"nombre":"abrir_cajon","descripcion":"Permite abrir el caj\u00f3n de dinero manualmente","modulo":"ventas","accion":"","activo":"1"},{"nombre":"usuarios_crear","descripcion":"Permite crear usuarios","modulo":"usuarios","accion":"","activo":"1"},{"nombre":"usuarios_editar","descripcion":"Permite editar usuarios","modulo":"usuarios","accion":"","activo":"1"},{"nombre":"usuarios_eliminar","descripcion":"Permite eliminar usuarios","modulo":"usuarios","accion":"","activo":"1"},{"nombre":"roles_crear","descripcion":"Permite crear roles","modulo":"usuarios","accion":"","activo":"1"},{"nombre":"roles_editar","descripcion":"Permite editar roles","modulo":"usuarios","accion":"","activo":"1"},{"nombre":"roles_eliminar","descripcion":"Permite eliminar roles","modulo":"usuarios","accion":"","activo":"1"},{"nombre":"empleados_ver","descripcion":"Cat\u00e1logo de empleados (maestro compartido)","modulo":"catalogos","accion":"ver","activo":"1"},{"nombre":"flotilla_vehiculos_ver","descripcion":"Flotilla: veh\u00edculos (alta, ficha y baja)","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_conductores_ver","descripcion":"Flotilla: conductores y licencias","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_asignaciones_ver","descripcion":"Flotilla: asignaci\u00f3n de unidades a conductores","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_configuracion_ver","descripcion":"Flotilla: tipos de mantenimiento y configuraci\u00f3n","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_odometro_ver","descripcion":"Flotilla: capturar lecturas de kilometraje y consultar el historial","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_km_autorizar","descripcion":"Flotilla: autorizar o rechazar correcciones de kilometraje","modulo":"flotilla","accion":"autorizar","activo":"1"},{"nombre":"flotilla_combustible_ver","descripcion":"Flotilla: registrar, consultar y cancelar cargas de combustible","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_rendimiento_ver","descripcion":"Flotilla: rendimiento de combustible y costo por km","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_documentos_ver","descripcion":"Flotilla: documentos de veh\u00edculos, licencias y vencimientos","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_mantenimiento_ver","descripcion":"Flotilla: historial de mantenimientos (\u00f3rdenes de trabajo informativas)","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_llantas_ver","descripcion":"Flotilla: llantas (alta, montaje, rotaci\u00f3n, retiro y rendimiento)","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_seguros_ver","descripcion":"Flotilla: p\u00f3lizas de seguro, unidades cubiertas y devengo de la prima","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_siniestros_ver","descripcion":"Flotilla: siniestros, seguimiento y deducibles","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_multas_ver","descripcion":"Flotilla: multas e infracciones","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_panel_ver","descripcion":"Flotilla: panel de flotilla (estado, costos del mes y alertas)","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"flotilla_costos_ver","descripcion":"Flotilla: reporte gerencial, costos por km y TCO por veh\u00edculo, conductor y centro","modulo":"flotilla","accion":"ver","activo":"1"},{"nombre":"produccion_formulas_ver","descripcion":"Producci\u00f3n: ver f\u00f3rmulas, versiones y matriz por sucursal","modulo":"produccion","accion":"ver","activo":"1"},{"nombre":"produccion_formulas_editar","descripcion":"Producci\u00f3n: crear y editar f\u00f3rmulas y borradores","modulo":"produccion","accion":"editar","activo":"1"},{"nombre":"produccion_formulas_activar","descripcion":"Producci\u00f3n: activar versiones de f\u00f3rmula","modulo":"produccion","accion":"autorizar","activo":"1"},{"nombre":"produccion_asignaciones_editar","descripcion":"Producci\u00f3n: asignar f\u00f3rmulas por sucursal","modulo":"produccion","accion":"editar","activo":"1"},{"nombre":"produccion_costos_ver","descripcion":"Producci\u00f3n: ver costos de f\u00f3rmulas","modulo":"produccion","accion":"ver","activo":"1"},{"nombre":"produccion_costos_actualizar","descripcion":"Producci\u00f3n: actualizar el costo del cat\u00e1logo desde la f\u00f3rmula","modulo":"produccion","accion":"editar","activo":"1"},{"nombre":"produccion_config","descripcion":"Producci\u00f3n: configuraci\u00f3n (sucursal maestra, sucursales que producen)","modulo":"produccion","accion":"editar","activo":"1"},{"nombre":"produccion_ordenes_ver","descripcion":"Producci\u00f3n: ver \u00f3rdenes de producci\u00f3n y lotes","modulo":"produccion","accion":"ver","activo":"1"},{"nombre":"produccion_ordenes_crear","descripcion":"Producci\u00f3n: crear \u00f3rdenes planeadas","modulo":"produccion","accion":"crear","activo":"1"},{"nombre":"produccion_ordenes_operar","descripcion":"Producci\u00f3n: iniciar y terminar \u00f3rdenes","modulo":"produccion","accion":"ejecutar","activo":"1"},{"nombre":"produccion_ordenes_ajustar","descripcion":"Producci\u00f3n: ajustar el consumo real de una orden","modulo":"produccion","accion":"editar","activo":"1"},{"nombre":"produccion_ordenes_cancelar","descripcion":"Producci\u00f3n: cancelar \u00f3rdenes (con o sin merma)","modulo":"produccion","accion":"eliminar","activo":"1"},{"nombre":"produccion_calidad_capturar","descripcion":"Producci\u00f3n: capturar resultados de calidad del lote","modulo":"produccion","accion":"editar","activo":"1"},{"nombre":"produccion_calidad_liberar","descripcion":"Producci\u00f3n: liberar o rechazar lotes","modulo":"produccion","accion":"autorizar","activo":"1"},{"nombre":"produccion_tableta","descripcion":"Producci\u00f3n: operar la tableta de piso (entrar con PIN)","modulo":"produccion","accion":"ejecutar","activo":"1"},{"nombre":"produccion_tableta_admin","descripcion":"Producci\u00f3n: registrar tabletas y asignar PIN a t\u00e9cnicos","modulo":"produccion","accion":"config","activo":"1"},{"nombre":"produccion_reportes_ver","descripcion":"Producci\u00f3n: reportes (producci\u00f3n, rendimiento, consumo, costos, uso de f\u00f3rmulas, incidencias, calidad)","modulo":"produccion","accion":"ver","activo":"1"}],"base":"pos_abarrotes_ginez","generado":"2026-10-07 14:14:57","motor":"5.5.5-10.4.14-MariaDB"}