AtentiPOS

AtentiPOS es el punto de venta que convierte tu tienda en un negocio que vende más y se controla solo.

AtentiPOS

Qué incluye

Un punto de venta de mostrador para México. Con su código, y con sus costuras a la vista.

Una tienda, un abarrote, una farmacia chica: cobrar rápido con lector de código de
barras, pesar a granel, fiar y cobrar después, cuadrar la caja y saber qué se
vendió.

AtentiPOS-MX hace eso. Lo que todavía no hace es timbrar el CFDI, y esa frase
está en el tercer párrafo de la ficha a propósito, no en la letra chica.

Es un producto en su versión 1.0.5, nacido de portar un POS chileno de
producción al mercado mexicano. El zip trae el fuente completo, el instalador y
el backend de licencias. 128.732 líneas de C# y AXAML que compilan sin un solo
error
, contadas archivo por archivo y verificadas con dotnet build, no
estimadas.

Y aquí va la comparación desfavorable, delante y no escondida: easyRest tiene
diez versiones etiquetadas y cuarenta mil palabras de documentación. Esto tiene
cero y cero.
Ni repositorio git, ni una sola prueba automatizada, ni un README.
Lo que hay es código —mucho— y esta página diciéndote exactamente en qué estado
está.


PARA QUIÉN ES

Si programas y vendes software

Tu cliente quiere un POS para su tienda y tú no quieres escribir por enésima vez
el carrito, el corte de caja y la impresión térmica.

Te llevas 80.461 líneas de C# sobre Avalonia y Firebird embebido, y con ellas
las partes que de verdad cuestan: el motor único de cálculo de venta que
reconcilia el encabezado con el detalle al céntimo, la impresión ESC/POS en 58 y
80 mm con diseño de ticket configurable, 44 migraciones de esquema con su tabla
de control, cuentas por cobrar y por pagar, promociones N×M, lealtad por puntos,
báscula por puerto serie y un sistema de permisos por rol.

Todo el código y todos los comentarios están en español.

Si tienes una tienda

Se instala en una tarde. Se entra con PIN. Cobra, descuenta stock, imprime
ticket, abre el cajón y cierra el turno con arqueo.

Pago único. Nadie te cobra renta mensual por cobrar en tu propio mostrador.

Pero lee la sección "lo que no hace" antes de decidir. Si necesitas factura
timbrada hoy, este programa todavía no te la da.


PARA QUIÉN NO ES

Dicho aquí arriba para que no pierdas el tiempo:

  • Si necesitas timbrar CFDI 4.0 ante el SAT en cada venta. No lo hace. Hay
    andamiaje, no emisión.
  • Si necesitas varias cajas cobrando a la vez sobre la misma base.
  • Si trabajas en Mac o Linux.
  • Si tu criterio de compra es "que venga probado": no hay ni una prueba
    automatizada en todo el repositorio.
  • Si no quieres heredar un POS chileno entero apagado por dentro — porque eso
    también viene, y abajo digo cuántos archivos son.

LAS TRES REGLAS

AtentiPOS-MX no se diseñó por lista de funciones. Hay tres invariantes que el
código defiende en varios sitios a la vez, y explican casi cada decisión rara que
vas a encontrar:

1 · La caja nunca deja de cobrar.
Ninguna función accesoria puede tumbar una venta. El motor de promociones y el de
sugerencias devuelven lista vacía ante cualquier excepción en vez de propagarla.
El buscador de productos nunca lanza a la UI. Y el control de licencia falla
abierto: el comentario en Services/LicenseService.cs:104 dice literalmente
"Fail-OPEN: nunca dejar la caja sin abrir por un bug de licencia", con 30 días
de gracia sin internet encima. Un POS que se cierra solo es un POS que se
desinstala el mismo día.

2 · El total es la suma de las líneas, o no es.
Hay un solo motor de cálculo (Services/VentaCalculadora.cs) y lo usan la
pantalla, el cobro, el INSERT y el ticket. El encabezado no se calcula aparte: se
define como la suma del detalle, de modo que Σ VENTADETALLE == VENTA por
construcción. El descuento global se reparte proporcional entre las líneas y el
residuo del redondeo se le asigna a la última línea
, no se pierde. El IVA se
calcula línea por línea y sólo sobre las afectas.

