Manual de Compras
Guía completa del proceso de recepción, costeo, contabilización y análisis de precios de facturas de compra.
Versión móvil del editor de compra
Desde 2026-05-26, el editor de compras tiene una versión móvil que se activa automáticamente cuando el ancho de la pantalla es de 900 píxeles o menos. Funciona en celular, tablet vertical, o en escritorio con la ventana reducida.
Edición de cabecera
Tocá la tarjeta del proveedor para abrir el modal Editar cabecera. Permite cambiar:
- Fecha de la compra (calendario en formato dd/mm/yyyy con locale español).
- Tipo de Documento Hacienda (01 FE, 02 ND, 03 NC, 08 FEC).
- Tipo de Compra del catálogo (01 Compras Mercancías, 02 Gasto régimen simplificado, etc.).
- Totales editables por componente: Gravado, Exonerado, Exento, IVA, Imp. Consumo, Imp. Servicio (nuevo), IVA Devuelto (nuevo) y Flete.
- El Total se recalcula en vivo según la fórmula:
Gravado + Exonerado + Exento + IVA + Imp.Consumo + Imp.Servicio + Flete − IVA Devuelto.
CompraMadre. Si la migración no se aplicó en su base de datos, los inputs aparecen deshabilitados con un aviso "mig pendiente". Contactá a Soporte para la aplicación de las migraciones 838 y 839.
Edición de líneas
Tocá una tarjeta de línea para abrir el modal de edición. Ahora muestra explícitamente los 4 campos de identificación:
| Campo | Origen | Editable |
|---|---|---|
| Cód. Proveedor | Capturado / XML | Sí |
| Cód. Local | Homologación con catálogo | Sí (al cambiar, busca el artículo y autocompleta el nombre local) |
| Nom. Proveedor | Texto del XML del proveedor | Sí |
| Nom. Local | Virtual desde Articulos | No (se actualiza al cambiar Cód. Local) |
Otros campos editables en la línea:
- Cantidad y Costo.
- Descuento bidireccional: tipeás % o monto y se calcula el otro. El monto es lo que queda guardado; el % es virtual (referencia).
- Código de Tarifa IVA: menú con todas las tarifas del catálogo (01 Exento 0%, 02 1%, 03 2%, 04 4%, 08 General 13%, etc.). El porcentaje se deriva automáticamente del código.
- Cuenta Contable: obligatoria en cada línea (inventario o gasto). Tocá la lupa para abrir un buscador con autocompletado. Badge INV si la cuenta comienza con el prefijo de inventario (parámetro 92) o GAS en caso contrario.
Aplicar pago de CxP
Si la compra quedó pendiente en CxP, aparece un banner amarillo con el saldo y un botón Aplicar pago. Abre el formulario simplificado de aplicar recibo:
- Monto (default = saldo real pendiente, no el monto original — descuenta pagos parciales previos).
- Fecha (dd/mm/yyyy con calendario en español).
- Tipo de recibo.
- Medio de pago / cuenta contable (selector). Se pre-selecciona automáticamente la última cuenta que usaste con este proveedor (memoria persistente en BD — funciona también si abrís el sistema desde otro dispositivo).
- Comprobante / referencia (obligatorio).
- Detalle (obligatorio, se pre-rellena con el último usado si existe).
Al aplicar exitosamente, la cuenta usada queda guardada en la tabla ProveedorCuentaPago asociada al proveedor — así la próxima vez (en cualquier dispositivo) sale ya pre-seleccionada.
Cuando la compra ya está pagada total o parcialmente, se muestra la lista de recibos aplicados como botones con monto y flecha → tocás un recibo para abrir el detalle (MC-003). Si está parcialmente pagada, el banner sigue siendo amarillo con el saldo restante y los recibos parciales aparecen también listados.
Forzar versión de escritorio
Agregá ?desktop=1 al final del URL para abrir siempre el editor desktop, incluso en pantallas chicas.
Visión General del Proceso
El proceso de compras en FactuPOS transforma una factura de proveedor (electrónica o manual) en un registro completo con movimientos de inventario, asiento contable y cuenta por pagar. El flujo tiene cinco grandes etapas:
Estados de la Compra
| Estado | Nombre | Descripción | ¿Editable? |
|---|---|---|---|
0 |
Sin confirmar | Compra recién creada, no revisada | Sí |
1 |
Borrador | En revisión — se pueden editar líneas, cuentas y costeo | Sí |
2 |
Aplicada | Movimientos de inventario, asiento y CxP ya creados. Solo lectura. | No |
3 |
Anulada | Compra cancelada | No |
Tipos de Compra y Homologación
El Tipo de Compra (campo en el encabezado) determina si las líneas necesitan código local homologado o pueden quedar solo con cod/nom del proveedor.
| Tipo | Nombre | Homologación | Motivo |
|---|---|---|---|
01 | Compra mercancías c/FE | Requerida | Inventario normal |
02 | Gasto régimen simplificado | Opcional | Gasto — XML usa cod/nom proveedor como fallback |
03 | Gastos con FE | Opcional | Gasto, no alimenta inventario |
04 | Gastos servicios públicos | Opcional | Agua, luz, teléfono |
05 | Importaciones | Requerida | Inventario importado |
06 | Compras no electrónicas | Requerida | Inventario legacy |
07 | Compra régimen simplificado | Requerida | Inventario — necesita CABYS real en XML |
08 | Compra de servicios | Requerida | Servicios profesionales |
09 | Gastos no sujetos IVA | Opcional | Sin IVA |
Tipos 02 y 07: exclusivos para FEC simplificada
Los tipos 02 (Gasto simpl.) y 07 (Compra simpl.) están reservados para Factura Electrónica de Compra (FEC), que corresponde a Tipo Documento 08. El sistema detecta el tipo documento desde las posiciones 9-10 del consecutivo Hacienda.
02 o 07 pero Tipo Documento distinto de 08, el sistema lo auto-corrige: 02 → 03 (Gastos con FE), 07 → 01 (Mercancías FE). Queda registrado en bitácora.Cómo se genera el XML FEC cuando no hay cod local
Para las líneas sin artículo local homologado en compras con homologación opcional, el XML FEC (tipo 08) se completa con fallbacks automáticos:
- Detalle:
CompraHijaArticuloProveedorNombre(el nombre que escribió el usuario) - CodigoComercial Tipo 01:
CompraHijaArticuloProveedorCodigo
CABYS: requisito por línea para tipo 08
El CABYS (Catálogo de Bienes y Servicios) es el código oficial de Hacienda que identifica al producto/servicio. Se incluye en cada línea del XML FEC como <CodigoCABYS>.
- Si la línea está homologada a un artículo local, el CABYS se hereda del catálogo automáticamente.
- Si la línea viene del XML del proveedor, se usa el CABYS que mandó el emisor.
- Editable inline: en la columna CABYS de la tabla de líneas (segunda fila), escriba los 13 dígitos y salga del campo para guardar.
- Solo se aceptan dígitos (letras y símbolos se quitan). Si ingresa menos de 13 dígitos, el sistema avisa y no guarda.
- Buscador: clic en el botón al lado del input abre el catálogo CABYS (buscar por código o palabras del nombre). Al seleccionar, se asigna automáticamente a la línea.
Agregar Línea Manual
El formulario "Agregar línea" (entre el encabezado y la tabla de líneas) permite ingresar artículos manualmente. Incluye 4 campos de identificación más cantidad / costo / IVA:
| Campo | Descripción | Obligatorio |
|---|---|---|
| Cód Prov | Código del artículo según el proveedor (viene en su factura) | Si no hay Cód Local |
| Nom Prov | Nombre del artículo como lo llama el proveedor. Editable también en la tabla de líneas. | Si no hay Cód Local |
| Cód Local | Código del artículo en el catálogo de inventario. Autocompleta el Nom Local al escribir. | No (opcional según tipo compra) |
| Nom Local | Nombre del artículo en inventario. Editable libremente. | No |
| Cantidad, Costo, IVA | Datos estándar de la línea | Sí |
Auto-homologación desde catálogo
Si ingresa solo el Cód Prov (sin Cód Local) y esa relación ya existe en el catálogo de homologación del proveedor (ProveedorArticuloHomologacion), el sistema completa automáticamente el Cód Local y la cuenta contable asignada.
Validación mínima
Total del documento — auto-sincronización
En compras manuales (no electrónicas), el Total del documento se sincroniza automáticamente con la suma de los montos totales de las líneas:
- Al abrir la compra en editar_compra (si está en estado editable)
- Al agregar, editar o eliminar una línea
- Al dar "Aplicar" (antes de validar la tolerancia)
Columnas de la Tabla de Líneas
Badges de tipo (columna "Tipo")
La primera columna muestra un badge de color que indica el estado contable de la línea:
| Badge | Significado | Acción requerida |
|---|---|---|
| INV | Cuenta contable de inventario asignada (empieza con la cuenta de inventario default) | — Listo |
| GAS | Cuenta contable de gasto asignada (cualquier otra cuenta) | — Listo |
| ? | Sin cuenta contable asignada y sin artículo local homologado | Asignar cuenta o homologar el artículo |
Columnas de costos
| Columna | Descripción | ¿Editable? |
|---|---|---|
| Costo Actual | DbCosto vigente del artículo en el sistema. Se muestra en naranja/rojo si varía más de 20% respecto al costo de la compra. | No |
| Costo | Precio unitario en esta factura (con descuento incluido si aplica) | Sí |
| Costo Bruto | Cantidad × Costo (antes de descuento) | Calculado |
| Descuento | Descuento en colones/moneda sobre el costo bruto de esa línea | Sí |
| SubTotal | Costo Bruto − Descuento | Calculado |
| Imp. Consumo | Impuesto específico de consumo (ej: bebidas alcohólicas) | Sí |
| Total | SubTotal + Imp. Consumo + IVA Neto | Calculado |
Fila expandible "Avanzado"
Cada línea puede expandirse para mostrar campos adicionales: Lote, Fecha de vencimiento, Registro de medicamento y Forma farmacéutica. Útil para farmacias y distribuidoras de alimentos.
Homologación de Artículos
La homologación es el proceso de relacionar un artículo del proveedor (su código y nombre) con el artículo correspondiente en el inventario local. Sin esta relación, la compra no puede actualizar stock ni costos.
Buscar artículo existente
En la columna Cod Local, escriba el código del artículo y presione Enter, o haga clic en el ícono de búsqueda para buscar por nombre.
Detección automática con IA
El botón IA analiza el nombre del artículo del proveedor y sugiere el artículo local más similar. Ideal para compras masivas.
Crear artículo nuevo (MCO-003)
Si el artículo no existe en el sistema, el botón + abre el modal para crearlo directamente desde la compra:
- Nombre pre-llenado del proveedor (editable)
- Botón IA para corregir ortografía
- Seleccionar categoría y subcategoría
- Código auto-generado si se deja vacío
- Al confirmar: crea artículo y homologa automáticamente
Auto-sincronización al abrir la compra
Cada vez que se abre (o recarga) una compra, el sistema ejecuta dos sincronizaciones automáticas contra el catálogo de homologación (ProveedorArticuloHomologacion, anteriormente RelCodProveedor):
- Forward: líneas ya homologadas en la compra cuya relación aún no existe en el catálogo → se registra la relación proveedor + código proveedor → código local.
- Auto-homologado directo (mismo proveedor): líneas sin Cod Local cuyo Cod Proveedor ya está en el catálogo del mismo proveedor → se copia el código local automáticamente.
98 del proveedor A no significa lo mismo que el código 98 del proveedor B. Por eso el sistema no propaga homologaciones entre proveedores distintos.Quitar homologación
En la columna Nom Local de una línea homologada, el botón Quitar deshace la homologación. Esto ejecuta dos acciones:
- Borra el código local de la línea en la compra.
- Elimina la relación correspondiente en el catálogo ProveedorArticuloHomologacion para el par (proveedor, código proveedor).
Editar nombre del artículo del proveedor
El campo Nom Prov de cada línea es ahora un input editable (antes era solo texto). Útil para compras de régimen simplificado donde el usuario digita manualmente el detalle del artículo/servicio recibido.
Asignación de Cuentas Contables
MCO-010Cada línea de la compra debe tener una cuenta contable para poder generar el asiento. La cuenta determina si la línea va a inventario (INV) o a gasto (GAS).
Asignación individual
En la columna Cuenta de cada línea, haga clic en para abrir el buscador de cuentas. Escriba el código o parte del nombre para filtrar y seleccionar.
Asignación masiva — "Asignar cuenta a todas" (MCO-010)
Ideal para facturas de gastos uniformes (almuerzos, viáticos, servicios): todas las líneas van a la misma cuenta.
Revisión de Costeo
MCO-005El costeo proyecta cómo cambiará el costo de cada artículo al aplicar esta compra, según su origen de costo configurado. Se abre con el botón Costeo en la barra principal.
Orígenes de costo
Cada artículo tiene configurado cómo se actualiza su costo al recibir una compra:
| Origen | Descripción | Cuándo usarlo |
|---|---|---|
| Manual | El costo no se toca al aplicar compras. El usuario lo actualiza manualmente. | Artículos con precio fijo de venta que no depende del costo de compra |
| Promedio | Promedio ponderado: (StockActual × CostoActual + CantidadCompra × CostoCompra) / TotalUnidades |
La mayoría de artículos de inventario. Suaviza variaciones de precio. |
| Último | Siempre reemplaza con el costo de la última compra recibida | Artículos perecederos o donde el precio más reciente es el más relevante |
| Bruto | Usa el costo sin descuento (SubTotal + ImpConsumo / cantidad) | Cuando los descuentos son eventuales y no deben reflejarse en el costo base |
Proceso de revisión y aprobación
Aplicar la Compra
MCO-007Al aplicar, el sistema ejecuta 10 pasos en secuencia. Si algún paso falla, los anteriores ya ejecutados permanecen (no hay rollback automático) y se muestra el error para corregir. El botón Aplicar se vuelve verde cuando el costeo está aprobado.
Precio N = Costo × (1 + Margen%/100)
Análisis de Precios de Venta
MCO-008Disponible solo en compras aplicadas (estado 2), mediante el botón Precios en la barra. Permite revisar si los precios de venta actuales son coherentes con el costo que se acaba de registrar, y corregirlos si es necesario.
Detección de anomalías
El sistema marca automáticamente en rojo las filas con alguna de estas situaciones:
| Anomalía | Descripción |
|---|---|
| Precio < Costo | Alguno de los precios de venta activos (Precio1..10 > 0) es menor al costo de compra. Se estaría vendiendo a pérdida. |
| Costo Artículo = 0 | El artículo tiene DbCosto = 0 pero la compra sí registró costo. Generalmente por artículos nuevos o con origen manual. |
Columnas del análisis
| Columna | Descripción |
|---|---|
| C. Compra | Costo unitario pagado en esta factura (SubTotal ÷ Cantidad). En negrita si subió respecto al costo del artículo. |
| C. Artículo | DbCosto actual en el artículo. Si es 0 se muestra como input editable en naranja para ingresarlo aquí mismo. |
| Precio 1..10 | Los 10 precios de venta. Editables directamente en la tabla. El porcentaje debajo de cada precio es el margen de la subcategoría. |
| Auto | Botón que recalcula todos los precios de esa fila usando los márgenes de la subcategoría |
Cómo corregir precios
Márgenes Automáticos de Precios
Los márgenes son porcentajes de ganancia por nivel de precio, configurados por subcategoría de artículo. Determinan la diferencia entre el costo y el precio de venta.
Fórmula de cálculo
Ejemplo: Costo = ₡1,000 · Margen = 30% → Precio = ₡1,000 × 1.30 = ₡1,300
Cuándo se aplican automáticamente
Los márgenes se aplican automáticamente en el Paso 6 al aplicar la compra, pero solo si el artículo tiene:
- Precio Manual = No (flag desmarcado en el catálogo del artículo)
- DbCosto > 0 después del costeo
- Margen > 0 para ese nivel de precio en SubTipo_Articulo
¿Qué pasa con los precios de niveles sin margen?
Si un nivel (ej. Precio5) tiene margen = 0 en la subcategoría, ese precio se conserva tal como está y no se toca. Solo se actualizan los niveles que tienen margen configurado.
Descuentos y Bonificaciones
Descuento por línea
La columna Descuento permite ingresar un monto en colones/moneda que se resta del costo bruto de esa línea:
SubTotal = Costo Bruto − Descuento
Total = SubTotal + Imp.Consumo + IVA Neto
El descuento afecta directamente el costo unitario que se usa en el costeo.
Bonificación (artículo gratis + IVA)
Una bonificación es cuando el proveedor entrega unidades gratuitas (costo = 0) pero sí cobra el IVA correspondiente. El sistema la detecta automáticamente:
CostoBruto < 0.001 y IVA Neto > 0. En este caso el sistema no marca error de cálculo para esa línea.Manejo de Flete
El flete tiene dos roles independientes que se editan en lugares distintos y no se afectan entre sí. Es importante saber cuándo usar cada uno.
| Tipo | Dónde se edita | ¿Afecta el total del documento? | ¿Afecta el costo del artículo? |
|---|---|---|---|
| Flete del documento | Campo Flete en la cabecera de la compra | Sí — suma al total y al balance | No |
| Flete distribuido | Campo Flete a distribuir + botón Distribuir flete sobre la tabla de líneas | No | Sí — suma a DbCostoÚltimo y costo bruto al aplicar |
Caso 1 — La factura del proveedor trae flete
Ejemplo: los artículos suman 30.000 y la factura cobra además un flete de 5.000, dando un total de 35.000.
- Tipee
5000en el campo Flete de la cabecera. - El balance del documento cuadrará automáticamente:
Σ Líneas (30.000) + Flete cabecera (5.000) = Total (35.000). - No se prorratea automáticamente en las líneas. El costo unitario de cada artículo queda sin cambio.
- Si además desea que ese flete impacte el costo unitario de cada artículo, presione Distribuir flete con el mismo monto (ver Caso 2).
Caso 2 — La compra no trae flete, pero usted pagó un transporte aparte
Ejemplo: la factura llega sin flete, pero usted pagó 3.000 de transporte/aduana por fuera y quiere que ese costo se reparta entre los artículos.
- Deje el campo Flete de la cabecera en
0(la factura no lo trae). - Escriba
3000en Flete a distribuir (sobre la tabla de líneas) y presione Distribuir flete. - El sistema reparte los 3.000 proporcionalmente entre las líneas según el monto de cada una.
- El total del documento NO cambia — el balance sigue cuadrando como antes.
- Al aplicar la compra, el flete prorrateado sí suma al costo unitario (
DbCostoÚltimoyCostoBruto) de cada artículo.
Quitar el flete distribuido
El botón Quitar flete distribuido pone en cero el flete prorrateado en todas las líneas. No toca el flete de la cabecera — para reiniciar ese, edítelo directamente en la cabecera y guarde.
Σ Líneas + Flete cabecera = Total Doc. El flete distribuido en líneas no entra en esta validación — así una compra con costos de adquisición externos prorrateados puede aplicarse sin descuadre.
Cómo se ve en la barra de totales
Bajo la tabla de líneas se muestran dos campos separados:
- Flete (documento) — el valor de la cabecera, parte del balance.
- Flete (distribuido en líneas) — la suma prorrateada en cada línea, solo costo unitario.
Si el distribuido es mayor que el de documento, significa que hay costo de adquisición extra (Caso 2) y se muestra en verde — no es un error. Solo se marca en rojo si el distribuido es menor que el de cabecera (inconsistencia que conviene revisar).
Pasar a Borrador
MCO-009Permite revertir una compra ya aplicada al estado Borrador para corregir errores y re-aplicarla. Se accede desde Opciones → Pasar a Borrador.
Requisitos para revertir
| Condición | Detalle |
|---|---|
| Estado = Aplicada | Solo compras en estado 2 pueden revertirse |
| Antigüedad ≤ 30 días | La fecha de la compra no puede tener más de un mes. Para compras más antiguas, contacte al administrador. |
| Sin pagos activos en CxP | Si ya se registraron recibos/pagos en el módulo CxP, deben anularse primero antes de revertir la compra. |
¿Qué se elimina?
Corregir movimientos de inventario duplicados
Si una compra se aplicó por error dos veces, sus artículos pueden quedar con movimientos de inventario duplicados (el stock entra el doble). El sistema lo detecta y muestra un aviso rojo en la compra: «Inventario inconsistente: N artículo(s) con movimientos duplicados», con el detalle de cada artículo afectado.
En ese aviso aparece el botón Corregir duplicados. Al pulsarlo y confirmar, el sistema conserva un solo movimiento por artículo y elimina los sobrantes, dejando el stock en su valor correcto. La página se recarga automáticamente y el aviso desaparece.