Novedades v3.0 — Mayo 2026
Refactor mayor del editor de artículos
- Ajuste rápido de stock desde el listado: cuando filtrás una bodega en la búsqueda, la columna Stock de cada artículo se vuelve editable con un control
[ − ] cantidad [ + ]. El botón − (rojo) resta y el + (verde) suma esa cantidad al stock actual; si en cambio escribís el total y presionás Enter, fija esa cantidad (ajusta por la diferencia) y salta a la siguiente fila. Cada cambio queda registrado en el kardex como ajuste (AJU) en la bodega filtrada. Requiere el permiso "Suma o resta existencia a una bodega" (405). - Botón "Buscar" resaltado: el botón de búsqueda del panel de filtros ahora tiene un fondo amarillo suave para ubicarlo más rápido.
- Lista de precios única: el panel ArticuloPrecios reemplaza la grilla legacy P1..P10. Toda la administración de precios va por los modales Editar Precio (MAP-001) y Agregar Precio (MAP-002).
- Modal Agregar Precio (MAP-002): permite definir N° de precio, alcance (este artículo o TODOS los activos), moneda, modo Auto/Manual, margen sobre Costo o Venta, % margen, redondeo y descuentos. Incluye barra de progreso para operaciones masivas.
- Modal Editar Precio (MAP-001) renovado: apariencia moderna con gradiente azul en la cabecera, esquinas redondeadas, animación de entrada y secciones tipo card. La sección Descuentos y Utilidad Mínima se reorganizó en mini-cards con icono semántico (🏷 Desc. Fijo, ↗ Desc. Máximo, 📈 Util. Mínima), texto de ayuda corto bajo cada campo y sufijo % visual dentro del input.
- Wizard "Nuevo Rápido" (W-001): botón verde en la barra de título que abre un asistente guiado de 4 pasos (Nombre → Categoría → Tributación → Precios+Imagen). La IA sugiere Categoría, SubCategoría, Naturaleza (Producto/Servicio) y CABYS desde el catálogo oficial de Hacienda. Pre-selecciona la tarifa IVA más usada y la actividad económica si solo hay una. En el paso final el usuario digita el precio NETO (con IVA) por cada nivel existente, y elige una imagen del producto desde sugerencias web.
- Eliminación de niveles de precio con selector de alcance: el botón Eliminar del modal MAP-001 ahora pregunta primero el alcance — "Solo este artículo" (default, sin captcha) o "Todos los artículos de la empresa" (captcha matemático obligatorio). Antes forzaba siempre alcance global. Si no hay artículo cargado, se fuerza el modo "Todos".
- Banner de niveles redundantes: en el card "Costos y Precios", cuando dos o más niveles tienen exactamente el mismo Precio + Moneda, aparece un banner amarillo con la leyenda "P4, P5, P6 son idénticos a P3 (CRC 500.00)" y un botón Eliminar redundantes que los borra solo en este artículo. Útil para limpiar catálogos legacy donde se repetían valores por defecto en los 10 niveles.
- Búsqueda de imágenes mejorada: el modal "Buscar imágenes" ahora usa DuckDuckGo Images con SafeSearch estricto, limpia automáticamente la descripción (quita códigos internos, símbolos placeholder, letras huérfanas) y enriquece la búsqueda con la Categoría y la Marca del artículo como hints contextuales. Lista negra defensiva de dominios. Resultados mucho más relevantes que antes (ej. "Fanta 350 ml" devuelve fotos reales de la gaseosa, no resultados aleatorios).
- Margen sobre Costo o Venta automático: el catálogo de artículos calcula y muestra el % de margen según el campo MargenSobre de cada nivel de precio. Indicador C (Costo / markup) o V (Venta / margen real) al lado del %.
- Configuración de campos visibles ampliada: Comisión % y Unidad de Medida también se pueden ocultar desde el botón ⚙ Config.
- Aplicar a TODOS los artículos: al agregar un nivel de precio se aplica automáticamente a TODOS los artículos activos (los niveles son globales). Sincronización automática a empresas externas en una sola operación.
- Origen del costo default = Promedio: al crear un artículo y aplicar una compra, el sistema usa el costo promedio sin necesidad de configurar manualmente.
- Stock por Bodega + Ajuste unificados: una sola card con botones
+/−por fila para sumar/restar stock con la cantidad y justificación que se escribe debajo. Lista TODAS las bodegas aunque el artículo no tenga stock todavía. - Botón Config en la barra de título: permite mostrar/ocultar 17 campos opcionales (Marca, Clase, Forma Farmacéutica, Cuenta Inventario, Partida Arancelaria, etc.) y el panel de Imágenes — la configuración es por empresa.
- Banda de auditoría compacta (Ventas, Creado, Modificado por, fechas) movida al pie en la barra de paginación, centrada.
- Categoría / Subcategoría reubicadas debajo del Nombre del artículo.
- Look modernizado: esquinas redondeadas, focus halos azules, hover sutil, botones tipo pill, badges Auto verde / Manual ámbar.
- Performance: operaciones masivas (12k+ artículos) ahora corren en segundos vía bulk INSERT y MERGE optimizados.
- Clonar conserva los precios: al clonar un artículo —o al cargar uno, cambiar el código por uno nuevo y Guardar— el artículo nuevo se crea con la misma lista de precios completa (margen, moneda, descuentos y redondeo de cada nivel) y los demás datos del original, sin tener que volver a cargarlos. Disponible en escritorio y móvil.
Vista general
El módulo Crear y Editar Artículos (IN-002) es la herramienta principal para administrar el catálogo de productos y servicios de la empresa. Desde aquí puede:
- Crear nuevos artículos con código automático o manual.
- Editar todos los datos de un artículo existente.
- Gestionar listas de precios multi-nivel y multi-moneda (cantidad de niveles definida por la empresa) con cálculo automático de margen y redondeo.
- Administrar múltiples imágenes por artículo (subir, pegar, reordenar, eliminar).
- Consultar y ajustar el stock por bodega.
- Buscar y filtrar artículos con más de 15 criterios combinables.
- Exportar resultados a Excel o PDF.
Flujo de trabajo recomendado
Estructura de pantalla
La pantalla se divide en dos áreas principales:
- Formulario (arriba) — Editor con 3 columnas: Datos + Costos/Precios, Otros Datos, e Imágenes + Inventario. En móvil se apilan verticalmente con acordeones colapsables.
- Buscador (abajo) — Tabla con filtros para localizar artículos. Al hacer clic en un artículo se carga en el formulario para editarlo.
- Eliminar el artículo: botón de papelera en el encabezado (solo si la existencia está en cero, igual que en escritorio).
- Ajustar stock por bodega: toque una bodega en la tarjeta Stock por Bodega y sume o reste unidades con su justificación; el movimiento queda en el kardex como ajuste (AJU).
Casos de uso por rol
- Consultar precio y stock desde facturación
- Ver imágenes para confirmar producto
- No modifica datos (solo lectura)
- Crear y editar artículos (permiso 411)
- Ajustar stock por bodega
- Administrar imágenes y categorías
- Buscar duplicados y hacer cambios globales
- Ver costos y utilidades (permiso 013)
- Validar CABYS y tarifa IVA
- Exportar catálogo a Excel para análisis
- Ajustar márgenes por subcategoría
Acceso y permisos
El módulo requiere los siguientes permisos:
| Permiso | Descripción | Funcionalidad |
|---|---|---|
| 411 | Crear y editar artículos | Guardar, eliminar, ajustar stock, subir imágenes |
| 055 | Ver existencias | Ver la tabla de Stock por Bodega |
| 013 | Ver costos y utilidades | Ver columnas de costo en la tabla de búsqueda |
Datos del artículo
La sección Datos contiene la información básica obligatoria del artículo:
| Campo | Tipo | Oblig. | Validación | Ejemplo |
|---|---|---|---|---|
| Código | VARCHAR(15) | Sí* | Máx 15 caracteres. Auto si se deja vacío (CCSS####). | 99010003 |
| Cód. Barra | VARCHAR(45) | No | EAN-13 / UPC. Sin validación de dígito verificador. | 7441003500150 |
| Nombre | VARCHAR(255) | Sí | Check MAYUSC opcional convierte a mayúsculas al guardar/cargar. |
Coca-Cola 600ml |
| Detalle Interno | VARCHAR(500) | No | Notas internas, buscables. No se muestran al cliente. | Lote julio 2026 |
| Categoría | CHAR(2) | Sí | FK a Tipo_Articulo. Modal selector. |
99 |
| SubCategoría | CHAR(2) | Sí | FK a SubTipo_Articulo dentro de la categoría. |
01 |
| Naturaleza | TINYINT | Sí | 1=Producto, 2=Servicio, 3=Receta. | 1 |
| Tarifa IVA | CHAR(2) | Sí | Código Hacienda: 01=exento, 08=13%, 02=1%, 03=2%, 04=4%. | 08 |
| Actividad | VARCHAR(6) | Cond. | Obligatorio si ParametrosEmpresa[125]=1. |
471100 |
| CABYS | CHAR(13) | Cond. | 13 dígitos. Validación contra catálogo Hacienda. Obligatorio si ParametrosEmpresa[125]=1. |
1122202100000 |
125 para que ambos campos sean obligatorios en el catálogo. El CABYS determina la tarifa de IVA por defecto; verifique que el cabys_tarifa coincida con el campo Tarifa IVA del artículo.
Código automático
Si deja el campo Código vacío al crear un artículo nuevo, el sistema genera uno automático con el formato:
99010001, 99010002, etc.
Buscador CABYS
Al hacer clic en el botón de lupa () junto al campo CABYS, se abre un modal donde puede buscar por código o por descripción. Al seleccionar un resultado, se rellena automáticamente el código y el nombre CABYS.
-- Crear artículo nuevo (los 7 campos obligatorios) INSERT INTO Articulos ( Cod_Articulo, Descripcion, Cod_Tipo_Articulo, Cod_SubTipo, Cod_Naturaleza, CodTarifaImpuesto, CodigoCabys, CodigoActividad ) VALUES ( '99010003', 'COCA-COLA 600ML', '99', '01', 1, '08', -- Producto, IVA 13% '1122202100000', '471100' );
Costos y precios
Esta sección administra el costo del artículo y la lista de precios multi-nivel (cantidad de niveles definida por la empresa) con cálculo automático de margen, redondeo y soporte multi-moneda.
Origen del costo
El primer renglón permite elegir qué costo se usa como referencia para los cálculos de margen y utilidad:
| Opción | Descripción |
|---|---|
| Manual | El costo se ingresa manualmente. Es el valor predeterminado. |
| Promedio | Usa el costo promedio calculado por el sistema basado en las compras. |
| Último | Usa el costo de la última compra registrada. |
| Bruto | Usa el costo bruto de compra (antes de impuestos). |
Opciones adicionales (checkboxes)
En la misma fila del origen del costo se encuentran opciones adicionales:
- P.Manual — Permite modificar el precio de venta manualmente durante la facturación. Si está desactivado, el precio está bloqueado.
- Sobregira — Permite vender el artículo aunque no haya stock disponible en la bodega.
- Fracción — Permite vender cantidades fraccionarias (ej: 0.5 kg, 1.25 metros).
- Serie — Requiere que se ingrese un número de serie al facturar este artículo.
- Web — Marca el artículo para mostrarse en la tienda en línea.
Tabla de costos
Debajo del origen se muestran 4 campos de costo alineados en columnas:
- Manual — Costo ingresado por el usuario (editable).
- Promedio — Costo promedio ponderado (se actualiza al registrar compras).
- Último — Costo de la última compra (se actualiza automáticamente).
- Bruto — Costo bruto de la última compra.
Cambiar la moneda del artículo (2026-07-18)
El artículo tiene una moneda propia, que se cambia desde la etiqueta de moneda en el encabezado de Datos básicos. Los costos guardados están expresados en esa moneda.
Al cambiarla y guardar, el sistema pregunta si desea convertir también los costos usando el tipo de cambio vigente:
- Aceptar — Se convierten los cuatro costos (Propio, Promedio, Último y Bruto). El costo resultante se traslada a los precios del artículo y se recalculan los que están en modo automático.
- Cancelar — Solo cambia la moneda; los costos quedan con el mismo número.
Ejemplo: un artículo en dólares con costo 1.50, al pasarlo a colones con un tipo de cambio de 455.14, queda con costo 682.71.
Tenga presente que cada nivel de precio tiene además su propia moneda, independiente de la del artículo. Cambiar la del artículo no modifica la de los niveles de precio.
Precios P1 a P10
Cada artículo puede tener hasta 10 precios de venta (P1 a P10). Cada precio tiene 4 columnas interrelacionadas:
| Columna | Descripción | Editable |
|---|---|---|
| Precio | Precio base de venta (sin IVA) | Sí |
| Margen % | Porcentaje de ganancia sobre el costo | Sí |
| Utilidad | Ganancia absoluta (Precio - Costo) | Sí |
| Venta+IVA | Precio final con impuesto incluido | Sí |
Kardex. Todos los movimientos pasan por InventarioMovimiento + actualización de Articulos.UltimoMovimiento. Si su integración consultaba Kardex, debe migrar a vista_movimientos.
Otros datos
La sección de Otros Datos contiene campos opcionales para información complementaria del artículo:
Generales
| Campo | Descripción |
|---|---|
| Estado | 1 = Activo, 2 = Inactivo, 3 = Eliminado, 4 = Descontinuado. Solo los activos aparecen en facturación. |
| Moneda | Moneda del artículo (CRC, USD, EUR). Si la empresa opera en colones, seleccione CRC. |
| Mínimo Stock | Cantidad mínima que debe existir en inventario. Se usa para alertas de reabastecimiento. |
| Máximo Stock | Cantidad máxima recomendada en inventario. |
| Desc. Máximo % | Porcentaje máximo de descuento que se puede aplicar al facturar este artículo. |
| Comisión % | Porcentaje de comisión para el agente de ventas al vender este artículo. |
| Ventas | Cantidad total de unidades vendidas (solo lectura, se actualiza automáticamente). |
| Descuento | Monto fijo de descuento aplicado al artículo. |
| Precio Sugerido | Precio sugerido por el fabricante o proveedor. |
Identificación
| Campo | Descripción |
|---|---|
| Cód. Universal | Código universal del producto (si aplica). |
| Proveedor | Proveedor principal asociado al artículo. |
| Marca | Marca comercial del producto. |
| Clase | Clasificación adicional libre. |
| Unidad Medida | Unidad de medida (ej: UND, KG, LT, MT). |
| Uds. x Medida | Cantidad de unidades por medida (ej: 6 latas por paquete). Valor predeterminado: 1. |
| Orden Compra | Número de orden de compra asociado. |
Farmacéutico
Para artículos farmacéuticos, se incluyen campos adicionales:
| Campo | Descripción |
|---|---|
| Forma Farmac. | Forma farmacéutica del medicamento (ej: tabletas, cápsulas, jarabe). Se selecciona de un catálogo con más de 200 formas. |
| Reg. Sanitario | Número de registro sanitario del producto (ej: 2101-YK-5279). |
Auditoría
Al final de la sección se muestran campos de solo lectura con información de auditoría:
- Creado — Fecha y hora de creación del artículo.
- Creado por — Usuario que creó el artículo.
- Modificado — Fecha y hora de la última modificación.
- Modifica por — Usuario que realizó la última modificación.
Cuenta Contable de Inventario (2026-05-01)
Cada artículo puede tener su propia cuenta contable de inventario. Se usa al registrar compras: cuando se aplica una compra, el monto del artículo aumenta esta cuenta en el asiento contable. Si el artículo no tiene cuenta asignada, el sistema usa la cuenta default global (Parámetro 92 en Configuración → Parámetros).
- Cta. Inventario — Doble clic en el campo abre un buscador del catálogo contable. Seleccione la cuenta y el código se rellena automáticamente.
- Si lo deja en blanco, se aplicará la cuenta default del Parámetro 92.
- Para casos especiales por proveedor (mismo artículo, distinta cuenta según proveedor), se usa la tabla
ProveedorArticuloCuentaque tiene prioridad sobre la cuenta del artículo.
La depreciación NO se configura por artículo. Si el artículo es un activo fijo, la cuenta de depreciación se asigna en el módulo Activos Fijos al registrar el activo individual (un mismo artículo puede dar origen a varios activos fijos con distintas cuentas de depreciación según uso, ubicación, etc.).
Imágenes
Cada artículo puede tener múltiples imágenes organizadas en un carrusel. La primera imagen se usa como imagen principal en otros módulos.
Agregar imágenes
Existen 3 formas de agregar imágenes:
- Botón + — Haga clic en el botón del encabezado "Imágenes" para abrir el selector de archivos. Soporta formatos JPG, PNG, GIF, WebP.
- Pegar (Ctrl+V) — Copie una imagen del portapapeles y péquela directamente en el área de la imagen. Ideal para capturas de pantalla.
- Arrastrar y soltar — Arrastre un archivo de imagen desde su explorador de archivos al área de la imagen.
Navegar entre imágenes
Use las flechas o las teclas de flecha izquierda/derecha del teclado para navegar entre las imágenes. El contador en el encabezado muestra la posición actual (ej: 2/5).
Eliminar imágenes
Haga clic en el botón del encabezado para eliminar la imagen actual. Se le pedirá confirmación antes de eliminar.
99010001.png). Las adicionales llevan un sufijo numérico.
Asignar imágenes desde mis archivos IN-014
¿Tiene una carpeta con muchas fotos de sus productos en la computadora y no quiere asignarlas una por una? Esta pantalla le permite cargar todas a la vez: el sistema lee la carpeta, reconoce a qué producto corresponde cada foto por el nombre del archivo y se las asigna en lote.
Paso a paso
- Abrir carpeta — Elija la carpeta de su equipo donde están las fotos. El sistema lista todas las imágenes que encuentre, con su miniatura.
- Elegir el método de coincidencia:
- IA (recomendado) — Reconoce el producto aunque el nombre del archivo esté abreviado o con las palabras en otro orden (ej:
coca 600.jpg→ COCA COLA 600 ML). Requiere saldo de IA. - Sin IA — aproximado por nombre — Compara por palabras en común. Funciona siempre, sin costo. Si el nombre del archivo se parece a la descripción, lo encuentra igual.
- IA (recomendado) — Reconoce el producto aunque el nombre del archivo esté abreviado o con las palabras en otro orden (ej:
- Analizar — El sistema arma una tabla: cada foto con el producto sugerido y un nivel de confianza (alta / media / baja).
- Revisar y corregir — Puede cambiar el producto de cualquier fila con la lista desplegable, o destildar las que no quiera asignar.
- Asignar seleccionadas — Sube y asigna las fotos marcadas. Cada una reemplaza la imagen principal del producto.
foto_2026-06-01.jpg, imagen1.png) probablemente queden sin coincidencia: eso es normal, asígnelas manualmente o renómbrelas.
Inventario
La sección de inventario muestra y permite gestionar el stock del artículo por bodega.
Stock por Bodega
La tabla muestra el stock actual del artículo en cada bodega donde tiene existencia:
| Columna | Descripción |
|---|---|
| Bod | Código de la bodega. |
| Nombre | Nombre de la bodega. |
| Stock | Cantidad actual en inventario. |
| Ubicación | Ubicación física dentro de la bodega (editable). Haga clic para cambiar la ubicación. Los cambios se guardan automáticamente al salir del campo o al presionar Enter. |
Ajuste de Stock
Permite realizar ajustes rápidos de inventario sin necesidad de crear una nota de entrada/salida:
- Toque la fila de la bodega donde desea ajustar el stock — queda marcada (resaltada). Si no toca ninguna, queda seleccionada la primera de la lista por defecto.
- Ingrese la cantidad a ajustar (en la barra inferior).
- Escriba una justificación para el ajuste (requerida para auditoría).
- Haga clic en + (sumar / entrada) o − (restar / salida).
Tras el ajuste la lista se actualiza con el nuevo stock y la bodega seleccionada se mantiene marcada (con un destello verde), así puede seguir aplicando + / − sobre la misma bodega sin tener que volver a tocarla.
Modal Kardex — movimientos del artículo MIN-003
El Kardex es un modal reutilizable que muestra el historial cronológico de movimientos (entradas, salidas, ajustes) del artículo cargado, con saldo corrido. Se abre desde el botón "Kardex" () en la barra de título del formulario.
Filtros del header
| Filtro | Tipo | Default | Descripción |
|---|---|---|---|
| Bodega | select | Todas | Filtrar movimientos por bodega. Si el kardex se abre desde un módulo con bodega preseleccionada (ej: Traslados), viene precargada. |
| Desde | date | Hoy − 3 meses | Fecha inicial (YYYY-MM-DD). El rango por defecto son los últimos 90 días. |
| Hasta | date | Hoy | Fecha final. Ambas fechas inclusive. |
Tipos de movimiento
- FAC — Factura de venta (salida, cantidad negativa)
- COM — Compra (entrada)
- DEV — Devolución (NC venta = entrada; NC compra = salida)
- REQ / RIN — Requisición / traslado interno
- TCI — Traslado entre empresas
- AJU — Ajuste manual desde la card "Ajuste Stock"
- TOM — Toma física aplicada
- NEI / NSI — Nota de entrada / salida manual
Acciones disponibles
- Buscar — aplica los filtros actuales y refresca la tabla.
- Excel — exporta los movimientos filtrados a XLSX con cabecera, totales y columnas tabulares.
- Doble clic en fila — abre el documento de origen (factura, traslado, toma física) en una nueva pestaña.
- Cerrar — ícono ✕ arriba a la derecha o tecla Esc.
RunningStock). Útil para auditar desfases de inventario punto a punto.
/componentes/modal_kardex/ y se invoca desde JS así:
// Preseleccionar bodega y abrir kardex.bodega = '2'; kardex.abrir('02010021', 'Coca 11');Además de IN-002, lo usan Traslados (IN-007), Toma Física (IN-TF-001) y Notas E/S (IN-009).
Crear un artículo nuevo
Para crear un artículo nuevo, siga estos pasos:
- Haga clic en el botón "Nuevo" () en la barra de título, o presione Ctrl+N. Esto limpia todos los campos del formulario.
- Ingrese el Código del artículo (opcional: déjelo vacío para código automático).
- Llene el Nombre del artículo. Opcionalmente active el check
MAYUSCjunto al rótulo para que el nombre se guarde y se muestre siempre en mayúsculas (la preferencia queda recordada en el navegador). - Seleccione la Categoría haciendo clic en el botón de lápiz ().
- Seleccione la Naturaleza (Producto, Servicio o Receta).
- Seleccione la Tarifa IVA.
- Ingrese el Costo y al menos el Precio 1.
- Haga clic en "Guardar" () o presione Ctrl+S.
Editar un artículo existente
Para editar un artículo:
- Busque el artículo en la sección de Búsqueda usando cualquier criterio (código, nombre, código de barra, etc.).
- Haga clic en la fila del artículo. Los datos se cargan automáticamente en el formulario superior.
- Modifique los campos que necesite cambiar.
- Haga clic en "Guardar" o presione Ctrl+S.
Clonar un artículo
La función de clonación crea una copia del artículo actual con un código nuevo, conservando los precios y todos los datos para que no tenga que volver a cargarlos.
- Cargue el artículo que desea clonar (búsquelo y haga clic en él).
- Haga clic en "Clonar" ().
- El formulario queda con todos los datos del artículo original y en modo "crear".
- Escriba el código nuevo (o déjelo vacío para uno automático) y cambie lo que necesite.
- Haga clic en "Guardar". El artículo nuevo se crea con la misma lista de precios (todos los niveles, con su margen, moneda, descuentos y redondeo), el costo y los demás datos del original.
Eliminar artículos
Puede eliminar artículos de dos formas:
Eliminación individual
Cargue el artículo en el formulario, luego use la opción de eliminación. El artículo cambia a estado Eliminado (3) pero permanece en la base de datos para auditoría.
Desde el celular: al editar un artículo aparece un botón de papelera en el encabezado. El borrado solo procede si la existencia está en cero; si tiene stock, el sistema lo bloquea.
Eliminación múltiple
- En la tabla de búsqueda, active los checkboxes de los artículos que desea eliminar.
- Haga clic en el botón "Eliminar" () que aparece en la barra de título.
- Confirme la operación. Los artículos seleccionados cambiarán a estado Eliminado.
Buscador
El buscador utiliza un sistema de búsqueda en cascada inteligente:
- Código exacto — Si el texto buscado coincide exactamente con un código de artículo (sin espacios), muestra solo ese artículo.
- Palabras múltiples — Si no hay coincidencia exacta, busca por palabras en los campos: código, código de barra, nombre y detalle interno. Todas las palabras deben coincidir (AND).
Columnas de la tabla
| Columna | Descripción |
|---|---|
| Código | Código del artículo (enlace al formulario). |
| Nombre | Nombre del artículo. |
| Categoría | Categoría y subcategoría. |
| Costo | Costo del artículo (solo con permiso 013). |
| Precio | Precio de venta según la lista seleccionada en filtros. |
| Vta+IVA | Precio final con IVA incluido. |
| IVA | Porcentaje de IVA aplicado. |
| Utilidad | Porcentaje de utilidad del precio seleccionado. Se calcula según cómo esté configurado ese nivel de precio: sobre el costo (marca C) o sobre la venta (marca V). En verde si hay ganancia, en rojo si el precio queda bajo el costo. Al pasar el mouse muestra la ganancia en colones. Se puede ordenar: haga clic en el encabezado Utilidad para ordenar de menor a mayor y otra vez para invertirlo. El orden se aplica a todo el inventario filtrado, no solo a la página visible, así que la primera página le trae realmente los artículos de mayor (o menor) utilidad. Ordenando de mayor a menor salen de primero los artículos con el costo en cero, cuyo porcentaje se dispara: es la forma más rápida de detectarlos y corregirles el costo. |
| Stock | Existencia total o por bodega filtrada. |
| Estado | Estado actual del artículo. |
Filtros avanzados
El buscador ofrece múltiples filtros combinables para refinar la búsqueda:
| Filtro | Tipo | Descripción |
|---|---|---|
| Buscar | Texto | Código, código de barra, nombre o detalle interno. |
| Categoría | Select | Filtra por categoría principal. |
| SubCat | Select | Filtra por subcategoría. |
| Estado | Select | Activo, Inactivo, Eliminado, Descontinuado. Por defecto: Activo. |
| Bodega | Select | Filtra stock por una bodega específica. |
| IVA | Select | Filtra por tarifa de IVA. |
| Naturaleza | Select | Producto, Servicio o Receta. |
| Precio | Select | Lista de precios a mostrar (P1 a P10). |
| Stock | Operador + Valor | Filtra por cantidad de stock (ej: >= 10, = 0, < 5). |
| Utilidad % | Operador + Valor | Filtra por el porcentaje de utilidad del precio seleccionado (ej: < 5 = artículos con menos del 5% de utilidad; >= 30, = 0). Respeta si el margen está configurado sobre costo o sobre venta. Ideal para detectar artículos vendiéndose con poca o nula ganancia. El filtro también aplica a la exportación a Excel. |
Filtros de checkbox
Debajo de los filtros principales hay checkboxes adicionales:
- Sin Actividad — Muestra solo artículos que no tienen actividad económica asignada.
- Sin CABYS — Muestra solo artículos sin código CABYS.
- Fraccionados — Muestra solo artículos que permiten venta fraccionaria.
- Con Descuento — Muestra solo artículos que tienen descuento máximo configurado.
- Mostrar Ventas — Al marcarse aparecen los inputs Ventas Desde / Hasta y se agrega la columna Vendido en la tabla con la cantidad de unidades vendidas en ese rango (las Notas de Crédito restan automáticamente). Se consideran solo documentos en Estado 1, 2 o 4 (procesados).
Filtros por fecha de creación
Independiente del check "Mostrar Ventas", el buscador tiene dos campos opcionales:
- Creado Desde — Solo muestra artículos cuyo
FechaCreadosea igual o posterior a la fecha indicada. - Creado Hasta — Solo muestra artículos cuyo
FechaCreadosea igual o anterior a la fecha indicada (límite inclusivo, fin de día).
Si dejás ambos vacíos no se aplica filtro de fecha de creación. Útil para ver qué artículos se crearon en un período específico (auditoría, alta de inventario, etc.).
Exportar
Los resultados de la búsqueda se pueden exportar en dos formatos:
Excel
Haga clic en el botón "Excel" () para descargar un archivo .xlsx con todos los artículos que coincidan con los filtros actuales.
Haga clic en el botón "PDF" () para generar un documento PDF con el listado.
Imprimir
El botón "Imprimir" () abre la ventana de impresión del navegador con una versión optimizada para papel. El formulario se oculta y solo se imprime la tabla de resultados.
Cambios globales
El modal Cambios Globales de Artículos permite aplicar una modificación masiva sobre varios artículos a la vez: cambiar familia, IVA, CABYS, marca, precios, costos, visibilidad web, sobregiro, fraccionamiento, estado (activar/eliminar), descargar fotos, etc.
Flujo de selección
- Aplique los filtros del buscador (por categoría, marca, IVA, stock, etc.).
- Marque los artículos a modificar:
- Checkbox individual en cada fila — selecciona solo ese artículo.
- Checkbox del encabezado (☑ "Seleccionar todos") — selecciona TODOS los artículos del filtro completo, no solo los de la página actual. Si hay varias páginas, muestra un indicador "Cargando..." mientras recupera la lista completa.
- Cuando hay más de una página de resultados, aparece una barra informativa amarilla bajo el encabezado que indica cuántos artículos están seleccionados (ej: "Seleccionados los 11,681 artículos del filtro (todas las páginas)"). Desde esta barra puede reducir el alcance a "Seleccionar solo esta página".
- Haga clic en el botón "Globales" () en la barra superior. Se abre el modal MIN-004 con un contador de artículos seleccionados.
- Complete los campos de la acción deseada y presione el botón correspondiente. Confirme la operación.
- El resultado aparece en el panel "Resultados" al pie del modal, con timestamp y número de artículos actualizados. El API procesa internamente en lotes de 500 registros.
Acciones disponibles (organizadas en 5 pestañas — v2.0.0 · 2026-05-05)
El modal MIN-004 ahora se presenta en pestañas de navegación para encontrar rápidamente la operación buscada. Cada pestaña agrupa cards con una operación cada una.
| Pestaña | Acción | Efecto |
|---|---|---|
| 📋 Identificación | Mover a Categoría | Cambia Categoría + Subcategoría. Ahora 2 inputs de texto libre con autocompletado desde la base de datos. Al elegir una categoría existente, las subcategorías se filtran automáticamente; también se puede crear una categoría nueva escribiéndola directamente. |
| Cambiar Naturaleza | Producto / Servicio / Receta. | |
| Cambiar Tipo IVA | Tarifa fiscal (01–08). | |
| Cambiar CABYS | Código Hacienda 13 dígitos. | |
| Fijar Marca | Asigna marca textual. | |
| Actividad Económica | Asocia código de actividad económica. | |
| Agregar / Quitar Texto | Append o remove del DetalleInterno. | |
| 📦 Stock | Establecer Mínimo | Define punto de reorden mínimo. |
| Establecer Máximo | Define stock máximo. | |
| Permitir / Quitar Sobregirar | Sobregira = 1/0. | |
| Permitir / Quitar Fraccionar | Fraccionamiento = 1/0. | |
| 💰 Precios por nivel (ArticuloPrecios) | Desc. Fijo por nivel | UPDATE ArticuloPrecios.DescuentoFijo en el nivel P1..Pn elegido. |
| Desc. Máximo por nivel | UPDATE ArticuloPrecios.DescuentoMaximo en el nivel elegido. Tope efectivo del descuento que cualquier cajero podrá aplicar. | |
| Util. Mínima por nivel | UPDATE ArticuloPrecios.UtilidadMinima en el nivel elegido. Se respeta SIEMPRE en facturación, incluso para usuarios con permiso 023 (descuento ilimitado). | |
| Margen Sobre por nivel | Cambia ArticuloPrecios.MargenSobre a COSTO o VENTA. Ahora dispara recálculo del precio desde el margen ancla con la nueva fórmula (antes solo cambiaba el flag y dejaba precios viejos). | |
| Modo de venta por nivel | Cambia ArticuloPrecios.PrecioAuto a 1 (Auto: recalcula con costo) o 0 (Manual: precio fijo). Ahora pasa por la función central: si cambia a Auto recalcula el Precio desde el Margen; si cambia a Manual recalcula el Margen desde el Precio. | |
| Redondeo de precio por nivel | Fija el paso de redondeo del Precio + IVA del nivel elegido y re-redondea el precio actual. Desplegable con grupos ↑ Hacia arriba (0.1, Entero, ×5, ×10, ×25, ×50, ×100, ×500, ×1000) y ↓ Hacia abajo (los mismos en negativo), más "2 decimales (sin redondeo)". Ej.: Precio+IVA 84.08 con ↓ ×5 queda en 80.00. | |
| 🏷️ Costo & Precio masivo | Ajustar Precio Venta % NUEVO | Card unificada con selector Aumentar / Quitar. Aumentar: Precio × (1 + pct/100). Quitar: Precio ÷ (1 + pct/100) — operación inversa. Útil para revertir un aumento masivo (subiste 5% ayer y hoy le das "Quitar 5%" → vuelve al precio original) o para extraer IVA cuando el precio ya lo incluye (quitar 13% = ÷ 1.13). Actualiza dbo.ArticuloPrecios. |
| Establecer Precio | Fija el nivel de precio (P1..Pn) a un monto específico en ArticuloPrecios. | |
| Actualizar Margen | Fija el margen % del nivel y recalcula el precio desde el costo, según el modo Costo/Venta del artículo. Escribe en ArticuloPrecios. | |
| Aumentar Costo % | Incrementa el costo actual por porcentaje y propaga a todos los niveles de ArticuloPrecios. | |
| Establecer Costo | Fija el costo a un monto específico y propaga a todos los niveles de ArticuloPrecios. | |
⚙ Sincronización automática con empresas externas: todos los cambios masivos sobre precios/costos/márgenes ahora replican automáticamente a las empresas configuradas en EmpresasSincronizadas (parámetro 239 = 1). Para cambios por nivel se hace un MERGE bulk por destino (un solo statement, rapidísimo). Para cambios de costo se sincroniza artículo por artículo porque afecta todos los niveles. | ||
| 👁️ Estado & Visibilidad | Activar / Eliminar Artículos | Cod_Estado = 1 o 3. |
| Mostrar / Ocultar en Web | MostrarEnWeb = 1/0. | |
| Descargar Fotos | Genera ZIP con imágenes existentes. | |
| Buscar y Asignar Fotos | Busca imágenes usando el endpoint web (DuckDuckGo + SafeSearch estricto) usando el nombre del artículo + Categoría + Marca como hints, y permite asignar la imagen correcta desde una galería de 4 sugerencias. | |
SELECT DISTINCT NumeroPrecio FROM dbo.ArticuloPrecios. Si la empresa solo tiene precios P1, P2 y P5, solo verás esos tres niveles. Esto vale para todas las operaciones de precio (pestañas Precios por nivel y Costo & Precio masivo).
DBVenta1..10; ahora actualizan directamente la tabla unificada dbo.ArticuloPrecios a través del mismo motor que usa el editor de artículos (con recálculo de margen, redondeo del Neto y soporte multi-moneda). Si algún artículo no tiene definido el nivel elegido, se reporta como aviso y no se interrumpe el resto.
Articulos.Categoria y Articulos.SubCategoria (no más códigos en tablas separadas). El input es un campo de texto libre con autocompletado desde lo ya existente en la BD.
Estilo de botones
Los botones están homologados en estilo Banking Bold (mismo tamaño, tipografía y padding) con dos tonos de azul según la acción:
- Azul primario
#0047AB— Acciones de asignación/activación (Mover, Establecer, Permitir, Activar, Mostrar, Descargar, Agregar). - Azul oscuro navy
#0a2540— Acciones de remoción (Quitar Sobregirar, Quitar Fraccionar, Ocultar en Web, Eliminar Artículos, Quita Texto).
/api/inventarios/cambios_globales_api.php valida el permiso 050 (Artículos, Editar) antes de ejecutar cualquier cambio.
Atajos de teclado
| Atajo | Acción |
|---|---|
| Ctrl+S | Guardar artículo |
| Ctrl+N | Nuevo artículo (limpiar formulario) |
| Ctrl+V | Pegar imagen del portapapeles (cuando el foco está en el área de imagen) |
| ↑ ↓ | Navegar entre filas de la tabla de búsqueda |
| Enter | Seleccionar fila resaltada en la tabla |
| Esc | Cerrar modales abiertos |
Errores comunes
Preguntas frecuentes
1. ¿Cómo cambio el precio de venta con IVA incluido?
Ingrese el precio final en la columna Venta+IVA de la fila de precio deseada (P1 a P10). El sistema calculará automáticamente el precio base, margen y utilidad.
2. ¿Puedo tener precios diferentes por cliente?
Sí. Cada cliente puede tener asignada una lista de precios (P1 a P10). Al facturar, el sistema usa automáticamente la lista asignada al cliente.
3. ¿Qué pasa si dejo el costo en 0?
El artículo se guardará con costo cero, pero los cálculos de margen y utilidad no funcionarán correctamente. Se recomienda siempre ingresar un costo, aunque sea estimado.
4. ¿Puedo vender un artículo sin stock?
Solo si el artículo tiene activado el checkbox Sobregira. Si está desactivado, el sistema impedirá facturar cantidades mayores al stock disponible.
5. ¿Cómo veo los movimientos de un artículo?
Al cargar un artículo en el formulario, aparece el botón "Kardex" () en la barra de título. Al hacer clic, se abre el modal MIN-003 filtrado por ese artículo.
6. ¿Qué diferencia hay entre Producto, Servicio y Receta?
- Producto (1) — Mercancía física que afecta el inventario al vender.
- Servicio (2) — No afecta inventario. Ideal para mano de obra, fletes, servicios profesionales.
- Receta (3) — Artículo compuesto. Al vender, se rebaja el stock de sus ingredientes individuales.
7. ¿Cómo sé si un artículo requiere CABYS?
Si los campos Actividad y CABYS tienen un asterisco (*) en su etiqueta, significa que el parámetro 125 de la empresa está activado y son obligatorios. Sin el asterisco, son opcionales.
8. ¿Puedo editar la ubicación del artículo en la bodega?
Sí. En la tabla de Stock por Bodega, el campo Ubicación es editable. Haga clic en él, escriba la ubicación y presione Enter o haga clic fuera del campo para guardar.
Permisos
Los permisos controlan qué acciones puede realizar cada usuario en el catálogo de artículos. Se asignan al grupo de usuarios desde el módulo de Seguridad (SE-001).
| Permiso | Descripción | Afecta |
|---|---|---|
053 | Ver catálogo de artículos (IN-001) | Acceso a la lista de artículos; sin este permiso redirige al menú |
411 | Crear y editar artículos (IN-002) | Botón Nuevo, formulario de creación y edición completa de artículos |
050 | Actualizar artículos en lote | Guardar cambios masivos desde la edición en línea del catálogo |
055 | Ver existencias en inventario | Columna stock y tabla de stock por bodega en el formulario |
013 | Ver costos y utilidades | Columnas de costo, margen y utilidad en el catálogo |
Parámetros de empresa
Los parámetros configuran el comportamiento del formulario de artículos y los campos obligatorios.
| Parámetro | Descripción | Uso en artículos |
|---|---|---|
125 | CABYS obligatorio (1=sí, 0=no) | Si está activo, los campos Actividad y CABYS se vuelven obligatorios al guardar el artículo |
249 | Moneda nacional de la empresa (ej: CRC, USD) | Determina el símbolo de moneda mostrado en los precios y costos |
62 | Nombre de la empresa | Encabezado del Excel y PDF al exportar el catálogo |
Versión móvil
Tanto el Catálogo (IN-001) como el Crear/Editar (IN-002) tienen una versión optimizada para celular. La detección es automática tanto por User-Agent como por ancho de pantalla, y el switch es transparente.
Cómo se decide qué versión cargar
- User-Agent móvil (iPhone/Android/iPad/etc.) → siempre carga el archivo
_movil.phpautomáticamente. - Ancho < 768 px en cualquier UA → JS detecta al primer paint y redirige a la versión móvil.
- Ancho ≥ 768 px sobre la versión móvil → JS detecta y redirige a la versión desktop.
Flags de override (consumibles)
Si querés forzar una versión específica, agregá a la URL:
?desktop=1— fuerza desktop esa carga (útil si tenés ventana angosta y querés ver el layout completo).?mobile=1— fuerza móvil esa carga (útil para previsualizar desde un desktop).
Importante: el flag se consume al cargar (se elimina del URL automáticamente). Si recargás (F5), la página vuelve a evaluar el ancho real. Esto evita que el flag quede pegado y bloquee la respuesta natural al redimensionar.
Catálogo móvil (IN-001 mobile)
- Cards con miniatura de imagen (60 px), código (mono azul), badge de estado, nombre 2 líneas, categoría/subcategoría, precio P# y stock con indicador visual (rojo si < 5, gris si 0).
- 3 filtros siempre visibles: Nombre (busca en nombre/código/barra), Estado (default Activo), Tipo Precio (selector dinámico según niveles configurados en la empresa).
- Filtros agregables con botón + Agregar filtro: Código, Barra, Categoría, SubCategoría, Naturaleza, Tarifa IVA, Paquetes, Stock (operador + valor).
- Auto-submit: cambios en selects disparan búsqueda inmediata; inputs de texto con debounce de 600 ms.
- FAB flotante "+" para crear nuevo artículo (si tenés permiso 411).
- Tap en card abre el editor móvil (
articulos_crear_movil.php?codigo=X). - Footer fijo: cantidad de artículos filtrados, stock total sumado, página actual.
Crear/Editar móvil (IN-002 mobile) — v2.0
Versión solo edición (no incluye buscador — para búsqueda usá el catálogo móvil). Desde mayo 2026 maneja la lista de precios multinivel completa (la misma tabla ArticuloPrecios del escritorio), no solo P1. Las cards se pueden colapsar tocando el header.
- Datos Básicos (abierta por defecto): Código, Cód. Barra, Nombre, Detalle Interno, Categoría / SubCategoría como texto libre con autocompletado (la subcategoría se filtra por la categoría escrita), Naturaleza, Tarifa IVA, CABYS, Actividad, Partida Arancelaria. La moneda del artículo y el estado se cambian con sus badges en el header.
- Costos y Precios:
- Los 4 costos (Propio / Promedio / Último / Bruto) con el selector de origen del costo. En edición hay un botón "Guardar costo (recalcula precios)" que actualiza el costo y recalcula automáticamente los precios y redondeos de toda la lista.
- Lista de precios (solo en edición): una tarjeta por nivel P1, P2, P3… con Costo (solo lectura), Precio sin IVA, Margen % (muestra entre paréntesis el margen real calculado), Sobre (COSTO / VENTA), Precio + IVA y un selector de Redondeo (↑ hacia arriba / ↓ hacia abajo, o "2 dec" sin redondeo). Hay un toggle AUTO / MAN por nivel: en AUTO el precio se recalcula al cambiar el costo; en MAN el precio queda fijo. Al editar Precio / Margen / Precio+IVA los demás se recalculan en vivo y al salir del campo se guarda. Botón "+ Agregar precio" para crear un nivel nuevo y un botón eliminar (🗑) por nivel. Al cambiar la Tarifa IVA se vuelve a buscar el porcentaje.
- En modo nuevo, primero hay que guardar el artículo: al recargarlo aparece la lista de precios para definir los niveles (mismo flujo que el escritorio).
- Cuenta Contable (si la empresa tiene la columna habilitada): input de la cuenta de inventario + botón lupa que abre un modal con buscador del catálogo contable.
- Imagen: tap en el cuadro abre cámara o galería (
capture="environment"). En modo edición sube automáticamente; en modo nuevo queda pendiente y se sube tras guardar con el código final. - Stock por Bodega (solo en edición + permiso 055): tabla read-only con Bodega, Stock y Ubicación. Para ajustar stock usá la versión desktop.
- Otros Datos (colapsada): Proveedor, Cód. Universal, Marca, Clase, Unidad, Uds×Med, Mín/Máx, Comisión, P. Sugerido, Orden Compra, Forma Farm., Reg. Sanit., y los 4 checks (Sobregira/Fracción/Serie/Web). Auditoría al final.
- Estado: badge clickeable en el header abre un modal selector con Activo/Inactivo/Eliminado/Descontinuado.
- Header: badge de Moneda, badge de Estado, botón Clonar (solo en edición), ir al Catálogo móvil, y Volver (regresa a la pestaña anterior).
- No incluye (para eso usá el escritorio): wizard de "Nuevo rápido", el modal avanzado de precio (Desc. Fijo / Máx / Util. Mínima), herramientas de IA, detección de duplicados, Kardex y el ajuste de stock.
Auto-generación de código en móvil
Igual que en desktop: si dejás el campo Código vacío al crear, el sistema lo arma con la fórmula Categoría + SubCategoría + consecutivo (4 dígitos) — por eso es obligatorio elegir SubCategoría cuando el código está en blanco. La etiqueta del campo dice "Código (vacío = auto)" para recordártelo.
Clonar artículo (móvil)
El botón del header (solo visible en edición) duplica el artículo actual en un nuevo registro:
- Mantiene todos los datos: precios, costos, categoría, IVA, naturaleza, proveedor, márgenes, etc.
- Limpia solo Código, Nombre y Cód. Barra para que ingreses los nuevos.
- Resetea la imagen (la imagen está atada al código del archivo PNG en disco).
- Oculta la card de Stock por Bodega (no aplica al artículo nuevo).
- Aparece un banner amarillo avisando que estás clonando, con botón Cancelar para volver al original.
Forzar desktop con ancho angosto
Si abrís el desktop con ?desktop=1 y la ventana mide menos de 768 px, el body recibe la clase force-desktop que anula los @media queries de mobile: la tabla sigue siendo tabla, los acordeones quedan abiertos, los botones muestran sus labels y el grid de 3 columnas se mantiene. Esto es solo para esa carga; al recargar se re-evalúa el ancho real.
Historial de cambios
Últimas actualizaciones al módulo Crear / Editar Artículo:
- Pantalla dividida ajustable: la zona de Datos del artículo (arriba) y la zona de Búsqueda (abajo) ahora ocupan exactamente la mitad de la pantalla cada una. Entre las dos hay una barra fina arrastrable con el mouse — la podés mover hacia arriba o abajo para darle más espacio a la que más uses (por ejemplo 60% Datos / 40% Búsqueda). El sistema recuerda tu preferencia en este navegador. Si querés volver al 50/50, hacé doble-clic sobre la barra divisoria.
- Letra más grande (16 px) en toda la columna derecha — Stock por Bodega, cantidades, Ubicación, barra "Ajuste de Inventario" (cantidad, justificación, botones + y −). Se ve cómodo sin esforzar la vista.
- Tabla de precios reescrita en una sola línea por nivel: cada precio se ve como
(margen virtual) (ganancia) [margen real]en la columna Margen, y Precio Sin Impuesto / Precio Neto en columnas separadas a la derecha. Toggle AUTO/MAN al inicio (slider con etiqueta). Letra 16 px pareja. Para editar campos avanzados (Desc. Fijo, Desc. Máximo, Utilidad Mínima, Redondeo, Sobre Costo/Venta), hacé doble-clic sobre la fila → se abre el modal "Modificar Precio". - Click en una fila de la lista de búsqueda → carga el artículo arriba. Antes a veces había un pequeño "brinco" al recargar la página o al cambiar de artículo — eso se eliminó (era un ajuste automático de zoom que ahora se aplica antes de pintar la pantalla).
- La lista de búsqueda se ordena al hacer click en el encabezado de cualquier columna (Código, Nombre, Stock, Cantidad, Costo, Precio, Neto, etc.). Aparece una flechita amarilla ▲/▼ en el header. Click otra vez en la misma columna invierte el orden.
- Nombre del artículo con ancho completo — ya no se trunca con "…", se ve entero. Si toda la fila no entra en la tabla, aparece scroll horizontal dentro de la lista (no afecta al resto de la pantalla).
- Stock por Bodega con scroll interno — si tu empresa tiene 10+ bodegas, la lista hace scroll adentro del panel; ya no empuja el card de Búsqueda hacia abajo.
- Cards con borde sutil y separación visible — los dos bloques principales (Datos del artículo y Búsqueda) tienen un marco fino para que se distinga la división.
- Lista de precios multinivel: una tarjeta por nivel P1, P2, P3… con Precio sin IVA, Margen % (más el margen real entre paréntesis), Sobre (COSTO/VENTA), Precio + IVA, selector de Redondeo (↑/↓) y toggle AUTO/MAN. Editar / agregar / eliminar niveles, igual que el escritorio. Recálculo en vivo al escribir.
- "Guardar costo (recalcula precios)": botón que actualiza el costo y recalcula los precios y redondeos de toda la lista en un toque.
- Categoría / SubCategoría como texto libre con autocompletado (la subcategoría se filtra por la categoría escrita).
- Cuenta contable de inventario con buscador del catálogo contable.
- Selector de moneda del artículo en el header.
Lote 12/103: 500/500 actualizado(s)…) y un resumen al final. No hay que cerrar la pestaña hasta que termine. Si un lote falla, se reporta y el resto continúa.
- Corrección: las operaciones de la pestaña Costo & Precio masivo (Aumentar % de Venta, Establecer Precio, Actualizar Margen, Aumentar Costo %, Establecer Costo) daban error
Invalid column name 'DBVenta1' / 'DBVenta3'en las empresas ya migradas a la lista de precios unificada (dbo.ArticuloPrecios), porque seguían escribiendo en las columnas viejasDBVenta1..10. Ahora pasan por el mismo motor central que el editor de artículos: recalculan margen, aplican el redondeo del Neto y soportan multi-moneda. Si un artículo no tiene definido el nivel elegido se reporta como aviso y el resto sigue. En empresas todavía sin migrar se mantiene el comportamiento anterior. - Nueva operación "Redondeo de precio por nivel" (pestaña Precios por nivel): fija el paso al cual se redondea el Precio + IVA de un nivel para los artículos seleccionados y re-redondea el precio. Desplegable con grupos ↑ Hacia arriba y ↓ Hacia abajo (0.1, Entero, ×5, ×10, ×25, ×50, ×100, ×500, ×1000), más "2 decimales (sin redondeo)".
- Redondeo hacia abajo en todo el sistema: el paso de redondeo (
RedondeoPrecio) ahora puede ser negativo para redondear el Neto hacia abajo al múltiplo (positivo = hacia arriba, como siempre;0.01= sin redondeo). Disponible también en el modal Editar Precio (MAP-001), Agregar Precio (MAP-002) y el selector de redondeo por fila de la tabla de precios del artículo, todos con opciones agrupadas ↑/↓. Ej.: Precio+IVA 84.08 con ↓ ×5 queda en 80.00; con ↓ Entero queda en 84.00.
- Categoría / Subcategoría: ahora son 2 inputs de texto libre con autocompletado desde la base de datos. Al elegir una categoría existente, las subcategorías se filtran automáticamente. También permite escribir una categoría/subcategoría nueva.
- 5 operaciones nuevas para ArticuloPrecios por nivel (tab Precios por nivel): Desc. Fijo, Desc. Máximo, Util. Mínima, Margen Sobre (COSTO/VENTA) y Modo de venta (Auto/Manual). Cada una con selector de nivel P1..Pn dinámico desde
SELECT DISTINCT NumeroPrecio FROM ArticuloPrecios. - Selectores P1..Pn dinámicos en TODAS las operaciones de precio del modal (también en las legacy: Aumentar % Venta, Establecer Precio, Actualizar Margen). Solo aparecen los niveles que la empresa realmente tiene definidos.
- Cards Banking Bold con borde gris y header gris claro. Las cards del tab "Precios por nivel" tienen header con gradiente violeta para distinguirlas como ArticuloPrecios.
- Eliminadas del UI las operaciones legacy duplicadas (Articulos.DescuentoFijo / Descuento_Admitido / DbArticuloOrigenCosto / PrecioVentaManual). Las cases en la API quedan vivas por compatibilidad.
- Bitácora resumen por lote para cada operación AP:
"ArticuloPrecios MargenSobre P3=COSTO en 437 artículo(s)". Procesa en lotes de 500.
- Etiquetas a la izquierda, inputs a la derecha — toda la ficha pasa de label-arriba a label-en-fila.
min-width:90pxpara alineación vertical entre filas. - Capitalización solo de la primera letra en las etiquetas del card (CSS
text-transform:lowercase+::first-letter:uppercase). Antes todo era MAYÚSCULA. - Nombre y Det. Interno cada uno en su propia fila (full width), con grow para ocupar el ancho disponible. Etiqueta DETALLE INTERNO renombrada a Det. interno.
- Inputs auto-ajustables al contenido: Código
size=15, Cód. Barrasize=15, CABYSsize=13, Partida Arancel.size=12. Selects de Actividad, Naturaleza y Tarifa IVA con atributodata-auto→width:auto(se miden por el option más largo). - Stock y Descuentos (Mín. Stock, Máx. Stock, Desc. Máx %, Descuento, Comisión %) reducidos a
7chcon texto alineado a la derecha — más en línea con su rango típico de valores. - Flex-wrap activo en
.datos-fila: si los campos no caben, bajan a la siguiente fila sin quebrar la maquetación. Categoría, Nombre y Detalle interno usancampo-grow(flex: 1 1 260px). - Check MAYUSC reposicionado al final del input Nombre (antes estaba al lado de la etiqueta).
- Mostrar Ventas: nuevo checkbox que al activarse despliega rangos de fecha (default: mes actual) y agrega la columna Vendido a la tabla con la cantidad de unidades vendidas en ese período. NC se restan automáticamente; solo cuenta documentos procesados (Estado 1/2/4).
- Fecha de Creación: dos inputs Creado Desde / Creado Hasta independientes para filtrar artículos por su
FechaCreado. Útil para auditar altas en períodos específicos. Funcionan también al exportar a Excel. - Toggle dinámico: al marcar/desmarcar el check de Ventas, los inputs de fecha aparecen/desaparecen sin recargar.
- Subquery con
WITH (NOLOCK)sobrevista_venta_hija+vista_venta_madre; placeholders SQL ordenados correctamente para no romper otros filtros existentes.
- El PASO 3 de la cascada (búsqueda multi-palabra) ahora incluye DetalleInterno además de código + barra + nombre. Esto permite encontrar artículos por sus notas internas.
- Si la búsqueda devuelve una sola coincidencia (en cualquier paso de la cascada — código exacto, barra exacta o multi-palabra), el cursor se posiciona automáticamente en el campo Cantidad sin abrir el modal MBA-002. Antes solo el match exacto disparaba esto; ahora cualquier resultado único lo hace.
- Solo se abre el modal de búsqueda reutilizable cuando hay 0 o más de 1 coincidencia.
articulos_lista_movil.php y articulos_crear_movil.php en estilo Banking Bold optimizado para celular.
- Catálogo móvil: cards con miniatura, 3 filtros base (Nombre/Estado/Precio) + filtros agregables, auto-submit con debounce, FAB para crear.
- Editor móvil: formulario en 5 cards colapsables (Datos Básicos / Costos y Precios / Imagen / Stock por Bodega / Otros Datos), recálculo reactivo de precios, cámara directa, modal selector de estado, sin buscador.
- Botón Clonar móvil: duplica el artículo, limpia código/nombre/barra y muestra banner amarillo con opción cancelar.
- Auto-generación de código: dejar el campo vacío ejecuta la lógica del API (Categoría + SubCategoría + consecutivo), ahora también disponible en móvil.
- Detección automática: redirige por User-Agent (móvil) o por ancho < 768 px (JS). Flags
?desktop=1y?mobile=1consumibles para forzar una vista solo esa carga (se eliminan del URL automáticamente, así el reload re-evalúa). - Force desktop: body class
force-desktopanula los@mediade mobile cuando se fuerza desktop con ancho angosto. - Subcategoría dependiente: en móvil se construye el mapa desde la tabla canónica
SubTipo_Articulo(no la vista) y se trimean los códigos para evitar mismatches al editar.
1fr 70px 120px), corrigiendo el desfase que provocaba el input de ubicación.#0a2540 (azul oscuro navy) en lugar de rojo; los demás usan el azul primario #0047AB.?get_codes=1). Banner amarillo indica el total seleccionado con opción "Seleccionar solo esta página" para reducir el alcance. El botón Globales ahora lee del Set completo window.codigosSeleccionados — antes solo leía los checkboxes visibles de la página actual (máx 500).localStorage por computadora.dbcontrol.dbnegocio para encontrar el servidor correcto.SubTipo_Articulo ahora exige Porcentaje1..10 y Redondeo (valor inicial 30%). Evita subcategorías sin margen configurado.