3 · Lo que no se puede confirmar va en null. No se rellena.
El buscador de productos por código de barras cruza Open Food Facts con scraping
de corroboración, y su encabezado es explícito: "Todo lo que no se pueda
confirmar → se excluye o va null. NUNCA se inventan datos."
Lo mismo hace el
emisor fiscal: con la emisión desactivada devuelve un error con su motivo escrito
en español, no un folio falso.

El peor fallo de un punto de venta no es el que se ve. Es el que da por timbrado
lo que no se timbró, o el que cuadra en pantalla y no cuadra en el detalle —
porque los dos devuelven un número plausible que nadie cuestiona hasta que llega
el contador, o el SAT.


QUÉ HACE

En el mostrador

  • Venta con lector de código de barras, búsqueda por nombre y PLU.
  • Venta a granel con báscula por puerto serie: modo continuo, bajo demanda o
    manual, con reconexión automática y monitor del flujo en crudo para depurar.
  • Promociones automáticas, incluidas N×M, y sugerencias de venta cruzada
    curadas a mano por el comerciante.
  • Ventas en espera: dejas una cuenta aparcada y atiendes al siguiente.
  • Preventas, cotizaciones y despacho.

Al cobrar

  • Formas de pago configurables, pago mixto y cálculo de vuelto.
  • Fiado: la venta se manda a cuentas por cobrar y se abona después.
  • Puntos de lealtad con su tabla de movimientos.
  • Ticket ESC/POS de 58 y 80 mm con el diseño editable desde la app —qué se
    imprime, si corta el papel, si abre el cajón— y apertura de cajón portamonedas
    por pulso ESC/POS.

Al cerrar el turno

  • Apertura y cierre de caja, movimientos de entrada y salida de efectivo.
  • Corte de caja con conteo por denominación y desglose por forma de pago.

Para saber cómo va el negocio

  • Reportes de ventas, utilidad, existencias, inventario, gastos, cuentas por
    cobrar y por pagar. Exportables a Excel.
  • Métricas de clientes, metas de venta y avisos de cumpleaños.
  • Campañas por WhatsApp mediante enlace wa.me (abre la app del equipo; no es
    un envío masivo automático).

Para administrarlo

  • 36 módulos organizados en 6 categorías, con permisos por rol.
  • Importación masiva de productos, clientes y proveedores desde Excel o CSV.
  • Asistente de puesta en marcha y 5 temas visuales con 22 colores editables
    desde la propia aplicación.

QUÉ TE LLEVAS EN EL ZIP

Todas estas cifras salen de contar archivos y líneas en el proyecto, hoy.

| | |
|---|---|
| La aplicación | 466 archivos de C# · 80.461 líneas |
| Las pantallas | 59 vistas Avalonia · 47.735 líneas de AXAML |
| La lógica de pantalla | 55 ViewModels · 24.916 líneas · 545 comandos |
| Los servicios | 53 servicios de dominio · 13.860 líneas |
| La impresión | 22 archivos · 12.078 líneas (ESC/POS 58 y 80 mm, PDF, etiquetas) |
| El esquema de datos | 44 migraciones · 3.648 líneas · 71 tablas · 237 índices |
| El sistema de diseño | 536 líneas de AXAML · 44 brushes con nombre · 34 estilos |
| El backend de licencias | 12 archivos PHP sobre Laravel · 974 líneas |
| El instalador | proyecto de Advanced Installer + Install_AtentiPOS.exe |
| La documentación | 784 palabras, y son el INSTALL del backend |
| El historial de versiones | no hay |

128.732 líneas entre C# y AXAML, en 526 archivos. Ponle tú el número de
meses. Ése es el precio real de esta página.

Un detalle que dice más que el total: el código detrás de las 59 vistas suma
2.061 líneas para 47.735 de AXAML. La lógica está en los ViewModels, no
pegada a los controles. Eso es lo que hace que se pueda modificar.


TRES COSAS QUE NO ESPERAS ENCONTRAR

1 · Un motor de temas de verdad, no un interruptor claro/oscuro.
Cinco paletas completas (Oscuro, Verde claro, Morado gris, Rojo negro, Azul
blanco) y 22 claves de color editables desde dentro de la aplicación, que se
guardan en la tabla CONFIGURACION y se aplican en caliente sobre los brushes
con nombre. Para ponerle a un cliente sus colores no hay que recompilar ni tocar
un archivo. Es la pieza más reutilizable del zip en otros proyectos Avalonia.

2 · Un buscador de productos que se niega a inventar.
Escaneas un código que no tienes dado de alta y la app sale a buscarlo: Open Food
Facts como fuente estructurada, más scraping de corroboración. Sólo etiqueta como
verificado lo que concuerda en dos fuentes independientes; el resto se
excluye o queda en null, y una nota te dice cuántos de los diez esperados faltan
y por qué. Ese comentario de "NUNCA se inventan datos" está escrito tres veces en
el código, en tres archivos distintos.

3 · El sistema de licenciamiento viene completo y por los dos lados.
La aplicación lleva sólo la clave pública: puede verificar tokens, nunca
falsificarlos. El servidor que los firma es un backend Laravel de 974 líneas que
también va en el zip, con su generador de claves y su panel. Huella de hardware
por SHA-256 de identificadores del equipo, 60 días de prueba, 30 de gracia
offline. Si vendes software, esto solo te ahorra una semana — y si no lo quieres,
está en un servicio aislado y se quita.

La cuarta, de propina: 44 migraciones de esquema con su tabla MIGRATION_CONTROL,
escritas a mano porque Firebird hace commit implícito en DDL y no se pueden
envolver en una transacción. Está comentado en el código, con el porqué.


LO QUE NO HACE

Ésta es la sección larga, y es la razón de ser de la página. Léela entera: si
algo de aquí es imprescindible para ti, no compres.

  • No timbra CFDI 4.0. El emisor mexicano existe como clase, pero tiene una
    constante EmisionActiva = false y devuelve siempre "Emisión de CFDI 4.0 no
    disponible todavía"
    . Lo que hay es la interfaz, el andamiaje HTTP y los mapeos
    pendientes documentados. El PAC, el contrato de la API y el payload los pones
    tú.
    El ticket que imprime es comprobante de venta, no comprobante fiscal.
  • Con el fiscal apagado, 8 módulos se esconden solos. Nota de crédito,
    reporte de documentos, folios, pago con terminal y compras desaparecen del menú
    mientras FISCAL_HABILITADO=0. No están rotos: están ocultos a propósito. Pero
    si contabas con el módulo de compras, cuenta con reactivarlo tú.
  • Traes dentro un POS chileno entero, apagado. No es una metáfora: 148 de
    los 466 archivos
    mencionan SII, DTE, CAF, TED, RUT o boleta, y 66 archivos
    (10.334 líneas) son el núcleo del documento tributario chileno. Hay 377
    menciones de RUT frente a 52 de RFC
    . Compila y no estorba, pero es código que
    vas a leer, que no te sirve, y que tarde o temprano vas a querer podar.
  • Cero pruebas automatizadas. Ni un proyecto de test, ni un Assert en las
    128.732 líneas. La verificación hoy es abrir la aplicación y usarla.
  • Cero documentación propia. Las 784 palabras que hay son el INSTALL del
    backend de licencias. Lo que sí hay son comentarios de encabezado buenos en los
    servicios, que es de donde salieron las tres reglas de más arriba.
  • No hay historial de versiones. El proyecto no está bajo control de
    versiones: no hay repositorio git ni etiquetas que enseñarte. Y la versión se
    declara dos veces y no coinciden: AppInfo.cs dice 1.0.5 y
    LicenseService.cs manda 1.0.7 al servidor. Es un descuido pequeño y lo
    digo porque es exactamente el tipo de cosa que se descubre a la semana.
  • Hay una dependencia AGPL dentro que tienes que quitar antes de vender.
    iTextSharp 5.5.13.4. Tiene apartado propio más abajo.
  • Un paquete arrastra 5 avisos de vulnerabilidad alta.
    System.Security.Cryptography.Xml 10.0.8. dotnet restore lo grita cada vez.
    Lo usa la firma XML chilena, así que probablemente se va junto con ella — pero
    hoy está.
  • Sólo Windows, y está medido. La compilación arroja 2.828 avisos CA1416
    —uso de API exclusivas de Windows— repartidos por 42 archivos. No es una
    aplicación multiplataforma con un detalle pendiente; es una aplicación de
    Windows escrita sobre un toolkit multiplataforma.
  • No hay respaldo de la base de datos. Ninguna función de backup, ni
    programada ni manual. Se respalda copiando el archivo .FDB con la aplicación
    cerrada, y eso se lo tienes que explicar tú al cliente.
  • Un solo terminal. Firebird embebido no admite dos procesos sobre el mismo
    archivo. Existen tablas SUCURSAL y SYNCCONTROL, pero la sincronización no
    está escrita
    : son tablas esperando un código que no viene. Para varias cajas
    hay que montar Firebird servidor y probarlo, que no está probado.
  • El redondeo está a medio migrar. El peso chileno no tiene decimales y el
    código venía lleno de Math.Round(x, 0). Se creó un Money.Round central a 2
    decimales y hoy hay 34 usos de Money.Round frente a 22 Math.Round(x, 0)
    que quedan sin migrar
    . Los que quedan están fuera del motor de venta, pero
    antes de poner esto a cobrar conviene revisarlos uno por uno.
  • No procesa tarjetas. Registra la forma de pago. El único integrador de
    terminal que hay es TUU (Haulmer), que es chileno y está oculto.
  • El instalador apunta a bin\Debug\net8.0 y empaqueta el .pdb. Funciona,
    pero antes de entregar a un cliente hay que repuntarlo a Release.
  • Queda marca del origen en el pie: AppInfo.Web sigue diciendo uvo.cl. Se
    cambia en una línea, pero si no la cambias sale en pantalla.
  • La compilación limpia deja 3.771 avisos. Cero errores, pero 3.771 avisos, y
    más de 1.800 de ellos son de nulabilidad. Compila y corre; no está pulido.

REQUISITOS

  • Windows 10 u 11, 64 bits.
  • .NET 8 Desktop Runtime x64.
  • Visual C++ Redistributable 2015-2022 — el instalador lo trae como prerrequisito.
  • Impresora térmica ESC/POS de 58 u 80 mm.
  • Báscula con salida serie, sólo si vas a vender a granel.
  • Para tocar el código: .NET 8 SDK y cualquier editor. Compila en 19,7 segundos
    en un equipo de escritorio corriente.

Sobre Firebird embebido, porque es donde más gente se estrella. La base no es
un servidor: es un archivo .FDB junto al programa, y el motor va como
bibliotecas nativas al lado del ejecutable — fbclient.dll, ib_util.dll,
fbintl, y las tres de ICU con su icudt63l.dat de 27 MB. Si copias el
ejecutable sin ese acompañamiento, la aplicación arranca y falla al abrir la base
sin decirte que le falta una DLL.
Por eso hay instalador: úsalo, o replica su
lista de archivos exactamente. El zip incluye una base ya migrada y una base en
blanco para arrancar de cero.


NO HAY TESTIMONIOS, Y NO VOY A INVENTARLOS

AtentiPOS-MX se publica ahora. No tengo clientes mexicanos que enseñarte y no
pienso fabricar reseñas ni contar instalaciones.

Y voy más lejos, porque este producto es más joven de lo que su tamaño sugiere
y sería facilísimo disimularlo detrás de 128.732 líneas: esas líneas vienen en
buena parte de un POS chileno en producción, y el trabajo mexicano encima —moneda,
IVA al 16 %, RFC, direcciones, compras, temas— es reciente y no está probado en
campo.

Lo único que puedo enseñarte es lo que se puede verificar: el código, una
compilación con cero errores y esta lista de limitaciones
. No hay diez versiones
etiquetadas detrás, ni cuarenta mil palabras de documentación, ni 42 pruebas
automatizadas. Hay un sistema grande, con costuras, y una página que te las
enseña.

Un testimonio se escribe en un minuto. Ciento veintiocho mil líneas, no.


CÓMO SE ENTREGA, Y QUÉ LICENCIA LLEVA

Un zip con el código fuente completo de la aplicación, el proyecto del
instalador, el backend Laravel de licencias y la base de datos de arranque.
Versión 1.0.5. Acceso de por vida a las actualizaciones que se publiquen —
sabiendo que el autor no se obliga a publicar ninguna.

Lo que la licencia te deja hacer

  • Instalarlo y cobrarlo en todos los negocios de clientes que quieras. Sin
    límite de instalaciones, sin pagar más y sin porcentaje.
  • Ponerle tu marca: nombre, logotipo, colores e icono. El motor de temas está
    hecho justo para eso.
  • Modificar el código todo lo que necesites, incluido quitarle el sistema de
    licencias entero.

VALORACIONES

Todavía no hay valoraciones. Si lo compras, la tuya será la primera.

TAMBIÉN TE INTERESA